Patent ID: 7779146

Claim:
A method for regulating the rate of data transmission for a streaming media data file over a connection, said method comprising: a) determining a target transmission rate, wherein said target transmission rate is calculated using the equation: TR=min(M,(1+((R*T/8)−O)/D))*R), where M is the maximum client bandwidth, R is the bit-rate of said streaming media data file, T is the total duration of the streaming media in seconds, D is a client buffer size in bytes and O is the offset in bytes position starting where the transmission is requested (for the streaming media data file) and wherein said determining a target transmission rate is performed by a processor and a memory; b) determining a media file size; c) determining a file offset location; d) determining a data chunk size; e) setting a start transmission variable to said offset location; f) setting a data transmission size, sendSize, to said chunk size; g) determining a transmission start time; h) determining whether the start transmission variable is less than or equal to the file size; i) determining whether the connection has not been reset; j) if both conditions h) and i) are true, determining whether a remaining untransmitted file portion is smaller than said sendSize; k) if condition j) is true, setting said sendSize to the size of said untransmitted file portion; l) transmitting part of said data file, wherein said part begins at said start transmission variable and has a size equal to said sendSize variable; m) determining a transmission end time; n) resetting said start transmission variable to a location corresponding to its previous value plus said sendSize value; o) calculating a sleep time by dividing said start transmission variable by said target transmission rate to obtain a target transmission time and subtracting from this target transmission time the difference between the transmission end time and the transmission start time; p) if said sleep time is greater than zero, pausing said method for a period based on said sleep time and then resuming said method at step h); and q) if said sleep time is not greater than zero, resuming said method at step h).