A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.
1. Field of the Invention
The present invention relates generally to the field of digital video encoding, and more particularly in one exemplary aspect to methods and systems of changing bitrate of a digital video bitstream.
2. Description of the Related Technology
Since the advent of Moving Pictures Expert Group (MPEG)'s digital audio/video encoding specifications, digital video is ubiquitously used in today's information and entertainment networks. Example networks include satellite broadcast networks, digital cable networks, over-the-air television broadcasting networks, and the Internet.
Furthermore, several consumer electronics products that utilize digital audio/video have been introduced in the recent years. Some examples include digital versatile disk (DVD), MP3 audio players, digital video cameras, etc.
Such proliferation of digital video networks and consumer products has led to an increased need for a variety of products and methods that perform storage or processing of digital video. One such example of video processing is changing the bitrate of a compressed video bitstream. Such processing may be used, for example, to change the bitrate of a digital video program stored on a personal video recorder (PVR) at the bitrate received from a broadcast video network, to the bitrate of a home network to which the program is being sent. Changing the bitrate of a video program is also performed in other video distribution networks such as digital cable networks, and Internet protocol television (IPTV) distribution network.
In conventional approaches, one simple way to change the bitrate is by decoding received video bitstream into an uncompressed video stream, and then re-encoding the uncompressed video to a desired output rate. While conceptually easy, this method is practically inefficient because of the need to implement a computationally expensive video encoder to perform bitrate changes, i.e., transrating.
Several transrating techniques have been proposed for the MPEG-2 video compression format. With the recent introduction of advanced video codecs such as VC-1, also known as the 421M video encoding standard of the Society of Motion Picture and Television Engineering (SMPTE), and H.264, the problem of transrating has become even more complex. Broadly speaking, it takes much higher amounts of computation to encode video to one of the advanced video codecs. Similarly, decoding an advanced video codec bitstream is computationally more intensive than first generation video encoding standards. As a result of increased complexity, transrating requires higher amounts of computation. Furthermore, due to wide scale proliferation of multiple video encoding schemes (e.g., VC-1 and H.264), seamless functioning of consumer video equipment requires transcoding from one encoding standard to another, besides transrating to an appropriate bitrate.
While the computational complexity requirements have increased due to sophisticated video compression techniques, the need for less complex and efficient transrating solutions has also increased due to the proliferation of digital video deployments, and increased number of applications where transrating is employed in a digital video system. Many consumer devices, which are traditionally cost sensitive, also require transrating.
Hence, there is a salient need for improved methods and apparatus that enable lower complexity transrating of digital video streams in an efficient and cost effective manner. Such improved methods and apparatus will also ideally be compatible with extant (legacy) processing platforms and protocols, as well as with newer and future implementations.
The present invention satisfies the foregoing needs by providing improved methods and apparatus for video processing, including transrating and transcoding.
In a first aspect, a method of transrating a digital video picture is disclosed. In one embodiment, the method comprises: representing the digital video picture as a plurality of input macroblocks, each input macroblock having at least first and second attributes; and generating, corresponding to each input macroblock, an output macroblock, each of the output macroblocks having the at least first and second attributes. In one variant, for each output macroblock having a first value for the first attribute, the second attribute is decided at least in part by evaluating one or more error criteria, the one or more error criteria responsive to the second attribute of a corresponding input macroblock.
In one variant, each of the input macroblocks and output macroblocks comprises a third attribute; and the third attribute of the output macroblock is responsive to a spatial and a temporal location of the output macroblock.
In another variant, the digital video picture comprises a picture encoding attribute.
In yet another variant, the first attribute comprises a slice type, the second attribute comprises an encoding mode, and the third attribute comprises a skipped mode, and the skipped mode is one of skipped and non-skipped.
In another variant, if the encoding mode is of a first predetermined type, then the skipped mode of the output macroblock is further responsive to the skipped mode of a second input macroblock. The input macroblock and the second input macroblock together comprise spatially co-located top and bottom macroblocks in the digital video picture.
In a further variant, the first attribute comprises a slice type, and the second attribute comprises an encoding mode. For instance, the first value may indicate a slice type relating to an infra prediction.
In still another variant, the one or more error criteria comprise one of: (i) a sum of absolute differences (SAD), or (ii) a sum of absolute transformed differences (SATD), between the input macroblock and the output macroblock.
In a second aspect of the invention, a computer-implemented method of processing a macroblock of an input video picture is disclosed. In one embodiment, the method comprises implementing logic where if the input video picture is intra encoded, then assigning an intra encoding mode for the macroblock. This mode assignment is conducted by at least: calculating a transrating error for a plurality of candidate output macroblocks having an intra encoding mode; and assigning to the macroblock the intra encoding mode of a candidate output macroblock having the minimum value of the transrating error. If the input video picture is not intra encoded, then the macroblock as a “skipped” macroblock is encoded based at least in part on at least first, second and third attributes associated with the macroblock.
In one variant, the first second and third attributes comprise: (i) a spatial position of the macroblock, (ii) a top/bottom polarity of the macroblock, and (iii) a run length encoding scheme used for encoding the macroblock. For instance, the run length encoding scheme may comprise a context adaptive binary arithmetic coding scheme (CABAC).
In another variant, at least one of the pluralities of candidate output macroblocks has a pixel width greater than a pixel width of the macroblock.
In a further variant, at least one of the pluralities of candidate output macroblocks has a pixel width twice that of a pixel width of the macroblock.
In a third aspect of the invention, apparatus configured to process a digital video image is disclosed. In one embodiment, the image is represented as a plurality of input macroblocks, each the input macroblock having at least first and second attributes, and the apparatus comprises: a first interface adapted to receive at least the input macroblocks of the image; logic configured to generate, corresponding to each input macroblock, an output macroblock, each of the output macroblocks having the at least first and second attributes; and a second interface adapted to output at least the output macroblocks to a device. For each output macroblock having a first value for the first attribute, the second attribute is decided by the logic at least in part through evaluation of one or more error criteria, the one or more error criteria being related to the second attribute of a corresponding input macroblock.
In one variant, each of the output macroblocks comprises a third attribute responsive to a spatial and a temporal location of that output macroblock.
In another variant, the first interface comprises a high-speed serialized bus protocol interface, and at least a portion of the logic is hard-coded into an integrated circuit of the apparatus.
In a further variant, the apparatus comprises a portable media device (PMD) having a battery and a display device, the display device allowing for viewing of the processed digital image. The PMD further comprises for example NAND flash memory adapted to store the processed digital image.
In a fourth aspect of the invention, an integrated circuit is disclosed. In one embodiment, the integrated circuit comprises: at least one semi conductive die; a first interface adapted to receive data relating to one or more video images represented as a plurality of input macroblocks, each the input macroblock having at least first and second attributes; at least one of computer instructions, firmware or hardware configured to generate, corresponding to each input macroblock, an output macroblock having the at least first and second attributes; and a second interface adapted to output at least the output macroblocks. For macroblocks having a first value for the first attribute, the second attribute is decided in one variant by the at least one of computer instructions, firmware or hardware at least in part through evaluation error criteria related to the second attribute of a corresponding input macroblock.
In one variant, the at least one semi conductive die comprises a single silicon-based die, and the integrated circuit comprises a system-on-chip (SoC) integrated circuit having at least one digital processor in communication with a memory, and the first and second interfaces, processor and memory are all disposed on the single die.
In a fifth aspect of the invention, a method of transrating video content comprising a plurality of macroblocks is disclosed. In one embodiment, the method comprises: receiving the plurality of input macroblocks; replacing exact transrating calculations relating to processing the macroblocks with approximations, the approximations requiring less resources to generate than the exact calculations; and generating a plurality of transrated output macroblocks based at least in part on the plurality of input macroblocks and the approximations.
In one variant the visual quality of the transrated output macroblocks is not perceptibly degraded with respect to the visual quality of transrated output macroblocks generated using the exact calculations.
These and other features, aspects and advantages of the present invention will become better understood with reference to the following drawings, description and claims.
The following detailed description is of the best currently contemplated modes of carrying out the invention. The description is not to be taken in a limiting sense, but is made merely for the purpose of illustrating the general principles of the invention, since the scope of the invention is best defined by the appended claims.
As used herein, “video bitstream” refers without limitation to a digital format representation of a video signal that may include related or unrelated audio and data signals.
As used herein, “transrating” refers without limitation to the process of bit-rate transformation. It changes the input bit-rate to a new bit-rate which can be constant or variable according to a function of time or satisfying a certain criteria. The new bitrate can be user-defined, or automatically determined by a computational process such as statistical multiplexing or rate control.
As used herein, “transcoding” refers without limitation to the conversion of a video bitstream (including audio, video and ancillary data such as closed captioning, user data and teletext data) from one coded representation to another coded representation. The conversion may change one or more attributes of the multimedia stream such as the bitrate, resolution, frame rate, color space representation, and other well-known attributes.
As used herein, the term “macroblock” (MB) refers without limitation to a two dimensional subset of pixels representing a video signal. A macroblock may or may not be comprised of contiguous pixels from the video and may or may not include equal number of lines and samples per line. A preferred embodiment of a macroblock comprises an area 16 lines wide and 16 samples per line.
In one salient aspect, the present invention takes advantage of temporal and spatial correlation of video signals to reduce the complexity of transrating a video bitstream. The video signal underlying a video bitstream has the notion of time sequenced video frames. For example, National Television System Committee (NTSC) signal broadcast in analog television networks in the United States is made up of 29.97=30/1.001 frames per second video signal. Furthermore, each video picture is made up of two-dimensional arrays of pixels. In one embodiment, the present invention contemplates processing video bitstreams representing smaller units of a frame; these smaller units are referred to herein as macroblocks (MB), although other nomenclature may be used. An MB may comprise for example a rectangular area of 16×16 pixels, each pixel being represented by a value or a set of values. For instance, a pixel may have a luminance value and two color values (Cb and Cr). Other possible implementations are possible and will be recognized by those of ordinary skill in the video processing field given the present disclosure.
In a video bitstream represents a video signal in a sequence that comprises video pictures, grouped together in sequence of macroblocks (MB s), one aspect of the present invention applies transrating techniques to exploit correlations among MBs that are spatially near to each other and to video pictures that are temporally near to each other. In particular, exemplary implementations of the present invention may use MB-level encoding decisions from spatially nearby MBs and picture-level encoding decisions from temporal neighbors to trade off complexity of transrating. In one particular embodiment, the technique that encodes MBs as “skipped” or “non-skipped” is utilized. Representation of a skipped MB requires very few bits in the digital video bitstream (typically 1 bit, although other numbers of bits can be used), and generally indicates to the decoder that while decoding, the decoder can use value of a previously encoded MB in place of the skipped MB. Decisions regarding skipped MBs are especially useful in transrating and transcoding because they offer a comparatively direct method of controlling the number of bits required to represent a digital video picture or image (at the expense of visual quality of that picture). For example, having a higher number of skipped MBs in a picture will typically result in a reduced bitrate, but may result in at least somewhat degraded quality of the video because skipped MBs carry visually identical information as a previously encoded MB.
Exemplary embodiments of the various apparatus and methods according to the present invention are now described in detail.
It will be recognized that while the exemplary embodiments of the invention are described herein primarily in the context of the H.264 codec syntax referenced above, the invention is in no way so limited, and in fact may be applied broadly across various different codec paradigms and syntaxes.
One common architectural concept underlying certain aspects and embodiments of the invention relates to use of a “three stage” process—i.e., (i) an input processing stage, (ii) an intermediate format processing stage, and (iii) an output processing stage. In one embodiment, the input processing stage comprises both a decompression stage that takes an input bitstream and produces an intermediate format signal, and a parsing stage that parses certain fields of the bitstream to make them available to the output processing stage.
The intermediate format processing stage performs signal processing operations, described below in greater detail, in order to condition the signal for transrating.
Finally, the output processing stage converts the processed intermediate format signal to produce the output bitstream, which comprises the transrated version of the input bitstream in accordance with one or more quality metrics such as e.g., a target bitrate and/or a target quality.
The intermediate format processing in the illustrated transrater 300 comprises a MB decision module 350. For processing in module 350, the transrater 300 may have most or substantially all pixels of a picture available in decompressed form. In one embodiment, the transrater 300 may make decisions regarding how to code each MB by processing the decompressed video. In another embodiment, the transrater 300 may preserve the MB modes as encoded in the incoming video bitstream.
In yet another embodiment, the transrater 300 may change MB decisions to help maintain video quality at the output of the transrater 300. This change in MB decisions may also be responsive to the target output bitrate. For example, to reduce number of bits generated by encoding a MB in the output video bitstream, the transrater 300 may favor encoding more MBs as inter-MBs instead of intra-MBs.
The recompression module 322 re-encodes the uncompressed video back to a compressed video bitstream by performing a recompression operation. The recompression may be performed such that the output video bitstream 354 comprises format compliant to an advanced video encoding standard such as e.g., H.264/MPEG-4 or VC-1. Because the input video bitstream is converted into an intermediate uncompressed video format, transrater 300 may advantageously be used to also change the bitstream standard. For example, input video bitstream 102 may be in H.264 compression format and the output video bitstream 104 may be in the VC-1 compression format, or vice-a-versa. The recompression module 322 includes a module 324 for processing decoded macroblocks, and a forward quantizer and forward transformer 326 that quantizes and transforms the residual output e2(i) generated from subtraction of the predicted signal p2(t) from the output of the decoded MB module 324. The forward quantizer and forward transformer module 326 is used to quantize and transform coded residual signal for the decoder loop inside the recompression module 322. The decoder loop also includes an add/clip module 332, and a deblocking module 346 that provides input to the reconstruction module 340. The output predicted pictures from the reconstruction module 340 are used by a motion estimation module 338. The motion estimation module 338 receives motion vector information from the entropy decoder 308 (i.e., via the mode refinement module 352) to help speed up estimation of accurate motion vectors. A motion compensation module 336 is used to perform motion compensation in the recompression module 322. The motion compensation module 336 can be functionally different from the motion compensation module 304. The latter does a single motion compensation for a given mode specified in the compressed bitstream. In 336, the motion compensation module does motion compensation for one or more modes and passes on the results to the mode decision engine 334 to decide which mode to choose among the many tried. The output of motion compensation is fed into a mode decision module 334, along with the output'of an intra prediction module 342. The mode decision module 334, in turn drives the inputs to the add/clip module 332.
In
The compression subsystem 422 of the illustrated embodiment comprises a decoded MB processing module 424 that receives decisions from MB decision module 450 and produces decoded MB pixel values. A residual signal, e2(i) is generated by subtracting output of the decoded MB processing module 424 and predicted pixel values p2(i). The residual signal e2(i) is then quantized and transformed in module 426 to produce signal v2(i) used for entropy encoding to generate the output video bitstream 104. An inverse quantizer and inverse transformer module 430 is used to de-quantize signal v2(i). The output of the inverse quantizer and inverse transformer module 430 is then processed through an add/clip module 432 to produce a signal x2(i) that is input to a deblocking module 446. The reconstruction module 440 is used to reconstruct pixels in uncompressed video format from output of the deblocking module 446. The uncompressed video is processed in a motion compensation module MC2 436.
As previously noted, the apparatus 400 of
The intra decision module 344 and motion estimation module 338 and mode decision module 334 used in the transrater 300 of
Table 1 shows exemplary pass-through syntax that may be processed in the module 400:
If the video bitstream processed by a transrater represents interlaced high definition video at 1920 pixels×1088 lines resolution at 30 frames per second, the bus bandwidth required for data read/writes may include for example the values shown in Table 2 below:
As shown in
Advantages of the A1p 500 embodiment over the A1400 embodiment include: (i) less logic due to the absence of deblocking at the decoder and partial encoder stages, (ii) less bus bandwidth out of the device to external memory (e.g., by approximately 62 megabytes per second in one implementation), (iii) less bus bandwidth into the device from external memory (e.g., by approximately 62 megabytes per second), and (iv) less use of internal memory (e.g., by approximately 2 megabytes).
In one embodiment, the present invention utilizes a mode refinement function that is part of the intermediate processing logic 108, and processes the intermediate format video signals produced by the decoder stage 106 of the apparatus of
In one embodiment of the mode refinement processing referenced above, the skipped and non-skipped transitions are considered for all slices I, P, and B. For I slices only, however, other refinements are considered; i.e.:
1. Rechecking likely intra 4×4 mode from neighboring MB modes;
2. Rechecking likely intra 8×8 mode from neighboring MB modes; and
3. Intra 4×4, intra 8×8, and intra 16×16 transitions.
It is noted that the intra 8×8 mode is valid only for High Profile of the H.264 video standard (ITU-T Recommendation No. H.264, “SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS—Infrastructure of audiovisual services—Coding of moving Video—Advanced video coding for generic audiovisual services” dated 11/07, which is incorporated by reference herein in its entirety).
a. Skipped and Non-Skipped Transitions
The following nomenclatures are used herein for purposes of illustration. If an MB is skipped, it can comprise one of three (3) exemplary logical states or conditions:
priorSkip=(mbFlags[CUR] & MBF_SKIPPED)) Eqn (1)
newSkip=!(mbFlags[CUR] & MBF_SKIPPED) && (mb_type==0) && (cbp[CUR]==0) Eqn (2)
remSkip=(mbFlags[CUR] & MBF_SKIPPED) && (cbp[CUR]==0). Eqn (3)
c graphically illustrate exemplary embodiments of the methods of processing skipped and non-skipped transitions according to the invention.
b. Do Not Skip Conditions for MBAFF
For Macroblock-adaptive frame-field (MBAFF) frames, if a macroblock pair from a P or B slice is converted from a skipped to a non-skipped state (or vice-versa), certain conditions (defined below) must be satisfied before it can be converted, or alternatively it can be kept in skipped mode (with no preconditions) in order to make sure that the inferred mb_field_decoding_flag during entropy coding is consistent. This test is referred to herein as the “skipped test”. The MB pair that needs to be tested for “skipped test” has to satisfy all criteria below, which are referred to as the “skipped test criteria”:
If an MB pair satisfies these three criteria, one of the MBs of the pair cannot be skipped if any of the following five (5) conditions hold for the current macroblock; these five conditions are referred to herein as the “do not skip conditions”:
For inter MBs from B slice, an MB can be converted from “skipped” to “non-skipped” and vice versa with no problem. For MBs from P slice, such conversion may not be possible as described below. So for inter MBs from B slice, the “do not skip test” can be deferred until the bottom MB of the pair. If the bottom MB is “remained” or “new skipped”, and doNotSkip=0, then the bottom MB can be kept or changed to “skipped”. If the bottom MB has doNotSkip=1, the bottom MB can be kept or changed to “non-skipped”.
For inter MBs from P slice, since they may not be able to be converted to “skipped” from “non-skipped” or vice versa for CABAC entropy encoding (see discussion of CABAC provided below), the “do not skip test” cannot be deferred until the bottom MB. This decision for the top MB of the pair must be taken based on the “skipped” status of the bottom MB.
The foregoing embodiment of the “do not skip test” logic for macroblocks from P or B slice can be summarized as follows:
c. Skipped to Non-skipped Transitions
For P and B slices, an MB is converted from “skipped” to “non-skipped” if the following conditions hold:
1. The current MB is skipped, and cbp is non-zero after transrating, OR
2. doNotSkip=1.
Here, the term “cbp” refers to the coded block pattern, which denotes the distribution of non-zero coefficients in a block. If the cbp from the macroblock is zero, it means that the entire macroblock has all zero coefficients.
If any these conditions are satisfied, the following is performed:
a. Simpler Solution:
b. More Complex Solution:
d. Non-skipped to Skipped Transitions
A macroblock in a P or B slice can be converted from “non-skipped” to “skipped” if the following conditions hold:
1. The current MB is “new” or “remained skip”, and
2. doNotSkip=0.
If these conditions are satisfied, the following is performed:
The foregoing embodiment of the “skipped to non-skipped” and “non-skipped to skipped” transition logic can be summarized by the following:
e. Recheck Likely Intra 4×4 or Intra8×8 Modes
If the current 4×4 or 8×8 partition has the same intra 4×4 or 8×8 mode as the inferred mode, the bitstream carries three (3) less bits that store the mode of the partition in the rem_intra4×4_pred_mode field of the macroblock coding layer. The following process is used (for I pictures only):
intraMxMPredMode=Min(intraMxMPredModeA, intraMxMPredModeB) Eqn (4)
In various embodiments of the invention, p(i,j) represents the predicted pixels by the I1 intra prediction module at the decoder stage of the A1 (
SAD=Sumi,j|p(i,j) Eqn (5)
SATD=Sumi,j|fTQ2(P(i,j))| Eqn (6)
f. Intra 4×4, Intra 8×8, and Intral6×16 Mode Transitions
Due to transrating, the level of quantization typically increases, and the macroblocks that previously had intra 4×4 can move to intra 8×8 or intra 16×16 modes. Furthermore, intra 8×8 mode MBs can transition to intra 16×16 modes. In order to determine whether such transitions are present, the following exemplary process is used (on I pictures only).
The process starts with default MB sizes for intra 8×8 (s8) and intra 16×16 MBs (s16) that are empirically determined based on the difference of the transrated and original quantization parameters. Specifically:
In step 708, the resulting error of encoding is compared with the encoding error of the original Intra 4×4 encoding. This error of encoding is sometimes referred to as “distortion error” caused by the encoding. The new encoding error is referred to as sad8 (sum of absolute differences) and the old encoding error is referred to as sad4. If the new encoding error is smaller, then the new encoding mode is used to encode the MB (step 710); otherwise, the intra 4×4 encoding mode for encoding the MB is kept (step 712), and the decision process ends.
If the original MB being tested for encoding mode is an intra 8×8 MB (step 703), or if a decision was made in step 710 to re-encode an MB to be an intra 8×8 MB, then a determination is made in step 714 regarding whether the resulting size in terms of number of encoded bits is smaller than value of the variable s16. If the size of the Infra 8×8 encoding is smaller than s16, then in step 722, a decision is made to encode the MB as an intra 8×8 MB. Otherwise, in step 716, the MB is encoded using intra 16×16 encoding type.
Next, the encoding error of this encoding (“distortion error”) is compared in step 718 with the error of encoding using intra 8×8 mode. If the error of intra 16×16 encoding is smaller than intra 8×8 error, then in step 720, the decision is made to encode the MB as an intra 16×16 MB. Otherwise, the MB is encoded as an intra 8×8 MB.
In the illustrated embodiment, the functions func8( ) and func16( ) referenced above are empirically determined. For decreasing or increasing s8 and s16, the constants α and β are used, where:
Decrease s8=(1−α)*s8 Eqn (7)
Increase s8=(1+α)*s8 Eqn (8)
The same approach is applied for s16 (with a different constant β). Here, α and β are in the present embodiment determined empirically. The SAD is the sum of absolute difference (SAD) between the newly predicted block and the original predicted block computed at the decoder stage of the transrator, i.e., the intra prediction module I1 for the A1 (
If the most probable intra 8×8 mode (for example, as determined by Section 8.3.2.1 “Derivation process for the Intra8×8 PredMode” of the H.264 standard as described previously herein; see Appendix III hereto) is one of the intra 4×4 modes, then that is chosen as the new intra 8×8 mode. Otherwise, if two or more of the modes are the same, that mode is chosen as the new intra 8×8 mode. Otherwise, the upper left corner mode (Mode 0) 801 of the box 800 of
For four (4) intra 8×8 blocks, there is one intra 16×16 block. Given 4 intra 8×8 blocks, the “new mode” of the intra 16×16 must be determined. If two or more of the modes is DC or horizontal or vertical (see H.264 standard Section 8.3.3 “Intra 16×16 prediction process for luma samples” and Appendix IV hereto), then that DC Horizontal Vertical mode is chosen as the new intra 16×16 mode. Otherwise, the new intra 16×16 mode is selected as plane mode.
In one exemplary software implementation, methods of the present invention are implemented as a computer program that is stored on a computer useable medium, such as a memory card, a digital versatile disk (DVD), a compact disc (CD), USB key, flash memory, optical disk, and so on. The computer readable program, when loaded on a computer or other processing device, implements the mode refinement, transcoding and/or transrating methodologies of the present invention.
It would be recognized by those skilled in the art, that the invention described herein can take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment containing both hardware and software elements. In an exemplary embodiment, the invention may be implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
In this case, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
It will also be appreciated that while the above description of the various aspects of the invention are rendered in the context of particular architectures or configurations of hardware, software and/or firmware, these are merely exemplary and for purposes of illustration, and in no way limiting on the various implementations or forms the invention may take. For example, the functions of two or more “blocks” or modules may be integrated or combined, or conversely the functions of a single block or module may be divided into two or more components. Moreover, it will be recognized that certain of the functions of each configuration may be optional (or may be substituted for by other processes or functions) depending on the particular application.
It should be understood, of course, that the foregoing relates to exemplary embodiments of the invention and that modifications may be made without departing from the spirit and scope of the invention as set forth in the following claims.
This application is a continuation-in-part of and claims priority to co-owned and co-pending U.S. patent application Ser. No. 12/396,393 filed Mar. 2, 2009 entitled “Method And Apparatus For Video Processing Using Macroblock Mode Refinement”, which claims priority to U.S. provisional patent application Ser. No. 61/197,216 filed Oct. 24, 2008 entitled “Method And Apparatus For Transrating Compressed Digital Video”, and U.S. provisional patent application Ser. No. 61/197,217 filed Oct. 24, 2008 entitled “Video Transrating Method and Apparatus Using Macroblock Mode Refinement”, each of which is incorporated herein by reference in its entirety. This application is also related to co-owned and co-pending U.S. patent application Ser. No. 12/322,887 filed Feb. 9, 2009 and entitled “Method And Apparatus For Transrating Compressed Digital Video”, which is incorporated herein by reference in its entirety. This application is also related to co-owned and co-pending U.S. patent application Ser. No. 12/______ filed Oct. 23, 2009 (contemporaneously herewith) and entitled “Method And Apparatus For Transrating Compressed Digital Video” (a continuation-in-part of Ser. No. 12/322,887 above), and also co-owned and co-pending U.S. patent application Ser. No. 12/582,640 filed Oct. 20, 2009 and entitled “Rounding And Clipping Methods And Apparatus For Video Processing”, each of the foregoing also being incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61197216 | Oct 2008 | US | |
61197217 | Oct 2008 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 12396393 | Mar 2009 | US |
Child | 12604859 | US |