From 70191f38e3278b75ac13ea16e71d0ffdbb7bf8d9 Mon Sep 17 00:00:00 2001 From: Veerabadhran Gopalakrishnan Date: Sun, 4 Oct 2020 22:13:43 -0400 Subject: [PATCH] frontends/va: Added protected playback support for VP9 Add VP9 header handling in slice data buffer. Acked-by: Pierre-Eric Pelloux-Prayer Reviewed-by: Boyuan Zhang Part-of: --- src/gallium/frontends/va/picture.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/gallium/frontends/va/picture.c b/src/gallium/frontends/va/picture.c index 4706013ac8f..c358bc25c6b 100644 --- a/src/gallium/frontends/va/picture.c +++ b/src/gallium/frontends/va/picture.c @@ -277,7 +277,7 @@ handleVAProtectedSliceDataBufferType(vlVaContext *context, vlVaBuffer *buf) static void handleVASliceDataBufferType(vlVaContext *context, vlVaBuffer *buf) { - enum pipe_video_format format; + enum pipe_video_format format = u_reduce_video_profile(context->templat.profile); unsigned num_buffers = 0; void * const *buffers[3]; unsigned sizes[3]; @@ -335,9 +335,16 @@ handleVASliceDataBufferType(vlVaContext *context, vlVaBuffer *buf) } } - buffers[num_buffers] = buf->data; - sizes[num_buffers] = buf->size; - ++num_buffers; + if (context->desc.base.protected_playback && PIPE_VIDEO_FORMAT_VP9 == format){ + vlVaDecoderVP9BitstreamHeader(context, buf); + buffers[num_buffers] = buf->data + context->desc.vp9.picture_parameter.frame_header_length_in_bytes; + sizes[num_buffers] = buf->size - context->desc.vp9.picture_parameter.frame_header_length_in_bytes; + ++num_buffers; + } else { + buffers[num_buffers] = buf->data; + sizes[num_buffers] = buf->size; + ++num_buffers; + } if (format == PIPE_VIDEO_FORMAT_JPEG) { buffers[num_buffers] = (void *const)&eoi_jpeg;