43     int src_x, src_y, motion_x, motion_y;
 
   53     src_x      = av_clip(src_x, -16, s->
width);
 
   54     if (src_x == s->
width)
 
   56     src_y = av_clip(src_y, -16, s->
height);
 
   63     ptr = ref_picture[0] + src_y * linesize + src_x;
 
   75     if ((motion_x | motion_y) & 7) {
 
   76         s->
mdsp.
gmc1(dest_y, ptr, linesize, 16,
 
   77                      motion_x & 15, motion_y & 15, 128 - s->
no_rounding);
 
   78         s->
mdsp.
gmc1(dest_y + 8, ptr + 8, linesize, 16,
 
   79                      motion_x & 15, motion_y & 15, 128 - s->
no_rounding);
 
   83         dxy = ((motion_x >> 3) & 1) | ((motion_y >> 2) & 2);
 
  100     src_x      = av_clip(src_x, -8, s->
width >> 1);
 
  101     if (src_x == s->
width >> 1)
 
  103     src_y = av_clip(src_y, -8, s->
height >> 1);
 
  104     if (src_y == s->
height >> 1)
 
  108     ptr    = ref_picture[1] + 
offset;
 
  112                                  uvlinesize, uvlinesize,
 
  119     s->
mdsp.
gmc1(dest_cb, ptr, uvlinesize, 8,
 
  120                  motion_x & 15, motion_y & 15, 128 - s->
no_rounding);
 
  122     ptr = ref_picture[2] + 
offset;
 
  125                                  uvlinesize, uvlinesize,
 
  131     s->
mdsp.
gmc1(dest_cr, ptr, uvlinesize, 8,
 
  132                  motion_x & 15, motion_y & 15, 128 - s->
no_rounding);
 
  147     ptr = ref_picture[0];
 
  154     s->
mdsp.
gmc(dest_y, ptr, linesize, 16,
 
  160     s->
mdsp.
gmc(dest_y + 8, ptr, linesize, 16,
 
  176     ptr = ref_picture[1];
 
  177     s->
mdsp.
gmc(dest_cb, ptr, uvlinesize, 8,
 
  184     ptr = ref_picture[2];
 
  185     s->
mdsp.
gmc(dest_cr, ptr, uvlinesize, 8,
 
  195                               int src_x, 
int src_y,
 
  197                               int motion_x, 
int motion_y)
 
  202     src_x += motion_x >> 1;
 
  203     src_y += motion_y >> 1;
 
  206     src_x = av_clip(src_x, -16, s->
width); 
 
  207     if (src_x != s->
width)
 
  209     src_y = av_clip(src_y, -16, s->
height);
 
  211         dxy |= (motion_y & 1) << 1;
 
  245     uint8_t *ptr_y, *ptr_cb, *ptr_cr;
 
  246     int dxy, uvdxy, mx, my, src_x, src_y,
 
  253     block_y_half = (field_based | is_16x8);
 
  255     dxy   = ((motion_y & 1) << 1) | (motion_x & 1);
 
  256     src_x = s->
mb_x * 16 + (motion_x >> 1);
 
  257     src_y = (mb_y << (4 - block_y_half)) + (motion_y >> 1);
 
  261             mx      = (motion_x >> 1) | (motion_x & 1);
 
  263             uvdxy   = ((my & 1) << 1) | (mx & 1);
 
  264             uvsrc_x = s->
mb_x * 8 + (mx >> 1);
 
  265             uvsrc_y = (mb_y << (3 - block_y_half)) + (my >> 1);
 
  267             uvdxy   = dxy | (motion_y & 2) | ((motion_x & 2) >> 1);
 
  268             uvsrc_x = src_x >> 1;
 
  269             uvsrc_y = src_y >> 1;
 
  276         uvsrc_x = s->
mb_x * 8 + mx;
 
  277         uvsrc_y = mb_y * 8 + my;
 
  282             uvdxy   = ((my & 1) << 1) | (mx & 1);
 
  283             uvsrc_x = s->
mb_x * 8 + (mx >> 1);
 
  284             uvsrc_y = (mb_y << (3 - block_y_half)) + (my >> 1);
 
  289                 uvdxy   = ((motion_y & 1) << 1) | (mx & 1);
 
  290                 uvsrc_x = s->
mb_x * 8 + (mx >> 1);
 
  301     ptr_y  = ref_picture[0] + src_y * linesize + src_x;
 
  302     ptr_cb = ref_picture[1] + uvsrc_y * uvlinesize + uvsrc_x;
 
  303     ptr_cr = ref_picture[2] + uvsrc_y * uvlinesize + uvsrc_x;
 
  305     if ((
unsigned)src_x >= 
FFMAX(s->
h_edge_pos - (motion_x & 1) - 15   , 0) ||
 
  306         (unsigned)src_y >= 
FFMAX(   v_edge_pos - (motion_y & 1) - h + 1, 0)) {
 
  311                    "MPEG motion vector out of boundary (%d %d)\n", src_x,
 
  315         src_y = (unsigned)src_y << field_based;
 
  318                                  17, 17 + field_based,
 
  327             uvsrc_y = (unsigned)uvsrc_y << field_based;
 
  357     pix_op[0][dxy](dest_y, ptr_y, 
linesize, 
h);
 
  365     if (!is_mpeg12 && (CONFIG_H261_ENCODER || CONFIG_H261_DECODER) &&
 
  373                         int field_select, 
uint8_t **ref_picture,
 
  375                         int motion_x, 
int motion_y, 
int h, 
int is_16x8, 
int mb_y)
 
  380                              field_select, ref_picture, pix_op,
 
  381                              motion_x, motion_y, h, 1, is_16x8, mb_y);
 
  385                              field_select, ref_picture, pix_op,
 
  386                              motion_x, motion_y, h, 0, is_16x8, mb_y);
 
  391                               int bottom_field, 
int field_select,
 
  394                               int motion_x, 
int motion_y, 
int h, 
int mb_y)
 
  399                              bottom_field, field_select, ref_picture, pix_op,
 
  400                              motion_x, motion_y, h, 1, 0, mb_y);
 
  404                              bottom_field, field_select, ref_picture, pix_op,
 
  405                              motion_x, motion_y, h, 0, 0, mb_y);
 
  416     uint8_t *
const bottom = src[4];
 
  417 #define OBMC_FILTER(x, t, l, m, r, b)\ 
  418     dst[x]= (t*top[x] + l*left[x] + m*mid[x] + r*right[x] + b*bottom[x] + 4)>>3 
  419 #define OBMC_FILTER4(x, t, l, m, r, b)\ 
  420     OBMC_FILTER(x         , t, l, m, r, b);\ 
  421     OBMC_FILTER(x+1       , t, l, m, r, b);\ 
  422     OBMC_FILTER(x  +stride, t, l, m, r, b);\ 
  423     OBMC_FILTER(x+1+stride, t, l, m, r, b); 
  464                                int src_x, 
int src_y,
 
  474     for (i = 0; i < 5; i++) {
 
  475         if (i && mv[i][0] == mv[
MID][0] && mv[i][1] == mv[
MID][1]) {
 
  492                                int field_based, 
int bottom_field,
 
  493                                int field_select, 
uint8_t **ref_picture,
 
  496                                int motion_x, 
int motion_y, 
int h)
 
  498     uint8_t *ptr_y, *ptr_cb, *ptr_cr;
 
  499     int dxy, uvdxy, mx, my, src_x, src_y, uvsrc_x, uvsrc_y, 
v_edge_pos;
 
  502     dxy   = ((motion_y & 3) << 2) | (motion_x & 3);
 
  504     src_x = s->
mb_x *  16                 + (motion_x >> 2);
 
  505     src_y = s->
mb_y * (16 >> field_based) + (motion_y >> 2);
 
  508     linesize   = s->
linesize   << field_based;
 
  515         static const int rtab[8] = { 0, 0, 1, 1, 0, 0, 0, 1 };
 
  516         mx = (motion_x >> 1) + rtab[motion_x & 7];
 
  517         my = (motion_y >> 1) + rtab[motion_y & 7];
 
  519         mx = (motion_x >> 1) | (motion_x & 1);
 
  520         my = (motion_y >> 1) | (motion_y & 1);
 
  525     mx = (mx >> 1) | (mx & 1);
 
  526     my = (my >> 1) | (my & 1);
 
  528     uvdxy = (mx & 1) | ((my & 1) << 1);
 
  532     uvsrc_x = s->
mb_x *  8                 + mx;
 
  533     uvsrc_y = s->
mb_y * (8 >> field_based) + my;
 
  535     ptr_y  = ref_picture[0] + src_y   * linesize   + src_x;
 
  536     ptr_cb = ref_picture[1] + uvsrc_y * uvlinesize + uvsrc_x;
 
  537     ptr_cr = ref_picture[2] + uvsrc_y * uvlinesize + uvsrc_x;
 
  539     if ((
unsigned)src_x >= 
FFMAX(s->
h_edge_pos - (motion_x & 3) - 15   , 0) ||
 
  540         (unsigned)src_y >= 
FFMAX(   v_edge_pos - (motion_y & 3) - h + 1, 0)) {
 
  543                                  17, 17 + field_based,
 
  544                                  src_x, src_y * (1 << field_based),
 
  555                                      uvsrc_x, uvsrc_y * (1 << field_based),
 
  560                                      uvsrc_x, uvsrc_y * (1 << field_based),
 
  568         qpix_op[0][dxy](dest_y, ptr_y, 
linesize);
 
  583         qpix_op[1][dxy](dest_y, ptr_y, 
linesize);
 
  584         qpix_op[1][dxy](dest_y + 8, ptr_y + 8, 
linesize);
 
  587         pix_op[1][uvdxy](dest_cr, ptr_cr, 
uvlinesize, h >> 1);
 
  588         pix_op[1][uvdxy](dest_cb, ptr_cb, 
uvlinesize, h >> 1);
 
  602     int src_x, src_y, dxy, emu = 0;
 
  610     dxy  = ((my & 1) << 1) | (mx & 1);
 
  614     src_x = s->
mb_x * 8 + mx;
 
  615     src_y = s->
mb_y * 8 + my;
 
  616     src_x = av_clip(src_x, -8, (s->
width >> 1));
 
  617     if (src_x == (s->
width >> 1))
 
  619     src_y = av_clip(src_y, -8, (s->
height >> 1));
 
  620     if (src_y == (s->
height >> 1))
 
  624     ptr    = ref_picture[1] + 
offset;
 
  625     if ((
unsigned)src_x >= 
FFMAX((s->
h_edge_pos >> 1) - (dxy  & 1) - 7, 0) ||
 
  636     ptr = ref_picture[2] + 
offset;
 
  652     const int mx    = (s->
mv[dir][0][0] >> 
shift) + 16 * s->
mb_x + 8;
 
  653     const int my    = (s->
mv[dir][0][1] >> shift) + 16 * s->
mb_y;
 
  654     int off         = mx + (my + (s->
mb_x & 3) * 4) * s->
linesize + 64;
 
  657     off = (mx >> 1) + ((my >> 1) + (s->
mb_x & 7)) * s->
uvlinesize + 64;
 
  672     const int xy         = mb_x + mb_y * s->
mb_stride;
 
  674     const int mot_xy     = mb_x * 2 + mb_y * 2 * mot_stride;
 
  683               cur_frame->
motion_val[0][mot_xy + mot_stride]);
 
  685               cur_frame->
motion_val[0][mot_xy + mot_stride + 1]);
 
  688               cur_frame->
motion_val[0][mot_xy + mot_stride]);
 
  690               cur_frame->
motion_val[0][mot_xy + mot_stride + 1]);
 
  693         AV_COPY32(mv_cache[0][1], mv_cache[1][1]);
 
  694         AV_COPY32(mv_cache[0][2], mv_cache[1][2]);
 
  697                   cur_frame->
motion_val[0][mot_xy - mot_stride]);
 
  699                   cur_frame->
motion_val[0][mot_xy - mot_stride + 1]);
 
  703         AV_COPY32(mv_cache[1][0], mv_cache[1][1]);
 
  704         AV_COPY32(mv_cache[2][0], mv_cache[2][1]);
 
  708                   cur_frame->
motion_val[0][mot_xy - 1 + mot_stride]);
 
  712         AV_COPY32(mv_cache[1][3], mv_cache[1][2]);
 
  713         AV_COPY32(mv_cache[2][3], mv_cache[2][2]);
 
  717                   cur_frame->
motion_val[0][mot_xy + 2 + mot_stride]);
 
  722     for (i = 0; i < 4; i++) {
 
  723         const int x      = (i & 1) + 1;
 
  724         const int y      = (i >> 1) + 1;
 
  726             { mv_cache[y][x][0],     mv_cache[y][x][1]         },
 
  727             { mv_cache[y - 1][x][0], mv_cache[y - 1][x][1]     },
 
  728             { mv_cache[y][x - 1][0], mv_cache[y][x - 1][1]     },
 
  729             { mv_cache[y][x + 1][0], mv_cache[y][x + 1][1]     },
 
  730             { mv_cache[y + 1][x][0], mv_cache[y + 1][x][1]     }
 
  735                     mb_x * 16 + (i & 1) * 8, mb_y * 16 + (i >> 1) * 8,
 
  744                           ref_picture, pix_op[1],
 
  757     int dxy, mx, my, src_x, src_y;
 
  766         for (i = 0; i < 4; i++) {
 
  767             int motion_x = s->
mv[dir][i][0];
 
  768             int motion_y = s->
mv[dir][i][1];
 
  770             dxy   = ((motion_y & 3) << 2) | (motion_x & 3);
 
  771             src_x = mb_x * 16 + (motion_x >> 2) + (i & 1) * 8;
 
  772             src_y = mb_y * 16 + (motion_y >> 2) + (i >> 1) * 8;
 
  775             src_x = av_clip(src_x, -16, s->
width);
 
  776             if (src_x == s->
width)
 
  778             src_y = av_clip(src_y, -16, s->
height);
 
  782             ptr = ref_picture[0] + (src_y * s->
linesize) + (src_x);
 
  793             dest = dest_y + ((i & 1) * 8) + (i >> 1) * 8 * s->
linesize;
 
  794             qpix_op[1][dxy](dest, ptr, s->
linesize);
 
  796             mx += s->
mv[dir][i][0] / 2;
 
  797             my += s->
mv[dir][i][1] / 2;
 
  800         for (i = 0; i < 4; i++) {
 
  802                         dest_y + ((i & 1) * 8) + (i >> 1) * 8 * s->
linesize,
 
  804                         mb_x * 16 + (i & 1) * 8,
 
  805                         mb_y * 16 + (i >> 1) * 8,
 
  810             mx += s->
mv[dir][i][0];
 
  811             my += s->
mv[dir][i][1];
 
  817                           ref_picture, pix_op[1], mx, my);
 
  848         apply_obmc(s, dest_y, dest_cb, dest_cr, ref_picture, pix_op);
 
  865                         ref_picture, pix_op, qpix_op,
 
  866                         s->
mv[dir][0][0], s->
mv[dir][0][1], 16);
 
  867         } 
else if (!is_mpeg12 && (CONFIG_WMV2_DECODER || CONFIG_WMV2_ENCODER) &&
 
  871                             s->
mv[dir][0][0], s->
mv[dir][0][1], 16);
 
  875                         s->
mv[dir][0][0], s->
mv[dir][0][1], 16, 0, mb_y);
 
  881                       dir, ref_picture, qpix_op, pix_op);
 
  886                 for (i = 0; i < 2; i++)
 
  889                                 ref_picture, pix_op, qpix_op,
 
  890                                 s->
mv[dir][i][0], s->
mv[dir][i][1], 8);
 
  896                                   s->
mv[dir][0][0], s->
mv[dir][0][1], 8, mb_y);
 
  901                                   s->
mv[dir][1][0], s->
mv[dir][1][1], 8, mb_y);
 
  905                 || !ref_picture[0]) {
 
  912                         s->
mv[dir][0][0], s->
mv[dir][0][1], 16, 0, mb_y >> 1);
 
  916         for (i = 0; i < 2; i++) {
 
  921                 ref2picture = ref_picture;
 
  929                         s->
mv[dir][i][0], s->
mv[dir][i][1],
 
  930                         8, 1, (mb_y & ~1) + i);
 
  939             for (i = 0; i < 2; i++) {
 
  941                 for (j = 0; j < 2; j++)
 
  943                                       j, j ^ i, ref_picture, pix_op,
 
  944                                       s->
mv[dir][2 * i + j][0],
 
  945                                       s->
mv[dir][2 * i + j][1], 8, mb_y);
 
  949             if (!ref_picture[0]) {
 
  952             for (i = 0; i < 2; i++) {
 
  956                             s->
mv[dir][2 * i][0], s->
mv[dir][2 * i][1],
 
  984                             ref_picture, pix_op, qpix_op, 1);
 
  988                             ref_picture, pix_op, qpix_op, 0);
 
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])
void(* prefetch)(uint8_t *buf, ptrdiff_t stride, int h)
Prefetch memory into cache (if supported by hardware). 
static int shift(int a, int b)
static void gmc_motion(MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, uint8_t **ref_picture)
#define MV_TYPE_FIELD
2 vectors, one per field 
int sprite_warping_accuracy
uint8_t * edge_emu_buffer
temporary buffer for if MVs point to out-of-frame data 
op_pixels_func avg_pixels_tab[4][4]
Halfpel motion compensation with rounding (a+b+1)>>1. 
int v_edge_pos
horizontal / vertical position of the right/bottom edge (pixel replication) 
#define FF_BUG_HPEL_CHROMA
int obmc
overlapped block motion compensation 
int real_sprite_warping_points
void(* qpel_mc_func)(uint8_t *dst, const uint8_t *src, ptrdiff_t stride)
void(* emulated_edge_mc)(uint8_t *dst, const uint8_t *src, ptrdiff_t dst_linesize, ptrdiff_t src_linesize, int block_w, int block_h, int src_x, int src_y, int w, int h)
Copy a rectangular area of samples to a temporary buffer and replicate the border samples...
#define av_assert2(cond)
assert() equivalent, that does lie in speed critical code. 
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. 
enum OutputFormat out_format
output format 
int no_rounding
apply no rounding to motion compensation (MPEG-4, msmpeg4, ...) for B-frames rounding mode is always ...
Picture current_picture
copy of the current picture structure. 
#define FF_BUG_QPEL_CHROMA2
#define AV_CODEC_FLAG_GRAY
Only decode/encode grayscale. 
int sprite_offset[2][2]
sprite offset[isChroma][isMVY] 
#define LOCAL_ALIGNED_8(t, v,...)
void(* gmc)(uint8_t *dst, uint8_t *src, int stride, int h, int ox, int oy, int dxx, int dxy, int dyx, int dyy, int shift, int r, int width, int height)
global motion compensation. 
static void prefetch_motion(MpegEncContext *s, uint8_t **pix, int dir)
int mb_skipped
MUST BE SET only during DECODING. 
void(* gmc1)(uint8_t *dst, uint8_t *src, int srcStride, int h, int x16, int y16, int rounder)
translational global motion compensation. 
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers. 
int flags
AV_CODEC_FLAG_*. 
simple assert() macros that are a bit more flexible than ISO C assert(). 
int quarter_sample
1->qpel, 0->half pel ME/MC 
static const uint8_t offset[127][2]
common internal API header 
int sprite_delta[2][2]
sprite_delta [isY][isMVY] 
void(* op_pixels_func)(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h)
int16_t(*[2] motion_val)[2]
Picture * current_picture_ptr
pointer to the current picture 
static void gmc1_motion(MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, uint8_t **ref_picture)
#define FF_BUG_QPEL_CHROMA
preferred ID for MPEG-1/2 video decoding 
#define OBMC_FILTER4(x, t, l, m, r, b)
int first_field
is 1 for the first field of a field picture 0 otherwise 
static const int8_t mv[256][2]
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 
#define MV_TYPE_16X16
1 vector for the whole mb 
Libavcodec external API header. 
ptrdiff_t linesize
line size, in bytes, may be different from width 
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)
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line. 
int height
picture size. must be a multiple of 16 
op_pixels_func put_pixels_tab[4][4]
Halfpel motion compensation with rounding (a+b+1)>>1. 
#define MV_TYPE_16X8
2 vectors, one per 16x8 block 
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)
op_pixels_func put_no_rnd_pixels_tab[4][4]
Halfpel motion compensation with no rounding (a+b)>>1. 
ptrdiff_t uvlinesize
line size, for chroma in bytes, may be different from width 
static int ff_h263_round_chroma(int x)
int pict_type
AV_PICTURE_TYPE_I, AV_PICTURE_TYPE_P, AV_PICTURE_TYPE_B, ... 
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes. 
int mv[2][4][2]
motion vectors for a macroblock first coordinate : 0 = forward 1 = backward second "         : depend...
int b8_stride
2*mb_width+1 used for some 8x8 block arrays to allow simple addressing 
struct AVCodecContext * avctx
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)
GLint GLenum GLboolean GLsizei stride
int mb_stride
mb_width+1 used for some arrays to allow simple addressing of left & top MBs without sig11 ...
void ff_mspel_motion(MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, uint8_t **ref_picture, op_pixels_func(*pix_op)[4], int motion_x, int motion_y, int h)
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)
#define MV_TYPE_DMV
2 vectors, special mpeg2 Dual Prime Vectors 
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])
uint8_t * obmc_scratchpad
uint32_t * mb_type
types and macros are defined in mpegutils.h 
int workaround_bugs
workaround bugs in encoders which cannot be detected automatically 
void ff_h261_loop_filter(MpegEncContext *s)
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 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])
#define MV_TYPE_8X8
4 vectors (H.263, MPEG-4 4MV) 
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 void put_obmc(uint8_t *dst, uint8_t *src[5], int stride)
#define OBMC_FILTER(x, t, l, m, r, b)