- }
- aout_FormatPrepare (audio);
-
- wf->Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
- wf->Format.nChannels = audio->i_channels;
- wf->Format.nSamplesPerSec = audio->i_rate;
- wf->Format.nAvgBytesPerSec = audio->i_bytes_per_frame * audio->i_rate;
- wf->Format.nBlockAlign = audio->i_bytes_per_frame;
- wf->Format.wBitsPerSample = audio->i_bitspersample;
- wf->Format.cbSize = sizeof (*wf) - sizeof (wf->Format);
-
- wf->Samples.wValidBitsPerSample = audio->i_bitspersample;
-
- wf->dwChannelMask = 0;
- if (audio->i_physical_channels & AOUT_CHAN_LEFT)
- wf->dwChannelMask |= SPEAKER_FRONT_LEFT;
- if (audio->i_physical_channels & AOUT_CHAN_RIGHT)
- wf->dwChannelMask |= SPEAKER_FRONT_RIGHT;
- if (audio->i_physical_channels & AOUT_CHAN_CENTER)
- wf->dwChannelMask |= SPEAKER_FRONT_CENTER;
- if (audio->i_physical_channels & AOUT_CHAN_LFE)
- wf->dwChannelMask |= SPEAKER_LOW_FREQUENCY;
- // TODO: reorder
- if (audio->i_physical_channels & AOUT_CHAN_REARLEFT)
- wf->dwChannelMask |= SPEAKER_BACK_LEFT;
- if (audio->i_physical_channels & AOUT_CHAN_REARRIGHT)
- wf->dwChannelMask |= SPEAKER_BACK_RIGHT;
- /* ... */
- if (audio->i_physical_channels & AOUT_CHAN_REARCENTER)
- wf->dwChannelMask |= SPEAKER_BACK_CENTER;
- if (audio->i_physical_channels & AOUT_CHAN_MIDDLELEFT)
- wf->dwChannelMask |= SPEAKER_SIDE_LEFT;
- if (audio->i_physical_channels & AOUT_CHAN_MIDDLERIGHT)
- wf->dwChannelMask |= SPEAKER_SIDE_RIGHT;
- /* ... */
+ }
+ aout_FormatPrepare (audio);
+
+ wf->Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
+ wf->Format.nChannels = audio->i_channels;
+ wf->Format.nSamplesPerSec = audio->i_rate;
+ wf->Format.nAvgBytesPerSec = audio->i_bytes_per_frame * audio->i_rate;
+ wf->Format.nBlockAlign = audio->i_bytes_per_frame;
+ wf->Format.wBitsPerSample = audio->i_bitspersample;
+ wf->Format.cbSize = sizeof (*wf) - sizeof (wf->Format);
+
+ wf->Samples.wValidBitsPerSample = audio->i_bitspersample;
+
+ wf->dwChannelMask = 0;
+ for (unsigned i = 0; pi_vlc_chan_order_wg4[i]; i++)
+ if (audio->i_physical_channels & pi_vlc_chan_order_wg4[i])
+ wf->dwChannelMask |= chans_in[i];