diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-09-16 14:48:45 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-09-16 14:55:00 +0200 |
commit | e80cbdbc57292a4687339f6a7d30e0dcff42f9e8 (patch) | |
tree | c71ab556c3aa7a3307a39e24f7250d9645958aa8 /libavcodec/mpegvideo_motion.c | |
parent | 744e4429cf9a2ac5c7c1e4ed8bfbb6f9f09a882a (diff) | |
parent | 2568646abb6568b1d329f800a046832adc48acd4 (diff) | |
download | ffmpeg-e80cbdbc57292a4687339f6a7d30e0dcff42f9e8.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master:
mpegvideo: drop unnecessary arguments to hpel_motion()
mpegvideo: drop 'inline' from some functions
nellymoserdec: drop support for s16 output.
bmpdec: only initialize palette for pal8.
build: Properly remove object files while cleaning
flacdsp: arm optimised lpc filter
compat/vsnprintf: return number of bytes required on truncation.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/mpegvideo_motion.c')
-rw-r--r-- | libavcodec/mpegvideo_motion.c | 62 |
1 files changed, 27 insertions, 35 deletions
diff --git a/libavcodec/mpegvideo_motion.c b/libavcodec/mpegvideo_motion.c index 354b60b386..2e5f7e611e 100644 --- a/libavcodec/mpegvideo_motion.c +++ b/libavcodec/mpegvideo_motion.c @@ -30,9 +30,9 @@ #include "msmpeg4.h" #include <limits.h> -static inline void gmc1_motion(MpegEncContext *s, - uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, - uint8_t **ref_picture) +static void gmc1_motion(MpegEncContext *s, + uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, + uint8_t **ref_picture) { uint8_t *ptr; int offset, src_x, src_y, linesize, uvlinesize; @@ -116,9 +116,9 @@ static inline void gmc1_motion(MpegEncContext *s, return; } -static inline void gmc_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) { uint8_t *ptr; int linesize, uvlinesize; @@ -174,11 +174,8 @@ static inline void gmc_motion(MpegEncContext *s, static inline 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, + op_pixels_func *pix_op, int motion_x, int motion_y) { int dxy; @@ -189,26 +186,24 @@ static inline int hpel_motion(MpegEncContext *s, src_y += motion_y >> 1; /* WARNING: do no forget half pels */ - src_x = av_clip(src_x, -16, width); //FIXME unneeded for emu? - if (src_x == width) + src_x = av_clip(src_x, -16, s->width); //FIXME unneeded for emu? + if (src_x == s->width) dxy &= ~1; - src_y = av_clip(src_y, -16, height); - if (src_y == height) + src_y = av_clip(src_y, -16, s->height); + if (src_y == s->height) dxy &= ~2; - src += src_y * stride + src_x; + src += src_y * s->linesize + src_x; if(s->unrestricted_mv && (s->flags&CODEC_FLAG_EMU_EDGE)){ - if( (unsigned)src_x > FFMAX(h_edge_pos - (motion_x&1) - w, 0) - || (unsigned)src_y > FFMAX(v_edge_pos - (motion_y&1) - h, 0)){ - s->dsp.emulated_edge_mc(s->edge_emu_buffer, src, s->linesize, w+1, (h+1)<<field_based, - src_x, src_y<<field_based, h_edge_pos, s->v_edge_pos); + if( (unsigned)src_x > FFMAX(s->h_edge_pos - (motion_x&1) - 8, 0) + || (unsigned)src_y > FFMAX(s->v_edge_pos - (motion_y&1) - 8, 0)){ + s->dsp.emulated_edge_mc(s->edge_emu_buffer, src, s->linesize, 9, 9, + src_x, src_y, s->h_edge_pos, s->v_edge_pos); src= s->edge_emu_buffer; emu=1; } } - if(field_select) - src += s->linesize; - pix_op[dxy](dest, src, stride, h); + pix_op[dxy](dest, src, s->linesize, 8); return emu; } @@ -447,11 +442,9 @@ static inline void obmc_motion(MpegEncContext *s, ptr[i]= ptr[MID]; }else{ ptr[i]= s->obmc_scratchpad + 8*(i&1) + s->linesize*8*(i>>1); - hpel_motion(s, ptr[i], src, 0, 0, + hpel_motion(s, ptr[i], src, src_x, src_y, - s->width, s->height, s->linesize, - s->h_edge_pos, s->v_edge_pos, - 8, 8, pix_op, + pix_op, mv[i][0], mv[i][1]); } } @@ -554,11 +547,12 @@ static inline void qpel_motion(MpegEncContext *s, /** * h263 chroma 4mv motion compensation. */ -static inline 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 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) +{ int dxy, emu=0, src_x, src_y, offset; uint8_t *ptr; @@ -773,11 +767,9 @@ static av_always_inline void MPV_motion_internal(MpegEncContext *s, }else{ for(i=0;i<4;i++) { hpel_motion(s, dest_y + ((i & 1) * 8) + (i >> 1) * 8 * s->linesize, - ref_picture[0], 0, 0, + ref_picture[0], mb_x * 16 + (i & 1) * 8, mb_y * 16 + (i >>1) * 8, - s->width, s->height, s->linesize, - s->h_edge_pos, s->v_edge_pos, - 8, 8, pix_op[1], + pix_op[1], s->mv[dir][i][0], s->mv[dir][i][1]); mx += s->mv[dir][i][0]; |