After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 690591 - No decoder available for type 'audio/x-avi-unknown, codec_id=(int)65534'.
No decoder available for type 'audio/x-avi-unknown, codec_id=(int)65534'.
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal normal
: 1.1.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-12-21 02:26 UTC by Pete Beardmore
Modified: 2013-01-14 16:04 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
sample file (959.18 KB, video/x-msvideo)
2012-12-21 02:26 UTC, Pete Beardmore
  Details
add waveformatextension ac3 support (1.13 KB, patch)
2012-12-21 02:31 UTC, Pete Beardmore
none Details | Review
riff-add-waveformatextension-generic-support (1.94 KB, patch)
2012-12-21 14:16 UTC, Pete Beardmore
none Details | Review
riff-add-waveformatextension-generic-support (2.44 KB, patch)
2012-12-24 19:02 UTC, Pete Beardmore
none Details | Review

Description Pete Beardmore 2012-12-21 02:26:35 UTC
Created attachment 232023 [details]
sample file

WAVEFORMATEXTENSIBLE 65534/0xFFFE
http://msdn.microsoft.com/en-gb/library/windows/desktop/dd757714(v=vs.85).aspx

http://www.videolan.org/developers/vlc/doc/doxygen/html/vlc__codecs_8h_source.html:424 is interesting, making it sound like anybody can dump their own proprietary id in there. however the spec on the MS states that it should only be used to extend the waveformat format, and has examples whereby the subformat enum ids match the corresponding waveformat ids directly. this seems more sensible

http://code.google.com/p/sharpdx/source/browse/External/gccxml/share/gccxml-0.9/vc11/overrides/shared/mmreg.h?r=730c5ff598dc859822453a48e4d6805fe655d353

the above is a relevant (and fairly recent) window header. 8196/0x2000 references 'WAVE_FORMAT_DVM' / FAST Multimedia AG which 'everywhere else' on the web states is just A52/AC3. queue the attached patch which stops my troublesome file (sample attached) falling through to receive the 'audio/x-avi-unknown' type, and thus having no available decoder. no decoder = no sound

cheers
Comment 1 Pete Beardmore 2012-12-21 02:31:21 UTC
Created attachment 232024 [details] [review]
add waveformatextension ac3 support
Comment 2 Wim Taymans 2012-12-21 12:27:17 UTC
I think the point of the WAVEFORMATEXTENSIBLE is to specify a non-default channel map. Your patch doesn't parse the channel map. I'll have a look at it.
Comment 3 Wim Taymans 2012-12-21 12:39:04 UTC
commit d2c68e602d326af0ae55baa1d246e0b4816e218a
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Fri Dec 21 02:27:12 2012 +0000

    riff: add waveformatextension ac3 support
    
    fixes #690591
Comment 4 Pete Beardmore 2012-12-21 14:14:29 UTC
i reworked the patch to be more generic given the comment on IRC

i agree with the comment about channel maps. however, this patch purely serves to ensure a sensible default decoder is selected where bespoke mapping/rate changes haven't been made ..where wave_format_extensible more than likely shouldn't have been encoded into the header in the first place i.e. the sample file
Comment 5 Pete Beardmore 2012-12-21 14:16:54 UTC
Created attachment 232051 [details] [review]
riff-add-waveformatextension-generic-support
Comment 6 Sebastian Dröge (slomo) 2012-12-22 09:43:00 UTC
Is this still necessary after Wim's latest change?

commit ca456ec6f988c08086ee3969e902043332b4cf2f
Author: Wim Taymans <wim.taymans@collabora.co.uk>
Date:   Fri Dec 21 14:03:32 2012 +0100

    riff: add channel masks for all formats
    
    Add the channel masks for all the extensible formats
    Pass the number of channels instead of reading them from caps.
Comment 7 Pete Beardmore 2012-12-24 19:01:39 UTC
yes it is. Wim's code adds channel mask support which is a separate enhancement. without the modified patch, all waveextensibleformat subformat codec ids other than 0x1 0x3 0x6 0x7 0x2000 will fail to get a decoder. i think that these formats are highly uncommon but alas, the reason i did the original patch was because i had an oddball avi

i've generated another patch that applies cleanly to master. in it i've also shifted the original AC-3 support case (0x2000) to the AC-3 spdif (0x0092) case to ensure that that also gets a default decoder. the AC-3 spdif case could be removed completely as it would fall through to the generic catch all support that this patch adds, however, it looks like that subformat case has been explicitly marked for further work by somebody so it should be left as a placeholder ..but in the mean time lets still ensure it gets a decoder instead of just failing

please shout if you have any doubts on what i've done ..i certainly don't claim to be an expert in either C / gtk or gstreamer
Comment 8 Pete Beardmore 2012-12-24 19:02:53 UTC
Created attachment 232204 [details] [review]
riff-add-waveformatextension-generic-support
Comment 9 Wim Taymans 2013-01-14 16:04:20 UTC
commit 569f3a29ab1451a70b6cca2277afa072849c5cb2
Author: Pete Beardmore <pete.beardmore@msn.com>
Date:   Mon Dec 24 18:25:10 2012 +0000

    riff: add waveformatextension generic support
    
    Fixes https://bugzilla.gnome.org/show_bug.cgi?id=690591