[FFmpeg-devel] [PATCH 2/3] vc1dec: fieldtx is only valid for interlaced frames
Sebastian Sandberg
sebastiand.sandberg at gmail.com
Thu Jan 31 18:04:21 CET 2013
the fieldtx_plane is not cleared for interlaced fields
---
libavcodec/vc1dec.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c
index f4c31a8..a3d9f42 100644
--- a/libavcodec/vc1dec.c
+++ b/libavcodec/vc1dec.c
@@ -80,7 +80,7 @@ static void vc1_put_signed_blocks_clamped(VC1Context *v)
{
MpegEncContext *s = &v->s;
int topleft_mb_pos, top_mb_pos;
- int stride_y, fieldtx;
+ int stride_y, fieldtx = 0;
int v_dist;
uint8_t *destY, *destU, *destV;
@@ -102,7 +102,8 @@ static void vc1_put_signed_blocks_clamped(VC1Context *v)
}
if (s->mb_x) {
topleft_mb_pos = (s->mb_y - 1) * s->mb_stride + s->mb_x - 1;
- fieldtx = v->fieldtx_plane[topleft_mb_pos];
+ if (v->fcm == ILACE_FRAME)
+ fieldtx = v->fieldtx_plane[topleft_mb_pos];
stride_y = s->linesize << fieldtx;
v_dist = (16 - fieldtx) >> (fieldtx == 0);
s->dsp.put_signed_pixels_clamped(v->block[v->topleft_blk_idx][0],
@@ -126,7 +127,8 @@ static void vc1_put_signed_blocks_clamped(VC1Context *v)
}
if (s->mb_x == s->mb_width - 1) {
top_mb_pos = (s->mb_y - 1) * s->mb_stride + s->mb_x;
- fieldtx = v->fieldtx_plane[top_mb_pos];
+ if (v->fcm == ILACE_FRAME)
+ fieldtx = v->fieldtx_plane[top_mb_pos];
stride_y = s->linesize << fieldtx;
v_dist = fieldtx ? 15 : 8;
s->dsp.put_signed_pixels_clamped(v->block[v->top_blk_idx][0],
--
1.7.10.4
More information about the ffmpeg-devel
mailing list