mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-23 14:36:24 +00:00
h264parse: try the current caps before querying downstream
If we have a stream that contains an unchanging SPS/PPS for every video frame, we don't need to to constantly query downstream for it's supported caps if the current caps are compatible with the negotiated caps. https://bugzilla.gnome.org/show_bug.cgi?id=761014
This commit is contained in:
parent
4bbe16bb7f
commit
f352691a04
1 changed files with 13 additions and 5 deletions
|
@ -1499,11 +1499,20 @@ get_compatible_profile_caps (GstH264SPS * sps)
|
|||
static void
|
||||
ensure_caps_profile (GstH264Parse * h264parse, GstCaps * caps, GstH264SPS * sps)
|
||||
{
|
||||
GstCaps *filter_caps, *peer_caps, *compat_caps;
|
||||
GstCaps *peer_caps, *compat_caps;
|
||||
|
||||
filter_caps = gst_caps_new_empty_simple ("video/x-h264");
|
||||
peer_caps =
|
||||
gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (h264parse), filter_caps);
|
||||
peer_caps = gst_pad_get_current_caps (GST_BASE_PARSE_SRC_PAD (h264parse));
|
||||
if (!peer_caps || !gst_caps_can_intersect (caps, peer_caps)) {
|
||||
GstCaps *filter_caps = gst_caps_new_empty_simple ("video/x-h264");
|
||||
|
||||
if (peer_caps)
|
||||
gst_caps_unref (peer_caps);
|
||||
peer_caps =
|
||||
gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (h264parse),
|
||||
filter_caps);
|
||||
|
||||
gst_caps_unref (filter_caps);
|
||||
}
|
||||
|
||||
if (peer_caps && !gst_caps_can_intersect (caps, peer_caps)) {
|
||||
GstStructure *structure;
|
||||
|
@ -1534,7 +1543,6 @@ ensure_caps_profile (GstH264Parse * h264parse, GstCaps * caps, GstH264SPS * sps)
|
|||
}
|
||||
if (peer_caps)
|
||||
gst_caps_unref (peer_caps);
|
||||
gst_caps_unref (filter_caps);
|
||||
}
|
||||
|
||||
static const gchar *
|
||||
|
|
Loading…
Reference in a new issue