Class SubBlock

java.lang.Object
com.twelvemonkeys.imageio.plugins.webp.vp8.SubBlock

final class SubBlock extends Object
  • Field Details

    • above

      private final SubBlock above
    • 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
    • left

      private final SubBlock left
    • macroBlock

      private final MacroBlock macroBlock
    • mode

      private int mode
    • plane

      private final SubBlock.Plane plane
    • predict

      private int[][] predict
    • tokens

      private int[] tokens
  • Constructor Details

  • Method Details

    • planeToType

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

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

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

      private int decodeToken(BoolDecoder bc2, int v) throws IOException
      Throws:
      IOException
    • dequantSubBlock

      public void dequantSubBlock(VP8Frame frame, Integer Dc)
    • drawDebug

      public void drawDebug()
    • drawDebugH

      public void drawDebugH()
    • drawDebugV

      public void drawDebugV()
    • getAbove

      public SubBlock getAbove()
    • getDebugString

      public String getDebugString()
    • getDest

      public int[][] getDest()
    • getDiff

      public int[][] getDiff()
    • getLeft

      public SubBlock getLeft()
    • 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()
    • getPlane

      public SubBlock.Plane getPlane()
    • 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 String toString()
      Overrides:
      toString in class Object