> -----Original Message-----
> From: Wang, Fei W <fei.w.w...@intel.com>
> Sent: Tuesday, January 3, 2023 9:00 PM
> To: ffmpeg-devel@ffmpeg.org
> Cc: Linjie Fu <linjie...@intel.com>; Linjie Fu <linjie.justin...@gmail.com>; 
> Wang,
> Fei W <fei.w.w...@intel.com>
> Subject: [FFmpeg-devel][PATCH v3 08/11] lavc/vaapi_hevc: Pass SCC parameters
> Through VA-API
> 
> From: Linjie Fu <linjie...@intel.com>
> 
> Including sps/pps/slice parameters.
> 
> Signed-off-by: Linjie Fu <linjie.justin...@gmail.com>
> Signed-off-by: Fei Wang <fei.w.w...@intel.com>
> ---
>  libavcodec/vaapi_hevc.c | 52 +++++++++++++++++++++++++++++++++++++----
>  1 file changed, 47 insertions(+), 5 deletions(-)
> 
> diff --git a/libavcodec/vaapi_hevc.c b/libavcodec/vaapi_hevc.c index
> 20fb36adfa..73a8f5b4ce 100644
> --- a/libavcodec/vaapi_hevc.c
> +++ b/libavcodec/vaapi_hevc.c
> @@ -124,7 +124,7 @@ static int vaapi_hevc_start_frame(AVCodecContext
> *avctx,
>      const HEVCPPS          *pps = h->ps.pps;
> 
>      const ScalingList *scaling_list = NULL;
> -    int pic_param_size, err, i;
> +    int pic_param_size, num_comps, pre_palette_size, err, i;
> 
>      VAPictureParameterBufferHEVC *pic_param =
> (VAPictureParameterBufferHEVC *)&pic->pic_param;
> 
> @@ -245,8 +245,46 @@ static int vaapi_hevc_start_frame(AVCodecContext
> *avctx,
>          for (i = 0; i < 6; i++)
>              pic->pic_param.rext.cr_qp_offset_list[i]        = 
> pps->cr_qp_offset_list[i];
>      }
> +
> +    pre_palette_size = pps->pps_palette_predictor_initializers_present_flag ?
> +                       pps->pps_num_palette_predictor_initializers :
> +                       (sps->sps_palette_predictor_initializers_present_flag 
> ?
> +                       sps->sps_num_palette_predictor_initializers_minus1 + 
> 1 :
> +                       0);
> +
> +    if (avctx->profile == FF_PROFILE_HEVC_SCC) {
> +        pic->pic_param.scc = (VAPictureParameterBufferHEVCScc) {
> +            .screen_content_pic_fields.bits = {
> +                .pps_curr_pic_ref_enabled_flag              = pps-
> >pps_curr_pic_ref_enabled_flag,
> +                .palette_mode_enabled_flag                  = sps-
> >palette_mode_enabled_flag,
> +                .motion_vector_resolution_control_idc       = sps-
> >motion_vector_resolution_control_idc,
> +                .intra_boundary_filtering_disabled_flag     = sps-
> >intra_boundary_filtering_disabled_flag,
> +                .residual_adaptive_colour_transform_enabled_flag
> +                                                            = pps-
> >residual_adaptive_colour_transform_enabled_flag,
> +                .pps_slice_act_qp_offsets_present_flag      = pps-
> >pps_slice_act_qp_offsets_present_flag,
> +            },
> +            .palette_max_size                               = 
> sps->palette_max_size,
> +            .delta_palette_max_predictor_size               = sps-
> >delta_palette_max_predictor_size,
> +            .predictor_palette_size                         = 
> pre_palette_size,
> +            .pps_act_y_qp_offset_plus5                      = pps-
> >residual_adaptive_colour_transform_enabled_flag ?
> +                                                              
> pps->pps_act_y_qp_offset + 5 : 0,
> +            .pps_act_cb_qp_offset_plus5                     = pps-
> >residual_adaptive_colour_transform_enabled_flag ?
> +                                                              
> pps->pps_act_cb_qp_offset + 5 : 0,
> +            .pps_act_cr_qp_offset_plus3                     = pps-
> >residual_adaptive_colour_transform_enabled_flag ?
> +                                                              
> pps->pps_act_cr_qp_offset + 3 : 0,
> +        };
> +
> +        num_comps = pps->monochrome_palette_flag ? 1 : 3;
> +        for (int comp = 0; comp < num_comps; comp++)
> +            for (int j = 0; j < pre_palette_size; j++)
> +                pic->pic_param.scc.predictor_palette_entries[comp][j] =
> +                    pps->pps_palette_predictor_initializers_present_flag ?
> +                    pps->pps_palette_predictor_initializer[comp][j]:
> +                    sps->sps_palette_predictor_initializer[comp][j];
> +    }
> +
>  #endif
> -    pic_param_size = avctx->profile == FF_PROFILE_HEVC_REXT ?
> +    pic_param_size = avctx->profile >= FF_PROFILE_HEVC_REXT ?
>                              sizeof(pic->pic_param) : 
> sizeof(VAPictureParameterBufferHEVC);
> 
>      err = ff_vaapi_decode_make_param_buffer(avctx, &pic->pic, @@ -299,7
> +337,7 @@ static int vaapi_hevc_end_frame(AVCodecContext *avctx)
>      VASliceParameterBufferHEVC *last_slice_param =
> (VASliceParameterBufferHEVC *)&pic->last_slice_param;
>      int ret;
> 
> -    int slice_param_size = avctx->profile == FF_PROFILE_HEVC_REXT ?
> +    int slice_param_size = avctx->profile >= FF_PROFILE_HEVC_REXT ?
>                              sizeof(pic->last_slice_param) :
> sizeof(VASliceParameterBufferHEVC);
> 
>      if (pic->last_size) {
> @@ -413,7 +451,7 @@ static int vaapi_hevc_decode_slice(AVCodecContext
> *avctx,
>      VAAPIDecodePictureHEVC *pic = h->ref->hwaccel_picture_private;
>      VASliceParameterBufferHEVC *last_slice_param =
> (VASliceParameterBufferHEVC *)&pic->last_slice_param;
> 
> -    int slice_param_size = avctx->profile == FF_PROFILE_HEVC_REXT ?
> +    int slice_param_size = avctx->profile >= FF_PROFILE_HEVC_REXT ?
>                              sizeof(pic->last_slice_param) :
> sizeof(VASliceParameterBufferHEVC);
> 
>      int nb_list = (sh->slice_type == HEVC_SLICE_B) ?
> @@ -478,11 +516,15 @@ static int vaapi_hevc_decode_slice(AVCodecContext
> *avctx,
>      fill_pred_weight_table(avctx, h, sh, last_slice_param);
> 
>  #if VA_CHECK_VERSION(1, 2, 0)
> -    if (avctx->profile == FF_PROFILE_HEVC_REXT) {
> +    if (avctx->profile >= FF_PROFILE_HEVC_REXT) {
>          pic->last_slice_param.rext = (VASliceParameterBufferHEVCRext) {
>              .slice_ext_flags.bits = {
>                  .cu_chroma_qp_offset_enabled_flag = sh-
> >cu_chroma_qp_offset_enabled_flag,
> +                .use_integer_mv_flag = sh->use_integer_mv_flag,
>              },
> +            .slice_act_y_qp_offset  = sh->slice_act_y_qp_offset,
> +            .slice_act_cb_qp_offset = sh->slice_act_cb_qp_offset,
> +            .slice_act_cr_qp_offset = sh->slice_act_cr_qp_offset,

Hello,

https://patchwork.ffmpeg.org/project/ffmpeg/patch/20230103125952.2707824-8-fei.w.w...@intel.com/

A new warning during build reported in patchwork, but didn't appear in my local 
build. 
Does anyone can help tell me how to reproduce this warning? Any special 
configuration or build environment needed?

Thanks
Fei

>          };
>          for (i = 0; i < 15 && i < sh->nb_refs[L0]; i++) {
>              pic->last_slice_param.rext.luma_offset_l0[i] = 
> sh->luma_offset_l0[i];
> --
> 2.25.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to