From 870570ee668178a7bdbe7073f691dfaf53784eae Mon Sep 17 00:00:00 2001 From: Sil Vilerino Date: Tue, 14 Nov 2023 13:20:36 -0500 Subject: [PATCH] frontend/va: Support VAEncMiscParameterMaxSliceSize Reviewed-by: Jesse Natalie Reviewed-by: Ruijing Dong Part-of: --- src/gallium/frontends/va/picture.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/gallium/frontends/va/picture.c b/src/gallium/frontends/va/picture.c index c4aee677c40..29a050d4290 100644 --- a/src/gallium/frontends/va/picture.c +++ b/src/gallium/frontends/va/picture.c @@ -643,6 +643,28 @@ handleVAEncMiscParameterTypeHRD(vlVaContext *context, VAEncMiscParameterBuffer * return status; } +static VAStatus +handleVAEncMiscParameterTypeMaxSliceSize(vlVaContext *context, VAEncMiscParameterBuffer *misc) +{ + VAStatus status = VA_STATUS_SUCCESS; + VAEncMiscParameterMaxSliceSize *max_slice_size_buffer = (VAEncMiscParameterMaxSliceSize *)misc->data; + switch (u_reduce_video_profile(context->templat.profile)) { + case PIPE_VIDEO_FORMAT_MPEG4_AVC: + { + context->desc.h264enc.slice_mode = PIPE_VIDEO_SLICE_MODE_MAX_SLICE_SICE; + context->desc.h264enc.max_slice_bytes = max_slice_size_buffer->max_slice_size; + } break; + case PIPE_VIDEO_FORMAT_HEVC: + { + context->desc.h265enc.slice_mode = PIPE_VIDEO_SLICE_MODE_MAX_SLICE_SICE; + context->desc.h265enc.max_slice_bytes = max_slice_size_buffer->max_slice_size; + } break; + default: + break; + } + return status; +} + static VAStatus handleVAEncMiscParameterTypeRIR(vlVaContext *context, VAEncMiscParameterBuffer *misc) { @@ -732,6 +754,10 @@ handleVAEncMiscParameterBufferType(vlVaContext *context, vlVaBuffer *buf) vaStatus = handleVAEncMiscParameterTypeRIR(context, misc); break; + case VAEncMiscParameterTypeMaxSliceSize: + vaStatus = handleVAEncMiscParameterTypeMaxSliceSize(context, misc); + break; + default: break; }