videomixer: Fix negotiation with 0/1 framerates

https://bugzilla.gnome.org/show_bug.cgi?id=703743
This commit is contained in:
Sebastian Dröge 2013-07-09 11:53:07 +02:00
parent beebe2b7af
commit 9e9d2ce098

View file

@ -194,7 +194,7 @@ gst_videomixer2_update_src_caps (GstVideoMixer2 * mix)
width = GST_VIDEO_INFO_WIDTH (&mpad->info); width = GST_VIDEO_INFO_WIDTH (&mpad->info);
height = GST_VIDEO_INFO_HEIGHT (&mpad->info); height = GST_VIDEO_INFO_HEIGHT (&mpad->info);
if (fps_n == 0 || fps_d == 0 || width == 0 || height == 0) if (width == 0 || height == 0)
continue; continue;
this_width = width + MAX (mpad->xpos, 0); this_width = width + MAX (mpad->xpos, 0);
@ -217,7 +217,7 @@ gst_videomixer2_update_src_caps (GstVideoMixer2 * mix)
} }
} }
if (best_fps_n <= 0 && best_fps_d <= 0) { if (best_fps_n <= 0 || best_fps_d <= 0 || best_fps == 0.0) {
best_fps_n = 25; best_fps_n = 25;
best_fps_d = 1; best_fps_d = 1;
best_fps = 25.0; best_fps = 25.0;
@ -1660,7 +1660,7 @@ gst_videomixer2_sink_clip (GstCollectPads * pads,
} }
end_time = GST_BUFFER_DURATION (buf); end_time = GST_BUFFER_DURATION (buf);
if (end_time == -1) if (end_time == -1 && GST_VIDEO_INFO_FPS_N (&pad->info) != 0)
end_time = end_time =
gst_util_uint64_scale_int (GST_SECOND, gst_util_uint64_scale_int (GST_SECOND,
GST_VIDEO_INFO_FPS_D (&pad->info), GST_VIDEO_INFO_FPS_N (&pad->info)); GST_VIDEO_INFO_FPS_D (&pad->info), GST_VIDEO_INFO_FPS_N (&pad->info));