atoms.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:7k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is MPEG4IP.
  13.  * 
  14.  * The Initial Developer of the Original Code is Cisco Systems Inc.
  15.  * Portions created by Cisco Systems Inc. are
  16.  * Copyright (C) Cisco Systems Inc. 2001.  All Rights Reserved.
  17.  * 
  18.  * Contributor(s): 
  19.  * Dave Mackie dmackie@cisco.com
  20.  */
  21. #ifndef __MP4_ATOMS_INCLUDED__
  22. #define __MP4_ATOMS_INCLUDED__
  23. class MP4RootAtom : public MP4Atom {
  24. public:
  25. MP4RootAtom();
  26. void BeginWrite(bool use64 = false);
  27. void Write();
  28. void FinishWrite(bool use64 = false);
  29. void BeginOptimalWrite();
  30. void FinishOptimalWrite();
  31. protected:
  32. u_int32_t GetLastMdatIndex();
  33. void WriteAtomType(const char* type, bool onlyOne);
  34. };
  35. class MP4FtypAtom : public MP4Atom {
  36. public:
  37. MP4FtypAtom();
  38. void Generate();
  39. void Read();
  40. };
  41. class MP4MdatAtom : public MP4Atom {
  42. public:
  43. MP4MdatAtom();
  44. void Read();
  45. void Write();
  46. };
  47. class MP4MoovAtom : public MP4Atom {
  48. public:
  49. MP4MoovAtom();
  50. };
  51. class MP4MvhdAtom : public MP4Atom {
  52. public:
  53. MP4MvhdAtom();
  54. void Generate();
  55. void Read();
  56. protected:
  57. void AddProperties(u_int8_t version);
  58. };
  59. class MP4IodsAtom : public MP4Atom {
  60. public:
  61. MP4IodsAtom();
  62. };
  63. class MP4TrakAtom : public MP4Atom {
  64. public:
  65. MP4TrakAtom();
  66. };
  67. class MP4TkhdAtom : public MP4Atom {
  68. public:
  69. MP4TkhdAtom();
  70. void Generate();
  71. void Read();
  72. protected:
  73. void AddProperties(u_int8_t version);
  74. };
  75. class MP4TrefAtom : public MP4Atom {
  76. public:
  77. MP4TrefAtom();
  78. };
  79. class MP4TrefTypeAtom : public MP4Atom {
  80. public:
  81. MP4TrefTypeAtom(const char* type);
  82. void Read();
  83. };
  84. class MP4MdiaAtom : public MP4Atom {
  85. public:
  86. MP4MdiaAtom();
  87. };
  88. class MP4MdhdAtom : public MP4Atom {
  89. public:
  90. MP4MdhdAtom();
  91. void Generate();
  92. void Read();
  93. protected:
  94. void AddProperties(u_int8_t version);
  95. };
  96. class MP4HdlrAtom : public MP4Atom {
  97. public:
  98. MP4HdlrAtom();
  99. void Read();
  100. };
  101. class MP4MinfAtom : public MP4Atom {
  102. public:
  103. MP4MinfAtom();
  104. };
  105. class MP4VmhdAtom : public MP4Atom {
  106. public:
  107. MP4VmhdAtom();
  108. void Generate();
  109. };
  110. class MP4SmhdAtom : public MP4Atom {
  111. public:
  112. MP4SmhdAtom();
  113. };
  114. class MP4HmhdAtom : public MP4Atom {
  115. public:
  116. MP4HmhdAtom();
  117. };
  118. class MP4NmhdAtom : public MP4Atom {
  119. public:
  120. MP4NmhdAtom();
  121. };
  122. class MP4DinfAtom : public MP4Atom {
  123. public:
  124. MP4DinfAtom();
  125. };
  126. class MP4DrefAtom : public MP4Atom {
  127. public:
  128. MP4DrefAtom();
  129. void Read();
  130. };
  131. class MP4UrlAtom : public MP4Atom {
  132. public:
  133. MP4UrlAtom();
  134. void Read();
  135. void Write();
  136. };
  137. class MP4UrnAtom : public MP4Atom {
  138. public:
  139. MP4UrnAtom();
  140. void Read();
  141. };
  142. class MP4StblAtom : public MP4Atom {
  143. public:
  144. MP4StblAtom();
  145. void Generate();
  146. };
  147. class MP4StsdAtom : public MP4Atom {
  148. public:
  149. MP4StsdAtom();
  150. void Read();
  151. };
  152. class MP4Mp4aAtom : public MP4Atom {
  153. public:
  154. MP4Mp4aAtom();
  155. void Generate();
  156. };
  157. class MP4Mp4sAtom : public MP4Atom {
  158. public:
  159. MP4Mp4sAtom();
  160. void Generate();
  161. };
  162. class MP4Mp4vAtom : public MP4Atom {
  163. public:
  164. MP4Mp4vAtom();
  165. void Generate();
  166. };
  167. class MP4EsdsAtom : public MP4Atom {
  168. public:
  169. MP4EsdsAtom();
  170. };
  171. class MP4SttsAtom : public MP4Atom {
  172. public:
  173. MP4SttsAtom();
  174. };
  175. class MP4CttsAtom : public MP4Atom {
  176. public:
  177. MP4CttsAtom();
  178. };
  179. class MP4StszAtom : public MP4Atom {
  180. public:
  181. MP4StszAtom();
  182. void Read();
  183. void Write();
  184. };
  185. class MP4StscAtom : public MP4Atom {
  186. public:
  187. MP4StscAtom();
  188. void Read();
  189. };
  190. class MP4StcoAtom : public MP4Atom {
  191. public:
  192. MP4StcoAtom();
  193. };
  194. class MP4Co64Atom : public MP4Atom {
  195. public:
  196. MP4Co64Atom();
  197. };
  198. class MP4StssAtom : public MP4Atom {
  199. public:
  200. MP4StssAtom();
  201. };
  202. class MP4StshAtom : public MP4Atom {
  203. public:
  204. MP4StshAtom();
  205. };
  206. class MP4StdpAtom : public MP4Atom {
  207. public:
  208. MP4StdpAtom();
  209. void Read();
  210. };
  211. class MP4EdtsAtom : public MP4Atom {
  212. public:
  213. MP4EdtsAtom();
  214. };
  215. class MP4ElstAtom : public MP4Atom {
  216. public:
  217. MP4ElstAtom();
  218. void Generate();
  219. void Read();
  220. protected:
  221. void AddProperties(u_int8_t version);
  222. };
  223. class MP4UdtaAtom : public MP4Atom {
  224. public:
  225. MP4UdtaAtom();
  226. void Read();
  227. };
  228. class MP4CprtAtom : public MP4Atom {
  229. public:
  230. MP4CprtAtom();
  231. };
  232. class MP4HntiAtom : public MP4Atom {
  233. public:
  234. MP4HntiAtom();
  235. void Read();
  236. };
  237. class MP4RtpAtom : public MP4Atom {
  238. public:
  239. MP4RtpAtom();
  240. void Generate();
  241. void Read();
  242. void Write();
  243. protected:
  244. void AddPropertiesStsdType();
  245. void AddPropertiesHntiType();
  246. void GenerateStsdType();
  247. void GenerateHntiType();
  248. void ReadStsdType();
  249. void ReadHntiType();
  250. void WriteHntiType();
  251. };
  252. class MP4TimsAtom : public MP4Atom {
  253. public:
  254. MP4TimsAtom();
  255. };
  256. class MP4TsroAtom : public MP4Atom {
  257. public:
  258. MP4TsroAtom();
  259. };
  260. class MP4SnroAtom : public MP4Atom {
  261. public:
  262. MP4SnroAtom();
  263. };
  264. class MP4SdpAtom : public MP4Atom {
  265. public:
  266. MP4SdpAtom();
  267. void Read();
  268. void Write();
  269. };
  270. class MP4HinfAtom : public MP4Atom {
  271. public:
  272. MP4HinfAtom();
  273. void Generate();
  274. };
  275. class MP4TrpyAtom : public MP4Atom {
  276. public:
  277. MP4TrpyAtom();
  278. };
  279. class MP4NumpAtom : public MP4Atom {
  280. public:
  281. MP4NumpAtom();
  282. };
  283. class MP4TpylAtom : public MP4Atom {
  284. public:
  285. MP4TpylAtom();
  286. };
  287. class MP4MaxrAtom : public MP4Atom {
  288. public:
  289. MP4MaxrAtom();
  290. };
  291. class MP4DmedAtom : public MP4Atom {
  292. public:
  293. MP4DmedAtom();
  294. };
  295. class MP4DimmAtom : public MP4Atom {
  296. public:
  297. MP4DimmAtom();
  298. };
  299. class MP4DrepAtom : public MP4Atom {
  300. public:
  301. MP4DrepAtom();
  302. };
  303. class MP4TminAtom : public MP4Atom {
  304. public:
  305. MP4TminAtom();
  306. };
  307. class MP4TmaxAtom : public MP4Atom {
  308. public:
  309. MP4TmaxAtom();
  310. };
  311. class MP4PmaxAtom : public MP4Atom {
  312. public:
  313. MP4PmaxAtom();
  314. };
  315. class MP4DmaxAtom : public MP4Atom {
  316. public:
  317. MP4DmaxAtom();
  318. };
  319. class MP4PaytAtom : public MP4Atom {
  320. public:
  321. MP4PaytAtom();
  322. };
  323. class MP4MvexAtom : public MP4Atom {
  324. public:
  325. MP4MvexAtom();
  326. };
  327. class MP4TrexAtom : public MP4Atom {
  328. public:
  329. MP4TrexAtom();
  330. };
  331. class MP4MoofAtom : public MP4Atom {
  332. public:
  333. MP4MoofAtom();
  334. };
  335. class MP4MfhdAtom : public MP4Atom {
  336. public:
  337. MP4MfhdAtom();
  338. };
  339. class MP4TrafAtom : public MP4Atom {
  340. public:
  341. MP4TrafAtom();
  342. };
  343. class MP4TfhdAtom : public MP4Atom {
  344. public:
  345. MP4TfhdAtom();
  346. void Read();
  347. protected:
  348. void AddProperties(u_int32_t flags);
  349. };
  350. class MP4TrunAtom : public MP4Atom {
  351. public:
  352. MP4TrunAtom();
  353. void Read();
  354. protected:
  355. void AddProperties(u_int32_t flags);
  356. };
  357. class MP4FreeAtom : public MP4Atom {
  358. public:
  359. MP4FreeAtom();
  360. void Read();
  361. void Write();
  362. };
  363. #endif /* __MP4_ATOMS_INCLUDED__ */