Comment 24 for bug 22501

Revision history for this message
Matthias Jordan (matthiasjordan) wrote :

The conversion happens in audio.py. There, a string object is linked to the name WavPcmParse and holds the string "audio/x-raw-int, endianness=(int)1234, width=(int)16, depth=(int)16, signed=(boolean)true, rate=(int)44100, channels=(int)2".

Based on this string, later on a GStreamer Pipe is constructed. When I use serpentine to create the Pipe it prints "could not link audioscale0 to wavenc0" in the console. Alas, when I build the same Pipe in the shell, using the following line ...

gst-launch filesrc location=music.mp3 ! decodebin ! audioscale ! audio/x-raw-int, endianness=(int)1234, depth=(int)16, signed=(boolean)true, rate=(int)44100, channels=(int)2 ! wavenc

... I get the following output:

gstpad.c(2562): gst_pad_set_explicit_caps: /pipeline0/decodebin0/mad0:
failed to negotiate (try_set_caps with "audio/x-raw-int, endianness=(int)4321, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2" returned REFUSED)
ERROR: from element /pipeline0/decodebin0/mad0: Internal GStreamer error: negotiation problem. File a bug.
Additional debug info:
gstmad.c(1206): gst_mad_check_caps_reset: /pipeline0/decodebin0/mad0:
Failed to negotiate 44100 Hz, 2 channels

The Pipe works if you set the endianness to 1234 and use osssink instead of wavenc but wavenc itself doesn't work with 4321 either.

Hope it helps.