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 */