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