#include "libavcodec/dsputil.h"
#include "libavcodec/simple_idct.h"
#include "dsputil_mmx.h"
Go to the source code of this file.
Defines | |
#define | C0 23170 |
#define | C1 22725 |
#define | C2 21407 |
#define | C3 19266 |
#define | C4 16383 |
#define | C5 12873 |
#define | C6 8867 |
#define | C7 4520 |
#define | ROW_SHIFT 11 |
#define | COL_SHIFT 20 |
#define | DC_COND_IDCT(src0, src4, src1, src5, dst, rounder, shift) |
#define | Z_COND_IDCT(src0, src4, src1, src5, dst, rounder, shift, bt) |
#define | ROW_IDCT(src0, src4, src1, src5, dst, rounder, shift) |
#define | IDCT(src0, src4, src1, src5, dst, shift) |
#define | IDCT(src0, src4, src1, src5, dst, shift) |
#define | IDCT(src0, src4, src1, src5, dst, shift) |
#define | IDCT(src0, src4, src1, src5, dst, shift) |
#define | IDCT(src0, src4, src1, src5, dst, shift) |
#define | IDCT(src0, src4, src1, src5, dst, shift) |
#define | IDCT(src0, src4, src1, src5, dst, shift) |
#define | IDCT(src0, src4, src1, src5, dst, shift) |
Functions | |
DECLARE_ASM_CONST (DECLARE_ASM_CONST(8, DECLARE_ASM_CONST(uint64_t, wm1010) | |
static void | idct (int16_t *block) |
void | ff_simple_idct_mmx (int16_t *block) |
void | ff_simple_idct_put_mmx (uint8_t *dest, int line_size, DCTELEM *block) |
void | ff_simple_idct_add_mmx (uint8_t *dest, int line_size, DCTELEM *block) |
#define C0 23170 |
Definition at line 36 of file simple_idct_mmx.c.
#define C1 22725 |
Definition at line 37 of file simple_idct_mmx.c.
#define C2 21407 |
Definition at line 38 of file simple_idct_mmx.c.
#define C3 19266 |
Definition at line 39 of file simple_idct_mmx.c.
#define C4 16383 |
Definition at line 40 of file simple_idct_mmx.c.
#define C5 12873 |
Definition at line 41 of file simple_idct_mmx.c.
#define C6 8867 |
Definition at line 42 of file simple_idct_mmx.c.
#define C7 4520 |
Definition at line 43 of file simple_idct_mmx.c.
#define COL_SHIFT 20 |
Definition at line 46 of file simple_idct_mmx.c.
#define IDCT | ( | src0, | |||
src4, | |||||
src1, | |||||
src5, | |||||
dst, | |||||
shift | ) |
Value:
"movq " #src0 ", %%mm0 \n\t" /* R4 R0 r4 r0 */\ "movq 16(%2), %%mm4 \n\t" /* C4 C4 C4 C4 */\ "pmaddwd %%mm0, %%mm4 \n\t" /* C4R4+C4R0 C4r4+C4r0 */\ "movq 24(%2), %%mm5 \n\t" /* -C4 C4 -C4 C4 */\ "pmaddwd %%mm5, %%mm0 \n\t" /* -C4R4+C4R0 -C4r4+C4r0 */\ "psrad $" #shift ", %%mm4 \n\t"\ "psrad $" #shift ", %%mm0 \n\t"\ "movq 8+" #src0 ", %%mm2 \n\t" /* R4 R0 r4 r0 */\ "movq 16(%2), %%mm1 \n\t" /* C4 C4 C4 C4 */\ "pmaddwd %%mm2, %%mm1 \n\t" /* C4R4+C4R0 C4r4+C4r0 */\ "movq 24(%2), %%mm7 \n\t" /* -C4 C4 -C4 C4 */\ "pmaddwd %%mm7, %%mm2 \n\t" /* -C4R4+C4R0 -C4r4+C4r0 */\ "movq 32(%2), %%mm7 \n\t" /* C6 C2 C6 C2 */\ "psrad $" #shift ", %%mm1 \n\t"\ "packssdw %%mm1, %%mm4 \n\t" /* A0 a0 */\ "movq %%mm4, " #dst " \n\t"\ "psrad $" #shift ", %%mm2 \n\t"\ "packssdw %%mm2, %%mm0 \n\t" /* A1 a1 */\ "movq %%mm0, 16+" #dst " \n\t"\ "movq %%mm0, 96+" #dst " \n\t"\ "movq %%mm4, 112+" #dst " \n\t"\ "movq %%mm0, 32+" #dst " \n\t"\ "movq %%mm4, 48+" #dst " \n\t"\ "movq %%mm4, 64+" #dst " \n\t"\ "movq %%mm0, 80+" #dst " \n\t"
#define IDCT | ( | src0, | |||
src4, | |||||
src1, | |||||
src5, | |||||
dst, | |||||
shift | ) |
#define IDCT | ( | src0, | |||
src4, | |||||
src1, | |||||
src5, | |||||
dst, | |||||
shift | ) |
#define IDCT | ( | src0, | |||
src4, | |||||
src1, | |||||
src5, | |||||
dst, | |||||
shift | ) |
#define IDCT | ( | src0, | |||
src4, | |||||
src1, | |||||
src5, | |||||
dst, | |||||
shift | ) |
#define IDCT | ( | src0, | |||
src4, | |||||
src1, | |||||
src5, | |||||
dst, | |||||
shift | ) |
#define IDCT | ( | src0, | |||
src4, | |||||
src1, | |||||
src5, | |||||
dst, | |||||
shift | ) |
#define IDCT | ( | src0, | |||
src4, | |||||
src1, | |||||
src5, | |||||
dst, | |||||
shift | ) |
#define ROW_SHIFT 11 |
Definition at line 45 of file simple_idct_mmx.c.
DECLARE_ASM_CONST | ( | DECLARE_ASM_CONST( | 8, | |
DECLARE_ASM_CONST( | uint64_t, | |||
wm1010 | ||||
) | [pure virtual] |
Definition at line 48 of file simple_idct_mmx.c.
void ff_simple_idct_add_mmx | ( | uint8_t * | dest, | |
int | line_size, | |||
DCTELEM * | block | |||
) |
Definition at line 1159 of file simple_idct_mmx.c.
void ff_simple_idct_mmx | ( | int16_t * | block | ) |
void ff_simple_idct_put_mmx | ( | uint8_t * | dest, | |
int | line_size, | |||
DCTELEM * | block | |||
) |
Definition at line 1154 of file simple_idct_mmx.c.
static void idct | ( | int16_t * | block | ) | [inline, static] |
Definition at line 79 of file simple_idct_mmx.c.