[gst-embedded] Playback of raw audio on N900: Internal data flow error
Thomas Jarosch
tomj at simonv.com
Fri Dec 17 00:32:19 PST 2010
Hi Tim,
On Friday, 17. December 2010 00:51:55 Tim-Philipp Müller wrote:
> On Fri, 2010-12-17 at 00:10 +0100, Thomas Jarosch wrote:
> > I tried all kind of ways to push the raw audio via an "appsrc" to
> > "playbin2". The result is always an "Internal data flow" error.
>
> What's the debug message detail on that? (not-negotiated?)
Thanks for your reply.
I tried to enable debug output via the environment variable and it didn't
work. So I suspected it's not enabled during compile time on the N900. I'll
retry with the "--gst-debug-level" command line switch.
> > Please see the attached code and the function call log.
> > The magic happens in pcm_play_dma_init(), found_source() and
> > feed_data().
> >
> > Any idea what could be wrong? The timestamps on the GstBuffer?
>
> That depends on the exact error, but if it's not-negotiated it's likely
> got something to do with caps.
Ok. One more silly question about the caps. For audio channels,
there's a property called "width" and "depth". Here's an example
gst-inspect output of a alsasink:
audio/x-raw-int
endianness: { 1234, 4321 }
signed: { true, false }
width: 32
depth: 24
rate: [ 1, 2147483647 ]
channels: [ 1, 2147483647 ]
Does it mean it supports 24-bit samples
stored as a 32bit integers?
> > Can I push arbitrary data size into the appsrc or must it be
> > in sample size chunks?
>
> That depends on what you're pushing into appsrc. If it's raw PCM audio,
> it should be in chunks of bytes_per_sample * channels.
This might be the issue, I just push anything I get from rockbox in there.
I hoped the gstreamer framework would handle the reassembling for me.
> > The code is quite hacky at the moment as I want to get
> > it up and running and then beautify it. Sorry:)
>
> audio_caps = gst_caps_new_simple("audio/x-raw-int",
> "width", G_TYPE_INT, (gint)16,
> "depth", G_TYPE_INT, (gint)16,
> "channels" ,G_TYPE_INT, (gint)2,
> --> "signed",G_TYPE_INT,1, <--
> "rate", G_TYPE_INT, 44100,
> "endianness", G_TYPE_INT, (gint)1234,
> NULL);
>
> The signed field should be of G_TYPE_BOOLEAN.
Thanks! The error must have happened when I added/tweaked
various settings to find the source of the error.
Cheers,
Thomas
More information about the Gstreamer-embedded
mailing list