Class SubBlock


  • final class SubBlock
    extends java.lang.Object
    • Field Detail

      • dest

        private int[][] dest
      • recon

        private int[][] recon
        Snapshot of dest as it was immediately after reconstruction, i.e. *before* the loop filter modified it.

        RFC 6386 applies the loop filter to the entire frame only after every macroblock has been reconstructed, so intra prediction must always see unfiltered neighbour samples. As this decoder interleaves reconstruction and filtering macroblock by macroblock (to avoid buffering the whole frame), the unfiltered samples have to be retained separately -- the same approach libwebp takes with its saved top/left sample rows.

      • diff

        private int[][] diff
      • hasNoZeroToken

        private boolean hasNoZeroToken
      • mode

        private int mode
      • predict

        private int[][] predict
      • tokens

        private int[] tokens
    • Method Detail

      • planeToType

        public static int planeToType​(SubBlock.Plane plane,
                                      boolean withY2)
      • DCTextra

        private int DCTextra​(BoolDecoder bc2,
                             int[] p)
                      throws java.io.IOException
        Throws:
        java.io.IOException
      • decodeSubBlock

        public void decodeSubBlock​(BoolDecoder bc2,
                                   int[][][][] coef_probs,
                                   int ilc,
                                   int type,
                                   boolean withY2)
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • decodeToken

        private int decodeToken​(BoolDecoder bc2,
                                int v)
                         throws java.io.IOException
        Throws:
        java.io.IOException
      • dequantSubBlock

        public void dequantSubBlock​(VP8Frame frame,
                                    java.lang.Integer Dc)
      • drawDebug

        public void drawDebug()
      • drawDebugH

        public void drawDebugH()
      • drawDebugV

        public void drawDebugV()
      • getDebugString

        public java.lang.String getDebugString()
      • getDest

        public int[][] getDest()
      • getDiff

        public int[][] getDiff()
      • getMacroBlock

        public MacroBlock getMacroBlock()
      • getRecon

        public int[][] getRecon()
        The unfiltered reconstruction of this sub block, for use as intra prediction context by neighbouring blocks. See recon.
      • hasRecon

        public boolean hasRecon()
        Whether this sub block has been reconstructed.
      • getReconAbove

        public int[][] getReconAbove()
        The unfiltered reconstruction, for use as the *above* prediction context. Outside the frame the above row reads as 127 (RFC 6386, 12.2).
      • getReconLeft

        public int[][] getReconLeft()
        The unfiltered reconstruction, for use as the *left* prediction context. Outside the frame the left column reads as 129 (RFC 6386, 12.2).
      • getReconAboveLeft

        public int[][] getReconAboveLeft​(boolean aboveRowAvailable)
        The unfiltered reconstruction, for use as the *above-left* prediction context. Outside the frame this reads as 127 when the above row is also outside the frame, and as 129 otherwise -- matching libwebp, which fills the row above the first macroblock row (including its left-hand corner sample) with 127, and the column left of the first macroblock column (including its top corner sample) with 129.
        Parameters:
        aboveRowAvailable - whether the macroblock row above is inside the frame
      • getMacroBlockReconPredict

        public int[][] getMacroBlockReconPredict​(int intraMode)
        As getMacroBlockPredict(int), but returning the unfiltered reconstruction. Use this when reading a *neighbouring* macroblock as prediction context.
      • getReconPredict

        public int[][] getReconPredict​(int intraBMode,
                                       boolean left)
        As getPredict(int, boolean), but returning the unfiltered reconstruction. Use this when reading a *neighbouring* sub block as prediction context.
      • isLeftBorder129

        private static boolean isLeftBorder129​(int intraBMode)
      • borderSamples

        private static int[][] borderSamples​(boolean leftOfFrame)
        Off-frame border samples: 129 to the left of the frame, 127 above it.
      • getMacroBlockPredict

        public int[][] getMacroBlockPredict​(int intra_mode)
      • getMode

        public int getMode()
      • getPredict

        public int[][] getPredict()
      • getPredict

        public int[][] getPredict​(int intra_bmode,
                                  boolean left)
      • getTokens

        int[] getTokens()
      • hasNoZeroToken

        public boolean hasNoZeroToken()
      • isDest

        public boolean isDest()
      • predict

        public void predict​(VP8Frame frame)
      • reconstruct

        public void reconstruct()
      • setDest

        public void setDest​(int[][] dest)
      • setDiff

        public void setDiff​(int[][] diff)
      • setMode

        public void setMode​(int mode)
      • setPixel

        public void setPixel​(int x,
                             int y,
                             int p)
      • setPredict

        public void setPredict​(int[][] predict)
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object