mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 06:46:38 +00:00
x265enc: add accept-caps handling
Ovewrite default handling to avoid doing a caps query. Check the received caps against the possible formats supported by the x265 library.
This commit is contained in:
parent
f2aabb9f89
commit
9e99102b48
1 changed files with 27 additions and 0 deletions
|
@ -297,6 +297,32 @@ gst_x265_enc_get_supported_input_caps (void)
|
||||||
return caps;
|
return caps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gst_x265_enc_sink_query (GstVideoEncoder * enc, GstQuery * query)
|
||||||
|
{
|
||||||
|
gboolean res;
|
||||||
|
|
||||||
|
switch (GST_QUERY_TYPE (query)) {
|
||||||
|
case GST_QUERY_ACCEPT_CAPS:{
|
||||||
|
GstCaps *acceptable, *caps;
|
||||||
|
|
||||||
|
acceptable = gst_x265_enc_get_supported_input_caps ();
|
||||||
|
gst_query_parse_accept_caps (query, &caps);
|
||||||
|
|
||||||
|
gst_query_set_accept_caps_result (query,
|
||||||
|
gst_caps_is_subset (caps, acceptable));
|
||||||
|
gst_caps_unref (acceptable);
|
||||||
|
res = TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
res = GST_VIDEO_ENCODER_CLASS (parent_class)->sink_query (enc, query);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
static GstCaps *
|
static GstCaps *
|
||||||
gst_x265_enc_sink_getcaps (GstVideoEncoder * enc, GstCaps * filter)
|
gst_x265_enc_sink_getcaps (GstVideoEncoder * enc, GstCaps * filter)
|
||||||
{
|
{
|
||||||
|
@ -336,6 +362,7 @@ gst_x265_enc_class_init (GstX265EncClass * klass)
|
||||||
gstencoder_class->flush = GST_DEBUG_FUNCPTR (gst_x265_enc_flush);
|
gstencoder_class->flush = GST_DEBUG_FUNCPTR (gst_x265_enc_flush);
|
||||||
gstencoder_class->finish = GST_DEBUG_FUNCPTR (gst_x265_enc_finish);
|
gstencoder_class->finish = GST_DEBUG_FUNCPTR (gst_x265_enc_finish);
|
||||||
gstencoder_class->getcaps = GST_DEBUG_FUNCPTR (gst_x265_enc_sink_getcaps);
|
gstencoder_class->getcaps = GST_DEBUG_FUNCPTR (gst_x265_enc_sink_getcaps);
|
||||||
|
gstencoder_class->sink_query = GST_DEBUG_FUNCPTR (gst_x265_enc_sink_query);
|
||||||
gstencoder_class->propose_allocation =
|
gstencoder_class->propose_allocation =
|
||||||
GST_DEBUG_FUNCPTR (gst_x265_enc_propose_allocation);
|
GST_DEBUG_FUNCPTR (gst_x265_enc_propose_allocation);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue