📄 mp4atom.cpp
字号:
/* * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is MPEG4IP. * * The Initial Developer of the Original Code is Cisco Systems Inc. * Portions created by Cisco Systems Inc. are * Copyright (C) Cisco Systems Inc. 2001. All Rights Reserved. * * Contributor(s): * Dave Mackie dmackie@cisco.com * Alix Marchandise-Franquet alix@cisco.com */#include "mp4common.h"#include "atoms.h"MP4AtomInfo::MP4AtomInfo(const char* name, bool mandatory, bool onlyOne) { m_name = name; m_mandatory = mandatory; m_onlyOne = onlyOne; m_count = 0;}MP4Atom::MP4Atom(const char* type) { SetType(type); m_unknownType = FALSE; m_pFile = NULL; m_start = 0; m_end = 0; m_size = 0; m_pParentAtom = NULL; m_depth = 0xFF;}MP4Atom::~MP4Atom(){ u_int32_t i; for (i = 0; i < m_pProperties.Size(); i++) { delete m_pProperties[i]; } for (i = 0; i < m_pChildAtomInfos.Size(); i++) { delete m_pChildAtomInfos[i]; } for (i = 0; i < m_pChildAtoms.Size(); i++) { delete m_pChildAtoms[i]; }}MP4Atom* MP4Atom::CreateAtom(const char* type){ MP4Atom* pAtom = NULL; if (type == NULL) { pAtom = new MP4RootAtom(); } else { switch(type[0]) { case 'c': if (ATOMID(type) == ATOMID("ctts")) { pAtom = new MP4CttsAtom(); } else if (ATOMID(type) == ATOMID("co64")) { pAtom = new MP4Co64Atom(); } else if (ATOMID(type) == ATOMID("cprt")) { pAtom = new MP4CprtAtom(); } else if (ATOMID(type) == ATOMID("cpil")) { /* Apple iTunes */ pAtom = new MP4CpilAtom(); } else if (ATOMID(type) == ATOMID("covr")) { /* Apple iTunes */ pAtom = new MP4CovrAtom(); } break; case 'd': if (ATOMID(type) == ATOMID("dinf")) { pAtom = new MP4DinfAtom(); } else if (ATOMID(type) == ATOMID("dref")) { pAtom = new MP4DrefAtom(); } else if (ATOMID(type) == ATOMID("dpnd")) { pAtom = new MP4TrefTypeAtom(type); } else if (ATOMID(type) == ATOMID("dmed")) { pAtom = new MP4DmedAtom(); } else if (ATOMID(type) == ATOMID("dimm")) { pAtom = new MP4DimmAtom(); } else if (ATOMID(type) == ATOMID("drep")) { pAtom = new MP4DrepAtom(); } else if (ATOMID(type) == ATOMID("dmax")) { pAtom = new MP4DmaxAtom(); } else if (ATOMID(type) == ATOMID("data")) { /* Apple iTunes */ pAtom = new MP4DataAtom(); } else if (ATOMID(type) == ATOMID("disk")) { /* Apple iTunes */ pAtom = new MP4DiskAtom(); } break; case 'e': if (ATOMID(type) == ATOMID("esds")) { pAtom = new MP4EsdsAtom(); } else if (ATOMID(type) == ATOMID("edts")) { pAtom = new MP4EdtsAtom(); } else if (ATOMID(type) == ATOMID("elst")) { pAtom = new MP4ElstAtom(); } else if (ATOMID(type) == ATOMID("enca")) { pAtom = new MP4EncaAtom(); } else if (ATOMID(type) == ATOMID("encv")) { pAtom = new MP4EncvAtom(); } break; case 'f': if (ATOMID(type) == ATOMID("free")) { pAtom = new MP4FreeAtom(); } else if (ATOMID(type) == ATOMID("frma")) { pAtom = new MP4FrmaAtom(); } else if (ATOMID(type) == ATOMID("ftyp")) { pAtom = new MP4FtypAtom(); } break; case 'g': if (ATOMID(type) == ATOMID("gnre")) { /* Apple iTunes */ pAtom = new MP4GnreAtom(); } break; case 'h': if (ATOMID(type) == ATOMID("hdlr")) { pAtom = new MP4HdlrAtom(); } else if (ATOMID(type) == ATOMID("hmhd")) { pAtom = new MP4HmhdAtom(); } else if (ATOMID(type) == ATOMID("hint")) { pAtom = new MP4TrefTypeAtom(type); } else if (ATOMID(type) == ATOMID("hnti")) { pAtom = new MP4HntiAtom(); } else if (ATOMID(type) == ATOMID("hinf")) { pAtom = new MP4HinfAtom(); } break; case 'i': if (ATOMID(type) == ATOMID("iKMS")) { pAtom = new MP4IKMSAtom(); } else if (ATOMID(type) == ATOMID("iSFM")) { pAtom = new MP4ISFMAtom(); } else if (ATOMID(type) == ATOMID("iods")) { pAtom = new MP4IodsAtom(); } else if (ATOMID(type) == ATOMID("ipir")) { pAtom = new MP4TrefTypeAtom(type); } else if (ATOMID(type) == ATOMID("ilst")) { /* Apple iTunes */ pAtom = new MP4IlstAtom(); } break; case 'm': if (ATOMID(type) == ATOMID("mdia")) { pAtom = new MP4MdiaAtom(); } else if (ATOMID(type) == ATOMID("minf")) { pAtom = new MP4MinfAtom(); } else if (ATOMID(type) == ATOMID("mdhd")) { pAtom = new MP4MdhdAtom(); } else if (ATOMID(type) == ATOMID("mdat")) { pAtom = new MP4MdatAtom(); } else if (ATOMID(type) == ATOMID("moov")) { pAtom = new MP4MoovAtom(); } else if (ATOMID(type) == ATOMID("mvhd")) { pAtom = new MP4MvhdAtom(); } else if (ATOMID(type) == ATOMID("mpod")) { pAtom = new MP4TrefTypeAtom(type); } else if (ATOMID(type) == ATOMID("mp4a")) { pAtom = new MP4Mp4aAtom(); } else if (ATOMID(type) == ATOMID("mp4s")) { pAtom = new MP4Mp4sAtom(); } else if (ATOMID(type) == ATOMID("mp4v")) { pAtom = new MP4Mp4vAtom(); } else if (ATOMID(type) == ATOMID("moof")) { pAtom = new MP4MoofAtom(); } else if (ATOMID(type) == ATOMID("mfhd")) { pAtom = new MP4MfhdAtom(); } else if (ATOMID(type) == ATOMID("mvex")) { pAtom = new MP4MvexAtom(); } else if (ATOMID(type) == ATOMID("maxr")) { pAtom = new MP4MaxrAtom(); } else if (ATOMID(type) == ATOMID("meta")) { /* Apple iTunes */ pAtom = new MP4MetaAtom(); } else if (ATOMID(type) == ATOMID("mean")) { /* Apple iTunes */ pAtom = new MP4MeanAtom(); } break; case 'n': if (ATOMID(type) == ATOMID("nmhd")) { pAtom = new MP4NmhdAtom(); } else if (ATOMID(type) == ATOMID("nump")) { pAtom = new MP4NumpAtom(); } else if (ATOMID(type) == ATOMID("name")) { pAtom = new MP4NameAtom(); } break; case 'p': if (ATOMID(type) == ATOMID("pmax")) { pAtom = new MP4PmaxAtom(); } else if (ATOMID(type) == ATOMID("payt")) { pAtom = new MP4PaytAtom(); } break; case 'r': if (ATOMID(type) == ATOMID("rtp ")) { pAtom = new MP4RtpAtom(); } break; case 's': if (ATOMID(type) == ATOMID("schi")) { pAtom = new MP4SchiAtom(); } else if (ATOMID(type) == ATOMID("schm")) { pAtom = new MP4SchmAtom(); } else if (ATOMID(type) == ATOMID("sinf")) { pAtom = new MP4SinfAtom(); } else if (ATOMID(type) == ATOMID("stbl")) { pAtom = new MP4StblAtom(); } else if (ATOMID(type) == ATOMID("stsd")) { pAtom = new MP4StsdAtom(); } else if (ATOMID(type) == ATOMID("stts")) { pAtom = new MP4SttsAtom(); } else if (ATOMID(type) == ATOMID("stsz")) { pAtom = new MP4StszAtom(); } else if (ATOMID(type) == ATOMID("stsc")) { pAtom = new MP4StscAtom(); } else if (ATOMID(type) == ATOMID("stco")) { pAtom = new MP4StcoAtom(); } else if (ATOMID(type) == ATOMID("stss")) { pAtom = new MP4StssAtom(); } else if (ATOMID(type) == ATOMID("stsh")) { pAtom = new MP4StshAtom(); } else if (ATOMID(type) == ATOMID("stdp")) { pAtom = new MP4StdpAtom(); } else if (ATOMID(type) == ATOMID("smhd")) { pAtom = new MP4SmhdAtom(); } else if (ATOMID(type) == ATOMID("sdp ")) { pAtom = new MP4SdpAtom(); } else if (ATOMID(type) == ATOMID("snro")) { pAtom = new MP4SnroAtom(); } else if (ATOMID(type) == ATOMID("sync")) { pAtom = new MP4TrefTypeAtom(type); } else if (ATOMID(type) == ATOMID("skip")) { pAtom = new MP4FreeAtom(); pAtom->SetType("skip"); } break; case 't': if (ATOMID(type) == ATOMID("trak")) { pAtom = new MP4TrakAtom(); } else if (ATOMID(type) == ATOMID("tkhd")) { pAtom = new MP4TkhdAtom(); } else if (ATOMID(type) == ATOMID("tref")) { pAtom = new MP4TrefAtom(); } else if (ATOMID(type) == ATOMID("traf")) { pAtom = new MP4TrafAtom(); } else if (ATOMID(type) == ATOMID("tfhd")) { pAtom = new MP4TfhdAtom(); } else if (ATOMID(type) == ATOMID("trex")) { pAtom = new MP4TrexAtom(); } else if (ATOMID(type) == ATOMID("trun")) { pAtom = new MP4TrunAtom(); } else if (ATOMID(type) == ATOMID("tmin")) { pAtom = new MP4TminAtom(); } else if (ATOMID(type) == ATOMID("tmax")) { pAtom = new MP4TmaxAtom(); } else if (ATOMID(type) == ATOMID("trpy")) { pAtom = new MP4TrpyAtom(); } else if (ATOMID(type) == ATOMID("tpyl")) { pAtom = new MP4TpylAtom(); } else if (ATOMID(type) == ATOMID("tims")) { pAtom = new MP4TimsAtom(); } else if (ATOMID(type) == ATOMID("tsro")) { pAtom = new MP4TsroAtom(); } else if (ATOMID(type) == ATOMID("trkn")) { /* Apple iTunes */ pAtom = new MP4TrknAtom(); } else if (ATOMID(type) == ATOMID("tmpo")) { /* Apple iTunes */ pAtom = new MP4TmpoAtom(); } break; case 'u': if (ATOMID(type) == ATOMID("udta")) { pAtom = new MP4UdtaAtom(); } else if (ATOMID(type) == ATOMID("url ")) { pAtom = new MP4UrlAtom(); } else if (ATOMID(type) == ATOMID("urn ")) { pAtom = new MP4UrnAtom(); } break; case 'v': if (ATOMID(type) == ATOMID("vmhd")) { pAtom = new MP4VmhdAtom(); } break; case '
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -