Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 14 Dec 2011 22:58:10 +0000 (23:58 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 14 Dec 2011 22:58:10 +0000 (23:58 +0100)
* qatar/master: (23 commits)
  applehttp: Properly clean up if unable to probe a segment
  applehttp: Avoid reading uninitialized memory
  fate: Replace misleading "aac" in the name of an ADTS test with "adts".
  fate: Drop pointless "-an" from pictor test command.
  fate: split off image codec FATE tests into their own file
  fate: split off WMA codec FATE tests into their own file
  fate: split off lossless video and audio FATE tests into their own files
  fate: split off qtrle codec FATE tests into their own file
  fate: split off Ut Video codec FATE tests into their own file
  fate: split off screen codec FATE tests into their own file
  fate: split off Real Inc. codec FATE tests into their own file
  fate: split off AC-3 codec FATE tests into their own file
  mpegvideo: remove abort() in ff_find_unused_picture()
  rv40: NEON optimised loop filter strength selection
  rv40: rearrange loop filter functions
  configure: cosmetics: sort some lists where appropriate
  swscale_mmx: drop no longer required parameters from VSCALEX macros
  swscale: Mark yuv2planeX_8_mmx as MMX2; it contains MMX2 instructions.
  build: conditionally compile x86 H.264 chroma optimizations
  v410 encoder and decoder
  ...

Conflicts:
Changelog
configure
doc/developer.texi
doc/general.texi
libavcodec/arm/asm.S
libavcodec/avcodec.h
libavcodec/v410dec.c
libavcodec/v410enc.c
libavcodec/version.h
libavcodec/x86/Makefile
libavcodec/x86/dsputil_mmx.c
libswscale/x86/swscale_mmx.c
tests/Makefile
tests/fate2.mak

Merged-by: Michael Niedermayer <michaelni@gmx.at>
35 files changed:
Makefile
configure
doc/general.texi
libavcodec/arm/asm.S
libavcodec/arm/rv40dsp_init_neon.c
libavcodec/arm/rv40dsp_neon.S
libavcodec/avcodec.h
libavcodec/h261dec.c
libavcodec/h263dec.c
libavcodec/mpegvideo.c
libavcodec/mpegvideo_enc.c
libavcodec/rv34dsp.h
libavcodec/rv40.c
libavcodec/rv40dsp.c
libavcodec/vc1dec.c
libavcodec/version.h
libavcodec/x86/Makefile
libavcodec/x86/dsputil_mmx.c
libavformat/applehttp.c
library.mak [moved from subdir.mak with 100% similarity]
libswscale/x86/scale.asm
libswscale/x86/swscale_mmx.c
tests/Makefile
tests/fate.mak
tests/fate/ac3.mak [new file with mode: 0644]
tests/fate/image.mak [new file with mode: 0644]
tests/fate/lossless-audio.mak [new file with mode: 0644]
tests/fate/lossless-video.mak [new file with mode: 0644]
tests/fate/qtrle.mak [new file with mode: 0644]
tests/fate/real.mak [new file with mode: 0644]
tests/fate/screen.mak [new file with mode: 0644]
tests/fate/utvideo.mak [new file with mode: 0644]
tests/fate/wma.mak [new file with mode: 0644]
tests/fate2.mak
tests/ref/fate/adts-demux [moved from tests/ref/fate/aac-demux with 100% similarity]

index f7bed38..53f91cb 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -77,7 +77,7 @@ define DOSUBDIR
 $(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V))))
 SUBDIR := $(1)/
 include $(SRC_PATH)/$(1)/Makefile
-include $(SRC_PATH)/subdir.mak
+include $(SRC_PATH)/library.mak
 endef
 
 $(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D))))
index 7d8eb9e..5593938 100755 (executable)
--- a/configure
+++ b/configure
@@ -1005,6 +1005,7 @@ CONFIG_LIST="
     golomb
     gpl
     gray
+    h264chroma
     h264dsp
     h264pred
     hardcoded_tables
@@ -1146,8 +1147,8 @@ HAVE_LIST="
     dev_bktr_ioctl_bt848_h
     dev_bktr_ioctl_meteor_h
     dev_ic_bt8xx_h
-    dev_video_meteor_ioctl_meteor_h
     dev_video_bktr_ioctl_bt848_h
+    dev_video_meteor_ioctl_meteor_h
     dlfcn_h
     dlopen
     dos_paths
@@ -1166,7 +1167,6 @@ HAVE_LIST="
     GetProcessTimes
     getrusage
     gnu_as
-    struct_rusage_ru_maxrss
     ibm_asm
     inet_aton
     inline_asm
@@ -1192,27 +1192,28 @@ HAVE_LIST="
     mkstemp
     mmap
     PeekNamedPipe
+    poll_h
     posix_memalign
     round
     roundf
     sdl
     sdl_video_size
     setmode
+    setrlimit
     sndio_h
     socklen_t
     soundcard_h
-    poll_h
-    setrlimit
     strerror_r
     strptime
     struct_addrinfo
     struct_ipv6_mreq
+    struct_rusage_ru_maxrss
     struct_sockaddr_in6
     struct_sockaddr_sa_len
     struct_sockaddr_storage
     symver
-    symver_gnu_asm
     symver_asm_label
+    symver_gnu_asm
     sys_mman_h
     sys_resource_h
     sys_select_h
@@ -1335,8 +1336,8 @@ fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
 fast_clz_if_any="alpha armv5te avr32 mips ppc x86"
 fast_unaligned_if_any="armv6 ppc x86"
 
-need_memalign="altivec neon sse"
 inline_asm_deps="!tms470"
+need_memalign="altivec neon sse"
 
 symver_if_any="symver_asm_label symver_gnu_asm"
 
@@ -1387,8 +1388,8 @@ h263_encoder_select="aandct"
 h263_vaapi_hwaccel_select="vaapi h263_decoder"
 h263i_decoder_select="h263_decoder"
 h263p_encoder_select="h263_encoder"
-h264_decoder_select="golomb h264dsp h264pred"
 h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
+h264_decoder_select="golomb h264chroma h264dsp h264pred"
 h264_dxva2_hwaccel_deps="dxva2api_h"
 h264_dxva2_hwaccel_select="dxva2 h264_decoder"
 h264_vaapi_hwaccel_select="vaapi h264_decoder"
@@ -1403,32 +1404,32 @@ loco_decoder_select="golomb"
 mjpeg_encoder_select="aandct"
 mlp_decoder_select="mlp_parser"
 mp1_decoder_select="mpegaudiodsp"
-mp2_decoder_select="mpegaudiodsp"
-mp3adu_decoder_select="mpegaudiodsp"
-mp3_decoder_select="mpegaudiodsp"
-mp3on4_decoder_select="mpegaudiodsp"
 mp1float_decoder_select="mpegaudiodsp"
+mp2_decoder_select="mpegaudiodsp"
 mp2float_decoder_select="mpegaudiodsp"
+mp3_decoder_select="mpegaudiodsp"
+mp3adu_decoder_select="mpegaudiodsp"
 mp3adufloat_decoder_select="mpegaudiodsp"
 mp3float_decoder_select="mpegaudiodsp"
+mp3on4_decoder_select="mpegaudiodsp"
 mp3on4float_decoder_select="mpegaudiodsp"
-mpeg1video_encoder_select="aandct"
-mpeg2video_encoder_select="aandct"
-mpeg4_decoder_select="h263_decoder mpeg4video_parser"
-mpeg4_encoder_select="h263_encoder"
 mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder"
+mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
+mpeg_xvmc_decoder_select="mpegvideo_decoder"
 mpeg1_vdpau_decoder_select="vdpau mpeg1video_decoder"
 mpeg1_vdpau_hwaccel_select="vdpau mpeg1video_decoder"
+mpeg1video_encoder_select="aandct"
 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"
 mpeg4_crystalhd_decoder_select="crystalhd"
+mpeg4_decoder_select="h263_decoder mpeg4video_parser"
+mpeg4_encoder_select="h263_encoder"
 mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder"
 mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder"
-mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
-mpeg_xvmc_decoder_select="mpegvideo_decoder"
 msmpeg4_crystalhd_decoder_select="crystalhd"
 msmpeg4v1_decoder_select="h263_decoder"
 msmpeg4v1_encoder_select="h263_encoder"
@@ -1447,8 +1448,8 @@ rv10_decoder_select="h263_decoder"
 rv10_encoder_select="h263_encoder"
 rv20_decoder_select="h263_decoder"
 rv20_encoder_select="h263_encoder"
-rv30_decoder_select="golomb h264pred"
-rv40_decoder_select="golomb h264pred"
+rv30_decoder_select="golomb h264chroma h264pred"
+rv40_decoder_select="golomb h264chroma h264pred"
 shorten_decoder_select="golomb"
 sipr_decoder_select="lsp"
 snow_decoder_select="dwt"
@@ -1457,7 +1458,7 @@ sonic_decoder_select="golomb"
 sonic_encoder_select="golomb"
 sonic_ls_encoder_select="golomb"
 svq1_encoder_select="aandct"
-svq3_decoder_select="golomb h264dsp h264pred"
+svq3_decoder_select="golomb h264chroma h264dsp h264pred"
 svq3_decoder_suggest="zlib"
 theora_decoder_select="vp3_decoder"
 tiff_decoder_suggest="zlib"
@@ -1465,8 +1466,8 @@ tiff_encoder_suggest="zlib"
 truehd_decoder_select="mlp_decoder"
 tscc_decoder_select="zlib"
 twinvq_decoder_select="mdct lsp sinewin"
-vc1_decoder_select="h263_decoder"
 vc1_crystalhd_decoder_select="crystalhd"
+vc1_decoder_select="h263_decoder h264chroma"
 vc1_dxva2_hwaccel_deps="dxva2api_h"
 vc1_dxva2_hwaccel_select="dxva2 vc1_decoder"
 vc1_vaapi_hwaccel_select="vaapi vc1_decoder"
@@ -1505,7 +1506,7 @@ vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads"
 vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
 
 # parsers
-h264_parser_select="golomb h264dsp h264pred"
+h264_parser_select="golomb h264chroma h264dsp h264pred"
 
 # external libraries
 libaacplus_encoder_deps="libaacplus"
@@ -1640,8 +1641,6 @@ avformat_deps="avcodec"
 postproc_deps="gpl"
 
 # programs
-ffmpeg_deps="avcodec avformat swscale swresample"
-ffmpeg_select="buffer_filter buffersink_filter"
 avconv_deps="avcodec avformat swscale"
 avconv_select="buffer_filter"
 ffplay_deps="avcodec avformat swscale sdl"
@@ -1649,6 +1648,8 @@ ffplay_select="buffersink_filter rdft"
 ffprobe_deps="avcodec avformat"
 ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
 ffserver_extralibs='$ldl'
+ffmpeg_deps="avcodec avformat swscale swresample"
+ffmpeg_select="buffer_filter buffersink_filter"
 
 doc_deps="texi2html"
 
@@ -1671,7 +1672,6 @@ mxf_d10_test_deps="avfilter"
 seek_lavf_mxf_d10_test_deps="mxf_d10_test"
 
 test_deps _encoder _decoder                                             \
-    adpcm_g726=g726                                                     \
     adpcm_ima_qt                                                        \
     adpcm_ima_wav                                                       \
     adpcm_ms                                                            \
@@ -1687,6 +1687,7 @@ test_deps _encoder _decoder                                             \
     flac                                                                \
     flashsv                                                             \
     flv                                                                 \
+    adpcm_g726=g726                                                     \
     gif                                                                 \
     h261                                                                \
     h263="h263 h263p"                                                   \
@@ -1775,9 +1776,9 @@ pkg_config_default=pkg-config
 ranlib="ranlib"
 strip_default="strip"
 yasmexe="yasm"
-nogas=":"
 
 nm_opts='-g'
+nogas=":"
 
 # machine
 arch_default=$(uname -m)
@@ -1793,22 +1794,23 @@ enable avdevice
 enable avfilter
 enable avformat
 enable avutil
-enable asm
-enable debug
-enable doc
-enable fastdiv
+enable postproc
+enable stripping
+enable swresample
+enable swscale
+
 enable ffmpeg
 enable ffplay
 enable ffprobe
 enable ffserver
+
+enable asm
+enable debug
+enable doc
+enable fastdiv
 enable network
 enable optimizations
-enable postproc
-enable protocols
 enable static
-enable stripping
-enable swresample
-enable swscale
 enable swscale_alpha
 
 # build settings
@@ -2031,15 +2033,15 @@ tmpfile(){
 
 trap 'rm -f -- $TMPFILES' EXIT
 
-tmpfile TMPC  .c
-tmpfile TMPCPP .cpp
-tmpfile TMPE  $EXESUF
-tmpfile TMPH  .h
-tmpfile TMPO  .o
-tmpfile TMPS  .S
-tmpfile TMPV  .ver
-tmpfile TMPSH .sh
 tmpfile TMPASM .asm
+tmpfile TMPC   .c
+tmpfile TMPCPP .cpp
+tmpfile TMPE   $EXESUF
+tmpfile TMPH   .h
+tmpfile TMPO   .o
+tmpfile TMPS   .S
+tmpfile TMPSH  .sh
+tmpfile TMPV   .ver
 
 unset -f mktemp
 
@@ -2058,9 +2060,9 @@ EOF
     die "Sanity test failed."
 fi
 
+filter_asflags=echo
 filter_cflags=echo
 filter_cppflags=echo
-filter_asflags=echo
 
 if   $cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
     cc_type=llvm_gcc
@@ -3555,14 +3557,14 @@ get_version(){
     eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
 }
 
-get_version LIBSWSCALE  libswscale/swscale.h
-get_version LIBSWRESAMPLE libswresample/swresample.h
-get_version LIBPOSTPROC libpostproc/postprocess.h
 get_version LIBAVCODEC  libavcodec/version.h
 get_version LIBAVDEVICE libavdevice/avdevice.h
+get_version LIBAVFILTER libavfilter/avfilter.h
 get_version LIBAVFORMAT libavformat/version.h
 get_version LIBAVUTIL   libavutil/avutil.h
-get_version LIBAVFILTER libavfilter/avfilter.h
+get_version LIBPOSTPROC libpostproc/postprocess.h
+get_version LIBSWRESAMPLE libswresample/swresample.h
+get_version LIBSWSCALE  libswscale/swscale.h
 
 cat > $TMPH <<EOF
 /* Automatically generated by configure - do not modify! */
index d2bcd53..9bac4d2 100644 (file)
@@ -601,8 +601,8 @@ following image formats are supported:
 @item Tiertex Limited SEQ video  @tab     @tab  X
     @tab Codec used in DOS CD-ROM FlashBack game.
 @item Ut Video               @tab     @tab  X
-@item V210 Quicktime Uncompressed 4:2:2 10-bit     @tab  X  @tab  X
-@item v410 Quicktime Uncompressed 4:4:4 10-bit     @tab  X  @tab  X
+@item v210 QuickTime uncompressed 4:2:2 10-bit     @tab  X  @tab  X
+@item v410 QuickTime uncompressed 4:4:4 10-bit     @tab  X  @tab  X
 @item VBLE Lossless Codec    @tab     @tab  X
 @item VMware Screen Codec / VMware Video  @tab     @tab  X
     @tab Codec used in videos captured by VMware.
index d711cb8..2daac59 100644 (file)
@@ -113,10 +113,10 @@ T       add             \rn, \rn, \rm
 T       ldr             \rt, [\rn]
 .endm
 
-.macro  ldr_dpren       rt,  rn,  rm:vararg
-A       ldr             \rt, [\rn, -\rm]
-T       sub             \rt, \rn, \rm
-T       ldr             \rt, [\rt]
+.macro  ldr_dpre        rt,  rn,  rm:vararg
+A       ldr             \rt, [\rn, -\rm]!
+T       sub             \rn, \rn, \rm
+T       ldr             \rt, [\rn]
 .endm
 
 .macro  ldr_post        rt,  rn,  rm:vararg
index 36d75e6..59dddb6 100644 (file)
@@ -54,6 +54,13 @@ void ff_avg_rv40_chroma_mc4_neon(uint8_t *, uint8_t *, int, int, int, int);
 void ff_rv40_weight_func_16_neon(uint8_t *, uint8_t *, uint8_t *, int, int, int);
 void ff_rv40_weight_func_8_neon(uint8_t *, uint8_t *, uint8_t *, int, int, int);
 
+int ff_rv40_h_loop_filter_strength_neon(uint8_t *src, int stride,
+                                        int beta, int beta2, int edge,
+                                        int *p1, int *q1);
+int ff_rv40_v_loop_filter_strength_neon(uint8_t *src, int stride,
+                                        int beta, int beta2, int edge,
+                                        int *p1, int *q1);
+
 void ff_rv40dsp_init_neon(RV34DSPContext *c, DSPContext* dsp)
 {
     c->put_pixels_tab[0][ 1] = ff_put_rv40_qpel16_mc10_neon;
@@ -116,4 +123,7 @@ void ff_rv40dsp_init_neon(RV34DSPContext *c, DSPContext* dsp)
 
     c->rv40_weight_pixels_tab[0] = ff_rv40_weight_func_16_neon;
     c->rv40_weight_pixels_tab[1] = ff_rv40_weight_func_8_neon;
+
+    c->rv40_loop_filter_strength[0] = ff_rv40_h_loop_filter_strength_neon;
+    c->rv40_loop_filter_strength[1] = ff_rv40_v_loop_filter_strength_neon;
 }
index 07ba842..a4313d8 100644 (file)
@@ -722,3 +722,89 @@ function ff_rv40_weight_func_8_neon, export=1
         bne             1b
         bx              lr
 endfunc
+
+function ff_rv40_h_loop_filter_strength_neon, export=1
+        pkhbt           r2,  r3,  r2,  lsl #18
+
+        ldr             r3,  [r0]
+        ldr_dpre        r12, r0,  r1
+        teq             r3,  r12
+        beq             1f
+
+        sub             r0,  r0,  r1,  lsl #1
+
+        vld1.32         {d4[]},   [r0,:32], r1  @ -3
+        vld1.32         {d0[]},   [r0,:32], r1  @ -2
+        vld1.32         {d4[1]},  [r0,:32], r1  @ -1
+        vld1.32         {d5[]},   [r0,:32], r1  @  0
+        vld1.32         {d1[]},   [r0,:32], r1  @  1
+        vld1.32         {d5[0]},  [r0,:32], r1  @  2
+
+        vpaddl.u8       q8,  q0                 @ -2, -2, -2, -2,  1,  1,  1,  1
+        vpaddl.u8       q9,  q2                 @ -3, -3, -1, -1,  2,  2,  0,  0
+        vdup.32         d30, r2                 @ beta2, beta << 2
+        vpadd.u16       d16, d16, d17           @ -2, -2,  1,  1
+        vpadd.u16       d18, d18, d19           @ -3, -1,  2,  0
+        vabd.u16        d16, d18, d16
+        vclt.u16        d16, d16, d30
+
+        ldrd            r2,  r3,  [sp, #4]
+        vmovl.u16       q12, d16
+        vtrn.16         d16, d17
+        vshr.u32        q12, q12, #15
+        ldr             r0,  [sp]
+        vst1.32         {d24[1]}, [r2,:32]
+        vst1.32         {d25[1]}, [r3,:32]
+
+        cmp             r0,  #0
+        it              eq
+        bxeq            lr
+
+        vand            d18, d16, d17
+        vtrn.32         d18, d19
+        vand            d18, d18, d19
+        vmov.u16        r0,  d18[0]
+        bx              lr
+1:
+        ldrd            r2,  r3,  [sp, #4]
+        mov             r0,  #0
+        str             r0,  [r2]
+        str             r0,  [r3]
+        bx              lr
+endfunc
+
+function ff_rv40_v_loop_filter_strength_neon, export=1
+        sub             r0,  r0,  #3
+        pkhbt           r2,  r3,  r2,  lsl #18
+
+        vld1.8          {d0},     [r0], r1
+        vld1.8          {d1},     [r0], r1
+        vld1.8          {d2},     [r0], r1
+        vld1.8          {d3},     [r0], r1
+
+        vaddl.u8        q0,  d0,  d1
+        vaddl.u8        q1,  d2,  d3
+        vdup.32         q15, r2
+        vadd.u16        q0,  q0,  q1            @ -3, -2, -1,  0,  1,  2
+        vext.16         q1,  q0,  q0,  #1       @ -2, -1,  0,  1,  2
+        vabd.u16        q0,  q1,  q0
+        vclt.u16        q0,  q0,  q15
+
+        ldrd            r2,  r3,  [sp, #4]
+        vmovl.u16       q1,  d0
+        vext.16         d1,  d0,  d1,  #3
+        vshr.u32        q1,  q1,  #15
+        ldr             r0,  [sp]
+        vst1.32         {d2[1]},  [r2,:32]
+        vst1.32         {d3[1]},  [r3,:32]
+
+        cmp             r0,  #0
+        it              eq
+        bxeq            lr
+
+        vand            d0,  d0,  d1
+        vtrn.16         d0,  d1
+        vand            d0,  d0,  d1
+        vmov.u16        r0,  d0[0]
+        bx              lr
+endfunc
index 4290f8b..5a0e0ed 100644 (file)
@@ -4629,16 +4629,8 @@ int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width,
 unsigned int av_xiphlacing(unsigned char *s, unsigned int v);
 
 /**
-<<<<<<< HEAD
- * Logs a generic warning message about a missing feature. This function is
- * intended to be used internally by FFmpeg (libavcodec, libavformat, etc.)
-||||||| merged common ancestors
- * Logs a generic warning message about a missing feature. This function is
- * intended to be used internally by Libav (libavcodec, libavformat, etc.)
-=======
  * Log a generic warning message about a missing feature. This function is
- * intended to be used internally by Libav (libavcodec, libavformat, etc.)
->>>>>>> qatar/master
+ * intended to be used internally by FFmpeg (libavcodec, libavformat, etc.)
  * only, and would normally not be used by applications.
  * @param[in] avc a pointer to an arbitrary struct of which the first field is
  * a pointer to an AVClass struct
index 9b34690..ff3d05c 100644 (file)
@@ -572,6 +572,8 @@ retry:
     //we need to set current_picture_ptr before reading the header, otherwise we cannot store anyting im there
     if (s->current_picture_ptr == NULL || s->current_picture_ptr->f.data[0]) {
         int i= ff_find_unused_picture(s, 0);
+        if (i < 0)
+            return i;
         s->current_picture_ptr= &s->picture[i];
     }
 
index 9bad8e6..0d741d8 100644 (file)
@@ -410,6 +410,8 @@ retry:
      * otherwise we cannot store anyting in there */
     if (s->current_picture_ptr == NULL || s->current_picture_ptr->f.data[0]) {
         int i= ff_find_unused_picture(s, 0);
+        if (i < 0)
+            return i;
         s->current_picture_ptr= &s->picture[i];
     }
 
index 2b79264..8924046 100644 (file)
@@ -1095,21 +1095,7 @@ int ff_find_unused_picture(MpegEncContext *s, int shared)
         }
     }
 
-    av_log(s->avctx, AV_LOG_FATAL,
-           "Internal error, picture buffer overflow\n");
-    /* We could return -1, but the codec would crash trying to draw into a
-     * non-existing frame anyway. This is safer than waiting for a random crash.
-     * Also the return of this is never useful, an encoder must only allocate
-     * as much as allowed in the specification. This has no relationship to how
-     * much libavcodec could allocate (and MAX_PICTURE_COUNT is always large
-     * enough for such valid streams).
-     * Plus, a decoder has to check stream validity and remove frames if too
-     * many reference frames are around. Waiting for "OOM" is not correct at
-     * all. Similarly, missing reference frames have to be replaced by
-     * interpolated/MC frames, anything else is a bug in the codec ...
-     */
-    abort();
-    return -1;
+    return AVERROR_INVALIDDATA;
 }
 
 static void update_noise_reduction(MpegEncContext *s){
@@ -1167,6 +1153,8 @@ int MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx)
             pic= s->current_picture_ptr; //we already have a unused image (maybe it was set before reading the header)
         else{
             i= ff_find_unused_picture(s, 0);
+            if (i < 0)
+                return i;
             pic= &s->picture[i];
         }
 
@@ -1222,6 +1210,8 @@ int MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx)
 
             /* Allocate a dummy frame */
             i= ff_find_unused_picture(s, 0);
+            if (i < 0)
+                return i;
             s->last_picture_ptr= &s->picture[i];
             s->last_picture_ptr->f.key_frame = 0;
             if(ff_alloc_picture(s, s->last_picture_ptr, 0) < 0)
@@ -1238,6 +1228,8 @@ int MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx)
         if ((s->next_picture_ptr == NULL || s->next_picture_ptr->f.data[0] == NULL) && s->pict_type == AV_PICTURE_TYPE_B) {
             /* Allocate a dummy frame */
             i= ff_find_unused_picture(s, 0);
+            if (i < 0)
+                return i;
             s->next_picture_ptr= &s->picture[i];
             s->next_picture_ptr->f.key_frame = 0;
             if(ff_alloc_picture(s, s->next_picture_ptr, 0) < 0)
index 40dea42..83c4932 100644 (file)
@@ -864,6 +864,8 @@ static int load_input_picture(MpegEncContext *s, AVFrame *pic_arg){
 
     if(direct){
         i= ff_find_unused_picture(s, 1);
+        if (i < 0)
+            return i;
 
         pic= (AVFrame*)&s->picture[i];
         pic->reference= 3;
@@ -877,6 +879,8 @@ static int load_input_picture(MpegEncContext *s, AVFrame *pic_arg){
         }
     }else{
         i= ff_find_unused_picture(s, 0);
+        if (i < 0)
+            return i;
 
         pic= (AVFrame*)&s->picture[i];
         pic->reference= 3;
@@ -1210,6 +1214,8 @@ no_output_pic:
             // input is a shared pix, so we can't modifiy it -> alloc a new one & ensure that the shared one is reuseable
 
             int i= ff_find_unused_picture(s, 0);
+            if (i < 0)
+                return i;
             Picture *pic= &s->picture[i];
 
             pic->f.reference = s->reordered_input_picture[0]->f.reference;
index cf6e14d..01352ea 100644 (file)
@@ -36,10 +36,18 @@ typedef void (*rv40_weight_func)(uint8_t *dst/*align width (8 or 16)*/,
 
 typedef void (*rv34_inv_transform_func)(DCTELEM *block);
 
-typedef void (*rv40_loop_filter_func)(uint8_t *src, int stride, int dmode,
-                                      int lim_q1, int lim_p1, int alpha,
-                                      int beta, int beta2, int chroma,
-                                      int edge);
+typedef void (*rv40_weak_loop_filter_func)(uint8_t *src, int stride,
+                                           int filter_p1, int filter_q1,
+                                           int alpha, int beta,
+                                           int lims, int lim_q1, int lim_p1);
+
+typedef void (*rv40_strong_loop_filter_func)(uint8_t *src, int stride,
+                                             int alpha, int lims,
+                                             int dmode, int chroma);
+
+typedef int (*rv40_loop_filter_strength_func)(uint8_t *src, int stride,
+                                              int beta, int beta2, int edge,
+                                              int *p1, int *q1);
 
 typedef struct RV34DSPContext {
     qpel_mc_func put_pixels_tab[4][16];
@@ -49,8 +57,9 @@ typedef struct RV34DSPContext {
     rv40_weight_func rv40_weight_pixels_tab[2];
     rv34_inv_transform_func rv34_inv_transform_tab[2];
     void (*rv34_dequant4x4)(DCTELEM *block, int Qdc, int Q);
-    rv40_loop_filter_func rv40_h_loop_filter;
-    rv40_loop_filter_func rv40_v_loop_filter;
+    rv40_weak_loop_filter_func rv40_weak_loop_filter[2];
+    rv40_strong_loop_filter_func rv40_strong_loop_filter[2];
+    rv40_loop_filter_strength_func rv40_loop_filter_strength[2];
 } RV34DSPContext;
 
 void ff_rv30dsp_init(RV34DSPContext *c, DSPContext* dsp);
index 8dd78f1..fe104c1 100644 (file)
@@ -297,6 +297,34 @@ enum RV40BlockPos{
 static const int neighbour_offs_x[4] = { 0,  0, -1, 0 };
 static const int neighbour_offs_y[4] = { 0, -1,  0, 1 };
 
+static void rv40_adaptive_loop_filter(RV34DSPContext *rdsp,
+                                      uint8_t *src, int stride, int dmode,
+                                      int lim_q1, int lim_p1,
+                                      int alpha, int beta, int beta2,
+                                      int chroma, int edge, int dir)
+{
+    int filter_p1, filter_q1;
+    int strong;
+    int lims;
+
+    strong = rdsp->rv40_loop_filter_strength[dir](src, stride, beta, beta2,
+                                                  edge, &filter_p1, &filter_q1);
+
+    lims = filter_p1 + filter_q1 + ((lim_q1 + lim_p1) >> 1) + 1;
+
+    if (strong) {
+        rdsp->rv40_strong_loop_filter[dir](src, stride, alpha,
+                                           lims, dmode, chroma);
+    } else if (filter_p1 & filter_q1) {
+        rdsp->rv40_weak_loop_filter[dir](src, stride, 1, 1, alpha, beta,
+                                         lims, lim_q1, lim_p1);
+    } else if (filter_p1 | filter_q1) {
+        rdsp->rv40_weak_loop_filter[dir](src, stride, filter_p1, filter_q1,
+                                         alpha, beta, lims >> 1, lim_q1 >> 1,
+                                         lim_p1 >> 1);
+    }
+}
+
 /**
  * RV40 loop filtering function
  */
@@ -433,10 +461,11 @@ static void rv40_loop_filter(RV34DecContext *r, int row)
                 // if bottom block is coded then we can filter its top edge
                 // (or bottom edge of this block, which is the same)
                 if(y_h_deblock & (MASK_BOTTOM << ij)){
-                    r->rdsp.rv40_h_loop_filter(Y+4*s->linesize, s->linesize, dither,
-                                       y_to_deblock & (MASK_BOTTOM << ij) ? clip[POS_CUR] : 0,
-                                       clip_cur,
-                                       alpha, beta, betaY, 0, 0);
+                    rv40_adaptive_loop_filter(&r->rdsp, Y+4*s->linesize,
+                                              s->linesize, dither,
+                                              y_to_deblock & (MASK_BOTTOM << ij) ? clip[POS_CUR] : 0,
+                                              clip_cur, alpha, beta, betaY,
+                                              0, 0, 0);
                 }
                 // filter left block edge in ordinary mode (with low filtering strength)
                 if(y_v_deblock & (MASK_CUR << ij) && (i || !(mb_strong[POS_CUR] || mb_strong[POS_LEFT]))){
@@ -444,25 +473,25 @@ static void rv40_loop_filter(RV34DecContext *r, int row)
                         clip_left = mvmasks[POS_LEFT] & (MASK_RIGHT << j) ? clip[POS_LEFT] : 0;
                     else
                         clip_left = y_to_deblock & (MASK_CUR << (ij-1)) ? clip[POS_CUR] : 0;
-                    r->rdsp.rv40_v_loop_filter(Y, s->linesize, dither,
-                                       clip_cur,
-                                       clip_left,
-                                       alpha, beta, betaY, 0, 0);
+                    rv40_adaptive_loop_filter(&r->rdsp, Y, s->linesize, dither,
+                                              clip_cur,
+                                              clip_left,
+                                              alpha, beta, betaY, 0, 0, 1);
                 }
                 // filter top edge of the current macroblock when filtering strength is high
                 if(!j && y_h_deblock & (MASK_CUR << i) && (mb_strong[POS_CUR] || mb_strong[POS_TOP])){
-                    r->rdsp.rv40_h_loop_filter(Y, s->linesize, dither,
+                    rv40_adaptive_loop_filter(&r->rdsp, Y, s->linesize, dither,
                                        clip_cur,
                                        mvmasks[POS_TOP] & (MASK_TOP << i) ? clip[POS_TOP] : 0,
-                                       alpha, beta, betaY, 0, 1);
+                                       alpha, beta, betaY, 0, 1, 0);
                 }
                 // filter left block edge in edge mode (with high filtering strength)
                 if(y_v_deblock & (MASK_CUR << ij) && !i && (mb_strong[POS_CUR] || mb_strong[POS_LEFT])){
                     clip_left = mvmasks[POS_LEFT] & (MASK_RIGHT << j) ? clip[POS_LEFT] : 0;
-                    r->rdsp.rv40_v_loop_filter(Y, s->linesize, dither,
+                    rv40_adaptive_loop_filter(&r->rdsp, Y, s->linesize, dither,
                                        clip_cur,
                                        clip_left,
-                                       alpha, beta, betaY, 0, 1);
+                                       alpha, beta, betaY, 0, 1, 1);
                 }
             }
         }
@@ -474,34 +503,34 @@ static void rv40_loop_filter(RV34DecContext *r, int row)
                     int clip_cur = c_to_deblock[k] & (MASK_CUR << ij) ? clip[POS_CUR] : 0;
                     if(c_h_deblock[k] & (MASK_CUR << (ij+2))){
                         int clip_bot = c_to_deblock[k] & (MASK_CUR << (ij+2)) ? clip[POS_CUR] : 0;
-                        r->rdsp.rv40_h_loop_filter(C+4*s->uvlinesize, s->uvlinesize, i*8,
+                        rv40_adaptive_loop_filter(&r->rdsp, C+4*s->uvlinesize, s->uvlinesize, i*8,
                                            clip_bot,
                                            clip_cur,
-                                           alpha, beta, betaC, 1, 0);
+                                           alpha, beta, betaC, 1, 0, 0);
                     }
                     if((c_v_deblock[k] & (MASK_CUR << ij)) && (i || !(mb_strong[POS_CUR] || mb_strong[POS_LEFT]))){
                         if(!i)
                             clip_left = uvcbp[POS_LEFT][k] & (MASK_CUR << (2*j+1)) ? clip[POS_LEFT] : 0;
                         else
                             clip_left = c_to_deblock[k]    & (MASK_CUR << (ij-1))  ? clip[POS_CUR]  : 0;
-                        r->rdsp.rv40_v_loop_filter(C, s->uvlinesize, j*8,
+                        rv40_adaptive_loop_filter(&r->rdsp, C, s->uvlinesize, j*8,
                                            clip_cur,
                                            clip_left,
-                                           alpha, beta, betaC, 1, 0);
+                                           alpha, beta, betaC, 1, 0, 1);
                     }
                     if(!j && c_h_deblock[k] & (MASK_CUR << ij) && (mb_strong[POS_CUR] || mb_strong[POS_TOP])){
                         int clip_top = uvcbp[POS_TOP][k] & (MASK_CUR << (ij+2)) ? clip[POS_TOP] : 0;
-                        r->rdsp.rv40_h_loop_filter(C, s->uvlinesize, i*8,
+                        rv40_adaptive_loop_filter(&r->rdsp, C, s->uvlinesize, i*8,
                                            clip_cur,
                                            clip_top,
-                                           alpha, beta, betaC, 1, 1);
+                                           alpha, beta, betaC, 1, 1, 0);
                     }
                     if(c_v_deblock[k] & (MASK_CUR << ij) && !i && (mb_strong[POS_CUR] || mb_strong[POS_LEFT])){
                         clip_left = uvcbp[POS_LEFT][k] & (MASK_CUR << (2*j+1)) ? clip[POS_LEFT] : 0;
-                        r->rdsp.rv40_v_loop_filter(C, s->uvlinesize, j*8,
+                        rv40_adaptive_loop_filter(&r->rdsp, C, s->uvlinesize, j*8,
                                            clip_cur,
                                            clip_left,
-                                           alpha, beta, betaC, 1, 1);
+                                           alpha, beta, betaC, 1, 1, 1);
                     }
                 }
             }
index 1fc247e..913ced0 100644 (file)
@@ -314,142 +314,194 @@ static const uint8_t rv40_dither_r[16] = {
 /**
  * weaker deblocking very similar to the one described in 4.4.2 of JVT-A003r1
  */
-static inline void rv40_weak_loop_filter(uint8_t *src, const int step,
-                                         const int filter_p1, const int filter_q1,
-                                         const int alpha, const int beta,
-                                         const int lim_p0q0,
-                                         const int lim_q1, const int lim_p1,
-                                         const int diff_p1p0, const int diff_q1q0,
-                                         const int diff_p1p2, const int diff_q1q2)
+static av_always_inline void rv40_weak_loop_filter(uint8_t *src,
+                                                   const int step,
+                                                   const int stride,
+                                                   const int filter_p1,
+                                                   const int filter_q1,
+                                                   const int alpha,
+                                                   const int beta,
+                                                   const int lim_p0q0,
+                                                   const int lim_q1,
+                                                   const int lim_p1)
 {
     uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;
-    int t, u, diff;
-
-    t = src[0*step] - src[-1*step];
-    if(!t)
-        return;
-    u = (alpha * FFABS(t)) >> 7;
-    if(u > 3 - (filter_p1 && filter_q1))
-        return;
-
-    t <<= 2;
-    if(filter_p1 && filter_q1)
-        t += src[-2*step] - src[1*step];
-    diff = CLIP_SYMM((t + 4) >> 3, lim_p0q0);
-    src[-1*step] = cm[src[-1*step] + diff];
-    src[ 0*step] = cm[src[ 0*step] - diff];
-    if(FFABS(diff_p1p2) <= beta && filter_p1){
-        t = (diff_p1p0 + diff_p1p2 - diff) >> 1;
-        src[-2*step] = cm[src[-2*step] - CLIP_SYMM(t, lim_p1)];
+    int i, t, u, diff;
+
+    for (i = 0; i < 4; i++, src += stride) {
+        int diff_p1p0 = src[-2*step] - src[-1*step];
+        int diff_q1q0 = src[ 1*step] - src[ 0*step];
+        int diff_p1p2 = src[-2*step] - src[-3*step];
+        int diff_q1q2 = src[ 1*step] - src[ 2*step];
+
+        t = src[0*step] - src[-1*step];
+        if (!t)
+            continue;
+
+        u = (alpha * FFABS(t)) >> 7;
+        if (u > 3 - (filter_p1 && filter_q1))
+            continue;
+
+        t <<= 2;
+        if (filter_p1 && filter_q1)
+            t += src[-2*step] - src[1*step];
+
+        diff = CLIP_SYMM((t + 4) >> 3, lim_p0q0);
+        src[-1*step] = cm[src[-1*step] + diff];
+        src[ 0*step] = cm[src[ 0*step] - diff];
+
+        if (filter_p1 && FFABS(diff_p1p2) <= beta) {
+            t = (diff_p1p0 + diff_p1p2 - diff) >> 1;
+            src[-2*step] = cm[src[-2*step] - CLIP_SYMM(t, lim_p1)];
+        }
+
+        if (filter_q1 && FFABS(diff_q1q2) <= beta) {
+            t = (diff_q1q0 + diff_q1q2 + diff) >> 1;
+            src[ 1*step] = cm[src[ 1*step] - CLIP_SYMM(t, lim_q1)];
+        }
     }
-    if(FFABS(diff_q1q2) <= beta && filter_q1){
-        t = (diff_q1q0 + diff_q1q2 + diff) >> 1;
-        src[ 1*step] = cm[src[ 1*step] - CLIP_SYMM(t, lim_q1)];
+}
+
+static void rv40_h_weak_loop_filter(uint8_t *src, const int stride,
+                                    const int filter_p1, const int filter_q1,
+                                    const int alpha, const int beta,
+                                    const int lim_p0q0, const int lim_q1,
+                                    const int lim_p1)
+{
+    rv40_weak_loop_filter(src, stride, 1, filter_p1, filter_q1,
+                          alpha, beta, lim_p0q0, lim_q1, lim_p1);
+}
+
+static void rv40_v_weak_loop_filter(uint8_t *src, const int stride,
+                                    const int filter_p1, const int filter_q1,
+                                    const int alpha, const int beta,
+                                    const int lim_p0q0, const int lim_q1,
+                                    const int lim_p1)
+{
+    rv40_weak_loop_filter(src, 1, stride, filter_p1, filter_q1,
+                          alpha, beta, lim_p0q0, lim_q1, lim_p1);
+}
+
+static av_always_inline void rv40_strong_loop_filter(uint8_t *src,
+                                                     const int step,
+                                                     const int stride,
+                                                     const int alpha,
+                                                     const int lims,
+                                                     const int dmode,
+                                                     const int chroma)
+{
+    int i;
+
+    for(i = 0; i < 4; i++, src += stride){
+        int sflag, p0, q0, p1, q1;
+        int t = src[0*step] - src[-1*step];
+
+        if (!t)
+            continue;
+
+        sflag = (alpha * FFABS(t)) >> 7;
+        if (sflag > 1)
+            continue;
+
+        p0 = (25*src[-3*step] + 26*src[-2*step] + 26*src[-1*step] +
+              26*src[ 0*step] + 25*src[ 1*step] +
+              rv40_dither_l[dmode + i]) >> 7;
+
+        q0 = (25*src[-2*step] + 26*src[-1*step] + 26*src[ 0*step] +
+              26*src[ 1*step] + 25*src[ 2*step] +
+              rv40_dither_r[dmode + i]) >> 7;
+
+        if (sflag) {
+            p0 = av_clip(p0, src[-1*step] - lims, src[-1*step] + lims);
+            q0 = av_clip(q0, src[ 0*step] - lims, src[ 0*step] + lims);
+        }
+
+        p1 = (25*src[-4*step] + 26*src[-3*step] + 26*src[-2*step] + 26*p0 +
+              25*src[ 0*step] + rv40_dither_l[dmode + i]) >> 7;
+        q1 = (25*src[-1*step] + 26*q0 + 26*src[ 1*step] + 26*src[ 2*step] +
+              25*src[ 3*step] + rv40_dither_r[dmode + i]) >> 7;
+
+        if (sflag) {
+            p1 = av_clip(p1, src[-2*step] - lims, src[-2*step] + lims);
+            q1 = av_clip(q1, src[ 1*step] - lims, src[ 1*step] + lims);
+        }
+
+        src[-2*step] = p1;
+        src[-1*step] = p0;
+        src[ 0*step] = q0;
+        src[ 1*step] = q1;
+
+        if(!chroma){
+            src[-3*step] = (25*src[-1*step] + 26*src[-2*step] +
+                            51*src[-3*step] + 26*src[-4*step] + 64) >> 7;
+            src[ 2*step] = (25*src[ 0*step] + 26*src[ 1*step] +
+                            51*src[ 2*step] + 26*src[ 3*step] + 64) >> 7;
+        }
     }
 }
 
-static av_always_inline void rv40_adaptive_loop_filter(uint8_t *src, const int step,
-                                             const int stride, const int dmode,
-                                             const int lim_q1, const int lim_p1,
-                                             const int alpha,
-                                             const int beta, const int beta2,
-                                             const int chroma, const int edge)
+static void rv40_h_strong_loop_filter(uint8_t *src, const int stride,
+                                      const int alpha, const int lims,
+                                      const int dmode, const int chroma)
+{
+    rv40_strong_loop_filter(src, stride, 1, alpha, lims, dmode, chroma);
+}
+
+static void rv40_v_strong_loop_filter(uint8_t *src, const int stride,
+                                      const int alpha, const int lims,
+                                      const int dmode, const int chroma)
+{
+    rv40_strong_loop_filter(src, 1, stride, alpha, lims, dmode, chroma);
+}
+
+static av_always_inline int rv40_loop_filter_strength(uint8_t *src,
+                                                      int step, int stride,
+                                                      int beta, int beta2,
+                                                      int edge,
+                                                      int *p1, int *q1)
 {
-    int diff_p1p0[4], diff_q1q0[4], diff_p1p2[4], diff_q1q2[4];
     int sum_p1p0 = 0, sum_q1q0 = 0, sum_p1p2 = 0, sum_q1q2 = 0;
+    int strong0 = 0, strong1 = 0;
     uint8_t *ptr;
-    int flag_strong0 = 1, flag_strong1 = 1;
-    int filter_p1, filter_q1;
     int i;
-    int lims;
 
-    for(i = 0, ptr = src; i < 4; i++, ptr += stride){
-        diff_p1p0[i] = ptr[-2*step] - ptr[-1*step];
-        diff_q1q0[i] = ptr[ 1*step] - ptr[ 0*step];
-        sum_p1p0 += diff_p1p0[i];
-        sum_q1q0 += diff_q1q0[i];
-    }
-    filter_p1 = FFABS(sum_p1p0) < (beta<<2);
-    filter_q1 = FFABS(sum_q1q0) < (beta<<2);
-    if(!filter_p1 && !filter_q1)
-        return;
-
-    for(i = 0, ptr = src; i < 4; i++, ptr += stride){
-        diff_p1p2[i] = ptr[-2*step] - ptr[-3*step];
-        diff_q1q2[i] = ptr[ 1*step] - ptr[ 2*step];
-        sum_p1p2 += diff_p1p2[i];
-        sum_q1q2 += diff_q1q2[i];
+    for (i = 0, ptr = src; i < 4; i++, ptr += stride) {
+        sum_p1p0 += ptr[-2*step] - ptr[-1*step];
+        sum_q1q0 += ptr[ 1*step] - ptr[ 0*step];
     }
 
-    if(edge){
-        flag_strong0 = filter_p1 && (FFABS(sum_p1p2) < beta2);
-        flag_strong1 = filter_q1 && (FFABS(sum_q1q2) < beta2);
-    }else{
-        flag_strong0 = flag_strong1 = 0;
-    }
+    *p1 = FFABS(sum_p1p0) < (beta << 2);
+    *q1 = FFABS(sum_q1q0) < (beta << 2);
 
-    lims = filter_p1 + filter_q1 + ((lim_q1 + lim_p1) >> 1) + 1;
-    if(flag_strong0 && flag_strong1){ /* strong filtering */
-        for(i = 0; i < 4; i++, src += stride){
-            int sflag, p0, q0, p1, q1;
-            int t = src[0*step] - src[-1*step];
-
-            if(!t) continue;
-            sflag = (alpha * FFABS(t)) >> 7;
-            if(sflag > 1) continue;
-
-            p0 = (25*src[-3*step] + 26*src[-2*step]
-                + 26*src[-1*step]
-                + 26*src[ 0*step] + 25*src[ 1*step] + rv40_dither_l[dmode + i]) >> 7;
-            q0 = (25*src[-2*step] + 26*src[-1*step]
-                + 26*src[ 0*step]
-                + 26*src[ 1*step] + 25*src[ 2*step] + rv40_dither_r[dmode + i]) >> 7;
-            if(sflag){
-                p0 = av_clip(p0, src[-1*step] - lims, src[-1*step] + lims);
-                q0 = av_clip(q0, src[ 0*step] - lims, src[ 0*step] + lims);
-            }
-            p1 = (25*src[-4*step] + 26*src[-3*step]
-                + 26*src[-2*step]
-                + 26*p0           + 25*src[ 0*step] + rv40_dither_l[dmode + i]) >> 7;
-            q1 = (25*src[-1*step] + 26*q0
-                + 26*src[ 1*step]
-                + 26*src[ 2*step] + 25*src[ 3*step] + rv40_dither_r[dmode + i]) >> 7;
-            if(sflag){
-                p1 = av_clip(p1, src[-2*step] - lims, src[-2*step] + lims);
-                q1 = av_clip(q1, src[ 1*step] - lims, src[ 1*step] + lims);
-            }
-            src[-2*step] = p1;
-            src[-1*step] = p0;
-            src[ 0*step] = q0;
-            src[ 1*step] = q1;
-            if(!chroma){
-                src[-3*step] = (25*src[-1*step] + 26*src[-2*step] + 51*src[-3*step] + 26*src[-4*step] + 64) >> 7;
-                src[ 2*step] = (25*src[ 0*step] + 26*src[ 1*step] + 51*src[ 2*step] + 26*src[ 3*step] + 64) >> 7;
-            }
-        }
-    }else if(filter_p1 && filter_q1){
-        for(i = 0; i < 4; i++, src += stride)
-            rv40_weak_loop_filter(src, step, 1, 1, alpha, beta, lims, lim_q1, lim_p1,
-                                  diff_p1p0[i], diff_q1q0[i], diff_p1p2[i], diff_q1q2[i]);
-    }else{
-        for(i = 0; i < 4; i++, src += stride)
-            rv40_weak_loop_filter(src, step, filter_p1, filter_q1,
-                                  alpha, beta, lims>>1, lim_q1>>1, lim_p1>>1,
-                                  diff_p1p0[i], diff_q1q0[i], diff_p1p2[i], diff_q1q2[i]);
+    if(!*p1 && !*q1)
+        return 0;
+
+    if (!edge)
+        return 0;
+
+    for (i = 0, ptr = src; i < 4; i++, ptr += stride) {
+        sum_p1p2 += ptr[-2*step] - ptr[-3*step];
+        sum_q1q2 += ptr[ 1*step] - ptr[ 2*step];
     }
+
+    strong0 = *p1 && (FFABS(sum_p1p2) < beta2);
+    strong1 = *q1 && (FFABS(sum_q1q2) < beta2);
+
+    return strong0 && strong1;
 }
 
-static void rv40_v_loop_filter(uint8_t *src, int stride, int dmode,
-                               int lim_q1, int lim_p1,
-                               int alpha, int beta, int beta2, int chroma, int edge){
-    rv40_adaptive_loop_filter(src, 1, stride, dmode, lim_q1, lim_p1,
-                              alpha, beta, beta2, chroma, edge);
+static int rv40_h_loop_filter_strength(uint8_t *src, int stride,
+                                       int beta, int beta2, int edge,
+                                       int *p1, int *q1)
+{
+    return rv40_loop_filter_strength(src, stride, 1, beta, beta2, edge, p1, q1);
 }
-static void rv40_h_loop_filter(uint8_t *src, int stride, int dmode,
-                               int lim_q1, int lim_p1,
-                               int alpha, int beta, int beta2, int chroma, int edge){
-    rv40_adaptive_loop_filter(src, stride, 1, dmode, lim_q1, lim_p1,
-                              alpha, beta, beta2, chroma, edge);
+
+static int rv40_v_loop_filter_strength(uint8_t *src, int stride,
+                                       int beta, int beta2, int edge,
+                                       int *p1, int *q1)
+{
+    return rv40_loop_filter_strength(src, 1, stride, beta, beta2, edge, p1, q1);
 }
 
 av_cold void ff_rv40dsp_init(RV34DSPContext *c, DSPContext* dsp) {
@@ -529,8 +581,12 @@ av_cold void ff_rv40dsp_init(RV34DSPContext *c, DSPContext* dsp) {
     c->rv40_weight_pixels_tab[0] = rv40_weight_func_16;
     c->rv40_weight_pixels_tab[1] = rv40_weight_func_8;
 
-    c->rv40_h_loop_filter = rv40_h_loop_filter;
-    c->rv40_v_loop_filter = rv40_v_loop_filter;
+    c->rv40_weak_loop_filter[0]     = rv40_h_weak_loop_filter;
+    c->rv40_weak_loop_filter[1]     = rv40_v_weak_loop_filter;
+    c->rv40_strong_loop_filter[0]   = rv40_h_strong_loop_filter;
+    c->rv40_strong_loop_filter[1]   = rv40_v_strong_loop_filter;
+    c->rv40_loop_filter_strength[0] = rv40_h_loop_filter_strength;
+    c->rv40_loop_filter_strength[1] = rv40_v_loop_filter_strength;
 
     if (HAVE_MMX)
         ff_rv40dsp_init_x86(c, dsp);
index 4dab137..771574d 100644 (file)
@@ -5582,6 +5582,8 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data,
      * otherwise we cannot store anything in there. */
     if (s->current_picture_ptr == NULL || s->current_picture_ptr->f.data[0]) {
         int i = ff_find_unused_picture(s, 0);
+        if (i < 0)
+            goto err;
         s->current_picture_ptr = &s->picture[i];
     }
 
index 870d7e0..84d4dad 100644 (file)
@@ -21,7 +21,7 @@
 #define AVCODEC_VERSION_H
 
 #define LIBAVCODEC_VERSION_MAJOR 53
-#define LIBAVCODEC_VERSION_MINOR 44
+#define LIBAVCODEC_VERSION_MINOR 45
 #define LIBAVCODEC_VERSION_MICRO  0
 
 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
index 4b85514..48ff39b 100644 (file)
@@ -11,6 +11,9 @@ YASM-OBJS-$(CONFIG_FFT)                += x86/fft_mmx.o                 \
 
 YASM-OBJS-$(CONFIG_DWT)                += x86/dwt_yasm.o
 
+YASM-OBJS-$(CONFIG_H264CHROMA)         += x86/h264_chromamc.o           \
+                                          x86/h264_chromamc_10bit.o
+
 MMX-OBJS-$(CONFIG_H264DSP)             += x86/h264dsp_mmx.o
 YASM-OBJS-$(CONFIG_H264DSP)            += x86/h264_deblock.o            \
                                           x86/h264_deblock_10bit.o      \
@@ -59,8 +62,6 @@ MMX-OBJS-$(CONFIG_VP8_DECODER)         += x86/vp8dsp-init.o
 MMX-OBJS-$(HAVE_YASM)                  += x86/dsputil_yasm.o            \
                                           x86/deinterlace.o             \
                                           x86/fmtconvert.o              \
-                                          x86/h264_chromamc.o           \
-                                          x86/h264_chromamc_10bit.o     \
                                           x86/h264_qpel_10bit.o         \
                                           $(YASM-OBJS-yes)
 
index a27c3b5..75bcae8 100644 (file)
@@ -2548,7 +2548,7 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx)
         }
 
 #if HAVE_YASM
-        if (!high_bit_depth) {
+        if (!high_bit_depth && CONFIG_H264CHROMA) {
         c->put_h264_chroma_pixels_tab[0]= ff_put_h264_chroma_mc8_mmx_rnd;
         c->put_h264_chroma_pixels_tab[1]= ff_put_h264_chroma_mc4_mmx;
         }
@@ -2652,13 +2652,13 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx)
             SET_QPEL_FUNCS(avg_2tap_qpel, 1, 8, mmx2, );
 
 #if HAVE_YASM
-            if (!high_bit_depth) {
+            if (!high_bit_depth && CONFIG_H264CHROMA) {
             c->avg_h264_chroma_pixels_tab[0]= ff_avg_h264_chroma_mc8_mmx2_rnd;
             c->avg_h264_chroma_pixels_tab[1]= ff_avg_h264_chroma_mc4_mmx2;
             c->avg_h264_chroma_pixels_tab[2]= ff_avg_h264_chroma_mc2_mmx2;
             c->put_h264_chroma_pixels_tab[2]= ff_put_h264_chroma_mc2_mmx2;
             }
-            if (bit_depth == 10) {
+            if (bit_depth == 10 && CONFIG_H264CHROMA) {
                 c->put_h264_chroma_pixels_tab[2]= ff_put_h264_chroma_mc2_10_mmxext;
                 c->avg_h264_chroma_pixels_tab[2]= ff_avg_h264_chroma_mc2_10_mmxext;
                 c->put_h264_chroma_pixels_tab[1]= ff_put_h264_chroma_mc4_10_mmxext;
@@ -2728,7 +2728,7 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx)
             SET_QPEL_FUNCS(avg_2tap_qpel, 1, 8, 3dnow, );
 
 #if HAVE_YASM
-            if (!high_bit_depth) {
+            if (!high_bit_depth && CONFIG_H264CHROMA) {
             c->avg_h264_chroma_pixels_tab[0]= ff_avg_h264_chroma_mc8_3dnow_rnd;
             c->avg_h264_chroma_pixels_tab[1]= ff_avg_h264_chroma_mc4_3dnow;
             }
@@ -2781,8 +2781,10 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx)
                 H264_QPEL_FUNCS_10(2, 0, sse2_cache64)
                 H264_QPEL_FUNCS_10(3, 0, sse2_cache64)
 
-                c->put_h264_chroma_pixels_tab[0]= ff_put_h264_chroma_mc8_10_sse2;
-                c->avg_h264_chroma_pixels_tab[0]= ff_avg_h264_chroma_mc8_10_sse2;
+                if (CONFIG_H264CHROMA) {
+                    c->put_h264_chroma_pixels_tab[0] = ff_put_h264_chroma_mc8_10_sse2;
+                    c->avg_h264_chroma_pixels_tab[0] = ff_avg_h264_chroma_mc8_10_sse2;
+                }
             }
 #endif
         }
@@ -2808,7 +2810,7 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx)
                 H264_QPEL_FUNCS_10(2, 0, ssse3_cache64)
                 H264_QPEL_FUNCS_10(3, 0, ssse3_cache64)
             }
-            if (!high_bit_depth) {
+            if (!high_bit_depth && CONFIG_H264CHROMA) {
             c->put_h264_chroma_pixels_tab[0]= ff_put_h264_chroma_mc8_ssse3_rnd;
             c->avg_h264_chroma_pixels_tab[0]= ff_avg_h264_chroma_mc8_ssse3_rnd;
             c->put_h264_chroma_pixels_tab[1]= ff_put_h264_chroma_mc4_ssse3;
@@ -2909,8 +2911,10 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx)
                 H264_QPEL_FUNCS_10(2, 0, sse2)
                 H264_QPEL_FUNCS_10(3, 0, sse2)
 
-                c->put_h264_chroma_pixels_tab[0]= ff_put_h264_chroma_mc8_10_avx;
-                c->avg_h264_chroma_pixels_tab[0]= ff_avg_h264_chroma_mc8_10_avx;
+                if (CONFIG_H264CHROMA) {
+                    c->put_h264_chroma_pixels_tab[0] = ff_put_h264_chroma_mc8_10_avx;
+                    c->avg_h264_chroma_pixels_tab[0] = ff_avg_h264_chroma_mc8_10_avx;
+                }
             }
             c->butterflies_float_interleave = ff_butterflies_float_interleave_avx;
         }
index be8ea32..99febc6 100644 (file)
@@ -204,7 +204,7 @@ static int parse_playlist(AppleHTTPContext *c, const char *url,
     enum KeyType key_type = KEY_NONE;
     uint8_t iv[16] = "";
     int has_iv = 0;
-    char key[MAX_URL_SIZE];
+    char key[MAX_URL_SIZE] = "";
     char line[1024];
     const char *ptr;
     int close_in = 0;
@@ -503,8 +503,15 @@ static int applehttp_read_header(AVFormatContext *s, AVFormatParameters *ap)
         v->pb.seekable = 0;
         ret = av_probe_input_buffer(&v->pb, &in_fmt, v->segments[0]->url,
                                     NULL, 0, 0);
-        if (ret < 0)
+        if (ret < 0) {
+            /* Free the ctx - it isn't initialized properly at this point,
+             * so avformat_close_input shouldn't be called. If
+             * avformat_open_input fails below, it frees and zeros the
+             * context, so it doesn't need any special treatment like this. */
+            avformat_free_context(v->ctx);
+            v->ctx = NULL;
             goto fail;
+        }
         v->ctx->pb       = &v->pb;
         ret = avformat_open_input(&v->ctx, v->segments[0]->url, in_fmt, NULL);
         if (ret < 0)
similarity index 100%
rename from subdir.mak
rename to library.mak
index e8a5e5c..14e2fb8 100644 (file)
@@ -651,7 +651,7 @@ cglobal yuv2planeX_%2_%1, %4, 7, %3
 %define PALIGNR PALIGNR_MMX
 %ifdef ARCH_X86_32
 INIT_MMX
-yuv2planeX_fn mmx  8,  0, 7
+yuv2planeX_fn mmx2,  8,  0, 7
 yuv2planeX_fn mmx2,  9,  0, 5
 yuv2planeX_fn mmx2, 10,  0, 5
 %endif
index e46da77..7cac5d8 100644 (file)
@@ -278,18 +278,18 @@ SCALE_FUNCS_SSE(sse4);
 extern void ff_yuv2planeX_ ## size ## _ ## opt(const int16_t *filter, int filterSize, \
                                                const int16_t **src, uint8_t *dest, int dstW, \
                                                const uint8_t *dither, int offset)
-#define VSCALEX_FUNCS(opt1, opt2) \
-    VSCALEX_FUNC(8,  opt1); \
-    VSCALEX_FUNC(9,  opt2); \
-    VSCALEX_FUNC(10, opt2)
+#define VSCALEX_FUNCS(opt) \
+    VSCALEX_FUNC(8,  opt); \
+    VSCALEX_FUNC(9,  opt); \
+    VSCALEX_FUNC(10, opt)
 
 #if ARCH_X86_32
-VSCALEX_FUNCS(mmx,  mmx2);
+VSCALEX_FUNCS(mmx2);
 #endif
-VSCALEX_FUNCS(sse2, sse2);
-VSCALEX_FUNCS(sse4, sse4);
+VSCALEX_FUNCS(sse2);
+VSCALEX_FUNCS(sse4);
 VSCALEX_FUNC(16, sse4);
-VSCALEX_FUNCS(avx,  avx);
+VSCALEX_FUNCS(avx);
 
 #define VSCALE_FUNC(size, opt) \
 extern void ff_yuv2plane1_ ## size ## _ ## opt(const int16_t *src, uint8_t *dst, int dstW, \
@@ -347,12 +347,12 @@ void ff_sws_init_swScale_mmx(SwsContext *c)
     case 8:  ASSIGN_SCALE_FUNC2(hscalefn, 8, opt1, opt2); break; \
     default: ASSIGN_SCALE_FUNC2(hscalefn, X, opt1, opt2); break; \
     }
-#define ASSIGN_VSCALEX_FUNC(vscalefn, opt1, opt2, opt2chk, do_16_case) \
+#define ASSIGN_VSCALEX_FUNC(vscalefn, opt, do_16_case) \
 switch(c->dstBpc){ \
-    case 16:                                     /*do_16_case;*/                           break; \
-    case 10: if (!isBE(c->dstFormat) && opt2chk) /*vscalefn = ff_yuv2planeX_10_ ## opt2;*/ break; \
-    case 9:  if (!isBE(c->dstFormat) && opt2chk) /*vscalefn = ff_yuv2planeX_9_  ## opt2;*/ break; \
-    default:                                     /*vscalefn = ff_yuv2planeX_8_  ## opt1;*/ break; \
+    case 16:                          /*do_16_case;*/                          break; \
+    case 10: if (!isBE(c->dstFormat)) /*vscalefn = ff_yuv2planeX_10_ ## opt;*/ break; \
+    case 9:  if (!isBE(c->dstFormat)) /*vscalefn = ff_yuv2planeX_9_  ## opt;*/ break; \
+    default:                          /*vscalefn = ff_yuv2planeX_8_  ## opt;*/ break; \
     }
 #define ASSIGN_VSCALE_FUNC(vscalefn, opt1, opt2, opt2chk) \
     switch(c->dstBpc){ \
@@ -365,9 +365,11 @@ switch(c->dstBpc){ \
     if (cpu_flags & AV_CPU_FLAG_MMX) {
         ASSIGN_MMX_SCALE_FUNC(c->hyScale, c->hLumFilterSize, mmx, mmx);
         ASSIGN_MMX_SCALE_FUNC(c->hcScale, c->hChrFilterSize, mmx, mmx);
-        ASSIGN_VSCALEX_FUNC(c->yuv2planeX, mmx, mmx2, cpu_flags & AV_CPU_FLAG_MMX2,);
         ASSIGN_VSCALE_FUNC(c->yuv2plane1, mmx, mmx2, cpu_flags & AV_CPU_FLAG_MMX2);
     }
+    if (cpu_flags & AV_CPU_FLAG_MMX2) {
+        ASSIGN_VSCALEX_FUNC(c->yuv2planeX, mmx2,);
+    }
 #endif
 #define ASSIGN_SSE_SCALE_FUNC(hscalefn, filtersize, opt1, opt2) \
     switch (filtersize) { \
@@ -380,7 +382,7 @@ switch(c->dstBpc){ \
     if (cpu_flags & AV_CPU_FLAG_SSE2) {
         ASSIGN_SSE_SCALE_FUNC(c->hyScale, c->hLumFilterSize, sse2, sse2);
         ASSIGN_SSE_SCALE_FUNC(c->hcScale, c->hChrFilterSize, sse2, sse2);
-        ASSIGN_VSCALEX_FUNC(c->yuv2planeX, sse2, sse2, 1,);
+        ASSIGN_VSCALEX_FUNC(c->yuv2planeX, sse2,);
         ASSIGN_VSCALE_FUNC(c->yuv2plane1, sse2, sse2, 1);
     }
     if (cpu_flags & AV_CPU_FLAG_SSSE3) {
@@ -391,14 +393,14 @@ switch(c->dstBpc){ \
         /* Xto15 don't need special sse4 functions */
         ASSIGN_SSE_SCALE_FUNC(c->hyScale, c->hLumFilterSize, sse4, ssse3);
         ASSIGN_SSE_SCALE_FUNC(c->hcScale, c->hChrFilterSize, sse4, ssse3);
-        ASSIGN_VSCALEX_FUNC(c->yuv2planeX, sse4, sse4, 1,
+        ASSIGN_VSCALEX_FUNC(c->yuv2planeX, sse4,
                             if (!isBE(c->dstFormat)) c->yuv2planeX = ff_yuv2planeX_16_sse4);
         if (c->dstBpc == 16 && !isBE(c->dstFormat))
             c->yuv2plane1 = ff_yuv2plane1_16_sse4;
     }
 
     if (cpu_flags & AV_CPU_FLAG_AVX) {
-        ASSIGN_VSCALEX_FUNC(c->yuv2planeX, avx, avx, 1,);
+        ASSIGN_VSCALEX_FUNC(c->yuv2planeX, avx,);
         ASSIGN_VSCALE_FUNC(c->yuv2plane1, avx, avx, 1);
     }
 #endif
index cddaa7c..640e630 100644 (file)
@@ -44,18 +44,27 @@ include $(SRC_PATH)/tests/fate.mak
 include $(SRC_PATH)/tests/fate2.mak
 
 include $(SRC_PATH)/tests/fate/aac.mak
+include $(SRC_PATH)/tests/fate/ac3.mak
 include $(SRC_PATH)/tests/fate/als.mak
 include $(SRC_PATH)/tests/fate/amrnb.mak
 include $(SRC_PATH)/tests/fate/amrwb.mak
 include $(SRC_PATH)/tests/fate/dct.mak
 include $(SRC_PATH)/tests/fate/fft.mak
 include $(SRC_PATH)/tests/fate/h264.mak
+include $(SRC_PATH)/tests/fate/image.mak
 include $(SRC_PATH)/tests/fate/libavutil.mak
 include $(SRC_PATH)/tests/fate/mapchan.mak
+include $(SRC_PATH)/tests/fate/lossless-audio.mak
+include $(SRC_PATH)/tests/fate/lossless-video.mak
 include $(SRC_PATH)/tests/fate/mp3.mak
 include $(SRC_PATH)/tests/fate/prores.mak
+include $(SRC_PATH)/tests/fate/qtrle.mak
+include $(SRC_PATH)/tests/fate/real.mak
+include $(SRC_PATH)/tests/fate/screen.mak
+include $(SRC_PATH)/tests/fate/utvideo.mak
 include $(SRC_PATH)/tests/fate/vorbis.mak
 include $(SRC_PATH)/tests/fate/vp8.mak
+include $(SRC_PATH)/tests/fate/wma.mak
 
 FATE_ACODEC  = $(ACODEC_TESTS:%=fate-acodec-%)
 FATE_VSYNTH1 = $(VCODEC_TESTS:%=fate-vsynth1-%)
index 341b85c..81c5c33 100644 (file)
@@ -4,14 +4,14 @@ FATE_TESTS += fate-4xm-2
 fate-4xm-2: CMD = framecrc -i $(SAMPLES)/4xm/version2.4xm -pix_fmt rgb24 -an
 FATE_TESTS += fate-8bps
 fate-8bps: CMD = framecrc  -i $(SAMPLES)/8bps/full9iron-partial.mov -pix_fmt rgb24
-FATE_TESTS += fate-aac-demux
-fate-aac-demux: CMD = crc  -i $(SAMPLES)/aac/ct_faac-adts.aac -acodec copy
 FATE_TESTS += fate-aasc
 fate-aasc: CMD = framecrc  -i $(SAMPLES)/aasc/AASC-1.5MB.AVI -pix_fmt rgb24
 FATE_TESTS += fate-adpcm-ea-r2
 fate-adpcm-ea-r2: CMD = crc  -i $(SAMPLES)/ea-mpc/THX_logo.mpc -vn
 FATE_TESTS += fate-adpcm-ea-r3
 fate-adpcm-ea-r3: CMD = crc  -i $(SAMPLES)/ea-vp6/THX_logo.vp6 -vn
+FATE_TESTS += fate-adts-demux
+fate-adts-demux: CMD = crc  -i $(SAMPLES)/aac/ct_faac-adts.aac -acodec copy
 FATE_TESTS += fate-aea-demux
 fate-aea-demux: CMD = crc  -i $(SAMPLES)/aea/chirp.aea -acodec copy
 FATE_TESTS += fate-alg-mm
@@ -52,8 +52,6 @@ FATE_TESTS += fate-creatureshock-avs
 fate-creatureshock-avs: CMD = framecrc  -i $(SAMPLES)/creatureshock-avs/OUTATIME.AVS -pix_fmt rgb24
 FATE_TESTS += fate-cryo-apc
 fate-cryo-apc: CMD = md5  -i $(SAMPLES)/cryo-apc/cine007.APC -f s16le
-FATE_TESTS += fate-cscd
-fate-cscd: CMD = framecrc  -i $(SAMPLES)/CSCD/sample_video.avi -an -vsync 0 -pix_fmt rgb24
 FATE_TESTS += fate-cvid
 fate-cvid: CMD = framecrc  -i $(SAMPLES)/cvid/laracroft-cinepak-partial.avi -an
 FATE_TESTS += fate-cvid-palette
@@ -68,8 +66,6 @@ FATE_TESTS += fate-delphine-cin
 fate-delphine-cin: CMD = framecrc  -i $(SAMPLES)/delphine-cin/LOGO-partial.CIN -pix_fmt rgb24 -vsync 0
 FATE_TESTS += fate-deluxepaint-anm
 fate-deluxepaint-anm: CMD = framecrc  -i $(SAMPLES)/deluxepaint-anm/INTRO1.ANM -pix_fmt rgb24
-FATE_TESTS += fate-dpx
-fate-dpx: CMD = framecrc  -i $(SAMPLES)/dpx/lighthouse_rgb48.dpx
 FATE_TESTS += fate-duck-dk3
 fate-duck-dk3: CMD = md5  -i $(SAMPLES)/duck/sop-audio-only.avi -f s16le
 FATE_TESTS += fate-duck-dk4
@@ -108,18 +104,6 @@ FATE_TESTS += fate-flic-af12
 fate-flic-af12: CMD = framecrc  -i $(SAMPLES)/fli/jj00c2.fli -pix_fmt rgb24
 FATE_TESTS += fate-flic-magiccarpet
 fate-flic-magiccarpet: CMD = framecrc  -i $(SAMPLES)/fli/intel.dat -pix_fmt rgb24
-FATE_TESTS += fate-fraps-v0
-fate-fraps-v0: CMD = framecrc  -i $(SAMPLES)/fraps/Griffin_Ragdoll01-partial.avi
-FATE_TESTS += fate-fraps-v1
-fate-fraps-v1: CMD = framecrc  -i $(SAMPLES)/fraps/sample-v1.avi -an
-FATE_TESTS += fate-fraps-v2
-fate-fraps-v2: CMD = framecrc  -i $(SAMPLES)/fraps/test3-nosound-partial.avi
-FATE_TESTS += fate-fraps-v3
-fate-fraps-v3: CMD = framecrc  -i $(SAMPLES)/fraps/psclient-partial.avi -pix_fmt rgb24
-FATE_TESTS += fate-fraps-v4
-fate-fraps-v4: CMD = framecrc  -i $(SAMPLES)/fraps/WoW_2006-11-03_14-58-17-19-nosound-partial.avi
-FATE_TESTS += fate-fraps-v5
-fate-fraps-v5: CMD = framecrc  -i $(SAMPLES)/fraps/fraps-v5-bouncing-balls-partial.avi
 FATE_TESTS += fate-frwu
 fate-frwu: CMD = framecrc  -i $(SAMPLES)/frwu/frwu.avi
 FATE_TESTS += fate-funcom-iss
@@ -158,22 +142,6 @@ FATE_TESTS += fate-kmvc
 fate-kmvc: CMD = framecrc  -i $(SAMPLES)/KMVC/LOGO1.AVI -an -t 3 -pix_fmt rgb24
 FATE_TESTS += fate-lmlm4-demux
 fate-lmlm4-demux: CMD = framecrc  -i $(SAMPLES)/lmlm4/LMLM4_CIFat30fps.divx -t 3 -acodec copy -vcodec copy
-FATE_TESTS += fate-loco-rgb
-fate-loco-rgb: CMD = framecrc  -i $(SAMPLES)/loco/pig-loco-rgb.avi
-FATE_TESTS += fate-loco-yuy2
-fate-loco-yuy2: CMD = framecrc  -i $(SAMPLES)/loco/pig-loco-0.avi
-FATE_TESTS += fate-lossless-appleaudio
-fate-lossless-appleaudio: CMD = md5  -i $(SAMPLES)/lossless-audio/inside.m4a -f s16le
-FATE_TESTS += fate-lossless-meridianaudio
-fate-lossless-meridianaudio: CMD = md5  -i $(SAMPLES)/lossless-audio/luckynight-partial.mlp -f s16le
-FATE_TESTS += fate-lossless-monkeysaudio
-fate-lossless-monkeysaudio: CMD = md5  -i $(SAMPLES)/lossless-audio/luckynight-partial.ape -f s16le
-FATE_TESTS += fate-lossless-shortenaudio
-fate-lossless-shortenaudio: CMD = md5  -i $(SAMPLES)/lossless-audio/luckynight-partial.shn -f s16le
-FATE_TESTS += fate-lossless-tta
-fate-lossless-tta: CMD = crc  -i $(SAMPLES)/lossless-audio/inside.tta
-FATE_TESTS += fate-lossless-wavpackaudio
-fate-lossless-wavpackaudio: CMD = md5  -i $(SAMPLES)/lossless-audio/luckynight-partial.wv -f s16le
 FATE_TESTS += fate-maxis-xa
 fate-maxis-xa: CMD = md5  -i $(SAMPLES)/maxis-xa/SC2KBUG.XA -f s16le
 FATE_TESTS += fate-mimic
@@ -184,14 +152,10 @@ FATE_TESTS += fate-mpc7-demux
 fate-mpc7-demux: CMD = crc  -i $(SAMPLES)/musepack/inside-mp7.mpc -acodec copy
 FATE_TESTS += fate-mpc8-demux
 fate-mpc8-demux: CMD = crc  -i $(SAMPLES)/musepack/inside-mp8.mpc -acodec copy
-FATE_TESTS += fate-msrle-8bit
-fate-msrle-8bit: CMD = framecrc  -i $(SAMPLES)/msrle/Search-RLE.avi -pix_fmt rgb24
 FATE_TESTS += fate-msvideo1-16bit
 fate-msvideo1-16bit: CMD = framecrc  -i $(SAMPLES)/cram/clock-cram16.avi -pix_fmt rgb24
 FATE_TESTS += fate-msvideo1-8bit
 fate-msvideo1-8bit: CMD = framecrc  -i $(SAMPLES)/cram/skating.avi -t 1 -pix_fmt rgb24
-FATE_TESTS += fate-mszh
-fate-mszh: CMD = framecrc  -i $(SAMPLES)/lcl/mszh-1frame.avi
 FATE_TESTS += fate-mtv
 fate-mtv: CMD = framecrc  -i $(SAMPLES)/mtv/comedian_auto-partial.mtv -acodec copy -pix_fmt rgb24
 FATE_TESTS += fate-mxf-demux
@@ -212,8 +176,6 @@ FATE_TESTS += fate-psx-str-v3-mdec
 fate-psx-str-v3-mdec: CMD = framecrc  -i $(SAMPLES)/psx-str/abc000_cut.str -an
 FATE_TESTS += fate-psx-str-v3-adpcm_xa
 fate-psx-str-v3-adpcm_xa: CMD = framecrc  -i $(SAMPLES)/psx-str/abc000_cut.str -vn
-FATE_TESTS += fate-ptx
-fate-ptx: CMD = framecrc  -i $(SAMPLES)/ptx/_113kw_pic.ptx -pix_fmt rgb24
 FATE_TESTS += fate-pva-demux
 fate-pva-demux: CMD = framecrc  -idct simple -i $(SAMPLES)/pva/PVA_test-partial.pva -t 0.6 -acodec copy
 FATE_TESTS += fate-qcp-demux
@@ -252,26 +214,8 @@ FATE_TESTS += fate-qt-ulaw-mono
 fate-qt-ulaw-mono: CMD = md5  -i $(SAMPLES)/qt-surge-suite/surge-1-16-B-ulaw.mov -f s16le
 FATE_TESTS += fate-qt-ulaw-stereo
 fate-qt-ulaw-stereo: CMD = md5  -i $(SAMPLES)/qt-surge-suite/surge-2-16-B-ulaw.mov -f s16le
-FATE_TESTS += fate-qtrle-16bit
-fate-qtrle-16bit: CMD = framecrc  -i $(SAMPLES)/qtrle/mr-cork-rle.mov -pix_fmt rgb24
-FATE_TESTS += fate-qtrle-1bit
-fate-qtrle-1bit: CMD = framecrc  -i $(SAMPLES)/qtrle/Animation-Monochrome.mov
-FATE_TESTS += fate-qtrle-24bit
-fate-qtrle-24bit: CMD = framecrc  -i $(SAMPLES)/qtrle/aletrek-rle.mov -vsync 0
-FATE_TESTS += fate-qtrle-2bit
-fate-qtrle-2bit: CMD = framecrc  -i $(SAMPLES)/qtrle/Animation-4Greys.mov -pix_fmt rgb24
-FATE_TESTS += fate-qtrle-32bit
-fate-qtrle-32bit: CMD = framecrc  -i $(SAMPLES)/qtrle/ultra_demo_720_480_32bpp_rle.mov -pix_fmt rgb24
-FATE_TESTS += fate-qtrle-4bit
-fate-qtrle-4bit: CMD = framecrc  -i $(SAMPLES)/qtrle/Animation-16Greys.mov -pix_fmt rgb24 -an
-FATE_TESTS += fate-qtrle-8bit
-fate-qtrle-8bit: CMD = framecrc  -i $(SAMPLES)/qtrle/criticalpath-credits.mov -vsync 0 -pix_fmt rgb24 -an
 FATE_TESTS += fate-quickdraw
 fate-quickdraw: CMD = framecrc  -i $(SAMPLES)/quickdraw/Airplane.mov -pix_fmt rgb24
-FATE_TESTS += fate-real-14_4
-fate-real-14_4: CMD = md5  -i $(SAMPLES)/real/ra3_in_rm_file.rm -f s16le
-FATE_TESTS += fate-real-rv40
-fate-real-rv40: CMD = framecrc  -i $(SAMPLES)/real/spygames-2MB.rmvb -t 10 -an -vsync 0
 FATE_TESTS += fate-redcode-demux
 fate-redcode-demux: CMD = framecrc  -i $(SAMPLES)/r3d/4MB-sample.r3d -vcodec copy -acodec copy
 FATE_TESTS += fate-rl2
@@ -292,18 +236,6 @@ FATE_TESTS += fate-sp5x
 fate-sp5x: CMD = framecrc  -idct simple -i $(SAMPLES)/sp5x/sp5x_problem.avi
 FATE_TESTS += fate-sub-srt
 fate-sub-srt: CMD = md5  -i $(SAMPLES)/sub/SubRip_capability_tester.srt -f ass
-FATE_TESTS += fate-sunraster-1bit-raw
-fate-sunraster-1bit-raw: CMD = framecrc  -i $(SAMPLES)/sunraster/lena-1bit-raw.sun
-FATE_TESTS += fate-sunraster-1bit-rle
-fate-sunraster-1bit-rle: CMD = framecrc  -i $(SAMPLES)/sunraster/lena-1bit-rle.sun
-FATE_TESTS += fate-sunraster-24bit-raw
-fate-sunraster-24bit-raw: CMD = framecrc  -i $(SAMPLES)/sunraster/lena-24bit-raw.sun
-FATE_TESTS += fate-sunraster-24bit-rle
-fate-sunraster-24bit-rle: CMD = framecrc  -i $(SAMPLES)/sunraster/lena-24bit-rle.sun
-FATE_TESTS += fate-sunraster-8bit-raw
-fate-sunraster-8bit-raw: CMD = framecrc  -i $(SAMPLES)/sunraster/lena-8bit-raw.sun -pix_fmt rgb24
-FATE_TESTS += fate-sunraster-8bit-rle
-fate-sunraster-8bit-rle: CMD = framecrc  -i $(SAMPLES)/sunraster/lena-8bit-rle.sun -pix_fmt rgb24
 FATE_TESTS += fate-svq1
 fate-svq1: CMD = framecrc  -i $(SAMPLES)/svq1/marymary-shackles.mov -an -t 10
 FATE_TESTS += fate-svq3
@@ -318,10 +250,6 @@ FATE_TESTS += fate-truemotion1-15
 fate-truemotion1-15: CMD = framecrc -i $(SAMPLES)/duck/phant2-940.duk -pix_fmt rgb24
 FATE_TESTS += fate-truemotion1-24
 fate-truemotion1-24: CMD = framecrc -i $(SAMPLES)/duck/sonic3dblast_intro-partial.avi -pix_fmt rgb24
-FATE_TESTS += fate-tscc-15bit
-fate-tscc-15bit: CMD = framecrc  -i $(SAMPLES)/tscc/oneminute.avi -t 15 -pix_fmt rgb24
-FATE_TESTS += fate-tscc-32bit
-fate-tscc-32bit: CMD = framecrc  -i $(SAMPLES)/tscc/2004-12-17-uebung9-partial.avi -pix_fmt rgb24 -an
 FATE_TESTS += fate-ulti
 fate-ulti: CMD = framecrc  -i $(SAMPLES)/ulti/hit12w.avi -an
 FATE_TESTS += fate-v210
@@ -332,10 +260,6 @@ FATE_TESTS += fate-vcr1
 fate-vcr1: CMD = framecrc  -i $(SAMPLES)/vcr1/VCR1test.avi -an
 FATE_TESTS += fate-video-xl
 fate-video-xl: CMD = framecrc  -i $(SAMPLES)/vixl/pig-vixl.avi
-FATE_TESTS += fate-vmnc-16bit
-fate-vmnc-16bit: CMD = framecrc  -i $(SAMPLES)/VMnc/test.avi -pix_fmt rgb24
-FATE_TESTS += fate-vmnc-32bit
-fate-vmnc-32bit: CMD = framecrc  -i $(SAMPLES)/VMnc/VS2k5DebugDemo-01-partial.avi -pix_fmt rgb24
 FATE_TESTS += fate-vp5
 fate-vp5: CMD = framecrc  -i $(SAMPLES)/vp5/potter512-400-partial.avi -an
 FATE_TESTS += fate-vp6a
@@ -356,13 +280,3 @@ FATE_TESTS += fate-wnv1
 fate-wnv1: CMD = framecrc  -i $(SAMPLES)/wnv1/wnv1-codec.avi -an
 FATE_TESTS += fate-xan-dpcm
 fate-xan-dpcm: CMD = md5  -i $(SAMPLES)/wc4-xan/wc4_2.avi -vn -f s16le
-FATE_TESTS += fate-zlib
-fate-zlib: CMD = framecrc  -i $(SAMPLES)/lcl/zlib-1frame.avi
-FATE_TESTS += fate-zmbv-15bit
-fate-zmbv-15bit: CMD = framecrc  -i $(SAMPLES)/zmbv/zmbv_15bit.avi -pix_fmt rgb24 -t 25
-FATE_TESTS += fate-zmbv-16bit
-fate-zmbv-16bit: CMD = framecrc  -i $(SAMPLES)/zmbv/zmbv_16bit.avi -pix_fmt rgb24 -t 25
-FATE_TESTS += fate-zmbv-32bit
-fate-zmbv-32bit: CMD = framecrc  -i $(SAMPLES)/zmbv/zmbv_32bit.avi -pix_fmt rgb24 -t 25
-FATE_TESTS += fate-zmbv-8bit
-fate-zmbv-8bit: CMD = framecrc  -i $(SAMPLES)/zmbv/wc2_001-partial.avi -an -pix_fmt rgb24
diff --git a/tests/fate/ac3.mak b/tests/fate/ac3.mak
new file mode 100644 (file)
index 0000000..255479a
--- /dev/null
@@ -0,0 +1,29 @@
+FATE_TESTS += fate-ac3-2.0
+fate-ac3-2.0: CMD = pcm -i $(SAMPLES)/ac3/monsters_inc_2.0_192_small.ac3
+fate-ac3-2.0: CMP = oneoff
+fate-ac3-2.0: REF = $(SAMPLES)/ac3/monsters_inc_2.0_192_small.pcm
+
+FATE_TESTS += fate-ac3-5.1
+fate-ac3-5.1: CMD = pcm -i $(SAMPLES)/ac3/monsters_inc_5.1_448_small.ac3
+fate-ac3-5.1: CMP = oneoff
+fate-ac3-5.1: REF = $(SAMPLES)/ac3/monsters_inc_5.1_448_small.pcm
+
+FATE_TESTS += fate-eac3-1
+fate-eac3-1: CMD = pcm -i $(SAMPLES)/eac3/csi_miami_5.1_256_spx_small.eac3
+fate-eac3-1: CMP = oneoff
+fate-eac3-1: REF = $(SAMPLES)/eac3/csi_miami_5.1_256_spx_small.pcm
+
+FATE_TESTS += fate-eac3-2
+fate-eac3-2: CMD = pcm -i $(SAMPLES)/eac3/csi_miami_stereo_128_spx_small.eac3
+fate-eac3-2: CMP = oneoff
+fate-eac3-2: REF = $(SAMPLES)/eac3/csi_miami_stereo_128_spx_small.pcm
+
+FATE_TESTS += fate-eac3-3
+fate-eac3-3: CMD = pcm -i $(SAMPLES)/eac3/matrix2_commentary1_stereo_192_small.eac3
+fate-eac3-3: CMP = oneoff
+fate-eac3-3: REF = $(SAMPLES)/eac3/matrix2_commentary1_stereo_192_small.pcm
+
+FATE_TESTS += fate-eac3-4
+fate-eac3-4: CMD = pcm -i $(SAMPLES)/eac3/serenity_english_5.1_1536_small.eac3
+fate-eac3-4: CMP = oneoff
+fate-eac3-4: REF = $(SAMPLES)/eac3/serenity_english_5.1_1536_small.pcm
diff --git a/tests/fate/image.mak b/tests/fate/image.mak
new file mode 100644 (file)
index 0000000..db52bd2
--- /dev/null
@@ -0,0 +1,32 @@
+FATE_TESTS += fate-dpx
+fate-dpx: CMD = framecrc  -i $(SAMPLES)/dpx/lighthouse_rgb48.dpx
+
+FATE_TESTS += fate-fax-g3
+fate-fax-g3: CMD = framecrc -i $(SAMPLES)/CCITT_fax/G31D.TIF
+
+FATE_TESTS += fate-fax-g3s
+fate-fax-g3s: CMD = framecrc -i $(SAMPLES)/CCITT_fax/G31DS.TIF
+
+FATE_TESTS += fate-pictor
+fate-pictor: CMD = framecrc -i $(SAMPLES)/pictor/MFISH.PIC -pix_fmt rgb24
+
+FATE_TESTS += fate-ptx
+fate-ptx: CMD = framecrc  -i $(SAMPLES)/ptx/_113kw_pic.ptx -pix_fmt rgb24
+
+FATE_TESTS += fate-sunraster-1bit-raw
+fate-sunraster-1bit-raw: CMD = framecrc  -i $(SAMPLES)/sunraster/lena-1bit-raw.sun
+
+FATE_TESTS += fate-sunraster-1bit-rle
+fate-sunraster-1bit-rle: CMD = framecrc  -i $(SAMPLES)/sunraster/lena-1bit-rle.sun
+
+FATE_TESTS += fate-sunraster-8bit-raw
+fate-sunraster-8bit-raw: CMD = framecrc  -i $(SAMPLES)/sunraster/lena-8bit-raw.sun -pix_fmt rgb24
+
+FATE_TESTS += fate-sunraster-8bit-rle
+fate-sunraster-8bit-rle: CMD = framecrc  -i $(SAMPLES)/sunraster/lena-8bit-rle.sun -pix_fmt rgb24
+
+FATE_TESTS += fate-sunraster-24bit-raw
+fate-sunraster-24bit-raw: CMD = framecrc  -i $(SAMPLES)/sunraster/lena-24bit-raw.sun
+
+FATE_TESTS += fate-sunraster-24bit-rle
+fate-sunraster-24bit-rle: CMD = framecrc  -i $(SAMPLES)/sunraster/lena-24bit-rle.sun
diff --git a/tests/fate/lossless-audio.mak b/tests/fate/lossless-audio.mak
new file mode 100644 (file)
index 0000000..e735597
--- /dev/null
@@ -0,0 +1,17 @@
+FATE_TESTS += fate-lossless-appleaudio
+fate-lossless-appleaudio: CMD = md5  -i $(SAMPLES)/lossless-audio/inside.m4a -f s16le
+
+FATE_TESTS += fate-lossless-meridianaudio
+fate-lossless-meridianaudio: CMD = md5  -i $(SAMPLES)/lossless-audio/luckynight-partial.mlp -f s16le
+
+FATE_TESTS += fate-lossless-monkeysaudio
+fate-lossless-monkeysaudio: CMD = md5  -i $(SAMPLES)/lossless-audio/luckynight-partial.ape -f s16le
+
+FATE_TESTS += fate-lossless-shortenaudio
+fate-lossless-shortenaudio: CMD = md5  -i $(SAMPLES)/lossless-audio/luckynight-partial.shn -f s16le
+
+FATE_TESTS += fate-lossless-tta
+fate-lossless-tta: CMD = crc  -i $(SAMPLES)/lossless-audio/inside.tta
+
+FATE_TESTS += fate-lossless-wavpackaudio
+fate-lossless-wavpackaudio: CMD = md5  -i $(SAMPLES)/lossless-audio/luckynight-partial.wv -f s16le
diff --git a/tests/fate/lossless-video.mak b/tests/fate/lossless-video.mak
new file mode 100644 (file)
index 0000000..0d1e2b8
--- /dev/null
@@ -0,0 +1,17 @@
+FATE_TESTS += fate-loco-rgb
+fate-loco-rgb: CMD = framecrc  -i $(SAMPLES)/loco/pig-loco-rgb.avi
+
+FATE_TESTS += fate-loco-yuy2
+fate-loco-yuy2: CMD = framecrc  -i $(SAMPLES)/loco/pig-loco-0.avi
+
+FATE_TESTS += fate-msrle-8bit
+fate-msrle-8bit: CMD = framecrc  -i $(SAMPLES)/msrle/Search-RLE.avi -pix_fmt rgb24
+
+FATE_TESTS += fate-mszh
+fate-mszh: CMD = framecrc  -i $(SAMPLES)/lcl/mszh-1frame.avi
+
+FATE_TESTS += fate-vble
+fate-vble: CMD = framecrc -i $(SAMPLES)/vble/flowers-partial-2MB.avi
+
+FATE_TESTS += fate-zlib
+fate-zlib: CMD = framecrc  -i $(SAMPLES)/lcl/zlib-1frame.avi
diff --git a/tests/fate/qtrle.mak b/tests/fate/qtrle.mak
new file mode 100644 (file)
index 0000000..4856fe7
--- /dev/null
@@ -0,0 +1,20 @@
+FATE_TESTS += fate-qtrle-1bit
+fate-qtrle-1bit: CMD = framecrc  -i $(SAMPLES)/qtrle/Animation-Monochrome.mov
+
+FATE_TESTS += fate-qtrle-2bit
+fate-qtrle-2bit: CMD = framecrc  -i $(SAMPLES)/qtrle/Animation-4Greys.mov -pix_fmt rgb24
+
+FATE_TESTS += fate-qtrle-4bit
+fate-qtrle-4bit: CMD = framecrc  -i $(SAMPLES)/qtrle/Animation-16Greys.mov -pix_fmt rgb24 -an
+
+FATE_TESTS += fate-qtrle-8bit
+fate-qtrle-8bit: CMD = framecrc  -i $(SAMPLES)/qtrle/criticalpath-credits.mov -vsync 0 -pix_fmt rgb24 -an
+
+FATE_TESTS += fate-qtrle-16bit
+fate-qtrle-16bit: CMD = framecrc  -i $(SAMPLES)/qtrle/mr-cork-rle.mov -pix_fmt rgb24
+
+FATE_TESTS += fate-qtrle-24bit
+fate-qtrle-24bit: CMD = framecrc  -i $(SAMPLES)/qtrle/aletrek-rle.mov -vsync 0
+
+FATE_TESTS += fate-qtrle-32bit
+fate-qtrle-32bit: CMD = framecrc  -i $(SAMPLES)/qtrle/ultra_demo_720_480_32bpp_rle.mov -pix_fmt rgb24
diff --git a/tests/fate/real.mak b/tests/fate/real.mak
new file mode 100644 (file)
index 0000000..b1ff507
--- /dev/null
@@ -0,0 +1,39 @@
+FATE_TESTS += fate-real-14_4
+fate-real-14_4: CMD = md5  -i $(SAMPLES)/real/ra3_in_rm_file.rm -f s16le
+
+FATE_TESTS += fate-ra-288
+fate-ra-288: CMD = pcm -i $(SAMPLES)/real/ra_288.rm
+fate-ra-288: CMP = oneoff
+fate-ra-288: REF = $(SAMPLES)/real/ra_288.pcm
+fate-ra-288: FUZZ = 2
+
+FATE_TESTS += fate-ra-cook
+fate-ra-cook: CMD = pcm -i $(SAMPLES)/real/ra_cook.rm
+fate-ra-cook: CMP = oneoff
+fate-ra-cook: REF = $(SAMPLES)/real/ra_cook.pcm
+
+FATE_TESTS += fate-rv30
+fate-rv30: CMD = framecrc -flags +bitexact -dct fastint -idct simple -i $(SAMPLES)/real/rv30.rm -an
+
+FATE_TESTS += fate-real-rv40
+fate-real-rv40: CMD = framecrc  -i $(SAMPLES)/real/spygames-2MB.rmvb -t 10 -an -vsync 0
+
+FATE_TESTS += fate-sipr-5k0
+fate-sipr-5k0: CMD = pcm -i $(SAMPLES)/sipr/sipr_5k0.rm
+fate-sipr-5k0: CMP = oneoff
+fate-sipr-5k0: REF = $(SAMPLES)/sipr/sipr_5k0.pcm
+
+FATE_TESTS += fate-sipr-6k5
+fate-sipr-6k5: CMD = pcm -i $(SAMPLES)/sipr/sipr_6k5.rm
+fate-sipr-6k5: CMP = oneoff
+fate-sipr-6k5: REF = $(SAMPLES)/sipr/sipr_6k5.pcm
+
+FATE_TESTS += fate-sipr-8k5
+fate-sipr-8k5: CMD = pcm -i $(SAMPLES)/sipr/sipr_8k5.rm
+fate-sipr-8k5: CMP = oneoff
+fate-sipr-8k5: REF = $(SAMPLES)/sipr/sipr_8k5.pcm
+
+FATE_TESTS += fate-sipr-16k
+fate-sipr-16k: CMD = pcm -i $(SAMPLES)/sipr/sipr_16k.rm
+fate-sipr-16k: CMP = oneoff
+fate-sipr-16k: REF = $(SAMPLES)/sipr/sipr_16k.pcm
diff --git a/tests/fate/screen.mak b/tests/fate/screen.mak
new file mode 100644 (file)
index 0000000..a296b00
--- /dev/null
@@ -0,0 +1,44 @@
+FATE_TESTS += fate-cscd
+fate-cscd: CMD = framecrc  -i $(SAMPLES)/CSCD/sample_video.avi -an -vsync 0 -pix_fmt rgb24
+
+FATE_TESTS += fate-fraps-v0
+fate-fraps-v0: CMD = framecrc  -i $(SAMPLES)/fraps/Griffin_Ragdoll01-partial.avi
+
+FATE_TESTS += fate-fraps-v1
+fate-fraps-v1: CMD = framecrc  -i $(SAMPLES)/fraps/sample-v1.avi -an
+
+FATE_TESTS += fate-fraps-v2
+fate-fraps-v2: CMD = framecrc  -i $(SAMPLES)/fraps/test3-nosound-partial.avi
+
+FATE_TESTS += fate-fraps-v3
+fate-fraps-v3: CMD = framecrc  -i $(SAMPLES)/fraps/psclient-partial.avi -pix_fmt rgb24
+
+FATE_TESTS += fate-fraps-v4
+fate-fraps-v4: CMD = framecrc  -i $(SAMPLES)/fraps/WoW_2006-11-03_14-58-17-19-nosound-partial.avi
+
+FATE_TESTS += fate-fraps-v5
+fate-fraps-v5: CMD = framecrc  -i $(SAMPLES)/fraps/fraps-v5-bouncing-balls-partial.avi
+
+FATE_TESTS += fate-tscc-15bit
+fate-tscc-15bit: CMD = framecrc  -i $(SAMPLES)/tscc/oneminute.avi -t 15 -pix_fmt rgb24
+
+FATE_TESTS += fate-tscc-32bit
+fate-tscc-32bit: CMD = framecrc  -i $(SAMPLES)/tscc/2004-12-17-uebung9-partial.avi -pix_fmt rgb24 -an
+
+FATE_TESTS += fate-vmnc-16bit
+fate-vmnc-16bit: CMD = framecrc  -i $(SAMPLES)/VMnc/test.avi -pix_fmt rgb24
+
+FATE_TESTS += fate-vmnc-32bit
+fate-vmnc-32bit: CMD = framecrc  -i $(SAMPLES)/VMnc/VS2k5DebugDemo-01-partial.avi -pix_fmt rgb24
+
+FATE_TESTS += fate-zmbv-8bit
+fate-zmbv-8bit: CMD = framecrc  -i $(SAMPLES)/zmbv/wc2_001-partial.avi -an -pix_fmt rgb24
+
+FATE_TESTS += fate-zmbv-15bit
+fate-zmbv-15bit: CMD = framecrc  -i $(SAMPLES)/zmbv/zmbv_15bit.avi -pix_fmt rgb24 -t 25
+
+FATE_TESTS += fate-zmbv-16bit
+fate-zmbv-16bit: CMD = framecrc  -i $(SAMPLES)/zmbv/zmbv_16bit.avi -pix_fmt rgb24 -t 25
+
+FATE_TESTS += fate-zmbv-32bit
+fate-zmbv-32bit: CMD = framecrc  -i $(SAMPLES)/zmbv/zmbv_32bit.avi -pix_fmt rgb24 -t 25
diff --git a/tests/fate/utvideo.mak b/tests/fate/utvideo.mak
new file mode 100644 (file)
index 0000000..6ff0025
--- /dev/null
@@ -0,0 +1,23 @@
+FATE_TESTS += fate-utvideo_rgba_left
+fate-utvideo_rgba_left: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_rgba_left.avi
+
+FATE_TESTS += fate-utvideo_rgba_median
+fate-utvideo_rgba_median: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_rgba_median.avi
+
+FATE_TESTS += fate-utvideo_rgb_left
+fate-utvideo_rgb_left: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_rgb_left.avi
+
+FATE_TESTS += fate-utvideo_rgb_median
+fate-utvideo_rgb_median: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_rgb_median.avi
+
+FATE_TESTS += fate-utvideo_yuv420_left
+fate-utvideo_yuv420_left: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_yuv420_left.avi
+
+FATE_TESTS += fate-utvideo_yuv420_median
+fate-utvideo_yuv420_median: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_yuv420_median.avi
+
+FATE_TESTS += fate-utvideo_yuv422_left
+fate-utvideo_yuv422_left: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_yuv422_left.avi
+
+FATE_TESTS += fate-utvideo_yuv422_median
+fate-utvideo_yuv422_median: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_yuv422_median.avi
diff --git a/tests/fate/wma.mak b/tests/fate/wma.mak
new file mode 100644 (file)
index 0000000..25626f3
--- /dev/null
@@ -0,0 +1,27 @@
+FATE_TESTS += fate-wmapro-2ch
+fate-wmapro-2ch: CMD = pcm -i $(SAMPLES)/wmapro/Beethovens_9th-1_small.wma
+fate-wmapro-2ch: CMP = oneoff
+fate-wmapro-2ch: REF = $(SAMPLES)/wmapro/Beethovens_9th-1_small.pcm
+
+FATE_TESTS += fate-wmapro-5.1
+fate-wmapro-5.1: CMD = pcm -i $(SAMPLES)/wmapro/latin_192_mulitchannel_cut.wma
+fate-wmapro-5.1: CMP = oneoff
+fate-wmapro-5.1: REF = $(SAMPLES)/wmapro/latin_192_mulitchannel_cut.pcm
+
+FATE_TESTS += fate-wmavoice-7k
+fate-wmavoice-7k: CMD = pcm -i $(SAMPLES)/wmavoice/streaming_CBR-7K.wma
+fate-wmavoice-7k: CMP = stddev
+fate-wmavoice-7k: REF = $(SAMPLES)/wmavoice/streaming_CBR-7K.pcm
+fate-wmavoice-7k: FUZZ = 3
+
+FATE_TESTS += fate-wmavoice-11k
+fate-wmavoice-11k: CMD = pcm -i $(SAMPLES)/wmavoice/streaming_CBR-11K.wma
+fate-wmavoice-11k: CMP = stddev
+fate-wmavoice-11k: REF = $(SAMPLES)/wmavoice/streaming_CBR-11K.pcm
+fate-wmavoice-11k: FUZZ = 3
+
+FATE_TESTS += fate-wmavoice-19k
+fate-wmavoice-19k: CMD = pcm -i $(SAMPLES)/wmavoice/streaming_CBR-19K.wma
+fate-wmavoice-19k: CMP = stddev
+fate-wmavoice-19k: REF = $(SAMPLES)/wmavoice/streaming_CBR-19K.pcm
+fate-wmavoice-19k: FUZZ = 3
index 35583e4..b0591a3 100644 (file)
@@ -3,37 +3,6 @@ fate-twinvq: CMD = pcm -i $(SAMPLES)/vqf/achterba.vqf
 fate-twinvq: CMP = oneoff
 fate-twinvq: REF = $(SAMPLES)/vqf/achterba.pcm
 
-FATE_TESTS += fate-sipr-16k
-fate-sipr-16k: CMD = pcm -i $(SAMPLES)/sipr/sipr_16k.rm
-fate-sipr-16k: CMP = oneoff
-fate-sipr-16k: REF = $(SAMPLES)/sipr/sipr_16k.pcm
-
-FATE_TESTS += fate-sipr-8k5
-fate-sipr-8k5: CMD = pcm -i $(SAMPLES)/sipr/sipr_8k5.rm
-fate-sipr-8k5: CMP = oneoff
-fate-sipr-8k5: REF = $(SAMPLES)/sipr/sipr_8k5.pcm
-
-FATE_TESTS += fate-sipr-6k5
-fate-sipr-6k5: CMD = pcm -i $(SAMPLES)/sipr/sipr_6k5.rm
-fate-sipr-6k5: CMP = oneoff
-fate-sipr-6k5: REF = $(SAMPLES)/sipr/sipr_6k5.pcm
-
-FATE_TESTS += fate-sipr-5k0
-fate-sipr-5k0: CMD = pcm -i $(SAMPLES)/sipr/sipr_5k0.rm
-fate-sipr-5k0: CMP = oneoff
-fate-sipr-5k0: REF = $(SAMPLES)/sipr/sipr_5k0.pcm
-
-FATE_TESTS += fate-ra-288
-fate-ra-288: CMD = pcm -i $(SAMPLES)/real/ra_288.rm
-fate-ra-288: CMP = oneoff
-fate-ra-288: REF = $(SAMPLES)/real/ra_288.pcm
-fate-ra-288: FUZZ = 2
-
-FATE_TESTS += fate-ra-cook
-fate-ra-cook: CMD = pcm -i $(SAMPLES)/real/ra_cook.rm
-fate-ra-cook: CMP = oneoff
-fate-ra-cook: REF = $(SAMPLES)/real/ra_cook.pcm
-
 FATE_TESTS += fate-mpeg2-field-enc
 fate-mpeg2-field-enc: CMD = framecrc -flags +bitexact -dct fastint -idct simple -i $(SAMPLES)/mpeg2/mpeg2_field_encoding.ts -an
 
@@ -56,9 +25,6 @@ fate-imc: REF = $(SAMPLES)/imc/imc.pcm
 FATE_TESTS += fate-yop
 fate-yop: CMD = framecrc -i $(SAMPLES)/yop/test1.yop -pix_fmt rgb24 -an
 
-FATE_TESTS += fate-pictor
-fate-pictor: CMD = framecrc -i $(SAMPLES)/pictor/MFISH.PIC -pix_fmt rgb24 -an
-
 FATE_TESTS += fate-dts
 fate-dts: CMD = pcm -i $(SAMPLES)/dts/dts.ts
 fate-dts: CMP = oneoff
@@ -74,36 +40,6 @@ fate-truespeech: CMD = pcm -i $(SAMPLES)/truespeech/a6.wav
 fate-truespeech: CMP = oneoff
 fate-truespeech: REF = $(SAMPLES)/truespeech/a6.pcm
 
-FATE_TESTS += fate-ac3-2.0
-fate-ac3-2.0: CMD = pcm -i $(SAMPLES)/ac3/monsters_inc_2.0_192_small.ac3
-fate-ac3-2.0: CMP = oneoff
-fate-ac3-2.0: REF = $(SAMPLES)/ac3/monsters_inc_2.0_192_small.pcm
-
-FATE_TESTS += fate-ac3-5.1
-fate-ac3-5.1: CMD = pcm -i $(SAMPLES)/ac3/monsters_inc_5.1_448_small.ac3
-fate-ac3-5.1: CMP = oneoff
-fate-ac3-5.1: REF = $(SAMPLES)/ac3/monsters_inc_5.1_448_small.pcm
-
-FATE_TESTS += fate-eac3-1
-fate-eac3-1: CMD = pcm -i $(SAMPLES)/eac3/csi_miami_5.1_256_spx_small.eac3
-fate-eac3-1: CMP = oneoff
-fate-eac3-1: REF = $(SAMPLES)/eac3/csi_miami_5.1_256_spx_small.pcm
-
-FATE_TESTS += fate-eac3-2
-fate-eac3-2: CMD = pcm -i $(SAMPLES)/eac3/csi_miami_stereo_128_spx_small.eac3
-fate-eac3-2: CMP = oneoff
-fate-eac3-2: REF = $(SAMPLES)/eac3/csi_miami_stereo_128_spx_small.pcm
-
-FATE_TESTS += fate-eac3-3
-fate-eac3-3: CMD = pcm -i $(SAMPLES)/eac3/matrix2_commentary1_stereo_192_small.eac3
-fate-eac3-3: CMP = oneoff
-fate-eac3-3: REF = $(SAMPLES)/eac3/matrix2_commentary1_stereo_192_small.pcm
-
-FATE_TESTS += fate-eac3-4
-fate-eac3-4: CMD = pcm -i $(SAMPLES)/eac3/serenity_english_5.1_1536_small.eac3
-fate-eac3-4: CMP = oneoff
-fate-eac3-4: REF = $(SAMPLES)/eac3/serenity_english_5.1_1536_small.pcm
-
 FATE_TESTS += fate-atrac1
 fate-atrac1: CMD = pcm -i $(SAMPLES)/atrac1/test_tones_small.aea
 fate-atrac1: CMP = oneoff
@@ -140,34 +76,6 @@ fate-g722enc: CMD = md5 -ar 16000 -ac 1 -f s16le -i $(TARGET_PATH)/tests/data/as
 FATE_TESTS += fate-msmpeg4v1
 fate-msmpeg4v1: CMD = framecrc -flags +bitexact -dct fastint -idct simple -i $(SAMPLES)/msmpeg4v1/mpg4.avi -an
 
-FATE_TESTS += fate-wmavoice-7k
-fate-wmavoice-7k: CMD = pcm -i $(SAMPLES)/wmavoice/streaming_CBR-7K.wma
-fate-wmavoice-7k: CMP = stddev
-fate-wmavoice-7k: REF = $(SAMPLES)/wmavoice/streaming_CBR-7K.pcm
-fate-wmavoice-7k: FUZZ = 3
-
-FATE_TESTS += fate-wmavoice-11k
-fate-wmavoice-11k: CMD = pcm -i $(SAMPLES)/wmavoice/streaming_CBR-11K.wma
-fate-wmavoice-11k: CMP = stddev
-fate-wmavoice-11k: REF = $(SAMPLES)/wmavoice/streaming_CBR-11K.pcm
-fate-wmavoice-11k: FUZZ = 3
-
-FATE_TESTS += fate-wmavoice-19k
-fate-wmavoice-19k: CMD = pcm -i $(SAMPLES)/wmavoice/streaming_CBR-19K.wma
-fate-wmavoice-19k: CMP = stddev
-fate-wmavoice-19k: REF = $(SAMPLES)/wmavoice/streaming_CBR-19K.pcm
-fate-wmavoice-19k: FUZZ = 3
-
-FATE_TESTS += fate-wmapro-5.1
-fate-wmapro-5.1: CMD = pcm -i $(SAMPLES)/wmapro/latin_192_mulitchannel_cut.wma
-fate-wmapro-5.1: CMP = oneoff
-fate-wmapro-5.1: REF = $(SAMPLES)/wmapro/latin_192_mulitchannel_cut.pcm
-
-FATE_TESTS += fate-wmapro-2ch
-fate-wmapro-2ch: CMD = pcm -i $(SAMPLES)/wmapro/Beethovens_9th-1_small.wma
-fate-wmapro-2ch: CMP = oneoff
-fate-wmapro-2ch: REF = $(SAMPLES)/wmapro/Beethovens_9th-1_small.pcm
-
 FATE_TESTS += fate-ansi
 fate-ansi: CMD = framecrc -chars_per_frame 44100 -i $(SAMPLES)/ansi/TRE-IOM5.ANS -pix_fmt rgb24
 
@@ -199,12 +107,6 @@ fate-txd-16bpp: CMD = framecrc -i $(SAMPLES)/txd/misc.txd -pix_fmt bgra -an
 FATE_TESTS += fate-vp3
 fate-vp3: CMD = framecrc -i $(SAMPLES)/vp3/vp31.avi
 
-FATE_TESTS += fate-fax-g3
-fate-fax-g3: CMD = framecrc -i $(SAMPLES)/CCITT_fax/G31D.TIF
-
-FATE_TESTS += fate-fax-g3s
-fate-fax-g3s: CMD = framecrc -i $(SAMPLES)/CCITT_fax/G31DS.TIF
-
 FATE_TESTS += fate-ws_snd
 fate-ws_snd: CMD = md5  -i $(SAMPLES)/vqa/ws_snd.vqa -f s16le
 
@@ -214,9 +116,6 @@ fate-dxa-scummvm: CMD = framecrc -i $(SAMPLES)/dxa/scummvm.dxa -pix_fmt rgb24
 FATE_TESTS += fate-mjpegb
 fate-mjpegb: CMD = framecrc -idct simple -flags +bitexact -i $(SAMPLES)/mjpegb/mjpegb_part.mov -an
 
-FATE_TESTS += fate-rv30
-fate-rv30: CMD = framecrc -flags +bitexact -dct fastint -idct simple -i $(SAMPLES)/real/rv30.rm -an
-
 FATE_TESTS += fate-musepack7
 fate-musepack7: CMD = pcm -i $(SAMPLES)/musepack/inside-mp7.mpc
 fate-musepack7: CMP = oneoff
@@ -227,33 +126,6 @@ FATE_TESTS += fate-iirfilter
 fate-iirfilter: libavcodec/iirfilter-test$(EXESUF)
 fate-iirfilter: CMD = run libavcodec/iirfilter-test
 
-FATE_TESTS += fate-vble
-fate-vble: CMD = framecrc -i $(SAMPLES)/vble/flowers-partial-2MB.avi
-
-FATE_TESTS += fate-utvideo_rgba_left
-fate-utvideo_rgba_left: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_rgba_left.avi
-
-FATE_TESTS += fate-utvideo_rgba_median
-fate-utvideo_rgba_median: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_rgba_median.avi
-
-FATE_TESTS += fate-utvideo_rgb_left
-fate-utvideo_rgb_left: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_rgb_left.avi
-
-FATE_TESTS += fate-utvideo_rgb_median
-fate-utvideo_rgb_median: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_rgb_median.avi
-
-FATE_TESTS += fate-utvideo_yuv420_left
-fate-utvideo_yuv420_left: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_yuv420_left.avi
-
-FATE_TESTS += fate-utvideo_yuv420_median
-fate-utvideo_yuv420_median: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_yuv420_median.avi
-
-FATE_TESTS += fate-utvideo_yuv422_left
-fate-utvideo_yuv422_left: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_yuv422_left.avi
-
-FATE_TESTS += fate-utvideo_yuv422_median
-fate-utvideo_yuv422_median: CMD = framecrc -i $(SAMPLES)/utvideo/utvideo_yuv422_median.avi
-
 FATE_TESTS += fate-v410dec
 fate-v410dec: CMD = framecrc -i $(SAMPLES)/v410/lenav410.mov -pix_fmt yuv444p10le