PDA

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

Doom9
9th February 2006, 14:21
You can't have it both ways. The GKnot solution requires a separate preview window which is always opened. Then you want to open yet another window with the same content? That just doesn't make a whole lot of sense.

dimzon
9th February 2006, 14:30
You can't have it both ways. The GKnot solution requires a separate preview window which is always opened. Then you want to open yet another window with the same content? That just doesn't make a whole lot of sense.
No, I can. Take look @ VDub - it have 2 video panels (input && output) and when you open cropping dialog you get yet one video panel, isn't it?

Doom9
9th February 2006, 14:34
It isn't the same.. VDUB shows in/out in the main window.. it's always there. MeGUI and GKnot on the other hand are modal.. they show preview when necessary / requested. Either way.. you wanted a decision.. you have it.. just because you don't like it doesn't mean I'm going to change my mind. I can be rather stubborn and I'm not about to change things to make them different, not considerably better, and in my eyes.. your solution isn't considerably better, just different.

dimzon
9th February 2006, 15:55
0.2.3.2082 9 Feb 2006
Commit by dimzon:
- Removed CropDialog
- Fixed ugly bug in DataBindings (no more syncronized languages bug etc)

dimzon
9th February 2006, 19:27
0.2.3.2083 9 Feb 2006
Commit by dimzon:
- Additional refactoring @ Form1.cs:
new class: CodecManager
new property: IVideoSettingsProvider.CodecType
new property: MeGui.currentVideoSettingsProvider
new property: SET: MeGui.CurrentVideoSettings
2 custom warnings around calc invocation

@Doom9
please, take look @ changes!

Doom9
9th February 2006, 20:09
new property: MeGui.currentVideoSettingsProvider
new property: SET: MeGui.CurrentVideoSettingsWhy are those necessary? Aren't we just moving back to what it was before with that?

berrinam
9th February 2006, 21:07
0.2.3.2084 9 Feb 2006
Commit by berrinam:
- Removed conditional compiling around prerender generation (this would have caused it to do not generate prerender jobs)
- Fixed the video checking so that it checks the file sent to prerender jobs, as opposed to the one created by them
- Some refactoring in the deinterlace filters, to use the new class, DeinterlaceFilter.

Doom9
9th February 2006, 22:54
fyi.. tomorrow I'll start refactoring job generation and processing.. so please keep your hands off anything that touches them. It'll at least take until Sunday to arrive at a working state.. perhaps even longer.

berrinam
9th February 2006, 23:12
I hope this didn't clash with what you are doing:

0.2.3.2085 9 Feb 2006
Commit by berrinam:
- Redo codec configuration dialogs. They all extend from VideoConfigurationDialog.
- Creating a new video profile now works in the same way that new audio profiles do.
It shouldn't -- there were very few changes made to architecture.

Additional notes:
All the video dialogs extend from the one class, and it is set up so that, for EditSettings, the only bits that need to be codec-specific is the constructor. Once you have constructed them individually, you can use common code for all the rest (including the AVC levels... that information is included in the base class, even though it is only used by x264. The idea is that someday we will have more AVC codecs). Maybe some refactoring of EditSettings would be worthwhile, as there is still some code which is duplicated.

berrinam
10th February 2006, 06:37
0.2.3.2086 10 Feb 2006
Commit by berrinam:
- Fix bug which caused changing x264's b-frames not to trigger an update.
- Fixed zones bug in configuration dialogs
- Removed a line of conditional compilation. compile full-svn is now identical to compile full

dimzon
10th February 2006, 11:30
Why are those necessary?
Yes.
Aren't we just moving back to what it was before with that?
No

ChronoCross
11th February 2006, 01:58
0.2.3.2087 10 Feb 2006
Commit by berrinam:
- Re-add SVN conditional compiling, which just removes RDO2 and renames the window
- Fix up some display problems with x264 configuration

berrinam
11th February 2006, 13:51
0.2.3.2089 11 Feb 2006
Commit by berrinam:
- Fix AviSynth profile changing in the AviSynth window. It now uses SelectedItem.ToString() instead of SelectedText. This should cause it to actually use the profiles now

0.2.3.2088 11 Feb 2006
Commit by berrinam:
- Fix up crf workings with new x264 config dialog. All this code should be redone. It's in a mess.

Doom9
11th February 2006, 15:25
Originally Posted by Doom9
Why are those necessary?
Yes.Not quite the answer you can give to a why question. However, I found them to be very useful in my current work. You're going to love it.. now not only are codec options tied to dropdowns, but the whole encoder choice, filters for open/save dialogs, container types are all dynamically generated (well.. will be once I'm done), making it very easy to add another encoder. The same also goes for audio and muxers. support for raw AAC will be added because avimuxgui needs it, and because the winamp encoder can't provide mp4 output.

And asp profiles and levels are also looming now that xvid_encraw seems rather feature complete (now I just need an asp level table). Support for besweet encoding may have to go as well.. if it's no extra work to keep it around, I might get rid of it at some later point, but looking at the while input output type thing, it's likely that my next commit will get rid of besweet encoding. On top of that, x264/xvid encoding via mencoder will no longer be possible either (it's possible to have multiple encoders for the same thing but I don't think I want to bother with that anymore). However, looking at AAC, we have a similar situation so I'll raise the question again: should we have just audio codecs in the dropdown and have some encoder selection behind that (nero, faac, winamp), so that encoders and codecs are clearly separated, or keep muddying the water by having encoder types in the audio codec dropdown as well?

All this code should be redone. It's in a mess.Are you volunteering?

berrinam
11th February 2006, 22:38
Are you volunteering?Only if I know what is going on there.
1. What is the standard we are adopting with enabled/disabled and checked/unchecked? So basically, if it is disabled but checked, what do we interpret that as?
2. Do I run all modifications from one method (the way it currently works), or do I have separate event handlers for the separate things that need handling (the way it worked before I redid the dialogs)?

Doom9
11th February 2006, 23:40
if it is disabled but checked, what do we interpret that as?Same as enabled and checked.
Do I run all modifications from one method It's probably better to have the enabling/disabling and unchecking in a single method.. that makes it easier to follow the logic and find bugs.

berrinam
12th February 2006, 06:12
How should MeGUI respond in the following situations:
1. The user selects High Profile, checks i8x8, then selects main profile, which unckecks it. The user the selects High Profile again. Does this revert back to i8x8 checked, or not?
2. If it does, then what happens if we have the above, but when the user goes back to main profile, he/she unchecks all of the options. When going back to HP, it would be a surprise to find one of them checked again (or even all of them checked again).

I think the easiest solution is just to disable things to meet the required level, and not re-enable them again. I believe that MeGUI used to work that way, and the benefit of that is the user knows what to expect. I think any other way is too predictable.

Sorry that I am not informed about this situation. I know that people were discussing it a while ago, but I just kept out of it as it didn't affect me much either way -- profiles mean you shouldn't need to be fiddling with all of that stuff much, anyway.

Doom9
12th February 2006, 14:04
Does this revert back to i8x8 checked, or not?It doesn't check it.. checking it would mean tri-state.. the gui remembering what was set before. Main profile doesn't allow i8x8, so when you select main profile, i8x8 becomes unchecked, and disabled. When you select the high profile again, i8x8 becomes enabled but remains unchecked. Thats WYSIWYG. The only place where there is no WYSIWYG is for automated job series.. you can't show 2/3 jobs in the GUI at once.

berrinam
12th February 2006, 20:22
It doesn't check it.. checking it would mean tri-state.. the gui remembering what was set before. Main profile doesn't allow i8x8, so when you select main profile, i8x8 becomes unchecked, and disabled. When you select the high profile again, i8x8 becomes enabled but remains unchecked. Thats WYSIWYG. The only place where there is no WYSIWYG is for automated job series.. you can't show 2/3 jobs in the GUI at once.
Ok, sure. That makes it all much easier to manage. I thought that people wanted it differently in the past, though, which was causing all the problems....

Mutant_Fruit
13th February 2006, 01:00
Just an update for ye: The code for the AutoUpdate section is about 90% finished. I'm just tidying it up a bit and trying to break it. When its done, i'll post it up here and i'm sure ye'll all have ideas on how to make it better. Theres probably much better ways of doing some things, so please, point them out.

Even if it isn't deemed good enough, it could do as a base for someone else to work off to write a better AutoUpdate section. But feel free to let rip about how bad it is (so long as ye give me pointers on how to improve) :P

berrinam
13th February 2006, 06:47
The only place where there is no WYSIWYG is for automated job series.. you can't show 2/3 jobs in the GUI at once.
Same with turbo? If you check turbo in a first pass mode, then it disables heaps of options, so you will have to reenable them yourself?

berrinam
13th February 2006, 08:23
However, looking at AAC, we have a similar situation so I'll raise the question again: should we have just audio codecs in the dropdown and have some encoder selection behind that (nero, faac, winamp), so that encoders and codecs are clearly separated, or keep muddying the water by having encoder types in the audio codec dropdown as well?I think that all the different encoders should be listed in the main form, because there can be a substantial difference between encoded output, depending on the encoder (just look at XviD vs. DivX vs. 3ivX vs. LMP4, etc). This situation is different from the video situation, because the same encoder core is still used, irrespective of whether mencoder or x264CLI is used for x264 encoding.

Perhaps the codec dropdowns for audio and video should show the standard in brackets, so we get something like this:
x264 (AVC)
XviD AVC (AVC) [when this comes]
XviD (ASP)
LMP4 (ASP)
Snow (Snow)

and

FAAC (AAC)
NAAC (AAC)
LAME (MP3)

Sharktooth
13th February 2006, 09:01
before getting to the hospital i was working on a method to recognize the x264 build version (svn or custom) at runtime.
well, since i dont know when i will be able to get out of this situation i decided to share the concepts of this method so it can be implemented by someone so some CC code can be removed.
The x264 build can be identified from the output of the cli encoder. My build has "built by Sharktooth" in stderr (see this patch: http://files.x264.nl/force.php?file=./Sharktooth/x264_patches/x264_signature.diff ), so invoking x264.exe and parsing the output will reveal if it is SVN or my build.
Second step, checking the megui settings at every startup and when defining/changing x264.exe path. if x264.exe path is defined just do the previous check and store the result in settings.
Third step, removing all the conditional compilation differences between x264/full and x264/full-svn, adding the same conditions at runtime (checking the settings) by enabling and disabling the affected controls.
The actual differencies between svn and my builds are: subme 7 and adaptive quantization.
This method doesnt need much effort to be implemented and can be also used for other custom builds by other ppl and it's really easy to update.
when i'll be back i'll implement a complete and intelligent CLI option parsing method with automatic command line generation.

Doom9
13th February 2006, 09:04
Same with turbo?Yup. The only exception are the automated modes.. they cannot be represented because they are megui internal (and create multiple jobs)

dimzon
13th February 2006, 11:09
However, looking at AAC, we have a similar situation so I'll raise the question again: should we have just audio codecs in the dropdown and have some encoder selection behind that (nero, faac, winamp), so that encoders and codecs are clearly separated, or keep muddying the water by having encoder types in the audio codec dropdown as well?

I'm agree with berrinam in this case - http://forum.doom9.org/showthread.php?p=784971#post784971


By the way: take look @ IVideoSettingsProvider.CodecType property ( Xvid returns ASP bcz XviD is MPEG4 ASP )

dimzon
13th February 2006, 11:15
Re-add SVN conditional compiling, which just removes RDO2 and renames the window
I propose a little different approach. Mabe bettet just to march unsupported by SVN features by "(*)" in GUI:

Example
RDO
RDO2 (*)

dimzon
13th February 2006, 11:17
@Doom9
Where are your commit?

Sharktooth
13th February 2006, 11:23
I propose a little different approach. Mabe bettet just to march unsupported by SVN features by "(*)" in GUI:

Example
RDO
RDO2 (*)
Have you read my previous post?

Doom9
13th February 2006, 13:01
take look @ IVideoSettingsProvider.CodecType property ( Xvid returns ASP bcz XviD is MPEG4 ASP )I changed that.. CodecType reflects the actual encoder.. For audio I'm still undecided

Where are your commit?I'm nowhere near done, it'll take much longer to get it all done because it involves changing so much hardcoded stuff.

dimzon
13th February 2006, 13:03
I changed that.. CodecType reflects the actual encoder...
Can you tell me why? Is'nt XviD MPEG4 ASP? Does it mean XviD AVC will return XviD_AVC ?

Doom9
13th February 2006, 14:41
Does it mean XviD AVC will return XviD_AVC Yes.. it is completely irrelevant for megui to know if something is avc or asp.. it's important to know which codec is to be used though (this is done implicitly via settings, and from that I now can get the proper encoder to handle such a job, as well as the filter to be set on the fileopen dialog (which input types.. at the moment it's avs for all encoders, which containers are supported, and the fileopen dialog filter for the output filename (all extensions the encoder supports directly without any muxer interference).

dimzon
13th February 2006, 14:49
(this is done implicitly via settings)
In this case why does you duplicate this information in yet another property? I think CodecType must provide us codec family (like ASP for Lavc/XviD/DivX, AVC for x264 and XviDAVC etc)

as well as the filter to be set on the fileopen dialog (which input types.. at the moment it's avs for all encoders, which containers are supported, and the fileopen dialog filter for the output filename (all extensions the encoder supports directly without any muxer interference).
How about to add somethig like this:
FileType[] IVideoSettingsProvider.GetSupportedInputTypes()
FileType[] IVideoSettingsProvider.GetSupportedOutputTypes()

instead of writing switch on CodecType?
Polyphormism is great, use it!

Doom9
13th February 2006, 15:21
uh.. please just sit back and relax.. I changed a LOT of enums, removed things that are no longer needed, grouped everything together to a common place.
instead of writing switch on CodecType?There are no more switch statements.... you won't recognize the code anymore once I'm done.. it's really a huge change.

dimzon
13th February 2006, 15:24
There are no more switch statements.... you won't recognize the code anymore once I'm done.. it's really a huge change.
Ok, will wait your commit !

berrinam
14th February 2006, 11:47
Apart from the x264 dialog, only some small changes:

0.2.3.2090 13 Feb 2006
Commit by berrinam:
- Fix applyForceFilm so that it works with DGIndex 1.4.6 as well as previous versions (resolved fractional framerate issue)
- Catch video errors in applyForceFilm so that it doesn't cause a silent crash. Left a warning note about the d2vReader.
- Redo x264 TriState code

Doom9
14th February 2006, 12:25
- Redo x264 TriState codeDon't you mean remove?
By the way, the x264 dialog has some stuff in the first tab that really doesn't belong.. fourcc can be dumped (mencoder for x264 is no longer supported in the refactored version), psnr is really not an option you want to confront people with in the first tab and I also have severe doubts about sar (that's something for advanced users and special interest groups) and the number of threads (seeing as we can set this automatically).

Sharktooth
14th February 2006, 12:31
SAR could be automatically set as well.
it just needs the original movie AR to be set somewhere (for example in the video preview)...

Doom9
14th February 2006, 12:33
SAR could be automatically set as well.It is done in one click mode and if you create your avs with the avisynth script creator and activate that option. It really can't be done in any other case.. if the user loads a self-inflicted avs file, we have no clue as to the source resolution and aspect ratio of the source.

dimzon
14th February 2006, 12:38
It is done in one click mode and if you create your avs with the avisynth script creator and activate that option. It really can't be done in any other case.. if the user loads a self-inflicted avs file, we have no clue as to the source resolution and aspect ratio of the source.
Maybe we can add some magic macros to avs script? Something like


bla bla bla
bla bla bla
# $MeGUI_SAR(1.34)

and analyze avs when opening?

Doom9
14th February 2006, 12:57
And what would be the point of that? If the user knows what to type, they can to go the codec configuration and do it themselves. If not.. its already being kept when you create an avs from within megui and in one click mode.. I really dont see any other place where it would possibly make sense to add anything.

dimzon
14th February 2006, 13:14
And what would be the point of that? If the user knows what to type, they can to go the codec configuration and do it themselves. If not.. its already being kept when you create an avs from within megui and in one click mode.. I really dont see any other place where it would possibly make sense to add anything.
It allows to create external software for AVS creation.
In this scenario user can use software X with rich WYSIWYG AVS editing abilities to create script then just use this script as input in MeGUI. Off couse software X must know about such magic macros.
Looking in the future it's possible to add such AVS parsing directly into some encoders and other software can use this macro too. It can even be "standart-de-facto" as lame tag is :D

By the way: I propose C#-like XML comments syntax for this (it allows additional extensibility in future)

### <ClipGlobals>
### <SAR>1.321</SAR>
### </ClipGlobals>

Sharktooth
14th February 2006, 14:37
i like the idea.

dimzon
15th February 2006, 21:16
finally I have internet connection @ home
now I can write code @ nights ;)

dimzon
17th February 2006, 09:17
I believe such way is much better then slices http://forum.doom9.org/showthread.php?t=102119
according slicev I must say: at least Russian community doesn't like it at all. For multipass encoding there are much better methods (without quality sacrifice)

Sharktooth
17th February 2006, 09:21
2 slices = -0.001db to -0.01db... not that big quality loss and it will enable multithreaded decoding too...
i would reccomend always using 2 slices (threads) even on non multicore/HT CPUs coz it will help decoding with nero (on those CPUs) and future multithreaded decoders.

dimzon
17th February 2006, 11:15
2 slices = -0.001db to -0.01db... not that big quality loss and it will enable multithreaded decoding too...
My friends from Russian community tells me about ugly quality of HDTV AVC encoded with 6 slices coming from satellite...

Sharktooth
17th February 2006, 11:32
6 slices are maybe excessive. however i tested 1 and 2 slices and there's no visible difference.

dimzon
17th February 2006, 11:36
however i tested 1 and 2 slices
Don't forget - multicore CPU is our future! So existing speedup is not good for them

dimzon
17th February 2006, 16:25
0.2.3.2091 17 Feb 2006
Commit by dimzon:
- Fixed UI bug in LameConfigurationDialog

bkman
18th February 2006, 09:04
Sorry to interject, but can I ask when the next "stable" release is planned? I have been using Chrono's builds, but they are rife with bugs. Like deleting intermediate files even if muxing fails... Yeeesh.

Sharktooth
18th February 2006, 09:17
check the bugreport thread and if the bugs you're experiencing are not yet reported please post them so the devs can fix them.
the new stable will be released when all reported bugs will be fixed.

Sharktooth
18th February 2006, 11:50
@devs: what's the status of those patches: http://sourceforge.net/tracker/?atid=798478&group_id=156112&func=browse

fight2win
18th February 2006, 11:57
please fix shutdown feature
Ya chronocross dude, pls fix shutdown feature!

Sharktooth
18th February 2006, 12:08
please dont start posting "fix this! fix that!"... the bug has been reported and devs (not chronocross) are working on fixes.

berrinam
18th February 2006, 13:21
@devs: what's the status of those patches: http://sourceforge.net/tracker/?atid=798478&group_id=156112&func=browse
I've posted comments on all but two of them saying that they are applied and should be deleted, but not being an admin, I was unable to do that.

berrinam
18th February 2006, 13:42
@devs: Can you look over at my post here (http://forum.doom9.org/showthread.php?p=787266#post787266)? I meant to post it in this thread, but I posted it in the wrong place. I left it there because it seems somewhat appropriate, so can you look over there anyway?

@dimzon: I was looking through the audio encoder code to see how to add the various forms of upmixing to the AviSynth Script Creator. I don't really like the current way it works: you have all the required filters embedded in your AviSynth script, which means that (a) if the script were actually written to a file, it would be unnecessarily long, (b) no-one else can access the filters, because they are hidden by MeGUI, and (c) they can't be replaced or tweaked by the savvy user.

What I propose is that they be exported as actual scripts (*.avsi files) which be put in the AviSynth plugins directory, and they will be autoloaded. When we get AutoUpdate from Mutant_Fruit, it can be joined into that. I also think it would be a good idea to refactor the audio processing into the ScriptServer class, just like denoising and resizing. Of course, that depends on the response to the post I linked to above.

I also don't think that GUID mess is really a good idea once users start to look at the scripts. Shouldn't those mixing filters be just like any other filters and the authors (whoever they are) should be responsible for not naming them in ways that clash?

Sharktooth
18th February 2006, 13:52
could anyone review the status of those uncommitted patches and eventually (if ok) commit them so we can close them and go for the next "stable" release before implementing new features.

Mutant_Fruit
18th February 2006, 19:28
Ok, i've been quite busy over the last two weeks finishing off a college assignment, but i've finally got around to having a working "beta" of the AutoUpdate.

Check the form1 Load event to see where i initially call the updater. Please, feel free to bitch and moan about how i didn't do this or didn't do that. I wouldn't be surprised if i did things in a roundabout kinda way.

Even if ye don't want to use this code, any pointers on how i could make it better would be greatly appreciated.

Currently nothing is being written to the log textbox, but that will change soon. Also, i amn't saving the settings to a file yet (but i have written code to load the settings :rolleyes:). Break it in any way you can. And any advice on improving (or complaining about how a certain section is just stupid) is appreciated.

http://www.fileshack.us/files/741/AutoUpdate.zip

EDIT: The XML file and "updated versions" can be found on http://megui.org if you want to take a look at what i have there.

EDIT: At the moment only 7-8 files are supported for the AutoUpdate, but this could be extended to any file that MeGUI uses (i.e. lame, avisynth and whatever else you please)

dimzon
19th February 2006, 13:00
@dimzon: I was looking through the audio encoder code to see how to add the various forms of upmixing to the AviSynth Script Creator. I don't really like the current way it works: you have all the required filters embedded in your AviSynth script, which means that (a) if the script were actually written to a file, it would be unnecessarily long, (b) no-one else can access the filters, because they are hidden by MeGUI, and (c) they can't be replaced or tweaked by the savvy user.
At first you must realize - current solution is JUST A FAST HACK to add AviSynth audio to current MeGUI architecture to avoid any significant refactoring (Doom9 ask me about it)

Just spent 1-2 hours to take look @ BeHappy and BeHappy source - there are another and much more flexible way for it. Maybe we can use same ideology in MeGUI?

Sharktooth
19th February 2006, 17:16
sourceforge added the possibility to migrate from cvs to svn.
docs are here:
http://sourceforge.net/docs/E09/en/#use

i propose the migration to SVN since it's faster and it's much better than CVS.
opinions?

dimzon
19th February 2006, 19:00
sourceforge added the possibility to migrate from cvs to svn.
docs are here:
http://sourceforge.net/docs/E09/en/#use

i propose the migration to SVN since it's faster and it's much better than CVS.
opinions?
cool! seems like it can work over http(s)
but take look @ SVN Limitations first

Sharktooth
19th February 2006, 19:36
CVS Update:

0.2.3.2092 19 Feb 2006
Commit by Sharx1976:
- Fixed a few bugs with number of frames changing from what the user inserts (patch by Mutant_Fruit).

ChronoCross
19th February 2006, 22:54
I'll make a build as soon as I get caught up. I was out of town for the weekend.

Doom9
20th February 2006, 13:02
what about tools to use svn? and I guess most importantly: is the anonymous svn any better than the anonymous cvs (which by all reports sucks big time as it's almost never online).

dimzon
20th February 2006, 13:05
what about tools to use svn? and I guess most importantly: is the anonymous svn any better than the anonymous cvs (which by all reports sucks big time as it's almost never online).
As I said before take look @ SVN limitation first
and I still worry about losing previous history during migration

Sharktooth
20th February 2006, 14:14
what about tools to use svn? and I guess most importantly: is the anonymous svn any better than the anonymous cvs (which by all reports sucks big time as it's almost never online).
if you use tortoisecvs then there's tortoisesvn. or classic svn commandline tools.
for example videolan uses svn.
for what concerns the anonymous svn on SF, well... i dont know.

Doom9
20th February 2006, 15:09
As I said before take look @ SVN limitation firstNothing listed there really has me concerned. But then again I also haven't seen any advantages yet.

BTW, an update on the refactoring: I've been sick since Wednesday and prior to that didn't have the motivation (plus that week-end before I had a little party with the usual after effects that prevent you from doing anything really productive the day after) to get much done. Right now, video encoding is working, including an automatic container dropdown selection in function of whatever encoder can be found for the desired codec. I've finally settled for doing this for audio as well, but there we mostly have no container, and only offer container selection in case of MP4 (I'm afraid AAC in AVI requires raw AAC).. MP4 will be the default though (you just have to register the mp4 container before the none container when registering the avisynth audio encoder). Other than that I have the muxpath selection code written but that's it. And right now I feel like shit so I'm not much for doing anything productive for work so naturally nothing goes for megui either :(

Sharktooth
20th February 2006, 15:45
Nothing listed there really has me concerned. But then again I also haven't seen any advantages yet.
better revisioning system, easier management, faster access (except the SF svn server box is slower so it will be basically as fast as cvs for now), less crashing, better win32 client with more functionalities, better patching system (svn diff will automatically produce a unified diff from your local copy and the svn repository), etc....

dimzon
20th February 2006, 21:23
white = Blankclip(white) #pseudo-code
black = blankclip(black) #pseudo-code
conditionalfilter(inputclip, white, black, "YDifferenceFromPrevious*0.5 + UDifferenceFromPrevious*.25 + VDifferenceFromPrevious*.25", "<", ".5")
I don't see why your C++ code would be faster than Assembly-optimized AviSynth code.
Maybe You are right
I'm worry about possible overhead caused by AviSynth itself especially conditionalfilter. Maybe we need AviSynth developers consultation?

dimzon
20th February 2006, 21:38
@berrinam
maybe we can use FrameEvaluate instead of ConditionalFilter to set global variable
FrameEvaluate(inputclip,"global g_bIsSceneChange = ( YDifferenceFromPrevious*0.5 + UDifferenceFromPrevious*.25 + VDifferenceFromPrevious*.25 < .5)?false:true")
in this case I can add special method to AviSynth wrapper to allow read-only access to global numeric/bool/string variables :cool:

berrinam
20th February 2006, 23:36
I'm worry about possible overhead caused by AviSynth itself especially conditionalfilter. Maybe we need AviSynth developers consultation?Yes, there could be some form of overhead. I agree that FrameEvaluate would be a better way, if possible.
@berrinam
maybe we can use FrameEvaluate instead of ConditionalFilter to set global variable
FrameEvaluate(inputclip,"global g_bIsSceneChange = ( YDifferenceFromPrevious*0.5 + UDifferenceFromPrevious*.25 + VDifferenceFromPrevious*.25 < .5)?false:true")
in this case I can add special method to AviSynth wrapper to allow read-only access to global numeric/bool/string variables :cool:
Yes, if you can do that, that is a better way. I didn't think that was possible, but if you can do it, that's great. Once you've done that, we could also use that for automatic source detection, because that uses frame evaluate and outputs the results to a temp file.... skipping the temp file would be nice.

@all devs: Also, what do you think about what I proposed on the Guide thread? I suggested that we replace MeGUI's cropping and resizing code with AviSynth. I'm sure it would be much faster.

dimzon
20th February 2006, 23:49
@all devs: Also, what do you think about what I proposed on the Guide thread? I suggested that we replace MeGUI's cropping and resizing code with AviSynth. I'm sure it would be much faster.
I must take look @ current code first but i do not think it would be too much faster.

Richard Berg
21st February 2006, 04:01
Why should MeGUI do its own cropping & resizing? That sounds like a really bad idea. What advantage would that have? Who would write that code? Would it handle all colorspaces correctly? Would it obey all of Avery's guidelines (http://www.virtualdub.org/blog/pivot/entry.php?id=86#body)? Would it be faster than all of Avisynth's ASM routines?

berrinam
21st February 2006, 06:09
I must take look @ current code first but i do not think it would be too much faster.Not faster? MeGUI is written in the slow C#, whereas AviSynth is ASM optimized. Just as Richard says,
Would it be faster than all of Avisynth's ASM routines?

I can see the overheads: a new filter would have to be applied every time the cropping or size is changed, and perhaps the entire filter-chain would have to be re-rendered. But still, the AviSynth cropping and resizing functions are definitely faster than the MeGUI/C# ones, so if there was a way to run specific filters on a source of your choice, then it would be faster (something like the way you always convert the output to the same colorspace for previewing). Basically, the idea is that we could replace the two functions, VideoUtil.crop and VideoPlayer.resizeBitmap, with AviSynth's cropping and resizing functions respectively. I don't see how that would be slower, if it were possible.

Why should MeGUI do its own cropping & resizing?Well, it currently does (not on the final file, but for previewing in the AviSynth creator, and in the main window). The cropping code was written by Doom9 as an adaptation from the GK one, and I made it significantly faster by using unsafe code in C#. The resizing code uses C#'s bilinear resizing. The other issues you mentioned are not a problem, because they it is just used for the preview, not the final thing.

dimzon
21st February 2006, 08:42
I can see the overheads: a new filter would have to be applied every time the cropping or size is changed, and perhaps the entire filter-chain would have to be re-rendered.
Yes, I mean exatly this. Dont't take me wrong BUT recreate/reparse AviSynth every time when you rerform resize/cropping and re-rendering filter chain - it cam be a real CPU killer for slow scripts (like my scripts are - i'm using fft3dfilter)
I see realiy yet another solution for it:

AviSynthClip original = ....;
...
AviSynthClip resized = original.Execute("bilinearresize(640,480)");


unfortunally this approach requres significant research and changes in AviSynth wrapper. And there can be threading issues...

berrinam
21st February 2006, 10:17
Yes, I mean exatly this. Dont't take me wrong BUT recreate/reparse AviSynth every time when you rerform resize/cropping and re-rendering filter chain - it cam be a real CPU killer for slow scripts (like my scripts are - i'm using fft3dfilter).Yes, I can see that clearly is a problem. However, for cropping, that should never happen -- the preview for cropping should only have a source filter. I think that the preview in the AviSynthWindow could certainly benefit from this sort of thing, even if not the preview for the main form.

Also, the current situation suffers from this problem, too; for resizing and recropping, the image is re-requested from AviSynth, but this problem may be alleviated by AviSynth's internal caching.

I see realiy yet another solution for it:

AviSynthClip original = ....;
...
AviSynthClip resized = original.Execute("bilinearresize(640,480)");


unfortunally this approach requres significant research and changes in AviSynth wrapper. And there can be threading issues...That is the sort of thing that I was talking about. I still don't know how plausible it is, but now we at least agree with each other.

dimzon
21st February 2006, 10:23
Yes, I can see that clearly is a problem. However, for cropping, that should never happen -- the preview for cropping should only have a source filter
Source can be other AVS including slow filters

but now we at least agree with each other
Yes

Richard Berg
21st February 2006, 17:51
Ok, so it's just for preview. Why not use the videocard to scale then? Heck, we could even use VMR9 -- we already require .Net 2.0 so requiring DX9 is no big deal.

Doom9
21st February 2006, 18:21
I got lost about 1.5 pages ago.. one post seems to have no relation to the next and I'm supposed to see posts and only Swede, bond and myself can physically delete messages in this subforum..

Richard Berg
21st February 2006, 18:31
Well, that's what happens when you put discussion about the entire product into one thread. FWIW, I was talking about how to get rid of the custom resizer code that's apparently in MeGUI. Since it's used for playback, the obvious answer is to let the playback control handle scaling.

stax76
21st February 2006, 19:16
I'm using like AutoGK the AutoCrop filter for auto crop.

For fast drawing I access private .NET internals with Reflection:


Public Function GetBMPFromDib(ByVal pDIB As IntPtr) As Bitmap
Dim pPix As IntPtr = New IntPtr(pDIB.ToInt32() + Marshal.SizeOf(GetType(BITMAPINFOHEADER)))

Dim mi As MethodInfo = GetType(Bitmap).GetMethod("FromGDIplus", BindingFlags.Static Or BindingFlags.NonPublic)

Dim pBmp As IntPtr = IntPtr.Zero
Dim status As Integer = GdipCreateBitmapFromGdiDib(pDIB, pPix, pBmp)

Return CType(mi.Invoke(Nothing, New Object() {pBmp}), Bitmap)
End Function


To draw cropped and scaled I'm using this code:


Dim factorX As Single = CSng(Control.Width) / img.Width
Dim factorY As Single = CSng(Control.Height) / img.Height

Dim left As Single = CropLeft * factorX
Dim right As Single = CropRight * factorX
Dim top As Single = CropTop * factorY
Dim bottom As Single = CropBottom * factorY

Dim rectDest As RectangleF = New RectangleF()

rectDest.X = left
rectDest.Y = top
rectDest.Width = Control.Width - left - right
rectDest.Height = Control.Height - top - bottom

Dim rectSrc As Rectangle = New Rectangle()

rectSrc.X = CropLeft
rectSrc.Y = CropTop
rectSrc.Width = img.Width - CropLeft - CropRight
rectSrc.Height = img.Height - CropTop - CropBottom

g.DrawImage(img, rectDest, rectSrc, GraphicsUnit.Pixel)

Dim sb As SolidBrush = New SolidBrush(Color.White)

g.FillRectangle(sb, 0, 0, left, Control.Height)
g.FillRectangle(sb, 0, 0, Control.Width, top)
g.FillRectangle(sb, Control.Width - right, 0, right, Control.Height)
g.FillRectangle(sb, 0, Control.Height - bottom, Control.Width, bottom)


All this is pretty fast as StaxRip demonstrates.

dimzon
21st February 2006, 19:32
For fast drawing I access private .NET internals with Reflection
This is a really dirty hack! Do not use it!

Richard Berg
21st February 2006, 20:25
I still don't understand why we'd stoop to the level of writing resizer code, blitting raw DIBs to the screen, etc. That's what DirectX is for.

Doom9
21st February 2006, 20:46
finally some good news from the refactoring front: audio now uses the same logic as video.. codecs and encoders are registered, and upon selecting an audio codec, the supported output types (containers) are gotten. Audio input and output filters are set according to whatever an encoder supports and audio job generation now fully resides outside form1.

I don't think at this point it makes a lot of sense to argue about resizing. Have a mouthful of this: currently we have a preview with intro/credits setting preview, another one for zones, and another one for plain preview without any possibility to set anything. On top of that there will be a cutter window as well. Now, when should they be accessible, does it make sense to limit their number, and where are the individual settings saved (intro/credits, zones, cutlists)?
Who cares if the resizeable preview is a bit slower than it can be.. those are just beautifying issues that can be looked into if there are no open feature requests and bugs and no more oustanding refactoring.. now when the whole project is in the thick of all of those categories.

dimzon
21st February 2006, 21:22
@Doom9
talking about RAW AAC output - i don't like it bcz we need explicit SBR signaling.
In this case I propose to use special markers in filename:
bla-bla-bla (SBR).aac

Richard Berg
21st February 2006, 21:23
Well, if it's already done, then so be it. Don't mess with it unless it's broken or too slow.

Doom9
21st February 2006, 21:25
i don't like it bcz we need explicit SBR signaling.The default is MP4 output for all encoders (well... you can control that by the order in which you send back the container types when you register the output types with the encoder). The thing is I need raw aac for aac in avi.. other than that.. it's the users fault if he screws things up.. we can only do so much to prevent people from doing stupid things. And of course.. when I create the muxjob I can set that flag manually when I look at the audio streams..

stax76
21st February 2006, 21:33
This is a really dirty hack! Do not use it!

My code is full of hacks and dirty tricks like cloning complex object graphs with serialization or comparing complex object graphs with reflection, or aborting by throwing exceptions, not everybody considers that as hack by the way ;)

Sharktooth
22nd February 2006, 23:13
CVS update:

0.2.3.2093 22 Feb 2006
Commit by Sharx1976:
- Fixed a bug in the calculator introduced in 0.2.3.2092 (patch by Mutant_Fruit).

berrinam
23rd February 2006, 10:30
0.2.3.2094 23 Feb 2006
Commit by berrinam:
- Fixed bug in 'One Click Profile Setup' which didn't allow selected profile to be selected

Sharktooth
23rd February 2006, 10:45
i cleaned the SF patches section a bit.
There are still 2 patches there, any comments?

@berrinam: what does your previous post mean? it should be 2094, not 2092...

note:
CVS Update:

0.2.3.2092 19 Feb 2006
Commit by Sharx1976:
- Fixed a few bugs with number of frames changing from what the user inserts (patch by Mutant_Fruit).

berrinam
23rd February 2006, 11:01
@berrinam: what does your previous post mean? it should be 2094, not 2092...Yep, typo.... fixed.

Doom9
23rd February 2006, 11:02
@berrinam: I've been meaning to make some suggestion to the one click tool (which I still consider your baby.. I may have messed it all up twice now but that only makes the mess mine): 1) Enable the codec dropdown and make it limit the video profiles that remain accessible (aking to limiting profiles when you enter a codec configuration dialog), 2) have two audio profiles so that the two audio tracks can have different settings, 3) Upon selecting the container, limit the audio profiles to whatever's supported (that really goes into territory I'm currently working on).
Let me elaborate three: What do you guys (all developers) think about the following workflows:
1) a: user selects video codec, b: user selects audio codec, c: user selects container, d: megui picks the proper output type for audio and video (that's the most complex case.. as you know we can have .264/mp4/mkv output from x264.exe for instance and .aac or .mp4 output from nero/faac)
2) a: user selects video codec, b: user selects video output type (basically container.. but I call it type because there are two types of no container, raw avc and raw asp), c: user selects audio codec, d: user selects audio output type (same logic as for video), e: megui offers compatible containers (if any). This is what I currently have mostly working for the one click mode
3) a: user selects container, b: megui limits audio and video codec selection to whatever it can accomodate with the existing muxers, c: user makes further choices in audio/video codec and output types

Keep in mind, all three are done fully automatic.. there's a videoencoderprovider, an audioencoderprovider and a muxprovider and between the three of them, they do all the work (so you can ask the muxprovider questions like "I have a raw avc stream, two mp3 streams, what can you mux that into?)

Doom9
23rd February 2006, 11:06
about the patches: 1408670: that's by design and should not be removed. Plus, it's already a moot point as that restriction will be gone with my next commit (when that will be, god only knows.. once again I managed to set out to do something and end up doing something else completely.. making the whole setup structure flexibly.. yesterday I completely rewrote all bitrate calculation routines even to adapt to that new flexibility.. now even if at some point I should fall on my head and relax the two audio stream restriction, the calculator can accomodate that now with no changes (except the gui needs changes of course)).
Hasn't 1417477 already been integrated?

berrinam
23rd February 2006, 11:12
@berrinam: I've been meaning to make some suggestion to the one click tool (which I still consider your baby.. I may have messed it all up twice now but that only makes the mess mine): 1) Enable the codec dropdown and make it limit the video profiles that remain accessible (aking to limiting profiles when you enter a codec configuration dialog), 2) have two audio profiles so that the two audio tracks can have different settings, 3) Upon selecting the container, limit the audio profiles to whatever's supportedI may have a look at these after your commit, but I'm quite busy at the moment, so I don't know how soon to expect anything.

(that really goes into territory I'm currently working on).
Let me elaborate three: What do you guys (all developers) think about the following workflows:
...
I prefer 1) and 2), because they don't require the user to know which containers support which formats. I don't see too much difference between them except that 2) allows more customisability in container formats, and 1) is easier for beginners.

Doom9
23rd February 2006, 11:26
[quote]except that 2) allows more customisability in container formats, and 1) is easier for beginners.[quote]Actually, 2) places additional limitations because the video and audio output types have already been chosen. E.g. AACinMP4 is a nogo if you're aiming for AVI (avimuxgui does raw aac only), and similarly, currently rawaac is a nogo for mkv/mp4 (not because the muxers can't handle it, but because I block it and will only allow it when I'm ready to automatically send the SBR flag to the muxer along with the audio stream to ensure proper flagging in all cases.. aacinmp4 requires no such flagging).

But 1) is the most complex.. when you go auto mode, you disregard output extensions completely and have to redo everything manually (well.. you ask muxer and encoder providers what they can do and somehow try to match it, then apply whatever changes need to be done because when you go from the main gui to the autoencode window, the output types are already given).

Sharktooth
23rd February 2006, 11:30
ok... all patches on SF have been "closed".

ChronoCross
23rd February 2006, 19:20
0.2.3.2094 23 Feb 2006
Commit by berrinam:
- Fixed bug in 'One Click Profile Setup' which didn't allow selected profile to be selected

Sharktooth
23rd February 2006, 20:31
it should be 0.2.3.2095...

EDIT: ehr... no.

ChronoCross
23rd February 2006, 20:40
From #x264:
[01:35] > sharktooth: the version count is off on megui. someone doubled up numbers
[01:37] > sharx1976 got confused when he committed.
[01:38] > then berrinam only looked at the next one down (where the numbering was wrong) so he committed under 2094 rather than 2095


This might be intentional numbering if the commit of 2093 was only slightly corrected, which I think it was because he commited nearly the same thing 2 minutes later with a one line offset.

ChronoCross
23rd February 2006, 20:46
0.2.3.2095 23 Feb 2006
Commit by berrinam:
- Fixed bug in 'One Click Profile Setup' which didn't allow selected profile to be selected


I re-released a build of 2095(removed). It's identical to 2094 but the numbering and changelog are correct.

Sharktooth
23rd February 2006, 21:33
no.... it's 2094... everything was ok.
sorry for the confusion.

Doom9
24th February 2006, 09:02
I'm in a bit of a pickle. I'm trying to develop the world's smartest muxer based on the following public enum VideoCodec { LMP4, X264, SNOW, XVID, ANY };
public enum VideoType { AVI, RAWASP, RAWAVC, MP4, MKV, NONE };
public enum AudioCodec { MP3, AAC, VORBIS, ANY };
public enum AudioType { MP3, AC3, RAWAAC, MP4AAC, VORBIS, MP2, DTS, NONE, CBRMP3, VBRMP3 };
public enum SubtitleType { SUBRIP, VOBSUB, NONE };
public enum ContainerType { AVI, NONE, MP4, MKV };
public interface IMuxing
{
List<VideoType> GetSupportedVideoTypes();
List<AudioType> GetSupportedAudioTypes();
List<SubtitleType> GetSupportedSubtitleTypes();
List<ContainerOutputType> GetSupportedContainers();
List<ContainerType> GetSupportedContainerTypes();
List<ContainerType> GetSupportedContainerInputTypes();
Muxer GetMuxer(string muxerPath);
string GetOutputTypeFilter(ContainerType containerType);
string GetVideoInputFilter();
string GetAudioInputFilter();
string GetSubtitleInputFilter();
}
Then I have a class MuxProvider which holds a list of IMuxing implementations (each one reflecting one of the existing muxers). So far so good, now that MuxProvider needs to tell me if it can mux something:

a VideoType, an array of AudioType, an array of SubtitleType. And I don't want direct paths, I want any imaginable indirect path to be considered as well. How do you get this done without first shooting yourself? And keep in mind.. muxing paths can be as long as your number of known IMuxing interfaces, but obviously you want the most efficient path.. so for each possible muxer every input type has to be tried and it may be that you have a muxer that does your video and one of the audio types, then you attach another one to it which does the other audio type and subtitle types, and then on top of that you may have another one that just takes one container and gives you another (I'm thinking ahead to the "new container" PSPMP4).

dimzon
24th February 2006, 10:01
List<VideoType> GetSupportedVideoTypes();

why not just VideoType[] . Keep in mind - this is "static constant arrays" - you doesn't need List<> here...


I want any imaginable indirect path to be considered as well. How do you get this done without first shooting yourself?
Hm. AFAIK this is well-khown class of task for Graph theory, there must be ready solution...

Doom9
24th February 2006, 10:45
why not just VideoType[] Because I want to write code like if (mySupportedVideoTypes.Contains(VideoType.RAWASP) ..... and not iterate through the VideoType array.

dimzon
24th February 2006, 10:59
Because I want to write code like if (mySupportedVideoTypes.Contains(VideoType.RAWASP) ..... and not iterate through the VideoType array.
;)
FYI
if (-1!=Array.IndexOf(mySupportedVideoTypes, VideoType.RAWASP) ).....

Doom9
24th February 2006, 13:07
neat trick.. all those static stuff they never tell you about. But -1 !=, eww, I was taught that the value you compare to always comes last.

By the way, I have a little roadmap for you. The next stable release will see the end of major refactoring (so that may delay release since there's still quite a bit of work to be done.. that muxing chain is the most complex though) and should have no open bugs. mencoder xvid and x264 encoding will no longer be possible and avi muxing will be done via avc2avi/avi mux gui. BeSweet audio will no longer be supported.
The release after that should contain a refactored audio encoder, support more audio encoders (winamp, vorbis), should contain the one click changes I previously outlined (2 audio profiles, selection of video codec -> video profile), implement PSP support for x264 and xvid based on a separate profile (and then level verification -> resolution), xvid level and profiles, psp output support via additional muxer (new muxing type PSPMP4.. that's what I call the ContainerType of the atomchanger). With that, it's then possible to ship one click profiles that allow to create perfect PSP output.. then we can also do the same for the video iPod.
Other than that I can see a refactoring of all dialogs that contain profiles (perhaps make it a GUI component that the various dialogs can integrate), add full zone option support for xvid, and finally frame accurate cutting.

dimzon
24th February 2006, 13:18
But -1 !=, eww, I was taught that the value you compare to always comes last.
I'm writing in many languages, some of them use same sign "=" as comparission and assigment. This is VERY common error (at least for me) for C/C++ code:

if(variable=1234)
and sometimes such error is hard to detect

using my pattern (constant first)
if(1234=variable)
you will get compilation error ;)

Sharktooth
24th February 2006, 23:26
CVS Update:

0.2.3.2095 24 Feb 2006
Commit by Sharx1976:
- Some work on aesthetics

@devs: any news for the SVN?

berrinam
25th February 2006, 00:37
@devs: any news for the SVN?
I don't know how much work is involved in the change, but all I can see that is useful for us in terms of the differences is the better revisioning system, considering that we have no idea how fast SF SVN would be. So, if it is easy to change and we won't lose anything, then go ahead. I'm sure TortoiseSVN is very similar to TortoiseCVS.

Sharktooth
25th February 2006, 00:41
I don't know how much work is involved in the change, but all I can see that is useful for us in terms of the differences is the better revisioning system, considering that we have no idea how fast SF SVN would be. So, if it is easy to change and we won't lose anything, then go ahead. I'm sure TortoiseSVN is very similar to TortoiseCVS.
Well, all what it should be done is "migrating"... but SF has an automated procedure for that. It may require some time but MeGUI is not a big project so it will be ready in some minutes (or hours at least).
TortoiseSVN is quite identical to TortoiseCVS.

ChronoCross
25th February 2006, 00:49
I'm in favor of SVN. Personally I like it better than cvs.

Sharktooth
25th February 2006, 09:34
well let's wait the doom9's final "verdict" :)

dimzon
25th February 2006, 12:00
I'm against SVN migration
i'm worry about history lose
i really don't like it bcz i cant delete file from SVN

Doom9
25th February 2006, 13:24
i'm worry about history loseI don't.. never had any history when I was working on megui alone and there's no history when I make huge architectural changes over weeks without any commit. If you worry, you can check out revision by revision since the start of the CVS.
i really don't like it bcz i cant delete file from SVNWhat's the problem with that.. those files just disappear from public views.. most databases on this planet work this way.. hardly anybody hard deletes data anymore.

berrinam
26th February 2006, 04:25
@Mutant_Fruit: I tried out your automatic updating, and I am impressed. I made a few notes, about some big and some small problems:

CurrentVersion flag never appears to be set. This causes it always to update. I just read your last post, and realised that you still need to read that data from the xml file. I don't like that system, because it could easily get out of sync with the actual version of the file. If there was some way to use the version signalled by the exe itself, that would be better.
Should be able to force an update check.
Should be able to turn off update checking altogether.
Should also perhaps be support for new versions of MeGUI, and also all the AviSynth plugins and AviSynth itself. I presume this will come later.
'Update' should turn into 'OK' when finished
FileX/Y doesn't have a space in it, when displayed in the status bar.
What is the other textbox there for?
Perhaps it would be nice to have a small log of what succeeded and what didn't, etc. Is that what the textbox is for?
It crashes if you select neroraw or anything else not on the server
The status bar says finished before you've even started anything.
How easy is it to put everything in a different folder, because I don't think the root directory is the best place to keep all the files.
What is the feasibility of zipping the files to make downloads smaller?
Could we have something more descriptive than N/A if it doesn't have the information? Something like 'Files Not Found', 'Version unknown', etc

Mutant_Fruit
26th February 2006, 12:15
@Mutant_Fruit: I tried out your automatic updating, and I am impressed. I made a few notes, about some big and some small problems:


CurrentVersion flag never appears to be set. This causes it always to update. I just read your last post, and realised that you still need to read that data from the xml file. I don't like that system, because it could easily get out of sync with the actual version of the file. If there was some way to use the version signalled by the exe itself, that would be better.
I realise this. I've investigated a few methods for getting version numbers. It seems that most of the .exe programs can be made display their version number on-screen, therefore i can redirect stdout and read out their version number. However, with dll files, most of them don't have the version number embedded. Therefore there doesnt seem to be a way for me to check the version of those files.
Should be able to force an update check.
That's possible. There's a button now called "Update" in the tools method which will display the Update window and allow an update.
Should be able to turn off update checking altogether.
That was already possible. You just set the auto-update interval to 0 days in settings. Maybe i should make that more obvious.
Should also perhaps be support for new versions of MeGUI, and also all the AviSynth plugins and AviSynth itself. I presume this will come later.
Yup, AviSynth plugins and AviSynth can easily be added, however MeGUI will be a little trickier. The problem is that if MeGUI is running, i can't replace the MeGUI .exe with the new .exe, but if MeGUI isn't running i can't move the .exe over automatically. This could be possible if i created a secondary program (only a few lines) who's job it is is to copy the new .exe over the old .exe after MeGUI closes, then it could restart MeGUI automatically.
'Update' should turn into 'OK' when finished
I'll do that now
FileX/Y doesn't have a space in it, when displayed in the status bar.
Status bar is gone now, it's been completely replaced by the "log" textbox. I only thought of using a "log" a few mins before i uploaded that temp version, which is why it did nothing.
What is the other textbox there for?
Thats the log textbox, it displays details about everything that goes on.
Perhaps it would be nice to have a small log of what succeeded and what didn't, etc. Is that what the textbox is for?
I agree, and you're right.
It crashes if you select neroraw or anything else not on the server
Fixed already.
The status bar says finished before you've even started anything.
Aye, i realised that was slightly confusing. That "finished" was actually referring to the fact it had downloaded the update .xml file, and then parsed it successfully. It makes more sense with the log textbox now.
How easy is it to put everything in a different folder, because I don't think the root directory is the best place to keep all the files.
Thats a thing i was going to bring up alright. I was going to ask if i should make a default "Plugins" folder or something similar. That should be easy
What is the feasibility of zipping the files to make downloads smaller?
That's already 80% finished or so. I had a bit of trouble with the zip library not acting the way i thought it would, but its working now.
Could we have something more descriptive than N/A if it doesn't have the information? Something like 'Files Not Found', 'Version unknown', etc
Thats been taken care of in the log textbox.


What i'm looking for most now is a fullproof way of finding out the versions of dll files. For example: MessageBoxExLib.dll has the dll version in it (right click and go to properties->version), but AvisynthWrapper.dll doesn't. In that case, the only way i could know the version is to store it from the XML data and hope nobody switches the dll file.

berrinam
26th February 2006, 12:29
I realise this. I've investigated a few methods for getting version numbers. It seems that most of the .exe programs can be made display their version number on-screen, therefore i can redirect stdout and read out their version number. However, with dll files, most of them don't have the version number embedded. Therefore there doesnt seem to be a way for me to check the version of those files.Have you tried just going by modified date?
That was already possible. You just set the auto-update interval to 0 days in settings. Maybe i should make that more obvious.When I did that, it actually did the opposite -- it checked every time I opened MeGUI.
MeGUI will be a little trickier. The problem is that if MeGUI is running, i can't replace the MeGUI .exe with the new .exe, but if MeGUI isn't running i can't move the .exe over automatically. This could be possible if i created a secondary program (only a few lines) who's job it is is to copy the new .exe over the old .exe after MeGUI closes, then it could restart MeGUI automatically.I can see that, but I think MeGUI is likely to be updated quite frequently at the moment, so it's quite an important feature IMHO.
Thats a thing i was going to bring up alright. I was going to ask if i should make a default "Plugins" folder or something similar. That should be easySounds good, but don't call it plugins. That's too similar to AviSynth plugins and could cause heaps of confusion.

What i'm looking for most now is a fullproof way of finding out the versions of dll files. For example: MessageBoxExLib.dll has the dll version in it (right click and go to properties->version), but AvisynthWrapper.dll doesn't. In that case, the only way i could know the version is to store it from the XML data and hope nobody switches the dll file.
Or, as I said, going by date modified... or finding some way to force the dlls to store the version. AviSynthWrapper, for instance, is part of the MeGUI project itself, so if it's the only problem, then that shouldn't be too hard to fix.

Also, it just occurred to me that if we have lots of things that can be autoupdated, perhaps it would be a good idea to group them by category, so the user isn't confronted with a huge list? Perhaps audio binaries, video binaries, avisynth plugins, and miscellaneous?

The rest of it looks very promising.

Mutant_Fruit
26th February 2006, 12:57
Or, as I said, going by date modified... or finding some way to force the dlls to store the version.

It'd be possible to check the "date created" of the dll on the clients computer and check that against the "date uploaded" on the server computer to see if it needs updating. That'd be a handy trick if i don't have the version numbers, but not completely foolproof.


Also, it just occurred to me that if we have lots of things that can be autoupdated, perhaps it would be a good idea to group them by category, so the user isn't confronted with a huge list? Perhaps audio binaries, video binaries, avisynth plugins, and miscellaneous?

I'll look into that as soon as i get the zip section working 100%. Tis a good idea.

Also, code-wise, if you see anything that isn't good, or that could be done better, let me know. I'm always up for improving.

Also, the code for "AutoUpdate" is called like this on startup...

if(this.settings.UpdateInterval>0) // AutoUpdate is on
{
....Start the autoupdate thread....
}

So setting the interval to 0 should make it NOT check for updates... Testing that now.

EDIT: Sure it works now anyway. I'll upload the newer beta version just so ye can see what it looks like now.

EDIT2: Here is the latest source. I'm still working on the zip handling.
http://www.fileshack.us/files/741/MeGUIAutoUpdate.zip

Sharktooth
26th February 2006, 14:22
For those who haven't subscribed to the SF mailing list (regarding SVN):
I am pleased to report that our Subversion beta was successful
and we launched our Subversion service sitewide earlier this week.
In addition, we've completed deployment of new web servers and
made further enhancements to our service monitoring and uptime
monitoring capabilities. Upcoming software map and search
improvements remain on track for March and April deployments,
respectively.
Subversion General Availability
-------------------------------

The SourceForge.net team is pleased to announce the General Availability
of Subversion service to SourceForge.net-hosted projects, effective
2006-02-21. This service offering is in addition to our existing CVS
service; as with all of our services, projects may select (and enable in
the project admin pages) the portion of our offering that best meets
their needs.

We wish to extend our thanks to the many projects and developers who
have helped us to test our Subversion service as part of our six-week
beta, which completed last week. Our particular thanks go to these
projects, whose members provided substantial feedback regarding the
new service:

* Inkscape - http://sourceforge.net/projects/inkscape/
* DejaVu Fonts - http://sourceforge.net/projects/dejavu/
* ScummVM - http://sourceforge.net/projects/scummvm/
* evilnet - http://sourceforge.net/projects/evilnet/


Our Subversion service includes:

SSL-based Repository Access:
* Developer Subversion access via HTTPS, auth is requested when you
perform a write operation
* Anonymous Subversion access via HTTPS
* No sync delays between developer and anonymous Subversion access
* Per-developer access control over repository access (ACL support to be
added in the future) via the SourceForge.net permissions system

Web-based viewing:
* Web-based repository access via ViewVC (formerly known as ViewCVS)

On-demand self-service backups and mirroring capability:
* Read-only rsync access to the repository to permit backups and
remote mirroring

Ease of migration:
* Automated self-service migration of your SourceForge.net project CVS
repository, CVS tarball, or Subversion dump to our Subversion service

Well-considered add-ons to basic service:
* A selected set of hook scripts, including commit email support and
CIA bot support
* Statistics tracking of Subversion repository activity


Service may be enabled by project administrators in the "Subversion"
section of the Project Admin pages.

Complete service documentation is available at:
http://sf.net/docs/E09/

Documentation is provided for supported clients at:
http://sf.net/docs/F06/ for the command-line SVN client
http://sf.net/docs/F07/ for TortoiseSVN

Our support of Subversion has been based on substantial research and
testing in the past few months, which we have pursued specifically based
on requests from the community. SourceForge.net continues to consider
new technologies and evaluate community requests in further
strengthening our service offering.

berrinam
26th February 2006, 21:10
It still crashes with neroraw, because currentFile.UpdateURL is null.
There is still a space missing when it says 'Updating mencoder. File1/7'
InvalidOperationException thrown in ParseUpdateData(), because it doesn't have access to that. Use Invoke(delegate) for that. I think that may be causing 'Update' not to change to 'OK'
Setting UpdateInterval to 0 does indeed turn off automatic updates. I do think this should be explicit, anyway. Also, if it is at any other value, it ignores it and checks every time you open MeGUI.
The log is good.

I might look at the code later, but that's all I have time for now.

Mutant_Fruit
26th February 2006, 22:00
Setting UpdateInterval to 0 does indeed turn off automatic updates. I do think this should be explicit, anyway. Also, if it is at any other value, it ignores it and checks every time you open MeGUI.

Thats be design at this point, otherwise it'd be a pain in the ass resetting the "lastUpdated" DateTime each time i wanted to put the code through a test.

As for the rest of the bugs, i've either fixed em already, or will do now. Thanks for the pointers.

berrinam
28th February 2006, 06:08
0.2.3.2096 28 Feb 2006
Commit by berrinam:
- Updated Source Detection to recognize sources that need decimation

dimzon
28th February 2006, 14:18
0.2.3.2097 28 Feb 2006
Commit by dimzon:
- AviSynthWrapper: now it's possible obtain value of script integer variable (AviSynthClip.GetIntVariable)


Just quick sample how to use:

using (MeGUI.AviSynthScriptEnvironment env = new MeGUI.AviSynthScriptEnvironment())
{
using (MeGUI.AviSynthClip clip = env.ParseScript("global test=123\n\rversion()\n\r", MeGUI.AviSynthColorspace.Unknown))
{
int i=0;
try
{
i = clip.GetIntVariable("test",0);
}
catch(Exception eee)
{
MessageBox.Show(eee.ToString());
}
MessageBox.Show(i.ToString());
}
}

dimzon
28th February 2006, 14:38
Hi!
Seems like i can implement such magic features in AviSynthWrapper:

Ability to add our own callback functions to AvsScript:
clip.RegisterCallback(new CallBackDelegate(...))
so it's possible to call something like:

version()
MeGUI_Callback(some arguments)



Ability to set variable values
clip.SetVariable("variableName", 12345)

Ability to check function existence
clip.IsFunctionDefined("Mpeg2Source")

berrinam
28th February 2006, 20:38
0.2.3.2097 28 Feb 2006
Commit by dimzon:
- AviSynthWrapper: now it's possible obtain value of script integer variable (AviSynthClip.GetIntVariable)

Sounds great! It's now possible to remove all temporary files in Source Detection. What happens if you are trying to get something else, like a boolean?

Ability to add our own callback functions to AvsScript:Woah, that's pretty powerful. I can't think why it would be useful, though.

Ability to set variable values
clip.SetVariable("variableName", 12345)Similarly with this.

Ability to check function existence
clip.IsFunctionDefined("Mpeg2Source")
Do you know if this also works with conditional functions, like IsCombed()?

dimzon
28th February 2006, 21:14
Sounds great! It's now possible to remove all temporary files in Source Detection.
Yes, this is feature for You ;)

What happens if you are trying to get something else, like a boolean?
Exception will be thrown ;) Variable must be exatly integer. Does You really need something else? I can add float/boolean but I really does'nt want ( i can but doesn't want ) to add string (bcz of marshaller performance slowdown)
Keep in mind - each feature reques approx 1hrs so ask if You really need it - otherwize it's better to spent my free time to more critical/important features ;)

Do you know if this also works with conditional functions, like IsCombed()?
I can't find IsCombed() in AviSynth manual - what is it?

berrinam
28th February 2006, 21:29
Yes, this is feature for You ;)Thank you. :D

Exception will be thrown ;) Variable must be exatly integer. Does You really need something else? I can add float/boolean but I really does'nt want ( i can but doesn't want ) to add string (bcz of marshaller performance slowdown)Never mind, then. I can cope with integers only -- AviSynth can do the conversion easily enough for me. I was just wondering.

I can't find IsCombed() in AviSynth manual - what is it?It's part of the Decomb package from neuron2. The relevance of that is that it's just like YDifferenceFromPrevious (which is part of AviSynth) -- it can only be accessed from inside one of the conditional functions, like FrameEvaluate, etc.

dimzon
28th February 2006, 22:10
It's part of the Decomb package from neuron2. The relevance of that is that it's just like YDifferenceFromPrevious (which is part of AviSynth) -- it can only be accessed from inside one of the conditional functions, like FrameEvaluate, etc.
I don't know, must test...

jellysandwich
1st March 2006, 07:03
There seems to be a small inconsistency in the deblocking tooltip. It says that "in loop deblocking is part of the normal operation of MPEG-4 AVC and should not be disabled," but says disabled for the default and recommended values.

js

berrinam
1st March 2006, 07:27
That should have been posted in the Bug Report Thread, but you are indeed correct, never-the-less. Fixed in .2098:

0.2.3.2098 1 March 2006
Commit by berrinam:
- Fixed discrepancy with x264 config information about the deblocking filter.
- Fixed 8x8dct/i8x8 discrepancy in x264 config.

dimzon
1st March 2006, 10:14
@all developers
Can anybody point me on tasks wich does not inersect with Doom9 refactoring?

berrinam
1st March 2006, 11:53
@all developers
Can anybody point me on tasks wich does not inersect with Doom9 refactoring?

You could try fixing these last two known bugs:
AviSynth Script Creator access a dead PreviewWindow
Description: 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.
Status: Not yet solved.

Exception with AutoEncode x264 3pass 1st pass
Description: if you set x264 to 3 pass first pass, then try to access the autoencode, the autoencodewindow constructor throws an exception.
Status: Not yet solved.

Heh heh heh.... we're approaching a somewhat stable build again, just as Doom9 is about to commit his refactoring. :S

berrinam
1st March 2006, 11:56
Also perhaps this:

Warn user if an instance of MeGUI is already running
Description: There's not really much point in running multiple copies of MeGUI, and it can cause problems. It would be a good idea to warn the user that there is a copy already running. See http://www.codeproject.com/csharp/restricting_instances.asp for how to implement this.
Status: No-one is working on it.

dimzon
1st March 2006, 12:07
0.2.3.2099 1 March 2006
Commit by dimzon:
- Fixed bug: AviSynth Script Creator access a dead PreviewWindow

dimzon
1st March 2006, 12:14
0.2.3.2100 1 March 2006
Commit by dimzon:
- Fixed possible resource leak in VideoPlayer

Doom9
1st March 2006, 13:43
just as Doom9 is about to commit his refactoring. :SYou're presuming that I'm almost done.. I had some private stuff again last week-end and real life will continue next week-end as well.. but this morning on the way to work I almost had a breakthrough in this whole muxer chain thing.. it's not perfect (you have to register a muxer multiple times, once for each output type.. but at this point there's no muxer that supports multiple containers so it won't show), but it appears to be workable.. but I better not jinx it as it's not done yet. If there are indeed no outstanding issues (but I think there are.. for instance reading out the exit code once the videoencoder process ends.. at least for x264.exe that should be done and if it's not 0, then su.HasError should be set so that even when x264 craps out without telling us why, at least the job is flagged as an error and subsequent jobs are not started.. that doesn't get rid of the problem that megui should write out what went wrong and x264's output never makes it into the redirected stderr/stdout (and nobody has an idea why :(), but at least we properly signal that there has been an error and don't start any subsequent jobs that are doomed to fail as well). Then there's the deleting intermediate files when something went wrong issue (don't think it's in the buglist but then again I have not seen a good report on this as well.. good report being a deterministic "when does it happen"). And then there's the shutdown thing..

dimzon
1st March 2006, 13:46
You're presuming that I'm almost done...
WOW! Happy to read this!

dimzon
1st March 2006, 14:06
0.2.3.2101 1 March 2006
Commit by dimzon:
- Warn user if an instance of MeGUI is already running
http://img465.imageshack.us/img465/3015/untitled5wi.png

Sharktooth
1st March 2006, 14:29
Does -> Do.

dimzon
1st March 2006, 14:33
Does -> Do
fixed

ChronoCross
1st March 2006, 17:38
so many new builds so little time hehe. I'll try the cvs again in a few hours for the latest.

Sharktooth
1st March 2006, 19:01
http://www.webalice.it/f.corriga/megui/MeGUI-src.CVS-0.2.3.2101.7z

Richard Berg
1st March 2006, 19:25
Warn user if an instance of MeGUI is already running
Make sure this only checks if multiple copies of the same .exe are running. That's problematic because they will overwrite each other's profile, job, etc. XML files.

However, running separate .exe's should definitely be allowed. As long as they're kept in separate dirs, there will be no interference between them. Lots of reasons why you might want to do this:
- debugging
- trying new unstable versions without having to abort the long jobs your stable copy is running
- encoding on dualcpu/dualcore machines (we rejected the proposal to handle this within MeGUI, remember?)

dimzon
1st March 2006, 19:28
Make sure this only checks if multiple copies of the same .exe are running.
Anyway you have a choice to run or not to run ;)

Richard Berg
1st March 2006, 19:41
Yes, but why make it unnecessarily annoying? It takes less than a line of extra code. Instead of comparing process name, compare Process.MainModule.FileName.

berrinam
2nd March 2006, 11:22
0.2.3.2102 2 March 2006
Commit by berrinam:
- Fixed exception when checking Turbo on a 1stpass profile in x264 config
- Fixed macroblock options selection when checking Turbo as above

Sharktooth
2nd March 2006, 11:49
sources http://www.webalice.it/f.corriga/megui/MeGUI-src.CVS-0.2.3.2102.7z

bob0r
2nd March 2006, 11:52
so many new builds so little time hehe. I'll try the cvs again in a few hours for the latest.

Why don't you automate the process?
Compile a new build each minute/hour/day? :)


Ah wait you can't!!!! Arg you cant have bloody csc.exe quit as far as i know.... anyone who does know for mingw???

My sctipt:

#!/bin/sh

## Change paths
megui_dir=/home/user/MeGUI-src.CVS/
pack_dir=/home/user/pack/
net_dir=C:\\/WINDOWS\\/Microsoft.NET\\/Framework\\/v2.0.50727\\/

if [ ! -d "$megui_dir" ]; then
while true; do
cd; cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/megui co -P MeGUI-src.CVS;
if [ -d "$megui_dir" ]; then
break
fi
sleep 10
done
fi

cd $megui_dir;

#sed -e 's/csc \/res/'$net_dir'csc \/res/' compile.bat > compile_m.bat;
start //low //b //w compile full-svn;

## Manually enter: exit
## Blame csc.exe, not me :)

mv megui-svn.exe $pack_dir;
mv AvisynthWrapper.dll $pack_dir;
mv MessageBoxExLib.dll $pack_dir;
mv Data/ContextHelp.xml $pack_dir/Data/;

cd $megui_dir/neroraw/;
start //low //b //w compile

## Manually enter: exit
## Blame csc.exe, not me :)

mv neroraw.exe $pack_dir;

berrinam
2nd March 2006, 12:02
Ah wait you can't!!!! Arg you cant have bloody csc.exe quit as far as i know.... anyone who does know for mingw???

My sctipt:
...
cd $megui_dir/neroraw/;
start //low //b //w compile

## Manually enter: exit
## Blame csc.exe, not me :)

mv neroraw.exe $pack_dir;It doesn't exit so that when running it from windows you can see any errors when compiling. The compile.bat script simply has a PAUSE command in it. If you want to avoid that, use 'compile full' or 'compile full-svn' as your commandline.

bob0r
2nd March 2006, 13:02
Nah, the problem is that csc.exe opens a new cmd.exe (There is no csc.exe after compilation, cmd.exe is what remains open), which only can be closed when you type exit (as far as i know):


user@PC ~
$ megui.sh
Microsoft (R) Visual C# 2005 Compiler version 8.00.50727.42
for Microsoft (R) Windows (R) 2005 Framework version 2.0.50727
Copyright (C) Microsoft Corporation 2001-2005. All rights reserved.

AviSynthWindow.cs(1539,10): warning CS1030: #warning: 'This is just quickfix, please check it!'
d2vReader.cs(45,10): warning CS1030: #warning: 'Why load the video here? This means that we can't apply force film unless the video unless it is playable in AviSynth'
Form1.cs(4357,10): warning CS1030: #warning: 'calc.setDefaults must get special tweaks direcly from IVideoSettingsProvider'
Form1.cs(4364,10): warning CS1030: #warning: 'calc.getSelectedCodec must return IVideoSettingsProvider'

G:\msys\1.0\home\user\MeGUI-src.CVS>exit
exit
Microsoft (R) Visual C# 2005 Compiler version 8.00.50727.42
for Microsoft (R) Windows (R) 2005 Framework version 2.0.50727
Copyright (C) Microsoft Corporation 2001-2005. All rights reserved.


G:\msys\1.0\home\user\MeGUI-src.CVS\neroraw>exit
exit

user@PC ~
$

leowai
2nd March 2006, 17:43
@bob0r, I've good news. I managed to make automatic compilation with MinGW under windows. This method doesn't prompt you to input "exit" but you will see ugly & messy screen messages. Here we go. Basically, we need following two files to run:

The MinGW running script "MeGUI_cvs.h" (which modified from the one you provided):
#!/bin/sh

## Change paths
megui_dir=/home/User/MeGUI-src.CVS/
pack_dir=/home/User/pack/
net_dir=C:\\/WINDOWS\\/Microsoft.NET\\/Framework\\/v2.0.50727\\/

if [ ! -d "$megui_dir" ]; then
while true; do
cd; cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/megui co -P MeGUI-src.CVS;
if [ -d "$megui_dir" ]; then
break
fi
sleep 10
done
fi

cd $megui_dir;

#sed -e 's/csc \/res/'$net_dir'csc \/res/' compile.bat > compile_m.bat;
echo.
echo.
echo. -== Compiling MeGUI ==-
cmd < ./../Compile_MeGUI.bat


echo.
echo.
# Move & copy files for packing
mv megui.exe $pack_dir;
mv megui-svn.exe $pack_dir;
cp AvisynthWrapper.dll $pack_dir;
cp MessageBoxExLib.dll $pack_dir;
cp Data/ContextHelp.xml $pack_dir/Data/;

mv neroraw.exe $pack_dir;

# Exit MeGUI.src.CVS folder
cd ..

The second is "Compile_MeGUI.bat" which every command lines in this file will be executed by "cmd.exe". Good thing is it will exit at the end of running. ;)
start /b /w setenv.bat
start /b /w compile full
start /b /w compile full-svn
echo
*Note: You need "echo" or even a blank line in "Compile_MeGUI.bat" in order for "start /b /w compile full-svn" to be executed. Strange ah? :confused: :sly:

Put those two files under user's home directory in MinGW. Run the "MeGUI_cvs.h" script, it should return to MinGW command prompt at the end of the compilation.

It works fine here and hope it works on your side too. Good luck.

nexus
2nd March 2006, 23:56
0.2.3.2102 2 March 2006
Commit by berrinam:
- Fixed exception when checking Turbo on a 1stpass profile in x264 configI still get this exception with build 0.2.3.2102. :-(

dimzon
3rd March 2006, 00:09
I still get this exception with build 0.2.3.2102. :-(
wrong thread!
:readrule:

bob0r
3rd March 2006, 00:52
@leowai

AWESOME! IT WORKS!!

I can now auto update megui into the x264 package :D

megui.sh:

#!/bin/sh

## Change paths
megui_dir=/home/user/MeGUI-src.CVS/
pack_dir=/home/user/pack/

if [ ! -d "$megui_dir" ]; then
while true; do
cd; cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/megui co -P MeGUI-src.CVS;
if [ -d "$megui_dir" ]; then
break
fi
sleep 10
done
fi

cd $megui_dir;
cmd < ./../meguicompile.bat
mv megui-svn.exe $pack_dir;
cp AvisynthWrapper.dll $pack_dir;
cp MessageBoxExLib.dll $pack_dir;
cp Data/ContextHelp.xml $pack_dir/Data/;

cd $megui_dir/neroraw;
cmd < ./../../meguinerorawcompile.bat
mv neroraw.exe $pack_dir;


meguicompile.bat:

start /b /w compile full-svn
echo


meguinerorawcompile.bat:

start /b /w compile
echo


Many thanks!!

ChronoCross
3rd March 2006, 01:30
I;m having some issues. it doesn't seem to execute the cvs command at all. it just goes straight into compiling.

Edit: it works just fine if the folder doesn't exist. however from that point on it doesn't update using "cvs update" nor does it run in a loop for automatic updating. any ideas?

bob0r
3rd March 2006, 02:17
Just add "cvs up" after cd $megui_dir;

cd $megui_dir;
cvs up;

Or what i do:
On the end of my script:
cd;
rm -r MeGUI-src.CVS;

With gpac i had some bad experience using cvs up instead of a clean checkout, so i use clean checkout everytime now.
Also cvs up can't be looped, so you never know if it truely did update, with a clean checkout you are always sure.
Well it can be looped, if you make an IF FI statement with some required text, but i haven't looked into that.

x264 svn never gave me any problems, only the occasional script testing makes me delete my x264 folder, to "test it all"

Edit:
For looping use:
megui_looping.sh:

#!/bin/sh

## loop in seconds (3600 seconds = 1 hour)
while true; do megui.sh; sleep 3600;done


I guess in your case 86400 seconds (24 hours) can be good.
I believe its possible to check revision or versions numbers with CVS, but also i haven't looked into this yet.

With SVN this is much easier:


## get last line from output `svn up`
check=`svn up | tail -1`

## check if there is a new update, At = no new update, Updated = new update, At = YES
if [ `echo $check | awk '{print $1}'` = "At" ]; then
## get revision number
rev_u=`echo $check | cut -c13-15 | tr -d .`
## check if revision number matches with contents of rev.txt
if [ "$rev_u" = `head -1 rev.txt` ]; then
## matched! echo no new updates

leowai
3rd March 2006, 06:40
@leowai

AWESOME! IT WORKS!!

I can now auto update megui into the x264 package :D

Many thanks!!
Good to hear that & You're welcome. :)

With gpac i had some bad experience using cvs up instead of a clean checkout, so i use clean checkout everytime now. Erm... Now I know who slow down the cvs checkout network. Just kidding. :D

I think it would be ok for clean checkout on everyday basic while cvs up for more regular updates in hours. Thinking of eveyone having a clean checkout on cvs projects at the same time...:eek:

With SVN this is much easier:
Thanks for sharing that. Going to try this out. :devil:

Sharktooth
3rd March 2006, 14:36
CVS update

0.2.3.2103 3 March 2006
Commit by Sharx1976:
- Fixed wording on "Queue" buttons in main Form
- Fixed a bug in OneClickWindow.cs output file textbox state adjustment

Mutant_Fruit
3rd March 2006, 15:32
I'm still working away at the AutoUpdate dialog and i have a few more questions.

Someone suggested before that a better way of displaying the available updates should be used. I'm thinking a treeview would be good in this case because there are several files under each "heading" type thing. The question i have is, what headings should i use. I'm thinking of something like this (at the moment).


UpdateableFiles
| \
| MeGUI Files - x264, mencoder, dgindex etc
| (the ones with paths in megui's settings)
| \
| AviSynthFiles
| \
| Audio
| \
| Video
| \
| Misc files.

What do ye think of that? Anyone want to suggest better ways of laying out the files in the "UpgradeWindow" layout?

Doom9
3rd March 2006, 16:45
I've been thinking about changing the settings dialog myself, and to group programs by functionality. For instance, have a section AVI, where you have to add avc2avi and avimuxgui as these are required for avi output.

similarly, the mp4 box would include mp4box

something along these lines

berrinam
3rd March 2006, 23:12
0.2.3.2104 4 March 2006
Commit by berrinam:
- Fixed loading values when crf/qp is in the currentVideoSettings (it was always set to 26)
- Fixed trellis dependencies in x264 encoder dialog

berrinam
4th March 2006, 21:54
0.2.3.2105 5 March 2006
Commit by berrinam:
- Fixed bug with OneClick processing which caused a fatal KeyNotFoundException when the stream info file was missing

Sharktooth
5th March 2006, 10:42
New x264 option:
--direct auto -> https://trac.videolan.org/x264/changeset/457

also default mode for --direct is now spatial. -> https://trac.videolan.org/x264/changeset/456

Sharktooth
5th March 2006, 12:02
CVS Update:

0.2.3.2106 5 March 2006
Commit by Sharx1976:
- Added Auto option to x264 B-Frames direct mode. Spatial is now the default mode.

NOTE: CVS gone nuts and i couldnt commit (it timed out several times)... i'll try to commit the changes later.
sources are here: http://www.webalice.it/f.corriga/megui/MeGUI-src.CVS-0.2.3.2106.7z

EDIT: Committed (finally).

soresu
5th March 2006, 12:42
I am wondering if it is possible to post a changelog for MeGUI on the x264.nl site now that MeGUI compilation has been automated?

Sharktooth
5th March 2006, 13:02
why?
changelog is here: http://cvs.sourceforge.net/viewcvs.py/megui/MeGUI-src.CVS/Changelog.txt?view=markup

berrinam
5th March 2006, 13:06
Good link, Sharktooth. I've added a link to that on http://megui.sourceforge.net/

Sharktooth
5th March 2006, 13:19
the crappy SF CVS has still problems. i can't commit the changes.
... damn it we should move to SVN :P

Doom9
5th March 2006, 13:48
... damn it we should move to SVN :PAt this point, I believe it would be a dangerous move since the changes from my end are considerable.. better wait for the next truly stable release that includes my new job generation.

Sharktooth
5th March 2006, 13:52
you're right.

ChronoCross
5th March 2006, 21:31
Compiled Sharktooths additions.

*kicks sourceforge CVS*

Sharktooth
5th March 2006, 23:49
SF CVS hates me... i cant still commit the changes...

dimzon
5th March 2006, 23:55
there are corecodec.org with same features as sf
maybe migrate on it?

Sharktooth
5th March 2006, 23:59
well, i think it's only a temporaneous problem. lets wait and see.

EDIT: Finally committed...

berrinam
6th March 2006, 06:57
0.2.3.2107 6 March 2006
Commit by berrinam:
- Fixed crash when saving AviSynth script during source type detection
- Cleaned up GUI management of source detection in AviSynth Script Creator
- Fixed OneClickConfig bug with 'delete' button not working

Sharktooth
6th March 2006, 11:16
CVS Update:

- Added gpl.txt (license).

Sharktooth
6th March 2006, 11:36
I updated also the file releases on SF with the new MeGUI 0.2.3.2107 (0.2.3.2033 was quite old).

Doom9
6th March 2006, 13:04
the darned dynamic muxpath selection is taking forever. Now I'm at the point where the autoencodewindow shows all available containers based on the selected audio and video output types, but right now it takes the first path instead of the best path, and it adds avi twice so that's not really it.. why oh why did I have to touch what was working.

Sharktooth
6th March 2006, 13:24
LOL :)
think at me fixing x264 tri-state 6-7 times... always the same bugs:)

squid_80
6th March 2006, 16:35
(slightly off-topic post warning)
*kicks sourceforge CVS*So you're the reason sourceforge is giving me the "I've fallen and can't get up!" error. :)

Doom9
6th March 2006, 16:35
think at me fixing x264 tri-state 6-7 times... always the same bugsI think we need to assign one person in charge of a codec configuration dialog, and let him do everything that concerns that dialog.. that way, we have no conflicting ideas on how people think things should work, and one person has the overview of what has been done and needs to be done.

Sharktooth
6th March 2006, 16:41
we should have a "milestone" view of the project.
i mean, a place where to put all the ideas for the next major version (0.3 for example) and then every devs choose what to do.
when all ideas are implemented and all bugs are squashed, release MeGUI 0.3 and start that again for MeGUI 0.4.

dimzon
6th March 2006, 16:50
we should have a "milestone" view of the project.
i mean, a place where to put all the ideas for the next major version (0.3 for example) and then every devs choose what to do.
when all ideas are implemented and all bugs are squashed, release MeGUI 0.3 and start that again for MeGUI 0.4.
Yes, we need roadmap!!!

Sharktooth
6th March 2006, 18:40
i had an irc discussion with verm today.
i'll report it here:
<verm_> you around?
<verm_> got a question
<verm_> anyway i'll just say what i have to you can read when you're around.
<verm_> is megui looking for hosting?, i can offer perm hosting, svn+trac+ftp+www (perm as in litrally, forever, no bandwidth limits)
<verm_> shell access as well
<Sharktooth> well we're hosted on SF right now
<verm_> these days that's the same as having no hosting at all...
<Sharktooth> but you know how much slow it is
<verm_> yeah, and trac will help a lot with development
<verm_> i'm sure you know trac
<Sharktooth> yep
<verm_> anyway it's a very fast machine, hosted at http://non-gnu.uvt.nl/
<Sharktooth> i'll ask doom9, or if you want you can drop a post in this forum thread: http://forum.doom9.org/showthread.php?t=95863
<verm_> hehe better if you ask directly i'm not much of a forum person, IRC or mailing lists for me :)
<verm_> but it's stable and fast hosting
<Sharktooth> ok
<Sharktooth> i'll ask
<Sharktooth> is if for free? :D
<verm_> oh of course
<verm_> free forever
<Sharktooth> ok:)
<verm_> no bandwidth limits either
<verm_> oh and we can host domains too, megui.org
<verm_> if its owned by a developer

Doom9
6th March 2006, 20:11
speaking of roadmaps, I recall posting one already.. just without any timestamps but feature wise I have my plans set for the next two stable builds.
As far as hosting goes, it does sound interesting. But we'd have to convert CVS to SVN somehow, and I don't think that part should be done prior to the next really stable build. I finally have a reliable answer from the muxprovider as to what output it can provide provided the input types, so hopefully tomorrow I can rewrite the mux job generation so that the autoencode works again, but then I have another layer of generalization to be done (video and audio output types are not generic enough.. it needs to be video codec + audio codec = what container or the one clicker will never work.

Sharktooth
6th March 2006, 20:39
with shell access cvs2svn can be used to "convert" it.
Convert a cvs repository to a subversion repository
Converts a CVS repository (including its branches and tags) to a
Subversion repository. It is designed for one-time conversions, not for
repeated synchronizations between CVS and Subversion.
However verm is importing the MeGUI CVS to his SVN to see if he can keep the revision changes.
We'll need a domain though.

Richard Berg
6th March 2006, 20:56
FWIW, I'm adding TeamPlain (http://www.devbiz.com/teamplain/webaccess/) to one of my Team Foundation Servers, which should give TFS the web interface an OSS project like MeGUI needs.

I agree we should wait before making any more major changes.

Sharktooth
6th March 2006, 21:13
do you know trac?
http://www.edgewall.com/trac/
we'll have it on that host...

Sharktooth
6th March 2006, 21:59
@devs: However a temporaneous SVN is up. All the revision changes and logs have been kept.
PM me if you wanna see it and i'll give you the URL.

berrinam
7th March 2006, 06:39
I have a small update for Source Detection, to provide extra data. Do I still commit this to SF CVS?

ChronoCross
7th March 2006, 06:59
As far as I know the svn thingy sharktooth is talking about was only a test.

berrinam
7th March 2006, 07:07
Ok, here we go:
0.2.3.2108 7 March 2006
Commit by berrinam:
- Source Detection gives extra data (useful for debugging)

Sharktooth
7th March 2006, 12:08
I've received no PMs and no answers yet.
The transition to SVN is easy.
If you have changes to commit just clean the sources from CVS folders, checkout the SVN and copy the cleaned sources over it... then commit.

Kostarum Rex Persia
7th March 2006, 16:21
What about uncompressed AVI sources? Why uncompressed AVI must convert to YV12 color space in AVS scripts?

shon3i
7th March 2006, 16:52
What about uncompressed AVI sources? Why uncompressed AVI must convert to YV12 color space in AVS scripts?
YV12 colorspace is faster than RGB and it's lossy format.

Sharktooth
7th March 2006, 16:53
also because x264 wants YV12 as input or will not encode (remember the Invalid input format (DIB) error message?).

Kostarum Rex Persia
7th March 2006, 16:56
also because x264 wants YV12 as input or will not encode (remember the Invalid input format (DIB) error message?).

Can you, please, explain that with much more detail? What about YUV2 input?

Sharktooth
7th March 2006, 17:04
no. it's not a MeGUI issue.
the encoders require YV12 to work so MeGUI converts everything to YV12.

Kostarum Rex Persia
7th March 2006, 17:53
Ok, but you still own me explanation? Why x264.exe insists on YV12 inputs?

dimzon
7th March 2006, 18:17
what about such "logo"

http://img437.imageshack.us/img437/6491/mg324uc.png

http://img137.imageshack.us/img137/5025/mg506fm.png

http://img137.imageshack.us/img137/7938/mg728ad.png

buzzqw
7th March 2006, 18:21
too much google like ;)

BHH

Richard Berg
7th March 2006, 18:33
Ok, but you still own me explanation? Why x264.exe insists on YV12 inputs?
He doesn't owe you anything. x264.exe already supports Avisynth, which allows you do to just about anything you want - why does it matter whether the conversion to YV12 happens within avisynth.dll or x264.exe? Conversion code is hard to get fast & 100% correct - why do you want the x264 devs to reinvent the wheel?

Doom9
7th March 2006, 20:55
we already have some submitted logos.. I guess I'm the only one who still remembers.

dimzon
8th March 2006, 00:50
@Doom9 and other Developers
Some words about exception handling http://www.artima.com/intv/handcuffs.html

Bill Venners: So you think the more common case is that callers don't explicitly handle exceptions in deference to a general catch clause further up the call stack?

Anders Hejlsberg: It is funny how people think that the important thing about exceptions is handling them. That is not the important thing about exceptions. In a well-written application there's a ratio of ten to one, in my opinion, of try finally to try catch. Or in C#, using statements, which are like try finally.

Bill Venners: What's in the finally?

Anders Hejlsberg: In the finally, you protect yourself against the exceptions, but you don't actually handle them. Error handling you put somewhere else. Surely in any kind of event-driven application like any kind of modern UI, you typically put an exception handler around your main message pump, and you just handle exceptions as they fall out that way. But you make sure you protect yourself all the way out by deallocating any resources you've grabbed, and so forth. You clean up after yourself, so you're always in a consistent state. You don't want a program where in 100 different places you handle exceptions and pop up error dialogs. What if you want to change the way you put up that dialog box? That's just terrible. The exception handling should be centralized, and you should just protect yourself as the exceptions propagate out to the handler.

Richard Berg
8th March 2006, 05:06
I guess I'm the only one who still remembers.
I didn't say anything about the previous logos because I thought they were hideous.

Who needs VS2005 Pro? I got an extra copy (not for resale).

Doom9
8th March 2006, 09:18
The exception handling should be centralized, and you should just protect yourself as the exceptions propagate out to the handler.So, I'll translate that: you have one huge method that handles every exception. In order to figure out where the exception is from, you need to either catch them locally and throw out a custom exception, or you will be unable to inform the user in a useful matter about what has gone wrong. And that, quite frankly, is insane. Cleaning up locally, yes, all the time, but throwing custom exceptions all over the place? I don't think so. Say you have a db connection and your sql SP causes an exception and you've used a using statement.. so the db connection is properly cleaned up despite the exception.. but what do you do with the exception? Say you need your method to still do something after cleaning up, you can't just break out the generic exception handler. In my case, I have methods that do combined SQL and Webservice calls.. first there's a webservice call, if it succeeds, there are two sql SPs that need to be called, if they fail, I need to call another webservice (well, same service, different method.. to clean up everything again), and if hte SQL statements succed, yet a few more webservice methods. The only way you can handle that with exceptions, is that you catch the sqlexception locally, throw a custom exception that is detailed enough so the generic exception handler knows it needs to call the cleanup method on the webservice. So you need to dive down the object hierarchy again, proably reinit classes because they are not known in the launching class, just to finish the cleanup. That's just ineffective beyond measure.

dimzon
8th March 2006, 10:47
I didn't say anything about the previous logos because I thought they were hideous.

Who needs VS2005 Pro? I got an extra copy (not for resale).
Hmm... I can get distributive itself from my work. So I need only a legal serial...
In this case I can use VC++ from VS2005 at home...
btw I'm not too much care about licensing problem bcz my homework (meGUI/BeHappy/AviSynth plugins) development is 100% non-profit so I even can steal serial from my work too... (Maybe it's even legal - my company is Microsoft Platinum Partner and has corporate licence on WinXP/VS/Office)

dimzon
8th March 2006, 10:57
@Doom9


void someMethod()
{
try
{
//...
}
catch(SomeSpecificException ex)
{
throw new ApplicationException("User friendly description", ex)
}
}

Doom9
8th March 2006, 13:28
@dimzon: yes, and then your generic exception handler has to have a 100 position switch.. really darned pretty, plus you separate the logic from where it belongs.. why should a GUI class be aware of what can go wrong in some very specific processing class, and more importantly, why should the GUI class provide means to get back to that other class and do something in response to the user response after he was presented some message? In the end, with that approach you end up placing logic that blongs into a separate class into the main gui class.. and potentially add code fragments of a 100 different classes to your main gui class. Doesn't that go against everything OO stands for? It's like having one person in my company that is aware of sales tasks, finance tasks, engineering tasks, development tasks, installation tasks, building maintenance tasks, etc.

dimzon
8th March 2006, 13:38
@dimzon: yes, and then your generic exception handler has to have a 100 position switch..
Actually no. It's just

try
{
//...
}
catch(ApplicationException ae)
{
// Normal error
MessageBox.Show(ae.Message);
}
catch(Exception ue)
{
// Unexpected error
MessageBox.Show(ue.ToString());
}

Doom9
8th March 2006, 15:08
no, not at all. You don't just need to inform the user that something has gone wrong, you also often need to do something after the exception has ocurred. Not only freeing up used resources, but gracefully exiting.. like in my example from work where I need to go back and send some cleanup commands to the webservice (I'm adding project to project server.. if I create a project via webservice, and the sql commands fail, it's not enough to inform the user about an errror.. I need a rollback and since the webservice can't do that, I need to tell it to delete the project again.. and that deletion command most certainly doesn't belong in the GUI class but right there with all the other webservice calls and sql commands (naturally, sql commands are sent and processed in a different class than the one that sends webservice calls).

dimzon
8th March 2006, 16:11
no, not at all. You don't just need to inform the user that something has gone wrong, you also often need to do something after the exception has ocurred.
Yes, off couse sometimes it's requed.

like in my example from work where I need to go back and send some cleanup commands to the webservice (I'm adding project to project server.. if I create a project via webservice, and the sql commands fail, it's not enough to inform the user about an errror.. I need a rollback and since the webservice can't do that, I need to tell it to delete the project again.. and that deletion command most certainly doesn't belong in the GUI class but right there with all the other webservice calls and sql commands (naturally, sql commands are sent and processed in a different class than the one that sends webservice calls).
Yes, I know such techique. AviSyhthAudioEncoder use same for output file cleanup. There are special term for it : "Compensating transaction" - some actions to emulate transactions in non-transactional enviroment like filesystem or stateless webService
In such case I prefer such pattern


try
{
//...
}
catch(Exception e)
{
PerformSomeCompensation();
throw; // rethrow same error
}


Or


try
{
//...
}
catch(SomeExpectedException e)
{
PerformSomeCompensation();
throw new ApplicationException("User friendly mesage", e); // rethrow new error
}


In this case I perform some compensation logic so my state still valid BUT most error handling (like user notification) still placed in centralized error handler...

Doom9
8th March 2006, 16:40
you don't know exactly which state you're in when the exception is thrown... that's why I catch my sql exception right there, and report an error back to the caller, which in turn can either continue doing its work, or perform the rollback in case an error is signalled. And after that, an appropriate error message is presented (or rather, logged since this is a non user supervised process).
Regardless of all the teach you on msdn and the certifications, there's also a part about throwing errors being the opposite of resource friendly, so with each catch and rethrow you effectively increase the ineffectiveness of your software.. and there ain't nothing taking that away no matter how you turn it. that's why I prefer the catch, process and do whatever is applicable approach rather than the catch, process and rethrow (and then on top of the additional context switch having to have even more code to handle the rethrown exception) approch.

dimzon
8th March 2006, 16:52
Regardless of all the teach you on msdn and the certifications, there's also a part about throwing errors being the opposite of resource friendly, so with each catch and rethrow you effectively increase the ineffectiveness of your software.. and there ain't nothing taking that away no matter how you turn it. that's why I prefer the catch, process and do whatever is applicable approach rather than the catch, process and rethrow (and then on top of the additional context switch having to have even more code to handle the rethrown exception) approch.
Keep in mind - error-meaning Exception is something wich must not occur in 99.9999999% and if exception means error you doesn't worry about performance

Raithmir
8th March 2006, 22:34
What's the current opinion on migrating to SVN?... It'd be nice if I didn't have to have both SVN and CVS installed :D

ChronoCross
9th March 2006, 00:17
What's the current opinion on migrating to SVN?... It'd be nice if I didn't have to have both SVN and CVS installed :D

one only will suffice. it's hard to keep both of them up to date. I like svn but that's already known. but currently it is only hosted on cvs.

Sharktooth
9th March 2006, 00:27
a SVN migration is painless though...

max-holz
12th March 2006, 11:11
I have tested sourceforge svn with another project; it's not fast as x264's svn but it's not bad, certainly better that cvs.

Sharktooth
13th March 2006, 13:56
new binaries up on SF (2108).

dimzon
13th March 2006, 22:25
Can ANYBODY tell me why "Company Name" in MeGUI is shown as www.doom9.net

Sharktooth
13th March 2006, 22:50
what's wrong with it?

dimzon
14th March 2006, 00:01
what's wrong with it?
i belive it must be
www.doom9.org
not
www.doom9.net

Edit: Oh sorry, never know www.doom9.net is valid too (always use www.doom9.org )

dimzon
15th March 2006, 13:29
@Doom9
Any news about Your refactoring? Please, keep us informed!

Doom9
15th March 2006, 19:23
if I'm not posting that means nothing is happening. I have more than a full plate at work, trouble with the IRS and my ISP so I don't feel like even looking at code when I get home from work.

Sharktooth
16th March 2006, 12:22
CVS Update:

0.2.3.2109 16 March 2006
Commit by Sharx1976:
- Added a file type of all supported audio formats to the audio open dialog and defaulted to that (patch by SysKin).

Sharktooth
16th March 2006, 12:46
CVS Update:

0.2.3.2110 16 March 2006
Commit by Sharkx1976
- Fixed a bug in ChapterCreator.cs. If you want to add a chapter in the middle of an existing list the programm lost all chapter after the new one(+1). (patch by IMOON)

ChronoCross
16th March 2006, 19:48
I won't be bale to make another build until the end of the weekend as I'm fighting off a nasty bit of Food poisoning I got from the school cafeteria.

berrinam
16th March 2006, 20:34
0.2.3.2111 16 March 2006
Commit by berrinam:
- Altered Source Detector to use IsCombedTIVTC instead of IsCombed. TIVTC.dll is now required for Source Detection
- Fixed bug with checking lossless mode in x264 Encoder Configuration -- it would disable encoding mode, but not re-enable it
- Removed useless LoadPlugin(<dgdecode>) line at the beginning of generated AviSynth scripts. dgdecode.dll is required in the AviSynth plugins anyway

berrinam
16th March 2006, 21:41
0.2.3.2112 16 March 2006
Commit by berrinam:
- Fixed up AviSynth script generation from the bug I added in 0.2.3.2111
- Removed the remaining few #if FULL bits in the code. These were causing SAR calculation to be forgotten.

berrinam
17th March 2006, 08:42
0.2.3.2113 17 March 2006
Commit by berrinam:
- Fixed error when opening a first pass mode in AutoEncode

Sharktooth
19th March 2006, 14:33
x264 rev 474 supports a new option: --thread-input
it separates the --thread-input from --threads and gives a nice speedup on dual core/dual processor configurations.

Sharktooth
19th March 2006, 14:59
CVS Update:

0.2.3.2114 19 March 2006
Commit by Sharkx1976:
- Added support for --thread-input x264 option in CommandLineGenerator.cs

Note: it gets automatically added for --threads > 1.

bratao
19th March 2006, 23:52
I´m witout my work machine, but should someone look at aviMuxer ?
With auto encode, it work fine, but if i go to Menu, Muxer-> Avi,
Add a video and audio, set to Vbr and ok..
It allocate the all Video and Hang for hour , after that killed the program..
This is the nomal becavior ?

Doom9
20th March 2006, 09:47
mencoder is a shitty avi muxer I'm afraid.. messes up half the time, especially when your input is AC3. In the future, avi muxing will be done differently.

bratao
20th March 2006, 13:53
I dont think that is a mencoder error but a Megui.
Im setuping a debbuger machine to help with more info.
But like a already say, the merge feature of 1-click always work great, but the manual merge, kill the pc

Sharktooth
21st March 2006, 02:44
--subme 7 is now in SVN.
MeGUI-svn CC can be removed.

leowai
21st March 2006, 03:43
--subme 7 is now in SVN.
MeGUI-svn CC can be removed.
I've different point of view. I think MeGUI-svn should stick with SVN of x264. So, I would suggest (temperary) remove 'MeGUI' version rather than 'MeGUI-svn' version. Because now 'MeGUI' is only for x264 with experimental patches and 'MeGUI-svn' is named for x264 WITHOUT experimental patches.

Or in future releases, 'MeGUI' will only for SVN build of x264, 'MeGUI-Exp' (or other names) for x264 with experimental patches?

Kostarum Rex Persia
21st March 2006, 04:03
No, MeGUI-svn should be removed now.

ChronoCross
21st March 2006, 05:18
even the current full megui doesn't have settings for AQ. it is full svn right now. there is no feature in full that isn't in the current svn. svn conditional compiling should be removed as they are now equal.

foxyshadis
21st March 2006, 05:19
I think profiles based on patches should be relegated to custom command line, unless they extend existing options, like subme 7 did. The upside is it's obvious that it's experimental and requires no extra dev support, the downside is megui won't have the logic to dynamically add/remove it.

leowai
21st March 2006, 07:16
there is no feature in full that isn't in the current svn. svn conditional compiling should be removed as they are now equal.
Ya. I know about this. I just wondering how are you going to name future release of MeGUI. For me, I'm thinking of 'MeGUI-svn' as major build since most ppl use svn build of x264. 'MeGUI-full' is an add-on build for x264 with experimental patches. :confused:

In future release, how about making 'MeGUI' as use for SVN build of x264 while 'MeGUI-Full' is for x264 with experimental patches?

Sorry here if what I state above seems to be confusing. :confused:

berrinam
21st March 2006, 07:25
I'm all for managing it through custom command lines. The whole point about patches is that they are UNSTABLE, and since we do eventually want MeGUI to be stable, this is really the only way we can resolve the two.

Also, with almost 2000 posts, perhaps it's a good idea to close this thread and start afresh?

ChronoCross
21st March 2006, 08:26
Honestly I think if megui is going to be competitive and actually have public releases it should not have more than one way of compiling.

A full version is all we should have. it's not that hard to use. if we want to control svn features we could simply make a checkbox in the x264 dialog to block out all none svn options. IT'll make megui more stable in the end cause you won't have 2000 conditional versions floating around. next thing you know we'll need to have a conditional compilation for avisynth 3.0 ro some other thing that megui supports simply because we have become accustomed to catering tot he wants of a single svn. if we made a conditional version for each program based on it's cvs or svn we will have waaay too many compiling options.

Sharktooth
21st March 2006, 12:37
well, since there is no difference in options (now) "svn" CC could be safely removed.
in the meantime i'm working on a method to automatically distinguish custom builds from svn builds without the need of CC.

Kostarum Rex Persia
21st March 2006, 14:55
well, since there is no difference in options (now) "svn" CC could be safely removed.
in the meantime i'm working on a method to automatically distinguish custom builds from svn builds without the need of CC.

Vety good idea, Sharktooth.:goodpost:

Romario
21st March 2006, 17:18
No, MeGUI-svn should be removed now.

Yes, you are right, KRP.

berrinam
21st March 2006, 20:05
Look, will you two (KRP and Romario) stop polluting the MeGUI dev thread? You're not actually contributing anything to the discussion. If you raised some points about the argument, then that would be interesting, but as it is, you are just spamming. Once again, you are breaking rule 11:

11) Don't post just to increase your number of posts. If you have nothing to say on a certain matter then don't post.

smok3
21st March 2006, 20:51
x264 rev 474 supports a new option: --thread-input
it separates the --thread-input from --threads and gives a nice speedup on dual core/dual processor configurations.

is there '--threads auto' or similar?

---

and a quick test between old ce-quicktime and new one:
old:
x264 [info]: PSNR Mean Y:35.120 U:41.762 V:40.610 Avg:36.328 Global:35.707 kb/s: 504.58
new:
x264 [info]: PSNR Mean Y:35.418 U:41.797 V:40.624 Avg:36.590 Global:35.983 kb/s: 505.31
(could that be significant?) - i can actually see a difference on few frames, but i didnt really check if they are of the same type, anyway it seems that this new preset is a bit harsh when dealing with such low bitrates on this specific sample - only judging from this few frames.

Sharktooth
21st March 2006, 21:31
no "--threads auto" in x264, but megui can do it (check the settings).
also .2/.3db in PSNR usually means better quality...