diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-05-21 05:00:01 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-05-21 05:32:03 +0200 |
commit | 6d32bcd770c638e49d69a4d5eb5464cfa4f35d9a (patch) | |
tree | 892dbfcfc54c4acdfe9619fdb597eb741c6abae6 /libavcodec/mpegaudiodecheader.h | |
parent | 840238b8706ea2ca740cf4b49bffd8ae196352f9 (diff) | |
parent | a1d0dcc7134f1401c682b5e13d4ab3864da21efb (diff) | |
download | ffmpeg-6d32bcd770c638e49d69a4d5eb5464cfa4f35d9a.tar.gz |
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.h | 41 |
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 */ |