Nandub Changelog

What's new in Nandub 1.0 RC2

Aug 26, 2013
  • · I'm pushing RC2 rather fast, not because it's necessary or extremely urgent, but because I'm flying away tomorrow. In the next 2 weeks, I'll have reduced access to my box, so I'll probably be able to fix bugs if necessary, but I don't know if I'll be able to do much more than that. I hoped OpenDivX would have released their new codec sooner...
  • · Bugfix: I partially f*cked the bitrate calculator in rc1 due to my introduction of a second audiostream. The fact that I didn't write that code didn't help either. It should be ok now.
  • · Bugfix: It was forseeable that I would have overseen something. Indeed, I forgot to replace a '-1' by a '-2'. Result : every attempt to mux a CBR secondary audiostream would end up in pure sh*t, since both streams would be mixed together in the primary one. It won't happen anymore.
  • · Bugfix: The "smart keying" feature wasn't bound to the "Space KF" rule and could cause raws of keyframes. This should not happen any longer with rc2.
  • · Bugfix: Using 'Save segmented AVI' with something else than Direct Stream Copy video mode won't cause Nandub to crash anymore.
  • · Bugfix: Specifying a non-existent stats-file in the 'Encode using' field would cause Nandub rc1 to crash.
  • · Added: Nandub will now complain if it can't create the requested stats file (previously, the dubber would have continued its work without any kind of warning)
  • · Added: Instant bitrate will be shown in the status window (video tab) while running the first pass too.
  • · Cosmetic: it was possible to see percentages like 148% in the title bar while encoding/dubbing. Corrected.
  • · Removed: the DebugView files (executable + help) have been removed from the distribution, because I don't want to distribute all its various flavors (98/NT/2K and XP).

New in Nandub 1.0 RC1 (Aug 26, 2013)

  • I feel that the feature set is now fairly complete and the only feature I'll add will be the support of OpenDivX when it'll be available. In the meantime, I'll correct the bugs which will (most probably) be reported.
  • · Added: support for a secondary audiostream. You can now mux 2 audiostreams with Nandub. I didn't test many combinations, but things like 2x VBR MP3, 2x AC3, VBR MP3 + CBR MP3 (as WAV), etc, are possible. Due to the amount of code added, it would be very surprising that no bugs arise...
  • · Added: Upon request, max compression level for keyframes have been reintroduced, but, in order to avoid any nasty side-effect and to preserve source code maintainability, it will only work in a specific situation: First, you must have collected scene changes information in the first pass and second, the setting will be taken into consideration only if inferior to the other max CLs. So, it won't affect one-pass encodes and quality control mechanisms (AntiFreeze/AntiShit) won't respect it either.
  • · Now, let me make myself very clear: If you get any kind of dropped frames problems with this feature enabled, I won't freakin' care! Don't use it, period! It's disabled by default (31), just don't touch it. Also, don't even think about requesting a 100% enforcing of this setting, it's coded as a "best effort" and I won't go any further than that.
  • Solved: There has always been a problem with subsets and ranges in Nandub. It should work ok from now on, provided you follow the simple rules described below. For those who don't know what ranges and subsets are, a brief explanation. Let's assume we have a source which frames range from 0 to 99999. When you select frames from 48000 to 50999, you have defined a range, which size is 3000 frames. Now, as soon as you hit the 'Delete' key, *poof* the range disappears and you have now a subset, which size is 97000 (100000-3000). So:
  • · If you need to completely disregard some portions of the video-source (like ignoring commercials in a TV capture), you will use subsets, in both passes. (erm, before you ask, yes, the same ones )
  • · If you want to reencode a segment of the video, or if you want to do a small test on a segment (see if your 2nd pass settings are ok), you will use ranges, in the 2nd pass only.
  • · Last note: For those of you who have complicated needs like use 3 appended AVI files as source and cut a couple commercials in these files, you'll probably have far less problems by feeding Nandub with a small avisynth script (that's what I do myself)
  • · Changed: Upon request, the 'Always on top' setting of the status window is now saved across encodes, that is, if you check it in the first pass, it will be checked in the 2nd as well (unless you restart Nandub in between)
  • · Changed: When you load an external AC3 audio source, a message box pops up with the various details of the AC3 file you selected. This box will now last for 10 seconds maximum, so that it doesn't stop a 'Two Passes...' or a job in the middle of the task.
  • · Cosmetic: Since I know VirtualDub, I've always been extremely annoyed by a tiny visual bug. When the video tab of the status window is partially covered on its right side, the visible portion of the graph isn't correctly updated. I've finally found out where it came from.

New in Nandub 0.29.1 (Aug 26, 2013)

  • Bugfix:
  • I goofed with the default values of the SBC settings in 0.29, fixed.
  • Bugfix:
  • I'm slowly beginning to hate YUY2. The SCDs in YUY2 mode seem to output reduced differences between frames (most probably because of the half resolution of U and V compo-nents). It's now compensated, so both SCD should work as expected in YUY2 mode too.
  • Bugfix:
  • (bis) I'm slowly beginning to hate YUY2. The additions for YUY2 support caused some other internal routines (in the filter system) to trash the ouput bitmaps (green and stripy). To support YUY2, I modified a bit an object (VBitmap) and my error was to make the false assumption that Avery Lee would have instantiated that object exclusively through its constructors. Of course, Murphy's law oblige, it wasn't the case.
  • Added:
  • If you want Nandub to automatically propose to defer the task in the job list, check the appropriate box in the Preferences/Main tab. As usual, when a new field is introduced in the Preferences, re-check your preferences when you run the new version of Nandub.

New in Nandub 0.29 (Aug 26, 2013)

  • · Bugfix: An old one... 'Save Segmented AVI' now works for AVI files with VBR audiostreams. I want to remind you that this feature does NOT cut the files on keyframes. It is meant to be used with softwares which break the 2 GB limit of 'normal' AVI-files, like VirtualDub or AVI_IO.
  • If you're gonna archive such files on CDRs, be aware that you'll have to first copy all the files on HD and use something like AVI_IO (I remind you that this software isn't freeware) for a proper playback in WMP for instance.
  • Bugfix:
  • (actually fixed in 0.28.1) YUY2 input should now be properly handled in all cases. I recommend (anyway) the installation of HuffYUV, specially for those of you experiencing crashes with msyuv.dll. Moreover, HuffYUV is faster than the M$ implementation.
  • Extended:
  • Somebody on the forum discovered that the scene change detector didn't work properly when using YUY2 input in Fast Recompress mode. Of course, since all the internal machinery of VirtualDub is based on RGB.
  • Though, I succeeded in adapting the SCDs to YUY2. With the few tests I did, I can only say that it apparently works as expected, but I can't guaranty it will give the exact same results as when running in RGB mode. YMMV.
  • · The sad thing now is that I have all the necessary elements to do image comparisons (PSNR) in YUY2 mode too. So AntiShit could work... but DivX refuses to decompress to YUY2.
  • Added:
  • During Doom9's absence, I won't add complicated features, this one is pretty simple though. There's a new checkbox in the bitrate curve tab. You can now choose to collect information about scene changes in the first pass. What is it useful for ? When such information is present in the stats file, Nandub will provide "smart keying". Previously, you could see keyframes arrangement like this one:
  • · 0 ---------- 10 ---------- 20 - 21
  • · where 0 and 21 are scene changes, and 10 and 20 are keyframes inserted by the codec, due to the Keyframe interval setting. Having 2 keyframes so close from each other is rather dumb. With "smart keying" information in the stats, Nandub will equilibrate keyframes distribution like this:
  • · 0 ------- 7 ------- 14 ------- 21
  • Please note that activating scene change detection in the first pass will slow it down a bit (this is the reason why I made it optional). Be aware that I have defaulted it in the default.1st.pass.vcf file. Those who don't like it can easily edit the file.

New in Nandub 0.28 (Aug 26, 2013)

  • · Fixed: A bug in VirtualDub was preventing the 'real' use of YUY2 format in Fast Recompress mode. Till now, all was silently converted to RGB. The problem was affecting video-sources like the mpeg2dec+avisynth frameserving method and uncompressed YUY2 AVI files, but wasn't affecting codecs like HuffYUV.
  • · Changed: The 'Generate Stats' menu option has been "fragged". In its place, you'll find 2 different edit boxes for filenames in the Bitrate Curve tab of the SBC dialog. The first one will indicate where stats will be collected, the second one, which will be used to generate the curve for a 2nd pass.
  • This way should be less confusing, and allows for collecting stats in the 2nd pass too (for research purposes). As usual, the 'First pass...' (F8) and 'Two Passes...' (Shift-F8) menu options automate all this, so you don't have to worry about them. Be sure to have the default.1st.pass.vcf file up-to-date though or it could possibly have nasty effects.
  • · Added: A new feature meant for developers of various applications like authoring tools (MicroDVD and alikes, which need to force keyframes for chaptering purposes) or like TheWEF's Gordian Knot. A text-based file format named ECF has been defined. It allows to override Nandub's decisions while encoding on a frame-basis. You can for instance: force KFs, set the bitrate, the compression level, the motion measure, the gauge level, ... Again, this feature is meant for developers only. 'Normal' users: Just
  • ignore it please. Developers, see details in the provided example.ecf file.
  • · Optimized: I didn't thought it would improve very much, but it actually did a few. Encoding should be now faster compared to previous builds when Min. Quality is activated, since I've MMXed some memory-dumps which are necessary to be able to reencode a frame.
  • · Reactivated: The Ogg Vorbis support has been reactivated. This feature is experimental. Please check Doom9's Nandub Development forum for the details.
  • · Gadget: If you load a DivX or MPEG4v2 encoded AVI file, you should see (near the status line) the compression level of the frame while seeking into the video.

New in Nandub 0.27 (Aug 26, 2013)

  • Comeback:
  • Keyframes quality. After one more sleepless night, I feel ready to reintroduce them, since I understand now much better the way it works. So the spin button is back in the Compression Levels tab, but it will work a bit differently. Keyframe quality is a sort of 'base' quality. The default value in the original codec is 4x, but it is influenced by min/max compression levels settings. Let's take a couple examples (please note that KFs generated in Nandub by special features like AntiShit and others might not exactly respect these rules):
  • · CL min/max = 2/8 and Keyframe quality = 4
  • · will result in keyframes compressed at 4x, 5x, 6x, 7x or 8x (or dropped)
  • · CL min/max = 2/3 and Keyframe quality = 4
  • · will result in keyframes compressed at 3x exclusively (or dropped)
  • · CL min/max = 2/2 and Keyframe quality = 4
  • · will result in keyframes compressed at 2x exclusively (or dropped)
  • · CL min/max = 2/8 and Keyframe quality = 3
  • · will result in keyframes compressed from 3x up to 8x (or dropped)
  • So this control is a minimum, which gets then filtered by min/max CL.
  • Why were KFs dropped in previous attempts to implement this functionality? Well, the codec has a check: Before encoding a frame, it approximately 'knows' how much it 'wishes' to compress the next frame. Let's assume it chose 10x. And let's imagine min/max CLs are 2/6.
  • Because the difference between the 'wish' (10) and the max (6) is bigger than 3 (hard-coded in the codec), the KF will get dropped. The current Nandub build should now be reasonably immune to dropped frames. If you encounter such problems again, please drop me a note. I shouldn't have to remind you that I need proper material to understand the problem: Debug logs, crash dumps, .vcf settings, etc. - Please don't forget to include them in your mail.
  • Added:
  • In the DivX tab, you'll now be able to choose between 3 quality control modes:
  • · none: does nothing (doh!)
  • · antifreeze: will only decompress the frame to check for possible freezes
  • · full: 'normal' AntiShit & Min Quality operation
  • · Added: A new checkbox in the AVI tab of the Preferences dialog box. You can now choose to ignore ICDecompress -100 errors. I don't recommend it, because IMHO the authors of the video-decompressors should do their job, i.e. fix the bugs. Oh well... Ah yes, due to the way the preferences are saved in the registry, this new build of Nandub might fuck things up.
  • All you have to do is to setup the preferences as you like them once again (if they ever got screwed up), save them, and you won't be disturbed again (well, at least, until I add something else in the preferences)
  • · Gadget: A 'stay on top' checkbox in the status window

New in Nandub 0.26 (Aug 26, 2013)

  • · Removed: The whole stuff around compression levels for keyframes. It was causing too much troubles, inaccuracy and (apparently) dropped frames, and since there's a lot dumb-asses out there, who don't like to use beta-software,
  • I'll continue the research on them privately. So we're back to the behavior of 0.22 and previous, only difference is debug output won't "lie" about keyframes compression levels. So you'll see that CL for keyframes will be sometimes outside the prescribed range. This is known (don't even think about complaining) and there's no reliable workaround yet.
  • · Changed: The compensation mechanism for the luma-correction has been reported as having occasionnally nasty side-effects. The consumed databits are now simply substracted from the generic redistribution pool.
  • · Improved: AntiShit has been enhanced. Undercut submitted an excellent patch (thanx a bunch dude =) ), which I adapted a bit. AntiShit will now try to reencode the frame as delta-frame, before reencoding to KF if failed to solve the problem.
  • Typically, it should help with these nasty luma-inverted blocks. Also, although Nandub wasn't meant to be used as a one-pass encoding tool, the patch corrects a problem which caused unexpected behavior in such cases (AntiShit/Min Quality activated on one-pass encodings).
  • · Added: For those who forget to save their settings before exiting, you'll have from now on a second chance in the form of a __last__.vcf file in Nandub's folder. A note for those who wished such features as following: Auto-load of processing settings, separating 'vdub-settings' from 'nandub-settings', etc, well, I don't think I'll ever code them: Much work, confusing, etc.
  • · Bugfix: The crash caused by dropped frames + AntiShit/Min quality deactivated won't happen again.

New in Nandub 0.25 (Aug 26, 2013)

  • · Added: A check for dropped frames. Nandub will treat them as "shit" and (try to) reencode as keyframes. A note here: some have suggested to return to the old implementation where CLs for keyframes were uncontrolled. They were supposedly limited by the 'normal' min/max. Since I've found out that it is not the case, and since Nandub is still beta, I prefer to try to find the right way to specify CLs for keyframes, even if it means inconveniences for current users. Yes, Nandub might be buggy, if you don't like that, use something else.
  • · Changed: A new tabbed dialog box with almost all SBC options. The accelerators of previous versions are still valid. Since there's more room now, I made labels a bit more verbose. I didn't try to run Nandub in a 640x480 resolution, but I guess, you won't see all options if you try...
  • · Added: Some of the 'extensions' developed by RH/Maras/Koepi (many thanx to them and please keep it up =) ) have been integrated: The asymetric curve compression, the proportional bitrate redistribution and low-bitrate-condition gauge treatment. Why were the others rejected? I think the limitXXX are confusing, specially I don't see the point when we have a specific (and much more simple) curve compression for the lower bitrates in the asymetric mode. End credits treatment seems now ok in the latest versions. The parameters related to 'sourceMinKbps' break the purpose of other parameters and I can't accept such things in Nandub.
  • In this last group of 'extensions', some can probably be retained, but I didn't have the time to think about a 'clean' implementation for them. Last note: I based my additions on source code I've grabbed from Koepi's site. If there are more recent ones, please let me know.
  • · Updated: The default.1st.pass.vcf file wasn't up to date, by far.
  • · Verified: Shutdown now works (at least, on my Win2K), provided you have administrator (or equivalent) privileges.
  • · Improved: Using AntiShit alone (without Min Quality) should be faster.

New in Nandub 0.24.1 (Aug 26, 2013)

  • · Bugfix: Motion modulation saved in settings and work now as it should (I definitely should stop drinking vodka...)
  • · Changed: "-->" into "==>" so that ezBoard doesn't complain about DebugView outputs as being 'HTML comments'.

New in Nandub 0.24 (Aug 26, 2013)

  • · Bugfixes: 0.23 introduced lots of bugs. I don't even remember them all: Authoring should work ok now, keyframes compression level is 100% respected, a signed integer overflow has been corrected in the PSNR measure algo, the infinite loop shouldn't happen anymore, shutdown should work (thanx Mr. M$ ), etc...
  • · Changed: I've reworked for the zillion-th time the end-credits algorythm. The parameter now indicates the number of the frame where it starts, it isn't a length anymore. I took the occasion to make the curve scaling at this point better. Also highpass and lowpass do not apply to credits anymore.
  • Added:
  • Motion modulation for AntiShit and Min Quality parameters. The new parameter is a %age and works like this: Let's assume we entered 16 as AntiShit, 30 as Min Quality, with 50% modulation, here is what will happen:
  • · with motion = 0:AntiShit=16,Min Quality=30
  • · with motion = 150:AntiShit=12,Min Quality=22
  • · with motion = 300:AntiShit=8,Min Quality=15
  • · With 25% modulation, here is what will happen:
  • · with motion = 0:same
  • · with motion = 150:AntiShit=14,Min Quality=26
  • · with motion = 300:AntiShit=12,Min Quality=22
  • Added:
  • A 'Jump To Last Keyframe before...' menu item has been added to the Edit menu. It is meant for people trying to cut properly finished encodes, so that they fit in 80mins CD-Rs. I'd suggest following procedure:
  • · Open the AVI
  • · Hit 'Home'
  • · Ctrl-Shift-J, type 698 (keep some margin) and hit 'Enter'
  • · Hit 'End'
  • · F7, Save AVI (this will be the first CD)
  • · Hit 'Home'
  • · Hit 'Ctrl-Right-Arrow'
  • · Hit 'End'
  • · F7, Save AVI (this will be the second CD)

New in Nandub 0.23 (Aug 26, 2013)

  • · Bugfix: A microscopic one. In v0.22, the first motion value wasn't transmitted to the compressor (a stupid 'greater than' test instead of 'greater than or equal to')
  • · Improved: Support for MPEG4v2 is now 'complete'. Both 4.0.0.3688 and 4.1.0.3920 versions of the codec are now detected and the engine can now work with both. Don't forget to edit your default.1st.pass.vcf file if you want to use MPEG4v2 (replace 'SetDivX(...)' with 'SetMPEG_four_two(...)')
  • · Changed: The 'Bitrate & Reservoir' dialog box has been splitted in 2. It should make additions about alternative bitrate curve algorythms easier.
  • · Changed: The luminance correction multiplier parameter has been replaced by a (more intuitive) maximum gain expressed in %. Also, the compensation mechanism is now gradual (in previous versions, it was a simple bias over the whole curve). Since the compensation now only applies to the frames whose 'luma-noise' are greater than the threshold, I think that more conservative settings should be used here, like threshold 10, max gain 30% (just a suggestion, YMMV)
  • · Reworked: for the N-th time, algorythm for end-credits. This time, I think it's ok =]
  • · Added: While running the 2nd pass, if you defined a length for end-credits, the default.end.credits.vcf script will be run at the beginning of the end-credits. This let you tune some settings like compression levels, gauge min/max etc, specifically for the end-credits sequence.
  • · Added: Kthulhu submitted a very well coded integrated bitrate calculator. Thanx a lot.
  • · Added: In the second pass, in case of heavy undersizing, that is, if deviation (as shown in the status window) becomes lower than -10 MBytes, the engine will start compensating (adding bits in the reservoir in order to push the codec to consume more databits)
  • · Added: A new scripting function has been added for those who are satisfied with the 'Calc' button and want to use the feature in batch jobs. The line
  • · VirtualDub.video.CalcCurveCompression();
  • · is added in the .vcf or .job files, but as you can see, it's commented out. To activate it, edit the file and remove the leading slashes. Why not add a GUI checkbox somewhere? Because I'm not sure I want this feature to stay in feature releases.
  • · Added: In the Compression Levels dialog box, there's now a new spin named 'Keyframes quality'. I've discovered that the the fields Nandub was manipulating in the context of the codec didn't actually govern the compression level of keyframes. Most of the times, all keyframes were encoded at 4x, even if previous versions of Nandub reported something else in the debug output. I've now found the right place. This specific compression level cannot be changed while encoding (yet), although the AntiShit feature might use various compression levels while rekeying a bad frame.
  • · Changed: I've completely reworked the AntiShit =) algorithm. It is now based on a finer grained PSNR algorithm and provides you with 2 controls: 'AntiShit' and 'Min quality', both measured in dB. When both are set to 0, it's disabled and no quality measure is made. When activated, each compressed frame will get decompressed and compared to the source one. The resulting measure will be between 0 and about 95dB. If this measure gets lower than 'AntiShit', a keyframe will be forced (the resulting frame is also tested). A good value for AntiShit would be 16 I think. Suggested settings for 'Min quality' would be 0 (deactivated) or about 25. When the quality gets lower than 'Min quality', Nandub will try to recompress the frame without rekeing, but at a lower compression level. In the debug ouput, you should see 2 new values: PSNR=aa.aa(ww.ww) aa.aa is the average PSNR of the frame, ww.ww the measure of its worst block. 'AntiShit' and 'Min Quality' both use the ww.ww measure.
  • · Gadget: I like to watch the output window alone while encoding, so I already had defaulted the vertical view of the panes and inverted them. In order to feel completely comfortable, I've added a 'Resize to Fit' menu option with an accelerator. Open the videosource, load the settings and hit Ctrl-Z :]
  • · Gadget: 'Instant' bitrate output in the video tab of the status window.
  • · Gadget: A 'Shutdown' checkbox in the status window.
  • · Gadget: A Nandub specific 'About' box
  • · Note: Ogg/Vorbis support still doesn't work.

New in Nandub 0.22 (Aug 26, 2013)

  • · I've been away a long time (about 4 weeks). I know, many requested features aren't implemented and many issues haven't been addressed. I feel though that this beta has to go out ASAP. So...
  • · Bugfix: Cutting samples in AVI files with vbr audio should now work in all cases.
  • · Changed: End-credits handling. You can now set the bitrate of your choice for them.
  • · Added: Support for MPEG4v2
  • · I'd like to note that the only advantage of this codec i can see, is its legitimity. Else, based on the few tests I did, I think it's a tad inferior to DivX ;-). O well, you'll see.
  • · Added: Automatic shutdown. Either use the new command-line switch /d, or manually add a VirtualDub.Shutdown(); line at the end of you virtualdub.jobs file.
  • · Added: The 'deviation' (D) is now shown in the status window.
  • · In preparation: I'm working with Ingo to get Ogg/Vorbis audio in AVI files. So you'll see the option in this beta, but it's not functional as of now. So, don't even try to use it. Hopefully, it will work very soon with the help of the DX filters Ingo is currently working on.