Ralph Giles
2013-Mar-01 17:27 UTC
[flac-dev] [PATCH] support 7 and 8 channel wav files as input
Now that we've selected a channel mapping for 7 and 8 channel flac, the command-line encoder tools needs updating to accept wav files with compatible channel maps. -r -------------- next part --------------
Erik de Castro Lopo
2013-Mar-01 22:17 UTC
[flac-dev] [PATCH] support 7 and 8 channel wav files as input
Ralph Giles wrote:> @@ -354,6 +354,11 @@ FLAC__bool DecoderSession_process(DecoderSession *d) > else if(d->channels == 6) { > d->channel_mask = 0x060f; > } > + else if(d->channels == 7) { > + d->channel_mask = 0x070f; > + } > + else if(d->channels == 8) { > + d->channel_mask = 0x063f; > } > > /* write the WAVE/AIFF headers if necessary */Ralph, looks like there's a missing closing brace there. Do you want to fix it and resubmit or should I fix it? Cheers, Erik -- ---------------------------------------------------------------------- Erik de Castro Lopo http://www.mega-nerd.com/
Ralph Giles
2013-Mar-01 22:22 UTC
[flac-dev] [PATCH] support 7 and 8 channel wav files as input
On 13-03-01 2:17 PM, Erik de Castro Lopo wrote:> Ralph, looks like there's a missing closing brace there. Do you want to fix > it and resubmit or should I fix it?Sorry about that. Is this one better? -r -------------- next part -------------- commit 93d92eb5e98cacd8cab185a0bfdaafb795b14b22 Author: Ralph Giles <giles at mozilla.com> Date: Thu Jan 17 16:21:45 2013 -0800 Add appropriate WAV channel masks for 7 and 8 channel files. This commit accepts the new default channel masks for 6.1 and 7.1 surround input WAV files, and writes the corresponding masks when decoding to WAV without a channel mask from the metadata block. The local copy of the format spec is also updated with the new text from the flac-website repository. diff --git a/doc/html/format.html b/doc/html/format.html index a8a539e..87f6413 100644 --- a/doc/html/format.html +++ b/doc/html/format.html @@ -1247,11 +1247,11 @@ <li>1 channel: mono</li> <li>2 channels: left, right</li> <li>3 channels: left, right, center</li> - <li>4 channels: left, right, back left, back right</li> - <li>5 channels: left, right, center, back/surround left, back/surround right</li> - <li>6 channels: left, right, center, LFE, back/surround left, back/surround right</li> - <li>7 channels: not defined</li> - <li>8 channels: not defined</li> + <li>4 channels: front left, front right, back left, back right</li> + <li>5 channels: front left, front right, front center, back/surround left, back/surround right</li> + <li>6 channels: front left, front right, front center, LFE, back/surround left, back/surround right</li> + <li>7 channels: front left, front right, front center, LFE, back center, side left, side right</li> + <li>8 channels: front left, front right, front center, LFE, back left, back right, side left, side right</li> </ul> </li> <li> diff --git a/src/flac/decode.c b/src/flac/decode.c index 98fc430..77acb7c 100644 --- a/src/flac/decode.c +++ b/src/flac/decode.c @@ -354,6 +354,12 @@ FLAC__bool DecoderSession_process(DecoderSession *d) else if(d->channels == 6) { d->channel_mask = 0x060f; } + else if(d->channels == 7) { + d->channel_mask = 0x070f; + } + else if(d->channels == 8) { + d->channel_mask = 0x063f; + } } /* write the WAVE/AIFF headers if necessary */ diff --git a/src/flac/encode.c b/src/flac/encode.c index eeea08a..58cdc77 100644 --- a/src/flac/encode.c +++ b/src/flac/encode.c @@ -481,7 +481,9 @@ static FLAC__bool get_sample_info_wave(EncoderSession *e, encode_options_t optio channel_mask == 0x0037 || /* 5 channels: front left, front right, front center, back left, back right */ channel_mask == 0x0607 || /* 5 channels: front left, front right, front center, side left, side right */ channel_mask == 0x003f || /* 6 channels: front left, front right, front center, LFE, back left, back right */ - channel_mask == 0x060f /* 6 channels: front left, front right, front center, LFE, side left, side right */ + channel_mask == 0x060f || /* 6 channels: front left, front right, front center, LFE, side left, side right */ + channel_mask == 0x070f || /* 7 channels: front left, front right, front center, LFE, back center, side left, side right */ + channel_mask == 0x063f /* 8 channels: front left, front right, front center, LFE, back left, back right, side left, side right */ ) { /* keep default channel order */ }