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

Rostislav Pehlivanov atomnuker at gmail.com
Fri May 6 02:19:41 CEST 2016


On 5 May 2016 at 10:06, Christophe Gisquet <christophe.gisquet at gmail.com>
wrote:

> 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 reference VC2
> encoders put 0xFF there, hence the memset value.
>
> Overall this allows producing bistreams with no random data for use by
> fate.
> ---
>  libavcodec/vc2enc.c | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/libavcodec/vc2enc.c b/libavcodec/vc2enc.c
> index 6d24552..bbbeaa0 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,8 @@ static int encode_hq_slice(AVCodecContext *avctx, void
> *arg)
>          }
>          pb->buf[bytes_start] = pad_s;
>          flush_put_bits(pb);
> +        /* vc2-reference uses that padding that decodes to '0' coeffs */
> +        memset(put_bits_ptr(pb), 0xFF, pad_c);
>          skip_put_bytes(pb, pad_c);
>      }
>
> --
> 2.8.1
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>

Thanks a lot, pushed.

I plan to merge the fate tests as well tomorrow or on Saturday when I'll
have time to quickly fix bugs which appear on platforms I haven't tested
the encoder on. Hopefully none, but you never know.


More information about the ffmpeg-devel mailing list