ROADMAP.txt 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. 1. Complete known box types for BMFF, MOV/QTFF, QTIF, 3GPP/3GPP2, JP2, JPM, DVB and DASH
  2. 2. Find and implement the optimal reusable API for BmffReader/BmffWriter for all expected and potential uses (seeking specific atoms, copying with changes or reordering)
  3. 2.1. BmffReader and BmffWriter need options flags
  4. 2.2. BmffReader should handle both sequential and seekable streams -- Sequential handling needs an event model!
  5. 2.3. Need an equivalent of XmlDocument for Bmff files -- As output from BmffReader and input to BmffWriter.
  6. 3. Implement 'moov' compression (decompression is already supported)
  7. 3.1. Determine the best way to expose the compressed 'moov' through BmffReader -- an AutoDecompress option flag?
  8. 4. Add more XML comments for design-time support!!!
  9. 5. Consider converting public unsigned properties to signed of a larger size with range checking for CLS compliance (ugly, but what can you do?)
  10. 5.1 What the heck do we do with ulongs?
  11. 6. Do intensive performance testing.
  12. 7. Add Unit Testing comparing input and output to ensure bit-identical serialization and deserialization
  13. Remaining Unsupported JP2 Box Types: (7)
  14. bpcc - Bits Per Component Box
  15. pclr - Palette Box
  16. cmap - Component Mapping Box
  17. cdef - Channel Definition Box
  18. resc - Capture Resolution Box
  19. resd - Dgefault Display Resolution Box
  20. jp2i - Intellectual Property Box
  21. Remaining Unsupported JPX Box Types: (24)
  22. rreq - Reader Requirements Box
  23. jpch - Codestream Header Box
  24. jplh - Compositing Layer Header Box
  25. cgrp - Colour Group Box
  26. opct - Opacity Box
  27. creg - Codestream Registration Box
  28. dtbl - Data Reference Box
  29. ftbl - Fragment Table Box
  30. flst - Fragment List Box
  31. cref - Cross-Reference Box
  32. comp - Composition Box
  33. copt - Composition Options Box
  34. inst - Instruction Set Box
  35. asoc - Association Box
  36. nlst - Number List Box
  37. lbl - Label Box
  38. bfil - Binary Filter Box
  39. drep - Desired Reproductions Box
  40. gtso - Graphics Technology Standard Output Box
  41. roid - ROI Description Box
  42. chck - Digital Signature Box
  43. mp7t - MPEG-7 Textual Box (ISO/IEC 15938)
  44. mp7b - MPEG-7 Binary Box (BIM Encoded ISO/IEC 15938)
  45. ipr - Intellectual Property Rights Box
  46. Remaining Unsupported BMFF Box Types: (28 + 4)
  47. xml - XML Box
  48. nmhd - Null Media Header Box
  49. bxml - Binary XML Box
  50. cprt - Copyright Box
  51. fecr - FEC Reservoir Box [Forward Error Correction]
  52. fpar - File Partition Box
  53. frma - Original Format Box
  54. gitn - Group Id To Name Box
  55. iinf - Item Information Box
  56. iloc - Item Location Box
  57. imif - IPMP Info Box
  58. ipmc - IPMP Control Box
  59. mere - Metabox Relation Box
  60. padb - Padding Bits Box
  61. pdin - Progressive Download Information Box
  62. pitm - Primary Item Box
  63. sbgp - Sample To Group Box
  64. schi - Scheme Information Box
  65. schm - Scheme Type Box
  66. segr - FD Session Group Box [File Delivery]
  67. sgpd - Sample Group Description Box
  68. stdp - Degradation Priority Box
  69. stsh - Shadow Sync Sample Box
  70. subs - Sub Sample Information Box
  71. tsel - Track Selection Box
  72. ???? - Various stsd child boxes. These are odd, one of four types is determined by moov\trak\mdia\hdlr HandlerType
  73. Remaining Unsupported QTFF Atom Types: (21)
  74. clip - Clipping Atom
  75. crgn - Clipping Region Atom
  76. ctab - Color Table Atom
  77. elng - Extended Language Tag Atom
  78. gmhd - Base Media Information Header Atom
  79. gmin - Base Media Information Atom
  80. imap - Track Input Map Atom
  81. kmat - Compressed Matte Atom
  82. load - Track Load Settings Atom
  83. matt - Track Matte Atom
  84. obid - Object Id Atom
  85. pnot - Preview Atom
  86. rdrf - Data Reference Atom
  87. rmcd - Component Detect Atom
  88. rmcs - Cpu Speed Atom
  89. rmda - Reference Movie Descriptor Atom
  90. rmdr - Data Rate Atom
  91. rmqu - Quality Atom
  92. rmra - Reference Movie Atom
  93. rmvc - Version Check Atom
  94. tcmi - Timecode Media Information Atom
  95. Remaining Unsupported QTIF Box Types:
  96. To Be Determined
  97. Remaining Unsupported JPM Box Types:
  98. To Be Determined
  99. Remaining Unsupported DVB Box Types:
  100. To Be Determined
  101. Remaining Unsupported DASH Box Types:
  102. saiz - Sample Auxiliary Information Sizes Box
  103. saio - Sample Auxiliary Information Offsets Box
  104. leva - Level Assignment Box
  105. tfdt - Track Fragment Base Media Decode Time Box
  106. styp - Segment Type Box
  107. sidx - Segment Index Box
  108. ssix - Subsegment Index Box
  109. prft - Producer Reference Time Box
  110. trun * Extends Track Run Box with new version for signed sample_composition_time_offset
  111. Unknown boxes we've encountered but haven't supported yet:
  112. uuid(18020d3a-e90a-1541-b376-4bca41ce0e71) Adobe?
  113. uuid(cc2cc947-a1d1-8145-b904-38bb5467713b) Adobe?
  114. uuid(74a745bc-50dd-c64e-a9f6-f3a137f47e90) Adobe?
  115. uuid(efc5c8d7-1f95-b243-8757-042500f538e8) Adobe?
  116. uuid(be7acfcb-97a9-42e8-9c71-999491e3afac) Adobe eXtensible Metadata Platform (XMP) Box
  117. Sample Table Description Box ('stsd') children: (These will just be a BoxAttribute on one of four possible types)
  118. Video Sample Descriptions:
  119. cvid - Cinepak
  120. jpeg - JPEG
  121. smc - Graphics
  122. rle - Animation
  123. rpza - Apple Video
  124. kpcd - Kodak Photo CD
  125. png - Portable Network Graphics
  126. mjpa - Motion-JPEG (Format A)
  127. mjpb - Motion-JPEG (Format B)
  128. SVQ1 - Sorenson video, version 1
  129. SVQ3 - Sorenson video, version 3
  130. mp4v - MPEG-4 video
  131. avc1 - H.264 video
  132. dvc - NTSC DV-25 video
  133. dvcp - PAL DV-25 video
  134. gif - CompuServe Graphics Interchange Format
  135. h263 - H.263 video
  136. tiff - Tagged Image File Format
  137. raw - Uncompressed RGB
  138. 2vuY - Uncompressed Y'CbCr; 8-bit-per-component 4:2:2
  139. yuv2 - Uncompressed Y'CbCr; 8-bit-per-component 4:2:2
  140. v308 - Uncompressed Y'CbCr; 8-bit-per-component 4:4:4
  141. v408 - Uncompressed Y'CbCr; 8-bit-per-component 4:4:4:4
  142. v216 - Uncompressed Y'CbCr; 10, 12, 14 or 16 bit-per-component 4:2:2
  143. v410 - Uncompressed Y'CbCr; 10-bit-per-component 4:4:4
  144. v210 - Uncompressed Y'CbCr; 10-bit-per-component 4:2:2
  145. Video Sample Description Extensions:
  146. gama - Gamma Level
  147. fiel - Field Handling
  148. mjqt - Default Quantization Table (for Motion-JPEG)
  149. mjht - Default Huffman Table (for Motion JPEG)
  150. esds - Elementary Stream Descriptor Atom
  151. avcC - AVCConfigurationBox (h.264)
  152. pasp - Pixel Aspect Ratio
  153. colr - Color Parameters
  154. clap - Clean Aperture
  155. Sound Sample Descriptions:
  156. 0x00000000 - Not Specified (This may present problems if we implement it)
  157. NONE - Not Compressed (raw or twos format
  158. raw - Uncompressed 8-bit offset format (0-255, 128 is silence)
  159. twos - Uncompressed 8-bit or 16-bit two's-complement (-128 to 127 or -32768 to 32767, 0 silence)
  160. sowt - little-endian version of twos
  161. MAC3 - MACE 3:1
  162. MAC6 - MACE 6:1
  163. ima4 - IMA 4:1
  164. fl32 - 32-bit floating point
  165. fl64 - 64-bit floating point
  166. in24 - 24-bit integer
  167. in32 - 32-bit integer
  168. ulaw - uLaw 2:1
  169. alaw - uLaw 2:1
  170. 0x6D730002 - Microsoft ADPCM-ACM code 2
  171. 0x6D730011 - DVI/Intel IMAADPCM-ACM code 17
  172. dvca - DV Audio
  173. QDMC - QDesign music
  174. QDM2 - QDesign music version 2
  175. Qclp - QUALCOMM PureVoice
  176. 0x6D730055 - MPEG-1 layer 3, CBR only
  177. .mp3 - MPEG-1 layer 3, CBR & VBR
  178. mp4a - MPEG-4, Advanced Audio Coding (AAC)
  179. ac-3 - Digital Audio Compression Standard (AC-3, Enhanced AC-3)
  180. User Data Atoms: (Most of these are a single type with multiple BoxAttributes)
  181. ©com - Name of composer
  182. ©cpy - Copyright Statement
  183. ©day - Date the movie content was created
  184. ©dir - Name of movie's director
  185. ©ed1 - Edit date and description
  186. ©ed2
  187. ©ed3
  188. ©ed4
  189. ©ed5
  190. ©ed6
  191. ©ed7
  192. ©ed8
  193. ©ed9
  194. ©fmt - Indicatin of movie format (computer-generated, digitized, and so on)
  195. ©inf - Information about the movie
  196. ©isr - ISRC code
  197. ©lab - Name of record label
  198. ©lal - URL of record label
  199. ©mak - Name of file creator or maker
  200. ©mal - URL of file creator or maker
  201. ©nak - Title keywords of the content
  202. ©nam - Title of the content
  203. ©pdk - Keywords for producer
  204. ©phg - Recording copyright statement
  205. ©prd - Name of producer
  206. ©prf - Names of performers
  207. ©prk - Keywords of main artist and performer
  208. ©prl - URL of main artist and performer
  209. ©req - Special hardware and software requirements
  210. ©snk - Subtitle keywords of the content
  211. ©snm - Subtitle of content
  212. ©src - Credits for those who provided movie source content
  213. ©swf - Name of songwriter
  214. ©swk - Keywords of songwriter
  215. ©swr - Name and version number of the software (or hardware) that generated this movie
  216. ©wrt - Name of movie's writer
  217. AllF - Play all frames—byte indicating that all frames of video should be played, regardless of timing
  218. hinf - Hint track information
  219. hnti * Hint info atom -- data used for real-time streaming of a movie or track.
  220. name - Name of object
  221. ptv - Print To Video (Full Screen Mode)
  222. tnam - Localized track name optionally present in Track userdata
  223. LOOP - Long integer indicating looping style. Not present unless movie is set to loop. 0 for normal, 1 for palindromic.
  224. Sel0 - Play selection only -- byte indicating that only the selected area of the movie should be played
  225. WLOC - Default window location for movie -- two 16-bit values, {x,y}