From 107088a658f663886441b11b2eec4a055fb42ba9 Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Tue, 14 Jul 2020 11:11:11 -0400 Subject: [PATCH] v4l2codecs: Unify the src template caps format Notably NV12_4L4 ended up being applied to only VP9 decoder. This fixes the situation by using a central define for all static src pad templated formats. Part-of: --- .../gst-plugins-bad/sys/v4l2codecs/gstv4l2codech264dec.c | 3 ++- .../gst-plugins-bad/sys/v4l2codecs/gstv4l2codecmpeg2dec.c | 3 ++- .../gst-plugins-bad/sys/v4l2codecs/gstv4l2codecvp8dec.c | 3 ++- .../gst-plugins-bad/sys/v4l2codecs/gstv4l2codecvp9dec.c | 4 ++-- subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2format.h | 2 ++ 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech264dec.c b/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech264dec.c index 00adb23020..ce61d04037 100644 --- a/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech264dec.c +++ b/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech264dec.c @@ -24,6 +24,7 @@ #include "gstv4l2codecallocator.h" #include "gstv4l2codech264dec.h" #include "gstv4l2codecpool.h" +#include "gstv4l2format.h" #include "linux/v4l2-controls.h" #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) @@ -52,7 +53,7 @@ GST_STATIC_PAD_TEMPLATE (GST_VIDEO_DECODER_SINK_NAME, static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE (GST_VIDEO_DECODER_SRC_NAME, GST_PAD_SRC, GST_PAD_ALWAYS, - GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ NV12, YUY2, NV12_32L32 }"))); + GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (GST_V4L2_DEFAULT_VIDEO_FORMATS))); struct _GstV4l2CodecH264Dec { diff --git a/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codecmpeg2dec.c b/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codecmpeg2dec.c index e3bc78a848..38c8fd494c 100644 --- a/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codecmpeg2dec.c +++ b/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codecmpeg2dec.c @@ -25,6 +25,7 @@ #include "gstv4l2codecallocator.h" #include "gstv4l2codecmpeg2dec.h" #include "gstv4l2codecpool.h" +#include "gstv4l2format.h" #include "linux/v4l2-controls.h" #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) @@ -55,7 +56,7 @@ GST_STATIC_PAD_TEMPLATE (GST_VIDEO_DECODER_SINK_NAME, static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE (GST_VIDEO_DECODER_SRC_NAME, GST_PAD_SRC, GST_PAD_ALWAYS, - GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ NV12, YUY2, NV12_32L32 }"))); + GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (GST_V4L2_DEFAULT_VIDEO_FORMATS))); struct _GstV4l2CodecMpeg2Dec { diff --git a/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codecvp8dec.c b/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codecvp8dec.c index 8a0634a59a..a319741bfd 100644 --- a/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codecvp8dec.c +++ b/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codecvp8dec.c @@ -25,6 +25,7 @@ #include "gstv4l2codecalphadecodebin.h" #include "gstv4l2codecpool.h" #include "gstv4l2codecvp8dec.h" +#include "gstv4l2format.h" #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) @@ -56,7 +57,7 @@ GST_STATIC_PAD_TEMPLATE (GST_VIDEO_DECODER_SINK_NAME, static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE (GST_VIDEO_DECODER_SRC_NAME, GST_PAD_SRC, GST_PAD_ALWAYS, - GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ NV12, YUY2, NV12_32L32 }"))); + GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (GST_V4L2_DEFAULT_VIDEO_FORMATS))); struct _GstV4l2CodecVp8Dec { diff --git a/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codecvp9dec.c b/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codecvp9dec.c index 8017ab0ca5..fd635e8cf2 100644 --- a/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codecvp9dec.c +++ b/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codecvp9dec.c @@ -26,6 +26,7 @@ #include "gstv4l2codecalphadecodebin.h" #include "gstv4l2codecpool.h" #include "gstv4l2codecvp9dec.h" +#include "gstv4l2format.h" #include "linux/v4l2-controls.h" #include "linux/videodev2.h" @@ -57,8 +58,7 @@ GST_STATIC_PAD_TEMPLATE (GST_VIDEO_DECODER_SINK_NAME, static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE (GST_VIDEO_DECODER_SRC_NAME, GST_PAD_SRC, GST_PAD_ALWAYS, - GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE - ("{ NV12, YUY2, NV12_32L32, NV12_4L4 }"))); + GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (GST_V4L2_DEFAULT_VIDEO_FORMATS))); struct _GstV4l2CodecVp9Dec { diff --git a/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2format.h b/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2format.h index bcb0918605..ef693b6dcd 100644 --- a/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2format.h +++ b/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2format.h @@ -24,6 +24,8 @@ #include #include "linux/videodev2.h" +#define GST_V4L2_DEFAULT_VIDEO_FORMATS "{ NV12, YUY2, NV12_4L4, NV12_32L32 }" + gboolean gst_v4l2_format_to_video_info (struct v4l2_format * fmt, GstVideoInfo * out_info);