From d9512d14df6480326a6012becd6d106660adfdb0 Mon Sep 17 00:00:00 2001 From: jeffqjiangNew <142832361+jeffqjiangNew@users.noreply.github.com> Date: Sat, 12 Apr 2025 09:11:33 -0400 Subject: [PATCH] AVC error resilience: Treat reference list setup errors as non-critical. Also minor wording correction in sample script output. (#557) * * AVC error resilience: Treat reference list setup errors as non-critical. Also minor wordking correction in sample script output. * * AVC error resilience: Minor change. --------- Co-authored-by: Kiriti Gowda [ROCm/rocdecode commit: 193423300f0d6ffd57888e96cf7858e3ffb87609] --- projects/rocdecode/src/parser/avc_parser.cpp | 14 ++++++++------ .../test/testScripts/run_rocDecodeSamples.py | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/projects/rocdecode/src/parser/avc_parser.cpp b/projects/rocdecode/src/parser/avc_parser.cpp index ba1f8998df..4994098bae 100644 --- a/projects/rocdecode/src/parser/avc_parser.cpp +++ b/projects/rocdecode/src/parser/avc_parser.cpp @@ -239,8 +239,8 @@ ParserResult AvcVideoParser::ParsePictureData(const uint8_t *p_stream, uint32_t } // Reference picture lists construction (8.2.4) - if ((ret2 = SetupReflist(&slice_info_list_[num_slices_])) != PARSER_OK) { - return ret2; + if (SetupReflist(&slice_info_list_[num_slices_]) != PARSER_OK) { + ERR("Error occurred in SetupReflist(). Ignore and continue."); } if (num_slices_ == 0) { @@ -2498,8 +2498,9 @@ ParserResult AvcVideoParser::SetupReflist(AvcSliceInfo *p_slice_info) { AvcPicture *ref_pic_list_x = p_slice_info->ref_list_0_; // RefPicListX AvcListMod *p_list_mod = p_slice_header->ref_pic_list.modification_l0; int num_ref_idx_lx_active = p_slice_header->num_ref_idx_l0_active_minus1 + 1; - if (ModifiyRefList(ref_pic_list_x, p_list_mod, num_ref_idx_lx_active, p_slice_header) != PARSER_OK) { - return PARSER_FAIL; + ParserResult ret; + if ((ret = ModifiyRefList(ref_pic_list_x, p_list_mod, num_ref_idx_lx_active, p_slice_header)) != PARSER_OK) { + return ret; } } @@ -2508,8 +2509,9 @@ ParserResult AvcVideoParser::SetupReflist(AvcSliceInfo *p_slice_info) { AvcPicture *ref_pic_list_x = p_slice_info->ref_list_1_; // RefPicListX AvcListMod *p_list_mod = p_slice_header->ref_pic_list.modification_l1; int num_ref_idx_lx_active = p_slice_header->num_ref_idx_l1_active_minus1 + 1; - if (ModifiyRefList(ref_pic_list_x, p_list_mod, num_ref_idx_lx_active, p_slice_header) != PARSER_OK) { - return PARSER_FAIL; + ParserResult ret; + if ((ret = ModifiyRefList(ref_pic_list_x, p_list_mod, num_ref_idx_lx_active, p_slice_header)) != PARSER_OK) { + return ret; } } } diff --git a/projects/rocdecode/test/testScripts/run_rocDecodeSamples.py b/projects/rocdecode/test/testScripts/run_rocDecodeSamples.py index 022d4cfcc2..fcaad98da0 100644 --- a/projects/rocdecode/test/testScripts/run_rocDecodeSamples.py +++ b/projects/rocdecode/test/testScripts/run_rocDecodeSamples.py @@ -286,7 +286,7 @@ else: line = logFile.readline() print("Decode status report of the", numFiles, "streams:") - print(" - The number of completed decoded streams is", numDecodedStreams) + print(" - The number of completely decoded streams is", numDecodedStreams) print(" - The number of streams that did not finish decoding is " + str(numFiles - numDecodedStreams)) logFile.close() if numFiles != numDecodedStreams: