static int decode_p_picture_header(VC9Context *v)

{

    /* INTERFRM, FRMCNT, RANGEREDFRM read in caller */

    int lowquant, pqindex;



    pqindex = get_bits(&v->gb, 5);

    if (v->quantizer_mode == QUANT_FRAME_IMPLICIT)

        v->pq = pquant_table[0][pqindex];

    else

    {

        v->pq = pquant_table[v->quantizer_mode-1][pqindex];

    }

    if (pqindex < 9) v->halfpq = get_bits(&v->gb, 1);

    if (v->quantizer_mode == QUANT_FRAME_EXPLICIT)

        v->pquantizer = get_bits(&v->gb, 1);

    av_log(v->avctx, AV_LOG_DEBUG, "P Frame: QP=%i (+%i/2)\n",

           v->pq, v->halfpq);

    if (v->extended_mv == 1) v->mvrange = get_prefix(&v->gb, 0, 3);

#if HAS_ADVANCED_PROFILE

    if (v->profile > PROFILE_MAIN)

    {

        if (v->postprocflag) v->postproc = get_bits(&v->gb, 1);

    }

    else

#endif

        if (v->multires) v->respic = get_bits(&v->gb, 2);

    lowquant = (v->pquantizer>12) ? 0 : 1;

    v->mv_mode = mv_pmode_table[lowquant][get_prefix(&v->gb, 1, 4)];

    if (v->mv_mode == MV_PMODE_INTENSITY_COMP)

    {

        v->mv_mode2 = mv_pmode_table[lowquant][get_prefix(&v->gb, 1, 3)];

        v->lumscale = get_bits(&v->gb, 6);

        v->lumshift = get_bits(&v->gb, 6);

    }



    if ((v->mv_mode == MV_PMODE_INTENSITY_COMP &&

         v->mv_mode2 == MV_PMODE_MIXED_MV)

        || v->mv_mode == MV_PMODE_MIXED_MV)

    {

        if (bitplane_decoding(v->mv_type_mb_plane, v->width_mb,

                                  v->height_mb, v) < 0)

            return -1;

    }



    if (bitplane_decoding(v->skip_mb_plane, v->width_mb,

                              v->height_mb, v) < 0)

        return -1;



    /* Hopefully this is correct for P frames */

    v->mv_diff_vlc = &vc9_mv_diff_vlc[get_bits(&v->gb, 2)];

    v->cbpcy_vlc = &vc9_cbpcy_p_vlc[get_bits(&v->gb, 2)];



    if (v->dquant)

    {

        av_log(v->avctx, AV_LOG_INFO, "VOP DQuant info\n");

        vop_dquant_decoding(v);

    }



    if (v->vstransform)

    {

        v->ttmbf = get_bits(&v->gb, 1);

        if (v->ttmbf)

        {

            v->ttfrm = get_bits(&v->gb, 2);

            av_log(v->avctx, AV_LOG_INFO, "Transform used: %ix%i\n",

                   (v->ttfrm & 2) ? 4 : 8, (v->ttfrm & 1) ? 4 : 8);

        }

    }

    /* Epilog should be done in caller */

    return 0;

}

static int decode_p_picture_header(VC9Context *v)

{

    

    int lowquant, pqindex;



    pqindex = get_bits(&v->gb, 5);

    if (v->quantizer_mode == QUANT_FRAME_IMPLICIT)

        v->pq = pquant_table[0][pqindex];

    else

    {

        v->pq = pquant_table[v->quantizer_mode-1][pqindex];

    }

    if (pqindex < 9) v->halfpq = get_bits(&v->gb, 1);

    if (v->quantizer_mode == QUANT_FRAME_EXPLICIT)

        v->pquantizer = get_bits(&v->gb, 1);

    av_log(v->avctx, AV_LOG_DEBUG, "P Frame: QP=%i (+%i/2)\n",

           v->pq, v->halfpq);

    if (v->extended_mv == 1) v->mvrange = get_prefix(&v->gb, 0, 3);

#if HAS_ADVANCED_PROFILE

    if (v->profile > PROFILE_MAIN)

    {

        if (v->postprocflag) v->postproc = get_bits(&v->gb, 1);

    }

    else

#endif

        if (v->multires) v->respic = get_bits(&v->gb, 2);

    lowquant = (v->pquantizer>12) ? 0 : 1;

    v->mv_mode = mv_pmode_table[lowquant][get_prefix(&v->gb, 1, 4)];

    if (v->mv_mode == MV_PMODE_INTENSITY_COMP)

    {

        v->mv_mode2 = mv_pmode_table[lowquant][get_prefix(&v->gb, 1, 3)];

        v->lumscale = get_bits(&v->gb, 6);

        v->lumshift = get_bits(&v->gb, 6);

    }



    if ((v->mv_mode == MV_PMODE_INTENSITY_COMP &&

         v->mv_mode2 == MV_PMODE_MIXED_MV)

        || v->mv_mode == MV_PMODE_MIXED_MV)

    {

        if (bitplane_decoding(v->mv_type_mb_plane, v->width_mb,

                                  v->height_mb, v) < 0)

            return -1;

    }



    if (bitplane_decoding(v->skip_mb_plane, v->width_mb,

                              v->height_mb, v) < 0)

        return -1;



    

    v->mv_diff_vlc = &vc9_mv_diff_vlc[get_bits(&v->gb, 2)];

    v->cbpcy_vlc = &vc9_cbpcy_p_vlc[get_bits(&v->gb, 2)];



    if (v->dquant)

    {

        av_log(v->avctx, AV_LOG_INFO, "VOP DQuant info\n");

        vop_dquant_decoding(v);

    }



    if (v->vstransform)

    {

        v->ttmbf = get_bits(&v->gb, 1);

        if (v->ttmbf)

        {

            v->ttfrm = get_bits(&v->gb, 2);

            av_log(v->avctx, AV_LOG_INFO, "Transform used: %ix%i\n",

                   (v->ttfrm & 2) ? 4 : 8, (v->ttfrm & 1) ? 4 : 8);

        }

    }

    

    return 0;

}

static int FUNC_0(VC9Context *VAR_0)

{

    

    int VAR_1, VAR_2;



    VAR_2 = get_bits(&VAR_0->gb, 5);

    if (VAR_0->quantizer_mode == QUANT_FRAME_IMPLICIT)

        VAR_0->pq = pquant_table[0][VAR_2];

    else

    {

        VAR_0->pq = pquant_table[VAR_0->quantizer_mode-1][VAR_2];

    }

    if (VAR_2 < 9) VAR_0->halfpq = get_bits(&VAR_0->gb, 1);

    if (VAR_0->quantizer_mode == QUANT_FRAME_EXPLICIT)

        VAR_0->pquantizer = get_bits(&VAR_0->gb, 1);

    av_log(VAR_0->avctx, AV_LOG_DEBUG, "P Frame: QP=%i (+%i/2)\n",

           VAR_0->pq, VAR_0->halfpq);

    if (VAR_0->extended_mv == 1) VAR_0->mvrange = get_prefix(&VAR_0->gb, 0, 3);

#if HAS_ADVANCED_PROFILE

    if (VAR_0->profile > PROFILE_MAIN)

    {

        if (VAR_0->postprocflag) VAR_0->postproc = get_bits(&VAR_0->gb, 1);

    }

    else

#endif

        if (VAR_0->multires) VAR_0->respic = get_bits(&VAR_0->gb, 2);

    VAR_1 = (VAR_0->pquantizer>12) ? 0 : 1;

    VAR_0->mv_mode = mv_pmode_table[VAR_1][get_prefix(&VAR_0->gb, 1, 4)];

    if (VAR_0->mv_mode == MV_PMODE_INTENSITY_COMP)

    {

        VAR_0->mv_mode2 = mv_pmode_table[VAR_1][get_prefix(&VAR_0->gb, 1, 3)];

        VAR_0->lumscale = get_bits(&VAR_0->gb, 6);

        VAR_0->lumshift = get_bits(&VAR_0->gb, 6);

    }



    if ((VAR_0->mv_mode == MV_PMODE_INTENSITY_COMP &&

         VAR_0->mv_mode2 == MV_PMODE_MIXED_MV)

        || VAR_0->mv_mode == MV_PMODE_MIXED_MV)

    {

        if (bitplane_decoding(VAR_0->mv_type_mb_plane, VAR_0->width_mb,

                                  VAR_0->height_mb, VAR_0) < 0)

            return -1;

    }



    if (bitplane_decoding(VAR_0->skip_mb_plane, VAR_0->width_mb,

                              VAR_0->height_mb, VAR_0) < 0)

        return -1;



    

    VAR_0->mv_diff_vlc = &vc9_mv_diff_vlc[get_bits(&VAR_0->gb, 2)];

    VAR_0->cbpcy_vlc = &vc9_cbpcy_p_vlc[get_bits(&VAR_0->gb, 2)];



    if (VAR_0->dquant)

    {

        av_log(VAR_0->avctx, AV_LOG_INFO, "VOP DQuant info\n");

        vop_dquant_decoding(VAR_0);

    }



    if (VAR_0->vstransform)

    {

        VAR_0->ttmbf = get_bits(&VAR_0->gb, 1);

        if (VAR_0->ttmbf)

        {

            VAR_0->ttfrm = get_bits(&VAR_0->gb, 2);

            av_log(VAR_0->avctx, AV_LOG_INFO, "Transform used: %ix%i\n",

                   (VAR_0->ttfrm & 2) ? 4 : 8, (VAR_0->ttfrm & 1) ? 4 : 8);

        }

    }

    

    return 0;

}

static int FUNC_0(VC9Context *VAR_0)
{ int VAR_1, VAR_2; VAR_2 = get_bits(&VAR_0->gb, 5); if (VAR_0->quantizer_mode == QUANT_FRAME_IMPLICIT)
VAR_0->pq = pquant_table[0][VAR_2]; else
{ VAR_0->pq = pquant_table[VAR_0->quantizer_mode-1][VAR_2]; } if (VAR_2 < 9) VAR_0->halfpq = get_bits(&VAR_0->gb, 1); if (VAR_0->quantizer_mode == QUANT_FRAME_EXPLICIT)
VAR_0->pquantizer = get_bits(&VAR_0->gb, 1); av_log(VAR_0->avctx, AV_LOG_DEBUG, "P Frame: QP=%i (+%i/2)\n",
VAR_0->pq, VAR_0->halfpq); if (VAR_0->extended_mv == 1) VAR_0->mvrange = get_prefix(&VAR_0->gb, 0, 3); #if HAS_ADVANCED_PROFILE
if (VAR_0->profile > PROFILE_MAIN)
{ if (VAR_0->postprocflag) VAR_0->postproc = get_bits(&VAR_0->gb, 1); } else
#endif
if (VAR_0->multires) VAR_0->respic = get_bits(&VAR_0->gb, 2); VAR_1 = (VAR_0->pquantizer>12) ? 0 : 1; VAR_0->mv_mode = mv_pmode_table[VAR_1][get_prefix(&VAR_0->gb, 1, 4)]; if (VAR_0->mv_mode == MV_PMODE_INTENSITY_COMP)
{ VAR_0->mv_mode2 = mv_pmode_table[VAR_1][get_prefix(&VAR_0->gb, 1, 3)]; VAR_0->lumscale = get_bits(&VAR_0->gb, 6); VAR_0->lumshift = get_bits(&VAR_0->gb, 6); } if ((VAR_0->mv_mode == MV_PMODE_INTENSITY_COMP &&
VAR_0->mv_mode2 == MV_PMODE_MIXED_MV)
|| VAR_0->mv_mode == MV_PMODE_MIXED_MV)
{ if (bitplane_decoding(VAR_0->mv_type_mb_plane, VAR_0->width_mb,
VAR_0->height_mb, VAR_0) < 0)
return -1; } if (bitplane_decoding(VAR_0->skip_mb_plane, VAR_0->width_mb,
VAR_0->height_mb, VAR_0) < 0)
return -1; VAR_0->mv_diff_vlc = &vc9_mv_diff_vlc[get_bits(&VAR_0->gb, 2)]; VAR_0->cbpcy_vlc = &vc9_cbpcy_p_vlc[get_bits(&VAR_0->gb, 2)]; if (VAR_0->dquant)
{ av_log(VAR_0->avctx, AV_LOG_INFO, "VOP DQuant info\n"); vop_dquant_decoding(VAR_0); } if (VAR_0->vstransform)
{ VAR_0->ttmbf = get_bits(&VAR_0->gb, 1); if (VAR_0->ttmbf)
{ VAR_0->ttfrm = get_bits(&VAR_0->gb, 2); av_log(VAR_0->avctx, AV_LOG_INFO, "Transform used: %ix%i\n",
(VAR_0->ttfrm & 2) ? 4 : 8, (VAR_0->ttfrm & 1) ? 4 : 8); } } return 0; }