summaryrefslogtreecommitdiff
path: root/public/avi/iavi.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /public/avi/iavi.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'public/avi/iavi.h')
-rw-r--r--public/avi/iavi.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/public/avi/iavi.h b/public/avi/iavi.h
new file mode 100644
index 0000000..1143310
--- /dev/null
+++ b/public/avi/iavi.h
@@ -0,0 +1,134 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// The copyright to the contents herein is the property of Valve, L.L.C.
+// The contents may be used and/or copied only with the written permission of
+// Valve, L.L.C., or in accordance with the terms and conditions stipulated in
+// the agreement/contract under which the contents have been supplied.
+//
+//=============================================================================
+
+#ifndef IAVI_H
+#define IAVI_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "appframework/IAppSystem.h"
+
+//-----------------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------------
+struct BGR888_t;
+class IMaterial;
+
+
+//-----------------------------------------------------------------------------
+// Parameters for creating a new AVI
+//-----------------------------------------------------------------------------
+struct AVIParams_t
+{
+ AVIParams_t() :
+ m_nFrameRate( 0 ), m_nFrameScale( 1 ), m_nWidth( 0 ), m_nHeight( 0 ),
+ m_nSampleRate( 0 ), m_nSampleBits( 0 ), m_nNumChannels( 0 ), m_bGetCodecFromUser( true )
+ {
+ m_pFileName[ 0 ] = 0;
+ }
+
+ char m_pFileName[ 256 ];
+ char m_pPathID[ 256 ];
+
+ // fps = m_nFrameRate / m_nFrameScale
+ // for integer framerates, set framerate to the fps, and framescale to 1
+ // for ntsc-style framerates like 29.97 (or 23.976 or 59.94),
+ // set framerate to 30,000 (or 24,000 or 60,000) and framescale to 1001
+ // yes, framescale is an odd naming choice, but it matching MS's AVI api
+ int m_nFrameRate;
+ int m_nFrameScale;
+
+ int m_nWidth;
+ int m_nHeight;
+
+ // Sound/.wav info
+ int m_nSampleRate;
+ int m_nSampleBits;
+ int m_nNumChannels;
+
+ // The user will be asked to select a compressor if true, otherwise the
+ // previous or default will be used.
+ bool m_bGetCodecFromUser;
+};
+
+
+//-----------------------------------------------------------------------------
+// Handle to an AVI
+//-----------------------------------------------------------------------------
+typedef unsigned short AVIHandle_t;
+enum
+{
+ AVIHANDLE_INVALID = (AVIHandle_t)~0
+};
+
+
+//-----------------------------------------------------------------------------
+// Handle to an AVI material
+//-----------------------------------------------------------------------------
+typedef unsigned short AVIMaterial_t;
+enum
+{
+ AVIMATERIAL_INVALID = (AVIMaterial_t)~0
+};
+
+
+//-----------------------------------------------------------------------------
+// Main AVI interface
+//-----------------------------------------------------------------------------
+#define AVI_INTERFACE_VERSION "VAvi001"
+
+class IAvi : public IAppSystem
+{
+public:
+ // Necessary to call this before any other AVI interface methods
+ virtual void SetMainWindow( void* hWnd ) = 0;
+
+ // Start/stop recording an AVI
+ virtual AVIHandle_t StartAVI( const AVIParams_t& params ) = 0;
+ virtual void FinishAVI( AVIHandle_t handle ) = 0;
+
+ // Add frames to an AVI
+ virtual void AppendMovieSound( AVIHandle_t h, short *buf, size_t bufsize ) = 0;
+ virtual void AppendMovieFrame( AVIHandle_t h, const BGR888_t *pRGBData ) = 0;
+
+ // Create/destroy an AVI material (a materialsystem IMaterial)
+ virtual AVIMaterial_t CreateAVIMaterial( const char *pMaterialName, const char *pFileName, const char *pPathID ) = 0;
+ virtual void DestroyAVIMaterial( AVIMaterial_t hMaterial ) = 0;
+
+ // Sets the time for an AVI material
+ virtual void SetTime( AVIMaterial_t hMaterial, float flTime ) = 0;
+
+ // Gets the IMaterial associated with an AVI material
+ virtual IMaterial* GetMaterial( AVIMaterial_t hMaterial ) = 0;
+
+ // Returns the max texture coordinate of the AVI
+ virtual void GetTexCoordRange( AVIMaterial_t hMaterial, float *pMaxU, float *pMaxV ) = 0;
+
+ // Returns the frame size of the AVI (stored in a subrect of the material itself)
+ virtual void GetFrameSize( AVIMaterial_t hMaterial, int *pWidth, int *pHeight ) = 0;
+
+ // Returns the frame rate of the AVI
+ virtual int GetFrameRate( AVIMaterial_t hMaterial ) = 0;
+
+ // Returns the total frame count of the AVI
+ virtual int GetFrameCount( AVIMaterial_t hMaterial ) = 0;
+
+ // Sets the frame for an AVI material (use instead of SetTime)
+ virtual void SetFrame( AVIMaterial_t hMaterial, float flFrame ) = 0;
+
+ // Plays a given AVI/WMV file until it completes or the user presses ESC, SPACE, or ENTER
+ virtual void PlayWindowsMediaVideo( const char *filename, void *mainWindow, int width, int height, float forcedMinTime ) = 0;
+
+};
+
+
+
+#endif // IAVI_H