Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-11-29 16:45:57 +0400
committerMichael Niedermayer <michaelni@gmx.at>2012-11-29 16:45:57 +0400
commit076300bf8b43d5d56a91cd2ad845d596969c87cf (patch)
tree487b8a917a0125e4cc086ccbcf575727ebb0b289
parent7dc0ed80e877a16a11ba45d747723d88e8a92cd8 (diff)
parentbfe5454cd238b16e7977085f880205229103eccb (diff)
Merge commit 'bfe5454cd238b16e7977085f880205229103eccb'
* commit 'bfe5454cd238b16e7977085f880205229103eccb': lavf: move ff_codec_get_tag() and ff_codec_get_id() definitions to internal.h lavf: move "MP3 " fourcc from riff to nut fate: vpx: Add dependencies fate: Fix wavpack-matroskamode test dependencies x86: dsputilenc: port to cpuflags Conflicts: libavformat/internal.h libavformat/nut.c tests/fate/vpx.mak Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/x86/dsputilenc.asm112
-rw-r--r--libavformat/aiff.h2
-rw-r--r--libavformat/au.c1
-rw-r--r--libavformat/cafdec.c1
-rw-r--r--libavformat/gxfenc.c1
-rw-r--r--libavformat/internal.h4
-rw-r--r--libavformat/isom.c1
-rw-r--r--libavformat/lxfdec.c1
-rw-r--r--libavformat/nsvdec.c1
-rw-r--r--libavformat/nut.c1
-rw-r--r--libavformat/nut.h2
-rw-r--r--libavformat/nutdec.c1
-rw-r--r--libavformat/nutenc.c1
-rw-r--r--libavformat/omadec.c1
-rw-r--r--libavformat/riff.c1
-rw-r--r--libavformat/riff.h2
-rw-r--r--libavformat/rmdec.c1
-rw-r--r--libavformat/rsodec.c1
-rw-r--r--libavformat/smjpegenc.c1
-rw-r--r--libavformat/swf.h2
-rw-r--r--libavformat/voc.h2
-rw-r--r--tests/fate/vpx.mak32
-rw-r--r--tests/fate/wavpack.mak8
23 files changed, 87 insertions, 93 deletions
diff --git a/libavcodec/x86/dsputilenc.asm b/libavcodec/x86/dsputilenc.asm
index ff9733fec3..3e7990d0a8 100644
--- a/libavcodec/x86/dsputilenc.asm
+++ b/libavcodec/x86/dsputilenc.asm
@@ -99,35 +99,33 @@ SECTION .text
paddusw m0, m1
%endmacro
-; FIXME: HSUM_* saturates at 64k, while an 8x8 hadamard or dct block can get up to
+; FIXME: HSUM saturates at 64k, while an 8x8 hadamard or dct block can get up to
; about 100k on extreme inputs. But that's very unlikely to occur in natural video,
; and it's even more unlikely to not have any alternative mvs/modes with lower cost.
-%macro HSUM_MMX 3
- mova %2, %1
- psrlq %1, 32
+%macro HSUM 3
+%if cpuflag(sse2)
+ movhlps %2, %1
paddusw %1, %2
- mova %2, %1
- psrlq %1, 16
+ pshuflw %2, %1, 0xE
+ paddusw %1, %2
+ pshuflw %2, %1, 0x1
paddusw %1, %2
movd %3, %1
-%endmacro
-
-%macro HSUM_MMXEXT 3
+%elif cpuflag(mmxext)
pshufw %2, %1, 0xE
paddusw %1, %2
pshufw %2, %1, 0x1
paddusw %1, %2
movd %3, %1
-%endmacro
-
-%macro HSUM_SSE2 3
- movhlps %2, %1
- paddusw %1, %2
- pshuflw %2, %1, 0xE
+%elif cpuflag(mmx)
+ mova %2, %1
+ psrlq %1, 32
paddusw %1, %2
- pshuflw %2, %1, 0x1
+ mova %2, %1
+ psrlq %1, 16
paddusw %1, %2
movd %3, %1
+%endif
%endmacro
%macro STORE4 5
@@ -144,30 +142,30 @@ SECTION .text
mova %5, [%1+mmsize*3]
%endmacro
-%macro hadamard8_16_wrapper 3
-cglobal hadamard8_diff_%1, 4, 4, %2
+%macro hadamard8_16_wrapper 2
+cglobal hadamard8_diff, 4, 4, %1
%ifndef m8
- %assign pad %3*mmsize-(4+stack_offset&(mmsize-1))
+ %assign pad %2*mmsize-(4+stack_offset&(mmsize-1))
SUB rsp, pad
%endif
- call hadamard8x8_diff_%1
+ call hadamard8x8_diff %+ SUFFIX
%ifndef m8
ADD rsp, pad
%endif
RET
-cglobal hadamard8_diff16_%1, 5, 6, %2
+cglobal hadamard8_diff16, 5, 6, %1
%ifndef m8
- %assign pad %3*mmsize-(4+stack_offset&(mmsize-1))
+ %assign pad %2*mmsize-(4+stack_offset&(mmsize-1))
SUB rsp, pad
%endif
- call hadamard8x8_diff_%1
+ call hadamard8x8_diff %+ SUFFIX
mov r5d, eax
add r1, 8
add r2, 8
- call hadamard8x8_diff_%1
+ call hadamard8x8_diff %+ SUFFIX
add r5d, eax
cmp r4d, 16
@@ -175,12 +173,12 @@ cglobal hadamard8_diff16_%1, 5, 6, %2
lea r1, [r1+r3*8-8]
lea r2, [r2+r3*8-8]
- call hadamard8x8_diff_%1
+ call hadamard8x8_diff %+ SUFFIX
add r5d, eax
add r1, 8
add r2, 8
- call hadamard8x8_diff_%1
+ call hadamard8x8_diff %+ SUFFIX
add r5d, eax
.done:
@@ -191,7 +189,25 @@ cglobal hadamard8_diff16_%1, 5, 6, %2
RET
%endmacro
-%macro HADAMARD8_DIFF_MMX 1
+%macro HADAMARD8_DIFF 0-1
+%if cpuflag(sse2)
+hadamard8x8_diff %+ SUFFIX:
+ lea r0, [r3*3]
+ DIFF_PIXELS_8 r1, r2, 0, r3, r0, rsp+gprsize
+ HADAMARD8
+%if ARCH_X86_64
+ TRANSPOSE8x8W 0, 1, 2, 3, 4, 5, 6, 7, 8
+%else
+ TRANSPOSE8x8W 0, 1, 2, 3, 4, 5, 6, 7, [rsp+gprsize], [rsp+mmsize+gprsize]
+%endif
+ HADAMARD8
+ ABS_SUM_8x8 rsp+gprsize
+ HSUM m0, m1, eax
+ and eax, 0xFFFF
+ ret
+
+hadamard8_16_wrapper %1, 3
+%elif cpuflag(mmx)
ALIGN 16
; int hadamard8_diff_##cpu(void *s, uint8_t *src1, uint8_t *src2,
; int stride, int h)
@@ -199,7 +215,7 @@ ALIGN 16
; note how r1, r2 and r3 are not clobbered in this function, so 16x16
; can simply call this 2x2x (and that's why we access rsp+gprsize
; everywhere, which is rsp of calling func
-hadamard8x8_diff_%1:
+hadamard8x8_diff %+ SUFFIX:
lea r0, [r3*3]
; first 4x8 pixels
@@ -236,53 +252,35 @@ hadamard8x8_diff_%1:
and rax, 0xFFFF
ret
-hadamard8_16_wrapper %1, 0, 14
-%endmacro
-
-%macro HADAMARD8_DIFF_SSE2 2
-hadamard8x8_diff_%1:
- lea r0, [r3*3]
- DIFF_PIXELS_8 r1, r2, 0, r3, r0, rsp+gprsize
- HADAMARD8
-%if ARCH_X86_64
- TRANSPOSE8x8W 0, 1, 2, 3, 4, 5, 6, 7, 8
-%else
- TRANSPOSE8x8W 0, 1, 2, 3, 4, 5, 6, 7, [rsp+gprsize], [rsp+mmsize+gprsize]
+hadamard8_16_wrapper 0, 14
%endif
- HADAMARD8
- ABS_SUM_8x8 rsp+gprsize
- HSUM_SSE2 m0, m1, eax
- and eax, 0xFFFF
- ret
-
-hadamard8_16_wrapper %1, %2, 3
%endmacro
-INIT_MMX
+INIT_MMX mmx
%define ABS1 ABS1_MMX
-%define HSUM HSUM_MMX
-HADAMARD8_DIFF_MMX mmx
+HADAMARD8_DIFF
+INIT_MMX mmxext
%define ABS1 ABS1_MMXEXT
-%define HSUM HSUM_MMXEXT
-HADAMARD8_DIFF_MMX mmxext
+HADAMARD8_DIFF
-INIT_XMM
+INIT_XMM sse2
%define ABS2 ABS2_MMXEXT
%if ARCH_X86_64
%define ABS_SUM_8x8 ABS_SUM_8x8_64
%else
%define ABS_SUM_8x8 ABS_SUM_8x8_32
%endif
-HADAMARD8_DIFF_SSE2 sse2, 10
+HADAMARD8_DIFF 10
+INIT_XMM ssse3
%define ABS2 ABS2_SSSE3
%define ABS_SUM_8x8 ABS_SUM_8x8_64
-HADAMARD8_DIFF_SSE2 ssse3, 9
+HADAMARD8_DIFF 9
-INIT_XMM
+INIT_XMM sse2
; sse16_sse2(void *v, uint8_t * pix1, uint8_t * pix2, int line_size, int h)
-cglobal sse16_sse2, 5, 5, 8
+cglobal sse16, 5, 5, 8
shr r4d, 1
pxor m0, m0 ; mm0 = 0
pxor m7, m7 ; mm7 holds the sum
diff --git a/libavformat/aiff.h b/libavformat/aiff.h
index bd428029c0..5521568202 100644
--- a/libavformat/aiff.h
+++ b/libavformat/aiff.h
@@ -28,7 +28,7 @@
#define AVFORMAT_AIFF_H
#include "avformat.h"
-#include "riff.h"
+#include "internal.h"
static const AVCodecTag ff_codec_aiff_tags[] = {
{ AV_CODEC_ID_PCM_S16BE, MKTAG('N','O','N','E') },
diff --git a/libavformat/au.c b/libavformat/au.c
index d4d4ff3432..6797c3c479 100644
--- a/libavformat/au.c
+++ b/libavformat/au.c
@@ -31,7 +31,6 @@
#include "internal.h"
#include "avio_internal.h"
#include "pcm.h"
-#include "riff.h"
/* if we don't know the size in advance */
#define AU_UNKNOWN_SIZE ((uint32_t)(~0))
diff --git a/libavformat/cafdec.c b/libavformat/cafdec.c
index 7fd9c6b8d1..718942bd8a 100644
--- a/libavformat/cafdec.c
+++ b/libavformat/cafdec.c
@@ -27,7 +27,6 @@
#include "avformat.h"
#include "internal.h"
-#include "riff.h"
#include "isom.h"
#include "mov_chan.h"
#include "libavutil/intreadwrite.h"
diff --git a/libavformat/gxfenc.c b/libavformat/gxfenc.c
index 9bec3d52cf..28acb74db9 100644
--- a/libavformat/gxfenc.c
+++ b/libavformat/gxfenc.c
@@ -27,7 +27,6 @@
#include "avformat.h"
#include "internal.h"
#include "gxf.h"
-#include "riff.h"
#include "audiointerleave.h"
#define GXF_AUDIO_PACKET_SIZE 65536
diff --git a/libavformat/internal.h b/libavformat/internal.h
index 4a9ed53def..4f740c99d1 100644
--- a/libavformat/internal.h
+++ b/libavformat/internal.h
@@ -355,6 +355,10 @@ void ff_compute_frame_duration(int *pnum, int *pden, AVStream *st,
int ff_get_audio_frame_size(AVCodecContext *enc, int size, int mux);
+unsigned int ff_codec_get_tag(const AVCodecTag *tags, enum AVCodecID id);
+
+enum AVCodecID ff_codec_get_id(const AVCodecTag *tags, unsigned int tag);
+
/**
* Chooses a timebase for muxing the specified stream.
*
diff --git a/libavformat/isom.c b/libavformat/isom.c
index 32710569a3..2c412dda29 100644
--- a/libavformat/isom.c
+++ b/libavformat/isom.c
@@ -26,7 +26,6 @@
#include "avformat.h"
#include "internal.h"
#include "isom.h"
-#include "riff.h"
#include "libavcodec/mpeg4audio.h"
#include "libavcodec/mpegaudiodata.h"
diff --git a/libavformat/lxfdec.c b/libavformat/lxfdec.c
index 3137cda851..90c49749a6 100644
--- a/libavformat/lxfdec.c
+++ b/libavformat/lxfdec.c
@@ -23,7 +23,6 @@
#include "libavcodec/bytestream.h"
#include "avformat.h"
#include "internal.h"
-#include "riff.h"
#define LXF_MAX_PACKET_HEADER_SIZE 256
#define LXF_HEADER_DATA_SIZE 120
diff --git a/libavformat/nsvdec.c b/libavformat/nsvdec.c
index 3015d84491..b6984a68a2 100644
--- a/libavformat/nsvdec.c
+++ b/libavformat/nsvdec.c
@@ -23,7 +23,6 @@
#include "libavutil/mathematics.h"
#include "avformat.h"
#include "internal.h"
-#include "riff.h"
#include "libavutil/dict.h"
#include "libavutil/intreadwrite.h"
diff --git a/libavformat/nut.c b/libavformat/nut.c
index fc300fe378..62a650dbed 100644
--- a/libavformat/nut.c
+++ b/libavformat/nut.c
@@ -149,6 +149,7 @@ const AVCodecTag ff_nut_video_tags[] = {
static const AVCodecTag nut_audio_extra_tags[] = {
{ AV_CODEC_ID_PCM_ALAW, MKTAG('A', 'L', 'A', 'W') },
{ AV_CODEC_ID_PCM_MULAW, MKTAG('U', 'L', 'A', 'W') },
+ { AV_CODEC_ID_MP3, MKTAG('M', 'P', '3', ' ') },
{ AV_CODEC_ID_NONE, 0 }
};
diff --git a/libavformat/nut.h b/libavformat/nut.h
index deb3c901e3..ab31c27429 100644
--- a/libavformat/nut.h
+++ b/libavformat/nut.h
@@ -26,7 +26,7 @@
//#include "libavutil/adler32.h"
//#include "libavcodec/mpegaudio.h"
#include "avformat.h"
-#include "riff.h"
+#include "internal.h"
#include "metadata.h"
#define MAIN_STARTCODE (0x7A561F5F04ADULL + (((uint64_t)('N'<<8) + 'M')<<48))
diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c
index 9954583fc2..ac3ef7d909 100644
--- a/libavformat/nutdec.c
+++ b/libavformat/nutdec.c
@@ -28,6 +28,7 @@
#include "libavutil/tree.h"
#include "avio_internal.h"
#include "nut.h"
+#include "riff.h"
#define NUT_MAX_STREAMS 256 /* arbitrary sanity check value */
diff --git a/libavformat/nutenc.c b/libavformat/nutenc.c
index 72e28b8d26..46711528a0 100644
--- a/libavformat/nutenc.c
+++ b/libavformat/nutenc.c
@@ -28,6 +28,7 @@
#include "nut.h"
#include "internal.h"
#include "avio_internal.h"
+#include "riff.h"
static int find_expected_header(AVCodecContext *c, int size, int key_frame,
uint8_t out[64])
diff --git a/libavformat/omadec.c b/libavformat/omadec.c
index e8b74ed7f0..8d29675c1c 100644
--- a/libavformat/omadec.c
+++ b/libavformat/omadec.c
@@ -46,7 +46,6 @@
#include "libavutil/des.h"
#include "oma.h"
#include "pcm.h"
-#include "riff.h"
#include "id3v2.h"
diff --git a/libavformat/riff.c b/libavformat/riff.c
index 5ad0eb01c8..cddbec477c 100644
--- a/libavformat/riff.c
+++ b/libavformat/riff.c
@@ -389,7 +389,6 @@ const AVCodecTag ff_codec_wav_tags[] = {
// for NuppelVideo (nuv.c)
{ AV_CODEC_ID_PCM_S16LE, MKTAG('R', 'A', 'W', 'A') },
{ AV_CODEC_ID_MP3, MKTAG('L', 'A', 'M', 'E') },
- { AV_CODEC_ID_MP3, MKTAG('M', 'P', '3', ' ') },
{ AV_CODEC_ID_NONE, 0 },
};
diff --git a/libavformat/riff.h b/libavformat/riff.h
index 6f2eeac176..8579a953c8 100644
--- a/libavformat/riff.h
+++ b/libavformat/riff.h
@@ -54,8 +54,6 @@ int ff_get_wav_header(AVIOContext *pb, AVCodecContext *codec, int size);
extern const AVCodecTag ff_codec_bmp_tags[];
extern const AVCodecTag ff_codec_wav_tags[];
-unsigned int ff_codec_get_tag(const AVCodecTag *tags, enum AVCodecID id);
-enum AVCodecID ff_codec_get_id(const AVCodecTag *tags, unsigned int tag);
void ff_parse_specific_params(AVCodecContext *stream, int *au_rate, int *au_ssize, int *au_scale);
typedef uint8_t ff_asf_guid[16];
diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c
index bcfff41422..2bfa5ceeda 100644
--- a/libavformat/rmdec.c
+++ b/libavformat/rmdec.c
@@ -26,7 +26,6 @@
#include "libavutil/dict.h"
#include "avformat.h"
#include "internal.h"
-#include "riff.h"
#include "rmsipr.h"
#include "rm.h"
diff --git a/libavformat/rsodec.c b/libavformat/rsodec.c
index 1b3a536245..19c21e0291 100644
--- a/libavformat/rsodec.c
+++ b/libavformat/rsodec.c
@@ -25,7 +25,6 @@
#include "avformat.h"
#include "internal.h"
#include "pcm.h"
-#include "riff.h"
#include "rso.h"
static int rso_read_header(AVFormatContext *s)
diff --git a/libavformat/smjpegenc.c b/libavformat/smjpegenc.c
index 13095bc23d..0a2768785a 100644
--- a/libavformat/smjpegenc.c
+++ b/libavformat/smjpegenc.c
@@ -26,7 +26,6 @@
#include "avformat.h"
#include "internal.h"
-#include "riff.h"
#include "smjpeg.h"
typedef struct SMJPEGMuxContext {
diff --git a/libavformat/swf.h b/libavformat/swf.h
index 6ecd0da2fe..b9722c1c9a 100644
--- a/libavformat/swf.h
+++ b/libavformat/swf.h
@@ -32,7 +32,7 @@
#include "libavutil/fifo.h"
#include "avformat.h"
#include "avio.h"
-#include "riff.h" /* for CodecTag */
+#include "internal.h"
/* should have a generic way to indicate probable size */
#define DUMMY_FILE_SIZE (100 * 1024 * 1024)
diff --git a/libavformat/voc.h b/libavformat/voc.h
index 90178b3175..08db970ae6 100644
--- a/libavformat/voc.h
+++ b/libavformat/voc.h
@@ -23,7 +23,7 @@
#define AVFORMAT_VOC_H
#include "avformat.h"
-#include "riff.h" /* for CodecTag */
+#include "internal.h"
typedef struct voc_dec_context {
int64_t remaining_size;
diff --git a/tests/fate/vpx.mak b/tests/fate/vpx.mak
index d3f9cc79ae..fd9c905b4e 100644
--- a/tests/fate/vpx.mak
+++ b/tests/fate/vpx.mak
@@ -1,34 +1,34 @@
-FATE_VP3 += fate-vp31
+FATE_VP3-$(CONFIG_AVI_DEMUXER) += fate-vp31
fate-vp31: CMD = framecrc -i $(SAMPLES)/vp3/vp31.avi
-FATE_VP3 += fate-vp3-coeff-level64
+FATE_VP3-$(CONFIG_MATROSKA_DEMUXER) += fate-vp3-coeff-level64
fate-vp3-coeff-level64: CMD = framecrc -i $(SAMPLES)/vp3/coeff_level64.mkv
-FATE_SAMPLES_AVCONV += $(FATE_VP3)
-fate-vp3: $(FATE_VP3)
+FATE_SAMPLES_AVCONV-$(CONFIG_VP3_DECODER) += $(FATE_VP3-yes)
+fate-vp3: $(FATE_VP3-yes)
-FATE_SAMPLES_AVCONV += fate-vp5
+FATE_SAMPLES_AVCONV-$(call DEMDEC, AVI, VP5) += fate-vp5
fate-vp5: CMD = framecrc -i $(SAMPLES)/vp5/potter512-400-partial.avi -an
-FATE_VP6 += fate-vp60
+FATE_VP6-$(call DEMDEC, EA, VP6) += fate-vp60
fate-vp60: CMD = framecrc -i $(SAMPLES)/ea-vp6/g36.vp6
-FATE_VP6 += fate-vp61
+FATE_VP6-$(call DEMDEC, EA, VP6) += fate-vp61
fate-vp61: CMD = framecrc -i $(SAMPLES)/ea-vp6/MovieSkirmishGondor.vp6 -t 4
-FATE_VP6 += fate-vp6a
+FATE_VP6-$(call DEMDEC, FLV, VP6A) += fate-vp6a
fate-vp6a: CMD = framecrc -i $(SAMPLES)/flash-vp6/300x180-Scr-f8-056alpha.flv
-FATE_VP6 += fate-vp6f
+FATE_VP6-$(call DEMDEC, FLV, VP6F) += fate-vp6f
fate-vp6f: CMD = framecrc -i $(SAMPLES)/flash-vp6/clip1024.flv
-FATE_SAMPLES_AVCONV += $(FATE_VP6)
-fate-vp6: $(FATE_VP6)
+FATE_SAMPLES_AVCONV += $(FATE_VP6-yes)
+fate-vp6: $(FATE_VP6-yes)
VP8_SUITE = 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017
define FATE_VP8_SUITE
-FATE_VP8 += fate-vp8-test-vector$(2)-$(1)
+FATE_VP8-$(CONFIG_IVF_DEMUXER) += fate-vp8-test-vector$(2)-$(1)
fate-vp8-test-vector$(2)-$(1): CMD = framemd5 $(3) -i $(SAMPLES)/vp8-test-vectors-r1/vp80-00-comprehensive-$(1).ivf
fate-vp8-test-vector$(2)-$(1): REF = $(SRC_PATH)/tests/ref/fate/vp8-test-vector-$(1)
endef
@@ -38,16 +38,16 @@ $(foreach N,$(VP8_SUITE),$(eval $(call FATE_VP8_SUITE,$(N),$(1),$(2))))
# FIXME this file contains two frames with identical timestamps,
# so ffmpeg drops one of them
-FATE_VP8 += fate-vp8-sign-bias$(1)
+FATE_VP8-$(CONFIG_IVF_DEMUXER) += fate-vp8-sign-bias$(1)
fate-vp8-sign-bias$(1): CMD = framemd5 $(2) -i $(SAMPLES)/vp8/sintel-signbias.ivf
fate-vp8-sign-bias$(1): REF = $(SRC_PATH)/tests/ref/fate/vp8-sign-bias
-FATE_VP8 += fate-vp8-size-change$(1)
+FATE_VP8-$(CONFIG_MATROSKA_DEMUXER) += fate-vp8-size-change$(1)
fate-vp8-size-change$(1): CMD = framemd5 $(2) -flags +bitexact -i $(SAMPLES)/vp8/frame_size_change.webm -frames:v 30 -sws_flags bitexact+bilinear
fate-vp8-size-change$(1): REF = $(SRC_PATH)/tests/ref/fate/vp8-size-change
endef
$(eval $(call FATE_VP8_FULL))
$(eval $(call FATE_VP8_FULL,-emu-edge,-flags +emu_edge))
-FATE_SAMPLES_AVCONV += $(FATE_VP8)
-fate-vp8: $(FATE_VP8)
+FATE_SAMPLES_AVCONV-$(CONFIG_VP8_DECODER) += $(FATE_VP8-yes)
+fate-vp8: $(FATE_VP8-yes)
diff --git a/tests/fate/wavpack.mak b/tests/fate/wavpack.mak
index afc84d0fd2..ef190fa89e 100644
--- a/tests/fate/wavpack.mak
+++ b/tests/fate/wavpack.mak
@@ -83,8 +83,10 @@ fate-wavpack-clipping: CMD = md5 -i $(SAMPLES)/wavpack/special/clipping.wv -f s1
FATE_WAVPACK += fate-wavpack-falsestereo
fate-wavpack-falsestereo: CMD = md5 -i $(SAMPLES)/wavpack/special/false_stereo.wv -f s16le
-FATE_WAVPACK += fate-wavpack-matroskamode
+FATE_WAVPACK-$(call DEMDEC, WV, WAVPACK) += $(FATE_WAVPACK)
+
+FATE_WAVPACK-$(call DEMDEC, MATROSKA, WAVPACK) += fate-wavpack-matroskamode
fate-wavpack-matroskamode: CMD = md5 -i $(SAMPLES)/wavpack/special/matroska_mode.mka -f s16le
-FATE_SAMPLES_AVCONV-$(call DEMDEC, WV, WAVPACK) += $(FATE_WAVPACK)
-fate-wavpack: $(FATE_WAVPACK)
+FATE_SAMPLES_AVCONV += $(FATE_WAVPACK-yes)
+fate-wavpack: $(FATE_WAVPACK-yes)