> -----Original Message-----
> From: Wang, Fei W <[email protected]>
> Sent: Tuesday, January 3, 2023 9:00 PM
> To: [email protected]
> Cc: Linjie Fu <[email protected]>; Linjie Fu <[email protected]>;
> Wang,
> Fei W <[email protected]>
> Subject: [FFmpeg-devel][PATCH v3 08/11] lavc/vaapi_hevc: Pass SCC parameters
> Through VA-API
>
> From: Linjie Fu <[email protected]>
>
> Including sps/pps/slice parameters.
>
> Signed-off-by: Linjie Fu <[email protected]>
> Signed-off-by: Fei Wang <[email protected]>
> ---
> 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/[email protected]/
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
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".