diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-12-14 23:58:10 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-12-14 23:58:10 +0100 |
commit | e462257242fc037c99206457d1316e1ff9e5306f (patch) | |
tree | 045910517a8b587f7a016b1c46403e1d1021f4f2 | |
parent | a1be5bc79d7ac4c7c7ed79c4d72b4f1945ecb55c (diff) | |
parent | 115a57302a7d6661426304bec3a5bc72d0edf4b0 (diff) | |
download | ffmpeg-e462257242fc037c99206457d1316e1ff9e5306f.tar.gz |
Merge remote-tracking branch 'qatar/master'
* 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, 718 insertions, 473 deletions
@@ -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)))) @@ -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! */ diff --git a/doc/general.texi b/doc/general.texi index d2bcd53f10..9bac4d2192 100644 --- a/doc/general.texi +++ b/doc/general.texi @@ -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. diff --git a/libavcodec/arm/asm.S b/libavcodec/arm/asm.S index d711cb8f11..2daac59242 100644 --- a/libavcodec/arm/asm.S +++ b/libavcodec/arm/asm.S @@ -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 diff --git a/libavcodec/arm/rv40dsp_init_neon.c b/libavcodec/arm/rv40dsp_init_neon.c index 36d75e6fd8..59dddb6605 100644 --- a/libavcodec/arm/rv40dsp_init_neon.c +++ b/libavcodec/arm/rv40dsp_init_neon.c @@ -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; } diff --git a/libavcodec/arm/rv40dsp_neon.S b/libavcodec/arm/rv40dsp_neon.S index 07ba8428c1..a4313d89f9 100644 --- a/libavcodec/arm/rv40dsp_neon.S +++ b/libavcodec/arm/rv40dsp_neon.S @@ -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 diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 4290f8b4be..5a0e0ed380 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -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 diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c index 9b34690e17..ff3d05c514 100644 --- a/libavcodec/h261dec.c +++ b/libavcodec/h261dec.c @@ -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]; } diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index 9bad8e6c74..0d741d80c2 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -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]; } diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index 2b792642c5..8924046dc4 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -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) diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 40dea427d4..83c4932d5b 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -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; diff --git a/libavcodec/rv34dsp.h b/libavcodec/rv34dsp.h index cf6e14d305..01352ea793 100644 --- a/libavcodec/rv34dsp.h +++ b/libavcodec/rv34dsp.h @@ -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); diff --git a/libavcodec/rv40.c b/libavcodec/rv40.c index 8dd78f1fb8..fe104c1908 100644 --- a/libavcodec/rv40.c +++ b/libavcodec/rv40.c @@ -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); } } } diff --git a/libavcodec/rv40dsp.c b/libavcodec/rv40dsp.c index 1fc247e88b..913ced046d 100644 --- a/libavcodec/rv40dsp.c +++ b/libavcodec/rv40dsp.c @@ -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); diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c index 4dab137eb7..771574df78 100644 --- a/libavcodec/vc1dec.c +++ b/libavcodec/vc1dec.c @@ -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]; } diff --git a/libavcodec/version.h b/libavcodec/version.h index 870d7e0a30..84d4dadfa1 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -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, \ diff --git a/libavcodec/x86/Makefile b/libavcodec/x86/Makefile index 4b85514676..48ff39b0a8 100644 --- a/libavcodec/x86/Makefile +++ b/libavcodec/x86/Makefile @@ -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) diff --git a/libavcodec/x86/dsputil_mmx.c b/libavcodec/x86/dsputil_mmx.c index a27c3b53d6..75bcae8110 100644 --- a/libavcodec/x86/dsputil_mmx.c +++ b/libavcodec/x86/dsputil_mmx.c @@ -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; } diff --git a/libavformat/applehttp.c b/libavformat/applehttp.c index be8ea32416..99febc6d95 100644 --- a/libavformat/applehttp.c +++ b/libavformat/applehttp.c @@ -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) diff --git a/subdir.mak b/library.mak index 3589dfb7d6..3589dfb7d6 100644 --- a/subdir.mak +++ b/library.mak diff --git a/libswscale/x86/scale.asm b/libswscale/x86/scale.asm index e8a5e5cd7c..14e2fb8406 100644 --- a/libswscale/x86/scale.asm +++ b/libswscale/x86/scale.asm @@ -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 diff --git a/libswscale/x86/swscale_mmx.c b/libswscale/x86/swscale_mmx.c index e46da770ae..7cac5d80fd 100644 --- a/libswscale/x86/swscale_mmx.c +++ b/libswscale/x86/swscale_mmx.c @@ -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 diff --git a/tests/Makefile b/tests/Makefile index cddaa7cf74..640e6300cc 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -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-%) diff --git a/tests/fate.mak b/tests/fate.mak index 341b85ce7d..81c5c33fa3 100644 --- a/tests/fate.mak +++ b/tests/fate.mak @@ -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 index 0000000000..255479ad43 --- /dev/null +++ b/tests/fate/ac3.mak @@ -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 index 0000000000..db52bd29dc --- /dev/null +++ b/tests/fate/image.mak @@ -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 index 0000000000..e73559743e --- /dev/null +++ b/tests/fate/lossless-audio.mak @@ -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 index 0000000000..0d1e2b88e1 --- /dev/null +++ b/tests/fate/lossless-video.mak @@ -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 index 0000000000..4856fe7b96 --- /dev/null +++ b/tests/fate/qtrle.mak @@ -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 index 0000000000..b1ff50713b --- /dev/null +++ b/tests/fate/real.mak @@ -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 index 0000000000..a296b00eb0 --- /dev/null +++ b/tests/fate/screen.mak @@ -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 index 0000000000..6ff0025686 --- /dev/null +++ b/tests/fate/utvideo.mak @@ -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 index 0000000000..25626f3db6 --- /dev/null +++ b/tests/fate/wma.mak @@ -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 diff --git a/tests/fate2.mak b/tests/fate2.mak index 35583e40ab..b0591a3314 100644 --- a/tests/fate2.mak +++ b/tests/fate2.mak @@ -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 diff --git a/tests/ref/fate/aac-demux b/tests/ref/fate/adts-demux index 744ae64da4..744ae64da4 100644 --- a/tests/ref/fate/aac-demux +++ b/tests/ref/fate/adts-demux |