aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-05-08 01:17:45 +0200
committerCarl Eugen Hoyos <cehoyos@ag.or.at>2013-05-09 17:20:52 +0200
commit84df0dc40bd6dec02bc45594be7b1ff93e7335e3 (patch)
treed32369fec247972d5d54579b5a4b373532951a09
parenta857811c755b880b667763c74506150ebec72a81 (diff)
downloadffmpeg-84df0dc40bd6dec02bc45594be7b1ff93e7335e3.tar.gz
avcodec/mpegvideo: Fix block height for lowres 3 interlaced blocks
Fixes green trash Fixes part of Ticket2535 Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit bca50e5cd52240d885afeb3edb0fa2c74b352add)
-rw-r--r--libavcodec/mpegvideo.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index 66a7ed559e..92b301dbba 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -2261,11 +2261,12 @@ static av_always_inline void mpeg_motion_lowres(MpegEncContext *s,
pix_op[lowres - 1](dest_y, ptr_y, linesize, h, sx, sy);
if (!CONFIG_GRAY || !(s->flags & CODEC_FLAG_GRAY)) {
+ int hc = s->chroma_y_shift ? (h+1-bottom_field)>>1 : h;
uvsx = (uvsx << 2) >> lowres;
uvsy = (uvsy << 2) >> lowres;
- if (h >> s->chroma_y_shift) {
- pix_op[op_index](dest_cb, ptr_cb, uvlinesize, h >> s->chroma_y_shift, uvsx, uvsy);
- pix_op[op_index](dest_cr, ptr_cr, uvlinesize, h >> s->chroma_y_shift, uvsx, uvsy);
+ if (hc) {
+ pix_op[op_index](dest_cb, ptr_cb, uvlinesize, hc, uvsx, uvsy);
+ pix_op[op_index](dest_cr, ptr_cr, uvlinesize, hc, uvsx, uvsy);
}
}
// FIXME h261 lowres loop filter