mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 10:11:08 +00:00
videorate: replace accept-caps with a caps query
accept-caps is only a shallow check, it needs to know whether downstream as a whole accepts the framerate
This commit is contained in:
parent
56be0653e0
commit
5ef0a09794
1 changed files with 5 additions and 2 deletions
|
@ -1011,7 +1011,7 @@ gst_video_rate_check_variable_rate (GstVideoRate * videorate,
|
|||
{
|
||||
GstStructure *st;
|
||||
gint fps_d, fps_n;
|
||||
GstCaps *srcpadcaps, *tmpcaps;
|
||||
GstCaps *srcpadcaps, *tmpcaps, *downstream_caps;
|
||||
GstPad *pad = NULL;
|
||||
|
||||
srcpadcaps =
|
||||
|
@ -1026,13 +1026,16 @@ gst_video_rate_check_variable_rate (GstVideoRate * videorate,
|
|||
gst_caps_unref (srcpadcaps);
|
||||
|
||||
pad = gst_pad_get_peer (GST_BASE_TRANSFORM_SRC_PAD (videorate));
|
||||
if (pad && !gst_pad_query_accept_caps (pad, tmpcaps)) {
|
||||
downstream_caps = gst_pad_query_caps (pad, NULL);
|
||||
if (pad && !gst_caps_can_intersect (tmpcaps, downstream_caps)) {
|
||||
videorate->force_variable_rate = TRUE;
|
||||
gst_caps_unref (downstream_caps);
|
||||
GST_DEBUG_OBJECT (videorate, "Downstream forces variable framerate"
|
||||
" respecting it");
|
||||
|
||||
goto done;
|
||||
}
|
||||
gst_caps_unref (downstream_caps);
|
||||
|
||||
videorate->to_rate_numerator = fps_n;
|
||||
videorate->to_rate_denominator = fps_d;
|
||||
|
|
Loading…
Reference in a new issue