.key SOURCE/A,DEST/A
.bra {
.ket }

; $VER: MPEG1Convert V0.4ß (05-Jan-2001)

;       © 2001 Marcel Rohles

;    -> Maximal quality compression
;       Destination must be a directory, no ROOT! (e.g.-> "RAM:video/" NOT-> "RAM:"

;                 Program-name / Found at            | Version | Configured Path+Name / misc
;                 ---------------------------------------------------------------------------
;   Requires:     mpeg_encode.lha  gfx/conv   AMINET | 1.3     | C:mpeg_encode
;                 dttoppm.lha      gfx/pbm    AMINET | 1.0     | C:dttoppm
;                 sendrexx.lha     util/rexx  AMINET | ?       | C:sendrexx

; Startup, mpeg_encode & dttoppm needs ixemul.library V47.3, it will not work with V48 !
; Raise stack size to suitable size
Stack 300000

; Get information about first and last frame and save them into ENV-variable
echo "Building filelists and setting up variables..."
list {SOURCE} FILES SORT RN LFORMAT="echo >env:PicCountSTART %e" >t:PicCounterSTART
execute t:PicCounterSTART
list {SOURCE} FILES SORT N LFORMAT="echo >env:PicCountEND %e" >t:PicCounterEND
execute t:PicCounterEND

;Create & execute batchfile for converting images into PPM format (SOURCE->DEST)
;as mpeg_encode can only read PPM, YUV files.
;View first picture with multiview

echo "Showing first frame (If you see nothing press Crtl-D now and install an*Nmatching datatype for fileformat"
list {SOURCE} FILES SORT N LFORMAT="echo >env:PicCountNAME %M" >t:PicCounterNAME
execute t:PicCounterNAME
RUN <>NIL: Multiview {SOURCE}$PicCountNAME.$PicCountSTART
wait 3
echo "Converting pictures now ..."
echo "stack 500000" >t:ConvertBatch
list {SOURCE} SORT N LFORMAT="echo *"%n/$PicCountEND**eM*"*Nc:dttoppm %p%n {DEST}%n" >>t:ConvertBatch
execute t:ConvertBatch
c:sendrexx MULTIVIEW.1 QUIT >NIL:


;OK, ready to generate parameter file required for mpeg_encoder
echo "Building parameter file for quality compression and start encoding..."

ECHO >T:mpegenc.param "# Created with DOpusCFG"
ECHO >>T:mpegenc.param "PATTERN          IIIIIIIIIIIIIII"
ECHO >>T:mpegenc.param "OUTPUT           {DEST}$PicCountNAME.mpeg"
ECHO >>T:mpegenc.param "BASE_FILE_FORMAT PPM"
ECHO >>T:mpegenc.param "GOP_SIZE         30"
ECHO >>T:mpegenc.param "SLICES_PER_FRAME  1"
ECHO >>T:mpegenc.param "PIXEL            HALF"
ECHO >>T:mpegenc.param "RANGE            10"
ECHO >>T:mpegenc.param "PSEARCH_ALG      LOGARITHMIC"
ECHO >>T:mpegenc.param "BSEARCH_ALG      CROSS2"
ECHO >>T:mpegenc.param "IQSCALE          8"
ECHO >>T:mpegenc.param "PQSCALE          10"
ECHO >>T:mpegenc.param "BQSCALE          25"
ECHO >>T:mpegenc.param "REFERENCE_FRAME  ORIGINAL"
ECHO >>T:mpegenc.param "FORCE_ENCODE_LAST_FRAME"
ECHO >>T:mpegenc.param "INPUT_DIR        {DEST}"
ECHO >>T:mpegenc.param "INPUT"
ECHO >>T:mpegenc.param "$PicCountNAME.** [$PicCountSTART-$PicCountEND]"
ECHO >>T:mpegenc.param "END_INPUT"
ECHO >>T:mpegenc.param "INPUT_CONVERT  **"
c:mpeg_encode t:mpegenc.param

;Cleanup
delete {DEST}$PicCountNAME.#[0-9] QUIET
delete t:ConvertBatch FORCE QUIET
delete t:PicCounter#? FORCE QUIET
delete t:mpegenc.param FORCE QUIET
delete ENV:PicCount#? FORCE QUIET
