//========= Copyright Valve Corporation, All rights reserved. ============// // //=======================================================================================// #include "cbase.h" #if defined( REPLAY_ENABLED ) #include "replayvideo.h" // memdbgon must be the last include file in a .cpp file!!! #include //----------------------------------------------------------------------------- static ReplayVideoMode_t s_VideoModes[] = { { 720, 480, 24, true, "#Replay_Res_480p" }, { 1280, 720, 24, true, "#Replay_Res_720p" }, { 1920, 1080, 24, true, "#Replay_Res_1080p" }, { 320, 240, 15, false, "#Replay_Res_Web" }, { 960, 640, 24, true, "#Replay_Res_iPhone_Horizontal" }, { 640, 960, 24, true, "#Replay_Res_iPhone_Vertical" }, }; #define VIDEO_MODE_COUNT ( sizeof( s_VideoModes ) / sizeof( s_VideoModes[0] ) ) //----------------------------------------------------------------------------- #ifdef USE_WEBM_FOR_REPLAY static ReplayCodec_t s_Codecs[] = { { VideoEncodeCodec::WEBM_CODEC, "#Replay_Codec_WEBM" }, }; static int s_nNumCodecs = ARRAYSIZE( s_Codecs ); //----------------------------------------------------------------------------- static ReplayQualityPreset_t s_QualityPresets[] = { { "#Replay_RenderSetting_Low", VideoEncodeCodec::WEBM_CODEC, 0, false, 0 }, { "#Replay_RenderSetting_Medium", VideoEncodeCodec::WEBM_CODEC, 50, false, 1 }, { "#Replay_RenderSetting_High", VideoEncodeCodec::WEBM_CODEC, 100, true, 2 }, { "#Replay_RenderSetting_Max", VideoEncodeCodec::WEBM_CODEC, 100, true, 3 }, }; static int s_NumQualityPresets = ARRAYSIZE( s_QualityPresets ); static int s_DefaultQualityPreset = 1; #else static ReplayCodec_t s_Codecs[] = { { VideoEncodeCodec::MJPEG_A_CODEC, "#Replay_Codec_MJPEGA" }, { VideoEncodeCodec::H264_CODEC, "#Replay_Codec_H264" }, }; static int s_nNumCodecs = ARRAYSIZE( s_Codecs ); //----------------------------------------------------------------------------- static ReplayQualityPreset_t s_QualityPresets[] = { { "#Replay_RenderSetting_Low", VideoEncodeCodec::MJPEG_A_CODEC, 0, false, 0 }, { "#Replay_RenderSetting_Medium", VideoEncodeCodec::MJPEG_A_CODEC, 50, false, 1 }, { "#Replay_RenderSetting_High", VideoEncodeCodec::MJPEG_A_CODEC, 100, true, 2 }, { "#Replay_RenderSetting_Max", VideoEncodeCodec::H264_CODEC, 100, true, 3 }, }; static int s_NumQualityPresets = ARRAYSIZE( s_QualityPresets ); static int s_DefaultQualityPreset = 1; #endif //----------------------------------------------------------------------------- static const int s_QualityRange = 4; static const int s_QualityInterval = 100 / s_QualityRange; //----------------------------------------------------------------------------- int ReplayVideo_GetVideoModeCount() { return VIDEO_MODE_COUNT; } const ReplayVideoMode_t &ReplayVideo_GetVideoMode( int i ) { AssertMsg( i >= 0 && i < VIDEO_MODE_COUNT, "Replay video mode out of range!" ); return s_VideoModes[ i ]; } int ReplayVideo_GetDefaultQualityPreset() { return s_DefaultQualityPreset; } int ReplayVideo_GetQualityInterval() { return s_QualityInterval; } int ReplayVideo_GetQualityRange() { return s_QualityRange; } int ReplayVideo_GetQualityPresetCount() { return s_NumQualityPresets; } const ReplayQualityPreset_t &ReplayVideo_GetQualityPreset( int i ) { return s_QualityPresets[ i ]; } int ReplayVideo_GetCodecCount() { return s_nNumCodecs; } const ReplayCodec_t &ReplayVideo_GetCodec( int i ) { AssertMsg( i >= 0 && i < s_nNumCodecs, "Replay codec out of range!" ); return s_Codecs[ i ]; } int ReplayVideo_FindCodecPresetFromCodec( VideoEncodeCodec_t nCodecId ) { AssertMsg( nCodecId < VideoEncodeCodec::CODEC_COUNT, "Codec ID out of range!" ); for ( int i = 0; i < VideoEncodeCodec::CODEC_COUNT; ++i ) { if ( s_Codecs[ i ].m_nCodecId == nCodecId ) return i; } AssertMsg( 0, "Codec not found! This should never happen!" ); return 0; } //----------------------------------------------------------------------------- #endif