mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-13 04:09:09 +00:00
1
This commit is contained in:
@@ -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
|
||||
@@ -0,0 +1,132 @@
|
||||
//========= 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 IBIK_H
|
||||
#define IBIK_H
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "appframework/IAppSystem.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Forward declarations
|
||||
//-----------------------------------------------------------------------------
|
||||
struct BGR888_t;
|
||||
class IMaterial;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Parameters for creating a new BINK
|
||||
//-----------------------------------------------------------------------------
|
||||
struct BIKParams_t
|
||||
{
|
||||
BIKParams_t() :
|
||||
m_nFrameRate( 0 ), m_nFrameScale( 1 ), m_nWidth( 0 ), m_nHeight( 0 ),
|
||||
m_nSampleRate( 0 ), m_nSampleBits( 0 ), m_nNumChannels( 0 )
|
||||
{
|
||||
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;
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Handle to an BINK
|
||||
//-----------------------------------------------------------------------------
|
||||
typedef unsigned short BIKHandle_t;
|
||||
enum
|
||||
{
|
||||
BIKHANDLE_INVALID = (BIKHandle_t)~0
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Handle to an BINK material
|
||||
//-----------------------------------------------------------------------------
|
||||
typedef unsigned short BIKMaterial_t;
|
||||
enum
|
||||
{
|
||||
BIKMATERIAL_INVALID = (BIKMaterial_t)~0
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Main AVI interface
|
||||
//-----------------------------------------------------------------------------
|
||||
#define BIK_INTERFACE_VERSION "VBik001"
|
||||
|
||||
class IBik : public IAppSystem
|
||||
{
|
||||
public:
|
||||
// Create/destroy a BINK material (a materialsystem IMaterial)
|
||||
virtual BIKMaterial_t CreateMaterial( const char *pMaterialName, const char *pFileName, const char *pPathID ) = 0;
|
||||
virtual void DestroyMaterial( BIKMaterial_t hMaterial ) = 0;
|
||||
|
||||
// Update the frame (if necessary)
|
||||
virtual bool Update( BIKMaterial_t hMaterial ) = 0;
|
||||
|
||||
// Gets the IMaterial associated with an BINK material
|
||||
virtual IMaterial* GetMaterial( BIKMaterial_t hMaterial ) = 0;
|
||||
|
||||
// Returns the max texture coordinate of the BINK
|
||||
virtual void GetTexCoordRange( BIKMaterial_t hMaterial, float *pMaxU, float *pMaxV ) = 0;
|
||||
|
||||
// Returns the frame size of the BINK (stored in a subrect of the material itself)
|
||||
virtual void GetFrameSize( BIKMaterial_t hMaterial, int *pWidth, int *pHeight ) = 0;
|
||||
|
||||
// Returns the frame rate of the BINK
|
||||
virtual int GetFrameRate( BIKMaterial_t hMaterial ) = 0;
|
||||
|
||||
// Returns the total frame count of the BINK
|
||||
virtual int GetFrameCount( BIKMaterial_t hMaterial ) = 0;
|
||||
|
||||
// Sets the frame for an BINK material (use instead of SetTime)
|
||||
virtual void SetFrame( BIKMaterial_t hMaterial, float flFrame ) = 0;
|
||||
|
||||
#ifdef WIN32
|
||||
#if !defined( _X360 )
|
||||
// Sets the direct sound device that Bink will decode to
|
||||
virtual bool SetDirectSoundDevice( void *pDevice ) = 0;
|
||||
#else
|
||||
//needs to be called after xaudio is initialized
|
||||
virtual bool HookXAudio( void ) = 0;
|
||||
#endif
|
||||
#elif defined( LINUX )
|
||||
// Sets the SDL device that Bink will decode to
|
||||
virtual bool SetSDLDevice( int frequency, uint16 format, int nchannels ) = 0;
|
||||
|
||||
// Called to mix in Bink audio. Returns true if audio was mixed in, false otherwise.
|
||||
virtual bool SDLMixerAudioCallback( void *stream, int len ) = 0;
|
||||
#endif
|
||||
|
||||
// Plays a given Bink file until it completes or the user presses ESC, SPACE, or ENTER
|
||||
virtual void PlayBinkVideo( const char *filename, void *mainWindow, int width, int height, float forcedMinTime ) = 0;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif // IBIK_H
|
||||
@@ -0,0 +1,174 @@
|
||||
//========= 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 IQUICKTIME_H
|
||||
#define IQUICKTIME_H
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
|
||||
#include "appframework/IAppSystem.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Forward declarations
|
||||
//-----------------------------------------------------------------------------
|
||||
struct BGR888_t;
|
||||
class IMaterial;
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Handle to a QUICKTIME
|
||||
//-----------------------------------------------------------------------------
|
||||
typedef unsigned short QUICKTIMEHandle_t;
|
||||
enum
|
||||
{
|
||||
QUICKTIMEHANDLE_INVALID = (QUICKTIMEHandle_t)~0
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Handle to an QUICKTIME material
|
||||
//-----------------------------------------------------------------------------
|
||||
typedef unsigned short QUICKTIMEMaterial_t;
|
||||
enum
|
||||
{
|
||||
QUICKTIMEMATERIAL_INVALID = (QUICKTIMEMaterial_t)~0
|
||||
};
|
||||
|
||||
typedef unsigned int MovieHandle_t;
|
||||
const MovieHandle_t cInvalidMovieHandle = (MovieHandle_t) ~0;
|
||||
|
||||
enum eVideoSystemStatus
|
||||
{
|
||||
cVideoSystem_OK = 0,
|
||||
cVideoSystem_NotInstalled,
|
||||
cVideoSystem_NotCurrentVersion,
|
||||
cVideoSystem_InitializationError,
|
||||
|
||||
cVideoSystem_ForceInt32 = 0x7FFFFFFF // Make sure eNum is (at least) an int32
|
||||
};
|
||||
|
||||
|
||||
enum eVideoSystemFeatures
|
||||
{
|
||||
cVideoSystem_NoFeatures = 0x00000000,
|
||||
cVideoSystem_PlayMoviesFromFile = 0x00000001,
|
||||
cVideoSystem_RenderVideoFrameToMaterial = 0x00000002,
|
||||
cVideoSystem_EncodeVideoToFile = 0x00000010,
|
||||
cVideoSystem_EncodeAudioToFile = 0x00000020,
|
||||
|
||||
cVideoSystem_ForceInt32a = 0x7FFFFFFF
|
||||
};
|
||||
|
||||
DEFINE_ENUM_BITWISE_OPERATORS( eVideoSystemFeatures );
|
||||
|
||||
enum eVideoEncodeQuality
|
||||
{
|
||||
cVEQuality_Min = 0,
|
||||
cVEQuality_Low = 25,
|
||||
cVEQuality_Normal = 50,
|
||||
cVEQuality_High = 75,
|
||||
cVEQuality_Max = 100
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
// eVideoFrameFormat_t - bit format for quicktime video frames
|
||||
// -----------------------------------------------------------------------
|
||||
enum eVideoFrameFormat_t
|
||||
{
|
||||
cVFF_Undefined = 0,
|
||||
cVFF_R8G8B8A8_32Bit,
|
||||
cVFF_R8G8B8_24Bit,
|
||||
|
||||
cVFF_Count, // Auto list counter
|
||||
cVFF_ForceInt32 = 0x7FFFFFFF // Make sure eNum is (at least) an int32
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
// eAudioSourceFormat_t - Audio encoding source options
|
||||
// -----------------------------------------------------------------------
|
||||
enum eAudioSourceFormat_t
|
||||
{
|
||||
cASF_Undefined = 0,
|
||||
cASF_None,
|
||||
cASF_16BitPCMStereo,
|
||||
|
||||
cASF_Count, // Auto list counter
|
||||
cASF_ForceInt32 = 0x7FFFFFFF // Make sure eNum is (at least) an int32
|
||||
};
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// IQuickTimeMovieMaker interface
|
||||
//-----------------------------------------------------------------------------
|
||||
class IQuickTimeMovieMaker : public IBaseInterface
|
||||
{
|
||||
public:
|
||||
virtual bool CreateNewMovieFile( MovieHandle_t &theMovie, const char *pFilename, int nWidth, int nHeight, int nFps, eVideoEncodeQuality quality, eAudioSourceFormat_t srcAudioFormat = cASF_None, int audioSampleRate = 0 ) = 0;
|
||||
virtual bool AppendVideoFrame( MovieHandle_t theMovie, unsigned char *pFrame ) = 0;
|
||||
virtual bool AppendAudioSamples( MovieHandle_t theMovie, void *sampleBuffer, size_t sampleSize ) = 0;
|
||||
virtual bool FinishMovie( MovieHandle_t theMovie, bool success = true ) = 0;
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Main QUICKTIME interface
|
||||
//-----------------------------------------------------------------------------
|
||||
#define QUICKTIME_INTERFACE_VERSION "IQuickTime002"
|
||||
|
||||
class IQuickTime : public IAppSystem
|
||||
{
|
||||
public:
|
||||
virtual bool IsVideoSystemAvailable() = 0;
|
||||
virtual eVideoSystemStatus GetVideoSystemStatus() = 0;
|
||||
virtual eVideoSystemFeatures GetVideoSystemFeatures() = 0;
|
||||
|
||||
// Create/destroy a QUICKTIME material (a materialsystem IMaterial)
|
||||
virtual QUICKTIMEMaterial_t CreateMaterial( const char *pMaterialName, const char *pFileName, const char *pPathID ) = 0;
|
||||
virtual void DestroyMaterial( QUICKTIMEMaterial_t hMaterial ) = 0;
|
||||
|
||||
// Create/destroy a quicktime movie maker, which will encode audio/video
|
||||
virtual IQuickTimeMovieMaker *CreateMovieMaker() = 0;
|
||||
virtual void DestroyMovieMaker( IQuickTimeMovieMaker *&pMovieMaker ) = 0;
|
||||
|
||||
// Update the frame (if necessary)
|
||||
virtual bool Update( QUICKTIMEMaterial_t hMaterial ) = 0;
|
||||
|
||||
// Gets the IMaterial associated with an BINK material
|
||||
virtual IMaterial* GetMaterial( QUICKTIMEMaterial_t hMaterial ) = 0;
|
||||
|
||||
// Returns the max texture coordinate of the BINK
|
||||
virtual void GetTexCoordRange( QUICKTIMEMaterial_t hMaterial, float *pMaxU, float *pMaxV ) = 0;
|
||||
|
||||
// Returns the frame size of the QUICKTIME Image Frame (stored in a subrect of the material itself)
|
||||
virtual void GetFrameSize( QUICKTIMEMaterial_t hMaterial, int *pWidth, int *pHeight ) = 0;
|
||||
|
||||
// Returns the frame rate of the QUICKTIME
|
||||
virtual int GetFrameRate( QUICKTIMEMaterial_t hMaterial ) = 0;
|
||||
|
||||
// Sets the frame for an BINK material (use instead of SetTime)
|
||||
virtual void SetFrame( QUICKTIMEMaterial_t hMaterial, float flFrame ) = 0;
|
||||
|
||||
// Returns the total frame count of the BINK
|
||||
virtual int GetFrameCount( QUICKTIMEMaterial_t hMaterial ) = 0;
|
||||
|
||||
virtual bool SetSoundDevice( void *pDevice ) = 0;
|
||||
|
||||
// Plays a given MOV file until it completes or the user presses ESC, SPACE, or ENTER
|
||||
virtual void PlayQuicktimeVideo( const char *filename, void *mainWindow, int windowWidth, int windowHeight, int desktopWidth, int desktopHeight, bool windowed, float forcedMinTime ) = 0;
|
||||
|
||||
// Estimates the size of a recorded movie
|
||||
virtual bool EstimateMovieSize( unsigned long &EstSize, int nWidth, int nHeight, int nFps, float duration, eVideoEncodeQuality quality, eAudioSourceFormat_t srcAudioFormat = cASF_None, int audioSampleRate = 0 ) = 0;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif // IQUICKTIME_H
|
||||
Reference in New Issue
Block a user