| @@ -55,8 +55,9 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb, | |||||
| if (fi->ch_mode < FLAC_MAX_CHANNELS) { | if (fi->ch_mode < FLAC_MAX_CHANNELS) { | ||||
| fi->channels = fi->ch_mode + 1; | fi->channels = fi->ch_mode + 1; | ||||
| fi->ch_mode = FLAC_CHMODE_INDEPENDENT; | fi->ch_mode = FLAC_CHMODE_INDEPENDENT; | ||||
| } else if (fi->ch_mode <= FLAC_CHMODE_MID_SIDE) { | |||||
| } else if (fi->ch_mode < FLAC_MAX_CHANNELS + FLAC_CHMODE_MID_SIDE) { | |||||
| fi->channels = 2; | fi->channels = 2; | ||||
| fi->ch_mode -= FLAC_MAX_CHANNELS - 1; | |||||
| } else { | } else { | ||||
| av_log(avctx, AV_LOG_ERROR + log_level_offset, | av_log(avctx, AV_LOG_ERROR + log_level_offset, | ||||
| "invalid channel mode: %d\n", fi->ch_mode); | "invalid channel mode: %d\n", fi->ch_mode); | ||||
| @@ -37,10 +37,10 @@ | |||||
| #define FLAC_MIN_FRAME_SIZE 11 | #define FLAC_MIN_FRAME_SIZE 11 | ||||
| enum { | enum { | ||||
| FLAC_CHMODE_INDEPENDENT = 0, | |||||
| FLAC_CHMODE_LEFT_SIDE = 8, | |||||
| FLAC_CHMODE_RIGHT_SIDE = 9, | |||||
| FLAC_CHMODE_MID_SIDE = 10, | |||||
| FLAC_CHMODE_INDEPENDENT = 0, | |||||
| FLAC_CHMODE_LEFT_SIDE = 1, | |||||
| FLAC_CHMODE_RIGHT_SIDE = 2, | |||||
| FLAC_CHMODE_MID_SIDE = 3, | |||||
| }; | }; | ||||
| enum { | enum { | ||||
| @@ -1001,15 +1001,8 @@ static int estimate_stereo_mode(int32_t *left_ch, int32_t *right_ch, int n) | |||||
| for (i = 1; i < 4; i++) | for (i = 1; i < 4; i++) | ||||
| if (score[i] < score[best]) | if (score[i] < score[best]) | ||||
| best = i; | best = i; | ||||
| if (best == 0) { | |||||
| return FLAC_CHMODE_INDEPENDENT; | |||||
| } else if (best == 1) { | |||||
| return FLAC_CHMODE_LEFT_SIDE; | |||||
| } else if (best == 2) { | |||||
| return FLAC_CHMODE_RIGHT_SIDE; | |||||
| } else { | |||||
| return FLAC_CHMODE_MID_SIDE; | |||||
| } | |||||
| return best; | |||||
| } | } | ||||
| @@ -1081,7 +1074,7 @@ static void write_frame_header(FlacEncodeContext *s) | |||||
| if (frame->ch_mode == FLAC_CHMODE_INDEPENDENT) | if (frame->ch_mode == FLAC_CHMODE_INDEPENDENT) | ||||
| put_bits(&s->pb, 4, s->channels-1); | put_bits(&s->pb, 4, s->channels-1); | ||||
| else | else | ||||
| put_bits(&s->pb, 4, frame->ch_mode); | |||||
| put_bits(&s->pb, 4, frame->ch_mode + FLAC_MAX_CHANNELS - 1); | |||||
| put_bits(&s->pb, 3, 4); /* bits-per-sample code */ | put_bits(&s->pb, 3, 4); /* bits-per-sample code */ | ||||
| put_bits(&s->pb, 1, 0); | put_bits(&s->pb, 1, 0); | ||||