home *** CD-ROM | disk | FTP | other *** search
- Hi All you Eager MPEG Makers, here is how to port the PVRG MPEG
- encoder/decoder to DOS/PC (386).
-
- Tools required:
- Well the ones that I used.
-
- GNU C version 2.2.2
- GREP or some other file search util
- An uncompress util for UNIX .Z files
- An untar for UNIX tar files
- Text Editor (sorry some code needs tweaked)
-
- Source required:
- /pub/mpeg/MPEGv1.1.tar.Z
- from havefun.stanford.edu
-
- /pub/mpeg/MPEGDOCv1.1.tar.Z
- from havefun.stanford.edu
-
- Step 1
- Decompress the .Z files
-
- Step 2
- Untar the resulting tar files.
- Note that 2 of the file names won't fit in the DOS 8 and 3 name format:
- transform.c truncates to transfor.c
- prototype.h truncates to prototyp.h
-
- Step 3
- Search the C files for fopen and alter the mode to binary. The 2
- sections below were produced by GREP.
-
- BEFORE
- *** FILE mem.c:
- if ((inp = fopen(filename,"r")) == NULL)
- if ((inp = fopen(filename,"r")) == NULL)
- if ((out = fopen(filename,"w")) == NULL)
- if ((out = fopen(filename,"w")) == NULL)
-
- *** FILE mpeg.c:
- if ((test = fopen(CFrame->ComponentFileName[i],"r")) == NULL)
-
- *** FILE stream.c:
- if ((srin = fopen(filename,"r")) == NULL)
- if ((swout = fopen(filename,"w+")) == NULL)
-
- AFTER
- *** FILE mem.c:
- if ((inp = fopen(filename,"rb")) == NULL)
- if ((inp = fopen(filename,"rb")) == NULL)
- if ((out = fopen(filename,"wb")) == NULL)
- if ((out = fopen(filename,"wb")) == NULL)
-
- *** FILE mpeg.c:
- if ((test = fopen(CFrame->ComponentFileName[i],"rb")) == NULL)
-
- *** FILE stream.c:
- if ((srin = fopen(filename,"rb")) == NULL)
- if ((swout = fopen(filename,"wb+")) == NULL)
-
- Step 4
-
- This is an odd one and may only be needed for GNU C v 2.2.2. The file
- lexer.c uses the rint function (round to nearest integer), my copy of
- GNU C has rint in the math header but not in the object library ? So
- my fix is to use floor(x+0.5) instead. Search lexer.c for R_ROUND until
- you see the BEFORE section below and edit it to look like the AFTER
- section.
-
- BEFORE
-
- case R_ROUND:
- accum = *(--DataPtr);
- *(DataPtr++) = rint(accum);
- break;
-
- AFTER
-
- case R_ROUND:
- accum = *(--DataPtr);
- *(DataPtr++) = floor(accum+0.5);
- break;
-
- Step 5
- Compile all 12 files to *.o using the following example command line
- GCC.
-
- GCC -O -c chendct.c
-
- Ignore the warning from lexer.c and tranfor.c about implicit
- decleration.
-
- Step 6
- Link all the files together to form MPEG
-
- gcc lexer.o mpeg.o huffman.o transfor.o codec.o io.o marker.o
- me.o mem.o stat.o stream.o chendct.o -lgcc -lm -o mpeg
-
- Note all one line
-
- Step 7
- Create MPEG.EXE
-
- aout2exe mpeg mpeg.exe
-
- Step 8
- Use and enjoy and send me a mail message to let me know how you get on
- and any mpegs that you create (I am broad minded !).
-
-
- Graham Logan
-
- mitgml@dct.ac.uk
-