Files
video-v1/vav2/platforms/windows/tests/headless/src/HeadlessDecoder.h

50 lines
1.2 KiB
C++

#pragma once
#include <string>
#include <memory>
#include <iostream>
#include "../src/FileIO/WebMFileReader.h"
#include "../src/Decoder/IVideoDecoder.h"
#include "../src/Decoder/VideoDecoderFactory.h"
#include "../src/Output/FileOutput.h"
namespace Vav2Player {
class HeadlessDecoder {
public:
HeadlessDecoder();
~HeadlessDecoder();
// 메인 진입점
bool ProcessFile(const std::string& input_file_path);
private:
// 초기화
bool InitializeComponents();
bool OpenWebMFile(const std::string& file_path);
bool InitializeDecoder();
bool InitializeOutput();
// 디코딩 프로세스
bool ProcessAllFrames();
void PrintProgress(uint64_t current_frame, uint64_t total_frames);
void PrintSummary();
// 컴포넌트들
std::unique_ptr<WebMFileReader> m_file_reader;
std::unique_ptr<IVideoDecoder> m_decoder;
std::unique_ptr<FileOutput> m_file_output;
// 상태 정보
std::string m_input_file_path;
VideoMetadata m_metadata;
uint64_t m_processed_frames = 0;
uint64_t m_successful_frames = 0;
uint64_t m_failed_frames = 0;
bool m_verbose = true;
// 타이밍
std::chrono::high_resolution_clock::time_point m_start_time;
};
} // namespace Vav2Player