Claims
- 1. A digital media decoding system comprising:
a processor adapted to control a decoding process; and a hardware accelerator coupled to the processor and adapted to perform a decoding function on a digital media data stream, wherein the accelerator is configurable to perform the decoding function according to a plurality of decoding methods.
- 2. The digital media decoding system of claim 1 wherein the accelerator is configurable to perform the decoding function according to a plurality of decoding standards.
- 3. The digital media decoding system of claim 1 comprising a plurality of hardware accelerators coupled to the processor, each accelerator adapted to perform a decoding function on a digital media data stream, wherein each of the accelerators are configurable to perform their associated decoding functions according to a plurality of decoding methods.
- 4. The digital media decoding system of claim 3 wherein the hardware accelerators are configurable to perform their associated decoding functions according to a plurality of decoding standards.
- 5. The digital media decoding system of claim 1 wherein the processor is adapted to perform decoding functions on a digital media data stream and wherein the hardware accelerator is adapted to assist the processor in performing a decoding function on the digital media data stream, wherein the accelerator is configurable to assist the processor according to a plurality of decoding methods.
- 6. The digital media decoding system of claim 1 wherein the accelerator is configurable to perform the decoding function on digital media data streams of a plurality of formats.
- 7. The digital media decoding system of claim 1 wherein the processor is adapted to configure the accelerator to perform the decoding function according to a format of the media data to be decoded.
- 8. The digital media decoding system of claim 7 wherein the accelerator includes one of a set of registers or memory coupled to an internal processor, that dictates operational parameters of the accelerator and wherein the processor programs the registers or the memory in order to configure the accelerator.
- 9. The digital media decoding system of claim 1 wherein the digital media decoding system is a video decoding system and wherein the hardware accelerator is adapted to perform the decoding function on a video data stream.
- 10. The video decoding system of claim 9 comprising a plurality of hardware accelerators coupled to the processor, each accelerator adapted to perform a decoding function on the video data stream, wherein each of the accelerators are configurable to perform their associated decoding functions according to a plurality of decoding methods.
- 11. The video decoding system of claim 10 wherein the plurality of hardware accelerators comprise:
a programmable entropy decoder adapted to perform entropy decoding on the data stream; an inverse quantizer adapted to perform inverse quantization on the data stream; an inverse transform accelerator adapted to perform inverse transform operations on the data stream; a pixel filter adapted to perform pixel filtering on the data stream; and a motion compensator adapted to perform motion compensation on the data stream.
- 12. The video decoding system of claim 11 wherein the plurality of hardware accelerators further comprise a de-blocking filter adapted to perform de-blocking operations on the data stream.
- 13. The digital media decoding system of claim 11 wherein the processor is adapted to configure each of the accelerators to perform the decoding function according to a format of the media data to be decoded.
- 14. The video decoding system of claim 11 wherein each of the accelerators include includes one of a set of registers or memory coupled to an internal processor, that dictates operational parameters of the accelerator and wherein the processor programs the registers or the memory in order to configure the accelerator and wherein the processor reads the registers or the memory in order to derive operational status of the accelerator.
- 15. A method of decoding digital media data streams, comprising:
(a) configuring a first decoding accelerator and a second decoding accelerator to respectively perform a first decoding function and a second decoding function on a data stream in a first media format; (b) in a first stage, performing a first decoding function on an ith data element of the data stream with the first decoding accelerator; (c) in a second stage, after the first stage, performing a second decoding function on the ith data element with the second decoding accelerator, while performing the first decoding function on an i+1st data element in the data stream with the first decoding accelerator; (d) configuring the first decoding accelerator and the second decoding accelerator to respectively perform a first decoding function and a second decoding function on a data stream in a second media format; and (e) repeating steps (b) and (c).
- 16. The method of claim 15 wherein the second decoding function for a given data element is dependent upon a result of the first decoding function for the given data element.
- 17. The method of claim 15 further comprising:
(c) in a third stage, after the second stage, performing a third decoding function on the ith data element with a third decoding accelerator, while performing the second decoding function on the i+1st data element with the second decoding accelerator and performing the first decoding function on an i+2nd data element in the data stream with the first decoding accelerator.
- 18. The method of claim 17 wherein the second decoding function for a given data element is dependent upon a result of the first decoding function for the given data element, and wherein the third decoding function for a given data element is dependent upon a result of the second decoding function for the given data element.
- 19. The method of claim 15 wherein step (a) comprises: in the first stage, performing a third decoding function on the ith data element of the data stream with a third decoding accelerator while performing the first decoding function on the ith data element with the first decoding accelerator, and wherein step (b) comprises: in the second stage, performing the second decoding function on the ith data element with a second decoding accelerator, while performing the first and third decoding functions on an i+1st data element in the data stream with the first and third decoding accelerators, respectively.
- 20. The method of claim 19 wherein the second decoding function for a given data element is dependent upon a result of both the first decoding function and the third decoding function for the given data element.
- 21. The method of claim 19 wherein the data stream is a video data stream and wherein the first decoding function comprises an inverse discrete cosine transform operation, the second decoding function comprises a motion compensation operation, and the third decoding operation comprises a pixel filtering operation.
- 22. The method of claim 15 wherein the data stream is a video data stream.
- 23. The method of claim 22 wherein the data elements represent macroblocks of a digital video image.
- 24. A method of decoding a digital video data stream, comprising:
(a) configuring an entropy decoding accelerator and an inverse quantization accelerator to respectively perform an entropy decoding function and an inverse quantization function on a data stream in a first media format; (b) in a first stage, performing entropy decoding on an ith data element of the data stream; (c) in a second stage, after the first stage, performing inverse quantization on a product of the entropy decoding of the ith data element, while performing entropy decoding on an i+1st data element in the data stream; (d) configuring the entropy decoding accelerator and the inverse quantization accelerator to respectively perform an entropy decoding function and an inverse quantization function on a data stream in a second media format; and (e) repeating steps (b) and (c).
- 25. The method of claim 24 further comprising:
(c) in a third stage, after the second stage, performing an inverse transform operation on a product of the inverse quantization of the ith data element while performing inverse quantization on a product of the entropy decoding of the i+1st data element and performing entropy decoding on an i+2nd data element in the data stream.
- 26. The method of claim 25 wherein performing step (c) further comprises performing pixel filtering on the ith data element while performing the inverse transform operation on the product of the inverse quantization of the ith data element.
- 27. The method of claim 26 further comprising:
(d) in a fourth stage, after the third stage, performing motion compensation on the ith data element using a product of the inverse transform operation performed on the ith data element and a product of the pixel filtering performed on the ith data element, while performing an inverse transform operation on a product of the inverse quantization of the i+1st data element, performing inverse quantization on a product of the entropy decoding of the i+2nd data element, and performing entropy decoding on an i+3rd data element in the data stream.
- 28. The method of claim 27 further comprising:
(e) iteratively repeating performing step (d), as long as the data stream contains further data elements to be decoded.
- 29. The method of claim 24 wherein the data elements represent macroblocks of a digital video image.
- 30. 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.
- 31. The method of claim 30 wherein the digital media data stream is a video data stream and the media data is video data.
- 32. The method of claim 31 wherein the video data represent macroblocks of a digital video image.
INCORPORATION BY REFERENCE OF RELATED APPLICATIONS
[0001] The following U.S. patent applications are related to the present application and are hereby specifically incorporated by reference: patent application Ser. No. ______, entitled “METHOD OF OPERATING A VIDEO DECODING SYSTEM” (Attorney Ref. No. 13305US01); patent application Ser. No. ______, entitled “METHOD OF COMMUNICATING BETWEEN MODULES IN A DECODING SYSTEM” (Attorney Ref. No. 13304US01); patent application Ser. No. ______, entitled “MEMORY SYSTEM FOR VIDEO DECODING SYSTEM” (Attorney Ref. No. 13388US01); patent application Ser. No. ______, entitled “INVERSE DISCRETE COSINE TRANSFORM SUPPORTING MULTIPLE DECODING PROCESSES” (Attorney Ref. No. 13303US01); and patent application Ser. No. ______,entitled “RISC PROCESSOR SUPPORTING ONE OR MORE UNINTERRUPTIBLE CO-PROCESSORS” (Attorney Ref. No. 13306US01); all filed on even date herewith. The following Provisional U.S. patent applications are also related to the present application and are hereby specifically incorporated by reference: Provisional Patent Application No. ______, entitled “VIDEO DECODING SYSTEM HAVING A PROGRAMMABLE VARIABLE LENGTH DECODER” (Attorney Ref. No. 13300US01); Provisional Patent Application No. ______, entitled “PROGRAMMABLE VARIABLE LENGTH DECODER” (Attorney Ref. No. 13391US01); Provisional Patent Application No. ______, entitled “DMA ENGINE HAVING MULTI-LEVEL COMMAND STRUCTURE” (Attorney Ref. No. 13390US01); and Provisional Patent Application No. ______, entitled “INVERSE QUANTIZER SUPPORTING MULTIPLE DECODING PROCESSES” (Attorney Ref. No. 13387US01); all filed on even date herewith.