codecs: vp9decoder: Add segmentation to picture.

VA-API needs AC and DC quant scales for both luma and chroma, and the loop
filter level for current frame, but these values are not available outside
the private GstVp9Parser structure. And these values may change from frame
to frame, so they are picture specific.

This patch add GstVp9Segmentation structure array to GstVp9Picture to expose
it to derived classes. This approach is safer than passing the parser at
picture handling flow.

Also, this patch, in order to solve Documentation CI, mark as private the
GstVp9Picture structure.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1700>
This commit is contained in:
Víctor Manuel Jáquez Leal 2020-10-16 10:35:36 +02:00 committed by GStreamer Merge Bot
parent 5e3c7f2092
commit 113867766e
2 changed files with 6 additions and 0 deletions

View file

@ -348,6 +348,9 @@ gst_vp9_decoder_handle_frame (GstVideoDecoder * decoder,
picture->subsampling_y = priv->parser->subsampling_y;
picture->bit_depth = priv->parser->bit_depth;
memcpy (picture->segmentation, priv->parser->segmentation,
sizeof (priv->parser->segmentation));
if (klass->new_picture) {
if (!klass->new_picture (self, frame, picture)) {
GST_ERROR_OBJECT (self, "new picture error");

View file

@ -34,6 +34,7 @@ typedef struct _GstVp9Picture GstVp9Picture;
struct _GstVp9Picture
{
/*< private >*/
GstMiniObject parent;
/* From GstVideoCodecFrame */
@ -52,6 +53,8 @@ struct _GstVp9Picture
gpointer user_data;
GDestroyNotify notify;
GstVp9Segmentation segmentation[GST_VP9_MAX_SEGMENTS];
};
GST_CODECS_API