Merge commit 'c49cbecbae5a42f4ca004197b0118cc50aaaca2e'
authorHendrik Leppkes <h.leppkes@gmail.com>
Tue, 29 Sep 2015 13:36:06 +0000 (15:36 +0200)
committerHendrik Leppkes <h.leppkes@gmail.com>
Tue, 29 Sep 2015 13:36:06 +0000 (15:36 +0200)
* commit 'c49cbecbae5a42f4ca004197b0118cc50aaaca2e':
  dnxhddec: Decode and use interlace mb flag

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
1  2 
libavcodec/dnxhddec.c

@@@ -399,31 -329,22 +399,32 @@@ static int dnxhd_decode_macroblock(cons
      int interlaced_mb = 0;
  
      if (ctx->mbaff) {
 -        interlaced_mb = get_bits1(&ctx->gb);
 -        qscale = get_bits(&ctx->gb, 10);
 +        interlaced_mb = get_bits1(&row->gb);
 +        qscale = get_bits(&row->gb, 10);
-     } else
+     } else {
 -        qscale = get_bits(&ctx->gb, 11);
 +        qscale = get_bits(&row->gb, 11);
+     }
 -    skip_bits1(&ctx->gb);
 -
 -    for (i = 0; i < 8; i++) {
 -        ctx->bdsp.clear_block(ctx->blocks[i]);
 -        ctx->decode_dct_block(ctx, ctx->blocks[i], i, qscale);
 +    act = get_bits1(&row->gb);
 +    if (act) {
 +        static int warned = 0;
 +        if (!warned) {
 +            warned = 1;
 +            av_log(ctx->avctx, AV_LOG_ERROR,
 +                   "Unsupported adaptive color transform, patch welcome.\n");
 +        }
      }
 -    if (ctx->is_444) {
 -        for (; i < 12; i++) {
 -            ctx->bdsp.clear_block(ctx->blocks[i]);
 -            ctx->decode_dct_block(ctx, ctx->blocks[i], i, qscale);
 +
 +    if (qscale != row->last_qscale) {
 +        for (i = 0; i < 64; i++) {
 +            row->luma_scale[i]   = qscale * ctx->cid_table->luma_weight[i];
 +            row->chroma_scale[i] = qscale * ctx->cid_table->chroma_weight[i];
          }
 +        row->last_qscale = qscale;
 +    }
 +
 +    for (i = 0; i < 8 + 4 * ctx->is_444; i++) {
 +        if (ctx->decode_dct_block(ctx, row, i) < 0)
 +            return AVERROR_INVALIDDATA;
      }
  
      if (frame->interlaced_frame) {