#ifndef _AVIFILE_ICINFO_HPP_ #define _AVIFILE_ICINFO_HPP_ #ifndef _COMMON_STRING_HPP_ #include #endif #ifndef _AVIFILE_FOURCC_HPP_ #include #endif #ifndef _AVIFILE_FOURCC_HPP_ #include #endif #ifndef _COM_BSTRING_HPP_ #include #endif class CompressorInfo : private ICINFO { public: CompressorInfo(); virtual ~CompressorInfo(); DWORD size(void)const; FOURCC fccType(void)const; FOURCC fccHandler(void)const; DWORD flags(void)const; bool hasCompressFrames(void)const; bool hasCrunch(void)const; bool hasDraw(void)const; bool hasFastTemporalCompression(void)const; bool hasFastTemporalDecompression(void)const; bool hasQuality(void)const; bool hasTemporal(void)const; String stringFlags(void)const; DWORD version(void)const; DWORD versionICM(void)const; String name(void)const; String description(void)const; String driver(void)const; String toString(void)const; ICINFO &getICINFO(void); private: }; inline CompressorInfo::CompressorInfo() { ::memset(&(ICINFO&)*this,0,sizeof(ICINFO)); ICINFO::dwSize=sizeof(ICINFO); } inline CompressorInfo::~CompressorInfo() { } inline FOURCC CompressorInfo::fccType(void)const { return ICINFO::fccType; } inline FOURCC CompressorInfo::fccHandler(void)const { return ICINFO::fccHandler; } inline DWORD CompressorInfo::flags(void)const { return ICINFO::dwFlags; } inline bool CompressorInfo::hasCompressFrames(void)const { return flags()&VIDCF_COMPRESSFRAMES; } inline bool CompressorInfo::hasCrunch(void)const { return flags()&VIDCF_CRUNCH; } inline bool CompressorInfo::hasDraw(void)const { return flags()&VIDCF_DRAW; } inline bool CompressorInfo::hasFastTemporalCompression(void)const { return flags()&VIDCF_FASTTEMPORALC; } inline bool CompressorInfo::hasFastTemporalDecompression(void)const { return flags()&VIDCF_FASTTEMPORALD; } inline bool CompressorInfo::hasQuality(void)const { return flags()&VIDCF_QUALITY; } inline bool CompressorInfo::hasTemporal(void)const { return flags()&VIDCF_TEMPORAL; } inline String CompressorInfo::stringFlags(void)const { String string; if(hasCompressFrames())string+="COMPRESSFRAMES "; if(hasCrunch())string+="CRUNCH "; if(hasDraw())string+="DRAW "; if(hasFastTemporalCompression())string+="FASTTEMPORALC "; if(hasFastTemporalDecompression())string+="FASTTEMPORALD "; if(hasQuality())string+="QUALITY "; if(hasTemporal())string+="TEMPORAL "; return string; } inline DWORD CompressorInfo::version(void)const { return ICINFO::dwVersion; } inline DWORD CompressorInfo::versionICM(void)const { return ICINFO::dwVersionICM; } inline String CompressorInfo::name(void)const { return BString(ICINFO::szName).toString(); } inline String CompressorInfo::description(void)const { return BString(ICINFO::szDescription).toString(); } inline String CompressorInfo::driver(void)const { return BString(ICINFO::szDriver).toString(); } inline DWORD CompressorInfo::size(void)const { return ICINFO::dwSize; } inline ICINFO &CompressorInfo::getICINFO(void) { return (ICINFO&)*this; } inline String CompressorInfo::toString(void)const { String string; string+=String("[CompressorInfo::toString]fccType=")+fccType().toString()+String("\n"); string+=String("[CompressorInfo::toString]fccHandler=")+fccHandler().toString()+String("\n"); string+=String("[CompressorInfo::toString]flags=")+stringFlags()+String("\n"); string+=String("[CompressorInfo::toString]version=")+String().fromInt(version())+String("\n"); string+=String("[CompressorInfo::toString]versionICM=")+String().fromInt(versionICM())+String("\n"); string+=String("[CompressorInfo::toString]name=")+name()+String("\n"); string+=String("[CompressorInfo::toString]description=")+description()+String("\n"); string+=String("[CompressorInfo::toString]driver=")+description()+String("\n"); return string; } #endif