# MI_CompressHuffman

## C Specification

  `#include <nitro/mi.h>`
  `u32 MI_CompressHuffman( const u8 *srcp, u32 size, u8 *dstp, u8 huffBitSize, u8 *work);
  `

## Arguments

srcp | The source address where the data to compress is stored.
`size` | The data size of the source to compress.
dstp | Needs a pointer to the compression destination buffer and a region greater than the source data size. Needs a 4-byte alignment.
huffBitSize | The bit size (4 or 8) to Huffman encode.
work | The work buffer used in Huffman compression. Requires the size of `MI_HUFFMAN_COMPRESS_WORK_SIZE`. Needs a 4-byte alignment.

## Return Values

Returns the size of the compressed data. If the data after compression is larger than the source file, no compression will be performed and a zero will be returned.

## Description

This function performs Huffman compression and writes to a designated memory region. A region of the same size as the source data must be prepared in the compression destination buffer.

`The function writes in 8-bit units, so an address in VRAM cannot be specified in `dstp`.`
An address in VRAM can be specified in `srcp`.

## Internal Operation

Processing only takes place on the CPU, without the use of a system call or DMA.

## See Also

`MI_UncompressHuffman, MI_ReadUncompHuffman, MI_CompressLZ, MI_CompressLZFast, MI_CompressRL`

## Revision History

06/28/2005 Added `work` to C Specification.
02/01/2005 Initial version.

CONFIDENTIAL