On Tue Apr 4 02:46:59 2023 +0000, Ziqing Hui wrote:
I found that the original audio stream is actually wma. Caps of the wma stream is:
audio/x-wma wmaversion: 1 bitrate: 128000 depth: 16 rate: 44100 channels: 1 block_align: 743 codec_data: 00000100
(This caps is printed in autoplug_continue_cb()) It loses some caps field after our reader decode it into audio/x-raw. I don't know why. Here is the test patch. [test.patch](/uploads/bc1b2351c474a413e67c5c663996b326/test.patch) The full caps info printed by this patch when running wmvcore tests is:
autoplug_continue_cb: video/x-ms-asf autoplug_select_cb: using ASF Demuxer autoplug_continue_cb: video/x-wmv autoplug_continue_cb: wmvversion: 1 autoplug_continue_cb: width: 64 autoplug_continue_cb: height: 48 autoplug_continue_cb: pixel-aspect-ratio: 1/1 autoplug_continue_cb: format: WMV1 autoplug_continue_cb: audio/x-wma autoplug_continue_cb: wmaversion: 1 autoplug_continue_cb: bitrate: 128000 autoplug_continue_cb: depth: 16 autoplug_continue_cb: rate: 44100 autoplug_continue_cb: channels: 1 autoplug_continue_cb: block_align: 743 autoplug_continue_cb: codec_data: 00000100 autoplug_select_cb: using libav Windows Media Audio 1 decoder autoplug_continue_cb: audio/x-raw autoplug_continue_cb: format: F32LE autoplug_continue_cb: layout: non-interleaved pad_added_cb: video/x-wmv pad_added_cb: wmvversion: 1 pad_added_cb: width: 64 pad_added_cb: height: 48 pad_added_cb: pixel-aspect-ratio: 1/1 pad_added_cb: format: WMV1 pad_added_cb: audio/x-raw pad_added_cb: format: F32LE pad_added_cb: layout: non-interleaved
Here's the result of `gst-inspect-1.0 avdec_wmav1`:
``` ... Pad Templates: SINK template: 'sink' Availability: Always Capabilities: audio/x-wma wmaversion: 1 block_align: [ 0, 2147483647 ] bitrate: [ 0, 2147483647 ]
SRC template: 'src' Availability: Always Capabilities: audio/x-raw format: F32LE layout: non-interleaved ... ```
The src pad template here is identical to what we see in autoplug_continue_cb().
Also, see: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/subprojects/g...
From the decodebin source, we can see that the caps argument passed to autoplug_continue comes from the plugin pad template. And avdec_wmav1 plugin src pad template doesn't have rate, which leads to the missing rate in autoplug_continue.