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

167 lines
6.9 KiB
C++

#include <avifile/strmhdr.hpp>
#include <avifile/junkhdr.hpp>
#include <avifile/mischdr.hpp>
AVIStreamHeader &AVIStreamHeader::operator=(const AVIStreamHeader &someAVIStreamHeader)
{
fccType(someAVIStreamHeader.fccType());
fccHandler(someAVIStreamHeader.fccHandler());
flags(someAVIStreamHeader.flags());
priority(someAVIStreamHeader.priority());
language(someAVIStreamHeader.language());
initialFrames(someAVIStreamHeader.initialFrames());
scale(someAVIStreamHeader.scale());
rate(someAVIStreamHeader.rate());
start(someAVIStreamHeader.start());
length(someAVIStreamHeader.length());
suggestedBufferSize(someAVIStreamHeader.suggestedBufferSize());
quality(someAVIStreamHeader.quality());
sampleSize(someAVIStreamHeader.sampleSize());
frame(someAVIStreamHeader.frame());
(AVIFormatHeader&)*this=(AVIFormatHeader&)someAVIStreamHeader;
mAVIVedtHeader=someAVIStreamHeader.mAVIVedtHeader;
return *this;
}
WORD AVIStreamHeader::operator==(const AVIStreamHeader &someAVIStreamHeader)const
{
return (fccType()==someAVIStreamHeader.fccType()&&
fccHandler()==someAVIStreamHeader.fccHandler()&&
flags()==someAVIStreamHeader.flags()&&
priority()==someAVIStreamHeader.priority()&&
language()==someAVIStreamHeader.language()&&
initialFrames()==someAVIStreamHeader.initialFrames()&&
scale()==someAVIStreamHeader.scale()&&
rate()==someAVIStreamHeader.rate()&&
start()==someAVIStreamHeader.start()&&
length()==someAVIStreamHeader.length()&&
suggestedBufferSize()==someAVIStreamHeader.suggestedBufferSize()&&
quality()==someAVIStreamHeader.quality()&&
sampleSize()==someAVIStreamHeader.sampleSize()&&
frame()==someAVIStreamHeader.frame()&&
(AVIFormatHeader&)*this==(AVIFormatHeader&)someAVIStreamHeader&&
mAVIVedtHeader==someAVIStreamHeader.mAVIVedtHeader);
}
bool AVIStreamHeader::read(File &inFile)
{
AVIJunkHeader aviJunkHeader;
AVIMiscHeader aviMiscHeader;
String streamLiteral("strh");
String streamHeader;
Rect frameRect;
WORD rectLeft;
WORD rectTop;
WORD rectRight;
WORD rectBottom;
int headerLength;
streamHeader.reserve(streamLiteral.length()+1);
inFile.read(streamHeader,streamLiteral.length());
if(!(streamLiteral==streamHeader))
{
inFile-=streamLiteral.length();
return FALSE;
}
inFile.read(headerLength);
int startPos(inFile.tell());
inFile.read(AVIVFWStreamHeader::fccType);
inFile.read(AVIVFWStreamHeader::fccHandler);
inFile.read(AVIVFWStreamHeader::dwFlags);
inFile.read(AVIVFWStreamHeader::wPriority);
inFile.read(AVIVFWStreamHeader::wLanguage);
inFile.read(AVIVFWStreamHeader::dwInitialFrames);
inFile.read(AVIVFWStreamHeader::dwScale);
inFile.read(AVIVFWStreamHeader::dwRate);
inFile.read(AVIVFWStreamHeader::dwStart);
inFile.read(AVIVFWStreamHeader::dwLength);
inFile.read(AVIVFWStreamHeader::dwSuggestedBufferSize);
inFile.read(AVIVFWStreamHeader::dwQuality);
inFile.read(AVIVFWStreamHeader::dwSampleSize);
inFile.read(rectLeft);
inFile.read(rectTop);
inFile.read(rectRight);
inFile.read(rectBottom);
int endPos(inFile.tell());
inFile+=headerLength-(endPos-startPos);
frameRect.left(rectLeft);
frameRect.top(rectTop);
frameRect.right(rectRight);
frameRect.bottom(rectBottom);
frame(frameRect);
(AVIFormatHeader&)*this=StreamType(fccType());
((AVIFormatHeader&)*this).read(inFile);
mAVIVedtHeader.read(inFile);
mAVIAdditionalHeader.read(inFile);
mAVIIndexHeader.read(inFile);
while(aviMiscHeader.read(inFile));
aviJunkHeader.read(inFile);
return true;
}
bool AVIStreamHeader::write(File &outFile)
{
WORD rectLeft;
WORD rectTop;
WORD rectRight;
WORD rectBottom;
int sizeHeader;
outFile.write("strh");
sizeHeader=sizeof(AVIVFWStreamHeader::fccType)+
sizeof(AVIVFWStreamHeader::fccHandler)+
sizeof(AVIVFWStreamHeader::dwFlags)+
sizeof(AVIVFWStreamHeader::wPriority)+
sizeof(AVIVFWStreamHeader::wLanguage)+
sizeof(AVIVFWStreamHeader::dwInitialFrames)+
sizeof(AVIVFWStreamHeader::dwScale)+
sizeof(AVIVFWStreamHeader::dwRate)+
sizeof(AVIVFWStreamHeader::dwStart)+
sizeof(AVIVFWStreamHeader::dwLength)+
sizeof(AVIVFWStreamHeader::dwSuggestedBufferSize)+
sizeof(AVIVFWStreamHeader::dwQuality)+
sizeof(AVIVFWStreamHeader::dwSampleSize)+
sizeof(rectLeft)+
sizeof(rectTop)+
sizeof(rectRight)+
sizeof(rectBottom);
outFile.write(sizeHeader);
outFile.write(AVIVFWStreamHeader::fccType);
outFile.write(AVIVFWStreamHeader::fccHandler);
outFile.write(AVIVFWStreamHeader::dwFlags);
outFile.write(AVIVFWStreamHeader::wPriority);
outFile.write(AVIVFWStreamHeader::wLanguage);
outFile.write(AVIVFWStreamHeader::dwInitialFrames);
outFile.write(AVIVFWStreamHeader::dwScale);
outFile.write(AVIVFWStreamHeader::dwRate);
outFile.write(AVIVFWStreamHeader::dwStart);
outFile.write(AVIVFWStreamHeader::dwLength);
outFile.write(AVIVFWStreamHeader::dwSuggestedBufferSize);
outFile.write(AVIVFWStreamHeader::dwQuality);
outFile.write(AVIVFWStreamHeader::dwSampleSize);
outFile.write(rectLeft=frame().left());
outFile.write(rectTop=frame().top());
outFile.write(rectRight=frame().right());
outFile.write(rectBottom=frame().bottom());
return true;
}
String AVIStreamHeader::toString(void)const
{
String str;
str+=String("[AVIStreamHeader::toString]AVIVFWStreamHeader::fccType=")+FOURCC(AVIVFWStreamHeader::fccType).toString()+String("\n");
str+=String("[AVIStreamHeader::toString]AVIVFWStreamHeader::fccHandler=")+FOURCC(AVIVFWStreamHeader::fccHandler).toString()+String("\n");
str+=String("[AVIStreamHeader::toString]AVIVFWStreamHeader::dwFlags=")+String().fromInt(AVIVFWStreamHeader::dwFlags)+String("\n");
str+=String("[AVIStreamHeader::toString]AVIVFWStreamHeader::wPriority=")+String().fromInt(AVIVFWStreamHeader::wPriority)+String("\n");
str+=String("[AVIStreamHeader::toString]AVIVFWStreamHeader::wLanguage=")+String().fromInt(AVIVFWStreamHeader::wLanguage)+String("\n");
str+=String("[AVIStreamHeader::toString]AVIVFWStreamHeader::dwInitialFrames=")+String().fromInt(AVIVFWStreamHeader::dwInitialFrames)+String("\n");
str+=String("[AVIStreamHeader::toString]AVIVFWStreamHeader::dwScale=")+String().fromInt(AVIVFWStreamHeader::dwScale)+String("\n");
str+=String("[AVIStreamHeader::toString]AVIVFWStreamHeader::dwRate=")+String().fromInt(AVIVFWStreamHeader::dwRate)+String("\n");
str+=String("[AVIStreamHeader::toString]AVIVFWStreamHeader::dwStart=")+String().fromInt(AVIVFWStreamHeader::dwStart)+String("\n");
str+=String("[AVIStreamHeader::toString]AVIVFWStreamHeader::dwLength=")+String().fromInt(AVIVFWStreamHeader::dwLength)+String("\n");
str+=String("[AVIStreamHeader::toString]AVIVFWStreamHeader::dwSuggestedBufferSize=")+String().fromInt(AVIVFWStreamHeader::dwSuggestedBufferSize)+String("\n");
str+=String("[AVIStreamHeader::toString]AVIVFWStreamHeader::dwQuality=")+String().fromInt(AVIVFWStreamHeader::dwQuality)+String("\n");
str+=String("[AVIStreamHeader::toString]AVIVFWStreamHeader::dwSampleSize=")+String().fromInt(AVIVFWStreamHeader::dwSampleSize)+String("\n");
return str;
}