diff options
author | Matthew Bader <matt@hyperlobic.net> | 2014-12-04 23:30:23 -0500 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2014-12-16 23:17:25 +0000 |
commit | 0fc55436b3bf9551566b693f7d1135cbf54057e1 (patch) | |
tree | 7a28fd98a71dfed41ac99f25f98a1d0c61e25201 /sys/dshowsrcwrapper | |
parent | 9d79b65a557d288357cf0796c010fc555757ef70 (diff) | |
download | gstreamer-plugins-bad-0fc55436b3bf9551566b693f7d1135cbf54057e1.tar.gz |
dshowsrcwrapper: Added support for image/jpeg and h264
https://bugzilla.gnome.org/show_bug.cgi?id=741188
Diffstat (limited to 'sys/dshowsrcwrapper')
-rw-r--r-- | sys/dshowsrcwrapper/gstdshow.cpp | 6 | ||||
-rw-r--r-- | sys/dshowsrcwrapper/gstdshowvideosrc.cpp | 25 |
2 files changed, 29 insertions, 2 deletions
diff --git a/sys/dshowsrcwrapper/gstdshow.cpp b/sys/dshowsrcwrapper/gstdshow.cpp index de700aa73..29266bae6 100644 --- a/sys/dshowsrcwrapper/gstdshow.cpp +++ b/sys/dshowsrcwrapper/gstdshow.cpp @@ -462,12 +462,16 @@ gst_dshow_new_video_caps (GstVideoFormat video_format, const gchar * name, if (g_ascii_strncasecmp (name, "video/x-dv, systemstream=FALSE", 31) == 0) { video_caps = gst_caps_new_simple ("video/x-dv", "systemstream", G_TYPE_BOOLEAN, FALSE, - "format", G_TYPE_STRING, "dvsd", + "format", G_TYPE_STRING, "dvsd", NULL); } else if (g_ascii_strncasecmp (name, "video/x-dv, systemstream=TRUE", 31) == 0) { video_caps = gst_caps_new_simple ("video/x-dv", "systemstream", G_TYPE_BOOLEAN, TRUE, NULL); return video_caps; + } else if (g_ascii_strncasecmp (name, "image/jpeg", 10) == 0) { + video_caps = gst_caps_new_simple ("image/jpeg", NULL); + } else if (g_ascii_strncasecmp (name, "video/x-h264", 12) == 0) { + video_caps = gst_caps_new_simple ("video/x-h264", NULL); } } diff --git a/sys/dshowsrcwrapper/gstdshowvideosrc.cpp b/sys/dshowsrcwrapper/gstdshowvideosrc.cpp index 441dff90e..846c050d1 100644 --- a/sys/dshowsrcwrapper/gstdshowvideosrc.cpp +++ b/sys/dshowsrcwrapper/gstdshowvideosrc.cpp @@ -48,7 +48,18 @@ static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src", "width = " GST_VIDEO_SIZE_RANGE ", " "height = " GST_VIDEO_SIZE_RANGE ", " "framerate = " GST_VIDEO_FPS_RANGE ", " - "systemstream = (boolean) { TRUE, FALSE }") + "systemstream = (boolean) { TRUE, FALSE }; " + + "image/jpeg, " + "width = " GST_VIDEO_SIZE_RANGE ", " + "height = " GST_VIDEO_SIZE_RANGE ", " + "framerate = " GST_VIDEO_FPS_RANGE "; " + + "video/x-h264, " + "width = " GST_VIDEO_SIZE_RANGE ", " + "height = " GST_VIDEO_SIZE_RANGE ", " + "framerate = " GST_VIDEO_FPS_RANGE + ) ); G_DEFINE_TYPE (GstDshowVideoSrc, gst_dshowvideosrc, GST_TYPE_PUSH_SRC) @@ -898,6 +909,18 @@ gst_dshowvideosrc_getcaps_from_streamcaps (GstDshowVideoSrc * src, IPin * pin) pin_mediatype->granularityWidth = 0; pin_mediatype->granularityHeight = 0; + + } else if (gst_dshow_check_mediatype (pin_mediatype->mediatype, + MEDIASUBTYPE_MJPG, FORMAT_VideoInfo)) { + mediacaps = + gst_dshow_new_video_caps (GST_VIDEO_FORMAT_ENCODED, + "image/jpeg", pin_mediatype); + + } else if (gst_dshow_check_mediatype (pin_mediatype->mediatype, + MEDIASUBTYPE_H264, FORMAT_VideoInfo)) { + mediacaps = + gst_dshow_new_video_caps (GST_VIDEO_FORMAT_ENCODED, + "video/x-h264", pin_mediatype); } if (mediacaps) { |