68 lines
2.0 KiB
C++
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";
|
|
}
|
|
}
|
|
|