Mercurial > libavcodec.hg
changeset 9208:443f056ba7e7 libavcodec
share channel mode constants between the FLAC decoder and FLAC encoder
author | jbr |
---|---|
date | Sat, 21 Mar 2009 00:44:42 +0000 |
parents | 058ade8fcc89 |
children | 514b73a654c9 |
files | flac.h flacdec.c flacenc.c |
diffstat | 3 files changed, 20 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/flac.h Fri Mar 20 22:29:31 2009 +0000 +++ b/flac.h Sat Mar 21 00:44:42 2009 +0000 @@ -35,6 +35,13 @@ #define FLAC_MAX_BLOCKSIZE 65535 enum { + FLAC_CHMODE_INDEPENDENT = 0, + FLAC_CHMODE_LEFT_SIDE = 8, + FLAC_CHMODE_RIGHT_SIDE = 9, + FLAC_CHMODE_MID_SIDE = 10, +}; + +enum { FLAC_METADATA_TYPE_STREAMINFO = 0, FLAC_METADATA_TYPE_PADDING, FLAC_METADATA_TYPE_APPLICATION,
--- a/flacdec.c Fri Mar 20 22:29:31 2009 +0000 +++ b/flacdec.c Sat Mar 21 00:44:42 2009 +0000 @@ -46,13 +46,6 @@ #undef NDEBUG #include <assert.h> -enum decorrelation_type { - INDEPENDENT, - LEFT_SIDE, - RIGHT_SIDE, - MID_SIDE, -}; - typedef struct FLACContext { FLACSTREAMINFO @@ -63,7 +56,7 @@ int curr_bps; ///< bps for current subframe, adjusted for channel correlation and wasted bits int sample_shift; ///< shift required to make output samples 16-bit or 32-bit int is32; ///< flag to indicate if output should be 32-bit instead of 16-bit - enum decorrelation_type decorrelation; ///< channel decorrelation type in the current frame + int decorrelation; ///< channel decorrelation type in the current frame int got_streaminfo; ///< indicates if the STREAMINFO has been read int32_t *decoded[FLAC_MAX_CHANNELS]; ///< decoded samples @@ -445,10 +438,10 @@ s->curr_bps = s->bps; if (channel == 0) { - if (s->decorrelation == RIGHT_SIDE) + if (s->decorrelation == FLAC_CHMODE_RIGHT_SIDE) s->curr_bps++; } else { - if (s->decorrelation == LEFT_SIDE || s->decorrelation == MID_SIDE) + if (s->decorrelation == FLAC_CHMODE_LEFT_SIDE || s->decorrelation == FLAC_CHMODE_MID_SIDE) s->curr_bps++; } @@ -508,9 +501,9 @@ assignment = get_bits(&s->gb, 4); /* channel assignment */ if (assignment < FLAC_MAX_CHANNELS && s->channels == assignment+1) - decorrelation = INDEPENDENT; + decorrelation = FLAC_CHMODE_INDEPENDENT; else if (assignment >= FLAC_MAX_CHANNELS && assignment < 11 && s->channels == 2) - decorrelation = LEFT_SIDE + assignment - 8; + decorrelation = assignment; else { av_log(s->avctx, AV_LOG_ERROR, "unsupported channel assignment %d (channels=%d)\n", assignment, s->channels); @@ -710,7 +703,7 @@ break; switch (s->decorrelation) { - case INDEPENDENT: + case FLAC_CHMODE_INDEPENDENT: for (j = 0; j < s->blocksize; j++) { for (i = 0; i < s->channels; i++) { if (s->is32) @@ -720,11 +713,11 @@ } } break; - case LEFT_SIDE: + case FLAC_CHMODE_LEFT_SIDE: DECORRELATE(a,a-b) - case RIGHT_SIDE: + case FLAC_CHMODE_RIGHT_SIDE: DECORRELATE(a+b,b) - case MID_SIDE: + case FLAC_CHMODE_MID_SIDE: DECORRELATE( (a-=b>>1) + b, a) }
--- a/flacenc.c Fri Mar 20 22:29:31 2009 +0000 +++ b/flacenc.c Sat Mar 21 00:44:42 2009 +0000 @@ -34,12 +34,6 @@ #define FLAC_SUBFRAME_FIXED 8 #define FLAC_SUBFRAME_LPC 32 -#define FLAC_CHMODE_NOT_STEREO 0 -#define FLAC_CHMODE_LEFT_RIGHT 1 -#define FLAC_CHMODE_LEFT_SIDE 8 -#define FLAC_CHMODE_RIGHT_SIDE 9 -#define FLAC_CHMODE_MID_SIDE 10 - #define MAX_FIXED_ORDER 4 #define MAX_PARTITION_ORDER 8 #define MAX_PARTITIONS (1 << MAX_PARTITION_ORDER) @@ -1006,7 +1000,7 @@ } } if(best == 0) { - return FLAC_CHMODE_LEFT_RIGHT; + return FLAC_CHMODE_INDEPENDENT; } else if(best == 1) { return FLAC_CHMODE_LEFT_SIDE; } else if(best == 2) { @@ -1031,14 +1025,14 @@ right = frame->subframes[1].samples; if(ctx->channels != 2) { - frame->ch_mode = FLAC_CHMODE_NOT_STEREO; + frame->ch_mode = FLAC_CHMODE_INDEPENDENT; return; } frame->ch_mode = estimate_stereo_mode(left, right, n); /* perform decorrelation and adjust bits-per-sample */ - if(frame->ch_mode == FLAC_CHMODE_LEFT_RIGHT) { + if(frame->ch_mode == FLAC_CHMODE_INDEPENDENT) { return; } if(frame->ch_mode == FLAC_CHMODE_MID_SIDE) { @@ -1078,7 +1072,7 @@ put_bits(&s->pb, 16, 0xFFF8); put_bits(&s->pb, 4, frame->bs_code[0]); put_bits(&s->pb, 4, s->sr_code[0]); - if(frame->ch_mode == FLAC_CHMODE_NOT_STEREO) { + if(frame->ch_mode == FLAC_CHMODE_INDEPENDENT) { put_bits(&s->pb, 4, s->ch_code); } else { put_bits(&s->pb, 4, frame->ch_mode);