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 { |
