[FFmpeg-cvslog] vc1dec: Don't apply the loop filter on fields
Martin Storsjö
git at videolan.org
Wed May 15 10:11:26 CEST 2013
ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Tue May 14 14:36:00 2013 +0300| [5d9d8461fbb87046a7ca220d3676a045bd7ab46e] | committer: Martin Storsjö
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 at martin.st>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5d9d8461fbb87046a7ca220d3676a045bd7ab46e
---
libavcodec/vc1dec.c | 5 ++--
tests/ref/fate/vc1_sa10143 | 58 ++++++++++++++++++++++----------------------
2 files changed, 32 insertions(+), 31 deletions(-)
diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c
index 994f5df..f1dc10a 100644
--- a/libavcodec/vc1dec.c
+++ b/libavcodec/vc1dec.c
@@ -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
diff --git a/tests/ref/fate/vc1_sa10143 b/tests/ref/fate/vc1_sa10143
index a008356..0d2e697 100644
--- a/tests/ref/fate/vc1_sa10143
+++ b/tests/ref/fate/vc1_sa10143
@@ -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
More information about the ffmpeg-cvslog
mailing list