FFmpeg
tests
checkasm
blockdsp.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2015 Henrik Gramner
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or
9
* (at your option) any later version.
10
*
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License along
17
* with FFmpeg; if not, write to the Free Software Foundation, Inc.,
18
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
*/
20
21
#include <string.h>
22
23
#include "
checkasm.h
"
24
25
#include "
libavcodec/blockdsp.h
"
26
27
#include "
libavutil/common.h
"
28
#include "
libavutil/internal.h
"
29
#include "
libavutil/intreadwrite.h
"
30
#include "
libavutil/mem_internal.h
"
31
32
#define randomize_buffers(size) \
33
do { \
34
int i; \
35
for (i = 0; i < size; i++) { \
36
uint16_t r = rnd(); \
37
AV_WN16A(buf0 + i, r); \
38
AV_WN16A(buf1 + i, r); \
39
} \
40
} while (0)
41
42
#define check_clear(func, size) \
43
do { \
44
if (check_func(h.func, "blockdsp." #func)) { \
45
declare_func_emms(AV_CPU_FLAG_MMX, void, int16_t *block); \
46
randomize_buffers(size); \
47
call_ref(buf0); \
48
call_new(buf1); \
49
if (memcmp(buf0, buf1, sizeof(*buf0) * size)) \
50
fail(); \
51
bench_new(buf0); \
52
} \
53
} while (0)
54
55
void
checkasm_check_blockdsp
(
void
)
56
{
57
LOCAL_ALIGNED_32
(uint16_t, buf0, [6 * 8 * 8]);
58
LOCAL_ALIGNED_32
(uint16_t, buf1, [6 * 8 * 8]);
59
60
AVCodecContext
avctx = { 0 };
61
BlockDSPContext
h
;
62
63
ff_blockdsp_init
(&
h
, &avctx);
64
65
check_clear
(clear_block, 8 * 8);
66
check_clear
(clear_blocks, 8 * 8 * 6);
67
68
report
(
"blockdsp"
);
69
}
checkasm_check_blockdsp
void checkasm_check_blockdsp(void)
Definition:
blockdsp.c:55
blockdsp.h
mem_internal.h
BlockDSPContext
Definition:
blockdsp.h:34
checkasm.h
intreadwrite.h
LOCAL_ALIGNED_32
#define LOCAL_ALIGNED_32(t, v,...)
Definition:
mem_internal.h:136
report
#define report
Definition:
checkasm.h:134
internal.h
common.h
AVCodecContext
main external API structure.
Definition:
avcodec.h:389
check_clear
#define check_clear(func, size)
Definition:
blockdsp.c:42
h
h
Definition:
vp9dsp_template.c:2038
ff_blockdsp_init
av_cold void ff_blockdsp_init(BlockDSPContext *c, AVCodecContext *avctx)
Definition:
blockdsp.c:59
Generated on Wed Aug 24 2022 21:41:19 for FFmpeg by
1.8.17