98 lines
3.6 KiB
C++
98 lines
3.6 KiB
C++
//========= 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
|