|
Copyright 2012-04-26 Werner Randelshofer | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.monte.media.AbstractCodec
org.monte.media.AbstractVideoCodec
org.monte.media.avi.RunLengthCodec
public class RunLengthCodec
RunLengthCodec encodes a BufferedImage as a byte[] array.
This codec only works with the AVI file format. Other formats, such as QuickTime, use a different encoding for run-length compressed video.
This codec currently only supports encoding from a BufferedImage into
the file format. Decoding support may be added in the future.
Supported input formats:
Format with BufferedImage.class, any width, any height,
depth=8.
Format with byte[].class, same width and height as input
format, depth=8.
The codec does not encode the color palette of an image. This must be done separately.
A frame is compressed line by line from bottom to top.
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 data{n} 0x00?
n
gives the number of data bytes that follow. n must be between 3 and
255. If n is odd, a pad byte with the value 0x00 must be added.
n data
n
gives the number of times the data byte 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:
| Field Summary |
|---|
| Fields inherited from class org.monte.media.AbstractCodec |
|---|
inputFormat, inputFormats, name, outputFormat, outputFormats |
| Fields inherited from interface org.monte.media.Codec |
|---|
CODEC_FAILED, CODEC_INPUT_NOT_CONSUMED, CODEC_OK, CODEC_OUTPUT_NOT_FILLED |
| Constructor Summary | |
|---|---|
RunLengthCodec()
|
|
| Method Summary | |
|---|---|
int |
process(Buffer in,
Buffer out)
Performs the media processing defined by this codec. |
void |
reset()
Empty implementation of the reset method. |
void |
writeDelta8(javax.imageio.stream.ImageOutputStream out,
byte[] data,
byte[] prev,
int width,
int height,
int offset,
int scanlineStride)
Encodes an 8-bit delta frame. |
void |
writeDelta8(java.io.OutputStream out,
byte[] data,
byte[] prev,
int width,
int height,
int offset,
int scanlineStride)
Encodes an 8-bit key frame. |
void |
writeKey8(javax.imageio.stream.ImageOutputStream out,
byte[] data,
int width,
int height,
int offset,
int scanlineStride)
Encodes an 8-bit key frame. |
void |
writeKey8(java.io.OutputStream out,
byte[] data,
int width,
int height,
int offset,
int scanlineStride)
Encodes an 8-bit key frame. |
| Methods inherited from class org.monte.media.AbstractVideoCodec |
|---|
copyImage, getARGB32, getBufferedImage, getIndexed8, getRGB15, getRGB16, getRGB24, writeInt24, writeInt24LE, writeInts24, writeInts24LE |
| Methods inherited from class org.monte.media.AbstractCodec |
|---|
getInputFormat, getInputFormats, getName, getOutputFormat, getOutputFormats, setInputFormat, setOutputFormat, toString |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public RunLengthCodec()
| Method Detail |
|---|
public void reset()
AbstractCodec
reset in interface Codecreset in class AbstractCodec
public int process(Buffer in,
Buffer out)
CodecCopies the data from the input buffer into the output buffer.
public void writeKey8(java.io.OutputStream out,
byte[] data,
int width,
int height,
int offset,
int scanlineStride)
throws java.io.IOException
out - The output stream.data - The image data.offset - The offset to the first pixel in the data array.width - The width of the image in data elements.scanlineStride - The number to append to offset to get to the next scanline.
java.io.IOException
public void writeKey8(javax.imageio.stream.ImageOutputStream out,
byte[] data,
int width,
int height,
int offset,
int scanlineStride)
throws java.io.IOException
out - The output stream.data - The image data.offset - The offset to the first pixel in the data array.width - The width of the image in data elements.scanlineStride - The number to append to offset to get to the next scanline.
java.io.IOException
public void writeDelta8(java.io.OutputStream out,
byte[] data,
byte[] prev,
int width,
int height,
int offset,
int scanlineStride)
throws java.io.IOException
out - The output stream.data - The image data.offset - The offset to the first pixel in the data array.width - The width of the image in data elements.scanlineStride - The number to append to offset to get to the next scanline.
java.io.IOException
public void writeDelta8(javax.imageio.stream.ImageOutputStream out,
byte[] data,
byte[] prev,
int width,
int height,
int offset,
int scanlineStride)
throws java.io.IOException
out - The output stream.data - The image data.prev - The image data of the previous frame.offset - The offset to the first pixel in the data array.width - The width of the image in data elements.scanlineStride - The number to append to offset to get to the next scanline.
java.io.IOException
|
Copyright 2012-04-26 Werner Randelshofer | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||