//------------------------------------------------------------------------------ // // Copyright (c) 1999-2003 On2 Technologies Inc. All Rights Reserved. // //------------------------------------------------------------------------------ // // $Workfile: VP6VFWState.hpp$ // $Date: 2010/07/23 19:10:48 $ // $Revision: 1.1 $ // //------------------------------------------------------------------------------ #if !defined(VP6VFWSTATE_HPP) #define VP6VFWSTATE_HPP #include "FourCC.hpp" #include namespace on2vp { //-------------------------------------- class VP6VFWState { friend std::ostream& operator<<(std::ostream& os, const VP6VFWState& vfws); public: enum Mode { M_Setting, M_Config }; enum { HeaderSize = 8 }; enum { ConfigUsed = 1724 }; struct VPConfig { unsigned int Used; int Width; int Height; int TargetBitRate; int Quality; int RateNum; int RateDenom; int KeyFrameFrequency; int KeyFrameDataTarget; int AutoKeyFrameEnabled; int AutoKeyFrameThreshold; int MinimumDistanceToKeyFrame; int ForceKeyFrameEvery; int NoiseSensitivity; int AllowDF; int AllowSpatialResampling; int HScale; int HRatio; int VScale; int VRatio; int ScalingMode; int QuickCompress; int Speed; int Interlaced; int FixedQ; int StartingBufferLevel; int OptimalBufferLevel; int DropFramesWaterMark; int ResampleDownWaterMark; int ResampleUpWaterMark; int OutputFrameRate; int ErrorResilientMode; int Profile; int DisableGolden; int VBMode; int BestAllowedQ; int UnderShootPct; int MaxAllowedDatarate; int MaximumBufferSize; int TwoPassVBREnabled; int TwoPassVBRBias; int TwoPassVBRMaxSection; int TwoPassVBRMinSection; int Pass; int Mode; int EndUsage; int Sharpness; char FirstPassFile[512]; char SettingsFile[512]; char RootDirectory[512]; char Reserved[2048 - ConfigUsed]; VPConfig() : Used(ConfigUsed) { } }; VP6VFWState(FourCC fcc); ~VP6VFWState(); FourCC fcc() const; Mode mode() const; static size_t nominalSize(); VPConfig& vpConfig(); size_t vpStateSize() const; const void* vpState() const; void vpState(const void* pVPState, size_t sizeVPState); size_t size() const; const void* data() const; int data(const void* pData, size_t sizeData); private: VP6VFWState(const VP6VFWState& vfws); // Not implemented VP6VFWState& operator=(const VP6VFWState& vfws); // Not implemented int extract_(const void* pData, size_t sizeData); void update_(const void* pVPState, size_t sizeVPState) const; FourCC m_fcc; Mode m_mode; VPConfig m_vpConfig; mutable void* m_pData; mutable size_t m_sizeData; }; } // namespace on2vp #endif // VP6VFWSTATE_HPP