@@ -91,8 +91,8 @@ impl TrackProducer {
9191 ///
9292 /// Multiple consumers can be created from the same producer, each receiving
9393 /// a copy of all data written to the track.
94- pub fn consume ( & self ) -> TrackConsumer {
95- TrackConsumer :: new ( self . inner . consume ( ) )
94+ pub fn consume ( & self , max_latency : std :: time :: Duration ) -> TrackConsumer {
95+ TrackConsumer :: new ( self . inner . consume ( ) , max_latency )
9696 }
9797}
9898
@@ -132,18 +132,18 @@ pub struct TrackConsumer {
132132 max_timestamp : Timestamp ,
133133
134134 // The maximum buffer size before skipping a group.
135- latency : std:: time:: Duration ,
135+ max_latency : std:: time:: Duration ,
136136}
137137
138138impl TrackConsumer {
139139 /// Create a new TrackConsumer wrapping the given moq-lite consumer.
140- pub fn new ( inner : moq_lite:: TrackConsumer ) -> Self {
140+ pub fn new ( inner : moq_lite:: TrackConsumer , max_latency : std :: time :: Duration ) -> Self {
141141 Self {
142142 inner,
143143 current : None ,
144144 pending : VecDeque :: new ( ) ,
145145 max_timestamp : Timestamp :: default ( ) ,
146- latency : std :: time :: Duration :: ZERO ,
146+ max_latency ,
147147 }
148148 }
149149
@@ -155,7 +155,7 @@ impl TrackConsumer {
155155 ///
156156 /// Returns `None` when the track has ended.
157157 pub async fn read_frame ( & mut self ) -> Result < Option < Frame > , Error > {
158- let latency = self . latency . try_into ( ) ?;
158+ let latency = self . max_latency . try_into ( ) ?;
159159 loop {
160160 let cutoff = self
161161 . max_timestamp
@@ -209,7 +209,7 @@ impl TrackConsumer {
209209 } ,
210210 Some ( ( index, timestamp) ) = buffering. next( ) => {
211211 if self . current. is_some( ) {
212- tracing:: debug!( old = ?self . max_timestamp, new = ?timestamp, buffer = ?self . latency , "skipping slow group" ) ;
212+ tracing:: debug!( old = ?self . max_timestamp, new = ?timestamp, buffer = ?self . max_latency , "skipping slow group" ) ;
213213 }
214214
215215 drop( buffering) ;
@@ -228,9 +228,9 @@ impl TrackConsumer {
228228
229229 /// Set the maximum latency tolerance for this consumer.
230230 ///
231- /// Groups with timestamps older than `max_timestamp - latency ` will be skipped.
232- pub fn set_latency ( & mut self , max : std:: time:: Duration ) {
233- self . latency = max;
231+ /// Groups with timestamps older than `max_timestamp - max_latency ` will be skipped.
232+ pub fn set_max_latency ( & mut self , max : std:: time:: Duration ) {
233+ self . max_latency = max;
234234 }
235235
236236 /// Wait until the track is closed.
@@ -239,12 +239,6 @@ impl TrackConsumer {
239239 }
240240}
241241
242- impl From < moq_lite:: TrackConsumer > for TrackConsumer {
243- fn from ( inner : moq_lite:: TrackConsumer ) -> Self {
244- Self :: new ( inner)
245- }
246- }
247-
248242impl From < TrackConsumer > for moq_lite:: TrackConsumer {
249243 fn from ( inner : TrackConsumer ) -> Self {
250244 inner. inner
0 commit comments