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

Greif
4th October 2008, 18:44
I was thinking if UpdateWindow was to display the EUL prior to downloading, the EUL text would have to be downloaded and prompted to the user.

<neroaacenc type="file">
<eulpath>[path to license]</eulpath>
<filepath version="1.3.3.0">NeroDigitalAudio.zip</filepath>
</neroaacenc>

The [path to license] in the above example would need to parse the EUL from http://www.nero.com/eng/downloads-nerodigital-nero-aac-codec.php. Not very clean. Unless the EUL text can be stored seperately on MeGUI servers (ie NeroDigitalAudio_eul.txt).

In this second example, the EUL is contained within the download and it specified by the 'eul' attribute. The update is downloaded and the license is prompted to the user. If the user does not agree, then the files will be deleted.

<neroaacenc type="file">
<filepath version="1.3.3.0"
eul="license.txt">NeroDigitalAudio.zip</filepath>
</neroaacenc>

It all depends on how the program authors allow their application to be distributed.

Greif
4th October 2008, 18:47
In the case of Nero, they have a public anonymous FTP which they offer the code from. There is nothing requiring users to agree to an EUL prior to downloading from the FTP site.

I'm not a lawyer though, so I don't know if that is legit. :devil:

Kurtnoise
4th October 2008, 20:18
yep...it's the Sharktooth idea. ;)

Patch welcome. :p

Greif
4th October 2008, 20:57
working on it

hydro
4th October 2008, 22:36
A problem remains for those who don't use the oneclick feature (like me :p). In the d2v creator, by applying your patch, getDGindexLogInfo() is running at the end. However, the log file is not created there.

So, here is an idea:
1/ create a boolean to use the DGindex preview.
2/ Apply it to "true" when we run the oneclick form or to "false" when we run the d2v creator tool.
3/ Hence, using this bool value to raise getDGindexLogInfo().

What do you think ?

Although I fixed getDGindexLogInfo() I'm not actually using it anymore. Let me revert to the trunk version and I'll see what's going on. :confused:

btw, all patches & fixes from you have been committed now except the log. So, many thanks to you. :)

Your welcome :D

hydro
4th October 2008, 23:35
A problem remains for those who don't use the oneclick feature (like me :p). In the d2v creator, by applying your patch, getDGindexLogInfo() is running at the end. However, the log file is not created there.


I'm confused. it isn't getting called anywhere in the trunk version:
Find all "getDGindexLogInfo", Subfolders, Find Results 1, "Entire Solution"
C:\Users\aaa\Desktop\megui_trunk\Changelog.txt(21): - (kurtnoise) [VideoUtil] modify trackID & Type in the getDGindexLogInfo() function. Patch by ateeq.
C:\Users\aaa\Desktop\megui_trunk\core\util\VideoUtil.cs(245): public void getDGindexLogInfo(string logFile, out List<AudioTrackInfo> audioTrackIDs)
Matching lines: 2 Matching files: 2 Total files searched: 324
And the call is commented out in my backup copy/patch :confused:
Find all "getDGindexLogInfo", Subfolders, Find Results 1, "Entire Solution"
C:\Users\aaa\Desktop\megui_oneclick_mediainfo\core\util\VideoUtil.cs(239): public void getDGindexLogInfo(string logFile, out List<AudioTrackInfo> audioTrackIDs)
C:\Users\aaa\Desktop\megui_oneclick_mediainfo\core\util\VideoUtil.cs(335): //getDGindexLogInfo(Path.GetDirectoryName(projectSource) + "\\" + Path.GetFileNameWithoutExtension(projectSource) + ".log" , out list);
Matching lines: 2 Matching files: 1 Total files searched: 324

It seems to be working ok for me and demuxes the audio (if I remember to select a track or select demux all) into the project directory. It even loads it into the main form if you tick the load box, however, I did notice that it doesn't automatically load the video. Did that break recently?

Greif
5th October 2008, 00:09
yep...it's the Sharktooth idea. ;)

Patch welcome. :p

Got an unstable patch submitted: https://sourceforge.net/tracker/index.php?func=detail&aid=2146987&group_id=156112&atid=798478

I don't know why but the eul attribute isn't being read in properly. I"m not sure if I have the property being set in the correct spot.

I'm still trying to learn the solution architecture...

Greif
5th October 2008, 05:24
Got the patch working. The EUL is downloaded prior to the update. Either the EUL text file is stored on the application author's server or on MeGUIs.

Please verify the way I am handling the EUL is proper.

As a side note, I'd like to redo the way updates are managed.

Kurtnoise
5th October 2008, 10:14
I'm confused. it isn't getting called anywhere in the trunk version
yes as I said, the DGLog part hasn't been committed yet. (Only on my local tree for testings).

It seems to be working ok for me and demuxes the audio (if I remember to select a track or select demux all) into the project directory. It even loads it into the main form if you tick the load box, however, I did notice that it doesn't automatically load the video. Did that break recently?
I read this in your patch:
+ //AAA: DGLog: List<AudioTrackInfo> list;
+ //AAA: DGLog: getDGindexLogInfo(Path.GetDirectoryName(projectSource) + "\\" + Path.GetFileNameWithoutExtension(projectSource) + ".log" , out list);
+ //AAA: DGLog: for (int counter = 0; counter < list.Count; counter++)


So, I assumed that to use the DGLog part, we have to enable these lines. Am I right ?

Kurtnoise
5th October 2008, 10:17
Got the patch working. The EUL is downloaded prior to the update. Either the EUL text file is stored on the application author's server or on MeGUIs.

Please verify the way I am handling the EUL is proper.
I'm reviewing it. Thanks...

edit: looks ok to me. I need to test it though and I'm waiting Sharktooth reply on this before to commit it.

As a side note, I'd like to redo the way updates are managed.
please, elaborate...:p

hydro
5th October 2008, 12:15
I read this in your patch:
+ //AAA: DGLog: List<AudioTrackInfo> list;
+ //AAA: DGLog: getDGindexLogInfo(Path.GetDirectoryName(projectSource) + "\\" + Path.GetFileNameWithoutExtension(projectSource) + ".log" , out list);
+ //AAA: DGLog: for (int counter = 0; counter < list.Count; counter++)


So, I assumed that to use the DGLog part, we have to enable these lines. Am I right ?

The DGLog part was a work in progress that was never finished after I realised that the dgindex log doesn't contain audio PIDs for transport streams and I then found I can get the all the information from MediaInfo so you can discard those lines.

Kurtnoise
5th October 2008, 15:13
aaa...ok.

So, there is still an issue with the one click encoder. Try with a VOB file as input. Problem rises after the d2v file creation but this is not related to your code afaik.

hydro
5th October 2008, 16:19
aaa...ok.

So, there is still an issue with the one click encoder. Try with a VOB file as input. Problem rises after the d2v file creation but this is not related to your code afaik.

Hmmm... d2v uses IFO or now MediaInfo, I forgot Oneclick used the DVD Decrypter file instead of the IFO to get information. I didn't have any DVD Decrypter sources with the stream info present.

Easy fix, delete stream information.txt :sly:

Alternate fix, see videoutil_getsourceinfo.patch in 2141406.

Kurtnoise
5th October 2008, 19:41
Well...instead of delete it, I prefer to rename it >> patch (http://pastebin.com/f296bfe7c) :)

coz this file shouln't be use anymore.


All in all, the one click encoder is fully functional now. Great...;)

hydro
5th October 2008, 20:15
coz this file shouln't be use anymore.


I that case just remove the call to the function so the file is ignored - smallpatch (http://pastebin.com/m61ea802e)

It's not used anywhere else as far as I can tell and I would have included it's removal in an earlier patch if I'd noticed that subtitles weren't supported in oneclick anyway.

Kurtnoise
6th October 2008, 07:57
applied. Thanks...

Greif
6th October 2008, 14:54
any chance of being added to the sourceforge project? i'd like to take part in the dev forum there.

Greif
6th October 2008, 15:04
@kurt: how's the stream extractor coming along?

I've been creating an object model around the eac3to (ie Feature, IStream, VideoStream, ChapterStream, etc) and developing the code to properly parse the data from StdOut to create the associated objects.

Kurtnoise
6th October 2008, 15:51
almost finished (http://pastebin.com/f20ad40ec)...

quite huge, isn't it ?

Greif
7th October 2008, 01:25
Here is my go at it... I still have a lot to do :)

http://pastebin.com/m71d8a0b8

Kurtnoise
7th October 2008, 10:01
I think you can merge featureWorker_DoWork() & streamWorker_DoWork() by adding members in the function to expose exe path, source drive and extra command lines

something like:
void Worker_DoWork(object sender, DoWorkEventArgs e, string exec, string inputdrive, string args)
{
features = new List<Feature>();
featureWorker.ReportProgress(0, "Retrieving features");

using (Process compiler = new Process())
{
compiler.StartInfo.FileName = exec;
compiler.StartInfo.Arguments = string.Format("{0} {1}", inputdrive, args);
compiler.StartInfo.CreateNoWindow = true;
compiler.StartInfo.UseShellExecute = false;
compiler.StartInfo.RedirectStandardOutput = true;

// Set our event handler to asynchronously read the sort output.
compiler.OutputDataReceived += new DataReceivedEventHandler(featureCompiler_OutputDataReceived);
//compiler.OutputDataReceived += new DataReceivedEventHandler(LogData);

compiler.Start();
compiler.BeginOutputReadLine();
compiler.WaitForExit();
}

e.Result = "Completed";
}

Greif
7th October 2008, 12:19
I think you can merge featureWorker_DoWork() & streamWorker_DoWork() by adding members in the function to expose exe path, source drive and extra command lines

Could I not pass in the arguments when kicking off the background worker process? Something like this...

Create a new Args struct to contain any of the required arguments the DoWork event requires.

struct Args
{
string eac3toPath;
string inputDrive;
string args;
}

Populate the Args struct, then pass it when starting the worker process.

backgroundWorker.RunWorkerAsync(args);

Reference the arguments in the DoWork event of the background worker.

Args args = e.Argument as Args

Greif
7th October 2008, 12:25
And here (http://pastebin.com/m7d93a161) is what I have so far with my eac3to domain.

Kurtnoise
7th October 2008, 13:04
Could I not pass in the arguments when kicking off the background worker process? Something like this...

Create a new Args struct to contain any of the required arguments the DoWork event requires.

struct Args
{
string eac3toPath;
string inputDrive;
string args;
}

Populate the Args struct, then pass it when starting the worker process.

backgroundWorker.RunWorkerAsync(args);

Reference the arguments in the DoWork event of the background worker.

Args args = e.Argument as Args
yeah...everything is possible you know. ;) but that needs to be tested. :p

Some notes regarding your code:
AAC should be dropped (not in BD or HDDVD dics) or you want to have TS files support ?
f.Number = int.Parse(s.Substring(0, 1)); >> f.Number = int.Parse(s.Substring(0, s.IndexOf(")"));
stream.Number = int.Parse(s.Substring(0, 1)); >> stream.Number = int.Parse(s.Substring(0, s.IndexOf(":")));
because you can have digits length > 1

Kurtnoise
7th October 2008, 14:01
MoMa (http://www.mono-project.com/MoMA) scan results (http://kurtnoise.free.fr/MeGUI/output.html) on megui...:sly:

Sharktooth
8th October 2008, 02:29
I'm reviewing it. Thanks...

edit: looks ok to me. I need to test it though and I'm waiting Sharktooth reply on this before to commit it.
dont have time to review it. feel free to post a test build for ... testing :)

Kurtnoise
8th October 2008, 07:32
It was just to have your comment on this. :) Do you like it or do you prefer something else...?

because EULA clearly mentions that : This License does not provide any rights to reproduce and/or distribute this software package in whole or in any part.


So, to test a build, I need to upload on my website the licence and package files.

Kurtnoise
8th October 2008, 10:56
@Greif: I fear that your idea needs to be revisited...See my comment in the previous post above.

Greif
8th October 2008, 12:22
It may only apply to commercial software, but who knows...

Like I said, I'm no lawyer. I think if the data were retrieved from Nero's servers, it might work???

Further down, it states to contact Nero for licensing guidance.

There are a few Nero employees who are regulars on these forums, we could run this idea - or another - by them.

Yes, this is an issue with Nero, but how about other software? In general, does software come with EULs which does not allow for distribution?

Another option would be to list the update on the update, but require a manual download by the user.

Kurtnoise
8th October 2008, 14:04
and what about adding a link into the node like you have done with eula ? this way:

<neroaacenc type="file" displayname="Nero Digital Audio"
eul="http://server/eul-neroaacenc.txt" link="ftp://ftp6.nero.com/tools/">
<filepath version="1.3.3.0">NeroDigitalAudio.zip</filepath>
</neroaacenc>

and add also this item for all nodes. Dunno if it's doable...

ggf31416
8th October 2008, 21:31
Sorry, wrong thread.

Doom9
9th October 2008, 17:28
I asked Nero once if we could distribute their encoder in a way (even if it meant showing the eula first).. the answer then was no.

Greif
10th October 2008, 04:36
@Kurtnoise13:

http://stuff.griffore.com/eac3to.jpg

check
10th October 2008, 04:40
Column header 'extract as' is ambiguous and can suggest no transcoding is taking place. I think you should use a heading which makes it clear to newbies a conversion is taking place. Maybe 'encode to'?

Kurtnoise
10th October 2008, 08:10
@Kurtnoise13:

http://stuff.griffore.com/eac3to.jpg

any patches/code to share ? :p


btw, drive & folder tabs should be merged imo...

Greif
10th October 2008, 12:29
any patches/code to share ? :p

Not yet. I have quite a bit let to do:
code stuff, like commenting, adding license header
inserting into the Job queue (no clue how to do that yet)
waiting to hear back from madshi wrt StdError stream and warnings/information messages
GUI stuff like adding a target output folder
lots of work around my eac3to domain model - getting properties parsed out properly, override ToString()s, etc

Hopefully, I should have something to submit in the next couple of days.

btw, drive & folder tabs should be merged imo...

Yeah, now that you mention it, that makes perfect sense. I have code in there querying via WMI to get a list of populated drives. Seems silly now...

Greif
10th October 2008, 14:55
Column header 'extract as' is ambiguous and can suggest no transcoding is taking place. I think you should use a heading which makes it clear to newbies a conversion is taking place. Maybe 'encode to'?

But what about the scenarios where there is no encoding taking place? How about "Extract To"?

For naming of the extract files I was going to use the following syntax:
[featureName]_[streamNumber]_[streamName].[extractType]

The screen shot shows the stream.Description in the Name column, I have to change the heading to "Description". The name would be the fist token (via comma split) of the description.

rack04
10th October 2008, 15:05
But what about the scenarios where there is no encoding taking place? How about "Extract To"?

How about "Output Format"?

Sharktooth
10th October 2008, 15:23
I asked Nero once if we could distribute their encoder in a way (even if it meant showing the eula first).. the answer then was no.
we wont distribute... we will get it directly from their servers.

@kurtnoise: the link should better point to the file not a folder. i mean, IF the file link is present then that link should be used to get the file (btw the correct link is http://ftp6.nero.com/tools/NeroDigitalAudio.zip).

check
10th October 2008, 16:18
But what about the scenarios where there is no encoding taking place? How about "Extract To"?Yes, it's tricky. If you could add a column that listed the source format people could work it out themselves. But your choice :)

Kurtnoise
10th October 2008, 16:48
@kurtnoise: the link should better point to the file not a folder. i mean, IF the file link is present then that link should be used to get the file (btw the correct link is http://ftp6.nero.com/tools/NeroDigitalAudio.zip).
mmh, maybe I was not clear enough... this implies few modifications in the upgrade.xml file and some changes in the current code.

My goal is to have 4 parameters in the main node:
type
name
eula
link


Then, in the children node only the version corresponding to the package filename.

So, something like that:
<neroaacenc type="file"
name="Nero Digital Audio"
eula="licence.txt"
link="ftp://ftp6.nero.com/tools/">

<package version="1.3.3.0">NeroDigitalAudio.zip</package>

</neroaacenc>


and so on,...

<x264 type="file"
name="x264 AVC Compressor"
eula=""
link="http://megui.org/auto/">

<package version="r998 - Skystrife's patched build">x264-998.zip</package>

</x264>


Hence, to download we parse link + package...If it's to complicated, we can create several nodes instead :
<264
<type>file</type>
<name>x264 AVC Compressor</name>
<eula></eula>
<link>http://megui.org/auto/</link>
<version>r998 - Skystrife's patched build</version>
<package>x264-998.zip</package>>
</x264>

Ramir Gonzales
10th October 2008, 17:07
It's been a long time since I tried (and couldn't get a hold on) MEGui, what drove me away was the fact that there was no real logic in how you would take the steps one after another to get your desired output, but most was that the needed tools where installed in the Programs Folder, thereby disrupting the operation of other movie editing tools.

So my question is : Does the current MEGui version installs the needed apps in a subdirectory of its own, or does it still install them in their usual folder as when you would install the apps manually ?

I really would like to try out the new MEGui, while making sure that other apps (Avisynth, MKVToolnix, etc...Etc...) keep operating nicely with other front-ends.

Sharktooth
10th October 2008, 18:27
megui never did what you say. the only thing that megui will install in another program folder are the avisynth filters.

Greif
11th October 2008, 18:05
http://forum.doom9.org/showthread.php?p=1193742#post1193742

http://stuff.griffore.com/stuff/HdBrStreamExtractor.jpg

I still have to get this integrated with MeGUI and figure out how to add to the job queue.

Jawed
12th October 2008, 00:17
I was, until recently, using MeGUI:

MeGUI Version: 0.2.6.1044
OS used: Microsoft Windows XP Professional Service Pack 3
Framework used: 2.0 SP1

but have fully updated:

[Information] Versions
-[NoImage] MeGUI Version : 0.3.0.3002
-[NoImage] OS : Microsoft Windows XP Professional SP3 (5.1.196608.2600)
-[NoImage] Framework used : 2.0 SP1 (2.0.50727.3053)

I'm using x264 r998.

The clip I have tried to encode is 704x424. The Avisynth script sets:

global MeGUI_darx = 2361
global MeGUI_dary = 1000

With the old version of MeGUI the SAR passed to x264 in the command line was 7109:5000. With the new version of MeGUI the SAR is 195433706533:137439094203.

For whatever reason x264 can't cope with that SAR and sets it to 1:1.

Jawed

Nightshiver
12th October 2008, 00:47
This has been discussed several times before.

Sharktooth
12th October 2008, 15:31
there is a bug in the SAR detection. please feed it manually to x264 with the --sar option (custom commandline options in the codec config window) until we find and fix the bug.

brogan
12th October 2008, 21:09
I have an .mkv that has a resolution of 1920x808 & I'm trying to make it playable in my standalone BD player...I've used Ripbot to stretch files like this but they looked too stretched unfortunately...is there a way in Megui to add borders to get to the 1920x1080 resolution?? I'm not sure if it could be done but there is obviously much more in the way of options than RipBot...any help would be greatly appreciated...

Kurtnoise
12th October 2008, 22:29
buy a BD...:goodpost::thanks:

Jawed
12th October 2008, 22:41
Thanks.

Revision 554 of core.util.dar introduced some funky binary search technique for generating fractions.

This code requests precision to 1e-13. I reckon it only needs to request 1e-5. Some testing wouldn't go amiss...

Jawed