[FFmpeg-devel] [PATCH] avcodec/h264_refs: reset MMCO when invalid mmco code is found
Carl Eugen Hoyos
ceffmpeg at gmail.com
Fri Dec 7 15:06:31 EET 2018
2018-12-06 15:26 GMT+01:00, Paul B Mahol <onemda at gmail.com>:
> 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);
> }
> }
>
Alternative is to avoid an invalid mmco opcode.
Carl Eugen
diff --git a/libavcodec/h264_refs.c b/libavcodec/h264_refs.c
index eaf965e..c7e64ec 100644
--- a/libavcodec/h264_refs.c
+++ b/libavcodec/h264_refs.c
@@ -875,6 +875,7 @@
av_log(logctx, AV_LOG_ERROR,
"illegal memory management control operation %d\n",
opcode);
+ mmco[i].opcode = MMCO_RESET;
return -1;
}
if (opcode == MMCO_END)
More information about the ffmpeg-devel
mailing list