comparison mpegaudiodec.c @ 1612:0d2b59cf9f45 libavcodec

exported mpa_decode_header for new parser API
author bellard
date Mon, 10 Nov 2003 15:21:16 +0000
parents 7fbe89a76b73
children b47d56b1a049
comparison
equal deleted inserted replaced
1611:d29e96720e21 1612:0d2b59cf9f45
1205 #endif 1205 #endif
1206 return 0; 1206 return 0;
1207 } 1207 }
1208 1208
1209 /* useful helper to get mpeg audio stream infos. Return -1 if error in 1209 /* useful helper to get mpeg audio stream infos. Return -1 if error in
1210 header */ 1210 header, otherwise the coded frame size in bytes */
1211 int mp_decode_header(int *sample_rate_ptr, 1211 int mpa_decode_header(AVCodecContext *avctx, uint32_t head)
1212 int *nb_channels_ptr,
1213 int *coded_frame_size_ptr,
1214 int *decoded_frame_size_ptr,
1215 uint32_t head)
1216 { 1212 {
1217 MPADecodeContext s1, *s = &s1; 1213 MPADecodeContext s1, *s = &s1;
1218 int decoded_frame_size;
1219 1214
1220 if (check_header(head) != 0) 1215 if (check_header(head) != 0)
1221 return -1; 1216 return -1;
1222 1217
1223 if (decode_header(s, head) != 0) { 1218 if (decode_header(s, head) != 0) {
1224 return -1; 1219 return -1;
1225 } 1220 }
1226 1221
1227 switch(s->layer) { 1222 switch(s->layer) {
1228 case 1: 1223 case 1:
1229 decoded_frame_size = 384; 1224 avctx->frame_size = 384;
1230 break; 1225 break;
1231 case 2: 1226 case 2:
1232 decoded_frame_size = 1152; 1227 avctx->frame_size = 1152;
1233 break; 1228 break;
1234 default: 1229 default:
1235 case 3: 1230 case 3:
1236 if (s->lsf) 1231 if (s->lsf)
1237 decoded_frame_size = 576; 1232 avctx->frame_size = 576;
1238 else 1233 else
1239 decoded_frame_size = 1152; 1234 avctx->frame_size = 1152;
1240 break; 1235 break;
1241 } 1236 }
1242 1237
1243 *sample_rate_ptr = s->sample_rate; 1238 avctx->sample_rate = s->sample_rate;
1244 *nb_channels_ptr = s->nb_channels; 1239 avctx->channels = s->nb_channels;
1245 *coded_frame_size_ptr = s->frame_size; 1240 avctx->bit_rate = s->bit_rate;
1246 *decoded_frame_size_ptr = decoded_frame_size * 2 * s->nb_channels; 1241 avctx->sub_id = s->layer;
1247 return 0; 1242 return s->frame_size;
1248 } 1243 }
1249 1244
1250 /* return the number of decoded frames */ 1245 /* return the number of decoded frames */
1251 static int mp_decode_layer1(MPADecodeContext *s) 1246 static int mp_decode_layer1(MPADecodeContext *s)
1252 { 1247 {