]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/mpegaudiodecheader.c
Merge remote-tracking branch 'qatar/master'
[ffmpeg] / libavcodec / mpegaudiodecheader.c
index 0821dd43c19f02f221269049f6f0768c8f832110..1c3b004bcce3112e6f31d4940493e880e1fb0e26 100644 (file)
@@ -108,3 +108,40 @@ int ff_mpegaudio_decode_header(MPADecodeHeader *s, uint32_t header)
 #endif
     return 0;
 }
+
+int ff_mpa_decode_header(AVCodecContext *avctx, uint32_t head, int *sample_rate, int *channels, int *frame_size, int *bit_rate)
+{
+    MPADecodeHeader s1, *s = &s1;
+
+    if (ff_mpa_check_header(head) != 0)
+        return -1;
+
+    if (ff_mpegaudio_decode_header(s, head) != 0) {
+        return -1;
+    }
+
+    switch(s->layer) {
+    case 1:
+        avctx->codec_id = CODEC_ID_MP1;
+        *frame_size = 384;
+        break;
+    case 2:
+        avctx->codec_id = CODEC_ID_MP2;
+        *frame_size = 1152;
+        break;
+    default:
+    case 3:
+        avctx->codec_id = CODEC_ID_MP3;
+        if (s->lsf)
+            *frame_size = 576;
+        else
+            *frame_size = 1152;
+        break;
+    }
+
+    *sample_rate = s->sample_rate;
+    *channels = s->nb_channels;
+    *bit_rate = s->bit_rate;
+    avctx->sub_id = s->layer;
+    return s->frame_size;
+}