예제 #1
0
        public void SetSkipContext(int miRow, int miCol)
        {
            int aboveIdx = miCol * 2;
            int leftIdx  = (miRow * 2) & 15;
            int i;

            for (i = 0; i < Constants.MaxMbPlane; ++i)
            {
                ref MacroBlockDPlane pd = ref Plane[i];
                pd.AboveContext = AboveContext[i].Slice(aboveIdx >> pd.SubsamplingX);
                pd.LeftContext  = new ArrayPtr <sbyte>(ref LeftContext[i][leftIdx >> pd.SubsamplingY], 16 - (leftIdx >> pd.SubsamplingY));
            }
예제 #2
0
 public TxSize GetUvTxSize(ref MacroBlockDPlane pd)
 {
     Debug.Assert(SbType < BlockSize.Block8x8 ||
                  Luts.SsSizeLookup[(int)SbType][pd.SubsamplingX][pd.SubsamplingY] != BlockSize.BlockInvalid);
     return(Luts.UvTxsizeLookup[(int)SbType][(int)TxSize][pd.SubsamplingX][pd.SubsamplingY]);
 }