[FFmpeg-cvslog] avcodec/mpegvideo: Fix block height for lowres 3 interlaced blocks
Michael Niedermayer
git at videolan.org
Thu May 9 17:22:03 CEST 2013
ffmpeg | branch: release/1.2 | Michael Niedermayer <michaelni at gmx.at> | Wed May 8 01:17:45 2013 +0200| [84df0dc40bd6dec02bc45594be7b1ff93e7335e3] | committer: Carl Eugen Hoyos
avcodec/mpegvideo: Fix block height for lowres 3 interlaced blocks
Fixes green trash
Fixes part of Ticket2535
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
(cherry picked from commit bca50e5cd52240d885afeb3edb0fa2c74b352add)
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=84df0dc40bd6dec02bc45594be7b1ff93e7335e3
---
libavcodec/mpegvideo.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index 66a7ed5..92b301d 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
More information about the ffmpeg-cvslog
mailing list