The present invention relates in general to video encoding and decoding.
An increasing number of applications today make use of digital video for various purposes including, for example, remote business meetings via video conferencing, high definition video entertainment, video advertisements, and sharing of user-generated videos. As technology is evolving, people have higher expectations for video quality and expect high resolution video with smooth playback at a high frame rate.
There can be many factors to consider when selecting a video coder for viewing digital video. Some applications may require excellent video quality where others may need to comply with various constraints including, for example, bandwidth or storage requirements. To permit higher quality transmission of video while limiting bandwidth consumption, a number of video compression schemes are noted including proprietary formats such as VPx (promulgated by On2 Technologies, Inc. of Clifton Park, N.Y.), H.264 standard promulgated by ITU-T Video Coding Experts Group (VCEG) and the ISO/IEC Moving Picture Experts Group (MPEG), including present and future versions thereof. H.264 is also known as MPEG-4 Part 10 or MPEG-4 AVC (formally, ISO/IEC 14496-10).
Modern video coding methods adjust certain compression parameters at a level of granularity that is smaller than a whole frame. For example, some compression schemes adjust the type or strength of the loop filter applied to macroblock or block boundaries to improve video quality shown to the viewer. Further, for example, a different quantization level can be applied to each macroblock in a frame. In this manner, macroblocks with important information can be transmitted at a high bit rate whereas macroblocks with less important information can be transmitted at a low bit rate.
Disclosed herein are embodiments of, methods for encoding or decoding video information.
One aspect of the disclosed embodiments is a method for decoding compressed video information including a plurality of frames. Each frame has a plurality of blocks. The method includes reading, from the video information, a segment map associating at least some of the plurality of blocks in a first frame of the plurality of frames with at least one segment identifier and reading, from the video information, a current block to be decoded by a decoder. The method also includes reading, from the segment map, a segment identifier that is associated with the current block and reading, from the video information, at least one segment parameter associated with the segment identifier that is associated with the current block. Further, the method includes decoding the current block using the at least one segment parameter associated with the segment identifier that is associated with the current block.
Another aspect of the disclosed embodiments is a method for decoding a stream of encoded video information including a plurality of frames. Each frame has a plurality of blocks. The method includes, for at least a first frame, reading from the video information a segment map associating at least some of the plurality of blocks in the first frame with at least one segment identifier; and reading, from the video information, a current block of the first frame to be decoded by a decoder. The method also includes reading, from the segment map, a segment identifier associated with the current block, reading, from the video information, at least one segment parameter associated with the segment identifier that is associated with the current block and decoding the current block using the at least one segment parameter associated with the segment identifier that is associated with the current block. Further, the method includes for a second frame, decoding a block in the second frame corresponding to the current block in the first frame using the segment identifier that is associated with the current block.
Another aspect of the disclosed embodiments is a method for decoding a stream of encoded video information including a plurality of frames. Each frame has a plurality of blocks. The method includes for at least a first frame, reading from the video information a segment map associating at least some of the plurality of blocks in the first frame with at least one segment identifier, reading, from the video information, a current block of the first frame to be decoded by a decoder; and reading, from the segment map, a segment identifier associated with the current block. The method also includes reading, from the video information, at least one segment parameter associated with the segment identifier that is associated with the current block, and decoding the current block using the at least one segment parameter associated with the segment identifier that is associated with the current block. Further, the method includes for a second frame, decoding a block in the second frame corresponding to the current block in the first frame using the segment identifier that is associated with the current block.
These and other embodiments will be described in additional detail hereafter.
The description herein makes reference to the accompanying drawings wherein like reference numerals refer to like parts throughout the several views, and wherein:
Video compression usually refers to reducing the quantity of data that represents a video signal by permanently eliminating certain redundant information in the video signal. The compression may be needed to comply with various constraints including, for example, bandwidth or storage requirements. Examples of such compression standards include MPEG and H.264.
Block-based video compression operates on, for example, fixed-shaped groups of neighboring pixels, often called a macroblock. For example, the H.264 standard specifies macroblocks of 16×16 pixels. In general, each frame of video can be divided into macroblocks, where each macroblock consists of a plurality of smaller-sized blocks. These pixel groups within the macroblocks and blocks are compared with either data found in the current frame or in other frames in order to formulate prediction data and error signals.
The error signals for each block are then transformed using, for example, a discrete cosine transform (DCT). The resulting transform coefficients for each block are then quantized, and the quantized coefficients are then encoded according to an encoding scheme such as context-adaptive binary arithmetic coding (CABAC).
The degree to which the transform coefficients are quantized referred to as the quantization level, affects the number of bits used to represent the image data as well as the quality of the resulting decoded image. Generally, when the quantization level is set to a high value, more coefficients are set to 0. This results in higher compression but also deteriorates the quality of the image. Conversely, when the quantization level is set to a low value, fewer coefficients are set to 0. This results in improved image quality but less compression.
Since visual quality of the video can depend on how the quantization level is distributed across frames in a video sequence, it is useful to control the quantization level across each frame. Some current techniques apply a uniform quantization level across each frame. However, these techniques do not allow for applying a lower quantization level to parts of a frame that are of more visual importance, such as a human face. Similarly, these uniform quantization level techniques also do not allow for applying a higher quantization level to parts of a frame that are of less visual importance, such as a background region.
To overcome these difficulties, it would be desirable to efficiently select the quantization level for each macroblock without increases in overhead and computational complexity of the encoder/decoder.
Block artifacts manifest as discontinuities between adjacent blocks. Such discontinuities are visually disturbing and also reduce the effectiveness of a reconstructed frame as a predictor for subsequent frames.
To remove these discontinuities, loop filtering can be applied to reconstructed frames during a reconstruction path, which is discussed in more detail below. The choice of loop filter and the strength of the loop filter can have a significant effect on image quality. A filter that is too strong may cause blurring and loss of detail. A filter that is too weak may not adequately suppress discontinuities between adjacent blocks.
As such, described herein are embodiments of an efficient adaptive segmentation scheme for efficiently transmitting a segmentation map and a set of parameters, such as a quantization level and loop filter type and/or strength, to be applied to each segment in the segmentation map.
Although the description of embodiments of the adaptive segmentation innovations are described in the context of the VP8 video coding format, alternative embodiments of the present invention can be implemented in the context of other video coding algorithms.
Referring to
Next, still referring to
The reconstruction path in
Referring to
When compressed bitstream 26 is presented for decoding, the data elements can be entropy decoded by entropy decoding stage 25 to produce a set of quantized coefficients. Dequantization stage 27 dequantizes and inverse transform stage 29 inverse transforms the coefficients to produce a derivative residual that is identical to that created by the reconstruction stage in encoder 14. Using header information decoded from the compressed bitstream 26, at intra/inter prediction stage 23, decoder 21 creates the same prediction macroblock as was created in encoder 14. At the reconstruction stage 33, the prediction macroblock can be added to the derivative residual to create a reconstructed macroblock. The loop filter 34 can be applied to the reconstructed macroblock to reduce blocking artifacts. A deblocking filter 33 can be applied to the reconstructed macroblock to further reduce blocking distortion and the result can be outputted to output video stream 35.
Referring to
Segmentation map 100 can be useful when encoder 14 is coding frames that include image data having foreground and background imagery where the image data in the foreground varies more from frame to frame than the background imagery. A sequence of frames could include the faces of three people having a conversation in front of a house. The three faces would be an example of foreground imagery and the house would be an example of background imagery. Since video quality can be more important at foreground segments 112, 114 and 116, rather than at background segment 118, a lower quantization level and a better loop filter type and/or strength can be applied to foreground segments 112, 114 and 116.
Referring to
Segmentation map 200 can be useful when encoder 14 is coding a sequence of images where there is a zoom-in. Since video quality can be more important at body segment 212, rather than at border segment 214, lower quantization level and a better loop filter type and/or strength can be applied to body segment 212.
The choice to enable/disable segmentation (i.e. segmentation condition) and the definition of the segmentation map may be decided by the encoder, passed in by an external application or specified by a user. As one example, a video conferencing application may pass in a map to define a segment of where a person's head is located.
If the current frame is not a key frame or if the current frame is a key frame and encoder 14 has reset the parameters and segment map, encoder 14 then determines if segmentation is enabled at step 308. The bitstream header for each frame includes a single bit that enables or disables segmentation. However any suitable flag, data structure or other data record can be used in lieu of a bit. If segmentation is disabled, encoder 14 can apply a default quantization parameter at step 310 and a default loop filter strength parameter at step 312 to the whole frame.
Segmentation parameters may be, for example, a quantization level, a loop filter type, a loop filter strength, a reference frame type or a selection of a sub-pixel interpolation filter. Other segmentation parameters are also available.
As one example, one of the segment parameters may be a reference frame type. The reference frame type may have values indicative one or more previous frames, future frames or some combination thereof that have already been encoded and reconstructed. Accordingly, reference frame type may include, for example, a last frame, a golden frame or an alternate reference frame. The last frame can be the previously encoded frame before the current frame. The golden frame can be a past frame chosen arbitrarily from the distant past to use as a predictor for subsequent frames. The alternate reference frame may include any frame that is not the last frame or the golden frame. For example, the alternate reference can be a past frame, a future frame, or a constructed reference frame. Further, for example, the constructed reference frame may be the reference frame as disclosed in patent application titled “System and Method for Video Encoding Using Constructed Reference Frame” that is assigned to the assignee of the present invention, is filed concurrently herewith and which is hereby incorporated by reference in its entirety.
Encoder 14 and decoder 21 can then apply selective updates to those macroblocks that correspond to a given segment id in one or more reference frames as indicated by the segment parameter. In this way segmentation can be used as a method for updating a part of one or more of the reference frames, for example the background, using information from the current frame, without having to resort to a full update of the whole reference frame.
Although the embodiments of the adaptive segmentation innovations describe only two segmentation parameters (namely quantization level and loop filter strength), alternative embodiments of the present invention can be implemented using different segmentation parameters or any number of segmentation parameters.
If segmentation is disabled, encoder 14 can ignore any previously transmitted segmentation map as well as any previously transmitted segmentation parameters. This segmentation enable/disable binary switch or segmentation condition minimizes overhead and produces no more than one bit per frame for frames where segmentation provides little or no benefit.
Still referring to
If updates to the segmentation parameters have been indicated, encoder 14 can update the segmentation parameters. Specifically, in our exemplary embodiment, the quantization level parameter can be updated and at step 318 and the loop filter strength parameter can be updated at step 320. The updated segmentation parameter values may either be absolute values or alternatively, delta (i.e. incremental or decremental) values that are added to baseline values. If the parameter values are delta, a clamping mechanism may be implemented to prevent the segmentation parameter values from exceeding an allowable range.
Still referring to
If updates to segmentation map 100, 200 have been indicated, encoder 14 can update probabilities of occurrence of each of the segment identifier bits at step 326. After probabilities of occurrence have been updated, encoder 14 can update segment identifiers for macroblocks in the current frame at step 328. Referring back to
Exemplary pseudo code for implementing frame level header information to control the update of segmentation parameters and the segment map in adaptive segmentation is illustrated as follows:
Referring to the pseudo code above, the following is the list of variables and arrays and their significance to embodiments of the present invention:
SegmentationEnabled: segmentation enable/disable binary switch.
UpdateMbSegmentationMap: segmentation map update/no update binary switch.
UpdateMbSegmentationParams: segmentation parameters update/no update binary switch.
MbSegmentAbsOrDelta: binary switch to indicate whether values of the segmentation parameters in SegmentFeatureData array are delta values or absolute values.
SegmentFeatureData[i][j]: values of the segmentation parameters. (e.g. quantizer or loop filter strength)
MbSegmentTreeProbs[i]: Tree node probabilities (see
Referring to the pseudo code, the SegmentationEnabled variable can be written to the bitstream to indicate whether segmentation is enabled. If segmentation is not enabled, neither the segmentation parameters nor the segmentation map are updated and, as discussed previously, any previously transmitted segmentation parameters or segmentation map are ignored by encoder 14 and decoder 21. If however, segmentation is enabled, the UpdateMbSegmentationParams bit can be written to indicate whether the segmentation parameters should be updated and UpdateMbSegmentationMap can be written to indicate whether the segment map should be updated. Any suitable flag, data structure or other data record can also be used in lieu of a bit.
If UpdateMbSegmentationParams is true, the MbSegmentAbsOrDelta bit can be written to the bitstream to indicate whether the segmentation parameters are delta values or absolute values. Then, for each of the two segment parameters (i.e., quantizer value and loop filter strength) for each of the four segments the data in SegmentFeatureData[i][j] can be written to the bitstream with its corresponding sign bit (if any). Any suitable flag, data structure or other data record can also be used in lieu of a bit.
If UpdateMbSegmentationMap is true, encoder 14 determines whether the data in MbSegmentTreeProbs[i] can be updated by testing whether any of the values in MbSegmentTreeProbs[i] array is 255. If one of the values in the array is 255, the particular node probability should not be updated. Otherwise, each node probability in MbSegmentTreeProbs[i] can be written to the bitstream.
The cost of updating the node probabilities can be incurred at the frame level and can be minimal. Following the pseudo code above, the cost can be anywhere from 3-27 bits per frame depending on how many probabilities are being updated. At the low-cost end, 3 bits result when the conditions indicate that none of the node probabilities should be updated. Accordingly, encoder 14 can perform a Writebit(0) operation three times. At the high-cost end, 27 bits result when the conditions indicate that all three of the node probabilities should be updated. Accordingly, encoder 14 can perform a Writebit(1) operation three times and write the three probability values from MbSegmentTreeProbs[i] at a cost of 8 bits each.
Alternatively, in one embodiment if UpdateMbSegmentationMap is true, all three probabilities from MbSegmentTreeProbs[i] at a cost of 8 bits each are always written to the bitstream at a cost of 24 bits. Exemplary pseudo code illustrating this embodiment is illustrated as follows:
Each node 400, 402 and 404 has an associated probability that defines, for example, the likelihood that the left branch can be taken. The left branch, as illustrated in
Probability 2 at node 402 represents the likelihood that value can be equal to 0. In other words, probability 2 represents the likelihood that outcome 406 can occur because it has a value of binary 00, which is equal to 0. The formula 1—probability 2 can be used to calculate the likelihood that the right branch of node 402 can occur. In other words, 1—probability 2 represents the likelihood that outcome 408 can occur because it has a value of binary 01, which is not equal to 0.
Probability 3 at node 404 represents the likelihood that value can be equal to 2. In other words, probability 3 represents the likelihood that outcome 410 can occur because it has a value of binary 10, which is equal to 2. The formula 1—probability 3 can be used to calculate the likelihood that the right branch of node 404 can occur. In other words, 1—probability 3 represents the likelihood that outcome 412 can occur because it has a value of binary 11, which is not equal to 2.
Probability can be expressed, for example, as an integer in the range of 1-254 where 1 represents that it is least likely that the left branch of each node 400, 402 and 404 can occur and 254 represents that it is most likely that the left branch of each node 400, 402 and 404 can occur. Each probability reflects the number of macroblocks that have been assigned to each segment. Accordingly, if most macroblocks are assigned to segment 00, probability 1 and probability 2 can be high. The probability can also be expressed using different ranges or values and signify other meaning such as the likelihood that the right branch can be taken.
There are various types of coding schemes, such as arithmetic coding or Huffman coding. Since arithmetic coding translates the entire message sequence into one number whereas Huffman coding than translates each symbol of the message into a series of digits, arithmetic coding can be more efficient than Huffman coding. Accordingly, arithmetic coding can be used in the preferred embodiment of the invention. Other coding schemes, like Huffman coding, or combinations of coding schemes are used in alternative embodiments of the invention.
An arithmetic encoder can be used to encode at entropy encoding stage 24 (see
During coding, the real number used to represent the message sequence can be formulated based on what range each symbol falls in. As each symbol in the message is processed, the range can be narrowed to that portion allocated to the symbol. As the message becomes longer, the range needed to represent it becomes smaller, and the number of bits needed to specify that range grows. The more likely symbols (i.e. symbols that have a higher probability) reduce the range by less than the unlikely symbols (i.e. symbols that have a lower probability) and thus, add fewer bits to the message.
Referring back to
Then, encoder 14 determines whether segmentation is enabled at step 502. If segmentation is not enabled, a segment identifier is not encoded for the macroblock. If segmentation is enabled, encoder 14 determines whether the segmentation map is to be updated at step 504. If an update to the segmentation map has not been indicated, a new segment identifier is not encoded for the macroblock and the previous segment map can be used in coding.
If however, an update to the segmentation map has been indicated, a macroblock can be assigned a segment ID based on its position within the segment map. Accordingly, encoder 14 determines whether macroblock with identification number ID is to be mapped to segment 0 at step 506. If the macroblock with identification number ID is to be mapped to segment 0, encoder 14 encodes segment 0 (binary 00) for macroblock with identification number ID at step 508. If the macroblock with identification number ID is not to be mapped to segment 0, encoder 14 determines whether macroblock with identification number ID is to be mapped to segment 1 at step 510. If the macroblock with identification number ID is to be mapped to segment 1, encoder 14 encodes segment 1 (binary 01) for macroblock with identification number ID at step 512. If the macroblock with identification number ID is not to be mapped to segment 1, encoder 14 determines whether macroblock with identification number ID is to be mapped to segment 2 at step 514. If the macroblock with identification number ID is to be mapped to segment 2, encoder 14 encodes segment 2 (binary 10) for macroblock with identification number ID at step 516. If the macroblock with identification number ID is not to be mapped to segment 2, encoder 14 encodes segment 3 (binary 11) for macroblock with identification number ID at step 518.
Once the segment identifier has been encoded for the macroblock at step 508, 512, 516 or 518, encoder 14 determines at step 520 whether ID is less than NUM_OF_MBS, which represents the total number of macroblocks in the current frame. If ID is not less than the total number of macroblocks, no more segment identifiers need to be encoded for each macroblock in the current frame. Otherwise, if ID is less than NUM_OF_MBS, encoder 14 increases ID by 1 at step 522 and repeats the process until all macroblock segment identifiers have been encoded for the current frame.
Exemplary pseudo code for implementing the steps of the method in
Referring to the pseudo code above, for each macroblock in a frame, if segmentation is enabled and the segmentation map is being updated, a segment identifier is encoded using, for example, an EncodeBit(value, probability) function. By making two calls to the EncodeBit function in the encoder, the segment identifier is encoded for each macroblock. In each call to the EncodeBit function, the encoder codes an input bit “value” which is either 0 or 1 by using one of the three “probability” values as context for the coding process. The three probability values are designated as an array of three values called MbSegmentTreeProbs. The context provides guidance to the encoder as to the probability distribution of each segment identifier depending on how likely it is to appear in the input sequence.
The aforementioned exemplary pseudo code is an implementation that supports four segment identifiers. As stated previously, other numbers of segments can be supported and the pseudo code may be modified accordingly to represent the correct number of segments. Furthermore, the exemplary pseudo code is not intended to be limited to any particular programming language and implementation thereof. It can be appreciated that a variety of programming languages and implementations thereof may be used to implement the teachings of embodiments of the invention as described herein.
While the invention has been described in connection with certain embodiments, it is to be understood that the invention is not to be limited to the disclosed embodiments but, on the contrary, is intended to cover various modifications and equivalent arrangements included within the spirit and scope of the appended claims, which scope is to be accorded the broadest interpretation so as to encompass all such modifications and equivalent structures as is permitted under the law.
This application is a continuation of U.S. application Ser. No. 12/329,177, filed Dec. 5, 2008, which claims priority to U.S. provisional patent application No. 61/096,242, filed Sep. 11, 2008, both of which are incorporated herein by reference in their entireties.
Number | Name | Date | Kind |
---|---|---|---|
3825832 | Frei et al. | Jul 1974 | A |
4463372 | Bennett et al. | Jul 1984 | A |
4710810 | Koga | Dec 1987 | A |
4719642 | Lucas | Jan 1988 | A |
4729127 | Chan et al. | Mar 1988 | A |
4736446 | Reynolds et al. | Apr 1988 | A |
4816906 | Kummerfeldt et al. | Mar 1989 | A |
4868764 | Richards | Sep 1989 | A |
4891748 | Mann | Jan 1990 | A |
5068724 | Krause et al. | Nov 1991 | A |
5083214 | Knowles | Jan 1992 | A |
5091782 | Krause et al. | Feb 1992 | A |
5122873 | Golin | Jun 1992 | A |
5136371 | Savatier et al. | Aug 1992 | A |
5136376 | Yagasaki et al. | Aug 1992 | A |
5148269 | de Haan et al. | Sep 1992 | A |
5164819 | Music | Nov 1992 | A |
5231484 | Gonzales et al. | Jul 1993 | A |
5270812 | Richards | Dec 1993 | A |
5274442 | Murakami et al. | Dec 1993 | A |
5295201 | Yokohama | Mar 1994 | A |
5313306 | Kuban et al. | May 1994 | A |
5337086 | Fujinami | Aug 1994 | A |
5341440 | Earl et al. | Aug 1994 | A |
5351086 | Park | Sep 1994 | A |
5374958 | Yanagihara | Dec 1994 | A |
5398068 | Liu et al. | Mar 1995 | A |
5432870 | Schwartz | Jul 1995 | A |
5452104 | Lee | Sep 1995 | A |
5461423 | Tsukagoshi | Oct 1995 | A |
5463701 | Kantner, Jr. et al. | Oct 1995 | A |
5512952 | Iwamura | Apr 1996 | A |
5561475 | Jung | Oct 1996 | A |
5561477 | Polit | Oct 1996 | A |
5576767 | Lee et al. | Nov 1996 | A |
5589945 | Abecassis | Dec 1996 | A |
5596370 | Jung | Jan 1997 | A |
5659539 | Porter et al. | Aug 1997 | A |
5666461 | Igarashi et al. | Sep 1997 | A |
5686962 | Chung et al. | Nov 1997 | A |
5696869 | Abecassis | Dec 1997 | A |
5734744 | Wittenstein et al. | Mar 1998 | A |
5737020 | Hall et al. | Apr 1998 | A |
5748247 | Hu | May 1998 | A |
5767909 | Jung | Jun 1998 | A |
5768533 | Ran | Jun 1998 | A |
5774593 | Zick et al. | Jun 1998 | A |
5777680 | Kim | Jul 1998 | A |
5793647 | Hageniers et al. | Aug 1998 | A |
5818536 | Morris et al. | Oct 1998 | A |
5818969 | Astle | Oct 1998 | A |
5828370 | Moeller et al. | Oct 1998 | A |
5886742 | Hibi et al. | Mar 1999 | A |
5903264 | Moeller et al. | May 1999 | A |
5929940 | Jeannin | Jul 1999 | A |
5930379 | Rehg et al. | Jul 1999 | A |
5930493 | Ottesen et al. | Jul 1999 | A |
5963203 | Goldberg et al. | Oct 1999 | A |
5991447 | Eifrig et al. | Nov 1999 | A |
5999641 | Miller et al. | Dec 1999 | A |
5999655 | Kalker et al. | Dec 1999 | A |
6005980 | Eifrig et al. | Dec 1999 | A |
6011872 | Qian et al. | Jan 2000 | A |
6014706 | Cannon et al. | Jan 2000 | A |
6026183 | Talluri et al. | Feb 2000 | A |
6035059 | Kurosawa et al. | Mar 2000 | A |
6035060 | Chen et al. | Mar 2000 | A |
6035067 | Ponticos | Mar 2000 | A |
6041145 | Hayashi et al. | Mar 2000 | A |
6055330 | Eleftheriadis et al. | Apr 2000 | A |
6061397 | Ogura | May 2000 | A |
6075875 | Gu | Jun 2000 | A |
6084908 | Chiang et al. | Jul 2000 | A |
6108383 | Miller et al. | Aug 2000 | A |
6112234 | Leiper | Aug 2000 | A |
6115501 | Chun et al. | Sep 2000 | A |
6119154 | Weaver et al. | Sep 2000 | A |
6125144 | Matsumura et al. | Sep 2000 | A |
6141381 | Sugiyama | Oct 2000 | A |
6167164 | Lee | Dec 2000 | A |
6181822 | Miller et al. | Jan 2001 | B1 |
6185363 | Dimitrova et al. | Feb 2001 | B1 |
6188799 | Tan et al. | Feb 2001 | B1 |
6212234 | Andoh et al. | Apr 2001 | B1 |
6222174 | Tullis et al. | Apr 2001 | B1 |
6233017 | Chaddha | May 2001 | B1 |
6240135 | Kim | May 2001 | B1 |
6249613 | Crinon et al. | Jun 2001 | B1 |
6249614 | Kolesnik et al. | Jun 2001 | B1 |
6256423 | Krishnamurthy et al. | Jul 2001 | B1 |
6271890 | Tamir et al. | Aug 2001 | B1 |
6272179 | Kadono | Aug 2001 | B1 |
6275614 | Krishnamurthy et al. | Aug 2001 | B1 |
6289049 | Kim et al. | Sep 2001 | B1 |
6292837 | Miller et al. | Sep 2001 | B1 |
6327304 | Miller et al. | Dec 2001 | B1 |
6337917 | Onural et al. | Jan 2002 | B1 |
6359929 | Boon | Mar 2002 | B1 |
6370267 | Miller et al. | Apr 2002 | B1 |
6377709 | Guillotel | Apr 2002 | B1 |
6381277 | Chun et al. | Apr 2002 | B1 |
6400763 | Wee | Jun 2002 | B1 |
6414995 | Okumura et al. | Jul 2002 | B2 |
6418166 | Wu et al. | Jul 2002 | B1 |
6427028 | Donescu et al. | Jul 2002 | B1 |
6473463 | Agarwal | Oct 2002 | B2 |
6501860 | Charrier et al. | Dec 2002 | B1 |
6522784 | Zlotnick | Feb 2003 | B1 |
6526097 | Sethuraman et al. | Feb 2003 | B1 |
6529634 | Thyagarajan et al. | Mar 2003 | B1 |
6529638 | Westerman | Mar 2003 | B1 |
6560366 | Wilkins | May 2003 | B1 |
6570924 | Lynch et al. | May 2003 | B1 |
6661842 | Abousleman | Dec 2003 | B1 |
6661925 | Pianykh et al. | Dec 2003 | B1 |
6687303 | Ishihara | Feb 2004 | B1 |
6697061 | Wee et al. | Feb 2004 | B1 |
6707952 | Tan et al. | Mar 2004 | B1 |
6711211 | Lainema | Mar 2004 | B1 |
6735249 | Karczewicz et al. | May 2004 | B1 |
6754266 | Bahl et al. | Jun 2004 | B2 |
6757434 | Miled et al. | Jun 2004 | B2 |
6765964 | Conklin | Jul 2004 | B1 |
6826229 | Kawashima et al. | Nov 2004 | B2 |
6909749 | Yang et al. | Jun 2005 | B2 |
6934419 | Zlotnick | Aug 2005 | B2 |
6985526 | Bottreau et al. | Jan 2006 | B2 |
6985527 | Gunter et al. | Jan 2006 | B2 |
6987866 | Hu | Jan 2006 | B2 |
6996283 | Thyagarajan | Feb 2006 | B2 |
7010032 | Kikuchi et al. | Mar 2006 | B1 |
7027506 | Lee et al. | Apr 2006 | B2 |
7027654 | Ameres et al. | Apr 2006 | B1 |
7076113 | Le Dinh | Jul 2006 | B2 |
7085319 | Prakash | Aug 2006 | B2 |
7116831 | Mukerjee et al. | Oct 2006 | B2 |
7136534 | Thyagarajan et al. | Nov 2006 | B2 |
7143352 | Divakaran et al. | Nov 2006 | B2 |
7170937 | Zhou | Jan 2007 | B2 |
7226150 | Yoshimura et al. | Jun 2007 | B2 |
7227977 | Dotsenko | Jun 2007 | B1 |
7236524 | Sun et al. | Jun 2007 | B2 |
7263125 | Lainema | Aug 2007 | B2 |
7330509 | Lu et al. | Feb 2008 | B2 |
7499492 | Ameres et al. | Mar 2009 | B1 |
7599435 | Marpe et al. | Oct 2009 | B2 |
7606310 | Ameres et al. | Oct 2009 | B1 |
8116374 | Gordon et al. | Feb 2012 | B2 |
8155454 | Raveendran | Apr 2012 | B2 |
8170102 | Bhaskaran et al. | May 2012 | B2 |
8233676 | Ngan et al. | Jul 2012 | B2 |
8243797 | Lin et al. | Aug 2012 | B2 |
8503536 | Zuo et al. | Aug 2013 | B2 |
8594189 | Bankoski et al. | Nov 2013 | B1 |
8781004 | Bankoski et al. | Jul 2014 | B1 |
8891627 | Bankoski et al. | Nov 2014 | B1 |
20010022815 | Agarwal | Sep 2001 | A1 |
20010041015 | Chui | Nov 2001 | A1 |
20020012471 | Nayyar | Jan 2002 | A1 |
20020031272 | Bagni et al. | Mar 2002 | A1 |
20020034245 | Sethuraman, Sr. | Mar 2002 | A1 |
20020036705 | Lee et al. | Mar 2002 | A1 |
20020039441 | Klassen | Apr 2002 | A1 |
20020080871 | Fallon et al. | Jun 2002 | A1 |
20020136448 | Bortolussi et al. | Sep 2002 | A1 |
20020145616 | Doan | Oct 2002 | A1 |
20020168108 | Loui et al. | Nov 2002 | A1 |
20020168114 | Valente | Nov 2002 | A1 |
20030020260 | Maxisch | Jan 2003 | A1 |
20030039307 | Prakash et al. | Feb 2003 | A1 |
20030053685 | Lestideau | Mar 2003 | A1 |
20030081850 | Karczewicz et al. | May 2003 | A1 |
20030095598 | Lee et al. | May 2003 | A1 |
20030123545 | Prakash et al. | Jul 2003 | A1 |
20030152149 | Denolf | Aug 2003 | A1 |
20030161399 | Ali | Aug 2003 | A1 |
20030202594 | Lainema | Oct 2003 | A1 |
20040013308 | Jeon et al. | Jan 2004 | A1 |
20040028130 | May et al. | Feb 2004 | A1 |
20040120398 | Zhang et al. | Jun 2004 | A1 |
20040120400 | Linzer | Jun 2004 | A1 |
20040131117 | Sheraizin et al. | Jul 2004 | A1 |
20040156549 | Persiantsev | Aug 2004 | A1 |
20040179820 | Kashiwagi et al. | Sep 2004 | A1 |
20040208392 | Raveendran et al. | Oct 2004 | A1 |
20040228410 | Ameres et al. | Nov 2004 | A1 |
20040240555 | De With et al. | Dec 2004 | A1 |
20040240556 | Winger et al. | Dec 2004 | A1 |
20040252886 | Pan et al. | Dec 2004 | A1 |
20050013494 | Srinivasan et al. | Jan 2005 | A1 |
20050046702 | Katayama et al. | Mar 2005 | A1 |
20050111744 | Kupeev et al. | May 2005 | A1 |
20050147165 | Yoo et al. | Jul 2005 | A1 |
20050152456 | Orchard et al. | Jul 2005 | A1 |
20050169374 | Marpe et al. | Aug 2005 | A1 |
20050180506 | Wittebrood et al. | Aug 2005 | A1 |
20050206785 | Swan et al. | Sep 2005 | A1 |
20050232351 | Jung | Oct 2005 | A1 |
20050265447 | Park | Dec 2005 | A1 |
20050276497 | Chen et al. | Dec 2005 | A1 |
20060078049 | Bao et al. | Apr 2006 | A1 |
20060098737 | Sethuraman et al. | May 2006 | A1 |
20060114996 | Thoreau et al. | Jun 2006 | A1 |
20060126739 | Stoner | Jun 2006 | A1 |
20060155398 | Hoffberg et al. | Jul 2006 | A1 |
20060165163 | Burazerovic et al. | Jul 2006 | A1 |
20060215758 | Kawashima | Sep 2006 | A1 |
20060239345 | Taubman et al. | Oct 2006 | A1 |
20060257048 | Lin et al. | Nov 2006 | A1 |
20070025444 | Okada et al. | Feb 2007 | A1 |
20070064801 | Wang et al. | Mar 2007 | A1 |
20070076947 | Wang et al. | Apr 2007 | A1 |
20070110290 | Chang et al. | May 2007 | A1 |
20070115156 | Lim et al. | May 2007 | A1 |
20070140342 | Karczewicz et al. | Jun 2007 | A1 |
20070140346 | Chen et al. | Jun 2007 | A1 |
20070165958 | Picard | Jul 2007 | A1 |
20070171974 | Baik | Jul 2007 | A1 |
20070236513 | Hedenstroem et al. | Oct 2007 | A1 |
20080008398 | Tanaka et al. | Jan 2008 | A1 |
20080056347 | Chiu et al. | Mar 2008 | A1 |
20080063069 | Sekiguchi et al. | Mar 2008 | A1 |
20080151997 | Oguz | Jun 2008 | A1 |
20080152245 | El-Maleh et al. | Jun 2008 | A1 |
20080159408 | Degtyarenko | Jul 2008 | A1 |
20080170793 | Yamada et al. | Jul 2008 | A1 |
20080175475 | Sung | Jul 2008 | A1 |
20080199091 | Srinivasan et al. | Aug 2008 | A1 |
20080212678 | Booth et al. | Sep 2008 | A1 |
20080246884 | Chung | Oct 2008 | A1 |
20080260241 | Ye et al. | Oct 2008 | A1 |
20090034619 | Mukherjee et al. | Feb 2009 | A1 |
20090097543 | Pan et al. | Apr 2009 | A1 |
20090103617 | Au et al. | Apr 2009 | A1 |
20090161767 | Jang | Jun 2009 | A1 |
20090161938 | Shekhar et al. | Jun 2009 | A1 |
20090207915 | Yan et al. | Aug 2009 | A1 |
20090226044 | Ngan et al. | Sep 2009 | A1 |
20090262835 | Srinivasan et al. | Oct 2009 | A1 |
20090263000 | Shinagawa et al. | Oct 2009 | A1 |
20090278961 | Mohanty et al. | Nov 2009 | A1 |
20090296814 | Lin et al. | Dec 2009 | A1 |
20090322937 | Young et al. | Dec 2009 | A1 |
20090324121 | Bhagavathy et al. | Dec 2009 | A1 |
20100020879 | Pasquier et al. | Jan 2010 | A1 |
20100054344 | Puri et al. | Mar 2010 | A1 |
20100061444 | Wilkins et al. | Mar 2010 | A1 |
20100208799 | Park et al. | Aug 2010 | A1 |
20100208812 | Murakami et al. | Aug 2010 | A1 |
20100208827 | Divorra Escoda et al. | Aug 2010 | A1 |
20100246939 | Aisaka et al. | Sep 2010 | A1 |
20100272173 | Puri et al. | Oct 2010 | A1 |
20100303150 | Hsiung et al. | Dec 2010 | A1 |
20110007977 | Amonou et al. | Jan 2011 | A1 |
20110262001 | Bi et al. | Oct 2011 | A1 |
20120020407 | Liu et al. | Jan 2012 | A1 |
20130251279 | Park et al. | Sep 2013 | A1 |
20130266080 | Lu et al. | Oct 2013 | A1 |
Number | Date | Country |
---|---|---|
1351510 | Oct 2003 | EP |
2350515 | Nov 2000 | GB |
2371434 | Jul 2002 | GB |
2217088 | Aug 1990 | JP |
8280032 | Oct 1996 | JP |
11262018 | Sep 1999 | JP |
11289544 | Oct 1999 | JP |
11313332 | Nov 1999 | JP |
11513205 | Nov 1999 | JP |
2007-036888 | Feb 2007 | JP |
100213018 | Aug 1999 | KR |
200130916 | Apr 2001 | KR |
10-0664929 | Dec 2006 | KR |
515199 | Dec 2002 | TW |
WO0150770 | Jul 2001 | WO |
2002007164 | Jan 2002 | WO |
03041405 | Nov 2002 | WO |
WO03026315 | Mar 2003 | WO |
WO2006078115 | Jul 2006 | WO |
WO2007007257 | Jan 2007 | WO |
2008002491 | Jan 2008 | WO |
WO2008002491 | Jan 2008 | WO |
WO2008016605 | Feb 2008 | WO |
WO2008077119 | Jun 2008 | WO |
Entry |
---|
Sikora, T. et al., Shape-adaptive DCT for generic coding of video, Circuits and Systems for Video Technology, IEEE Transactions on vol. 5, Issue 1, p. 59-62, Feb. 1, 1995. |
Wiegand et al, “Overview of the H 264/AVC Video Coding Standard,” IEEE Transactions on Circuits and Systems for Video Technology, vol. 13, No. 7, pp. 568, 569, Jul. 1, 2003. |
PCT International Search Report and Written Opinion (dated Mar. 26, 2010); PCT/US2009/056486, filed Sep. 10, 2009. |
Sun Y et al, Asynchronous Rate Control for Multi-Object Videos, IEEE Transactions on Circuits and Systems for Video Technology, Aug. 1, 2005, pp. 1007-1018, vol. 15, No. 8 [retrieved from Internet on Jul. 19, 2011] <URL: http:/lieeexplore. ieee.org/stamp/stamp.jsp?tp=&arnumber=1490554>. |
Lee et al, Bit Allocation for MPEG-4 Video Coding with Spatio-Temporal Tradeoffs, Jun. 2003, pp. 488-502, [retrieved from Internet on Jul. 19, 2011] <URL:http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1207406>. |
Moschetti et al, Automatic Object Extraction and Dynamic Bitrate Allocation for Second Generation Video Coding, Multimedia and Expo, 2002. ICME '02 Proceedings. 2002 IEEE International Conference on Lausanne, Switzerland, Aug. 26, 2002, pp. 493-496, vol. 1,Piscataway, New Jersey, USA. |
Nunes P et al, Rate Control for Scenes with Multiple Arbitrarily Shaped Video Objects, ITG Fachberichte, Jan. 1, 1997, pp. 303-308, Berlin, Germany. |
“Series H: Audiovisual and Multimedia Systems; Infrastructure of audiovisual services—Coding of moving video; Advanced video coding for generic audiovisual services”. H.264. Version 1. International Telecommunication Union. Dated May, 2003. |
“Series H: Audiovisual and Multimedia Systems; Infrastructure of audiovisual services—Coding of moving video; Advanced video coding for generic audiovisual services”. H.264. Version 3. International Telecommunication Union. Dated Mar. 2005. |
“Overview; VP7 Data Format and Decoder”. Version 1.5. On2 Technologies, Inc. Dated Mar. 28, 2005. |
“Series H: Audiovisual and Multimedia Systems; Infrastructure of audiovisual services—Coding of moving video; Advanced video coding for generic audiovisual services”. H.264. Amendment 1: Support of additional colour spaces and removal of the High 4:4:4 Profile. International Telecommunication Union. Dated Jun. 2006. |
“VP6 Bitstream & Decoder Specification”. Version 1.02. On2 Technologies, Inc. Dated Aug. 17, 2006. |
“Series H: Audiovisual and Multimedia Systems; Infrastructure of audiovisual services—Coding of moving video”. H.264. Amendment 2: New profiles for professional applications. International Telecommunication Union. Dated Apr. 2007. |
“VP6 Bitstream & Decoder Specification”. Version 1.03. On2 Technologies, Inc. Dated Oct. 29, 2007. |
“Series H: Audiovisual and Multimedia Systems; Infrastructure of audiovisual services—Coding of moving video”. H.264. Advanced video coding for generic audiovisual services. Version 8. International Telecommunication Union. Dated Nov. 1, 2007. |
“Series H: Audiovisual and Multimedia Systems; Infrastructure of audiovisual services—Coding of moving video”. H.264. Advanced video coding for generic audiovisual services. International Telecommunication Union. Version 11. Dated Mar. 2009. |
“Series H: Audiovisual and Multimedia Systems; Infrastructure of audiovisual services—Coding of moving video”. H.264. Advanced video coding for generic audiovisual services. International Telecommunication Union. Version 12. Dated Mar. 2010. |
“Implementors' Guide; Series H: Audiovisual and Multimedia Systems; Coding of moving video: Implementors Guide for H.264: Advanced video coding for generic audiovisual services”. H.264. International Telecommunication Union. Version 12. Dated Jul. 30, 2010. |
“VP8 Data Format and Decoding Guide”. WebM Project. Google On2. Dated: Dec. 1, 2010. |
Bankoski et al. “VP8 Data Format and Decoding Guide; draft-bankoski-vp8-bitstream-02” Network Working Group. Dated May 18, 2011. |
Bankoski et al. “Technical Overview of VP8, An Open Source Video Codec for the Web”. Dated Jul. 11, 2011. |
Bankoski, J., Koleszar, J., Quillio, L., Salonen, J., Wilkins, P., and Y. Xu, “VP8 Data Format and Decoding Guide”, RFC 6386, Nov. 2011. |
Mozilla, “Introduction to Video Coding Part 1: Transform Coding”, Video Compression Overview, Mar. 2012, 171 pp. |
U.S. Appl. No. 11/932,870, Video Compression and Encoding Method, filed Oct. 31, 2007. |
ON2 Technologies Inc., White Paper TrueMotion VP7 Video Codec, Jan. 10, 2005, 13 pages, Document Version: 1.0, Clifton Park, New York. |
ON2 Technologies, Inc., White Paper On2's TrueMotion VP7 Video Codec, Jul. 11, 2008, 7 pages, Document Version: 1.0, Clifton Park, New York. |
Flexible Macroblock Ordering; Wikipedia; Jul. 15, 2008. |
Marcos Nieto, Luis Salgado, Narciso Garcia; Fast Mode Decision Based on Activity Segmentation in H.264/AVC Encoding; Grupo de Tratamiento de Imagenes—E.T.S. Ingenieros de Telecomunicacion, Universidad Politecnica de Madrid, Spain; Springer-Verlag Berlin Heidelberg 2006. |
Congxia Dai; Escoda, O.D.; Peng Yin; Xin Li; Gomila, C., “Geometry-Adaptive Block Partitioning for Intra Prediction in Image & Video Coding,” Image Processing, 2007. ICP 2007. IEEE International Conference on, vol. 6, no., pp. VI-85, VI-88, Sep. 16, 2007-Oct. 19, 2007. |
Papathanassiadis T., “Image Block Partitioning: A Compression Technique Suitable fo Parallel Processing”, Image Processing and Its Applications, 1992. International Conference on Maastricht, Netherlands, London, UK. Jan. 1, 1992. |
ISO/IEC: “Information Technology—Coding of audio-visual objects” Retrieved from the Internet: Http://kazus.ru/nuke/modules/downloads/pub/144/0/ISO-IEC-14496-2-2001. |
Pascal Fleury et al: “MPEG-4 video verification model: A solution for interactive multimedia applications.” Journal of Electronic Imaging, SPIE/IS&T; Engineering Information Inc.; vol. 7, Jul. 1, 1998, pp. 502-515. |
Bronshtein I N, et al., “Handbook of Mathematics—Passage”, 2004; pp. 194-195. |
ISR & Written Opinion , Re: Application # PCT/US2011/035720; dated Aug. 19, 2011. |
ISR & Written Opinion, Re: Application # PCT/US2012/050042; dated Oct. 30, 2012. |
Kondo, S, et al.,“A Motion Compensation Technique Using Sliced Blocks in Hybrid Video Coding”, Proceedings of the 2005 International Conference on Image Processing , vol. 2, Sep. 11, 2005; pp. 305-308. |
Wien et al., “H.26L Core Experiment Description for Adaptive Block Transforms,” Video Coding Experts Group of ITU-T SG.16; Portland, Oregon; Aug. 2000. |
Yuan, et al., “CE2: Non-Square Quadtree Transform for symmetricand asymmetric motion partitions,” JCTVC-F410, 6th Meeting: Torino, IT, Jul. 14-22, 2011. |
Ahuja, N. et al., “Detecting faces in images: a survey”, IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 24, No. 1, Jan. 1, 2002, pp. 34-58. |
European Search Report for EP13747176 related matter, dated Dec. 9, 2015, citing new art. |
Habili N. et al., “Segmentation of the face and hands in sign language video sequences using color and motion cues”, IEEE Transactions on Circuits and Systems for Video Technology, vol. 14, No. 8 Aug. 1, 2004. |
Menser, B. et al., “Face detection and tracking for video coding applications”, Signals, Systems and Computers, 2000 Conference Record of the Thirty-Fourth Asilomar Conference, Oct. 29, 2000. |
Rein-Lien Hsu et al, “Face detection in color images”, IEE Transactions on Pattern Analysis and Machine Intelligence, vol. 24, No. 5, May 1, 2002. |
Yang, Liu et al., “Region-of-interest based resource allocation for conversational video communication of H.264/AVC” IEEE Transactions on Circuits and Systems for Video Technology, vol. 18, No. 1, Jan. 1, 2008, pp. 134-139. |
Pierpaolo Baccichet et al. “Network-Aware H.264/AVC ROI Coding for a Multi-Camera Wireless Serveillance Network”, 25. Picture Coding Symposium, Apr. 24, 2006, Beijing. |
European Search Report in related matter: EP13747176, dated Apr. 19, 2016. |
Giovani Gomez, et al. Automatic feature constructions and a simple rule induction algorithm for skin detection, itesm capus cuernavaca, paseo de la reforma 182 A, Temixo, Morelos 62589, Mexico, 8 pages. |
Jure Kovac, et al., Human Skin Colour Clustering for Face Detection, University of Ljubljana, Slovenia, 5 pages. |
M. Bierling, Displacement estimation by hierarchical blockmatching. 1998, In Proceedings of SPIE Visual Communications and Image Processing 88, p. 942-951. |
Tarek Mahmound, A new fast skin color detection technique, Worl Academy of Science, Engineering and Technology 43 2008, 5 pages. |
Vladimir Vezhnevets, et al., A Survey on Pixel Based Skin Color Detection Techniques, Graphics and Media Laboratory, Moscow Russia, 8 pages. |
Wiegand, Thomas, Study of Final Committee Draft of Joint Video Specification (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC), Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG (ISO/IEC JTC1/SC29/WG11 and ITU-T SG16 Q.6), JVT-F100, Dec. 5, 2002. |
Number | Date | Country | |
---|---|---|---|
20130101019 A1 | Apr 2013 | US |
Number | Date | Country | |
---|---|---|---|
61096242 | Sep 2008 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 12329177 | Dec 2008 | US |
Child | 13680636 | US |