System and method for decoding digital video data. The decoding system employs hardware accelerators that assist a core processor in performing selected decoding tasks. The hardware accelerators are configurable to support a plurality of existing and future encoding/decoding formats. The accelerators are configurable to support substantially any existing or future encoding/decoding formats that fall into the general class of DCT-based, entropy decoded, block-motion-compensated compression algorithms. The hardware accelerators illustratively comprise a programmable entropy decoder, an inverse quantization module, a inverse discrete cosine transform module, a pixel filter, a motion compensation module and a de-blocking filter. The hardware accelerators function in a decoding pipeline wherein at any given stage in the pipeline, while a given function is being performed on a given macroblock, the next macroblock in the data stream is being worked on by the previous function in the pipeline.
|
0. 25. A method of decoding a digital media data stream, comprising:
(a) receiving media data of a first encoding/decoding format;
(b) configuring at least one external decoding function based on the first encoding/decoding format;
(c) decoding media data of the first encoding/decoding format using the at least one external decoding function;
(d) receiving media data of a second encoding/decoding format;
(e) configuring the at least one external decoding function based on the second encoding/decoding format; and
(f) decoding media data of the second encoding/decoding format using the at least one external decoding function,
wherein decoding media data using the at least one external decoding function in operations (c) and (f) comprises at least one configurable hardware module performing the at least one external decoding function, and wherein configuring the at least one external decoding function in operations (b) and (e) comprises configuring the at least one configurable hardware module,
wherein the at least one configurable hardware module is a plurality of configurable hardware modules, and wherein each of the plurality of configurable hardware modules performs at least one decoding function,
wherein none of the plurality of configurable hardware modules includes a processor.
1. A method of decoding a digital media data stream, comprising:
(a) receiving media data of a first encoding/decoding format;
(b) configuring at least one external decoding function based on the first encoding/decoding format;
(c) decoding media data of the first encoding/decoding format using the at least one external decoding function;
(d) receiving media data of a second encoding/decoding format;
(e) configuring the at least one external decoding function based on the second encoding/decoding format; and
(f) decoding media data of the second encoding/decoding format using the at least one external decoding function,
wherein decoding media data using the at least one external decoding function in operations (c) and (f) comprises at least one configurable hardware module performing the at least one external decoding function, and wherein configuring the at least one external decoding function in operations (b) and (e) comprises configuring the at least one configurable hardware module,
wherein the at least one configurable hardware module is a plurality of configurable hardware modules, and wherein each of the plurality of configurable hardware modules performs at least one decoding function,
wherein at least one of the plurality of configurable hardware modules does not include a processor.
0. 27. A method of decoding a digital media data stream, comprising:
(a) receiving media data of a first encoding/decoding format;
(b) configuring at least one external decoding function based on the first encoding/decoding format;
(c) decoding media data of the first encoding/decoding format using the at least one external decoding function;
(d) receiving media data of a second encoding/decoding format;
(e) configuring the at least one external decoding function based on the second encoding/decoding format; and
(f) decoding media data of the second encoding/decoding format using the at least one external decoding function,
wherein decoding media data using the at least one external decoding function in operations (c) and (f) comprises at least one configurable hardware module performing the at least one external decoding function, and wherein configuring the at least one external decoding function in operations (b) and (e) comprises configuring the at least one configurable hardware module,
wherein the at least one configurable hardware module is a plurality of configurable hardware modules, and wherein each of the plurality of configurable hardware modules performs at least one decoding function,
wherein each of the configurable hardware modules is separate from others of the plurality of configurable hardware modules.
0. 31. A method of decoding a digital media data stream, comprising:
(a) receiving media data of a first encoding/decoding format;
(b) configuring at least one external decoding function based on the first encoding/decoding format;
(c) decoding media data of the first encoding/decoding format using the at least one external decoding function;
(d) receiving media data of a second encoding/decoding format;
(e) configuring the at least one external decoding function based on the second encoding/decoding format; and
(f) decoding media data of the second encoding/decoding format using the at least one external decoding function,
wherein decoding media data using the at least one external decoding function in operations (c) and (f) comprises at least one configurable hardware module performing the at least one external decoding function, and wherein configuring the at least one external decoding function in operations (b) and (e) comprises configuring the at least one configurable hardware module,
wherein the at least one configurable hardware module is a plurality of configurable hardware modules, and wherein each of the plurality of configurable hardware modules performs at least one decoding function,
wherein each of the plurality of configurable hardware modules is independently controlled by a core decoding processor,
wherein the core decoding processor independently controls each of the plurality of configurable hardware modules by programming a register for each of the plurality of configurable hardware modules.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
8. The method of
0. 9. A video decoding method, comprising:
receiving a first video macroblock encoded in a first encoding format;
configuring a first external decoding function based on the first encoding format;
decoding the first video macroblock using the first external decoding function;
receiving a second video macroblock encoded in a second encoding format;
configuring a second external decoding function based on the second encoding format; and
decoding the second video macroblock using the second external decoding function.
0. 10. The method of
0. 11. The method of
0. 12. The method of
0. 13. The method of
0. 14. The method of
0. 15. The method of
0. 16. The method of
an entropy decoding function;
an inverse quantization function;
an inverse transform operation;
a pixel filtering function;
a motion compensation function; and
a de-blocking operation.
0. 17. A video decoding method, comprising:
determining a data format for a video data stream;
configuring a programmable entropy decoder to perform entropy decoding based on the determined data format;
configuring an inverse quantizer to perform an inverse quantization based on the determined data format;
configuring an inverse transform accelerator to perform an inverse transform operations based on the determined data format;
configuring a pixel filter to perform a pixel filtering based on the determined data format;
configuring a motion compensator to perform a motion compensation based on the determined data format; and
configuring a de-blocking filter to perform a de-blocking operation based on the determined data format.
0. 18. The method of
0. 19. The method of
0. 20. The method of
0. 21. The method of claim 1, wherein the plurality of configurable hardware modules comprises two or more configurable hardware modules selected from the group consisting of:
an inverse quantizer adapted to perform inverse quantization on the digital media data stream;
an inverse transform accelerator adapted to perform inverse transform operations on the digital media data stream;
a pixel filter adapted to perform pixel filtering on the digital media data stream;
a motion compensator adapted to perform motion compensation on the digital media data stream; and
a de-blocking filter adapted to perform a de-blocking operation on the digital media data stream.
0. 22. The method of claim 1, wherein the plurality of configurable hardware modules comprises four or more configurable hardware modules selected from the group consisting of:
an inverse quantizer adapted to perform inverse quantization on the digital media data stream;
an inverse transform accelerator adapted to perform inverse transform operations on the digital media data stream;
a pixel filter adapted to perform pixel filtering on the digital media data stream;
a motion compensator adapted to perform motion compensation on the digital media data stream; and
a de-blocking filter adapted to perform a de-blocking operation on the digital media data stream.
0. 23. The method of claim 1, wherein the plurality of configurable hardware modules comprises:
an inverse quantizer adapted to perform inverse quantization on the digital media data stream;
an inverse transform accelerator adapted to perform inverse transform operations on the digital media data stream;
a pixel filter adapted to perform pixel filtering on the digital media data stream;
a motion compensator adapted to perform motion compensation on the digital media data stream; and
a de-blocking filter adapted to perform a de-blocking operation on the digital media data stream.
0. 24. The method of claim 1, wherein the plurality of configurable hardware modules comprises three or more configurable hardware modules selected from the group consisting of:
an inverse quantizer adapted to perform inverse quantization on the digital media data stream;
an inverse transform accelerator adapted to perform inverse transform operations on the digital media data stream;
a pixel filter adapted to perform pixel filtering on the digital media data stream;
a motion compensator adapted to perform motion compensation on the digital media data stream; and
a de-blocking filter adapted to perform a de-blocking operation on the digital media data stream.
0. 26. The method of claim 24, wherein at least one of the plurality of configurable hardware modules is a hardware accelerator.
0. 28. The method of claim 24, wherein the plurality of configurable hardware modules runs in parallel according to a processing pipeline.
0. 29. The method of claim 28, further comprising, dictating, by a core decoding processor, the processing pipeline.
0. 30. The method of claim 24, wherein a core decoding processor programs a register for at least one of the configurable hardware modules.
|
This application is a reissue of U.S. patent application Ser. No. 13/608,221 filed Sep. 10, 2012 (now U.S. Pat. No. 9,417,883) entitled, “Video Decoding System Supporting Multiple Standards,” which is a divisional application of and claims priority to U.S. patent application Ser. No. 10/114,798, filed on Apr. 1, 2002, having the title “VIDEO DECODING SYSTEM SUPPORTING MULTIPLE STANDARDS,” and issued as U.S. Pat. No. 8,284,844 on Oct. 9, 2012, which is incorporated by reference herein as if expressly set forth in its entirety.
The present invention relates generally to video decoding systems, and more particularly to a video decoding system supporting multiple standards.
Digital video decoders decode compressed digital data that represent video images in order to reconstruct the video images. A relatively wide variety of encoding /decoding algorithms and encoding/decoding standards presently exist, and many additional algorithms and standards are sure to be developed in the future. The various algorithms and standards produce compressed video bit streams of a variety of formats. Some existing public format standards include MPEG -1, MPEG-2 (SD/HD), MPEG-4, H.263, H.263+ and H.26LIJVT. Also, private standards have been developed by Microsoft Corporation (Windows Media), RealNetworks, Inc., Apple Computer, Inc. (QuickTime), and others. It would be desirable to have a multi-format decoding system that can accommodate a variety of encoded bit stream formats, including existing and future standards, and to do so in a cost-effective manner.
A highly optimized hardware architecture can be created to address a specific video decoding standard, but this kind of solution is typically limited to a single format. On the other hand, a fully software based solution is often flexible enough to handle any encoding format, but such solutions tend not to have adequate performance for real time operation with complex algorithms, and also the cost tends to be too high for high volume consumer products. Currently a common software based solution is to use a general-purpose processor running in a personal computer, or to use a similar processor in a slightly different system. Sometimes the general-purpose processor includes special instructions to accelerate digital signal processor (DSP) operations such as multiply-accumulate (MAC); these extensions are intimately tied to the particular internal processor architecture. For example, in one existing implementation, an Intel Pentium processor includes an MMX instruction set extension. Such a solution is limited in performance, despite very high clock rates, and does not lend itself to creating mass market, commercially attractive systems.
Others in the industry have addressed the problem of accommodating different encoding/decocting algorithms by designing special purpose DSPs in a variety of architectures. Some companies have implemented Very Long Instruction Word (VLIW) architectures more suitable to video processing and able to process several instructions in parallel. In. these cases, the processors are difficult to program when compared to a general-purpose processor. Despite the fact that the DSP and VLIW architectures are intended for high performance, they still tend not to have enough performance for the present purpose of real time decoding of complex video algorithms. In special cases, where the processors are dedicated for decoding compressed video, special processing accelerators are tightly coupled to the instruction pipeline and are part of the core of the main processor.
Yet others in the industry have addressed the problem of accommodating different encoding/decoding algorithms by simply providing, multiple instances of hardware, each dedicated to a single algorithm. This solution is inefficient and is not cost-effective.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art through comparison of such systems with the present invention as set forth in the remainder of the present application with reference to the drawings.
One aspect of the present invention is directed to a digital media decoding system having a processor and a hardware accelerator. The processor is adapted to control a decoding process. The hardware accelerator is coupled to the processor and performs a decoding function on a digital media data stream. The accelerator is configurable to perform the decoding function according to a plurality of decoding methods.
Another aspect of the present invention is directed to a method of decoding a digital media data stream. Pursuant to the method, in a first stage, a first decoding function is performed on an ith data element of the data stream with a first decoding accelerator. In a second stage, after the first stage, a second decoding function is performed on the ith data element with a second decoding accelerator, while the first decoding function is performed on an i+1st data element in the data stream with the first decoding accelerator.
Another aspect of the present invention is directed to a method of decoding a digital video data stream. Pursuant to the method, in a first stage, entropy decoding is performed on an ith data element of the data stream. In a second stage, after the first stage, inverse quantization is performed on a product of the entropy decoding of the ith data element, while entropy decoding is performed on an i+1st data element in the data stream.
Still another aspect of the present invention is directed to a method of decoding a digital media data stream. Pursuant to this method, media data of a first encoding/decoding format is received. At least one external decoding function is configured based on the first encoding/decoding format. Media data of the first encoding/decoding format is decoded using the at least one external decoding function. Media data of a second encoding/decoding format is received. The at least one external decoding function is configured based on the second encoding/decoding format. Then media data of the second encoding/decoding format is decoded using the at least one external decoding function.
It is understood that other embodiments of the present invention will become readily apparent to those skilled in the art from the following detailed description, wherein embodiments of the invention are shown and described only by way of illustration of the best modes contemplated for carrying out the invention. As will be realized, the invention is capable of other and different embodiments and its several details are capable of modification in various other respects, all without departing from the spirit and scope of the present invention. Accordingly, the drawings and detailed description are to be regarded as illustrative in nature and not as restrictive.
These and other features, aspects, and advantages of the present invention will become better understood with regard to the following description, appended claims, and accompanying drawings where:
The present invention forms an integral part of a complete digital media system and provides flexible and programmable decoding resources.
The digital media system of
Aspects of the present invention relate to the architecture of digital video decoder 116. In accordance with the present invention, a moderately capable general purpose CPU with widely available development tools is used to decode a variety of coded streams using hardware accelerators designed as integral parts of the decoding process.
Specifically, the most widely-used compressed video formats fall into a general class of DCT-based, variable-length coded, block-motion-compensated compression algorithms. As mentioned above, these types of algorithms encompass a wide class of international, public and private standards, including MPEG-1, MPEG-2 (SD/HD), MPEG-4, H.263, H.263-F, H.26LINT, Microsoft Corp, Real Networks, QuickTime, and others. Fundamental functions exist that are common to most or all of these formats. Such functions include, for example, programmable variable-length decoding (VLD), arithmetic decoding (AC), inverse quantization (IQ), inverse discrete cosine transform (IDCT), pixel filtering (PF), motion compensation (MC), and deblocking/de-ringing (loop filtering or post-processing). The term “entropy decoding” may be used generically to refer to variable length decoding, arithmetic decoding, or variations on either of these. According to the present invention, these functions are accelerated by hardware accelerators.
However, each of the algorithms mentioned above implement some or all of these functions in different ways that prevent fixed hardware implementations from addressing all requirements without duplication of resources. In accordance with one aspect of the present invention, these hardware modules are provided with sufficient flexibility or programmability enabling a decoding system that decodes a variety of standards efficiently and flexibly.
The decoding system of the present invention employs high-level granularity acceleration with internal programmability or configurability to achieve the requirements above by implementation of very fundamental processing structures that can be configured dynamically by the core decoder processor. This contrasts with a system employing fine-granularity acceleration, such as multiply-accumulate (MAC), adders, multipliers, FFT functions, DCT functions, etc. In a fine-granularity acceleration system, the decompression algorithm has to be implemented with firmware that uses individual low-level instructions (such as MAC) to implement a high-level function, and each instruction runs on the core processor. In the high-level granularity system of the present invention, the firmware configures each hardware accelerator, which in turn represent high-level functions (such as motion compensation) that run (using a well-defined specification of input data) without intervention from the main core processor. Therefore, each hardware accelerator runs in parallel according to a processing pipeline dictated by the firmware in the core processor. Upon completion of the high-level functions, each accelerator notifies the main core processor, which in turn decides what the next processing pipeline step should be.
The software control typically consists of a simple pipeline that orchestrates decoding by issuing commands to each hardware accelerator module for each pipeline stage, and a status reporting mechanism that makes sure that all modules have completed their pipeline tasks before issuing the start of the next pipeline stage.
Programmable variable length decoder (PVLD) 306, inverse quantizer 308, inverse transform module 309, pixel filter 310, motion compensation module 312 and loop/post filter 314 are hardware accelerators that accelerate special decoding tasks that would otherwise be bottlenecks for real-time video decoding if these tasks were handled by the core processor 302 alone. Each hardware module 306, 308, 309, 310, 312 and 314 is internally configurable or programmable to allow changes according to various processing algorithms. In an alternative embodiment, modules 308 and 309 are implemented in the form of a transform engine 307 that handles all functionality, but which is conceptually equivalent to the union of 308 and 309. In a further alternative embodiment, modules 310 and 312 are implemented in the form of a filter engine 311 which consists of an internal SIMD (single instruction multiple data) processor and a general purpose controller to interface to the rest of the system, but which is conceptually equivalent to the union of 310 and 312. In a further alternative embodiment, module 314 is implemented in the form of another filter engine similar to 311 which consists of an internal SIMD (single instruction multiple data) processor and a general purpose controller to interface to the rest of the system, but which is conceptually equivalent to 314. In a further alternative embodiment, module 314 is implemented in the form of the same filter engine 311 that can also implement the equivalent function of the combination of 310 and 311. Each hardware module 306, 308, 309, 310, 312 and 314 performs its task after being so instructed by the core processor 302. In-an illustrative embodiment of the present invention, each hardware module includes a status register that indicates whether the module has completed its assigned tasks. The ore processor 302 polls the status register to determine whether the hardware module has completed its task. In an alternative embodiment, the hardware accelerators share a status register.
In an illustrative embodiment, the PVLD engine 306 performs variable-length code (VLD) decoding of the block DCT coefficients. It also helps the core processor 302 to decode the header information in the compressed bitstream. In an illustrative embodiment of the present invention, the PVLD module 306 is designed as a coprocessor to the core processor 302, while the rest of the modules 308,309,310,312 and 314 are designed as hardware accelerators. Also, in an illustrative embodiment, the PVLD module 306 includes two variable length decoders. Each of the two programmable variable-length decoders can be hardwired to efficiently perform decoding according to a particular video compression standard, such as MPEG2 HD. One of them can be optionally set as a programmable VLD engine, with a code RAM to hold VLC tables for media coding formats other than MPEG2. The two VLD engines are controlled independently by the core processor 302, and either one or both of them will be employed at any given time, depending on the application.
The IQ engine 308 performs run-level pair decoding, inverse scan and quantization. The inverse transform engine 309 performs IDCT operations or other inverse transform operations like the Integer Transform of the H.26x standards. In an illustrative embodiment of the present invention, the IQ module 308 and the inverse transform module 309 are part of a common hardware module and use a similar interface to the core processor 302.
The pixel filter 310 performs pixel filtering and interpolation. The motion compensation module 312 performs motion compensation. The pixel filter 310 and motion compensation module 312 are shown as one module in the diagram to emphasize a certain degree of direct cooperation between them. In an illustrative embodiment of the present invention, the PF module 310 and the MC module 312 are part of a common programmable module 311 designated as a filter engine capable of performing internal SIMD instructions to process data in parallel with an internal control processor.
The filter module 314 performs the de-blocking operation common in many low bit-rate coding standards. In one embodiment of the present invention, the filter module comprises a loop filter that performs de-blocking within the decoding loop. In another embodiment, the filter module comprises a post filter that performs de-blocking outside the decoding loop. In yet another embodiment, the filter module comprises a de-ringing filter, which may function as either a loop filter or a post filter, depending on the standard of the video being processed. In yet another embodiment, the filter module 314 includes both a loop filter and a post filter. Furthermore, in yet another embodiment, the filter module 314 is implemented using the same filter engine 311 implementation as for 310 and 312, except that module 311 is programmed to produce deblocked or deringed data as the case may be.
The bridge module 304 arbitrates and moves picture data between decoder memory 316 and main memory. The bridge interface 304 includes an internal bus network that includes arbiters and a direct memory access (DMA) engine. The bridge 304 serves as an interface to the system buses.
In an illustrative embodiment of the present invention, the display feeder module 318 reads decoded frames from main memory and manages the horizontal scaling and displaying of picture data. The display feeder 318 interfaces directly to a display module. In an illustrative embodiment, the display feeder 318 converts from 420 to 422 color space. Also, in an illustrative embodiment, the display feeder 318 includes multiple feeder interfaces, each including its own independent color space converter and horizontal scaler. The display feeder 318 handles its own memory requests via the bridge module 304.
Decoder memory 316 is used to store macroblock data and other time-critical data used during the decode process. Each hardware block 306, 308, 309, 310, 312, 314 accesses decoder memory 316 to either read the data to be processed or write processed data back. In an illustrative embodiment of the present invention, all currently used data is stored in decoder memory 316 to minimize accesses to main memory. Each hardware module 306, 308, 309, 310, 312, 314 is assigned one or more buffers in decoder memory 316 for data processing. Each module accesses the data in decoder memory 316 as the macro blocks are processed through the system. In an exemplary embodiment, decoder memory 316 also includes parameter buffers that are adapted to hold parameters that are needed by the hardware modules to do their job at a later macroblock pipeline stage. The buffer addresses are passed to the hardware modules by the core processor 302. In an illustrative embodiment, decoder memory 316 is a static random access memory (SRAM) unit.
The core processor 302 is the master of the decoding system 300. It controls the data flow of decoding processing. All video decode processing, except where otherwise noted, is performed in the core processor. The PVLD 306, IQ 308, inverse transform 309, PF 310 and MC 312, and filter 314 are hardware accelerators to help the core processor achieve the required performance. In an illustrative embodiment of the present invention, the core processor 302 is a MIPS processor, such as a MIPS32 implementation, for example. The core processor 302 incorporates a D cache and an I cache. The cache sizes are chosen to ensure that time critical operations are not impacted by cache misses. For example, instructions for macroblock-level processing of MPEG-2 video runs from cache. For other algorithms, time-critical code and data also reside in cache. The determination of exactly which functions are stored in cache involves a trade-off between cache size, main memory access time, and the degree of certainty of the firmware implementation for the various algorithms. The cache behavior with proprietary algorithms depends in part in the specific software design. In an illustrative embodiment, the cache sizes are 16 kB for instructions and 4 kB for data. These can be readily expanded if necessary.
At the macroblock level, the core processor 302 interprets the decoded bits for the appropriate headers and decides and coordinates the actions of the hardware blocks 306, 308, 309, 310, 312 and 314. Specifically, all macroblock header information, from the macroblock address increment (MBAinc) to motion vectors (MV s) and to the cbp pattern in the case of MPEG2 decoding, for example, is derived by the core processor 302. The core processor 302 stores related information in a particular format or data structure (determined by the hardware module specifications) in the appropriate buffers in the decoder memory 316. For example, the quantization scale is passed to the buffer the IQ engine 308; macroblock type, motion type and pixel precision are stored in the parameter buffer for the pixel filter engine 310. The core processor keeps track of certain information in order to maintain the correct pipeline, and it may store some such information in its D cache, some in main system memory and some in the decoder memory 316, as required by the specific algorithm being performed. For example, for some standards, motion vectors of the macroblock are kept as the predictors for future motion vector derivation.
In an illustrative embodiment the programmable variable length decoder 306 performs decoding of variable length codes (VLC) in the compressed bit stream to extract values, such as DCT coefficients, from the compressed data stream. Different coding formats generally have their own unique VLC tables. The PVLD 306 is completely configurable in terms of the VLC tables it can process. The PVLD 306 can accommodate a dynamically changing set of VLC tables, for example they may change on a macroblock-to-macroblock basis. In an illustrative embodiment of the present invention, the PVLD 306 includes a register that the core processor can program to guide the PVLD 306 to search for the VLC table of the appropriate encoding/decoding algorithm. The PVLD 306 decodes variable length codes in as little as one clock, depending on the specific code table in use and the specific code being decoded.
The PVLD 306 is designed to support the worst-case requirement for VLD operation with MPEG-2 HDTV (MP@HL), while retaining its full programmability. The PVLD 306 includes a code table random access memory (RAM) for fastest performance. Code tables such a MPEG-2 video can fit entirely within the code RAM. Some formats, such as proprietary formats, may require larger code tables that do not fit entirely within the code RAM in the PVLD 306. For such cases, the PVLD 306 can make use of both the decoder memory 316 and the main memory as needed. Performance of VLC decoding is reduced somewhat when codes are searched in video memory 316 and main memory. Therefore, for formats that require large tables of VLC codes, the most common codes are typically stored in the PVLD code RAM, the next most common codes are stored in decoder memory, and the least common codes are stored in main memory. Also, such codes are stored in decoder memory 316 and main memory such that even when extended look-ups in decoder memory 316 and main memory are required, the most commonly occurring codes are found more quickly. This allows the overall performance to remain exceptionally high.
In an illustrative embodiment of the present invention, the PVLD 306 is architected as a coprocessor of the core processor 302. That is, it can operate on a single-command basis where the core processor issues a command (via a coprocessor instruction) and waits (via a Move From Coprocessor instruction) until it is executed by the PVLD 306, without polling to determine completion of the command. This increases performance when a large number of VLC codes are parsed under software control. Additionally, the PVLD 306 can operate on a block-command basis where the core processor 302 commands the PVLD 306 to decode a complete block of VLC codes, such as DCT coefficients, and the core processor 302 continues to perform other tasks in parallel. In this case, the core processor 302 verifies the completion of the block operation by checking a status bit in the PVLD 306. The PVLD produces results (tokens) that are stored in decoder memory 316.
The PVLD 306 checks for invalid codes and recovers gracefully from them. Invalid codes may occur in the coded bit stream for a variety of reasons, including errors in the video encoding, errors in transmission, and improper discontinuities in the stream.
The inverse quantizer module 308 performs run-level code (RLC) decoding, inverse scanning (also called zig-zag scanning), inverse quantization and mismatch control. The coefficients, such as DCT coefficients, extracted by the PVLD 306 are processed by the inverse quantizer 308 to bring the coefficients from the quantized domain to the DCT domain. In an exemplary embodiment of the present invention, the IQ module 308 obtains its input data (run-level values) from the decoder memory 316, as the result of the PVLD module 306 decoding operation. In an alternative embodiment, the IQ module 308 obtains its input data directly from the PVLD 306. This alternative embodiment is illustratively employed in conjunction with encoding/decoding algorithms that are relatively more involved, such as MPEG-2 HD decoding, for best performance. The run-length, value and end-of-block codes read by the IQ module 308 are compatible with the format created by the PVLD module when it decodes blocks of coefficient VLCs, and this format is not dependent on the specific video coding format being decoded. In an exemplary embodiment, the IQ 308 and inverse transform 309 modules form part of a tightly coupled module labeled transform engine 307. This embodiment has the advantage of providing fast communication between modules 308 and 309 by virtue of being implemented in the same hardware block.
The scan pattern of the IQ module 308 is programmable in order to be compatible with any required pattern. The quantization format is also programmable, and mismatch control supports a variety of methods, including those specified in MPEG-2 and MPEG-4. In an exemplary embodiment, the IQ module 308 can accommodate block sizes of 16×16, 8×8, 8×4, 4×8 and 4×4. In an illustrative embodiment of the present invention, the IQ module 308 includes one or more registers that are used to program the scan pattern, quantization matrix and mismatch control method. These registers are programmed by the core processor 302 to dictate the mode of operation of the IQ module. The IQ module 306 is designed in such a way that the core processor 302 can intervene at any point in the process, in case a particular decoding algorithm requires software processing of some aspect of the algorithmic steps performed by the IQ module 308. For example, there may be cases where an unknown algorithm could require a different form of rounding; this can be performed in the core processor 302. The IQ module 308 has specific support for AC prediction as specified in MPEG-4 Advanced Simple Profile. In an exemplary embodiment, the IQ module 308 also has specific support for the inverse quantization functions of the ISO-ITU NT (Joint Video Team) standard under development.
The inverse transform module 309 performs the inverse transform to convert the coefficients produced by the IQ module 308 from the frequency domain to the spatial domain. The primary transform supported is the IDCT, as specified in MPEG-2, MPEG-4, IEEE, and several other standards. The coefficients are programmable, and it can support alternative related transforms, such as the “linear” transform in H.26L (also known as JVT), which is not quite the same as IDCT. The inverse transform module 309 supports a plurality of matrix sizes, including 8×8, 4×8, 8×4 and 4×4 blocks. In an illustrative embodiment of the present invention, the inverse transform module 309 includes a register that is used to program the matrix size. This register is programmed by the core processor 302 according to the appropriate matrix size for the encoding/decoding format of the data stream being decoded.
In an illustrative embodiment of the present invention, the coefficient input to the inverse transform module 309 is read from decoder memory 316, where it was placed after inverse quantization by the IQ module 308. The transform result is written back to decoder memory 316. In an exemplary embodiment, the inverse transform module 309 uses the same memory location in decoder memory 316 for both its input and output, allowing a savings in on-chip memory usage. In an alternative embodiment, the coefficients produced by the IQ module are provided directly to the inverse transform module 309, without first depositing them in decoder memory 316. To accommodate this direct transfer of coefficients, in one embodiment of the present invention, the IQ module 308 and inverse transform module 309 use a common interface directly between them for this purpose. In an exemplary embodiment, the transfer of coefficients from the IQ module 308 to the inverse transform module 309 can be either direct or via decoder memory 316. For encoding/decoding algorithms that require very high rates of throughput, such as MPEG-2 HD decoding, the transfer is direct in order to save time and improve performance.
In an illustrative embodiment, the functionality of the PF 310 and MC 312 are implemented by means of a filter engine (FE) 311. The FE is the combination of an 8-way SIMD processor 2002 and a 32-bit RISC processor 2004, illustrated in
Referring again to
The pixel filter 310 performs the interpolation necessary when a reference block is translated (motion-compensated) by a vector that cannot be represented by an integer number of whole-pixel locations. For example, a hypothetical motion vector may indicate to move a particular block 10.5 pixels to the right and 0.25 pixels down for the motion-compensated prediction. In an illustrative embodiment of the present invention, the motion vectors are decoded by the PVLD 3D6 in a previous processing pipeline stage and are further processed in the core processor 302 before being passed to the pixel filter, typically via the decoder memory 316. Thus, the pixel filter 310 gets the motion information as vectors and not just bits from the bitstream. In an illustrative embodiment, the reference block data that is used by the motion compensation process is read by the pixel filter 310 from the decoder memory 316, the required data having been moved to decoder memory 316 from system memory 110; alternatively the pixel filter obtains the reference block data from system memory 110. Typically the pixel filter obtains the processed motion vectors from decode memory 316. The pixel data that results from motion compensation of a given macroblock is stored in memory after decoding of said macroblock is complete. In an illustrative embodiment, the decoded macroblock data is written to decoder memory 316 and then transferred to system memory 110; alternatively, the decoded macro block data may be written directly to system memory 110. If and when that decoded macroblock data is needed for additional motion compensation of another macroblock, the pixel filter 310 retrieves the reference macroblock pixel information from memory, as above, and again the reconstructed macroblock pixel information is written to memory, as above.
The pixel filter 310 supports a variety of filter algorithms, including ½ pixel and ¼ pixel interpolations in either or both of the horizontal and vertical axes; each of these can have many various definitions, and the pixel filter can be configured or programmed to support a wide variety of filters, thereby supporting a wide range of video formats, including proprietary formats. The PF module can process block sizes of 4, 8 or 16 pixels per dimension (horizontal and vertical), or even other sizes if needed. The pixel filter 310 is also programmable to support different interpolation algorithms with different numbers of filter taps, such as 2, 4, or 6 taps per filter, per dimension. In an illustrative embodiment of the present invention, the pixel filter 309 includes one or more registers that are used to program the filter algorithm and the block size. These registers are programmed by the core processor 302 according to the motion compensation technique employed with the encoding/decoding format of the data stream being decoded. In another illustrative embodiment, the pixel filter is implemented using the filter engine (FE) architecture, which is programmable to support any of a wide variety of filter algorithms. As such, in either type of embodiment, it supports a very wide variety of motion compensation schemes.
The motion compensation module 312 reconstructs the macroblock being decoded by performing the addition of the decoded difference (or residual or “error”) pixel information from the inverse transform module 309 to the pixel prediction data from the output of the pixel filter 310. The motion compensation module 312 is programmable to support a wide variety of block sizes, including 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 and 4×4. The motion compensation module 312 is also programmable to support different transform block types, such as field-type and frame-type transform blocks. The motion compensation module 312 is further programmable to support different matrix formats. Furthermore, MC module 312 supports all the intra and inter prediction modes in the H.26L/JVT proposed standard. In an illustrative embodiment of the present invention, the motion compensation module 312 includes one or more registers that are configurable to select the block size and format. These registers are programmed by the core processor 302 according to the motion compensation technique employed with the encoding/decoding format of the data stream being decoded. In another illustrative embodiment, the motion compensation module is a function of a filter engine (FE) that is serving as the pixel filter and motion compensation modules, and it is programmable to perform any of the motion compensation functions and variations that are required by the format being decoded.
The loop filter 313 and post filter 315 perform de-blocking filter operations. In an illustrative embodiment of the present invention, the loop filter 313 and post filter 315 are combined in one filter module 314, as shown in
In one embodiment of the present invention, the input data to the loop filter 313 and post filter 315 comes from decoder memory 316, the input pixel data having been transferred from system memory 110 as appropriate, typically at the direction of the core processor 302. This data includes pixel and block/macroblock parameter data generated by other modules in the decoding system 300. The output data from the loop filter 313 and post filter 315 is written into decoder memory 316. The core processor 302 then causes the processed data to be put in its correct location in system memory 110. The core processor 302 can program operational parameters into loop filter 313 and post filter 315 registers at any time. In an illustrative embodiment, all parameter registers are double buffered. In another illustrative embodiment the loop filter 313 and post filter 315 obtain input pixel data from system memory 110, and the results may be written to system memory 110.
The loop filter 313 and post filter 315 are both programmable to operate according to any of a plurality of different encoding/decoding algorithms. In the embodiment wherein loop filter 313 and post filter 315 are separate hardware units, the loop filter 313 and post filter 315 can be programmed similarly to one another. The difference is where in the processing pipeline each filter 313, 315 does its work. The loop filter 313 processes data within the reconstruction loop and the results of the filter are used in the actual reconstruction of the data. The post filter 315 processes data that has already been reconstructed and is fully decoded in the two-dimensional picture domain. In an illustrative embodiment of the present invention, the coefficients, thresholds and other parameters employed by the loop filter 313 and the post filter 315 (or, in the alternative embodiment, filter module 314) are programmed by the core processor 302 according to the de-blocking technique employed with the encoding/decoding format of the data stream being decoded.
The core processor 302, bridge 304, PVLD 306, IQ 308, inverse transform module 309, pixel filter 310, motion compensation module 312, loop filter 313 and post filter 315 have access to decoder memory 316 via the internal bus 322 or via equivalent functionality in the bridge 304. In an exemplary embodiment of the present invention, the PVLD 306, IQ 308, inverse transform module 309, pixel filter 310, motion compensation module 312, loop filter 313 and post filter 315 use the decoder memory 316 as the source and destination memory for their normal operation. In another embodiment, the PL VD 306 uses the system memory 110 as the source of its data in normal operation. In another embodiment, the pixel filter 310 and motion compensation module 312, or the equivalent function in the filter module 314, use the decoder memory 316 as the source for residual pixel information and they use system memory 110 as the source for reference pixel data and as the destination for reconstructed pixel data. In another embodiment, the loop filter 313 and post processor 315, or the equivalent function in the filter module 314, use system memory 110 as the source and destination for pixel data in normal operation. The CPU has access to decoder memory 316, and the DMA engine 304 can transfer data between decoder memory 316 and the main system memory 110. The arbiter for decoder memory 316 is in the bridge module 304. In an illustrative embodiment, decoder memory 316 is a static random access memory (SRAM) unit.
The bridge module 304 performs several functions. In an illustrative embodiment, the bridge module 304 includes an interconnection network to connect all the other modules of the MVP as shown schematically as internal bus 322 and register bus 324. It is the bridge between the various modules of decoding system 300 and the system memory. It is the bridge between the register bus 324, the core processor 302, and the main chip-level register bus. It also includes a DMA engine to service the memories within the decoder system 300, including decoder memory 316 and local memory units within individual modules such as PVLD 306. The bridge module illustratively includes an asynchronous interface capability and it supports different clock rates in the decoding system 300 and the main memory bus, with either clock frequency being greater than the other.
The bridge module 304 implements a consistent interface to all of the modules of the decoding system 300 where practical. Logical register bus 324 connects all the modules and serves the purpose of accessing control and status registers by the main core processor 302. Coordination of processing by the main core processor 302 is accomplished by a combination of accessing memory, control and status registers for all modules.
In an illustrative embodiment of the present invention, the display feeder 318 module reads decoded pictures (frames or fields, as appropriate) from main memory in their native decoded format (4:2:0, for example), converts the video into 4:2:2 format, and performs horizontal scaling using a polyphase filter. According to an illustrative embodiment of the present invention, the coefficients, scale factor, and the number of active phases of the polyphase filter are programmable. In an illustrative embodiment of the present invention, the display feeder 318 includes one or more registers that are used to program these parameters. These registers are programmed by the core processor 302 according to the desired display format. In an exemplary embodiment the polyphase filter is an 8 tap, 11 phase filter. The output is illustratively standard 4:2:2 format YCrCb video, in the native color space of the coded video (for example, ITU-T 709-2 or ITU-T 601-B color space), and with a horizontal size that ranges, for example, from 160 to 1920 pixels. The horizontal scaler corrects for coded picture sizes that differ from the display size, and it also provides the ability to scale the video to arbitrary smaller or larger sizes, for use in conjunction with subsequent 2-dimensional scaling where required for displaying video in a window, for example. In one embodiment, the display feeder 318 is adapted to supply two video scan lines concurrently, in which case the horizontal scaler in the feeder 318 is adapted to scale two lines concurrently, using identical parameters.
Referring again to
The macroblock level decoding is the main video decoding process. It occurs within a direct execution loop. In an illustrative embodiment of the present invention, hardware blocks PVLD 306, IQ 308, inverse transform module 309, pixel filter 310, motion compensation module 312 (and, depending on which decoding algorithm is being executed, possibly loop filter 313) are all involved in the decoding loop. The core processor 302 controls the loop by polling the status of each of the hardware blocks involved.
Still another aspect of the present invention is directed to a method of decoding a digital media data stream. Pursuant to this method, media data of a first encoding/decoding format is received. At least one external decoding function, such as variable-length decoding or inverse quantization, e.g., is configured based on the first encoding/decoding format. Media data of the first encoding/decoding format is decoded using the at least one external decoding function. Media data of a second encoding/decoding, format is received. The at least one external decoding function is configured based on the second encoding/decoding format. Then media data of the second encoding/decoding format is decoded using the at least one external decoding function.
In an illustrative embodiment of the present invention, the actions of the various hardware blocks are arranged in an execution pipeline comprising a plurality of stages. As used in the present application, the term “stage” can refer to all of the decoding functions performed during a given time slot, or it can refer to a functional step, or group of functional steps, in the decoding process. The pipeline scheme aims to achieve maximum throughput in defined worst case decoding scenarios. Pursuant to this objective, it is important to utilize the core processor efficiently.
The rows of
At any given stage in the pipeline, while a given function is being performed on a given macroblock, the next macroblock in the data stream is being worked on by the previous function in the pipeline. Thus, at stage x 612 in the pipeline represented in
At the next stage x+1 614, the inverse quantizer 308 works on MBi (function 602) while variable length decoding 600 is performed on the next macroblock, MBi+1. In stage x+1 614, the data that the inverse quantizer 308 works on are the quantized transform coefficients of MBi extracted from the data stream by the PVLD 306 during stage x 612. In an exemplary embodiment of the present invention, also during stage x+1 614, the pixel filter reference data is fetched for MBi (function 606) using the pixel filter reference fetch address calculated by the core processor 302 during stage x 612.
Then, at stage x+2 616, the inverse transform module 309 performs inverse transform operations 604 on the MBi transform coefficients that were output by the inverse quantizer 308 during stage x+1. Also during stage x+2, the pixel filter 310 performs pixel filtering 608 for MBi using the pixel filter reference data fetched in stage x+1 614 and the motion vectors reconstructed by the core processor 302 in stage x 612. Additionally at stage x+2 616, the inverse quantizer 308 works on MBi+1 (function 602), the pixel filter reference data is fetched for MBi+1 (function 606), and variable length decoding 600 is performed on MBi+2.
At stage x+3 618, the motion compensation module 312 performs motion compensation reconstruction 610 on MBi using decoded difference pixel information produced by the inverse transform module 309 (function 604) and pixel prediction data produced by the pixel filter 310 (function 608) in stage x+2 616. Also during stage x+3 618, the inverse transform module 309 performs inverse transform operations 604 on MBi+h the pixel filter 310 performs pixel filtering 608 for MBi+1, the inverse quantizer 308 works on MBi+2 (function 602), the pixel filter reference data is fetched for MBi+2 (function 606), and variable length decoding 600 is performed on MBi+3. While the pipeline of
In an alternative embodiment of the present invention, the functions of two or more hardware modules are combined into one pipeline stage and the macroblock data is processed by all the modules in that stage sequentially. For example, in an exemplary embodiment, inverse transform operations for a given macroblock are performed during the same pipeline stage as IQ operations. In this embodiment, the inverse transform module 309 waits idle until the inverse quantizer 308 finishes and the inverse quantizer 308 becomes idle when the inverse transform operations start. This embodiment will have a longer processing time for the “packed” pipeline stage, and therefore such embodiments may have lower throughput. The benefits of the packed stage embodiment include fewer pipeline stages, fewer buffers and possibly simpler control for the pipeline.
The above-described macroblock-level pipeline advances stage-by-stage. Conceptually, the pipeline advances after all the tasks in the current stage are completed. The time elapsed in one macroblock pipeline stage will be referred to herein as the macroblock (MB) time. In the general case of decoding, the MB time is not a constant and varies from stage to stage according to various factors, such as the amount of processing time required by a given acceleration module to complete processing of a given block of data in a given stage. It depends on the encoded bitstream characteristics and is determined by the bottleneck module, which is the one that finishes last in that stage. Any module, including the core processor 302 itself, could be the bottleneck from stage to stage and it is not pre-determined at the beginning of each stage.
However, for a given encoding/decoding algorithm, each module, including the core processor 302, has a defined and predetermined task or group of tasks to complete. The macroblock time for each module is substantially constant for a given decoding standard. Therefore, in an illustrative embodiment of the present invention, the hardware acceleration pipeline is optimized by hardware balancing each module in the pipeline according to the compression format of the data stream.
The main video decoding operations occur within a direct execution loop that also includes polling of the accelerator functions. The coprocessor/accelerators operate concurrently with the core processor while decoding a series of macro blocks. The core processor 302 controls the pipeline, initiates the decoding of each macro block, and controls the operation of each of the accelerators. The core processor also does a lot of actual decoding, as described in previous paragraphs. Upon completion of each macroblock processing stage in the core processor, firmware checks the status of each of the accelerators to determine completion of previously assigned tasks. In the event that the firmware gets to this point before an accelerator module has completed its required tasks, the firmware polls for completion. This is appropriate, since the pipeline cannot proceed efficiently until all of the pipeline elements have completed the current stage, and an interrupt driven scheme would be less efficient for this purpose. In an alternative embodiment, the core processor 302 is interrupted by the coprocessor or hardware accelerators when an exceptional occurrence is detected, such as an error in the processing task. In another alternative embodiment, the coprocessor or hardware accelerators interrupt the core processor when they complete their assigned tasks.
Each hardware module 306, 308, 309, 310, 312, 313, 315 is independently controllable by the core processor 302. The core processor 302 drives a hardware module by issuing a certain start command after checking the module's status. In one embodiment, the core processor 302 issues the start command by setting up a register in the hardware module.
In general, the core processor 302 interprets the bits decoded (with the help of the PVLD 306) for the appropriate headers and sets up and coordinates the actions of the hardware modules. More specifically, all header information, from the sequence level down to the macroblock level, is requested by the core processor 302. The core processor 302 also controls and coordinates the actions of each hardware module. The core processor configures the hardware modules to operate in accordance with the encoding/decoding format of the data stream being decoded by providing operating parameters to the hardware modules. The parameters include but are not limited to (using MPEG2 as an example) the cbp (coded block pattern) used by the PVLD 306 to control the decoding of the transform block coefficients, the quantization scale used by the IQ module 308 to perform inverse quantization, motion vectors used by the pixel filter 309 and motion compensation module 310 to reconstruct the macroblocks, and the working buffer address(es) in decoder memory 316.
Each hardware module 306, 308, 309, 310, 312, 313, 315 performs the specific processing as instructed by the core processor 302 and sets up its status properly in a status register as the task is being executed and when it is done. Each of the modules has or shares a status register that is polled by the core processor to determine the module's status. In an alternative embodiment, each module issues an interrupt signal to the core processor so that in addition to polling the status registers, the core processor can be informed asynchronously of exceptional events like errors in the bitstream. Each hardware module is assigned a set of macroblock buffers in decoder memory 316 for processing purposes. In an illustrative embodiment, each hardware module signals the busy/available status of the working buffer(s) associated with it so that the core processor 302 can properly coordinate the processing pipeline.
In an exemplary embodiment of the present invention, the hardware accelerator modules 306, 308, 309, 319, 312, 313, 314, 315 generally do not communicate with each other directly. The accelerators work on assigned areas of decoder memory 316 and produce results that are written back to decoder memory 316, in some cases to the same area of decoder memory 316 as the input to the accelerator, or results are written back to main memory. In one embodiment of the present invention, when the incoming bitstream is of a format that includes a relatively large amount of data, or of a relatively complex encoding/decoding format, the accelerators in some cases may bypass the decoder memory 316 and pass data between themselves directly.
Software codecs from other sources, such as proprietary codecs, are ported to the decoding system 300 by analyzing the code to isolate those functions that are amenable to acceleration, such as variable-length decoding, run-length coding, inverse scanning, inverse quantization, transform, pixel filter, motion compensation, de-blocking filter, and display format conversion, and replacing those functions with equivalent functions that use the hardware accelerators in the decoding system 300. In an exemplary embodiment of the present invention, modules 310, 312 and 313, 315 are implemented in a programmable SIMD/RISC filter engine module (311 and 314 respectively) that allows execution of a wide range of decoding algorithms, even ones that have not yet been specified in by any standards body. Software representing all other video decoding tasks is compiled to run directly on the core processor.
In an illustrative embodiment of the present invention, some functions are interrupt driven, particularly the management of the display, i.e., telling the display module which picture buffer to display from at each field time, setting display parameters that depend on the picture type (e.g. field or frame), and performing synchronization functions. The decoding system 300 of the present invention provides flexible configurability and programmability to handle different video stream formats.
In another illustrative embodiment, some or all of the hardware accelerators comprise programmable processors which are configured to operate according to different encoding/decoding formats by changing the software executed by those processors, in addition to programming registers as appropriate to the design. Although a preferred embodiment of the present invention has been described, it should not be construed to limit the scope of the appended claims. For example, the present invention is applicable to any type of media, including audio, in addition to the video media illustratively described herein. Those skilled in the art will understand that various modifications may be made to the described embodiment. Moreover, to those skilled in the various arts, the invention itself herein will suggest solutions to other tasks and adaptations for other applications. It is therefore desired that the present embodiments be considered in all respects as illustrative and not restrictive, reference being made to the appended claims rather than the foregoing description to indicate the scope of the invention.
MacInnis, Alexander G., Xie, Xiaodong, Zhong, Sheng, Hsiun, Vivian, Alvarez, Jose' R.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5212777, | Nov 17 1989 | TEXAS INSTRUMENTS INCORPORATED, A CORP OF DE | Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation |
5239654, | Nov 17 1989 | Texas Instruments Incorporated | Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode |
5269001, | Jul 28 1989 | Texas Instruments Incorporated | Video graphics display memory swizzle logic circuit and method |
5379351, | Feb 19 1992 | CITICORP USA, INC , AS ADMINISTRATIVE AGENT; CITIBANK, N A , AS ADMINISTRATIVE AGENT | Video compression/decompression processing and processors |
5379356, | Mar 15 1991 | LSI Logic Corporation | Decompression processor for video applications |
5386233, | May 13 1993 | Intel Corporation | Method for efficient memory use |
5432900, | Jun 19 1992 | Intel Corporation | Integrated graphics and video computer display system |
5488419, | Mar 13 1992 | MATSUSHITA ELECTRIC INDUSTRIAL CO , LTD | Video compression coding and decoding with automatic sub-pixel frame/field motion compensation |
5506604, | Apr 06 1994 | Cirrus Logic, INC | Apparatus, systems and methods for processing video data in conjunction with a multi-format frame buffer |
5508746, | Jun 24 1993 | Massachusetts Institute of Technology | Advanced television system |
5512962, | May 25 1993 | HTC Corporation | Motion vector detecting apparatus for moving picture |
5528528, | Mar 29 1993 | Intel Corporation | Method, apparatus, and system for transforming signals |
5568167, | Sep 23 1994 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | System for providing antialiased video overlays |
5576765, | Mar 17 1994 | MEDIATEK INC | Video decoder |
5579052, | May 27 1993 | SGS-THOMSON MICROELECTRONICS S A | Picture processing system |
5589886, | Oct 08 1992 | Sony Corporation | Multistandard decoder for data stored in the vertical blanking interval of a video signal |
5592399, | May 26 1993 | Intel Corporation | Pipelined video encoder architecture |
5594679, | Mar 31 1993 | Sony Corporation | Adaptive video signal processing apparatus |
5594813, | Feb 19 1992 | CITICORP USA, INC , AS ADMINISTRATIVE AGENT; CITIBANK, N A , AS ADMINISTRATIVE AGENT | Programmable architecture and methods for motion estimation |
5598483, | Apr 13 1993 | LSI Logic Corporation | MPEG video decompression processor |
5598514, | Aug 09 1993 | LSI Logic Corporation | Structure and method for a multistandard video encoder/decoder |
5604540, | Feb 16 1995 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Structure and method for a multistandard video encoder |
5610657, | Sep 14 1993 | Envistech Inc. | Video compression using an iterative error data coding method |
5614952, | Oct 11 1994 | Hitachi America, Ltd | Digital video decoder for decoding digital high definition and/or digital standard definition television signals |
5623311, | Oct 28 1994 | Panasonic Corporation of North America | MPEG video decoder having a high bandwidth memory |
5625571, | Mar 24 1994 | COASES INVESTMENTS BROS L L C | Prediction filter |
5633687, | Oct 23 1995 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Method and system for providing an interlaced image on an display |
5638128, | Nov 08 1994 | ARRIS ENTERPRISES LLC | Pixel interpolation filters for video decompression processor |
5640543, | Jun 19 1992 | Intel Corporation | Scalable multimedia platform architecture |
5650823, | Mar 27 1995 | IBM Corporation | Half pel motion estimation method for B pictures |
5666170, | Jul 12 1995 | Thomson Licensing | Apparatus for decoding video signals encoded in different formats |
5675424, | May 19 1992 | Goldstar Co., Ltd. | Image decoder for image compression/expansion system |
5684534, | May 26 1993 | Intel Corporation | Task-splitting dual-processor system for motion estimation processing |
5699460, | Apr 27 1993 | SAMSUNG ELECTRONICS CO , LTD | Image compression coprocessor with data flow control and multiple processing units |
5703658, | Jun 14 1995 | Hitachi, Ltd. | Video decoder/converter with a programmable logic device which is programmed based on the encoding format |
5708511, | Mar 24 1995 | Harris Corporation | Method for adaptively compressing residual digital image data in a DPCM compression system |
5712799, | Apr 04 1995 | ATI Technologies ULC | Method and structure for performing motion estimation using reduced precision pixel intensity values |
5742892, | Apr 18 1995 | Sun Microsystems, Inc | Decoder for a software-implemented end-to-end scalable video delivery system |
5748979, | Apr 05 1995 | Xilinx, Inc | Reprogrammable instruction set accelerator using a plurality of programmable execution units and an instruction page table |
5754240, | Oct 04 1995 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for calculating the pixel values of a block from one or two prediction blocks |
5757670, | Jul 28 1995 | S3 GRAPHICS CO , LTD | Frame reconstruction for video data compression |
5768429, | Nov 27 1995 | Oracle America, Inc | Apparatus and method for accelerating digital video decompression by performing operations in parallel |
5774206, | May 10 1995 | SAMSUNG ELECTRONICS CO , LTD | Process for controlling an MPEG decoder |
5778241, | May 05 1994 | XIAM TREA PTE, L L C | Space vector data path |
5784572, | Dec 29 1995 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Method and apparatus for compressing video and voice signals according to different standards |
5790712, | Feb 19 1992 | 8x8, Inc | Video compression/decompression processing and processors |
5802315, | Sep 04 1995 | Sharp Kabushiki Kaisha | Picture reproducing apparatus |
5805148, | Apr 24 1990 | Sony Corporation | Multistandard video and graphics, high definition display system and method |
5805228, | Aug 09 1996 | Hewlett Packard Enterprise Development LP | Video encoder/decoder system |
5809174, | Apr 13 1993 | LSI Logic Corporation | Decompression processor for video applications |
5809270, | Jun 30 1992 | COASES INVESTMENTS BROS L L C | Inverse quantizer |
5809275, | Mar 01 1996 | Hewlett Packard Enterprise Development LP | Store-to-load hazard resolution system and method for a processor that executes instructions out of order |
5812562, | Nov 15 1996 | Samsung Electronics Company, Ltd | Low cost emulation scheme implemented via clock control using JTAG controller in a scan environment |
5812789, | Aug 26 1996 | PARTHENON UNIFIED MEMORY ARCHITECTURE LLC | Video and/or audio decompression and/or compression device that shares a memory interface |
5815206, | May 03 1996 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Method for partitioning hardware and firmware tasks in digital audio/video decoding |
5818532, | May 03 1996 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Micro architecture of video core for MPEG-2 decoder |
5818967, | Jun 12 1995 | S3 GRAPHICS CO , LTD | Video decoder engine |
5825424, | Jun 19 1996 | Thomson Consumer Electronics, Inc | MPEG system which decompresses and recompresses image data before storing image data in a memory and in accordance with a resolution of a display device |
5838664, | Jul 17 1997 | Cisco Technology, Inc | Video teleconferencing system with digital transcoding |
5838729, | Apr 09 1996 | Thomson multimedia, S.A. | Multiple mode trellis decoder for a digital signal processing system |
5844616, | Jun 01 1993 | Thomson multimedia S.A. | Method and apparatus for motion compensated interpolation |
5845083, | Mar 07 1996 | RENESAS ELECTRONICS AMERICA INC | MPEG encoding and decoding system for multimedia applications |
5870087, | Nov 13 1996 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | MPEG decoder system and method having a unified memory for transport decode and system controller functions |
5870435, | Dec 09 1996 | Electronics and Telecommunications Research Institute | Quantization/inverse quantization unit selectably accommodating multiple video encoding standards and including differential pulse code modulator |
5870497, | Mar 15 1991 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Decoder for compressed video signals |
5872597, | Aug 26 1994 | Kabushiki Kaisha Toshiba | System for decoding moving picture signal multiplied and coded by DCT coefficient and additional data |
5889949, | Oct 11 1996 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Processing system with memory arbitrating between memory access requests in a set top box |
5892966, | Jun 27 1997 | Oracle America, Inc | Processor complex for executing multimedia functions |
5896176, | Oct 25 1996 | Texas Instruments Incorporated | Content-based video compression |
5901248, | Feb 19 1992 | 8x8, Inc | Programmable architecture and methods for motion estimation |
5909559, | Apr 04 1997 | Texas Instruments Incorporated | Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width |
5920353, | Dec 03 1996 | STMicroelectronics, Inc | Multi-standard decompression and/or compression device |
5923665, | Sep 30 1994 | Cirrus Logic, Inc. | Memory controller for decoding a compressed/encoded video data frame |
5926208, | Feb 19 1992 | 8x8, Inc | Video compression and decompression arrangement having reconfigurable camera and low-bandwidth transmission capability |
5959689, | Jul 21 1995 | ENTROPIC COMMUNICATIONS, INC ; Entropic Communications, LLC | Multi-media processor architecture with high performance-density |
5973740, | Oct 27 1997 | HULU, LLC | Multi-format reduced memory video decoder with adjustable polyphase expansion filter |
5973755, | Apr 04 1997 | Microsoft Technology Licensing, LLC | Video encoder and decoder using bilinear motion compensation and lapped orthogonal transforms |
5978592, | Jun 30 1992 | COASES INVESTMENTS BROS L L C | Video decompression and decoding system utilizing control and data tokens |
5982459, | May 31 1995 | 8x8, Inc | Integrated multimedia communications processor and codec |
5990812, | Oct 27 1997 | FUNAI ELECTRIC CO , LTD | Universally programmable variable length decoder |
5995513, | Sep 08 1995 | SGS-THOMSON MICROELECTRONICS, S A | Multitask processing system |
6002410, | Aug 25 1997 | ATI Technologies ULC | Reconfigurable texture cache |
6002441, | Oct 28 1996 | National Semiconductor Corporation | Audio/video subprocessor method and structure |
6005546, | Mar 21 1996 | S3 GRAPHICS CO , LTD | Hardware assist for YUV data format conversion to software MPEG decoder |
6014512, | Oct 18 1996 | Samsung Electronics Co., Ltd.; SAMSUNG ELECTRONICS CO , LTD | Method and apparatus for simulation of a multi-processor circuit |
6026195, | Mar 07 1997 | Google Technology Holdings LLC | Motion estimation and compensation of video object planes for interlaced digital video |
6028635, | Dec 03 1996 | STMicroelectronics, Inc | Reducing the memory required for decompression by storing compressed information using DCT based techniques |
6038380, | Jun 30 1992 | COASES INVESTMENTS BROS L L C | Data pipeline system and data encoding method |
6041400, | Oct 26 1998 | Sony Corporation; Sony Electronics, INC | Distributed extensible processing architecture for digital signal processing applications |
6047112, | Jun 30 1992 | CHARTOLEAUX KG LIMITED LIABILITY COMPANY | Technique for initiating processing of a data stream of encoded video information |
6052415, | Aug 26 1997 | MEDIATEK INC | Early error detection within an MPEG decoder |
6058459, | Aug 26 1996 | PARTHENON UNIFIED MEMORY ARCHITECTURE LLC | Video/audio decompression/compression device including an arbiter and method for accessing a shared memory |
6061711, | Aug 19 1996 | Samsung Electronics Company, Ltd | Efficient context saving and restoring in a multi-tasking computing system environment |
6067098, | Nov 16 1994 | Intellectual Ventures I LLC | Video/graphics controller which performs pointer-based display list video refresh operation |
6072830, | Aug 09 1996 | Hewlett Packard Enterprise Development LP | Method for generating a compressed video signal |
6081622, | Feb 22 1996 | Meta Platforms, Inc | Optimized field-frame prediction error calculation method and apparatus in a scalable MPEG-2 compliant video encoder |
6091778, | Aug 02 1996 | CERBERUS BUSINESS FINANCE, LLC, AS COLLATERAL AGENT | Motion video processing circuit for capture, playback and manipulation of digital motion video information on a computer |
6101276, | Jun 21 1996 | Hewlett Packard Enterprise Development LP | Method and apparatus for performing two pass quality video compression through pipelining and buffer management |
6104751, | Oct 29 1993 | SGS-THOMSON MICROELECTRONICS S A | Apparatus and method for decompressing high definition pictures |
6104861, | Jul 18 1995 | Sony Corporation | Encoding and decoding of data streams of multiple types including video, audio and subtitle data and searching therefor |
6124882, | Feb 19 1992 | 8x8, Inc | Videocommunicating apparatus and method therefor |
6125398, | Nov 24 1993 | Intel Corporation | Communications subsystem for computer-based conferencing system using both ISDN B channels for transmission |
6128015, | Jan 24 1995 | Kabushiki Kaisha Toshiba | Multimedia computer system |
6130963, | Nov 22 1996 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Memory efficient decoding of video frame chroma |
6137537, | Jun 02 1995 | Matsushita Electric Industrial Co., Ltd. | Television receiver for receiving multi-standards |
6144323, | Dec 09 1998 | MEDIATEK INC | Method and apparatus for decoding video data |
6160584, | May 21 1997 | Sony Corporation | Motion detection and motion compensative prediction circuit |
6167089, | Oct 11 1994 | Hitachi America, Ltd. | Reduced cost methods and apparatus for decoding bi-directionally coded image data |
6167157, | Nov 24 1994 | JVC Kenwood Corporation | Method of reducing quantization noise generated during a decoding process of image data and device for decoding image data |
6175592, | Mar 12 1997 | MATSUSHITA ELECTRIC INDUSTRIAL CORP , LTD | Frequency domain filtering for down conversion of a DCT encoded picture |
6175594, | May 22 1998 | ATI Technologies ULC | Method and apparatus for decoding compressed video |
6184935, | Mar 12 1997 | Vertex Pacific Limited | Upsampling filter and half-pixel generator for an HDTV downconversion system |
6191842, | May 09 1997 | Service Vision, S.A | Computer assisted camera control system |
6192073, | Aug 19 1996 | SAMSUNG ELECTRONICS CO , LTD | Methods and apparatus for processing video data |
6195593, | Sep 03 1997 | Seiko Epson Corporation | Reusable modules for complex integrated circuit devices |
6205176, | Jul 28 1997 | JVC Kenwood Corporation | Motion-compensated coder with motion vector accuracy controlled, a decoder, a method of motion-compensated coding, and a method of decoding |
6209078, | Mar 25 1999 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Accelerated multimedia processor |
6211800, | Sep 27 1996 | Sony Corporation | Data decoding system and method, transfer device and method, and receiving device and method |
6222467, | Mar 24 1999 | SAMSUNG ELECTRONICS CO , LTD | Bitstream decoding apparatus |
6223274, | Nov 19 1998 | INTERUNIVERSITAIR MICRO-ELEKTRONICA CENTRUM IMEC VZW | Power-and speed-efficient data storage/transfer architecture models and design methodologies for programmable or reusable multi-media processors |
6240516, | Mar 06 1997 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Single chip computer having integrated MPEG and graphical processors |
6246347, | Oct 27 1997 | FUNAI ELECTRIC CO , LTD | Controller for a variable length decoder |
6263019, | Oct 09 1998 | MATSUSHITA ELECTRIC INDUSTRIAL CO , LTD | Variable rate MPEG-2 video syntax processor |
6266373, | Jun 15 1998 | FUNAI ELECTRIC CO , LTD | Pixel data storage system for use in half-pel interpolation |
6268886, | Nov 12 1997 | LG Electronics Inc. | Apparatus for converting picture format in digital TV and method of the same |
6278478, | Mar 18 1999 | Microsoft Technology Licensing, LLC | End-to-end network encoding architecture |
6282243, | Jun 11 1997 | Fujitsu Limited | Apparatus and method for interframe predictive video coding and decoding with capabilities to avoid rounding error accumulation |
6289138, | Apr 30 1997 | Canon Kabushiki Kaisha | General image processor |
6295089, | Mar 30 1999 | Sony Corporation; Sony Electronics Inc. | Unsampled hd MPEG video and half-pel motion compensation |
6301304, | Jun 17 1998 | MEDIATEK INC | Architecture and method for inverse quantization of discrete cosine transform coefficients in MPEG decoders |
6330666, | Jun 30 1992 | TALON RESEARCH, LLC | Multistandard video decoder and decompression system for processing encoded bit streams including start codes and methods relating thereto |
6339616, | May 30 1997 | XVD TECHNOLOGY HOLDINGS, LTD IRELAND | Method and apparatus for compression and decompression of still and motion video data based on adaptive pixel-by-pixel processing and adaptive variable length coding |
6341375, | Jul 14 1999 | Broadcom Corporation | Video on demand DVD system |
6348925, | Aug 19 1996 | International Business Machines Corporation | Method and apparatus for block data transfer to reduce on-chip storage for interpolative video resizing |
6369855, | Nov 01 1996 | Texas Instruments Incorporated | Audio and video decoder circuit and system |
6389071, | Oct 16 1997 | Sovereign Peak Ventures, LLC | Method for reducing processing power requirements of a video decoder |
6389076, | Jun 15 1998 | U.S. Philips Corporation | Pixel data storage system for use in half-pel interpolation |
6414687, | Apr 30 1997 | Canon Kabushiki Kaisha | Register setting-micro programming system |
6414996, | Dec 08 1998 | STMicroelectronics, Inc. | System, method and apparatus for an instruction driven digital video processor |
6421698, | Nov 04 1998 | DSP GROUP, LTD | Multipurpose processor for motion estimation, pixel processing, and general processing |
6425054, | Aug 19 1996 | Samsung Electronics Co., Ltd. | Multiprocessor operation in a multimedia signal processor |
6441842, | Feb 19 1992 | 8x8, Inc | Video compression/decompression processing and processors |
6441860, | May 07 1996 | Matsushita Electric Industrial Co., Ltd. | Video signal processing apparatus |
6452639, | Mar 09 1998 | SONY INTERNATIONAL EUROPE GMBH | Raster scan conversion system for interpolating interlaced signals |
6459737, | May 07 1999 | Intel Corporation | Method and apparatus for avoiding redundant data retrieval during video decoding |
6469743, | Jun 09 1999 | LENOVO SINGAPORE PTE LTD | Programmable external graphics/video port for digital video decode system chip |
6525783, | Feb 03 1998 | LG Electronics Inc. | Video decoding system |
6526430, | Oct 04 1999 | Texas Instruments Incorporated | Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing) |
6529632, | Jun 09 1997 | Hitachi, Ltd. | Image coding method |
6538656, | Nov 09 1999 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with a data transport processor |
6539059, | Mar 02 2000 | Oracle America, Inc | Apparatus and method for efficiently scalable digital video decoding |
6539120, | Mar 12 1997 | Matsushita Electric Industrial Co., Ltd. | MPEG decoder providing multiple standard output signals |
6542541, | Jan 12 2000 | Sony Corporation; Sony Electronics Inc. | Method and apparatus for decoding MPEG video signals using multiple data transfer units |
6553072, | Jun 29 1995 | THOMSON LICENSING S A | System for encoding and decoding layered compressed video data |
6557156, | Aug 28 1997 | XILINX, Inc. | Method of configuring FPGAS for dynamically reconfigurable computing |
6560367, | Jun 09 1997 | Hitachi, Ltd. | Image decoder and image decoding method |
6567557, | Dec 10 1999 | STMicroelectronics, Inc | Method for preventing dual-step half-pixel motion compensation accumulation errors in prediction-rich MPEG-2 sequences |
6570579, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Graphics display system |
6570926, | Feb 25 1999 | HANGER SOLUTIONS, LLC | Active techniques for video transmission and playback |
6573905, | Nov 09 1999 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with parallel processing of graphics windows |
6580830, | Jul 23 1998 | Sony Corporation | Picture decoding method and apparatus |
6594396, | Sep 29 1998 | Mitsubishi Denki Kabushiki Kaisha; Vasily, Moshnyaga | Adaptive difference computing element and motion estimation apparatus dynamically adapting to input data |
6606126, | Sep 03 1999 | LG Electronics, Inc. | Deinterlacing method for video signals based on motion-compensated interpolation |
6630964, | Dec 28 2000 | Philips Electronics North America Corp | Multi-standard channel decoder for real-time digital broadcast reception |
6631214, | Jun 09 1997 | Hitachi, Ltd. | Image coder and image coding method |
6636222, | Nov 09 1999 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with an MPEG video decoder for concurrent multi-row decoding |
6647061, | Jun 09 2000 | Google Technology Holdings LLC | Video size conversion and transcoding from MPEG-2 to MPEG-4 |
6658056, | Mar 30 1999 | Sony Corporation; Sony Electronics INC | Digital video decoding, buffering and frame-rate converting method and apparatus |
6661422, | Nov 09 1998 | Qualcomm Incorporated | Video and graphics system with MPEG specific data transfer commands |
6665346, | Aug 01 1998 | SAMSUNG ELECTRONICS CO , LTD ; Korea Advanced Institute of Science and Technology | Loop-filtering method for image data and apparatus therefor |
6674536, | Apr 30 1997 | Canon Kabushiki Kaisha | Multi-instruction stream processor |
6697930, | Jun 30 1992 | COASES INVESTMENTS BROS L L C | Multistandard video decoder and decompression method for processing encoded bit streams according to respective different standards |
6714593, | Oct 21 1997 | Robert Bosch GmbH | Motion compensating prediction of moving image sequences |
6757330, | Jun 01 2000 | VALTRUS INNOVATIONS LIMITED | Efficient implementation of half-pixel motion prediction |
6760833, | Aug 01 1997 | Round Rock Research, LLC | Split embedded DRAM processor |
6768774, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with video scaling |
6771196, | Dec 14 1999 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Programmable variable-length decoder |
6781601, | Nov 09 1999 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Transport processor |
6788347, | Mar 12 1997 | Matsushita Electric Industrial Co., Ltd. | HDTV downconversion system |
6792048, | Oct 29 1999 | SAMSUNG ELECTRONICS CO , LTD | Terminal supporting signaling used in transmission and reception of MPEG-4 data |
6798420, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with a single-port RAM |
6829303, | Nov 17 1999 | Hitachi America, Ltd. | Methods and apparatus for decoding images using dedicated hardware circuitry and a programmable processor |
6833875, | Sep 02 1999 | Techwell LLC | Multi-standard video decoder |
6842124, | Oct 17 2001 | ENTROPIC COMMUNICATIONS, INC ; Entropic Communications, LLC | Variable length decoder |
6842219, | Dec 24 2001 | HYUNDAI MOBIS CO , LTD | Moving picture decoding processor for multimedia signal processing |
6842844, | Feb 24 2000 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Parameter memory for hardware accelerator |
6853385, | Nov 09 1999 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video, audio and graphics decode, composite and display system |
6862278, | Jun 18 1998 | Microsoft Technology Licensing, LLC | System and method using a packetized encoded bitstream for parallel compression and decompression |
6862325, | Oct 17 2000 | FUNAI ELECTRIC CO , LTD | Multi-standard channel decoder |
6870538, | Nov 09 1999 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with parallel processing of graphics windows |
6885319, | Jan 29 1999 | Intellectual Ventures I LLC | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms |
6901153, | Mar 14 1996 | ATI Technologies, Inc | Hybrid software/hardware video decoder for personal computer |
6909744, | Dec 09 1999 | Luxxon Corporation | Processor architecture for compression and decompression of video and images |
6930689, | Dec 26 2000 | Texas Instruments Incorporated | Hardware extensions for image and video processing |
6944226, | Oct 03 2000 | Panasonic Corporation of North America | System and associated method for transcoding discrete cosine transform coded signals |
6963613, | Apr 01 2002 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Method of communicating between modules in a decoding system |
6968008, | Jul 27 1999 | Sharp Kabushiki Kaisha | Methods for motion estimation with adaptive motion accuracy |
6975324, | Nov 09 1999 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Video and graphics system with a video transport processor |
6993191, | May 04 2001 | Altera Corporation | Methods and apparatus for removing compression artifacts in video sequences |
7034897, | Apr 01 2002 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Method of operating a video decoding system |
7071944, | Nov 09 1998 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Video and graphics system with parallel processing of graphics windows |
7095341, | Dec 14 1999 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Programmable variable-length decoder |
7095783, | Jun 30 1992 | CHARTOLEAUX KG LIMITED LIABILITY COMPANY | Multistandard video decoder and decompression system for processing encoded bit streams including start codes and methods relating thereto |
7110006, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video, audio and graphics decode, composite and display system |
7110456, | Mar 17 1997 | Mitsubishi Denki Kabushiki Kaisha | Video encoder, video decoder, video encoding method, video decoding method, and video encoding and decoding system |
7116372, | Oct 20 2000 | MATSUSHITA ELECTRIC INDUSTRIAL CO , LTD | Method and apparatus for deinterlacing |
7149811, | Jun 30 1992 | CHARTOLEAUX KG LIMITED LIABILITY COMPANY | Multistandard video decoder and decompression system for processing encoded bit streams including a reconfigurable processing stage and methods relating thereto |
7151800, | Jan 15 2000 | Saturn Licensing LLC | Implementation of a DV video decoder with a VLIW processor and a variable length decoding unit |
7167108, | Dec 04 2002 | ENTROPIC COMMUNICATIONS, INC | Method and apparatus for selecting particular decoder based on bitstream format detection |
7181070, | Oct 30 2001 | Altera Corporation | Methods and apparatus for multiple stage video decoding |
7224733, | Jul 15 1997 | Robert Bosch GmbH | Interpolation filtering method for accurate sub-pixel motion assessment |
7257641, | Mar 30 2000 | Microsoft Technology Licensing, LLC | Multipoint processing unit |
7277099, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with an MPEG video decoder for concurrent multi-row decoding |
7295614, | Sep 08 2000 | Cisco Technology, Inc | Methods and apparatus for encoding a video signal |
7310104, | Nov 09 1998 | Broadcom Corporation | Graphics display system with anti-flutter filtering and vertical scaling feature |
7342967, | Sep 12 2001 | Broadcom Corporation | System and method for enhancing performance of personal video recording (PVR) functions on hits digital video streams |
7446774, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with an integrated system bridge controller |
7548586, | Feb 04 2002 | Audio and video processing apparatus | |
7581239, | Jul 14 1999 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video on demand DVD system |
7590059, | May 21 2004 | Broadcom Corporation | Multistandard video decoder |
7634011, | Apr 21 2000 | Microsoft Technology Licensing, LLC | Application program interface (API) facilitating decoder control of accelerator resources |
7649943, | Apr 21 2000 | Microsoft Technology Licensing, LLC | Interface and related methods facilitating motion compensation in media processing |
7668242, | Apr 21 2000 | Microsoft Technology Licensing, LLC | Dynamically adaptive multimedia application program interface and related methods |
7711938, | Jun 24 1993 | COASES INVESTMENTS BROS L L C | Multistandard video decoder and decompression system for processing encoded bit streams including start code detection and methods relating thereto |
7792191, | Mar 08 2001 | LAMBERT EVEREST LTD | Device and method for performing half-pixel accuracy fast search in video coding |
7848430, | Nov 09 1999 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with an MPEG video decoder for concurrent multi-row decoding |
7899123, | Nov 29 2001 | Godo Kaisha IP Bridge 1 | Coding distortion removal method, video encoding method, video decoding method, and apparatus and program for the same |
7991049, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with video scaling |
8068171, | Jun 22 2004 | Broadcom Corporation | High speed for digital video |
8189678, | Nov 09 1999 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with an MPEG video decoder for concurrent multi-row decoding |
8284844, | Apr 01 2002 | Broadcom Corporation | Video decoding system supporting multiple standards |
8390635, | Nov 09 1998 | Broadcom Corporation | Graphics accelerator |
8659608, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with an integrated system bridge controller |
8913667, | Nov 09 1999 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video decoding system having a programmable variable-length decoder |
9329871, | Apr 01 2002 | Broadcom Corporation | Video decoding system supporting multiple standards |
9417883, | Apr 01 2002 | Broadcom Corporation | Video decoding system supporting multiple standards |
20010005432, | |||
20010014166, | |||
20010022816, | |||
20010026587, | |||
20010028680, | |||
20010033617, | |||
20010046260, | |||
20010046264, | |||
20020034252, | |||
20020047919, | |||
20020057446, | |||
20020057739, | |||
20020065952, | |||
20020071490, | |||
20020085021, | |||
20020085768, | |||
20020095689, | |||
20020118758, | |||
20020150159, | |||
20020172288, | |||
20030021344, | |||
20030079035, | |||
20030112864, | |||
20030156652, | |||
20030174774, | |||
20030187662, | |||
20030222998, | |||
20030235251, | |||
20040008788, | |||
20040028141, | |||
20040039903, | |||
20040120404, | |||
20040233332, | |||
20050094729, | |||
20060126962, | |||
20150195535, | |||
EP367182, | |||
EP537932, | |||
EP572262, | |||
EP615206, | |||
EP663762, | |||
EP884910, | |||
EP945001, | |||
EP947092, | |||
EP1124181, | |||
EP3007419, | |||
JP10084514, | |||
JP10093961, | |||
JP10145780, | |||
JP10177565, | |||
JP10229562, | |||
JP10248067, | |||
JP10254696, | |||
JP10261270, | |||
JP10340127, | |||
JP11074798, | |||
JP11085969, | |||
JP11088854, | |||
JP11122116, | |||
JP11149386, | |||
JP11184718, | |||
JP11215464, | |||
JP11225334, | |||
JP11238120, | |||
JP11275582, | |||
JP11275584, | |||
JP11298765, | |||
JP11298896, | |||
JP11338735, | |||
JP2000041262, | |||
JP2000059234, | |||
JP2000059769, | |||
JP2000066894, | |||
JP2000149445, | |||
JP2000215057, | |||
JP2000235644, | |||
JP2000331150, | |||
JP2000513523, | |||
JP2001094437, | |||
JP2001167057, | |||
JP2001168728, | |||
JP2001184500, | |||
JP2001256048, | |||
JP2001309386, | |||
JP2001507555, | |||
JP2001508631, | |||
JP2002010277, | |||
JP2002135778, | |||
JP2010246130, | |||
JP2638613, | |||
JP2759896, | |||
JP2761449, | |||
JP2767847, | |||
JP2810896, | |||
JP2858602, | |||
JP3546437, | |||
JP3889069, | |||
JP4558409, | |||
JP5053803, | |||
JP5100850, | |||
JP5204640, | |||
JP5225153, | |||
JP5268482, | |||
JP6030442, | |||
JP6180753, | |||
JP6187434, | |||
JP6214749, | |||
JP6292178, | |||
JP6301534, | |||
JP6326615, | |||
JP6326996, | |||
JP7131785, | |||
JP8050575, | |||
JP8070452, | |||
JP8070453, | |||
JP8097725, | |||
JP8101852, | |||
JP8116260, | |||
JP8116261, | |||
JP8147163, | |||
JP8172624, | |||
JP8228343, | |||
JP8228344, | |||
JP8228345, | |||
JP8228346, | |||
JP8228347, | |||
JP8228348, | |||
JP8237654, | |||
JP8241288, | |||
JP8279763, | |||
JP8316838, | |||
JP8322044, | |||
JP8322045, | |||
JP9018871, | |||
JP9091444, | |||
JP9289642, | |||
JP9307899, | |||
WO1995009390, | |||
WO1996020567, | |||
WO1998007278, | |||
WO1998025232, | |||
WO1998027720, | |||
WO1998043243, | |||
WO1999008204, | |||
WO1999067883, | |||
WO2000028430, | |||
WO2000030040, | |||
WO200145426, | |||
WO2002087248, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 28 2002 | HSIUN, VIVIAN | Broadcom Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 048702 | /0108 | |
Mar 29 2002 | MACINNIS, ALEXANDER G | Broadcom Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 048702 | /0108 | |
Mar 29 2002 | ALVAREZ, JOSE R | Broadcom Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 048702 | /0108 | |
Mar 29 2002 | ZHONG, SHENG | Broadcom Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 048702 | /0108 | |
Mar 30 2002 | XIE, XIAODONG | Broadcom Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 048702 | /0108 | |
Aug 14 2018 | Broadcom Corporation | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Aug 14 2018 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Feb 16 2024 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Dec 07 2024 | 4 years fee payment window open |
Jun 07 2025 | 6 months grace period start (w surcharge) |
Dec 07 2025 | patent expiry (for year 4) |
Dec 07 2027 | 2 years to revive unintentionally abandoned end. (for year 4) |
Dec 07 2028 | 8 years fee payment window open |
Jun 07 2029 | 6 months grace period start (w surcharge) |
Dec 07 2029 | patent expiry (for year 8) |
Dec 07 2031 | 2 years to revive unintentionally abandoned end. (for year 8) |
Dec 07 2032 | 12 years fee payment window open |
Jun 07 2033 | 6 months grace period start (w surcharge) |
Dec 07 2033 | patent expiry (for year 12) |
Dec 07 2035 | 2 years to revive unintentionally abandoned end. (for year 12) |