Adding slice description to -unpack/-validate commands

Adding iframe flags to transcoder slice/image desc API's
Recompiling transcoder in webgl_videotest directory
This commit is contained in:
richgel999
2019-05-18 20:18:55 -07:00
parent 2b9c4ec309
commit 1dc1bd35c8
4 changed files with 28 additions and 4 deletions

View File

@@ -860,6 +860,23 @@ static bool unpack_and_validate_mode(command_line_params &opts, bool validate_fl
ii.m_num_blocks_x, ii.m_num_blocks_y, ii.m_first_slice_index, (uint32_t)ii.m_alpha_flag);
}
printf("\nSlice info:\n");
for (uint32_t i = 0; i < fileinfo.m_slice_info.size(); i++)
{
const basist::basisu_slice_info &sliceinfo = fileinfo.m_slice_info[i];
printf("%u: OrigWidthHeight: %ux%u, BlockDim: %ux%u, TotalBlocks: %u, Compressed size: %u, Image: %u, Level: %u, UnpackedCRC16: 0x%X, alpha: %u, iframe: %i\n",
i,
sliceinfo.m_orig_width, sliceinfo.m_orig_height,
sliceinfo.m_num_blocks_x, sliceinfo.m_num_blocks_y,
sliceinfo.m_total_blocks,
sliceinfo.m_compressed_size,
sliceinfo.m_image_index, sliceinfo.m_level_index,
sliceinfo.m_unpacked_slice_crc16,
(uint32_t)sliceinfo.m_alpha_flag,
(uint32_t)sliceinfo.m_iframe_flag);
}
printf("\n");
if (!dec.start_transcoding(&basis_data[0], (uint32_t)basis_data.size()))

View File

@@ -4298,6 +4298,7 @@ namespace basist
image_info.m_image_index = image_index;
image_info.m_total_levels = total_levels;
image_info.m_alpha_flag = (pHeader->m_flags & cBASISHeaderFlagHasAlphaSlices) != 0;
image_info.m_iframe_flag = (slice_desc.m_flags & cSliceDescFlagsFrameIsIFrame) != 0;
image_info.m_width = slice_desc.m_num_blocks_x * 4;
image_info.m_height = slice_desc.m_num_blocks_y * 4;
image_info.m_orig_width = slice_desc.m_orig_width;
@@ -4342,7 +4343,8 @@ namespace basist
else
break;
if (total_levels > 16)
const uint32_t cMaxSupportedLevels = 16;
if (total_levels > cMaxSupportedLevels)
{
BASISU_DEVEL_ERROR("basisu_transcoder::get_total_image_levels: invalid image levels!\n");
return false;
@@ -4415,6 +4417,7 @@ namespace basist
image_info.m_image_index = image_index;
image_info.m_level_index = level_index;
image_info.m_alpha_flag = (pHeader->m_flags & cBASISHeaderFlagHasAlphaSlices) != 0;
image_info.m_iframe_flag = (slice_desc.m_flags & cSliceDescFlagsFrameIsIFrame) != 0;
image_info.m_width = slice_desc.m_num_blocks_x * 4;
image_info.m_height = slice_desc.m_num_blocks_y * 4;
image_info.m_orig_width = slice_desc.m_orig_width;
@@ -4496,6 +4499,7 @@ namespace basist
slice_info.m_level_index = pSlice_descs[i].m_level_index;
slice_info.m_unpacked_slice_crc16 = pSlice_descs[i].m_slice_data_crc16;
slice_info.m_alpha_flag = (pSlice_descs[i].m_flags & cSliceDescFlagsIsAlphaData) != 0;
slice_info.m_iframe_flag = (pSlice_descs[i].m_flags & cSliceDescFlagsFrameIsIFrame) != 0;
if (pSlice_descs[i].m_image_index >= pHeader->m_total_images)
{

View File

@@ -129,6 +129,7 @@ namespace basist
uint32_t m_unpacked_slice_crc16;
bool m_alpha_flag; // true if the slice has alpha data
bool m_iframe_flag;
};
typedef std::vector<basisu_slice_info> basisu_slice_info_vec;
@@ -151,6 +152,7 @@ namespace basist
uint32_t m_first_slice_index;
bool m_alpha_flag; // true if the image has alpha data
bool m_iframe_flag;
};
struct basisu_image_level_info
@@ -171,6 +173,7 @@ namespace basist
uint32_t m_first_slice_index;
bool m_alpha_flag; // true if the image has alpha data
bool m_iframe_flag;
};
struct basisu_file_info

File diff suppressed because one or more lines are too long