Claims
- 1. A method of decoding a variable-length code data stream, comprising steps of:
(a) setting a base memory address equal to a start address; (b) retrieving the next n bits in the data stream; (c) accessing a memory location having an address equal to the sum of the base address plus the value of the n retrieved bits, which memory location includes status data indicating whether a codeword is found, wherein, if a codeword is found, the memory location includes corresponding information, and wherein if a codeword not found, the memory location includes an offset value; (d) if a codeword has been identified:
(d)(i) outputting the decoded information corresponding to the codeword; (d)(ii) setting the base address equal to the start address; and (d)(iii) shifting the data in the data stream by a number of the retrieved bits that correspond to the decoded information; (e) if a codeword has not been identified:
(e)(i) setting the base address according to the offset value; and (e)(ii) shifting the data in the data stream n bits; and (f) iteratively repeating steps (b)-(e).
- 2. The method of claim 1 wherein the memory location includes current code-length data indicating the number of bits by which to shift the data in the data steam in shifting steps (d)(iii) and (e)(ii).
- 3. The method of claim 2 wherein, if a codeword has been identified, the current code-length data indicates the number of the retrieved bits that correspond to the decoded information.
- 4. The method of claim 2 wherein, if a codeword has not been identified, the current code-length data indicates the number, n, of bits retrieved in step (b).
- 5. The method of claim 1 wherein shifting steps (d)(iii) and (e)(ii) comprise left-shifting the data in the data stream.
- 6. The method of claim 1 wherein if a codeword has not been identified, the memory location includes next-search-length data indicating a number, n, of bits to be retrieved in the next stage and wherein step (e) further comprises a sub-step (e)(iii) of setting the number of bits, n, to be retrieved in the next stage equal to the value of the next-search-length data.
- 7. The method of claim 1 wherein step (f) comprises iteratively repeating steps (b)-(e) as long as there is data in the data stream to decode.
- 8. The method of claim 1 wherein the variable-length code data stream is a media data stream.
- 9. The method of claim 8 wherein the variable-length code data stream is a video data stream.
- 10. The method of claim 9 wherein if a codeword is identified, the memory location includes a discrete cosine transform coefficient corresponding to the found codeword.
- 11. The method of claim 1 wherein step (e)(i) comprises setting the base address equal to the offset value.
- 12. The method of claim 1 wherein step (e)(i) comprises setting the base address equal to the sum of the offset value plus the start address.
- 13. A method of decoding a variable-length code data stream, comprising steps of:
(a) designating a first memory element as a memory element to be searched; (b) retrieving the next n bits in the data stream; (c) accessing a designated memory location in the memory element to be searched, which memory location includes status data indicating whether a codeword from the data stream has been identified, wherein if a codeword has been identified, the memory location includes decoded information corresponding to the identified codeword, and wherein if a codeword has not been identified, the memory location includes a next-search-location indicator indicating a memory element at which to perform the next search; (d) if a codeword has been identified:
(d)(i) outputting the decoded information corresponding to the codeword; (d)(ii) designating the first memory element as the memory element to be searched; and (d)(iii) shifting the data in the data stream by a number of the retrieved bits that correspond to the decoded information; (e) if a codeword has not been identified:
(e)(i) designating the memory element indicated by the next-search indicator as the memory element to be searched; and (e)(ii) shifting the data in the data stream n bits; and (f) iteratively repeating steps (b)-(e).
- 14. The method of claim 13 wherein step (a) further comprises setting a base memory address equal to a start address, wherein the designated memory location of step (c) has an address equal to the sum of the base address plus the value of the n retrieved bits, wherein the memory location of step (c) includes an offset value, wherein step (d) further comprises a sub-step (d)(iv) of setting the base address equal to the start address, and wherein step (e) further comprises a sub-step (e)(iii) of setting the base address according to the offset value.
- 15. The method of claim 14 wherein step (e)(iii) comprises setting the base address equal to the offset value.
- 16. The method of claim 14 wherein step (e)(iii) comprises setting the base address equal to the sum of the offset value plus a starting address of the memory element indicated by the next-search-location indicator.
- 17. The method of claim 13 wherein the memory location includes current code-length data indicating the number of bits by which to shift the data in the data steam in shifting steps (d)(iii) and (e)(ii).
- 18. The method of claim 17 wherein, if a codeword is identified, the current code-length data indicates the number of the retrieved bits that correspond to the decoded information.
- 19. The method of claim 17 wherein, if a codeword is not identified, the current code-length data indicates the number, n, of bits retrieved in step (b).
- 20. The method of claim 13 wherein shifting steps (d)(iii) and (e)(ii) comprise left-shifting the data in the data stream.
- 21. The method of claim 13 wherein if a codeword is not identified, the memory location includes next-search-length data indicating a number, n, of bits to be retrieved in the next stage and wherein step (e) further comprises a sub-step (e)(iii) of setting the number of bits, n, to be retrieved in the next stage equal to the value of the next-search-length data.
- 22. The method of claim 13 wherein step (f) comprises iteratively repeating steps (b)-(e) as long as there is data in the data stream to decode.
- 23. The method of claim 13 wherein the variable-length code data stream is a media data stream.
- 24. The method of claim 23 wherein the variable-length code data stream is a video data stream.
- 25. The method of claim 24 wherein if a codeword has been identified, the memory location includes a discrete cosine transform coefficient corresponding to the identified codeword.
- 26. A data decoding system comprising:
a variable-length decoder (VLD) comprising:
an address generator adapted to receive data from the data stream and to generate a memory address at which to search for a codeword match in a VLD look-up table; and a local memory unit adapted to store at least a portion of the VLD look-up table; and a first external memory unit external to the variable-length decoder and adapted to store a portion of the VLD look-up table if the VLD look-up table is larger than an amount of memory allotted for the VLD look-up table in the local memory unit.
- 27. The system of claim 26 wherein the first external memory unit is internal to the data decoding system.
- 28. The system of claim 27 wherein the first external memory unit is a static random access memory (SRAM) unit.
- 29. The system of claim 26 further comprising a second external memory unit external to the variable-length decoder and adapted to store a portion of the VLD look-up table if the VLD look-up table is larger than a combined amount of memory allotted for the VLD table in the local memory unit and the first external memory unit.
- 30. The system of claim 29 wherein the second external memory unit is external to the data decoding system.
- 31. The system of claim 30 wherein the second external memory unit is a main memory unit for a communications system that the data decoding system is a component of.
- 32. The system of claim 31 wherein the second external memory unit is a dynamic random access memory (DRAM) unit.
- 33. The system of claim 26 wherein the variable-length decoder further comprises:
a shift register adapted to store data from the data stream and to shift the data an indicated number of bits after a codeword search is completed and to provide an indicated number of the most significant bits in the shift register after a shift to the address generator.
- 34. The system of claim 33 wherein the VLD look-up table includes a plurality of entries, each entry comprising a status indicator indicating whether the entry contains the information corresponding to a block of data stream data for which a match is sought and a current-code-length indicator indicating the number of bits by which to shift the data in the shift register.
- 35. The system of claim 34 wherein each entry in the VLD look-up table that does not contain a code match further comprises a next-search-length indicator indicating the number of most significant bits the shift register is to provide to the address generator.
- 36. The system of claim 35 wherein each entry in the VLD look-up table that does not contain a code match further comprises a next-search-location indicator indicating the memory unit at which to next search the VLD table for a match.
- 37. The system of claim 36 wherein the address generator generates the memory address at which to search for a codeword match in a VLD look-up table by adding a starting address of the VLD look-up table in the memory unit indicated by the next-search-location indicator plus the value of the bits provided by the shift register.
- 38. The system of claim 37 wherein each entry in the VLD look-up table that does not contain a code match further comprises an offset value indicating an address at which to next search the VLD table in one of the memory units for a match.
- 39. The system of claim 38 wherein the address generator generates the memory address at which to search for a codeword match in a VLD look-up table by further adding the offset value to the sum of the starting address of the VLD look-up table in the memory unit indicated by the next-search-location indicator and the value of the bits provided by the shift register.
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 No. 10/114,798, entitled “VIDEO DECODING SYSTEM SUPPORTING MULTIPLE STANDARDS” (Attorney Ref. No. 13301US01); patent application No. 10/114,679, entitled “METHOD OF OPERATING A VIDEO DECODING SYSTEM” (Attorney Ref. No. 13305US01); patent application No. 10/114,797, entitled “METHOD OF COMMUNICATING BETWEEN MODULES IN A DECODING SYSTEM” (Attorney Ref. No. 13304US01); patent application No. 10/114,886, entitled “MEMORY SYSTEM FOR VIDEO DECODING SYSTEM” (Attorney Ref. No. 13388US01); patent application No. 10/114,619, entitled “INVERSE DISCRETE COSINE TRANSFORM SUPPORTING MULTIPLE DECODING PROCESSES” (Attorney Ref. No. 13303US01); and patent application No. 10/113,094, entitled “RISC PROCESSOR SUPPORTING ONE OR MORE UNINTERRUPTIBLE CO-PROCESSORS” (Attorney Ref. No. 13306US01); all filed on Apr. 1, 2002. 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. 60/369,144, entitled “VIDEO DECODING SYSTEM HAVING A PROGRAMMABLE VARIABLE LENGTH DECODER” (Attorney Ref. No. 13300US01); Provisional Patent Application No. 60/369,210 entitled “DMA ENGINE HAVING MULTI-LEVEL COMMAND STRUCTURE” (Attorney Ref. No. 13390US01); and Provisional Patent Application No. 60/369,217, entitled “INVERSE QUANTIZER SUPPORTING MULTIPLE DECODING PROCESSES” (Attorney Ref. No. 13387US01); all filed on Apr. 1, 2002.
Provisional Applications (3)
|
Number |
Date |
Country |
|
60369144 |
Apr 2002 |
US |
|
60369210 |
Apr 2002 |
US |
|
60369217 |
Apr 2002 |
US |