You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.6 KiB
97 lines
3.6 KiB
//========= 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
|
|
|