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 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;
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, and provide said current compression vector to said compression engine.
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.
11 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 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; 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, and provide said current compression vector to said compression engine. - 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 comprising the steps of:
-
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 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. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
Specification