#include AVIMiscHeader::AVIMiscHeader(void) { mMiscHeaders.insert(&String("ISFT")); mMiscHeaders.insert(&String("strn")); } AVIMiscHeader::~AVIMiscHeader() { } bool AVIMiscHeader::read(File &inFile) { String miscLiteral("xxxx"); String miscHeader; DWORD miscCount; WORD returnCode; MiscType miscType; returnCode=FALSE; miscHeader.reserve(miscLiteral.length()+1); inFile.read(miscHeader,miscLiteral.length()); miscType=miscEvaluate(miscHeader); switch(miscType) { case MiscSTRN : case MiscISFT : inFile.read(miscCount); inFile+=miscCount; inFile.read(miscHeader,5); inFile.read(miscCount); inFile+=miscCount; returnCode=TRUE; break; case MiscUnknown : // another level will handle this, just put the string back into the read buffer // ::OutputDebugString(String("[AVIMiscHeader::operator<<] Don't know how to handle header '")+miscHeader+String("'\n")); inFile-=miscLiteral.length(); break; } return returnCode; } AVIMiscHeader::MiscType AVIMiscHeader::miscEvaluate(const String &headerLiteral) { for(int headerIndex=0;headerIndex