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

dimzon
6th February 2006, 15:48
0.2.3.2066 6 Feb 2006
Commit by dimzon
- AvsSettings && AvsGenerator window refactoring - now it's easy to add new denoisers/resizers
- AvsSettings && AvsGenerator window refactoring - complete moving from int to enum for denoisers/resizers
WARNING: Moving from int to enum caused serialization error on old Avisynth profiles
old profiles (from previous versions) doesn't load now!

@ automatic deinterlacer author
I want to perform same settings with Deinterlace methids, unfortunally there are too complex code here. Can You take look @ current denoisers/resizers processing (including how are they using in GUI) and do the same for deinterlacer?

Doom9
6th February 2006, 16:48
@dimzon: berrinam wrote the automatic interlace detection

I'll look into implementing your suggestions.

I've also been musing about job generation and I think I'll go into this direction. There's a muxerfactory where you send your desired video codec type and audio codec types as well as subtitle types to. The factory performs a two pass iteration over all registered muxers.. if it finds a direct way, it returns the muxer. If it does not, a second iteration is performed, in which the first match for the video format is taken. Then the output format of that muxer is sent to another iteration with the audio and subtitle streams. That way, we can cover indirect cases like x264.exe -> raw, then raw -> avi with avc2avi, then avi to avi with audio with avimuxgui (I'm thinking about that.. it offers splitting, multiple audio tracks and even aac audio support).

A similar mechanism could be used for the video encoders.. or perhaps even an integration. Say I want x264 in AVI (and I'm dumping mencoder for that scenario.. maintaining two encoders for the same thing is a major pain), the encoder would report "I can do raw, mp4 and mkv output", so we'd pick the first output format, then ask the muxer factory for a muxing path from raw avc to avi. Another option would be to prevent any muxing for simple video encoding.. right now muxing jobs are added even in plain video encoding (say you want snow in mkv.. ).. but perhaps muxing should only be taken into account in automated modes? (and thus asking for snow with output type mkv and then pressing queue would return in a warning telling the user that the encoder cannot provide the desired output format and that the auto mode has to be used. That would also simplify job generation.. we have the same codepath for auto mode and one click mode.. if simple encoding no longer includes any muxing, the existing codepath for the automated encoding can be used.. you just don't send it any of the additional configuration options available in auto mode.

The point of these factories is of course to have one jobprocessor, which takes a job, finds the proper processor for it and initiates processing.

What do you think.. is this flexible enough to handle use cases we cannot see right now?

dimzon
6th February 2006, 16:58
if it finds a direct way, it returns the muxer. If it does not, a second iteration is performed, in which the first match for the video format is taken.
Very close to DirectShow GraphBuilder isn't it :D :D :D

but perhaps muxing should only be taken into account in automated modes?
Yes, it's good decision

What do you think.. is this flexible enough to handle use cases we cannot see right now?
Hmmm. It's really hard to say. At first look everything seems Ok...



By the way
I'm now contacting with AviMUX_GUI author asking him to add some functionality to be able provide good integration between MeGUI and AviMux_GUI. Seems like we can use it for AVIMuxing (AFAIK AviMux_GUI is the best tool for AVI muxing)

ChronoCross
6th February 2006, 17:03
I won't be able to make a new release build until late tonight(which is the usual weekday time for new builds.)

I'm considering making a Utility Kit in which I've gathered all the needed programs and dll's and organized them to be super efficient folders. I'll put this on the site as well I'm just working out some of the kinks.

I wanted to ask you if you preferred if I addeda GPL thing to my builds. I haven;'t been doing so simply because the ones on sourceforge never had it. Let me know.

Doom9
6th February 2006, 17:12
well.. AVIMuxGUI has a powerful scripting language.. while running a GUI program doesn't offer any feedback, I think we can live with that if the rest works out and if I can throw out all the ugly container check code.

I wanted to ask you if you preferred if I addeda GPL thing to my builds. I haven;'t been doing so simply because the ones on sourceforge never had it. Let me know.I think to be fully compliant, the file or at least a file telling you where to get the license should be added. I've never much cared for it though.. those who download the sources will see the GPL notice in the majority of files, so it should be clear to anybody what they can and cannot do with the code.

foxyshadis
6th February 2006, 17:15
By the way
I'm now contacting with AviMUX_GUI author asking him to add some functionality to be able provide good integration between MeGUI and AviMux_GUI. Seems like we can use it for AVIMuxing (AFAIK AviMux_GUI is the best tool for AVI muxing)
Everyone I know says that Avimux-gui creates files with bad indices that cause seeking problems, and that virtualdubmod is significantly better. Maybe that's only older versions, I don't know, but I was chewed out for using it. ^^;

dimzon
6th February 2006, 17:22
well.. AVIMuxGUI has a powerful scripting language.. while running a GUI program doesn't offer any feedback, I think we can live with that if the rest works out and if I can throw out all the ugly container check code.

:D :D :D
In Russia there are proverb (approx):
Fools has the same thought

Hi!
I'm working on MeGUI ( http://forum.doom9.org/showthread.php?t=96032 ) and I'm searching for sutable AviMuxer now. Your AviMuxGUI is perfect, unfortunally there are no easy way to obtain current muxing progress from external process.
Is it possible to add such features:
1) ability to read scripts ( http://www-user.tu-chemnitz.de/~noe/Video-Zeug/AVIMux%20GUI/script.html ) from stdin - it will allow as to avoid temporaly files
2) ability to write progress, diagnostic messages and log into stdout

thanx!

Dmitry Alexandrov wrote:

> Hi!
> I'm working on MeGUI ( http://forum.doom9.org/showthread.php?t=96032 )
> and I'm searching for sutable AviMuxer now. Your AviMuxGUI is perfect,
> unfortunally there are no easy way to obtain current muxing progress
> from external process.
> Is it possible to add such features:
> 1) ability to read scripts (
> http://www-user.tu-chemnitz.de/~noe/Video-Zeug/AVIMux%20GUI/script.html
> <http://www-user.tu-chemnitz.de/~noe/Video-Zeug/AVIMux%20GUI/script.html>
> ) from stdin - it will allow as to avoid temporaly files

I'm not sure how this would be supposed to work: How would AVI-Mux
GUI, once it has been launched, notice that you want to send a file
using stdin? Or did you just think about a command line parameter
telling AVI-Mux GUI to load a script file from stdin on startup? Even
that would require some changes, because AVI-Mux GUI relies on knowing
the file size of any file it opens for reading. Also, AVI-Mux GUI
relies on being able to seek in any file it opens.

> 2) ability to write progress, diagnostic messages and log into stdout

That's certainly possible.



Alex

Hi

2006/2/6, Alexander Noe' <alexander.noe@s2001.tu-chemnitz.de>:

Dmitry Alexandrov wrote:

using stdin? Or did you just think about a command line parameter
telling AVI-Mux GUI to load a script file from stdin on startup? Even


Yes, i think actually about this!

that would require some changes, because AVI-Mux GUI relies on knowing
the file size of any file it opens for reading. Also, AVI-Mux GUI
relies on being able to seek in any file it opens.


You can read all stdin to temporally buffer ( i really doesn't think somebody can provide script larger than 64k )

> 2) ability to write progress, diagnostic messages and log into stdout

That's certainly possible.


Fine!

Bye.


FYI: There are yet another way how to obtain progress from GUI application: it's possible to get text from any window via Win32 API ;)

Mutant_Fruit
6th February 2006, 20:52
Ok... so i have a few requests so i can get cracking on some more parts of the AutoUpdate section.

The files are just going to be hosted on a standard HTTP site (not FTP?) so can i get some write access to somewhere where i can stick up a few files for testing purposes?

Richard Berg
6th February 2006, 23:03
@Mutant_Fruit: PM on the way.

berrinam
7th February 2006, 11:03
@ automatic deinterlacer author
I want to perform same settings with Deinterlace methids, unfortunally there are too complex code here. Can You take look @ current denoisers/resizers processing (including how are they using in GUI) and do the same for deinterlacer?
Using enums and stuff? The problem is (which I'm sure you also encountered) that there are multiple variables which determine the filtering done. In particular, the field order can be TFF, BFF or not set at all, and the source can be anime or not. This means that it is much simpler to dynamically generate the filters than to have them all listed statically. If there is some way of using EnumProxy to dynamically create a data provider, then I could do that. But if not, then the enums I would have to make are:

-progressive source (empty)
-interlaced source, TFF
-interlaced source, BFF
-interlaced source, use d2v info
-film source, TFF anime
-film source, TFF non-anime
-film source, BFF anime
-film source, BFF non-anime
-film source, use d2v anime
-film source, use d2v non-anime
-hybrid interlaced/progressive, TFF
-hybrid interlaced/progressive, BFF
-hybrid interlaced/progressive, use d2v
-hybrid film/progressive with all of those
-hybrid film/interlaced with all of those.

You get the point.

berrinam
7th February 2006, 11:54
One thing that can't be distributed so easily is profiles that use CQMs. I don't know how many people want to use CQMs, but it is still a restriction, because it means that things like Sharktooth's profiles must be limited to the standard 'flat' or 'jvt' QMs. The reason that the CQMs can't also be (easily) distributed with the profiles is that CQMs are stored in MeGUI as an absolute pathname. Is there some way to reorganise this to make it more flexible?

dimzon
7th February 2006, 12:48
0.2.3.2067 7 Feb 2006
Commit by dimzon
- EnumProxy improvements
- ScriptServer refactoring - now it's possible to add new resizers/denoisers just via Enum modification


2 all dvelopers.
Now you can attach any object to enum member and access it via EnumProxy::Tag property.
Take look @ ScriptServer.cs for sample - it's fine!

Doom9
7th February 2006, 13:08
does anybody have an idea how I can get x264.exe to give me all its stdout and stderr output (see stuff like this: http://forum.doom9.org/showthread.php?t=106951 .. has been posted a couple times recently).. if x264 exists immediately with an error, no matter what I tried, I never get to see the actual error line, even though I'm making sure that I'm reading stdout and stderr till the end even if the process has already exited. Also, does anybody have an overview over the x264 exit codes?

shon3i
7th February 2006, 15:37
When you add support to encode audio via Coding Tehnologies. and please fix shutdown feature

dimzon
7th February 2006, 16:00
0.2.3.2068 7 Feb 2006
Commit by dimzon
- ScriptServer refactoring
- Some ResizeType enum members are renamed

dimzon
7th February 2006, 17:44
@ AutoUpdate feature developer
http://www.codeproject.com/tools/updater.asp

dimzon
7th February 2006, 19:39
0.2.3.2069 7 Feb 2006
Commit by dimzon
- Better diagnostics for d2v
- Fixed some resource leak in VideoUtil

Doom9
7th February 2006, 21:10
found a couple nasty bugs:
avs creator: when opening a d2v, then closing the preview and subsequently trying to preview again, we're trying to resurrect the disposed preview window.. that won't work. The preview window has to be reinitialized completely anew.. using would actually come in handy here as it prevents you from reusing a reference that has been disposed.
filename check: if you set x264 to 3 pass first pass, then try to access the autoencode, the autoencodewindow constructor throws an exception.

berrinam
8th February 2006, 09:37
This means that it is much simpler to dynamically generate the filters than to have them all listed statically. If there is some way of using EnumProxy to dynamically create a data provider, then I could do that.
I've figured out how to convert it all into your EnumProxy versions, but it doesn't make it any more readable :(. I still think it should be done dynamically, otherwise too many enums must be created, and I thought of something which can't be done by enums: the ScriptServer function, Portionize. It adds trim statements so that the filter is only applied on selected parts. This must be done at runtime, as we don't know beforehand where the trimming is going to take place.

I realize you are a much better coder than me, so if you have any suggestions, I'm open to them.

dimzon
8th February 2006, 12:58
@berrinam
according current solution (deintelace filters generates dynamically) what does AviSynthSettings::DeinterlaceMethod property means?

dimzon
8th February 2006, 13:27
0.2.3.2070 8 Feb 2006
Commit by dimzon
- Fixes in d2vReader (d2v parsing now work fine on non en-US locales)
- Cosmetics in AviSynthWindow (better controls enabling/disabling)
- Compile.bat now force x86 compilation

dimzon
8th February 2006, 13:44
0.2.3.2071 8 Feb 2006
Commit by dimzon
- Fixed languages bug in settings form

dimzon
8th February 2006, 14:05
0.2.3.2072 8 Feb 2006
Commit by dimzon
- Fixed languages bug in mkvMuxer / mp4Muxer forms

dimzon
8th February 2006, 14:25
0.2.3.2073 8 Feb 2006
Commit by dimzon
- Refactored LanguageSelectionContainer, removed 2 languages with duplicate ISO code

dimzon
8th February 2006, 15:17
0.2.3.2074 8 Feb 2006
Commit by dimzon
- Initial profiles refactoring @ audio dialogs - it look's much more understandable now (still need more refactoring yet)

dimzon
8th February 2006, 15:39
0.2.3.2075 8 Feb 2006
Commit by dimzon
- Fixed bug in Form1.cs (losted EventHandler @ audioProfile.OnSelectedIndexChange event)

dimzon
8th February 2006, 16:09
0.2.3.2076 8 Feb 2006
Commit by dimzon
- MeGUISettings.AvisynthPluginsPath is now static. It read/write value from/to HKLM\SOFTWARE\AviSynth\Plugindir2_5 registry key directly
- SettingsForm now override avisynth plugins dir in registry (using MeGUISettings.AvisynthPluginsPath)

ChronoCross
8th February 2006, 16:13
Jesus. I go to sleep for 5 hours and now there have been 7 updates lol!!!. I won't be able to make another build for a few hours as I'm at work. I wanted to know what the platform x86 does in relation to native 32-bit systems? Is it just a compatibility flag fo 64-bit systems or does it actually change the way it compiles?

dimzon
8th February 2006, 16:17
0.2.3.2077 8 Feb 2006
Commit by dimzon
- CropValues are now class (not struct) - it allows to transmit null value

dimzon
8th February 2006, 16:20
Is it just a compatibility flag fo 64-bit systems or does it actually change the way it compiles?
I don't check it, but I believe it's same...

godhead
8th February 2006, 17:15
I'e been super busy with real life and work, so I haven't had much free time for other projects. but I just wanted to say, DAMN! I come check the thread and Dimzon has been on a tear with updates. Good Job!

Were the language changes you made, the fix I had originally signed up for? If so, thanks for picking up my slack.

I should have some more time in a couple of weeks and I'll try to catch up with MeGUI Development at that time.

dimzon
8th February 2006, 17:26
@all developers
may be this is reason of non-working shutdown checkbox?
http://www.csharpfriends.com/Forums/ShowPost.aspx?PostID=39822

Doom9
8th February 2006, 17:33
hmm.. it also prevents you from logging out (I have such apps at work.. but the behavior is always desired as those apps are receiving logging events at a central place (logging to the HD is also in effect but the logs go to separate files depending on the kind of event)).
But somebody who has that problem would have to state if the app was minimized to the tray or not. I also think it couldn't hurt adding a "automated shutdown is enabled.. initiating shutdown now" to the log so that we know how far the app actually got.. there's already a log entry in case a shutdown was tried but failed.

dimzon
8th February 2006, 17:42
according non-working shutdown checkbox:
dwReason
[in] Reason for initiating the shutdown. This parameter must be one of the system shutdown reason codes.
If this parameter is zero, the SHTDN_REASON_FLAG_PLANNED reason code will not be set and therefore the default action is an undefined shutdown that is logged as "No title for this reason could be found". By default, it is also an unplanned shutdown. Depending on how the system is configured, an unplanned shutdown triggers the creation of a file that contains the system state information, which can delay shutdown. Therefore, do not use zero for this parameter.

dimzon
8th February 2006, 17:55
0.2.3.2078 8 Feb 2006
Commit by dimzon
- Attempt to fix shutdown problem under WindowsXP
(providing SHTDN_REASON_MAJOR_APPLICATION | SHTDN_REASON_MINOR_NONE | SHTDN_REASON_FLAG_PLANNED as reason in ExitWindowsEx)

dimzon
8th February 2006, 18:52
0.2.3.2079 8 Feb 2006
Commit by dimzon
- fixed stupid bug in ScriptServer.ListOfDenoiseFilterType (thanx to The Link)

berrinam
8th February 2006, 20:56
@berrinam
according current solution (deintelace filters generates dynamically) what does AviSynthSettings::DeinterlaceMethod property means?
Absolutely nothing. It shouldn't be there. It was in there before automatic deinterlacing, and nobody removed it when automatic deinterlacing was added. If you have a look in the AviSynth profile configuration window, second tab, you will see that there is a list of deinterlacing filters. The DeinterlaceMethod property corresponds to that, but it is now ignored when generating the script.

Richard Berg
8th February 2006, 22:18
I wanted to know what the platform x86 does in relation to native 32-bit systems? Is it just a compatibility flag fo 64-bit systems or does it actually change the way it compiles?
It doesn't change the compiled MSIL. It just sets a flag within the image that tells the .net loader it should be JIT'd to x86 machine code. By default the loader JITs it to the platform's native instruction set, which if you install dotnetfx64 on an x64 machine is x64. On 32bit platforms the native instruction set is x86 to begin with so there's no difference.

berrinam
9th February 2006, 09:49
0.2.3.2080 9 Feb 2006
Commit by berrinam
- Removed the deinterlace filter type in the AviSynthSettings and its corresponding combobox in the settingsdialog
- Fixed up AviSynth profiles
- Fixed up enabling/disabling of controls in AviSynthWindow: the avs profiles are accessible without loading a file, and the script box is disabled without a loaded file

This commit still doesn't use dimzon's EnumProxy syntax. It could be changed to use these, but they still wouldn't use enums.

dimzon
9th February 2006, 11:17
I still think it should be done dynamically, otherwise too many enums must be created, and I thought of something which can't be done by enums: the ScriptServer function, Portionize. It adds trim statements so that the filter is only applied on selected parts. This must be done at runtime, as we don't know beforehand where the trimming is going to take place.
Ok, just one proposal
Current solution reques 2 complimentare arrays - array with titles and array with script itself. Maybe it's better to create such class:

public class PieceOfScript
{
public string Script;
private string title;
public PieceOfScript(string title, string script)
{
this.title = title;
this.Script = script;
}
public override string ToString()
{
return this.title
}
}


in this case you need only one array:

ArrayList arr = new ArrayList();

You can add deinterlacer using constructor:
arr.Add(new PieceOfScript("my deinterlacer" , "bla-bla-bla"));


and populate array via DataBinding:
deintarlaceCombo.DataSource = arr;


to get script you can use something like this:
string deinterlaceLines = (deintarlaceCombo.SelectedItem as PieceOfScript).Script

berrinam
9th February 2006, 11:50
0.2.3.2081 9 Feb 2006
Commit by berrinam:
- Enabled Vorbis calculation in the bitrate calculator
- Renamed SAR (Sample Aspect Ratio) to DAR (Display Aspect Ratio) in a few places
- Fixed empty pathname in One Click Encoder bug
- Fixed bug with the Bitrate Calculated bitrate not propogating onto the codec

@dimzon: Your suggestion sounds like a good medium. And while I'm at it, I'll convert it to List<PieceOfScript>.

dimzon
9th February 2006, 12:18
And while I'm at it, I'll convert it to List<PieceOfScript>.
Feel free to do it BUT I really think ArrayList is enought (just my opinion, I really does'nt like to use generics everythere even without explicit needs).
Really - seems like you does not need to address to arr items via indexer.
You are using foreach construction - in this case ICollection is used and strongly typed generic is not requed at all
ComboBox.DataSource use IList interface, in this case strongly typed generic is not requed too...

dimzon
9th February 2006, 12:29
@Doom9
about cropping
As I said before I don't like current cropping look & feel:
Window overlaping problem - when i trying to change crop values AvisynthWindow && underlayng main form overlap preview and via versa
I does not view which data is cropped (all cropped regions are filled by white)
I does not view resolution after crop and MOD information

You are asked me to remove CropDialog, I can do it but mentoined above problems still exists in current solution

Doom9
9th February 2006, 12:55
Window overlaping problem - when i trying to change crop values AvisynthWindow && underlayng main form overlap preview and via versaIt's just a preview.. it doesn't matter much where exactly on the screen it is (and how large it is for that matter.. it can be resized) There is no absolute need to have no overlap at all unlike your solution.
I does not view which data is cropped (all cropped regions are filled by white)That is desired behavior. In fact, years of freeform image capturing for guides have thaught me the hard way that lines on top of things just don't work properly.. if it's either there or gone you know exactly what is happening.. with a thin line, it's so much harder to discern borders.
# I does not view resolution after crop and MOD informationI don't get that.

dimzon
9th February 2006, 13:13
There is no absolute need to have no overlap at all unlike your solution.
This overlapping is very annoyng for me, really.

That is desired behavior. In fact, years of freeform image capturing for guides have thaught me the hard way that lines on top of things just don't work properly.. if it's either there or gone you know exactly what is happening.. with a thin line, it's so much harder to discern borders.
As I said before i propose to make it optional - fill all cropped area by white or draw lines - it can be controlled via checkbox.

I don't get that.
Sorry, don't understand your answer...

By the way - as I said before I propose to keep both cropping variants. We can place cropping "gamepad" on AviSynth window and duplicate it @ CropDialog.

dimzon
9th February 2006, 13:22
by the way:
there are new Nero7 AAC beta
http://www.mp3-tech.org/content/?48kbps%20AAC%20public%20test
http://www.mp3-tech.org/tests/aac_48/nd_audio_02_feb_2006.7z

Doom9
9th February 2006, 13:35
This overlapping is very annoyng for me, really.And on the other hand of the spectrum we have people telling me it's not enough like GKnot (GKnot does it the way I do it). It's just a matter of approach.. I like the GKnot one. And I have yet to hear one single complaint about this way of doing things.. now I'm sure you can dig up some VDub fans to make your point.. but GKnot has been around for years and it separates controls from preview as well.

dimzon
9th February 2006, 13:52
And on the other hand of the spectrum we have people telling me it's not enough like GKnot (GKnot does it the way I do it). It's just a matter of approach.. I like the GKnot one. And I have yet to hear one single complaint about this way of doing things.. now I'm sure you can dig up some VDub fans to make your point.. but GKnot has been around for years and it separates controls from preview as well.
as I said before I propose to keep both cropping variants. We can place cropping "gamepad" on AviSynth window and duplicate it @ CropDialog.

stax76
9th February 2006, 14:09
You could make a poll about what cropping approach people like most, I propose to include as poll options VD, GK, StaxRip, MeGUI and all other applications that have good cropping support.

dimzon
9th February 2006, 14:11
You could make a poll about what cropping approach people like most, I propose to include as poll options VD, GK, StaxRip, MeGUI and all other applications that have good cropping support.
as I said before I propose to keep both cropping variants. We can place cropping "gamepad" on AviSynth window and duplicate it @ CropDialog. Using this option we can satisfy mostly all users ;)