#include bool AVIListChunk::read(File &inFile) { String hdrlLiteral("hdrl"); String moviLiteral("movi"); String strlLiteral("strl"); String odmlLiteral("odml"); String recLiteral("rec "); String infoLiteral("INFO"); String listLiteral("LIST"); String listHeader; String chunkHeader; DWORD sizeHeader; listHeader.reserve(listLiteral.length()+1); chunkHeader.reserve(hdrlLiteral.length()+1); inFile.read(listHeader,listLiteral.length()); if(!(listHeader==listLiteral)) { ::OutputDebugString(String("[AVIListChunk::operator<<] expected 'LIST' found '")+listHeader+String("'.\n")); inFile-=listLiteral.length(); mChunkType=Unknown; return FALSE; } inFile.read(sizeHeader); // I know this is 4 bytes, just don't know if it's the size inFile.read(chunkHeader,hdrlLiteral.length()); if(hdrlLiteral==chunkHeader)mChunkType=Header; else if(moviLiteral==chunkHeader)mChunkType=Movie; else if(strlLiteral==chunkHeader)mChunkType=Stream; else if(infoLiteral==chunkHeader)mChunkType=Info; else if(recLiteral==chunkHeader)mChunkType=Record; else if(odmlLiteral==chunkHeader)mChunkType=OpenDML; else { ::OutputDebugString(String("[AVIListChunk::operator<<] '")+chunkHeader+String("' unexpected at this time.\n")); inFile-=hdrlLiteral.length(); mChunkType=Unknown; return FALSE; } return TRUE; } String AVIListChunk::toString(void)const { switch(mChunkType) { case Header : return "[AVIListChunk::toString]ChunkType=Header"; case Movie : return "[AVIListChunk::toString]ChunkType=Movie"; case Stream : return "[AVIListChunk::toString]ChunkType=Stream"; case Index : return "[AVIListChunk::toString]ChunkType=Index"; case Info : return "[AVIListChunk::toString]ChunkType=Info"; case Record : return "[AVIListChunk::toString]ChunkType=Record"; case OpenDML : return "[AVIListChunk::toString]ChunkType=OpenDML"; case Unknown : default : return "[AVIListChunk::toString]ChunkType=Unknown"; } }