audiodecoder: add option to use default pad accept-caps handling
Add gst_audio_decoder_set_use_default_pad_acceptcaps() to allow subclasses to make videodecoder use the default pad acceptcaps handling instead of resorting to the caps query that is, usually, less efficient and unecessary API: gst_audio_decoder_set_use_default_pad_acceptcaps
This commit is contained in:
parent
4982188cf7
commit
33b1da7b80
@ -279,6 +279,9 @@ struct _GstAudioDecoderPrivate
|
|||||||
|
|
||||||
/* pending serialized sink events, will be sent from finish_frame() */
|
/* pending serialized sink events, will be sent from finish_frame() */
|
||||||
GList *pending_events;
|
GList *pending_events;
|
||||||
|
|
||||||
|
/* flags */
|
||||||
|
gboolean use_default_pad_acceptcaps;
|
||||||
};
|
};
|
||||||
|
|
||||||
//* Default channel layouts taken from audioconvert */
|
//* Default channel layouts taken from audioconvert */
|
||||||
@ -2691,6 +2694,11 @@ gst_audio_decoder_sink_query_default (GstAudioDecoder * dec, GstQuery * query)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case GST_QUERY_ACCEPT_CAPS:{
|
case GST_QUERY_ACCEPT_CAPS:{
|
||||||
|
if (dec->priv->use_default_pad_acceptcaps) {
|
||||||
|
res =
|
||||||
|
gst_pad_query_default (GST_AUDIO_DECODER_SINK_PAD (dec),
|
||||||
|
GST_OBJECT_CAST (dec), query);
|
||||||
|
} else {
|
||||||
GstCaps *caps;
|
GstCaps *caps;
|
||||||
GstCaps *allowed_caps;
|
GstCaps *allowed_caps;
|
||||||
GstCaps *template_caps;
|
GstCaps *template_caps;
|
||||||
@ -2713,6 +2721,7 @@ gst_audio_decoder_sink_query_default (GstAudioDecoder * dec, GstQuery * query)
|
|||||||
|
|
||||||
gst_query_set_accept_caps_result (query, accept);
|
gst_query_set_accept_caps_result (query, accept);
|
||||||
res = TRUE;
|
res = TRUE;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case GST_QUERY_SEEKING:
|
case GST_QUERY_SEEKING:
|
||||||
@ -3611,3 +3620,24 @@ gst_audio_decoder_get_allocator (GstAudioDecoder * dec,
|
|||||||
if (params)
|
if (params)
|
||||||
*params = dec->priv->ctx.params;
|
*params = dec->priv->ctx.params;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_audio_decoder_set_use_default_pad_acceptcaps:
|
||||||
|
* @decoder: a #GstAudioDecoder
|
||||||
|
* @use: if the default pad accept-caps query handling should be used
|
||||||
|
*
|
||||||
|
* Lets #GstAudioDecoder sub-classes decide if they want the sink pad
|
||||||
|
* to use the default pad query handler to reply to accept-caps queries.
|
||||||
|
*
|
||||||
|
* By setting this to true it is possible to further customize the default
|
||||||
|
* handler with %GST_PAD_SET_ACCEPT_INTERSECT and
|
||||||
|
* %GST_PAD_SET_ACCEPT_TEMPLATE
|
||||||
|
*
|
||||||
|
* Since: 1.6
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gst_audio_decoder_set_use_default_pad_acceptcaps (GstAudioDecoder * decoder,
|
||||||
|
gboolean use)
|
||||||
|
{
|
||||||
|
decoder->priv->use_default_pad_acceptcaps = use;
|
||||||
|
}
|
||||||
|
@ -397,6 +397,9 @@ void gst_audio_decoder_merge_tags (GstAudioDecoder * dec,
|
|||||||
gboolean gst_audio_decoder_sink_query_default (GstAudioDecoder * dec,
|
gboolean gst_audio_decoder_sink_query_default (GstAudioDecoder * dec,
|
||||||
GstQuery * query);
|
GstQuery * query);
|
||||||
|
|
||||||
|
void gst_audio_decoder_set_use_default_pad_acceptcaps (GstAudioDecoder * decoder,
|
||||||
|
gboolean use);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* _GST_AUDIO_DECODER_H_ */
|
#endif /* _GST_AUDIO_DECODER_H_ */
|
||||||
|
@ -67,6 +67,7 @@ EXPORTS
|
|||||||
gst_audio_decoder_set_plc
|
gst_audio_decoder_set_plc
|
||||||
gst_audio_decoder_set_plc_aware
|
gst_audio_decoder_set_plc_aware
|
||||||
gst_audio_decoder_set_tolerance
|
gst_audio_decoder_set_tolerance
|
||||||
|
gst_audio_decoder_set_use_default_pad_acceptcaps
|
||||||
gst_audio_decoder_sink_query_default
|
gst_audio_decoder_sink_query_default
|
||||||
gst_audio_downmix_meta_api_get_type
|
gst_audio_downmix_meta_api_get_type
|
||||||
gst_audio_downmix_meta_get_info
|
gst_audio_downmix_meta_get_info
|
||||||
|
Loading…
x
Reference in New Issue
Block a user