isoflac.txt 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666
  1. Encapsulation of FLAC in ISO Base Media File Format
  2. Version 0.0.4 (draft)
  3. Table of Contents
  4. 1 Scope
  5. 2 Supporting Normative References
  6. 3 Design Rules of Encapsulation
  7. 3.1 File Type Identification
  8. 3.2 Overview of Track Structure
  9. 3.3 Definition of FLAC sample
  10. 3.3.1 Sample entry format
  11. 3.3.2 FLAC Specific Box
  12. 3.3.3 Sample format
  13. 3.3.4 Duration of FLAC sample
  14. 3.3.5 Sub-sample
  15. 3.3.6 Random Access
  16. 3.3.6.1 Random Access Point
  17. 3.4 Basic Structure (informative)
  18. 3.4.1 Initial Movie
  19. 3.5 Example of Encapsulation (informative)
  20. 4 Acknowledgements
  21. 5 Author's Address
  22. 1 Scope
  23. This document specifies the normative mapping for encapsulation of
  24. FLAC coded audio bitstreams in ISO Base Media file format and its
  25. derivatives. The encapsulation of FLAC coded bitstreams in
  26. QuickTime file format is outside the scope of this specification.
  27. 2 Supporting Normative References
  28. [1] ISO/IEC 14496-12:2012 Corrected version
  29. Information technology — Coding of audio-visual objects — Part
  30. 12: ISO base media file format
  31. [2] ISO/IEC 14496-12:2012/Amd.1:2013
  32. Information technology — Coding of audio-visual objects — Part
  33. 12: ISO base media file format AMENDMENT 1: Various
  34. enhancements including support for large metadata
  35. [3] FLAC format specification
  36. https://xiph.org/flac/format.html
  37. Definition of the FLAC Audio Codec stream format
  38. [4] FLAC-in-Ogg mapping specification
  39. https://xiph.org/flac/ogg_mapping.html
  40. Ogg Encapsulation for the FLAC Audio Codec
  41. [5] Matroska specification
  42. 3 Design Rules of Encapsulation
  43. 3.1 File Type Identification
  44. This specification does not define any brand to declare files
  45. which conform to this specification. Files which conform to
  46. this specification shall contain at least one brand which
  47. supports the requirements and the requirements described in
  48. this clause without contradiction in the compatible brands
  49. list of the File Type Box. The minimal support of the
  50. encapsulation of FLAC bitstreams in ISO Base Media file format
  51. requires the 'isom' brand.
  52. 3.2 Overview of Track Structure
  53. FLAC coded audio shall be encapsulated into the ISO Base
  54. Media File Format as media data within an audio track.
  55. + The handler_type field in the Handler Reference Box
  56. shall be set to 'soun'.
  57. + The Media Information Box shall contain the Sound Media
  58. Header Box.
  59. + The codingname of the sample entry is 'fLaC'.
  60. This specification does not define any encapsulation
  61. using MP4AudioSampleEntry with objectTypeIndication
  62. specified by the MPEG-4 Registration Authority
  63. (http://www.mp4ra.org/). See section 'Sample entry
  64. format' for the definition of the sample entry.
  65. + The 'dfLa' box is added to the sample entry to convey
  66. initializing information for the decoder.
  67. See section 'FLAC Specific Box' for the definition of
  68. the box contents.
  69. + A FLAC sample is exactly one FLAC frame as described
  70. in the format specification[3]. See section
  71. 'Sample format' for details of the frame contents.
  72. + Every FLAC sample is a sync sample. No pre-roll or
  73. lapping is required. See section 'Random Access' for
  74. further details.
  75. 3.3 Definition of a FLAC sample
  76. 3.3.1 Sample entry format
  77. For any track containing one or more FLAC bitstreams, a
  78. sample entry describing the corresponding FLAC bitstream
  79. shall be present inside the Sample Table Box. This version
  80. of the specification defines only one sample entry format
  81. named FLACSampleEntry whose codingname is 'fLaC'. This
  82. sample entry includes exactly one FLAC Specific Box
  83. defined in section 'FLAC specific box' as a mandatory box
  84. and indicates that FLAC samples described by this sample
  85. entry are stored by the sample format described in section
  86. 'Sample format'.
  87. The syntax and semantics of the FLACSampleEntry is shown
  88. as follows. The data fields of this box and native
  89. FLAC[3] structures encoded within FLAC blocks are both
  90. stored in big-endian format, though for purposes of the
  91. ISO BMFF container, FLAC native metadata and data blocks
  92. are treated as unstructured octet streams.
  93. class FLACSampleEntry() extends AudioSampleEntry ('fLaC'){
  94. FLACSpecificBox();
  95. }
  96. The fields of the AudioSampleEntry portion shall be set as
  97. follows:
  98. + channelcount:
  99. The channelcount field shall be set equal to the
  100. channel count specified by the FLAC bitstream's native
  101. METADATA_BLOCK_STREAMINFO header as described in [3].
  102. Note that the FLAC FRAME_HEADER structure that begins
  103. each FLAC sample redundantly encodes channel number;
  104. the number of channels declared in each FRAME_HEADER
  105. MUST match the number of channels declared here and in
  106. the METADATA_BLOCK_STREAMINFO header.
  107. + samplesize:
  108. The samplesize field shall be set equal to the bits
  109. per sample specified by the FLAC bitstream's native
  110. METADATA_BLOCK_STREAMINFO header as described in [3].
  111. Note that the FLAC FRAME_HEADER structure that begins
  112. each FLAC sample redundantly encodes the number of
  113. bits per sample; the bits per sample declared in each
  114. FRAME_HEADER MUST match the samplesize declared here
  115. and the bits per sample field declared in the
  116. METADATA_BLOCK_STREAMINFO header.
  117. + samplerate:
  118. When possible, the samplerate field shall be set
  119. equal to the sample rate specified by the FLAC
  120. bitstream's native METADATA_BLOCK_STREAMINFO header
  121. as described in [3], left-shifted by 16 bits to
  122. create the appropriate 16.16 fixed-point
  123. representation.
  124. When the bitstream's native sample rate is greater
  125. than the maximum expressible value of 65535 Hz,
  126. the samplerate field shall hold the greatest
  127. expressible regular division of that rate. I.e.
  128. the samplerate field shall hold 48000.0 for
  129. native sample rates of 96 and 192 kHz. In the
  130. case of unusual sample rates which do not have
  131. an expressible regular division, the maximum value
  132. of 65535.0 Hz should be used.
  133. High-rate FLAC bitstreams are common, and the native
  134. value from the METADATA_BLOCK_STREAMINFO header in
  135. the FLACSpecificBox MUST be read to determine the
  136. correct sample rate of the bitstream.
  137. Note that the FLAC FRAME_HEADER structure that begins
  138. each FLAC sample redundantly encodes the sample rate;
  139. the sample rate declared in each FRAME_HEADER MUST
  140. match the sample rate declared in the
  141. METADATA_BLOCK_STREAMINFO header, and here in the
  142. AudioSampleEntry portion of the FLACSampleEntry
  143. as much as is allowed by the encoding restrictions
  144. described above.
  145. Finally, the FLACSpecificBox carries codec headers:
  146. + FLACSpecificBox
  147. This box contains initializing information for the
  148. decoder as defined in section 'FLAC specific box'.
  149. 3.3.2 FLAC Specific Box
  150. Exactly one FLAC Specific Box shall be present in each
  151. FLACSampleEntry. This specification defines version 0
  152. of this box. If incompatible changes occur in future
  153. versions of this specification, another version number
  154. will be defined. The data fields of this box and native
  155. FLAC[3] structures encoded within FLAC blocks are both
  156. stored in big-endian format, though for purposes of the
  157. ISO BMFF container, FLAC native metadata and data blocks
  158. are treated as unstructured octet streams.
  159. The syntax and semantics of the FLAC Specific Box is shown
  160. as follows.
  161. class FLACMetadataBlock {
  162. unsigned int(1) LastMetadataBlockFlag;
  163. unsigned int(7) BlockType;
  164. unsigned int(24) Length;
  165. unsigned int(8) BlockData[Length];
  166. }
  167. aligned(8) class FLACSpecificBox
  168. extends FullBox('dfLa', version=0, 0){
  169. for (i=0; ; i++) { // to end of box
  170. FLACMetadataBlock();
  171. }
  172. }
  173. + Version:
  174. The Version field shall be set to 0.
  175. In the future versions of this specification, this
  176. field may be set to other values. And without support
  177. of those values, the reader shall not read the fields
  178. after this within the FLACSpecificBox.
  179. + Flags:
  180. The Flags field shall be set to 0.
  181. After the FullBox header, the box contains a sequence of
  182. FLAC[3] native-metadata block structures that fill the
  183. remainder of the box.
  184. Each FLACMetadataBlock structure consists of three fields
  185. filling a total of four bytes that form a FLAC[3] native
  186. METADATA_BLOCK_HEADER, followed by raw octet bytes that
  187. comprise the FLAC[3] native METADATA_BLOCK_DATA.
  188. + LastMetadataBlockFlag:
  189. The LastMetadataBlockFlag field maps semantically to
  190. the FLAC[3] native METADATA_BLOCK_HEADER
  191. Last-metadata-block flag as defined in the FLAC[3]
  192. file specification.
  193. The LastMetadataBlockFlag is set to 1 if this
  194. MetadataBlock is the last metadata block in the
  195. FLACSpecificBox. It is set to 0 otherwise.
  196. + BlockType:
  197. The BlockType field maps semantically to the FLAC[3]
  198. native METADATA_BLOCK_HEADER BLOCK_TYPE field as
  199. defined in the FLAC[3] file specification.
  200. The BlockType is set to a valid FLAC[3] BLOCK_TYPE
  201. value that identifies the type of this native metadata
  202. block. The BlockType of the first FLACMetadataBlock
  203. must be set to 0, signifying this is a FLAC[3] native
  204. METADATA_BLOCK_STREAMINFO block.
  205. + Length:
  206. The Length field maps semantically to the FLAC[3]
  207. native METADATA_BLOCK_HEADER Length field as
  208. defined in the FLAC[3] file specification.
  209. The length field specifies the number of bytes of
  210. MetadataBlockData to follow.
  211. + BlockData
  212. The BlockData field maps semantically to the FLAC[3]
  213. native METADATA_BLOCK_HEADER METADATA_BLOCK_DATA as
  214. defined in the FLAC[3] file specification.
  215. Taken together, the bytes of the FLACMetadataBlock form a
  216. complete FLAC[3] native METADATA_BLOCK structure.
  217. Note that a minimum of a single FLACMetadataBlock,
  218. consisting of a FLAC[3] native METADATA_BLOCK_STREAMINFO
  219. structure, is required. Should the FLACSpecificBox
  220. contain more than a single FLACMetadataBlock structure,
  221. the FLACMetadataBlock containing the FLAC[3] native
  222. METADATA_BLOCK_STREAMINFO must occur first in the list.
  223. Other containers that package FLAC audio streams, such as
  224. Ogg[4] and Matroska[5], wrap FLAC[3] native metadata without
  225. modification similar to this specification. When
  226. repackaging or remuxing FLAC[3] streams from another
  227. format that contains FLAC[3] native metadata into an ISO
  228. BMFF file, the complete FLAC[3] native metadata should be
  229. preserved in the ISO BMFF stream as described above. It
  230. is also allowed to parse this native metadata and include
  231. contextually redundant ISO BMFF-native repackagings and/or
  232. reparsings of FLAC[3] native metadata, so long as the
  233. native metadata is also preserved.
  234. 3.3.3 Sample format
  235. A FLAC sample is exactly one FLAC audio FRAME (as defined
  236. in the FLAC[3] file specification) belonging to a FLAC
  237. bitstreams. The FLAC sample data begins with a complete
  238. FLAC FRAME_HEADER, followed by one FLAC SUBFRAME per
  239. channel, any necessary bit padding, and ends with the
  240. usual FLAC FRAME_FOOTER.
  241. Note that the FLAC native FRAME_HEADER structure that
  242. begins each FLAC sample redundantly encodes channel count,
  243. sample rate, and sample size. The values of these fields
  244. must agree both with the values declared in the FLAC
  245. METADATA_BLOCK_STREAMINFO structure as well as the
  246. FLACSampleEntry box.
  247. 3.3.4 Duration of a FLAC sample
  248. The duration of any given FLAC sample is determined by
  249. dividing the decoded block size of a FLAC frame, as
  250. encoded in the FLAC FRAME's FRAME_HEADER structure, by the
  251. value of the timescale field in the Media Header Box.
  252. FLAC samples are permitted to have variable durations
  253. within a given audio stream. FLAC does not use padding
  254. values.
  255. 3.3.5 Sub-sample
  256. Sub-samples are not defined for FLAC samples in this
  257. specification.
  258. 3.3.6 Random Access
  259. This subclause describes the nature of the random access
  260. of FLAC sample.
  261. 3.3.6.1 Random Access Point
  262. All FLAC samples can be independently decoded
  263. i.e. every FLAC sample is a sync sample. The Sync
  264. Sample Box shall not be present as long as there are
  265. no samples other than FLAC samples in the same
  266. track. The sample_is_non_sync_sample field for FLAC
  267. samples shall be set to 0.
  268. 3.4 Basic Structure (informative)
  269. 3.4.1 Initial Movie
  270. This subclause shows a basic structure of the Movie Box as follows:
  271. +----+----+----+----+----+----+----+----+------------------------------+
  272. |moov| | | | | | | | Movie Box |
  273. +----+----+----+----+----+----+----+----+------------------------------+
  274. | |mvhd| | | | | | | Movie Header Box |
  275. +----+----+----+----+----+----+----+----+------------------------------+
  276. | |trak| | | | | | | Track Box |
  277. +----+----+----+----+----+----+----+----+------------------------------+
  278. | | |tkhd| | | | | | Track Header Box |
  279. +----+----+----+----+----+----+----+----+------------------------------+
  280. | | |edts|* | | | | | Edit Box |
  281. +----+----+----+----+----+----+----+----+------------------------------+
  282. | | | |elst|* | | | | Edit List Box |
  283. +----+----+----+----+----+----+----+----+------------------------------+
  284. | | |mdia| | | | | | Media Box |
  285. +----+----+----+----+----+----+----+----+------------------------------+
  286. | | | |mdhd| | | | | Media Header Box |
  287. +----+----+----+----+----+----+----+----+------------------------------+
  288. | | | |hdlr| | | | | Handler Reference Box |
  289. +----+----+----+----+----+----+----+----+------------------------------+
  290. | | | |minf| | | | | Media Information Box |
  291. +----+----+----+----+----+----+----+----+------------------------------+
  292. | | | | |smhd| | | | Sound Media Header Box |
  293. +----+----+----+----+----+----+----+----+------------------------------+
  294. | | | | |dinf| | | | Data Information Box |
  295. +----+----+----+----+----+----+----+----+------------------------------+
  296. | | | | | |dref| | | Data Reference Box |
  297. +----+----+----+----+----+----+----+----+------------------------------+
  298. | | | | | | |url | | DataEntryUrlBox |
  299. +----+----+----+----+----+----+ or +----+------------------------------+
  300. | | | | | | |urn | | DataEntryUrnBox |
  301. +----+----+----+----+----+----+----+----+------------------------------+
  302. | | | | |stbl| | | | Sample Table |
  303. +----+----+----+----+----+----+----+----+------------------------------+
  304. | | | | | |stsd| | | Sample Description Box |
  305. +----+----+----+----+----+----+----+----+------------------------------+
  306. | | | | | | |fLaC| | FLACSampleEntry |
  307. +----+----+----+----+----+----+----+----+------------------------------+
  308. | | | | | | | |dfLa| FLAC Specific Box |
  309. +----+----+----+----+----+----+----+----+------------------------------+
  310. | | | | | |stts| | | Decoding Time to Sample Box |
  311. +----+----+----+----+----+----+----+----+------------------------------+
  312. | | | | | |stsc| | | Sample To Chunk Box |
  313. +----+----+----+----+----+----+----+----+------------------------------+
  314. | | | | | |stsz| | | Sample Size Box |
  315. +----+----+----+----+----+ or +----+----+------------------------------+
  316. | | | | | |stz2| | | Compact Sample Size Box |
  317. +----+----+----+----+----+----+----+----+------------------------------+
  318. | | | | | |stco| | | Chunk Offset Box |
  319. +----+----+----+----+----+ or +----+----+------------------------------+
  320. | | | | | |co64| | | Chunk Large Offset Box |
  321. +----+----+----+----+----+----+----+----+------------------------------+
  322. | |mvex|* | | | | | | Movie Extends Box |
  323. +----+----+----+----+----+----+----+----+------------------------------+
  324. | | |trex|* | | | | | Track Extends Box |
  325. +----+----+----+----+----+----+----+----+------------------------------+
  326. Figure 1 - Basic structure of Movie Box
  327. It is strongly recommended that the order of boxes should
  328. follow the above structure. Boxes marked with an asterisk
  329. (*) may or may not be present depending on context. For
  330. most boxes listed above, the definition is as is defined
  331. in ISO/IEC 14496-12 [1]. The additional boxes and the
  332. additional requirements, restrictions and recommendations
  333. to the other boxes are described in this specification.
  334. 3.5 Example of Encapsulation (informative)
  335. [File]
  336. size = 17790
  337. [ftyp: File Type Box]
  338. position = 0
  339. size = 24
  340. major_brand = mp42 : MP4 version 2
  341. minor_version = 0
  342. compatible_brands
  343. brand[0] = mp42 : MP4 version 2
  344. brand[1] = isom : ISO Base Media file format
  345. [moov: Movie Box]
  346. position = 24
  347. size = 757
  348. [mvhd: Movie Header Box]
  349. position = 32
  350. size = 108
  351. version = 0
  352. flags = 0x000000
  353. creation_time = UTC 2014/12/12, 18:41:19
  354. modification_time = UTC 2014/12/12, 18:41:19
  355. timescale = 48000
  356. duration = 33600 (00:00:00.700)
  357. rate = 1.000000
  358. volume = 1.000000
  359. reserved = 0x0000
  360. reserved = 0x00000000
  361. reserved = 0x00000000
  362. transformation matrix
  363. | a, b, u | | 1.000000, 0.000000, 0.000000 |
  364. | c, d, v | = | 0.000000, 1.000000, 0.000000 |
  365. | x, y, w | | 0.000000, 0.000000, 1.000000 |
  366. pre_defined = 0x00000000
  367. pre_defined = 0x00000000
  368. pre_defined = 0x00000000
  369. pre_defined = 0x00000000
  370. pre_defined = 0x00000000
  371. pre_defined = 0x00000000
  372. next_track_ID = 2
  373. [iods: Object Descriptor Box]
  374. position = 140
  375. size = 33
  376. version = 0
  377. flags = 0x000000
  378. [tag = 0x10: MP4_IOD]
  379. expandableClassSize = 16
  380. ObjectDescriptorID = 1
  381. URL_Flag = 0
  382. includeInlineProfileLevelFlag = 0
  383. reserved = 0xf
  384. ODProfileLevelIndication = 0xff
  385. sceneProfileLevelIndication = 0xff
  386. audioProfileLevelIndication = 0xfe
  387. visualProfileLevelIndication = 0xff
  388. graphicsProfileLevelIndication = 0xff
  389. [tag = 0x0e: ES_ID_Inc]
  390. expandableClassSize = 4
  391. Track_ID = 1
  392. [trak: Track Box]
  393. position = 173
  394. size = 608
  395. [tkhd: Track Header Box]
  396. position = 181
  397. size = 92
  398. version = 0
  399. flags = 0x000007
  400. Track enabled
  401. Track in movie
  402. Track in preview
  403. creation_time = UTC 2014/12/12, 18:41:19
  404. modification_time = UTC 2014/12/12, 18:41:19
  405. track_ID = 1
  406. reserved = 0x00000000
  407. duration = 33600 (00:00:00.700)
  408. reserved = 0x00000000
  409. reserved = 0x00000000
  410. layer = 0
  411. alternate_group = 0
  412. volume = 1.000000
  413. reserved = 0x0000
  414. transformation matrix
  415. | a, b, u | | 1.000000, 0.000000, 0.000000 |
  416. | c, d, v | = | 0.000000, 1.000000, 0.000000 |
  417. | x, y, w | | 0.000000, 0.000000, 1.000000 |
  418. width = 0.000000
  419. height = 0.000000
  420. [mdia: Media Box]
  421. position = 273
  422. size = 472
  423. [mdhd: Media Header Box]
  424. position = 281
  425. size = 32
  426. version = 0
  427. flags = 0x000000
  428. creation_time = UTC 2014/12/12, 18:41:19
  429. modification_time = UTC 2014/12/12, 18:41:19
  430. timescale = 48000
  431. duration = 34560 (00:00:00.720)
  432. language = und
  433. pre_defined = 0x0000
  434. [hdlr: Handler Reference Box]
  435. position = 313
  436. size = 51
  437. version = 0
  438. flags = 0x000000
  439. pre_defined = 0x00000000
  440. handler_type = soun
  441. reserved = 0x00000000
  442. reserved = 0x00000000
  443. reserved = 0x00000000
  444. name = Xiph Audio Handler
  445. [minf: Media Information Box]
  446. position = 364
  447. size = 381
  448. [smhd: Sound Media Header Box]
  449. position = 372
  450. size = 16
  451. version = 0
  452. flags = 0x000000
  453. balance = 0.000000
  454. reserved = 0x0000
  455. [dinf: Data Information Box]
  456. position = 388
  457. size = 36
  458. [dref: Data Reference Box]
  459. position = 396
  460. size = 28
  461. version = 0
  462. flags = 0x000000
  463. entry_count = 1
  464. [url : Data Entry Url Box]
  465. position = 412
  466. size = 12
  467. version = 0
  468. flags = 0x000001
  469. location = in the same file
  470. [stbl: Sample Table Box]
  471. position = 424
  472. size = 321
  473. [stsd: Sample Description Box]
  474. position = 432
  475. size = 79
  476. version = 0
  477. flags = 0x000000
  478. entry_count = 1
  479. [fLaC: Audio Description]
  480. position = 448
  481. size = 63
  482. reserved = 0x000000000000
  483. data_reference_index = 1
  484. reserved = 0x0000
  485. reserved = 0x0000
  486. reserved = 0x00000000
  487. channelcount = 2
  488. samplesize = 16
  489. pre_defined = 0
  490. reserved = 0
  491. samplerate = 48000.000000
  492. [dfLa: FLAC Specific Box]
  493. position = 484
  494. size = 50
  495. version = 0
  496. flags = 0x000000
  497. [FLACMetadataBlock]
  498. LastMetadataBlockFlag = 1
  499. BlockType = 0
  500. Length = 34
  501. BlockData[34];
  502. [stts: Decoding Time to Sample Box]
  503. position = 492
  504. size = 24
  505. version = 0
  506. flags = 0x000000
  507. entry_count = 1
  508. entry[0]
  509. sample_count = 18
  510. sample_delta = 1920
  511. [stsc: Sample To Chunk Box]
  512. position = 516
  513. size = 40
  514. version = 0
  515. flags = 0x000000
  516. entry_count = 2
  517. entry[0]
  518. first_chunk = 1
  519. samples_per_chunk = 13
  520. sample_description_index = 1
  521. entry[1]
  522. first_chunk = 2
  523. samples_per_chunk = 5
  524. sample_description_index = 1
  525. [stsz: Sample Size Box]
  526. position = 556
  527. size = 92
  528. version = 0
  529. flags = 0x000000
  530. sample_size = 0 (variable)
  531. sample_count = 18
  532. entry_size[0] = 977
  533. entry_size[1] = 938
  534. entry_size[2] = 939
  535. entry_size[3] = 938
  536. entry_size[4] = 934
  537. entry_size[5] = 945
  538. entry_size[6] = 948
  539. entry_size[7] = 956
  540. entry_size[8] = 955
  541. entry_size[9] = 930
  542. entry_size[10] = 933
  543. entry_size[11] = 934
  544. entry_size[12] = 972
  545. entry_size[13] = 977
  546. entry_size[14] = 958
  547. entry_size[15] = 949
  548. entry_size[16] = 962
  549. entry_size[17] = 848
  550. [stco: Chunk Offset Box]
  551. position = 648
  552. size = 24
  553. version = 0
  554. flags = 0x000000
  555. entry_count = 2
  556. chunk_offset[0] = 686
  557. chunk_offset[1] = 12985
  558. [free: Free Space Box]
  559. position = 672
  560. size = 8
  561. [mdat: Media Data Box]
  562. position = 680
  563. size = 17001
  564. 4 Acknowledgements
  565. This spec draws heavily from the Opus-in-ISOBMFF specification
  566. work done by Yusuke Nakamura <muken.the.vfrmaniac |at| gmail.com>
  567. Thank you to Tim Terriberry, David Evans, and Yusuke Nakamura
  568. for valuable feedback. Thank you to Ralph Giles for editorial
  569. help.
  570. 5 Author Address
  571. Monty Montgomery <[email protected]>