[NUT-devel] Broadcasting nuts [PATCH]

Nico Sabbi Nicola.Sabbi at poste.it
Tue Feb 5 22:42:57 CET 2008


Il Tuesday 05 February 2008 22:41:49 Måns Rullgård ha scritto:
> Michael Niedermayer <michaelni at gmx.at> writes:
> 
> > Hi
> >
> > Attached patch should make broadcast of single program nuts possible.
> > Its the minimal/least restrictive solution i found.
> >
> > Comments welcome, especially from mans/nico, others who know mpeg-ps/ts.
> >
> > Index: nut.txt
> > ===================================================================
> > --- nut.txt	(revision 588)
> > +++ nut.txt	(working copy)
> > @@ -412,6 +412,7 @@
> >  syncpoint:
> >      global_key_pts                      t
> >      back_ptr_div16                      v
> > +    transmit_ts                         t
> >      reserved_bytes
> 
> You could make this field optional.

agree. A muxer not wanting (or not knowing how )  to transmit transmit_ts should
be allowed to skip it rather than inserting all 0s

> 
> >              Complete definition:
> > @@ -775,6 +776,11 @@
> >      global_key_pts MUST be bigger or equal to dts of all past frames across
> >      all streams, and smaller or equal to pts of all future frames.
> >  
> > +transmit_ts (t)
> > +    The timestamp at which the first bit of the syncpoint is transmitted.
> > +    MUST be less than or equal to all following dts.
> > +    See broadcast buffering model.
> 
> This is not strict enough.  The transmit_ts must be less than the DTS
> of any not completely received frame.
> 
> >  Index tags:
> >  -----------
> >  
> > @@ -978,6 +984,42 @@
> >  
> >  Demuxers SHOULD NOT search the whole file for info packets.
> >  
> > +
> > +Broadcast buffering model:
> > +--------------------------
> > +Nut files can be broadcast. Such specific nut files must be encoded and
> > +muxed so as to not exceed the decoder side buffering or available bandwidth.
> > +This spec does not provide any restrictions on the decoder buffers or
> > +bandwidth. Nor does it mandate that the channel be transmitting at a constant
> > +rate.
> > +For sake of simplicity a zero latency channel is assumed. Note, due to the
> > +lack of a back channel any constant latency channel is indistingiushable from
> > +a zero latency channel.
> 
> FYI, the MPEG spec makes the same simplification.

the buffer sizes should be indicated in the headers, or how can the demuxer allocate
them without assuming "the ram is the limit" ? Also, having fixed-size buffers
helps to avoid realloc()s

> 
> > +The time at which a syncpoint is transmitted as well as received is stored in
> > +the transmit_ts of it. The receiver/demuxer/decoder can use these timestamps
> > +to synchronize its clock. The (possibly variable) rate at which the following
> > +bits/bytes are transmitted depends on the hardware and is outside this spec.
> > +Except that, the last bit before the next syncpoint MUST be transmitted before
> > +the following syncpoint, and the target reciver/demuxer/decoder must be
> > +capable of handling it without errors.
> 
> I don't understand that last sentence.
> 
> > +As data is received (between the 2 transmit_ts of the 2 enclosing syncpoints)
> > +it is inserted into a FIFO buffer. The spec does not mandate a single or
> > +multiple FIFOs,. Nor that demuxing is done before or after the FIFO. Just
> > +that a valid nut broadcast never causes an overflow nor underflow in the
> > +target receiver/demuxer/decoder.
> > +
> > +Frames are instantaneosly removed from the fifo at their dts and inserted
> > +into the decoder.
> 
> These paragraphs are not really necessary.  If you want to provide a
> timing/buffering model akin to that in the MPEG spec, you have to be
> much more precise.

better remove this paragraph altogether than over-specifying what is obvious

> 
> > +If the latency of the channel is non constant, the reciver/demuxer must
> > +use a FIFO or other method to compensate for the variations.
> 
> This is also mostly irrelevant to the spec.
> 
> > +A nut demuxer in a non broadcast model MUST NOT fail due to transmit_ts
> > +being set to valid but insane values (like all 0, or all equal to the
> > +next dts).
> 
> I find "valid but insane" rather vague terminology for a spec.
> 





More information about the NUT-devel mailing list