[gst-devel] Play audio filled in buffer

Akbar Basha akbar.sdl at gmail.com
Mon Jul 28 21:59:22 CEST 2008


For mp3 it works fine.

For wav and raw pcm files  program never get signal handoff.
To play wav file I used dynamic pad and for pcm doesn't need pad.

Is it possible to play binary data using this approach? If so what would be
the decoder elements.

I have looked into appsrc plugin . I ran the example given as part of the
plugin. Audio is not coming.

Thanks,
Akbar

On 7/12/08, Stefan Kost <ensonic at hora-obscura.de> wrote:
>
> hi,
> Akbar Basha schrieb:
>
>> Hi Stefan,
>>
>> Thanks for the response .
>>
>
> Would you please post to the list.
>
>>
>> I tried the same. But could not produce the result.
>>
>> Please find the code.
>>
>> static void
>> cb_handoff (GstElement *fakesrc,
>>        GstBuffer  *buffer,
>>         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("vertigo.mp3","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, *flt, *conv, *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");
>>  flt = gst_element_factory_make ("capsfilter", "flt");
>>  conv = gst_element_factory_make ("mad", "conv");
>>  audiosink = gst_element_factory_make ("alsasink", "audiosink");
>>
>>  /* setup */
>>  g_object_set (G_OBJECT (flt), "caps",
>>          gst_caps_new_simple("audio/x-raw-int",
>>                "channels", G_TYPE_INT, 2,
>>                "rate", G_TYPE_INT, 32000,
>>               "depth", G_TYPE_INT, 16, NULL), NULL);
>>
>
> This is obviously wrong. You load an mp3 and not raw audio data. The
> capsfilter needs to tell that. But in your case you would not even need one.
>
>
>>  gst_bin_add_many (GST_BIN (pipeline), fakesrc, flt,conv, audiosink,
>> NULL);
>>  gst_element_link_many (fakesrc, flt,conv, audiosink, NULL);
>>
>>  /* setup fake source */
>>  g_object_set (G_OBJECT (fakesrc),"signal-handoffs", TRUE,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;
>> }
>>
>> Even if I set using memset . Audio is not coming.
>>
>
> What happens?
>
> Stefan
>
>
>> how to proceed in the case pad is required  i.e for wav files.
>>
>> Regards,
>> Akbar
>>
>> On Wed, Jul 9, 2008 at 11:53 PM, Stefan Kost <ensonic at hora-obscura.de<mailto:
>> ensonic at hora-obscura.de>> wrote:
>>
>>    Akbar Basha schrieb:
>>
>>        Hi,
>>
>>        I would like to play the buffer , which is filled with any audio
>>        file data.
>>        Does gstreamer provides any mechanism to play.
>>
>>
>>    if you have the whole bufer in memory, use a fakesrc with
>>    signal-handoffs=TRUE and connect to handoff signal. In the handoff
>>    signal you put the pointer to your data into the GST_BUFFER_DATA,
>>    set the correct GST_BUFFER_SIZE and clear GST_BUFFER_MALLOC_DATA (if
>>    it was previously set g_free() the previous content).
>>
>>    You should used a capsfilter after fakesrc and set the format of
>>    your sample on the capsfilter caps.
>>
>>    Its sort of a hack, but works fine.
>>
>>    Stefan
>>
>>
>>        Thanks in advance.
>>
>>        Regards,
>>        Akbar
>>
>>
>>
>>  ------------------------------------------------------------------------
>>
>>
>>  -------------------------------------------------------------------------
>>        Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
>>        Studies have shown that voting for your favorite open source
>>        project,
>>        along with a healthy diet, reduces your potential for chronic
>>        lameness
>>        and boredom. Vote Now at
>> http://www.sourceforge.net/community/cca08
>>
>>
>>
>>  ------------------------------------------------------------------------
>>
>>        _______________________________________________
>>        gstreamer-devel mailing list
>>
>>        gstreamer-devel at lists.sourceforge.net
>>        <mailto:gstreamer-devel at lists.sourceforge.net>
>>        https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20080729/bdec9ec3/attachment.htm>


More information about the gstreamer-devel mailing list