avdec_gsm seems to fail on GSM files
Hello everyone,
I am working on a project that involves decoding GSM audio. I am dealing with files that contain raw GSM frames, not the Microsoft version that is encapsulated in WAV files.
I am at the very beginning of my project so right now all I am trying to do is construct a pipeline using gst-launch that sends audio through the avdec_gsm plugin successfully.
I've spent a lot of time looking through the available documentation and it seems to me that if I have a file, test.gsm, and I want to decode it using the plugin in question, the following command should run successfully:
gst-launch-1.0 filesrc location=test.gsm ! audio/x-gsm ! avdec_gsm ! fakesink
However, that fails with a non-specific message about an error in the stream.
Digging a little deeper with verbose debugging output, I've spotted a message that I believe might be at the root of the issue:
0:00:00.644244000 51595 0x14f00cd80 DEBUG audiodecoder gstaudiodecoder.c:2916:gst_audio_decoder_sink_query:<avdec_gsm0:sink> received query accept-caps query: 0x11f0151e0, GstQueryAcceptCaps, caps=(GstCaps)audio/x-gsm, result=(boolean)false;
0:00:00.644248000 51595 0x14f00cd80 DEBUG GST_PADS gstpad.c:3195:gst_pad_query_accept_caps_default:<avdec_gsm0:sink> query accept-caps accept-caps query: 0x11f0151e0, GstQueryAcceptCaps, caps=(GstCaps)audio/x-gsm, result=(boolean)false;
To my very untrained eyes, it looks like the plugin is refusing to accept audio/x-gsm data in its sink even though it should, according to the output of gst-inspect:
Pad Templates:
SRC template: 'src'
Availability: Always
Capabilities:
audio/x-raw
format: { (string)U8, (string)S16LE, (string)S32LE, (string)F32LE, (string)F64LE }
layout: { (string)interleaved, (string)non-interleaved }
SINK template: 'sink'
Availability: Always
Capabilities:
audio/x-gsm
Element has no clocking capabilities.
Element has no URI handling capabilities.
Pads:
SINK: 'sink'
Pad Template: 'sink'
SRC: 'src'
Pad Template: 'src'
Does anyone have any ideas here as to what might be going on or what I might be doing incorrectly?
Thanks in advance!