[FFmpeg-devel] [PATCH] speedhq: fix decoding artifacts

Paul B Mahol onemda at gmail.com
Sat Feb 18 21:37:26 EET 2017


On 2/18/17, Steinar H. Gunderson <steinar+ffmpeg at gunderson.no> wrote:
> The quantization table is stored in the natural order, but when we
> access it, we use an index that's in zigzag order, causing us to read
> the wrong value. This causes artifacts, especially in areas with
> horizontal or vertical edges. The artifacts look a lot like the
> DCT ringing artifacts you'd expect to see from a low-bitrate file,
> but when comparing to NewTek's own decoder, it's obvious they're not
> supposed to be there.
>
> Fix by simply storing the scaled quantization table in zigzag order.
> Performance is unchanged.
> ---
>  libavcodec/speedhq.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavcodec/speedhq.c b/libavcodec/speedhq.c
> index 45ee37a4e6..60efb0222b 100644
> --- a/libavcodec/speedhq.c
> +++ b/libavcodec/speedhq.c
> @@ -409,7 +409,7 @@ static int decode_speedhq_field(const SHQContext *s,
> const uint8_t *buf, int buf
>  static void compute_quant_matrix(int *output, int qscale)
>  {
>      int i;
> -    for (i = 0; i < 64; i++) output[i] = unscaled_quant_matrix[i] * qscale;
> +    for (i = 0; i < 64; i++) output[i] =
> unscaled_quant_matrix[ff_zigzag_direct[i]] * qscale;
>  }
>
>  static int speedhq_decode_frame(AVCodecContext *avctx,
> --
> 2.11.0
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>

lgtm


More information about the ffmpeg-devel mailing list