diff --git a/doc/html/format.html b/doc/html/format.html index a8a539e0..87f6413d 100644 --- a/doc/html/format.html +++ b/doc/html/format.html @@ -1247,11 +1247,11 @@
  • 1 channel: mono
  • 2 channels: left, right
  • 3 channels: left, right, center
  • -
  • 4 channels: left, right, back left, back right
  • -
  • 5 channels: left, right, center, back/surround left, back/surround right
  • -
  • 6 channels: left, right, center, LFE, back/surround left, back/surround right
  • -
  • 7 channels: not defined
  • -
  • 8 channels: not defined
  • +
  • 4 channels: front left, front right, back left, back right
  • +
  • 5 channels: front left, front right, front center, back/surround left, back/surround right
  • +
  • 6 channels: front left, front right, front center, LFE, back/surround left, back/surround right
  • +
  • 7 channels: front left, front right, front center, LFE, back center, side left, side right
  • +
  • 8 channels: front left, front right, front center, LFE, back left, back right, side left, side right
  • diff --git a/src/flac/decode.c b/src/flac/decode.c index 98fc430f..e07b5aef 100644 --- a/src/flac/decode.c +++ b/src/flac/decode.c @@ -354,6 +354,18 @@ 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; + } + 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 eeea08aa..04539fc7 100644 --- a/src/flac/encode.c +++ b/src/flac/encode.c @@ -461,7 +461,9 @@ static FLAC__bool get_sample_info_wave(EncoderSession *e, encode_options_t optio } else if( 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 */ ) { /* to dolby order: front left, center, front right, surround left, surround right, LFE */ channel_map[1] = 2; @@ -481,7 +483,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 */ }