#pragma once #include #include #include #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 m_file_reader; std::unique_ptr m_decoder; std::unique_ptr 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