[FFmpeg-devel] [PATCH 2/6] avcodec/vaapi_h264: Do not store our error code in VASliceParameterBufferH264
Xiang, Haihao
haihao.xiang at intel.com
Tue Jul 9 09:11:54 EEST 2024
On So, 2024-07-07 at 20:47 +0200, Michael Niedermayer wrote:
> I am not sure this is possible (thus this requires review)
>
> Fixes: CID1604570 Overflowed constant
>
> Sponsored-by: Sovereign Tech Fund
> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> ---
> libavcodec/vaapi_h264.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/libavcodec/vaapi_h264.c b/libavcodec/vaapi_h264.c
> index 398e92568c2..77819a64a4e 100644
> --- a/libavcodec/vaapi_h264.c
> +++ b/libavcodec/vaapi_h264.c
> @@ -342,6 +342,10 @@ static int vaapi_h264_decode_slice(AVCodecContext *avctx,
> const H264SliceContext *sl = &h->slice_ctx[0];
> VASliceParameterBufferH264 slice_param;
> int err;
> + int slice_type = ff_h264_get_slice_type(sl);
> +
> + if (slice_type < 0)
> + return slice_type;
sl->slice_type should be one of AV_PICTURE_TYPE_P, AV_PICTURE_TYPE_B,
AV_PICTURE_TYPE_I, AV_PICTURE_TYPE_SP and AV_PICTURE_TYPE_SI when this callback
function is called, I don't think the if statement is required.
Thanks
Haihao
>
> slice_param = (VASliceParameterBufferH264) {
> .slice_data_size = size,
> @@ -349,7 +353,7 @@ static int vaapi_h264_decode_slice(AVCodecContext *avctx,
> .slice_data_flag = VA_SLICE_DATA_FLAG_ALL,
> .slice_data_bit_offset = get_bits_count(&sl->gb),
> .first_mb_in_slice = (sl->mb_y >>
> FIELD_OR_MBAFF_PICTURE(h)) * h->mb_width + sl->mb_x,
> - .slice_type = ff_h264_get_slice_type(sl),
> + .slice_type = slice_type,
> .direct_spatial_mv_pred_flag = sl->slice_type == AV_PICTURE_TYPE_B
> ? sl->direct_spatial_mv_pred : 0,
> .num_ref_idx_l0_active_minus1 = sl->list_count > 0 ? sl-
> >ref_count[0] - 1 : 0,
> .num_ref_idx_l1_active_minus1 = sl->list_count > 1 ? sl-
> >ref_count[1] - 1 : 0,
More information about the ffmpeg-devel
mailing list