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>
This commit is contained in:
commit
6d32bcd770
4
configure
vendored
4
configure
vendored
@ -1700,7 +1700,7 @@ LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
|
|||||||
|
|
||||||
CC_O='-o $@'
|
CC_O='-o $@'
|
||||||
|
|
||||||
host_cflags='-D_ISOC99_SOURCE -O3 -g -Wall'
|
host_cflags='-D_ISOC99_SOURCE -O3 -g'
|
||||||
host_libs='-lm'
|
host_libs='-lm'
|
||||||
|
|
||||||
target_path='$(CURDIR)'
|
target_path='$(CURDIR)'
|
||||||
@ -2363,6 +2363,7 @@ check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
check_host_cflags -std=c99
|
check_host_cflags -std=c99
|
||||||
|
check_host_cflags -Wall
|
||||||
|
|
||||||
case "$arch" in
|
case "$arch" in
|
||||||
alpha|ia64|mips|parisc|sparc)
|
alpha|ia64|mips|parisc|sparc)
|
||||||
@ -2504,6 +2505,7 @@ case $target_os in
|
|||||||
os/2*)
|
os/2*)
|
||||||
strip="lxlite -CS"
|
strip="lxlite -CS"
|
||||||
ln_s="cp -f"
|
ln_s="cp -f"
|
||||||
|
objformat="aout"
|
||||||
add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
|
add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
|
||||||
SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
|
SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
|
||||||
FFSERVERLDFLAGS=""
|
FFSERVERLDFLAGS=""
|
||||||
|
@ -2468,6 +2468,7 @@ static int latm_decode_frame(AVCodecContext *avctx, void *out, int *out_size,
|
|||||||
*out_size = 0;
|
*out_size = 0;
|
||||||
return avpkt->size;
|
return avpkt->size;
|
||||||
} else {
|
} else {
|
||||||
|
aac_decode_close(avctx);
|
||||||
if ((err = aac_decode_init(avctx)) < 0)
|
if ((err = aac_decode_init(avctx)) < 0)
|
||||||
return err;
|
return err;
|
||||||
latmctx->initialized = 1;
|
latmctx->initialized = 1;
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
#include "libavutil/intreadwrite.h"
|
#include "libavutil/intreadwrite.h"
|
||||||
#include "avcodec.h"
|
#include "avcodec.h"
|
||||||
#include "mpegaudio.h"
|
#include "mpegaudiodecheader.h"
|
||||||
|
|
||||||
|
|
||||||
static int mp3_header_compress(AVBitStreamFilterContext *bsfc, AVCodecContext *avctx, const char *args,
|
static int mp3_header_compress(AVBitStreamFilterContext *bsfc, AVCodecContext *avctx, const char *args,
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
#include "libavutil/intreadwrite.h"
|
#include "libavutil/intreadwrite.h"
|
||||||
#include "avcodec.h"
|
#include "avcodec.h"
|
||||||
#include "mpegaudio.h"
|
#include "mpegaudiodecheader.h"
|
||||||
#include "mpegaudiodata.h"
|
#include "mpegaudiodata.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
# define CONFIG_FLOAT 0
|
# define CONFIG_FLOAT 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "avcodec.h"
|
#include <stdint.h>
|
||||||
|
|
||||||
/* max frame size, in samples */
|
/* max frame size, in samples */
|
||||||
#define MPA_FRAME_SIZE 1152
|
#define MPA_FRAME_SIZE 1152
|
||||||
@ -47,8 +47,6 @@
|
|||||||
#define MPA_DUAL 2
|
#define MPA_DUAL 2
|
||||||
#define MPA_MONO 3
|
#define MPA_MONO 3
|
||||||
|
|
||||||
#define MP3_MASK 0xFFFE0CCF
|
|
||||||
|
|
||||||
#ifndef FRAC_BITS
|
#ifndef FRAC_BITS
|
||||||
#define FRAC_BITS 23 /* fractional bits for sb_samples and dct */
|
#define FRAC_BITS 23 /* fractional bits for sb_samples and dct */
|
||||||
#define WFRAC_BITS 16 /* fractional bits for window */
|
#define WFRAC_BITS 16 /* fractional bits for window */
|
||||||
@ -72,40 +70,6 @@ typedef int32_t MPA_INT;
|
|||||||
typedef int16_t OUT_INT;
|
typedef int16_t OUT_INT;
|
||||||
#endif
|
#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_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 */
|
#endif /* AVCODEC_MPEGAUDIO_H */
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "parser.h"
|
#include "parser.h"
|
||||||
#include "mpegaudio.h"
|
|
||||||
#include "mpegaudiodecheader.h"
|
#include "mpegaudiodecheader.h"
|
||||||
|
|
||||||
|
|
||||||
@ -38,45 +37,6 @@ typedef struct MpegAudioParseContext {
|
|||||||
#define SAME_HEADER_MASK \
|
#define SAME_HEADER_MASK \
|
||||||
(0xffe00000 | (3 << 17) | (3 << 10) | (3 << 19))
|
(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,
|
static int mpegaudio_parse(AVCodecParserContext *s1,
|
||||||
AVCodecContext *avctx,
|
AVCodecContext *avctx,
|
||||||
const uint8_t **poutbuf, int *poutbuf_size,
|
const uint8_t **poutbuf, int *poutbuf_size,
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#ifndef AVCODEC_MPEGAUDIODATA_H
|
#ifndef AVCODEC_MPEGAUDIODATA_H
|
||||||
#define AVCODEC_MPEGAUDIODATA_H
|
#define AVCODEC_MPEGAUDIODATA_H
|
||||||
|
|
||||||
#include "libavutil/common.h"
|
#include <stdint.h>
|
||||||
|
|
||||||
#define MODE_EXT_MS_STEREO 2
|
#define MODE_EXT_MS_STEREO 2
|
||||||
#define MODE_EXT_I_STEREO 1
|
#define MODE_EXT_I_STEREO 1
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
#include "libavutil/audioconvert.h"
|
#include "libavutil/audioconvert.h"
|
||||||
#include "avcodec.h"
|
#include "avcodec.h"
|
||||||
#include "get_bits.h"
|
#include "get_bits.h"
|
||||||
#include "dsputil.h"
|
|
||||||
#include "mathops.h"
|
#include "mathops.h"
|
||||||
#include "mpegaudiodsp.h"
|
#include "mpegaudiodsp.h"
|
||||||
|
|
||||||
|
@ -108,3 +108,40 @@ int ff_mpegaudio_decode_header(MPADecodeHeader *s, uint32_t header)
|
|||||||
#endif
|
#endif
|
||||||
return 0;
|
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;
|
||||||
|
}
|
||||||
|
@ -27,13 +27,50 @@
|
|||||||
#ifndef AVCODEC_MPEGAUDIODECHEADER_H
|
#ifndef AVCODEC_MPEGAUDIODECHEADER_H
|
||||||
#define AVCODEC_MPEGAUDIODECHEADER_H
|
#define AVCODEC_MPEGAUDIODECHEADER_H
|
||||||
|
|
||||||
#include "libavutil/common.h"
|
#include "avcodec.h"
|
||||||
#include "mpegaudio.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
|
/* header decoding. MUST check the header before because no
|
||||||
consistency check is done there. Return 1 if free format found and
|
consistency check is done there. Return 1 if free format found and
|
||||||
that the frame size must be computed externally */
|
that the frame size must be computed externally */
|
||||||
int ff_mpegaudio_decode_header(MPADecodeHeader *s, uint32_t header);
|
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 */
|
#endif /* AVCODEC_MPEGAUDIODECHEADER_H */
|
||||||
|
@ -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
|
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
|
pd_16384: times 4 dd 16384
|
||||||
|
|
||||||
section .text align=16
|
SECTION_TEXT
|
||||||
|
|
||||||
%macro SCALARPRODUCT 1
|
%macro SCALARPRODUCT 1
|
||||||
; int scalarproduct_int16(int16_t *v1, int16_t *v2, int order, int shift)
|
; int scalarproduct_int16(int16_t *v1, int16_t *v2, int order, int shift)
|
||||||
|
@ -85,7 +85,7 @@ cextern cos_ %+ i
|
|||||||
%1
|
%1
|
||||||
%endmacro
|
%endmacro
|
||||||
|
|
||||||
section .text align=16
|
SECTION_TEXT
|
||||||
|
|
||||||
%macro T2_3DN 4 ; z0, z1, mem0, mem1
|
%macro T2_3DN 4 ; z0, z1, mem0, mem1
|
||||||
mova %1, %3
|
mova %1, %3
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
%include "x86inc.asm"
|
%include "x86inc.asm"
|
||||||
%include "x86util.asm"
|
%include "x86util.asm"
|
||||||
|
|
||||||
section .text align=16
|
SECTION_TEXT
|
||||||
|
|
||||||
%macro PSWAPD_SSE 2
|
%macro PSWAPD_SSE 2
|
||||||
pshufw %1, %2, 0x4e
|
pshufw %1, %2, 0x4e
|
||||||
|
@ -63,11 +63,22 @@
|
|||||||
%elifidn __OUTPUT_FORMAT__,macho
|
%elifidn __OUTPUT_FORMAT__,macho
|
||||||
SECTION .text align=%1
|
SECTION .text align=%1
|
||||||
fakegot:
|
fakegot:
|
||||||
|
%elifidn __OUTPUT_FORMAT__,aout
|
||||||
|
section .text
|
||||||
%else
|
%else
|
||||||
SECTION .rodata align=%1
|
SECTION .rodata align=%1
|
||||||
%endif
|
%endif
|
||||||
%endmacro
|
%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
|
%ifdef WIN64
|
||||||
%define PIC
|
%define PIC
|
||||||
%elifndef ARCH_X86_64
|
%elifndef ARCH_X86_64
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "libavutil/avstring.h"
|
#include "libavutil/avstring.h"
|
||||||
#include "libavutil/intreadwrite.h"
|
#include "libavutil/intreadwrite.h"
|
||||||
#include "libavutil/opt.h"
|
#include "libavutil/opt.h"
|
||||||
|
#include "libavcodec/mpegaudio.h"
|
||||||
#include "libavcodec/mpegaudiodata.h"
|
#include "libavcodec/mpegaudiodata.h"
|
||||||
#include "libavcodec/mpegaudiodecheader.h"
|
#include "libavcodec/mpegaudiodecheader.h"
|
||||||
#include "libavformat/avio_internal.h"
|
#include "libavformat/avio_internal.h"
|
||||||
|
@ -53,6 +53,7 @@ typedef struct MpegTSService {
|
|||||||
} MpegTSService;
|
} MpegTSService;
|
||||||
|
|
||||||
typedef struct MpegTSWrite {
|
typedef struct MpegTSWrite {
|
||||||
|
const AVClass *av_class;
|
||||||
MpegTSSection pat; /* MPEG2 pat table */
|
MpegTSSection pat; /* MPEG2 pat table */
|
||||||
MpegTSSection sdt; /* MPEG2 sdt table context */
|
MpegTSSection sdt; /* MPEG2 sdt table context */
|
||||||
MpegTSService **services;
|
MpegTSService **services;
|
||||||
|
@ -75,7 +75,7 @@ clean(){
|
|||||||
|
|
||||||
report(){
|
report(){
|
||||||
date=$(date -u +%Y%m%d%H%M%S)
|
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
|
cat ${build}/config.fate ${build}/tests/data/fate/*.rep >>report
|
||||||
test -n "$fate_recv" && $tar report *.log | gzip | $fate_recv
|
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"
|
cd ${workdir} || die "cd ${workdir} failed"
|
||||||
|
|
||||||
src=${workdir}/src
|
src=${workdir}/src
|
||||||
build=${workdir}/build
|
: ${build:=${workdir}/build}
|
||||||
inst=${workdir}/install
|
: ${inst:=${workdir}/install}
|
||||||
|
|
||||||
test -d "$src" && update || checkout || die "Error fetching source"
|
test -d "$src" && update || checkout || die "Error fetching source"
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ echov(){
|
|||||||
FFMPEG_OPTS="-v 0 -y"
|
FFMPEG_OPTS="-v 0 -y"
|
||||||
COMMON_OPTS="-flags +bitexact -idct simple -sws_flags +accurate_rnd+bitexact"
|
COMMON_OPTS="-flags +bitexact -idct simple -sws_flags +accurate_rnd+bitexact"
|
||||||
DEC_OPTS="$COMMON_OPTS -threads $threads"
|
DEC_OPTS="$COMMON_OPTS -threads $threads"
|
||||||
ENC_OPTS="$COMMON_OPTS -dct fastint"
|
ENC_OPTS="$COMMON_OPTS -threads 1 -dct fastint"
|
||||||
|
|
||||||
run_ffmpeg()
|
run_ffmpeg()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user