Rename AV1Decoder
This commit is contained in:
@@ -149,8 +149,7 @@
|
||||
|
||||
<ClInclude Include="src\Decoder\IVideoDecoder.h" />
|
||||
<ClInclude Include="src\Decoder\VideoDecoderFactory.h" />
|
||||
<!-- <ClInclude Include="src\Decoder\AV1Decoder.h" /> -->
|
||||
<ClInclude Include="headless\AV1Decoder_Headless.h" />
|
||||
<ClInclude Include="src\Decoder\AV1Decoder.h" />
|
||||
<ClInclude Include="src\Decoder\MediaFoundationAV1Decoder.h" />
|
||||
<ClInclude Include="src\FileIO\WebMFileReader.h" />
|
||||
<ClInclude Include="src\Rendering\D3D12VideoRenderer.h" />
|
||||
@@ -180,8 +179,7 @@
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Decoder\VideoDecoderFactory.cpp" />
|
||||
|
||||
<!-- <ClCompile Include="src\Decoder\AV1Decoder.cpp" /> -->
|
||||
<ClCompile Include="headless\AV1Decoder_Headless.cpp" />
|
||||
<ClCompile Include="src\Decoder\AV1Decoder.cpp" />
|
||||
<ClCompile Include="src\Decoder\MediaFoundationAV1Decoder.cpp" />
|
||||
<ClCompile Include="src\FileIO\WebMFileReader.cpp" />
|
||||
<ClCompile Include="src\Rendering\D3D12VideoRenderer.cpp" />
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#include <algorithm>
|
||||
#include <cstring>
|
||||
#include <cassert>
|
||||
#include "headless/AV1Decoder_Headless.h"
|
||||
#include "src/Decoder/AV1Decoder.h"
|
||||
#include "src/Rendering/SimpleGPURenderer.h"
|
||||
#include "src/Common/VideoTypes.h"
|
||||
#include "src/FileIO/WebMFileReader.h"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "pch.h"
|
||||
#include "AV1Decoder_Headless.h"
|
||||
#include "AV1Decoder.h"
|
||||
#include <iostream>
|
||||
#include <cstring>
|
||||
|
||||
@@ -10,7 +10,7 @@ static void DummyFreeCallback(const uint8_t* data, void* user_data) {
|
||||
// Do nothing - packet data is managed externally
|
||||
}
|
||||
|
||||
AV1Decoder_Headless::AV1Decoder_Headless()
|
||||
AV1Decoder::AV1Decoder()
|
||||
: m_dav1d_context(nullptr)
|
||||
, m_initialized(false) {
|
||||
// Initialize default AV1 settings
|
||||
@@ -20,11 +20,11 @@ AV1Decoder_Headless::AV1Decoder_Headless()
|
||||
m_av1_settings.all_layers = false;
|
||||
}
|
||||
|
||||
AV1Decoder_Headless::~AV1Decoder_Headless() {
|
||||
AV1Decoder::~AV1Decoder() {
|
||||
Cleanup();
|
||||
}
|
||||
|
||||
bool AV1Decoder_Headless::Initialize(const VideoMetadata& metadata) {
|
||||
bool AV1Decoder::Initialize(const VideoMetadata& metadata) {
|
||||
if (m_initialized) {
|
||||
LogError("Decoder already initialized");
|
||||
return false;
|
||||
@@ -61,7 +61,7 @@ bool AV1Decoder_Headless::Initialize(const VideoMetadata& metadata) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void AV1Decoder_Headless::Cleanup() {
|
||||
void AV1Decoder::Cleanup() {
|
||||
if (m_dav1d_context) {
|
||||
dav1d_close(&m_dav1d_context);
|
||||
m_dav1d_context = nullptr;
|
||||
@@ -69,11 +69,11 @@ void AV1Decoder_Headless::Cleanup() {
|
||||
m_initialized = false;
|
||||
}
|
||||
|
||||
bool AV1Decoder_Headless::IsInitialized() const {
|
||||
bool AV1Decoder::IsInitialized() const {
|
||||
return m_initialized;
|
||||
}
|
||||
|
||||
bool AV1Decoder_Headless::DecodeFrame(const VideoPacket& input_packet, VideoFrame& output_frame) {
|
||||
bool AV1Decoder::DecodeFrame(const VideoPacket& input_packet, VideoFrame& output_frame) {
|
||||
if (!input_packet.IsValid()) {
|
||||
LogError("Invalid input packet");
|
||||
return false;
|
||||
@@ -82,7 +82,7 @@ bool AV1Decoder_Headless::DecodeFrame(const VideoPacket& input_packet, VideoFram
|
||||
return DecodeFrame(input_packet.data.get(), input_packet.size, output_frame);
|
||||
}
|
||||
|
||||
bool AV1Decoder_Headless::DecodeFrame(const uint8_t* packet_data, size_t packet_size, VideoFrame& output_frame) {
|
||||
bool AV1Decoder::DecodeFrame(const uint8_t* packet_data, size_t packet_size, VideoFrame& output_frame) {
|
||||
if (!m_initialized || !packet_data || packet_size == 0) {
|
||||
LogError("Invalid parameters or decoder not initialized");
|
||||
return false;
|
||||
@@ -134,7 +134,7 @@ bool AV1Decoder_Headless::DecodeFrame(const uint8_t* packet_data, size_t packet_
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AV1Decoder_Headless::DecodeFrameZeroCopy(const uint8_t* packet_data, size_t packet_size, VideoFrame& output_frame) {
|
||||
bool AV1Decoder::DecodeFrameZeroCopy(const uint8_t* packet_data, size_t packet_size, VideoFrame& output_frame) {
|
||||
if (!m_initialized || !packet_data || packet_size == 0) {
|
||||
LogError("Invalid parameters or decoder not initialized");
|
||||
return false;
|
||||
@@ -184,7 +184,7 @@ bool AV1Decoder_Headless::DecodeFrameZeroCopy(const uint8_t* packet_data, size_t
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AV1Decoder_Headless::Reset() {
|
||||
bool AV1Decoder::Reset() {
|
||||
if (!m_initialized) {
|
||||
return false;
|
||||
}
|
||||
@@ -193,7 +193,7 @@ bool AV1Decoder_Headless::Reset() {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AV1Decoder_Headless::Flush() {
|
||||
bool AV1Decoder::Flush() {
|
||||
if (!m_initialized) {
|
||||
return false;
|
||||
}
|
||||
@@ -202,7 +202,7 @@ bool AV1Decoder_Headless::Flush() {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AV1Decoder_Headless::ConvertDav1dPicture(const Dav1dPicture& dav1d_picture, VideoFrame& output_frame) {
|
||||
bool AV1Decoder::ConvertDav1dPicture(const Dav1dPicture& dav1d_picture, VideoFrame& output_frame) {
|
||||
// Allocate YUV420P frame
|
||||
if (!output_frame.AllocateYUV420P(dav1d_picture.p.w, dav1d_picture.p.h)) {
|
||||
LogError("Failed to allocate VideoFrame");
|
||||
@@ -240,17 +240,17 @@ bool AV1Decoder_Headless::ConvertDav1dPicture(const Dav1dPicture& dav1d_picture,
|
||||
return true;
|
||||
}
|
||||
|
||||
void AV1Decoder_Headless::UpdateDecodingStats(double decode_time_ms, size_t packet_size) {
|
||||
void AV1Decoder::UpdateDecodingStats(double decode_time_ms, size_t packet_size) {
|
||||
m_stats.total_frames_decoded++;
|
||||
m_stats.total_bytes_processed += packet_size;
|
||||
m_stats.total_decode_time_ms += decode_time_ms;
|
||||
}
|
||||
|
||||
void AV1Decoder_Headless::LogError(const std::string& message) {
|
||||
void AV1Decoder::LogError(const std::string& message) {
|
||||
std::cout << "[AV1Decoder_Headless ERROR] " << message << std::endl;
|
||||
}
|
||||
|
||||
void AV1Decoder_Headless::ApplyOptimalSettingsForResolution(uint32_t width, uint32_t height) {
|
||||
void AV1Decoder::ApplyOptimalSettingsForResolution(uint32_t width, uint32_t height) {
|
||||
// Apply resolution-based optimizations
|
||||
AV1Settings settings = m_av1_settings;
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
#pragma once
|
||||
#include "../src/Decoder/IVideoDecoder.h"
|
||||
#include "IVideoDecoder.h"
|
||||
#include <dav1d.h>
|
||||
#include <memory>
|
||||
#include <chrono>
|
||||
|
||||
namespace Vav2Player {
|
||||
|
||||
// Headless version of AV1Decoder with GPU methods removed
|
||||
class AV1Decoder_Headless : public IVideoDecoder {
|
||||
// AV1 decoder using dav1d library
|
||||
class AV1Decoder : public IVideoDecoder {
|
||||
public:
|
||||
AV1Decoder_Headless();
|
||||
~AV1Decoder_Headless() override;
|
||||
AV1Decoder();
|
||||
~AV1Decoder() override;
|
||||
|
||||
// Prevent copying
|
||||
AV1Decoder_Headless(const AV1Decoder_Headless&) = delete;
|
||||
AV1Decoder_Headless& operator=(const AV1Decoder_Headless&) = delete;
|
||||
AV1Decoder(const AV1Decoder&) = delete;
|
||||
AV1Decoder& operator=(const AV1Decoder&) = delete;
|
||||
|
||||
// IVideoDecoder interface implementation
|
||||
bool Initialize(const VideoMetadata& metadata) override;
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "pch.h"
|
||||
#include "VideoDecoderFactory.h"
|
||||
#include "../../headless/AV1Decoder_Headless.h"
|
||||
#include "AV1Decoder.h"
|
||||
#include "MediaFoundationAV1Decoder.h"
|
||||
// #include "VP9Decoder.h" // TODO: activate when VP9 implemented
|
||||
|
||||
@@ -52,7 +52,7 @@ std::unique_ptr<IVideoDecoder> VideoDecoderFactory::CreateAV1Decoder(DecoderType
|
||||
case DecoderType::SOFTWARE:
|
||||
if (s_av1_available) {
|
||||
OutputDebugStringA("[VideoDecoderFactory] Creating software AV1 decoder (dav1d)\n");
|
||||
return std::make_unique<AV1Decoder_Headless>();
|
||||
return std::make_unique<AV1Decoder>();
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -69,7 +69,7 @@ std::unique_ptr<IVideoDecoder> VideoDecoderFactory::CreateAV1Decoder(DecoderType
|
||||
// Fallback to dav1d when Media Foundation fails
|
||||
if (s_av1_available) {
|
||||
OutputDebugStringA("[VideoDecoderFactory] Auto mode: falling back to software AV1 decoder (dav1d)\n");
|
||||
return std::make_unique<AV1Decoder_Headless>();
|
||||
return std::make_unique<AV1Decoder>();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user