Log in

View Full Version : MeGUI development


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

berrinam
20th May 2006, 07:56
Some thoughts on bits of code that can still be improved:
Make the VideoEncoder and DGIndexer classes implement IJobProcessor, as all other job types already do. That will then mean more generic processing of jobs should be possible (I haven't looked into this too deeply).
Look into the management of dependencies. Since there are many dependencies at the moment, it would be nice to have a dynamic way of dealing with these, instead of having a static property for each exe file. This ties in with AutoUpdate, as I said above.
Extend polymorphism to video commandline generation, so that the VideoEncoderProvider provides the function that generates the commandline, instead of having many if statements

Sharktooth
20th May 2006, 13:20
CVS is down...

also MeGUI.exe doesnt get updated by the autoupdater...

Adub
20th May 2006, 22:16
are there any safely compiled versions of 0.2.3.2148? Sorry, its just that I need the fixes. :)

berrinam
20th May 2006, 23:10
CVS is down...It works for me now... maybe it's up again.

also MeGUI.exe doesnt get updated by the autoupdater...Yeah, I know. That's one of the fixes in 0.2.3.2148

are there any safely compiled versions of 0.2.3.2148? Sorry, its just that I need the fixes. :)
http://www.megui.org/megui-2148-mindist.zip

This is the smallest installation that works. Everything else can be installed from that via AutoUpdate.

Adub
20th May 2006, 23:55
Thanks man!

Also, for your version check thing, could just have MeGUI check the date in which the file was modified/created? then just set date restrictions/checkups and everything will be fine. Just an idea.

berrinam
21st May 2006, 00:18
Thanks man!

Also, for your version check thing, could just have MeGUI check the date in which the file was modified/created? then just set date restrictions/checkups and everything will be fine. Just an idea.
It's a thought, but IMHO that alone is not enough (it's how StaxRip does it, but I find that it gives a lot of 'unknown versions' there, just like MeGUI) because the date of creation could depend on a whole lot of things, and it would get all stuffed up anyway if someone else compiled it on a different day.

I think that the best system we can hope for is one that combines A manifest file which keeps track of versions (like we currently have)
Date checking, as you described
Being able to grab the versions from files (parsing the output, because CLI apps tend to print the version to stdout and stderr)
Testing of apps to see if they work, despite not knowing the versions
User overrides to set the version

Sharktooth
21st May 2006, 04:16
Being able to grab the versions from files (parsing the output, because CLI apps tend to print the version to stdout
x264 CLI outputs all the info to stderr.
i already did version checking for x264 but never commited it coz i was waiting for autoupdate.
i'll commit the changes as soon as i get that code integrated in the autoupdater.

stax76
21st May 2006, 07:09
It's a thought, but IMHO that alone is not enough (it's how StaxRip does it, but I find that it gives a lot of 'unknown versions' there, just like MeGUI) because the date of creation could depend on a whole lot of things, and it would get all stuffed up anyway if someone else compiled it on a different day.


StaxRip uses date only, it's of course possible to apply different methods depending on the application, the reason why I didn't do it is because I thought it's easier to use one solution that fits all. Using date will however be a mess unless you use a tolerance, I'm using 48 hours.

berrinam
21st May 2006, 07:22
Regexes work well for determining the version of an application, based on what it prints to stderr/stdout (I thought of them today, and then I read all about them, and I got a bit excited so I went through the MeGUI exe dependencies to see where they are applicable:D). I propose a system for easily checking the version based on stderr/stdout and regexes:

For a file, say x264, we currently have:
<x264 type="file">
<filepath version="r523">x264_r523.zip</filepath>
</x264>Now, we add another xml tag: regex, so that it now looks like this:
<x264 type="file">
<regex cmdline="--help">(?<=svn\-)[0-9]+</regex>
<filepath version="r523">x264_r523.zip</filepath>
</x264>

MeGUI would then see that tag, run the executable with the commandline --help (not that it needs it; it's just an example, because some apps DO need a special commandline to show the version, like mp4box), and use the regex: (?<=svn\-)[0-9]+
to return a string of the versions.

On the files I have, I have worked out the following regexes that work so far:
X264: (?<=svn\-)[0-9]+
MP4Box: (?<=version )[0-9.]+
DivXMux: (?<=DivXMux.exe version ).+(?=\r?\nUsage)
FAAC: (?<=FAAC )[0-9.]+(?= \()
LAME: (?<=version )[0-9.]+
mkvmerge: (?<=mkvmerge )v[0-9.]+(?= )
oggenc: (?<=OggEnc )v[0-9.]+(?= )
Note: I didn't test these regexes with C#, but I assume that the .NET implementation of regexes is complete.

This could also be extended to support a few things, like build date as well, as some things print that as well or instead.
EDIT: The following are the apps that MeGUI uses that only print the build date, and the required regexes for them:
ffmpeg build date: (?<=built on )([\w]+ ){2}([\w]+)(?= )
xvid_encraw build date: (?<= on )([\w]+ ){2}[\w]+
neroEncAac: (?<=build date: )(\w+ *){2}\w+
encaacpluscli: (?<=Build )(\w+ +){2}\w+(?=, )
The problem with these is that the formatting of the date varies, and I don't know what the best way to parse it is. It would be nice if there were some function which could parse a date string and automatically work out which field means what...[/EDIT]


Using regexes means that we get both the generic coding and the special cases.

foxyshadis
21st May 2006, 09:20
Well... there's a php-to-C# interface library, and php has strtotime, which reads just about any date formats into an unix timestamp... but that sounds excessively convoluted. Since it's all open source maybe you can just steal their parser and make a mini-library out of it. :p

Ah, but then, strtotime itself is based on the gnu date parsing/formatting library, which may well have a c# version/interface lying around.

berrinam
21st May 2006, 11:48
0.2.3.2149 21 May 2006
Commit by berrinam:
- Fixed the version parsing algorithm so that it isn't tricked by numbers like 1.10 being higher than 1.4

Doom9
21st May 2006, 12:03
strtotime itself is based on the gnu date parsing/formatting library, which may well have a c# version/interface lying around.C# obviously has such mechanisms, too.
@berrinam: I think you have to put those regexps into cdata elements as they invalidate the xml document structure. Specifically >< are not allowed as text elements because those are xml delimiter tags. I just ran into this problem at work last Friday, but wrapping them into CDATA will do the trick.

berrinam
21st May 2006, 12:09
I just ran into this problem at work last Friday, but wrapping them into CDATA will do the trick.I see you are right. I had to look up CDATA, though, to find out what you were talking about. ;)

Do you like the system, though?

Yama4050242
21st May 2006, 12:40
where does the auto update for avisynth plugins go? my avisynth plugin dir? I dont want anyone to touch there

MatMaul
21st May 2006, 13:20
Can you tell me please what is the equivalent of the option "Improve accuracy using 32 bits & Float computations" in audio configuration with an avisynth script ?

Carpo
21st May 2006, 13:24
from what i have seen it will only update the dlls, with the ones you can download from the megui guide sticky - no other files should be touched - i could be wrong tho :D

buzzqw
21st May 2006, 13:43
@MatMaul

the avisynth script for audio conversion will do a nice ConvertAudioTo32bit() or ConvertAudioToFloat() of audio samples before feeding audio encoder

This is mean for the maximum clean cristality when converting audio source to wav to encoder

BHH

MatMaul
21st May 2006, 13:47
@MatMaul

the avisynth script for audio conversion will do a nice ConvertAudioTo32bit() or ConvertAudioToFloat() of audio samples before feeding audio encoder

This is mean for the maximum clean cristality when converting audio source to wav to encoder

BHH

Thanks ! Just after the source and before the filters (like amplifydb) or after all the filters, just before the "return"?
And how megui chooses between ConvertAudioTo32bit() and ConvertAudioToFloat() ?

according to this code
if (audioJob.Settings.ImproveAccuracy || audioJob.Settings.AutoGain /* to fix the bug */)
script.AppendFormat("ConvertAudioToFloat(){0}", Environment.NewLine);

if (audioJob.Settings.AutoGain)
script.AppendFormat("Normalize(){0}", Environment.NewLine);
I think it's just after the source and ConvertAudioToFloat() is used

Yama4050242
21st May 2006, 14:09
from what i have seen it will only update the dlls, with the ones you can download from the megui guide sticky - no other files should be touched - i could be wrong tho :D
i dont want megui to update my dll, in that case i dont know what version i am using, i want it download the dll in the megui folder not my avisynth plugins

Carpo
21st May 2006, 14:31
you do have the option to tell megui not to download the dlls, and if you look it does tell u the date/version of the avisynth files.


you could always post this in the feature thread and see if the devs would add an option to change the path of the dlls,

Yama4050242
21st May 2006, 14:44
you do have the option to tell megui not to download the dlls, and if you look it does tell u the date/version of the avisynth files.


you could always post this in the feature thread and see if the devs would add an option to change the path of the dlls,
i have the option there but it can not uncheck all, to uncheck them one by one is crazy to me

edit: my bad, the had readmes

Yama4050242
21st May 2006, 14:48
i dont like the autoupdate anyhow, you can just give a web page that all the uptodate things on it, or maybe autoupdate for megui itself is quite enough, for eg. the dgdecode.dll and the dgindex, what if i create the d2v yesterday and i update the megui, then they become useless, and do we need to try all the betas when we got no problems with the latest "final"

Kurth
21st May 2006, 18:53
http://img364.imageshack.us/img364/237/mkvmux2wa.jpg
I need to mux a timecodes.txt with my video because I use VFR can you add this option to MeGUI MKV Mux ?

buzzqw
21st May 2006, 19:03
@Yama4050242
you can de-check what to download....

BHH

bob0r
21st May 2006, 21:45
@ megui devs:

Want me to put an unpacked version of x264.exe on my mirrors? For megui auto update... so maybe people can choose SVN or modified version via updater also, please let me know.

berrinam
21st May 2006, 22:05
GUYS, THIS IS NOT A FEATURE REQUEST THREAD OR A LETS-WHINE-ABOUT-EVERYTHING THREAD!
Please post in the relevant place (there is a Feature Request thread and a General Questions/Troubleshooting thread that you guys should be looking at)

where does the auto update for avisynth plugins go? my avisynth plugin dir? I dont want anyone to touch thereIt is really just annoying putting the AviSynth plugins in a different directory, because then every plugin used needs to be explicitly loaded. We've had this discussion many times, and there is no real reason to do things the hard way.

i have the option there but it can not uncheck all, to uncheck them one by one is crazy to me
Have you tried selecting more than one with Shift and right-clicking to see what you get? You can permanently turn off updates on any particular file by selecting 'Ignore updates', and you can turn them off temporarily by selecting Uncheck. I don't know what else you want.

Want me to put an unpacked version of x264.exe on my mirrors? For megui auto update... so maybe people can choose SVN or modified version via updater also, please let me know.Thank you for your offer. I would appreciate it, but we don't yet support multiple build series (it's certainly an aim, though).

bob0r
21st May 2006, 22:37
Thank you for your offer. I would appreciate it, but we don't yet support multiple build series (it's certainly an aim, though).

http://x264.nl/x264/x264.exe
http://mirror01.x264.nl/x264/x264.exe
http://mirror02.x264.nl/x264/x264.exe
http://mirror03.x264.nl/x264/x264.exe
http://mirror04.x264.nl/x264/x264.exe
http://mirror05.x264.nl/x264/x264.exe

Good luck (x264.exe is auto uploaded when a new revision is detected and compiled)

dimzon
21st May 2006, 22:56
http://forum.doom9.org/showpost.php?p=829754&postcount=259

MeGUI auto updater overwrites my NicAudio.dll (20060314) with some from 2005, in that case DRC not work

please, use my latest NicAudio binary from BeHappy workspace!

dimzon
21st May 2006, 22:59
0.2.3.2150 22 May 2006
Commit by dimzon:
- Fixed no more upgrade.xml from cache

dimzon
21st May 2006, 23:10
talking about fileversion detection
there are special Win32 resource type named VERSIONINFO. So, I believe, the best/proper way will be to ask developers/builders to include VERSIONINFO resource into their win32 builds. It will cost approx 5 minutes to add such resource...

Sharktooth
22nd May 2006, 03:22
0.2.3.2151
Commit by Sharx1976:
- Better alignment of some controls

ChronoCross
22nd May 2006, 19:49
I am currently on vacation. I will have a megui folder final design when I get back.

berrinam
23rd May 2006, 07:01
talking about fileversion detection
there are special Win32 resource type named VERSIONINFO. So, I believe, the best/proper way will be to ask developers/builders to include VERSIONINFO resource into their win32 builds. It will cost approx 5 minutes to add such resource...
Can you provide some code to access this resource in C#?

Also, I'm doing a small refactor of the Encoder classes to make them all derive from IJobProcessor (this just means changing VideoEncoder and DGIndexer), and quite a few times I have come across this difficulty: we currently have some enums, like VideoCodec and AudioCodec. However, in various places it would be nice to have a type called Codec, which both derive from (for type-safety reasons). Is there any way to do this?

stax76
23rd May 2006, 07:39
There is a class called FileVersionInfo (http://msdn2.microsoft.com/en-us/library/system.diagnostics.fileversioninfo.aspx).

dimzon
23rd May 2006, 08:41
0.2.3.2152 22 May 2006
Commit by dimzon:
- Fixed OggVorbis 5.1 Channel mapping (http://forum.doom9.org/showthread.php?p=831098#post831098)

acrespo
23rd May 2006, 16:16
Since 2146 (until 2152) version is not function with autoencode for me. My steps:
1 - Load avs in video frame and change the name of video output.
2 - Press AutoEncode button, change the size to 174 Mbytes and check "Add additional content (audio, subs, chapters)".
3 - Select the audio already compressed in AAC format.
4 - Press Go button. Nothing happens. The "Adaptative Mux Window" window is still there and I don't see any entries in Queue tab.

Sharktooth
23rd May 2006, 17:14
Since 2146 (until 2152) version is not function with autoencode for me. My steps:
1 - Load avs in video frame and change the name of video output.
2 - Press AutoEncode button, change the size to 174 Mbytes and check "Add additional content (audio, subs, chapters)".
3 - Select the audio already compressed in AAC format.
4 - Press Go button. Nothing happens. The "Adaptative Mux Window" window is still there and I don't see any entries in Queue tab.
This is the DEVELOPMENT thread. Use the appropriate BUG REPORT thread...
However this problem is already known. Next time :search:

berrinam
24th May 2006, 00:10
0.2.3.2153 24 May 2006
Commit by berrinam:
- Small refactor to make all encoders implement IJobProcessor
- delete duplicate code thanks to the above refactor
- fix up two bugs with AutoEncode

Sharktooth
24th May 2006, 17:08
Maybe i found a suffuciently reliable way to do the compression test but that will require a lot of changes in avisynth script creator...

@devs: it's too long to discuss it here. please contact me via MSN or IRC (on freenode #x264)

berrinam
25th May 2006, 10:51
Also, I'm doing a small refactor of the Encoder classes to make them all derive from IJobProcessor (this just means changing VideoEncoder and DGIndexer), and quite a few times I have come across this difficulty: we currently have some enums, like VideoCodec and AudioCodec. However, in various places it would be nice to have a type called Codec, which both derive from (for type-safety reasons). Is there any way to do this?Help?

Doom9
25th May 2006, 11:41
I don't think you can inherit from an enum since it's not a class. Have you tried an interface which holds the enum(s) and exposes them in some useful way?

Sharktooth
26th May 2006, 02:04
0.2.3.2154 26 May 2006
Commit by Sharx1976:
- Added a "Quick & Dirty way (tm)" to prevent accidental shutdowns when aborting a job and the "Shutdown at end of encoding" checkbox is enabled (works only with the Abort button in the Queue tab)
- Some more controls alignment
It's quite late and i had no time to extend the shutdown prevention to the progress window. the megui settings and the shutdown checkbox on the main form cant be accessed directly from there... it requires some more code. feel free to complete it.

Sharktooth
26th May 2006, 02:46
0.2.3.2155
Commit by Sharx1976:
- Fixed a wrong slash ("/" to "\") in UpdateWindow.cs

berrinam
29th May 2006, 09:59
Maybe i found a suffuciently reliable way to do the compression test but that will require a lot of changes in avisynth script creator...

@devs: it's too long to discuss it here. please contact me via MSN or IRC (on freenode #x264)
Who are you on IRC?

Sharktooth
29th May 2006, 12:53
Same name as here but im not always online coz recently i've been quite busy.

Sharktooth
31st May 2006, 10:49
i had a discussion with berrinam about the megui development.
i dont actually remember all the things we discussed but i think we should freeze the actual status of megui and proceed with a bugfix before adding new stuff.
i think we should release a stable version (version 0.3) with the actual features so users can benefit from the auto-update and the refactored code.
Once we're done we could procede adding new stuff like the comp.check, the mirrors support in auto-update and other things.

M.H.A.Q.S.
31st May 2006, 11:44
As discussed in another thread. I am interested in the x264 GUI only part of MeGUI. Since its in C# so it serves my purpose and as old x264 only MeGUI source links are dead, I request any dev to provide me with a link to any archived source and build. I would be very much thankful.

berrinam
31st May 2006, 23:49
0.2.3.2157
Commit by berrinam:
- Fix bitrate calculation in AutoEncode and Calculator

0.2.3.2156
Commit by berrinam:
- Fix the mp4/aac bug with AutoEncoding.
- Partway to fix of bitrate calculations, but it is more complicated than it seems...

berrinam
1st June 2006, 01:13
0.2.3.2158
Commit by berrinam:
- Fix up DAR/SAR bug introduced in 0.2.3.2153

Sharktooth
1st June 2006, 01:40
0.2.3.2159
Commit by Sharx1976
- Moved shutdown prevention into Abort event. Shutdown now gets automatically disabled if the Abort event is triggered.