Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Video Encoding > MPEG-4 Encoder GUIs
Register FAQ Calendar Today's Posts Search

Closed Thread
 
Thread Tools Search this Thread Display Modes
Old 20th February 2006, 18:56   #261  |  Link
Sharktooth
Mr. Sandman
 
Sharktooth's Avatar
 
Join Date: Sep 2003
Location: Haddonfield, IL
Posts: 11,768
uhm... that way it's ugly.
well, i think this idea should be dropped at this point. we can already default megui to use always 2 threads for x264 even on single core non hyperthreaded cpus (for the reasons explained above).
and we can detect if there are more than 2 execution units and rise the number of threads to 4 for quad core or dual core hyperthreaded cpus...
Sharktooth is offline  
Old 20th February 2006, 19:22   #262  |  Link
Morte66
Flying Skull
 
Morte66's Avatar
 
Join Date: Jan 2005
Posts: 397
Quote:
Originally Posted by Richard Berg
On my multi-cpu machines, I just run 2 copies of MeGUI (from separate folders, of course, so the xml files don't conflict). It's not that hard, and won't be very common right now.
Me too, it gets me from about 4.5 to 6fps on the stuff I've been doing lately. That's what made me put the request in. Oh well never mind, and thanks for looking at it guys.
Morte66 is offline  
Old 20th February 2006, 19:26   #263  |  Link
dimzon
BeHappy/MeGUI developer
 
dimzon's Avatar
 
Join Date: Oct 2003
Location: Moscow, Russia
Posts: 1,727
Quote:
Originally Posted by Sharktooth
uhm... that way it's ugly.
well, i think this idea should be dropped at this point. we can already default megui to use always 2 threads for x264 even on single core non hyperthreaded cpus (for the reasons explained above).
And suspicions can be checked up:
We (rissain comminity ) take 2 clips coded with identical adjustments, in 1 and in 2 slices and we measure speed of their decoding on 2 processors nero the decoder (which supports SMP).

1 slice- 169 fps (both of the processor are loaded)
2 slice - 167 fps (both of the processor are loaded)
dimzon is offline  
Old 20th February 2006, 19:55   #264  |  Link
Sharktooth
Mr. Sandman
 
Sharktooth's Avatar
 
Join Date: Sep 2003
Location: Haddonfield, IL
Posts: 11,768
interesting. maybe nero found a way to multithread the decoder using something different than slices. never looked into it...
however qt uses slices for that purpouse (but as we all know QT = coded like crap...).
Sharktooth is offline  
Old 20th February 2006, 20:04   #265  |  Link
dimzon
BeHappy/MeGUI developer
 
dimzon's Avatar
 
Join Date: Oct 2003
Location: Moscow, Russia
Posts: 1,727
Quote:
Originally Posted by Sharktooth
interesting. maybe nero found a way to multithread the decoder using something different than slices. never looked into it...
however qt uses slices for that purpouse (but as we all know QT = coded like crap...).
Elecard h264 encoders perform multithread encoding without slices too
Slices is easyest but not best way for multithreading
dimzon is offline  
Old 20th February 2006, 20:48   #266  |  Link
Sharktooth
Mr. Sandman
 
Sharktooth's Avatar
 
Join Date: Sep 2003
Location: Haddonfield, IL
Posts: 11,768
indeed... but since i never used the nero decoder i thought it was using slices (like quicktime).
well, if all the mess is for accelerating quicktime playback we can drop even the 2 slices idea for single/non-multithreaded cpus.
Sharktooth is offline  
Old 20th February 2006, 23:41   #267  |  Link
foxyshadis
Angel of Night
 
foxyshadis's Avatar
 
Join Date: Nov 2004
Location: Tangled in the silks
Posts: 9,559
Well, Doom9, what about integrating Elder as a possibility? It isn't finished, but it already deals with the multiple encodings, segments, stats files, merging, and all that rubbish for you. And it works for xvid and x264. Obviously it wouldn't be bundled by default, since it's perl, but it'd be really nice to see it officially supported. Could just flip a switch and use its brand of massively multithreaded encoding rather than threads. (And since xvid and x264 support mt encoding anyway, once xvid makes it configurable you could move #threads to a global #cores option.)
foxyshadis is offline  
Old 20th February 2006, 23:47   #268  |  Link
dimzon
BeHappy/MeGUI developer
 
dimzon's Avatar
 
Join Date: Oct 2003
Location: Moscow, Russia
Posts: 1,727
i believe it's easy to port Elder from rerl to C#
i'm interested in it
dimzon is offline  
Old 21st February 2006, 04:06   #269  |  Link
Richard Berg
developer wannabe
 
Richard Berg's Avatar
 
Join Date: Nov 2001
Location: Brooklyn, NY
Posts: 1,211
Integrating Elder looks even more difficult than trying to sort out the dependency difficulties discussed earlier.

The more I think about it, the more I like having independent queues. The existing OO design should make it reasonably easy.
Richard Berg is offline  
Old 21st February 2006, 08:32   #270  |  Link
Sharktooth
Mr. Sandman
 
Sharktooth's Avatar
 
Join Date: Sep 2003
Location: Haddonfield, IL
Posts: 11,768
IMHO idipendent queues is an ugly solution.
Sharktooth is offline  
Old 21st February 2006, 08:46   #271  |  Link
dimzon
BeHappy/MeGUI developer
 
dimzon's Avatar
 
Join Date: Oct 2003
Location: Moscow, Russia
Posts: 1,727
Quote:
Originally Posted by Sharktooth
IMHO idipendent queues is an ugly solution.
Lets wait for Doom9 refactoring first
dimzon is offline  
Old 21st February 2006, 09:11   #272  |  Link
Mutant_Fruit
Registered User
 
Join Date: Apr 2004
Posts: 287
Quote:
IMHO idipendent queues is an ugly solution.
I agree aswell. I wouldn't like the idea of an app i was running having 4 independant queues because i have a dual-core dual-cpu machine.

How about this to help solve the dependancy issue... If a "job" is created, instead put all the jobs and dependant jobs inside an arraylist (just for an example, there's probably better ways of doing it. So we can go something like...

Code:
Arraylist Job1 = new Arraylist();
Job1.Add(job1_pass1);
Job1.Add(job2_pass2);
Job1.Add(job3_pass3);
....

Then...
foreach(Job job in Job1)
{
     display information in the queue
}
Then, if someone wants to multithread by running two jobs at once, you just have to check that you aren't running two jobs from the one arraylist at the same time. Also, if someone has 10 "Jobs" in the queue, re-ordering them could be made safer because instead of having 20-30 unlinked jobs, we'd now have 10 Arraylists. When they'd try to move "job7_pass3" upwards, instead we'd move the Job7 arraylist above the Job6 Arraylist, then we'd print out the queue again, thus keeping Job7's jobs intact.

I don't know how it works at the moment, but how does that sound? Stupid or not?
__________________
Nothing to see here...
Mutant_Fruit is offline  
Old 21st February 2006, 09:23   #273  |  Link
dimzon
BeHappy/MeGUI developer
 
dimzon's Avatar
 
Join Date: Oct 2003
Location: Moscow, Russia
Posts: 1,727
Actually one job series can contain:
multiple independed audio jobs
2-3 depended video jobs (multipass)
mux job

in this case you can run multiple audio jobs at same time


talking about such architecture we are close to "Processor controlled via Data-Flow" ideology (used in all modern CPU)

what does we need to organize such functionality:
jobs must contain references to related jobs (i.e. 2-nd pass must refer on 1-st pass, mux must refer to 2-nd pass and all audio etc)
in this case we can run any job wich related jobs is already done
dimzon is offline  
Old 21st February 2006, 10:29   #274  |  Link
berrinam
Registered User
 
berrinam's Avatar
 
Join Date: Apr 2005
Posts: 1,740
Quote:
Originally Posted by Sharktooth
IMHO idipendent queues is an ugly solution.
My main gripe with independant queues is that the user would have to be actively thinking about which queue is likely to take the longest and would have to do his/her best to ensure that the encoding time balances up. This is IMHO too much work for the user who is only interested in getting a good end-result video.

Quote:
Originally Posted by Mutant_Fruit
How about this to help solve the dependancy issue... If a "job" is created, instead put all the jobs and dependant jobs inside an arraylist (just for an example, there's probably better ways of doing it. So we can go something like...
....
I don't know how it works at the moment, but how does that sound? Stupid or not?
I like this suggestion because it is simple. The issue about audio jobs not relying on each other, which dimzon raised, is not a huge concern, IMO, because the time taken for encoding audio is so small relative to video encoding.

Quote:
Originally Posted by dimzon
what does we need to organize such functionality:
jobs must contain references to related jobs (i.e. 2-nd pass must refer on 1-st pass, mux must refer to 2-nd pass and all audio etc)
in this case we can run any job wich related jobs is already done
Didn't you suggest this sort of thing before? I agree that this is the optimum solution in customisability and reliability, but probably the most complex code-wise.
berrinam is offline  
Old 21st February 2006, 11:53   #275  |  Link
dimzon
BeHappy/MeGUI developer
 
dimzon's Avatar
 
Join Date: Oct 2003
Location: Moscow, Russia
Posts: 1,727
Quote:
Originally Posted by berrinam
but probably the most complex code-wise.
I don't think so - proper OO design can make it easy
dimzon is offline  
Old 21st February 2006, 16:12   #276  |  Link
Doom9
clueless n00b
 
Join Date: Oct 2001
Location: somewhere over the rainbow
Posts: 10,579
Quote:
in this case you can run multiple audio jobs at same time
No, you cannot, because at the time you pass from audio to video encoding, that's when a bunch of postprocessing routines kick in that make sure you end up with the proper video bitrate.. instead you create an undeterministic waiting period from the time the first audio job has been processed, to the time the second has and the queue can continue.
Actually, it's probably not even as hard to run two queues.. as the statusupdate contains a reference to the job that triggered the update, and related jobs are already linked (they need be for out-of-order processing and proper between job updates).
Quote:
what does we need to organize such functionality:
A job is a part of a linked list.. always has been for about a year now.. you can always get to the start of a series of jobs and to the end of it.. it takes no special treatment. It wouldn't even take too long to change existing functions to start/end jobs and the whole markJobxyz shebang to permit two jobs being processed in parallel (admittedly you have to place locks everywhere or it'll end up in disaster, but if you're a creative locksmith, you'll manage). What I find very perxplexing is that not a single person here but me is even thinking about the most basic question of how the heck you keep a user appraised of what's going on with two jobs in parallel, and how you need to explain a user that suddenly there's only one job being processed when there are 3 left in the queue. And on top of that, what's wrong with opening explorer, select your megui folder, press control-c, go to another folder, press control-v and you now can run megui two times completely independent without no worries whatsoever and not a single line of code needs to be written? What's wrong with the KISS approach for the 0.00001% of the users who cannot live with stock functionality?
__________________
For the web's most comprehensive collection of DVD backup guides go to www.doom9.org
Doom9 is offline  
Old 1st March 2006, 17:36   #277  |  Link
cc979
Curious BetaTester
 
Join Date: Oct 2005
Posts: 430
render rate for audio ?

just tried the 0.2.3.2097 devbuild works pretty good since the last time i tried, been busy with other things just wondering if there's any plans to show a rendering rate like the same as the video part ?

would be useful for benchmarking and comparing results with others
__________________
Asrock N68-S AMD Athlon(tm) II X4 620 Processor (2.6GHz) - Crucial 2GB PC6400 800MHz DDR2 - Nvidia 9600GT

Tools: ProcessExplorer & ProcessMonitor - BatchCompressor

Guide: MinGW Compiling GCC
cc979 is offline  
Old 1st March 2006, 20:12   #278  |  Link
Doom9
clueless n00b
 
Join Date: Oct 2001
Location: somewhere over the rainbow
Posts: 10,579
Quote:
just wondering if there's any plans to show a rendering rate like the same as the video part ?
And what would a rendering rate be? I understand rendering in terms of POVRay.. essentially an fps rate.
__________________
For the web's most comprehensive collection of DVD backup guides go to www.doom9.org
Doom9 is offline  
Old 1st March 2006, 21:31   #279  |  Link
dimzon
BeHappy/MeGUI developer
 
dimzon's Avatar
 
Join Date: Oct 2003
Location: Moscow, Russia
Posts: 1,727
Quote:
Originally Posted by Doom9
And what would a rendering rate be? I understand rendering in terms of POVRay.. essentially an fps rate.
encoding_time/audio_duration
dimzon is offline  
Old 2nd March 2006, 04:42   #280  |  Link
cc979
Curious BetaTester
 
Join Date: Oct 2005
Posts: 430
Quote:
Originally Posted by Doom9
And what would a rendering rate be? I understand rendering in terms of POVRay.. essentially an fps rate.
something like kBps per second, processed/rendered sorry about that
__________________
Asrock N68-S AMD Athlon(tm) II X4 620 Processor (2.6GHz) - Crucial 2GB PC6400 800MHz DDR2 - Nvidia 9600GT

Tools: ProcessExplorer & ProcessMonitor - BatchCompressor

Guide: MinGW Compiling GCC
cc979 is offline  
Closed Thread


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 06:23.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.