exported mpa_decode_header for new parser API
authorFabrice Bellard <fabrice@bellard.org>
Mon, 10 Nov 2003 15:21:16 +0000 (15:21 +0000)
committerFabrice Bellard <fabrice@bellard.org>
Mon, 10 Nov 2003 15:21:16 +0000 (15:21 +0000)
Originally committed as revision 2491 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/mpegaudio.h
libavcodec/mpegaudiodec.c

index 7aba132..e50e8bd 100644 (file)
@@ -19,6 +19,7 @@
 #define MPA_MONO    3
 
 int l2_select_table(int bitrate, int nb_channels, int freq, int lsf);
+int mpa_decode_header(AVCodecContext *avctx, uint32_t head);
 
 extern const uint16_t mpa_bitrate_tab[2][3][15];
 extern const uint16_t mpa_freq_tab[3];
index 51c8ef1..e94d919 100644 (file)
@@ -1207,15 +1207,10 @@ static int decode_header(MPADecodeContext *s, uint32_t header)
 }
 
 /* useful helper to get mpeg audio stream infos. Return -1 if error in
-   header */
-int mp_decode_header(int *sample_rate_ptr,
-                     int *nb_channels_ptr, 
-                     int *coded_frame_size_ptr,
-                     int *decoded_frame_size_ptr,
-                     uint32_t head)
+   header, otherwise the coded frame size in bytes */
+int mpa_decode_header(AVCodecContext *avctx, uint32_t head)
 {
     MPADecodeContext s1, *s = &s1;
-    int decoded_frame_size;
 
     if (check_header(head) != 0)
         return -1;
@@ -1226,25 +1221,25 @@ int mp_decode_header(int *sample_rate_ptr,
 
     switch(s->layer) {
     case 1:
-        decoded_frame_size = 384;
+        avctx->frame_size = 384;
         break;
     case 2:
-        decoded_frame_size = 1152;
+        avctx->frame_size = 1152;
         break;
     default:
     case 3:
         if (s->lsf)
-            decoded_frame_size = 576;
+            avctx->frame_size = 576;
         else
-            decoded_frame_size = 1152;
+            avctx->frame_size = 1152;
         break;
     }
 
-    *sample_rate_ptr = s->sample_rate;
-    *nb_channels_ptr = s->nb_channels;
-    *coded_frame_size_ptr = s->frame_size;
-    *decoded_frame_size_ptr = decoded_frame_size * 2 * s->nb_channels;
-    return 0;
+    avctx->sample_rate = s->sample_rate;
+    avctx->channels = s->nb_channels;
+    avctx->bit_rate = s->bit_rate;
+    avctx->sub_id = s->layer;
+    return s->frame_size;
 }
 
 /* return the number of decoded frames */