# US 2019/0320194 A1 · Virtual frame buffer system and method

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2019/0320194 A1
- Document ID: US20190320194A1
- Status: Published application
- Kind: A1
- Application number: 16/278,288
- Filed: 2019-02-18
- Published: 2019-10-17
- Earliest claimed: 2010-07-07
- Assignees: Netzyn, Inc.
- Applicants: Netzyn, Inc.
- Inventors: Steve Bakke
- Web page: https://patentgrep.com/patent/US20190320194A1

## CPC

- H04N 19/433: characterised by techniques for memory access
- G06F 3/1415: {with means for detecting differences between the image stored in the host and the images displayed on the displays}
- G09G 5/395: Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen (G09G5/399 takes precedence)
- G09G 5/397: Arrangements specially adapted for transferring the contents of two or more bit-mapped memories to the screen simultaneously, e.g. for mixing or overlay (G09G5/02 takes precedence)
- G09G 5/399: using two or more bit-mapped memories, the operations of which are switched in time, e.g. ping-pong buffers
- H04N 19/423: characterised by memory arrangements (H04N19/433 takes precedence)
- H04N 19/50: using predictive coding (H04N19/61 takes precedence)
- H04N 19/507: using conditional replenishment
- H04N 19/513: Processing of motion vectors
- G09G 2310/04: Partial updating of the display screen
- G09G 2320/103: Detection of image changes, e.g. determination of an index representative of the image change
- G09G 2350/00: Solving problems of bandwidth in display systems
- G09G 2360/18: Use of a frame buffer in a display terminal, inclusive of the display panel
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G09G: ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION (arrangements for transferring data between digital computers and displays G06F3/14; static indicating arrangements comprising an association of a number of separate sources or light control cells G09F9/00; static indicating arrangements comprising integral associations of a number of light sources H01J, H01K, H10H, H05B33/12; scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission, details thereof H04N1/00)

## 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.

## Claims

### Claim 1

A device for encoding a file, the file comprises frames and each frame comprises macroblocks for encoding, comprising:
memory;
a processor communicatively connected to the memory;
an encoder communicatively connected to and controlled by the processor;
a plurality of reference frame buffers created in the memory by the encoder under control of the processor, wherein each reference frame buffer is distinct from any other of the plurality of reference frame buffers in the memory, each reference frame buffer capable of containing one of the frame;
a plurality of virtual frame buffer tables, equal in number to number of the reference frame buffers in the memory, created in the memory by the encoder under control of the processor;
a plurality of respective sectors of each reference frame buffer, respectively, each respective sector capable of storing one of the macroblocks corresponding to part of one of the frame of the file; and
a respective pointer created by the encoder during encoding, if any one of the macroblock of one of the frame of the file matches any macroblock of another one of the frames previously encoded by the encoder wherein any of the plurality of reference frame buffers then-retains the macroblock of the other of the frames;
wherein the encoder during encoding either encodes each next one of the macroblock of the frame or, if any macroblock of another one of the frames previously encoded is then-retained in any of the plurality of reference frame buffers, creates the respective pointer and stores the respective pointer in the virtual frame buffer table corresponding to the frame then being encoded.

### Claim 2

A device for decoding an encoded file, the encoded file comprises encoded frames and each frame comprises encoded macroblocks for decoding, comprising:
memory;
a processor communicatively connected to the memory;
a decoder communicatively connected to and controlled by the processor;
a plurality of reference frame buffers created in the memory by the decoder under control of the processor, wherein each reference frame buffer is distinct from any other of the plurality of reference frame buffers in the memory, each reference frame buffer capable of containing one of the encoded frame;
a plurality of virtual frame buffer tables, equal in number to number of the reference frame buffers in the memory, created in the memory by the decoder under control of the processor, each virtual frame buffer table, respectively, corresponds distinctly to one of the reference frame buffer, respectively;
a plurality of respective sectors of each reference frame buffer, respectively, each respective sector capable of storing one of the encoded macroblocks corresponding to part of one of the encoded frame of the encoded file; and
a respective pointer created by the decoder during decoding, if any one of the encoded macroblock of one of the encoded frame of the encoded file matches any encoded macroblock of another one of the encoded frames previously decoded by the decoder wherein any of the plurality of reference frame buffers then-retains the encoded macroblock of the other of the encoded frames;
wherein the decoder during decoding either decodes each next one of the encoded macroblock of the encoded frame or, if any encoded macroblock of another one of the encoded frames previously decoded is then-retained in any of the plurality of reference frame buffers, creates the respective pointer and stores the respective pointer in the virtual frame buffer table corresponding to the encoded frame then being decoded.

### Claim 3 (depends on 1, 2)

A system according to claims 1 and 2, further comprising:
a communication link connecting the device of claim 1 to the device of claim 2.

### Claim 4 (depends on 3)

The system of claim 3, wherein the communication link is a circuit.

### Claim 5 (depends on 3)

The system of claim 3, wherein the communication link is selected from the group of: wire, wireless link, cellular link, optic link, satellite, public switched telephone network, Internet, local area network, wireless local area network, or other communication network, or any combination of any or some of these.

### Claim 6 (depends on 1, 2)

A system according to claims 1 and 2, wherein at least certain of the device of claim 1 is the device of claim 2, and vice versa.

### Claim 7

A method of encoding a file, the file comprises frames and each frame comprises macroblocks for encoding, comprising the steps of:
creating in a memory a plurality of reference frame buffers, wherein each reference frame buffer is distinct from any other of the plurality of reference frame buffers in the memory, each reference frame buffer capable of containing one of the frame;
creating in the memory a plurality of virtual frame buffer tables, equal in number to number of the reference frame buffers in the memory, each virtual frame buffer table, respectively, corresponds distinctly to one of the reference frame buffer, respectively;
creating a plurality of respective sectors of each reference frame buffer, respectively, each respective sector sufficient for storage of one of the macroblocks corresponding to part of one of the frame of the file;
encoding one of the frames of the file, by successively encoding each respective one of the macroblocks of the one of the frame, unless any already encoded macroblock (if any) then-retained in any of the respective sectors of any of the reference frame buffers would be the same as the encoded macroblock, once encoded in the step of encoding;
storing respective ones of the encoded macroblocks, each respectively corresponding to respective ones of the macroblocks of the one of the frame of the file from the step of encoding, in respective ones of the plurality of respective sectors, except not storing one of the encoded macroblocks if any already encoded macroblock (if any) then-retained in any of the respective sectors of any of the reference frame buffers would be the same as the encoded macroblock, once encoded in the step of encoding;
creating a respective pointer in the virtual frame buffer table associated with the reference frame buffer then available for the step of encoding, for each macroblock (if any) of the frame then-currently for the step of encoding, if any macroblock of one of the frame previously encoded matches the macroblock of the step of creating a respective pointer and if the encoded macroblock of the frame previously encoded is then-retained in any of the reference buffer tables;
storing the respective pointer from the step of creating the respective pointer (if performed), in the virtual frame buffer table associated with the reference frame buffer for the step of encoding; and
returning to the step of encoding, but rather than encoding the macroblock in the step of encoding, relying on the respective pointer for encoding in order to reference the encoded macroblock;
wherein the encoder during encoding either encodes each next one of the macroblock of the frame or, if any macroblock of another one of the frames previously encoded is then-retained in any of the plurality of reference frame buffers, creates the respective pointer and stores the respective pointer in the virtual frame buffer table corresponding to the frame then being encoded.

### Claim 8

A method of decoding an encoded file, the encoded file comprises encoded frames and each encoded frame comprises encoded macroblocks for decoding and the file, when decoded, comprises frames and each frame comprises macroblocks, comprising the steps of:
creating in a memory a plurality of reference frame buffers, wherein each reference frame buffer is distinct from any other of the plurality of reference frame buffers in the memory, each reference frame buffer capable of containing one of the encoded frame;
creating in the memory a plurality of virtual frame buffer tables, equal in number to number of the reference frame buffers in the memory, each virtual frame buffer table, respectively, corresponds distinctly to one of the reference frame buffer, respectively;
creating a plurality of respective sectors of each reference frame buffer, respectively, each respective sector sufficient for storage of one of the macroblocks corresponding to part of one of the frame of the file;
decoding one of the encoded frames of the encoded file, by successively decoding each respective one of the encoded macroblocks of the one of the encoded frame, unless the encoded macroblock, once decoded, would match any macroblock previously decoded and then-retained in any of the respective sectors of any of the reference frame buffers;
storing respective ones of the macroblocks, each respectively corresponding to respective ones of the macroblocks of the one of the frame of the file from the step of decoding, in respective ones of the plurality of respective sectors, except not storing one of the macroblocks if the macroblock, once decoded, would match any macroblock previously decoded and then-retained in any of the respective sectors of any of the reference frame buffers;
creating a respective pointer in the virtual frame buffer table associated with the reference frame buffer then available for the step of decoding, for each encoded macroblock (if any) of the encoded frame then-currently for the step of decoding if the encoded macroblock, once decoded, would match any macroblock previously decoded and retained in any of the reference buffer tables;
storing the respective pointer from the step of creating the respective pointer (if performed), in the virtual frame buffer table associated with the reference frame buffer for the step of decoding; and
returning to the step of decoding, but rather than decoding the encoded macroblock in the step of decoding, relying on the respective pointer for decoding in order to reference the macroblock;
wherein the decoder during decoding either decodes each next one of the encoded macroblock of the encoded frame or, if any encoded macroblock of another one of the encoded frames previously decoded is then-retained in any of the plurality of reference frame buffers, creates the respective pointer and stores the respective pointer in the virtual frame buffer table corresponding to the encoded frame then being decoded.

### Claim 9 (depends on 1)

The device of claim 1,
wherein the file is a graphical type screen (such as a word processor or spreadsheet) of size about 5,000 to about 10,000 macroblocks; and
wherein only about one to about ten macroblocks need be updated in a changed frame, wherein the processing, memory requirements, bandwidth and power are thereby reduced in encoding or decoding, respectively.

### Claim 10 (depends on 7)

The method of claim 7,
wherein the file is a graphical type screen (such as a word processor or spreadsheet) of size about 5,000 to about 10,000 macroblocks; and
wherein only about one to about ten macroblocks need be encoded in the step of encoding for any frame of macroblocks not previously encoded, wherein the processing, memory requirements, bandwidth and power are thereby reduced in encoding.

### Claim 11 (depends on 8)

The method of claim 8,
wherein the encoded file represents a graphical type screen (such as a word processor or spreadsheet) of size about 5,000 to about 10,000 macroblocks; and
wherein only about one to about ten encoded macroblocks need be decoded in the step of decoding for any encoded frame of encoded macroblocks not previously decoded of another encoded frame, wherein the processing, memory requirements, bandwidth and power are thereby reduced in decoding.

### Claim 12 (depends on 7)

An encode device operating in accordance with claim 7.

### Claim 13 (depends on 8)

A decode device operating in accordance with claim 8.

### Claim 14

An encoder/decoder device for processing a single reference frame, comprising:
a virtual frame buffer table of a single bit array in a memory; and
a processor connected to the virtual frame buffer table for writing the single reference frame to the single bit array.

### Claim 15 (depends on 1)

The device of claim 1, wherein the device is selected from the group consisting of: circuit, computer program stored in memory, processor, and any combination of these.

### Claim 16 (depends on 2)

The device of claim 2, wherein the device is selected from the group consisting of: circuit, computer program stored in memory, processor, and any combination of these.

### Claim 17 (depends on 1, 2)

A system according to claims 1 and 2, wherein at least certain of the device of claim 1 is the device of claim 2, and vice versa, and the system further comprises:
a communication network;
a first device connected to the communication network, the first node includes at least portions of the device of claim 1; and
a second device connected to the communication network, the second node includes at least portions of the device of claim 2;
wherein the encoded file is communicated by the first node to the second node over the network for decoding.

### Claim 18 (depends on 2)

The device of claim 2,
wherein the file is a graphical type screen (such as a word processor or spreadsheet) of size about 5,000 to about 10,000 macroblocks; and
wherein only about one to about ten macroblocks need be updated in a changed frame, wherein the processing, memory requirements, bandwidth and power are thereby reduced in encoding or decoding, respectively.
