US20080137685A1 - System, server, and method for variable bit rate multimedia streaming - Google Patents

System, server, and method for variable bit rate multimedia streaming Download PDF

Info

Publication number
US20080137685A1
US20080137685A1 US11/945,229 US94522907A US2008137685A1 US 20080137685 A1 US20080137685 A1 US 20080137685A1 US 94522907 A US94522907 A US 94522907A US 2008137685 A1 US2008137685 A1 US 2008137685A1
Authority
US
United States
Prior art keywords
client
delivery
packets
time
streaming media
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/945,229
Inventor
Lakshminarayanan Gunaseelan
Rammohan Kordale
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US11/945,229 priority Critical patent/US20080137685A1/en
Publication of US20080137685A1 publication Critical patent/US20080137685A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/23406Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving management of server-side video buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/23805Controlling the feeding rate to the network, e.g. by controlling the video pump
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/637Control signals issued by the client directed to the server or network components
    • H04N21/6377Control signals issued by the client directed to the server or network components directed to server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/654Transmission by server directed to the client
    • H04N21/6547Transmission by server directed to the client comprising parameters, e.g. for client setup
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6582Data stored in the client, e.g. viewing habits, hardware capabilities, credit card number

Definitions

  • the present invention relates broadly to delivery of streaming media assets over a computer network having a client server computer architecture. Specifically, the present invention relates to delivery of streaming media assets having variable bit rates and multiple data formats.
  • Multimedia data can be streamed and encoded in many different ways.
  • One aspect of encoding deals with uniformity or variation in the streaming bit rate.
  • the characteristics of the data have implications on design on numerous components of the end to end streaming server system. These components include resources on the server such as disk bandwidth, CPU, memory and network bandwidth on the server, the CPU, memory and network bandwidth on the client as well as the network itself.
  • Delivery of variable bit rate streaming multimedia data presents numerous challenges even with a single data format, but the level of difficulty is increased dramatically when streaming media assets of multiple data formats are to be delivered on a single system.
  • the present invention provides a system, methods, and computer program products that implement efficient techniques for variable bit multimedia streaming.
  • the present invention provides a delivery system, methods, and computer executable instructions for use in a client server computer architecture in which the server provides streaming media assets to at least one client over a computer network, wherein the media assets can have a plurality of data formats, comprising a packet producer that acquires a streaming media asset in packetized form and places time stamps on the packets, the time stamps specifying a delivery time for each packet, a time stamp packet queue containing the packets with time stamps in a first in, first out order; and a feeder module that removes packets from the time stamp packet queue and transmits the removed packets to a client via the computer network, the transmission for each packet concluded at least by the specified delivery time in each packet.
  • the present invention provides a system, methods, and computer executable code for resolving delivery timestamp conflicts between packets from multiple streaming media assets by comparing the delivery times of the packets, and, when a conflict between two or more packets arises, adjusting the delivery timestamp on one or more packets to deliver the packets within the time allowed by the Pre-read size value on the client or by delivering the packets at a time other than the original delivery time specified by the timestamp if the MaxBufSize on the client is large enough to hold additional packets.
  • the present invention provides a system, methods, and computer executable code for performing admission control for streaming media assets delivered to a client in a client server computer architecture in which the server provides streaming media assets to at least one client over a computer network, by defining a time window in terms of a duration of time, computing a number of bytes that need to be delivered during the time window, the bytes comprising a streaming media asset, translating the computed number of bytes into a time to process value for the first streaming media asset, and admitting for delivery the streaming media asset if the first time to process value is smaller than the time window. Additional streaming media assets can be admitted if their respective time to process values, when added to the first admitted asset for the same time space, is still less than the time window.
  • FIG. 1 illustrates in block diagram form the client server architecture utilized in embodiments of the present invention
  • FIG. 2 illustrates in block diagram form the elements of a computer as utilized in embodiments of the present invention
  • FIG. 3 illustrates in block diagram form functional elements included in the server as utilized in embodiments of the present invention
  • FIG. 4 illustrates delivery of packets having uniform size and a regular delivery time interval according to an embodiment of the invention
  • FIG. 5 illustrates delivery of packets having variable size at regular delivery time intervals according to an embodiment of the invention
  • FIG. 6 illustrates delivery of packets having uniform size and a variable delivery time interval according to an embodiment of the invention
  • FIG. 7 illustrates a stream processor of the present invention serving as a demultiplexer to produce multiple packet streams according to an embodiment of the invention
  • FIG. 8 illustrates an embodiment of the present invention having multiple packet producer to support a variety of data formats
  • FIG. 9 illustrates an embodiment of a feeder configured to perform multicasts and unicasts
  • FIG. 10 illustrates an embodiment of a feeder configured to perform simulated multicasts
  • FIG. 11 illustrates an example of individual packet streams having specific delivery time lines according to an embodiment of the invention
  • FIG. 12 illustrates another example of individual packet streams having specific delivery time lines according to an embodiment of the invention
  • FIG. 13 illustrates the delivery time line of a feeder delivering multiple packet streams having conflicting delivery time lines according to an embodiment of the invention
  • FIGS. 14A and 14B are flowcharts illustrating sequences of steps executed to perform conflict resolution between streaming media assets having packets with conflicting delivery timestamps according to an embodiment of the invention.
  • FIG. 15 is a flowchart illustrating a sequence of steps executed to perform admission control of streaming media assets according to an embodiment of the invention.
  • the present invention utilizes a client-server computer architecture 100 implemented over a large, public network such as the Internet.
  • Server 102 is responsible for distributing streaming media assets such as video, audio, static images, graphics, or a combination thereof to clients 104 - 1 , 104 - 2 , . . . , 104 - n , where n is the number of clients requiring streaming media assets, via public computer network 106 .
  • Media assets are streamed by transmitting a sequence of packets from the server 102 to the client 104 , which plays the media asset on a computer monitor, or over an audio device, or other suitable device using a media player program that decompresses, decodes, and performs any necessary processing on the sequence of packets received from the server 102 to present aural or visual presentation contained in the packets to a user.
  • streaming media assets include movies, newscasts, music, graphics, animation, slide presentations, and the like, all of which are capable of being presented in a serial fashion to a human user.
  • Server 102 may be a source of the streaming media assets.
  • one or more third party content providers such as content provider 108 may be in communication with server 102 , and provide the streaming media assets to the server 102 over network 106 .
  • Media assets are typically stored in files in the memory of the server 102 and distributed to clients on demand or according to a schedule.
  • a property that is common to various techniques for streaming of variable bit rate multimedia data involves delivering variable size data packets at discrete points in time (with variable interval) over a stream's delivery timeline. As an example, consider FIG. 5 which shows data packets P 1 , P 2 , etc. that are due at times t 1 , t 2 , etc. The packets are of different sizes and the time interval between t 1 , t 2 , etc. varies. Contrast this with constant bit rate (CBR) delivery which involves streaming fixed size packets of data over fixed time intervals.
  • CBR constant bit rate
  • FIG. 2 illustrates in block diagram form the major components included in a computer embodying either server 102 or client 104 .
  • Computer 150 incorporates a processor 152 such as a central processing unit (CPU) and supporting integrated circuitry.
  • processor 152 such as a central processing unit (CPU) and supporting integrated circuitry.
  • work stations such as Sun Ultra computers available from Sun Microsystems can be used as server 102 .
  • personal computers such as available from Dell Corporation may be used for client computers 104 .
  • Memory 154 may include one or more of RAM and NVRAM such as flash memory, to facilitate storage of software modules executed by processor 152 , and file systems administering media assets.
  • a file system refers to any administrative entity implemented by computer 150 to organize and administer media assets.
  • File systems can include conventional file systems, direct attached storage, network attached storage, storage area networks, both block based and file based, raw storage, and the like.
  • keyboard 156 or other input device pointing device 158 , and monitor 160 , which allow a user to interact with computer 150 during execution of software programs.
  • Mass storage devices such as disk drive 162 and CD ROM 164 may also be in computer 150 to provide storage for computer programs, associated files, and media assets.
  • database products available from Oracle Corp. may be utilized in connection with file systems as a database and database server.
  • Computer 150 communicates with other computers via communication connection 166 and communication line 168 to allow the computer 150 to be operated remotely, or utilize files stored at different locations, such as content provider 108 .
  • Communication connection 156 can be a modem, network interface card, or other device that enables a computer to communicate with other computers.
  • Communication line 168 can be a telephone line or cable, or any medium or channel capable of transferring data between computers.
  • communication connection 166 can be a wireless communication medium, thus eliminating the need for communication line 168 .
  • the components described above may be operatively connected by a communications bus 170 .
  • FIG. 3 illustrates functional components included in an embodiment of server 102 .
  • Server 102 includes delivery system 200 , which obtains content in the form of packetized streaming media assets and delivers it to the clients 104 .
  • Non-CBR streaming media assets are supported by the delivery system 200 as well as streaming media assets having fixed packet sizes and delivery times.
  • non-CBR streaming refers to the delivery of variable size packets of data at variable time intervals. That is, packet sizes can vary, and the time interval between packets could vary as well.
  • Delivery system 200 supports non-CBR streaming media assets by associating a time stamp with each packet, and delivering the packet either at or before the time specified in the time stamp. By using time stamped packets, delivery of the packets can be made without missing any deadlines. As illustrated in the FIG.
  • the delivery system 200 also supports delivery of variable sized packets at fixed intervals in time ( FIG. 5 ) such as when delivering I, P, or B frame data every 1/30th of a second. Delivery of fixed size packets at variable intervals in time ( FIG. 6 ) is supported, such as needed by ASF slide presentation authoring tools that attempt to build nearly the same sized packets with very small variation.
  • the delivery system 200 utilizes packet producer 202 that can service a variety of input sources such as data read from a file, data received from the network 106 , data read from a circular disk buffer while synchronizing with another capture process, and the like.
  • Packet producers 202 are implemented as software modules that acquire data to be streamed to the clients 104 , parse the acquired data if necessary, and produce time stamped packets for delivery.
  • the packet producers 202 can be specialized to handle specific formats by including, for example, code that parses Quicktime files, locates the hint tracks and constructs the realtime transport protocol (RTP) packets or code that parses ASF files and locates the index entries that are at the end of the file, etc.
  • RTP realtime transport protocol
  • the time stamped packets produced by the packet producer 202 are sent from the packet producer 202 to the time stamped packet queue 204 , a data structure that organizes time stamped packet into a first in, first out queue. While the packet producer 202 is a producer of time stamped packets, a feeder software module 206 removes the packets from the queue and delivers them to the client according to the time stamp on each packet. In an embodiment, both packet producers and feeders are active entities (with an associated thread) and the time stamped packet queue 204 is a passive data structure. Each time stamped packet in the queue doesn't need to contain the packet data in the queue verbatim, but only a pointer to where the data is stored, such as in a buffer 208 that is shared with the packet producers 202 .
  • a packet producer 202 includes two software components: a stream reader 210 and a stream processor 212 .
  • the stream reader 210 produces the data stream by receiving data and sending it to the stream processor 212 .
  • the stream processor 212 takes the data from the stream reader 210 , parses it if necessary, and produces time stamped packets.
  • Both the stream reader 210 and the stream processor 212 are software components that run in a common thread, with the stream processor 212 calling the stream reader 210 whenever it needs more data.
  • the stream processors are format specific in an embodiment, they can be employed to modify the stream when needed. While only three packet producers are shown in FIG. 3 , it is to be understood that any number of packet producers can be included and configured to accommodate whatever data and delivery requirements are contemplated. Examples of packet producers include a packet producer for processing ASF files from disk or other storage device, a packet producer for processing live ASF streams from the network 106 , a packet producer for processing Quicktime files from disk, a packet producer for processing Quicktime files that have ready made RTP packets, a packet producer for processing ASF streams from shared memory, a packet producer for processing MPEG-4 from disk based circular capture buffer, and a packet producer for MPEG-4 that injects special trailers or modifies the stream in a special way.
  • Stream processors can act as demultiplexers (separating audio and video from a single stream, for example) and feed multiple time stamp packet queues as shown in FIG. 7 .
  • the packet producers 202 are responsible for dealing with any indexing information that the data might have.
  • the index information may be part of the file itself, for example, such as with ASF, or it could be in a separate file, such as implemented in the current MediaBase system available from Kasenna, Inc.
  • the packet producers can also hide how fast-forward/rewind is implemented and provide flexibility in different ways of supporting fast-forward/rewind. For example, the packet producer can decide whether to use a separate file for supporting FF/REW, or generate the FF/REW stream from the main file on-the-fly.
  • the time stamp added to a packet by a packet producer is meant to be used by the feeder only, and doesn't necessarily correspond to the exact time of presentation as designated in the original media stream.
  • One packet producer is placing packets into a packet queue at a given time, and one feeder is removing packets from the packet queue at a given time.
  • a feeder will deliver multiple streams, and hence will deliver packets from multiple packet queues.
  • packet producer 220 produces QuickTime packets and places them into time stamp packet 222
  • packet producer 224 produces ASF packets and places them into time stamp packet queue 226
  • packet producer 228 produces MPEG-4 packets and places them into time stamp packet queue 230
  • packet producer 232 produces QuickTime packets and places them into time stamp packet queue 234 .
  • Time stamp packet queues 222 , 226 , 230 , and 234 are serviced by feeder 240 , which disburses packets from time stamp packet queue 222 to client 242 , packets from time stamp packet queue 226 to client 244 , packets from time stamp packet queue 230 to client 246 , and packets from time stamp packet queue 234 to client 248 .
  • a delivery system 200 can have more than one feeder, such as when one feeder cannot take up additional work, and an additional processor is available on which an additional feeder can be started. In such a case, another feeder for processing the extra load is instantiated. Having multiple feeders may not be necessary on a machine having a single processor.
  • Feeders can be configured to perform different types of transmission. As shown in FIG. 9 , feeder 260 can be configured to perform standard multicasts and unicasts, where time stamped packet queues feed individual clients. In another embodiment ( FIG. 10 ), feeder 262 can be configured to perform simulated multicasts, where an individual stream can be transmitted to multiple clients. Both types of feeders 260 , 262 work with the time stamped packet queue interface and the underlying packet producers don't have to perform any special tasks to accommodate the different types of feeders.
  • Special cases are accommodated by an embodiment of the feeder of the present invention.
  • One special case involves a situation where two or more packets (possibly from different streams) need to be delivered at precisely the same time. This situation may occur in processing a stream of data conforming to the RTP standard, as the RTP standard allows multiple packets in one stream to have the same time stamp. Since only one packet can be delivered at any given instant, the feeder will miss the deadline for the remaining packets that have the same delivery time specified in its time stamp. A similar situation arises when a feeder ends up spending too much time in sending a large packet, and falling behind the delivery time for the next few packets for other streams handled by the same feeder.
  • a second special case involves the admission control of streams onto a feeder, namely determining the point beyond which the feeder cannot take up additional streams. If a feeder is currently delivering n streams, and adding an n+1th stream would cause it to miss its deadlines, then the n+1th stream is not added; instead, an additional feeder can be started to handle the stream if possible. In the non-CBR delivery framework, it is difficult to determine whether adding a stream to a feeder would cause it to miss its deadlines.
  • a scheduling window is defined herein as the time period in which all clients are streamed data that needs to be sent for that time interval.
  • a time to process (TTP) value is defined herein as the time taken to write a data packet to the network. The TTP is calculated for each packet.
  • TTP time to process
  • one or more packets may need to be sent that corresponds to a stream.
  • the time to process all these packets is defined as the stream-TTP.
  • CBR delivery a stream has the same stream-TTP in every scheduling window. Hence it is easy to determine the point beyond which a feeder cannot take up additional streams. The sum of stream-TTP for all streams cannot exceed the scheduling window.
  • FIGS. 11 and 12 show two streams 300 and 302 with their own time lines. The packets show their time stamp in their respective stream time lines.
  • FIG. 13 also shows the time line of a feeder delivering these two streams, with stream 300 starting at time 0 and stream 302 starting at time 5 in the feeder's time line.
  • a packet time stamp conflict occurs at time 9 , when both P 13 and P 22 are both due to be delivered.
  • the present invention solves conflicting packet time stamps by adjusting the time stamps of the packets within an acceptable range so that their time stamps don't conflict. For example, to resolve the conflict illustrated in FIG. 13 , either P 13 or P 22 can be delivered slightly ahead of time, for example, at time T 8 . If there is another packet (for example, from a third stream) due to be delivered at time T 8 , then it is moved ahead of its time, for example, to time T 7 . This time stamp adjustment can propagate to the point where one packet in each stream has its time stamp altered for any given time Tn. Also, the packet may be sent slightly late (for example, at time T 10 ), if a slightly delayed delivery is permissible. This approach requires the feeder to look for time stamp conflicts and reschedule packet send times.
  • client side buffers located in memory 154 of the client 104 are used to smooth out the jitter in the arrival rate of data at the client side.
  • the pre-read size and max buffer size parameters impose the maximum limits on how late or how early a packet can arrive.
  • the pre-read size data in the client's buffer protects against buffer underflow, if the data is not received in time.
  • the max buffer size protects against overflow of the client's buffer if data starts arriving earlier than expected.
  • Embodiments of the present invention allow a packet's time stamp to be adjusted based on the client side pre-read size and/or max buffer size parameters.
  • the server 102 can query the client 104 for values corresponding to the client's pre-read size and max buffer size parameters. If it is known that a client pre-reads one second's worth of data, then a packet going to that client can be delayed up to a maximum of one second. Also, if it is known that a client 104 has a max buffer size to hold up to, for example, 10 seconds worth of data, then a packet can be sent to the client 104 as early as 10 seconds ahead of its timestamp.
  • FIGS. 14A and 14B illustrate the sequences of steps executed by embodiments of the present invention to perform conflict resolution between media asset streams having conflicting time stamps.
  • the streaming media assets are admitted by the server 102 for transmission to clients 104 .
  • the delivery times of the packets in the individual media asset streams are compared in step 352 . If no conflict is discovered between the time stamps of the streaming media assets admitted for delivery (decision step 354 ), control proceeds to step 364 and the packets are transmitted to the clients 104 . If a conflict is discovered at decision step 354 such that two or more packets have matching time stamps, control proceeds to step 356 ( FIG. 14A ), where the client's pre-read size value is read by the server 102 .
  • the pre-read size value can be stored on the server 102 when a client makes a request for delivery of a media asset.
  • the max buffer size value can be checked (decision step 358 ) by the server in a similar manner. If the size of the value is sufficient to accommodate a delayed or earlier delivery of the packet (decision step 360 ), one of the conflicting time stamps is adjusted to a different, non-conflicting delivery time at step 362 . Control proceeds to step 364 , where the packets are transmitted to the client 104 . If there are remaining packets in the streams (decision step 366 ), control returns to step 352 .
  • the larger the pre-read size value the longer a packet can be delayed. Also, if the max buffer size value is large, packets can be sent earlier than in cases where the max buffer size is small, thus allowing more flexibility in adjusting the time stamps.
  • choosing a large pre-read size is not acceptable for video on demand (VOD) playouts where stream control is provided by means of stop, reposition, and fast forward/rewind controls.
  • a larger pre-read size in such a case results in longer delay when a user does a reposition (i.e. moves the slider icon on a media player interface to access a different part of the stream), or switches from normal speed to fast forward. A delay of more than one second may not be acceptable for such transitions.
  • choosing a larger pre-read size for example, pre-reading three seconds' worth of data instead of one second's worth of data
  • choosing a large max buffer size the main limitation is how much memory a client can afford to allocate.
  • one second's worth of data for 800 Kbps stream is different from one second's worth of data for 1.5 Mbps stream.
  • the parameters pre-read size and max buffer size are related to the bit rate of the media asset.
  • the pre-read size and max buffer size parameter value can vary between movies that are streamed over the network 106 .
  • a request for delivery of a media asset, such as an openMovie call made from the client to server returns these parameters from the server to the client indicating how much buffer should be allocated by the client, and how much data should be pre-read before the playout starts.
  • VBR variable bit rate
  • the number of bytes remaining in the buffer at any point in time is a cumulative number of bytes received during the preceding three second window.
  • the pre-read size can be computed as the maximum number of bytes that can be received during any three second time window in the stream.
  • the pre-read size is computed by scanning a file containing the media to be streamed to the client with a moving three second time window and computing the maximum numbers of bytes that can be received during the window. In other words, given such a one or ten second time window the pre-read size for a stored video are computed by scanning the file with a time window of particular size.
  • the maximum or average bit rate is used to compute the buffer sizes.
  • Time windows and space windows are also useful for admission control in feeders.
  • a space window represents a contiguous amount of data in a media asset file.
  • Space windows can be used when it is optimal to do a unit of work that is expressed in contiguous bytes of data.
  • an essential part of streaming involves retrieving the data to be streamed from a source such as a file system.
  • applications retrieve data from the file system using an optimal I/O size (size S).
  • size S an optimal I/O size
  • file systems such as the IRIX XFS file system that allow applications to specify the maximum bit rate at which the application requires to read data; once specified, the file system guarantees that the application will be able to read data at least at the specified rate (rate B).
  • the timeWindowToBytes function scans the file and return the maximum number of bytes that need to be delivered during a time window period.
  • the spaceWindowToSeconds function scans the file and return the shortest duration of a space window amount of bytes in the stream.
  • a feeder can admit a stream if the stream can be delivered within the time window. For example, given a time window of ten minutes, the maximum numbers of bytes that need to be delivered during a ten minute time window for the stream is computed and then translated into the timeToProcess (in time units).
  • the timeToProcess value can be defined as the time expected to be spent by the Feeder in delivering a certain number of bytes. For a stream to be admissible, the sum of the timeToProcess values for all admitted streams should be lower than the time window size chosen, or an overflow will result.
  • FIG. 15 illustrates the sequence of steps executed in embodiments of the present invention to perform admission control.
  • the time window value is created.
  • the size of the time window serves as a control for adjusting the averaging behavior expected from the feeder.
  • the larger the size of the time window the better the averaging behavior. For example, by choosing a window with a size that corresponds to the duration of the entire media asset, the server gets the best averaging one can ever hope for.
  • a conservative feeder can use a one second time window, while a more optimistic feeder can use a 30 minute time window.
  • the media asset's timeToProcess value can be normalized to a larger time window.
  • the window size could also be based in the duration of the media asset (e.g., 50% of duration of the media asset, 80% of the duration of the media asset, etc.)
  • the time window based admission control scheme uses very simple calculations for admission control.
  • the media asset to be streamed is examined to determine the number of bytes to be delivered during the time window.
  • the number of bytes to be streamed is translated into a time to process value.
  • the time to process value is added to a cumulative time to process value.
  • control continues to step 410 , where the media asset is admitted for delivery. If there are more assets to be delivered (decision step 412 ), control returns to step 402 .
  • Such delivery methods are well suited for a feeder that delivers the media asset from the beginning to the end, with no stream control.
  • the packet producer and feeder based design can easily support VBR delivery as a sequence of CBR runs.
  • the feeders can use the computed delivery schedule to perform admission control.
  • the packet producers can modify the time stamps on the packets in the original stream such that the produced packets have time stamps that conform to the computed delivery schedule.
  • the time window scheme is used during installation of the asset to coordinate optimal client buffering along with feeder admission control and timely delivery of data.
  • the time window scheme is used by the server to specify the optimal pre-read size and maximum buffer size.
  • the server then uses the knowledge of the client's pre-read and maximum buffer size to handle time stamp conflicts.
  • IRIX Some advanced operating systems such as IRIX provide advanced real time facilities.
  • One such facility is Guaranteed Rate Input/Output (GRIO).
  • File systems that provide such bandwidth support run applications that specify the disk bandwidth guarantee needed to satisfy real time schedules. For example, if a multimedia movie is encoded at 1.5 Mbps, then applications can request the same amount of bandwidth from the GRIO facility.
  • GRIO ensures that the application is able to read the media asset at least at the rate of 1.5 Mbps.
  • Disk reads in file systems that support a GRIO-like feature are issued at a multiple of size known as the optimal I/O size, which is typically 256K bytes in streaming media asset delivery servers.
  • a stored video file can be scanned and the shortest time period during which 256K bytes of data need to be sent to the delivery system 200 .
  • the maximum bit rate during any 256K period (of space window) can be computed. This is the peak rate at which I/O requests are issued during playout of a streaming media asset.
  • Time windows can translate into space windows.
  • a space window is a value associated with an amount of data, for example, 256K bytes. If data is delivered at a constant rate, a time window translates directly to a space window.
  • the bit rates computed using space windows are different from (and usually much slower than) the peak delivery rate. Selecting a space window of size 256K averages the bit rate over the window because the space window is the same size as the optimal I/O size. In general, the larger the window size, the better the averaging behavior.
  • the best average bit rate can be computed by taking the size of the entire file and dividing it by the total duration. That is the same as computing the bit rate over a window of size equal to the size of the entire file.
  • the highest bit rate (also known as the peak bandwidth) of delivery occurs when using a shortest window (for example, one packet), which is the bit rate resulting from taking the largest packet of data that occupies the smallest amount of time in the stream's time line.

Abstract

System, method, and computer program products for implementing techniques for efficient delivery of variable bit rate streaming media assets having a variety of data formats. An embodiment provides delivery system for use in client server computer architecture in which server provides streaming media assets to at least one client over computer network, wherein media assets can have plurality of data formats, including a packet producer that acquires a streaming media asset in packetized form and places time stamps on packets that specify delivery time for each packet, a time stamp packet queue containing the packets with time stamps in a first in, first out order; and a feeder module that removes packets from the time stamp packet queue and transmits the removed packets to a client via the computer network, transmission for each packet concluded at least by the specified delivery time in each packet.

Description

    RELATED APPLICATIONS
  • This application is a Divisional Application of and claims the benefit of priority to U.S. patent application Ser. No. 09/917,198 filed 27 Jul. 2001, which itself claims priority to U.S. Provisional Patent Application Ser. No. 60/221,598, filed 28 Jul. 2000, with the United States Patent and Trademark Office, each of which applications are incorporated herein by reference.
  • FIELD
  • The present invention relates broadly to delivery of streaming media assets over a computer network having a client server computer architecture. Specifically, the present invention relates to delivery of streaming media assets having variable bit rates and multiple data formats.
  • BACKGROUND
  • Multimedia data can be streamed and encoded in many different ways. One aspect of encoding deals with uniformity or variation in the streaming bit rate. The characteristics of the data have implications on design on numerous components of the end to end streaming server system. These components include resources on the server such as disk bandwidth, CPU, memory and network bandwidth on the server, the CPU, memory and network bandwidth on the client as well as the network itself. Delivery of variable bit rate streaming multimedia data presents numerous challenges even with a single data format, but the level of difficulty is increased dramatically when streaming media assets of multiple data formats are to be delivered on a single system.
  • Another problem streaming media servers face is the resolution of streaming media assets that have to be delivered simultaneously. Scheduling simultaneous delivery has involved large, parallel infrastructure for delivering multiple streams simultaneously in previous approaches that results in idle system resources for an unacceptable amount of time. Idle resources translate directly into higher operating costs and reduced profits for commercial servers. Thus, there is a need for servers that can more efficiently deliver streaming media assets simultaneously to multiple users using infrastructure that is flexible to a variety of media formats.
  • SUMMARY
  • The present invention provides a system, methods, and computer program products that implement efficient techniques for variable bit multimedia streaming. In one aspect, the present invention provides a delivery system, methods, and computer executable instructions for use in a client server computer architecture in which the server provides streaming media assets to at least one client over a computer network, wherein the media assets can have a plurality of data formats, comprising a packet producer that acquires a streaming media asset in packetized form and places time stamps on the packets, the time stamps specifying a delivery time for each packet, a time stamp packet queue containing the packets with time stamps in a first in, first out order; and a feeder module that removes packets from the time stamp packet queue and transmits the removed packets to a client via the computer network, the transmission for each packet concluded at least by the specified delivery time in each packet.
  • In another aspect, the present invention provides a system, methods, and computer executable code for resolving delivery timestamp conflicts between packets from multiple streaming media assets by comparing the delivery times of the packets, and, when a conflict between two or more packets arises, adjusting the delivery timestamp on one or more packets to deliver the packets within the time allowed by the Pre-read size value on the client or by delivering the packets at a time other than the original delivery time specified by the timestamp if the MaxBufSize on the client is large enough to hold additional packets.
  • In another aspect, the present invention provides a system, methods, and computer executable code for performing admission control for streaming media assets delivered to a client in a client server computer architecture in which the server provides streaming media assets to at least one client over a computer network, by defining a time window in terms of a duration of time, computing a number of bytes that need to be delivered during the time window, the bytes comprising a streaming media asset, translating the computed number of bytes into a time to process value for the first streaming media asset, and admitting for delivery the streaming media asset if the first time to process value is smaller than the time window. Additional streaming media assets can be admitted if their respective time to process values, when added to the first admitted asset for the same time space, is still less than the time window.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 illustrates in block diagram form the client server architecture utilized in embodiments of the present invention;
  • FIG. 2 illustrates in block diagram form the elements of a computer as utilized in embodiments of the present invention;
  • FIG. 3 illustrates in block diagram form functional elements included in the server as utilized in embodiments of the present invention;
  • FIG. 4 illustrates delivery of packets having uniform size and a regular delivery time interval according to an embodiment of the invention;
  • FIG. 5 illustrates delivery of packets having variable size at regular delivery time intervals according to an embodiment of the invention;
  • FIG. 6 illustrates delivery of packets having uniform size and a variable delivery time interval according to an embodiment of the invention;
  • FIG. 7 illustrates a stream processor of the present invention serving as a demultiplexer to produce multiple packet streams according to an embodiment of the invention;
  • FIG. 8 illustrates an embodiment of the present invention having multiple packet producer to support a variety of data formats
  • FIG. 9 illustrates an embodiment of a feeder configured to perform multicasts and unicasts;
  • FIG. 10 illustrates an embodiment of a feeder configured to perform simulated multicasts;
  • FIG. 11 illustrates an example of individual packet streams having specific delivery time lines according to an embodiment of the invention;
  • FIG. 12 illustrates another example of individual packet streams having specific delivery time lines according to an embodiment of the invention;
  • FIG. 13 illustrates the delivery time line of a feeder delivering multiple packet streams having conflicting delivery time lines according to an embodiment of the invention;
  • FIGS. 14A and 14B are flowcharts illustrating sequences of steps executed to perform conflict resolution between streaming media assets having packets with conflicting delivery timestamps according to an embodiment of the invention; and
  • FIG. 15 is a flowchart illustrating a sequence of steps executed to perform admission control of streaming media assets according to an embodiment of the invention.
  • DETAILED DESCRIPTION
  • Directing attention to FIG. 1, the present invention utilizes a client-server computer architecture 100 implemented over a large, public network such as the Internet. Server 102 is responsible for distributing streaming media assets such as video, audio, static images, graphics, or a combination thereof to clients 104-1, 104-2, . . . , 104-n, where n is the number of clients requiring streaming media assets, via public computer network 106. Media assets are streamed by transmitting a sequence of packets from the server 102 to the client 104, which plays the media asset on a computer monitor, or over an audio device, or other suitable device using a media player program that decompresses, decodes, and performs any necessary processing on the sequence of packets received from the server 102 to present aural or visual presentation contained in the packets to a user. Examples of streaming media assets include movies, newscasts, music, graphics, animation, slide presentations, and the like, all of which are capable of being presented in a serial fashion to a human user. Server 102 may be a source of the streaming media assets. Optionally, one or more third party content providers such as content provider 108 may be in communication with server 102, and provide the streaming media assets to the server 102 over network 106. Media assets are typically stored in files in the memory of the server 102 and distributed to clients on demand or according to a schedule. A property that is common to various techniques for streaming of variable bit rate multimedia data involves delivering variable size data packets at discrete points in time (with variable interval) over a stream's delivery timeline. As an example, consider FIG. 5 which shows data packets P1, P2, etc. that are due at times t1, t2, etc. The packets are of different sizes and the time interval between t1, t2, etc. varies. Contrast this with constant bit rate (CBR) delivery which involves streaming fixed size packets of data over fixed time intervals.
  • FIG. 2 illustrates in block diagram form the major components included in a computer embodying either server 102 or client 104. Computer 150 incorporates a processor 152 such as a central processing unit (CPU) and supporting integrated circuitry. In an embodiment, work stations such as Sun Ultra computers available from Sun Microsystems can be used as server 102. Personal computers such as available from Dell Corporation may be used for client computers 104. However, in general any type of computer may be used for a server and any type of computer or even various information appliances may be used for the client. Memory 154 may include one or more of RAM and NVRAM such as flash memory, to facilitate storage of software modules executed by processor 152, and file systems administering media assets. As referred to herein, a file system refers to any administrative entity implemented by computer 150 to organize and administer media assets. File systems can include conventional file systems, direct attached storage, network attached storage, storage area networks, both block based and file based, raw storage, and the like. Also included in computer 150 are keyboard 156 or other input device, pointing device 158, and monitor 160, which allow a user to interact with computer 150 during execution of software programs. Mass storage devices such as disk drive 162 and CD ROM 164 may also be in computer 150 to provide storage for computer programs, associated files, and media assets. In one embodiment, database products available from Oracle Corp. may be utilized in connection with file systems as a database and database server.
  • Computer 150 communicates with other computers via communication connection 166 and communication line 168 to allow the computer 150 to be operated remotely, or utilize files stored at different locations, such as content provider 108. Communication connection 156 can be a modem, network interface card, or other device that enables a computer to communicate with other computers. Communication line 168 can be a telephone line or cable, or any medium or channel capable of transferring data between computers. In alternative embodiments, communication connection 166 can be a wireless communication medium, thus eliminating the need for communication line 168. The components described above may be operatively connected by a communications bus 170.
  • FIG. 3 illustrates functional components included in an embodiment of server 102. Server 102 includes delivery system 200, which obtains content in the form of packetized streaming media assets and delivers it to the clients 104. Non-CBR streaming media assets are supported by the delivery system 200 as well as streaming media assets having fixed packet sizes and delivery times. As used herein, non-CBR streaming refers to the delivery of variable size packets of data at variable time intervals. That is, packet sizes can vary, and the time interval between packets could vary as well. Delivery system 200 supports non-CBR streaming media assets by associating a time stamp with each packet, and delivering the packet either at or before the time specified in the time stamp. By using time stamped packets, delivery of the packets can be made without missing any deadlines. As illustrated in the FIG. 4, such on time delivery is shown where packet P1 is delivered at time t1, packet P2 is delivered at time t2 and so on. In addition to delivering packets of uniform size at regular intervals, the delivery system 200 also supports delivery of variable sized packets at fixed intervals in time (FIG. 5) such as when delivering I, P, or B frame data every 1/30th of a second. Delivery of fixed size packets at variable intervals in time (FIG. 6) is supported, such as needed by ASF slide presentation authoring tools that attempt to build nearly the same sized packets with very small variation.
  • While the use of packets with time stamps allows the delivery system 200 to support non-CBR delivery, the ability to handle a variety of formats, inputs sources, etc. is desirable. The delivery system 200 utilizes packet producer 202 that can service a variety of input sources such as data read from a file, data received from the network 106, data read from a circular disk buffer while synchronizing with another capture process, and the like. Packet producers 202 are implemented as software modules that acquire data to be streamed to the clients 104, parse the acquired data if necessary, and produce time stamped packets for delivery. The packet producers 202 can be specialized to handle specific formats by including, for example, code that parses Quicktime files, locates the hint tracks and constructs the realtime transport protocol (RTP) packets or code that parses ASF files and locates the index entries that are at the end of the file, etc. By providing a plurality of specialized packet producers 202 in the delivery system 200, the delivery system can handle data in any anticipated format.
  • The time stamped packets produced by the packet producer 202 are sent from the packet producer 202 to the time stamped packet queue 204, a data structure that organizes time stamped packet into a first in, first out queue. While the packet producer 202 is a producer of time stamped packets, a feeder software module 206 removes the packets from the queue and delivers them to the client according to the time stamp on each packet. In an embodiment, both packet producers and feeders are active entities (with an associated thread) and the time stamped packet queue 204 is a passive data structure. Each time stamped packet in the queue doesn't need to contain the packet data in the queue verbatim, but only a pointer to where the data is stored, such as in a buffer 208 that is shared with the packet producers 202.
  • In an embodiment, a packet producer 202 includes two software components: a stream reader 210 and a stream processor 212. The stream reader 210 produces the data stream by receiving data and sending it to the stream processor 212. The stream processor 212 takes the data from the stream reader 210, parses it if necessary, and produces time stamped packets. Both the stream reader 210 and the stream processor 212 are software components that run in a common thread, with the stream processor 212 calling the stream reader 210 whenever it needs more data.
  • Since the stream processors are format specific in an embodiment, they can be employed to modify the stream when needed. While only three packet producers are shown in FIG. 3, it is to be understood that any number of packet producers can be included and configured to accommodate whatever data and delivery requirements are contemplated. Examples of packet producers include a packet producer for processing ASF files from disk or other storage device, a packet producer for processing live ASF streams from the network 106, a packet producer for processing Quicktime files from disk, a packet producer for processing Quicktime files that have ready made RTP packets, a packet producer for processing ASF streams from shared memory, a packet producer for processing MPEG-4 from disk based circular capture buffer, and a packet producer for MPEG-4 that injects special trailers or modifies the stream in a special way. Stream processors can act as demultiplexers (separating audio and video from a single stream, for example) and feed multiple time stamp packet queues as shown in FIG. 7.
  • The packet producers 202 are responsible for dealing with any indexing information that the data might have. The index information may be part of the file itself, for example, such as with ASF, or it could be in a separate file, such as implemented in the current MediaBase system available from Kasenna, Inc. The packet producers can also hide how fast-forward/rewind is implemented and provide flexibility in different ways of supporting fast-forward/rewind. For example, the packet producer can decide whether to use a separate file for supporting FF/REW, or generate the FF/REW stream from the main file on-the-fly. It should be noted that the time stamp added to a packet by a packet producer is meant to be used by the feeder only, and doesn't necessarily correspond to the exact time of presentation as designated in the original media stream. In the case of reverse-play (rewind), the time stamps seen on the packets in the original media stream are decreasing when the stream is traversed in the reverse order. However, the time stamps produced by the packet producers for this reverse stream will always be increasing as these time stamps correspond to the delivery time to be used by the feeder.
  • In an embodiment, there is one packet queue per active stream in the delivery system 200. One packet producer is placing packets into a packet queue at a given time, and one feeder is removing packets from the packet queue at a given time. Typically, a feeder will deliver multiple streams, and hence will deliver packets from multiple packet queues. As shown in FIG. 8, packet producer 220 produces QuickTime packets and places them into time stamp packet 222, packet producer 224 produces ASF packets and places them into time stamp packet queue 226, packet producer 228 produces MPEG-4 packets and places them into time stamp packet queue 230, and packet producer 232 produces QuickTime packets and places them into time stamp packet queue 234. Time stamp packet queues 222, 226, 230, and 234 are serviced by feeder 240, which disburses packets from time stamp packet queue 222 to client 242, packets from time stamp packet queue 226 to client 244, packets from time stamp packet queue 230 to client 246, and packets from time stamp packet queue 234 to client 248. However, as shown in FIG. 3, a delivery system 200 can have more than one feeder, such as when one feeder cannot take up additional work, and an additional processor is available on which an additional feeder can be started. In such a case, another feeder for processing the extra load is instantiated. Having multiple feeders may not be necessary on a machine having a single processor.
  • Feeders can be configured to perform different types of transmission. As shown in FIG. 9, feeder 260 can be configured to perform standard multicasts and unicasts, where time stamped packet queues feed individual clients. In another embodiment (FIG. 10), feeder 262 can be configured to perform simulated multicasts, where an individual stream can be transmitted to multiple clients. Both types of feeders 260, 262 work with the time stamped packet queue interface and the underlying packet producers don't have to perform any special tasks to accommodate the different types of feeders.
  • Special cases are accommodated by an embodiment of the feeder of the present invention. One special case involves a situation where two or more packets (possibly from different streams) need to be delivered at precisely the same time. This situation may occur in processing a stream of data conforming to the RTP standard, as the RTP standard allows multiple packets in one stream to have the same time stamp. Since only one packet can be delivered at any given instant, the feeder will miss the deadline for the remaining packets that have the same delivery time specified in its time stamp. A similar situation arises when a feeder ends up spending too much time in sending a large packet, and falling behind the delivery time for the next few packets for other streams handled by the same feeder.
  • A second special case involves the admission control of streams onto a feeder, namely determining the point beyond which the feeder cannot take up additional streams. If a feeder is currently delivering n streams, and adding an n+1th stream would cause it to miss its deadlines, then the n+1th stream is not added; instead, an additional feeder can be started to handle the stream if possible. In the non-CBR delivery framework, it is difficult to determine whether adding a stream to a feeder would cause it to miss its deadlines.
  • A scheduling window is defined herein as the time period in which all clients are streamed data that needs to be sent for that time interval. A time to process (TTP) value is defined herein as the time taken to write a data packet to the network. The TTP is calculated for each packet. In a scheduling window, one or more packets may need to be sent that corresponds to a stream. The time to process all these packets is defined as the stream-TTP. With CBR delivery, a stream has the same stream-TTP in every scheduling window. Hence it is easy to determine the point beyond which a feeder cannot take up additional streams. The sum of stream-TTP for all streams cannot exceed the scheduling window. With a constant stream-TTP, it is possible to arrange the delivery schedule such that the feeder is never put into a situation where it has to deliver two packets at precisely the same time (thus avoiding the possibility of missing a deadline). This is done by adjusting the starting time of a stream to make sure that no time clashes will occur between packet time stamps.
  • In embodiments of the present invention used in non-CBR delivery frameworks, since the time intervals between packets can vary, a packet time stamp conflict can occur rather easily. FIGS. 11 and 12 show two streams 300 and 302 with their own time lines. The packets show their time stamp in their respective stream time lines. FIG. 13 also shows the time line of a feeder delivering these two streams, with stream 300 starting at time 0 and stream 302 starting at time 5 in the feeder's time line. A packet time stamp conflict occurs at time 9, when both P13 and P22 are both due to be delivered.
  • The present invention solves conflicting packet time stamps by adjusting the time stamps of the packets within an acceptable range so that their time stamps don't conflict. For example, to resolve the conflict illustrated in FIG. 13, either P13 or P22 can be delivered slightly ahead of time, for example, at time T8. If there is another packet (for example, from a third stream) due to be delivered at time T8, then it is moved ahead of its time, for example, to time T7. This time stamp adjustment can propagate to the point where one packet in each stream has its time stamp altered for any given time Tn. Also, the packet may be sent slightly late (for example, at time T10), if a slightly delayed delivery is permissible. This approach requires the feeder to look for time stamp conflicts and reschedule packet send times.
  • Traditionally, client side buffers located in memory 154 of the client 104 are used to smooth out the jitter in the arrival rate of data at the client side. There are two parameters that are critical in client side buffering. They are (i) the amount of data pre-read before the playout starts (pre-read size), and (ii) the size of the client side buffer (max buffer size). The pre-read size and max buffer size parameters impose the maximum limits on how late or how early a packet can arrive. When media is streamed at a fairly constant rate, if the arrival rate of data into the buffer matches the consumption rate of data by the decoder, then there should be pre-read size data left in the buffer. However, since the data can arrive late or early, buffering helps. The pre-read size data in the client's buffer protects against buffer underflow, if the data is not received in time. The max buffer size protects against overflow of the client's buffer if data starts arriving earlier than expected.
  • Embodiments of the present invention allow a packet's time stamp to be adjusted based on the client side pre-read size and/or max buffer size parameters. Directing attention to FIG. 14, when a client 104 requests delivery of a media asset from the server 102, the server 102 can query the client 104 for values corresponding to the client's pre-read size and max buffer size parameters. If it is known that a client pre-reads one second's worth of data, then a packet going to that client can be delayed up to a maximum of one second. Also, if it is known that a client 104 has a max buffer size to hold up to, for example, 10 seconds worth of data, then a packet can be sent to the client 104 as early as 10 seconds ahead of its timestamp.
  • FIGS. 14A and 14B illustrate the sequences of steps executed by embodiments of the present invention to perform conflict resolution between media asset streams having conflicting time stamps. At step 350, the streaming media assets are admitted by the server 102 for transmission to clients 104. The delivery times of the packets in the individual media asset streams are compared in step 352. If no conflict is discovered between the time stamps of the streaming media assets admitted for delivery (decision step 354), control proceeds to step 364 and the packets are transmitted to the clients 104. If a conflict is discovered at decision step 354 such that two or more packets have matching time stamps, control proceeds to step 356 (FIG. 14A), where the client's pre-read size value is read by the server 102. The pre-read size value can be stored on the server 102 when a client makes a request for delivery of a media asset. In another embodiment (FIG. 14B), the max buffer size value can be checked (decision step 358) by the server in a similar manner. If the size of the value is sufficient to accommodate a delayed or earlier delivery of the packet (decision step 360), one of the conflicting time stamps is adjusted to a different, non-conflicting delivery time at step 362. Control proceeds to step 364, where the packets are transmitted to the client 104. If there are remaining packets in the streams (decision step 366), control returns to step 352.
  • It should be noted that the larger the pre-read size value, the longer a packet can be delayed. Also, if the max buffer size value is large, packets can be sent earlier than in cases where the max buffer size is small, thus allowing more flexibility in adjusting the time stamps. However, choosing a large pre-read size is not acceptable for video on demand (VOD) playouts where stream control is provided by means of stop, reposition, and fast forward/rewind controls. A larger pre-read size in such a case results in longer delay when a user does a reposition (i.e. moves the slider icon on a media player interface to access a different part of the stream), or switches from normal speed to fast forward. A delay of more than one second may not be acceptable for such transitions. However, for multicast playouts where stream controls are not provided, choosing a larger pre-read size (for example, pre-reading three seconds' worth of data instead of one second's worth of data) may be acceptable and allows the feeder more flexibility in adjusting the time stamps. As far as choosing a large max buffer size, the main limitation is how much memory a client can afford to allocate.
  • Also, one second's worth of data for 800 Kbps stream is different from one second's worth of data for 1.5 Mbps stream. That is, the parameters pre-read size and max buffer size are related to the bit rate of the media asset. For example, the pre-read size and max buffer size parameter value can vary between movies that are streamed over the network 106. A request for delivery of a media asset, such as an openMovie call made from the client to server returns these parameters from the server to the client indicating how much buffer should be allocated by the client, and how much data should be pre-read before the playout starts.
  • For variable bit rate (VBR) streams, computing the pre-read size and max buffer size are a bit complicated, but still possible. The table below shows an example of VBR data arrival at a client. The first row indicates kilobytes of data received during each second. The second and third rows show cumulative numbers of bytes received and consumed (respectively) each second assuming that the data is received and consumed at the same rate, with a three second pre-read delay. The fourth row shows the amount of data remaining in the buffer with this three second pre-read delay.
  • Time (in seconds)
    1 2 3 4 5 6 7
    Bytes Received in KB 7 10 15 12 17 9 18
    Cumulative bytes 7 17 32 44 61 70 88
    received (KB)
    Cumulative bytes 7 17 32 44
    consumed (KB)
    Bytes left in the buffer (KB) 7 17 32 37 44 38 44
  • The number of bytes remaining in the buffer at any point in time is a cumulative number of bytes received during the preceding three second window. This means that the pre-read size can be computed as the maximum number of bytes that can be received during any three second time window in the stream. For stored videos, the pre-read size is computed by scanning a file containing the media to be streamed to the client with a moving three second time window and computing the maximum numbers of bytes that can be received during the window. In other words, given such a one or ten second time window the pre-read size for a stored video are computed by scanning the file with a time window of particular size. For live streams, the maximum or average bit rate is used to compute the buffer sizes.
  • Time windows and space windows are also useful for admission control in feeders. As referred to herein, a space window represents a contiguous amount of data in a media asset file. Space windows can be used when it is optimal to do a unit of work that is expressed in contiguous bytes of data. For example, an essential part of streaming involves retrieving the data to be streamed from a source such as a file system. In many file systems, applications retrieve data from the file system using an optimal I/O size (size S). There are also file systems such as the IRIX XFS file system that allow applications to specify the maximum bit rate at which the application requires to read data; once specified, the file system guarantees that the application will be able to read data at least at the specified rate (rate B). If the media data were delivered at a constant bit rate, it is easy to arrive at the above quantity (B). However, when the media data is to be delivered at a variable bit rate, coming up with the right number for B is difficult. One way to arrive at that number is to divide the total number of bytes in the file by the time in which the data has to be delivered (and therefore retrieved from the file system). However, such an approach can result in not enough data being read on time due to the fact that the media data is delivered with a variable bit rate. In this situation, space windows become useful. It is known that the optimal I/O size is S number of bytes. Scanning the file can reveal the shortest time in which contiguous S bytes have to be delivered. In other words, we scan the file using a space window of S bytes and find out the shortest time in which contiguous S bytes have to be delivered. Dividing the value for S by the time above gives the maximum bit rate requirement of the delivery service (the application) from the file system. Given a space window of some number of bytes (for example, 256K), the file can be scanned with a moving space window to compute the shortest amount of time occupied by such a space window (i.e., the shortest amount of time during which a space window bytes of data need to be delivered). Space windows can form the basis of reserving guaranteed rate input/output (GRIO) bandwidth by the storage manager. Two functions are defined:
  • (i) bytes timeWindowToBytes (in timeWindowInSeconds), and
  • (ii) seconds spaceWindowToSeconds (in spaceWindowInBytes)
  • The timeWindowToBytes function scans the file and return the maximum number of bytes that need to be delivered during a time window period. The spaceWindowToSeconds function scans the file and return the shortest duration of a space window amount of bytes in the stream.
  • For admission control of streams within a feeder, embodiments of the present invention utilize a time window for comparison with delivery requirements of streaming media assets. Given a time window of a particular size, a feeder can admit a stream if the stream can be delivered within the time window. For example, given a time window of ten minutes, the maximum numbers of bytes that need to be delivered during a ten minute time window for the stream is computed and then translated into the timeToProcess (in time units). The timeToProcess value can be defined as the time expected to be spent by the Feeder in delivering a certain number of bytes. For a stream to be admissible, the sum of the timeToProcess values for all admitted streams should be lower than the time window size chosen, or an overflow will result. Given a time window of size tw, for each stream, the period of intense activity (of duration tw) is identified and the work expected out of the feeder for such a window is computed. To express this concept in the form of an equation, streams that satisfy the following condition as follows are admitted:
  • streams timeToProcess ( timeWindowToBytes ( tw ) ) < tw ( 1 )
  • FIG. 15 illustrates the sequence of steps executed in embodiments of the present invention to perform admission control. Beginning at step 400, the time window value is created. The size of the time window serves as a control for adjusting the averaging behavior expected from the feeder. Generally, the larger the size of the time window, the better the averaging behavior. For example, by choosing a window with a size that corresponds to the duration of the entire media asset, the server gets the best averaging one can ever hope for. A conservative feeder can use a one second time window, while a more optimistic feeder can use a 30 minute time window. For short clips where the duration of the media asset such as a movie clip is less than the window size chosen by the feeder, the media asset's timeToProcess value can be normalized to a larger time window. The window size could also be based in the duration of the media asset (e.g., 50% of duration of the media asset, 80% of the duration of the media asset, etc.) Thus, the time window based admission control scheme uses very simple calculations for admission control. At step 402, the media asset to be streamed is examined to determine the number of bytes to be delivered during the time window. At step 404, the number of bytes to be streamed is translated into a time to process value. At step 406, the time to process value is added to a cumulative time to process value. At decision step 408, if the cumulative time to process value is smaller than the time window, control continues to step 410, where the media asset is admitted for delivery. If there are more assets to be delivered (decision step 412), control returns to step 402.
  • VBR delivery can be performed as a sequence of CBR delivery runs. Given a VBR traffic of duration d and bit rate b, the server will arrive at a delivery schedule that best represents the original VBR traffic such as {<b1, d1>, b2, d2>, <b3, d3>, . . . }. With this schedule, the server delivers at a constant bit rate b1 for duration d1, then at constant bit rate b2 for duration d2, and so on, where d1+d2+ . . . =total duration of the media asset. Such delivery methods are well suited for a feeder that delivers the media asset from the beginning to the end, with no stream control.
  • It should be noted that the packet producer and feeder based design can easily support VBR delivery as a sequence of CBR runs. The feeders can use the computed delivery schedule to perform admission control. The packet producers can modify the time stamps on the packets in the original stream such that the produced packets have time stamps that conform to the computed delivery schedule.
  • The time window scheme is used during installation of the asset to coordinate optimal client buffering along with feeder admission control and timely delivery of data. The time window scheme is used by the server to specify the optimal pre-read size and maximum buffer size. The server then uses the knowledge of the client's pre-read and maximum buffer size to handle time stamp conflicts.
  • Some advanced operating systems such as IRIX provide advanced real time facilities. One such facility is Guaranteed Rate Input/Output (GRIO). File systems that provide such bandwidth support run applications that specify the disk bandwidth guarantee needed to satisfy real time schedules. For example, if a multimedia movie is encoded at 1.5 Mbps, then applications can request the same amount of bandwidth from the GRIO facility. GRIO ensures that the application is able to read the media asset at least at the rate of 1.5 Mbps. Disk reads in file systems that support a GRIO-like feature are issued at a multiple of size known as the optimal I/O size, which is typically 256K bytes in streaming media asset delivery servers. A stored video file can be scanned and the shortest time period during which 256K bytes of data need to be sent to the delivery system 200. The maximum bit rate during any 256K period (of space window) can be computed. This is the peak rate at which I/O requests are issued during playout of a streaming media asset.
  • Time windows can translate into space windows. A space window is a value associated with an amount of data, for example, 256K bytes. If data is delivered at a constant rate, a time window translates directly to a space window. The bit rates computed using space windows are different from (and usually much slower than) the peak delivery rate. Selecting a space window of size 256K averages the bit rate over the window because the space window is the same size as the optimal I/O size. In general, the larger the window size, the better the averaging behavior. The best average bit rate can be computed by taking the size of the entire file and dividing it by the total duration. That is the same as computing the bit rate over a window of size equal to the size of the entire file. The highest bit rate (also known as the peak bandwidth) of delivery occurs when using a shortest window (for example, one packet), which is the bit rate resulting from taking the largest packet of data that occupies the smallest amount of time in the stream's time line.
  • Having disclosed exemplary embodiments and the best mode, modifications and variations may be made to the disclosed embodiments while remaining within the scope of the present invention as defined by the following claims.

Claims (15)

1. (canceled)
2. (canceled)
3. (canceled)
4. In a client server computer architecture, a method of resolving delivery conflicts between at least two streaming media assets delivered simultaneously by a server to at least one client, wherein the at least one client has a pre read size value that indicates a capability of the client to pre read data, the streaming media assets comprising data packets having delivery time stamps, the method comprising the steps of
detecting a delivery conflict between the at least two streaming media assets;
adjusting at least one of the time stamps to indicate an early delivery for at least one of the packets, wherein the adjusted time stamp is adjusted in accordance with the pre read size value; and
delivering the packets at least by times specified by the time stamps.
5. The method of claim 4, further comprising the step of the client communicating the pre read size value to the server when the client requests delivery of a streaming media asset.
6. The method of claim 4, further comprising the steps of
the server communicating to the client an optimum value for the pre read size value; and
the client allocating sufficient resources to accommodate the optimum value for the pre read size value.
7. In a client server computer architecture, a method of resolving delivery conflicts between at least two streaming media assets delivered simultaneously by a server to at least one client, wherein the at least one client has a max buffer size value that indicates a capability of the client to accept delayed data, the streaming media assets comprising data packets having delivery time stamps, the method comprising the steps of
detecting a delivery conflict between the at least two streaming media assets;
adjusting at least one of the time stamps to indicate a delayed delivery for at least one of the packets, wherein the adjusted time stamp is adjusted in accordance with the max buffer size value; and
delivering the packets at least by times specified by the time stamps.
8. The method of claim 7, further comprising the step of the client communicating the max buffer size value to the server when the client requests delivery of a streaming media asset.
9. The method of claim 7, further comprising the steps of
the server communicating to the client an optimum value for the max buffer size value; and
the client allocating sufficient resources to accommodate the max buffer size value having the optimum value.
10. (canceled)
11. A computer program product, which, when executed on a computer, resolves delivery conflicts between at least two streaming media assets delivered simultaneously by a server to at least one client, wherein the at least one client has a pre read size value that indicates a capability of the client to pre read data, the streaming media assets comprising data packets having delivery time stamps, by executing the steps of
detecting a delivery conflict between the at least two streaming media assets;
adjusting at least one of the time stamps to indicate an early delivery for at least one of the packets, wherein the adjusted time stamp is adjusted in accordance with the pre read size value; and
delivering the packets at least by times specified by the time stamps.
12. A computer program product, which, when executed on a computer, resolves delivery conflicts between at least two streaming media assets delivered simultaneously by a server to at least one client, wherein the at least one client has a max buffer size value that indicates a capability of the client to accept delayed data, the streaming media assets comprising data packets having delivery time stamps, by executing the steps of:
detecting a delivery conflict between the at least two streaming media assets;
adjusting at least one of the time stamps to indicate a delayed delivery for at least one of the packets, wherein the adjusted time stamp is adjusted in accordance with the max buffer size value; and
delivering the packets at least by times specified by the time stamps.
13. (canceled)
14. (canceled)
15. (canceled)
US11/945,229 2000-07-28 2007-11-26 System, server, and method for variable bit rate multimedia streaming Abandoned US20080137685A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/945,229 US20080137685A1 (en) 2000-07-28 2007-11-26 System, server, and method for variable bit rate multimedia streaming

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US22159800P 2000-07-28 2000-07-28
US09/917,198 US7310678B2 (en) 2000-07-28 2001-07-27 System, server, and method for variable bit rate multimedia streaming
US11/945,229 US20080137685A1 (en) 2000-07-28 2007-11-26 System, server, and method for variable bit rate multimedia streaming

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/917,198 Division US7310678B2 (en) 2000-07-28 2001-07-27 System, server, and method for variable bit rate multimedia streaming

Publications (1)

Publication Number Publication Date
US20080137685A1 true US20080137685A1 (en) 2008-06-12

Family

ID=26915924

Family Applications (2)

Application Number Title Priority Date Filing Date
US09/917,198 Active 2024-07-07 US7310678B2 (en) 2000-07-28 2001-07-27 System, server, and method for variable bit rate multimedia streaming
US11/945,229 Abandoned US20080137685A1 (en) 2000-07-28 2007-11-26 System, server, and method for variable bit rate multimedia streaming

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/917,198 Active 2024-07-07 US7310678B2 (en) 2000-07-28 2001-07-27 System, server, and method for variable bit rate multimedia streaming

Country Status (1)

Country Link
US (2) US7310678B2 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070260968A1 (en) * 2004-04-16 2007-11-08 Howard Johnathon E Editing system for audiovisual works and corresponding text for television news
US20080114890A1 (en) * 2006-11-14 2008-05-15 Shinichi Kurihara Broadcast transport stream distribution system, and broadcast transport stream distribution apparatus, user terminal device and distribution method for use in the system
US20090010273A1 (en) * 2004-02-27 2009-01-08 Microsoft Corporation Media Stream Splicer
US20100318675A1 (en) * 2009-06-16 2010-12-16 Canon Kabushiki Kaisha Method of sending data and associated device
US20120176897A1 (en) * 2008-12-18 2012-07-12 Telefonaktiebolaget L M Ericsson (Publ) Multipoint Delivery Entity and Method
US9800698B1 (en) * 2013-07-12 2017-10-24 Marvell International Ltd. Method and apparatus for ordering packets, associated with different streams of data, in a single queue prior to transmission of the packets in a network

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6766376B2 (en) 2000-09-12 2004-07-20 Sn Acquisition, L.L.C Streaming media buffering system
FI118830B (en) * 2001-02-08 2008-03-31 Nokia Corp Streaming playback
JP2002259282A (en) * 2001-02-27 2002-09-13 Matsushita Electric Ind Co Ltd Data broadcasting schedule system, and device, method, recording medium, or program concerned with the system
US7478164B1 (en) 2001-06-12 2009-01-13 Netapp, Inc. Methods and apparatus for pacing delivery of streaming media data
US6742082B1 (en) * 2001-06-12 2004-05-25 Network Appliance Pre-computing streaming media payload method and apparatus
US7054911B1 (en) 2001-06-12 2006-05-30 Network Appliance, Inc. Streaming media bitrate switching methods and apparatus
US7155531B1 (en) 2001-06-12 2006-12-26 Network Appliance Inc. Storage methods and apparatus for streaming media data
US6813690B1 (en) * 2001-06-12 2004-11-02 Network Appliance, Inc. Caching media data using content-sensitive identifiers
US7076560B1 (en) 2001-06-12 2006-07-11 Network Appliance, Inc. Methods and apparatus for storing and serving streaming media data
EP1283652A1 (en) * 2001-08-07 2003-02-12 Siemens Aktiengesellschaft Method, transceiver unit and communications system for transmitting data from one transmitter to multiple receivers
US7386627B1 (en) 2002-01-29 2008-06-10 Network Appliance, Inc. Methods and apparatus for precomputing checksums for streaming media
US7412531B1 (en) 2002-01-29 2008-08-12 Blue Coat Systems, Inc. Live stream archiving method and apparatus
US8671213B2 (en) * 2002-03-14 2014-03-11 Citrix Systems, Inc. Methods and apparatus for generating graphical and media displays at a client
US7657644B1 (en) 2002-05-10 2010-02-02 Netapp, Inc. Methods and apparatus for streaming media multicast
US7581019B1 (en) * 2002-06-05 2009-08-25 Israel Amir Active client buffer management method, system, and apparatus
US7120751B1 (en) 2002-08-09 2006-10-10 Networks Appliance, Inc. Dynamic streaming buffer cache algorithm selection
GB0223074D0 (en) * 2002-10-04 2002-11-13 Motion Touch Ltd Recording writing movements
US20040076150A1 (en) * 2002-10-17 2004-04-22 Miao Kai X. Method and apparatus for storing a media file
US20040154041A1 (en) * 2003-01-24 2004-08-05 Zhang Gary Xiao-Liang Optimized data streaming and uses thereof
US7991905B1 (en) * 2003-02-12 2011-08-02 Netapp, Inc. Adaptively selecting timeouts for streaming media
SG135022A1 (en) * 2003-05-01 2007-09-28 Genesis Microchip Inc Method and apparatus for efficient transmission of multimedia data packets
US20060114836A1 (en) * 2004-08-20 2006-06-01 Sofie Pollin Method for operating a combined multimedia -telecom system
US20070261082A1 (en) * 2003-08-22 2007-11-08 Interuniversitair Microelektronica Centrum (Imec) Method for operating a multi-media wireless system in a multi-user environment
US8228952B2 (en) * 2003-08-22 2012-07-24 Imec Method for operating a telecom system
US7302169B2 (en) * 2003-12-30 2007-11-27 Fujitsu Limited Method and apparatus for playing-back moving image data
US7639713B2 (en) * 2004-01-21 2009-12-29 Emc Corporation Database block network attached storage packet joining
US8868772B2 (en) 2004-04-30 2014-10-21 Echostar Technologies L.L.C. Apparatus, system, and method for adaptive-rate shifting of streaming content
US7818444B2 (en) 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
US7590775B2 (en) * 2004-08-06 2009-09-15 Andrew Joseph Alexander Gildfind Method for empirically determining a qualified bandwidth of file storage for a shared filed system
GB0422570D0 (en) * 2004-10-12 2004-11-10 Koninkl Philips Electronics Nv Device with storage medium and method of operating the device
US7752325B1 (en) 2004-10-26 2010-07-06 Netapp, Inc. Method and apparatus to efficiently transmit streaming media
US7904184B2 (en) * 2004-11-23 2011-03-08 Rockwell Automation Technologies, Inc. Motion control timing models
US7983769B2 (en) * 2004-11-23 2011-07-19 Rockwell Automation Technologies, Inc. Time stamped motion control network protocol that enables balanced single cycle timing and utilization of dynamic data structures
US8218439B2 (en) * 2004-11-24 2012-07-10 Sharp Laboratories Of America, Inc. Method and apparatus for adaptive buffering
US8370514B2 (en) 2005-04-28 2013-02-05 DISH Digital L.L.C. System and method of minimizing network bandwidth retrieved from an external network
US8683066B2 (en) 2007-08-06 2014-03-25 DISH Digital L.L.C. Apparatus, system, and method for multi-bitrate content streaming
US7496678B2 (en) * 2005-05-11 2009-02-24 Netapp, Inc. Method and system for unified caching of media content
US7535839B2 (en) * 2005-06-30 2009-05-19 Alcatel-Lucent Usa Inc. Method and apparatus for quality-of-service based admission control using prediction of scheduling gain
US7986624B2 (en) * 2005-10-28 2011-07-26 Viasat, Inc. Quality of service enhancements for adaptive coding and modulation
US7680040B2 (en) * 2005-10-28 2010-03-16 Viasat, Inc. Adaptive coding and modulation for broadband data transmission
US7634652B2 (en) * 2006-01-12 2009-12-15 Microsoft Corporation Management of streaming content
US7669222B2 (en) * 2006-01-17 2010-02-23 Microsoft Corporation Virtual tuner management
US7685306B2 (en) * 2006-01-20 2010-03-23 Microsoft Corporation Streaming content navigation
US8739230B2 (en) * 2006-01-20 2014-05-27 Microsoft Corporation Manager/remote content architecture
US20070180112A1 (en) * 2006-01-30 2007-08-02 Microsoft Corporation Changeable Token Bandwidth Portioning
US20070204313A1 (en) * 2006-02-27 2007-08-30 Microsoft Corporation Token Locking to Schedule Content Consumption
US7733773B2 (en) * 2006-10-18 2010-06-08 Telefonaktiebolaget Lm Ericsson (Publ) Playout based delay scheduler
GB0708440D0 (en) * 2007-05-02 2007-06-06 Film Night Ltd Data transmission
US9064231B2 (en) * 2007-12-13 2015-06-23 Ncr Corporation Converting documents
US8159944B2 (en) * 2008-12-24 2012-04-17 At&T Intellectual Property I, L.P. Time based queuing
US9510029B2 (en) 2010-02-11 2016-11-29 Echostar Advanced Technologies L.L.C. Systems and methods to provide trick play during streaming playback
EP2422517A1 (en) * 2010-05-07 2012-02-29 Siemens Enterprise Communications GmbH & Co. KG Method and device for modifying a coded data stream
US8601334B2 (en) 2011-05-10 2013-12-03 At&T Intellectual Property I, L.P. System and method for delivering content over a multicast network
US9532080B2 (en) 2012-05-31 2016-12-27 Sonic Ip, Inc. Systems and methods for the reuse of encoding information in encoding alternative streams of video data
US9357210B2 (en) 2013-02-28 2016-05-31 Sonic Ip, Inc. Systems and methods of encoding multiple video streams for adaptive bitrate streaming
US9930086B2 (en) * 2013-10-28 2018-03-27 Samsung Electronics Co., Ltd. Content presentation for MPEG media transport
TWI636689B (en) * 2016-11-25 2018-09-21 財團法人工業技術研究院 Transmission rate determination method for straming meida and server
US11792472B2 (en) * 2019-09-18 2023-10-17 Wayne Fueling Systems Llc Schedule-based uninterrupted buffering and streaming
CN112596985B (en) * 2020-12-30 2023-11-10 绿盟科技集团股份有限公司 IT asset detection method, device, equipment and medium
US11889447B2 (en) * 2021-08-03 2024-01-30 Qualcomm Incorporated Supporting inter-media synchronization in wireless communications

Citations (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1868601A (en) * 1931-06-05 1932-07-26 Arthur J Harris Ribbon pack
US2839185A (en) * 1956-09-25 1958-06-17 Mort And Jack Isaacs Inc Display packet
US4161075A (en) * 1978-02-21 1979-07-17 Eubanks Ann S Thread and yarn organizer
US4258843A (en) * 1979-10-01 1981-03-31 Med General, Inc. Vesseloop dispensing package
US4437618A (en) * 1982-07-08 1984-03-20 Champion International Corporation Spool dispenser
US5202961A (en) * 1990-06-08 1993-04-13 Apple Computer, Inc. Sequential information controller
US5247676A (en) * 1989-06-29 1993-09-21 Digital Equipment Corporation RPC based computer system using transparent callback and associated method
US5276876A (en) * 1990-05-16 1994-01-04 International Business Machines Corporation Registration of resources for commit procedures
US5276861A (en) * 1991-03-18 1994-01-04 Bull Hn Information Systems Inc. Guaranteed message delivery from a data handling computer to management computer by monitoring the management computer with the data handling computer and other management computer
US5317568A (en) * 1991-04-11 1994-05-31 Galileo International Partnership Method and apparatus for managing and facilitating communications in a distributed hetergeneous network
US5325297A (en) * 1992-06-25 1994-06-28 System Of Multiple-Colored Images For Internationally Listed Estates, Inc. Computer implemented method and system for storing and retrieving textual data and compressed image data
US5341477A (en) * 1989-02-24 1994-08-23 Digital Equipment Corporation Broker for computer network server selection
US5388264A (en) * 1993-09-13 1995-02-07 Taligent, Inc. Object oriented framework system for routing, editing, and synchronizing MIDI multimedia information using graphically represented connection object
US5390138A (en) * 1993-09-13 1995-02-14 Taligent, Inc. Object-oriented audio system
US5392432A (en) * 1991-08-27 1995-02-21 At&T Corp. Method for automatic system resource reclamation for object-oriented systems with real-time constraints
US5414455A (en) * 1993-07-07 1995-05-09 Digital Equipment Corporation Segmented video on demand system
US5430876A (en) * 1989-06-27 1995-07-04 Digital Equipment Corporation Remote procedure callback system and method
US5434678A (en) * 1993-01-11 1995-07-18 Abecassis; Max Seamless transmission of non-sequential video segments
US5442791A (en) * 1992-03-31 1995-08-15 Aggregate Computing, Inc. Integrated remote execution system for a heterogenous computer network environment
US5442390A (en) * 1993-07-07 1995-08-15 Digital Equipment Corporation Video on demand with memory accessing and or like functions
US5446901A (en) * 1993-06-30 1995-08-29 Digital Equipment Corporation Fault tolerant distributed garbage collection system and method for collecting network objects
US5485613A (en) * 1991-08-27 1996-01-16 At&T Corp. Method for automatic memory reclamation for object-oriented systems with real-time constraints
US5485611A (en) * 1994-12-30 1996-01-16 Intel Corporation Video database indexing and method of presenting video database index to a user
US5491800A (en) * 1993-12-20 1996-02-13 Taligent, Inc. Object-oriented remote procedure call networking system
US5491797A (en) * 1992-11-30 1996-02-13 Qwest Communications Schedulable automatically configured video conferencing system
US5515490A (en) * 1993-11-05 1996-05-07 Xerox Corporation Method and system for temporally formatting data presentation in time-dependent documents
US5519863A (en) * 1994-09-21 1996-05-21 International Business Machines Corporation Notification forwarding discriminator
US5537528A (en) * 1992-05-28 1996-07-16 International Business Machines Corporation System and method for inputting scene information
US5548723A (en) * 1993-12-17 1996-08-20 Taligent, Inc. Object-oriented network protocol configuration system utilizing a dynamically configurable protocol stack
US5550965A (en) * 1993-12-27 1996-08-27 Lucent Technologies Inc. Method and system for operating a data processor to index primary data in real time with iconic table of contents
US5553221A (en) * 1995-03-20 1996-09-03 International Business Machine Corporation System and method for enabling the creation of personalized movie presentations and personalized movie collections
US5557785A (en) * 1992-12-03 1996-09-17 Alcatel Alsthom Compagnie Generale D'electricite Object oriented multimedia information system using information and multiple classes to manage data having various structure and dedicated data managers
US5559955A (en) * 1990-09-17 1996-09-24 Cabletron Systems, Inc. Method and apparatus for monitoring the status of non-pollable device in a computer network
US5559949A (en) * 1995-03-20 1996-09-24 International Business Machine Corporation Computer program product and program storage device for linking and presenting movies with their underlying source information
US5559608A (en) * 1989-10-25 1996-09-24 Nec Corporation Method of digitally compressed video and audio data
US5596720A (en) * 1990-03-05 1997-01-21 Fujitsu Limited Redundant message processing system featuring reception server controlling communication between client and server process, and stand-by server retransmitting message with information indicating the message being a retransmitted message
US5602582A (en) * 1994-11-22 1997-02-11 U S West Marketing Resources Group, Inc. Method and system for processing a request based on indexed digital video data
US5602850A (en) * 1993-02-09 1997-02-11 Dsc Communications Corporation High-speed packet bus
US5603058A (en) * 1994-09-08 1997-02-11 International Business Machines Corporation Video optimized media streamer having communication nodes received digital data from storage node and transmitted said data to adapters for generating isochronous digital data streams
US5623699A (en) * 1994-12-06 1997-04-22 Thunderwave, Inc. Read only linear stream based cache system
US5630121A (en) * 1993-02-02 1997-05-13 International Business Machines Corporation Archiving and retrieving multimedia objects using structured indexes
US5630067A (en) * 1994-07-29 1997-05-13 International Business Machines Corporation System for the management of multiple time-critical data streams
US5633999A (en) * 1990-11-07 1997-05-27 Nonstop Networks Limited Workstation-implemented data storage re-routing for server fault-tolerance on computer networks
US5640388A (en) * 1995-12-21 1997-06-17 Scientific-Atlanta, Inc. Method and apparatus for removing jitter and correcting timestamps in a packet stream
US5644715A (en) * 1991-11-22 1997-07-01 International Business Machines Corporation System for scheduling multimedia sessions among a plurality of endpoint systems wherein endpoint systems negotiate connection requests with modification parameters
US5712976A (en) * 1994-09-08 1998-01-27 International Business Machines Corporation Video data streamer for simultaneously conveying same one or different ones of data blocks stored in storage node to each of plurality of communication nodes
US5724605A (en) * 1992-04-10 1998-03-03 Avid Technology, Inc. Method and apparatus for representing and editing multimedia compositions using a tree structure
US5737747A (en) * 1995-10-27 1998-04-07 Emc Corporation Prefetching to service multiple video streams from an integrated cached disk array
US5751280A (en) * 1995-12-11 1998-05-12 Silicon Graphics, Inc. System and method for media stream synchronization with a base atom index file and an auxiliary atom index file
US5758078A (en) * 1990-02-14 1998-05-26 Fujitsu Limited Global server for transmitting calling capability to mediator and local servers for requesting calling capability from the mediator to transmit resource capability to global server
US5778181A (en) * 1996-03-08 1998-07-07 Actv, Inc. Enhanced video programming system and method for incorporating and displaying retrieved integrated internet information segments
US5790795A (en) * 1996-07-01 1998-08-04 Sun Microsystems, Inc. Media server system which employs a SCSI bus and which utilizes SCSI logical units to differentiate between transfer modes
US5801781A (en) * 1995-11-14 1998-09-01 Fujitsu Limited Apparatus for converting moving picture stream of MPEG1 to transport stream of MPEG2
US5805821A (en) * 1994-09-08 1998-09-08 International Business Machines Corporation Video optimized media streamer user interface employing non-blocking switching to achieve isochronous data transfers
US5877812A (en) * 1995-11-21 1999-03-02 Imedia Corporation Method and apparatus for increasing channel utilization for digital video transmission
US5892913A (en) * 1996-12-02 1999-04-06 International Business Machines Corporation System and method for datastreams employing shared loop architecture multimedia subsystem clusters
US5892767A (en) * 1997-03-11 1999-04-06 Selsius Systems Inc. Systems and method for multicasting a video stream and communications network employing the same
US5920700A (en) * 1996-09-06 1999-07-06 Time Warner Cable System for managing the addition/deletion of media assets within a network based on usage and media asset metadata
US5925104A (en) * 1995-10-18 1999-07-20 U.S. Philips Corporation Method for making a multimedia application executable on hardware platforms with various different resource levels, a physical record containing such application, and an apparatus for executing such application
US5926649A (en) * 1996-10-23 1999-07-20 Industrial Technology Research Institute Media server for storage and retrieval of voluminous multimedia data
US5928330A (en) * 1996-09-06 1999-07-27 Motorola, Inc. System, device, and method for streaming a multimedia file
US5930797A (en) * 1997-04-15 1999-07-27 Avid Technology, Inc. Method and system for representing hierarchical time-based data structures and to extract information therefrom
US5933849A (en) * 1997-04-10 1999-08-03 At&T Corp Scalable distributed caching system and method
US5953506A (en) * 1996-12-17 1999-09-14 Adaptive Media Technologies Method and apparatus that provides a scalable media delivery system
US6014694A (en) * 1997-06-26 2000-01-11 Citrix Systems, Inc. System for adaptive video/audio transport over a network
US6018619A (en) * 1996-05-24 2000-01-25 Microsoft Corporation Method, system and apparatus for client-side usage tracking of information server systems
US6026425A (en) * 1996-07-30 2000-02-15 Nippon Telegraph And Telephone Corporation Non-uniform system load balance method and apparatus for updating threshold of tasks according to estimated load fluctuation
US6031960A (en) * 1995-06-07 2000-02-29 Hitachi America, Ltd. Methods for modifying a video data stream by adding headers to facilitate the identification of packets including a PCR, PTS or DTS value
US6034746A (en) * 1997-10-27 2000-03-07 International Business Machines Corporation System and method for inserting data into a digital audio/video data stream
US6094706A (en) * 1998-03-02 2000-07-25 International Business Machines Corporation Caching in a data processing system using the pigeon hole principle
US6119167A (en) * 1997-07-11 2000-09-12 Phone.Com, Inc. Pushing and pulling data in networks
US6185625B1 (en) * 1996-12-20 2001-02-06 Intel Corporation Scaling proxy server sending to the client a graphical user interface for establishing object encoding preferences after receiving the client's request for the object
US6223210B1 (en) * 1998-10-14 2001-04-24 Radio Computing Services, Inc. System and method for an automated broadcast system
US6230200B1 (en) * 1997-09-08 2001-05-08 Emc Corporation Dynamic modeling for resource allocation in a file server
US6240243B1 (en) * 1994-12-05 2001-05-29 International Business Machines Corporation Method and apparatus for storing and retrieving scalable video data in a disk-array-based video server
US6279040B1 (en) * 1995-12-06 2001-08-21 Industrial Technology Research Institute Scalable architecture for media-on demand servers
US6281524B1 (en) * 1997-02-21 2001-08-28 Kabushiki Kaisha Toshiba Semiconductor light-emitting device
US20020010798A1 (en) * 2000-04-20 2002-01-24 Israel Ben-Shaul Differentiated content and application delivery via internet
US6343298B1 (en) * 1997-04-03 2002-01-29 Microsoft Corporation Seamless multimedia branching
US6356921B1 (en) * 1998-06-20 2002-03-12 International Business Machines Corporation Framework for progressive hierarchial and adaptive delivery rich media presentations and associated meta data
US20020038374A1 (en) * 1998-09-15 2002-03-28 Anoop Gupta Multimedia timeline modification in networked client/server systems
US20020040403A1 (en) * 1999-05-04 2002-04-04 Richard S. Goldhor Method and apparatus for providing continuous playback or distribution of audio and audio-visual streamed multimedia received over networks having non-deterministic delays
US6377996B1 (en) * 1999-02-18 2002-04-23 International Business Machines Corporation System for seamless streaming of data stored on a network of distributed primary and target servers using segmentation information exchanged among all servers during streaming
US20020049846A1 (en) * 2000-07-28 2002-04-25 Horen Robert S. System and method for improved utilization of bandwidth in a computer system serving multiple users
US20020065925A1 (en) * 1999-09-18 2002-05-30 Jeremy A. Kenyon Dynamic scalable multi-media content streaming
US20020078203A1 (en) * 2000-03-17 2002-06-20 Greschler David M. Method for serving third party software applications from servers to client computers
US20020103928A1 (en) * 2001-01-29 2002-08-01 Singal Sanjay S. Prefix caching for media objects
US20030018978A1 (en) * 2001-03-02 2003-01-23 Singal Sanjay S. Transfer file format and system and method for distributing media content
US6553413B1 (en) * 1998-07-14 2003-04-22 Massachusetts Institute Of Technology Content delivery network using edge-of-network servers for providing content delivery to a set of participating content providers
US6567409B1 (en) * 1998-04-08 2003-05-20 Pioneer Electronics Corporation Data stream converting apparatus
US6584463B2 (en) * 1997-11-10 2003-06-24 Hitachi, Ltd. Video searching method, apparatus, and program product, producing a group image file from images extracted at predetermined intervals
US6601136B2 (en) * 1998-10-30 2003-07-29 Kasenna, Inc. Media server system and process having device independent near-online storage support
US6708213B1 (en) * 1999-12-06 2004-03-16 Lucent Technologies Inc. Method for streaming multimedia information over public networks
US6717591B1 (en) * 2000-08-31 2004-04-06 International Business Machines Corporation Computer display system for dynamically controlling the pacing of sequential presentation segments in response to user variations in the time allocated to specific presentation segments
US6728270B1 (en) * 1999-07-15 2004-04-27 Telefonaktiebolaget Lm Ericsson (Publ) Scheduling and admission control of packet data traffic
US6754443B2 (en) * 1998-05-27 2004-06-22 Kasenna, Inc. Media server system having improved asset types for playback of digital media
US6757736B1 (en) * 1999-11-30 2004-06-29 International Business Machines Corporation Bandwidth optimizing adaptive file distribution
US6771644B1 (en) * 1999-09-17 2004-08-03 Lucent Technologies Inc. Program insertion in real time IP multicast
US6868452B1 (en) * 1999-08-06 2005-03-15 Wisconsin Alumni Research Foundation Method for caching of media files to reduce delivery cost

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6137834A (en) * 1996-05-29 2000-10-24 Sarnoff Corporation Method and apparatus for splicing compressed information streams

Patent Citations (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1868601A (en) * 1931-06-05 1932-07-26 Arthur J Harris Ribbon pack
US2839185A (en) * 1956-09-25 1958-06-17 Mort And Jack Isaacs Inc Display packet
US4161075A (en) * 1978-02-21 1979-07-17 Eubanks Ann S Thread and yarn organizer
US4258843A (en) * 1979-10-01 1981-03-31 Med General, Inc. Vesseloop dispensing package
US4437618A (en) * 1982-07-08 1984-03-20 Champion International Corporation Spool dispenser
US5341477A (en) * 1989-02-24 1994-08-23 Digital Equipment Corporation Broker for computer network server selection
US5430876A (en) * 1989-06-27 1995-07-04 Digital Equipment Corporation Remote procedure callback system and method
US5247676A (en) * 1989-06-29 1993-09-21 Digital Equipment Corporation RPC based computer system using transparent callback and associated method
US5559608A (en) * 1989-10-25 1996-09-24 Nec Corporation Method of digitally compressed video and audio data
US5758078A (en) * 1990-02-14 1998-05-26 Fujitsu Limited Global server for transmitting calling capability to mediator and local servers for requesting calling capability from the mediator to transmit resource capability to global server
US5596720A (en) * 1990-03-05 1997-01-21 Fujitsu Limited Redundant message processing system featuring reception server controlling communication between client and server process, and stand-by server retransmitting message with information indicating the message being a retransmitted message
US5276876A (en) * 1990-05-16 1994-01-04 International Business Machines Corporation Registration of resources for commit procedures
US5202961A (en) * 1990-06-08 1993-04-13 Apple Computer, Inc. Sequential information controller
US5559955A (en) * 1990-09-17 1996-09-24 Cabletron Systems, Inc. Method and apparatus for monitoring the status of non-pollable device in a computer network
US5633999A (en) * 1990-11-07 1997-05-27 Nonstop Networks Limited Workstation-implemented data storage re-routing for server fault-tolerance on computer networks
US5276861A (en) * 1991-03-18 1994-01-04 Bull Hn Information Systems Inc. Guaranteed message delivery from a data handling computer to management computer by monitoring the management computer with the data handling computer and other management computer
US5317568A (en) * 1991-04-11 1994-05-31 Galileo International Partnership Method and apparatus for managing and facilitating communications in a distributed hetergeneous network
US5485613A (en) * 1991-08-27 1996-01-16 At&T Corp. Method for automatic memory reclamation for object-oriented systems with real-time constraints
US5392432A (en) * 1991-08-27 1995-02-21 At&T Corp. Method for automatic system resource reclamation for object-oriented systems with real-time constraints
US5644715A (en) * 1991-11-22 1997-07-01 International Business Machines Corporation System for scheduling multimedia sessions among a plurality of endpoint systems wherein endpoint systems negotiate connection requests with modification parameters
US5442791A (en) * 1992-03-31 1995-08-15 Aggregate Computing, Inc. Integrated remote execution system for a heterogenous computer network environment
US5724605A (en) * 1992-04-10 1998-03-03 Avid Technology, Inc. Method and apparatus for representing and editing multimedia compositions using a tree structure
US5537528A (en) * 1992-05-28 1996-07-16 International Business Machines Corporation System and method for inputting scene information
US5325297A (en) * 1992-06-25 1994-06-28 System Of Multiple-Colored Images For Internationally Listed Estates, Inc. Computer implemented method and system for storing and retrieving textual data and compressed image data
US5491797A (en) * 1992-11-30 1996-02-13 Qwest Communications Schedulable automatically configured video conferencing system
US5557785A (en) * 1992-12-03 1996-09-17 Alcatel Alsthom Compagnie Generale D'electricite Object oriented multimedia information system using information and multiple classes to manage data having various structure and dedicated data managers
US5434678A (en) * 1993-01-11 1995-07-18 Abecassis; Max Seamless transmission of non-sequential video segments
US5630121A (en) * 1993-02-02 1997-05-13 International Business Machines Corporation Archiving and retrieving multimedia objects using structured indexes
US5602850A (en) * 1993-02-09 1997-02-11 Dsc Communications Corporation High-speed packet bus
US5446901A (en) * 1993-06-30 1995-08-29 Digital Equipment Corporation Fault tolerant distributed garbage collection system and method for collecting network objects
US5414455A (en) * 1993-07-07 1995-05-09 Digital Equipment Corporation Segmented video on demand system
US5442390A (en) * 1993-07-07 1995-08-15 Digital Equipment Corporation Video on demand with memory accessing and or like functions
US5388264A (en) * 1993-09-13 1995-02-07 Taligent, Inc. Object oriented framework system for routing, editing, and synchronizing MIDI multimedia information using graphically represented connection object
US5390138A (en) * 1993-09-13 1995-02-14 Taligent, Inc. Object-oriented audio system
US5515490A (en) * 1993-11-05 1996-05-07 Xerox Corporation Method and system for temporally formatting data presentation in time-dependent documents
US5548723A (en) * 1993-12-17 1996-08-20 Taligent, Inc. Object-oriented network protocol configuration system utilizing a dynamically configurable protocol stack
US5491800A (en) * 1993-12-20 1996-02-13 Taligent, Inc. Object-oriented remote procedure call networking system
US5550965A (en) * 1993-12-27 1996-08-27 Lucent Technologies Inc. Method and system for operating a data processor to index primary data in real time with iconic table of contents
US5630067A (en) * 1994-07-29 1997-05-13 International Business Machines Corporation System for the management of multiple time-critical data streams
US5603058A (en) * 1994-09-08 1997-02-11 International Business Machines Corporation Video optimized media streamer having communication nodes received digital data from storage node and transmitted said data to adapters for generating isochronous digital data streams
US5712976A (en) * 1994-09-08 1998-01-27 International Business Machines Corporation Video data streamer for simultaneously conveying same one or different ones of data blocks stored in storage node to each of plurality of communication nodes
US5805821A (en) * 1994-09-08 1998-09-08 International Business Machines Corporation Video optimized media streamer user interface employing non-blocking switching to achieve isochronous data transfers
US5519863A (en) * 1994-09-21 1996-05-21 International Business Machines Corporation Notification forwarding discriminator
US5602582A (en) * 1994-11-22 1997-02-11 U S West Marketing Resources Group, Inc. Method and system for processing a request based on indexed digital video data
US6240243B1 (en) * 1994-12-05 2001-05-29 International Business Machines Corporation Method and apparatus for storing and retrieving scalable video data in a disk-array-based video server
US5623699A (en) * 1994-12-06 1997-04-22 Thunderwave, Inc. Read only linear stream based cache system
US5485611A (en) * 1994-12-30 1996-01-16 Intel Corporation Video database indexing and method of presenting video database index to a user
US5559949A (en) * 1995-03-20 1996-09-24 International Business Machine Corporation Computer program product and program storage device for linking and presenting movies with their underlying source information
US5553221A (en) * 1995-03-20 1996-09-03 International Business Machine Corporation System and method for enabling the creation of personalized movie presentations and personalized movie collections
US6031960A (en) * 1995-06-07 2000-02-29 Hitachi America, Ltd. Methods for modifying a video data stream by adding headers to facilitate the identification of packets including a PCR, PTS or DTS value
US5925104A (en) * 1995-10-18 1999-07-20 U.S. Philips Corporation Method for making a multimedia application executable on hardware platforms with various different resource levels, a physical record containing such application, and an apparatus for executing such application
US5737747A (en) * 1995-10-27 1998-04-07 Emc Corporation Prefetching to service multiple video streams from an integrated cached disk array
US5801781A (en) * 1995-11-14 1998-09-01 Fujitsu Limited Apparatus for converting moving picture stream of MPEG1 to transport stream of MPEG2
US5877812A (en) * 1995-11-21 1999-03-02 Imedia Corporation Method and apparatus for increasing channel utilization for digital video transmission
US6279040B1 (en) * 1995-12-06 2001-08-21 Industrial Technology Research Institute Scalable architecture for media-on demand servers
US5751280A (en) * 1995-12-11 1998-05-12 Silicon Graphics, Inc. System and method for media stream synchronization with a base atom index file and an auxiliary atom index file
US5640388A (en) * 1995-12-21 1997-06-17 Scientific-Atlanta, Inc. Method and apparatus for removing jitter and correcting timestamps in a packet stream
US5778181A (en) * 1996-03-08 1998-07-07 Actv, Inc. Enhanced video programming system and method for incorporating and displaying retrieved integrated internet information segments
US6018619A (en) * 1996-05-24 2000-01-25 Microsoft Corporation Method, system and apparatus for client-side usage tracking of information server systems
US5790795A (en) * 1996-07-01 1998-08-04 Sun Microsystems, Inc. Media server system which employs a SCSI bus and which utilizes SCSI logical units to differentiate between transfer modes
US6026425A (en) * 1996-07-30 2000-02-15 Nippon Telegraph And Telephone Corporation Non-uniform system load balance method and apparatus for updating threshold of tasks according to estimated load fluctuation
US5928330A (en) * 1996-09-06 1999-07-27 Motorola, Inc. System, device, and method for streaming a multimedia file
US5920700A (en) * 1996-09-06 1999-07-06 Time Warner Cable System for managing the addition/deletion of media assets within a network based on usage and media asset metadata
US5926649A (en) * 1996-10-23 1999-07-20 Industrial Technology Research Institute Media server for storage and retrieval of voluminous multimedia data
US5892913A (en) * 1996-12-02 1999-04-06 International Business Machines Corporation System and method for datastreams employing shared loop architecture multimedia subsystem clusters
US5953506A (en) * 1996-12-17 1999-09-14 Adaptive Media Technologies Method and apparatus that provides a scalable media delivery system
US6185625B1 (en) * 1996-12-20 2001-02-06 Intel Corporation Scaling proxy server sending to the client a graphical user interface for establishing object encoding preferences after receiving the client's request for the object
US6281524B1 (en) * 1997-02-21 2001-08-28 Kabushiki Kaisha Toshiba Semiconductor light-emitting device
US5892767A (en) * 1997-03-11 1999-04-06 Selsius Systems Inc. Systems and method for multicasting a video stream and communications network employing the same
US6343298B1 (en) * 1997-04-03 2002-01-29 Microsoft Corporation Seamless multimedia branching
US5933849A (en) * 1997-04-10 1999-08-03 At&T Corp Scalable distributed caching system and method
US5930797A (en) * 1997-04-15 1999-07-27 Avid Technology, Inc. Method and system for representing hierarchical time-based data structures and to extract information therefrom
US6014694A (en) * 1997-06-26 2000-01-11 Citrix Systems, Inc. System for adaptive video/audio transport over a network
US6119167A (en) * 1997-07-11 2000-09-12 Phone.Com, Inc. Pushing and pulling data in networks
US6230200B1 (en) * 1997-09-08 2001-05-08 Emc Corporation Dynamic modeling for resource allocation in a file server
US6034746A (en) * 1997-10-27 2000-03-07 International Business Machines Corporation System and method for inserting data into a digital audio/video data stream
US6584463B2 (en) * 1997-11-10 2003-06-24 Hitachi, Ltd. Video searching method, apparatus, and program product, producing a group image file from images extracted at predetermined intervals
US6094706A (en) * 1998-03-02 2000-07-25 International Business Machines Corporation Caching in a data processing system using the pigeon hole principle
US6567409B1 (en) * 1998-04-08 2003-05-20 Pioneer Electronics Corporation Data stream converting apparatus
US6754443B2 (en) * 1998-05-27 2004-06-22 Kasenna, Inc. Media server system having improved asset types for playback of digital media
US6356921B1 (en) * 1998-06-20 2002-03-12 International Business Machines Corporation Framework for progressive hierarchial and adaptive delivery rich media presentations and associated meta data
US6553413B1 (en) * 1998-07-14 2003-04-22 Massachusetts Institute Of Technology Content delivery network using edge-of-network servers for providing content delivery to a set of participating content providers
US20020038374A1 (en) * 1998-09-15 2002-03-28 Anoop Gupta Multimedia timeline modification in networked client/server systems
US6223210B1 (en) * 1998-10-14 2001-04-24 Radio Computing Services, Inc. System and method for an automated broadcast system
US6601136B2 (en) * 1998-10-30 2003-07-29 Kasenna, Inc. Media server system and process having device independent near-online storage support
US6377996B1 (en) * 1999-02-18 2002-04-23 International Business Machines Corporation System for seamless streaming of data stored on a network of distributed primary and target servers using segmentation information exchanged among all servers during streaming
US20020040403A1 (en) * 1999-05-04 2002-04-04 Richard S. Goldhor Method and apparatus for providing continuous playback or distribution of audio and audio-visual streamed multimedia received over networks having non-deterministic delays
US6728270B1 (en) * 1999-07-15 2004-04-27 Telefonaktiebolaget Lm Ericsson (Publ) Scheduling and admission control of packet data traffic
US6868452B1 (en) * 1999-08-06 2005-03-15 Wisconsin Alumni Research Foundation Method for caching of media files to reduce delivery cost
US6771644B1 (en) * 1999-09-17 2004-08-03 Lucent Technologies Inc. Program insertion in real time IP multicast
US20020065925A1 (en) * 1999-09-18 2002-05-30 Jeremy A. Kenyon Dynamic scalable multi-media content streaming
US6757736B1 (en) * 1999-11-30 2004-06-29 International Business Machines Corporation Bandwidth optimizing adaptive file distribution
US6708213B1 (en) * 1999-12-06 2004-03-16 Lucent Technologies Inc. Method for streaming multimedia information over public networks
US20020078203A1 (en) * 2000-03-17 2002-06-20 Greschler David M. Method for serving third party software applications from servers to client computers
US20020010798A1 (en) * 2000-04-20 2002-01-24 Israel Ben-Shaul Differentiated content and application delivery via internet
US20020049846A1 (en) * 2000-07-28 2002-04-25 Horen Robert S. System and method for improved utilization of bandwidth in a computer system serving multiple users
US6717591B1 (en) * 2000-08-31 2004-04-06 International Business Machines Corporation Computer display system for dynamically controlling the pacing of sequential presentation segments in response to user variations in the time allocated to specific presentation segments
US20020103928A1 (en) * 2001-01-29 2002-08-01 Singal Sanjay S. Prefix caching for media objects
US20030018978A1 (en) * 2001-03-02 2003-01-23 Singal Sanjay S. Transfer file format and system and method for distributing media content

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090010273A1 (en) * 2004-02-27 2009-01-08 Microsoft Corporation Media Stream Splicer
US8514891B2 (en) * 2004-02-27 2013-08-20 Microsoft Corporation Media stream splicer
US20070260968A1 (en) * 2004-04-16 2007-11-08 Howard Johnathon E Editing system for audiovisual works and corresponding text for television news
US7836389B2 (en) * 2004-04-16 2010-11-16 Avid Technology, Inc. Editing system for audiovisual works and corresponding text for television news
US20080114890A1 (en) * 2006-11-14 2008-05-15 Shinichi Kurihara Broadcast transport stream distribution system, and broadcast transport stream distribution apparatus, user terminal device and distribution method for use in the system
US8832291B2 (en) * 2006-11-14 2014-09-09 Kabushiki Kaisha Toshiba Broadcast transport stream distribution system, and broadcast transport stream distribution apparatus, user terminal device and distribution method for use in the system
US20120176897A1 (en) * 2008-12-18 2012-07-12 Telefonaktiebolaget L M Ericsson (Publ) Multipoint Delivery Entity and Method
US8693330B2 (en) * 2008-12-18 2014-04-08 Telefonaktiebolaget L M Ericsson (Publ) Multipoint delivery entity and method
US20100318675A1 (en) * 2009-06-16 2010-12-16 Canon Kabushiki Kaisha Method of sending data and associated device
US9009344B2 (en) * 2009-06-16 2015-04-14 Canon Kabushiki Kaisha Method of sending data and associated device
US9800698B1 (en) * 2013-07-12 2017-10-24 Marvell International Ltd. Method and apparatus for ordering packets, associated with different streams of data, in a single queue prior to transmission of the packets in a network

Also Published As

Publication number Publication date
US20020097750A1 (en) 2002-07-25
US7310678B2 (en) 2007-12-18

Similar Documents

Publication Publication Date Title
US7310678B2 (en) System, server, and method for variable bit rate multimedia streaming
US7337231B1 (en) Providing media on demand
US10594752B2 (en) System and method of managing multiple video players
US7852854B2 (en) Method and apparatus for time-multiplexed processing of multiple digital video programs
US20200221145A1 (en) Method and apparatus for a virtual online video channel
US7240121B2 (en) Content providing apparatus and content providing method
US8533765B2 (en) On demand system and method using dynamic broadcast scheduling
JP3789995B2 (en) Video server system and operation method thereof
US20090249222A1 (en) System and method for simultaneous media presentation
US20090070414A1 (en) System and method for distributing media content using transfer file that eliminates negotiati0n between server and client in point-to-multipoint distribution
KR20020062595A (en) Method and system for providing instant start multimedia content
WO2000035201A1 (en) Multimedia presentation latency minimization
WO2011146898A2 (en) Internet system for ultra high video quality
KR20030025386A (en) Method for pause/resume a video playback in a video system
EP2087666B1 (en) Priority-based buffer management
Zhang et al. NetMedia: streaming multimedia presentations in distributed environments
Chang et al. Schedulable region for VBR media transmission with optimal resource allocation and utilization
Krunz et al. Efficient support for interactive scanning operations in MPEG-based video-on-demand systems
Yang et al. Adaptive live broadcasting for highly-demanded videos
JP3584787B2 (en) Multimedia data playback / transmission device
Helbig et al. Protocol for browsing in continuous data for cooperative multi-server and multi-client applications
Li Video-on-demand: Scalability and QoS control
Paul et al. Real-time scheduling for synchronized presentation of multimedia information in distributed multimedia systems
Paul et al. Ensuring quality in distributed multimedia systems
Wen et al. Token-tray/weighted queuing-time (TT/WQT): An adaptive batching policy for near video-on-demand system

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION