public class TechSmithCodec extends AbstractVideoCodec
TechSmithCodec
(tscc) encodes a BufferedImage as a byte[] array. The TechSmith codec works with AVI and QuickTime.
This codec supports
encoding from a BufferedImage
into the file format, and decoding from
the file format to a BufferedImage
.
This codec does not encode the color palette of an image. This must be done separately.
Supported input formats:
Format
with
BufferedImage.class
, any width, any height, depth=8,16 or 24. Format
with byte[].class
, same
width and height as input format, depth=8,16 or 24. Compression of a frame is performed in two steps: In the first, step a frame is compressed line by line from bottom to top. In the second step the resulting data is compressed again using zlib compression.
Apart
from the second compression step and the support for 16- and 24-bit data,
this encoder is identical to the RunLengthCodec
.
Each line of a frame is compressed individually. A line consists of two-byte op-codes optionally followed by data. The end of the line is marked with the EOL op-code.
The following op-codes are supported:
0x00 0x00
0x00 0x01
0x00 0x02 x y
x
and y
indicate the horizontal and vertical offset from the current position.
x
and y
are unsigned 8-bit values.0x00 n pixel{n} 0x00?
n
gives
the number of 8-, 16- or 24-bit pixels that follow. n
must be between
3 and 255. If n is odd and 8-bit pixels are used, a pad byte with the value
0x00 must be added. n pixel
n
gives the number of times the given pixel is repeated. n
must be between 1 and 255. Compressed data Expanded data 03 04 04 04 04 05 06 06 06 06 06 06 00 03 45 56 67 00 45 56 67 02 78 78 78 00 02 05 01 Move 5 right and 1 down 02 78 78 78 00 00 End of line 09 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 00 01 End of RLE bitmapReferences:
inputFormat, inputFormats, name, outputFormat, outputFormats
CODEC_FAILED, CODEC_INPUT_NOT_CONSUMED, CODEC_OK, CODEC_OUTPUT_NOT_FILLED
Constructor and Description |
---|
TechSmithCodec() |
Modifier and Type | Method and Description |
---|---|
int |
decode(Buffer in,
Buffer out) |
int |
encode(Buffer in,
Buffer out) |
int |
process(Buffer in,
Buffer out)
Performs the media processing defined by this codec.
|
void |
reset()
Empty implementation of the reset method.
|
copyImage, getARGB32, getBufferedImage, getIndexed8, getRGB15, getRGB16, getRGB24, writeInt24, writeInt24LE, writeInts24, writeInts24LE
getInputFormat, getInputFormats, getName, getOutputFormat, getOutputFormats, setInputFormat, setOutputFormat, toString
public void reset()
AbstractCodec
reset
in interface Codec
reset
in class AbstractCodec
public int process(Buffer in, Buffer out)
Codec
Copies the data from the input buffer into the output buffer.