aboutsummaryrefslogtreecommitdiff
path: root/Src/libvp6/include/VP6VFWState.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'Src/libvp6/include/VP6VFWState.hpp')
-rw-r--r--Src/libvp6/include/VP6VFWState.hpp143
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