Calculate timestamp in handoff callback

Mayank Agarwal mayank77fromindia at gmail.com
Tue Apr 7 04:42:15 PDT 2015


Hi,

I have written another application in which the handoff function is
getting called but i am getting timestamp 0.

My doubts are:

1.We have to attach handoff signal to sink element,if we can do that
to all sink elements or only specific.
2.Apart from sink how can we attach it to identity element.
3.Correct way of calculating framerate from timestamp in handoff signal.

#include <gst/gst.h>

#include <string.h>
#include <stdbool.h>




static char *filename;
static char *result;
static char *result_crop;

static GMainLoop *loop;
static GstElement *pipeline;
static GstElement *src, *demux, *sink;



static unsigned buffer_count;

static gboolean bus_cb(GstBus *bus, GstMessage *msg, gpointer data)
{
switch (GST_MESSAGE_TYPE(msg)) {
case GST_MESSAGE_EOS:
g_main_loop_quit(loop);
break;
case GST_MESSAGE_ERROR: {
gchar *debug;
GError *err;

gst_message_parse_error(msg, &err, &debug);

g_printerr("error: %s: %s\n", err->message, debug);
g_error_free(err);
g_free(debug);

g_main_loop_quit(loop);
break;
}
default:
break;
}

return TRUE;
}

static void on_pad_added(GstElement *element, GstPad *pad, gpointer data)
{
GstPad *sinkpad;
GstStructure *struc;
const gchar *name;

sinkpad = gst_element_get_static_pad(sink, "sink");
gst_pad_link(pad, sinkpad);
gst_object_unref(sinkpad);

struc = gst_caps_get_structure(GST_PAD_CAPS(pad), 0);

// struc = gst_caps_get_structure(gst_pad_get_current_caps(pad), 0);

name = gst_structure_get_name(struc);
if (strncmp(name, "video/", 6) != 0)
return;

}

static void handoff(GstElement *object,
    GstBuffer *buffer,
    GstPad *pad,
    gpointer user_data)
{
GstStructure *struc;
const GValue *codec_data;
bool r;
int bufsamplesize = 0;
GstClockTime timestamp;
        int framerate = 0;
int duration = 0;

buffer_count++;


        if(GST_BUFFER_TIMESTAMP_IS_VALID(buffer))
        g_printf("Timestamp is valid\n");

        if(GST_BUFFER_DURATION_IS_VALID(buffer))
        g_printf("Duration is valid\n");

        bufsamplesize = GST_BUFFER_SIZE(buffer);
        g_printf("Buffer sample size = %d\n",bufsamplesize);


        timestamp = GST_BUFFER_TIMESTAMP(buffer);
        g_print ("Timestamp calculated = : %" GST_TIME_FORMAT "\n",
      GST_TIME_ARGS (timestamp));
        duration = GST_BUFFER_DURATION(buffer);
        g_printf("Duration = %d\n",duration);

framerate = 1000000*1/timestamp;
        g_print ("Framerate calculated = : %" GST_TIME_FORMAT "\n",
      GST_TIME_ARGS (framerate));


/*struc = gst_caps_get_structure(GST_BUFFER_CAPS(buffer), 0);
codec_data = gst_structure_get_value(struc, "codec_data");
if (codec_data) {
GstBuffer *tmp;
tmp = gst_value_get_buffer(codec_data);
printf("Inside codec_data\n");
}*/

       printf("Inside codec_data\n");


}

static void init(void)
{
pipeline = gst_pipeline_new("parse");

src = gst_element_factory_make("filesrc", "src");
demux = gst_element_factory_make("qtdemux", "demux");
sink = gst_element_factory_make("fakesink", "sink");

gst_bin_add_many(GST_BIN(pipeline), src, demux, sink, NULL);
gst_element_link(src, demux);
g_signal_connect(demux, "pad-added", G_CALLBACK(on_pad_added), NULL);

GstBus *bus;
bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
gst_bus_add_watch(bus, bus_cb, NULL);
gst_object_unref(bus);

g_object_set(G_OBJECT(src), "location", filename, NULL);

g_object_set(G_OBJECT(sink), "signal-handoffs", TRUE, "num-buffers", 1, NULL);
g_signal_connect(sink, "handoff", G_CALLBACK(handoff), NULL);

gst_element_set_state(pipeline, GST_STATE_PLAYING);
}



int main(int argc, char *argv[])
{
int ret;
char *expected;
char *expected_crop = NULL;

gst_init(&argc, &argv);

loop = g_main_loop_new(NULL, FALSE);

if (argc < 3)
return -1;

filename = argv[1];
expected = argv[2];

if (argc >= 4)
expected_crop = argv[3];

init();

g_main_loop_run(loop);

if (result) {
g_print("%s %s\n", result, result_crop);
} else {
if (buffer_count == 0)
g_printerr("no data\n");
else
g_printerr("no result\n");
}

ret = !!g_strcmp0(expected, result);
if (!ret && expected_crop)
ret = !!g_strcmp0(expected_crop, result_crop);

g_free(result);
g_free(result_crop);

if (pipeline) {
gst_element_set_state(pipeline, GST_STATE_NULL);
gst_object_unref(GST_OBJECT(pipeline));
}


g_main_loop_unref(loop);

return -ret;
}

Regards
Mayank



On Tue, Apr 7, 2015 at 4:22 PM,
<gstreamer-devel-request at lists.freedesktop.org> wrote:
> Send gstreamer-devel mailing list submissions to
>         gstreamer-devel at lists.freedesktop.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> or, via email, send a message with subject or body 'help' to
>         gstreamer-devel-request at lists.freedesktop.org
>
> You can reach the person managing the list at
>         gstreamer-devel-owner at lists.freedesktop.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of gstreamer-devel digest..."
>
>
> Today's Topics:
>
>    1. Custom Bin (Sneha Murganoor)
>    2. Re: h264parse has been removed from gstreamer-1.0? (SpicyChicken)
>    3. Calculate timestamp in handoff callback (Mayank Agarwal)
>    4. Re: starting android development (Sérgio Agostinho)
>    5. Re: h264parse has been removed from gstreamer-1.0?
>       (Carlos Rafael Giani)
>    6. Re: Not able to call handoff callback (Sérgio Agostinho)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Tue, 7 Apr 2015 14:21:22 +0530
> From: Sneha Murganoor <sneha.nie at gmail.com>
> To: gstreamer-devel at lists.freedesktop.org
> Subject: Custom Bin
> Message-ID:
>         <CACP3xLGcZk3uS6WPO587i4DCXBJN2tW-KRZudtved9j2bZZzmA at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Hi all,
>
> I am new bee to Gstreamer, learning through Gstreamer Application manual
> 1.4.5.
>
> While i compiled the code in
> http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-bin-custom.html
> I realized that oggvorbisplayer plugin is missing.
>
>>>gst-inspect-0.10 oggvorbisplayer
> No such element or plugin 'oggvorbisplayer'
>
>>>gcc custom_bin.c -o custom_bin `pkg-config --cflags --libs gstreamer-0.10`
>
>
>>>./custom_bin
>
> (custom_bin:7173): GLib-GObject-CRITICAL **: g_object_set: assertion
> `G_IS_OBJECT (object)' failed
>
> 1. How do I fix this??
> 2. how to find : Which elements/plugins are placed in gst plugins?
>
> Thanks,
> Sneha
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20150407/c1671702/attachment-0001.html>
>
> ------------------------------
>
> Message: 2
> Date: Tue, 7 Apr 2015 02:03:24 -0700 (PDT)
> From: SpicyChicken <xch0929 at 126.com>
> To: gstreamer-devel at lists.freedesktop.org
> Subject: Re: h264parse has been removed from gstreamer-1.0?
> Message-ID: <1428397404820-4671478.post at n4.nabble.com>
> Content-Type: text/plain; charset=UTF-8
>
> Yeah, I see, but actually gst-plugins-bad package are lots of so files. The
> element h264parse is built into the library of libgstvideoparsersbad.
>
>
>
>
>
> Carlos Rafael Giani wrote
>> It is actually not in the library, but in the gst-plugins-bad package.
>>
>>
>> Am 2015-04-07 um 09:10 schrieb Thornton, Keith:
>>> Yes, gst-inspect-1.0 finds it. I am using it for the purpose you also
>>> wish to use it for. Have you performed a full install? Can you find
>>> libgstvideoparsersbad ?
>>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: gstreamer-devel [mailto:
>
>> gstreamer-devel-bounces at .freedesktop
>
>> ] Im Auftrag von SpicyChicken
>>> Gesendet: Dienstag, 7. April 2015 08:43
>>> An:
>
>> gstreamer-devel at .freedesktop
>
>>> Betreff: Re: AW: h264parse has been removed from gstreamer-1.0?
>>>
>>> Can you find it with gst-inspect-1.0? I can not.
>>>
>>> Thanks,
>>>
>>>
>>>
>>>
>>> --
>>> View this message in context:
>>> http://gstreamer-devel.966125.n4.nabble.com/h264parse-has-been-removed-from-gstreamer-1-0-tp4671468p4671470.html
>>> Sent from the GStreamer-devel mailing list archive at Nabble.com.
>>> _______________________________________________
>>> gstreamer-devel mailing list
>>>
>
>> gstreamer-devel at .freedesktop
>
>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>> _______________________________________________
>>> gstreamer-devel mailing list
>>>
>
>> gstreamer-devel at .freedesktop
>
>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>> _______________________________________________
>> gstreamer-devel mailing list
>
>> gstreamer-devel at .freedesktop
>
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
>
>
>
> --
> View this message in context: http://gstreamer-devel.966125.n4.nabble.com/h264parse-has-been-removed-from-gstreamer-1-0-tp4671468p4671478.html
> Sent from the GStreamer-devel mailing list archive at Nabble.com.
>
>
> ------------------------------
>
> Message: 3
> Date: Tue, 7 Apr 2015 15:46:19 +0530
> From: Mayank Agarwal <mayank77fromindia at gmail.com>
> To: gstreamer-devel at lists.freedesktop.org
> Subject: Calculate timestamp in handoff callback
> Message-ID:
>         <CAKjpqyLwDhWBjZimFh23OD65J5NR7qPah1k5FNzSBQkwwxfmEQ at mail.gmail.com>
> Content-Type: text/plain; charset=UTF-8
>
> Hi,
>
> I am implementing handoff cb in the following way,but i am getting timestamp
> as 0.Duration i am getting right.Please find below the code:
>
> GstStructure *struc;
> const GValue *codec_data;
> bool r;
> int bufsamplesize = 0;
> GstClockTime timestamp;
>         int framerate = 0;
> int duration = 0;
>
> buffer_count++;
>
>
>         if(GST_BUFFER_TIMESTAMP_IS_VALID(buffer))
>         g_printf("DTS buffer is valid\n");
>
>         if(GST_BUFFER_DURATION_IS_VALID(buffer))
>         g_printf("DTS buffer is valid\n");
>
>         bufsamplesize = GST_BUFFER_SIZE(buffer);
>         g_printf("Buffer sample size = %d\n",bufsamplesize);
>
>
>         timestamp = GST_BUFFER_TIMESTAMP(buffer);
>         g_print ("Timestamp calculated = : %" GST_TIME_FORMAT "\n",
>       GST_TIME_ARGS (timestamp));
>         duration = GST_BUFFER_DURATION(buffer);
>         g_printf("Duration = %d\n",duration);
>
> framerate = 1000000*1/timestamp;
>         g_print ("Framerate calculated = : %" GST_TIME_FORMAT "\n",
>       GST_TIME_ARGS (framerate));
>
>
> /*struc = gst_caps_get_structure(GST_BUFFER_CAPS(buffer), 0);
> codec_data = gst_structure_get_value(struc, "codec_data");
> if (codec_data) {
> GstBuffer *tmp;
> tmp = gst_value_get_buffer(codec_data);
> printf("Inside codec_data\n");
> }*/
>
>
>
> How to correctly calculate the timestamp from buffer,and how to deduce
> the frame rate from
> that.What other video quality parameters gstreamer support and how can
> i retrieve it.
>
>
> Regards
> Mayank
>
>
> ------------------------------
>
> Message: 4
> Date: Tue, 7 Apr 2015 12:40:15 +0200
> From: Sérgio Agostinho <sergio.r.agostinho at gmail.com>
> To: Discussion of the development of and with GStreamer
>         <gstreamer-devel at lists.freedesktop.org>
> Subject: Re: starting android development
> Message-ID:
>         <CALUX5R0Ax3L5rO9ZoNZteB6Dqp3Cpznq9yMqTPzg_+dx1fkkgA at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Hi Leonardo,
>
> So I downloaded your code, created a new project and imported your 'app'
> module into it. Then I noticed your Android.mk had these lines
>
> ifndef GSTREAMER_SDK_ROOT
> ifndef GSTREAMER_SDK_ROOT_ANDROID
> $(error GSTREAMER_SDK_ROOT_ANDROID is not defined!)
> endif
> GSTREAMER_SDK_ROOT        := $(GSTREAMER_SDK_ROOT_ANDROID)
> endif
> GSTREAMER_NDK_BUILD_PATH  :=
> $(GSTREAMER_SDK_ROOT)/share/gst-android/ndk-build
>
> which is strange since the env that 1.4.5 uses is
>
> GSTREAMER_ROOT
>
> So I set the env, added
>
> import org.freedesktop.gstreamer.GStreamer;
>
> into your main activity and voilá, the file got copied into the right place
> and no more complains about the missing Gstreamer class. Then I noticed you
> had the following file and folder structure (from a previous build I guess)
>
> src/main/src/*com/gstreamer/Gstreamer.java*
>
> My preliminary conclusion is that you are not using 1.4.5 and you're using
> the android binaries from gstreamer.com.
>
> Cheers,
> Sérgio
>
> 2015-04-03 22:45 GMT+02:00 Forzaferrarileo <leonardo.ferroro at gmail.com>:
>
>> i tried to add GSTREAMER_JAVA_SRC_DIR := java  , but the result is the
>> same..
>> I can't figure out the problem ( in eclipse everything works fine )
>>
>> I uploaded the whole code here :
>> https://bitbucket.org/Forzaferrarileo/gstreamer-androidstudio
>> could you please watch it ?
>>
>>
>> Thank you
>> Leonardo
>>
>>
>>
>> --
>> View this message in context:
>> http://gstreamer-devel.966125.n4.nabble.com/starting-android-development-tp4671223p4671448.html
>> Sent from the GStreamer-devel mailing list archive at Nabble.com.
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20150407/d8e96a28/attachment-0001.html>
>
> ------------------------------
>
> Message: 5
> Date: Tue, 07 Apr 2015 12:49:05 +0200
> From: Carlos Rafael Giani <dv at pseudoterminal.org>
> To: gstreamer-devel at lists.freedesktop.org
> Subject: Re: h264parse has been removed from gstreamer-1.0?
> Message-ID: <5523B621.5000106 at pseudoterminal.org>
> Content-Type: text/plain; charset=utf-8; format=flowed
>
> It sounds like you are using the names of Ubuntu/Debian packages. This
> might explain the confusion. I was referring to the upstream packages.
> Here's h264parse:
> http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/gst/videoparsers
>
> and it uses functions from:
>
> http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/gst-libs/gst/codecparsers
>
> On 04/07/2015 11:03 AM, SpicyChicken wrote:
>> Yeah, I see, but actually gst-plugins-bad package are lots of so files. The
>> element h264parse is built into the library of libgstvideoparsersbad.
>>
>>
>>
>>
>>
>> Carlos Rafael Giani wrote
>>> It is actually not in the library, but in the gst-plugins-bad package.
>>>
>>>
>>> Am 2015-04-07 um 09:10 schrieb Thornton, Keith:
>>>> Yes, gst-inspect-1.0 finds it. I am using it for the purpose you also
>>>> wish to use it for. Have you performed a full install? Can you find
>>>> libgstvideoparsersbad ?
>>>>
>>>> -----Ursprüngliche Nachricht-----
>>>> Von: gstreamer-devel [mailto:
>>> gstreamer-devel-bounces at .freedesktop
>>> ] Im Auftrag von SpicyChicken
>>>> Gesendet: Dienstag, 7. April 2015 08:43
>>>> An:
>>> gstreamer-devel at .freedesktop
>>>> Betreff: Re: AW: h264parse has been removed from gstreamer-1.0?
>>>>
>>>> Can you find it with gst-inspect-1.0? I can not.
>>>>
>>>> Thanks,
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://gstreamer-devel.966125.n4.nabble.com/h264parse-has-been-removed-from-gstreamer-1-0-tp4671468p4671470.html
>>>> Sent from the GStreamer-devel mailing list archive at Nabble.com.
>>>> _______________________________________________
>>>> gstreamer-devel mailing list
>>>>
>>> gstreamer-devel at .freedesktop
>>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>> _______________________________________________
>>>> gstreamer-devel mailing list
>>>>
>>> gstreamer-devel at .freedesktop
>>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>> _______________________________________________
>>> gstreamer-devel mailing list
>>> gstreamer-devel at .freedesktop
>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>>
>>
>>
>> --
>> View this message in context: http://gstreamer-devel.966125.n4.nabble.com/h264parse-has-been-removed-from-gstreamer-1-0-tp4671468p4671478.html
>> Sent from the GStreamer-devel mailing list archive at Nabble.com.
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
>
> ------------------------------
>
> Message: 6
> Date: Tue, 7 Apr 2015 12:51:50 +0200
> From: Sérgio Agostinho <sergio.r.agostinho at gmail.com>
> To: Discussion of the development of and with GStreamer
>         <gstreamer-devel at lists.freedesktop.org>
> Subject: Re: Not able to call handoff callback
> Message-ID:
>         <CALUX5R3So7TBHwDdSZFCdMEjD9Ky7oLtp2i1d+vrJyb=tdzkqw at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Hey,
>
> 1 - You are not creating any identity element in your pipeline.
> 2 - You're trying to set the handoff cb on your autovideosink, not on your
> (yet to be created) identity element.
>
> Cheers
>
> 2015-04-07 8:50 GMT+02:00 Mayank Agarwal <mayank77fromindia at gmail.com>:
>
>> Hi,
>>
>> I have modified basic tutorial two to include identity element but
>> i am not able to get the callback called.
>>
>> Here is the example
>>
>> #include <gst/gst.h>
>>
>> static void
>> handoff(GstElement *object,
>> GstBuffer *arg0,
>> GstPad *arg1,
>> gpointer user_data)
>> {
>>
>> printf("comes here");
>>
>> }
>>
>>
>>
>>
>> int main(int argc, char *argv[]) {
>>   GstElement *pipeline, *source, *sink;
>>   GstBus *bus;
>>   GstMessage *msg;
>>   GstStateChangeReturn ret;
>>   GstElement *identity;
>>
>>   /* Initialize GStreamer */
>>   gst_init (&argc, &argv);
>>
>>   /* Create the elements */
>>   source = gst_element_factory_make ("videotestsrc", "source");
>>
>>   sink = gst_element_factory_make ("autovideosink", "sink");
>>
>>   /* Create the empty pipeline */
>>   pipeline = gst_pipeline_new ("test-pipeline");
>>
>>   if (!pipeline || !source || !sink) {
>>     g_printerr ("Not all elements could be created.\n");
>>     return -1;
>>   }
>>
>>   /* Build the pipeline */
>>   gst_bin_add_many (GST_BIN (pipeline), source, sink, NULL);
>>   if (gst_element_link (source, sink) != TRUE) {
>>     g_printerr ("Elements could not be linked.\n");
>>     gst_object_unref (pipeline);
>>     return -1;
>>   }
>>
>>   /* Modify the source's properties */
>>   g_object_set (source, "pattern", 0, NULL);
>>   g_object_set(G_OBJECT(sink), "signal-handoffs", TRUE, NULL);
>>   g_signal_connect(sink, "handoff",G_CALLBACK(handoff), NULL);
>>
>>   /* Start playing */
>>   ret = gst_element_set_state (pipeline, GST_STATE_PLAYING);
>>   if (ret == GST_STATE_CHANGE_FAILURE) {
>>     g_printerr ("Unable to set the pipeline to the playing state.\n");
>>     gst_object_unref (pipeline);
>>     return -1;
>>   }
>>
>>   /* Wait until error or EOS */
>>   bus = gst_element_get_bus (pipeline);
>>   msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE,
>> GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
>>
>>   /* Parse message */
>>   if (msg != NULL) {
>>     GError *err;
>>     gchar *debug_info;
>>
>>     switch (GST_MESSAGE_TYPE (msg)) {
>>       case GST_MESSAGE_ERROR:
>>         gst_message_parse_error (msg, &err, &debug_info);
>>         g_printerr ("Error received from element %s: %s\n",
>> GST_OBJECT_NAME (msg->src), err->message);
>>         g_printerr ("Debugging information: %s\n", debug_info ?
>> debug_info : "none");
>>         g_clear_error (&err);
>>         g_free (debug_info);
>>         break;
>>       case GST_MESSAGE_EOS:
>>         g_print ("End-Of-Stream reached.\n");
>>         break;
>>       default:
>>         /* We should not reach here because we only asked for ERRORs and
>> EOS */
>>         g_printerr ("Unexpected message received.\n");
>>         break;
>>     }
>>     gst_message_unref (msg);
>>   }
>>
>>   /* Free resources */
>>   gst_object_unref (bus);
>>   gst_element_set_state (pipeline, GST_STATE_NULL);
>>   gst_object_unref (pipeline);
>>   return 0;
>> }
>>
>>
>> and the errors i am getting are:
>>
>> (btutorialtwo:3807): GLib-GObject-WARNING **: g_object_set_valist:
>> object class 'GstAutoVideoSink' has no property named
>> 'signal-handoffs'
>>
>> (btutorialtwo:3807): GLib-GObject-WARNING **:
>> /build/buildd/glib2.0-2.40.2/./gobject/gsignal.c:2462: signal
>> 'handoff' is invalid for instance '0x9950018' of type
>> 'GstAutoVideoSink'
>>
>> although videotestsrc is playing fine.
>>
>> If this is not the correct way of using identity element any
>> example/links of using identity element using which
>> i can be able to calculate video frame rate.
>>
>>
>> Regards
>> Mayank
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20150407/4ecc8381/attachment.html>
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
> ------------------------------
>
> End of gstreamer-devel Digest, Vol 51, Issue 15
> ***********************************************


More information about the gstreamer-devel mailing list