diff options
author | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2017-08-02 09:36:08 -0400 |
---|---|---|
committer | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2017-08-02 09:36:08 -0400 |
commit | b0fb95b95696029bb63dd7a7640a86046a3ea7b1 (patch) | |
tree | 2f0876d2ab46b56514bf46113a8cef467700e596 /sys | |
parent | 040e25218ac4d7cf50bcfd4651300b4bdfa629cb (diff) |
v4l2videoenc: Turn gst_v4l2_is_video_enc into a helper
This reduces the amount of code needed in each codec class.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/v4l2/gstv4l2.c | 2 | ||||
-rw-r--r-- | sys/v4l2/gstv4l2h263enc.c | 14 | ||||
-rw-r--r-- | sys/v4l2/gstv4l2h264enc.c | 14 | ||||
-rw-r--r-- | sys/v4l2/gstv4l2mpeg4enc.c | 14 | ||||
-rw-r--r-- | sys/v4l2/gstv4l2videoenc.c | 13 | ||||
-rw-r--r-- | sys/v4l2/gstv4l2videoenc.h | 3 | ||||
-rw-r--r-- | sys/v4l2/gstv4l2vp8enc.c | 14 | ||||
-rw-r--r-- | sys/v4l2/gstv4l2vp9enc.c | 14 |
8 files changed, 24 insertions, 64 deletions
diff --git a/sys/v4l2/gstv4l2.c b/sys/v4l2/gstv4l2.c index bf456e823..07a2873b5 100644 --- a/sys/v4l2/gstv4l2.c +++ b/sys/v4l2/gstv4l2.c @@ -189,7 +189,7 @@ gst_v4l2_probe_and_register (GstPlugin * plugin) if (gst_v4l2_is_video_dec (sink_caps, src_caps)) { gst_v4l2_video_dec_register (plugin, basename, it->device_path, sink_caps, src_caps); - } else if (gst_v4l2_is_video_enc (sink_caps, src_caps)) { + } else if (gst_v4l2_is_video_enc (sink_caps, src_caps, NULL)) { if (gst_v4l2_is_h264_enc (sink_caps, src_caps)) gst_v4l2_h264_enc_register (plugin, basename, it->device_path, sink_caps, src_caps); diff --git a/sys/v4l2/gstv4l2h263enc.c b/sys/v4l2/gstv4l2h263enc.c index 95f35c969..3b63af5d2 100644 --- a/sys/v4l2/gstv4l2h263enc.c +++ b/sys/v4l2/gstv4l2h263enc.c @@ -102,18 +102,8 @@ gst_v4l2_h263_enc_class_init (GstV4l2H263EncClass * klass) gboolean gst_v4l2_is_h263_enc (GstCaps * sink_caps, GstCaps * src_caps) { - gboolean ret = FALSE; - GstCaps *codec_caps; - - codec_caps = gst_static_caps_get (&src_template_caps); - - if (gst_caps_is_subset (sink_caps, gst_v4l2_object_get_raw_caps ()) - && gst_caps_can_intersect (src_caps, codec_caps)) - ret = TRUE; - - gst_caps_unref (codec_caps); - - return ret; + return gst_v4l2_is_video_enc (sink_caps, src_caps, + gst_static_caps_get (&src_template_caps)); } void diff --git a/sys/v4l2/gstv4l2h264enc.c b/sys/v4l2/gstv4l2h264enc.c index dc318e3c3..81969b288 100644 --- a/sys/v4l2/gstv4l2h264enc.c +++ b/sys/v4l2/gstv4l2h264enc.c @@ -517,18 +517,8 @@ gst_v4l2_h264_enc_class_init (GstV4l2H264EncClass * klass) gboolean gst_v4l2_is_h264_enc (GstCaps * sink_caps, GstCaps * src_caps) { - gboolean ret = FALSE; - GstCaps *codec_caps; - - codec_caps = gst_static_caps_get (&src_template_caps); - - if (gst_caps_is_subset (sink_caps, gst_v4l2_object_get_raw_caps ()) - && gst_caps_can_intersect (src_caps, codec_caps)) - ret = TRUE; - - gst_caps_unref (codec_caps); - - return ret; + return gst_v4l2_is_video_enc (sink_caps, src_caps, + gst_static_caps_get (&src_template_caps)); } void diff --git a/sys/v4l2/gstv4l2mpeg4enc.c b/sys/v4l2/gstv4l2mpeg4enc.c index b03bf68de..45b4956a0 100644 --- a/sys/v4l2/gstv4l2mpeg4enc.c +++ b/sys/v4l2/gstv4l2mpeg4enc.c @@ -413,18 +413,8 @@ gst_v4l2_mpeg4_enc_class_init (GstV4l2Mpeg4EncClass * klass) gboolean gst_v4l2_is_mpeg4_enc (GstCaps * sink_caps, GstCaps * src_caps) { - gboolean ret = FALSE; - GstCaps *codec_caps; - - codec_caps = gst_static_caps_get (&src_template_caps); - - if (gst_caps_is_subset (sink_caps, gst_v4l2_object_get_raw_caps ()) - && gst_caps_can_intersect (src_caps, codec_caps)) - ret = TRUE; - - gst_caps_unref (codec_caps); - - return ret; + return gst_v4l2_is_video_enc (sink_caps, src_caps, + gst_static_caps_get (&src_template_caps)); } void diff --git a/sys/v4l2/gstv4l2videoenc.c b/sys/v4l2/gstv4l2videoenc.c index 08039b160..9b1496390 100644 --- a/sys/v4l2/gstv4l2videoenc.c +++ b/sys/v4l2/gstv4l2videoenc.c @@ -904,12 +904,21 @@ gst_v4l2_video_enc_subclass_init (gpointer g_class, gpointer data) /* Probing functions */ gboolean -gst_v4l2_is_video_enc (GstCaps * sink_caps, GstCaps * src_caps) +gst_v4l2_is_video_enc (GstCaps * sink_caps, GstCaps * src_caps, + GstCaps * codec_caps) { gboolean ret = FALSE; + gboolean (*check_caps) (const GstCaps *, const GstCaps *); + + if (codec_caps) { + check_caps = gst_caps_can_intersect; + } else { + codec_caps = gst_v4l2_object_get_codec_caps (); + check_caps = gst_caps_is_subset; + } if (gst_caps_is_subset (sink_caps, gst_v4l2_object_get_raw_caps ()) - && gst_caps_is_subset (src_caps, gst_v4l2_object_get_codec_caps ())) + && check_caps (src_caps, gst_v4l2_object_get_codec_caps ())) ret = TRUE; return ret; diff --git a/sys/v4l2/gstv4l2videoenc.h b/sys/v4l2/gstv4l2videoenc.h index d1c029b1a..daf1892cd 100644 --- a/sys/v4l2/gstv4l2videoenc.h +++ b/sys/v4l2/gstv4l2videoenc.h @@ -79,7 +79,8 @@ struct _GstV4l2VideoEncClass GType gst_v4l2_video_enc_get_type (void); -gboolean gst_v4l2_is_video_enc (GstCaps * sink_caps, GstCaps * src_caps); +gboolean gst_v4l2_is_video_enc (GstCaps * sink_caps, GstCaps * src_caps, + GstCaps * codec_caps); void gst_v4l2_video_enc_register (GstPlugin * plugin, GType type, const char *codec, const gchar * basename, const gchar * device_path, diff --git a/sys/v4l2/gstv4l2vp8enc.c b/sys/v4l2/gstv4l2vp8enc.c index 420ae5e13..75f358616 100644 --- a/sys/v4l2/gstv4l2vp8enc.c +++ b/sys/v4l2/gstv4l2vp8enc.c @@ -297,18 +297,8 @@ gst_v4l2_vp8_enc_class_init (GstV4l2Vp8EncClass * klass) gboolean gst_v4l2_is_vp8_enc (GstCaps * sink_caps, GstCaps * src_caps) { - gboolean ret = FALSE; - GstCaps *codec_caps; - - codec_caps = gst_static_caps_get (&src_template_caps); - - if (gst_caps_is_subset (sink_caps, gst_v4l2_object_get_raw_caps ()) - && gst_caps_can_intersect (src_caps, codec_caps)) - ret = TRUE; - - gst_caps_unref (codec_caps); - - return ret; + return gst_v4l2_is_video_enc (sink_caps, src_caps, + gst_static_caps_get (&src_template_caps)); } void diff --git a/sys/v4l2/gstv4l2vp9enc.c b/sys/v4l2/gstv4l2vp9enc.c index fe9714d3e..139525abf 100644 --- a/sys/v4l2/gstv4l2vp9enc.c +++ b/sys/v4l2/gstv4l2vp9enc.c @@ -297,18 +297,8 @@ gst_v4l2_vp9_enc_class_init (GstV4l2Vp9EncClass * klass) gboolean gst_v4l2_is_vp9_enc (GstCaps * sink_caps, GstCaps * src_caps) { - gboolean ret = FALSE; - GstCaps *codec_caps; - - codec_caps = gst_static_caps_get (&src_template_caps); - - if (gst_caps_is_subset (sink_caps, gst_v4l2_object_get_raw_caps ()) - && gst_caps_can_intersect (src_caps, codec_caps)) - ret = TRUE; - - gst_caps_unref (codec_caps); - - return ret; + return gst_v4l2_is_video_enc (sink_caps, src_caps, + gst_static_caps_get (&src_template_caps)); } void |