diff options
Diffstat (limited to 'video/videosubsystem.h')
| -rw-r--r-- | video/videosubsystem.h | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/video/videosubsystem.h b/video/videosubsystem.h new file mode 100644 index 0000000..3fe94dc --- /dev/null +++ b/video/videosubsystem.h @@ -0,0 +1,97 @@ +//========= 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 VIDEOSUBSYSTEM_H +#define VIDEOSUBSYSTEM_H + +#if defined ( WIN32 ) + #pragma once +#endif + +#include "tier2/tier2.h" +#include "appframework/IAppSystem.h" + + + +//----------------------------------------------------------------------------- +// Common structure used to store supported file types +//----------------------------------------------------------------------------- +struct VideoFileExtensionInfo_t +{ + const char *m_FileExtension; + VideoSystem_t m_VideoSubSystem; + VideoSystemFeature_t m_VideoFeatures; +}; + + + + +class IVideoCommonServices +{ + public: + virtual bool CalculateVideoDimensions( int videoWidth, int videoHeight, int displayWidth, int displayHeight, VideoPlaybackFlags_t playbackFlags, + int *pOutputWidth, int *pOutputHeight, int *pXOffset, int *pYOffset ) = 0; + + virtual float GetSystemVolume() = 0; + + virtual VideoResult_t InitFullScreenPlaybackInputHandler( VideoPlaybackFlags_t playbackFlags, float forcedMinTime, bool windowed ) = 0; + + virtual bool ProcessFullScreenInput( bool &bAbortEvent, bool &bPauseEvent, bool &bQuitEvent ) = 0; + + virtual VideoResult_t TerminateFullScreenPlaybackInputHandler() = 0; + +}; + + +//----------------------------------------------------------------------------- +// Main VIDEO_SERVICES interface +//----------------------------------------------------------------------------- +#define VIDEO_SUBSYSTEM_INTERFACE_VERSION "IVideoSubSystem002" + +class IVideoSubSystem : public IAppSystem +{ + public: + // SubSystem Identification functions + virtual VideoSystem_t GetSystemID() = 0; + virtual VideoSystemStatus_t GetSystemStatus() = 0; + virtual VideoSystemFeature_t GetSupportedFeatures() = 0; + virtual const char *GetVideoSystemName() = 0; + + // Setup & Shutdown Services + virtual bool InitializeVideoSystem( IVideoCommonServices *pCommonServices ) = 0; + virtual bool ShutdownVideoSystem() = 0; + + virtual VideoResult_t VideoSoundDeviceCMD( VideoSoundDeviceOperation_t operation, void *pDevice, void *pData = nullptr ) = 0; + + // get list of file extensions and features we support + virtual int GetSupportedFileExtensionCount() = 0; + virtual const char *GetSupportedFileExtension( int num ) = 0; + virtual VideoSystemFeature_t GetSupportedFileExtensionFeatures( int num ) = 0; + + // Video Playback and Recording Services + + virtual VideoResult_t PlayVideoFileFullScreen( const char *filename, void *mainWindow, int windowWidth, int windowHeight, int desktopWidth, int desktopHeight, bool windowed, float forcedMinTime, VideoPlaybackFlags_t playbackFlags ) = 0; + + // Create/destroy a video material + virtual IVideoMaterial *CreateVideoMaterial( const char *pMaterialName, const char *pVideoFileName, VideoPlaybackFlags_t flags ) = 0; + virtual VideoResult_t DestroyVideoMaterial( IVideoMaterial* pVideoMaterial ) = 0; + + // Create/destroy a video encoder + virtual IVideoRecorder *CreateVideoRecorder() = 0; + virtual VideoResult_t DestroyVideoRecorder( IVideoRecorder *pRecorder ) = 0; + + virtual VideoResult_t CheckCodecAvailability( VideoEncodeCodec_t codec ) = 0; + + virtual VideoResult_t GetLastResult() = 0; + +}; + + + +#endif |