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