Mercurial > libavcodec.hg
comparison flacenc.c @ 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 | f534d0cca450 |
children | 514b73a654c9 |
comparison
equal
deleted
inserted
replaced
9207:058ade8fcc89 | 9208:443f056ba7e7 |
---|---|
31 | 31 |
32 #define FLAC_SUBFRAME_CONSTANT 0 | 32 #define FLAC_SUBFRAME_CONSTANT 0 |
33 #define FLAC_SUBFRAME_VERBATIM 1 | 33 #define FLAC_SUBFRAME_VERBATIM 1 |
34 #define FLAC_SUBFRAME_FIXED 8 | 34 #define FLAC_SUBFRAME_FIXED 8 |
35 #define FLAC_SUBFRAME_LPC 32 | 35 #define FLAC_SUBFRAME_LPC 32 |
36 | |
37 #define FLAC_CHMODE_NOT_STEREO 0 | |
38 #define FLAC_CHMODE_LEFT_RIGHT 1 | |
39 #define FLAC_CHMODE_LEFT_SIDE 8 | |
40 #define FLAC_CHMODE_RIGHT_SIDE 9 | |
41 #define FLAC_CHMODE_MID_SIDE 10 | |
42 | 36 |
43 #define MAX_FIXED_ORDER 4 | 37 #define MAX_FIXED_ORDER 4 |
44 #define MAX_PARTITION_ORDER 8 | 38 #define MAX_PARTITION_ORDER 8 |
45 #define MAX_PARTITIONS (1 << MAX_PARTITION_ORDER) | 39 #define MAX_PARTITIONS (1 << MAX_PARTITION_ORDER) |
46 #define MAX_LPC_PRECISION 15 | 40 #define MAX_LPC_PRECISION 15 |
1004 if(score[i] < score[best]) { | 998 if(score[i] < score[best]) { |
1005 best = i; | 999 best = i; |
1006 } | 1000 } |
1007 } | 1001 } |
1008 if(best == 0) { | 1002 if(best == 0) { |
1009 return FLAC_CHMODE_LEFT_RIGHT; | 1003 return FLAC_CHMODE_INDEPENDENT; |
1010 } else if(best == 1) { | 1004 } else if(best == 1) { |
1011 return FLAC_CHMODE_LEFT_SIDE; | 1005 return FLAC_CHMODE_LEFT_SIDE; |
1012 } else if(best == 2) { | 1006 } else if(best == 2) { |
1013 return FLAC_CHMODE_RIGHT_SIDE; | 1007 return FLAC_CHMODE_RIGHT_SIDE; |
1014 } else { | 1008 } else { |
1029 n = frame->blocksize; | 1023 n = frame->blocksize; |
1030 left = frame->subframes[0].samples; | 1024 left = frame->subframes[0].samples; |
1031 right = frame->subframes[1].samples; | 1025 right = frame->subframes[1].samples; |
1032 | 1026 |
1033 if(ctx->channels != 2) { | 1027 if(ctx->channels != 2) { |
1034 frame->ch_mode = FLAC_CHMODE_NOT_STEREO; | 1028 frame->ch_mode = FLAC_CHMODE_INDEPENDENT; |
1035 return; | 1029 return; |
1036 } | 1030 } |
1037 | 1031 |
1038 frame->ch_mode = estimate_stereo_mode(left, right, n); | 1032 frame->ch_mode = estimate_stereo_mode(left, right, n); |
1039 | 1033 |
1040 /* perform decorrelation and adjust bits-per-sample */ | 1034 /* perform decorrelation and adjust bits-per-sample */ |
1041 if(frame->ch_mode == FLAC_CHMODE_LEFT_RIGHT) { | 1035 if(frame->ch_mode == FLAC_CHMODE_INDEPENDENT) { |
1042 return; | 1036 return; |
1043 } | 1037 } |
1044 if(frame->ch_mode == FLAC_CHMODE_MID_SIDE) { | 1038 if(frame->ch_mode == FLAC_CHMODE_MID_SIDE) { |
1045 int32_t tmp; | 1039 int32_t tmp; |
1046 for(i=0; i<n; i++) { | 1040 for(i=0; i<n; i++) { |
1076 frame = &s->frame; | 1070 frame = &s->frame; |
1077 | 1071 |
1078 put_bits(&s->pb, 16, 0xFFF8); | 1072 put_bits(&s->pb, 16, 0xFFF8); |
1079 put_bits(&s->pb, 4, frame->bs_code[0]); | 1073 put_bits(&s->pb, 4, frame->bs_code[0]); |
1080 put_bits(&s->pb, 4, s->sr_code[0]); | 1074 put_bits(&s->pb, 4, s->sr_code[0]); |
1081 if(frame->ch_mode == FLAC_CHMODE_NOT_STEREO) { | 1075 if(frame->ch_mode == FLAC_CHMODE_INDEPENDENT) { |
1082 put_bits(&s->pb, 4, s->ch_code); | 1076 put_bits(&s->pb, 4, s->ch_code); |
1083 } else { | 1077 } else { |
1084 put_bits(&s->pb, 4, frame->ch_mode); | 1078 put_bits(&s->pb, 4, frame->ch_mode); |
1085 } | 1079 } |
1086 put_bits(&s->pb, 3, 4); /* bits-per-sample code */ | 1080 put_bits(&s->pb, 3, 4); /* bits-per-sample code */ |