This code and information is provided "as is" without warranty of any kind, either expressed or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.

1995,1998 Analog Devices, Inc.


MMX-based Software Decoder Simulator for ADV601

This directory contains source and library files for MMX-based ADV601 Software Decoder. It also conatains a test file (bmmain.c) for testing and benchmarking the performance of the decoder under MS-DOS.

Using the library

To call the decoder functions described in the Interface Document one has to include the codec.h file in the program and link it with the library adv6dec.lib. As an example of the use of the library (and an illustration to Interface Document), refer to the test file (bmmain.c).

Using the Source Files

Instead of using the precompiled library one might decide to recompile the source files. Here is how the benchmark executable can be built using the source files:
  1. Create a subdirectory named MSMMXDEC
  2. In MS-DOS execute the following command:
      NMAKE /F MSMMXDEC.MAK ALL
    
This should result in the file MSMMXDEC\BM.EXE, which can be used for testing and performance measurements of the decoder.

Note that the above step required several utilities:

Note also that the makefile builds the library files ADV6DEC.lib and ADV6MMX.lib. If the libraries are already present in the MSMMXDEC subdirectory and if they are up-to-date, then the libraries are used instead of the source files. This might be useful, for example, if you don't have version 6.12 of MASM -- just make sure that you have adv6mmx.lib in the MSMMXDEC subdirectory.

If not using the supplied makefile, it is important to use the switch /Gr and set the following macros

Appendix: File List

Short description of the files in the distribution:
adv6dec.lib
Library containing the MMX-based decoder.
adv6mmx.lib
Library containing compiled assembly sources only. For those without access to version 6.12 of MASM.
awmodel.c
(De)Modeller: decodes symbols into values and run-length sequences of zeroes.
awmodel.h
block.c
Description of block geometry and access functions.
block.h
bmmain.c
The test file. Can be used to build the test executable. Might also be useful as an example of the usage of the decoder.
bstream.c
Bit Stream Parser. Extracts the bit fields and headers from the compressed data.
bstream.h
codec.c
Top level functions of the decoder.
codec.h
common.c
Contains long jump buffer.
common.h
Common include files and macros.
fix16.h
Fixed point arithmetic.
havemmx.asm
Test for MMX-extension.
havemmx.h
hcoder.c
Huffman Decoder.
hcoder.h
ht-data.c
Data for initializing the Huffman tables.
htable.c
Huffman Table management (initialization) routines.
htable.h
ioyuv.asm
Conversion of internal data to YUV (UYVY 4:2:2) format.
ioyuv.h
msmmxdec.mak
The makefile.
parms.c
Definition of internal parameters which are used by most source codes.
parms.h
Declaration of internal parameters which are used by most source codes.
parms.inc
Same as "parms.h", but in the assembler.
quant.c
Dequantization function.
quant.h
stat.c
Statistics computation (encoder only).
stat.h
targ.h
Some target-dependent macros and pragmas.
wtanl.c
Wavelet Transform, Analysis (encoder only).
wtanl.h
wths.asm
Wavelet Transform Horizontal Synthesis (single stage code).
wtmmx.h
External declarations for "wths.asm"
wttop.c
Top level wavelet transform code (multiple stages).
wttop.h
wtvs.asm
Wavelet Transform Vertical Synthesis.
wtypes.h
Type and structure declarations.