AV1: Fixed an issue with multiple tile group OBUs per picture cases. (#404)

* * rocDecode/AV1: Fixed an issue with multiple tile group OBUs per picture cases.
 - We now use the single base pointer for all tiles in all tile group OBUs and submit them once per picture.

* * rocDecode/AV1: Fixed a typo.

[ROCm/rocdecode commit: 30ee6787b2]
This commit is contained in:
jeffqjiangNew
2024-08-07 10:16:17 -04:00
zatwierdzone przez GitHub
rodzic a27173e4bb
commit 3b31e617ea
2 zmienionych plików z 12 dodań i 7 usunięć
@@ -1233,10 +1233,9 @@ void Av1VideoParser::ParseTileGroupObu(uint8_t *p_stream, size_t size) {
uint8_t *p_tg_buf = p_stream;
uint32_t tg_size = size;
pic_stream_data_ptr_ = p_stream; // Todo: deal with multiple tile group OBUs
pic_stream_data_size_ = size;
p_tile_group->buffer_ptr = p_stream;
p_tile_group->buffer_size = size;
if (p_tile_group->tile_group_num == 0) {
p_tile_group->buffer_ptr = p_stream;
}
// First parse the header
p_tile_group->num_tiles = tile_cols * tile_rows;
@@ -1272,7 +1271,12 @@ void Av1VideoParser::ParseTileGroupObu(uint8_t *p_stream, size_t size) {
}
p_tile_group->num_tiles_parsed++;
}
p_tile_group->tile_group_num++;
if (p_tile_group->tg_end == p_tile_group->num_tiles - 1) {
p_tile_group->buffer_size = p_tile_group->tile_data_info[p_tile_group->tg_end].tile_offset + p_tile_group->tile_data_info[p_tile_group->tg_end].tile_size;
p_tile_group->tg_start = 0;
pic_stream_data_ptr_ = p_tile_group->buffer_ptr;
pic_stream_data_size_ = p_tile_group->buffer_size;
if (!frame_header_.disable_frame_end_update_cdf) {
//frame_end_update_cdf();
}