Commit 2fd41c90 authored by Michael Niedermayer's avatar Michael Niedermayer

Merge remote-tracking branch 'newdev/master'

* newdev/master:
  avio: make udp_set_remote_url/get_local_port internal.
  asfdec: also subtract preroll when reading simple index object
  matroskaenc: remove a variable that's unused after bc17bd90.
  avio: cosmetics - nicer vertical alignment.
  Remove unnecessary icc version checks
  Disable 'attribute "foo" ignored' warnings from icc
  rtsp: Don't use a locale dependent format string
  Add xd55 codec tag for XDCAM HD422 720p25 CBR files.
  configure: get libavcodec version from new version.h header
  lavc: move the version macros to a new installed header.
  matroskaenc: simplify get_aac_sample_rates by using ff_mpeg4audio_get_config
  Do not use format string "%0.3f" for RTSP Range field.
  Add apply_window_int16() to DSPContext with x86-optimized versions and use it in the ac3_fixed encoder.
  Document usage of import libraries created by dlltool
  configure: Set the correct lib target for arm/wince dlltool
  fate: simplify regression-funcs.sh
  fate: add support for multithread testing

Conflicts:
	libavformat/rtspdec.c
	libavutil/attributes.h
	libavutil/internal.h
	libavutil/mem.h
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents 00dc0206 4ec153bb
...@@ -290,7 +290,7 @@ fate: $(FATE) ...@@ -290,7 +290,7 @@ fate: $(FATE)
$(FATE): ffmpeg$(EXESUF) $(FATE_UTILS:%=tests/%$(HOSTEXESUF)) $(FATE): ffmpeg$(EXESUF) $(FATE_UTILS:%=tests/%$(HOSTEXESUF))
@echo "TEST $(@:fate-%=%)" @echo "TEST $(@:fate-%=%)"
$(Q)$(SRC_PATH)/tests/fate-run.sh $@ "$(SAMPLES)" "$(TARGET_EXEC)" "$(TARGET_PATH)" '$(CMD)' '$(CMP)' '$(REF)' '$(FUZZ)' $(Q)$(SRC_PATH)/tests/fate-run.sh $@ "$(SAMPLES)" "$(TARGET_EXEC)" "$(TARGET_PATH)" '$(CMD)' '$(CMP)' '$(REF)' '$(FUZZ)' '$(THREADS)'
fate-list: fate-list:
@printf '%s\n' $(sort $(FATE)) @printf '%s\n' $(sort $(FATE))
......
...@@ -2424,7 +2424,7 @@ case $target_os in ...@@ -2424,7 +2424,7 @@ case $target_os in
enable malloc_aligned enable malloc_aligned
LIBTARGET="i386:x86-64" LIBTARGET="i386:x86-64"
elif enabled arm; then elif enabled arm; then
LIBTARGET=arm LIBTARGET=arm-wince
fi fi
shlibdir_default="$bindir_default" shlibdir_default="$bindir_default"
disable ffserver disable ffserver
...@@ -3009,10 +3009,11 @@ if enabled icc; then ...@@ -3009,10 +3009,11 @@ if enabled icc; then
check_cflags -w1 check_cflags -w1
# -wd: Disable following warnings # -wd: Disable following warnings
# 144, 167, 556: -Wno-pointer-sign # 144, 167, 556: -Wno-pointer-sign
# 1292: attribute "foo" ignored
# 10006: ignoring unknown option -fno-signed-zeros # 10006: ignoring unknown option -fno-signed-zeros
# 10148: ignoring unknown option -Wno-parentheses # 10148: ignoring unknown option -Wno-parentheses
# 10156: ignoring option '-W'; no argument required # 10156: ignoring option '-W'; no argument required
check_cflags -wd144,167,556,10006,10148,10156 check_cflags -wd144,167,556,1292,10006,10148,10156
# 11030: Warning unknown option --as-needed # 11030: Warning unknown option --as-needed
# 10156: ignoring option '-export'; no argument required # 10156: ignoring option '-export'; no argument required
check_ldflags -wd10156,11030 check_ldflags -wd10156,11030
...@@ -3310,7 +3311,7 @@ get_version(){ ...@@ -3310,7 +3311,7 @@ get_version(){
get_version LIBSWSCALE libswscale/swscale.h get_version LIBSWSCALE libswscale/swscale.h
get_version LIBPOSTPROC libpostproc/postprocess.h get_version LIBPOSTPROC libpostproc/postprocess.h
get_version LIBAVCODEC libavcodec/avcodec.h get_version LIBAVCODEC libavcodec/version.h
get_version LIBAVDEVICE libavdevice/avdevice.h get_version LIBAVDEVICE libavdevice/avdevice.h
get_version LIBAVFORMAT libavformat/version.h get_version LIBAVFORMAT libavformat/version.h
get_version LIBAVUTIL libavutil/avutil.h get_version LIBAVUTIL libavutil/avutil.h
......
...@@ -1009,6 +1009,12 @@ libavutil/pixdesc.h you should have: ...@@ -1009,6 +1009,12 @@ libavutil/pixdesc.h you should have:
extern __declspec(dllimport) const AVPixFmtDescriptor av_pix_fmt_descriptors[]; extern __declspec(dllimport) const AVPixFmtDescriptor av_pix_fmt_descriptors[];
@end example @end example
Note that using import libraries created by dlltool requires
the linker optimization option to be set to
"References: Keep Unreferenced Data (/OPT:NOREF)", otherwise
the resulting binaries will fail during runtime. This isn't
required when using import libraries generated by lib.exe.
@subsection Cross compilation for Windows with Linux @subsection Cross compilation for Windows with Linux
You must use the MinGW cross compilation tools available at You must use the MinGW cross compilation tools available at
......
...@@ -433,9 +433,9 @@ set the time to live value (for multicast only) ...@@ -433,9 +433,9 @@ set the time to live value (for multicast only)
@item connect=@var{1|0} @item connect=@var{1|0}
Initialize the UDP socket with @code{connect()}. In this case, the Initialize the UDP socket with @code{connect()}. In this case, the
destination address can't be changed with udp_set_remote_url later. destination address can't be changed with ff_udp_set_remote_url later.
If the destination address isn't known at the start, this option can If the destination address isn't known at the start, this option can
be specified in udp_set_remote_url, too. be specified in ff_udp_set_remote_url, too.
This allows finding out the source address for the packets with getsockname, This allows finding out the source address for the packets with getsockname,
and makes writes return with AVERROR(ECONNREFUSED) if "destination and makes writes return with AVERROR(ECONNREFUSED) if "destination
unreachable" is received. unreachable" is received.
......
...@@ -3,7 +3,7 @@ include $(SUBDIR)../config.mak ...@@ -3,7 +3,7 @@ include $(SUBDIR)../config.mak
NAME = avcodec NAME = avcodec
FFLIBS = avutil FFLIBS = avutil
HEADERS = avcodec.h avfft.h dxva2.h opt.h vaapi.h vdpau.h xvmc.h HEADERS = avcodec.h avfft.h dxva2.h opt.h vaapi.h vdpau.h version.h xvmc.h
OBJS = allcodecs.o \ OBJS = allcodecs.o \
audioconvert.o \ audioconvert.o \
......
...@@ -167,7 +167,7 @@ static av_cold int mdct_init(AVCodecContext *avctx, AC3MDCTContext *mdct, ...@@ -167,7 +167,7 @@ static av_cold int mdct_init(AVCodecContext *avctx, AC3MDCTContext *mdct,
static void mdct512(AC3MDCTContext *mdct, CoefType *out, SampleType *in); static void mdct512(AC3MDCTContext *mdct, CoefType *out, SampleType *in);
static void apply_window(DSPContext *dsp, SampleType *output, const SampleType *input, static void apply_window(DSPContext *dsp, SampleType *output, const SampleType *input,
const SampleType *window, int n); const SampleType *window, unsigned int len);
static int normalize_samples(AC3EncodeContext *s); static int normalize_samples(AC3EncodeContext *s);
......
...@@ -252,15 +252,9 @@ static void mdct512(AC3MDCTContext *mdct, int32_t *out, int16_t *in) ...@@ -252,15 +252,9 @@ static void mdct512(AC3MDCTContext *mdct, int32_t *out, int16_t *in)
* Apply KBD window to input samples prior to MDCT. * Apply KBD window to input samples prior to MDCT.
*/ */
static void apply_window(DSPContext *dsp, int16_t *output, const int16_t *input, static void apply_window(DSPContext *dsp, int16_t *output, const int16_t *input,
const int16_t *window, int n) const int16_t *window, unsigned int len)
{ {
int i; dsp->apply_window_int16(output, input, window, len);
int n2 = n >> 1;
for (i = 0; i < n2; i++) {
output[i] = MUL16(input[i], window[i]) >> 15;
output[n-i-1] = MUL16(input[n-i-1], window[i]) >> 15;
}
} }
......
...@@ -83,9 +83,9 @@ static void mdct512(AC3MDCTContext *mdct, float *out, float *in) ...@@ -83,9 +83,9 @@ static void mdct512(AC3MDCTContext *mdct, float *out, float *in)
* Apply KBD window to input samples prior to MDCT. * Apply KBD window to input samples prior to MDCT.
*/ */
static void apply_window(DSPContext *dsp, float *output, const float *input, static void apply_window(DSPContext *dsp, float *output, const float *input,
const float *window, int n) const float *window, unsigned int len)
{ {
dsp->vector_fmul(output, input, window, n); dsp->vector_fmul(output, input, window, len);
} }
......
...@@ -141,7 +141,7 @@ const uint8_t ff_ac3_rematrix_band_tab[5] = { 13, 25, 37, 61, 253 }; ...@@ -141,7 +141,7 @@ const uint8_t ff_ac3_rematrix_band_tab[5] = { 13, 25, 37, 61, 253 };
/* AC-3 MDCT window */ /* AC-3 MDCT window */
/* MDCT window */ /* MDCT window */
const int16_t ff_ac3_window[AC3_WINDOW_SIZE/2] = { DECLARE_ALIGNED(16, const int16_t, ff_ac3_window)[AC3_WINDOW_SIZE/2] = {
4, 7, 12, 16, 21, 28, 34, 42, 4, 7, 12, 16, 21, 28, 34, 42,
51, 61, 72, 84, 97, 111, 127, 145, 51, 61, 72, 84, 97, 111, 127, 145,
164, 184, 207, 231, 257, 285, 315, 347, 164, 184, 207, 231, 257, 285, 315, 347,
......
...@@ -31,57 +31,7 @@ ...@@ -31,57 +31,7 @@
#include "libavutil/avutil.h" #include "libavutil/avutil.h"
#include "libavutil/cpu.h" #include "libavutil/cpu.h"
#define LIBAVCODEC_VERSION_MAJOR 52 #include "libavcodec/version.h"
#define LIBAVCODEC_VERSION_MINOR 114
#define LIBAVCODEC_VERSION_MICRO 0
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \
LIBAVCODEC_VERSION_MICRO)
#define LIBAVCODEC_VERSION AV_VERSION(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \
LIBAVCODEC_VERSION_MICRO)
#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT
#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
/**
* Those FF_API_* defines are not part of public API.
* They may change, break or disappear at any time.
*/
#ifndef FF_API_PALETTE_CONTROL
#define FF_API_PALETTE_CONTROL (LIBAVCODEC_VERSION_MAJOR < 54)
#endif
#ifndef FF_API_MM_FLAGS
#define FF_API_MM_FLAGS (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_OPT_SHOW
#define FF_API_OPT_SHOW (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_AUDIO_OLD
#define FF_API_AUDIO_OLD (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_VIDEO_OLD
#define FF_API_VIDEO_OLD (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_SUBTITLE_OLD
#define FF_API_SUBTITLE_OLD (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_USE_LPC
#define FF_API_USE_LPC (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_SET_STRING_OLD
#define FF_API_SET_STRING_OLD (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_INOFFICIAL
#define FF_API_INOFFICIAL (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_OLD_SAMPLE_FMT
#define FF_API_OLD_SAMPLE_FMT (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_OLD_AUDIOCONVERT
#define FF_API_OLD_AUDIOCONVERT (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#if LIBAVCODEC_VERSION_MAJOR < 53 #if LIBAVCODEC_VERSION_MAJOR < 53
# define FF_INTERNALC_MEM_TYPE unsigned int # define FF_INTERNALC_MEM_TYPE unsigned int
......
...@@ -3895,6 +3895,19 @@ static int32_t scalarproduct_and_madd_int16_c(int16_t *v1, const int16_t *v2, co ...@@ -3895,6 +3895,19 @@ static int32_t scalarproduct_and_madd_int16_c(int16_t *v1, const int16_t *v2, co
return res; return res;
} }
static void apply_window_int16_c(int16_t *output, const int16_t *input,
const int16_t *window, unsigned int len)
{
int i;
int len2 = len >> 1;
for (i = 0; i < len2; i++) {
int16_t w = window[i];
output[i] = (MUL16(input[i], w) + (1 << 14)) >> 15;
output[len-i-1] = (MUL16(input[len-i-1], w) + (1 << 14)) >> 15;
}
}
#define W0 2048 #define W0 2048
#define W1 2841 /* 2048*sqrt (2)*cos (1*pi/16) */ #define W1 2841 /* 2048*sqrt (2)*cos (1*pi/16) */
#define W2 2676 /* 2048*sqrt (2)*cos (2*pi/16) */ #define W2 2676 /* 2048*sqrt (2)*cos (2*pi/16) */
...@@ -4369,6 +4382,7 @@ av_cold void dsputil_init(DSPContext* c, AVCodecContext *avctx) ...@@ -4369,6 +4382,7 @@ av_cold void dsputil_init(DSPContext* c, AVCodecContext *avctx)
c->vector_clipf = vector_clipf_c; c->vector_clipf = vector_clipf_c;
c->scalarproduct_int16 = scalarproduct_int16_c; c->scalarproduct_int16 = scalarproduct_int16_c;
c->scalarproduct_and_madd_int16 = scalarproduct_and_madd_int16_c; c->scalarproduct_and_madd_int16 = scalarproduct_and_madd_int16_c;
c->apply_window_int16 = apply_window_int16_c;
c->scalarproduct_float = scalarproduct_float_c; c->scalarproduct_float = scalarproduct_float_c;
c->butterflies_float = butterflies_float_c; c->butterflies_float = butterflies_float_c;
c->vector_fmul_scalar = vector_fmul_scalar_c; c->vector_fmul_scalar = vector_fmul_scalar_c;
......
...@@ -526,6 +526,20 @@ typedef struct DSPContext { ...@@ -526,6 +526,20 @@ typedef struct DSPContext {
*/ */
int32_t (*scalarproduct_and_madd_int16)(int16_t *v1/*align 16*/, const int16_t *v2, const int16_t *v3, int len, int mul); int32_t (*scalarproduct_and_madd_int16)(int16_t *v1/*align 16*/, const int16_t *v2, const int16_t *v3, int len, int mul);
/**
* Apply symmetric window in 16-bit fixed-point.
* @param output destination array
* constraints: 16-byte aligned
* @param input source array
* constraints: 16-byte aligned
* @param window window array
* constraints: 16-byte aligned, at least len/2 elements
* @param len full window length
* constraints: multiple of ? greater than zero
*/
void (*apply_window_int16)(int16_t *output, const int16_t *input,
const int16_t *window, unsigned int len);
/* rv30 functions */ /* rv30 functions */
qpel_mc_func put_rv30_tpel_pixels_tab[4][16]; qpel_mc_func put_rv30_tpel_pixels_tab[4][16];
qpel_mc_func avg_rv30_tpel_pixels_tab[4][16]; qpel_mc_func avg_rv30_tpel_pixels_tab[4][16];
......
/*
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef AVCODEC_VERSION_H
#define AVCODEC_VERSION_H
#define LIBAVCODEC_VERSION_MAJOR 52
#define LIBAVCODEC_VERSION_MINOR 114
#define LIBAVCODEC_VERSION_MICRO 0
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \
LIBAVCODEC_VERSION_MICRO)
#define LIBAVCODEC_VERSION AV_VERSION(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \
LIBAVCODEC_VERSION_MICRO)
#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT
#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
/**
* Those FF_API_* defines are not part of public API.
* They may change, break or disappear at any time.
*/
#ifndef FF_API_PALETTE_CONTROL
#define FF_API_PALETTE_CONTROL (LIBAVCODEC_VERSION_MAJOR < 54)
#endif
#ifndef FF_API_MM_FLAGS
#define FF_API_MM_FLAGS (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_OPT_SHOW
#define FF_API_OPT_SHOW (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_AUDIO_OLD
#define FF_API_AUDIO_OLD (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_VIDEO_OLD
#define FF_API_VIDEO_OLD (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_SUBTITLE_OLD
#define FF_API_SUBTITLE_OLD (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_USE_LPC
#define FF_API_USE_LPC (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_SET_STRING_OLD
#define FF_API_SET_STRING_OLD (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_INOFFICIAL
#define FF_API_INOFFICIAL (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_OLD_SAMPLE_FMT
#define FF_API_OLD_SAMPLE_FMT (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_OLD_AUDIOCONVERT
#define FF_API_OLD_AUDIOCONVERT (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#endif /* AVCODEC_VERSION_H */
...@@ -2393,6 +2393,20 @@ int32_t ff_scalarproduct_int16_sse2(const int16_t *v1, const int16_t *v2, int or ...@@ -2393,6 +2393,20 @@ int32_t ff_scalarproduct_int16_sse2(const int16_t *v1, const int16_t *v2, int or
int32_t ff_scalarproduct_and_madd_int16_mmx2(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul); int32_t ff_scalarproduct_and_madd_int16_mmx2(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul);
int32_t ff_scalarproduct_and_madd_int16_sse2(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul); int32_t ff_scalarproduct_and_madd_int16_sse2(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul);
int32_t ff_scalarproduct_and_madd_int16_ssse3(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul); int32_t ff_scalarproduct_and_madd_int16_ssse3(int16_t *v1, const int16_t *v2, const int16_t *v3, int order, int mul);
void ff_apply_window_int16_mmxext (int16_t *output, const int16_t *input,
const int16_t *window, unsigned int len);
void ff_apply_window_int16_mmxext_ba (int16_t *output, const int16_t *input,
const int16_t *window, unsigned int len);
void ff_apply_window_int16_sse2 (int16_t *output, const int16_t *input,
const int16_t *window, unsigned int len);
void ff_apply_window_int16_sse2_ba (int16_t *output, const int16_t *input,
const int16_t *window, unsigned int len);
void ff_apply_window_int16_ssse3 (int16_t *output, const int16_t *input,
const int16_t *window, unsigned int len);
void ff_apply_window_int16_ssse3_atom(int16_t *output, const int16_t *input,
const int16_t *window, unsigned int len);
void ff_add_hfyu_median_prediction_mmx2(uint8_t *dst, const uint8_t *top, const uint8_t *diff, int w, int *left, int *left_top); void ff_add_hfyu_median_prediction_mmx2(uint8_t *dst, const uint8_t *top, const uint8_t *diff, int w, int *left, int *left_top);
int ff_add_hfyu_left_prediction_ssse3(uint8_t *dst, const uint8_t *src, int w, int left); int ff_add_hfyu_left_prediction_ssse3(uint8_t *dst, const uint8_t *src, int w, int left);
int ff_add_hfyu_left_prediction_sse4(uint8_t *dst, const uint8_t *src, int w, int left); int ff_add_hfyu_left_prediction_sse4(uint8_t *dst, const uint8_t *src, int w, int left);
...@@ -2754,6 +2768,11 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx) ...@@ -2754,6 +2768,11 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx)
#if HAVE_YASM #if HAVE_YASM
c->scalarproduct_int16 = ff_scalarproduct_int16_mmx2; c->scalarproduct_int16 = ff_scalarproduct_int16_mmx2;
c->scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_mmx2; c->scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_mmx2;
if (avctx->flags & CODEC_FLAG_BITEXACT) {
c->apply_window_int16 = ff_apply_window_int16_mmxext_ba;
} else {
c->apply_window_int16 = ff_apply_window_int16_mmxext;
}
#endif #endif
} }
if(mm_flags & AV_CPU_FLAG_SSE){ if(mm_flags & AV_CPU_FLAG_SSE){
...@@ -2776,13 +2795,30 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx) ...@@ -2776,13 +2795,30 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx)
#if HAVE_YASM #if HAVE_YASM
c->scalarproduct_int16 = ff_scalarproduct_int16_sse2; c->scalarproduct_int16 = ff_scalarproduct_int16_sse2;
c->scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_sse2; c->scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_sse2;
if (avctx->flags & CODEC_FLAG_BITEXACT) {
c->apply_window_int16 = ff_apply_window_int16_sse2_ba;
} else {
if (!(mm_flags & AV_CPU_FLAG_SSE2SLOW)) {
c->apply_window_int16 = ff_apply_window_int16_sse2;
}
}
c->emulated_edge_mc = emulated_edge_mc_sse; c->emulated_edge_mc = emulated_edge_mc_sse;
c->gmc= gmc_sse; c->gmc= gmc_sse;
#endif #endif
} }
if((mm_flags & AV_CPU_FLAG_SSSE3) && !(mm_flags & (AV_CPU_FLAG_SSE42|AV_CPU_FLAG_3DNOW)) && HAVE_YASM) // cachesplit if (mm_flags & AV_CPU_FLAG_SSSE3) {
c->scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_ssse3; #if HAVE_YASM
if (mm_flags & AV_CPU_FLAG_ATOM) {
c->apply_window_int16 = ff_apply_window_int16_ssse3_atom;
} else {
c->apply_window_int16 = ff_apply_window_int16_ssse3;
}
if (!(mm_flags & (AV_CPU_FLAG_SSE42|AV_CPU_FLAG_3DNOW))) { // cachesplit
c->scalarproduct_and_madd_int16 = ff_scalarproduct_and_madd_int16_ssse3;
}
#endif
}
} }
if (CONFIG_ENCODERS) if (CONFIG_ENCODERS)
......
...@@ -27,6 +27,8 @@ pb_zzzzzzzz77777777: times 8 db -1 ...@@ -27,6 +27,8 @@ pb_zzzzzzzz77777777: times 8 db -1
pb_7: times 8 db 7 pb_7: times 8 db 7
pb_zzzz3333zzzzbbbb: db -1,-1,-1,-1,3,3,3,3,-1,-1,-1,-1,11,11,11,11 pb_zzzz3333zzzzbbbb: db -1,-1,-1,-1,3,3,3,3,-1,-1,-1,-1,11,11,11,11
pb_zz11zz55zz99zzdd: db -1,-1,1,1,-1,-1,5,5,-1,-1,9,9,-1,-1,13,13 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 align=16
...@@ -202,6 +204,130 @@ SCALARPRODUCT_LOOP 0 ...@@ -202,6 +204,130 @@ SCALARPRODUCT_LOOP 0
RET RET
;-----------------------------------------------------------------------------
; void ff_apply_window_int16(int16_t *output, const int16_t *input,
; const int16_t *window, unsigned int len)
;-----------------------------------------------------------------------------
%macro REVERSE_WORDS_MMXEXT 1-2
pshufw %1, %1, 0x1B
%endmacro
%macro REVERSE_WORDS_SSE2 1-2
pshuflw %1, %1, 0x1B
pshufhw %1, %1, 0x1B
pshufd %1, %1, 0x4E
%endmacro
%macro REVERSE_WORDS_SSSE3 2
pshufb %1, %2
%endmacro
; dst = (dst * src) >> 15
; pmulhw cuts off the bottom bit, so we have to lshift by 1 and add it back
; in from the pmullw result.
%macro MUL16FIXED_MMXEXT 3 ; dst, src, temp
mova %3, %1
pmulhw %1, %2
pmullw %3, %2
psrlw %3, 15
psllw %1, 1
por %1, %3
%endmacro
; dst = ((dst * src) + (1<<14)) >> 15
%macro MUL16FIXED_SSSE3 3 ; dst, src, unused
pmulhrsw %1, %2
%endmacro
%macro APPLY_WINDOW_INT16 3 ; %1=instruction set, %2=mmxext/sse2 bit exact version, %3=has_ssse3
cglobal apply_window_int16_%1, 4,5,6, output, input, window, offset, offset2
lea offset2q, [offsetq-mmsize]
%if %2
mova m5, [pd_16384]
%elifidn %1, ssse3
mova m5, [pb_revwords]
ALIGN 16
%endif
.loop:
%if %2
; This version expands 16-bit to 32-bit, multiplies by the window,
; adds 16384 for rounding, right shifts 15, then repacks back to words to
; save to the output. The window is reversed for the second half.
mova m3, [windowq+offset2q]
mova m4, [ inputq+offset2q]
pxor m0, m0
punpcklwd m0, m3
punpcklwd m1, m4
pmaddwd m0, m1
paddd m0, m5
psrad m0, 15
pxor m2, m2
punpckhwd m2, m3
punpckhwd m1, m4
pmaddwd m2, m1
paddd m2, m5
psrad m2, 15
packssdw m0, m2
mova [outputq+offset2q], m0
REVERSE_WORDS m3
mova m4, [ inputq+offsetq]
pxor m0, m0
punpcklwd m0, m3
punpcklwd m1, m4
pmaddwd m0, m1
paddd m0, m5
psrad m0, 15
pxor m2, m2
punpckhwd m2, m3
punpckhwd m1, m4
pmaddwd m2, m1
paddd m2, m5
psrad m2, 15
packssdw m0, m2
mova [outputq+offsetq], m0
%elif %3
; This version does the 16x16->16 multiplication in-place without expanding
; to 32-bit. The ssse3 version is bit-identical.
mova m0, [windowq+offset2q]
mova m1, [ inputq+offset2q]
pmulhrsw m1, m0
REVERSE_WORDS m0, m5
pmulhrsw m0, [ inputq+offsetq ]
mova [outputq+offset2q], m1
mova [outputq+offsetq ], m0
%else
; This version does the 16x16->16 multiplication in-place without expanding
; to 32-bit. The mmxext and sse2 versions do not use rounding, and
; therefore are not bit-identical to the C version.
mova m0, [windowq+offset2q]
mova m1, [ inputq+offset2q]
mova m2, [ inputq+offsetq ]
MUL16FIXED m1, m0, m3
REVERSE_WORDS m0
MUL16FIXED m2, m0, m3
mova [outputq+offset2q], m1
mova [outputq+offsetq ], m2
%endif
add offsetd, mmsize
sub offset2d, mmsize
jae .loop
REP_RET
%endmacro
INIT_MMX
%define REVERSE_WORDS REVERSE_WORDS_MMXEXT
%define MUL16FIXED MUL16FIXED_MMXEXT
APPLY_WINDOW_INT16 mmxext, 0, 0
APPLY_WINDOW_INT16 mmxext_ba, 1, 0
INIT_XMM
%define REVERSE_WORDS REVERSE_WORDS_SSE2
APPLY_WINDOW_INT16 sse2, 0, 0
APPLY_WINDOW_INT16 sse2_ba, 1, 0
APPLY_WINDOW_INT16 ssse3_atom, 0, 1
%define REVERSE_WORDS REVERSE_WORDS_SSSE3
APPLY_WINDOW_INT16 ssse3, 0, 1
; void add_hfyu_median_prediction_mmx2(uint8_t *dst, const uint8_t *top, const uint8_t *diff, int w, int *left, int *left_top) ; void add_hfyu_median_prediction_mmx2(uint8_t *dst, const uint8_t *top, const uint8_t *diff, int w, int *left, int *left_top)
cglobal add_hfyu_median_prediction_mmx2, 6,6,0, dst, top, diff, w, left, left_top cglobal add_hfyu_median_prediction_mmx2, 6,6,0, dst, top, diff, w, left, left_top
......
...@@ -1217,10 +1217,10 @@ static void asf_build_simple_index(AVFormatContext *s, int stream_index) ...@@ -1217,10 +1217,10 @@ static void asf_build_simple_index(AVFormatContext *s, int stream_index)
int pktnum=avio_rl32(s->pb); int pktnum=avio_rl32(s->pb);
int pktct =avio_rl16(s->pb); int pktct =avio_rl16(s->pb);
int64_t pos = s->data_offset + s->packet_size*(int64_t)pktnum; int64_t pos = s->data_offset + s->packet_size*(int64_t)pktnum;
int64_t index_pts= av_rescale(itime, i, 10000); int64_t index_pts= FFMAX(av_rescale(itime, i, 10000) - asf->hdr.preroll, 0);
if(pos != last_pos){ if(pos != last_pos){
av_log(s, AV_LOG_DEBUG, "pktnum:%d, pktct:%d\n", pktnum, pktct); av_log(s, AV_LOG_DEBUG, "pktnum:%d, pktct:%d pts: %"PRId64"\n", pktnum, pktct, index_pts);
av_add_index_entry(s->streams[stream_index], pos, index_pts, s->packet_size, 0, AVINDEX_KEYFRAME); av_add_index_entry(s->streams[stream_index], pos, index_pts, s->packet_size, 0, AVINDEX_KEYFRAME);
last_pos=pos; last_pos=pos;
} }
......
...@@ -416,7 +416,7 @@ attribute_deprecated void put_tag(AVIOContext *s, const char *tag); ...@@ -416,7 +416,7 @@ attribute_deprecated void put_tag(AVIOContext *s, const char *tag);
*/ */
attribute_deprecated int av_url_read_fpause(AVIOContext *h, int pause); attribute_deprecated int av_url_read_fpause(AVIOContext *h, int pause);
attribute_deprecated int64_t av_url_read_fseek( AVIOContext *h, int stream_index, attribute_deprecated int64_t av_url_read_fseek (AVIOContext *h, int stream_index,
int64_t timestamp, int flags); int64_t timestamp, int flags);
/** /**
...@@ -444,6 +444,9 @@ attribute_deprecated void put_flush_packet(AVIOContext *s); ...@@ -444,6 +444,9 @@ attribute_deprecated void put_flush_packet(AVIOContext *s);
*/ */
attribute_deprecated int url_ferror(AVIOContext *s); attribute_deprecated int url_ferror(AVIOContext *s);
attribute_deprecated int udp_set_remote_url(URLContext *h, const char *uri);
attribute_deprecated int udp_get_local_port(URLContext *h);
#endif #endif
AVIOContext *avio_alloc_context( AVIOContext *avio_alloc_context(
...@@ -674,9 +677,6 @@ void init_checksum(AVIOContext *s, ...@@ -674,9 +677,6 @@ void init_checksum(AVIOContext *s,
unsigned long (*update_checksum)(unsigned long c, const uint8_t *p, unsigned int len), unsigned long (*update_checksum)(unsigned long c, const uint8_t *p, unsigned int len),
unsigned long checksum); unsigned long checksum);
/* udp.c */
int udp_set_remote_url(URLContext *h, const char *uri);
int udp_get_local_port(URLContext *h);
#if FF_API_UDP_GET_FILE #if FF_API_UDP_GET_FILE
int udp_get_file_handle(URLContext *h); int udp_get_file_handle(URLContext *h);
#endif #endif
......
...@@ -67,8 +67,12 @@ uint64_t ffio_read_varlen(AVIOContext *bc); ...@@ -67,8 +67,12 @@ uint64_t ffio_read_varlen(AVIOContext *bc);
int ffio_set_buf_size(AVIOContext *s, int buf_size); int ffio_set_buf_size(AVIOContext *s, int buf_size);
int ffio_read_pause(AVIOContext *h, int pause); int ffio_read_pause(AVIOContext *h, int pause);
int64_t ffio_read_seek( AVIOContext *h, int stream_index, int64_t ffio_read_seek (AVIOContext *h, int stream_index,
int64_t timestamp, int flags); int64_t timestamp, int flags);
/* udp.c */
int ff_udp_set_remote_url(URLContext *h, const char *uri);
int ff_udp_get_local_port(URLContext *h);
#endif // AVFORMAT_AVIO_INTERNAL_H #endif // AVFORMAT_AVIO_INTERNAL_H
...@@ -438,29 +438,15 @@ static int put_xiph_codecpriv(AVFormatContext *s, AVIOContext *pb, AVCodecContex ...@@ -438,29 +438,15 @@ static int put_xiph_codecpriv(AVFormatContext *s, AVIOContext *pb, AVCodecContex
static void get_aac_sample_rates(AVFormatContext *s, AVCodecContext *codec, int *sample_rate, int *output_sample_rate) static void get_aac_sample_rates(AVFormatContext *s, AVCodecContext *codec, int *sample_rate, int *output_sample_rate)
{ {
int sri; MPEG4AudioConfig mp4ac;
if (codec->extradata_size < 2) { if (ff_mpeg4audio_get_config(&mp4ac, codec->extradata, codec->extradata_size) < 0) {
av_log(s, AV_LOG_WARNING, "No AAC extradata, unable to determine samplerate.\n"); av_log(s, AV_LOG_WARNING, "Error parsing AAC extradata, unable to determine samplerate.\n");
return; return;
} }
sri = ((codec->extradata[0] << 1) & 0xE) | (codec->extradata[1] >> 7); *sample_rate = mp4ac.sample_rate;
if (sri > 12) { *output_sample_rate = mp4ac.ext_sample_rate;
av_log(s, AV_LOG_WARNING, "AAC samplerate index out of bounds\n");
return;
}
*sample_rate = ff_mpeg4audio_sample_rates[sri];
// if sbr, get output sample rate as well
if (codec->extradata_size == 5) {
sri = (codec->extradata[4] >> 3) & 0xF;
if (sri > 12) {
av_log(s, AV_LOG_WARNING, "AAC output samplerate index out of bounds\n");
return;
}
*output_sample_rate = ff_mpeg4audio_sample_rates[sri];
}
} }
static int mkv_write_codecprivate(AVFormatContext *s, AVIOContext *pb, AVCodecContext *codec, int native_id, int qt_id) static int mkv_write_codecprivate(AVFormatContext *s, AVIOContext *pb, AVCodecContext *codec, int native_id, int qt_id)
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "libavutil/parseutils.h" #include "libavutil/parseutils.h"
#include "libavutil/avstring.h" #include "libavutil/avstring.h"
#include "avformat.h" #include "avformat.h"
#include "avio_internal.h"
#include "rtpdec.h" #include "rtpdec.h"
#include <unistd.h> #include <unistd.h>
...@@ -71,10 +72,10 @@ int rtp_set_remote_url(URLContext *h, const char *uri) ...@@ -71,10 +72,10 @@ int rtp_set_remote_url(URLContext *h, const char *uri)
path, sizeof(path), uri); path, sizeof(path), uri);
ff_url_join(buf, sizeof(buf), "udp", NULL, hostname, port, "%s", path); ff_url_join(buf, sizeof(buf), "udp", NULL, hostname, port, "%s", path);
udp_set_remote_url(s->rtp_hd, buf); ff_udp_set_remote_url(s->rtp_hd, buf);
ff_url_join(buf, sizeof(buf), "udp", NULL, hostname, port + 1, "%s", path); ff_url_join(buf, sizeof(buf), "udp", NULL, hostname, port + 1, "%s", path);
udp_set_remote_url(s->rtcp_hd, buf); ff_udp_set_remote_url(s->rtcp_hd, buf);
return 0; return 0;
} }
...@@ -191,7 +192,7 @@ static int rtp_open(URLContext *h, const char *uri, int flags) ...@@ -191,7 +192,7 @@ static int rtp_open(URLContext *h, const char *uri, int flags)
if (url_open(&s->rtp_hd, buf, flags) < 0) if (url_open(&s->rtp_hd, buf, flags) < 0)
goto fail; goto fail;
if (local_rtp_port>=0 && local_rtcp_port<0) if (local_rtp_port>=0 && local_rtcp_port<0)
local_rtcp_port = udp_get_local_port(s->rtp_hd) + 1; local_rtcp_port = ff_udp_get_local_port(s->rtp_hd) + 1;
build_udp_url(buf, sizeof(buf), build_udp_url(buf, sizeof(buf),
hostname, rtcp_port, local_rtcp_port, ttl, max_packet_size, hostname, rtcp_port, local_rtcp_port, ttl, max_packet_size,
...@@ -326,7 +327,7 @@ static int rtp_close(URLContext *h) ...@@ -326,7 +327,7 @@ static int rtp_close(URLContext *h)
int rtp_get_local_rtp_port(URLContext *h) int rtp_get_local_rtp_port(URLContext *h)
{ {
RTPContext *s = h->priv_data; RTPContext *s = h->priv_data;
return udp_get_local_port(s->rtp_hd); return ff_udp_get_local_port(s->rtp_hd);
} }
/** /**
...@@ -338,7 +339,7 @@ int rtp_get_local_rtp_port(URLContext *h) ...@@ -338,7 +339,7 @@ int rtp_get_local_rtp_port(URLContext *h)
int rtp_get_local_rtcp_port(URLContext *h) int rtp_get_local_rtcp_port(URLContext *h)
{ {
RTPContext *s = h->priv_data; RTPContext *s = h->priv_data;
return udp_get_local_port(s->rtcp_hd); return ff_udp_get_local_port(s->rtcp_hd);
} }
static int rtp_get_file_handle(URLContext *h) static int rtp_get_file_handle(URLContext *h)
......
...@@ -59,14 +59,10 @@ static int rtsp_read_play(AVFormatContext *s) ...@@ -59,14 +59,10 @@ static int rtsp_read_play(AVFormatContext *s)
if (rt->state == RTSP_STATE_PAUSED) { if (rt->state == RTSP_STATE_PAUSED) {
cmd[0] = 0; cmd[0] = 0;
} else { } else {
if (!rt->seek_timestamp) { snprintf(cmd, sizeof(cmd),
snprintf(cmd, sizeof(cmd), "Range: npt=0.000-\r\n"); "Range: npt=%"PRId64".%03"PRId64"-\r\n",
} else { rt->seek_timestamp / AV_TIME_BASE,
snprintf(cmd, sizeof(cmd), rt->seek_timestamp / (AV_TIME_BASE / 1000) % 1000);
"Range: npt=%"PRId64".%03"PRId64"-\r\n",
rt->seek_timestamp / AV_TIME_BASE,
rt->seek_timestamp / (AV_TIME_BASE / 1000) % 1000);
}
} }
ff_rtsp_send_cmd(s, "PLAY", rt->control_uri, cmd, reply, NULL); ff_rtsp_send_cmd(s, "PLAY", rt->control_uri, cmd, reply, NULL);
if (reply->status_code != RTSP_STATUS_OK) { if (reply->status_code != RTSP_STATUS_OK) {
......
...@@ -103,8 +103,7 @@ static int rtsp_write_record(AVFormatContext *s) ...@@ -103,8 +103,7 @@ static int rtsp_write_record(AVFormatContext *s)
char cmd[1024]; char cmd[1024];
snprintf(cmd, sizeof(cmd), snprintf(cmd, sizeof(cmd),
"Range: npt=%0.3f-\r\n", "Range: npt=0.000-\r\n");
(double) 0);
ff_rtsp_send_cmd(s, "RECORD", rt->control_uri, cmd, reply, NULL); ff_rtsp_send_cmd(s, "RECORD", rt->control_uri, cmd, reply, NULL);
if (reply->status_code != RTSP_STATUS_OK) if (reply->status_code != RTSP_STATUS_OK)
return -1; return -1;
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#define _BSD_SOURCE /* Needed for using struct ip_mreq with recent glibc */ #define _BSD_SOURCE /* Needed for using struct ip_mreq with recent glibc */
#define _DARWIN_C_SOURCE /* Needed for using IP_MULTICAST_TTL on OS X */ #define _DARWIN_C_SOURCE /* Needed for using IP_MULTICAST_TTL on OS X */
#include "avformat.h" #include "avformat.h"
#include "avio_internal.h"
#include "libavutil/parseutils.h" #include "libavutil/parseutils.h"
#include <unistd.h> #include <unistd.h>
#include "internal.h" #include "internal.h"
...@@ -243,7 +244,7 @@ static int udp_port(struct sockaddr_storage *addr, int addr_len) ...@@ -243,7 +244,7 @@ static int udp_port(struct sockaddr_storage *addr, int addr_len)
* @param uri of the remote server * @param uri of the remote server
* @return zero if no error. * @return zero if no error.
*/ */
int udp_set_remote_url(URLContext *h, const char *uri) int ff_udp_set_remote_url(URLContext *h, const char *uri)
{ {
UDPContext *s = h->priv_data; UDPContext *s = h->priv_data;
char hostname[256], buf[10]; char hostname[256], buf[10];
...@@ -282,7 +283,7 @@ int udp_set_remote_url(URLContext *h, const char *uri) ...@@ -282,7 +283,7 @@ int udp_set_remote_url(URLContext *h, const char *uri)
* @param h media file context * @param h media file context
* @return the local port number * @return the local port number
*/ */
int udp_get_local_port(URLContext *h) int ff_udp_get_local_port(URLContext *h)
{ {
UDPContext *s = h->priv_data; UDPContext *s = h->priv_data;
return s->local_port; return s->local_port;
...@@ -365,7 +366,7 @@ static int udp_open(URLContext *h, const char *uri, int flags) ...@@ -365,7 +366,7 @@ static int udp_open(URLContext *h, const char *uri, int flags)
if (flags & URL_WRONLY) if (flags & URL_WRONLY)
goto fail; goto fail;
} else { } else {
if (udp_set_remote_url(h, uri) < 0) if (ff_udp_set_remote_url(h, uri) < 0)
goto fail; goto fail;
} }
......
...@@ -65,7 +65,7 @@ ...@@ -65,7 +65,7 @@
#endif #endif
#ifndef av_cold #ifndef av_cold
#if (!defined(__INTEL_COMPILER) || __INTEL_COMPILER > 1110) && AV_GCC_VERSION_AT_LEAST(4,3) #if AV_GCC_VERSION_AT_LEAST(4,3)
# define av_cold __attribute__((cold)) # define av_cold __attribute__((cold))
#else #else
# define av_cold # define av_cold
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
#endif #endif
#ifndef av_flatten #ifndef av_flatten
#if (!defined(__INTEL_COMPILER) || __INTEL_COMPILER > 1110) && AV_GCC_VERSION_AT_LEAST(4,1) #if AV_GCC_VERSION_AT_LEAST(4,1)
# define av_flatten __attribute__((flatten)) # define av_flatten __attribute__((flatten))
#else #else
# define av_flatten # define av_flatten
...@@ -110,7 +110,7 @@ ...@@ -110,7 +110,7 @@
#endif #endif
#ifndef av_alias #ifndef av_alias
#if (!defined(__INTEL_COMPILER) || __INTEL_COMPILER > 1200) && AV_GCC_VERSION_AT_LEAST(3,3) #if AV_GCC_VERSION_AT_LEAST(3,3)
# define av_alias __attribute__((may_alias)) # define av_alias __attribute__((may_alias))
#else #else
# define av_alias # define av_alias
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
#include "timer.h" #include "timer.h"
#ifndef attribute_align_arg #ifndef attribute_align_arg
#if ARCH_X86_32 && (!defined(__INTEL_COMPILER) || __INTEL_COMPILER > 1200) && AV_GCC_VERSION_AT_LEAST(4,2) #if ARCH_X86_32 && AV_GCC_VERSION_AT_LEAST(4,2)
# define attribute_align_arg __attribute__((force_align_arg_pointer)) # define attribute_align_arg __attribute__((force_align_arg_pointer))
#else #else
# define attribute_align_arg # define attribute_align_arg
......
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
#define av_malloc_attrib #define av_malloc_attrib
#endif #endif
#if (!defined(__INTEL_COMPILER) || __INTEL_COMPILER > 1200) && AV_GCC_VERSION_AT_LEAST(4,3) #if AV_GCC_VERSION_AT_LEAST(4,3)
#define av_alloc_size(n) __attribute__((alloc_size(n))) #define av_alloc_size(n) __attribute__((alloc_size(n)))
#else #else
#define av_alloc_size(n) #define av_alloc_size(n)
......
...@@ -15,6 +15,7 @@ command=$5 ...@@ -15,6 +15,7 @@ command=$5
cmp=${6:-diff} cmp=${6:-diff}
ref=${7:-"${base}/ref/fate/${test}"} ref=${7:-"${base}/ref/fate/${test}"}
fuzz=$8 fuzz=$8
threads=${9:-1}
outdir="tests/data/fate" outdir="tests/data/fate"
outfile="${outdir}/${test}" outfile="${outdir}/${test}"
...@@ -48,7 +49,7 @@ run(){ ...@@ -48,7 +49,7 @@ run(){
} }
ffmpeg(){ ffmpeg(){
run ffmpeg -v 0 "$@" run ffmpeg -v 0 -threads $threads "$@"
} }
framecrc(){ framecrc(){
...@@ -77,7 +78,7 @@ regtest(){ ...@@ -77,7 +78,7 @@ regtest(){
cleanfiles="$cleanfiles $outfile $errfile" cleanfiles="$cleanfiles $outfile $errfile"
outfile=tests/data/regression/$2/$t outfile=tests/data/regression/$2/$t
errfile=tests/data/$t.$2.err errfile=tests/data/$t.$2.err
${base}/${1}-regression.sh $t $2 $3 "$target_exec" "$target_path" ${base}/${1}-regression.sh $t $2 $3 "$target_exec" "$target_path" "$threads"
} }
codectest(){ codectest(){
......
b3a8f0a8809a58b2ece90744f06fff96 *./tests/data/acodec/ac3.rm 346073c97eada69330f61e103a170ca1 *./tests/data/acodec/ac3.rm
98751 ./tests/data/acodec/ac3.rm 98751 ./tests/data/acodec/ac3.rm
7da378131db880bcf2e58305d54418ec *./tests/data/lavf/lavf.rm 7b7ede9548a09346675edad36acfbf19 *./tests/data/lavf/lavf.rm
346706 ./tests/data/lavf/lavf.rm 346706 ./tests/data/lavf/lavf.rm
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556
ret: 0 st:-1 flags:0 ts:-1.000000 ret: 0 st:-1 flags:0 ts:-1.000000
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556
ret: 0 st:-1 flags:1 ts: 1.894167 ret:-1 st:-1 flags:1 ts: 1.894167
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556 ret:-1 st: 0 flags:0 ts: 0.788000
ret: 0 st: 0 flags:0 ts: 0.788000
ret: 0 st: 0 flags:1 dts:12581.487000 pts:12581.487000 pos: 5822 size: 916
ret: 0 st: 0 flags:1 ts:-0.317000 ret: 0 st: 0 flags:1 ts:-0.317000
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556
ret: 0 st:-1 flags:0 ts: 2.576668 ret:-1 st:-1 flags:0 ts: 2.576668
ret: 0 st: 0 flags:1 dts:524.800000 pts:524.800000 pos: 6155 size: 244
ret:-1 st:-1 flags:1 ts: 1.470835 ret:-1 st:-1 flags:1 ts: 1.470835
ret: 0 st: 0 flags:0 ts: 0.365000 ret:-1 st: 0 flags:0 ts: 0.365000
ret: 0 st: 0 flags:1 dts:12581.487000 pts:12581.487000 pos: 5822 size: 916
ret: 0 st: 0 flags:1 ts:-0.741000 ret: 0 st: 0 flags:1 ts:-0.741000
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556
ret:-1 st:-1 flags:0 ts: 2.153336 ret:-1 st:-1 flags:0 ts: 2.153336
ret: 0 st:-1 flags:1 ts: 1.047503 ret:-1 st:-1 flags:1 ts: 1.047503
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556
ret: 0 st: 0 flags:0 ts:-0.058000 ret: 0 st: 0 flags:0 ts:-0.058000
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556
ret: 0 st: 0 flags:1 ts: 2.836000 ret:-1 st: 0 flags:1 ts: 2.836000
ret: 0 st: 0 flags:1 dts: 2.681000 pts: 2.681000 pos: 44105 size: 558
ret:-1 st:-1 flags:0 ts: 1.730004 ret:-1 st:-1 flags:0 ts: 1.730004
ret: 0 st:-1 flags:1 ts: 0.624171 ret:-1 st:-1 flags:1 ts: 0.624171
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556
ret: 0 st: 0 flags:0 ts:-0.482000 ret: 0 st: 0 flags:0 ts:-0.482000
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556
ret:-1 st: 0 flags:1 ts: 2.413000 ret:-1 st: 0 flags:1 ts: 2.413000
ret:-1 st:-1 flags:0 ts: 1.306672 ret:-1 st:-1 flags:0 ts: 1.306672
ret: 0 st:-1 flags:1 ts: 0.200839 ret:-1 st:-1 flags:1 ts: 0.200839
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556
ret: 0 st: 0 flags:0 ts:-0.905000 ret: 0 st: 0 flags:0 ts:-0.905000
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556
ret:-1 st: 0 flags:1 ts: 1.989000 ret:-1 st: 0 flags:1 ts: 1.989000
ret: 0 st:-1 flags:0 ts: 0.883340 ret:-1 st:-1 flags:0 ts: 0.883340
ret: 0 st: 0 flags:1 dts:12581.487000 pts:12581.487000 pos: 5822 size: 916
ret: 0 st:-1 flags:1 ts:-0.222493 ret: 0 st:-1 flags:1 ts:-0.222493
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556
ret:-1 st: 0 flags:0 ts: 2.672000 ret:-1 st: 0 flags:0 ts: 2.672000
ret:-1 st: 0 flags:1 ts: 1.566000 ret:-1 st: 0 flags:1 ts: 1.566000
ret: 0 st:-1 flags:0 ts: 0.460008 ret:-1 st:-1 flags:0 ts: 0.460008
ret: 0 st: 0 flags:1 dts:12581.487000 pts:12581.487000 pos: 5822 size: 916
ret: 0 st:-1 flags:1 ts:-0.645825 ret: 0 st:-1 flags:1 ts:-0.645825
ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 271 size: 556
...@@ -9,6 +9,7 @@ test_ref=$2 ...@@ -9,6 +9,7 @@ test_ref=$2
raw_src_dir=$3 raw_src_dir=$3
target_exec=$4 target_exec=$4
target_path=$5 target_path=$5
threads=${6:-1}
datadir="./tests/data" datadir="./tests/data"
target_datadir="${target_path}/${datadir}" target_datadir="${target_path}/${datadir}"
...@@ -52,7 +53,7 @@ echov(){ ...@@ -52,7 +53,7 @@ echov(){
. $(dirname $0)/md5.sh . $(dirname $0)/md5.sh
FFMPEG_OPTS="-v 0 -y -flags +bitexact -dct fastint -idct simple -sws_flags +accurate_rnd+bitexact" FFMPEG_OPTS="-v 0 -threads $threads -y -flags +bitexact -dct fastint -idct simple -sws_flags +accurate_rnd+bitexact"
run_ffmpeg() run_ffmpeg()
{ {
...@@ -65,8 +66,7 @@ do_ffmpeg() ...@@ -65,8 +66,7 @@ do_ffmpeg()
f="$1" f="$1"
shift shift
set -- $* ${target_path}/$f set -- $* ${target_path}/$f
$echov $ffmpeg $FFMPEG_OPTS $* run_ffmpeg -benchmark $* > $bench
$ffmpeg $FFMPEG_OPTS -benchmark $* > $bench
do_md5sum $f >> $logfile do_md5sum $f >> $logfile
if [ $f = $raw_dst ] ; then if [ $f = $raw_dst ] ; then
$tiny_psnr $f $raw_ref >> $logfile $tiny_psnr $f $raw_ref >> $logfile
...@@ -84,8 +84,7 @@ do_ffmpeg_nomd5() ...@@ -84,8 +84,7 @@ do_ffmpeg_nomd5()
f="$1" f="$1"
shift shift
set -- $* ${target_path}/$f set -- $* ${target_path}/$f
$echov $ffmpeg $FFMPEG_OPTS $* run_ffmpeg -benchmark $* > $bench
$ffmpeg $FFMPEG_OPTS -benchmark $* > $bench
if [ $f = $raw_dst ] ; then if [ $f = $raw_dst ] ; then
$tiny_psnr $f $raw_ref >> $logfile $tiny_psnr $f $raw_ref >> $logfile
elif [ $f = $pcm_dst ] ; then elif [ $f = $pcm_dst ] ; then
...@@ -101,8 +100,7 @@ do_ffmpeg_crc() ...@@ -101,8 +100,7 @@ do_ffmpeg_crc()
{ {
f="$1" f="$1"
shift shift
$echov $ffmpeg $FFMPEG_OPTS $* -f crc "$target_crcfile" run_ffmpeg $* -f crc "$target_crcfile"
$ffmpeg $FFMPEG_OPTS $* -f crc "$target_crcfile"
echo "$f $(cat $crcfile)" >> $logfile echo "$f $(cat $crcfile)" >> $logfile
} }
...@@ -110,8 +108,7 @@ do_ffmpeg_nocheck() ...@@ -110,8 +108,7 @@ do_ffmpeg_nocheck()
{ {
f="$1" f="$1"
shift shift
$echov $ffmpeg $FFMPEG_OPTS $* run_ffmpeg -benchmark $* > $bench
$ffmpeg $FFMPEG_OPTS -benchmark $* > $bench
expr "$(cat $bench)" : '.*utime=\(.*s\)' > $bench2 expr "$(cat $bench)" : '.*utime=\(.*s\)' > $bench2
echo $(cat $bench2) $f >> $benchfile echo $(cat $bench2) $f >> $benchfile
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment