Files
UnrealEngine/Engine/Source/Runtime/AVEncoder/Private/VideoEncoder.cpp
2025-05-18 13:04:45 +08:00

77 lines
1.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "VideoEncoder.h"
#include "VideoEncoderCommon.h"
DEFINE_LOG_CATEGORY(LogVideoEncoder);
namespace AVEncoder
{
FVideoEncoder::~FVideoEncoder()
{
// calling virtual methods from the destructor is bad so 'DestroyLayer' was removed from here
// its now up to the derived classes to clean up
for (auto&& layer : Layers)
{
if (layer)
{
UE_LOG(LogVideoEncoder, Warning, TEXT("Encoder layer may not have been cleaned up!"));
break;
}
}
}
PRAGMA_DISABLE_DEPRECATION_WARNINGS
bool FVideoEncoder::AddLayer(FLayerConfig const& config)
PRAGMA_ENABLE_DEPRECATION_WARNINGS
{
if (GetNumLayers() >= GetMaxLayers())
{
UE_LOG(LogVideoEncoder, Error, TEXT("Encoder does not support more than %d layers."), GetMaxLayers());
return false;
}
auto const newLayer = CreateLayer(Layers.Num(), config);
if (nullptr != newLayer)
{
Layers.Push(newLayer);
return true;
}
return false;
}
PRAGMA_DISABLE_DEPRECATION_WARNINGS
FVideoEncoder::FLayerConfig FVideoEncoder::GetLayerConfig(uint32 layerIdx) const
PRAGMA_ENABLE_DEPRECATION_WARNINGS
{
if (layerIdx >= GetNumLayers())
{
UE_LOG(LogVideoEncoder, Error, TEXT("FVideoEncoder::GetLayerConfig: Layer index %d out of range."), layerIdx);
return {};
}
PRAGMA_DISABLE_DEPRECATION_WARNINGS
return Layers[layerIdx]->GetConfig();
PRAGMA_ENABLE_DEPRECATION_WARNINGS
}
PRAGMA_DISABLE_DEPRECATION_WARNINGS
void FVideoEncoder::UpdateLayerConfig(uint32 layerIdx, FLayerConfig const& config)
PRAGMA_ENABLE_DEPRECATION_WARNINGS
{
if (layerIdx >= GetNumLayers())
{
UE_LOG(LogVideoEncoder, Error, TEXT("FVideoEncoder::UpdateLayerConfig: Layer index %d out of range."), layerIdx);
return;
}
PRAGMA_DISABLE_DEPRECATION_WARNINGS
Layers[layerIdx]->UpdateConfig(config);
PRAGMA_ENABLE_DEPRECATION_WARNINGS
}
} /* namespace AVEncoder */