On Thu, 5 Jul 2007, Pier Luigi Conte wrote:
> Does it exist a method to don't compress again (during the render phase) an 
> originally already compressed video?

Allowing Cinelerra to pass-through frames where possible is a wishlist
feature.  At the moment, it doesn't exist.  You can get that effect with a
lot more effort using some other tools instead of Cinelerra, but even in
the case where you're just cutting (without doing fancier effects), some
recompression is unavoidable because of the way MPEG compression works.

The thing is, the MPEG stream contains a few frames called I-frames that
are complete in themselves, but most of the frames are B-frames, which
are stored by storing the differences between the current frame and nearby
I-frames.  If your cut eliminates an I-frame, then you MUST recompress the
B-frames that depend on it.  (Things called P-frames also exist but
considering them wouldn't really clarify the discussion.)

For example, suppose you have two video streams that look like this:

Stream 1: I0 B1 B2 B3 I1 B4 B5 B6 I2...
Stream 2: I3 B7 B8 B9 I4 B10 B11 B12 I5...

You want to cut from Stream 1 after frame B5, to Stream 2 before frame B8,
so as to get this sequence of frames:

I0 B1 B2 B3 I1 b4 b5 b8 b9 I4 B10 B11 B12 I5...

The problem is that frames B4 and B5 depend on frame I2, which isn't
included in your output, and frames B8 and B9 depend on frame I3, which
isn't included in your output.  (I showed them with lowercase letters to
make it clearer).  So you have to recompress those frames at least.
You've also got an unusually long interval between frames I1 and I4 (I4 is
the fifth frame after I1 whereas the original streams had an interval of
four), and although that doesn't break any rules in this particular case,
there *are* constraints on how long the interval is allowed to be, and
it's easy to imagine cases where cutting could violate those constraints
and you've have to recompress some I-frames too.

There are also long-term bit rate contraints in things like DVDs, which
you're allowed to violate for a short time but not for a long time, and in
the worst case, cutting together two pieces that are near the limit could
push you over and force you to recompress a substantial chunk of video.
So avoiding recompression where possible is not just a matter of "skip
over the recompression code" - making such an effort actually work, is a
hard problem.
-- 
Matthew Skala
[EMAIL PROTECTED]                    Embrace and defend.
http://ansuz.sooke.bc.ca/

_______________________________________________
Cinelerra mailing list
[email protected]
https://init.linpro.no/mailman/skolelinux.no/listinfo/cinelerra

Reply via email to