Initial
This commit is contained in:
166
avifile/STRMHDR.CPP
Normal file
166
avifile/STRMHDR.CPP
Normal file
@@ -0,0 +1,166 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user