Class SubBlock
java.lang.Object
com.twelvemonkeys.imageio.plugins.webp.vp8.SubBlock
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final SubBlockprivate int[][]private int[][]private booleanprivate final SubBlockprivate final MacroBlockprivate intprivate final SubBlock.Planeprivate int[][]private int[][]Snapshot ofdestas it was immediately after reconstruction, i.e.private int[] -
Constructor Summary
ConstructorsConstructorDescriptionSubBlock(MacroBlock macroBlock, SubBlock above, SubBlock left, SubBlock.Plane plane) -
Method Summary
Modifier and TypeMethodDescriptionprivate static int[][]borderSamples(boolean leftOfFrame) Off-frame border samples: 129 to the left of the frame, 127 above it.private intDCTextra(BoolDecoder bc2, int[] p) voiddecodeSubBlock(BoolDecoder bc2, int[][][][] coef_probs, int ilc, int type, boolean withY2) private intdecodeToken(BoolDecoder bc2, int v) voiddequantSubBlock(VP8Frame frame, Integer Dc) voidvoidvoidgetAbove()int[][]getDest()int[][]getDiff()getLeft()int[][]getMacroBlockPredict(int intra_mode) int[][]getMacroBlockReconPredict(int intraMode) AsgetMacroBlockPredict(int), but returning the unfiltered reconstruction.intgetMode()getPlane()int[][]int[][]getPredict(int intra_bmode, boolean left) int[][]getRecon()The unfiltered reconstruction of this sub block, for use as intra prediction context by neighbouring blocks.int[][]The unfiltered reconstruction, for use as the *above* prediction context.int[][]getReconAboveLeft(boolean aboveRowAvailable) The unfiltered reconstruction, for use as the *above-left* prediction context.int[][]The unfiltered reconstruction, for use as the *left* prediction context.int[][]getReconPredict(int intraBMode, boolean left) AsgetPredict(int, boolean), but returning the unfiltered reconstruction.(package private) int[]booleanbooleanhasRecon()Whether this sub block has been reconstructed.booleanisDest()private static booleanisLeftBorder129(int intraBMode) static intplaneToType(SubBlock.Plane plane, boolean withY2) voidvoidvoidsetDest(int[][] dest) voidsetDiff(int[][] diff) voidsetMode(int mode) voidsetPixel(int x, int y, int p) voidsetPredict(int[][] predict) toString()
-
Field Details
-
above
-
dest
private int[][] dest -
recon
private int[][] reconSnapshot ofdestas 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
-
macroBlock
-
mode
private int mode -
plane
-
predict
private int[][] predict -
tokens
private int[] tokens
-
-
Constructor Details
-
SubBlock
SubBlock(MacroBlock macroBlock, SubBlock above, SubBlock left, SubBlock.Plane plane)
-
-
Method Details
-
planeToType
-
DCTextra
- Throws:
IOException
-
decodeSubBlock
public void decodeSubBlock(BoolDecoder bc2, int[][][][] coef_probs, int ilc, int type, boolean withY2) throws IOException - Throws:
IOException
-
decodeToken
- Throws:
IOException
-
dequantSubBlock
-
drawDebug
public void drawDebug() -
drawDebugH
public void drawDebugH() -
drawDebugV
public void drawDebugV() -
getAbove
-
getDebugString
-
getDest
public int[][] getDest() -
getDiff
public int[][] getDiff() -
getLeft
-
getMacroBlock
-
getRecon
public int[][] getRecon()The unfiltered reconstruction of this sub block, for use as intra prediction context by neighbouring blocks. Seerecon. -
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) AsgetMacroBlockPredict(int), but returning the unfiltered reconstruction. Use this when reading a *neighbouring* macroblock as prediction context. -
getReconPredict
public int[][] getReconPredict(int intraBMode, boolean left) AsgetPredict(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
-
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
-
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
-