METHOD AND APPARATUS FOR SUBSCRIPTION-BASED BANDWIDTH BALANCING FOR INTERACTIVE HETEROGENEOUS CLIENTS
First Claim
Patent Images
1. A system configured to enable a client device to publish and subscribe one or more media streams over a network, where each of the of media streams are available in one or more bandwidths and media types, the system comprising:
- a server, coupled to a network, the server comprising a computer, a storage, and a memory;
a first module, coupled to the server, configured to accept information about media streams and capabilities of client devices, associate media stream and client devices with a session, calculate the capabilities of a client device based on the network it is connected to, and report the available media streams associated with a session on request, wherein the information about media streams comprises the identity of the stream, type of stream, bandwidth of stream, and identity of the publisher of the stream;
a smart client device, coupled to a network, the smart client device comprising a computer, a storage and a memory; and
a second module, coupled to the smart client device, configured to;
join a session,accept information about media streams associated with that session including identifier, media type and bandwidth,play one or more of the media streams associated with that session based on calculated priority and available bandwidth,monitor the quality of the one or more media streams played,respond to changes in the ability of the client device to play a media stream by skipping portions of the stream; and
responding to a high frequency of skipping portions of a media stream by either playing a different stream of lower quality, or stopping playing the stream altogether if such a stream is unavailable,wherein the quality of the media stream is a combination of the latency of the played media signal relative to its input media stream, bit error rate, and signal strength.
8 Assignments
0 Petitions
Accused Products
Abstract
A method or system for enabling client devices connected to a network to subscribe to a one or more multimedia signals available in a selection of bandwidths, based on an analysis of capabilities of the client, the quality of the connection, and the real-time changes in the ability of the client to process the signal.
121 Citations
33 Claims
-
1. A system configured to enable a client device to publish and subscribe one or more media streams over a network, where each of the of media streams are available in one or more bandwidths and media types, the system comprising:
-
a server, coupled to a network, the server comprising a computer, a storage, and a memory; a first module, coupled to the server, configured to accept information about media streams and capabilities of client devices, associate media stream and client devices with a session, calculate the capabilities of a client device based on the network it is connected to, and report the available media streams associated with a session on request, wherein the information about media streams comprises the identity of the stream, type of stream, bandwidth of stream, and identity of the publisher of the stream; a smart client device, coupled to a network, the smart client device comprising a computer, a storage and a memory; and a second module, coupled to the smart client device, configured to; join a session, accept information about media streams associated with that session including identifier, media type and bandwidth, play one or more of the media streams associated with that session based on calculated priority and available bandwidth, monitor the quality of the one or more media streams played, respond to changes in the ability of the client device to play a media stream by skipping portions of the stream; and responding to a high frequency of skipping portions of a media stream by either playing a different stream of lower quality, or stopping playing the stream altogether if such a stream is unavailable, wherein the quality of the media stream is a combination of the latency of the played media signal relative to its input media stream, bit error rate, and signal strength.
-
-
2. A method for enabling client devices coupled to a network to subscribe to one or more media streams, where each of the of media streams are available in one or more bandwidths and media types, the method comprising:
-
enabling a client device to join a session; determining and reporting media stream information about streams which the client device can publish to the network; determining a set of capabilities associated with the client device which enables it to accept media streams of various bandwidths and media types; notifying the client device as to what media streams are available and in what bandwidths and media types; accepting requests from client devices to subscribe to one or more of the plurality of multimedia signals, each at a specified bandwidth and media type; measuring the signal quality as a function of the varying bandwidth of the subscribed plurality of multimedia signals and the ability of the media stream player to play the signal without falling behind the live stream; and responding to inability for the client device to keep up with the live stream by skipping a part of the signal; and responding to frequent skipping of the signal by either switching to a lower quality version of the multimedia signal or stop playing the multimedia stream where a lower quality signal is unavailable, wherein the quality of the signal is a combination of the bandwidth and media type, wherein the signal portions are skipped by moving ahead in a signal buffer at short intervals, the size of the skipped signal portions and intervals determined by the quality of the signal based on measurements of trend of signal latency. - View Dependent Claims (3, 4)
-
-
5. A method for managing the impact of signal latency on the reception of a multimedia signal by a client device coupled to a network, the method comprising;
-
defining a first period of time as the size of the signal to skip; defining a second period of time as the minimum time between signal skips; defining a third period of time as the length of the signal to buffer; calculating a first moving average of the signal latency over a first period of time; calculating a minimum of a first moving average of the latency over a session; measuring a change in signal latency over some configured period of time; buffering a part of the signal equal to the third period of time prior to presenting it to the client device; skipping the first period of time of the signal if the change in signal latency exceeds some configured value; skipping the first period of time of the signal if the signal latency exceeds some configured percentage of the measurement of the minimum of the first moving average; and skipping the first period of time of the signal if the signal latency exceeds some configured percentage of the first moving average of the signal latency some configured period of time after the last time a part of the signal was skipped. - View Dependent Claims (6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. An apparatus for enabling client devices coupled to a network to play a plurality of media streams, where each of the plurality of media streams are available in a plurality of bandwidths and media types, the apparatus comprising:
-
a computer, comprising of one or more CPUs, memory, and an interface coupled to a network; a Signal Buffer, coupled to the computer, configured to hold a configured time period of a digitized media stream; a Media Exchange Table Handler coupled to the computer, configured to manage the plurality of multimedia streams based on available bandwidth and media type; a Monitoring Module, coupled to the computer, configured to report on the latency of a media stream at a given point in time; a Client Stream Processor coupled to the computer, configured to manage the reception of the subscribed streams, including any quality issues associated with those streams; and an Adaptive Latency Filter, coupled to the computer, configured to accept reports from the Monitoring Module and calculate the length of a signal buffer and the current position of a Client Stream Processor in the Signal Buffer. - View Dependent Claims (19, 20)
-
-
21. A method for bandwidth balancing multiple media streams among heterogeneous clients, the method comprising:
-
accepting information about a session; accepting a media stream information to publish to that session, wherein the media stream is defined by an identifier, bandwidth requirements, and type of media stream; determining the capabilities of a client to play a media stream based on its bandwidth and player capabilities; sending media stream information to a client; monitoring a quality of the media stream as received by the client, wherein the quality is a combination of the actual signal quality and the latency of the client processing of the media stream; and determining a course of action based on the quality of the media stream, wherein the course of action comprises skipping ahead in the buffer, resetting to the beginning of the buffer, stopping playing the media stream, or selecting a different media stream to play.
-
-
22. A computer readable medium having stored thereon programming instructions that, when executed by a computer, causes the computer to perform a method for bandwidth balancing multiple media streams among heterogeneous clients, the medium comprising:
-
programming instructions for accepting information about a session; programming instructions for accepting a media stream information to publish to that session, wherein the media stream is defined by an identifier, bandwidth requirements, and type of media stream; programming instructions for determining the capabilities of a client to play a media stream based on its bandwidth and player capabilities; programming instructions for sending media stream information to a client; programming instructions for monitoring a quality of the media stream as received by the client, wherein the quality is a combination of the actual signal quality and the latency of the client processing of the media stream; and programming instructions for determining a course of action based on the quality of the media stream, wherein the course of action comprises skipping ahead in the buffer, resetting to the beginning of the buffer, stopping playing the media stream, or selecting a different media stream to play.
-
-
23. An apparatus for maintaining the publishing and subscription of a media stream among multiple client devices, the apparatus comprising:
-
a computer, the computer comprising one or more processors, one or more storage devices, a memory, one or more interfaces coupled to a network, and one or more devices capable of playing media streams; a Media Exchange Table Manager, coupled to the computer, configured to maintain and report information about a media stream associated with a session, including the publisher, session, bandwidth, and media type information; a Publishing Manager, coupled to the computer, configured to accept information associated with a media stream to be associated with a session, and report information about the media streams associated with a session on request; a Capability Manager coupled to the computer, configured to accept information from a client device about its capabilities, or infer the capabilities of a client device based on the network it is connected to; and a Subscription Manager coupled to the computer, configured to accept requests to subscribe to a session or automatically subscribe client devices to media streams, based on their reported or assumed capabilities.
-
-
24. A method for maintaining the output quality of a media stream, the method comprising:
-
initializing a signal buffer to hold at least 30 seconds of a media signal at the start of a session; measuring the latency of the signal processing relative to the real-time position in the signal buffer; calculating the derivative of the latency over time; calculating a first moving average of the latency over the first 30 second time period; defining a first threshold associated with the first moving average, greater than the first moving average by some fixed percentage; and determining if the absolute value of the signal latency is above the first threshold, and if so commanding the device performing the signal processing to perform a series of skips of the signal over a first period until the derivative of the signal latency is no longer exceeds the first threshold. - View Dependent Claims (25, 26, 27, 28)
-
-
29. A computer readable medium having stored thereon instructions that, when executed by a computer, causes the computer to perform a method for maintaining the output quality of a media stream, the medium comprising:
-
programming instructions for initializing a signal buffer to hold at least 30 seconds of a media signal at the start of a session; programming instructions for measuring the latency of the signal processing relative to the real-time position in the signal buffer; programming instructions for calculating the derivative of the latency over time; programming instructions for calculating a first moving average of the latency over the first 30 second time period; programming instructions for defining a first threshold associated with the first moving average, greater than the first moving average by some fixed percentage; and programming instructions for determining if the absolute value of the signal latency is above the first threshold, and if so commanding the device performing the signal processing to perform a series of skips of the signal over a first period until the derivative of the signal latency is no longer exceeds the first threshold. - View Dependent Claims (30, 31, 32, 33)
-
Specification