audiodecoder: getter for allocator
authorVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Tue, 7 Aug 2012 15:24:33 +0000 (17:24 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 14 Aug 2012 13:47:34 +0000 (15:47 +0200)
Sometimes the decoder would use the allocator for something else than just
allocating output buffers, for example, querying different parameters.

This patch expose a getter accessor for the negotiated memory allocator.

gst-libs/gst/audio/gstaudiodecoder.c
gst-libs/gst/audio/gstaudiodecoder.h

index 791004e..852f191 100644 (file)
@@ -2921,3 +2921,30 @@ done:
 
   return buffer;
 }
+
+/**
+ * gst_audio_decoder_get_allocator:
+ * @dec: a #GstAudioDecoder
+ * @allocator: (out) (allow-none) (transfer full): the #GstAllocator
+ * used
+ * @params: (out) (allow-none) (transfer full): the
+ * #GstAllocatorParams of @allocator
+ *
+ * Lets #GstAudioDecoder sub-classes to know the memory @allocator
+ * used by the base class and its @params.
+ *
+ * Unref the @allocator after use it.
+ */
+void
+gst_audio_decoder_get_allocator (GstAudioDecoder * dec,
+    GstAllocator ** allocator, GstAllocationParams * params)
+{
+  g_return_if_fail (GST_IS_AUDIO_DECODER (dec));
+
+  if (allocator)
+    *allocator = dec->priv->ctx.allocator ?
+        gst_object_ref (dec->priv->ctx.allocator) : NULL;
+
+  if (params)
+    *params = dec->priv->ctx.params;
+}
index cbc2464..4132dbb 100644 (file)
@@ -344,6 +344,10 @@ void              gst_audio_decoder_set_needs_format (GstAudioDecoder * dec,
 
 gboolean          gst_audio_decoder_get_needs_format (GstAudioDecoder * dec);
 
+void              gst_audio_decoder_get_allocator (GstAudioDecoder * dec,
+                                                   GstAllocator ** allocator,
+                                                   GstAllocationParams * params);
+
 void              gst_audio_decoder_merge_tags (GstAudioDecoder * dec,
                                                 const GstTagList * tags, GstTagMergeMode mode);