This disclosure relates generally to image and/or video processing, and more specifically, to conversion between semi-planar YUV and planar YUV color space formats.
In image and/or video processing, there are various YUV color space formats. YUV color space formats can include, for example, subsampled formats and non-subsampled formats (e.g., full resolution data). Each YUV color space format can include a luminance component and a chrominance component. The luminance component contains brightness information of an image frame (e.g., data representing overall brightness of an image frame). The chrominance component contains color information of an image frame. Often times, the chrominance component is a sub-sampled plane at a lower resolution. Sampled formats in YUV can be sampled at various sub-sampling rates, such as 4:2:2 and 4:2:0. For example, a sub-sampling rate of 4:2:2 represents a sampling block that is four pixels wide, with two chrominance samples in the top row of the sampling block, and two chrominance samples in the bottom row of the sampling block. Similarly, a sub-sampling rate of 4:2:0 represents a sampling block that is four pixels wide, with two chrominance samples in the top row of the sampling block, and zero chrominance samples in the bottom row of the sampling block. Frequently, it is necessary to convert between different YUV color space formats to satisfy requirements for a particular hardware or software component. For example, a hardware component (e.g., a camera or a display) can produce an image frame in one YUV color space format, and another component (e.g., a hardware component or a software component) can require the image frame in another YUV color space format.
Generally, current image and/or video processing systems convert an image frame from one YUV color space format to another YUV color space format using a central processing unit (CPU). However, converting an image frame from one YUV color space format to another YUV color space format in the CPU can constrain system bandwidth and be inefficient. Alternatively, certain image and/or video processing systems convert an image frame from one YUV color space format to another YUV color space format using a graphic processing unit (GPU). In this scenario, the GPU converts an image frame from a YUV color space format to a RGB color space format. Then, the image frame in the RGB color space format is converted back into a different YUV color space format using the GPU. However, this solution requires an extra conversion (e.g., an extra copy to a different color space format) that constrains system bandwidth and extends processing time.
The following presents a simplified summary of the specification in order to provide a basic understanding of some aspects of the specification. This summary is not an extensive overview of the specification. It is intended to neither identify key or critical elements of the specification, nor delineate any scope of the particular implementations of the specification or any scope of the claims. Its sole purpose is to present some concepts of the specification in a simplified form as a prelude to the more detailed description that is presented later.
In accordance with an implementation, a system converts a source image frame in a particular YUV format to another YUV format. The system can include a texture component, a luminance component and a chrominance component. The texture component can generate one or more luminance input pixels and one or more chrominance input pixels from a source image. The one or more luminance input pixels can each include a luma component; the one or more chrominance input pixels can each include a first chroma component and a second chroma component. The luminance component can generate one or more luminance output pixels. The one or more luminance output pixels can each include a group of luminance input pixels. The chrominance component can generate one or more chrominance output pixels. The one or more chrominance output pixels can each include a group of first chroma components or a group of second chroma components.
Additionally, a non-limiting implementation provides for generating one or more luminance input pixels from a source image, for generating one or more chrominance input pixels from the source image, for generating one or more luminance output pixels, and for generating one or more chrominance output pixels. The one or more luminance input pixels can each include a luma component and the one or more chrominance input pixels can each include a first chroma component and a second chroma component. Additionally, the one or more luminance output pixels can each include a group of luminance input pixels and the one or more chrominance output pixels can each include a group of first chroma components or a group of second chroma components.
Furthermore, a non-limiting implementation provides for receiving a source image in first color space format from a central processing unit (CPU), for generating a first input buffer with luminance graphic data from the source image, and for generating a second input buffer with chrominance graphic data from the source image. Additionally, the non-limiting implementation provides for generating output pixel values of the luminance graphic data in a second color space format, for generating output pixel values of the chrominance graphic data in the second color space format, and for sending the output pixel values of the luminance graphic data in the second color space format and the output pixel values of the chrominance graphic data in the second color space format to the CPU.
The following description and the annexed drawings set forth certain illustrative aspects of the specification. These aspects are indicative, however, of but a few of the various ways in which the principles of the specification may be employed. Other advantages and novel features of the specification will become apparent from the following detailed description of the specification when considered in conjunction with the drawings.
Numerous aspects, implementations, objects and advantages of the present invention will be apparent upon consideration of the following detailed description, taken in conjunction with the accompanying drawings, in which like reference characters refer to like parts throughout, and in which:
Various aspects of this disclosure are now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of one or more aspects. It should be understood, however, that certain aspects of this disclosure may be practiced without these specific details, or with other methods, components, materials, etc. In other instances, well-known structures and devices are shown in block diagram form to facilitate describing one or more aspects.
Various components in a computer device can be configured to processes image and/or video frames (e.g., graphic data). However, a computer device (e.g., a mobile device) can include a hardware component (e.g., a camera or a display) that produces an image frame (e.g., a video frame) in one YUV color space format, and another component (e.g., a hardware component or a software component) that requires the image frame be in another YUV color space format. Therefore, the computer device can be configured to convert between different YUV color space formats to satisfy requirements of various components on the computer device. For example, camera frame data (e.g., a source image) can be delivered from a memory (e.g., a buffer). The source image can be delivered in a particular YUV color space format at a certain resolution (e.g., a resolution implemented by a camera preview mode). The source image can also be delivered in a natural orientation of the camera (e.g., a landscape orientation or a portrait orientation). However, another component (e.g., an encoder) may require a source image in a different YUV color space format, size, and/or orientation.
Systems and methods disclosed herein relate to converting between different YUV color space formats using circuitry and/or instructions stored or transmitted in a computer readable medium in order to provide improved processing speed, processing time, memory bandwidth, image quality and/or system efficiency. Direct conversion between different YUV color space formats can be implemented by separately converting luminance (e.g., luma) and chrominance (e.g., chroma) components of an image frame. Additionally, the image frame can be scaled and/or rotated. Therefore, processing time to convert between different YUV formats color space can be reduced. As such, the data rate required to achieve desired output quality can be reduced. Additionally, the amount of memory bandwidth to convert between different YUV color space formats can be improved.
Referring initially to
In particular, the system 100 can include a YUV conversion component 102. The YUV conversion component 102 can include a texture component 104, a luminance (e.g., luma) component 106 and a chrominance (e.g., chroma) component 108. The YUV conversion component 102 can receive a semi-planar image frame (e.g., a source image) in a particular color space format. The semi-planar image frame can include a plane (e.g., a group) of luminance (Y) data, followed by a plane (e.g., a group) of chrominance (UV) data. For example, the semi-planar image frame can be configured in a NV21 (e.g., YUV 4:2:0 semi-planar) color space format, where the image frame includes one plane of Y luminance data and one plane of interleaved V chrominance data and U chrominance data. In another example, the semi-planar image frame can be configured in a NV12 (e.g., YUV 4:2:0 semi-planar) color space format, where the image frame includes one plane of Y luminance data and one plane of interleaved U chrominance data and V chrominance data. However, it is to be appreciated that the semi-planar image frame can be implemented in other YUV formats, such as, but not limited to, a YUV 4:1:1 semi-planar format, a YUV 4:2:2 semi-planar format, or a YUV 4:4:4 semi-planar format.
The YUV conversion component 102 can transform the semi-planar image frame into a planar image frame. For example, the YUV conversion component 102 can generate a planar output buffer with planar image frame data from a semi-planar input buffer with semi-planar image frame data. The planar image frame can include a plane of luminance (Y) data, followed by a plane of chrominance (U) data and a plane of chrominance (V) data (or a plane of chrominance (V) data and a plane of chrominance (U) data). For example, the planar image frame can be configured in a I420 (e.g., YUV 4:2:0) color space format, where the image frame includes one plane of Y luminance data, a plane of U chrominance data, and a plane of V chrominance data. In one example, the YUV conversion component 102 can be implemented in a GPU. Thereafter, the YUV conversion component 102 can send the planar image frame to a central processing unit (CPU) and/or an encoder. However it is to be appreciated that the YUV conversion component 102 can also be implemented in the CPU and/or the encoder.
Transformation of an image frame from a semi-planar image format into a planar image frame format can be implemented by separately transforming a luminance (Y) data channel and chrominance (U/V) data channels. For example, the YUV conversion component 102 can receive interleaved U/V chrominance data and generate separate planes of U and V chrominance data. In one example, a semi-planar 320×240 image frame can be transformed into a planar 200×320 image frame. The planar 200×320 image frame can also be rotated, cropped and/or scaled. In another example, a luminance (Y) channel of a semi-planar 320×240 image frame can be transformed into a planar 200×320 image frame and an interleaved chrominance (V/U) semi-planar 160×120 image frame can be transformed into a planar 100×160 image frame with separate U and V planes. The planar 200×320 image frame and the planar 100×160 image frame can also be rotated, cropped and/or scaled. Therefore, the luminance (Y) channel and the chrominance (UN) data channels of an image frame can be at different resolutions (e.g., aspect ratios). In one example, the chrominance (U/V) data channels can be full resolution data (e.g., non-subsampled data). Therefore, the chrominance (UN) data channels can include data chrominance data that is not sub-sampled.
The texture component 104 can be configured to generate one or more luminance (e.g., luma) input pixels and one or more chrominance (e.g., chroma) input pixels from a source image. The one or more luminance input pixels can each include a luma component (e.g., Y component) and the one or more chrominance input pixels can each include a first chroma component and a second chroma component (e.g., a U component or a V component). The luminance component 106 can be configured to generate one or more luminance output pixels. The one or more luminance output pixels can each include a group of luminance input pixels. The chrominance component 108 can be configured to generate one or more chrominance output pixels. The one or more chrominance output pixels can each include a group of first chroma components or a group of second chroma components. Therefore, the system 100 can be configured to convert the image frame in a first color space format (e.g., a semi-planar image frame format) to a second color space format (e.g., a planar image frame format). In one example, the luminance component 106 and/or the chrominance component 108 can be implemented using a shader (e.g., a computer program) to calculate (e.g., transform) graphic data (e.g., luminance and/or chrominance data). For example, the shader can be implemented as a pixel shader and/or a vertex shader.
While
Referring to
The CPU 204 can send graphic data from a source image in a first format (e.g., semi-planar image frame format) to the YUV conversion component 102 in the GPU 202. The YUV conversion component 102 can separate (e.g., and/or store) the semi-planar image frame data into luminance data and chrominance data. For example, the YUV conversion component 102 can separate the semi-planar image frame data into luminance data and chrominance data via textures (e.g., using one or more buffers to store graphic data). The luminance data and the chrominance data from the source image can be at different resolutions (e.g., a luminance plane can be formatted as 320×240 and a chrominance plane can be formatted as 160×120.). In one example, the luminance data and/or the chrominance data from the source image are subsampled data. In another example, the luminance data and/or the chrominance data from the source image are non-subsampled data. The YUV conversion component 102 can then separately transform the luminance semi-planar image frame data and the chrominance semi-planar image frame data into planar image frame data. For example, the YUV conversion component 102 can separately transform the luminance semi-planar image frame data and the chrominance semi-planar image frame data using a shader. The transformed planar image frame data can be presented and/or stored in the memory 208 located in the CPU 204. Additionally, the CPU 204 can present the planar image frame to the encoder 206 to encode the planar image frame. Accordingly, the GPU 202 can directly convert a semi-planar image frame into a planar image frame in two steps (e.g., a step to convert luminance (Y) data and a step to convert chrominance (UV) data). As such, the source image can be configured in a first color space format (e.g., as a semi-planar image frame), and the GPU 202 can generate an image frame in a second color space format (e.g., as a planar image frame).
Referring to
The luminance component 106 can transform the luminance semi-planar image frame data into luminance planar image frame data. Additionally, the chrominance component 108 can transform the chrominance semi-planar image frame data into chrominance planar image frame data. The luminance planar image frame data and/or the chrominance planar image frame data can be stored in one or more output buffers (e.g., an output buffer for luminance planar image frame data and/or an output buffer for chrominance planar image frame data). The transformed luminance planar image frame data and/or the chrominance planar image frame data can be presented and/or stored in the memory 208 in the CPU 204. Accordingly, the GPU 202 can directly convert the luminance semi-planar image frame data into luminance planar frame data, and the chrominance semi-planar image frame data into chrominance planar frame data. As such, the source image and/or the texture component 104 can be configured in a first color space format (e.g., as a semi-planar image frame), and the luminance component 106 and/or the chrominance component 108 can be configured in a second color space format (e.g., as a planar image frame).
Referring now to
The luminance input buffer 402 can include one component (e.g., one Y component) per pixel. The chroma input buffer 404 can include two input components (e.g., a U component and a V component) per pixel. The size of the luminance input buffer 402 and/or the chroma input buffer 404 can depend on the size of the source image. For example, the luminance input buffer size and the source image size can be a 1:1 ratio. In one example, the luminance input buffer 402 can be an 8×3 buffer to store luminance data for an 8×3 source image. The chroma input buffer size and the source image size can be a 1:2 ratio when the chroma data is subsampled. In one example, the chroma input buffer 404 can be an 8×4 buffer to store chrominance data for a 16×8 source image.
The output buffer 406 can include a luminance output buffer 408 and a chroma output buffer 410. The luminance output buffer 408 can include output pixel values of the luminance component from the luminance input buffer 402 (e.g., luminance graphic data). For example, the luminance output buffer 408 can include a group of luminance pixels from the luminance input buffer 402 (e.g., each output pixel in the luminance output buffer 408 can represent a group of Y source pixels from the luminance input buffer 402). The chroma output buffer 410 can include output pixel values of the chroma components from the chroma input buffer 404 (e.g., chrominance graphic data). For example, the chroma output buffer 410 can include a group of U chrominance pixels or a group of V chrominance pixels from the chroma input buffer 404 (e.g., each output pixel in the chroma output buffer 410 can represent a group of U source pixels or a group of V source pixels from the chroma input buffer 404).
In one example, the top half of the chroma output buffer 410 can include U data and the bottom half of the chroma output buffer 410 can include V data. In another example, the top half of the chroma output buffer 410 can include V data and the bottom half of the chroma output buffer 410 can include U data. Therefore, the luminance output buffer 408 can store image frame data that has been transformed by the luminance component 106 and the chroma output buffer 410 can store image frame data that has been transformed by the chrominance component 108. As such, the source image, the luminance input buffer 402 and/or the chroma input buffer 404 can be configured in a first color space format (e.g., as a semi-planar image frame), and the luminance component 106, the chrominance component 108, the luminance output buffer 408 and/or the chroma output buffer 410 can be configured in a second color space format (e.g., as a planar image frame).
The luminance input buffer 402, the chroma input buffer 404 and/or the output buffer 406 (e.g., the luminance output buffer 408 and/or the chroma output buffer 410) can be any form of volatile and/or non-volatile memory. For example, the buffer 304 can include, but is not limited to, magnetic storage devices, optical storage devices, smart cards, flash memory (e.g., single-level cell flash memory, multi-level cell flash memory), random-access memory (RAM), read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or non-volatile random-access memory (NVRAM) (e.g., ferroelectric random-access memory (FeRAM)), or a combination thereof. Further, a flash memory can comprise NOR flash memory and/or NAND flash memory.
Referring now to
If no rotation is being applied, the vector stride component 502 can present a vector between one source pixel and the next pixel to the right. For example, the vector stride component 502 can present a vector to an adjacent pixel on a right side of a particular input pixel of a source image if no rotation is performed on the luminance output buffer 408 and/or the chroma output buffer 410 (e.g., one or more luminance output pixels and/or one or more chrominance output pixels). If the image is to be rotated 90 degrees clockwise, the vector stride component 502 can present a vector to the next pixel below. For example, the vector stride component 502 can present a vector to an adjacent pixel below a particular pixel of a source image if a 90 degrees clockwise rotation is performed on the luminance output buffer 408 and/or the chroma output buffer 410 (e.g., one or more luminance output pixels and/or one or more chrominance output pixels). In one example, for an 8×3 source image, the stride vector can be set to ⅛,0.
In an example pseudo-code, a stride vector can be implemented as follows:
Referring now to
The scaling component 604 can be configured to scale the image frame. For example, the scaling component 604 can be configured to resize pixels in the luminance output buffer 408 and/or the chroma output buffer 410 (e.g., one or more luminance output pixels and/or one or more chrominance output pixels). In one example, the scaling component 604 can scale an image frame if a preview resolution on a camera does not match a resolution of an encoder. The scaling component 604 can also be configured to clip pixels in the luminance output buffer 408 and/or the chroma output buffer 410 (e.g., clip an image frame). Rather than constricting input source texture vertices, a clip transformation can be implemented in the calculation of wrapped vertices. Therefore, a calculation for a scaled image can be implemented as follows:
realSrcX=clipX+scaleX*(1−2*clipX)*(rotatedSrcX−biasX)
realSrcY=clipY+scaleY*(1−2*clipY)*(rotatedSrcY−biasY)
Referring now to
Accordingly, the YUV conversion component 702 can receive a planar image frame (e.g., a source image) in a particular color space format. The planar image frame can include a plane of luminance (Y) data, followed by a plane of chrominance (U) data and a plane of chrominance (V) data (or a plane of chrominance (V) data and a plane of chrominance (U) data). For example, the YUV conversion component 702 can receive a planar image frame in a particular color space format. For example, the planar image frame can be configured in a I420 (e.g., YUV 4:2:0) color space format, where the image frame includes one plane of Y luminance data, a plane of U chrominance data, and a plane of V chrominance data.
The YUV conversion component 702 can transform the planar image frame into a semi-planar image frame. The semi-planar image frame can include a plane (e.g., a group) of luminance (Y) data, followed by a plane (e.g., a group) of chrominance (UV) data. For example, the generated semi-planar image frame can be configured in a NV21 (e.g., YUV 4:2:0 semi-planar) color space format, where the image frame includes one plane of Y luminance data and one plane of interleaved V chrominance data and U chrominance data. In another example, the generated semi-planar image frame can be configured in a NV12 (e.g., YUV 4:2:0 semi-planar) color space format, where the image frame includes one plane of Y luminance data and one plane of interleaved U chrominance data and V chrominance data. However, it is to be appreciated that the generated semi-planar image frame can be implemented in other YUV formats, such as, but not limited to, a YUV 4:1:1 semi-planar format, a YUV 4:2:2 semi-planar format, or a YUV 4:4:4 semi-planar format.
The texture component 704 can be configured to generate one or more luminance (e.g., luma) input pixels and one or more chrominance (e.g., chroma) input pixels from a source image. The one or more luminance input pixels can each include a luma component (e.g., Y component) and the one or more chrominance input pixels can each include a first chroma component and a second chroma component (e.g., a U component and a V component). The luminance component 706 can be configured to generate one or more luminance output pixels. The one or more luminance output pixels can each include a group of luminance input pixels. The chrominance component 708 can be configured to generate one or more chrominance output pixels. The one or more chrominance output pixels can include a group of first chroma components and a group of second chroma components.
In one example, the YUV conversion component 702 can be implemented in a GPU (e.g., the GPU 202). However it is to be appreciated that the YUV conversion component 102 can also be implemented in a CPU (e.g., the CPU 204). The YUV conversion component 702 can send the semi-planar image frame to the CPU 204 and/or the encoder 206. Therefore, the system 700 can be configured to convert the image frame in a first color space format (e.g., a planar image frame format) to a second color space format (e.g., a semi-planar image frame format). In one example, the luminance component 706 and/or the chrominance component 708 can be implemented using a shader (e.g., a computer program) to calculate (e.g., transform) the graphic data (e.g., luminance and/or chrominance data).
While
Referring now to
Referring now to
A vertex shader can be programmed to interpolate across the entire source space and destination space. Therefore, a fragment shader can allow the source coordinates to wrap. For the top half of the destination (e.g., the chroma output buffer 410), the chrominance component U can be sampled from 0<=srcY<1. For the bottom half of the destination (e.g., the chroma output buffer 410), the chrominance component V can be sampled from 0<=srcY<1. Therefore:
For top half of output:
For the bottom half of output:
Referring now to
For 90 degrees of rotation, to go from U25 to U17 involves moving vertically in the source image. Therefore, the stride vector can be set to 0,¼, since moving one pixel to the right in destination space involves moving vertically ¼ of the image in source space. As such, for 90 degrees of rotation, for the top half of the destination (e.g., the chroma output buffer 410), the chrominance component U is sampled from 0<=srcX<1. From 8<=dstY<=15, the chrominance component V is sampled from 0<=srcX<1.
Therefore, for a rotation of 90 degrees, the coordinates are:
For top half of output:
For the bottom half of output:
For a rotation of 270 degrees, the coordinates are:
For top half of output:
For the bottom half of output:
Additionally or alternatively, the rotation component 602 can implement a bias vector and/or a scale vector. For example, for 0 and 180 degrees of rotation, scaleX=1 and scaleY=2, respectively. For 90 and 270 degree of rotation, scaleX=2 and scaleY=1, respectively. The bias vector can be rotated by the source rotation matrix so that in a non-rotated scenario, the bias vector is zero for the top half of the destination (e.g., the chroma output buffer 410) and the bias vector is 0.5 for the bottom half of the destination (e.g., the chroma output buffer 410). Therefore, the coordinates can be computed as follows:
realSrcX=scaleX*(rotatedSrcX−biasX)
realSrcY=scaleY*(rotatedSrcY−biasY)
Referring to
Initially, image and/or video information can be captured or can be contained within memory. At 1102, one or more luminance input pixels can be generated (e.g., using a texture component 104) from a source image. The one or more luminance input pixels can each include a luma component. For example, a luminance input buffer 402 in the texture component 104 can be formed to include luminance pixels (e.g., the pixels A-X) from a source image. At 1104, one or more chrominance input pixels can be generated (e.g., using texture component 104) from the source image. The one or more chrominance input pixels can each include a first chroma component and a second chroma component. For example, the chroma input buffer 404 in the texture component 104 can be formed to include chrominance pixels (e.g., the pixels V1, U1-V32, U32) from the source image. At 1106, one or more luminance output pixels can be generated (e.g., using luminance component 106). The one or more luminance output pixels can each include a group of luminance input pixels. For example, an output pixel (e.g., the pixel 802) with a group of luminance input pixels can include the pixels A, B, C and D. At 1108, one or more chrominance output pixels can be generated (e.g., using chrominance component 108). The one or more chrominance output pixels can each include a group of first chroma components or a group of second chroma components. For example, an output pixel (e.g., the pixel 904) with a group of first chrominance components can include pixels U1, U2, U3 and U4, and an output pixel (e.g., the pixel 906) with a group of second chrominance components can include pixels V1, V2, V3 and V4.
Referring to
What has been described above includes examples of the implementations of the present invention. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the claimed subject matter, but it is to be appreciated that many further combinations and permutations of the subject innovation are possible. Accordingly, the claimed subject matter is intended to embrace all such alterations, modifications, and variations that fall within the spirit and scope of the appended claims. Moreover, the above description of illustrated implementations of the subject disclosure is not intended to be exhaustive or to limit the disclosed implementations to the precise forms disclosed. While specific implementations and examples are described herein for illustrative purposes, various modifications are possible that are considered within the scope of such implementations and examples, as those skilled in the relevant art can recognize.
As used in this application, the terms “component,” “module,” “system,” or the like are generally intended to refer to a computer-related entity, either hardware (e.g., a circuit), a combination of hardware and software, software, or an entity related to an operational machine with one or more specific functionalities. For example, a component may be, but is not limited to being, a process running on a processor (e.g., digital signal processor), a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a controller and the controller can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
The systems and processes described above can be embodied within hardware, such as a single integrated circuit (IC) chip, multiple ICs, an application specific integrated circuit (ASIC), or the like. Further, the order in which some or all of the process blocks appear in each process should not be deemed limiting. Rather, it should be understood that some of the process blocks can be executed in a variety of orders that are not illustrated herein.
In regards to the various functions performed by the above described components, devices, circuits, systems and the like, the terms used to describe such components are intended to correspond, unless otherwise indicated, to any component which performs the specified function of the described component (e.g., a functional equivalent), even though not structurally equivalent to the disclosed structure, which performs the function in the herein illustrated exemplary aspects of the claimed subject matter. In this regard, it will also be recognized that the innovation includes a system as well as a computer-readable storage medium having computer-executable instructions for performing the acts and/or events of the various methods of the claimed subject matter.
The aforementioned systems/circuits/modules have been described with respect to interaction between several components/blocks. It can be appreciated that such systems/circuits and components/blocks can include those components or specified sub-components, some of the specified components or sub-components, and/or additional components, and according to various permutations and combinations of the foregoing. Sub-components can also be implemented as components communicatively coupled to other components rather than included within parent components (hierarchical). Additionally, it should be noted that one or more components may be combined into a single component providing aggregate functionality or divided into several separate sub-components, and any one or more middle layers, such as a management layer, may be provided to communicatively couple to such sub-components in order to provide integrated functionality. Any components described herein may also interact with one or more other components not specifically described herein but known by those of skill in the art.
Reference throughout this specification to “one embodiment” or “an embodiment” or “one implementation” or “an implementation” means that a particular feature, structure, or characteristic described in connection with the embodiment or implementation is included in at least one embodiment or implementation. Thus, the appearances of the phrase “in one embodiment” or “in an embodiment” or “in one implementation” or “in an implementation” in various places throughout this specification are not necessarily all referring to the same embodiment or implementation.
In addition, while a particular feature of the subject innovation may have been disclosed with respect to only one of several implementations, such feature may be combined with one or more other features of the other implementations as may be desired and advantageous for any given or particular application. Furthermore, to the extent that the terms “includes,” “including,” “has,” “contains,” variants thereof, and other similar words are used in either the detailed description or the claims, these terms are intended to be inclusive in a manner similar to the term “comprising” as an open transition word without precluding any additional or other elements.
Number | Name | Date | Kind |
---|---|---|---|
6674479 | Cook et al. | Jan 2004 | B2 |
7298379 | Xu et al. | Nov 2007 | B2 |
7580456 | Li et al. | Aug 2009 | B2 |
7961784 | Demos | Jun 2011 | B2 |
7970206 | Harris et al. | Jun 2011 | B2 |
8005144 | Ji et al. | Aug 2011 | B2 |
8014611 | Morohashi | Sep 2011 | B2 |
8259809 | Lin | Sep 2012 | B2 |
20050201464 | Lee | Sep 2005 | A1 |
20070002048 | Takashima et al. | Jan 2007 | A1 |
20080260031 | Karczewicz | Oct 2008 | A1 |
20110026820 | Strom et al. | Feb 2011 | A1 |
20110085027 | Yamashita et al. | Apr 2011 | A1 |
20110170006 | Evans et al. | Jul 2011 | A1 |
20110182357 | Kim et al. | Jul 2011 | A1 |
20110216968 | Fillion et al. | Sep 2011 | A1 |
20110235930 | Kim et al. | Sep 2011 | A1 |
20110249734 | Segall et al. | Oct 2011 | A1 |
20110261886 | Suzuki et al. | Oct 2011 | A1 |
20120163464 | Edelhaeusser et al. | Jun 2012 | A1 |
20130027584 | Zerwick | Jan 2013 | A1 |
Number | Date | Country |
---|---|---|
0765087 | Mar 1997 | EP |
1206881 | May 2002 | EP |
2317525 | Mar 1998 | GB |
W09740628 | Oct 1997 | WO |
Entry |
---|
Bankoski et al. “Technical Overview of VP8, an Open Source Video Codec for the Web”. Dated Jul. 11, 2011. |
Bankoski et al. “VP8 Data Format and Decoding Guide” Independent Submission. RFC 6389, Dated Nov. 2011. |
Bankoski et al. “VP8 Data Format and Decoding Guide; draft-bankoski-vp8-bitstream-02” Network Working Group. Internet-Draft, May 18, 2011, 288 pp. |
Cheung, H. K. and W.C. Siu, “Local affine motion prediction for h.264 without extra overhead,” in IEEE Int. Symposium on circuits and Systems (ISCAS), 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. |
Overview; VP7 Data Format and Decoder. Version 1.5. On2 Technologies, Inc. Dated Mar. 28, 2005. |
Kordasiewicz, R. C., M. D. Gallant and S. Shirani, “Affine motion prediction based on transalational motion vectors,” IEEE Trans. Circuits Syst. Video Technol. vol. 17, No. 10, pp. 1388-1394, Oct. 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. |
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. |
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; 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. |
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. |
VP6 Bitstream & Decoder Specification. Version 1.02. On2 Technologies, Inc. Dated Aug. 17, 2006. |
VP6 Bitstream & Decoder Specification. Version 1.03. On2 Technologies, Inc. Dated Oct. 29, 2007. |
VP8 Data Format and Decoding Guide. WebM Project. Google On2. Dated: Dec. 1, 2010. |