/* ** SaveAsJSTREAM.fred ** ** $VER: SaveAsJSTREAM.fred 1.0.2 (16.6.94) ** ** This program can be run from an InvokeADPro list to save images as ** JStream (Reel) files for use with the Digital BroadCaster(tm) from ** Digital Micronics, Inc. (DMI). ** ** Clips Imported: ** AppendJPEGFName - Name and location of AppendJPEG utility ** FREDJSTREAMMode - Save mode ** FREDJSTREAMFName - JStream file to create ** FREDJSTREAMRefFName - JStream reference file ** FREDJSTREAMVideoStandard - Video standard of the frames ** ** NOTE: Clip names are case sensitive. ** ** This script requires FRED v1.4.0 (or higher) to run. Also required is ** ADPro v2.5.0 (or higher) and a Digital BroadCaster(tm) from Digital ** Micronics, Inc. (DMI). ** ** Copyright © 1994 Elastic Reality, Inc. ** All Rights Reserved */ ADDRESS "ADPro" OPTIONS RESULTS PARSE ARG FrameNum FrameFName Length LoadFlag FirstCallSeq FirstCallCell NL = '0A'X SQ = '27'X DQ = '22'X TRUE = 1 FALSE = 0 TempDeLaced = "T:TempDeLaced" TempJFIFPrefix = "T:TempJPEG" TempJFIF0 = "T:TempJPEG.jf0" TempJFIF1 = "T:TempJPEG.jf1" FrameFName = STRIP(STRIP(FrameFName , "B" , " ") , "B" , '"') /* ** Get the required parameters. Error if any are missing. */ AppendJPEGFName = GETCLIP( "AppendJPEGFName" ) IF (AppendJPEGFName = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, AppendJPEGFName," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END JStreamMode = GETCLIP( "FREDJSTREAMMode" ) IF (JStreamMode = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDJSTREAMMode," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END JStreamFName = GETCLIP( "FREDJSTREAMFName" ) IF (JStreamFName = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDJSTREAMFName," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END JStreamRefFName = GETCLIP( "FREDJSTREAMRefFName" ) IF (JStreamRefFName = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDJSTREAMRefFName," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END VideoStandard = GETCLIP( "FREDJSTREAMVideoStandard" ) IF (VideoStandard = "") THEN DO ADPRO_TO_FRONT OKAY1 "Required clip, FREDJSTREAMVideoStandard," || NL ||, "is not specified." SCREEN_TO_FRONT "FRED" EXIT 10 END /* ** See what type of data is loaded in ADPro/MorphPlus. */ CALL "FREDSCRIPTS:FREDFunctions/CheckForRawImageData" TRUE IF (RESULT ~= 0) THEN EXIT 10 /* ** Check that the image is of the proper resolution. */ XSIZE ImageWidth = ADPRO_RESULT YSIZE ImageHeight = ADPRO_RESULT IF (VideoStandard = "NTSC") THEN IF ((ImageWidth ~= 640) | (ImageHeight ~= 480)) THEN DO ADPRO_TO_FRONT OKAY1 "NTSC frames must be 640 x 480." SCREEN_TO_FRONT "FRED" EXIT 10 END ELSE IF (VideoStandard = "PAL") THEN IF ((ImageWidth ~= 768) | (ImageHeight ~= 576)) THEN DO ADPRO_TO_FRONT OKAY1 "PAL frames must be 768 x 576." SCREEN_TO_FRONT "FRED" EXIT 10 END /* ** Convert gray image data to color first. AppendJPEG cannot handle grayscale images. */ CALL "FREDSCRIPTS:FREDFunctions/CheckForColorImageData" TRUE IF (RESULT ~= 0) THEN CALL ErrorOut 10 /* ** Save field 0 as a temporary file. */ OPERATOR "DEINTERLACE" IF (RC ~= 0) THEN DO ADPRO_TO_FRONT OKAY1 "Deinterlacing failed." SCREEN_TO_FRONT "FRED" EXIT 10 END SAVER "IFF" TempDeLaced "RAW" IF (RC ~= 0) THEN DO ADPRO_TO_FRONT OKAY1 "Saving temporary deinterlaced image failed." SCREEN_TO_FRONT "FRED" EXIT 10 END OPERATOR "CROP_IMAGE" ImageWidth (ImageHeight / 2) 0 0 IF (RC ~= 0) THEN DO OPERATOR "CROP_VISUAL" ImageWidth (ImageHeight / 2) 0 0 IF (RC ~= 0) THEN DO ADPRO_TO_FRONT OKAY1 "Could not crop out field 0." SCREEN_TO_FRONT "FRED" EXIT 10 END END SAVER "JPEG" TempJFIF0 "RAW" "QUALITY" 16 "TABLES" JStreamRefFName IF (RC ~= 0) THEN DO ADPRO_TO_FRONT OKAY1 "Error saving field 0:" || NL || TempJFIF0 SCREEN_TO_FRONT "FRED" EXIT 10 END /* ** Save field 1 as a temporary file. */ LOADER "IFF" TempDeLaced IF (RC ~= 0) THEN DO ADPRO_TO_FRONT OKAY1 "Error reloading temporary deinterlaced image." SCREEN_TO_FRONT "FRED" EXIT 10 END OPERATOR "CROP_IMAGE" ImageWidth (ImageHeight / 2) 0 (ImageHeight / 2) IF (RC ~= 0) THEN DO OPERATOR "CROP_VISUAL" ImageWidth (ImageHeight / 2) 0 (ImageHeight / 2) IF (RC ~= 0) THEN DO ADPRO_TO_FRONT OKAY1 "Could not crop out field 1." SCREEN_TO_FRONT "FRED" EXIT 10 END END SAVER "JPEG" TempJFIF1 "RAW" "QUALITY" 16 "TABLES" JStreamRefFName IF (RC ~= 0) THEN DO ADPRO_TO_FRONT OKAY1 "Error saving field 1:" || NL || TempJFIF1 SCREEN_TO_FRONT "FRED" EXIT 10 END /* ** Take both fields and append it as the next frame in the JStream file. */ ADDRESS COMMAND AppendJPEGFName JStreamFName TempJFIFPrefix IF (RC ~= 0) THEN DO ADPRO_TO_FRONT OKAY1 "Could not append to JStream file:" || NL || JStreamFName SCREEN_TO_FRONT "FRED" EXIT 10 END EXIT 0