videorate: update the caps framerate only in the GST_PAD_SINK transform_caps direction
authorGeorge Kiagiadakis <george.kiagiadakis@collabora.com>
Thu, 28 May 2015 10:51:35 +0000 (12:51 +0200)
committerGeorge Kiagiadakis <george.kiagiadakis@collabora.com>
Fri, 29 May 2015 13:03:05 +0000 (15:03 +0200)
When a stream has a variable framerate, videorate calculates it and
forces it on the output caps. However, the code in _transform_caps()
currently also does that if the transform is going in the opposite
direction (GST_PAD_SRC), so during a renegotiation it tries to force
upstream to use the calculated framerate and it fails.

https://bugzilla.gnome.org/show_bug.cgi?id=750032

gst/videorate/gstvideorate.c

index aa3cf14..19441c7 100644 (file)
@@ -375,7 +375,7 @@ gst_video_rate_transform_caps (GstBaseTransform * trans,
 
     s1 = gst_structure_copy (s);
 
-    if (videorate->updating_caps) {
+    if (videorate->updating_caps && direction == GST_PAD_SINK) {
       GST_INFO_OBJECT (trans,
           "Only updating caps %" GST_PTR_FORMAT " with framerate" " %d/%d",
           caps, videorate->to_rate_numerator, videorate->to_rate_denominator);