FlaskMpeg Subtitle Fix based on FlaskMpeg 0.594 Fixed in this version: Subpictures with varying transparancies now do not appear invisibly. Now handles unexpected pixel data values, following the method given in the VobSub source (this has been tested on only a single title, so if this version of Flask works on titles that it previously didn’t, feedback is appreciated). ToDo: Correct mapping between subtitles selection from the IFO and substream identification. This can result in the wrong subtitles being shown, or none at all. Feedback is welcome: mailto:bobives@jazzfree.com Homepage: http://ciberia.ya.com/bobives/ FlaskMpeg PX3: based on FlaskMpeg 0.594 Flask MPeg 0.594 PX3 Fix 0.0.4e final Hello, this is definitely the last PX3 version of FlaskMPEG. All further changes will be incorporated directly into the original FlaskMPEG 0.595. I think speed is ok now compared to the original 0.594. There will be many new functions and speed increases, but only in the next official release. I'd like to thank everybody who has done comprehensive testing and Q-Bert for putting it on his pages. -Version 0.0.4e final / 08.12.2000 The Read-Cache can now be set in the Option (Global) Dialog One problem: Since I didn't have time to change the corresponding routines, the cache size will only be changed at the next start of FlaskMPEG or after a reload of the vobs. A hint: If FlaskMPEG should get slower, just reduce the cache-size. A large cache will only lead to changes on systems that have enough RAM and fast harddisks. In some cases it may be smart to set cache size to 128. I've tested cache sizes up to 8192KB. On my 300 MHZ system a cache size of only 64 is the optimal setting. The standard in the original FlaskMPEG is 256KB. -Version 0.0.4d / 08.08.2000 In version 0.0.4c there were synch problems :( These are gone now in this version. If this release should work everywhere I've also found a way how to deal with the mp3 synch problems. What has been changed: -Read-Ahead-Cache size increased (will be in the options dialog in the next release) -Small changes in the demuxer A general hint: If you get a quartz.dll error in media player, try to encode the video at a higher bitrate. It helped me during my tests.. Further changes will only be made after synchronizing the sources with Alberto. Special thanks to : Ted and Mikegun für the fast beta-testing. -Version 0.0.4c / 08.07.2000 Incorporated in this version are the new VirtualDub assembly routines which brought some more speed. There are no functional changes. Reference values (Athlon 800MHz/128MB): -Decode 5000 frames using Premiere Plugin, audio enabled : Original Flask Flask PX3 Max. FPS = 5.15 Max. FPS = 6.53 -Decode 5000 frames in DivX with audio: Original Flask Flask PX3 Max. FPS = 10.03 Max. FPS = 14.80 The mp3 synch problem has not been fixed yet, but this will be done in a future version !!! Important: The profile extension requires that you have to check the settings in option window when changing beetween the original and the px3 release. -Version 0.0.4b / 08.04.2000 Since performance had decreased in the last version because I forgot to enable the optimisation here's a recompiled version. This release should be minimally faster than 0.0.3c. -Version 0.0.4a / 08.03.2000 There are no performance updates in this release! In the File-menu you can now save and load your settings of the project options. Maybe someone will take it upon him to create profiles for specific movies. The following info will be saved: -Every settings from the following pages: -video -Audio -Post processing I have yet to make the changes to the language files -Version 0.0.3c / 08.02.2000 Since on some computers/configurations the last release resulted in choppy Avi/MPEG and or in problems involving the mp3 codec this release focuses mainly on these issues. I waw forced to reset some compiler switches, and so the filesize is again identical with the original flask release. Besides.. there's a temporary decrease in performance (about 0.03 to 0.08fps on my systems). The next release should be better because other optimisations will follow. At the moment I'd like to get a stable release that works on any computer/configuration special thanks to: Q-Bert - for immediately offering this program in his download section Alf - for his many quick test results and the tips about mp3 and choppyness Tsunami, Bananenbaum, Diamantring, Mikegun and Airwolf for their tests and answers on the board. -Version 0.0.3b / 07.30.2000 Today new versions are being released by the hour :( While decoding 5000 frames I've noticed some strange image problems in v0.0.2. Therefore I've changed getpic.cpp in order to make this problem disappear. Besides I've been able to squeeze another 0.03FPS out of it. Reference values (Athlon 800MHz/128MB): -Decode 5000 frames using Premiere Plugin, audio enabled : Original Flask Flask PX3 Max. FPS = 5.15 Max. FPS = 5.82 Elapsed Time = 16:06 Min Elapsed Time = 14:18 Min -Decode 5000 frames in DivX with audio: Original Flask Flask PX3 Max. FPS = 10.03 Max. FPS = 12.79 Elapsed time = 9:17 Min Elapsed Time = 6:52 Min = 46-59 minutes less when encoding 165000 frames - the planned changed for the next few days will mostly concern the audiocoding. -Version 0.0.2b / 07.30.2000 since v0.0.1b only resulted in a performance increase on my system I've undone all changed and started from scratch. Version 0.0.2b has resulted in the following performance (filesize is indentical to the original Flask release). -Decoding 2000 frames using Premiere Plugin, audio enabled: Original Flask Flask PX3 Max. FPS = 5.41 Max FPS = 5.79 Elapsed Time = 6:14 Min Elapsed Time = 5.46 Min This means that on my system this version shaves off half an hour of encoding time if you're encoding 160000 frames Changes have been made to the following files: getpic.cpp recon.c FlaskMPeg.cpp - Changes in FlaskMPeg.cpp resulted in fixing the remaining time bug - Changes in getpic.cpp and recon.c contain the latest implementation of mpeg2avi - In the next few days I'll make further changes in the system. These changes will mostly concern audiocoding. -Version 0.0.1b / 07.19.2000 This version should increase performance beetween 1 and 3 fps. I've tested it on my 800MHz Athlon (+3fps) and my 300MHz K6-2 (about +1fps). The more RAM and the faster the CPU the higher the framerate will be. A word about the whole thing: 1) I'll do this optimisation as my hobby 2) I don't get any money for it 3) I will continue to work on it if I have some spare time 4) Please respect points 1 to 3 when mailing or making suggestions Conclusion: I'm now working directly with Alberto on the new version 0.595 All changes from the PX3-Versions are already integrated in v0.595. Till the next official release. Rolf (PX3) FlaskMpeg Tsunami: Same as px3 plus: changes by Tsunami 1. Search size set to 25000KB by default 2. Preview during encoding is off by default because it could let to choppyness in the final movie 3. if you press cancel the program will close in order to prevent a bug 4. German translation was fixed 5. Changed some dialogues 5. Codec selection box for AVI encoding now comes when you start encoding, like it was in Flask 0.563 and earlier. That prevents using a wrong framerate which could lead to choppyness Tsunami FlaskMpeg multipass: based on FlaskMpeg 0.594 Fixed the aspect ratio for 16:9 (anamorphic movies) After decoding the last frame if the encoder asks for more frames the decoding will start again at the first frame. FlaskMpeg DeCSS based on FlaskMpeg 0.594 + VobDec code Warning: The author declines any responsability from the use of this program. This software can not be used with copyrighted material because doing so, would infringe many laws all around the world. The author doesn't intend to promote piracy by any means, and the scope of the application is limited to video processing tasks with home made digital video material. Alberto Vigatá does not have any responsability for this version of FlaskMpeg Do not report bugs from this version to him, because the modifications added can be responsible for them. The Daltons Group. I) Before trying to FLASK a crypted DVD : Authenticate the DVD : 2 ways 1rst : Launch your DVD player and read the dvd. As soon as a picture appear, the DVD is authenticated. 2nd : Use dodsrip too rip some bytes of the dvd. II) Thanks The FlaskMPEG DeCss is a made with FlaskMpeg & Vobdec The Daltons Group (EU) has made this version of FlaskMPEG using FlaskMpeg sources and vobdec sources. A great thanks to Alberto Vigatá for the FlaskMPEG project and to Vobdec author for this "Legal" version of the DeCss. FlaskMpeg 0.594h1 Release notes for version 0.594h1 by hrm. You might be able to contact me at the eGroups flaskmpeg mailing list. NOTE: If you're skimming this file, please be sure to read the indented text, because it contains important notes. Also check out the KNOWN BUGS at the end of the file. The rest is just fluff :-) 0.594 is originally by Alberto Vigatá, h1 contains modifications by . These release notes describe the changes with respect to 0.594. Source patches relative to the 0.954 release can be found in the Source subdir. The sources and binaries of Alberto's version 0.594 can be found at http://go.to/flaskmpeg, and most likely also at the place where you downloaded this. Let's shout the essence of the above again: THIS VERSION OF FLASKMPEG, 0.594H1, IS DERIVED FROM FLASKMPEG 0.594 BY ALBERTO VIGATA. DO NOT BUG ALBERTO WITH QUESTIONS, BUG REPORTS, FLAMES, LEGAL THREATS, ETC, ABOUT THIS VERSION. THE MAN DOESN'T EVEN KNOW IT EXISTS. Now for the last obligatory remark YOU ARE NOT AUTHORIZED TO DO UNAUTHORIZED THINGS WITH THIS SOFTWARE (you'd think people would know that, but it seems you have to mention it). THE AUTHOR TAKES NO RESPONSIBILITY (HE CAN BARELY SPELL THE WORD) FOR THE MONSTROSITIES (ANOTHER ONE OF THOSE WORDS) THAT PEOPLE MAY COMMIT WITH THIS SOFTWARE. IT IS PROVIDED AS-IS, EVEN THOUGH I'M NOT SURE WHAT THAT MEANS. WHAT I MEAN TO SAY IS, IF IT DOESN'T WORK, BREAKS STUFF OR MOLESTS YOUR FAVOURITE PET, IT'S NOT MY FAULT. OK, having said that, let's go on.. A NOTE TO DISTRIBUTORS: FlaskMPEG is available under the GNU General Public License (GPL), and so is this derived version. The GPL requires that sources be made available along with the binary versions, so please don't separate the included sources from the binary files. Even if you don't give a rat's ass about what the GPL requires, think of it like this: Everything I know about the internals of MPEG, CSS, DivX, vobs, etc, I learned from reading other people's source code. For example, do you like those fancy ripper GUI's? Well, damn near all of them owe their existance to the openly available vobdec source. So let's keep spreading the source! Phew. On with the actual information WHAT'S NEW in 594h1: - CSS descrambling support. When you open a vobfile, either using "open DVD" or regular "open file", flask will sample the first 512 blocks of the vob to determine wether it's encrypted or not. If it is, you can enter a 5 char key (e.g. e1 69 01 02 03) that is used for the decryption. Note that, if reading from a DVD-ROM drive, you must first unlock the drive. A DVD player usually does this, and there's also software on the web that can do this. IMPORTANT NOTE FOR U.S. CITIZENS (AND OTHERS, I GUESS): (Using) this software with copyrighted works may or may not be legal under the American DMCA or other laws. The DMCA illegalizes (that a word?) devices whose primary or sole use is the circumvention of technological measures that limit access to a copyrighted work (or something, I can't be arsed to go and look up the exact wording). Flask does NOT contain code to find keys for encrypted files, it's merely able to decrypt a file given a correct key. That's why I belief this feature cannot be called a "circumvention device" and therefore the DMCA does not apply. (However, I also belief the MPAA has burned people at the stake for lesser perceived offences than adding this feature, which is why you don't find my real name in these notes, even though I live in The Netherlands ;-) Read more about the DMCA and its consequences on numerous websites. I can recommend the DMCA section on doom9's site: http://go.to/doom9 If the distributor of the DVD for some strange reason omitted to give you, a valued customer no doubt, a working decryption key for the DVD you legally purchased, you might be able to find software on the web that will obtain this key for you :-) (If you have no idea where to find this software or if you don't know what I'm talking about at all, I suggest you read up on the subject on one of the many sites that contain HOWTO guides. Sites like http://divx-digest.com and http://go.to/doom9 spring to mind) You can also change the number of blocks in the read-ahead/descrambling buffer. Beware that for this buffer, bigger is not always better! If you make it too big, flask will descramble data that may not be needed at all, thus making everything slower. If you make it too small, things slow down because of disk I/O. I always leave the value at the default of 8, but people with different DVD drives may find other optimum values. IMPORTANT NOTE: There have been reports about DVD drives overheating when forced to read at a much slower pace than single-speed DVD. My drive seems to be okay (Asus E608) and I've never heard first hand of a drive being damaged this way, but you might want to keep an eye on your drive the first time you transfer straight from a DVD-ROM. After you enter a code, flask will check the file sizes like it always does. This may take a few seconds on a DVD drive due to relatively slow access times, so wait patiently. Note that there's currently no check of the given key; if you give a bogus key you'll get bogus data and flask will most probably hang. The given key will be saved in the registry (under HKEY_CURRENT_USERS\Software\FlasK Development\FlasK MPEG\VobKeys), indexed by a simple hash that was made while scanning the vob file. The next time you open this vobfile, the registry key will be automatically used. - Output pad changes / Aspect ratio changes I added a slider to select a different frame if the default one is too dark or otherwise unsuitable for setting resize and cropping parameters (but read the KNOWN BUGS section at the end of this file before using it!). The input and current aspect ratios are now shown in the main window. When cropping is enabled, it is possible to change the resizing height in units of one and the width in units of two. (Only possible with cropping, because the codec must be fed with something that has dimensions of x*16 by y*16). There is a "preview aspect ratio" that will show you what the "Keep aspect ratio" would do with the current settings. However, these days I *never* use the "Keep aspect ratio" option anymore; I always manually resize it in such a way that the aspect ratio is OK. This way, you get to see exactly what you leave out by cropping. Cropping doesn't change the size of the preview window anymore. Instead, the cropping area is represented by a white rectangle. The pixels underneath the rectangle's border are also included in the cropped image. I never use the letterbox feature, and am not exactly sure what it's for. I changed the aspect ratio code. I'm not sure what the original code did, but it seemed a little buggy and I didn't understand it anyway :-). I replaced it with simple code that will add vertical black borders left and right if your output box is too wide and horizontal borders at the top and bottom if the box is too high. You can see what the code does by enabling the preview box in the output pad and resizing the image. NOTE: Flask assumes (always has, not my change) that the output device has an effective ratio of 1:1. For example, your monitor screen has an aspect ratio of 4:3 and may have a resolution of 800x600. That means, if you draw a square 100 pixels wide and 100 pixels high it will look like a square, hence effective ratio of 1:1. If your output device has a different ratio, you must disable the "keep aspect ratio" box and do the calculations yourself. - Processing dialog changes Some more output is added. You'll see. I fixed a bug in the remaining time calculation and added estimated time of completion (someone on the flask mailing list suggested this; sorry I forgot your name and am too lazy too look it up). - Added flask installer/uninstaller Using Nullsoft's excellent free NSIS installer. You'll find it in the free section at http://www.nullsoft.com. The install script is "flask.nsi" in the source dir. The installer stores the installation location in the registry under HKEY_LOCAL_MACHINE\Software\FlasKMPEG_594h. FlasKMPEG will look for this key to find the location to get *.cm.flask plugin files and the languages subdir. If this key is absent, FlasK will use the current directory, like it always has. In that case you have to run FlasK from the installation directory. KNOWN BUGS: There seems to be a stability issue with the player thread. If find that messing around with the slider in the player or in the output pad sometimes makes FlasK unstable. I don't think I introduced this; it seems to be an issue with the original 0.594 as well. FlasK doesn't seem to properly re-inialize codecs before every encoding session. Sometimes this results in corrupt AVIs, which can be fixed by VirtualDub, but you'll find that after that the audio is missing. ADVICE: Because of those issues, I strongly recommend to restart FlasK before you start a transfer of a complete movie that may take a couple of hours. If you start an encoding session when FlasK is unstable, you might end up very disappointed six hours later... That's it... Enjoy,