com.brownsoft.codec
Class HuffmanMultiplexerBitStream

java.lang.Object
  extended bycom.brownsoft.codec.HuffmanMultiplexerBitStream

public class HuffmanMultiplexerBitStream
extends java.lang.Object

Title: Proyecto Codificacion de Imagenes y Video

Description:

Esta clase implementa un bitstream codificado por huffman Se definen 'canales' cada uno de los cuales puede tener su propia tabla de Huffman. Las tablas de Huffman se van creando a medida que se escriben datos por el canal y la codificación se realiza cuando se pide el bytearray de los datos. Existe un canal especial 'UNENCODED' para el cual no se aplica la codificación de huffman (ni se calcula su tabla)

Copyright: Copyright (c) 2004

Company:

Version:
1.0
Author:
Gustavo Brown (alegus@adinet.com.uy)

Nested Class Summary
(package private)  class HuffmanMultiplexerBitStream.StreamData
           
 
Field Summary
private  int[] channelWrites
           
private  byte curByte
           
private  byte curPos
           
private  HuffmanEncoder[] encoders
           
private static double LOG_2
           
static int MAX_CHANNELS
           
private  java.io.ByteArrayOutputStream stream
           
private  java.util.Vector streamData
           
static int UNENCODED
           
 
Constructor Summary
HuffmanMultiplexerBitStream()
           
 
Method Summary
 void encodeIntoByteArray(java.io.ByteArrayOutputStream stream)
          Codifica el stream
private  void finishStream()
          Finaliza la escritura del stream
private  int getCantBitsNeeded(int size)
           
 int getCantObjectsWritten()
          Obtiene la cantidad de objetos escritos en esta instancia
 void printStatics()
          Imprime estadisticas sobre esta instancia en pantalla
 void setDictionaries()
          setea los diccionarios a partir de los datos de cada canal
 void write(int channel, int data)
          Escribe size bits del parametro data en el bitStream
private  void writeBitStream(long[] data, int size)
          Escribe size bits del parametro data[] en el bitStream
private  void writeBitStream(long data, int size)
          Escribe size bits del parametro data en el bitStream
private  void writeDictionaries()
          Escribe todos los diccionarios asociados
private  void writeDictionary(HuffmanEncoder encoder)
          Escribe el diccionario asociado al encoder en el bitStream
 void writeUnencodedBitStream(int data, int size)
          Escribe size bits del parametro data en el bitStream
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

channelWrites

private int[] channelWrites

curByte

private byte curByte

curPos

private byte curPos

encoders

private HuffmanEncoder[] encoders

LOG_2

private static final double LOG_2

MAX_CHANNELS

public static final int MAX_CHANNELS
See Also:
Constant Field Values

stream

private java.io.ByteArrayOutputStream stream

streamData

private java.util.Vector streamData

UNENCODED

public static final int UNENCODED
See Also:
Constant Field Values
Constructor Detail

HuffmanMultiplexerBitStream

public HuffmanMultiplexerBitStream()
Method Detail

encodeIntoByteArray

public void encodeIntoByteArray(java.io.ByteArrayOutputStream stream)
Codifica el stream

Parameters:
stream - el ByteArrayOutputStream donde codificar el stream

finishStream

private void finishStream()
Finaliza la escritura del stream


getCantBitsNeeded

private int getCantBitsNeeded(int size)

getCantObjectsWritten

public int getCantObjectsWritten()
Obtiene la cantidad de objetos escritos en esta instancia

Returns:
cantidad de objetos escritos en esta instancia

printStatics

public void printStatics()
Imprime estadisticas sobre esta instancia en pantalla


setDictionaries

public void setDictionaries()
setea los diccionarios a partir de los datos de cada canal


write

public void write(int channel,
                  int data)
Escribe size bits del parametro data en el bitStream

Parameters:
channel - El canal sobre el cual escribir el dato
data - El dato a escribir

writeBitStream

private void writeBitStream(long[] data,
                            int size)
Escribe size bits del parametro data[] en el bitStream

Parameters:
data - El dato a escribir (los size bits menos significativos)
size - Cantidad de bits a escribir

writeBitStream

private void writeBitStream(long data,
                            int size)
Escribe size bits del parametro data en el bitStream

Parameters:
data - El dato a escribir (los size bits menos significativos)
size - Cantidad de bits a escribir

writeDictionaries

private void writeDictionaries()
Escribe todos los diccionarios asociados


writeDictionary

private void writeDictionary(HuffmanEncoder encoder)
Escribe el diccionario asociado al encoder en el bitStream

Parameters:
encoder - El encoder cuyo diccionario se desea escribir

writeUnencodedBitStream

public void writeUnencodedBitStream(int data,
                                    int size)
Escribe size bits del parametro data en el bitStream

Parameters:
data - El dato a escribir (los size bits menos significativos)
size - Cantidad de bits a escribir