Log in

View Full Version : MeGUI development


Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 [72] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92

Kurtnoise
9th December 2007, 13:53
Hmmm... I just fixed the drag&drop bugs and then realised you had already done that. But I think your solution just hid (and avoided) the real problem, which is the incorrect line in SaveMode.set. As a result, I don't think we need FileBar_Load any more. So my patch below reverts your fix and fixes the line in SaveMode.set. :)
oh well...ok. That's fine. :) I had checked several things but not this one.

Here's some code to handle huge delays more friendlily for the user than an error (bug 1846758).
looks ok...I had too a similar patch but yours it's fine. Apply it anytime.

berrinam
9th December 2007, 14:03
Ok, I hope we're not treading on each other's toes with this one too. :)

This patch fixes bug 1842643 (path to avisynth cannot be set manually) (http://sourceforge.net/tracker/index.php?func=detail&aid=1842643&group_id=156112&atid=798476). In addition, the changes to the registry aren't set until "Save" is clicked on the Settings window. If "Cancel" is clicked, the changes aren't saved to the registry.

Index: core/details/MeGUISettings.cs
===================================================================
--- core/details/MeGUISettings.cs (revision 436)
+++ core/details/MeGUISettings.cs (working copy)
@@ -324,11 +324,7 @@
{
get
{
- Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\AviSynth");
- if(key==null)
- return null;
- else
- return (string)key.GetValue("plugindir2_5");
+ return Util.GetRegistryLocalMachineKey(@"SOFTWARE\AviSynth", "plugindir2_5");
}
set
{
@@ -336,8 +332,7 @@
throw new ArgumentException("Path must be absolute");
if(!System.IO.Directory.Exists(value))
throw new ArgumentException("Directory " + value + " does not exists");
- Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\AviSynth", true);
- key.SetValue("plugindir2_5", value);
+ Util.SetRegistryLocalMachineKey(@"SOFTWARE\AviSynth", "plugindir2_5", value);
}
}

Index: core/gui/SettingsForm.cs
===================================================================
--- core/gui/SettingsForm.cs (revision 436)
+++ core/gui/SettingsForm.cs (working copy)
@@ -157,7 +157,6 @@
defaultLanguage2.DataSource = defaultLanguage1.DataSource = keys;
defaultLanguage2.BindingContext = new BindingContext();
defaultLanguage1.BindingContext = new BindingContext();
- this.avisynthPluginsDir.Text = "" + MeGUISettings.AvisynthPluginsPath;
this.meguiUpdateCache.Text = "" + MeGUISettings.MeGUIUpdateCache;
}
/// <summary>
@@ -1740,7 +1739,6 @@
if (openFolderDialog.ShowDialog() == DialogResult.OK)
{
avisynthPluginsDir.Text = openFolderDialog.SelectedPath;
- MeGUISettings.AvisynthPluginsPath = avisynthPluginsDir.Text;
}
}

@@ -2008,6 +2006,8 @@
settings.FFMpegPath = textBox7.Text;
settings.AftenPath = tbAften.Text;
settings.AedSettings = this.autoEncodeDefaults;
+ MeGUISettings.AvisynthPluginsPath = avisynthPluginsDir.Text;
+
return settings;
}
set
@@ -2066,6 +2066,8 @@
textBox7.Text = settings.FFMpegPath;
tbAften.Text = settings.AftenPath;
this.autoEncodeDefaults = settings.AedSettings;
+ this.avisynthPluginsDir.Text = "" + MeGUISettings.AvisynthPluginsPath;
+
}
}
#endregion
Index: core/util/Util.cs
===================================================================
--- core/util/Util.cs (revision 436)
+++ core/util/Util.cs (working copy)
@@ -30,6 +30,23 @@

public class Util
{
+ public static string GetRegistryLocalMachineKey(string folder, string name)
+ {
+ Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(folder);
+ if (key == null)
+ return null;
+ else
+ return (string)key.GetValue(name);
+ }
+
+ public static void SetRegistryLocalMachineKey(string folder, string name, string value)
+ {
+ Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(folder, true);
+ if (key == null)
+ key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(folder);
+ key.SetValue(name, value);
+ }
+
public static void SetSize(Form f, Size s, FormWindowState state)
{
f.WindowState = state;

check
9th December 2007, 14:34
Thanks for the gop change.

Also, I think it, like mencoder and ffmpeg, was unable to handle multiple audio streams, and was perhaps somewhat limited in terms of ac3 support. avimux_gui simply has none of these problems, as far as I know.
Now I want to argue that you do the opposite of before -- in this case limit the user :). I'd much prefer if MeGUI didn't make it possible to make multi track AVIs. The reasons are mostly the same as why h264-in-avi is a bad idea:
1. They don't behave nicely in a windows environment. The only directshow splitter I know that handles dual audio AVI is haali's splitter, and that doesn't play all normal AVIs properly.
2. There is no technical reason to use dual audio AVI over mp4 or mkv. dual audio MKV is both smaller in filesize and has greater support (I know of no player that handles dual audio AVI anyway :p)

laserfan
9th December 2007, 15:28
MeGUI doesn't scan the whole file first. Depending on your avisynth script, avisynth might, although MeGUI won't generate any such scripts. Can you give me an example of a script which takes minutes to load?You're right about this--sorry, I should have mentioned it first but as I said this was my first attempt w/MeGUI so I didn't know any better. :o

DirectShowSource("movie.grf", fps=23.976, framecount=206236, audio=false)

This is an example of a HD DVD movie where the grf includes Haali Splitter and a VC-1 decoder. It works fine whether Preview is checked or not, but if checked it does crank away for the entire 200k frames and so appears "frozen" to an unsuspecting user.

mroz
9th December 2007, 15:45
So is the problem the splitter then? If it's incapable of random seeking, a request for the middle frame, which the preview initially displays, would then involve fetching all previous frames.

I didn't think Haali ever behaved like that, so presumably there's something odd about the video data? Never seen this myself, but then I don't have HD DVD sources.

laserfan
9th December 2007, 18:44
So is the problem the splitter then?You guys aren't understanding me--there is no problem (that I know of). The first time I tried MeGUI it seemed to be hung-up accessing my disk, so I aborted. Then I did some searching and found others had experienced the same problem. Then I tried again and left it alone, and eventually MeGUI opened, with the Preview window in the background. I added 2+2 and decided there must be a Preview on Open checkbox somewhere. Indeed there was.

I just suggested to default to "preview off" since while I was able to determine what was happening, I saw that others gave-up, think MeGUI was broken somehow.

Sharktooth
9th December 2007, 19:24
the problems exists for other programs too. it's avisynth getting busy coz complex scripts for HD stuff...
ppl never learn to not use 10000000 of filters with HD material...

mroz
9th December 2007, 19:47
the problems exists for other programs too. it's avisynth getting busy coz complex scripts for HD stuff...
ppl never learn to not use 10000000 of filters with HD material...

Um, this is your idea of a complex script:

DirectShowSource("movie.grf", fps=23.976, framecount=206236, audio=false)

?

That's the script laserfan quoted.

berrinam
9th December 2007, 21:59
You guys aren't understanding me--there is no problem (that I know of).But there is a problem. A script as simple as the one you posted should not normally take minutes to load: it should load in a few seconds. We were trying to find out why it took so long.

The first time I tried MeGUI it seemed to be hung-up accessing my disk, so I aborted. Then I did some searching and found others had experienced the same problem. Then I tried again and left it alone, and eventually MeGUI opened, with the Preview window in the background. I added 2+2 and decided there must be a Preview on Open checkbox somewhere. Indeed there was.

I just suggested to default to "preview off" since while I was able to determine what was happening, I saw that others gave-up, think MeGUI was broken somehow.
Thanks for bringing this to light. It is also possible to start the previewer from another thread, which will eliminate the hang (so MeGUI remains responsive while opening the avisynth script). This is definitely a good idea for the case of slow avisynth scripts, so I'll do that soon. Once this is done, I'm not sure whether it will be necessary to turn off the previewer by default.

Kurtnoise
9th December 2007, 22:02
This patch fixes bug 1842643 (path to avisynth cannot be set manually) (http://sourceforge.net/tracker/index.php?func=detail&aid=1842643&group_id=156112&atid=798476). In addition, the changes to the registry aren't set until "Save" is clicked on the Settings window. If "Cancel" is clicked, the changes aren't saved to the registry.

...
patch looks ok for me...

Maybe it's time now to create a patch to move avs plugins not in the Avisynth one as we said earlier..:)

berrinam
9th December 2007, 22:24
I've already got some of that in the works. My avisynth profile patch from quite a while ago did that automatically (using the "extra files" feature of the profile porter). I think that way worked quite well, and I will finish that patch after I have committed my profiles-refactor patch (since it makes handling profiles so much nicer).

laserfan
9th December 2007, 22:58
A script as simple as the one you posted should not normally take minutes to load: it should load in a few seconds...Glad my posts were useful then; usually I would let (little) stuff like this drop, but doom9 is an unusually disciplined board so I thought I would point it out. :)

berrinam
10th December 2007, 10:57
Ok, after some computer failures, I got back to work on my profiles refactor. Here's a new patch which I think is complete (except whatever bugs I've added :P). The main changes are ...

Get the patch here (http://megui.org/berrinam_patches/profiles_refactor/profiles_refactor_3.patch). I've added a new folder, so you'll have to create that yourself and perhaps also add the file manually. The folder is megui/core/details/0_2_6_x_profileloader/, and the file contained in it is Loader.cs. If you need to add the file manually, you can get it from here (http://megui.org/berrinam_patches/profiles_refactor/Loader.cs).

Shall I commit this now?

Kurtnoise
10th December 2007, 11:25
sure, go ahead.


We will see later if there are some bugs with it...:D

/me kidding

I haven't had bugs with it personally.

Sharktooth
10th December 2007, 13:57
maybe he was asking coz zones are missing

Kurtnoise
10th December 2007, 14:48
Sorry, for this off-topic but I missed to reply...

I'd much prefer if MeGUI didn't make it possible to make multi track AVIs. The reasons are mostly the same as why h264-in-avi is a bad idea
not at all...I don't see the point between multi audio tracks in AVI container and AVC stream.

1. They don't behave nicely in a windows environment.
since when ?

The only directshow splitter I know that handles dual audio AVI is haali's splitter, and that doesn't play all normal AVIs properly.
you forgot the one from Guliverkli project and Morgan Stream switcher.

2. There is no technical reason to use dual audio AVI over mp4 or mkv.
there is...the lack support of mp4 and mkv SAPs with multi audio tracks + the free choice to choose whatever we want.

I know of no player that handles dual audio AVI anyway :p)
Tested players comparison
You look for a player that has at least the following features:
CONT-1D AVI with MP3 multi-audio test (MPEG4 ASP + Multiple MP3 2.0 48KHz 96Kbps CBR)
CONT-1E AVI with AC3 multi-audio test (MPEG4 ASP + Multiple AC3 5.1 Eng)

358 results are matching your requirements
http://divxtest.surdvd.com/form/divxtest2_list.php?lang=eng

JarrettH
10th December 2007, 23:06
Does megui look for things like tivtc and colormatrix in the avisynth folder? just wondering because they have been updated and i usually replace them myself (in the avisynth folder)

berrinam
11th December 2007, 00:45
MeGUI has a very simple version handling system: it assumes the user does absolutely nothing to any of the files, so that the current version is the version that MeGUI last installed. There is no support for notifying MeGUI of the changes you have made.

If you don't want MeGUI to overwrite your files, then go to the update window, and set "Ignore updates" for all the files you changed.

SpAwN_gUy
11th December 2007, 16:22
@Berrinam: in post 3523 you might want to edit one word in your quote of SpAwN_gUy - I think that's a rather harsh way to descibe one of your children ;)Eh?

-------
'kay..
i'm waiting for those "nice profiles handling".. to reoganise my code... (and i'm writing some agentGUI (continued).. and maybe some Installer for an agent... and controller(who knows..)..)

and.. BTW.. has anyone seen the "x264farm Profile GUI" (i dont know the proper description, sorry).. the one with two huge EditBoxes... with first and second pass settings?

we've talked about that with berrinam.. and i've posted build in x264farm thread.. but.. no one suggested..

We (and I) really don't know.. how (or to what) to change those boxes..
(my next step in devs will be.. "saving x264Settings itself, but not only the strings.." .. 'cause for now AR is not passed to x264... only to the farm and then is assumed to be lost..)

mroz
12th December 2007, 00:34
Berrinam quoted your original version of "The Whole Megui", before you corrected yours. Both have the typo fixed now.

berrinam
13th December 2007, 07:10
I'm going on holiday. I'll be back in a month. :)

Sharktooth
19th December 2007, 05:08
@kurtnoise: i saw you added VS2008 project files to 0.2.x branch, but im not sure VS2008 can compile the megui sources as they are.
IIRC some changes were needed in trunk to make it happy...

Kurtnoise
19th December 2007, 07:46
should be fine now. So, don't forget to update your svn branch. :)

btw, I use MSVC# 2008 Express Edition...didn't tested with MSVC 2008.



edit: #1842385 & #1842643 can be closed in the bugtracker.

Kurtnoise
19th December 2007, 12:10
Here is a patch to use EnsureVBRMP3Sync() with DSS only:

Index: trunk/megui/AviSynthAudioEncoder.cs
===================================================================
--- trunk/megui/AviSynthAudioEncoder.cs (revision 447)
+++ trunk/megui/AviSynthAudioEncoder.cs (working copy)
@@ -553,11 +553,11 @@
}
}
if (directShow)
+ {
script.AppendFormat("DirectShowSource(\"{0}\"){1}", audioJob.Input, Environment.NewLine);
+ script.AppendFormat("EnsureVBRMP3Sync(){0}", Environment.NewLine);
+ }

- script.AppendFormat("EnsureVBRMP3Sync(){0}", Environment.NewLine);
-
-
if (audioJob.Delay != 0)
script.AppendFormat("DelayAudio({0}.0/1000.0){1}", audioJob.Delay, Environment.NewLine);


Here is a patch to copy only the function used instead of the 5 ones:
Index: trunk/megui/AviSynthAudioEncoder.cs
===================================================================
--- trunk/megui/AviSynthAudioEncoder.cs (revision 447)
+++ trunk/megui/AviSynthAudioEncoder.cs (working copy)
@@ -782,61 +782,73 @@
}

script.AppendFormat("ConvertAudioTo16bit(){0}", Environment.NewLine);
+ script.AppendLine(@"return last");

-
- script.AppendLine(
+ // copy the appropriate function at the end of the script
+ switch (audioJob.Settings.DownmixMode)
+ {
+ case ChannelMode.KeepOriginal:
+ break;
+ case ChannelMode.ConvertToMono:
+ break;
+ case ChannelMode.DPLDownmix:
+ script.AppendLine(@"
+function x_dpl" + id + @"(clip a)
+ {
+ fl = GetChannel(a, 1)
+ fr = GetChannel(a, 2)
+ c = GetChannel(a, 3)
+ sl = GetChannel(a, 5)
+ sr = GetChannel(a, 6)
+ ssr = MixAudio(sl, sr, 0.2222, 0.2222)
+ ssl = Amplify(ssr, -1.0)
+ fl_c = MixAudio(fl, c, 0.3254, 0.2301)
+ fr_c = MixAudio(fr, c, 0.3254, 0.2301)
+ l = MixAudio(ssl, fl_c, 1.0, 1.0)
+ r = MixAudio(ssr, fr_c, 1.0, 1.0)
+ return MergeChannels(l, r)
+ }");
+ break;
+ case ChannelMode.DPLIIDownmix:
+ script.AppendLine(
@"
-
-return last
-
-function x_dpl" + id + @"(clip a)
-{
- fl = GetChannel(a, 1)
- fr = GetChannel(a, 2)
- c = GetChannel(a, 3)
- sl = GetChannel(a, 5)
- sr = GetChannel(a, 6)
- ssr = MixAudio(sl, sr, 0.2222, 0.2222)
- ssl = Amplify(ssr, -1.0)
- fl_c = MixAudio(fl, c, 0.3254, 0.2301)
- fr_c = MixAudio(fr, c, 0.3254, 0.2301)
- l = MixAudio(ssl, fl_c, 1.0, 1.0)
- r = MixAudio(ssr, fr_c, 1.0, 1.0)
- return MergeChannels(l, r)
-}
-
function x_dpl2" + id + @"(clip a)
-{
- fl = GetChannel(a, 1)
- fr = GetChannel(a, 2)
- c = GetChannel(a, 3)
- sl = GetChannel(a, 5)
- sr = GetChannel(a, 6)
- ssl = MixAudio(sl, sr, 0.2818, 0.1627).Amplify(-1.0)
- fl_c = MixAudio(fl, c, 0.3254, 0.2301)
- ssr = MixAudio(sl, sr, 0.1627, 0.2818)
- fr_c = MixAudio(fr, c, 0.3254, 0.2301)
- l = MixAudio(ssl, fl_c, 1.0, 1.0)
- r = MixAudio(ssr, fr_c, 1.0, 1.0)
- return MergeChannels(l, r)
-}
-
+ {
+ fl = GetChannel(a, 1)
+ fr = GetChannel(a, 2)
+ c = GetChannel(a, 3)
+ sl = GetChannel(a, 5)
+ sr = GetChannel(a, 6)
+ ssl = MixAudio(sl, sr, 0.2818, 0.1627).Amplify(-1.0)
+ fl_c = MixAudio(fl, c, 0.3254, 0.2301)
+ ssr = MixAudio(sl, sr, 0.1627, 0.2818)
+ fr_c = MixAudio(fr, c, 0.3254, 0.2301)
+ l = MixAudio(ssl, fl_c, 1.0, 1.0)
+ r = MixAudio(ssr, fr_c, 1.0, 1.0)
+ return MergeChannels(l, r)
+ }");
+ break;
+ case ChannelMode.StereoDownmix:
+ script.AppendLine(@"
function x_stereo" + id + @"(clip a)
-{
- fl = GetChannel(a, 1)
- fr = GetChannel(a, 2)
- c = GetChannel(a, 3)
- lfe = GetChannel(a, 4)
- sl = GetChannel(a, 5)
- sr = GetChannel(a, 6)
- l_sl = MixAudio(fl, sl, 0.2929, 0.2929)
- c_lfe = MixAudio(lfe, c, 0.2071, 0.2071)
- r_sr = MixAudio(fr, sr, 0.2929, 0.2929)
- l = MixAudio(l_sl, c_lfe, 1.0, 1.0)
- r = MixAudio(r_sr, c_lfe, 1.0, 1.0)
- return MergeChannels(l, r)
-}
-
+ {
+ fl = GetChannel(a, 1)
+ fr = GetChannel(a, 2)
+ c = GetChannel(a, 3)
+ lfe = GetChannel(a, 4)
+ sl = GetChannel(a, 5)
+ sr = GetChannel(a, 6)
+ l_sl = MixAudio(fl, sl, 0.2929, 0.2929)
+ c_lfe = MixAudio(lfe, c, 0.2071, 0.2071)
+ r_sr = MixAudio(fr, sr, 0.2929, 0.2929)
+ l = MixAudio(l_sl, c_lfe, 1.0, 1.0)
+ r = MixAudio(r_sr, c_lfe, 1.0, 1.0)
+ return MergeChannels(l, r)
+ }");
+ break;
+ case ChannelMode.Upmix:
+ script.AppendLine(
+@"
function x_upmix" + id + @"(clip a)
{
m = ConvertToMono(a)
@@ -845,41 +857,46 @@
c = SuperEQ(m,""" + tmp + @"center.feq"")
lfe = SuperEQ(m,""" + tmp + @"lfe.feq"")
return MergeChannels( f.getleftchannel, f.getrightchannel , c, lfe, s.getleftchannel, s.getrightchannel)
-}
-
+}");
+ break;
+ case ChannelMode.UpmixUsingSoxEq:
+ script.AppendLine(
+@"
function x_upmixR" + id + @"(clip Stereo)
{
- Front = mixaudio(Stereo.soxfilter(""filter 0-600""),mixaudio(Stereo.soxfilter(""filter 600-1200""),Stereo.soxfilter(""filter 1200-7000""),0.45,0.25),0.50,1)
- Back = mixaudio(Stereo.soxfilter(""filter 0-600""),mixaudio(Stereo.soxfilter(""filter 600-1200""),Stereo.soxfilter(""filter 1200-7000""),0.35,0.15),0.40,1)
- fl = GetLeftChannel(Front)
- fr = GetRightChannel(Front)
- cc = ConvertToMono(stereo).SoxFilter(""filter 625-24000"")
- lfe = ConvertToMono(stereo).SoxFilter(""lowpass 100"",""vol -0.5"")
- sl = GetLeftChannel(Back)
- sr = GetRightChannel(Back)
- sl = DelayAudio(sl,0.02)
- sr = DelayAudio(sr,0.02)
+ Front = mixaudio(Stereo.soxfilter(""filter 0-600""),mixaudio(Stereo.soxfilter(""filter 600-1200""),Stereo.soxfilter(""filter 1200-7000""),0.45,0.25),0.50,1)
+ Back = mixaudio(Stereo.soxfilter(""filter 0-600""),mixaudio(Stereo.soxfilter(""filter 600-1200""),Stereo.soxfilter(""filter 1200-7000""),0.35,0.15),0.40,1)
+ fl = GetLeftChannel(Front)
+ fr = GetRightChannel(Front)
+ cc = ConvertToMono(stereo).SoxFilter(""filter 625-24000"")
+ lfe = ConvertToMono(stereo).SoxFilter(""lowpass 100"",""vol -0.5"")
+ sl = GetLeftChannel(Back)
+ sr = GetRightChannel(Back)
+ sl = DelayAudio(sl,0.02)
+ sr = DelayAudio(sr,0.02)
return MergeChannels(fl,fr,cc,lfe,sl,sr)
-}
-
+}");
+ break;
+ case ChannelMode.UpmixWithCenterChannelDialog:
+ script.AppendLine(
+@"
function x_upmixC" + id + @"(clip stereo)
{
- left = stereo.GetLeftChannel()
- right = stereo.GetRightChannel()
- fl = mixaudio(left.soxfilter(""filter 0-24000""),right.soxfilter(""filter 0-24000""),0.6,-0.5)
- fr = mixaudio(right.soxfilter(""filter 0-24000""),left.soxfilter(""filter 0-24000""),0.6,-0.5)
- cc = ConvertToMono(stereo).SoxFilter(""filter 625-24000"")
- lfe = ConvertToMono(stereo).SoxFilter(""lowpass 100"",""vol -0.5"")
- sl = mixaudio(left.soxfilter(""filter 0-24000""),right.soxfilter(""filter 0-24000""),0.5,-0.4)
- sr = mixaudio(right.soxfilter(""filter 0-24000""),left.soxfilter(""filter 0-24000""),0.5,-0.4)
- sl = DelayAudio(sl,0.02)
- sr = DelayAudio(sr,0.02)
+ left = stereo.GetLeftChannel()
+ right = stereo.GetRightChannel()
+ fl = mixaudio(left.soxfilter(""filter 0-24000""),right.soxfilter(""filter 0-24000""),0.6,-0.5)
+ fr = mixaudio(right.soxfilter(""filter 0-24000""),left.soxfilter(""filter 0-24000""),0.6,-0.5)
+ cc = ConvertToMono(stereo).SoxFilter(""filter 625-24000"")
+ lfe = ConvertToMono(stereo).SoxFilter(""lowpass 100"",""vol -0.5"")
+ sl = mixaudio(left.soxfilter(""filter 0-24000""),right.soxfilter(""filter 0-24000""),0.5,-0.4)
+ sr = mixaudio(right.soxfilter(""filter 0-24000""),left.soxfilter(""filter 0-24000""),0.5,-0.4)
+ sl = DelayAudio(sl,0.02)
+ sr = DelayAudio(sr,0.02)
return MergeChannels(fl,fr,cc,lfe,sl,sr)
-}
-
+}");
+ break;
+ }

-"
- );
_avisynthAudioScript = script.ToString();

_log.LogValue("Avisynth script", _avisynthAudioScript);


the main goal of these patches is to improve the logfile reading.

Sharktooth
19th December 2007, 15:53
should be fine now. So, don't forget to update your svn branch. :)

btw, I use MSVC# 2008 Express Edition...didn't tested with MSVC 2008.



edit: #1842385 & #1842643 can be closed in the bugtracker.
on my way.

darkKlor
26th December 2007, 20:12
should be fine now. So, don't forget to update your svn branch. :)

btw, I use MSVC# 2008 Express Edition...didn't tested with MSVC 2008.



edit: #1842385 & #1842643 can be closed in the bugtracker.

i'll just confirm for you that it compiles in MSVC 2008, VSTS to be precise. there was no reason why it wouldn't anyway, the compiler is identical

edit: mind u, i will add that AvisynthWrapper.dll and MediaInfo.dll don't get copied to the output directory when you compile... i'm not sure if that's by design?

cogman
27th December 2007, 22:41
Hope this goes here, but I was just doing a triple pass encode (Yay!) and decided that that a pre-render might speed things up a bit. So here is what I was wondering, Would it be possible to do a pass while saving the rendered video for the next pass to give that extra few minutes of speed? How hard would that be to implement as I think it could be a nice speed increase for the multipass people. (that or Im doing something wrong :))

Just a suggestion, like I said, don't know if it belongs here or in the AVC forum. Keep up the good work guys!

Kurtnoise
28th December 2007, 14:57
edit: mind u, i will add that AvisynthWrapper.dll and MediaInfo.dll don't get copied to the output directory when you compile... i'm not sure if that's by design?
I don't think it's by design...:p



@Cogman: I don't think it's doable...but I'm not sure.

Kurtnoise
28th December 2007, 14:58
the main goal of these patches is to improve the logfile reading.
If noone object, I'll commit those patches this weekend.

Sharktooth
28th December 2007, 17:51
ok for me.

Doom9
29th December 2007, 15:13
@cogman: it's not possible. prerender jobs are done by ffmpeg, and your other jobs (you mentioned 3 pass) are done by x264.exe. It's not possible to have one decoder feed multiple encoders concurrently. What you'd need (and it would be a encoder specific solution only) would be for x264 to write out the results of the first pass to a video file (that part is possible), but then there's the problem part: a regular first pass is done at considerably lower quality.. so you cannot use the result of that pass as source for subsequent passes.. instead you'd need a lossless pass and leave out the bits that make a first pass less computationally intensive (subme, partitions, etc.), then you'd need x264 to accept avc input files (that would complicate matters since x264 doesn't support avc input afaik), and since avc is a lot more cpu consuming to decode, it would slow down subsequent passes (that's the reason why the prerendering job uses a lossless codec that takes very little in terms of cpu to decode.. we want to spend as little cpu cycles as possible during the actual encoding passes) - so in the end you'd likely end up gaining nothing at all.

You might have to ask people who work on decoders for the actual details, but I think conceptually, a decoder that can serve multiple encoders, while possible, would be a real PITA.. either you'd need synchronization between the various encoders to each requests the same frame at the same time, or, the decoder would have to keep multiple virtual sessions with their state so it can continually serve the proper frame (as you might know, in today's video codecs frames depend on each other so you can't just decode frame X, you would need to have some previous frames decoded).

check
29th December 2007, 15:54
it's possible currently with xvid, but only in a hackish way. There was an avisynth plugin that would tee off the video input and create a first pass stats file.

squid_80
29th December 2007, 17:35
It's a piece of cake to do it within an avisynth script. See http://forum.doom9.org/showthread.php?t=132406
To sum up: The first time the script is processed the output is encoded into a lossless avi. The next (and subsequent) time the script is processed the lossless avi is automatically used as input.

Now if we just had a lossless codec that could decompress at a speed close to mpeg2...

mroz
29th December 2007, 23:55
squid_80: Aiui that isn't what cogman was after. He wants the prerender step to occur at the same time as the first pass.

I don't see why the output from the avs file can't be teed into both a lossless encoder & the codec for a first pass, though I don't know how you'd do that under Windows. However I can't see any worthwhile advantage to doing that over running a distinct prerender step.

squid_80
30th December 2007, 05:40
squid_80: Aiui that isn't what cogman was after. He wants the prerender step to occur at the same time as the first pass.
That's exactly how it works. Read the linked thread completely.
(When I said "the first time the script is processed" I was referring to the first pass.)

Kurtnoise
30th December 2007, 10:54
10x for the hint...added to the todo list. :)

Raere
30th December 2007, 19:19
Now if we just had a lossless codec that could decompress at a speed close to mpeg2...

HuffYUV isn't fast enough for you?

squid_80
30th December 2007, 21:47
Not for plain decoding, no. Decoding huffyuv = ~80fps. Decoding mpeg2 = ~210fps.

check
7th January 2008, 10:24
Development versions are only used by 4% of MeGUI users (rated by hits to the two upgrade.xml files). I think it would be nice to increase this number so there are more bugtesters.
You could easily do this by making the stable/development checkbox easier to find.

Sharktooth
7th January 2008, 17:15
it was my intention to move the stable/dev selection in the auto-update window.

mroz
13th January 2008, 14:06
A minor suggestion for the AviSynth Script Creator.

For an anamorphic encode, currently the suggested resolution for resizing defaults (i think) to the largest that will fit within the source resolution, whilst maintaining the ratio of x-pixel-count-after-cropping:y-pixel-count-after-cropping.

Personally, if I'm doing an anamorphic encode I want as few transformations as possible, in order to minimise degradation. Therefore I'd prefer it if the default suggested resolution was simply the resolution of the source after cropping is applied.

This gives the same result if only width or height is cropped, but avoids up scaling when both values are cropped.

Opinions?

Mutant_Fruit
4th February 2008, 03:41
I threw up a quick patch onto the issue tracker in sourceforge. I'm not sure if that's checked regularly or not, so i'm just posting a link here to it:

http://sourceforge.net/tracker/index.php?func=detail&aid=1886000&group_id=156112&atid=798478

Let me know if those kinds of patches are ok or not before i waste time refactoring things which won't be accepted ;)

Sharktooth
4th February 2008, 03:51
patches are always well accepted.
i cant actually monitor the tracker regularly. also i have a new job and they dont want me to mess with OSS... but i will be back as soon as i manage to have a new contract.

rebkell
4th February 2008, 18:49
I haven't read all the posts, forgive me if it's already been discussed, but I would like for Avisynth Creator to default to the d2v or source file name when saving it, it's the only part of the process where I actually have to type in a name, otherwise I can click through the whole process, with the exception of supplying the avs file name.

Carpo
4th February 2008, 19:29
patches are always well accepted.
i cant actually monitor the tracker regularly. also i have a new job and they dont want me to mess with OSS... but i will be back as soon as i manage to have a new contract.

since when can a comp tell you what to do outside of work, if you want to work on OSS after work hours you should be able to

check
5th February 2008, 05:21
Ever since you are allowed to sign a common law contract.

Sharktooth
5th February 2008, 16:37
since when can a comp tell you what to do outside of work, if you want to work on OSS after work hours you should be able to
they can.

Sharktooth
5th February 2008, 19:49
0.2.6.1044
- (Kurtnoise) updated MediaInfo library & his wrapper.
- (Kurtnoise) [neroConfigurationPanel] added vBitrate_ValueChanged() event for ABR & CBR checking.
- (Kurtnoise) display only the function used in the avs script for audio encodings instead of the 5 ones.
- (Kurtnoise) use EnsureVBRMP3Sync() with DirectShowSource only.
- (Kurtnoise) [JobQueue] changed public to internal for the JobChangeEvent (to fix the compilation within MSVC# 2008).
- (Kurtnoise) [AviSynthWindow] fixed width & height for Crop checkbox when "overcrop to achieve mod16" is selected (#1852845).
- (Kurtnoise) [AviSynthAudioEncoder] fixed bug #1850574 for DTS files sources.

unstable version builds are frozen until the profiles refactoring gets completed.

Mutant_Fruit
6th February 2008, 00:54
Another few patchs :) Hopefully they won't take long to review.

http://sourceforge.net/tracker/?group_id=156112&atid=798478

Kurtnoise
6th February 2008, 13:23
I applied few of them...I've no time for the moment for extra reviews. Maybe this weekend.