mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 11:41:09 +00:00
videorate: properly handle variable framerate input and drop-only=true
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4969>
This commit is contained in:
parent
32dfa102b3
commit
cae434c6ff
2 changed files with 24 additions and 0 deletions
|
@ -503,6 +503,11 @@ gst_video_rate_transform_caps (GstBaseTransform * trans,
|
||||||
/* We can provide everything up to the maximum framerate at the src */
|
/* We can provide everything up to the maximum framerate at the src */
|
||||||
gst_structure_set (s2, "framerate", GST_TYPE_FRACTION_RANGE,
|
gst_structure_set (s2, "framerate", GST_TYPE_FRACTION_RANGE,
|
||||||
0, 1, max_num, max_denom, NULL);
|
0, 1, max_num, max_denom, NULL);
|
||||||
|
} else if (min_num == 0) {
|
||||||
|
/* if provided with variable framerate input, then we don't have a
|
||||||
|
* restriction on the output framerate currently */
|
||||||
|
gst_structure_set (s2, "framerate", GST_TYPE_FRACTION_RANGE,
|
||||||
|
min_num, 1, maxrate, 1, NULL);
|
||||||
}
|
}
|
||||||
} else if (direction == GST_PAD_SINK) {
|
} else if (direction == GST_PAD_SINK) {
|
||||||
gint min_num = 0, min_denom = 1;
|
gint min_num = 0, min_denom = 1;
|
||||||
|
|
|
@ -1090,6 +1090,25 @@ static TestInfo caps_negotiation_tests[] = {
|
||||||
.expected_src_caps =
|
.expected_src_caps =
|
||||||
"video/x-raw, framerate=(fraction)15/1;"
|
"video/x-raw, framerate=(fraction)15/1;"
|
||||||
"video/x-raw, framerate=(fraction)[0/1, 20/1]"},
|
"video/x-raw, framerate=(fraction)[0/1, 20/1]"},
|
||||||
|
{
|
||||||
|
.caps = "video/x-raw, framerate=0/1",
|
||||||
|
.drop_only = TRUE,
|
||||||
|
.expected_sink_caps =
|
||||||
|
"video/x-raw, framerate=(fraction)0/1;"
|
||||||
|
"video/x-raw, framerate=(fraction)[0/1, MAX];",
|
||||||
|
.expected_src_caps =
|
||||||
|
"video/x-raw, framerate=(fraction)0/1;"
|
||||||
|
"video/x-raw, framerate=(fraction)[0/1, MAX]"},
|
||||||
|
{
|
||||||
|
.caps = "video/x-raw, framerate=0/1",
|
||||||
|
.drop_only = TRUE,
|
||||||
|
.max_rate = 15,
|
||||||
|
.expected_sink_caps =
|
||||||
|
"video/x-raw, framerate=(fraction)0/1;"
|
||||||
|
"video/x-raw, framerate=(fraction)[0/1, MAX];",
|
||||||
|
.expected_src_caps =
|
||||||
|
"video/x-raw, framerate=(fraction)0/1;"
|
||||||
|
"video/x-raw, framerate=(fraction)[0/1, 15/1]"},
|
||||||
};
|
};
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
|
Loading…
Reference in a new issue