[FFmpeg-devel] [PATCH] avcodec/h264_refs: reset MMCO when invalid mmco code is found

Paul B Mahol onemda at gmail.com
Fri Dec 7 11:36:23 EET 2018


On 12/7/18, Paul B Mahol <onemda at gmail.com> wrote:
> On 12/7/18, Michael Niedermayer <michael at niedermayer.cc> wrote:
>> On Thu, Dec 06, 2018 at 03:26:41PM +0100, Paul B Mahol wrote:
>>> This recovers state with #7374 linked sample.
>>>
>>> Work funded by Open Broadcast Systems.
>>>
>>> Signed-off-by: Paul B Mahol <onemda at gmail.com>
>>> ---
>>>  libavcodec/h264_refs.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/libavcodec/h264_refs.c b/libavcodec/h264_refs.c
>>> index eaf965e43d..5645a203a7 100644
>>> --- a/libavcodec/h264_refs.c
>>> +++ b/libavcodec/h264_refs.c
>>> @@ -718,6 +718,7 @@ int ff_h264_execute_ref_pic_marking(H264Context *h)
>>>              }
>>>              break;
>>>          case MMCO_RESET:
>>> +        default:
>>>              while (h->short_ref_count) {
>>>                  remove_short(h, h->short_ref[0]->frame_num, 0);
>>>              }
>>> @@ -730,7 +731,6 @@ int ff_h264_execute_ref_pic_marking(H264Context *h)
>>>              for (j = 0; j < MAX_DELAYED_PIC_COUNT; j++)
>>>                  h->last_pocs[j] = INT_MIN;
>>>              break;
>>> -        default: assert(0);
>>>          }
>>>      }
>>
>> mmco[i].opcode should not be invalid, its checked around the point where
>> this
>> array is filled.
>> unless there is something iam missing
>
> Yes, you are missing big time.
> If you think by "checked" about those nice asserts they are not enabled at
> all.
>

There is check for invalid opcode, but stored invalid opcode is not changed.


More information about the ffmpeg-devel mailing list