Files
Work/avifile/LSTCHNK.CPP
2024-08-07 09:12:07 -04:00

68 lines
2.0 KiB
C++

#include <avifile/lstchnk.hpp>
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";
}
}