Fakesrc not working as exected

Tim-Philipp Müller t.i.m at zen.co.uk
Wed Nov 28 05:08:46 PST 2012


On Wed, 2012-11-28 at 05:00 -0800, deepthips wrote:
> Thanks.. I checked with gst-launch and found that actually my "xvimagesink"
> is having problems. Since I dont want to debug that issue, I proceeded with
> plugins which I know are working in my board. So I tried to play an ac3 file
> using fakesrc. Normally this will work filesrc -> ac3parse -> myaudiosink . 
> So I tried the same here with fakesrc. myaudiosink  is proprietary plugin
> with audio decoder + sink.  But no audio was heard and it didnt give any
> error as well. I couldnt try with gst-launch coz I dont know how to set the
> data to buffer from command line. Any help on this.

xvimagesink might not be able to handle video/x-raw-rgb, but only
video/x-raw-yuv.

Why use fakesrc instead of just:

  filesrc location=backup.ac3 ! ac3parse ! youraudiosink

(I assume youraudiosink accepts coded AC-3 frames?)

or

  videotetsrc ! xvimagesink

Cheers
 -Tim


> #include <string.h> /* for memset () */
> #include <gst/gst.h>
> 
> guint8 *data = NULL;
> 
>     static void
> cb_handoff (GstElement *fakesrc,
>         GstBuffer  *buffer,
>         GstPad     *pad,
>         gpointer    user_data)
> {
>     /* Clip start and end */
> 
>     data = (guint8 *) g_malloc (3000);
>     GST_BUFFER_SIZE (buffer) = 3000;
>     GST_BUFFER_DATA (buffer) = GST_BUFFER_MALLOCDATA (buffer) = data;
> 
>     FILE* fp = fopen("backup.ac3","rb");
>     if(fp == NULL)
>     {
>         printf( " File is not opened \n");
>         return;
>     }
>     fread(data,3000,1,fp);
> 
>     fclose(fp);
> 
> } 
> 
> 
>    gint
> main (gint   argc,
>         gchar *argv[])
> {
>     GstElement *pipeline, *fakesrc, *parse, *audiosink;
>     GMainLoop *loop;
> 
>     /* init GStreamer */
>     gst_init (&argc, &argv);
>     loop = g_main_loop_new (NULL, FALSE);
> 
>     /* setup pipeline */
>     pipeline = gst_pipeline_new ("pipeline");
>     fakesrc = gst_element_factory_make ("fakesrc", "source");
>     parse = gst_element_factory_make ("ac3parse", "parser");
>     audiosink = gst_element_factory_make ("myaudiosink", "audiosink");
> 
>     /* setup */
>     gst_bin_add_many (GST_BIN (pipeline), fakesrc, parse, audiosink, NULL);
>     gst_element_link_many (fakesrc, parse, audiosink, NULL);
> 
>     /* setup fake source */
>     g_object_set (G_OBJECT (fakesrc),
>             "signal-handoffs", TRUE,
>             "sizemax", 16000,
>             "sizetype", 2, NULL);
>     g_signal_connect (fakesrc, "handoff", G_CALLBACK (cb_handoff), NULL);
> 
>     /* play */
>     gst_element_set_state (pipeline, GST_STATE_PLAYING);
>     g_main_loop_run (loop);
> 
>     /* clean up */
>     gst_element_set_state (pipeline, GST_STATE_NULL);
>     gst_object_unref (GST_OBJECT (pipeline));
> 
>     return 0;
> }
> 
> 
> 
> 
> --
> View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Fakesrc-not-working-as-exected-tp4657100p4657102.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




More information about the gstreamer-devel mailing list