libs: decoder: h264: add getter/setter for low latency mode
authorVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Wed, 14 Jun 2017 16:30:53 +0000 (18:30 +0200)
committerVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Fri, 7 Jul 2017 17:32:11 +0000 (19:32 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=783588

gst-libs/gst/vaapi/gstvaapidecoder_h264.c
gst-libs/gst/vaapi/gstvaapidecoder_h264.h

index 678e952..18df327 100644 (file)
@@ -528,6 +528,8 @@ struct _GstVaapiDecoderH264Private
   guint has_context:1;
   guint progressive_sequence:1;
   guint top_field_first:1;
+
+  gboolean force_low_latency;
 };
 
 /**
@@ -4733,6 +4735,42 @@ gst_vaapi_decoder_h264_set_alignment (GstVaapiDecoderH264 * decoder,
 }
 
 /**
+ * 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
  * @caps: a #GstCaps holding codec information
index f9949dd..9ca65cf 100644 (file)
@@ -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 */