summaryrefslogtreecommitdiff
path: root/libavcodec/mpegaudiodecheader.h
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-05-21 05:00:01 +0200
committerMichael Niedermayer <michaelni@gmx.at>2011-05-21 05:32:03 +0200
commit6d32bcd770c638e49d69a4d5eb5464cfa4f35d9a (patch)
tree892dbfcfc54c4acdfe9619fdb597eb741c6abae6 /libavcodec/mpegaudiodecheader.h
parent840238b8706ea2ca740cf4b49bffd8ae196352f9 (diff)
parenta1d0dcc7134f1401c682b5e13d4ab3864da21efb (diff)
Merge remote-tracking branch 'qatar/master'
* qatar/master: configure: make executable again LATM/AAC: Free previously initialized context on reinit. configure: Do not unconditionally add -Wall to host CFLAGS. configure: Set OS/2 objformat to a.out. Add support for a.out object format to assembler macros. fate: disable threading for encoding fate: add comment field fate: allow overriding default build and install dirs mpegtsenc: Add an AVClass pointer to the private data mpegaudio: clean up #includes mpegaudio: move all header parsing to mpegaudiodecheader.[ch] Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/mpegaudiodecheader.h')
-rw-r--r--libavcodec/mpegaudiodecheader.h41
1 files changed, 39 insertions, 2 deletions
diff --git a/libavcodec/mpegaudiodecheader.h b/libavcodec/mpegaudiodecheader.h
index 5578618288..aa77f0122e 100644
--- a/libavcodec/mpegaudiodecheader.h
+++ b/libavcodec/mpegaudiodecheader.h
@@ -27,13 +27,50 @@
#ifndef AVCODEC_MPEGAUDIODECHEADER_H
#define AVCODEC_MPEGAUDIODECHEADER_H
-#include "libavutil/common.h"
-#include "mpegaudio.h"
+#include "avcodec.h"
+#define MP3_MASK 0xFFFE0CCF
+
+#define MPA_DECODE_HEADER \
+ int frame_size; \
+ int error_protection; \
+ int layer; \
+ int sample_rate; \
+ int sample_rate_index; /* between 0 and 8 */ \
+ int bit_rate; \
+ int nb_channels; \
+ int mode; \
+ int mode_ext; \
+ int lsf;
+
+typedef struct MPADecodeHeader {
+ MPA_DECODE_HEADER
+} MPADecodeHeader;
/* header decoding. MUST check the header before because no
consistency check is done there. Return 1 if free format found and
that the frame size must be computed externally */
int ff_mpegaudio_decode_header(MPADecodeHeader *s, uint32_t header);
+/* useful helper to get mpeg audio stream infos. Return -1 if error in
+ header, otherwise the coded frame size in bytes */
+int ff_mpa_decode_header(AVCodecContext *avctx, uint32_t head, int *sample_rate, int *channels, int *frame_size, int *bitrate);
+
+/* fast header check for resync */
+static inline int ff_mpa_check_header(uint32_t header){
+ /* header */
+ if ((header & 0xffe00000) != 0xffe00000)
+ return -1;
+ /* layer check */
+ if ((header & (3<<17)) == 0)
+ return -1;
+ /* bit rate */
+ if ((header & (0xf<<12)) == 0xf<<12)
+ return -1;
+ /* frequency */
+ if ((header & (3<<10)) == 3<<10)
+ return -1;
+ return 0;
+}
+
#endif /* AVCODEC_MPEGAUDIODECHEADER_H */