118 lines
4.2 KiB
C++
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";
|
|
}
|
|
}
|
|
} |