IP Library Granted Patent US 7,433,519
Granted Patent B2
US 7,433,519 · App. 10/817,209 · Granted Oct 7, 2008

Bitstream format for compressed image data

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,433,519
App. No.
10/817,209
Granted
Oct 7, 2008
Kind
B2
Abstract

It is desirable to provide a bitstream format for compressed data that would allow multiple processors to access and decompress different parts of the data in parallel. Compressed images are usually defined in terms of macroblocks that have a width less than the image width and a height less than the image height. Thus, an image is divided several bands of multiple lines, and each band of multiple lines is divided into a macroblock. The set of macroblocks that define a band is called herein a macroblock rasterscan. The bit stream format includes, for each image, a picture header followed by image scan data. The image scan data includes data corresponding to a plurality of macroblock rasterscans. The data for each macroblock rasterscan includes data for a plurality of macroblocks for a band of lines in the image followed by padding. The padding ensures that data for each macroblock rasterscan terminates on a data boundary. The picture header references an image scan index that indicates a number of macroblock rasterscans in the image scan data and a number of lines per macroblock rasterscan, followed by entries of the index. Each entry in the index includes an offset of the macroblock rasterscan in image scan. The picture header may contain a reference to a picture header type, that references an I_frame_image_descriptor, which references the image scan index.

Claims (126)

1. A computer information product, comprising:

a computer readable medium;

data stored on the computer readable medium that, when interpreted by a computer, defines a bitstream for compressed image data, comprising:

for each image, a picture header followed by image scan data,

wherein the image scan data includes rasterscan data corresponding to a plurality of macroblock rasterscans, wherein the rasterscan data for each macroblock rasterscan includes:

macroblock data for a plurality of macroblocks for a band of lines in the image; and

padding, wherein the macroblock data is followed by the padding,

whereby rasterscan data for each macroblock rasterscan terminates on a data boundary; and

wherein the picture header references an image scan index that indicates a number of macroblock rasterscans in the image scan data and a number of lines per macroblock rasterscan, followed by entries of the index, and

wherein each entry in the index includes an offset of the macroblock rasterscan in image scan.

2. The computer information product of claim 1 , wherein the picture header references the image scan index by referencing an image descriptor, and wherein the image descriptor includes a reference to the image scan index.

3. A method for reading a bitstream of compressed image data, wherein the bitstream includes:

for each image, a picture header followed by image scan data,

wherein the image scan data includes rasterscan data corresponding to a plurality of macroblock rasterscans, wherein the rasterscan data for each macroblock rasterscan includes:

macroblock data for a plurality of macroblocks for a band of lines a the image; and

padding, wherein the macroblock data is followed by the padding,

whereby rasterscan data for each macroblock rasterscan terminates on a data boundary; and

wherein the picture header references an image scan index that indicates a number of macroblock rasterscans in the image scan data and a number of lines per macroblock rasterscans, followed by entries of the index, and

wherein each entry in the index includes an offset of the macroblock rasterscan in-image scan, the method comprising:

accessing the picture header to locate the image scan index;

accessing the image scan index to locate, for each macroblock rasterscan, the offset of the macroblock rasterscan in the image scan data; and

retrieving each macroblock rasterscans according to the offsets from the image scan index.

4. The method of claim 3 , further comprising decoding each of the macroblock rasterscans in parallel.

5. The method of claim 3 , wherein the picture header references the image scan index by referencing an image descriptor, wherein the image descriptor includes a reference to the image scan index, wherein the accessing the picture header comprises:

accessing the picture header to locate the image descriptor;

accessing the image descriptor to locate the image scan index.

6. A computer program product comprising:

a computer readable medium;

computer program instructions stored on the computer readable medium that, when executed by a computer, instruct the computer to perform a method for reading a bitstream of compressed image data, wherein the bitstream includes:

for each image a picture header followed by image scan data,

wherein the image scan data includes rasterscan data corresponding to a plurality of macroblock rasterscans, wherein the rasterscan data for each macroblock rasterscan includes

macroblock data for a plurality of macroblocks for a band of lines in the image; and

padding, wherein the macroblock data is followed by padding,

whereby rasterscan data for each macroblock rasterscan terminates on a data boundary; and

wherein the picture header references an image scan index that indicates a number of macroblock rasterscans in the image scan data and a number of lines per macroblock rasterscan followed by entries of the index, and

wherein each entry in the index includes an offset of the macroblock rasterscan in image scan, wherein the method comprises:

accessing the picture header to locate the image scan index;

accessing the image scan index to locate, for each macroblock rasterscan, the offset of the macroblock rasterscan in the image scan data;

retrieving each macroblock rasterscans according to the offsets from the image scan index.

7. The computer program product of claim 6 , wherein the method further comprises decoding each of the macroblock rasterscans in parallel.

8. The computer program product of claim 6 , wherein the picture header references the image scan index by referencing an image descriptor wherein the image descriptor includes a reference to the image scan index, wherein the accessing the picture header comprises:

accessing the picture header to locate the image descriptor;

accessing the image descriptor to locate the image scan index.

9. A method for writing a bitstream of compressed image data, comprising:

for each image, defining a picture header followed by image scan data, including:

for each band of lines in the image, defining a bitstream in memory for a macroblock rasterscan using macroblock data for a plurality of macroblocks for the band of lines, followed by padding that makes each macroblock rasterscan terminate on a data boundary;

defining the image scan data to include rasterscan data corresponding to a plurality of macroblock rasterscans and defining an image scan index that indicates a number of macroblock rasterscans in the image scan data and a number of lines per macroblock rasterscan, followed by entries of the image scan index;

creating entries in the image scan index such that each entry in the index includes an offset of the macroblock rasterscan in image scan;

creating a reference in the picture header to the image scan index, and

writing the picture header followed by the image scan data in the bitstream.

10. A computer program product, comprising:

a computer readable medium;

computer program instructions stored on the computer readable medium that, when executed by a computer, instruct the computer to perform a method for writing a bitstream of compressed image data, comprising:

for each image, defining a picture header followed by image scan data, including:

for each band of lines in the image, defining a bitstream in memory for a macroblock rasterscan using macroblock data for a plurality of macroblocks for the band of lines, followed by padding that makes each macroblock rasterscan terminate on a data boundary;

defining the image scan data to include data corresponding to a plurality of macroblock rasterscans; and

defining an image scan index that indicates a number of macroblock rasterscans in the image scan data and a number of lines per macroblock rasterscan, followed by entries of the image scan index;

creating entries in the image scan index such that each entry in the index includes an offset of the macroblock rasterscan in image scan;

creating a reference in the picture header to the image scan index, and

writing the picture header followed by the image scan data in the bitstream.

11. A method for reading a bitstream of compressed image data, wherein the bitstream includes,

for each image, a picture header followed by image scan data,

wherein the image scan data includes rasterscan data corresponding to a plurality of macroblock rasterscans, wherein the rasterscan data for each macroblock rasterscan includes

macroblock data for a plurality of macroblocks for a band of lines in the image; and

padding, wherein the macroblock data is followed by padding,

whereby data for each macroblock rasterscan terminates on a data boundary, the method comprising:

reading a macroblock rasterscan from the image scan data;

identifying an end of block code in the macroblock rasterscan; and

reading a subsequent macroblock rasterscan starting from a data boundary immediately following the end of block code.

12. A computer information product, comprising:

a computer readable medium;

data stored on the computer readable medium that, when interpreted by a computer, defines a bitstream for compressed image data, comprising:

for each image, a picture header followed by image data,

wherein the image data includes macroblock data for a plurality of sets of macroblocks, wherein each set of macroblocks includes a plurality of macroblocks, wherein the macroblock data for each set of macroblocks includes data for the plurality of macroblocks in the set, followed by padding whereby the data for each set of macroblocks terminates on a data boundary; and

wherein the picture header references an index that indicates a number of sets of macroblocks in the image data and the image data represented by each set of macroblocks, followed by entries of the index, and

wherein each entry in the index includes an offset for one of the sets of macroblocks in the image data.

13. The computer information product of claim 12 , wherein the picture header references the index by referencing an image descriptor; and wherein the image descriptor includes a reference to the index.

14. A method for reading a bitstream of compressed image data, wherein the bitstream includes,

for each image, a picture header followed by image scan data,

wherein the image scan data includes rasterscan data corresponding to a plurality of macroblock rasterscan, wherein the rasterscan data for each macroblock rasterscan includes

macroblock data for a plurality of macroblocks for a band of lines in the image; and

padding, wherein the macroblock data is followed by padding,

whereby data for each macroblock rasterscan terminates on a data boundary, the method comprising:

accessing the picture header to locate the image scan index;

accessing the image scan index to locate, for each macroblock rasterscan, the offset of the macroblock rasterscan in the image scan data;

retrieving each macroblock rasterscan according to the offsets from the image scan index.

15. The method of claim 14 , further comprising decoding each of the sets of macroblocks in parallel.

16. The method of claim 14 , wherein the picture header references the index by referencing an image descriptor, wherein the image descriptor includes a reference to the index, wherein the accessing the picture header comprises:

accessing the picture header to locate the image descriptor;

accessing the image descriptor to locate the index.

17. A computer program product, comprising:

a computer readable medium;

computer program instructions stored on the computer readable medium that, when executed by a computer, instruct the computer to perform a method for reading a bitstream of compressed image data, wherein the bitstream includes

for each image, a picture header followed by image scan data,

wherein the image scan data includes rasterscan data corresponding to a plurality of macroblock rasterscans, wherein the rasterscan data for each macroblock rasterscan includes

macroblock data for a plurality of macroblocks for a band of lines in the image; and

padding, wherein the macroblock data is followed by padding,

whereby data for each macroblock rasterscan terminates on a data boundary, wherein the method comprises:

accessing the picture header to locate the index;

accessing the index to locate, for each set of macroblocks, the offset of the set of macroblocks in the image data; retrieving each set of macroblocks according to the offsets from the index.

18. The computer program product of claim 17 , wherein the method further comprises decoding each of the sets of macroblocks in parallel.

19. The computer program product of claim 17 , wherein the picture header references the index by referencing an image descriptor, wherein the image descriptor includes a reference to the index, wherein the accessing the picture header comprises:

accessing the picture header to locate the image descriptor;

accessing the image descriptor to locate the index.

20. A method for writing a bitstream of compressed image data, comprising:

for each image, defining a picture header followed by image data, including:

defining a bitstream in memory for each set of a plurality of sets of macroblocks, wherein each bitstream includes macroblock data for a plurality of macroblocks, followed by padding that makes each set of macroblocks terminate on a data boundary;

defining the image data to include macroblock data corresponding to the plurality of sets of macroblocks; and

defining an index that indicates a number of sets of macroblocks in the image data and the image data represented by each set of macroblocks, followed by entries of the index;

creating entries in the index such that each entry in the index includes an offset for one of the sets of macroblocks in the image data;

creating a reference in the picture header to the index, and

writing the picture header followed by the image data in the bitstream.

21. A computer program product, comprising:

a computer readable medium;

computer program instructions stored on the computer readable medium that, when executed by a computer, instruct the computer to perform a method for writing a bitstream of compressed image data, comprising:

for each image, defining a picture header followed by image data, including:

defining a bitstream in memory for each set of a plurality of sets of macroblocks, wherein each bitstream includes macroblock data for a plurality of macroblocks followed by padding that makes each set of macroblocks terminate on a data boundary;

defining the image data to include macroblock data corresponding to the plurality of sets of macroblocks; and

defining an index that indicates a number of sets of macroblocks in the image data and the image data represented by each set of macroblocks, followed by entries of the index;

creating entries in the index such that each entry in the index includes an offset for one of the sets of macroblocks in the image data;

creating a reference in the picture header to the index, and

writing the picture header followed by the image data in the bitstream.

22. A method for reading a bitstream of compressed image data, wherein the bitstream includes, for each image, a picture header followed by image data, wherein the image data includes macroblock data for a plurality of sets of macroblocks, wherein each set of macroblocks includes a plurality of macroblocks, wherein the macroblock data for each set of macroblocks includes data for the plurality of macroblocks in the set, followed by padding whereby the data for each set of macroblocks terminates on a data boundary, the method comprising:

reading a set of macroblocks from the image data;

identifying an end of block code in the set of macroblocks; and

reading a subsequent set of macroblocks starting from a data boundary immediately following the end of block code.

Assignments (10)
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 054900/0716) Recorded Nov 8, 2023
From: JPMORGAN CHASE BANK, N.A.
To: AVID TECHNOLOGY, INC.
Reel/Frame 065523/0146 →
PATENT SECURITY AGREEMENT Recorded Nov 8, 2023
From: AVID TECHNOLOGY, INC.
To: SIXTH STREET LENDING PARTNERS, AS ADMINISTRATIVE AGENT
Reel/Frame 065523/0194 →
SECURITY INTEREST Recorded Jan 5, 2021
From: AVID TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 054900/0716 →
RELEASE OF SECURITY INTEREST Recorded Jan 5, 2021
From: CERBERUS BUSINESS FINANCE, LLC
To: AVID TECHNOLOGY, INC.
Reel/Frame 055731/0019 →
RELEASE OF SECURITY INTEREST IN UNITED STATES PATENTS Recorded Mar 1, 2016
From: KEYBANK NATIONAL ASSOCIATION
To: AVID TECHNOLOGY, INC.
Reel/Frame 037970/0201 →
ASSIGNMENT FOR SECURITY -- PATENTS Recorded Feb 26, 2016
From: AVID TECHNOLOGY, INC.
To: CERBERUS BUSINESS FINANCE, LLC, AS COLLATERAL AGENT
Reel/Frame 037939/0958 →
RELEASE OF SECURITY INTEREST Recorded Jun 30, 2015
From: WELLS FARGO CAPITAL FINANCE, LLC
To: AVID TECHNOLOGY INC.; AVID SYSTEMS, INC.
Reel/Frame 036037/0693 →
PATENT SECURITY AGREEMENT Recorded Jun 23, 2015
From: AVID TECHNOLOGY, INC.
To: KEYBANK NATIONAL ASSOCIATION, AS THE ADMINISTRATIVE AGENT
Reel/Frame 036008/0824 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2011
From: RYNDERMAN, MICHEL
To: AVID TECHNOLOGY, INC.
Reel/Frame 026338/0206 →
SECURITY AGREEMENT Recorded Nov 9, 2010
From: AVID TECHNOLOGY, INC.; PINNACLE SYSTEMS, INC.
To: WELLS FARGO CAPITAL FINANCE, LLC, AS AGENT
Reel/Frame 025675/0413 →