A file for storing digital data with high compression rate stores digital data for video and audio signals in multiple streams interleaved with each other. Each track has a stream descriptor list and a stream data list. The stream descriptor list includes a stream header chunk, a stream format chunk, and a stream name chunk. For a video stream, the stream descriptor list also includes a stream header data chunk if the video stream is under digital rights management (drm) protection. The file format is compatible with high level data compressing algorithms, such as MPEG-4, which provide data compression ratio about six to ten times higher than a standard DVD format.
|
0. 86. A memory restricted playback device configured to play data encoded in a multimedia file, comprising:
a processor configured to read the multimedia file;
wherein the multimedia file has at least one video track and includes a video stream descriptor comprising:
a video stream name including a string indicating a video stream in said at least one video track;
wherein the multimedia file further includes:
an encoded data chunk having a bidirectional frame (Bm+1), a following predicted frame (Pm+2), and an uncoded dummy predicted frame (N) arranged in the following chunk sequence: [Pm+2, Bm+1] [N]
and wherein the processor is configured to decode said encoded data chunk and said uncoded dummy predicted frame as the following sequence of frames: Bm+1, Pm+2.
42. A playback device configured to play data encoded in a multimedia file, comprising:
a processor configured to read the multimedia file;
wherein the multimedia file has at least one video track and includes a video stream descriptor list comprising;
a video stream header chunk;
a video stream format chunk following said video stream header chunk; and
a video stream name chunk including a string indicating a video stream in said at least one video track;
the file further having at least one chapter track and including a chapter stream descriptor list comprising:
a chapter stream header chunk;
a chapter stream format chunk following said chapter stream header chunk; and
a chapter stream name chunk including a string indicating a chapter stream in said at least one chapter track;
wherein said chapter stream format chunk in said chapter stream descriptor list including data having a textinfo structure specifying a format of said at least one chapter track, said textinfo structure being:
1. A playback device configured to play data encoded in a multimedia file, comprising:
a processor configured to read the multimedia file;
wherein the multimedia file has at least one video track and includes a video stream descriptor list comprising:
a video stream header chunk;
a video stream format chunk following said video stream header chunk; and
a video stream name chunk including a string indicating a video stream in said at least one video track;
said video stream descriptor list further comprising a video stream header data chunk in response to said at least one video track being a digital rights management (drm) protected video, said video stream header data chunk following said video stream format chunk in said video stream descriptor list;
said video stream header data chunk in said video stream descriptor list including a drm information data block comprising:
a first member specifying a version of the drm; and
a second member specifying a protection of the drm
said drm information data block in said video stream header data chunk having a data structure defined as:
45. A playback device configured to play data encoded in a multimedia file, comprising:
a processor configured to read the multimedia file;
wherein the multimedia file has at least one video track and includes a video stream descriptor list comprising:
a video stream header chunk;
a video stream format chunk following said video stream header chunk; and
a video stream name chunk including a string indicating a video stream in said at least one video track;
further having at least one subtitle track and including a subtitle stream descriptor list comprising:
a subtitle stream header chunk;
a subtitle stream format chunk following said subtitle stream header chunk; and
a subtitle stream name chunk including a string indicating a subtitle stream in said at least one subtitle track;
wherein said subtitle stream header chunk in said subtitle stream descriptor list including a four character code, said four character code in said subtitle stream header chunk being “txts” in response to a text form subtitle;
wherein said subtitle stream format chunk in said chapter stream descriptor list including data having a textinfo structure specifying a format of said at least one subtitle track, said textinfo structure being:
43. A playback device configured to play data encoded in a multimedia file, comprising:
a processor configured to read the multimedia file;
wherein the multimedia file has at least one video track and includes a video stream descriptor list comprising:
e####
a video stream header chunk;
a video stream format chunk following said video stream header chunk; and
a video stream name chunk including a string indicating a video stream in said at least one video track;
the file further having at least one chapter track and including a chapter stream descriptor list comprising:
a chapter stream header chunk;
a chapter stream format chunk following said chapter stream header chunk; and
a chapter stream name chunk including a string indicating a chapter stream in said at least one chapter track;
the file further including a chapter stream data list comprising a data chunk identified by a two digit stream index number followed by a two character code;
wherein said data chunk in said chapter stream data list having a structure defined as:
wherein:
the fcc element specifies a four character code “nnxx”;
the cb element specifies a size of said structure;
the time element specifies a starting time of said at least one chapter track; and
the description element specifies a description of said at least one chapter track.
46. A playback device configured to play data encoded in a multimedia file, comprising:
a processor configured to read the multimedia file;
wherein the multimedia file has at least one video track and includes a video stream descriptor list comprising:
a video stream header chunk;
a video stream format chunk following said video stream header chunk; and
a video stream name chunk including a string indicating a video stream in said at least one video track;
the file further having at least one subtitle track and including a subtitle stream descriptor list comprising:
e####
a subtitle stream header chunk;
a subtitle stream format chunk following said subtitle stream header chunk; and
a subtitle stream name chunk including a string indicating a subtitle stream in said at least one subtitle track;
the file further including a subtitle stream data list comprising a data chunk identified by a two digit stream index number followed by a two character code, said data chunk in said subtitle stream data list having a structure defined as:
wherein:
the fcc element specifies a four character code “nnxx”; the cb element specifies a size of said structure;
the time element specifies a starting time and a ending time of said at least one subtitle track; and
the subtitle element includes:
a bitmap image in response to a bitmap form subtitle; and
a unicode text in response to a text form subtitle.
48. A playback device configured to play data encoded in a multimedia file, comprising:
a processor configured to read the multimedia file;
wherein the multimedia file has at least one video stream, each including:
a video stream descriptor list comprising a video stream header chunk, a video stream format chunk, and a video stream name chunk; and
a video stream data list comprising a plurality of data chunks, each data chunk identified by a two digit stream index number followed by a two character code, said two character code being “db” in response to the data chunk being an uncompressed video frame and being “dc” in response to the data chunk being a compressed video frame; and
at least one audio stream, each including:
an audio stream descriptor list comprising an audio stream header chunk, an audio stream format chunk, and an audio stream name chunk; and
an audio stream data list comprising a plurality of data chunks, each data chunk identified by a two digit stream index number followed by a two character code “wb”;
wherein said video stream descriptor list further comprising a video stream header data chunk in response to said at least one video stream being digital rights management (drm) protected, said video stream header data chunk including a drm information data block having a structure defined as:
wherein:
said element wVersion specifies a version of the drm; and said element sDRMinfo specifies a protection of the drm.
72. A playback device configured to play data encoded in a multimedia file, comprising:
a processor configured to read the multimedia file;
wherein the multimedia file has at least one video stream, each including:
a video stream descriptor list comprising a video stream header chunk, a video stream format chunk, and a video stream name chunk; and
a video stream data list comprising a plurality of data chunks, each data chunk identified by a two digit stream index number followed by a two character code, said two character code being “db” in response to the data chunk being an uncompressed video frame and being “dc” in response to the data chunk being a compressed video frame; and
at least one audio stream, each including:
an audio stream descriptor list comprising an audio stream header chunk, an audio stream format chunk, and an audio stream name chunk; and
an audio stream data list comprising a plurality of data chunks, each data chunk identified by a two digit stream index number followed by a two character code “wb”;
wherein said file further comprising at least one chapter stream, each including:
a chapter stream descriptor list comprising a chapter stream header chunk, a chapter stream format chunk, and
a chapter stream name chunk; and a chapter stream data list comprising a plurality of data chunks, each identified by a two digit stream index number followed by a two character code “ch”;
wherein said chapter stream format chunk in said chapter stream descriptor list including data having a textinfo structure specifying a format of said at least one chapter stream, said textinfo structure being:
73. A playback device configured to play data encoded in a multimedia file, comprising:
a processor configured to read the multimedia file;
wherein the multimedia file has at least one video stream, each including:
a video stream descriptor list comprising a video stream header chunk, a video stream format chunk, and a video stream name chunk; and
a video stream data list comprising a plurality of data chunks, each data chunk identified by a two digit stream index number followed by a two character code, said two character code being “db” in response to the data chunk being an uncompressed video frame and being “dc” in response to the data chunk being a compressed video frame; and
at least one audio stream, each including:
an audio stream descriptor list comprising an audio stream header chunk, an audio stream format chunk, and an audio stream name chunk; and
an audio stream data list comprising a plurality of data chunks, each data chunk identified by a two digit stream index number followed by a two character code “wb”
wherein said file further comprising at least one chapter stream, each including:
a chapter stream descriptor list comprising a chapter stream header chunk, a chapter stream format chunk, and
a chapter stream name chunk; and a chapter stream data list comprising a plurality of data chunks, each identified by a two digit stream index number followed by a two character code “ch”;
wherein said plurality of data chunks in said chapter stream data list having a structure defined as:
wherein:
said fcc element specifies a four character code “nnxx”;
said cb element specifies a size of said structure;
said time element specifies a starting time of said at least one chapter stream; and
said description element specifies a description of said at least one chapter stream.
76. A playback device configured to play data encoded in a multimedia file, comprising:
a processor configured to read the multimedia file;
wherein the multimedia file has at least one video stream, each including:
a video stream descriptor list comprising a video stream header chunk, a video stream format chunk, and a video stream name chunk; and
a video stream data list comprising a plurality of data chunks, each data chunk identified by a two digit stream index number followed by a two character code, said two character code being “db” in response to the data chunk being an uncompressed video frame and being “dc” in response to the data chunk being a compressed video frame; and
at least one audio stream, each including:
an audio stream descriptor list comprising an audio stream header chunk, an audio stream format chunk, and an audio stream name chunk; and
an audio stream data list comprising a plurality of data chunks, each data chunk identified by a two digit stream index number followed by a two character code “wb”;
wherein said file further comprising at least one subtitle stream, each including:
a subtitle stream descriptor list comprising a subtitle stream header chunk, a subtitle stream format chunk, and
a subtitle stream name chunk; and a subtitle stream data list comprising a plurality of data chunks, each identified by a two digit stream index number followed by a two character code, said two character code being “st” in response to a text form subtitle and “sb” in response to a bitmap form subtitle;
wherein said plurality of data chunks in said subtitle stream data list having a structure:
wherein:
said fcc element specifies a four character code “nnxx”;
said cb element specifies a size of said structure;
said time element specifies a starting time and a ending time of said at least one subtitle stream; and
said subtitle element includes:
a bitmap image in response to a bitmap form subtitle; and
a unicode text in response to a text form subtitle.
75. A playback device configured to play data encoded in a multimedia file, comprising:
a processor configured to read the multimedia file;
wherein the multimedia file has at least one video stream, each including:
a video stream descriptor list comprising a video stream header chunk, a video stream format chunk, and a video stream name chunk; and
a video stream data list comprising a plurality of data chunks, each data chunk identified by a two digit stream index number followed by a two character code, said two character code being “db” in response to the data chunk being an uncompressed video frame and being “dc” in response to the data chunk being a compressed video frame; and
at least one audio stream, each including:
an audio stream descriptor list comprising an audio stream header chunk, an audio stream format chunk, and an audio stream name chunk; and
an audio stream data list comprising a plurality of data chunks, each data chunk identified by a two digit stream index number followed by a two character code “wb”;
wherein said file further comprising at least one subtitle stream, each including:
a subtitle stream descriptor list comprising a subtitle stream header chunk, a subtitle stream format chunk, and
a subtitle stream name chunk; and a subtitle stream data list comprising a plurality of data chunks, each identified by a two digit stream index number followed by a two character code, said two character code being “st” in response to a text form subtitle and “sb” in response to a bitmap form subtitle;
wherein:
in response to a bitmap form subtitle, said subtitle stream format chunk in said subtitle stream descriptor list includes data having a bitmapinfoheader structure specifying a format of said at least one subtitle stream; and
in response to a text form subtitle, said subtitle stream format chunk in said subtitle stream descriptor list includes data having a textinfo structure specifying a format of said at least one subtitle stream, said textinfo structure being:
77. A playback device configured to play data encoded in a multimedia file, comprising:
a processor configured to read the multimedia file;
wherein the multimedia file has a video stream, including:
a video stream descriptor list comprising a video stream header chunk, a video stream format chunk, a video stream header data chunk in response to said video stream being digital rights management (drm) protected, and a video stream name chunk; and
a video stream data list comprising a plurality of video data chunks, each video data chunk identified by a two digit stream index number followed by a two character code, said two character code being “db” in response to the video data chunk being an uncompressed video frame and being “dc” in response to the video data chunk being a compressed video frame;
an audio stream interleaved ahead of said video stream,
including:
an audio stream descriptor list comprising an audio stream header chunk, an audio stream format chunk, and an audio stream name chunk; and
an audio stream data list comprising a plurality of audio data chunks, each identified by a two digit stream index number followed by a two character code “wb”; and
a subtitle stream interleaved ahead of said video stream, including:
a subtitle stream descriptor list comprising a subtitle stream header chunk, a subtitle stream format chunk, and
a subtitle stream name chunk; and a subtitle stream data list comprising a plurality of subtitle data chunks, each identified by a two digit stream index number followed by a two character code, said two character code being “st” in response to a text form subtitle and “sb” in response to a bitmap form subtitle
further comprising a chapter stream, including:
a chapter stream descriptor list comprising: a chapter stream header chunk having a four character code “txts”;
a chapter stream format chunk having a textinfo structure specifying a format of said chapter stream; and
a chapter stream name chunk having a null terminated text string “Chapter”; and a chapter stream data list comprising a plurality of chapter data chunks, each identified by a two digit stream index number followed by a two character code “ch”, said plurality of chapter data chunks having a structure:
wherein:
said fcc element specifies a four character code;
said cb element specifies a size of said structure;
said time element specifies a starting time of said at least one chapter stream; and
said description element specifies a description of said at least one chapter stream.
2. The playback device of
3. The playback device of
4. The playback device of
5. The playback device of
6. The playback device of
7. The playback device of
8. The playback device of
9. The playback device of
at least one data chunk identified by a two digit stream index number followed by a two character code, said two character code being “db” in response to said least one data chunk being an uncompressed video frame and being “dc” in response to said least one data chunk being a compressed video frame; and
in response to said at least one data chunk being a digital rights management (drm) protected video frame, a drm data chunk identified by said two digit stream index number followed by a two character code “dd”, said drm data chunk preceding said at least one data chunk and having drm protection information.
10. The playback device of
11. The playback device of
12. The playback device of
13. The playback device of
an audio stream header chunk;
an audio stream format chunk following said audio stream header chunk; and
an audio stream name chunk including a string indicating an audio stream in said at least one audio track.
14. The playback device of
15. The playback device of
16. The playback device of
17. The playback device of
18. The playback device of
19. The playback device of
20. The playback device of
21. The playback device of
22. The playback device of
23. The playback of
24. The playback device of
a chapter stream header chunk;
a chapter stream format chunk following said chapter stream header chunk; and
a chapter stream name chunk including a string indicating a chapter stream in said at least one chapter track.
25. The playback device of
26. The playback device of
27. The playback device of
28. The playback device of
29. The playback device of
30. The playback device of
a subtitle stream header chunk;
a subtitle stream format chunk following said subtitle stream header chunk; and
a subtitle stream name chunk including a string indicating a subtitle stream in said at least one subtitle track.
31. The playback device of
32. The playback device of
33. The playback device of
34. The playback device of
35. The playback device of
36. The playback device of
37. The playback device of
38. The playback device of
39. The playback device of
40. The playback device of
41. The playback device of
44. The playback device of
[hh:mm:ss,xxx], wherein:
hh represents hours;
mm represents minutes;
ss represents seconds; and
mxxx represents milliseconds.
47. The playback device of
hh and HH represent hours;
mm and MM represent minutes;
ss and SS represent seconds; and
xxx and XXX represent milliseconds.
49. The playback device of
50. The playback device of
51. The playback device of
52. The playback device of
53. The playback device of
54. The playback device of
55. The playback device of
56. The playback device of
57. The playback device of
58. The playback device of
59. The playback device of
60. The playback device of
61. The playback device of
62. The playback device of
63. The playback device of
64. The playback device of
a chapter stream descriptor list comprising a chapter stream header chunk, a chapter stream format chunk, and
a chapter stream name chunk; and a chapter stream data list comprising a plurality of data chunks, each identified by a two digit stream index number followed by a two character code “ch”.
65. The playback device of
66. The playback device of
67. The playback device of
68. The playback device of
a subtitle stream descriptor list comprising a subtitle stream header chunk, a subtitle stream format chunk, and
a subtitle stream name chunk; and a subtitle stream data list comprising a plurality of data chunks, each identified by a two digit stream index number followed by a two character code, said two character code being “st” in response to a text form subtitle and “sb” in response to a bitmap form subtitle.
69. The playback device of
70. The playback device of
71. The playback device of
74. The playback device of
hh represents hours;
mm represents minutes;
ss represents seconds; and
xxx represents milliseconds.
78. The playback device of
79. The playback device of
80. The playback device of
81. The playback device of
said video stream header chunk includes a four character code “vids” specifying video stream data in said video stream;
said video stream format chunk includes data having a bitmapinfoheader structure specifying a format of said video stream; said video stream name chunk includes a null terminated text string “Video”;
said audio stream header chunk includes a four character code “auds” specifying audio stream data in said audio stream;
said audio stream format chunk includes data having a WAVEFORMATEX structure specifying a format of said audio stream;
said audio stream name chunk includes a null terminated text string “Audio”;
said subtitle stream header chunk includes a four character code,
said four character code being “txts”in response to a text form subtitle and “vids” in response to a bitmap form subtitle;
said subtitle stream format chunk includes, in response to a bitmap form subtitle, data having a bitmapinfoheader structure and, in response to a text form subtitle, data having a textinfo structure; and
said subtitle stream name chunk includes a null terminated text string “Subtitle”.
82. The playback device of
83. The playback device of
said video stream name chunk in said video stream descriptor list further includes a description field describing said video stream;
said audio stream name chunk in said audio stream descriptor list further includes a description field describing said audio stream; and
said subtitle stream name chunk in said subtitle stream descriptor list further includes a description field describing said subtitle stream.
84. The playback device of
85. The playback device of
an encoded data chunk having a bidirectional frame and a following predicting frame; and
an uncoded frame following said encoded data chunk.
0. 87. The memory restricted playback device of claim 86, wherein said video stream descriptor includes a video stream header chunk; and
said video stream header chunk includes a four character code “vids” specifying video stream data in said at least one video track.
0. 88. The memory restricted playback device of claim 86, wherein the multimedia file further comprises:
at least one data chunk identified by a two digit stream index number followed by a two character code, said two character code being “db” in response to said least one data chunk being an uncompressed video frame and being “dc” in response to said least one data chunk being a compressed video frame; and
in response to said at least one data chunk being a digital rights management (drm) protected video frame, a drm data chunk identified by said two digit stream index number followed by a two character code “dd”, said drm data chunk preceding said at least one data chunk and having drm protection information.
0. 89. The memory restricted playback device of claim 86, wherein the multimedia file further comprises:
at least one audio track and an audio stream descriptor list comprising: an audio stream header chunk;
an audio stream format chunk following said audio stream header chunk; and
an audio stream name chunk including a string indicating an audio stream in said at least one audio track.
0. 90. The memory restricted playback device of claim 89, wherein said audio stream header chunk in said audio stream descriptor list including a four character code “auds” specifying audio stream data in said at least one audio track.
0. 91. The memory restricted playback device of claim 86, wherein said multimedia file further includes at least one chapter track and a chapter stream descriptor list comprising:
a chapter stream header chunk including a four character code “txts” specifying text stream data in said at least one chapter track;
a chapter stream format chunk following said chapter stream header chunk; and
a chapter stream name chunk including a string indicating a chapter stream in said at least one chapter track.
0. 92. The memory restricted playback device of claim 86, wherein said multimedia file further includes a RIFF header including a four character code “RIFF” specifying the file as a RIFF file.
0. 93. The memory restricted playback device of claim 92, wherein said multimedia file further includes a RIFF header including a four character code “AVI” specifying the file as an AVI file.
0. 94. The memory restricted playback device of claim 86, wherein said video stream descriptor includes a video stream header chunk; and
said video stream header chunk includes a four character code specifying a data handler for said at least one video track, wherein the four character code is selected from the group consisting of “divx,” “div3,” and “div4”.
0. 95. The memory restricted playback device of claim 86, wherein said video stream descriptor includes a video stream format chunk; and
said video stream format chunk includes data having a bitmapinfoheader structure specifying a format of said at least video track.
0. 96. The memory restricted playback device of claim 95, wherein said bitmapinfoheader structure includes a four character code specifying the detailed codec version, wherein the four character code is selected from the group consisting of “div3,” “div4,” “divx” and “dx50”.
|
The present invention relates, in general, to data storage and archiving and, more specifically, to file formats for storing multiple tracks or streams of data.
Thanks to its fidelity, digital video and audio have become increasingly popular in entertainment and information recording. For example, digital versatile disc or digital video disc (DVD) provides a format used to store movies, music, or software programs. A DVD movie often has multiple audio tracks for multilingual presentation of the movie and/or multiple video tracks for including special features such as interviews with the movie producer, movie trailers, etc. A DVD has a memory capacity of approximately six gigabytes (GB). In the standard format, a single sided DVD generally can store approximately two to three hours of video.
It would be advantageous to have a file format for storing digital data with a high compression rate. It would be desirable for the file format to be capable of storing data in multiple streams or tracks. It would also be desirable for the file format to be able to encode and archive video, audio, and text data on easily accessible streams or tracks. It would be of further advantage for the file format to be able to provide copyright protection for the digitized content.
In accordance with preferred embodiments of the present invention, digitized data, e.g., digital video, audio, and/or text data, are encoded and stored in a multimedia file following a format that is compatible with a standard data coding and compression algorithm. The file is readable and/or executable by a processor, e.g., a specific or generic signal processor, a digital signal processor (DSP), a signal processor on an Application Specific Integrated Circuit (ASIC), an Advanced RISC Machine (ARM) microprocessor, etc.
In accordance with a specific embodiment of the present invention, the file format is based on the audio video interleave (AVI) multimedia format. The AVI file format is a Resource Interchange File Format (RIFF) file specification used with applications that capture, edit, and play back audio-video sequences.
RIFF, introduced in 1991 by Microsoft Corporation and IBM Corporation, is a format for storing tagged data structures. The structure and coding of RIFF can be found at the Microsoft Developer Network (http://msdn.microsoft.com/). The related information on the Microsoft Developer Network is incorporated herein by reference.
A RIFF file includes a RIFF header followed by zero or more lists and chunks. The RIFF header has the following form:
A chunk has the form:
A list is an ordered collection of other chunks, for example a collection of movie frames. In RIFF, a list has the form:
It is customary and efficient to imply the chunk size and adopt a simplified notation to represent a RIFF chunk:
An AVI file is identified by a FOURCC ‘AVI’ in the RIFF header. All AVI files include two mandatory LIST chunks: the stream format and the stream data. An AVI file may also include an index chunk, which gives the location of the data chunks within the file. An AVI file with these components has the form:
RIFF
(‘AVI’
[‘CSET’ (Character Set)]
[LIST (‘INFO’)]
LIST (‘hdrl’ ...)
LIST (‘movi’ ...)
[‘idx1’ (<AVI Index>)]
)
The ‘hdr1’ list defines the format of the data and is the first required LIST chunk. The ‘movi’ list contains the data for the AVI sequence and is the second required LIST chunk. The ‘idx1’ list contains the index, which is optional. AVI files keep these three components in the proper sequence.
The ‘hdr1’ and ‘movi’ lists use subchunks for their data. The following example shows the AVI RIFF form expanded with the chunks needed to complete these lists:
RIFF
(‘AVI ’
[‘CSET’ (Character Set)]
[LIST (‘INFO’)]
LIST ‘hdrl’
‘avih’(<Main AVI Header>)
LIST (‘strl’
‘strh’(<Stream header>)
‘strf’ (<Stream format>)
[‘strd’(<Additional header data>)]
[‘strn’(<Stream name>)]
...
)
...
)
LIST (‘movi’
{SubChunk | LIST (‘rec ’
SubChunk1
SubChunk2
...
)
...
}
...
)
[‘idx1’ (<AVI Index>)]
)
The character set (CSET) chunk is typically used to define a character set and language information for a RIFF file, a LIST, or a stream. The CSET chunk is defined as follows:
CSET
(
WORD wCodePage
WORD wCountlyCode
WORD wLanguageCode
WORD wDialect
)
In accordance with a preferred embodiment of the present invention, the functions and formats of the fields in the CSET chunk are defined as follows:
wCodePage specifies the code page used for file elements.
If the CSET chunk is not present or if this field has a value of zero, a standard ISO 8859/1 code page (identical to code page 1004 without code points defined in hex columns 0, 1, 8, and 9) is assumed in accordance with an embodiment of the present invention.
wCountryCode specifies the country code used for file elements. If the CSET chunk is not present or if this field has value zero, USA (country code 001) is assumed in accordance with an embodiment of the present invention. By way of example, the country codes used in the wCountryCode field of CSET chunk are listed in Table 1.
wLanguage and wDialect specify the language and dialect used for file elements. If the CSET chunk is not present or if these fields have value zero, US English (language code 9, dialect code 1) is assumed in accordance with an embodiment of the present invention. By way of example, the language and dialect codes used in the wLanguage and wDialect fields of CSET chunk are listed in Table 2.
The information ‘INFO’ list is a registered global form type that can store information, e.g., copyright information and comments, that helps identify the contents of the chunk. This information, although useful, does not affect the way a program interprets the file. An ‘INFO’ list is a ‘LIST’ chunk with list type ‘INFO’.
In accordance with a preferred embodiment, an ‘INFO’ list may contains the chunks listed in Table 3. Additional chunks may be defined. Preferably, an application ignores any chunk it doesn't understand. Each chunk contains a null-terminated Unicode text string. The character set used in the string is specified by the global CSET chunk.
The AVI file header (‘hdr1’) list includes a main AVI header in an ‘avih’ chunk. One or more stream descriptor lists follow the main AVI header. Each stream descriptor is contained in an ‘str1’ list.
The main AVI header contains global information for the entire AVI file, such as the number of streams within the file and the width and height of the AVI sequence. The main header chunk includes an AVIMAINHEADER structure, whose syntax is defined as:
typedef struct_avimainheader {
FOURCC
fcc;
DWORD
cb;
DWORD
dwMicroSecPerFrame;
DWORD
dwMaxBytesPerSec;
DWORD
dwPaddingGranularity;
DWORD
dwFlags;
DWORD
dwTotalFrames;
DWORD
dwInitialFrames;
DWORD
dwStreams;
DWORD
dwSuggestedBufferSize;
DWORD
dwWidth;
DWORD
dwHeight;
DWORD
dwReserved[4];
} AVIMAINHEADER
In accordance with a preferred embodiment, the members in the AVIMAINHEADER structure have the following variables:
By way of example, the flags in the member dwFlags include the following bitwise combinations:
/* flags for use in <dwFlags> in AVIFileHdr */
#define AVIF_HASINDEX
0x00000010
#define AVIF_MUSTUSEINDEX
0x00000020
#define AVIF_ISINTERLEAVED
0x00000100
#define AVIF_TRUSTCKTYPE
0x00000800
#define AVIF_WASCAPTUREFILE
0x00010000
#define AVIF_COPYRIGHTED
0x00020000
TABLE 1
Country codes (wCountryCode)
Country Code
(wCountryCode)
Country or Region
000
None (ignore this field)
001
USA
002
Canada
003
Latin America
030
Greece
031
Netherlands
032
Belgium
033
France
034
Spain
039
Italy
041
Switzerland
043
Austria
044
United Kingdom
045
Denmark
046
Sweden
047
Norway
049
Germany
052
Mexico
055
Brazil
061
Australia
064
New Zealand
081
Japan
082
Korea
086
People's Republic of China
088
Taiwan
090
Turkey
351
Portugal
352
Luxembourg
354
Iceland
358
Finland
TABLE 2
Language codes and dialect codes
Language Code
Dialect Code
(wLanguage)
(wDialect)
Language
0
0
None (ignore these fields)
1
1
Arabic
2
1
Bulgarian
3
1
Catalan
4
1
Traditional Chinese
4
2
Simplified Chinese
5
1
Czech
6
1
Danish
7
1
German
7
2
Swiss German
8
1
Greek
9
1
US English
9
2
UK English
10
1
Spanish
10
2
Spanish Mexican
11
1
Finnish
12
1
French
12
2
Belgian French
12
3
Canadian French
12
4
Swiss French
13
1
Hebrew
14
1
Hungarian
15
1
Icelandic
16
1
Italian
16
2
Swiss Italian
17
1
Japanese
18
1
Korean
19
1
Dutch
19
2
Belgian Dutch
20
1
Norwegian - Bokmal
20
2
Norwegian - Nynorsk
21
1
Polish
22
1
Brazilian Portuguese
22
2
Portuguese
23
1
Rhaeto-Romanic
24
1
Romanian
25
1
Russian
26
1
Serbo-Croatian (Latin)
26
2
Serbo-Croatian (Cyrillic)
27
1
Slovak
28
1
Albanian
29
1
Swedish
30
1
Thai
31
1
Turkish
32
1
Urdu
33
1
Bahasa
TABLE 3
Information List (INFO) chunks
Chunk ID
Description
IARL
Archival Location, indicating where the subject of the file
is archived.
IART
Artist, listing the artist of the original subject of the file.
ICMS
Commissioned, listing the name of the person or
organization that commissioned the subject of the file.
ICMT
Comments, providing general comments about the file or
the subject of the file, if multiple sentences in length, each
sentence ending with a period, no new line characters.
ICOP
Copyright, recording the copyright information for the
file, multiple copyrights separated by a semicolon
followed by a space.
ICRD
Creation date, specifying the date the subject of the file was
created, listing dates in year-month-day format, padding
one-digit months and days with a zero on the left.
ICRP
Cropped, indicating whether an image has been cropped
and, if so, how it was cropped, e.g., “lower right corner”.
IDIM
Dimensions, specifying the size of the original subject of
the file, e.g., 8.5 inches in height, 11 inches in width.
IDPI
Dots Per Inch, specifying dots per inch setting of the
digitizer used to produce the file, such as 300.
IENG
Engineer, specifying the name of the engineer who worked
on the file. If there are multiple engineers, the names are
separated by a semicolon and a blank, e.g., Smith, John;
Adams, Joe.
IGNR
Genre, describing the original work, such as, landscape,
portrait, still life, etc.
IKEY
Keywords, providing a list of keywords that refer to the
file or subject of the file, with multiple keywords separated
with a semicolon and a blank, e.g., “Seattle; aerial view;
scenery”.
ILGT
Lightness, describing the changes in lightness settings on
the digitizer required to produce the file, its format
depending on hardware used.
IMED
Medium, describing the original subject of the file, e.g.,
computer image, drawing, lithograph.
INAM
Name, storing the title of the subject of the file, such as,
“Seattle From Above”.
IPLT
Palette Setting specifying the number of colors requested
when digitizing an image.
IPRD
Product, specifying the name of the product, for which the
file was originally intended, e.g., “Encyclopedia of
Pacific Northwest Geography”.
ISBJ
Subject, describing the contents of the file, e.g., “Aerial
view of Seattle”.
ISFT
Software, identifying the name of the software package
used to create the file, e.g., “Microsoft WaveEdit”.
ISHP
Sharpness, identifying the changes in sharpness for the
digitizer required to produce the file, its format
depending on the hardware used.
ISRC
Source, identifying the person or organization that
supplied the original subject of the file.
ISRF
Source Form, identifying the original form of the material
that was digitized, e.g., slide, paper, map, which may be
different from IMED.
ITCH
Technician, identifying the technician who digitized the
subject file.
One or more steam descriptor (‘str1’) lists follow the main header ‘hdr1’. Each ‘str1’ list corresponds to a data stream and includes information about the data stream in the file. A ‘str1’ list contains a stream header chunk (‘strh’) and a stream format chunk (‘strf’). In addition, a ‘str1’ list may contain a stream header data chunk (‘strd’) and a stream name chunk (‘strn’). The stream descriptors in the ‘hdr1’ list are associated with the stream data in the ‘movi’ list according to the order of the ‘str1’ lists. The first ‘str1’ list applies to stream 0, the second applies to stream 1, and so forth.
The stream header chunk (‘strh’) in the ‘str1’ list includes an AVISTREAMHEADER structure containing information about a stream in the AVI file. The AVISTREAMHEADER structure has the syntax:
typedef struct_avistreamheader {
FOURCC
fcc;
DWORD
cb;
FOURCC
fccType;
FOURCC
fccHandler;
DWORD
dwFlags;
WORD
wPriority;
WORD
wLanguage;
DWORD
dwInitialFrames;
DWORD
dwScale;
DWORD
dwRate;
DWORD
dwStart;
DWORD
dwLength;
DWORD
dwSuggestedBufferSize;
DWORD
dwQuality;
DWORD
dwSampleSize;
struct
{
WORD
left;
WORD
top;
WORD
right;
WORD
bottom;
} rcFrame;
} AVISTREAMHEADER
In accordance with a preferred embodiment, the members in the AVISTREAMHEADER structure have following variables:
A stream format (‘strf’) chunk follows the stream header (‘str1’) chunk. The stream format chunk describes the format of the data in the stream. The data contained in this chunk depends on the stream type.
For video streams, the information is a BITMAPINFOHEADER structure, including palette information if appropriate. The structure of BITMAPINFOHEADER is defined as:
typedef struct BITMAPINFOHEADER {
DWORD
biSize;
LONG
biWidth;
LONG
biHeight;
WORD
biPlanes;
WORD
biBitCount;
DWORD
biCompression;
DWORD
biSizeImage;
LONG
biXPelsPerMeter;
LONG
biYPelsPerMeter;
DWORD
biClrUsed;
DWORD
biClrImportant;
} BITMAPINFOHEADER
In accordance with a preferred embodiment, the members in the BITMAPINFOHEADER structure have following variables:
For audio streams, the information is a WAVEFORMATEX structure. For text streams, the information has a TEXTINFO structure:
typedef_textinfo {
WORD
wCodePage;
WORD
wCountryCode;
WORD
wLanguageCode;
WORD
wDialect
} TEXTINFO
where the meaning of all the fields (wCodePage, wCountryCode, wLanguageCode, and wDialect) is the same as those defined above with reference to CSET chunk. Different languages can be set for each of the text streams in a file having multiple text streams.
If the optional stream header data (‘strd’) chunk is present in an AVI file, it follows the stream format chunk. The format and content of the ‘strd’ chunk are defined by the codec driver. Typically, drivers use this information for configuration. Applications that read and write AVI files do not need to interpret this information, they simple transfer it to and from the driver as a memory block.
The information block for achieving the digital rights management (DRM) protection in the AVI file is presented in the ‘strd’ chunk associated with the main video stream. The format of the DRM information data for the video stream in the ‘strd’ should be as following:
typedef_DRMinfo{
WORD wVersion;
STR sDRMInfo;
} DRMINFO
where the two members in the structure DRMINFO are defined as:
The optional stream name ‘strn’ chunk includes a null terminated text string describing the stream. In accordance with an embodiment of the present invention, the string is “Video [—Description]” for a video stream, where optional [—Description] part is any string that describes the video stream, e.g., it can be “Video—Main”. For an audio stream, the string can be “Audio [—Description]”, where the optional [—Description] part is any string that describes the audio stream, e.g., it can be “Audio—English”, “Audio—French”, “Audio—Main”, or “Audio—Auxiliary”, etc. For a chapter stream, which is a text stream, the string can be “Chapter [—Description]”, where the optional [—Description] part is any string that describes the chapter stream. For a subtitle stream, which can be either a text stream or a video stream, the string can be “Subtitle [—Description]”, where the optional [—Description] part is any string that describes the subtitle stream, e.g., it can be “Subtitle—English”, or “Subtitle—Chinese”.
AVI stream data ‘movi’ list follows the header information in the AVI RIFF file format. The ‘movi’ list contains the actual data in the streams, e.g., the video frames and audio samples. The data chunks can reside directly in the ‘movi’ list, or be grouped together as subchunks within ‘rec’ lists. The ‘rec’ grouping implies that the grouped subchunks should be read from disk all at once, and is intended for files that are interleaved to play from CD-ROM.
Each data chunk in the ‘movi’ list is identified by a FOURCC that includes a two-digit stream number followed by a two-character code that defines the type of information in the chunk. In accordance with an embodiment of the present invention, the two-character codes for defining the data type are:
db
uncompressed video frame
de
compressed video frame
dd
DRM key info for the video frame
pc
palette change
wb
audio data
st
subtitle (text mode)
sb
subtitle (bitmap mode)
ch
chapter
It should be noted that, in accordance with the present invention, additional two-character codes may be used to identify data streams not specified herein above.
By way of example, if stream 0 contains audio, the FOURCC for the stream would be ‘00wb’. If stream 1 contains video, the FOURCC for the stream would be ‘01db’ for uncompressed video or ‘01dc’ for compressed video. Video data chunks can also define new palette entries to update the palette during an AVI sequence. Each palette-change chunk (‘xxpc’) contains an AVIPALCHANGE structure. If a stream contains palette changes, the AVISF_VIDEO_PALCHANGES flag in the dwFlags member of the AVISTREAMHEADER structure for that stream is set accordingly.
The optional index list follows the ‘movi’ list in the AVI RIFF file format. The index contains a list of the data chunks and their location in the file. If the AVI file contains an index, the dwFlags member of the AVIMAINHEADER structure is set to AVIF_HASINDEX.
In version AVI 1.0, the index (‘idx1’) list includes an AVIOLDINDEX structure with entries for each data chunk, including ‘rec’ chunks. The AVIOLDINDEX structure has the syntax:
typedef struct_avioldindex {
FOURCC
fcc;
DWORD
cb;
struct_avioldindex_entry {
DWORD
dwChunkId;
DWORD
dwFlags;
DWORD
dwOffset;
DWORD
dwSize;
} aIndex [ ];
} AVIOLDINDEX
The members in the structure have following characters:
fcc
specifies a FOURCC code, with the value ‘idx1’.
cb
specifies the size of the structure, not including
the initial 8 bytes.
DwChunkId
specifies a FOURCC that identifies a stream in the
AVI file, having the form ‘nnyy’ where nn is the
stream number and yy is a two-character code that
identifies the contents of the stream:
db
uncompressed video frame
dc
compressed video frame
pc
palette change
wb
audio data
dwFlags
specifies a bitwise combination of zero or more of
the following flags:
AVIIF_LIST
0x00000001L
// The data chunk
is a ‘rec’ list.
AVIIF_KEYFRAME
0x00000010L
// The data chunk
is a key frame.
AVIIF_NO_TIME
0x00000100L
// The data chunk
does not affect the timing of the stream,
e.g., for palette changes.
AVIIF_NO_COMPUS
0x0FFF0000L
// The data are
for compressor use.
DwOffset
specifies the location of the data chunk in the
file. In one embodiment, the value is specified as
an offset, in bytes, from the start of the ‘movi’
list. In another embodiment, the value is the
offset from the start of the file.
DwSize
specifies the size of the data chunk, in bytes.
In accordance with a preferred embodiment, the AVIOLDINDEX structure includes the initial RIFF chunk (the fcc and cb members) followed by one index entry for each data chunk in the ‘movi’ list. The AVIOLDINDEX structure describes an AVI 1.0 index (‘idx1’ format). New AVI files should use an AVI 2.0 index (‘indx’ format).
Additional data can be aligned in an AVI file by inserting ‘JUNK’ chunks as needed. Applications will ignore the contents of a ‘JUNK’ chunk.
In accordance with the present invention, the video tracks of one or more movies are stored in an AVI file as AVI video streams or tracks. A single AVI file may include multiple video tracks. Preferably, the first of the multiple video tracks is the main video track.
The stream descriptor (‘str1’) list for a video stream should include a stream header (‘strh’) chunk, a stream format (‘strf’), a stream header data (‘strd’) chunk if the stream is DRM protected, and a stream name (‘strn’) chunk. In accordance with an embodiment of the present invention, the member fccType in the structure AVISTREAMHEADER the stream header (‘strh’) chunk for a video stream has the value ‘vids’. The stream header data (‘strd’) chunk of a video stream should exist only for DRM protected video. If the ‘strd’ chunks exists, the video stream is protected, and there will be ‘xxdd’ DRM chunks in the video stream. The stream name data (‘strn’) chunk for a video stream includes a string of the form “Video [—Descriptions]”.
The stream data (‘movi’) list of a video stream in includes an ‘nndb’ chunk for an uncompressed video data chunk or an ‘nndc’ for a compressed video data chunk, where ‘nn’ is a two digit data chunk index. If a video data chunk is DRM protected, the ‘movi’ list also includes a ‘nndd’ chunk preceding the corresponding ‘nndb’ or ‘nndc’ chunk of the protected video data chunk. In accordance with a specific embodiment of the present invention, the member dwFlags in the structure AVIOLDINDEX of the index entry for the ‘nndd’ chunk is set to AVIF_NO_TIME.
In one embodiment of the present invention, each video data chunk includes one video frame in variable bit rate coding. For video frames encoded in predicted frames (P frames) and bidirectional frames (B frames), a B frame is preferably placed in a chunk with the following P frame. In such cases, an uncoded dummy P frame (N in the following illustration) is preferably inserted by the codec to keep the timing. For example, a sequence of image frames (I frames), B frames, and P frames Im Bm+1 Pm+2 Pm+3 Pm+4 . . . is preferably arranged into the following video stream chunk sequence:
In accordance with the present invention, the audio tracks of one or more movies are stored in an AVI file as AVI audio streams or tracks. A single AVI file may include multiple audio tracks. Preferably, the first of the multiple audio tracks is the main audio track.
The stream descriptor (‘str1’) list for an audio stream should include a stream header (‘strh’) chunk, a stream format (‘strf’), and a stream name (‘strn’) chunk. In accordance with a specific embodiment the ‘str1’ list for an audio stream does not include the stream header data (‘strd’) chunk. In this embodiment, the application should ignore any data chunk with the ‘strd’ code in the steam descriptor (‘str1’) list of the AVI file.
In accordance with an embodiment of the present invention, the member fccType in the structure AVISTREAMHEADER the stream header (‘strh’) chunk for a video stream has the value ‘auds’. The stream name data (‘strn’) chunk for a video stream includes a string of the form “Audio [—Descriptions]”.
The stream data (‘movi’) list of an audio stream in includes an ‘nnwb’ chunk for identifying an audio data chunk, where ‘nn’ is a two digit data chunk index. In one embodiment of the present invention, each audio data chunk includes one audio frame in variable bit rate coding. In another embodiment of the present invention, each audio data chunk includes one or more audio frames in constant bit rate coding.
In accordance with the present invention, the chapter tracks are stored in an AVI file as AVI text streams or tracks. A single AVI file may include multiple chapter tracks. The stream descriptor (‘str1’) list for a chapter stream should include a stream header (‘strh’) chunk, a stream format (‘strf’), and a stream name (‘strn’) chunk. In accordance with a specific embodiment the ‘str1’ list for a chapter stream does not include the stream header data (‘strd’) chunk. In this embodiment, the application should ignore any data chunk with the ‘strd’ code in the steam descriptor (‘str1’) list of the AVI file.
In accordance with an embodiment of the present invention, the member fccType in the structure AVISTREANHEADER the stream header (‘strh’) chunk for a video stream has the value ‘txts’. The stream format (‘strf’) chunk for a chapter stream has the TEXTINFO structure. The stream name data (‘strn’) chunk for a video stream includes a string of the form “Chapter [—Descriptions]”.
The stream data (‘movi’) list of a chapter stream in includes an ‘nnch’ chunk for identifying a chapter data chunk, where ‘nn’ is a two digit data chunk index. In one embodiment of the present invention, each chapter data chunk has a CHAPTERCHUNK structure:
typedef struct_chapterchunk {
FOURCC
fcc;
DWORD
cb;
STR
time;
STR
description
} CHAPTERCHUNK
The members in the structure CHAPTERCHUNK are
The chapter stream is not a regular interval stream. In accordance with a specific embodiment of the present invention, the member dwFlags in the structure AVIOLDINDEX of the index entry for the ‘nnch’ chunk is set to AVIF_NO_TIME.
In accordance with one embodiment of the present invention, the subtitle tracks are stored in an AVI file as AVI text streams or tracks. In accordance with another embodiment of the present invention, the subtitle tracks are stored in an AVI file as AVI bitmap streams or tracks. A single AVI file may include multiple subtitle tracks. The stream descriptor (‘str1’) list for a subtitle stream should include a stream header (‘strh’) chunk, a stream format (‘strf’), and a stream name (‘strn’) chunk. In accordance with a specific embodiment the ‘str1’ list for a subtitle stream does not include the stream header data (‘strd’) chunk. In this embodiment, the application should ignore any data chunk with the ‘strd’ code in the steam descriptor (‘str1’) list of the AVI file.
In accordance with an embodiment of the present invention, the member fccType in the structure AVISTREAMHEADER the stream header (‘strh’) chunk for a video stream has the value ‘txts’ for text form subtitles or ‘vids’ for bitmap form subtitles. The stream format (‘strf’) chunk for a subtitle stream has the TEXTINFO structure for text form subtitles and the BITMAPINFOHEADER structure for bitmap form subtitles. The stream name data (‘strn’) chunk for a video stream includes a string of the form “Subtitle [—Descriptions]”.
The stream data (‘movi’) list of a subtitle stream includes an ‘nnst’ chunk for identifying a text form subtitle data chunk and/or an ‘nnsb’ chunk for identifying a bitmap form subtitle data chunk, where ‘nn’ is a two digit data chunk index. In one embodiment of the present invention, each subtitle data chunk has a SUBTITLECHUNK structure:
typedef struct_subtitlechunk {
FOURCC
fcc;
DWORD
cb;
STR
duration;
STR
subtitle
} SUBTITLECHUNK
The members in the structure SUBTITLECHUNK are
The subtitle stream is not a regular interval stream. In accordance with a specific embodiment of the present invention, the member dwFlags in the structure AVIOLDINDEX of the index entry for the subtitle chunk is set to AVIF_NO_TIME.
For bitmap format subtitles, it is preferred to have compressed subtitle bitmaps in the subtitle field in the subtitle chunks. A compressed subtitle bitmap will have the following fields:
WORD
width;
WORD
height;
WORD
left;
WORD
top;
WORD
right;
WORD
bottom;
struct {
BYTE
red;
BYTE
green;
BYTE
blue;
} color_background, color_pattern, color_emphasis1,
color_emphasis2;
BITMAP bitmap;
The “width” and “height” fields specify the dimension of the subtitle bitmap. The members “left”, “top”, “right”, and “bottom” fields specify the display rectangle of the subtitle bitmap relative to the main video rectangle. The BITMAP includes compressed bitmap data.
In accordance with a preferred embodiment, the subtitle bitmaps are four-level bitmaps with the following definition.
Compression of the subtitle bitmap uses a simple run-length coding according the rules in Table 4. In accordance with an embodiment of the present invention, the size of the run-length coded data within one line is 1440 bits or less.
In accordance with a preferred embodiment of the present invention, the streams in AVI files are interleaved. Audio stream chunks are interleaved ahead of corresponding video stream chunks in time. The amount of the audio stream that is interleaved ahead of corresponding points in the video stream should not exceed an predetermined upper limit, e.g., 2 seconds, 5 seconds, 10 seconds, 15 seconds, etc. The subtitle chunks are interleaved in the file ahead of the corresponding video chunk in time, with the amount of subtitle interleaved ahead of corresponding points in the video stream not exceeding a upper limit, e.g., 5 seconds, 10 seconds, 15 seconds, 20 seconds, etc. The interleaving of the chapter stream is not restricted. It could be all written in the beginning of the “movi” list, or interleaved with the other streams.
TABLE 4
Subtitle bitmap coding rules
Bitmap Pixels
Coding
1 to 3 pixels with the
Enter the number of pixel(s) followed in the
same value
first 2 bits and the pixel data in the next 2 bits.
follow(s).
The 4 bits are considered to be one unit.
4 to 15 pixels with
Specify ‘0’ in the first 2 bits, and enter the
the same value
number of pixels in the following 4 bits and
follows.
the pixel data in the next 2 bits. The 8 bits are
considered to be one unit.
16 to 63 pixels with
Specify ‘0’ in the first 4 bits, and enter the
the same value
number of pixels in the following 6 bits and
follows.
the pixel data in the next 2 bits. The 12 bits
are considered to be one unit.
64 to 255 pixels with
Specify ‘0’ in the first 6 bits, and enter the
the same value
number of pixels in the following 8 bits and
follows.
the pixel data in the next 2 bits. The 16 bits
are considered to be one unit.
The same pixels
Specify ‘0’ in the first 14 bits, and describe
follow to the end of
the pixel data in the following 2 bits. The 16
a line.
bits are considered to be one unit.
The byte alignment is
Insert dummy data of 4 bits ‘0000b’
not accomplished when
for adjustment.
the description for
pixels on one line is
completed.
An AVI file typically does not contain a time stamp of the streams. Each stream has its frame rate specified in the stream descriptor (‘str1’) list in the AVI header. For variable bit rate streams such as video streams or variable bit rate audio streams, each chunk contains one and only one frame. Accessing the data of the variable bit rate stream at any given point is feasible with the known frame rate and the data chunk index. For constant bit rate streams, e.g., constant bit rate audio streams, each chunk may contain one or more frames. Because each frame has a known fixed size, locating data at any given point can be achieved by calculating the size of the stream data. Therefore, seeking an arbitrary location in an AVI file in accordance with the present invention can be achieved for either constant bit rate or variable bit rate streams by parsing and recording the index table for each frame.
Many playback devices, particularly consumer electronics devices such as DVD players, are not able to input pointers to arbitrary points as can a slider bar used in computer software. For such devices, it is beneficial to only record the chapter location, i.e., the starting point of audio, video, and subtitles, while parsing the index. For a memory restricted player, it may be preferred for the player to remember index records at the minute points to reduce memory usage, thereby saving limited memory space. The full index is not required during normal forward play because the chunk is self-contained.
In accordance with the present invention, the version of the video codec used in AVI files is signaled by the FourCC code in the fccHandler field or member of the AVISTREAMHEADER of the corresponding stream header ‘strh’ chunks, and the FourCC code bicompression field or member in the BITMAPINFOHEADER of the corresponding ‘strf’ chunks.
By way of example, for videos encoded according to a codec developed by DivX Networks, Inc., 10350 Science Center Drive, Building 14, Suite 140, San Diego, Calif. 92121, the FourCC codes fccHandler in the stream header (‘strh’) of the AVISTREAMHEADER is set to “divx” or “DIVX”. Furthermore, the FourCC (DWORD) code biCompression in the BITMAPINFOHEADER of the corresponding ‘strf’ chunks is set to signify the detailed codec version.
Specifically by way of example, for version DivX 3.11, ‘div3’ or ‘div4’ is used in AVISTREAMHEADER, and ‘div3’ or ‘div4’ is used in BITMAPINFOHEADER; for version DivX 4.x, ‘divx’ is used in AVISTREAMHEADER, and ‘divx’ is used in BITMAPINFOHEADER; and for version DivX 5.x, ‘divx’ is used in AVISTREAMHEADER, and ‘dx50’ is used in BITMAPINFOHEADER.
By now it should be appreciated that a file format for storing digital data with a high compression rate has been described. A file format in accordance with the present invention is compatible with high level data compressing algorithms, such as MPEG-4. Its data compression ratio is about six to ten times higher than a standard DVD format. In accordance with the present invention, the file format is capable of storing data in multiple streams or tracks. The file format is also able to encode and archive video, audio, and text data on easily accessible streams or tracks. Furthermore, the file format is able to provide protection of the copyright of the digitized content.
While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific form or forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention. The present invention is limited only by the claims that follow.
Patent | Priority | Assignee | Title |
10032485, | Dec 08 2003 | DivX CF Holdings LLC; DIVX, LLC | Multimedia distribution system |
10141024, | Nov 16 2007 | DivX CF Holdings LLC; DIVX, LLC | Hierarchical and reduced index structures for multimedia files |
10148989, | Jun 15 2016 | DivX CF Holdings LLC; DIVX, LLC | Systems and methods for encoding video content |
10212486, | Dec 04 2009 | DivX CF Holdings LLC; DIVX, LLC | Elementary bitstream cryptographic material transport systems and methods |
10225299, | Dec 31 2012 | DivX CF Holdings LLC; DIVX, LLC | Systems, methods, and media for controlling delivery of content |
10225588, | Sep 01 2011 | DIVX, LLC | Playback devices and methods for playing back alternative streams of content protected using a common set of cryptographic keys |
10244272, | Sep 01 2011 | DivX CF Holdings LLC; DIVX, LLC | Systems and methods for playing back alternative streams of protected content protected using common cryptographic information |
10257443, | Dec 08 2003 | DivX CF Holdings LLC; DIVX, LLC | Multimedia distribution system for multimedia files with interleaved media chunks of varying types |
10264255, | Mar 15 2013 | DIVX, LLC | Systems, methods, and media for transcoding video data |
10321168, | Apr 05 2014 | DivX CF Holdings LLC; DIVX, LLC | Systems and methods for encoding and playing back video at different frame rates using enhancement layers |
10341698, | Sep 01 2011 | DIVX, LLC | Systems and methods for distributing content using a common set of encryption keys |
10368096, | Jan 05 2011 | DIVX, LLC | Adaptive streaming systems and methods for performing trick play |
10382785, | Jan 05 2011 | DIVX, LLC | Systems and methods of encoding trick play streams for use in adaptive streaming |
10397292, | Mar 15 2013 | DivX CF Holdings LLC; DIVX, LLC | Systems, methods, and media for delivery of content |
10437896, | Jan 07 2009 | DivX CF Holdings LLC; DIVX, LLC | Singular, collective, and automated creation of a media guide for online content |
10452715, | Jun 30 2012 | DivX CF Holdings LLC; DIVX, LLC | Systems and methods for compressing geotagged video |
10462537, | May 30 2013 | DivX CF Holdings LLC; DIVX, LLC | Network video streaming with trick play based on separate trick play files |
10484749, | Dec 04 2009 | DIVX, LLC | Systems and methods for secure playback of encrypted elementary bitstreams |
10498795, | Feb 17 2017 | DivX CF Holdings LLC; DIVX, LLC | Systems and methods for adaptive switching between multiple content delivery networks during adaptive bitrate streaming |
10595070, | Jun 15 2016 | DIVX, LLC | Systems and methods for encoding video content |
10687095, | Sep 01 2011 | DivX CF Holdings LLC; DIVX, LLC | Systems and methods for saving encoded media streamed using adaptive bitrate streaming |
10708587, | Aug 30 2011 | DivX CF Holdings LLC; DIVX, LLC | Systems and methods for encoding alternative streams of video for playback on playback devices having predetermined display aspect ratios and network connection maximum data rates |
10715806, | Mar 15 2013 | DIVX, LLC | Systems, methods, and media for transcoding video data |
10805368, | Dec 31 2012 | DIVX, LLC | Systems, methods, and media for controlling delivery of content |
10856020, | Sep 01 2011 | DIVX, LLC | Systems and methods for distributing content using a common set of encryption keys |
10878065, | Mar 14 2006 | DivX CF Holdings LLC; DIVX, LLC | Federated digital rights management scheme including trusted systems |
10902883, | Nov 16 2007 | DIVX, LLC | Systems and methods for playing back multimedia files incorporating reduced index structures |
10931982, | Aug 30 2011 | DIVX, LLC | Systems and methods for encoding and streaming video encoded using a plurality of maximum bitrate levels |
11012641, | Dec 08 2003 | DIVX, LLC | Multimedia distribution system for multimedia files with interleaved media chunks of varying types |
11017816, | Dec 08 2003 | DIVX, LLC | Multimedia distribution system |
11102553, | Dec 04 2009 | DIVX, LLC | Systems and methods for secure playback of encrypted elementary bitstreams |
11159746, | Dec 08 2003 | DIVX, LLC | Multimedia distribution system for multimedia files with packed frames |
11178435, | Sep 01 2011 | DIVX, LLC | Systems and methods for saving encoded media streamed using adaptive bitrate streaming |
11297263, | Dec 08 2003 | DIVX, LLC | Multimedia distribution system for multimedia files with packed frames |
11343300, | Feb 17 2017 | DIVX, LLC | Systems and methods for adaptive switching between multiple content delivery networks during adaptive bitrate streaming |
11355159, | Dec 08 2003 | DIVX, LLC | Multimedia distribution system |
11438394, | Dec 31 2012 | DIVX, LLC | Systems, methods, and media for controlling delivery of content |
11457054, | Aug 30 2011 | DIVX, LLC | Selection of resolutions for seamless resolution switching of multimedia content |
11483609, | Jun 15 2016 | DIVX, LLC | Systems and methods for encoding video content |
11495266, | Nov 16 2007 | DIVX, LLC | Systems and methods for playing back multimedia files incorporating reduced index structures |
11509839, | Dec 08 2003 | DIVX, LLC | Multimedia distribution system for multimedia files with packed frames |
11558564, | Dec 08 2003 | DIVX, LLC | Multimedia distribution system for multimedia files with packed frames |
11611785, | Aug 30 2011 | DIVX, LLC | Systems and methods for encoding and streaming video encoded using a plurality of maximum bitrate levels |
11638033, | Jan 05 2011 | DIVX, LLC | Systems and methods for performing adaptive bitrate streaming |
11683542, | Sep 01 2011 | DIVX, LLC | Systems and methods for distributing content using a common set of encryption keys |
11711552, | Apr 05 2014 | DIVX, LLC | Systems and methods for encoding and playing back video at different frame rates using enhancement layers |
11729451, | Jun 15 2016 | DIVX, LLC | Systems and methods for encoding video content |
11735227, | Dec 08 2003 | DIVX, LLC | Multimedia distribution system |
11735228, | Dec 08 2003 | DIVX, LLC | Multimedia distribution system |
11785066, | Dec 31 2012 | DIVX, LLC | Systems, methods, and media for controlling delivery of content |
11849112, | Mar 15 2013 | DIVX, LLC | Systems, methods, and media for distributed transcoding video data |
11886545, | Mar 14 2006 | DIVX, LLC | Federated digital rights management scheme including trusted systems |
9025659, | Jan 05 2011 | DivX CF Holdings LLC; DIVX, LLC | Systems and methods for encoding media including subtitles for adaptive bitrate streaming |
9369687, | Dec 08 2003 | DivX CF Holdings LLC; DIVX, LLC | Multimedia distribution system for multimedia files with interleaved media chunks of varying types |
9420287, | Dec 08 2003 | DivX CF Holdings LLC; DIVX, LLC | Multimedia distribution system |
9621522, | Sep 01 2011 | DivX CF Holdings LLC; DIVX, LLC | Systems and methods for playing back alternative streams of protected content protected using common cryptographic information |
9712890, | May 30 2013 | DivX CF Holdings LLC; DIVX, LLC | Network video streaming with trick play based on separate trick play files |
9866878, | Apr 05 2014 | DivX CF Holdings LLC; DIVX, LLC | Systems and methods for encoding and playing back video at different frame rates using enhancement layers |
9883204, | Jan 05 2011 | DivX CF Holdings LLC; DIVX, LLC | Systems and methods for encoding source media in matroska container files for adaptive bitrate streaming using hypertext transfer protocol |
9967305, | Jun 28 2013 | DivX CF Holdings LLC; DIVX, LLC | Systems, methods, and media for streaming media content |
RE48761, | Dec 31 2012 | DIVX, LLC | Use of objective quality measures of streamed content to reduce streaming bandwidth |
RE49990, | Dec 31 2012 | DIVX, LLC | Use of objective quality measures of streamed content to reduce streaming bandwidth |
Patent | Priority | Assignee | Title |
4009331, | Dec 24 1974 | Goldmark Communications Corporation | Still picture program video recording composing and playback method and system |
4694357, | Apr 24 1985 | Thomson-CSF Broadcast, Inc. | Apparatus and method for video signal processing |
4802170, | Apr 29 1987 | MATROX ELECTRONICS SYSTEMS LIMITED, 1055 ST REGIS BLVD , DORVAL, QUEBEC, H9P 2T4, CANADA | Error disbursing format for digital information and method for organizing same |
4964069, | May 12 1987 | International Business Machines Corporation | Self adjusting video interface |
5119474, | Jun 16 1989 | LENOVO SINGAPORE PTE LTD | Computer-based, audio/visual creation and presentation system and method |
5274758, | Jun 16 1989 | LENOVO SINGAPORE PTE LTD | Computer-based, audio/visual creation and presentation system and method |
5396497, | Feb 26 1993 | Sony Corporation | Synchronization of audio/video information |
5420801, | Nov 13 1992 | International Business Machines Corporation | System and method for synchronization of multimedia streams |
5420974, | Oct 15 1992 | International Business Machines Corporation | Multimedia complex form creation, display and editing method apparatus |
5471576, | Nov 16 1992 | International Business Machines Corp | Audio/video synchronization for application programs |
5487167, | Dec 31 1991 | LENOVO SINGAPORE PTE LTD | Personal computer with generalized data streaming apparatus for multimedia devices |
5533021, | Feb 03 1995 | International Business Machines Corporation | Apparatus and method for segmentation and time synchronization of the transmission of multimedia data |
5537408, | Feb 03 1995 | International Business Machines Corporation | apparatus and method for segmentation and time synchronization of the transmission of multimedia data |
5539908, | Nov 24 1992 | International Business Machines Corporation | Dynamically linked and shared compression/decompression |
5541662, | Sep 30 1994 | Intel Corporation | Content programmer control of video and data display using associated data |
5583652, | Apr 28 1994 | IBM Corporation | Synchronized, variable-speed playback of digitally recorded audio and video |
5627936, | Dec 21 1995 | Intel Corporation | Apparatus and method for temporal indexing of multiple audio, video and data streams |
5633472, | Jun 21 1994 | Microsoft Technology Licensing, LLC | Method and system using pathnames to specify and access audio data at fidelity levels other than the level at which the data is stored |
5642171, | Jun 08 1994 | Dell USA, L.P. | Method and apparatus for synchronizing audio and video data streams in a multimedia system |
5655117, | Nov 18 1994 | Alcatel Lucent | Method and apparatus for indexing multimedia information streams |
5664044, | Apr 28 1994 | International Business Machines Corporation | Synchronized, variable-speed playback of digitally recorded audio and video |
5675382, | Apr 08 1996 | LOGITECH EUROPE, S A | Spatial compression and decompression for video |
5675511, | Dec 21 1995 | Intel Corporation | Apparatus and method for event tagging for multiple audio, video, and data streams |
5684542, | Dec 21 1993 | Sony Corporation | Video subtitle processing system |
5719786, | Feb 03 1993 | JPMORGAN CHASE BANK, N A , AS SUCCESSOR AGENT | Digital media data stream network management system |
5745643, | Apr 06 1995 | Kabushiki Kaisha Toshiba | System for and method of reproducing playback data appropriately by the use of attribute information on the playback data |
5751280, | Dec 11 1995 | RPX Corporation | System and method for media stream synchronization with a base atom index file and an auxiliary atom index file |
5763800, | Aug 14 1995 | CREATIVE TECHNOLOGY LTD | Method and apparatus for formatting digital audio data |
5765164, | Dec 21 1995 | Intel Corporation | Apparatus and method for management of discontinuous segments of multiple audio, video, and data streams |
5794018, | Nov 24 1993 | Intel Corporation | System and method for synchronizing data streams |
5822524, | Jul 21 1995 | Infovalue Computing, Inc. | System for just-in-time retrieval of multimedia files over computer networks by transmitting data packets at transmission rate determined by frame size |
5828370, | Jul 01 1996 | OPEN TV, INC ; OPENTV, INC | Video delivery system and method for displaying indexing slider bar on the subscriber video screen |
5844575, | Jun 27 1996 | Intel Corporation | Video compression interface |
5848217, | Aug 02 1995 | Sony Corporation | Subtitle encoding/decoding method and apparatus |
5903261, | Jun 20 1996 | DATA TRANSLATION II, INC ; DATA TRANSLATION, INC , A DELAWARE CORPORATION | Computer based video system |
5907597, | Aug 05 1994 | SMART TONE, INC , A DELWARE CORPORATION | Method and system for the secure communication of data |
5956729, | Sep 06 1996 | Google Technology Holdings LLC | Multimedia file, supporting multiple instances of media types, and method for forming same |
5959690, | Feb 20 1996 | Research Triangle Institute | Method and apparatus for transitions and other special effects in digital motion video |
6046778, | Oct 29 1997 | Matsushita Electric Industrial Co., Ltd. | Apparatus for generating sub-picture units for subtitles and storage medium storing sub-picture unit generation program |
6065050, | Jun 05 1996 | Oracle America, Inc | System and method for indexing between trick play and normal play video streams in a video delivery system |
6079566, | Apr 07 1997 | TRUSTEES OF COLUMBIA UNIVERSITY IN THE CITY OF NEW YORK, THE | System and method for processing object-based audiovisual information |
6169242, | Feb 02 1999 | Microsoft Technology Licensing, LLC | Track-based music performance architecture |
6204883, | Dec 21 1993 | Sony Corporation | Video subtitle processing system |
6308005, | May 15 1998 | Kabushiki Kaisha Toshiba | Information recording method and information reproducing method |
6330286, | Jun 09 1999 | HBC SOLUTIONS, INC | Flow control, latency control, and bitrate conversions in a timing correction and frame synchronization apparatus |
6374144, | Dec 22 1998 | Varian Semiconductor Equipment Associates, Inc | Method and apparatus for controlling a system using hierarchical state machines |
6395969, | Jul 28 2000 | MXWORKS, INC | System and method for artistically integrating music and visual effects |
6665835, | Dec 23 1997 | VERIZON LABORATORIES, INC | Real time media journaler with a timing event coordinator |
6671408, | Jan 27 1999 | XACTI CORPORATION | Motion image reproducing apparatus |
6697568, | Feb 08 1999 | XACTI CORPORATION | Motion image recording apparatus and digital camera |
6725281, | Jun 11 1999 | Rovi Technologies Corporation | Synchronization of controlled device state using state table and eventing in data-driven remote device control model |
6819394, | Sep 08 1998 | Sharp Kabushiki Kaisha | Time-varying image editing method and time-varying image editing device |
6856997, | Oct 27 2000 | LG Electronics Inc. | Apparatus and method for providing file structure for multimedia streaming service |
6917652, | Jan 12 2000 | LG Electronics, Inc. | Device and method for decoding video signal |
6944629, | Sep 08 1998 | Sharp Kabushiki Kaisha | Method and device for managing multimedia file |
6985588, | Oct 30 2000 | LONGBEAM TECHNOLOGIES LLC | System and method for using location identity to control access to digital information |
6988144, | Nov 18 1999 | International Business Machines Corporation | Packet scheduling system and method for multimedia data |
7127155, | Jul 07 1998 | Kabushiki Kaisha Toshiba | Information storage system capable of recording and playing back a plurality of still pictures |
7209892, | Dec 24 1998 | Universal Music Group | Electronic music/media distribution system |
7237061, | Apr 17 2003 | Intel Corporation | Systems and methods for the efficient reading of data in a server system |
7330875, | Jun 15 1999 | Microsoft Technology Licensing, LLC | System and method for recording a presentation for on-demand viewing over a computer network |
7356245, | Jun 29 2001 | Meta Platforms, Inc | Methods to facilitate efficient transmission and playback of digital information |
7366788, | Jan 15 1998 | Apple Inc | Method and apparatus for media data transmission |
7457359, | Sep 26 2001 | INTERACT DEVICES, INC | Systems, devices and methods for securely distributing highly-compressed multimedia content |
7869691, | Sep 26 2002 | KONNINKLIJKE PHILIPS ELECTRONICS, N V | Apparatus for recording a main file and auxiliary files in a track on a record carrier |
8289338, | Jun 06 2008 | DivX CF Holdings LLC; DIVX, LLC | Systems and methods for font file optimization for multimedia files |
8472792, | Dec 08 2003 | DivX CF Holdings LLC; DIVX, LLC | Multimedia distribution system |
20010030710, | |||
20020034252, | |||
20020051494, | |||
20020062313, | |||
20020091665, | |||
20020093571, | |||
20020110193, | |||
20020118953, | |||
20020143413, | |||
20020143547, | |||
20020147980, | |||
20020161462, | |||
20020180929, | |||
20020184129, | |||
20020184159, | |||
20020191112, | |||
20020191960, | |||
20030001964, | |||
20030005442, | |||
20030035488, | |||
20030078930, | |||
20030093799, | |||
20030123855, | |||
20030133506, | |||
20030165328, | |||
20030185302, | |||
20030185542, | |||
20030206558, | |||
20040006701, | |||
20040021684, | |||
20040025180, | |||
20040047614, | |||
20040052501, | |||
20040071453, | |||
20040114687, | |||
20040117347, | |||
20040136698, | |||
20040143760, | |||
20040146276, | |||
20040217971, | |||
20050055399, | |||
20050196147, | |||
20050207442, | |||
20060093320, | |||
20060168639, | |||
20060267986, | |||
20060274835, | |||
20070005333, | |||
20080120330, | |||
20080120342, | |||
CN1221284, | |||
CN1723696, | |||
EP1420580, | |||
EP1718074, | |||
EP757484, | |||
JP11328929, | |||
JP2001043668, | |||
JP2002170363, | |||
JP2002218384, | |||
JP2003250113, | |||
JP8287613, | |||
KR221423D1, | |||
KR100221423, | |||
KR1020020064888, | |||
KR2002013664, | |||
WO131497, | |||
WO150732, | |||
WO201880, | |||
WO2004054247, | |||
WO2004097811, | |||
WO9515660, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Apr 14 2004 | LI, ADAM H | DIVX NETWORKS, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 032980 | /0337 | |
Feb 23 2005 | DIVX NETWORKS, INC | DIVX INC | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 032980 | /0356 | |
Oct 07 2010 | DIVX, INC | DIVX, LLC | MERGER SEE DOCUMENT FOR DETAILS | 032980 | /0378 | |
Apr 14 2011 | Sonic IP, Inc. | (assignment on the face of the patent) | / | |||
Nov 21 2013 | DIVX, LLC | SONIC IP, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 031713 | /0032 | |
Mar 31 2014 | JPMORGAN CHASE BANK, N A , AS COLLATERAL AGENT | DIVX, LLC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 032645 | /0559 | |
Feb 12 2018 | DivX CF Holdings LLC | DIVX, LLC | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 045498 | /0560 | |
Feb 12 2018 | DIVX, LLC | DivX CF Holdings LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 045310 | /0020 | |
Feb 12 2018 | SONIC IP, INC | DivX CF Holdings LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 045310 | /0020 | |
Feb 19 2019 | DIVX, LLC | DIVX, LLC | CHANGE OF PRINCIPAL PLACE OF BUSINESS | 050407 | /0104 |
Date | Maintenance Fee Events |
Dec 29 2011 | ASPN: Payor Number Assigned. |
Sep 29 2016 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Sep 25 2020 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Jul 29 2017 | 4 years fee payment window open |
Jan 29 2018 | 6 months grace period start (w surcharge) |
Jul 29 2018 | patent expiry (for year 4) |
Jul 29 2020 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jul 29 2021 | 8 years fee payment window open |
Jan 29 2022 | 6 months grace period start (w surcharge) |
Jul 29 2022 | patent expiry (for year 8) |
Jul 29 2024 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jul 29 2025 | 12 years fee payment window open |
Jan 29 2026 | 6 months grace period start (w surcharge) |
Jul 29 2026 | patent expiry (for year 12) |
Jul 29 2028 | 2 years to revive unintentionally abandoned end. (for year 12) |