On 11/20/06, Aaron Whitehouse <lists@...> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> Tim M?ller wrote:
> > sorry for never replying to this mail (your post to theora-dev reminded
> > me again)
> That's okay. I took this upstream to the Xiph-Theora list to try and get
> some more input. The thread beginning with:
> may be of some interest.
> > Yes, theora encoding doesn't take advantage of multiple CPUs/cores at
> > all at the moment.
> I understand that Intel has now released a Quad-core processor now.
> >> If this is the case, could we perhaps encode each chapter as a separate
> >> task (GStreamer thread?) and concatenate them at the end? I believe that
> >> Ogg streams are quite happy being concatenated
> > Theoretically, this is possible, yes. In practice, the implementation
> > details to make this work properly (so things don't get out of sync at
> > the chain boundaries etc.) on both the encoding side and the playback
> > side are nontrivial, to say the least. It's really difficult to get this
> > right, and I doubt this is implemented to a satisfactory extent in any
> > currently existing encoder or player.
> - From the thread linked to above, I have shied away from this idea.
> Apparently concatenated streams are required by the Theora spec, but are
> currently poorly handled. The better idea came from Ralph Giles
> http://lists.xiph.org/pipermail/theora/2006-October/001309.html :
> > since you're in control
> > of the encoding you can also work around the issue. Assuming each
> > portion is encoded with the same parameters, you can strip the headers
> > from subsequent pieces and remux the stream into a single segment.
> > I believe Andraz Tori has already written such a thing for cinelerra.
> > You might see if you can borrow from his code.
> My new opinion is that it would be best to split the task into the
> number of logical CPUs the machine has, remove the headers from the
> resulting files and merge them into a file that is identical to a file
> that would be created in one go.
> >> If this seems too extreme, perhaps the idea could help out when encoding
> >> a DVD of a TV series where the titles (and, as I understand it, the
> >> source .Vobs) are already separate.
> > That would be a possibility, although I don't really like the idea from
> > an interface point of view. Also, it would only speed up things if
> > multiple titles are to be ripped. What would be best IMHO is if either
> > the theora encoding library or the GStreamer theoraenc element hid this
> > complexity from applications like thoggen.
> I agree. The majority of users only rip movies and this should be split.
> If the code is written to split a single track then it would be better
> if this was used on each title sequentially rather than writing code
> that just affects multiple titles.
> My rationale for keeping this in Thoggen, rather than further up the
> chain, is that I understood that Thoggen created GStreamer pipes and the
> data was streamed through them. If that is the case, I thought it more
> logical to create multiple pipes, which "stream" different sections of
> the file through the encoding, than to try to get one GStreamer pipe to
> split the encoding process.
> I always thought of GStreamer as dealing with "streamed" data and
> couldn't think of a way to get GStreamer to do the work. You are the
> GStreamer guru, so if you can figure something out then I would be
> *much* happier the further upstream you can get the code.
> > I haven't really double-checked this, but if I am not mistaken
> > libschroedinger's Dirac encoder will be able to take advantage of
> > multiple cores/CPUs transparently, so maybe that's a convenient solution
> > to this problem in the longer run (once a first proper release is out
> > and the Dirac bitstream finalized for good etc.).
> Well if they have managed to get it in the Dirac encoder, there should
> be no reason why it can't be done in libtheora. That would be brilliant
> as it is as far upstream as the code could get. If you can double-check
> that, I can start bugging the theora list to do follow Dirac's lead.
Quoting David Schleef :
"All the difficult bits have been implemented for multiprocessor
encoding. I haven't bothered to write the task dispatcher yet,
so it doesn't actually use multiple threads."
this was a little bit before the new release, so I think that it isn't
working yet, but should be really soon.
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.3 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
> -----END PGP SIGNATURE-----
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys - and earn cash
> Thoggen-devel mailing list