Rename AV1Decoder

This commit is contained in:
2025-09-23 04:46:44 +09:00
parent e80e758a6c
commit 5df8e3a9e4
5 changed files with 28 additions and 30 deletions

View File

@@ -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" />

View File

@@ -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"

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;
}