[FFmpeg-devel] [PATCH 1/2] vc2enc: prevent random data

Christophe Gisquet christophe.gisquet at gmail.com
Tue May 3 19:06:22 CEST 2016


The slice prefix is 0 in the reference encoder and the decoder ignores it.
Writing 0 there seems like the best temporary solution.

The padding could have contained uninitialized data, but its standardized value
is 0xFF, hence the memset value.

Overall this allows producing bistreams with no random data for use by fate.
---
 libavcodec/vc2enc.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libavcodec/vc2enc.c b/libavcodec/vc2enc.c
index 943198b..bec513c 100644
--- a/libavcodec/vc2enc.c
+++ b/libavcodec/vc2enc.c
@@ -777,7 +777,10 @@ static int encode_hq_slice(AVCodecContext *avctx, void *arg)
     uint8_t quants[MAX_DWT_LEVELS][4];
     int p, level, orientation;
 
+    // The reference decoder ignores it, and its typical length is 0
+    memset(put_bits_ptr(pb), 0, s->prefix_bytes);
     skip_put_bytes(pb, s->prefix_bytes);
+
     put_bits(pb, 8, quant_idx);
 
     /* Slice quantization (slice_quantizers() in the specs) */
@@ -809,6 +812,7 @@ static int encode_hq_slice(AVCodecContext *avctx, void *arg)
         }
         pb->buf[bytes_start] = pad_s;
         flush_put_bits(pb);
+        memset(pb->buf_ptr, 0, pad_c);
         skip_put_bytes(pb, pad_c);
     }
 
-- 
2.8.1



More information about the ffmpeg-devel mailing list