diff options
-rwxr-xr-x | configure | 4 | ||||
-rw-r--r-- | libavcodec/aacdec.c | 1 | ||||
-rw-r--r-- | libavcodec/mp3_header_compress_bsf.c | 2 | ||||
-rw-r--r-- | libavcodec/mp3_header_decompress_bsf.c | 2 | ||||
-rw-r--r-- | libavcodec/mpegaudio.h | 38 | ||||
-rw-r--r-- | libavcodec/mpegaudio_parser.c | 40 | ||||
-rw-r--r-- | libavcodec/mpegaudiodata.h | 2 | ||||
-rw-r--r-- | libavcodec/mpegaudiodec.c | 1 | ||||
-rw-r--r-- | libavcodec/mpegaudiodecheader.c | 37 | ||||
-rw-r--r-- | libavcodec/mpegaudiodecheader.h | 41 | ||||
-rw-r--r-- | libavcodec/x86/dsputil_yasm.asm | 2 | ||||
-rw-r--r-- | libavcodec/x86/fft_mmx.asm | 2 | ||||
-rw-r--r-- | libavcodec/x86/fmtconvert.asm | 2 | ||||
-rw-r--r-- | libavcodec/x86/x86inc.asm | 11 | ||||
-rw-r--r-- | libavformat/mp3enc.c | 1 | ||||
-rw-r--r-- | libavformat/mpegtsenc.c | 1 | ||||
-rwxr-xr-x | tests/fate.sh | 6 | ||||
-rwxr-xr-x | tests/regression-funcs.sh | 2 |
18 files changed, 104 insertions, 91 deletions
@@ -1700,7 +1700,7 @@ LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' CC_O='-o $@' -host_cflags='-D_ISOC99_SOURCE -O3 -g -Wall' +host_cflags='-D_ISOC99_SOURCE -O3 -g' host_libs='-lm' target_path='$(CURDIR)' @@ -2363,6 +2363,7 @@ check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE EOF check_host_cflags -std=c99 +check_host_cflags -Wall case "$arch" in alpha|ia64|mips|parisc|sparc) @@ -2504,6 +2505,7 @@ case $target_os in os/2*) strip="lxlite -CS" ln_s="cp -f" + objformat="aout" add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf' FFSERVERLDFLAGS="" diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c index 7564714..34752b2 100644 --- a/libavcodec/aacdec.c +++ b/libavcodec/aacdec.c @@ -2468,6 +2468,7 @@ static int latm_decode_frame(AVCodecContext *avctx, void *out, int *out_size, *out_size = 0; return avpkt->size; } else { + aac_decode_close(avctx); if ((err = aac_decode_init(avctx)) < 0) return err; latmctx->initialized = 1; diff --git a/libavcodec/mp3_header_compress_bsf.c b/libavcodec/mp3_header_compress_bsf.c index b67e78c..417a294 100644 --- a/libavcodec/mp3_header_compress_bsf.c +++ b/libavcodec/mp3_header_compress_bsf.c @@ -20,7 +20,7 @@ #include "libavutil/intreadwrite.h" #include "avcodec.h" -#include "mpegaudio.h" +#include "mpegaudiodecheader.h" static int mp3_header_compress(AVBitStreamFilterContext *bsfc, AVCodecContext *avctx, const char *args, diff --git a/libavcodec/mp3_header_decompress_bsf.c b/libavcodec/mp3_header_decompress_bsf.c index 7af5a10..a9c23b1 100644 --- a/libavcodec/mp3_header_decompress_bsf.c +++ b/libavcodec/mp3_header_decompress_bsf.c @@ -20,7 +20,7 @@ #include "libavutil/intreadwrite.h" #include "avcodec.h" -#include "mpegaudio.h" +#include "mpegaudiodecheader.h" #include "mpegaudiodata.h" diff --git a/libavcodec/mpegaudio.h b/libavcodec/mpegaudio.h index 7e2ca84..b829cd3 100644 --- a/libavcodec/mpegaudio.h +++ b/libavcodec/mpegaudio.h @@ -30,7 +30,7 @@ # define CONFIG_FLOAT 0 #endif -#include "avcodec.h" +#include <stdint.h> /* max frame size, in samples */ #define MPA_FRAME_SIZE 1152 @@ -47,8 +47,6 @@ #define MPA_DUAL 2 #define MPA_MONO 3 -#define MP3_MASK 0xFFFE0CCF - #ifndef FRAC_BITS #define FRAC_BITS 23 /* fractional bits for sb_samples and dct */ #define WFRAC_BITS 16 /* fractional bits for window */ @@ -72,40 +70,6 @@ typedef int32_t MPA_INT; typedef int16_t OUT_INT; #endif -#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; - int ff_mpa_l2_select_table(int bitrate, int nb_channels, int freq, int lsf); -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_MPEGAUDIO_H */ diff --git a/libavcodec/mpegaudio_parser.c b/libavcodec/mpegaudio_parser.c index ee54def..94a286f 100644 --- a/libavcodec/mpegaudio_parser.c +++ b/libavcodec/mpegaudio_parser.c @@ -21,7 +21,6 @@ */ #include "parser.h" -#include "mpegaudio.h" #include "mpegaudiodecheader.h" @@ -38,45 +37,6 @@ typedef struct MpegAudioParseContext { #define SAME_HEADER_MASK \ (0xffe00000 | (3 << 17) | (3 << 10) | (3 << 19)) -/* 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 *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; -} - static int mpegaudio_parse(AVCodecParserContext *s1, AVCodecContext *avctx, const uint8_t **poutbuf, int *poutbuf_size, diff --git a/libavcodec/mpegaudiodata.h b/libavcodec/mpegaudiodata.h index 5626e3d..9d65a1e 100644 --- a/libavcodec/mpegaudiodata.h +++ b/libavcodec/mpegaudiodata.h @@ -27,7 +27,7 @@ #ifndef AVCODEC_MPEGAUDIODATA_H #define AVCODEC_MPEGAUDIODATA_H -#include "libavutil/common.h" +#include <stdint.h> #define MODE_EXT_MS_STEREO 2 #define MODE_EXT_I_STEREO 1 diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c index decb23e..872055c 100644 --- a/libavcodec/mpegaudiodec.c +++ b/libavcodec/mpegaudiodec.c @@ -27,7 +27,6 @@ #include "libavutil/audioconvert.h" #include "avcodec.h" #include "get_bits.h" -#include "dsputil.h" #include "mathops.h" #include "mpegaudiodsp.h" diff --git a/libavcodec/mpegaudiodecheader.c b/libavcodec/mpegaudiodecheader.c index 0821dd4..1c3b004 100644 --- a/libavcodec/mpegaudiodecheader.c +++ b/libavcodec/mpegaudiodecheader.c @@ -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; +} diff --git a/libavcodec/mpegaudiodecheader.h b/libavcodec/mpegaudiodecheader.h index 5578618..aa77f01 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 */ diff --git a/libavcodec/x86/dsputil_yasm.asm b/libavcodec/x86/dsputil_yasm.asm index a41640b..695aba5 100644 --- a/libavcodec/x86/dsputil_yasm.asm +++ b/libavcodec/x86/dsputil_yasm.asm @@ -30,7 +30,7 @@ pb_zz11zz55zz99zzdd: db -1,-1,1,1,-1,-1,5,5,-1,-1,9,9,-1,-1,13,13 pb_revwords: db 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1 pd_16384: times 4 dd 16384 -section .text align=16 +SECTION_TEXT %macro SCALARPRODUCT 1 ; int scalarproduct_int16(int16_t *v1, int16_t *v2, int order, int shift) diff --git a/libavcodec/x86/fft_mmx.asm b/libavcodec/x86/fft_mmx.asm index 02b638f..2551b48 100644 --- a/libavcodec/x86/fft_mmx.asm +++ b/libavcodec/x86/fft_mmx.asm @@ -85,7 +85,7 @@ cextern cos_ %+ i %1 %endmacro -section .text align=16 +SECTION_TEXT %macro T2_3DN 4 ; z0, z1, mem0, mem1 mova %1, %3 diff --git a/libavcodec/x86/fmtconvert.asm b/libavcodec/x86/fmtconvert.asm index 171e52a..c4a9a66 100644 --- a/libavcodec/x86/fmtconvert.asm +++ b/libavcodec/x86/fmtconvert.asm @@ -22,7 +22,7 @@ %include "x86inc.asm" %include "x86util.asm" -section .text align=16 +SECTION_TEXT %macro PSWAPD_SSE 2 pshufw %1, %2, 0x4e diff --git a/libavcodec/x86/x86inc.asm b/libavcodec/x86/x86inc.asm index 53091c1..c84d556 100644 --- a/libavcodec/x86/x86inc.asm +++ b/libavcodec/x86/x86inc.asm @@ -63,11 +63,22 @@ %elifidn __OUTPUT_FORMAT__,macho SECTION .text align=%1 fakegot: + %elifidn __OUTPUT_FORMAT__,aout + section .text %else SECTION .rodata align=%1 %endif %endmacro +; aout does not support align= +%macro SECTION_TEXT 0-1 16 + %ifidn __OUTPUT_FORMAT__,aout + SECTION .text + %else + SECTION .text align=%1 + %endif +%endmacro + %ifdef WIN64 %define PIC %elifndef ARCH_X86_64 diff --git a/libavformat/mp3enc.c b/libavformat/mp3enc.c index 0824507..2775eb8 100644 --- a/libavformat/mp3enc.c +++ b/libavformat/mp3enc.c @@ -27,6 +27,7 @@ #include "libavutil/avstring.h" #include "libavutil/intreadwrite.h" #include "libavutil/opt.h" +#include "libavcodec/mpegaudio.h" #include "libavcodec/mpegaudiodata.h" #include "libavcodec/mpegaudiodecheader.h" #include "libavformat/avio_internal.h" diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index e7d7001..687057b 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -53,6 +53,7 @@ typedef struct MpegTSService { } MpegTSService; typedef struct MpegTSWrite { + const AVClass *av_class; MpegTSSection pat; /* MPEG2 pat table */ MpegTSSection sdt; /* MPEG2 sdt table context */ MpegTSService **services; diff --git a/tests/fate.sh b/tests/fate.sh index 6f0e0ff..9fd117c 100755 --- a/tests/fate.sh +++ b/tests/fate.sh @@ -75,7 +75,7 @@ clean(){ report(){ date=$(date -u +%Y%m%d%H%M%S) - echo "fate:0:${date}:${slot}:${version}:$1:$2" >report + echo "fate:0:${date}:${slot}:${version}:$1:$2:${comment}" >report cat ${build}/config.fate ${build}/tests/data/fate/*.rep >>report test -n "$fate_recv" && $tar report *.log | gzip | $fate_recv } @@ -91,8 +91,8 @@ lock ${workdir} || die "${workdir} locked" cd ${workdir} || die "cd ${workdir} failed" src=${workdir}/src -build=${workdir}/build -inst=${workdir}/install +: ${build:=${workdir}/build} +: ${inst:=${workdir}/install} test -d "$src" && update || checkout || die "Error fetching source" diff --git a/tests/regression-funcs.sh b/tests/regression-funcs.sh index b79c258..933aa64 100755 --- a/tests/regression-funcs.sh +++ b/tests/regression-funcs.sh @@ -53,7 +53,7 @@ echov(){ FFMPEG_OPTS="-v 0 -y" COMMON_OPTS="-flags +bitexact -idct simple -sws_flags +accurate_rnd+bitexact" DEC_OPTS="$COMMON_OPTS -threads $threads" -ENC_OPTS="$COMMON_OPTS -dct fastint" +ENC_OPTS="$COMMON_OPTS -threads 1 -dct fastint" run_ffmpeg() { |