The functions related to bitstream reading must use the natural zigzag order, and not the one permuted for use in the iDCT.
This resulted in a bitstream where the AC coefficients were encoded in an unexpected order. --- libavcodec/dnxhdenc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/dnxhdenc.c b/libavcodec/dnxhdenc.c index 7d96cd4..6eb5e1e 100644 --- a/libavcodec/dnxhdenc.c +++ b/libavcodec/dnxhdenc.c @@ -471,7 +471,7 @@ void dnxhd_encode_block(DNXHDEncContext *ctx, int16_t *block, ctx->m.last_dc[n] = block[0]; for (i = 1; i <= last_index; i++) { - j = ctx->m.intra_scantable.permutated[i]; + j = ctx->m.intra_scantable.scantable[i]; slevel = block[j]; if (slevel) { int run_level = i - last_non_zero - 1; @@ -546,7 +546,7 @@ int dnxhd_calc_ac_bits(DNXHDEncContext *ctx, int16_t *block, int last_index) int bits = 0; int i, j, level; for (i = 1; i <= last_index; i++) { - j = ctx->m.intra_scantable.permutated[i]; + j = ctx->m.intra_scantable.scantable[i]; level = block[j]; if (level) { int run_level = i - last_non_zero - 1; -- 2.5.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel