FFmpeg
Macros | Functions
mpegvideoenc_template.c File Reference
#include <stdint.h>
#include "libavutil/internal.h"
#include "libavutil/mem_internal.h"
#include "libavutil/x86/asm.h"
#include "libavcodec/mpegutils.h"
#include "libavcodec/mpegvideo.h"
#include "fdct.h"

Go to the source code of this file.

Macros

#define MMREG_WIDTH   "8"
 
#define MM   "%%mm"
 
#define MOVQ   "movq"
 
#define SPREADW(a)
 
#define PMAXW(a, b)
 
#define PMAX(a, b)
 
#define SAVE_SIGN(a, b)
 
#define RESTORE_SIGN(a, b)
 

Functions

static int dct_quantize_TMPL (MpegEncContext *s, int16_t *block, int n, int qscale, int *overflow)
 

Macro Definition Documentation

◆ MMREG_WIDTH

#define MMREG_WIDTH   "8"

Definition at line 57 of file mpegvideoenc_template.c.

◆ MM

#define MM   "%%mm"

Definition at line 58 of file mpegvideoenc_template.c.

◆ MOVQ

#define MOVQ   "movq"

Definition at line 59 of file mpegvideoenc_template.c.

◆ SPREADW

#define SPREADW (   a)
Value:
"punpcklwd "a", "a" \n\t"\
"punpcklwd "a", "a" \n\t"

Definition at line 60 of file mpegvideoenc_template.c.

◆ PMAXW

#define PMAXW (   a,
  b 
)
Value:
"psubusw "a", "b" \n\t"\
"paddw "a", "b" \n\t"

Definition at line 63 of file mpegvideoenc_template.c.

◆ PMAX

#define PMAX (   a,
  b 
)
Value:
"movq "a", "b" \n\t"\
"psrlq $32, "a" \n\t"\
PMAXW(b, a)\
"movq "a", "b" \n\t"\
"psrlq $16, "a" \n\t"\
PMAXW(b, a)

Definition at line 66 of file mpegvideoenc_template.c.

◆ SAVE_SIGN

#define SAVE_SIGN (   a,
  b 
)
Value:
"pxor "a", "a" \n\t"\
"pcmpgtw "b", "a" \n\t" /* block[i] <= 0 ? 0xFF : 0x00 */\
"pxor "a", "b" \n\t"\
"psubw "a", "b" \n\t" /* ABS(block[i]) */

Definition at line 83 of file mpegvideoenc_template.c.

◆ RESTORE_SIGN

#define RESTORE_SIGN (   a,
  b 
)
Value:
"pxor "a", "b" \n\t"\
"psubw "a", "b" \n\t"

Definition at line 88 of file mpegvideoenc_template.c.

Function Documentation

◆ dct_quantize_TMPL()

static int dct_quantize_TMPL ( MpegEncContext s,
int16_t *  block,
int  n,
int  qscale,
int overflow 
)
static

Definition at line 93 of file mpegvideoenc_template.c.

b
#define b
Definition: input.c:34
a
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
Definition: undefined.txt:41