Browse Source

vc1dec: Don't apply the loop filter on fields

Fixes read of uninitialized memory.

Based on a patch by Michael Niedermayer.

Signed-off-by: Martin Storsjö <martin@martin.st>
tags/n2.0
Martin Storsjö 12 years ago
parent
commit
5d9d8461fb
2 changed files with 32 additions and 31 deletions
  1. +3
    -2
      libavcodec/vc1dec.c
  2. +29
    -29
      tests/ref/fate/vc1_sa10143

+ 3
- 2
libavcodec/vc1dec.c View File

@@ -4619,7 +4619,8 @@ static void vc1_decode_p_blocks(VC1Context *v)
break;
}

apply_loop_filter = s->loop_filter && !(s->avctx->skip_loop_filter >= AVDISCARD_NONKEY);
apply_loop_filter = s->loop_filter && !(s->avctx->skip_loop_filter >= AVDISCARD_NONKEY) &&
v->fcm == PROGRESSIVE;
s->first_slice_line = 1;
memset(v->cbp_base, 0, sizeof(v->cbp_base[0])*2*s->mb_stride);
for (s->mb_y = s->start_mb_y; s->mb_y < s->end_mb_y; s->mb_y++) {
@@ -4633,7 +4634,7 @@ static void vc1_decode_p_blocks(VC1Context *v)
else if (v->fcm == ILACE_FRAME)
vc1_decode_p_mb_intfr(v);
else vc1_decode_p_mb(v);
if (s->mb_y != s->start_mb_y && apply_loop_filter && v->fcm == PROGRESSIVE)
if (s->mb_y != s->start_mb_y && apply_loop_filter)
vc1_apply_p_loop_filter(v);
if (get_bits_count(&s->gb) > v->bits || get_bits_count(&s->gb) < 0) {
// TODO: may need modification to handle slice coding


+ 29
- 29
tests/ref/fate/vc1_sa10143 View File

@@ -1,31 +1,31 @@
#tb 0: 1/25
0, 0, 0, 1, 518400, 0x89407f55
0, 2, 2, 1, 518400, 0xeb8d84a1
0, 3, 3, 1, 518400, 0x2121ff57
0, 4, 4, 1, 518400, 0xd81adb3d
0, 5, 5, 1, 518400, 0x01e36aa2
0, 6, 6, 1, 518400, 0x6b802361
0, 7, 7, 1, 518400, 0xc8403c77
0, 8, 8, 1, 518400, 0xdd342b5d
0, 9, 9, 1, 518400, 0x2100eea5
0, 10, 10, 1, 518400, 0x92a22da6
0, 11, 11, 1, 518400, 0x6bacdef7
0, 12, 12, 1, 518400, 0x4a00715f
0, 13, 13, 1, 518400, 0x59b98727
0, 14, 14, 1, 518400, 0xbf912ee1
0, 15, 15, 1, 518400, 0x8c966cd6
0, 16, 16, 1, 518400, 0x2c9a2535
0, 17, 17, 1, 518400, 0x29085c06
0, 18, 18, 1, 518400, 0x46ae6b7d
0, 19, 19, 1, 518400, 0x283100f4
0, 20, 20, 1, 518400, 0x2731b5ff
0, 21, 21, 1, 518400, 0x1132ea54
0, 22, 22, 1, 518400, 0x37cbe539
0, 23, 23, 1, 518400, 0x08ff75cf
0, 24, 24, 1, 518400, 0xafb6bc45
0, 25, 25, 1, 518400, 0x19d3873d
0, 26, 26, 1, 518400, 0xd494a8be
0, 27, 27, 1, 518400, 0x285f41ef
0, 28, 28, 1, 518400, 0xd4b1ffa1
0, 29, 29, 1, 518400, 0xc3876c3a
0, 30, 30, 1, 518400, 0xb73dbb62
0, 2, 2, 1, 518400, 0x1480849d
0, 3, 3, 1, 518400, 0x0e69ff59
0, 4, 4, 1, 518400, 0x00d6db06
0, 5, 5, 1, 518400, 0x1a5b6a69
0, 6, 6, 1, 518400, 0xc1a1232e
0, 7, 7, 1, 518400, 0x9a4e3c54
0, 8, 8, 1, 518400, 0x04122b44
0, 9, 9, 1, 518400, 0x0fcfeebc
0, 10, 10, 1, 518400, 0xc7882dc1
0, 11, 11, 1, 518400, 0x9d79df09
0, 12, 12, 1, 518400, 0xff6b716f
0, 13, 13, 1, 518400, 0x638a8746
0, 14, 14, 1, 518400, 0x07572efb
0, 15, 15, 1, 518400, 0x306f6cef
0, 16, 16, 1, 518400, 0xd7602518
0, 17, 17, 1, 518400, 0x49ab5bf5
0, 18, 18, 1, 518400, 0x3c736b6c
0, 19, 19, 1, 518400, 0x95ae00c9
0, 20, 20, 1, 518400, 0x7b9ab64e
0, 21, 21, 1, 518400, 0x5205ea68
0, 22, 22, 1, 518400, 0xb486e618
0, 23, 23, 1, 518400, 0xa3217616
0, 24, 24, 1, 518400, 0xc66bbc56
0, 25, 25, 1, 518400, 0xf024872a
0, 26, 26, 1, 518400, 0x97d2a8ba
0, 27, 27, 1, 518400, 0xa3a2418e
0, 28, 28, 1, 518400, 0x08460005
0, 29, 29, 1, 518400, 0x50fb6c94
0, 30, 30, 1, 518400, 0x5584bb40

Loading…
Cancel
Save