mpegvideo_common.h File Reference

The simplest mpeg encoder (well, it was the simplest!). More...

#include <string.h>
#include "avcodec.h"
#include "dsputil.h"
#include "mpegvideo.h"
#include "mjpegenc.h"
#include "msmpeg4.h"
#include "faandct.h"
#include <limits.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

int dct_quantize_c (MpegEncContext *s, DCTELEM *block, int n, int qscale, int *overflow)
int alloc_picture (MpegEncContext *s, Picture *pic, int shared)
 Allocate a Picture.
void MPV_common_defaults (MpegEncContext *s)
 Set the given MpegEncContext to common defaults (same for encoding and decoding).
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 field_based, int field_select, int src_x, int src_y, int width, int height, int stride, int h_edge_pos, int v_edge_pos, int w, int h, 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 mb_y)
static av_always_inline void mpeg_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], 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)
 h263 chroma 4mv motion compensation.
static void prefetch_motion (MpegEncContext *s, uint8_t **pix, int dir)
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
static void 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])

Detailed Description

The simplest mpeg encoder (well, it was the simplest!).

Definition in file mpegvideo_common.h.

Macro Definition Documentation

#define MID   0

Referenced by obmc_motion().

#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

Referenced by put_obmc().

#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);

Referenced by put_obmc().

Function Documentation

int alloc_picture ( MpegEncContext s,
Picture pic,
int  shared 
)

Allocate a Picture.

The pixels are allocated/set by calling get_buffer() if shared = 0.

Examples:
libavformat/output-example.c.
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 
)
inlinestatic

h263 chroma 4mv motion compensation.

Definition at line 563 of file mpegvideo_common.h.

Referenced by MPV_motion_internal().

int dct_quantize_c ( MpegEncContext s,
DCTELEM block,
int  n,
int  qscale,
int *  overflow 
)

Definition at line 4001 of file mpegvideo_enc.c.

Referenced by dnxhd_encode_init(), encode_mb_internal(), and MPV_encode_init().

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

Definition at line 56 of file mpegvideo_common.h.

Referenced by MPV_motion_internal().

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

Definition at line 142 of file mpegvideo_common.h.

Referenced by MPV_motion_internal().

static int hpel_motion ( MpegEncContext s,
uint8_t *  dest,
uint8_t *  src,
int  field_based,
int  field_select,
int  src_x,
int  src_y,
int  width,
int  height,
int  stride,
int  h_edge_pos,
int  v_edge_pos,
int  w,
int  h,
op_pixels_func pix_op,
int  motion_x,
int  motion_y 
)
inlinestatic

Definition at line 198 of file mpegvideo_common.h.

Referenced by MPV_motion_internal(), and obmc_motion().

static av_always_inline void mpeg_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],
int  motion_x,
int  motion_y,
int  h,
int  mb_y 
)
static

Definition at line 368 of file mpegvideo_common.h.

Referenced by MPV_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  mb_y 
)
static

Definition at line 239 of file mpegvideo_common.h.

Referenced by mpeg_motion().

void MPV_common_defaults ( MpegEncContext s)

Set the given MpegEncContext to common defaults (same for encoding and decoding).

The changed fields will not depend upon the prior state of the MpegEncContext.

Definition at line 620 of file mpegvideo.c.

Referenced by MPV_decode_defaults(), and MPV_encode_defaults().

static void 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] 
)
inlinestatic

Definition at line 885 of file mpegvideo_common.h.

Referenced by encode_mb_internal(), and MPV_decode_mb_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 637 of file mpegvideo_common.h.

Referenced by MPV_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 439 of file mpegvideo_common.h.

Referenced by MPV_motion_internal().

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

Definition at line 613 of file mpegvideo_common.h.

Referenced by MPV_motion_internal().

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

Definition at line 387 of file mpegvideo_common.h.

Referenced by obmc_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 468 of file mpegvideo_common.h.

Referenced by MPV_motion_internal().