summaryrefslogtreecommitdiff
path: root/sys/dshowsrcwrapper
diff options
context:
space:
mode:
authorMatthew Bader <matt@hyperlobic.net>2014-12-04 23:30:23 -0500
committerTim-Philipp Müller <tim@centricular.com>2014-12-16 23:17:25 +0000
commit0fc55436b3bf9551566b693f7d1135cbf54057e1 (patch)
tree7a28fd98a71dfed41ac99f25f98a1d0c61e25201 /sys/dshowsrcwrapper
parent9d79b65a557d288357cf0796c010fc555757ef70 (diff)
downloadgstreamer-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.cpp6
-rw-r--r--sys/dshowsrcwrapper/gstdshowvideosrc.cpp25
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) {