Patent ID: 7260826

Claim:
A method for transmitting a mixed media data stream in packets, including audio and video objects, between a sender and a receiver through a connection over a network, the method comprising: monitoring, at the receiver, transmission characteristics of the connection between the server and the receiver; estimating available bandwidth at the sender based upon the transmission characteristics of the connection monitored at the receiver; allocating a global buffer for the mixed media data stream to be transmitted from the sender to the receiver as a function of the estimated available bandwidth at the sender; pre-encoding a portion of each Video Object Plane (VOP) in the global buffer with respect to a guantization parameter (QP) of the VOP; encoding the VOP in the global buffer based on the QP; updating a rate distortion model based upon the QP and packet loss rate; performing a frame skipping function after the VOP encoding; and transmitting from the sender to the receiver the encoded video object plane in the global buffer at a regulated sender transmission rate from the sender as a function of the estimated available bandwidth at the sender; and wherein: the sender sends data to the receiver in through a connection over a packet switched network in a sender packet having a sender header that includes: a packet sequence number; a timestamp indicating the time when the sender packet was sent (ST1); and the size of the sender packet (PacketSize); the receiver sends data to the sender through the connection over the packet switched network in a receiver packet having a receiver header that includes: the time interval that the sender packet spent in the receiver side (ΔRT); the timestamp of the sender packet sent from the sender (ST1); an estimate, calculated by the receiver, of a packet-loss rate; and the rate at which data is received at the receiver; monitoring transmission characteristics of the connection between server and receiver comprises: estimating a round trip time of the sender packet from the sender to the receiver (RTT) based on ST1 and ΔRT; estimating a time out interval (TO) before which the sender should retransmit to the receiver a sender packet of data that has not been received by the receiver; estimating a probability that a packet of data will be lost (P L ); estimating the present available network bandwidth at which the receiver can receive data from the sender (rvcrate) as a function of the PacketSize, the RTT, the P L , and the TO; deriving the present sending rate of data from the sender to the receiver ( currate ); setting an updated sending rate of data from the sender to the receiver (currate), wherein: if rcvrate is greater than currate , then deriving currate as a function currate , PacketSize, and RTT; and if rcvrate is not greater than currate , then setting currate to be less than rcvrate; and wherein: RTT=α× RTT +(1−α)×(now-ST1−ΔRT); and now is the timestamp indicating the time at which the receiver packet was received in the sender; and α is a weighting parameter.