add: if (aAtomType == uint32('esds')) { return new ESDSAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize); }
context: AtomBase *getAtom(BPositionIO *pStream){	uint32 aAtomType;	uint32 aAtomSize;	uint64 aRealAtomSize;	off_t aStreamOffset;		aStreamOffset = pStream->Position();		// Get Size uint32	pStream->Read(&aAtomSize,4);	aAtomSize = B_BENDIAN_TO_HOST_INT32(aAtomSize);	// Get Type uint32	pStream->Read(&aAtomType,4);	aAtomType = B_BENDIAN_TO_HOST_INT32(aAtomType);	// Check for extended size	if (aAtomSize == 1) {		// Handle extended size		pStream->Read(&aRealAtomSize,4);		aRealAtomSize = B_BENDIAN_TO_HOST_INT64(aRealAtomSize);	} else if (aAtomSize == 0) {		// aAtomSize extends to end of file.		// TODO this is broken		aRealAtomSize = 0;	} else {		aRealAtomSize = aAtomSize;	}	if (aAtomType == uint32('moov')) {		return new MOOVAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}		if (aAtomType == uint32('mvhd')) {		return new MVHDAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('trak')) {		return new TRAKAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('tkhd')) {		return new TKHDAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('free')) {		return new FREEAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('skip')) {		return new SKIPAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('wide')) {		return new WIDEAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('mdat')) {		return new MDATAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('mdia')) {		return new MDIAAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('mdhd')) {		return new MDHDAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('hdlr')) {		return new HDLRAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('minf')) {		return new MINFAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('vmhd')) {		return new VMHDAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('smhd')) {		return new SMHDAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('dinf')) {		return new DINFAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('stbl')) {		return new STBLAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('stsd')) {		return new STSDAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('tmcd')) {		return new TMCDAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('stts')) {		return new STTSAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('pnot')) {		return new PNOTAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('stsc')) {		return new STSCAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('stco')) {		return new STCOAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('stss')) {		return new STSSAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('ctts')) {		return new CTTSAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('stsz')) {		return new STSZAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('stz2')) {		return new STZ2Atom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('ftyp')) {		return new FTYPAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('cmov')) {		return new CMOVAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('dcom')) {		return new DCOMAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	if (aAtomType == uint32('cmvd')) {		return new CMVDAtom(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}	return new AtomBase(pStream, aStreamOffset, aAtomType, aRealAtomSize);	}