diff options
author | Kostya Shishkov <kostya.shishkov@gmail.com> | 2007-03-11 09:51:01 +0000 |
---|---|---|
committer | Kostya Shishkov <kostya.shishkov@gmail.com> | 2007-03-11 09:51:01 +0000 |
commit | c81ab015f8227e4a79358cfe0bde4985853e433e (patch) | |
tree | 69c4480bc05d8ce19781ca6fea5944a0b5ab4b29 /libavcodec/zmbvenc.c | |
parent | 284ad8a4f06087f3df94d6473774a01a8bececb5 (diff) | |
download | ffmpeg-c81ab015f8227e4a79358cfe0bde4985853e433e.tar.gz |
Correctly ME border blocks
Originally committed as revision 8322 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/zmbvenc.c')
-rw-r--r-- | libavcodec/zmbvenc.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/libavcodec/zmbvenc.c b/libavcodec/zmbvenc.c index 1b6d87efae..a799644492 100644 --- a/libavcodec/zmbvenc.c +++ b/libavcodec/zmbvenc.c @@ -80,17 +80,19 @@ static inline int block_cmp(uint8_t *src, int stride, uint8_t *src2, int stride2 static int zmbv_me(ZmbvEncContext *c, uint8_t *src, int sstride, uint8_t *prev, int pstride, int x, int y, int *mx, int *my) { - int dx, dy, tx, ty, tv, bv; + int dx, dy, tx, ty, tv, bv, bw, bh; *mx = *my = 0; - bv = block_cmp(src, sstride, prev, pstride, ZMBV_BLOCK, ZMBV_BLOCK); + bw = FFMIN(ZMBV_BLOCK, c->avctx->width - x); + bh = FFMIN(ZMBV_BLOCK, c->avctx->height - y); + bv = block_cmp(src, sstride, prev, pstride, bw, bh); if(!bv) return 0; - for(ty = FFMAX(y - c->range, 0); ty < FFMIN(y + c->range, c->avctx->height - ZMBV_BLOCK); ty++){ - for(tx = FFMAX(x - c->range, 0); tx < FFMIN(x + c->range, c->avctx->width - ZMBV_BLOCK); tx++){ + for(ty = FFMAX(y - c->range, 0); ty < FFMIN(y + c->range, c->avctx->height - bh); ty++){ + for(tx = FFMAX(x - c->range, 0); tx < FFMIN(x + c->range, c->avctx->width - bw); tx++){ if(tx == x && ty == y) continue; // we already tested this block dx = tx - x; dy = ty - y; - tv = block_cmp(src, sstride, prev + dx + dy*pstride, pstride, ZMBV_BLOCK, ZMBV_BLOCK); + tv = block_cmp(src, sstride, prev + dx + dy*pstride, pstride, bw, bh); if(tv < bv){ bv = tv; *mx = dx; |