Mercurial > libavcodec.hg
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 { |