mirror of
https://github.com/celisej567/source-engine.git
synced 2026-01-05 22:09:59 +03:00
1
This commit is contained in:
142
game/client/replay/replayvideo.cpp
Normal file
142
game/client/replay/replayvideo.cpp
Normal file
@@ -0,0 +1,142 @@
|
||||
//========= 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 <tier0/memdbgon.h>
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user