Built SDL2_image and _mixer static
This commit is contained in:
666
libsdl2_mixer/external/flac-1.3.2/doc/isoflac.txt
vendored
Normal file
666
libsdl2_mixer/external/flac-1.3.2/doc/isoflac.txt
vendored
Normal file
@ -0,0 +1,666 @@
|
||||
Encapsulation of FLAC in ISO Base Media File Format
|
||||
Version 0.0.4 (draft)
|
||||
|
||||
Table of Contents
|
||||
1 Scope
|
||||
2 Supporting Normative References
|
||||
3 Design Rules of Encapsulation
|
||||
3.1 File Type Identification
|
||||
3.2 Overview of Track Structure
|
||||
3.3 Definition of FLAC sample
|
||||
3.3.1 Sample entry format
|
||||
3.3.2 FLAC Specific Box
|
||||
3.3.3 Sample format
|
||||
3.3.4 Duration of FLAC sample
|
||||
3.3.5 Sub-sample
|
||||
3.3.6 Random Access
|
||||
3.3.6.1 Random Access Point
|
||||
3.4 Basic Structure (informative)
|
||||
3.4.1 Initial Movie
|
||||
3.5 Example of Encapsulation (informative)
|
||||
4 Acknowledgements
|
||||
5 Author's Address
|
||||
|
||||
1 Scope
|
||||
|
||||
This document specifies the normative mapping for encapsulation of
|
||||
FLAC coded audio bitstreams in ISO Base Media file format and its
|
||||
derivatives. The encapsulation of FLAC coded bitstreams in
|
||||
QuickTime file format is outside the scope of this specification.
|
||||
|
||||
2 Supporting Normative References
|
||||
|
||||
[1] ISO/IEC 14496-12:2012 Corrected version
|
||||
|
||||
Information technology — Coding of audio-visual objects — Part
|
||||
12: ISO base media file format
|
||||
|
||||
[2] ISO/IEC 14496-12:2012/Amd.1:2013
|
||||
|
||||
Information technology — Coding of audio-visual objects — Part
|
||||
12: ISO base media file format AMENDMENT 1: Various
|
||||
enhancements including support for large metadata
|
||||
|
||||
[3] FLAC format specification
|
||||
|
||||
https://xiph.org/flac/format.html
|
||||
|
||||
Definition of the FLAC Audio Codec stream format
|
||||
|
||||
[4] FLAC-in-Ogg mapping specification
|
||||
|
||||
https://xiph.org/flac/ogg_mapping.html
|
||||
|
||||
Ogg Encapsulation for the FLAC Audio Codec
|
||||
|
||||
[5] Matroska specification
|
||||
|
||||
3 Design Rules of Encapsulation
|
||||
|
||||
3.1 File Type Identification
|
||||
|
||||
This specification does not define any brand to declare files
|
||||
which conform to this specification. Files which conform to
|
||||
this specification shall contain at least one brand which
|
||||
supports the requirements and the requirements described in
|
||||
this clause without contradiction in the compatible brands
|
||||
list of the File Type Box. The minimal support of the
|
||||
encapsulation of FLAC bitstreams in ISO Base Media file format
|
||||
requires the 'isom' brand.
|
||||
|
||||
3.2 Overview of Track Structure
|
||||
|
||||
FLAC coded audio shall be encapsulated into the ISO Base
|
||||
Media File Format as media data within an audio track.
|
||||
|
||||
+ The handler_type field in the Handler Reference Box
|
||||
shall be set to 'soun'.
|
||||
|
||||
+ The Media Information Box shall contain the Sound Media
|
||||
Header Box.
|
||||
|
||||
+ The codingname of the sample entry is 'fLaC'.
|
||||
|
||||
This specification does not define any encapsulation
|
||||
using MP4AudioSampleEntry with objectTypeIndication
|
||||
specified by the MPEG-4 Registration Authority
|
||||
(http://www.mp4ra.org/). See section 'Sample entry
|
||||
format' for the definition of the sample entry.
|
||||
|
||||
+ The 'dfLa' box is added to the sample entry to convey
|
||||
initializing information for the decoder.
|
||||
|
||||
See section 'FLAC Specific Box' for the definition of
|
||||
the box contents.
|
||||
|
||||
+ A FLAC sample is exactly one FLAC frame as described
|
||||
in the format specification[3]. See section
|
||||
'Sample format' for details of the frame contents.
|
||||
|
||||
+ Every FLAC sample is a sync sample. No pre-roll or
|
||||
lapping is required. See section 'Random Access' for
|
||||
further details.
|
||||
|
||||
3.3 Definition of a FLAC sample
|
||||
|
||||
3.3.1 Sample entry format
|
||||
|
||||
For any track containing one or more FLAC bitstreams, a
|
||||
sample entry describing the corresponding FLAC bitstream
|
||||
shall be present inside the Sample Table Box. This version
|
||||
of the specification defines only one sample entry format
|
||||
named FLACSampleEntry whose codingname is 'fLaC'. This
|
||||
sample entry includes exactly one FLAC Specific Box
|
||||
defined in section 'FLAC specific box' as a mandatory box
|
||||
and indicates that FLAC samples described by this sample
|
||||
entry are stored by the sample format described in section
|
||||
'Sample format'.
|
||||
|
||||
The syntax and semantics of the FLACSampleEntry is shown
|
||||
as follows. The data fields of this box and native
|
||||
FLAC[3] structures encoded within FLAC blocks are both
|
||||
stored in big-endian format, though for purposes of the
|
||||
ISO BMFF container, FLAC native metadata and data blocks
|
||||
are treated as unstructured octet streams.
|
||||
|
||||
class FLACSampleEntry() extends AudioSampleEntry ('fLaC'){
|
||||
FLACSpecificBox();
|
||||
}
|
||||
|
||||
The fields of the AudioSampleEntry portion shall be set as
|
||||
follows:
|
||||
|
||||
+ channelcount:
|
||||
|
||||
The channelcount field shall be set equal to the
|
||||
channel count specified by the FLAC bitstream's native
|
||||
METADATA_BLOCK_STREAMINFO header as described in [3].
|
||||
Note that the FLAC FRAME_HEADER structure that begins
|
||||
each FLAC sample redundantly encodes channel number;
|
||||
the number of channels declared in each FRAME_HEADER
|
||||
MUST match the number of channels declared here and in
|
||||
the METADATA_BLOCK_STREAMINFO header.
|
||||
|
||||
+ samplesize:
|
||||
|
||||
The samplesize field shall be set equal to the bits
|
||||
per sample specified by the FLAC bitstream's native
|
||||
METADATA_BLOCK_STREAMINFO header as described in [3].
|
||||
Note that the FLAC FRAME_HEADER structure that begins
|
||||
each FLAC sample redundantly encodes the number of
|
||||
bits per sample; the bits per sample declared in each
|
||||
FRAME_HEADER MUST match the samplesize declared here
|
||||
and the bits per sample field declared in the
|
||||
METADATA_BLOCK_STREAMINFO header.
|
||||
|
||||
+ samplerate:
|
||||
|
||||
When possible, the samplerate field shall be set
|
||||
equal to the sample rate specified by the FLAC
|
||||
bitstream's native METADATA_BLOCK_STREAMINFO header
|
||||
as described in [3], left-shifted by 16 bits to
|
||||
create the appropriate 16.16 fixed-point
|
||||
representation.
|
||||
|
||||
When the bitstream's native sample rate is greater
|
||||
than the maximum expressible value of 65535 Hz,
|
||||
the samplerate field shall hold the greatest
|
||||
expressible regular division of that rate. I.e.
|
||||
the samplerate field shall hold 48000.0 for
|
||||
native sample rates of 96 and 192 kHz. In the
|
||||
case of unusual sample rates which do not have
|
||||
an expressible regular division, the maximum value
|
||||
of 65535.0 Hz should be used.
|
||||
|
||||
High-rate FLAC bitstreams are common, and the native
|
||||
value from the METADATA_BLOCK_STREAMINFO header in
|
||||
the FLACSpecificBox MUST be read to determine the
|
||||
correct sample rate of the bitstream.
|
||||
|
||||
Note that the FLAC FRAME_HEADER structure that begins
|
||||
each FLAC sample redundantly encodes the sample rate;
|
||||
the sample rate declared in each FRAME_HEADER MUST
|
||||
match the sample rate declared in the
|
||||
METADATA_BLOCK_STREAMINFO header, and here in the
|
||||
AudioSampleEntry portion of the FLACSampleEntry
|
||||
as much as is allowed by the encoding restrictions
|
||||
described above.
|
||||
|
||||
Finally, the FLACSpecificBox carries codec headers:
|
||||
|
||||
+ FLACSpecificBox
|
||||
|
||||
This box contains initializing information for the
|
||||
decoder as defined in section 'FLAC specific box'.
|
||||
|
||||
3.3.2 FLAC Specific Box
|
||||
|
||||
Exactly one FLAC Specific Box shall be present in each
|
||||
FLACSampleEntry. This specification defines version 0
|
||||
of this box. If incompatible changes occur in future
|
||||
versions of this specification, another version number
|
||||
will be defined. The data fields of this box and native
|
||||
FLAC[3] structures encoded within FLAC blocks are both
|
||||
stored in big-endian format, though for purposes of the
|
||||
ISO BMFF container, FLAC native metadata and data blocks
|
||||
are treated as unstructured octet streams.
|
||||
|
||||
The syntax and semantics of the FLAC Specific Box is shown
|
||||
as follows.
|
||||
|
||||
class FLACMetadataBlock {
|
||||
unsigned int(1) LastMetadataBlockFlag;
|
||||
unsigned int(7) BlockType;
|
||||
unsigned int(24) Length;
|
||||
unsigned int(8) BlockData[Length];
|
||||
}
|
||||
|
||||
aligned(8) class FLACSpecificBox
|
||||
extends FullBox('dfLa', version=0, 0){
|
||||
for (i=0; ; i++) { // to end of box
|
||||
FLACMetadataBlock();
|
||||
}
|
||||
}
|
||||
|
||||
+ Version:
|
||||
|
||||
The Version field shall be set to 0.
|
||||
|
||||
In the future versions of this specification, this
|
||||
field may be set to other values. And without support
|
||||
of those values, the reader shall not read the fields
|
||||
after this within the FLACSpecificBox.
|
||||
|
||||
+ Flags:
|
||||
|
||||
The Flags field shall be set to 0.
|
||||
|
||||
After the FullBox header, the box contains a sequence of
|
||||
FLAC[3] native-metadata block structures that fill the
|
||||
remainder of the box.
|
||||
|
||||
Each FLACMetadataBlock structure consists of three fields
|
||||
filling a total of four bytes that form a FLAC[3] native
|
||||
METADATA_BLOCK_HEADER, followed by raw octet bytes that
|
||||
comprise the FLAC[3] native METADATA_BLOCK_DATA.
|
||||
|
||||
+ LastMetadataBlockFlag:
|
||||
|
||||
The LastMetadataBlockFlag field maps semantically to
|
||||
the FLAC[3] native METADATA_BLOCK_HEADER
|
||||
Last-metadata-block flag as defined in the FLAC[3]
|
||||
file specification.
|
||||
|
||||
The LastMetadataBlockFlag is set to 1 if this
|
||||
MetadataBlock is the last metadata block in the
|
||||
FLACSpecificBox. It is set to 0 otherwise.
|
||||
|
||||
+ BlockType:
|
||||
|
||||
The BlockType field maps semantically to the FLAC[3]
|
||||
native METADATA_BLOCK_HEADER BLOCK_TYPE field as
|
||||
defined in the FLAC[3] file specification.
|
||||
|
||||
The BlockType is set to a valid FLAC[3] BLOCK_TYPE
|
||||
value that identifies the type of this native metadata
|
||||
block. The BlockType of the first FLACMetadataBlock
|
||||
must be set to 0, signifying this is a FLAC[3] native
|
||||
METADATA_BLOCK_STREAMINFO block.
|
||||
|
||||
+ Length:
|
||||
|
||||
The Length field maps semantically to the FLAC[3]
|
||||
native METADATA_BLOCK_HEADER Length field as
|
||||
defined in the FLAC[3] file specification.
|
||||
|
||||
The length field specifies the number of bytes of
|
||||
MetadataBlockData to follow.
|
||||
|
||||
+ BlockData
|
||||
|
||||
The BlockData field maps semantically to the FLAC[3]
|
||||
native METADATA_BLOCK_HEADER METADATA_BLOCK_DATA as
|
||||
defined in the FLAC[3] file specification.
|
||||
|
||||
Taken together, the bytes of the FLACMetadataBlock form a
|
||||
complete FLAC[3] native METADATA_BLOCK structure.
|
||||
|
||||
Note that a minimum of a single FLACMetadataBlock,
|
||||
consisting of a FLAC[3] native METADATA_BLOCK_STREAMINFO
|
||||
structure, is required. Should the FLACSpecificBox
|
||||
contain more than a single FLACMetadataBlock structure,
|
||||
the FLACMetadataBlock containing the FLAC[3] native
|
||||
METADATA_BLOCK_STREAMINFO must occur first in the list.
|
||||
|
||||
Other containers that package FLAC audio streams, such as
|
||||
Ogg[4] and Matroska[5], wrap FLAC[3] native metadata without
|
||||
modification similar to this specification. When
|
||||
repackaging or remuxing FLAC[3] streams from another
|
||||
format that contains FLAC[3] native metadata into an ISO
|
||||
BMFF file, the complete FLAC[3] native metadata should be
|
||||
preserved in the ISO BMFF stream as described above. It
|
||||
is also allowed to parse this native metadata and include
|
||||
contextually redundant ISO BMFF-native repackagings and/or
|
||||
reparsings of FLAC[3] native metadata, so long as the
|
||||
native metadata is also preserved.
|
||||
|
||||
3.3.3 Sample format
|
||||
|
||||
A FLAC sample is exactly one FLAC audio FRAME (as defined
|
||||
in the FLAC[3] file specification) belonging to a FLAC
|
||||
bitstreams. The FLAC sample data begins with a complete
|
||||
FLAC FRAME_HEADER, followed by one FLAC SUBFRAME per
|
||||
channel, any necessary bit padding, and ends with the
|
||||
usual FLAC FRAME_FOOTER.
|
||||
|
||||
Note that the FLAC native FRAME_HEADER structure that
|
||||
begins each FLAC sample redundantly encodes channel count,
|
||||
sample rate, and sample size. The values of these fields
|
||||
must agree both with the values declared in the FLAC
|
||||
METADATA_BLOCK_STREAMINFO structure as well as the
|
||||
FLACSampleEntry box.
|
||||
|
||||
3.3.4 Duration of a FLAC sample
|
||||
|
||||
The duration of any given FLAC sample is determined by
|
||||
dividing the decoded block size of a FLAC frame, as
|
||||
encoded in the FLAC FRAME's FRAME_HEADER structure, by the
|
||||
value of the timescale field in the Media Header Box.
|
||||
FLAC samples are permitted to have variable durations
|
||||
within a given audio stream. FLAC does not use padding
|
||||
values.
|
||||
|
||||
3.3.5 Sub-sample
|
||||
|
||||
Sub-samples are not defined for FLAC samples in this
|
||||
specification.
|
||||
|
||||
3.3.6 Random Access
|
||||
|
||||
This subclause describes the nature of the random access
|
||||
of FLAC sample.
|
||||
|
||||
3.3.6.1 Random Access Point
|
||||
|
||||
All FLAC samples can be independently decoded
|
||||
i.e. every FLAC sample is a sync sample. The Sync
|
||||
Sample Box shall not be present as long as there are
|
||||
no samples other than FLAC samples in the same
|
||||
track. The sample_is_non_sync_sample field for FLAC
|
||||
samples shall be set to 0.
|
||||
|
||||
3.4 Basic Structure (informative)
|
||||
|
||||
3.4.1 Initial Movie
|
||||
|
||||
This subclause shows a basic structure of the Movie Box as follows:
|
||||
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
|moov| | | | | | | | Movie Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| |mvhd| | | | | | | Movie Header Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| |trak| | | | | | | Track Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | |tkhd| | | | | | Track Header Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | |edts|* | | | | | Edit Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | | |elst|* | | | | Edit List Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | |mdia| | | | | | Media Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | | |mdhd| | | | | Media Header Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | | |hdlr| | | | | Handler Reference Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | | |minf| | | | | Media Information Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | | | |smhd| | | | Sound Media Header Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | | | |dinf| | | | Data Information Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | | | | |dref| | | Data Reference Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | | | | | |url | | DataEntryUrlBox |
|
||||
+----+----+----+----+----+----+ or +----+------------------------------+
|
||||
| | | | | | |urn | | DataEntryUrnBox |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | | | |stbl| | | | Sample Table |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | | | | |stsd| | | Sample Description Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | | | | | |fLaC| | FLACSampleEntry |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | | | | | | |dfLa| FLAC Specific Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | | | | |stts| | | Decoding Time to Sample Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | | | | |stsc| | | Sample To Chunk Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | | | | |stsz| | | Sample Size Box |
|
||||
+----+----+----+----+----+ or +----+----+------------------------------+
|
||||
| | | | | |stz2| | | Compact Sample Size Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | | | | |stco| | | Chunk Offset Box |
|
||||
+----+----+----+----+----+ or +----+----+------------------------------+
|
||||
| | | | | |co64| | | Chunk Large Offset Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| |mvex|* | | | | | | Movie Extends Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
| | |trex|* | | | | | Track Extends Box |
|
||||
+----+----+----+----+----+----+----+----+------------------------------+
|
||||
|
||||
Figure 1 - Basic structure of Movie Box
|
||||
|
||||
It is strongly recommended that the order of boxes should
|
||||
follow the above structure. Boxes marked with an asterisk
|
||||
(*) may or may not be present depending on context. For
|
||||
most boxes listed above, the definition is as is defined
|
||||
in ISO/IEC 14496-12 [1]. The additional boxes and the
|
||||
additional requirements, restrictions and recommendations
|
||||
to the other boxes are described in this specification.
|
||||
|
||||
3.5 Example of Encapsulation (informative)
|
||||
[File]
|
||||
size = 17790
|
||||
[ftyp: File Type Box]
|
||||
position = 0
|
||||
size = 24
|
||||
major_brand = mp42 : MP4 version 2
|
||||
minor_version = 0
|
||||
compatible_brands
|
||||
brand[0] = mp42 : MP4 version 2
|
||||
brand[1] = isom : ISO Base Media file format
|
||||
[moov: Movie Box]
|
||||
position = 24
|
||||
size = 757
|
||||
[mvhd: Movie Header Box]
|
||||
position = 32
|
||||
size = 108
|
||||
version = 0
|
||||
flags = 0x000000
|
||||
creation_time = UTC 2014/12/12, 18:41:19
|
||||
modification_time = UTC 2014/12/12, 18:41:19
|
||||
timescale = 48000
|
||||
duration = 33600 (00:00:00.700)
|
||||
rate = 1.000000
|
||||
volume = 1.000000
|
||||
reserved = 0x0000
|
||||
reserved = 0x00000000
|
||||
reserved = 0x00000000
|
||||
transformation matrix
|
||||
| a, b, u | | 1.000000, 0.000000, 0.000000 |
|
||||
| c, d, v | = | 0.000000, 1.000000, 0.000000 |
|
||||
| x, y, w | | 0.000000, 0.000000, 1.000000 |
|
||||
pre_defined = 0x00000000
|
||||
pre_defined = 0x00000000
|
||||
pre_defined = 0x00000000
|
||||
pre_defined = 0x00000000
|
||||
pre_defined = 0x00000000
|
||||
pre_defined = 0x00000000
|
||||
next_track_ID = 2
|
||||
[iods: Object Descriptor Box]
|
||||
position = 140
|
||||
size = 33
|
||||
version = 0
|
||||
flags = 0x000000
|
||||
[tag = 0x10: MP4_IOD]
|
||||
expandableClassSize = 16
|
||||
ObjectDescriptorID = 1
|
||||
URL_Flag = 0
|
||||
includeInlineProfileLevelFlag = 0
|
||||
reserved = 0xf
|
||||
ODProfileLevelIndication = 0xff
|
||||
sceneProfileLevelIndication = 0xff
|
||||
audioProfileLevelIndication = 0xfe
|
||||
visualProfileLevelIndication = 0xff
|
||||
graphicsProfileLevelIndication = 0xff
|
||||
[tag = 0x0e: ES_ID_Inc]
|
||||
expandableClassSize = 4
|
||||
Track_ID = 1
|
||||
[trak: Track Box]
|
||||
position = 173
|
||||
size = 608
|
||||
[tkhd: Track Header Box]
|
||||
position = 181
|
||||
size = 92
|
||||
version = 0
|
||||
flags = 0x000007
|
||||
Track enabled
|
||||
Track in movie
|
||||
Track in preview
|
||||
creation_time = UTC 2014/12/12, 18:41:19
|
||||
modification_time = UTC 2014/12/12, 18:41:19
|
||||
track_ID = 1
|
||||
reserved = 0x00000000
|
||||
duration = 33600 (00:00:00.700)
|
||||
reserved = 0x00000000
|
||||
reserved = 0x00000000
|
||||
layer = 0
|
||||
alternate_group = 0
|
||||
volume = 1.000000
|
||||
reserved = 0x0000
|
||||
transformation matrix
|
||||
| a, b, u | | 1.000000, 0.000000, 0.000000 |
|
||||
| c, d, v | = | 0.000000, 1.000000, 0.000000 |
|
||||
| x, y, w | | 0.000000, 0.000000, 1.000000 |
|
||||
width = 0.000000
|
||||
height = 0.000000
|
||||
[mdia: Media Box]
|
||||
position = 273
|
||||
size = 472
|
||||
[mdhd: Media Header Box]
|
||||
position = 281
|
||||
size = 32
|
||||
version = 0
|
||||
flags = 0x000000
|
||||
creation_time = UTC 2014/12/12, 18:41:19
|
||||
modification_time = UTC 2014/12/12, 18:41:19
|
||||
timescale = 48000
|
||||
duration = 34560 (00:00:00.720)
|
||||
language = und
|
||||
pre_defined = 0x0000
|
||||
[hdlr: Handler Reference Box]
|
||||
position = 313
|
||||
size = 51
|
||||
version = 0
|
||||
flags = 0x000000
|
||||
pre_defined = 0x00000000
|
||||
handler_type = soun
|
||||
reserved = 0x00000000
|
||||
reserved = 0x00000000
|
||||
reserved = 0x00000000
|
||||
name = Xiph Audio Handler
|
||||
[minf: Media Information Box]
|
||||
position = 364
|
||||
size = 381
|
||||
[smhd: Sound Media Header Box]
|
||||
position = 372
|
||||
size = 16
|
||||
version = 0
|
||||
flags = 0x000000
|
||||
balance = 0.000000
|
||||
reserved = 0x0000
|
||||
[dinf: Data Information Box]
|
||||
position = 388
|
||||
size = 36
|
||||
[dref: Data Reference Box]
|
||||
position = 396
|
||||
size = 28
|
||||
version = 0
|
||||
flags = 0x000000
|
||||
entry_count = 1
|
||||
[url : Data Entry Url Box]
|
||||
position = 412
|
||||
size = 12
|
||||
version = 0
|
||||
flags = 0x000001
|
||||
location = in the same file
|
||||
[stbl: Sample Table Box]
|
||||
position = 424
|
||||
size = 321
|
||||
[stsd: Sample Description Box]
|
||||
position = 432
|
||||
size = 79
|
||||
version = 0
|
||||
flags = 0x000000
|
||||
entry_count = 1
|
||||
[fLaC: Audio Description]
|
||||
position = 448
|
||||
size = 63
|
||||
reserved = 0x000000000000
|
||||
data_reference_index = 1
|
||||
reserved = 0x0000
|
||||
reserved = 0x0000
|
||||
reserved = 0x00000000
|
||||
channelcount = 2
|
||||
samplesize = 16
|
||||
pre_defined = 0
|
||||
reserved = 0
|
||||
samplerate = 48000.000000
|
||||
[dfLa: FLAC Specific Box]
|
||||
position = 484
|
||||
size = 50
|
||||
version = 0
|
||||
flags = 0x000000
|
||||
[FLACMetadataBlock]
|
||||
LastMetadataBlockFlag = 1
|
||||
BlockType = 0
|
||||
Length = 34
|
||||
BlockData[34];
|
||||
[stts: Decoding Time to Sample Box]
|
||||
position = 492
|
||||
size = 24
|
||||
version = 0
|
||||
flags = 0x000000
|
||||
entry_count = 1
|
||||
entry[0]
|
||||
sample_count = 18
|
||||
sample_delta = 1920
|
||||
[stsc: Sample To Chunk Box]
|
||||
position = 516
|
||||
size = 40
|
||||
version = 0
|
||||
flags = 0x000000
|
||||
entry_count = 2
|
||||
entry[0]
|
||||
first_chunk = 1
|
||||
samples_per_chunk = 13
|
||||
sample_description_index = 1
|
||||
entry[1]
|
||||
first_chunk = 2
|
||||
samples_per_chunk = 5
|
||||
sample_description_index = 1
|
||||
[stsz: Sample Size Box]
|
||||
position = 556
|
||||
size = 92
|
||||
version = 0
|
||||
flags = 0x000000
|
||||
sample_size = 0 (variable)
|
||||
sample_count = 18
|
||||
entry_size[0] = 977
|
||||
entry_size[1] = 938
|
||||
entry_size[2] = 939
|
||||
entry_size[3] = 938
|
||||
entry_size[4] = 934
|
||||
entry_size[5] = 945
|
||||
entry_size[6] = 948
|
||||
entry_size[7] = 956
|
||||
entry_size[8] = 955
|
||||
entry_size[9] = 930
|
||||
entry_size[10] = 933
|
||||
entry_size[11] = 934
|
||||
entry_size[12] = 972
|
||||
entry_size[13] = 977
|
||||
entry_size[14] = 958
|
||||
entry_size[15] = 949
|
||||
entry_size[16] = 962
|
||||
entry_size[17] = 848
|
||||
[stco: Chunk Offset Box]
|
||||
position = 648
|
||||
size = 24
|
||||
version = 0
|
||||
flags = 0x000000
|
||||
entry_count = 2
|
||||
chunk_offset[0] = 686
|
||||
chunk_offset[1] = 12985
|
||||
[free: Free Space Box]
|
||||
position = 672
|
||||
size = 8
|
||||
[mdat: Media Data Box]
|
||||
position = 680
|
||||
size = 17001
|
||||
|
||||
4 Acknowledgements
|
||||
|
||||
This spec draws heavily from the Opus-in-ISOBMFF specification
|
||||
work done by Yusuke Nakamura <muken.the.vfrmaniac |at| gmail.com>
|
||||
|
||||
Thank you to Tim Terriberry, David Evans, and Yusuke Nakamura
|
||||
for valuable feedback. Thank you to Ralph Giles for editorial
|
||||
help.
|
||||
|
||||
5 Author Address
|
||||
|
||||
Monty Montgomery <cmontgomery@mozilla.com>
|
Reference in New Issue
Block a user