[Live-devel] TransportStreamFramer latency?
Morgan Tørvolt
morgan.torvolt at gmail.com
Wed Aug 31 21:01:28 PDT 2005
I see. Thanks. Wish me luck =)
-Morgan Tørvolt-
On 8/31/05, Ross Finlayson <finlayson at live.com> wrote:
> At 02:16 AM 8/31/2005, you wrote:
> > > For a custom project (using only the Amino STBs as client), we
> > > overcame this problem by modifying the "MPEG2TransportStreamFramer"
> > > by continually adjusting the computed "fTSPacketDurationEstimate"
> > > value in order to maintain a roughly fixed (and >0) estimated buffer
> > > size at the client. Unfortunately, this code isn't very portable
> > > (because it's peculiar to the ideosyncracies of the Amino STB), so
> > > it's not clear if/when/how it could be made part of the general,
> > public code.
> >
> >Could you lend me an hand figuring out how to do this? Do you use
> >feedback from the STB?
>
> No. The STB receives raw UDP only, and so doesn't send back any RTCP
> packets, or anything similar.
>
> > In that case, how? I cannot see any function in
> >the stb that gives that kind of feedback.
>
> There isn't any. Instead, we *estimate* how much extra data is
> buffered at the client, and insert a 'fudge factor' into the
> calculation of "fDurationInMicroseconds" in order to keep the amount
> of estimated buffered data roughly constant.
>
> I.e., the statement
> fDurationInMicroseconds
> = numTSPackets * (unsigned)(fTSPacketDurationEstimate*1000000);
> becomes
> double fudgedPacketDurationEstimate = fTSPacketDurationEstimate;
> if (clientBufferTimeEstimate < desiredBufferTime) {
> fudgedPacketDurationEstimate *= 0.9;
> } else {
> fudgedPacketDurationEstimate /= 0.9;
> }
> fDurationInMicroseconds
> = numTSPackets * (unsigned)(fudgedPacketDurationEstimate*1000000);
>
> Where "clientBufferTimeEstimate" is our estimate of how many seconds
> worth of extra data is currently buffered at the client. It is computed as
> clientBufferTimeEstimate = estimatedTransmitTime - estimatedPlayTime;
> where "estimatedTransmitTime" is computed by adding up
> fDurationInMicroseconds/1000000.0
> each time round the loop, and "estimatedPlayTime" is just the most
> recently-seen SCR.
>
> Apart from this, the "MPEG2TransportStreamFramer" code remained the same.
>
>
>
> Ross Finlayson
> LIVE.COM
> <http://www.live.com/>
>
> _______________________________________________
> live-devel mailing list
> live-devel at lists.live.com
> http://lists.live.com/mailman/listinfo/live-devel
>
More information about the live-devel
mailing list