> -----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".