Fakesrc not working as exected

deepthips deepthips at tataelxsi.co.in
Wed Nov 28 05:00:13 PST 2012


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.?






#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.


More information about the gstreamer-devel mailing list