RE: Client Side Rate Control
"Jyotsana Rathore" <[email protected]>
| Newsgroups | gmane.comp.multimedia.helix.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi Mahmoud, I can try to address some of your questions. How do the bit-rate at the server, the bit-rate at the client, and the available connection bandwidth related to one another? I would really appreciate a short summary on this interaction between server and client when a rate control procedure is in question Let's assume that you are streaming a 128kbps media file and the bandwidth available is more than 128kbps. Then because of higher available bandwidth the server can potentially send data faster than the media rate. This is what the server does when server-side rate control is enabled. And client provides feedback, it notifies the server when its buffer is full (in case of 3gp adaptation FBS=0 is sent in NADU RR report). On receipt of which the server will slow down i.e. it will basically send data at media rate. One other aspect of server-side rate adaptation is that if the file is a multirate (or SureStream) file then the server can switch to a higher bit rate stream or lower bit rate stream based on its upshift or downshift watermarks. You can read more about server rate control here: https://protocol.helixcommunity.org/2006/devdocs/sod-rtsp-adaptation-signali ng-02.txt But I think you are targeting client side rate adaptation as Greg suggested previously (because the client will be provided info about the upcoming bad connection). The client uses SetDeliveryBandwidth to change the speed at which server sends data depending on the amount of data the client has. You can look at protocol/rtsp/rtspclnt.cpp Thanks, Jyotsana _____ From: [email protected] [mailto:[email protected]] On Behalf Of Mahmoud Hammoud Sent: Friday, August 01, 2008 6:53 AM To: [email protected] Cc: [email protected] Subject: [Helix-client-dev] Client Side Rate Control Hi Milko, I've already started this discussion with Greg. I'm hoping you'd be able to give me some more feedback (I would really appreciate it if you could point me to specific parts of the code not just the underlying implementation concepts). Long story short, suppose I have some way to predict bad connection quality (or even no connection) ahead of time, and I would like to use this prediction to force the client to buffer data for a certain amount of time (so as to play from the buffered content once we are in the undesirable network condition). I got pretty familiar with how rebuffering is handed by the client so far, but I think Greg suggested that merely pausing playback and rebuffering would not really do the job because the server would be sending at the same rate (could you please give me your opinion on that?) As such, he proposed that I use client side rate control and ask the server to send at a higher bit-rate (which module is responsible for issuing such a request?). Here are my main questions to you: what would happen next? How is the bit-rate used by the client to read the media content affected? How do the bit-rate at the server, the bit-rate at the client, and the available connection bandwidth related to one another? I would really appreciate a short summary on this interaction between server and client when a rate control procedure is in question. Thank you a lot for your time, Mahmoud Hammoud _______________________________________________ Helix-client-dev mailing list [email protected] http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev