diff options
Diffstat (limited to 'Src/libvp6/include/VP6VFWState.hpp')
-rw-r--r-- | Src/libvp6/include/VP6VFWState.hpp | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/Src/libvp6/include/VP6VFWState.hpp b/Src/libvp6/include/VP6VFWState.hpp new file mode 100644 index 00000000..6ee9d1ca --- /dev/null +++ b/Src/libvp6/include/VP6VFWState.hpp @@ -0,0 +1,143 @@ +//------------------------------------------------------------------------------ +// +// 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 <iosfwd> + +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 |