Virtual frame buffer system and method
First Claim
1. A system for encoding a file, the file comprises frames and each frame comprises macroblocks, comprising:
- memory;
a processor communicatively connected to the memory;
a first physical frame buffer in the memory, the first physical frame buffer includes a plurality of first sectors, each first sector capable of storing a respective one of the macroblocks of any one of the frame;
a first virtual frame buffer table in the memory, the first virtual frame buffer table is a single bit array in the memory and each single bit of the array is positioned in the array to indirectly reference a respective one of the first sectors; and
a respective first pointer stored in the first virtual frame buffer table, the respective first pointer corresponds to a respective one of the first sectors and refers to (i) if the macroblock of the respective one of the first sectors is not matched by another macroblock of another respective one of the first sectors, the respective one of the first sectors containing the macroblock; and
(ii) if the macroblock of the respective one of the first sectors is matched by another macroblock of another respective one of the first sectors, the other respective one of the first sectors containing the other macroblock;
wherein, during encoding, either each next one of the macroblock of the frame is encoded or, if the next one of the macroblock is matched by another macroblock of another respective one of the first sectors having then-been encoded, encoding of the next one of the macroblock is skipped and the respective first pointer refers to the other macroblock of the other respective one of the first sectors.
1 Assignment
0 Petitions
Accused Products
Abstract
A system for encoding and decoding a frame (also file), such as a video, graphic, media, or other frame or data, representing a real-time graphic output from a frame buffer, output by a video camera, or another file or data. The file includes frames each comprising macroblocks. Reference frame buffers (PFTs), virtual frame buffer tables (VFTBs) of equal number to the PFTs, each VFTB corresponds to a respective PFT, and respective sectors of each PFT for respective macroblocks are created. Frames of the file are encoded/decoded by successive encode/decode of macroblocks. A pointer is created in the VFBT associated with the PFT rather than encoding/decoding any matching macroblock. The pointer and its reference are relied on for each already encoded/decoded macroblock retained in the PFT. Processing, memory, bandwidth and power requirements for encoding or decoding are reduced.
7 Citations
18 Claims
-
1. A system for encoding a file, the file comprises frames and each frame comprises macroblocks, comprising:
-
memory; a processor communicatively connected to the memory; a first physical frame buffer in the memory, the first physical frame buffer includes a plurality of first sectors, each first sector capable of storing a respective one of the macroblocks of any one of the frame; a first virtual frame buffer table in the memory, the first virtual frame buffer table is a single bit array in the memory and each single bit of the array is positioned in the array to indirectly reference a respective one of the first sectors; and a respective first pointer stored in the first virtual frame buffer table, the respective first pointer corresponds to a respective one of the first sectors and refers to (i) if the macroblock of the respective one of the first sectors is not matched by another macroblock of another respective one of the first sectors, the respective one of the first sectors containing the macroblock; and
(ii) if the macroblock of the respective one of the first sectors is matched by another macroblock of another respective one of the first sectors, the other respective one of the first sectors containing the other macroblock;wherein, during encoding, either each next one of the macroblock of the frame is encoded or, if the next one of the macroblock is matched by another macroblock of another respective one of the first sectors having then-been encoded, encoding of the next one of the macroblock is skipped and the respective first pointer refers to the other macroblock of the other respective one of the first sectors. - View Dependent Claims (2, 3, 4)
-
-
5. A method of encoding a file, the file comprises frames and each frame comprises macroblocks, comprising:
-
encoding a frame of the file, by successively encoding each respective macroblock of the frame, unless any macroblock previously encoded and then-retained in any respective one of first sectors of a first physical frame buffer is the same as the respective macroblock; storing each respective macroblock from encoding in the first physical frame buffer in a respective one of the first sectors, except not storing the respective macroblock from encoding if any macroblock previously encoded and then-retained in any respective one of the first sectors of the first physical frame buffer is the same as the respective macroblock; and creating a respective first pointer in a first virtual frame buffer table associated with the first physical frame buffer, for each macroblock of the frame then-currently for encoding, if any macroblock previously encoded matches the macroblock and if the macroblock previously encoded is then-retained in the first physical frame buffer; wherein, during encoding, either each next one of the macroblock of the frame is encoded or, if the next one of the macroblock is matched by another macroblock previously encoded of another one of the first sectors, encoding of the next one of the macroblock is skipped and the respective first pointer refers to the other macroblock previously encoded of the other one of the first sectors. - View Dependent Claims (6, 7, 8, 9)
-
-
10. A system for decoding an encoded file, the encoded file comprises encoded frames and each encoded frame comprises encoded macroblocks, comprising:
-
memory; a processor communicatively connected to the memory; a first physical frame buffer in the memory, the first physical frame buffer capable of containing one of the encoded frame once decoded, the first physical frame buffer includes a plurality of first sectors, each first sector capable of storing a respective one of the encoded macroblocks once decoded of the one of the encoded frame; a first virtual frame buffer table in the memory, the first virtual frame buffer table is a single bit array in the memory and each single bit of the array is positioned in the array to indirectly reference a respective one of the first sectors; and a respective first pointer stored in the first virtual frame buffer table, the respective first pointer corresponds to a respective one of the first sectors and refers to (i) if the encoded macroblock once decoded of the respective one of the first sectors is not matched by another encoded macroblock once decoded of another respective one of the first sectors, the respective one of the first sectors containing the encoded macroblock once decoded; and
(ii) if the encoded macroblock once decoded of the respective one of the first sectors is matched by another encoded macroblock once decoded of another respective one of the first sectors, the other respective one of the first sectors containing the other encoded macroblock once decoded;wherein, during decoding, either each next one of the encoded macroblock of the encoded frame is decoded or, if the next one of the encoded macroblock once decoded is matched by another encoded macroblock once decoded of another respective one of the first sectors, decoding of the next one of the encoded macroblock is skipped and the respective first pointer refers to the other encoded macroblock once decoded of the other respective one of the first sectors. - View Dependent Claims (11, 12, 13)
-
-
14. A method of decoding an encoded file, the encoded file comprises encoded frames and each encoded frame comprises encoded macroblocks, comprising:
-
decoding an encoded frame of the encoded file, by successively decoding each respective encoded macroblock of the encoded frame, unless any encoded macroblock previously decoded and then-retained in any respective one of first sectors of a first physical frame buffer is the same as the respective encoded macroblock; storing each respective encoded macroblock from decoding in the first physical frame buffer in a respective one of the first sectors, except not storing the respective encoded macroblock from decoding if any encoded macroblock previously decoded and then-retained in any one of the first sectors of the first physical frame buffer is the same as the respective encoded macroblock; and creating a respective pointer in a first virtual frame buffer table associated with the first physical frame buffer, for each encoded macroblock of the encoded frame then-currently for decoding, if any encoded macroblock previously decoded matches the encoded macroblock and if the encoded macroblock previously decoded is then-retained in the first physical frame buffer; wherein, during decoding, either each next one of the encoded macroblock of the encoded frame is decoded or, if the next one of the encoded macroblock is matched by another encoded macroblock previously decoded of another one of the first sectors, decoding of the next one of the encoded macroblock is skipped and the respective first pointer refers to the other encoded macroblock previously decoded of the other one of the first sectors. - View Dependent Claims (15, 16, 17, 18)
-
Specification