[mythtv] Questions for MPEG2 knowledgable folks
Cory Papenfuss
papenfuss at juneau.me.vt.edu
Thu Oct 20 11:45:41 UTC 2005
> Interesting, I didn't know the PVR cards would do this
>
It's the biggest reason why people bitch once in awhile about
trying to burn ivtv captures to DVDs. Most of the HOWTOs out there split
into ES's and remux (to add the DVD NAV streams). When that's done, sync
gets off since the PTS information is discarded. ProjectX appears to be
the closest thing to being able to clean up the streams at the moment.
Unfortunately, it's a 900-lb Java-flavored gorilla.
>>
>> I'm not sure of the best solution, but I rather like the idea of
>> either converting to I-frames, or perhaps reencoding around the bad spot.
>> This has other uses (e.g. "lossless" commercial cutting). Subtle things
>> become more important, though... like do you offset the PTS/DTS of
>> everything after the first cut by the 4 minutes you removed? What does
>> the MPEG spec say about discontinuous PTS?
>>
>> Basically MPEG2 was never meant to be edited... :)
> Actually, MPEG2 is designed to be edited...sort of. the spec allows
> for discontinuous PTS if you set the broken bit.
Is the behavior of a playback device defined for when this
happens? I'd only heard of applying to broken bit when a GOP gets mangled
(e.g. non-keyframe editing).
However, it isn't
> designed to allow editing at an arbitrary frame. It is further
> restricted bythings like DVD-compliance. For insatnce, it would be
> perfectly valid to reencode B frames into I frames, and include those
> at the beginning of a GOP after a cut, thus allowing frame-accurate
> cutting. But DVDs require a strict GOP structure, so this wouldn't be
> a DVD-compliant stream.
There's open vs. closed GOPs, as well as different GOP structures.
I didn't think that DVD-compliance implied either of those, however... I
thought that open/closed and variable-length GOP structures were OK.
Maybe it's just that the settop players are often tolerant of them and
I've never noticed.
... that brings us back to your original question. Can P/B frames
be "losslessly" converted into I-frames. I know very little about the
internals of MPEG2 compression, so I can't help there. I do know that the
MPEG2 streams produced from ivtv card are pretty dirty. In most captures
I've played with, I've seen lost packets, very short PUs (generally a few
dozen GOPs), fixed GOP length/structure (leading to poor choices on
I-frames during scene changes, etc), open or closed GOP structures, etc.
If the *structure* of the stream could be cleaned up without introducing a
"generation loss," that would be great. I suspect it would be pretty
expensive, computationally. It does fix all the problems, however.
>
> But yes, mpeg2trans already has code to adjust PTS and DTS values so
> that there are no apparent breaks after a commercial cut. Note that
> I'm not looking at commercial cutting at the moment, just into getting
> 'clean' mpeg2 streams.
I think if you get clean streams, you've got 95% of the problems
with commercial cutting solved.
Depending on how this goes, I'll probably
> revisit the mpeg2trans code. My current plan is actually to fully
> demux the streams after ensuring they are exactly the same length
> (thus trhowing away all pts/dts info), and remux them from the ES,
> thus creating a 'clean' encapsulation.
Sounds great, but won't it still be non-standard? The problem is
only partially that the encapsulation is funky. The ES's themselves can
be wrong (wrong GOP structure for instance). They'll be especially wrong
once frames are added/removed to fix PTS/DTS sync loss. If you're right
about the DVD-standard ONLY allowing a fixed GOP structure, you're kinda
screwed to reencode ("losslessly" into I-frames or otherwise). If it
allows for variable, you could transcode only around dropped frames (and
by trivial extension, commercial cuts).
the main problem with the
> mpeg2trans code at the moment, is that it doesn't respect the
> rate-limiting (adding in padding frames where needed) which can cause
> poor playback by some devices. Unfortunately, I don't know of any GPL
> MPEG2-muxers that will enforce rate-limiting, so i'm not sure what I
> can do about this (besides writing my own).
>
*Minimum* rate-limiting?
-Cory
--
*************************************************************************
* Cory Papenfuss *
* Electrical Engineering candidate Ph.D. graduate student *
* Virginia Polytechnic Institute and State University *
*************************************************************************
More information about the mythtv-dev
mailing list