Method and apparatus for adaptively compressing streaming video
First Claim
1. An apparatus for adaptively compressing a video stream comprising:
- a variable compression rate compression engine configured to compress incoming uncompressed image data blocks of a video stream, where said video stream includes images having different entropy, using a compression vector selected from a set of predetermined compression vectors to produce compressed image data blocks;
a data packager configured to receive said compressed image data blocks from said compression engine and to package said compressed image data blocks into data packets;
a packet buffer configured to receive said data packets from said data packager, store said data packets, release said data packets in response to data packet release signals received from a packet servo configured to release packets from said packet buffer at a constant rate to achieve a desired transport data rate;
said packet delay controller being configured to receive a desired transport data rate from a user interface, to determine a delay time between said data packets corresponding to said transport data rate, and to provide said delay time to said packet servo;
said packet servo being configured to receive said delay time from said packet delay controller, and to send said packet release signals to said packet buffer according to said delay time;
a compression controller configured to maintain a buffer level count indicating a level of said data packets in said packet buffer, to determine a current compression vector from said buffer level count, to receive a maximum compression vector, determine if said current compression vector is greater than said maximum compression vector, and;
if said current compression vector is greater than said maximum compression vector, provide said maximum compression vector to said compression engine and cause an additional packet that may accrue to be sent in an unused frame interval, andif said current compression vector is less than or equal to said maximum compression vector, provide said current compression vector to said compression engine that automatically adapts to changing entropy within said images of said video stream based at least in part on said desired transport data rate.
1 Assignment
0 Petitions
Accused Products
Abstract
The present invention is a method and apparatus for adaptively compressing and transmitting streaming video, preferably implemented in hardware as part of a codec, that adaptively applies a variable rate of compression to images in a video stream to optimize the quality attainable for a given transport bandwidth. In one or more embodiments, image frames from the video stream are divided into blocks, and a variable compression ratio compression engine compresses the blocks for transmission over a network. Depending on their compressed sizes, one or more of the compressed blocks are packaged into fixed size data packets for transmission over a network. The data packets are fed into a packet buffer. A packet servo releases packets from the buffer to achieve a desired transport data rate. The amount of compression applied by the compression engine is controlled based on the number of packets in the buffer. In one or more embodiments, a plurality of indexed compression vectors are predefined for the compression engine that provide increasing amounts of compression. In one or more embodiments, the index of the compression vector used by the compression engine is incremented when the buffer level of the packet buffer increases, and decremented when the buffer level decreases. In this manner the compression applied by the compression engine automatically adapts to changing entropy within the images of the video stream to optimize the video quality for a given transport data rate.
-
Citations
20 Claims
-
1. An apparatus for adaptively compressing a video stream comprising:
-
a variable compression rate compression engine configured to compress incoming uncompressed image data blocks of a video stream, where said video stream includes images having different entropy, using a compression vector selected from a set of predetermined compression vectors to produce compressed image data blocks; a data packager configured to receive said compressed image data blocks from said compression engine and to package said compressed image data blocks into data packets; a packet buffer configured to receive said data packets from said data packager, store said data packets, release said data packets in response to data packet release signals received from a packet servo configured to release packets from said packet buffer at a constant rate to achieve a desired transport data rate; said packet delay controller being configured to receive a desired transport data rate from a user interface, to determine a delay time between said data packets corresponding to said transport data rate, and to provide said delay time to said packet servo; said packet servo being configured to receive said delay time from said packet delay controller, and to send said packet release signals to said packet buffer according to said delay time; a compression controller configured to maintain a buffer level count indicating a level of said data packets in said packet buffer, to determine a current compression vector from said buffer level count, to receive a maximum compression vector, determine if said current compression vector is greater than said maximum compression vector, and; if said current compression vector is greater than said maximum compression vector, provide said maximum compression vector to said compression engine and cause an additional packet that may accrue to be sent in an unused frame interval, and if said current compression vector is less than or equal to said maximum compression vector, provide said current compression vector to said compression engine that automatically adapts to changing entropy within said images of said video stream based at least in part on said desired transport data rate. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method for adaptively compressing a video stream comprising a series of image data blocks by a video encoding apparatus, where said video stream includes images having different entropy, the method comprising:
-
compressing each of said data blocks using a current compression vector selected from a set of predetermined compression vectors to produce compressed data blocks; packaging said compressed data blocks into a plurality of data packets; storing said data packets in a packet buffer; determining a packet delay time from a transport data rate; releasing, at a desired transport rate, said data packets from said packet buffer at intervals based on said packet delay time; maintaining a buffer level count indicating a current level of data packets in said packet buffer; determining said current compression vector from said current buffer level count; accessing a maximum compression vector; determining if said current compression vector is greater than said maximum compression vector; if said current compression vector is greater than said maximum compression vector, performing data packet compression using said maximum compression vector and causing an additional packet that may accrue to be sent in an unused frame interval, and if said current compression vector is less than or equal to said maximum compression vector, performing data packet compression using said using said current compression. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
Specification