Deshaker Script in Vista 64

JJKizak wrote on 2/7/2008, 7:47 AM
Installed Deshaker script in Vista 64 and it does go through the complete cycle except for the message "Deshaker: This frame was not processed in pass 1". The clip is black with this message however the sound is just fine. Also importing a V7 project with the deshaker clips already processed in V7d and completed just fine and then into V8b Vista 64 the processed clips show the same message with a black frame. Wonder if this is an easy fix? Tried Virtualdub 1.70, and 1.77. It seems as if it really does work but that Vista 64 doesn't see it.
JJK

Comments

Laurence wrote on 2/7/2008, 11:41 AM
The exact same thing happens to me. The problem appears to be with VirtualDub and writing log files, not with Vegas. I'm getting around this by using Mercali instead of the deshaker script, but I miss the way Deshaker handled the edges.
MarkWWW wrote on 2/7/2008, 3:00 PM
I'm no expert on Vista (I'm waiting until SP1 is out before I even look at it seriously) but I believe that one of the things it does differently from XP is that it won't allow users to write files to what it regards as "protected areas" and the root directory is one of these areas.

This means that when the Deshaker script attempts to write its deshaker.log file to the root directory after the first pass it won't succeed, and I suspect that this is the reason for the failure you are experiencing. If I'm right, a simple modification to the Deshaker script to make it put the deshaker.log file somewhere other than the root directory should fix this problem.

Mark
johnmeyer wrote on 2/7/2008, 6:07 PM
I don't know Vista at all, but Mark is probably correct. If he is, the solution is to edit the deshake.js script (which I wrote). Find every occurrence of:

c:\\Deshaker.log

and change it to point to some folder, instead of the root. Because of how the script language works, you have to use TWO backslashes. Thus, to save the log file in the "stuff" folder on the E: drive, you'd search for all occurrences of the above string and change it to:

e:\\stuff\\Deshaker.log

You can use Notepad to edit the script.
JJKizak wrote on 2/8/2008, 6:32 AM
johnmeyer:
Deshaker now works in Vista 64 with those changes. I am using Virtualdub 1.77. With 4 x 3 aspect I am getting a lot of vertical side edge border movement but the project is stabilized. (Viewed on 16 x 9 monitor) Tried on a 16 x 9 project and it worked fine. Then tried on HDV (1080 x 60) and note popped up saying could not find "SFDB" codec.Wondering if I drop back to V-dub 1.70 if the borders will stabilize and what is "SFDB" codec.
Thanks a bunch.
JJK
johnmeyer wrote on 2/8/2008, 10:14 AM
what is "SFDB" codec

I don't know. Have you altered the script (other than the log file change)? If you use the default settings, it should use "uncompressed," and that will avoid using any codec. I definitely did use it on 1080i 60 fps HDV and it worked.

Just to be certain, I just ran a test using 1080i 60 fps HDV. I am using VirtualDub 1.6.18 Build 24473, which is what I shipped with the script. Everything worked eventually, but I did have some problems when I cancelled the building of the audio peaks. However, when I let those peaks build, and also remembered to first save the project (the VEG file) before starting the script, everything worked.

So, the differences between your system and mine (AFIK) are:

1. I am running Windows XP Pro.
2. I am running a single CPU, single core, single thread system.
3. I am running the 1.6.18 Build 24473 version of VirtualDub.
4. I am running the unmodified version of the original script.
5. I am using all the defaults on the script which means both the render from Vegas, and the render from the Deshaker script are done to an uncompressed file. I realize that this results in HUGE files, but it avoids the issues with codecs.
6. I am running Vegas 7.0d.
7. I used the default 1080i project settings.

You should be able, once you get it working with uncompressed files, to use Cineform or some other codec to render from VirtualDub back into Vegas. However, for troubleshooting purposes, start with the defaults.

Finally, if you still have Vegas 7 installed somewhere, try that and see if everything works there. One reason I shipped Deshaker and VirtualDub with the script is that every program keeps changing its interface to the outside world, and the only way this kludge will work is if the variables are reduced or eliminated. Sony completely changed scripting (again) in Vegas 8, breaking a lot of scripts, so if this works at all in Vegas 8, I'd be amazed.
JJKizak wrote on 2/8/2008, 12:22 PM
johnmeyer:
First off it is not a kluge.
I am using V8.0b, 8gig ram, Q6600, Vista 64 bit with all updates.
Virtualdub 1.6.18, Deshaker 2.2, with log set to drive "M" and temp file to drive "D".
1. First project Captured with vidcap 6, 4 x 3 NTSC no problems except for a lot of vertical side border movement. (720 x 480)
2...Second project HDV captured with older Cineform then set in properties to DV Widescreen, (720 x 480)
no problems
3...Third project HDV captured with latest Cineform set to HDV (1080 x 60i) in properties,no problems.
4....Fourth project captured with older cineform (and maybe V6) set to HDV (1080 x 60i) and the menu popped up "needs codec SFDB" then craps out. Sometimes will knock out video and have to reboot on project #4.
5....Also All Work with V-dub 1.77 except project 4.
Have not tried with the Cineform Neo 3.2.3 capture yet.
Looks fine to me except on older Vegas & Cineform projects.
JJK
johnmeyer wrote on 2/8/2008, 2:21 PM
First off it is not a kluge.

I wasn't speaking of YOUR stuff; I was speaking of the monster I created with a script and an outside program and another script and some very stupid coding, etc.

If you can post about 15-30 frames from the Cineform HDV project that is causing the problem, I will see if I can reproduce the problem on my computer. Since Cinceform is frame-by-frame compression, you can use either Vegas or VirtualDub (Direct Stream Copy mode) to create a short snippet and it should be identical to the original.
JJKizak wrote on 2/8/2008, 2:29 PM
johnmeyer:
I was referring to your script which I thought was a stroke of genius.
JJK
apit34356 wrote on 2/8/2008, 3:06 PM
Yes, I think John's mixing of apps with script was well done and thought out. And he was willing to share it free and support it without demanding a thousand IOUs --- which is great. This forum has had more than a few to contribute some great; scripts, tips, vegs, effects, business tips, hardware and OSs tips.
johnmeyer wrote on 2/8/2008, 4:10 PM
I was referring to your script which I thought was

I just love seeing stuff like that in big print.

Thank you for those kind words (and apit's as well). Sorry for the imodest approach (above) to thank you, but I couldn't resist.

I keep promising myself to finish what I started. There is a way to let you control the Deshaker parameters directly from within Vegas. I started out trying to emulate the Deshaker dialog, and actually did that, but realized that there is a much better way.

If you have nothing better to do, copy the script below and run it from within Vegas. Absolutely none of the controls are hooked up (except OK and Cancel), but I think you will be mildly amused and interested.

John


import System;
import System.Collections;
import System.Text;
import System.IO;
import System.Drawing;
import System.Windows.Forms;
import Sony.Vegas;


try {


var dialog = new MainDialog();
var dialogResult = dialog.ShowDialog();


} catch (e) {
MessageBox.Show(e);
}

class MainDialog extends Form {
var GroupBox1 : GroupBox;
var GroupBox2 : GroupBox;
var GroupBox3 : GroupBox;
var GroupBox4 : GroupBox;
var GroupBox5 : GroupBox;
var GroupBox6 : GroupBox;
var GroupBox7 : GroupBox;
var GroupBox8 : GroupBox;
var Label1 : Label;
var SourcePixelAspect : ComboBox;
var Label2 : Label;
var VideoType : ListBox;
var RollingShutter : CheckBox;
var Label3 : Label;
var LogFile : TextBox;
var AppendFile : CheckBox;
var Label4 : Label;
var VideoOutput : ListBox;
var Label5 : Label;
var Label6 : Label;
var Label7 : Label;
var Label8 : Label;
var Label9 : Label;
var Label10 : Label;
var BockSize : TextBox;
var Label11 : Label;
var ImageMatchScale : ListBox;
var UsePixels : ListBox;
var ColorMode : ListBox;
var InitialSearchRange : TextBox;
var DifferentialSearch : TextBox;
var Label12 : Label;
var MatchLess : TextBox;
var SecondBestMatch : TextBox;
var Label14 : Label;
var Label15 : Label;
var MoveGreaterThan : TextBox;
var Label16 : Label;
var Label13 : Label;
var Label17 : Label;
var Label18 : Label;
var DeepAnalysis : TextBox;
var Label19 : Label;
var Label20 : Label;
var SkipFrame : TextBox;
var Label21 : Label;
var Outside : CheckBox;
var Label22 : Label;
var Label23 : Label;
var Label24 : Label;
var Label25 : Label;
var OutBottom : TextBox;
var OutTop : TextBox;
var OutRight : TextBox;
var OutLeft : TextBox;
var InLeft : TextBox;
var InRight : TextBox;
var InTop : TextBox;
var InBottom : TextBox;
var Inside : CheckBox;
var DarkerThan : CheckBox;
var BrightnessPercent : TextBox;
var Label26 : Label;
var Label27 : Label;
var Label28 : Label;
var InterlacedProgressive : CheckBox;
var Resampling : ListBox;
var Label29 : Label;
var EdgeCompensation : ListBox;
var Label30 : Label;
var PreviousFutureFrames : CheckBox;
var PreviousFrames : TextBox;
var Label31 : Label;
var FutureFrames : TextBox;
var Label32 : Label;
var SoftBorders : CheckBox;
var EdgeTransition : TextBox;
var Label33 : Label;
var ExtrapolateColor : CheckBox;
var Label34 : Label;
var ExtraZoom : TextBox;
var HorizontalPan : TextBox;
var Label35 : Label;
var VerticalPan : TextBox;
var Label36 : Label;
var Rotation : TextBox;
var Label37 : Label;
var Zoom : TextBox;
var Label38 : Label;
var ZoomLimit : TextBox;
var Label39 : Label;
var RotationLimit : TextBox;
var Label40 : Label;
var VerticalLimit : TextBox;
var Label41 : Label;
var HorizontalLimit : TextBox;
var Label42 : Label;
// var ContextMenu1 : ContextMenu;
var AreaFollowMotion : CheckBox;
var OKButton : Button;
var CancelBut : Button;
function MainDialog() {
GroupBox1 = new GroupBox();
GroupBox2 = new GroupBox();
GroupBox3 = new GroupBox();
GroupBox4 = new GroupBox();
GroupBox5 = new GroupBox();
GroupBox6 = new GroupBox();
GroupBox7 = new GroupBox();
GroupBox8 = new GroupBox();
Label1 = new Label();
SourcePixelAspect = new ComboBox();
Label2 = new Label();
VideoType = new ListBox();
RollingShutter = new CheckBox();
Label3 = new Label();
LogFile = new TextBox();
AppendFile = new CheckBox();
Label4 = new Label();
VideoOutput = new ListBox();
Label5 = new Label();
Label6 = new Label();
Label7 = new Label();
Label8 = new Label();
Label9 = new Label();
Label10 = new Label();
BockSize = new TextBox();
Label11 = new Label();
ImageMatchScale = new ListBox();
UsePixels = new ListBox();
ColorMode = new ListBox();
InitialSearchRange = new TextBox();
DifferentialSearch = new TextBox();
Label12 = new Label();
MatchLess = new TextBox();
SecondBestMatch = new TextBox();
Label14 = new Label();
Label15 = new Label();
MoveGreaterThan = new TextBox();
Label16 = new Label();
Label13 = new Label();
Label17 = new Label();
Label18 = new Label();
DeepAnalysis = new TextBox();
Label19 = new Label();
Label20 = new Label();
SkipFrame = new TextBox();
Label21 = new Label();
Outside = new CheckBox();
Label22 = new Label();
Label23 = new Label();
Label24 = new Label();
Label25 = new Label();
OutBottom = new TextBox();
OutTop = new TextBox();
OutRight = new TextBox();
OutLeft = new TextBox();
InLeft = new TextBox();
InRight = new TextBox();
InTop = new TextBox();
InBottom = new TextBox();
Inside = new CheckBox();
DarkerThan = new CheckBox();
BrightnessPercent = new TextBox();
Label26 = new Label();
Label27 = new Label();
Label28 = new Label();
InterlacedProgressive = new CheckBox();
Resampling = new ListBox();
Label29 = new Label();
EdgeCompensation = new ListBox();
Label30 = new Label();
PreviousFutureFrames = new CheckBox();
PreviousFrames = new TextBox();
Label31 = new Label();
FutureFrames = new TextBox();
Label32 = new Label();
SoftBorders = new CheckBox();
EdgeTransition = new TextBox();
Label33 = new Label();
ExtrapolateColor = new CheckBox();
Label34 = new Label();
ExtraZoom = new TextBox();
HorizontalPan = new TextBox();
Label35 = new Label();
VerticalPan = new TextBox();
Label36 = new Label();
Rotation = new TextBox();
Label37 = new Label();
Zoom = new TextBox();
Label38 = new Label();
ZoomLimit = new TextBox();
Label39 = new Label();
RotationLimit = new TextBox();
Label40 = new Label();
VerticalLimit = new TextBox();
Label41 = new Label();
HorizontalLimit = new TextBox();
Label42 = new Label();
// ContextMenu1 = new ContextMenu();
AreaFollowMotion = new CheckBox();
OKButton = new Button();
CancelBut = new Button();
GroupBox1.SuspendLayout();
GroupBox2.SuspendLayout();
GroupBox3.SuspendLayout();
GroupBox4.SuspendLayout();
GroupBox5.SuspendLayout();
GroupBox6.SuspendLayout();
GroupBox7.SuspendLayout();
GroupBox8.SuspendLayout();
SuspendLayout();
//
//GroupBox1;
//
// GroupBox1.Controls.AddRange(new Control() {AppendFile, LogFile, Label3, RollingShutter, VideoType, Label2, SourcePixelAspect, Label1});

GroupBox1.Location = new System.Drawing.Point(24, 8);
GroupBox1.Name = "GroupBox1";
GroupBox1.Size = new System.Drawing.Size(368, 208);
GroupBox1.TabIndex = 0;
GroupBox1.TabStop = false;
GroupBox1.Text = "Properties affecting both passes";
Controls.Add(GroupBox1);
//
//GroupBox2;
//
// GroupBox2.Controls.AddRange(new Control() {VideoOutput, Label4, GroupBox4});
GroupBox2.Location = new System.Drawing.Point(424, 8);
GroupBox2.Name = "GroupBox2";
GroupBox2.Size = new System.Drawing.Size(376, 672);
GroupBox2.TabIndex = 1;
GroupBox2.TabStop = false;
GroupBox2.Text = "Pass 1 parameters";
Controls.Add(GroupBox2);
//
//GroupBox3;
//
// GroupBox3.Controls.AddRange(new Control() {ExtraZoom, Label34, ExtrapolateColor, EdgeTransition, Label33, SoftBorders, FutureFrames, Label32, PreviousFrames, Label31, PreviousFutureFrames, EdgeCompensation, Label30, Resampling, Label29, InterlacedProgressive, Label28, GroupBox5, GroupBox6});
GroupBox3.Location = new System.Drawing.Point(840, 8);
GroupBox3.Name = "GroupBox3";
GroupBox3.Size = new System.Drawing.Size(376, 624);
GroupBox3.TabIndex = 2;
GroupBox3.TabStop = false;
GroupBox3.Text = "Pass 2 parameters";
Controls.Add(GroupBox3);
//
//GroupBox4;
//
// GroupBox4.Controls.AddRange(new Control() {Label27, Label20, SkipFrame, Label21, Label18, DeepAnalysis, Label19, Label13, DifferentialSearch, InitialSearchRange, ColorMode, UsePixels, ImageMatchScale, Label11, BockSize, Label9, Label8, Label7, Label6, Label5, GroupBox7, GroupBox8, Label10});
GroupBox4.Location = new System.Drawing.Point(16, 56);
GroupBox4.Name = "GroupBox4";
GroupBox4.Size = new System.Drawing.Size(344, 600);
GroupBox4.TabIndex = 0;
GroupBox4.TabStop = false;
GroupBox4.Text = "Image matching parameters";
GroupBox2.Controls.Add(GroupBox4);
//
//GroupBox5;
//
// GroupBox5.Controls.AddRange(new Control() {ZoomLimit, Label39, RotationLimit, Label40, VerticalLimit, Label41, HorizontalLimit, Label42});
GroupBox5.Location = new System.Drawing.Point(8, 488);
GroupBox5.Name = "GroupBox5";
GroupBox5.Size = new System.Drawing.Size(360, 120);
GroupBox5.TabIndex = 0;
GroupBox5.TabStop = false;
GroupBox5.Text = "Max. correction limits (in percent and degrees)";
GroupBox3.Controls.Add(GroupBox5);
//
//GroupBox6;
//
// GroupBox6.Controls.AddRange(new Control() {Zoom, Label38, Rotation, Label37, VerticalPan, Label36, HorizontalPan, Label35});
GroupBox6.Location = new System.Drawing.Point(8, 360);
GroupBox6.Name = "GroupBox6";
GroupBox6.Size = new System.Drawing.Size(360, 96);
GroupBox6.TabIndex = 1;
GroupBox6.TabStop = false;
GroupBox6.Text = "Motion smoothness";
GroupBox3.Controls.Add(GroupBox6);
//
//GroupBox7;
//
// GroupBox7.Controls.AddRange(new Control() {Label17, Label15, MoveGreaterThan, Label16, SecondBestMatch, Label14, MatchLess, Label12});
GroupBox7.Location = new System.Drawing.Point(16, 224);
GroupBox7.Name = "GroupBox7";
GroupBox7.Size = new System.Drawing.Size(320, 128);
GroupBox7.TabIndex = 0;
GroupBox7.TabStop = false;
GroupBox7.Text = "Discard motion blocks that ...";
GroupBox4.Controls.Add(GroupBox7);
//
//GroupBox8;
//
// GroupBox8.Controls.AddRange(new Control() {AreaFollowMotion, Label26, BrightnessPercent, DarkerThan, InLeft, InRight, InTop, InBottom, Inside, OutLeft, OutRight, OutTop, OutBottom, Label25, Label24, Label23, Label22, Outside});
GroupBox8.Location = new System.Drawing.Point(16, 416);
GroupBox8.Name = "GroupBox8";
GroupBox8.Size = new System.Drawing.Size(320, 168);
GroupBox8.TabIndex = 1;
GroupBox8.TabStop = false;
GroupBox8.Text = "Ignore pixels";
GroupBox4.Controls.Add(GroupBox8);
//
//Label1;
//
Label1.Location = new System.Drawing.Point(16, 32);
Label1.Name = "Label1";
Label1.Size = new System.Drawing.Size(136, 16);
Label1.TabIndex = 0;
Label1.Text = "Source pixel aspect:";
GroupBox1.Controls.Add(Label1);
//
//SourcePixelAspect;
//
SourcePixelAspect.Location = new System.Drawing.Point(176, 28);
SourcePixelAspect.Name = "SourcePixelAspect";
SourcePixelAspect.Size = new System.Drawing.Size(168, 24);
SourcePixelAspect.TabIndex = 1;
SourcePixelAspect.Items.Add("Square Pixels");
SourcePixelAspect.Items.Add("Standard PAL (1.094)");
SourcePixelAspect.Items.Add("Standard NTSC (0.912)");
SourcePixelAspect.Items.Add("Anamporphic PAL (1.459");
SourcePixelAspect.Items.Add("Anamorphic NTSC (1.215");
SourcePixelAspect.Items.Add("SVCD PAL (1.641)");
SourcePixelAspect.Items.Add("SVCD NTSC (1.367)");
SourcePixelAspect.Items.Add("HDV 1440x1080 (1.333)");

GroupBox1.Controls.Add(SourcePixelAspect);
//
//Label2;
//
Label2.Location = new System.Drawing.Point(16, 66);
Label2.Name = "Label2";
Label2.Size = new System.Drawing.Size(136, 16);
Label2.TabIndex = 2;
Label2.Text = "Video type:";
GroupBox1.Controls.Add(Label2);
//
//VideoType;
//
VideoType.ItemHeight = 16;
VideoType.Location = new System.Drawing.Point(176, 64);
VideoType.Name = "VideoType";
VideoType.Size = new System.Drawing.Size(168, 20);
VideoType.TabIndex = 3;
// VideoType.DropDownWidth = 100;

VideoType.Items.Add("Progressive scan");
VideoType.Items.Add("Interlaced, upper field first");
VideoType.Items.Add("Interlaced, lower field first");


GroupBox1.Controls.Add(VideoType);
//
//RollingShutter;
//
RollingShutter.Location = new System.Drawing.Point(16, 100);
RollingShutter.Name = "RollingShutter";
RollingShutter.Size = new System.Drawing.Size(288, 16);
RollingShutter.TabIndex = 4;
RollingShutter.Text = "Camcorder has rolling shutter";
GroupBox1.Controls.Add(RollingShutter);
//
//Label3;
//
Label3.Location = new System.Drawing.Point(16, 134);
Label3.Name = "Label3";
Label3.Size = new System.Drawing.Size(72, 16);
Label3.TabIndex = 5;
Label3.Text = "Log file:";
GroupBox1.Controls.Add(Label3);
//
//LogFile;
//
LogFile.Location = new System.Drawing.Point(104, 131);
LogFile.Name = "LogFile";
LogFile.Size = new System.Drawing.Size(208, 22);
LogFile.TabIndex = 6;
LogFile.Text = "C:\Deshaker.log";
GroupBox1.Controls.Add(LogFile);
//
//AppendFile;
//
AppendFile.Location = new System.Drawing.Point(16, 168);
AppendFile.Name = "AppendFile";
AppendFile.Size = new System.Drawing.Size(288, 16);
AppendFile.TabIndex = 7;
AppendFile.Text = "Append to file";
GroupBox1.Controls.Add(AppendFile);
//
//Label4;
//
Label4.Location = new System.Drawing.Point(24, 24);
Label4.Name = "Label4";
Label4.Size = new System.Drawing.Size(96, 16);
Label4.TabIndex = 1;
Label4.Text = "Video output:";
GroupBox2.Controls.Add(Label4);
//
//VideoOutput;
//
VideoOutput.ItemHeight = 16;
VideoOutput.Location = new System.Drawing.Point(128, 24);
VideoOutput.Name = "VideoOutput";
VideoOutput.Size = new System.Drawing.Size(176, 20);
VideoOutput.TabIndex = 2;
VideoOutput.Items.Add("None (slightly faster)");
VideoOutput.Items.Add("Motion vectors");


GroupBox2.Controls.Add(VideoOutput);
//
//Label5;
//
Label5.Location = new System.Drawing.Point(16, 32);
Label5.Name = "Label5";
Label5.Size = new System.Drawing.Size(78, 16);
Label5.TabIndex = 2;
Label5.Text = "Block size:";
GroupBox4.Controls.Add(Label5);
//
//Label6;
//
Label6.Location = new System.Drawing.Point(16, 64);
Label6.Name = "Label6";
Label6.Size = new System.Drawing.Size(78, 16);
Label6.TabIndex = 3;
Label6.Text = "Scale:";
GroupBox4.Controls.Add(Label6);
//
//Label7;
//
Label7.Location = new System.Drawing.Point(16, 96);
Label7.Name = "Label7";
Label7.Size = new System.Drawing.Size(78, 16);
Label7.TabIndex = 4;
Label7.Text = "Use pixels:";
GroupBox4.Controls.Add(Label7);
//
//Label8;
//
Label8.Location = new System.Drawing.Point(16, 128);
Label8.Name = "Label8";
Label8.Size = new System.Drawing.Size(78, 16);
Label8.TabIndex = 5;
Label8.Text = "Color mode:";
GroupBox4.Controls.Add(Label8);
//
//Label9;
//
Label9.Location = new System.Drawing.Point(16, 160);
Label9.Name = "Label9";
Label9.Size = new System.Drawing.Size(128, 16);
Label9.TabIndex = 6;
Label9.Text = "Initial search range:";
GroupBox4.Controls.Add(Label9);
//
//Label10;
//
Label10.Location = new System.Drawing.Point(16, 192);
Label10.Name = "Label10";
Label10.Size = new System.Drawing.Size(160, 16);
Label10.TabIndex = 6;
Label10.Text = "Differential search range:";
GroupBox4.Controls.Add(Label10);
//
//BockSize;
//
BockSize.Location = new System.Drawing.Point(96, 29);
BockSize.Name = "BockSize";
BockSize.Size = new System.Drawing.Size(40, 22);
BockSize.TabIndex = 7;
BockSize.Text = "30";
GroupBox4.Controls.Add(BockSize);
//
//Label11;
//
Label11.Location = new System.Drawing.Point(144, 32);
Label11.Name = "Label11";
Label11.Size = new System.Drawing.Size(64, 16);
Label11.TabIndex = 8;
Label11.Text = "pixels";
GroupBox4.Controls.Add(Label11);
//
//ImageMatchScale;
//
ImageMatchScale.ItemHeight = 16;
ImageMatchScale.Location = new System.Drawing.Point(104, 62);
ImageMatchScale.Name = "Scale";
ImageMatchScale.Size = new System.Drawing.Size(160, 20);
ImageMatchScale.TabIndex = 9;
ImageMatchScale.Items.Add("Full (most precise)");
ImageMatchScale.Items.Add("Half");
ImageMatchScale.Items.Add("Quarter (fastest)");

GroupBox4.Controls.Add(ImageMatchScale);
//
//UsePixels;
//
UsePixels.ItemHeight = 16;
UsePixels.Location = new System.Drawing.Point(104, 94);
UsePixels.Name = "UsePixels";
UsePixels.Size = new System.Drawing.Size(160, 20);
UsePixels.TabIndex = 10;
UsePixels.Items.Add("All (most robust)");
UsePixels.Items.Add("Every 4th");
UsePixels.Items.Add("Every 9th");
UsePixels.Items.Add("Every 16th (fastest");
GroupBox4.Controls.Add(UsePixels);
//
//ColorMode;
//
ColorMode.ItemHeight = 16;
ColorMode.Location = new System.Drawing.Point(104, 126);
ColorMode.Name = "ColorMode";
ColorMode.Size = new System.Drawing.Size(160, 20);
ColorMode.TabIndex = 11;
ColorMode.Items.Add("RGB (most robust)");
ColorMode.Items.Add("Grayscale (fastest)");
GroupBox4.Controls.Add(ColorMode);
//
//InitialSearchRange;
//
InitialSearchRange.Location = new System.Drawing.Point(184, 157);
InitialSearchRange.Name = "InitialSearchRange";
InitialSearchRange.Size = new System.Drawing.Size(40, 22);
InitialSearchRange.TabIndex = 12;
InitialSearchRange.Text = "40";
GroupBox4.Controls.Add(InitialSearchRange);
//
//DifferentialSearch;
//
DifferentialSearch.Location = new System.Drawing.Point(184, 189);
DifferentialSearch.Name = "DifferentialSearch";
DifferentialSearch.Size = new System.Drawing.Size(40, 22);
DifferentialSearch.TabIndex = 13;
DifferentialSearch.Text = "4";
GroupBox4.Controls.Add(DifferentialSearch);
//
//Label12;
//
Label12.Location = new System.Drawing.Point(8, 24);
Label12.Name = "Label12";
Label12.Size = new System.Drawing.Size(152, 16);
Label12.TabIndex = 7;
Label12.Text = "...have match value <";
GroupBox7.Controls.Add(Label12);
//
//MatchLess;
//
MatchLess.Location = new System.Drawing.Point(160, 21);
MatchLess.Name = "MatchLess";
MatchLess.Size = new System.Drawing.Size(48, 22);
MatchLess.TabIndex = 8;
MatchLess.Text = "300";
GroupBox7.Controls.Add(MatchLess);
//
//SecondBestMatch;
//
SecondBestMatch.Location = new System.Drawing.Point(208, 53);
SecondBestMatch.Name = "SecondBestMatch";
SecondBestMatch.Size = new System.Drawing.Size(32, 22);
SecondBestMatch.TabIndex = 11;
SecondBestMatch.Text = "4";
GroupBox7.Controls.Add(SecondBestMatch);
//
//Label14;
//
Label14.Location = new System.Drawing.Point(8, 56);
Label14.Name = "Label14";
Label14.Size = new System.Drawing.Size(192, 16);
Label14.TabIndex = 10;
Label14.Text = "...have 2nd best match > best-";
GroupBox7.Controls.Add(Label14);
//
//Label15;
//
Label15.Location = new System.Drawing.Point(120, 88);
Label15.Name = "Label15";
Label15.Size = new System.Drawing.Size(184, 16);
Label15.TabIndex = 14;
Label15.Text = "pixels in 'wrong' direction";
GroupBox7.Controls.Add(Label15);
//
//MoveGreaterThan;
//
MoveGreaterThan.Location = new System.Drawing.Point(80, 85);
MoveGreaterThan.Name = "MoveGreaterThan";
MoveGreaterThan.Size = new System.Drawing.Size(32, 22);
MoveGreaterThan.TabIndex = 13;
MoveGreaterThan.Text = "4";
GroupBox7.Controls.Add(MoveGreaterThan);
//
//Label16;
//
Label16.Location = new System.Drawing.Point(8, 88);
Label16.Name = "Label16";
Label16.Size = new System.Drawing.Size(64, 16);
Label16.TabIndex = 12;
Label16.Text = "...move >";
GroupBox7.Controls.Add(Label16);
//
//Label13;
//
Label13.Location = new System.Drawing.Point(232, 192);
Label13.Name = "Label13";
Label13.Size = new System.Drawing.Size(52, 16);
Label13.TabIndex = 14;
Label13.Text = "pixels";
GroupBox4.Controls.Add(Label13);
//
//Label17;
//
Label17.Location = new System.Drawing.Point(208, 24);
Label17.Name = "Label17";
Label17.Size = new System.Drawing.Size(96, 16);
Label17.TabIndex = 15;
Label17.Text = "(-1000 to 1000)";
GroupBox7.Controls.Add(Label17);
//
//Label18;
//
Label18.Location = new System.Drawing.Point(192, 360);
Label18.Name = "Label18";
Label18.Size = new System.Drawing.Size(128, 16);
Label18.TabIndex = 17;
Label18.Text = "% of vectors are OK";
GroupBox4.Controls.Add(Label18);
//
//DeepAnalysis;
//
DeepAnalysis.Location = new System.Drawing.Point(144, 357);
DeepAnalysis.Name = "DeepAnalysis";
DeepAnalysis.Size = new System.Drawing.Size(40, 22);
DeepAnalysis.TabIndex = 16;
DeepAnalysis.Text = "0";
GroupBox4.Controls.Add(DeepAnalysis);
//
//Label19;
//
Label19.Location = new System.Drawing.Point(16, 360);
Label19.Name = "Label19";
Label19.Size = new System.Drawing.Size(120, 16);
Label19.TabIndex = 15;
Label19.Text = "Deep analysis if <:";
GroupBox4.Controls.Add(Label19);
//
//Label20;
//
Label20.Location = new System.Drawing.Point(160, 392);
Label20.Name = "Label20";
Label20.Size = new System.Drawing.Size(128, 16);
Label20.TabIndex = 20;
Label20.Text = "% of blocks are OK";
GroupBox4.Controls.Add(Label20);
//
//SkipFrame;
//
SkipFrame.Location = new System.Drawing.Point(112, 389);
SkipFrame.Name = "SkipFrame";
SkipFrame.Size = new System.Drawing.Size(40, 22);
SkipFrame.TabIndex = 19;
SkipFrame.Text = "5";
GroupBox4.Controls.Add(SkipFrame);
//
//Label21;
//
Label21.Location = new System.Drawing.Point(16, 392);
Label21.Name = "Label21";
Label21.Size = new System.Drawing.Size(96, 16);
Label21.TabIndex = 18;
Label21.Text = "Skip frame if <";
GroupBox4.Controls.Add(Label21);
//
//Outside;
//
Outside.Location = new System.Drawing.Point(8, 39);
Outside.Name = "Outside";
Outside.Size = new System.Drawing.Size(72, 24);
Outside.TabIndex = 0;
Outside.Text = "Outside";
GroupBox8.Controls.Add(Outside);
//
//Label22;
//
Label22.Location = new System.Drawing.Point(100, 16);
Label22.Name = "Label22";
Label22.Size = new System.Drawing.Size(40, 14);
Label22.TabIndex = 1;
Label22.Text = "Left";
GroupBox8.Controls.Add(Label22);
//
//Label23;
//
Label23.Location = new System.Drawing.Point(148, 16);
Label23.Name = "Label23";
Label23.Size = new System.Drawing.Size(40, 16);
Label23.TabIndex = 2;
Label23.Text = "Right";
GroupBox8.Controls.Add(Label23);
//
//Label24;
//
Label24.Location = new System.Drawing.Point(196, 16);
Label24.Name = "Label24";
Label24.Size = new System.Drawing.Size(40, 16);
Label24.TabIndex = 3;
Label24.Text = "Top";
GroupBox8.Controls.Add(Label24);
//
//Label25;
//
Label25.Location = new System.Drawing.Point(240, 16);
Label25.Name = "Label25";
Label25.Size = new System.Drawing.Size(48, 16);
Label25.TabIndex = 4;
Label25.Text = "Bottom";
GroupBox8.Controls.Add(Label25);
//
//OutBottom;
//
OutBottom.Location = new System.Drawing.Point(240, 40);
OutBottom.Name = "OutBottom";
OutBottom.Size = new System.Drawing.Size(48, 22);
OutBottom.TabIndex = 5;
OutBottom.Text = "";
GroupBox8.Controls.Add(OutBottom);
//
//OutTop;
//
OutTop.Location = new System.Drawing.Point(192, 40);
OutTop.Name = "OutTop";
OutTop.Size = new System.Drawing.Size(48, 22);
OutTop.TabIndex = 6;
OutTop.Text = "";
GroupBox8.Controls.Add(OutTop);
//
//OutRight;
//
OutRight.Location = new System.Drawing.Point(144, 40);
OutRight.Name = "OutRight";
OutRight.Size = new System.Drawing.Size(48, 22);
OutRight.TabIndex = 7;
OutRight.Text = "";
GroupBox8.Controls.Add(OutRight);
//
//OutLeft;
//
OutLeft.Location = new System.Drawing.Point(96, 40);
OutLeft.Name = "OutLeft";
OutLeft.Size = new System.Drawing.Size(48, 22);
OutLeft.TabIndex = 8;
OutLeft.Text = "";
GroupBox8.Controls.Add(OutLeft);
//
//InLeft;
//
InLeft.Location = new System.Drawing.Point(96, 96);
InLeft.Name = "InLeft";
InLeft.Size = new System.Drawing.Size(48, 22);
InLeft.TabIndex = 13;
InLeft.Text = "";
GroupBox8.Controls.Add(InLeft);
//
//InRight;
//
InRight.Location = new System.Drawing.Point(144, 96);
InRight.Name = "InRight";
InRight.Size = new System.Drawing.Size(48, 22);
InRight.TabIndex = 12;
InRight.Text = "";
GroupBox8.Controls.Add(InRight);
//
//InTop;
//
InTop.Location = new System.Drawing.Point(192, 96);
InTop.Name = "InTop";
InTop.Size = new System.Drawing.Size(48, 22);
InTop.TabIndex = 11;
InTop.Text = "";
GroupBox8.Controls.Add(InTop);
//
//InBottom;
//
InBottom.Location = new System.Drawing.Point(240, 96);
InBottom.Name = "InBottom";
InBottom.Size = new System.Drawing.Size(48, 22);
InBottom.TabIndex = 10;
InBottom.Text = "";
GroupBox8.Controls.Add(InBottom);
//
//Inside;
//
Inside.Location = new System.Drawing.Point(8, 96);
Inside.Name = "Inside";
Inside.Size = new System.Drawing.Size(72, 24);
Inside.TabIndex = 9;
Inside.Text = "Inside";
GroupBox8.Controls.Add(Inside);
//
//DarkerThan;
//
DarkerThan.Location = new System.Drawing.Point(8, 136);
DarkerThan.Name = "DarkerThan";
DarkerThan.Size = new System.Drawing.Size(96, 16);
DarkerThan.TabIndex = 14;
DarkerThan.Text = "Darker than:";
GroupBox8.Controls.Add(DarkerThan);
//
//BrightnessPercent;
//
BrightnessPercent.Location = new System.Drawing.Point(120, 136);
BrightnessPercent.Name = "BrightnessPercent";
BrightnessPercent.Size = new System.Drawing.Size(40, 22);
BrightnessPercent.TabIndex = 20;
BrightnessPercent.Text = "15";
GroupBox8.Controls.Add(BrightnessPercent);
//
//Label26;
//
Label26.Location = new System.Drawing.Point(184, 136);
Label26.Name = "Label26";
Label26.Size = new System.Drawing.Size(112, 16);
Label26.TabIndex = 21;
Label26.Text = "% brightness";
GroupBox8.Controls.Add(Label26);
//
//Label27;
//
Label27.Location = new System.Drawing.Point(232, 160);
Label27.Name = "Label27";
Label27.Size = new System.Drawing.Size(104, 16);
Label27.TabIndex = 21;
Label27.Text = "% of image size";
GroupBox4.Controls.Add(Label27);
//
//Label28;
//
Label28.Location = new System.Drawing.Point(8, 32);
Label28.Name = "Label28";
Label28.Size = new System.Drawing.Size(280, 16);
Label28.TabIndex = 3;
Label28.Text = "Destination aspect always same as source";
GroupBox3.Controls.Add(Label28);
//
//InterlacedProgressive;
//
InterlacedProgressive.Enabled = false;
InterlacedProgressive.Location = new System.Drawing.Point(8, 72);
InterlacedProgressive.Name = "InterlacedProgressive";
InterlacedProgressive.Size = new System.Drawing.Size(280, 16);
InterlacedProgressive.TabIndex = 4;
InterlacedProgressive.Text = "Generate interlace progressive source";
GroupBox3.Controls.Add(InterlacedProgressive);
//
//Resampling;
//
Resampling.ItemHeight = 16;
Resampling.Location = new System.Drawing.Point(136, 102);
Resampling.Name = "Resampling";
Resampling.Size = new System.Drawing.Size(160, 20);
Resampling.TabIndex = 11;
Resampling.Items.Add("Nearest neighbor (fastest)");
Resampling.Items.Add("Bilinear");
Resampling.Items.Add("Bicubic (best)");

GroupBox3.Controls.Add(Resampling);
//
//Label29;
//
Label29.Location = new System.Drawing.Point(8, 104);
Label29.Name = "Label29";
Label29.Size = new System.Drawing.Size(136, 16);
Label29.TabIndex = 10;
Label29.Text = "Resampling:";
GroupBox3.Controls.Add(Label29);
//
//EdgeCompensation;
//
EdgeCompensation.ItemHeight = 16;
EdgeCompensation.Location = new System.Drawing.Point(136, 136);
EdgeCompensation.Name = "EdgeCompensation";
EdgeCompensation.Size = new System.Drawing.Size(160, 20);
EdgeCompensation.TabIndex = 13;
EdgeCompensation.Items.Add("None (large borders)");
EdgeCompensation.Items.Add("Adaptive zoom (some borders)");
EdgeCompensation.Items.Add("Adaptive zoom only");
EdgeCompensation.Items.Add("Fixed zoom (no borders)");
GroupBox3.Controls.Add(EdgeCompensation);
//
//Label30;
//
Label30.Location = new System.Drawing.Point(8, 136);
Label30.Name = "Label30";
Label30.Size = new System.Drawing.Size(136, 16);
Label30.TabIndex = 12;
Label30.Text = "Edge compensation:";
GroupBox3.Controls.Add(Label30);
//
//PreviousFutureFrames;
//
PreviousFutureFrames.Location = new System.Drawing.Point(8, 176);
PreviousFutureFrames.Name = "PreviousFutureFrames";
PreviousFutureFrames.Size = new System.Drawing.Size(288, 16);
PreviousFutureFrames.TabIndex = 14;
PreviousFutureFrames.Text = "Use previous and future frames to fill borders";
GroupBox3.Controls.Add(PreviousFutureFrames);
//
//PreviousFrames;
//
PreviousFrames.Location = new System.Drawing.Point(144, 208);
PreviousFrames.Name = "PreviousFrames";
PreviousFrames.Size = new System.Drawing.Size(32, 22);
PreviousFrames.TabIndex = 16;
PreviousFrames.Text = "30";
GroupBox3.Controls.Add(PreviousFrames);
//
//Label31;
//
Label31.Location = new System.Drawing.Point(40, 208);
Label31.Name = "Label31";
Label31.Size = new System.Drawing.Size(112, 16);
Label31.TabIndex = 15;
Label31.Text = "Previous frames:";
GroupBox3.Controls.Add(Label31);
//
//FutureFrames;
//
FutureFrames.Location = new System.Drawing.Point(288, 208);
FutureFrames.Name = "FutureFrames";
FutureFrames.Size = new System.Drawing.Size(32, 22);
FutureFrames.TabIndex = 18;
FutureFrames.Text = "30";
GroupBox3.Controls.Add(FutureFrames);
//
//Label32;
//
Label32.Location = new System.Drawing.Point(184, 208);
Label32.Name = "Label32";
Label32.Size = new System.Drawing.Size(112, 16);
Label32.TabIndex = 17;
Label32.Text = "Future frames:";
GroupBox3.Controls.Add(Label32);
//
//SoftBorders;
//
SoftBorders.Location = new System.Drawing.Point(40, 240);
SoftBorders.Name = "SoftBorders";
SoftBorders.Size = new System.Drawing.Size(104, 16);
SoftBorders.TabIndex = 19;
SoftBorders.Text = "Soft borders";
GroupBox3.Controls.Add(SoftBorders);
//
//EdgeTransition;
//
EdgeTransition.Location = new System.Drawing.Point(288, 240);
EdgeTransition.Name = "EdgeTransition";
EdgeTransition.Size = new System.Drawing.Size(32, 22);
EdgeTransition.TabIndex = 21;
EdgeTransition.Text = "30";
GroupBox3.Controls.Add(EdgeTransition);
//
//Label33;
//
Label33.Location = new System.Drawing.Point(152, 240);
Label33.Name = "Label33";
Label33.Size = new System.Drawing.Size(136, 16);
Label33.TabIndex = 20;
Label33.Text = "Edge transition width:";
GroupBox3.Controls.Add(Label33);
//
//ExtrapolateColor;
//
ExtrapolateColor.Location = new System.Drawing.Point(8, 280);
ExtrapolateColor.Name = "ExtrapolateColor";
ExtrapolateColor.Size = new System.Drawing.Size(208, 16);
ExtrapolateColor.TabIndex = 22;
ExtrapolateColor.Text = "Extrapolate colors into border";
GroupBox3.Controls.Add(ExtrapolateColor);
//
//Label34;
//
Label34.Location = new System.Drawing.Point(8, 312);
Label34.Name = "Label34";
Label34.Size = new System.Drawing.Size(115, 16);
Label34.TabIndex = 23;
Label34.Text = "Extra zoom factor";
GroupBox3.Controls.Add(Label34);
//
//ExtraZoom;
//
ExtraZoom.Location = new System.Drawing.Point(128, 309);
ExtraZoom.Name = "ExtraZoom";
ExtraZoom.Size = new System.Drawing.Size(32, 22);
ExtraZoom.TabIndex = 24;
ExtraZoom.Text = "1";
GroupBox3.Controls.Add(ExtraZoom);
//
//HorizontalPan;
//
HorizontalPan.Location = new System.Drawing.Point(136, 29);
HorizontalPan.Name = "HorizontalPan";
HorizontalPan.Size = new System.Drawing.Size(40, 22);
HorizontalPan.TabIndex = 18;
HorizontalPan.Text = "400";
GroupBox6.Controls.Add(HorizontalPan);
//
//Label35;
//
Label35.Location = new System.Drawing.Point(8, 32);
Label35.Name = "Label35";
Label35.Size = new System.Drawing.Size(120, 16);
Label35.TabIndex = 17;
Label35.Text = "Horizontal panning:";
GroupBox6.Controls.Add(Label35);
//
//VerticalPan;
//
VerticalPan.Location = new System.Drawing.Point(136, 61);
VerticalPan.Name = "VerticalPan";
VerticalPan.Size = new System.Drawing.Size(40, 22);
VerticalPan.TabIndex = 20;
VerticalPan.Text = "400";
GroupBox6.Controls.Add(VerticalPan);
//
//Label36;
//
Label36.Location = new System.Drawing.Point(8, 64);
Label36.Name = "Label36";
Label36.Size = new System.Drawing.Size(120, 16);
Label36.TabIndex = 19;
Label36.Text = "Vertical panning:";
GroupBox6.Controls.Add(Label36);
//
//Rotation;
//
Rotation.Location = new System.Drawing.Point(288, 29);
Rotation.Name = "Rotation";
Rotation.Size = new System.Drawing.Size(40, 22);
Rotation.TabIndex = 22;
Rotation.Text = "400";
GroupBox6.Controls.Add(Rotation);
//
//Label37;
//
Label37.Location = new System.Drawing.Point(224, 32);
Label37.Name = "Label37";
Label37.Size = new System.Drawing.Size(64, 16);
Label37.TabIndex = 21;
Label37.Text = "Rotation:";
GroupBox6.Controls.Add(Label37);
//
//Zoom;
//
Zoom.Location = new System.Drawing.Point(288, 61);
Zoom.Name = "Zoom";
Zoom.Size = new System.Drawing.Size(40, 22);
Zoom.TabIndex = 24;
Zoom.Text = "1";
GroupBox6.Controls.Add(Zoom);
//
//Label38;
//
Label38.Location = new System.Drawing.Point(224, 64);
Label38.Name = "Label38";
Label38.Size = new System.Drawing.Size(40, 16);
Label38.TabIndex = 23;
Label38.Text = "Zoom:";
GroupBox6.Controls.Add(Label38);
//
//ZoomLimit;
//
ZoomLimit.Location = new System.Drawing.Point(300, 65);
ZoomLimit.Name = "ZoomLimit";
ZoomLimit.Size = new System.Drawing.Size(40, 22);
ZoomLimit.TabIndex = 32;
ZoomLimit.Text = "15";
GroupBox5.Controls.Add(ZoomLimit);
//
//Label39;
//
Label39.Location = new System.Drawing.Point(236, 68);
Label39.Name = "Label39";
Label39.Size = new System.Drawing.Size(40, 16);
Label39.TabIndex = 31;
Label39.Text = "Zoom:";
GroupBox5.Controls.Add(Label39);
//
//RotationLimit;
//
RotationLimit.Location = new System.Drawing.Point(300, 33);
RotationLimit.Name = "RotationLimit";
RotationLimit.Size = new System.Drawing.Size(40, 22);
RotationLimit.TabIndex = 30;
RotationLimit.Text = "5";
GroupBox5.Controls.Add(RotationLimit);
//
//Label40;
//
Label40.Location = new System.Drawing.Point(236, 36);
Label40.Name = "Label40";
Label40.Size = new System.Drawing.Size(64, 16);
Label40.TabIndex = 29;
Label40.Text = "Rotation:";
GroupBox5.Controls.Add(Label40);
//
//VerticalLimit;
//
VerticalLimit.Location = new System.Drawing.Point(148, 65);
VerticalLimit.Name = "VerticalLimit";
VerticalLimit.Size = new System.Drawing.Size(40, 22);
VerticalLimit.TabIndex = 28;
VerticalLimit.Text = "15";
GroupBox5.Controls.Add(VerticalLimit);
//
//Label41;
//
Label41.Location = new System.Drawing.Point(20, 68);
Label41.Name = "Label41";
Label41.Size = new System.Drawing.Size(120, 16);
Label41.TabIndex = 27;
Label41.Text = "Vertical panning:";
GroupBox5.Controls.Add(Label41);
//
//HorizontalLimit;
//
HorizontalLimit.Location = new System.Drawing.Point(148, 33);
HorizontalLimit.Name = "HorizontalLimit";
HorizontalLimit.Size = new System.Drawing.Size(40, 22);
HorizontalLimit.TabIndex = 26;
HorizontalLimit.Text = "15";
GroupBox5.Controls.Add(HorizontalLimit);
//
//Label42;
//
Label42.Location = new System.Drawing.Point(20, 36);
Label42.Name = "Label42";
Label42.Size = new System.Drawing.Size(120, 16);
Label42.TabIndex = 25;
Label42.Text = "Horizontal panning:";
GroupBox5.Controls.Add(Label42);
//
//AreaFollowMotion;
//
AreaFollowMotion.Enabled = false;
AreaFollowMotion.Location = new System.Drawing.Point(96, 64);
AreaFollowMotion.Name = "AreaFollowMotion";
AreaFollowMotion.Size = new System.Drawing.Size(168, 16);
AreaFollowMotion.TabIndex = 22;
AreaFollowMotion.Text = "Let area follow motion";
GroupBox8.Controls.Add(AreaFollowMotion);
//
//OKButton;
//
OKButton.Location = new System.Drawing.Point(1000, 648);
OKButton.Name = "OKButton";
OKButton.Size = new System.Drawing.Size(88, 32);
OKButton.TabIndex = 3;
OKButton.Text = "OK";
OKButton.DialogResult = System.Windows.Forms.DialogResult.OK;
Controls.Add(OKButton);
//
//CancelBut;
//
CancelBut.Location = new System.Drawing.Point(1104, 648);
CancelBut.Name = "CancelBut";
CancelBut.Size = new System.Drawing.Size(104, 32);
CancelBut.TabIndex = 4;
CancelBut.Text = "Cancel";
CancelBut.DialogResult = System.Windows.Forms.DialogResult.Cancel;
CancelButton = CancelBut;

Controls.Add(CancelBut);
//
//Form1;
//
AutoScaleBaseSize = new System.Drawing.Size(6, 15);
ClientSize = new System.Drawing.Size(1248, 689);
// Controls.AddRange(new Control() {CancelBut, OKButton, GroupBox3, GroupBox2, GroupBox1});
Name = "Form1";
Text = "Deshaker Dialog - Controlled from Vegas";
GroupBox1.ResumeLayout(1);
GroupBox2.ResumeLayout(1);
GroupBox3.ResumeLayout(1);
GroupBox4.ResumeLayout(1);
GroupBox5.ResumeLayout(1);
GroupBox6.ResumeLayout(1);
GroupBox7.ResumeLayout(1);
GroupBox8.ResumeLayout(1);
ResumeLayout(1);

}

}




MarkWWW wrote on 2/9/2008, 6:54 AM
Wow, I'm more than mildly interested here. If you can find the time to carry this through to completion it would be absolutely terrific

The Vegas Deshaker script already makes it so much easier to deshake footage than having to do it manually via VirtualDub/Deshaker that it enables you to use it in situations where you would otherwise balk at the effort involved. Its only real problem is the difficulty of making any adjustments to the Deshaker parameters by editing the script - if you could really make that controllable via a working version of your mockup it would make an already fabulous program completely perfect.

I've looked at various other deshaking applications and I still find that the results obtainable for free with Deshaker are better (or at least no worse) than anything I've seen fom even expensive programs. The only area the others score over Deshaker in is ease of use, as far as I can see. If you are able to make this control panel script work you will remove even this disadvantage.

Let me once again add my thanks to you for making the Deshaker script available. I've collected lots of Vegas scripts over the years and the dozen or so of yours I have are consistently among the best and most useful (and most often used) of those I've accumulated. And the Deshaker script is the most glorious of all of them in my opinion.

Mark
johnmeyer wrote on 2/9/2008, 8:47 AM
The Mercalli plugin can do the same or better quality and do it much faster. The one thing that keeps me from chucking all my work (other than $$$) is the lack of border options. I hate losing resolution by zooming, especially with SD.
JJKizak wrote on 2/9/2008, 11:38 AM
johnmeyer:
I recaptured the project that didn't work with Vista 64, advc 300, V8b, and Neo Cineform 3.2.3 from the Z1 then saved as a 1080 x60i veg then deshakered a chunk and everything worked fine. Media Player 11 is a real bust in Vista 64 so I rendered that section and played it back in Power DVD and it looked fine. So I know now to recapture older projects and everything is well. Don't have to spend $119.00 for Mercali. Deshaker has won the war and the battle.
PS: I will need a blow by blow on how to download that script up above.
JJK
johnmeyer wrote on 2/9/2008, 4:41 PM
PS: I will need a blow by blow on how to download that script up above.

1. Click on my post above.
2. Select all the text in the "code" section.
3. Select "Copy" from the Edit menu.
4. Open Notepad.
5. Paste the text you copied.
6. Save the result, and make sure to add the extension ".js"

When you are finished, you should have a file named something like

DeshakeDialog.js

Hope that helps.
dreamlx wrote on 2/10/2008, 2:17 AM
Hi,

I changed my original script. Now deshaker is called from avisynth allowing me better results on interlaced footage by first upconveting from 25i to 50p, then deshaking 50p and converting back to 25i (should also easily be adoptable to 30i). I will extract it soon from the project where I am actually using, so Johnmeyer you can implement the changes into your script if you want.

Well for people that are new:

I have written the original deshaking script (can be found on www.luxmemories.lu). This one is for our internal purposes. However it is much too difficult to use, as it is tailored to our way of processing. Johnmeyer adopted it an made the changes necessary for it to become much more user friendly. Once again, many thanks for your work.

Concering mercally, I already tried the demo version and I am personally prefering the results from deshaker.
MarkWWW wrote on 2/10/2008, 7:56 AM
> Concering mercally, I already tried the demo version and I am personally prefering the results from deshaker

I agree. Mercalli is nice to use but it is so bad at dealing with the borders that you end up having to zoom in so much that (a) you degrade the quality, and (b) you end up turning a long shot into a mid-shot, a mid-shot into a close-up, or whatever, which means you often can't use it in practice without compromising your intentions. Although Deshaker is harder to use it does let me end up with the result I want.

My thanks to you also for creating and making available the original script that John adapted and friendlified. Your generosity is much appreciated.

Mark
johnmeyer wrote on 2/10/2008, 8:51 AM
I have written the original deshaking script (can be found on www.luxmemories.lu).

While I have acknowledged many times in these forums that I did not write the original script, and while your original copyright is, of course, in "my" script, let me once again state here in this forum that the majority of the work -- and the beautiful invention of making the "deshaken" video appear as takes in Vegas -- are entirely your work and not mine.

Because of my background, I have a flair for PR, and therefore many people refer to this as "johnmeyer's" script. It is not my script. True, I figured out how to automate the process and pass parameters to Deshaker from Vegas, and made many other "usability" refinements, but 70-80% of the code in that script is not mine.

Just for the record ... and to make sure credit goes where it is due.

P.S. It will be very interesting to see what improvements can be had by doing motion estimation. I have had amazing results using those techniques, both with slow motion and, more recently, with automated cleaning of old film. Actually, for the first time a few weeks ago, I finally figured out an approach that gets rid of up to 90% of all dirt on filmm with almost no noticeable artifacts. Amazing stuff.
JJKizak wrote on 2/11/2008, 7:24 AM
Final setup: Vista 64 bit, V8.0b, Virtualdub 1.77, Deshake filter 2.2 and Deshaker script modified temp file to "D" and log file to "M". Using all of the script defaults on 1080 x 60i & Z1 material captured with Cineform Neo 3.2.3. I am just thrilled to death of the performance and results. No individual items in the project dancing around relative to the corrections. Nothing out of focus. The project was flowers and leaves.
JJK
jrazz wrote on 2/11/2008, 8:40 AM
John,

Thanks for making deshaker useable from inside Vegas. I have meant to send you an email to say thanks the last time I had to use deshaker and was able to use your automated script to bypass all of the virtual dub settings.

Deshaker is a great piece of software and I am planning on using it again this week to steady out some hi def footage. So, thanks to the original author and thanks to John for making it oh so much easier to use.

By the way John, any time estimate on that new interface? :)

j razz
johnmeyer wrote on 2/11/2008, 8:52 AM
By the way John, any time estimate on that new interface? :)

A long time. I don't have the energy I used to. Also, I really need to finish the software on my film to video project so I can file a patent. It has been decades since I used a real development tool (which I'll need to finish that project), so that will take me a long time. The actual coding is dirt easy, but if you've ever done programming, if no one is around to help, just learning the basic code to read and write a file can take a long time.