28 static const uint32_t
pixel_mask[3] = { 0xffffffff, 0x01ff01ff, 0x03ff03ff };
30 #define SIZEOF_PIXEL ((bit_depth + 7) / 8)
31 #define BUF_SIZE (2 * 16 * (16 + 3 + 4))
33 #define randomize_buffers() \
35 uint32_t mask = pixel_mask[bit_depth - 8]; \
37 for (k = 0; k < BUF_SIZE; k += 4) { \
38 uint32_t r = rnd() & mask; \
39 AV_WN32A(buf0 + k, r); \
40 AV_WN32A(buf1 + k, r); \
42 AV_WN32A(dst0 + k, r); \
43 AV_WN32A(dst1 + k, r); \
47 #define src0 (buf0 + 3 * 2 * 16)
48 #define src1 (buf1 + 3 * 2 * 16)
60 for (op = 0; op < 2; op++) {
62 const char *op_name = op ?
"avg" :
"put";
64 for (bit_depth = 8; bit_depth <= 10; bit_depth++) {
66 for (i = 0; i < (op ? 3 : 4); i++) {
68 for (j = 0; j < 16; j++)
69 if (
check_func(
tab[i][j],
"%s_h264_qpel_%d_mc%d%d_%d", op_name, size, j & 3, j >> 2, bit_depth)) {
void(* qpel_mc_func)(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
static const uint32_t pixel_mask[3]
void checkasm_check_h264qpel(void)
#define AV_CPU_FLAG_MMXEXT
SSE integer functions or AMD MMX ext.
qpel_mc_func avg_h264_qpel_pixels_tab[4][16]
#define randomize_buffers()
qpel_mc_func put_h264_qpel_pixels_tab[4][16]
common internal API header
static void bit_depth(AudioStatsContext *s, uint64_t mask, uint64_t imask, AVRational *depth)
#define declare_func_emms(cpu_flags, ret,...)
#define AV_CPU_FLAG_MMX
standard MMX
#define check_func(func,...)
static int op(uint8_t **dst, const uint8_t *dst_end, GetByteContext *gb, int pixel, int count, int *x, int width, int linesize)
Perform decode operation.
GLint GLenum GLboolean GLsizei stride
common internal and external API header
static const struct twinvq_data tab
#define LOCAL_ALIGNED_16(t, v,...)
av_cold void ff_h264qpel_init(H264QpelContext *c, int bit_depth)