@database Frogger.guide $VER: Frogger.guide 1.43 (15.11.99) by Sebastian Jedruszkiewicz @node "Main" "Frogger - Ultimate MPEG Player" Frogger - Ultimate MPEG Player v1.43 (15-11-99) @{" Introduction " link "int"} @{" Requirements " link "req"} @{" Features " link "fet"} @{" Installation " link "ins"} @{" Usage " link "usg"} @{" Bugs " link "bug"} @{" History " link "hst"} @{" Future " link "fut"} @{" Authors " link "aut"} @{" Thanks " link "thx"} Please note that this release may contains a lot of new bugs, because it is work in progress. But many people asked for the new version so here it is... Frogger home page: http://jota.wi.tuniv.szczecin.pl/~bjsebo/Frogger @endnode @node "int" "Introduction" Frogger is the ultimate MPEG video player, with MPEG-2 layer support. Frogger was oryginally relased by Miloslaw Smyk (thorgal@wfmh.org.pl), recently, the development has been taken over by Sebastian Jedruszkiewicz (bjsebo@jota.wi.tuniv.szczecin.pl) The MPEG1/2 decoder is based on mpeg2decode created by MPEG Software Simulation Group. @endnode @node "req" "Requirements" Hardware: - Amiga (68k or PPC) - FPU (for 68k version) - 8 MB RAM Software: - ppc.library 46+ (PPC version). - AHI for sound. - CGFX v3+ for CGFX display. - cgxvideo.library for overlay support. - mpega.library for sound decoding in 68k version. - some mpegs to play ;) Currently PPC version does not work under ppc.lib emulation. @endnode @node "fet" "Features" - video layer 1/2 decoding. - Fast video & audio playback. (audio docoding is not available in 68k version, will be added soon) - Intelligent frame skipping. - Overlay support. - Asynchronous disk reading. - video scaling on both CGFX and AGA. @endnode @node "ins" "Installation" No install script was made - just copy the executable file and guide wherever you want. Note that there are 4 executables: for 030,040,060 and PPC processor. Just pick the one that match your configuration. @endnode @node "usg" "Usage" Frogger can be started from both CLI and icon. It requires big stack, I assume 100000 will satisfy. Options: -------- TEMPLATE: FILE, SCREEN/S, MODEID/K, STATS/S, NOAUDIO/S, DISPLAY/K, FULLSCREEN=FS/S, LOOP/S, FPS/N, BUFSIZE/N, FORCESTEREO/S, AUDIO16/S, VERBOSE/S, FORCEAUDIO/S, NOSKIP/S, FBLIT/S, MODEBYNAME=MBN/K, AUTOEXIT=AE/S, AHIUNIT/N, NOVIDEO/S FILE: mpeg file to play. if no file is specified, asl will popup. SCREEN: open window on pubscreen. default to open on WB. MODEID: specify modeid for SCREEN or FULLSCREEN. this can be either decimal value (ie. 123456) or hexadecimal value (ie. 0x123abc) Hexadecimal valume can be passed as 0xnumber or $number. STATS: print some information about played stream (fps, size, audio layer, etc.) NOAUDIO: turn audio off in files that have got audio track. By default Frogger will try to find if there is audio track available, and will decode audio if audio was found. FORCEAUDIO: Sometimes Frogger fails to find valid audio track inside mpeg file. In this case use FORCEAUDIO to force audio decoding. Remebmer, that using this option on files that does not have audio track, may cause crash. DISPLAY: specify display method. by default Frogger will use color dithering (8, hi or true color, depending on depth of selected screen). Display methods available: VLAYER - use cgxvideo.library video overlay feature. VLAYERGREY - use cgxvideo.library video overlay feature, grey. VLAYER can be used only on gfx card that supports hardware YUV -> RGB conversion. cgxvideo.library supports only CV3D card, but it also works on BVISION/CVISION. Please read chapter @{"Overlay" link "ove"} for info about using overlay on such a card. Note that from version 1.41, vlayer can be also used with FULLSCREEN parameter. Output will be scaled to fit whole screen (aspect will be preserved), But no zoomout/zoomin is possible. If you really need zooming with this option enabled let me know, I will try to do something about it. P96 - use the PIP feature of P96 RTG system. It works like VLAYER option, only instead of using cgxvideo.library p96 system is used. P96GREY - same like P96, but in grey. GREY - greyscale output. FILE - store images in iff files. Asl will pop up, to let you select base file name. Small window will be opened, and you will be informed about actual frame processed. output filename looks like this: .x, where base name is name you have selected in asl, and x is frame number. FULLSCREEN: play mpeg in fullscreen mode (instead of window). Works on both CGFX and AGA. AGA display is limited to 256 colors, CGFX does support following pixel formats: ARGB32 (24bpp) RGB16 (16bpp) (in PPC version only) RGB15 (15bpp) LUT8 (256 colors) BGR16PC (16bpp in reversed pc mode) - not tested! RGB24 (24bpp) - not tested! BGR24 (24bpp in reversed pc mode) - not tested! More pixel formats soon. If Frogger exit with a message: unsupported pixel format: x Please send the x number to me, I will add a correct convert routine ASAP. FULLSCREEN can be also used with VLAYER display type, as long as your hardware supports vlayers. FPS: limit fps. default to use frame rate from stream, any number to limit fps. FORCESTEREO: force audio track to be played in stereo. Default to mono, as it is much faster. AUDIO16: by default Frogger plays audio in 8 bits per sample mode. It is simple faster. AUDIO16 will turn 16 bits per sample decoding (better quality, more cpu power required). VERBOSE: turn on warning and other messages printing. default off. BUFSIZE: set the io buffer size. It may cause problems with PPC asyncio routines, so use with care. default 16384. When audio is detected BUFSIZE is set to 32768, and can not be set to smaller size. However you can always set it to bigger value. I suggest rather to not mess with this option, when sound is enabled. You have been warned. NOSKIP: By default, Frogger skips some frames (if needed) to achieve frame rate from stream. NOSKIP will force Frogger to display all frames, without skipping. This is not very usefull with mpegs that have got audio track (there will be no synchronization). Also Frogger will try to display video at maximum possible frame rate, So you can use this switch for testing purposes. FBLIT: Enable support for FBlit. FBlit must be installed on your amiga. This will speed display on AGA machines in window mode. Thanks must go to author of FBlit for suggestions. MODEBYNAME: This parameter let you select screenmode by passing its name. like: MBN="Pal:Low Res" Note that name must match exactly name that is displayed in asl (you can see what names are available using Sys:prefs/ScreenMode programm) AUTOEXIT: automagically exit at end of animation. If this parametter is not present, Frogger will wait for user action, for example selecting new mpeg to play. LOOP: Loops animation. AHIUNIT: Let you specify AHI unit used for audio playing. Default is 0, you can select one of following numbers: 0 1 2 and 3. NOVIDEO: Disables displaying of decoded frames. It means that video is actually decompressed, output UYV is converted to user requested format (grey, RGB, CLUT), but the output is not displayed on screen or window. It may be used to measure how much time Frogger spents in display function, or to see how slow AGA is ;) Other options does not work at the moment. Or works, but may cause problems. ToolTypes: ---------- All options available from CLI, are also available as tooltypes. Take a look at Frogger.info, all tooltyes are already there, just choose options you like. Menu: ----- See windowed mode. Options available from menu, are also available as key shortcuts. Keyboard: --------- Window Mode: ESC - Quit. RAmiga + Q - Quit. RAmiga + 1 - Set size to 50 %. RAmiga + 2 - Set size to 100 %. RAmiga + 3 - Set size to 200 %. RAmiga + 4 - Set size to screen size. RAmiga + O - Open new MPEG file. FullScreen Mode: ESC - Quit. + - Zoom movie in. - - Zoom Movie out. O - Open new MPEG file. GUI: ---- Gui is right now available only in windowed mode. - Slider seeks into movie. - Eject gadget (up arrow) - open new movie. Other: ------ - Window close gadget quits Frogger. Some words about cgfx fullscreen mode: You can select any mode you want (as long as the pixel format is supported). When selected screen size is smaller than mpeg size, output will be scaled to fit screen size. When mpeg size is smaller than screen size, output is not scalled. In both cases you can scale output with '+' and '-' keys. Aspect ratio is preserved, when scaling is made. Scaling also works on AGA. @endnode @node "bug" "Bugs" - fullscreen aga display in 68k version is buggy, and does not supports scalling like ppc version. It should work now in color mode, however. - CTRL-C handling in PPC version does not work. I had to choose beetwen working tooltypes or working CTRL-C handling. I choose tooltypes... - Sometimes strange sound strippes appears. dunno if this is audio decoder bug or really low quality mpegs... I think I have fixed this. but who really knows? - There are problems with sound, when new mpeg is opened from Menu or GUI. - seeking is only possible when sound is turned off. - slider code is still buggy. - MPEG 2 sequences are dithered wrong (all in green). - when 68k version is started from icon an output CLI window appears, and you have to press enter to continue. - when mpeg ends, frogger waits for user action. But something is wrong here, because any action causes exit. - I have just discovered, that Frogger fails to find valid audio track in some movies. In that case try to increase BUFSIZE (65536 or even more). - this list will grow ;) bug reports should be sent to: Sebastian Jedruszkiewicz bjsebo@jota.wi.tuniv.szczecin.pl @endnode @node "aut" "Authors" Frogger was oryginally created by Miloslaw Smyk Now it is beeing developed by: Sebastian Jedruszkiewicz (bjsebo@jota.wi.tuniv.szczecin.pl) main programming. and Przemyslaw Gruchala additional programming, 68k assembler optimized routines. (sensei@box43.gnet.pl) @endnode @node "fut" "Future" (higher priority on top) - GUI (partialy done) - audio & video seeking - better audio - video synchronization @endnode @node "hst" "History" I've lost history file from 1.0 to 1.3.0, only a quick brief: - added sound, overlay, recompiled with egcs, 68k version compiled with gcc, some optimizations in ppc asm, some optimizations in 68k asm (done by Przemyslaw Gruchala), asynchronous disc reading and more... v1.3.1 - Sound on/off from menu now works. - New AsyncIO routines. Does not requires asyncio.library anymore. This is experimental feature, so please be careful with asyncio option. Asynchronous reading is now done completly on PPC side. - Support for videocd and cdi (experimental). Those files starts with RIFF????CDXA. If you got such a movies please check if it can be displayed using Frogger. Please contact me if it does not work with your files. - 68k version available again. v1.3.2: - Completly new audio routines. much faster, and with some additional features (like forcing to mono, or 8 bits per sample decoding). based on mpg123 player sources. - fixed bug which caused Frogger to crash when decoding last sequence picture. (v1.3.3 and 1.3.4 not released) v1.3.5: - Audio is now played from 'Frogger Audio' task, which means that audio decoding is independent from video decoding. This gives almost smooth audio playback, now the only thing missing is synchronization beetween audio and video decoders. - New timing routines, and picture skipping routines. Small mpeg (160x120) are now played synchronized with audio track, and almost without picture skipping. - Added VERBOSE option. Annoying errors will be shown only if this option is enabled. - Fixed bug in audio decoder. Now stereo audio track should be played properly. - At last removed the sound delay at start! - 68k version does not work on 030+FPU. I will fix it, in future. - FULL switch has been renamed to FULLSCREEN=FS. It does work on cgfx but only with pixel format ARGB (24 bpp) RGB16 (16bpp) and LUT8 (256 colors). It also supports grey display.I will add support for more pixel formats soon. BTW: It seems that fullscreen 8bpp color mode is faster than windowed vlayer! Strange... - Movies with width not 16 dividable were played wrong. Fixed. v1.3.6: - AGA Fullscreen support. only 256 colors mode is working right now. HAM modes soon. - fixed dithering of MPEG-2 interlaced streams (or whatever it is called). - fixed args reading, so now MODEID can be passed as decimal (ie. 135168) or hexadecimal (ie. 0x21000) number. - fixed some small bugs in display code. v1.3.7: - fixed frame rate calculation, and audio synchronization. - fixed video overlay support. Output should be now bilinear filtered, when window is scaled. - added AGA fullscreen grey support. - fixed audio routines. no more strange sounds, or 2x faster audio decoding. - in fullscreen cgfx mode, movie can now be scaled using keyboard. - added scalable window output on AGA (Przemyslaw Gruchala). - added fullscreen support in 68k version (Przemyslaw Gruchala). - fixed bug in window display code, that caused crash on AGA, when selected screen was smaller than mpeg size (Przemyslaw Gruchala). - Frogger can now automagically detects audio tracks. - Fixed bug that caused crash when file name was misspelled. - Fixed vlayer support. No more strange stripes on WB, when using vlayer on screen. - added size scaling from menu (and keyboard). - fixed AGA full screen output. - added scalable output in AGA fullscreen mode. - created Frogger.guide. v1.3.8: - fixed audio track detection. - added FORCEAUDIO, in case the autodetection fails. - fixed writepixelarray() code. mpegs woth size not 32 dividable should be displayed correctly. - fixed AGA window display code (PPC version) - added tooltypes support (Przemyslaw Gruchala,only 68k version) - fixed AGA fullscreen display in 68k version (Przemyslaw Gruchala) v1.3.9: - fixed enforcer hit in window display code. - fixed yuv->8bpp conversion in 68k version (Przemyslaw Gruchala) - fixed enforcer hit, which appears when end of stream has been reached. - fixed overlay support. - some functions has been written in ppc assembler, minor speed increase. - fixed bug in audio decoder (joint-stereo layerII was decoded wrong). - modeid can now be passed as $number (MODEID $21000, or MODEID 0x21000 or MODEID 135168). - fixed tooltype support in PPC version. - BUFSIZE parameter now works. - Added Vlayer clear code. When frogger is started second time in a row, window should be cleared, and will not contains previous movie last frame. Also optimized a bit vlayer conversion routine. - Added ALLFRAMES switch. - optimized audio decoding a bit. v1.4 - Audio is now also readed by asyncio routines, which means that ASYNCIO is forced to true when audio is detected or forced. Also buffer size is set to 256000 when audio decoding is used. User can force it to bigger size, but smaller size will be ignored. - Changed FROCEMONO to FORCESTEREO. Mono is used by default, because it is much faster, and gaves smooth playback even on high bitrated mpegs. - Added BGR24 pixel format in cgx fullscreen mode. - Fixed audio problem: on some mpegs audio was not played, even if there was valid audio track. now it should be ok. - Fixed again audio detecting routine, now audio should be detected correct in every mpeg. If not - contact me ASAP. - Added BGR16PC and BGR24 pixel formats. Some pixel formats are available only in PPC version, I will make conversion routines for every CPU, and every pixel format one day... - Fixed problems with opening new mpeg (menu->Open item). - GUI!!! Only in windowed mode, but it is a good start ;) - fixed problems with multiple video sequences. - some other small changes and bug fixes. - removed fps 0 feature. - added RGB15 pixel format. - fixed frame skipping. Frogger skipped too many frames - ok my fault. Now should be ok. - optimized vlayer again. result? dead2intro.mpg (176x112 allframes): 84,5 fps, previous version: 70fps. Not bad, huh? - applied the same changes to cgx fullscreen and: 84 vs 78 (in 256 colors mode). - optimized grey output in 8bpp fullscreen mode. (107 fps on the above mentioned mpg). - next day: even faster grey output. 116 vs 107 (still the same mpg). Added this feature to AGA display as well as cgfx 8bpp display. - fixed bug, which caused crash on exit in PPC version. - fixed slider functions, It now works ok (you can seek to any position you want). but there are other problems I will fix later. - Added FBlit support (Przemyslaw Gruchala). - Added MODEBYNAME parameter. Can be used for specifying modeid by name. Sometimes fails to work (Przemyslaw Gruchala). - fixed version string as requested by some people. also added version string to Frogger.guide. v1.41 - At least fixed the bug that caused Frogger to exit in a middle of StarWars Episode I. Now I can watch the whole film ;) - fixed bug with 'O' hotkey (open movie in fullscreen mode). - added custom asyncio routines in 68k version. asyncio.library is not needed anymore. - Added vlayer support in fullscreen mode! - fixed MODEBYNAME parameter. (Przemyslaw Gruchala). - scaling routines rewroten from scratch. Previous version caused a lot of problems. Should be stable now. - fixed problems with mpegs without valid end of stream code. - Loop option now works. - Frogger does not exit at end of the movie now. It waits for user action. So you can select next movie. This can by turned off with AUTOEXIT parameter. - Enabled overlayering in 8bpp mode again. It does not work on BVision/CVision. on other cards that supports overlayering it should work. - Added FILE dither type. Instead of displaying frames are saved in iff 24bpp files. - fixed audio synchronization routines. Introduced new bug in audio decoding: in small mpegs audio is skipped, and the whole synchronization stops working. - fixed stats. no more '-3 frames skipped'. - removed ASYNCIO parameter. ASYNCIO is now always used. - optimized YUV->RGB conversion in 68k version (Przemyslaw Gruchala). - Added sound decoding in 68k version. v1.42 - I made a very stupid bug in 1.41, sorry for that. Asyncio routines should work now without problems. - Optimized cache clearing in context switching. Replaced several CACHE_FLUSHALL with CACHE_FLUSHNO, which speeds PPC version a bit. - recompiled 68k version. Due to the fact that sound causes a lot of problems it is disabled in 68k version. I know I promised to deliver Frogger with sound support in 68k version, but I just dont have time... v1.43 - Optimized asyncio routines, by replacing memcopy routines with two buffers and simple buffer swap operation. - fixed and optimized timer routines. - AsyncIO task is now properly closed when new mpeg file is opened. - Frame rate is now set to 29.970, if there is no valid frame rate information in stream. - Asl requester now remember file path. - Sound was played only once, when LOOP was used. Fixed. - Added BGR16PC pixel format in 68k version. - Optimized grey dithering. Only luminance channel is decoded if user requested grey output. This gives about twice faster decoding in grey. 68k users will benefit from that ;) - changed default bufer sizes to: 16384 (when there is no audio track) and 32768 when audio track is detected. This gives much smoother playback. - fixed Amiga+4 hot key, window is resized now to screen_height - 1. - New parametter: AHIUNIT, let you specify your prefered AHI unit. default is still 0. - Optimized video decoding a bit, by using a faster memset replacement. - changed ALLFRAMES to NOSKIP. This is better name for that switch, I think. Also changed DITHER keyword to DISPLAY. - Cleaned the code a bit. Removed unused functions, executable size is smaller. - Optimized VLAYERGREY conversion routine (1-2%). - BUFSIZE, FPS, and AHIUNIT parametters were wrong converted, when Frogger was started from icon. Fixed. - New switch: NOVIDEO. - Optimized IDCT in 68k version. - Fixed PLL calculation in timer routines. - Added P96 display. - I have just discovered, that Frogger fails to find valid audio track in some movies. In that case try to increase BUFSIZE (65536 or even more). It will be fixed in next version. Also I had to disable audio preloading, so it may be not enough data to start audio in the same time as video is started. In this case use AUDIO16 and/or FORCESTEREO, so the audio buffer will be filled faster, and the sound will be less delayed. @endnode @node "ove" "Overlay" What is overlay? It is a special feature of gfx card, which have got a lot of adventages: - colorspace conversion is done by the card (more cpu power can be used for audio or video decoding) mpeg video uses YUV color space, and it has to be converted to RGB before displaying. In overlay mode this conversion is done by graphic card. - scaling is done by graphic card. It means ,that you can (in theory) scale small window to fit whole screen without speed decrasing. - Also when output is scalled, graphics card uses bilinear filtering to eliminate zoomed pixels. Frogger supports overlay using cgxvideo.library. This library was designed to work with CV3D board, but it also works with BVISION/CVISION cards!!! Remember that it can be used on BV/CV only on screen with depth >= 15. On other cards (like CV3D) it works in 8bpp mode too. To use Overlay feature on CV/BV card do the following things: - install cgxvideo.library (libs: is a good place to hold this file ;) - in your BVISION/CVISION monitor icon add tooltype: VLAYER=DESTRUCTIVE - reboot. Now you can enjoy the overlay feature. Remember that this is a hack and it may cause problems (if running on other screen than WB, some strange stripes may appears on WB). @endnode @node "thx" "Thanks" I should thanks several people for help, suggestions and bug reports: - Jacek Cybularczyk, for GUI, and some cool optimizing suggestions. Also for suggestion how to fix slider code. - Stephen Brookes (FBlit author) for suggestions about FBlit support. - Luca 'Hexaae' Longone for Frogger icon (the new one). - and others I dont remember right now... They know ;) @endnode