FFmpeg
Macros | Functions
mpegvideo_motion.c File Reference
#include "libavutil/avassert.h"
#include "libavutil/internal.h"
#include "libavutil/mem_internal.h"
#include "avcodec.h"
#include "h261.h"
#include "mpegutils.h"
#include "mpegvideo.h"
#include "qpeldsp.h"
#include "wmv2.h"

Go to the source code of this file.

Macros

#define OBMC_FILTER(x, t, l, m, r, b)   dst[x]= (t*top[x] + l*left[x] + m*mid[x] + r*right[x] + b*bottom[x] + 4)>>3
 
#define OBMC_FILTER4(x, t, l, m, r, b)
 
#define MID   0
 

Functions

static void gmc1_motion (MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, uint8_t **ref_picture)
 
static void gmc_motion (MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, uint8_t **ref_picture)
 
static int hpel_motion (MpegEncContext *s, uint8_t *dest, uint8_t *src, int src_x, int src_y, op_pixels_func *pix_op, int motion_x, int motion_y)
 
static av_always_inline void mpeg_motion_internal (MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int field_based, int bottom_field, int field_select, uint8_t **ref_picture, op_pixels_func(*pix_op)[4], int motion_x, int motion_y, int h, int is_mpeg12, int is_16x8, int mb_y)
 
static void mpeg_motion (MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int field_select, uint8_t **ref_picture, op_pixels_func(*pix_op)[4], int motion_x, int motion_y, int h, int is_16x8, int mb_y)
 
static void mpeg_motion_field (MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int bottom_field, int field_select, uint8_t **ref_picture, op_pixels_func(*pix_op)[4], int motion_x, int motion_y, int h, int mb_y)
 
static void put_obmc (uint8_t *dst, uint8_t *src[5], int stride)
 
static void obmc_motion (MpegEncContext *s, uint8_t *dest, uint8_t *src, int src_x, int src_y, op_pixels_func *pix_op, int16_t mv[5][2])
 
static void qpel_motion (MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int field_based, int bottom_field, int field_select, uint8_t **ref_picture, op_pixels_func(*pix_op)[4], qpel_mc_func(*qpix_op)[16], int motion_x, int motion_y, int h)
 
static void chroma_4mv_motion (MpegEncContext *s, uint8_t *dest_cb, uint8_t *dest_cr, uint8_t **ref_picture, op_pixels_func *pix_op, int mx, int my)
 H.263 chroma 4mv motion compensation. More...
 
static void prefetch_motion (MpegEncContext *s, uint8_t **pix, int dir)
 
static void apply_obmc (MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, uint8_t **ref_picture, op_pixels_func(*pix_op)[4])
 
static void apply_8x8 (MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int dir, uint8_t **ref_picture, qpel_mc_func(*qpix_op)[16], op_pixels_func(*pix_op)[4])
 
static av_always_inline void mpv_motion_internal (MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int dir, uint8_t **ref_picture, op_pixels_func(*pix_op)[4], qpel_mc_func(*qpix_op)[16], int is_mpeg12)
 motion compensation of a single macroblock More...
 
void ff_mpv_motion (MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int dir, uint8_t **ref_picture, op_pixels_func(*pix_op)[4], qpel_mc_func(*qpix_op)[16])
 

Macro Definition Documentation

◆ OBMC_FILTER

#define OBMC_FILTER (   x,
  t,
  l,
  m,
  r,
  b 
)    dst[x]= (t*top[x] + l*left[x] + m*mid[x] + r*right[x] + b*bottom[x] + 4)>>3

◆ OBMC_FILTER4

#define OBMC_FILTER4 (   x,
  t,
  l,
  m,
  r,
  b 
)
Value:
OBMC_FILTER(x , t, l, m, r, b);\
OBMC_FILTER(x+1 , t, l, m, r, b);\
OBMC_FILTER(x +stride, t, l, m, r, b);\
OBMC_FILTER(x+1+stride, t, l, m, r, b);

◆ MID

#define MID   0

Function Documentation

◆ gmc1_motion()

static void gmc1_motion ( MpegEncContext s,
uint8_t *  dest_y,
uint8_t *  dest_cb,
uint8_t *  dest_cr,
uint8_t **  ref_picture 
)
static

Definition at line 35 of file mpegvideo_motion.c.

Referenced by mpv_motion_internal().

◆ gmc_motion()

static void gmc_motion ( MpegEncContext s,
uint8_t *  dest_y,
uint8_t *  dest_cb,
uint8_t *  dest_cr,
uint8_t **  ref_picture 
)
static

Definition at line 132 of file mpegvideo_motion.c.

Referenced by mpv_motion_internal().

◆ hpel_motion()

static int hpel_motion ( MpegEncContext s,
uint8_t *  dest,
uint8_t *  src,
int  src_x,
int  src_y,
op_pixels_func pix_op,
int  motion_x,
int  motion_y 
)
inlinestatic

Definition at line 190 of file mpegvideo_motion.c.

Referenced by apply_8x8(), and obmc_motion().

◆ mpeg_motion_internal()

static av_always_inline void mpeg_motion_internal ( MpegEncContext s,
uint8_t *  dest_y,
uint8_t *  dest_cb,
uint8_t *  dest_cr,
int  field_based,
int  bottom_field,
int  field_select,
uint8_t **  ref_picture,
op_pixels_func(*)  pix_op[4],
int  motion_x,
int  motion_y,
int  h,
int  is_mpeg12,
int  is_16x8,
int  mb_y 
)
static

Definition at line 226 of file mpegvideo_motion.c.

Referenced by mpeg_motion(), and mpeg_motion_field().

◆ mpeg_motion()

static void mpeg_motion ( MpegEncContext s,
uint8_t *  dest_y,
uint8_t *  dest_cb,
uint8_t *  dest_cr,
int  field_select,
uint8_t **  ref_picture,
op_pixels_func(*)  pix_op[4],
int  motion_x,
int  motion_y,
int  h,
int  is_16x8,
int  mb_y 
)
static

Definition at line 368 of file mpegvideo_motion.c.

Referenced by mpv_motion_internal().

◆ mpeg_motion_field()

static void mpeg_motion_field ( MpegEncContext s,
uint8_t *  dest_y,
uint8_t *  dest_cb,
uint8_t *  dest_cr,
int  bottom_field,
int  field_select,
uint8_t **  ref_picture,
op_pixels_func(*)  pix_op[4],
int  motion_x,
int  motion_y,
int  h,
int  mb_y 
)
static

Definition at line 386 of file mpegvideo_motion.c.

Referenced by mpv_motion_internal().

◆ put_obmc()

static void put_obmc ( uint8_t *  dst,
uint8_t *  src[5],
int  stride 
)
inlinestatic

Definition at line 406 of file mpegvideo_motion.c.

Referenced by obmc_motion().

◆ obmc_motion()

static void obmc_motion ( MpegEncContext s,
uint8_t *  dest,
uint8_t *  src,
int  src_x,
int  src_y,
op_pixels_func pix_op,
int16_t  mv[5][2] 
)
inlinestatic

Definition at line 459 of file mpegvideo_motion.c.

Referenced by apply_obmc().

◆ qpel_motion()

static void qpel_motion ( MpegEncContext s,
uint8_t *  dest_y,
uint8_t *  dest_cb,
uint8_t *  dest_cr,
int  field_based,
int  bottom_field,
int  field_select,
uint8_t **  ref_picture,
op_pixels_func(*)  pix_op[4],
qpel_mc_func(*)  qpix_op[16],
int  motion_x,
int  motion_y,
int  h 
)
inlinestatic

Definition at line 485 of file mpegvideo_motion.c.

Referenced by mpv_motion_internal().

◆ chroma_4mv_motion()

static void chroma_4mv_motion ( MpegEncContext s,
uint8_t *  dest_cb,
uint8_t *  dest_cr,
uint8_t **  ref_picture,
op_pixels_func pix_op,
int  mx,
int  my 
)
static

H.263 chroma 4mv motion compensation.

Definition at line 592 of file mpegvideo_motion.c.

Referenced by apply_8x8(), and apply_obmc().

◆ prefetch_motion()

static void prefetch_motion ( MpegEncContext s,
uint8_t **  pix,
int  dir 
)
inlinestatic

Definition at line 644 of file mpegvideo_motion.c.

Referenced by mpv_motion_internal().

◆ apply_obmc()

static void apply_obmc ( MpegEncContext s,
uint8_t *  dest_y,
uint8_t *  dest_cb,
uint8_t *  dest_cr,
uint8_t **  ref_picture,
op_pixels_func(*)  pix_op[4] 
)
inlinestatic

Definition at line 658 of file mpegvideo_motion.c.

Referenced by mpv_motion_internal().

◆ apply_8x8()

static void apply_8x8 ( MpegEncContext s,
uint8_t *  dest_y,
uint8_t *  dest_cb,
uint8_t *  dest_cr,
int  dir,
uint8_t **  ref_picture,
qpel_mc_func(*)  qpix_op[16],
op_pixels_func(*)  pix_op[4] 
)
inlinestatic

Definition at line 745 of file mpegvideo_motion.c.

Referenced by mpv_motion_internal().

◆ mpv_motion_internal()

static av_always_inline void mpv_motion_internal ( MpegEncContext s,
uint8_t *  dest_y,
uint8_t *  dest_cb,
uint8_t *  dest_cr,
int  dir,
uint8_t **  ref_picture,
op_pixels_func(*)  pix_op[4],
qpel_mc_func(*)  qpix_op[16],
int  is_mpeg12 
)
static

motion compensation of a single macroblock

Parameters
scontext
dest_yluma destination pointer
dest_cbchroma cb/u destination pointer
dest_crchroma cr/v destination pointer
dirdirection (0->forward, 1->backward)
ref_picturearray[3] of pointers to the 3 planes of the reference picture
pix_ophalfpel motion compensation function (average or put normally)
qpix_opqpel motion compensation function (average or put normally) the motion vectors are taken from s->mv and the MV type from s->mv_type

Definition at line 829 of file mpegvideo_motion.c.

Referenced by ff_mpv_motion().

◆ ff_mpv_motion()

void ff_mpv_motion ( MpegEncContext s,
uint8_t *  dest_y,
uint8_t *  dest_cb,
uint8_t *  dest_cr,
int  dir,
uint8_t **  ref_picture,
op_pixels_func(*)  pix_op[4],
qpel_mc_func(*)  qpix_op[16] 
)

Definition at line 974 of file mpegvideo_motion.c.

Referenced by encode_mb_internal(), and mpv_reconstruct_mb_internal().

stride
int stride
Definition: mace.c:144
r
const char * r
Definition: vf_curves.c:116
b
#define b
Definition: input.c:40
OBMC_FILTER
#define OBMC_FILTER(x, t, l, m, r, b)