Files
Work/avifile/Compressor.hpp
2024-08-07 09:12:07 -04:00

97 lines
1.9 KiB
C++

#ifndef _AVIFILE_COMPRESSOR_HPP_
#define _AVIFILE_COMPRESSOR_HPP_
#ifndef _AVIFILE_FOURCC_HPP_
#include <avifile/fourcc.hpp>
#endif
#ifndef _AVIFILE_AVIBITMAP_HPP_
#include <avifile/avibmp.hpp>
#endif
#ifndef _AVIFILE_MOVIEDATA_HPP_
#include <avifile/movidata.hpp>
#endif
#ifndef _AVIFILE_ICINFO_HPP_
#include <avifile/icinfo.hpp>
#endif
class Compressor
{
public:
Compressor();
Compressor(const FOURCC &fccHandler);
virtual ~Compressor();
bool open(const FOURCC &fccHandler);
void close(void);
bool compress(AVIBitmap &aviBitmap,MovieData &srcMovieData,AVIBitmap &dstBitmap,MovieData &dstMovieData,DWORD dwFrameNumber);
void setQuality(DWORD quality);
bool getFormat(AVIBitmap &srcBitmap,AVIBitmap &dstBitmap);
bool compressQuery(AVIBitmap &srcBitmap,AVIBitmap &dstBitmap);
bool compressQuery(AVIBitmap &srcBitmap);
void compressEnd(void);
bool compressBegin(AVIBitmap &srcBitmap,AVIBitmap &dstBitmap);
bool isOkay(void)const;
bool isInCompress(void)const;
const CompressorInfo &compressorInfo(void)const;
private:
Compressor(const Compressor &compressor);
Compressor &operator=(Compressor &compressor);
HIC mhIC;
DWORD mQuality;
CompressorInfo mCompressorInfo;
bool mIsInCompress;
};
inline
Compressor::Compressor()
: mhIC(0), mQuality(0), mIsInCompress(false)
{
}
inline
Compressor::Compressor(const Compressor &/*codec*/)
{ // private implementation
}
inline
Compressor::Compressor(const FOURCC &fccHandler)
{
open(fccHandler);
}
inline
Compressor::~Compressor()
{
close();
}
inline
Compressor &Compressor::operator=(Compressor &compressor)
{ // private implementation
return *this;
}
inline
void Compressor::setQuality(DWORD quality)
{
mQuality=quality;
}
inline
bool Compressor::isInCompress(void)const
{
return mIsInCompress;
}
inline
bool Compressor::isOkay(void)const
{
return mhIC?true:false;
}
inline
const CompressorInfo &Compressor::compressorInfo(void)const
{
return mCompressorInfo;
}
#endif