[FFmpeg-devel] [PATCH] avcodec/h264_slice: clear old slice POC values on parsing failure
James Almer
jamrial at gmail.com
Tue Aug 10 15:22:53 EEST 2021
On 8/8/2021 3:38 PM, James Almer wrote:
> If a slice header fails to parse, and the next one uses different Sequence and
> Picture parameter sets, certain values may not be read if they are not coded,
> resulting in the previous slice values being used.
>
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> libavcodec/h264_slice.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
> index 41338fbcb6..a31e804620 100644
> --- a/libavcodec/h264_slice.c
> +++ b/libavcodec/h264_slice.c
> @@ -1897,6 +1897,8 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
> if (nal->type == H264_NAL_IDR_SLICE)
> get_ue_golomb_long(&sl->gb); /* idr_pic_id */
>
> + sl->poc_lsb = 0;
> + sl->delta_poc_bottom = 0;
> if (sps->poc_type == 0) {
> sl->poc_lsb = get_bits(&sl->gb, sps->log2_max_poc_lsb);
>
> @@ -1904,6 +1906,7 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
> sl->delta_poc_bottom = get_se_golomb(&sl->gb);
> }
>
> + sl->delta_poc[0] = sl->delta_poc[1] = 0;
> if (sps->poc_type == 1 && !sps->delta_pic_order_always_zero_flag) {
> sl->delta_poc[0] = get_se_golomb(&sl->gb);
Will apply.
More information about the ffmpeg-devel
mailing list