summaryrefslogtreecommitdiff
path: root/video/videosubsystem.h
diff options
context:
space:
mode:
Diffstat (limited to 'video/videosubsystem.h')
-rw-r--r--video/videosubsystem.h97
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