comparison utils.c @ 8098:c2ab7a8958ed libavcodec

Add audio channel layout API to libavcodec.
author pross
date Sat, 01 Nov 2008 05:03:42 +0000
parents e70975d5ff80
children f5298dd1e61c
comparison
equal deleted inserted replaced
8097:7818ed859f66 8098:c2ab7a8958ed
738 {"non_linear_q", "use non linear quantizer", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_NON_LINEAR_QUANT, INT_MIN, INT_MAX, V|E, "flags2"}, 738 {"non_linear_q", "use non linear quantizer", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_NON_LINEAR_QUANT, INT_MIN, INT_MAX, V|E, "flags2"},
739 {"request_channels", "set desired number of audio channels", OFFSET(request_channels), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, A|D}, 739 {"request_channels", "set desired number of audio channels", OFFSET(request_channels), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, A|D},
740 {"drc_scale", "percentage of dynamic range compression to apply", OFFSET(drc_scale), FF_OPT_TYPE_FLOAT, 1.0, 0.0, 1.0, A|D}, 740 {"drc_scale", "percentage of dynamic range compression to apply", OFFSET(drc_scale), FF_OPT_TYPE_FLOAT, 1.0, 0.0, 1.0, A|D},
741 {"reservoir", "use bit reservoir", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_BIT_RESERVOIR, INT_MIN, INT_MAX, A|E, "flags2"}, 741 {"reservoir", "use bit reservoir", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_BIT_RESERVOIR, INT_MIN, INT_MAX, A|E, "flags2"},
742 {"bits_per_raw_sample", NULL, OFFSET(bits_per_raw_sample), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, 742 {"bits_per_raw_sample", NULL, OFFSET(bits_per_raw_sample), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
743 {"channel_layout", NULL, OFFSET(channel_layout), FF_OPT_TYPE_INT64, DEFAULT, 0, INT64_MAX, A|E|D, "channel_layout"},
744 {"request_channel_layout", NULL, OFFSET(request_channel_layout), FF_OPT_TYPE_INT64, DEFAULT, 0, INT64_MAX, A|D, "request_channel_layout"},
743 {NULL}, 745 {NULL},
744 }; 746 };
745 747
746 #undef A 748 #undef A
747 #undef V 749 #undef V
1049 void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode) 1051 void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
1050 { 1052 {
1051 const char *codec_name; 1053 const char *codec_name;
1052 AVCodec *p; 1054 AVCodec *p;
1053 char buf1[32]; 1055 char buf1[32];
1054 char channels_str[100];
1055 int bitrate; 1056 int bitrate;
1056 AVRational display_aspect_ratio; 1057 AVRational display_aspect_ratio;
1057 1058
1058 if (encode) 1059 if (encode)
1059 p = avcodec_find_encoder(enc->codec_id); 1060 p = avcodec_find_encoder(enc->codec_id);
1129 break; 1130 break;
1130 case CODEC_TYPE_AUDIO: 1131 case CODEC_TYPE_AUDIO:
1131 snprintf(buf, buf_size, 1132 snprintf(buf, buf_size,
1132 "Audio: %s", 1133 "Audio: %s",
1133 codec_name); 1134 codec_name);
1134 switch (enc->channels) {
1135 case 1:
1136 strcpy(channels_str, "mono");
1137 break;
1138 case 2:
1139 strcpy(channels_str, "stereo");
1140 break;
1141 case 6:
1142 strcpy(channels_str, "5:1");
1143 break;
1144 default:
1145 snprintf(channels_str, sizeof(channels_str), "%d channels", enc->channels);
1146 break;
1147 }
1148 if (enc->sample_rate) { 1135 if (enc->sample_rate) {
1149 snprintf(buf + strlen(buf), buf_size - strlen(buf), 1136 snprintf(buf + strlen(buf), buf_size - strlen(buf),
1150 ", %d Hz, %s", 1137 ", %d Hz", enc->sample_rate);
1151 enc->sample_rate, 1138 }
1152 channels_str); 1139 av_strlcat(buf, ", ", buf_size);
1153 } 1140 avcodec_get_channel_layout_string(buf + strlen(buf), buf_size - strlen(buf), enc->channels, enc->channel_layout);
1154 if (enc->sample_fmt != SAMPLE_FMT_NONE) { 1141 if (enc->sample_fmt != SAMPLE_FMT_NONE) {
1155 snprintf(buf + strlen(buf), buf_size - strlen(buf), 1142 snprintf(buf + strlen(buf), buf_size - strlen(buf),
1156 ", %s", avcodec_get_sample_fmt_name(enc->sample_fmt)); 1143 ", %s", avcodec_get_sample_fmt_name(enc->sample_fmt));
1157 } 1144 }
1158 1145