* rocDecode/HEVC: Fixed an issue in RPS decode function. (#455)

- In searching for a short term reference picture in DPB, we need to make sure it is used.
This commit is contained in:
jeffqjiangNew
2024-11-15 15:41:50 -05:00
committed by GitHub
parent 6339767b4c
commit 85faa096e5
2 changed files with 3 additions and 11 deletions
+3 -3
View File
@@ -2029,7 +2029,7 @@ void HevcVideoParser::DecodeRps() {
/// Short term reference pictures
for (i = 0; i < num_poc_st_curr_before_; i++) {
for (j = 0; j < HEVC_MAX_DPB_FRAMES; j++) {
if (poc_st_curr_before_[i] == dpb_buffer_.frame_buffer_list[j].pic_order_cnt) {
if (poc_st_curr_before_[i] == dpb_buffer_.frame_buffer_list[j].pic_order_cnt && dpb_buffer_.frame_buffer_list[j].use_status != kNotUsed) {
ref_pic_set_st_curr_before_[i] = j; // RefPicSetStCurrBefore. Use DPB buffer index for now
dpb_buffer_.frame_buffer_list[j].is_reference = kUsedForShortTerm;
break;
@@ -2039,7 +2039,7 @@ void HevcVideoParser::DecodeRps() {
for (i = 0; i < num_poc_st_curr_after_; i++) {
for (j = 0; j < HEVC_MAX_DPB_FRAMES; j++) {
if (poc_st_curr_after_[i] == dpb_buffer_.frame_buffer_list[j].pic_order_cnt) {
if (poc_st_curr_after_[i] == dpb_buffer_.frame_buffer_list[j].pic_order_cnt && dpb_buffer_.frame_buffer_list[j].use_status != kNotUsed) {
ref_pic_set_st_curr_after_[i] = j; // RefPicSetStCurrAfter
dpb_buffer_.frame_buffer_list[j].is_reference = kUsedForShortTerm;
break;
@@ -2049,7 +2049,7 @@ void HevcVideoParser::DecodeRps() {
for ( i = 0; i < num_poc_st_foll_; i++ ) {
for (j = 0; j < HEVC_MAX_DPB_FRAMES; j++) {
if (poc_st_foll_[i] == dpb_buffer_.frame_buffer_list[j].pic_order_cnt) {
if (poc_st_foll_[i] == dpb_buffer_.frame_buffer_list[j].pic_order_cnt && dpb_buffer_.frame_buffer_list[j].use_status != kNotUsed) {
ref_pic_set_st_foll_[i] = j; // RefPicSetStFoll
dpb_buffer_.frame_buffer_list[j].is_reference = kUsedForShortTerm;
break;
-8
View File
@@ -28,14 +28,6 @@ THE SOFTWARE.
#include <map>
#include <algorithm>
//size_id = 0
extern int scaling_list_default_0[1][6][16];
//size_id = 1, 2
extern int scaling_list_default_1_2[2][6][64];
//size_id = 3
extern int scaling_list_default_3[1][2][64];
class HevcVideoParser : public RocVideoParser {
public: