From 28d1d048a603082b5acf50c0d59ecfd039b46a6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Manuel=20J=C3=A1quez=20Leal?= Date: Wed, 14 Jun 2017 18:30:53 +0200 Subject: [PATCH] libs: decoder: h264: add getter/setter for low latency mode https://bugzilla.gnome.org/show_bug.cgi?id=783588 --- gst-libs/gst/vaapi/gstvaapidecoder_h264.c | 38 +++++++++++++++++++++++ gst-libs/gst/vaapi/gstvaapidecoder_h264.h | 7 +++++ 2 files changed, 45 insertions(+) diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_h264.c b/gst-libs/gst/vaapi/gstvaapidecoder_h264.c index 678e952f4c..18df327da9 100644 --- a/gst-libs/gst/vaapi/gstvaapidecoder_h264.c +++ b/gst-libs/gst/vaapi/gstvaapidecoder_h264.c @@ -528,6 +528,8 @@ struct _GstVaapiDecoderH264Private guint has_context:1; guint progressive_sequence:1; guint top_field_first:1; + + gboolean force_low_latency; }; /** @@ -4732,6 +4734,42 @@ gst_vaapi_decoder_h264_set_alignment (GstVaapiDecoderH264 * decoder, decoder->priv.stream_alignment = alignment; } +/** + * gst_vaapi_decoder_h264_set_low_latency: + * @decoder: a #GstVaapiDecoderH264 + * @force_low_latency: %TRUE if force low latency + * + * if @force_low_latency is %TRUE the decoded frames are pushed soon + * as possible, instead of to wait until decoded picture buffer (DPB) + * release them. + * + * This violate the H.264 specification but it is useful for some live + * sources. + **/ +void +gst_vaapi_decoder_h264_set_low_latency (GstVaapiDecoderH264 * decoder, + gboolean force_low_latency) +{ + g_return_if_fail (decoder != NULL); + + decoder->priv.force_low_latency = force_low_latency; +} + +/** + * gst_vaapi_decoder_h264_get_low_latency: + * @decoder: a #GstVaapiDecoderH264 + * + * Returns: %TRUE if the low latency mode is enabled; otherwise + * %FALSE. + **/ +gboolean +gst_vaapi_decoder_h264_get_low_latency (GstVaapiDecoderH264 * decoder) +{ + g_return_val_if_fail (decoder != NULL, FALSE); + + return decoder->priv.force_low_latency; +} + /** * gst_vaapi_decoder_h264_new: * @display: a #GstVaapiDisplay diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_h264.h b/gst-libs/gst/vaapi/gstvaapidecoder_h264.h index f9949dd126..9ca65cfc99 100644 --- a/gst-libs/gst/vaapi/gstvaapidecoder_h264.h +++ b/gst-libs/gst/vaapi/gstvaapidecoder_h264.h @@ -55,6 +55,13 @@ void gst_vaapi_decoder_h264_set_alignment(GstVaapiDecoderH264 *decoder, GstVaapiStreamAlignH264 alignment); +gboolean +gst_vaapi_decoder_h264_get_low_latency(GstVaapiDecoderH264 * decoder); + +void +gst_vaapi_decoder_h264_set_low_latency(GstVaapiDecoderH264 * decoder, + gboolean force_low_latency); + G_END_DECLS #endif /* GST_VAAPI_DECODER_H264_H */