Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 27 Jul 2012 21:42:19 +0000 (23:42 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 27 Jul 2012 21:42:19 +0000 (23:42 +0200)
* qatar/master:
  proresdsp: port x86 assembly to cpuflags.
  lavr: x86: improve non-SSE4 version of S16_TO_S32_SX macro
  lavfi: better channel layout negotiation
  alac: check for truncated packets
  alac: reverse lpc coeff order, simplify filter
  lavr: add x86-optimized mixing functions
  x86: add support for fmaddps fma4 instruction with abstraction to avx/sse
  tscc2: fix typo in array index
  build: use COMPILE template for HOSTOBJS
  build: do full flag handling for all compiler-type tools
  eval: fix printing of NaN in eval fate test.
  build: Rename aandct component to more descriptive aandcttables
  mpegaudio: bury inline asm under HAVE_INLINE_ASM.
  x86inc: automatically insert vzeroupper for YMM functions.
  rtmp: Check the buffer length of ping packets
  rtmp: Allow having more unknown data at the end of a chunk size packet without failing
  rtmp: Prevent reading outside of an allocate buffer when receiving server bandwidth packets

Conflicts:
Makefile
configure
libavcodec/x86/proresdsp.asm
libavutil/eval.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
17 files changed:
1  2 
common.mak
configure
doc/Makefile
libavcodec/Makefile
libavcodec/alac.c
libavcodec/tscc2.c
libavcodec/x86/dsputil_yasm.asm
libavcodec/x86/fft_mmx.asm
libavcodec/x86/mpegaudiodec_mmx.c
libavcodec/x86/proresdsp.asm
libavfilter/avfiltergraph.c
libavformat/rtmpproto.c
libavresample/utils.c
libavutil/eval.c
libavutil/x86/float_dsp.asm
libavutil/x86/x86inc.asm
tests/Makefile

diff --cc common.mak
@@@ -5,74 -5,6 +5,75 @@@
  # first so "all" becomes default target
  all: all-yes
  
- SILENT = DEPCC YASMDEP RM RANLIB
 +ifndef SUBDIR
 +
 +ifndef V
 +Q      = @
 +ECHO   = printf "$(1)\t%s\n" $(2)
 +BRIEF  = CC CXX AS YASM AR LD HOSTCC STRIP CP
- CCFLAGS     = $(CFLAGS)
++SILENT = DEPCC DEPAS DEPHOSTCC YASMDEP RM RANLIB
 +MSG    = $@
 +M      = @$(call ECHO,$(TAG),$@);
 +$(foreach VAR,$(BRIEF), \
 +    $(eval override $(VAR) = @$$(call ECHO,$(VAR),$$(MSG)); $($(VAR))))
 +$(foreach VAR,$(SILENT),$(eval override $(VAR) = @$($(VAR))))
 +$(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_DIR)/%=%)); $(INSTALL))
 +endif
 +
 +ALLFFLIBS = avcodec avdevice avfilter avformat avresample avutil postproc swscale swresample
 +
 +# NASM requires -I path terminated with /
 +IFLAGS     := -I. -I$(SRC_PATH)/
 +CPPFLAGS   := $(IFLAGS) $(CPPFLAGS)
 +CFLAGS     += $(ECFLAGS)
- HOSTCFLAGS += $(IFLAGS)
++CCFLAGS     = $(CPPFLAGS) $(CFLAGS)
++ASFLAGS    := $(CPPFLAGS) $(ASFLAGS)
 +CXXFLAGS   := $(CFLAGS) $(CXXFLAGS)
 +YASMFLAGS  += $(IFLAGS) -I$(SRC_PATH)/libavutil/x86/ -Pconfig.asm
-        $($(1)DEP)
-        $($(1)) $(CPPFLAGS) $($(1)FLAGS) $($(1)_DEPFLAGS) -c $($(1)_O) $<
++HOSTCCFLAGS = $(IFLAGS) $(HOSTCFLAGS)
 +LDFLAGS    := $(ALLFFLIBS:%=-Llib%) $(LDFLAGS)
 +
 +define COMPILE
++       $(call $(1)DEP,$(1))
++       $($(1)) $($(1)FLAGS) $($(1)_DEPFLAGS) -c $($(1)_O) $<
 +endef
 +
 +COMPILE_C = $(call COMPILE,CC)
 +COMPILE_CXX = $(call COMPILE,CXX)
 +COMPILE_S = $(call COMPILE,AS)
 +
 +%.o: %.c
 +      $(COMPILE_C)
 +
 +%.o: %.cpp
 +      $(COMPILE_CXX)
 +
 +%.s: %.c
 +      $(CC) $(CPPFLAGS) $(CFLAGS) -S -o $@ $<
 +
 +%.o: %.S
 +      $(COMPILE_S)
 +
 +%.ho: %.h
 +      $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ -x c $<
 +
 +%.ver: %.v
 +      $(Q)sed 's/$$MAJOR/$($(basename $(@F))_VERSION_MAJOR)/' $^ > $@
 +
 +%.c %.h: TAG = GEN
 +
 +# Dummy rule to stop make trying to rebuild removed or renamed headers
 +%.h:
 +      @:
 +
 +# Disable suffix rules.  Most of the builtin rules are suffix rules,
 +# so this saves some time on slow systems.
 +.SUFFIXES:
 +
 +# Do not delete intermediate files from chains of implicit rules
 +$(OBJS):
 +endif
 +
  include $(SRC_PATH)/arch.mak
  
  OBJS      += $(OBJS-yes)
diff --cc configure
+++ b/configure
@@@ -1477,7 -1325,6 +1480,7 @@@ ac3_fixed_encoder_select="mdct ac3dsp
  alac_encoder_select="lpc"
  amrnb_decoder_select="lsp"
  amrwb_decoder_select="lsp"
- amv_encoder_select="aandct"
++amv_encoder_select="aandcttables"
  atrac1_decoder_select="mdct sinewin"
  atrac3_decoder_select="mdct"
  binkaudio_dct_decoder_select="mdct rdft dct sinewin"
@@@ -1486,15 -1333,13 +1489,15 @@@ cavs_decoder_select="golomb
  cook_decoder_select="mdct sinewin"
  cscd_decoder_suggest="zlib"
  dca_decoder_select="mdct"
- dnxhd_encoder_select="aandct"
 +dirac_decoder_select="dwt golomb"
+ dnxhd_encoder_select="aandcttables"
  dxa_decoder_select="zlib"
  eac3_decoder_select="ac3_decoder"
  eac3_encoder_select="mdct ac3dsp"
- eamad_decoder_select="aandct"
- eatgq_decoder_select="aandct"
- eatqi_decoder_select="aandct"
+ eamad_decoder_select="aandcttables"
+ eatgq_decoder_select="aandcttables"
+ eatqi_decoder_select="aandcttables"
 +exr_decoder_select="zlib"
  ffv1_decoder_select="golomb"
  flac_decoder_select="golomb"
  flac_encoder_select="golomb lpc"
@@@ -1543,15 -1385,11 +1546,15 @@@ mpeg_vdpau_decoder_select="vdpau mpegvi
  mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
  mpeg_xvmc_decoder_select="mpegvideo_decoder"
  mpeg1_vdpau_decoder_select="vdpau mpeg1video_decoder"
- mpeg1video_encoder_select="aandct"
 +mpeg1_vdpau_hwaccel_select="vdpau mpeg1video_decoder"
+ mpeg1video_encoder_select="aandcttables"
 +mpeg2_crystalhd_decoder_select="crystalhd"
  mpeg2_dxva2_hwaccel_deps="dxva2api_h"
  mpeg2_dxva2_hwaccel_select="dxva2 mpeg2video_decoder"
 +mpeg2_vdpau_hwaccel_select="vdpau mpeg2video_decoder"
  mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder"
- mpeg2video_encoder_select="aandct"
+ mpeg2video_encoder_select="aandcttables"
 +mpeg4_crystalhd_decoder_select="crystalhd"
  mpeg4_decoder_select="h263_decoder mpeg4video_parser"
  mpeg4_encoder_select="h263_encoder"
  mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder"
@@@ -1580,11 -1417,8 +1583,11 @@@ rv40_decoder_select="golomb h264chroma 
  shorten_decoder_select="golomb"
  sipr_decoder_select="lsp"
  snow_decoder_select="dwt"
- snow_encoder_select="aandct dwt"
+ snow_encoder_select="aandcttables dwt"
 +sonic_decoder_select="golomb"
 +sonic_encoder_select="golomb"
 +sonic_ls_encoder_select="golomb"
- svq1_encoder_select="aandct"
+ svq1_encoder_select="aandcttables"
  svq3_decoder_select="golomb h264chroma h264dsp h264pred h264qpel"
  svq3_decoder_suggest="zlib"
  theora_decoder_select="vp3_decoder"
@@@ -1964,7 -1734,8 +1967,9 @@@ ldflags_filter=ech
  
  AS_O='-o $@'
  CC_O='-o $@'
 +CXX_O='-o $@'
+ LD_O='-o $@'
+ HOSTCC_O='-o $@'
  
  host_cflags='-D_ISOC99_SOURCE -D_XOPEN_SOURCE=600 -O3 -g'
  host_libs='-lm'
@@@ -2442,12 -2200,25 +2477,26 @@@ test -n "$cc_type" && enable $cc_type |
  : ${ld_default:=$cc}
  set_default ar as dep_cc ld
  
- test -n "$CC_DEPFLAGS" || CCDEP=$DEPEND_CMD
- test -n "$CXX_DEPFLAGS" || CXXDEP=$DEPEND_CMD
- test -n "$AS_DEPFLAGS" || ASDEP=$DEPEND_CMD
+ probe_cc as "$as"
+ asflags_filter=$_flags_filter
+ add_asflags $_flags $_cflags
+ set_ccvars AS
+ probe_cc ld "$ld"
+ ldflags_filter=$_flags_filter
+ add_ldflags $_flags $_ldflags
+ test "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags
+ LD_O=${_cc_o-$LD_O}
+ if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then
+     probe_cc depcc "$dep_cc"
+     CCDEP=${_DEPCMD:-$DEPCMD}
+     CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS}
+     DEPCCFLAGS=$_flags
+ fi
  
  add_cflags $extra_cflags
 +add_cxxflags $extra_cxxflags
  add_asflags $extra_cflags
  
  if test -n "$sysroot"; then
@@@ -3818,18 -3414,16 +3872,19 @@@ YASM=$yasmex
  YASMDEP=$yasmexe
  AR=$ar
  RANLIB=$ranlib
 +CP=cp -p
  LN_S=$ln_s
 +STRIP=$strip
  CPPFLAGS=$CPPFLAGS
  CFLAGS=$CFLAGS
 +CXXFLAGS=$CXXFLAGS
  ASFLAGS=$ASFLAGS
- AS_O=$CC_O
+ AS_O=$AS_O
  CC_O=$CC_O
 -DLLTOOL=$dlltool
 +CXX_O=$CXX_O
+ LD_O=$LD_O
  LDFLAGS=$LDFLAGS
 -AVSERVERLDFLAGS=$AVSERVERLDFLAGS
 +FFSERVERLDFLAGS=$FFSERVERLDFLAGS
  SHFLAGS=$SHFLAGS
  YASMFLAGS=$YASMFLAGS
  BUILDSUF=$build_suffix
@@@ -3842,10 -3435,10 +3897,11 @@@ SLIBPREF=$SLIBPRE
  SLIBSUF=$SLIBSUF
  EXESUF=$EXESUF
  EXTRA_VERSION=$extra_version
- DEPFLAGS=$DEPFLAGS
  CCDEP=$CCDEP
 +CXXDEP=$CXXDEP
+ CCDEP_FLAGS=$CCDEP_FLAGS
  ASDEP=$ASDEP
+ ASDEP_FLAGS=$ASDEP_FLAGS
  CC_DEPFLAGS=$CC_DEPFLAGS
  AS_DEPFLAGS=$AS_DEPFLAGS
  HOSTCC=$host_cc
diff --cc doc/Makefile
@@@ -21,15 -15,8 +21,13 @@@ all-$(CONFIG_DOC): documentatio
  
  documentation: $(DOCS)
  
 -TEXIDEP = awk '/^@include/ { printf "$@: $(@D)/%s\n", $$2 }' <$< >$(@:%=%.d)
 +TEXIDEP = awk '/^@(verbatim)?include/ { printf "$@: $(@D)/%s\n", $$2 }' <$< >$(@:%=%.d)
 +
 +doc/%.txt: TAG = TXT
 +doc/%.txt: doc/%.texi
 +      $(Q)$(TEXIDEP)
 +      $(M)makeinfo --force --no-headers -o $@ $< 2>/dev/null
  
- doc/print_options.o: libavformat/options_table.h libavcodec/options_table.h
  GENTEXI  = format codec
  GENTEXI := $(GENTEXI:%=doc/avoptions_%.texi)
  
@@@ -32,12 -29,11 +32,12 @@@ OBJS = allcodecs.
         utils.o                                                          \
  
  # parts needed for many different codecs
- OBJS-$(CONFIG_AANDCT)                  += aandcttab.o
+ OBJS-$(CONFIG_AANDCTTABLES)            += aandcttab.o
  OBJS-$(CONFIG_AC3DSP)                  += ac3dsp.o
 +OBJS-$(CONFIG_CRYSTALHD)               += crystalhd.o
  OBJS-$(CONFIG_ENCODERS)                += faandct.o jfdctfst.o jfdctint.o
  OBJS-$(CONFIG_DCT)                     += dct.o dct32_fixed.o dct32_float.o
 -OBJS-$(CONFIG_DWT)                     += dwt.o
 +OBJS-$(CONFIG_DWT)                     += dwt.o snow.o
  OBJS-$(CONFIG_DXVA2)                   += dxva2.o
  FFT-OBJS-$(CONFIG_HARDCODED_TABLES)    += cos_tables.o cos_fixed_tables.o
  OBJS-$(CONFIG_FFT)                     += avfft.o fft_fixed.o fft_float.o \
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -244,12 -242,10 +248,13 @@@ void ff_mpadsp_init_mmx(MPADSPContext *
      if (mm_flags & AV_CPU_FLAG_SSE2) {
          s->apply_window_float = apply_window_mp3;
      }
+ #endif /* HAVE_INLINE_ASM */
  #if HAVE_YASM
 -    if (mm_flags & AV_CPU_FLAG_AVX && HAVE_AVX) {
 +    if (0) {
 +#if HAVE_AVX
 +    } else if (mm_flags & AV_CPU_FLAG_AVX && HAVE_AVX) {
          s->imdct36_blocks_float = imdct36_blocks_avx;
 +#endif
  #if HAVE_SSE
      } else if (mm_flags & AV_CPU_FLAG_SSSE3) {
          s->imdct36_blocks_float = imdct36_blocks_ssse3;
@@@ -252,7 -346,7 +251,7 @@@ cglobal prores_idct_put_10, 4, 4, %
      pmullw      m13,[r3+64]
      pmullw      m12,[r3+96]
  
-     IDCT_1D     row, 15,  %1
 -    IDCT_1D     row, 17
++    IDCT_1D     row, 15
  
      ; transpose for second part of IDCT
      TRANSPOSE8x8W 8, 0, 1, 2, 4, 11, 9, 10, 3
  
      ; for (i = 0; i < 8; i++)
      ;     idctSparseColAdd(dest + i, line_size, block + i);
-     IDCT_1D     col, 18,  %1
 -    IDCT_1D     col, 20
++    IDCT_1D     col, 18
  
      ; clip/store
 -    mova        m6, [pw_512]
      mova        m3, [pw_4]
      mova        m5, [pw_1019]
 -    paddw       m8,  m6
 -    paddw       m0,  m6
 -    paddw       m1,  m6
 -    paddw       m2,  m6
 -    paddw       m4,  m6
 -    paddw       m11, m6
 -    paddw       m9,  m6
 -    paddw       m10, m6
      pmaxsw      m8,  m3
      pmaxsw      m0,  m3
      pmaxsw      m1,  m3
      RET
  %endmacro
  
- INIT_XMM
- idct_put_fn sse2, 16
- INIT_XMM
- idct_put_fn sse4, 16
+ %macro SIGNEXTEND 2-3 ; dstlow, dsthigh, tmp
+ %if cpuflag(sse4)
+     movhlps     %2,  %1
+     pmovsxwd    %1,  %1
+     pmovsxwd    %2,  %2
+ %else ; sse2
+     pxor        %3,  %3
+     pcmpgtw     %3,  %1
+     mova        %2,  %1
+     punpcklwd   %1,  %3
+     punpckhwd   %2,  %3
+ %endif
+ %endmacro
+ INIT_XMM sse2
+ idct_put_fn 16
+ INIT_XMM sse4
+ idct_put_fn 16
 +%if HAVE_AVX
- INIT_AVX
- idct_put_fn avx,  16
+ INIT_XMM avx
+ idct_put_fn 16
 +%endif
  
  %endif
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc tests/Makefile
@@@ -3,21 -1,8 +3,18 @@@ FFSERVER_REFFILE = $(SRC_PATH)/tests/ff
  VREF = tests/vsynth1/00.pgm
  AREF = tests/data/asynth1.sw
  
 +
 +$(AREF): CMP=
 +
 +ffservertest: ffserver$(EXESUF) tests/vsynth1/00.pgm tests/data/asynth1.sw
 +      @echo
 +      @echo "Unfortunately ffserver is broken and therefore its regression"
 +      @echo "test fails randomly. Treat the results accordingly."
 +      @echo
 +      $(SRC_PATH)/tests/ffserver-regression.sh $(FFSERVER_REFFILE) $(SRC_PATH)/tests/ffserver.conf
 +
  OBJDIRS += tests/data tests/vsynth1
  
- # Required due to missing automatic dependency tracking for HOSTOBJS.
- tests/rotozoom.o tests/videogen.o: tests/utils.c
  tests/vsynth1/00.pgm: tests/videogen$(HOSTEXESUF) | tests/vsynth1
        $(M)./$< 'tests/vsynth1/'