[MPlayer-dev-eng] Lots of stuff for NUT

Michael Niedermayer michaelni at gmx.at
Sat Dec 31 18:11:03 CET 2005


Hi

On Sat, Dec 31, 2005 at 06:37:35PM +0200, Oded Shimon wrote:
[...]
> > [...]
> > >  flags[frame_code]
> > > -    first of the flags from MSB to LSB are called KD
> > > -    if D is 1 then data_size_msb is coded, otherwise data_size_msb is 0
> > > -    K is the keyframe_type
> > > -        0 -> no keyframe,
> > > -        1 -> keyframe,
> > > -    flags=4 can be used to mark illegal frame_code bytes
> > > -    frame_code=78 must have flags=4
> > > -    Note: frames MUST NOT depend(1) upon frames prior to the last
> > > -          frame_startcode
> > > -    Important: depend(1) means dependency on the container level (NUT) not
> > > -    dependency on the codec level
> > > +    Bit  Name             Description
> > > +      1  data_size_msb    if set, data_size_msb is at frame header,
> > > +                          otherwise data_size_msb is 0
> > > +      2  more_flags       if set, stream control flags are at frame header.
> > > +      4  invalid          if set, frame_code is invalid.
> > > +
> > > +    frame_code=78 ('N') MUST have flags=64
> > > +
> > > +stream_flags
> > > +    stream_flags is "stream_flags[frame_code] | coded_stream_flags"
> > > +
> > > +    Bit  Name             Description
> > > +      1  is_key           if set, frame is keyframe
> > > +      2  end_of_relavence if set, stream has no relavence on
> > > +                          presentation until next frame. (EOR)
> > > +
> > > +    EOR frames MUST be zero-length and must be set keyframe. EOR is unset
> > 
> > hmm, this is somewhat redundant, zero byte keyframes cant occur, so 
> > zero byte keyframes could mean EOR
> 
> Hmm, well, not necessarily, you never know with weird codecs...

if rich says ok to this iam fine with it too, though i doubt we will ever
see such a codec and theres some risk of contradictionary streams from brokrn
muxers (non keyframe EOR or non zero size)


> 
> > > +    by the first frame following the EOR of the same stream.
> > 
> > and what is this good for? why should we allow anything to follow the
> > end of a stream?
> > 
> > > +    When EOR is set, all back_ptr's for this stream are set to zero.
> > > +    All streams SHOULD end with EOR.
> > 
> > how exactly do you seek if the back_ptrs dont point to the previous keyframe?
> 
> Seems you misunderstand EOR - It's not "end of stream" (old name was bad), 
> it's "end of relavence".
> for ex., a subtitle stream and there's currently no subtitle showing, 
> that's EOR. The stream is completely irrelavent for presenting this part of 
> the video. Basically it's any "gap" in a stream.
> 
> back_ptr's are zero because they are just not interesting, the stream is 
> completely "irrelavent".

ok as long as seeking works with this, i mean that

syncpoint keyframe_st2 EOR_st1 syncpoint 
and seeking to keyframe_st2 will still be able to find the previous keyframe
for st1


> 
> > [...]
> > 
> > iam not sure if i like the mts stuff ...
> 
> It has one big flaw IMO, it makes the muxer knowing the future manditory. 
> Or at the very least a smart muxer-caller.
> 
> I decided with Rich that the API for the muxer will be that you MUST pass 
> it the mts of a frame whenever you pass it a frame. Meaning either the 
> caller has to be smart, or it has to use the high level reorderer, which 
> always uses buffering.
> MTS however is still the most correct way to store the data IMO... old dts 
> method is wrong (depends on decode_delay), and MN rule is insufficient.

i still vote for the dts rule as i fail to see any serious problem with it

[...]

-- 
Michael




More information about the MPlayer-dev-eng mailing list