Simplify GstVaapiDecoder API.
authorgb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Mon, 3 May 2010 20:55:17 +0000 (20:55 +0000)
committerGwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Mon, 20 Sep 2010 10:55:43 +0000 (12:55 +0200)
gst-libs/gst/vaapi/gstvaapidecoder.c
gst-libs/gst/vaapi/gstvaapidecoder.h
tests/test-decode.c

index 9f44130..3170fde 100644 (file)
@@ -38,7 +38,7 @@
 
 G_DEFINE_TYPE(GstVaapiDecoder, gst_vaapi_decoder, G_TYPE_OBJECT);
 
-/* XXX: Make it a GstVaapiDecodedSurface + propagate PTS */
+/* XXX: Make it a GstVaapiDecodedSurface? */
 typedef struct _DecodedSurface DecodedSurface;
 struct _DecodedSurface {
     GstVaapiSurfaceProxy *proxy;
@@ -78,31 +78,6 @@ create_eos_buffer(void)
     return buffer;
 }
 
-static GstBuffer *
-create_buffer(const guchar *buf, guint buf_size, gboolean copy)
-{
-    GstBuffer *buffer;
-
-    if (!buf || !buf_size)
-        return NULL;
-
-    buffer = gst_buffer_new();
-    if (!buffer)
-        return NULL;
-
-    if (copy) {
-        buffer->malloc_data = g_malloc(buf_size);
-        if (!buffer->malloc_data) {
-            gst_buffer_unref(buffer);
-            return NULL;
-        }
-        memcpy(buffer->malloc_data, buf, buf_size);
-        buf = buffer->malloc_data;
-    }
-    init_buffer(buffer, buf, buf_size);
-    return buffer;
-}
-
 static void
 destroy_buffer(GstBuffer *buffer)
 {
@@ -411,108 +386,6 @@ gst_vaapi_decoder_init(GstVaapiDecoder *decoder)
 }
 
 /**
- * gst_vaapi_decoder_get_frame_rate:
- * @decoder: a #GstVaapiDecoder
- * @num: return location for the numerator of the frame rate
- * @den: return location for the denominator of the frame rate
- *
- * Retrieves the current frame rate as the fraction @num / @den. The
- * default frame rate is 30 fps.
- */
-void
-gst_vaapi_decoder_get_frame_rate(
-    GstVaapiDecoder *decoder,
-    guint           *num,
-    guint           *den
-)
-{
-    g_return_if_fail(GST_VAAPI_IS_DECODER(decoder));
-
-    if (num)
-        *num = decoder->priv->fps_n;
-
-    if (den)
-        *den = decoder->priv->fps_d;
-}
-
-/**
- * gst_vaapi_decoder_set_frame_rate:
- * @decoder: a #GstVaapiDecoder
- * @num: the numerator of the frame rate
- * @den: the denominator of the frame rate
- *
- * Sets the frame rate for the stream to @num / @den. By default, the
- * decoder will use the frame rate encoded in the elementary stream.
- * If none is available, the decoder will default to 30 fps.
- */
-void
-gst_vaapi_decoder_set_frame_rate(
-    GstVaapiDecoder *decoder,
-    guint            num,
-    guint            den
-)
-{
-    g_return_if_fail(GST_VAAPI_IS_DECODER(decoder));
-
-    decoder->priv->fps_n = num;
-    decoder->priv->fps_d = den;
-}
-
-/**
- * gst_vaapi_decoder_put_buffer_data:
- * @decoder: a #GstVaapiDecoder
- * @buf: pointer to buffer data
- * @buf_size: size of buffer data in bytes
- *
- * Queues @buf_size bytes from the data @buf to the HW decoder. The
- * caller is responsible for making sure @buf is live beyond this
- * function. So, this function is mostly useful with static data
- * buffers. gst_vaapi_decoder_put_buffer_data_copy() does the same but
- * copies the data.
- *
- * Caller can notify an End-Of-Stream with @buf set to %NULL and
- * @buf_size set to zero.
- *
- * Return value: %TRUE on success
- */
-gboolean
-gst_vaapi_decoder_put_buffer_data(
-    GstVaapiDecoder *decoder,
-    const guchar    *buf,
-    guint            buf_size
-)
-{
-    g_return_val_if_fail(GST_VAAPI_IS_DECODER(decoder), FALSE);
-
-    return push_buffer(decoder, create_buffer(buf, buf_size, FALSE));
-}
-
-/**
- * gst_vaapi_decoder_put_buffer_data_copy:
- * @decoder: a #GstVaapiDecoder
- * @buf: pointer to buffer data
- * @buf_size: size of buffer data in bytes
- *
- * Queues a copy of @buf to the HW decoder.
- *
- * Caller can notify an End-Of-Stream with @buf set to %NULL and
- * @buf_size set to zero.
- *
- * Return value: %TRUE on success
- */
-gboolean
-gst_vaapi_decoder_put_buffer_data_copy(
-    GstVaapiDecoder *decoder,
-    const guchar    *buf,
-    guint            buf_size
-)
-{
-    g_return_val_if_fail(GST_VAAPI_IS_DECODER(decoder), FALSE);
-
-    return push_buffer(decoder, create_buffer(buf, buf_size, TRUE));
-}
-
-/**
  * gst_vaapi_decoder_put_buffer:
  * @decoder: a #GstVaapiDecoder
  * @buf: a #GstBuffer
index 8af5e01..e7bc5ca 100644 (file)
@@ -109,34 +109,6 @@ struct _GstVaapiDecoderClass {
 GType
 gst_vaapi_decoder_get_type(void);
 
-void
-gst_vaapi_decoder_get_frame_rate(
-    GstVaapiDecoder *decoder,
-    guint           *num,
-    guint           *den
-);
-
-void
-gst_vaapi_decoder_set_frame_rate(
-    GstVaapiDecoder *decoder,
-    guint            num,
-    guint            den
-);
-
-gboolean
-gst_vaapi_decoder_put_buffer_data(
-    GstVaapiDecoder *decoder,
-    const guchar    *buf,
-    guint            buf_size
-);
-
-gboolean
-gst_vaapi_decoder_put_buffer_data_copy(
-    GstVaapiDecoder *decoder,
-    const guchar    *buf,
-    guint            buf_size
-);
-
 gboolean
 gst_vaapi_decoder_put_buffer(GstVaapiDecoder *decoder, GstBuffer *buf);
 
index c5f7f91..e17c229 100644 (file)
@@ -82,6 +82,7 @@ main(int argc, char *argv[])
     GstStructure         *structure;
     GstVaapiDecoderStatus status;
     const CodecDefs      *codec;
+    GstBuffer            *buffer;
     GstVaapiSurfaceProxy *proxy;
     VideoDecodeInfo       info;
 
@@ -128,9 +129,17 @@ main(int argc, char *argv[])
     decoder = gst_vaapi_decoder_ffmpeg_new_from_caps(display, decoder_caps);
     if (!decoder)
         g_error("could not create FFmpeg decoder");
+    gst_caps_unref(decoder_caps);
+
+    buffer = gst_buffer_new();
+    if (!buffer)
+        g_error("could not create encoded data buffer");
+    gst_buffer_set_data(buffer, (guchar *)info.data, info.data_size);
 
-    if (!gst_vaapi_decoder_put_buffer_data(decoder, info.data, info.data_size))
+    if (!gst_vaapi_decoder_put_buffer(decoder, buffer))
         g_error("could not send video data to the decoder");
+    gst_buffer_unref(buffer);
+
     if (!gst_vaapi_decoder_put_buffer(decoder, NULL))
         g_error("could not send EOS to the decoder");
 
@@ -150,7 +159,6 @@ main(int argc, char *argv[])
     pause();
 
     g_object_unref(proxy);
-    gst_caps_unref(decoder_caps);
     g_object_unref(decoder);
     g_object_unref(window);
     g_object_unref(display);