diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2012-12-13 14:12:52 +0100 |
---|---|---|
committer | Josep Torra <n770galaxy@gmail.com> | 2013-03-05 11:05:50 +0100 |
commit | 14bea4ee6dd3422e4abd94ea6df7b230456f9ad7 (patch) | |
tree | 1bb02dc1c5538a9f9094d2aacd8547eb5ce9f16f | |
parent | e41a83878acf3a02a531e0cbe585bd6efa2e95ba (diff) |
h264parse: use upstream width/height when given
The upstream width and height should override the dimension detected in the
file.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=683142
-rw-r--r-- | gst/videoparsers/gsth264parse.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c index 8c9d6c8cb..2ee6b7fda 100644 --- a/gst/videoparsers/gsth264parse.c +++ b/gst/videoparsers/gsth264parse.c @@ -1107,12 +1107,24 @@ gst_h264_parse_update_src_caps (GstH264Parse * h264parse, GstCaps * caps) if (G_UNLIKELY (modified)) { gint fps_num = h264parse->fps_num; gint fps_den = h264parse->fps_den; + gint width, height; GstClockTime latency; caps = gst_caps_copy (sink_caps); - /* sps should give this */ - gst_caps_set_simple (caps, "width", G_TYPE_INT, sps->width, - "height", G_TYPE_INT, sps->height, NULL); + + /* sps should give this but upstream overrides */ + if (s && gst_structure_has_field (s, "width")) + gst_structure_get_int (s, "width", &width); + else + width = sps->width; + + if (s && gst_structure_has_field (s, "height")) + gst_structure_get_int (s, "height", &height); + else + height = sps->height; + + gst_caps_set_simple (caps, "width", G_TYPE_INT, width, + "height", G_TYPE_INT, height, NULL); /* upstream overrides */ if (s && gst_structure_has_field (s, "framerate")) |