NAME
zvl_compress - performs Ziv-Lempel compression
SYNOPSIS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include "CVIPdef.h"
#include "CVIPimage.h"
#include "CVIPcompress.h"
int zvl_compress(Image *inputImage, char *filename)
<inputImage> - pointer to the image
<filename> - pointer to a character array
Image *zvl_decompress(char *filename)
<filename> - pointer to a character array
PATH
$CVIPHOME/COMPRESSION/zvl.c
DESCRIPTION
This function encodes an image using the Ziv-Lempel algo-
rithm. The first two 9-bit codes have been reserved for com-
munication between the encoder and decoder.
TYPES AND CONSTANTS
#define INIT_BITS 9
#define MAX_BITS 14
#define HASHING_SHIFT MAX_BITS - 8
#if MAX_BITS == 14 /* Set the table size. Must be a prime number */
#define TABLE_SIZE 18041
#elif MAX_BITS == 13
#define TABLE_SIZE 9029
#else
#define TABLE_SIZE 5021
#endif
#define CLEAR_TABLE 256 /* Code to clear the string table */
#define TERMINATOR 257 /* Marks EOF condition, instead of MAX_VALUE */
#define FIRST_CODE 258 /* First available code for code_vaule table */
#define CHECK_TIME 100 /* Check comp ratio every CHECK_TIME chars input */
#define MAXVAL(n) (( 1 <<(n)) -1) /* max_value formual macro */
RETURN VALUES
zvl_compress: 0 on success, -1 on failure
zvl_decompression: an uncompressed image pointer on success,
a NULL pointer on failure
HISTORY
History information recorded: None
EXAMPLE
#include <CVIPtoolkit.h>
#include <CVIPimage.h>
#include <CVIPdef.h>
#include <CVIPconvert.h>
#include <CVIPview.h>
#include <sys/types.h>
#include <sys/stat.h>
#define VIEWER "picture"
#define VIDEO_APP "SunVideo &"
void main()
{
Image *cvipImage;
IMAGE_FORMAT format;
char *inputfile,*outputfile;
setDisplay_Image(VIEWER, "Default");
print_CVIP("\n\t\tEnter the Input File Name: ");
inputfile =(char *) getString_CVIP();
format = getFormat_CVIP(inputfile);
cvipImage = read_Image(inputfile,1);
view_Image(cvipImage, inputfile);
free(inputfile);
/* the following call performs the lempel ziv
coding of the input image */
zvl_compress(cvipImage,"file1");
/* the following call performs the lempel ziv
decoding of the "file1" */
cvipImage=zvl_decompress("file1");
print_CVIP("\n\t\tEnter the Output File Name: ");
outputfile = getString_CVIP();
view_Image(cvipImage,outputfile);
write_Image(cvipImage,outputfile,CVIP_NO,CVIP_NO,format,1);
free(outputfile);
}
SEE ALSO
libcompress
AUTHOR
Copyright (C) 1996 SIUE - by Scott E. Umbaugh.