Files
video-v1/vav2/Vav2Player/Vav2UnitTest/tests/pch.h
2025-09-25 22:43:07 +09:00

118 lines
4.2 KiB
C++

#pragma once
// Microsoft Visual Studio Native Unit Test Framework
#include "CppUnitTest.h"
// Standard library headers
#include <iostream>
#include <string>
#include <memory>
#include <vector>
#include <chrono>
#include <thread>
#include <fstream>
// Windows and COM headers (minimal)
#define WIN32_LEAN_AND_MEAN
#define NOMINMAX
#include <windows.h>
// Media Foundation (minimal for decoder tests)
//#include <mfapi.h>
//#include <mfidl.h>
// D3D12 headers (minimal for rendering tests)
//#include <d3d12.h>
//#include <dxgi1_6.h>
// External library headers
//extern "C" {
//#include <dav1d.h>
//}
// VavCore public API (C API)
#include "VavCore/VavCore.h"
// VavCore internal APIs for unit testing (via direct reference, not copy)
#include "Common/VideoTypes.h"
#include "Decoder/IVideoDecoder.h"
#include "FileIO/IWebMFileReader.h"
#include "Common/IAdaptiveVideoDecoder.h"
using namespace VavCore;
// ToString specializations for VavCore types (both C API and internal)
namespace Microsoft::VisualStudio::CppUnitTestFramework
{
// C API types
template<> inline std::wstring ToString<VavCoreResult>(const VavCoreResult& t)
{
switch (t) {
case VAVCORE_SUCCESS: return L"SUCCESS";
case VAVCORE_ERROR_INIT_FAILED: return L"ERROR_INIT_FAILED";
case VAVCORE_ERROR_INVALID_PARAM: return L"ERROR_INVALID_PARAM";
case VAVCORE_ERROR_FILE_NOT_FOUND: return L"ERROR_FILE_NOT_FOUND";
case VAVCORE_ERROR_DECODE_FAILED: return L"ERROR_DECODE_FAILED";
case VAVCORE_ERROR_OUT_OF_MEMORY: return L"ERROR_OUT_OF_MEMORY";
case VAVCORE_ERROR_NOT_SUPPORTED: return L"ERROR_NOT_SUPPORTED";
case VAVCORE_END_OF_STREAM: return L"END_OF_STREAM";
default: return L"Unknown";
}
}
template<> inline std::wstring ToString<VavCoreDecoderType>(const VavCoreDecoderType& t)
{
switch (t) {
case VAVCORE_DECODER_AUTO: return L"AUTO";
case VAVCORE_DECODER_DAV1D: return L"DAV1D";
case VAVCORE_DECODER_NVDEC: return L"NVDEC";
case VAVCORE_DECODER_MEDIA_FOUNDATION: return L"MEDIA_FOUNDATION";
default: return L"Unknown";
}
}
// Internal API types for unit testing
template<> inline std::wstring ToString<VavCore::WebMErrorCode>(const VavCore::WebMErrorCode& t)
{
switch (t) {
case VavCore::WebMErrorCode::Success: return L"Success";
case VavCore::WebMErrorCode::FileNotFound: return L"FileNotFound";
case VavCore::WebMErrorCode::InvalidFormat: return L"InvalidFormat";
case VavCore::WebMErrorCode::UnsupportedCodec: return L"UnsupportedCodec";
case VavCore::WebMErrorCode::NoVideoTrack: return L"NoVideoTrack";
case VavCore::WebMErrorCode::ReadError: return L"ReadError";
case VavCore::WebMErrorCode::SeekError: return L"SeekError";
case VavCore::WebMErrorCode::FileNotOpen: return L"FileNotOpen";
case VavCore::WebMErrorCode::InvalidTrack: return L"InvalidTrack";
case VavCore::WebMErrorCode::SeekFailed: return L"SeekFailed";
case VavCore::WebMErrorCode::Unknown: return L"Unknown";
default: return L"Unknown";
}
}
template<> inline std::wstring ToString<VavCore::VideoCodecType>(const VavCore::VideoCodecType& t)
{
switch (t) {
case VavCore::VideoCodecType::AV1: return L"AV1";
case VavCore::VideoCodecType::VP9: return L"VP9";
case VavCore::VideoCodecType::VP8: return L"VP8";
case VavCore::VideoCodecType::H264: return L"H264";
case VavCore::VideoCodecType::H265: return L"H265";
default: return L"Unknown";
}
}
template<> inline std::wstring ToString<VavCore::ColorSpace>(const VavCore::ColorSpace& t)
{
switch (t) {
case VavCore::ColorSpace::YUV420P: return L"YUV420P";
case VavCore::ColorSpace::YUV422P: return L"YUV422P";
case VavCore::ColorSpace::YUV444P: return L"YUV444P";
case VavCore::ColorSpace::RGB24: return L"RGB24";
case VavCore::ColorSpace::RGB32: return L"RGB32";
case VavCore::ColorSpace::BT709: return L"BT709";
case VavCore::ColorSpace::BT2020: return L"BT2020";
default: return L"Unknown";
}
}
}