summaryrefslogtreecommitdiff
path: root/video/webm_video.h
diff options
context:
space:
mode:
Diffstat (limited to 'video/webm_video.h')
-rw-r--r--video/webm_video.h133
1 files changed, 133 insertions, 0 deletions
diff --git a/video/webm_video.h b/video/webm_video.h
new file mode 100644
index 0000000..eb38f9d
--- /dev/null
+++ b/video/webm_video.h
@@ -0,0 +1,133 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================
+
+
+#ifndef WEBM_VIDEO_H
+#define WEBM_VIDEO_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+
+//-----------------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------------
+class IFileSystem;
+class IMaterialSystem;
+class CQuickTimeMaterial;
+
+//-----------------------------------------------------------------------------
+// Global interfaces - you already did the needed includes, right?
+//-----------------------------------------------------------------------------
+extern IFileSystem *g_pFileSystem;
+extern IMaterialSystem *materials;
+
+
+//-----------------------------------------------------------------------------
+// WebM Header files, anything that seems strange here is to make it so their headers
+// can mesh with ours
+//-----------------------------------------------------------------------------
+#define VPX_CODEC_DISABLE_COMPAT 1
+#include "vpx/vpx_codec.h"
+#include "vpx/vpx_encoder.h"
+#include "vpx/vpx_image.h"
+#include "vpx/vp8cx.h"
+#ifdef UNUSED
+#undef UNUSED
+#endif
+
+// libwebm, support for reading/writing webm files
+#include "mkvreader.hpp"
+#include "mkvparser.hpp"
+#include "mkvmuxer.hpp"
+#include "mkvwriter.hpp"
+#include "mkvmuxerutil.hpp"
+
+#include "vorbis/vorbisenc.h"
+#include "vorbis/codec.h"
+
+#include "video/ivideoservices.h"
+#include "videosubsystem.h"
+
+#include "utlvector.h"
+#include "tier1/KeyValues.h"
+#include "tier0/platform.h"
+
+// -----------------------------------------------------------------------------
+// CQuickTimeVideoSubSystem - Implementation of IVideoSubSystem
+// -----------------------------------------------------------------------------
+class CWebMVideoSubSystem : public CTier2AppSystem< IVideoSubSystem >
+{
+ typedef CTier2AppSystem< IVideoSubSystem > BaseClass;
+
+ public:
+ CWebMVideoSubSystem();
+ ~CWebMVideoSubSystem();
+
+ // Inherited from IAppSystem
+ virtual bool Connect( CreateInterfaceFn factory );
+ virtual void Disconnect();
+ virtual void *QueryInterface( const char *pInterfaceName );
+ virtual InitReturnVal_t Init();
+ virtual void Shutdown();
+
+ // Inherited from IVideoSubSystem
+
+ // SubSystem Identification functions
+ virtual VideoSystem_t GetSystemID();
+ virtual VideoSystemStatus_t GetSystemStatus();
+ virtual VideoSystemFeature_t GetSupportedFeatures();
+ virtual const char *GetVideoSystemName();
+
+ // Setup & Shutdown Services
+ virtual bool InitializeVideoSystem( IVideoCommonServices *pCommonServices );
+ virtual bool ShutdownVideoSystem();
+
+ virtual VideoResult_t VideoSoundDeviceCMD( VideoSoundDeviceOperation_t operation, void *pDevice = nullptr, void *pData = nullptr );
+
+ // get list of file extensions and features we support
+ virtual int GetSupportedFileExtensionCount();
+ virtual const char *GetSupportedFileExtension( int num );
+ virtual VideoSystemFeature_t GetSupportedFileExtensionFeatures( int num );
+
+ // 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 );
+
+ // Create/destroy a video material
+ virtual IVideoMaterial *CreateVideoMaterial( const char *pMaterialName, const char *pVideoFileName, VideoPlaybackFlags_t flags );
+ virtual VideoResult_t DestroyVideoMaterial( IVideoMaterial *pVideoMaterial );
+
+ // Create/destroy a video encoder
+ virtual IVideoRecorder *CreateVideoRecorder();
+ virtual VideoResult_t DestroyVideoRecorder( IVideoRecorder *pRecorder );
+
+ virtual VideoResult_t CheckCodecAvailability( VideoEncodeCodec_t codec );
+
+ virtual VideoResult_t GetLastResult();
+
+ private:
+
+ bool SetupWebM();
+ bool ShutdownWebM();
+
+ VideoResult_t SetResult( VideoResult_t status );
+
+ bool m_bWebMInitialized;
+ VideoResult_t m_LastResult;
+
+ VideoSystemStatus_t m_CurrentStatus;
+ VideoSystemFeature_t m_AvailableFeatures;
+
+ IVideoCommonServices *m_pCommonServices;
+
+ CUtlVector< IVideoMaterial* > m_MaterialList;
+ CUtlVector< IVideoRecorder* > m_RecorderList;
+
+ static const VideoSystemFeature_t DEFAULT_FEATURE_SET;
+};
+
+#endif // WEBM_VIDEO_H