I am working at a player based on gstreamer tutorials. For this I created a pipeline using: pipeline = gst_pipeline_new("audio-player"); //adding also 3 gstreamer elements appsrc = gst_element_factory_make("appsrc", "source"); decoder = gst_element_factory_make("faad", "aac-decoder"); sink = gst_element_factory_make("autoaudiosink", "audio-output"); //adding and linking the elements to the pipeline gst_bin_add_many (GST_BIN (pipeline), appsrc, decoder, sink, NULL); gst_element_link_many(appsrc, decoder,sink, NULL); //for appsrc was added a callback function need_data_cb g_signal_connect(appsrc, "need-data", (GCallback)need_data_cb, data); //state of pipeline is set to playing gst_element_set_state(pipeline, GST_STATE_PLAYING); In need_data_cb function I have a buffer that I want to be played: g_signal_emit_by_name(appsrc, "push-buffer", buffer, &ret); My poblem is this: I have the same code in Linux and in Android. In Linux buffer is played well each time it enters the callback function need_data_cb. In Android it plays the buffer just the first time it enters in need_data_cb and after that no sound. Why it happens this when I have same code in both versions. If I add in need_data_cb Android version to change pipeline states to pause and play before adding buffer to appsrc, it plays each time buffer but with some interruptions between each call. //the first 2 lines added in Android version to play each time buffer gst_element_set_state(pipeline, GST_STATE_PAUSED); gst_element_set_state(pipeline, GST_STATE_PLAYING); g_signal_emit_by_name(appsrc, "push-buffer", buffer, &ret); The question is why on Linux works fine without these lines and on Android not? On Linux I installed gstreamer 0.10 version, and on Android I used the libs from gstreamer sdk tutorials. Is there any difference between them? Thanks, Radu
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.