Closed Bug 1195061 Opened 5 years ago Closed 5 years ago
Mono Audio unplayable in Windows 10
User Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0 Build ID: 20150812163655 Steps to reproduce: Attempt to play a mono OGG file Actual results: Play button will change, but nothing else occurs Expected results: Playback should start
still working on whether it's specific to OGG or mono files, occurs with 5.1 speaker setups but not stereo.
Severity: normal → blocker
OS: Unspecified → Windows 10
Hardware: Unspecified → x86_64
Attach an audio sample if possible.
Severity: blocker → normal
Component: Untriaged → Audio/Video: Playback
Product: Firefox → Core
Summary: Mono and/or OGG Audio unplayable in Windows 10 → Mono Audio unplayable in Windows 10
confirmed mono-audio specific and the problem is inside cubeb again example sources; https://commons.wikimedia.org/wiki/File:Fennec_Singing.ogg https://www.youtube.com/watch?v=mEN7DTdHbAU working on a possible patch now
windows 10 sees the removal of mono support entirely for > 2 channel setups, so we have to give it stereo regardless. no idea about sources > 2 channels, but I don't think we support that yet anyway?
I would consider the lack of playback for a common format to be at least major
I can reproduce this locally. In handle_channel_layout, we pass a mix format with nChannels == 1 to IsFormatSupported and receive AUDCLNT_E_UNSUPPORTED_FORMAT, which causes us to fall back to using the hardware mix format retrieved from GetMixFormat. Passing that to Initialize causes it to fail with AUDCLNT_E_UNSUPPORTED_FORMAT again and cubeb_stream_init eventually returns CUBEB_ERROR. In theory, we'd expect initializing a stream with the format reported by GetMixFormat to succeed and we'd then up/down mix and resample as necessary. It fails because we change dwChannelMask to (in this case) KSAUDIO_SPEAKER_MONO before testing IsFormatSupported and when reverting the mix format to the version received from GetMixFormat we only reset the WAVEFORMATEX members rather than the complete WAVEFORMATEXTENSIBLE structure (which includes dwChannelMask).
Assignee: nobody → kinetik
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
well that explains why it wasn't accepting the hardware default, not sure how I overlooked that, but I can confirm it fixes the bug. Quite odd though that it wasn't a problem until now...
Attachment #8648566 - Flags: review?(padenot) → review+
Comment on attachment 8648566 [details] [diff] [review] fix v0 Approval Request Comment [Feature/regressing bug #]: bug always present, exposed by Windows 10 behaviour changes [User impact if declined]: some audio formats unplayable on Windows 10 (mono audio) [Describe test coverage new/current, TreeHerder]: n/a [Risks and why]: very low, trivial fix [String/UUID change made/needed]: none
(In reply to Paul17041993 from comment #8) > well that explains why it wasn't accepting the hardware default, not sure > how I overlooked that, but I can confirm it fixes the bug. Quite odd though > that it wasn't a problem until now... Thanks for verifying the fix!
we should push this as far back as 40 if it's not a problem, of which it shouldn't be as the function hasn't been touched since some distant version...
Comment on attachment 8648566 [details] [diff] [review] fix v0 Windows 10 regression, taking the fix.
You need to log in before you can comment on or make changes to this bug.