50 lines
1.2 KiB
C++
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
|