fakesrc for audio stream.

rasnaut rasnaut at gmail.com
Wed Oct 24 13:26:57 PDT 2012


Hi to All!
I working with gstreamer-1.0 and try use fakesrc for work with audiostream.
For start trying I copy only 0 in buffer (I used MapInfo structure). So, my
code:

main()
{
    gst_init (NULL,NULL);
    loop = g_main_loop_new (NULL, FALSE);

    /* setup pipeline */
    pipeline = gst_pipeline_new ("pipeline");
    g_assert(pipeline);
    fakesrc = gst_element_factory_make ("fakesrc", "source");
    g_assert(fakesrc);
    flt = gst_element_factory_make ("capsfilter", "flt");
    g_assert(flt);
    rate = gst_element_factory_make ("audiorate", "rate");
    g_assert(rate);
    conv = gst_element_factory_make ("audioconvert", "conv");
    g_assert(conv);
    audiosink = gst_element_factory_make ("alsasink", "asink");
    g_assert(videosink);

    /* setup */
    g_object_set (G_OBJECT (flt), "caps",
                 gst_caps_new_simple ("audio/x-raw", 
                 "format",G_TYPE_STRING,"S16LE",
                 "rate", G_TYPE_INT,16000, 
                  "channels", G_TYPE_INT, 1,
                   NULL), NULL);
    gst_bin_add_many (GST_BIN (pipeline), fakesrc, flt,rate, conv,
audiosink, NULL);
    if(!gst_element_link_many (fakesrc, flt, rate, conv, audiosink, NULL))
    {
        g_error("Link Error\n");
    }

    /* 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));
    g_main_loop_unref (loop);
}

So, when I start my programm apear next error:
GStreamer-CRITICAL **: gst_segment_to_running_time: assertion
`segment->format == format' failed

When I changed alsasink on fakesink, all work. Maybe it's because my
audiocard is working with another details:
format = SL32_LE
rate = 48000
channels = 2

I tryed change my details:
    g_object_set (G_OBJECT (flt), "caps",
                 gst_caps_new_simple ("audio/x-raw", 
                 "format",G_TYPE_STRING,"S32LE",
                 "rate", G_TYPE_INT,48000, 
                  "channels", G_TYPE_INT, 2,
                   NULL), NULL);

    g_object_set (G_OBJECT (fakesrc),
          "signal-handoffs", TRUE,
          "sizemax", 48000*2,
          "sizetype", 8, NULL);

 but error still stayed.
Anybody know, what I do wrong?



--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/fakesrc-for-audio-stream-tp4656701.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list