SYSTEM AND METHOD TO MODIFY A CURRENT OFVIDEO BASED ON A CLIENT OR AN ENVIRONMENTNETCROSS REFERENCE WITH RELATED APPLICATIONS This application claims the priority of the United States Provisional Application no. 50 / 341,672, filed December 15, 2001, which is incorporated herein by reference.
FIELD OF THE INVENTION The invention described relates to a system and method for delivering data corrierites through a communications networkBACKGROUND OF THE INVENTION The quality of presentation to a client device of a video based on a video stream received through a network can be limited by the bandwidth available in the network. The congestion in the rec can result in the data falling from the data transmissions carried out by the network. Network experiences congestion, the video current carried by the network can suffer the loss of frames, which degrades the quality of the ideo presented based on the video stream. Also, the quality of presentation of a client device of a video based on a video stream received through the network can be imitated by the ability of the client's device to decode the video stream. When the client's device lacks the ability to completely decode the received video stream, the unused data corresponds to the wasted bandwidth of the network.
BRIEF DESCRIPTION OF THE INVENTION The present invention provides a video stream to be decoded in accordance with one or more parameters and to be transmitted through a network to a computer to be dynamically modified during the encoding process based on the conditions in the network and the ability of the computer to decode the video stream. The invention provides a method, system and product of a computer program for modifying a video stream to be encoded in accordance with the values of one or more parameters and to be delivered through the network. First, data related to at least the capacity of the network to transport the video stream is obtained. Then, the values of one or more parameters with which the video stream is encoded are modified based on the data obtained. In one embodiment of the invention, the video stream is encoded in accordance with the values of one or more parameters to be delivered through the network to a computer. The data related to the transport capacity of the network of the video stream and the capacity of the computer to decode the video stream are obtained. The values of one or more parameters with which the video stream is encoded are then modified based on the data obtained. According to one embodiment of the invention, the one or more parameters with which the video stream is encoded includes a frame resolution that is modified based on the data obtained. In another embodiment of the invention, the one or more parameters with which the video stream is encoded include a frame rate that is modified based on the data obtained. In accordance with another embodiment of the invention, data related to the capacity of the network to transport the video stream to the computer and the computer's ability to decode video stream are obtained through RTCP packets received from the computer. In one embodiment of the invention, data relating to the network's ability to transport the video stream to the computer and the computer's privacy to decode the video stream includes a measurement representing the processor power of the computer. available on the computer to decode the video recorder to be delivered to the computer. In another modality of invention, data related to the capacity of the network to transport the video stream to the computer and the computer's ability to decode the video stream inc I u | e e joins measurement representing the packet loss associated with the delivery of the video stream through the network to the computer. In another embodiment I of the invention, the data related to the capacity of the network to transport the video stream to the computer and the ability of the computer to decode the video stream include a measurement representing the bytes transmitted and the byjes received. associated with the delivery of the video stream through the network to the computer. According to another embodiment of the invention, the data related to the capacity of the network to transport the video stream to the computer and the ability of the computer to decode the video stream includes a measurement representing the error rate of the computer. bits associated with the delivery of a video stream through the network to the computer.
BREVDISCRIPTION OF THE DRAWINGS The invention is illustrated in the Figures of the accompanying drawings, which are intended to be exemplary and not limiting, where reference numbers are intended to refer to their corresponding or similar parts. Figure 1 block diagram showing one embodiment of the present invention and the environment in which it operates.
Figure 2 is) a table showing examples of the predefined data ranges and their corresponding parameter values. Figure 3 is a flow chart showing the operating environment of the invention. Figure 4 is a flow diagram showing another operating environment of the invention.
DETAILED DESCRIPTION OF THE INVENTION Preferred embodiments of a method, system and article of manufacture containing computer programs in accordance with the present invention are described with reference to the drawings.
As shown in Figure 1, a video server system 100 ("VS") communicates with a video client system 300 ("VC") through a network 200. The VS 100 system can encompass any video system. computing with the ability to: a) encode a video stream in accordance with one or more parameters; (b) transmit the coded stream to another computer through the network; c) receive the data regarding the conditions in the network and the other computer; and d) modifying one or more parameters based on the received data in order to modify the coding of the video stream. The 100 VS system may comprise a computer code to carry out the above functions. In one embodiment of the invention, system 100 VS comprises a video transmission and coding system ("VET") 110 and a video coding control system "VEC". The 100 VS system encompasses any computer system with the ability to carry out the transmission and encoding functions described above, and may comprise a computer code to carry out those functions. For example, the 100 VET system can include any computer system with the ability to encode a video stream of any known format, for example, MPEG and H.263, in accordance with one or more parameters, including, for example, the resolution of frame or frame rate and transmit the video stream over a network with the techniques already known, for example, in accordance with the IP, TCP / IP, and UDP protocols, as well as the protocols related to the transport of data in current, for example, real-time current protocol (RTSP), real-time transpo'te protocol (RTP), real-time control protocol (RTCP). The one or more parameters described above can be stored, for example, in a memory so that they can be modified and accessed with other computer systems, for example, a 120 VEC system. The 123 VEC system encompasses any computer system with the ability to perform the receive and modify functions described above, and may comprise a computer code to carry out those functions. For example, the 120 VEC system can comprise any computer system with the ability to receive data with respect to the conditions of the network over which the video stream is sent and in the computer receiving the video stream as the data specific to it. the application contained within RTCP packets received from the computer receiving the video stream, and modify the one or more parameters according to the video stream to be encoded based on the predefined range tables for the received data and the values of predefined parameters corresponding to the predefined ranges. Figure 2 shows an exemplary table of the predefined ranges for the received data and the predefined parameter values corresponding to the predefined ranges. In the example of Figure 2, the first column of the table shows the energy available in the CPU, described below, as predefined percentage ranges. The second column of the table shows the predefined table resolutions corresponding to the percentage ranges of the energy available in the CPU. Thus, as described below, for example, the data received indicated 60% of the available energy in the CPU, and the 120 VEC system can consult the table in Figure 2 to determine that a resolution of 352 x 288 of the table corresponds to the predefined range that covers the data received. When the current frame resolution at which the 110 VEC system encodes the video stream is different, then the 120 VEC system will modify the frame resolution parameter to 352 x 288 to cause the 110 VEC system to encode the video stream. to that frame resolution. It should be understood that similar tables can be used in relation to other types eg data received by the 120 VEC system, as described below. Also, it should be understood that the values shown in Figure 2 are only exemplary and that the values in this table, as well as the values that can be used in similar tables related to other types of data received by the Lma 120 VEC system other than The availability of CPU power are only exemplary and may vary as part of the design and implementation of the invention. Network 200 encompasses any communications network with the ability to carry video streams and related control data. For example, the network 200 may comprise a LAN, a WAN or the Internit. The 3oJ VC system encompasses any computer system with the ability to receive a video stream through a network and decode the received video stream for presentation to an illusionary; (b) generating data with respect to (i) the conditions in the network through which the video stream is received and (ii) the recirs available within the 300 VC system to decode the video stream to be received; and (c) transmit the collected data to the computer system that transmits the video stream, which will be received by the 300 VC system. The 300 VC system may comprise a computer code to carry out the above functions.
In one embodiment of the invention, the 300 VC system comprises a video reception and decoding system | 310 ("VRD") and a condition reporting system ("CR") 320. The 310 VRD system encompasses any computer system with the ability to receive video streams through a network and decode the received video streams for presentation to the user. For example, the 310 VRD system may comprise any client program for video streams for example, RealOne ™ Player from RealNetworks, Inc. or Windows Media Player ™ from Microsoft Corporation. The 320 | CR system covers any computer system with the ability to gather data with respect to the conditions in the network through which the video stream and the resources available within the 300 VC system are received to decode the video stream to be received and transmit the collected data to the computer system that transmits the video stream, which will be received by the 300 VC system. The 320 CR system may comprise a computer code for gathering data with respect to the bearings in a network, as well as the data with respect to the resources available within a computer system in accordance with any known method or technique. The types of data collected by the system 320 CR with respect to the conditions of the network may include, for example, measurements related to the reception through the network of the vidio stream to be received, including for example, the measurements that represent the packet loss, the bytes transmitted / received and the bit error ratio associated with a video stream EI being received through the network. The types of data gathered by the 320 CR system with respect to the resources available within the 300 VC system for decoding the received video stream include, for example, measurements representing the memory and energy available in the CPU to decode the current of the current. video received. In addition, the 320 CR system may comprise a computer code to carry out the function of transmitting the collected data to the computer system transmitting the video stream, which will be received by the 300 VC system. For example, the 320 CR system may comprise a computer code, which when executed, causes the 320 CR system to transmit the collected data as specific application data in RTCP packets that are sent to the computer system transmitting the video stream to be received by the 300 VC system. The term "computer system" is used here broadly and encompasses equipment and computer programs or only programs, for example, each of the 110 VET system and the 120 VEC system may comprise a computer code that is located on the same computer of the 100 VS system. Alternatively, each of the 110 VET system and the 120 VEC system may be implemented in a different computer equipment.positive, then, the operations represented in the blocks 1100, 1200 and 1300 are performed. As represented in block 110, the stored values are retrieved for one or more parameters in accordance with which the video stream is encoded. . For example, the 110 VET system can retrieve values for each or more of the parameters from the storage location associated with each operation. Then, the source data is encoded in a video stream in accordance with the values retrieved for one or more parameters, as represented in block 1200. For example, the 110 VET system can encode the source data according to an algorithm of video compression known, for example, MPEG or H.263, in accordance with the values retrieved for one or more parameters previously described, for example, frame resolution or frame rate Afterwards, the encoded video stream is transmitted, as represented in block 1300. For example, the 110 VET system can transmit the coded video stream through the network 200 to the 300 VC system. Processing then returns to operations represented in block 1050.
As shown in Figure 3, when the resulting determination of the operations represented by block 1050 is positive, then in addition to the operations represented in blocks 1100, 1200 and 1300, the operations represented in blocks 1400 are also carried out. , 1500 and 1600. The operations represented in blocks 1400, 1500 and 1600 can be carried out concurrently and independently of the operations represented in blocks 1100, 1200 and 1300. As shown in block 1400, a determination of whether the data was received from the system 300 with respect to the conditions in the network 200 or the system 300VC. For example, the 120 VEC system of the 100 VS system can examine the RTCP packets received from the 300 VC system over the established CP / UDP R connection to determine if the data was received from the 300 VC system with respect to the conditions in the network I 200 or the conditions in the 300 VC system with respect to its ability to decode the video stream in the specific application portion of the RTCP packets received from the 300 VC system. When the resulting determination of the operations represented in block 1400 is negative, then the process returns to the operations represented in block 1050. When the determination resulting from the operations represented in block 1400 is positive, then the process continues with operations represented by block 1500, where the values for one or more parameters corresponding to the received data are determined. For example, the 120 VEC system can compare the data received from the 300 VC system with a table that specifies the predefined ranges for the type of data received and the corresponding values for each or more parameters for each predefined range, as described above. in relation to Figure 2 | For example, when the data received from the 300 VC system represents a measurement of the power available in the CPU in the 300 VC system to decode the video current transmitted from the 100 VS system or the 300 VC system, then the 120 VEC system You can compare the data received from the 300 VC system with the table in Figure 2 to determine the pnedefined range that encompasses the data received and the one for the frame resolution parameter corresponding to this range. For example, when the data received from the 300 VC system indicated a measurement of 60% of the available power in the CPU in the 300 VC system to decode the video stream transmitted by the 100 VS system or the 300 VC system, then the system 120 VEC will determine that the appropriate value is 352 x 288 for the frame resolution parameter corresponding to the data received. Similarly, the 120 VEC system can determine the values of each or more parameters that correspond to the data received from the 300 VC system. Then, as represented in block 1600, the values of one or more parameters are modified, when necessary. For example, the 120 VEC system can compare the values determined for each or more parameters, from the operations represented in block 1500, with the stored values for each or more parameters. When any of the deferred values differs from the stored values for a parameter, the 120 VEC system stores the determined value in the storage area associated with the parameter. The processing then returns to the operations represented in block 1050. In a concurrent manner, the 100 VS system encodes and transmits a video stream, the 300 VC system receives the video stream through the network 200 and decodes it for presentation to the user who operates stema 300 VC. As shown in Figure 4, first, communications are established with the 100 VS system, as represented in block 2000. For example, similar to the operations represented in block 1000 of Figure 3, here the 300 VC system will communicate with the VS 100 system to establish an RTP / UDP connection on which the coded video can be received from the 300 VS system and an RTCP / UDP connection on which the diagnostic information can be transmitted to the 100 VS system. The 310 VRD system then begins and continues the process of receiving and decoding the video stream sent from the 100 VS system. While the 310 VRD system in the process of receiving and decoding, the 320 CR system continuously performs the operations represented in blocks 2050, 2100, J and 2200 as shown in Figure 4. Once the process begins decoding of the video stream is received from the 100 VS system, the 320 CR system begins to monitor the process, as represented in block 2050, when making a determination whether the reception and decoding process will continue in the 310 VRD system. When the determination is negative, the processing in the 320 CR system is terminated. When the determination is positive, the processing continues with the rej operations presented by block 2100, where the data is gathered with respect to the conditions in network 200 and the resources available in the 200 VC system to decode the video stream. For example, with respect to the conditions in network 200, the system. ' 300 CR can employ known techniques to obtain certain data, which include for example, measurements that represent (a) packet loss related to the delivery of a video stream from the 100 VS system or the 300 VC system through of the 200 network, (b) the number of bytes transmitted by the 100 VS system and the number of bytes received by the 300 VC system associated with the delivery of the video stream from the 100 VS system to the 300 VC system through the 200 network; (c) the bit error ratio associated with the delivery of the video stream from the system 100 VS to the 300 VC system through the network 200. Also, with respect to the resources available in the Islstema 200 VC to decode the current of video, the CR system can employ known techniques to obtain data including, for example, measurements representing the available memory or the available power in the 300 VC system CPU to decode the video stream to be received from the system 100 VS. It should be noted that the memory and the available power in the CPU can fluctuate, since some resources are used and released for other purposes in the 300 VC system, such as other application programs that are opened or closed in the 300 VC system . Also, it should be noted that the data described above (eg packet loss, transmitted / received bytes, bit error ratio, available memory, available power in the CPU) can be measured in any known way, provided that the measurement used by the 320 CR system is the same standard used by the 120 VEC system (for example, the energy available in the CPU represented as a percentage of the total energy in the CPU by the 320 CR system as well as the 120 VEC system, as it is shown inThen, the collected data is transmitted to the 100 VS system, as shown in block 2200. For example, the 320 CR system can transmit the gathered data with respect to the conditions in the rid 200 and the resources available in the 200 VC system. to decode the video stream as specific application data of RTCP packets that are transmitted back to the 100 VC system over the established RTCP / UDP connection. The processing then continues with the operations of block 2050. Consequently, during the process in which the system 100VS encodes a video stream and transmits the coded stream to the 200 VC system, the 200 VC system can collect data continuously with respect to the conditions in the 200 network and in the 200 VC system and send this data to the 100 VS system for use when adjusting the encoding of the video stream. In this way, as the congestion increases in the network 200 or as the resources in the 200 VC system decrease in order to decode the received video stream, the data received in the 100 VS system may cause them to be reduced, for example, the current frame resolution | video to be encoded. Conversely, as congestion in network 200 is improved or related resources increase! for the video decoding of the received current in the 300 VC system, then the data received in the system 100 VS can cause them to increase, for example, the frame resolution of the video stream to be encoded. While the invention has been described and illustrated in connection with the preferred embodiments, many modifications and variations will be apparent to those skilled in the art, which may be carried out without departing from the spirit and scope of the invention and thus the invention. it is not limited to the specific details of the methodology or construction set forth above, since such variations and modifications are intended to be within the scope of the invention.