IP Library › Granted Patent US 7,852,916
Granted Patent B2
US 7,852,916 · App. 11/071,901 · Granted Dec 14, 2010

Efficient use of storage in encoding and decoding video data streams

Assignee: Apple Inc.
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,852,916
App. No.
11/071,901
Granted
Dec 14, 2010
Kind
B2
Abstract

Some embodiments facilitate encoding/decoding of a frame by organizing frame data in a storage structure in a novel manner. Specifically, in a portion of the storage structure allocated for a frame slice, used partition entries are stored in a first section of the allocated portion and unused partition entries are stored in a second section of the allocated portion, the first and second sections each comprising a continuous area of storage in the storage structure so that used partition entries are not interspersed with nonused partition entries. In some embodiments, additional data useful in the encoding or decoding of video data is determined and stored into the unused bytes of used partition entries (such as macroblock header data or canonical reference frame index data). In some embodiments, two or more identical partitions of a macroblock are coalesced into a single partition.

Claims (16)

1. A method of specifying a frame reference list for decoding a sequence of video frames, each frame comprising a set of slices, each slice comprising one or more macroblocks that each comprises one or more partitions, wherein the data of each slice further comprises data for an original frame reference list, the method comprising:

for each of a first slice of a first video frame and a second slice of a second video frame in the sequence of video frames storing data associated with a particular partition of a particular macroblock, wherein said data comprises a motion vector and an original reference frame index that indicates a frame number in the original frame reference list, the frame number indicating a specific frame in the sequence of frames that the motion vector is based upon, wherein the original frame reference list of the first slice is different than the original frame reference list of the second slice;

mapping the original reference frame indexes of each of the first slice and the second slice to a canonical reference frame index using the original frame reference lists and a canonical frame reference list; and

storing data for the canonical reference frame index in storage of a computer system.

2. The method of claim 1 , wherein said mapping is performed for a plurality of partitions in at least one frame.

3. The method of claim 1 , wherein the canonical reference frame index indicates a frame number in the canonical frame reference list, the frame number indicating a specific frame in the sequence of frames that the motion vector associated with the partition is based upon.

4. The method of claim 1 , wherein any canonical reference frame index mapped for any partition in either slice having a same value indicates a same specific frame in the sequence of frames.

5. The method of claim 1 , wherein said mapping is performed for a plurality of partitions in a plurality of frames.

6. A non-transitory computer readable medium storing a computer program that is executable by at least one process, the computer program for specifying a frame reference list for decoding a sequence of video frames, each frame comprising a set of slices, each slice comprising one or more macroblocks that each comprises one or more partitions, wherein the data of each slice further comprises data for an original frame reference list, the computer program comprising sets of instructions for:

storing, for each of a first slice of a first video frame and a second slice of a second video frame, data associated with a particular partition of a particular macroblock, wherein said data comprises a motion vector and an original reference frame index that indicates a frame number in the original frame reference list, the frame number indicating a specific frame in the sequence of frames that the motion vector is based upon, wherein the original frame reference list of the first slice is different than the original frame reference list of the second slice;

mapping the original reference frame indexes of each of the first slice and the second slice to a canonical reference frame index using the original frame reference lists and a canonical frame reference list; and

storing data for the canonical reference frame index in a storage of a computer system.

7. The non-transitory computer readable medium of claim 6 , wherein the set of instructions for the mapping comprises a set of instructions for performing the mapping for a plurality of partitions in at least one frame.

8. The non-transitory computer readable medium of claim 6 , wherein the set of instructions for the mapping comprises a set of instructions for performing the mapping for a plurality of partitions in a plurality of frames.

9. The non-transitory computer readable medium of claim 6 , wherein the canonical reference frame index indicates a frame number in the canonical frame reference list, the frame number indicating a specific frame in the sequence of frames that the motion vector associated with the partition is based upon.

10. The non-transitory computer readable medium of claim 6 , wherein any canonical reference frame index mapped for any partition in either slice having a same value indicates a same specific frame in the sequence of frames.

Assignments (4)
CHANGE OF NAME Recorded Jan 29, 2009
From: APPLE COMPUTER, INC.
To: APPLE INC.
Reel/Frame 022178/0140 →
CORRECTIVE ASSIGNMENT TO CORRECT THE "EXECUTION DATE" IN THE "CONVEYING PARTY DATA" SECTION OF THE COVERSHEET FROM "07/14/2005" TO "07/12/02005", PREVIOUSLY RECORDED ON REEL 016490 FRAME 0950. ASSIGNOR(S) HEREBY CONFIRMS THE ERRONEOUS "EXECUTION DATE" OF"07/14/2005". Recorded Nov 28, 2005
From: DUVIVIER, CHRISTIAN
To: APPLE COMPUTER, INC.
Reel/Frame 016821/0602 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 2, 2005
From: DUVIVIER, MR. CHRISTIAN
To: APPLE COMPUTER,INC.
Reel/Frame 016490/0950 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 15, 2005
From: DUVIVIER, CHRISTIAN
To: APPLE COMPUTER, INC.
Reel/Frame 016531/0852 →
Continuity (2)
Provisional Application 6058344700 · Jun 27, 2004
Related Publication 20050286634A1 · Dec 29, 2005