Video codec system with real-time complexity adaptation and region-of-interest coding
First Claim
1. A method for adapting the number of encoded bits produced by a codec to a system target bit-rate, comprising:
- determining if the system target bit-rate is such that bits-per-macroblock is less than a predetermined number, if not, setting the frequency at which intra-coded frames are sent to a first predetermined frequency range, allocating bits between intra-coded frames and inter-coded frames according to a first predetermined factor, and controlling quantizer step sizes for the intra-coded and inter-coded frames, if so, setting the frequency at which intra-coded frames are sent to a second predetermined frequency range that is lower than the first predetermined frequency range, unless there is motion in more than a predetermined percentage of the macroblocks, in which case the sending frequency of the intra-coded frames is set to the first predetermined frequency range, and setting to zero transform coefficients having a zig-zag index greater than or equal to a preset number in select intra-coded frame transform coefficient blocks.
2 Assignments
0 Petitions
Accused Products
Abstract
In a video conference system in which multiple video codecs are simultaneously operating to transmit video, audio and other data between participants in real-time, sharing the system'"'"'s available resources, this invention provides a way for each codec to adapt to changing network load conditions caused by, for example, participants (and hence codecs) joining/leaving the conference (system). To support video in this type of dynamic environment, the codec is designed for complexity and distortion control and is able to make intelligent tradeoffs between complexity, rate, and distortion. For complexity control, the codec monitors the available computational resources of the system during run-time and adapts its encoding/decoding algorithms to best match the complexity measurements. For distortion control, the codec overcomes the limitations of poor quality video at low bit-rates and allows the user to improve the quality of the video in select regions-of-interest.
-
Citations
19 Claims
-
1. A method for adapting the number of encoded bits produced by a codec to a system target bit-rate, comprising:
-
determining if the system target bit-rate is such that bits-per-macroblock is less than a predetermined number, if not, setting the frequency at which intra-coded frames are sent to a first predetermined frequency range, allocating bits between intra-coded frames and inter-coded frames according to a first predetermined factor, and controlling quantizer step sizes for the intra-coded and inter-coded frames, if so, setting the frequency at which intra-coded frames are sent to a second predetermined frequency range that is lower than the first predetermined frequency range, unless there is motion in more than a predetermined percentage of the macroblocks, in which case the sending frequency of the intra-coded frames is set to the first predetermined frequency range, and setting to zero transform coefficients having a zig-zag index greater than or equal to a preset number in select intra-coded frame transform coefficient blocks. - View Dependent Claims (2, 3, 4)
-
-
5. A codec, comprising:
-
an encoder that includes a first plurality of variable parameters including x-search window, y-search window, skip mode protection, half-pel subsample factor, full-pel subsample factor, use half-pel, transform truncation, and motion estimation method for specifying a plurality of different settings at which a coding algorithm applied to uncoded video data can operate; and
a decoder that includes a second plurality of variable parameters including transform algorithm, chroma skipping, and frame display skipping for specifying a plurality of different settings at which a decoding algorithm applied to coded video data can operate;
wherein the codec is configured such that, during operation, at least one of the coding algorithm and decoding algorithm is able to dynamically change its operating setting according to available computational resources in response to actual complexity measurements performed at run-time. - View Dependent Claims (6, 7)
-
-
8. An encoder, comprising:
-
a plurality of variable parameters including x-search window, y-search window, skip mode protection, half-pel subsample factor, full-pel subsample factor, use half-pel, transform truncation, and motion estimation method for specifying a plurality of different settings at which a coding algorithm applied to uncoded video data can operate;
wherein the encoder is configured such that, during operation, its coding algorithm is able to dynamically change its operating setting according to available computational resources in response to actual complexity measurements performed at run-time.
-
-
9. A decoder, comprising:
-
a decoder that includes a plurality of variable parameters including DCT algorithm, chroma skipping, and frame display skipping for specifying a plurality of different settings at which a decoding algorithm applied to coded video data can operate;
wherein the decoder is configured such that, during operation, its decoding algorithm is able to dynamically change its operating setting according to available computational resources in response to actual complexity measurements performed at run-time.
-
-
10. A video conferencing system, comprising:
a plurality of codecs configured to share the system'"'"'s computational resources, each codec comprising an encoder that includes an associated set of parameters including x-search window, y-search window, skip mode protection, half-pel subsample factor, full-pel subsample factor, use half-pel, transform truncation, and motion estimation method for specifying a plurality of different settings at which an associated coding algorithm applied to uncoded video data can operate, and a decoder that includes an associated set of parameters including DCT algorithm, chroma skipping, and frame display skipping for specifying a plurality of different settings at which an associated decoding algorithm applied to coded video data can operate, wherein each of the codecs is configured such that its algorithms in use dynamically adapt their operating settings during operation according to the system'"'"'s available computational resources in response to actual complexity measurements performed at run-time.
-
11. In an arrangement comprising a plurality of clients and at least one server, a device configured to respond to a particular client for which a region-of-interest is identified in a video to be delivered to that client, the device comprising:
-
a resource-allocation module configured to assign more bits to coding video data in the region-of-interest, and to assign less bits to coding video data outside of the region-of-interest by setting a quantizer step size for the video data outside of the region-of-interest to a value that increases as the distance from the center of the region-of-interest increases;
a scalable complexity module configured to process the region-of-interest video data before processing video data outside of the region-of-interest; and
a transcoding module configured to transcode the video for that client in accordance with that client'"'"'s display properties. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A machine-readable medium embodying a program of instructions for directing a codec to adapt the number of encoded bits produced by the codec to a system target bit-rate, the program of instructions comprising:
-
(a) instructions for determining if the system target bit-rate is such that bits-per-macroblock is less than a predetermined number;
(b) instructions for setting the frequency at which intra-coded frames are sent to a first predetermined frequency range;
(c) instructions for allocating bits between intra-coded frames and inter-coded frames according to a first predetermined factor;
(d) instructions for controlling quantizer step sizes for the intra-coded and inter-coded frames;
(e) instructions for setting the frequency at which intra-coded frames are sent to a second predetermined frequency range that is lower than the first predetermined frequency range, unless there is motion in more than a predetermined percentage of the macroblocks, in which case the sending frequency of the intra-coded frames is set to the first predetermined frequency range; and
(f) instructions for setting to zero transform coefficients having a zig-zag index greater than or equal to a preset number in select intra-coded frame transform coefficient blocks. wherein instructions (b), (c) and (d) are executed only if it is determined that the system target bit-rate is such that bits-per-macroblock is not less than a predetermined number, and wherein instructions (e) and (f) are executed only if it is determined that the system target bit-rate is such that bits-per-macroblock is less than a predetermined number. - View Dependent Claims (17, 18, 19)
-
Specification