//
// Copyright (c) 2025 v0lt, Aleksoid
//
// SPDX-License-Identifier: MIT
//

#pragma once

#ifndef FCC
#define FCC(ch4) ((((DWORD)(ch4) & 0xFF) << 24) |     \
                  (((DWORD)(ch4) & 0xFF00) << 8) |    \
                  (((DWORD)(ch4) & 0xFF0000) >> 8) |  \
                  (((DWORD)(ch4) & 0xFF000000) >> 24))
#endif

#ifndef DEFINE_MEDIATYPE_GUID
#define DEFINE_MEDIATYPE_GUID(name, format) \
    DEFINE_GUID(name,                       \
    format, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
#endif

// Media subtypes
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Y8,        0x20203859);
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Y800,      0x30303859);
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Y16,       0x10003159); // Y1[0][16]
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_YV16,      0x36315659);
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_YV24,      0x34325659);
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_I420,      0x30323449); // from "wmcodecdsp.h"
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Y42B,      0x42323459);
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_444P,      0x50343434);
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Y210,      0x30313259);
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Y216,      0x36313259);
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_v210,      0x30313276);
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Y410,      0x30313459);
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Y416,      0x36313459);
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_YUV444P16, 0x10003359); // Y3[0][16]
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_RGB48,     0x30424752); // RGB[48] (RGB0)
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_BGR48,     0x30524742); // BGR[48] (BGR0)
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_BGRA64,    0x40415242); // BRA[64] (BRA@)
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_b48r,      0x72383462);
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_b64a,      0x61343662);
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_r210,      0x30313272);
DEFINE_GUID(MEDIASUBTYPE_LAV_RAWVIDEO, 0xd80fa03c, 0x35c1, 0x4fa1, 0x8c, 0x8e, 0x37, 0x5c, 0x86, 0x67, 0x16, 0x6e);

// non-standard values for Transfer Matrix
#define VIDEOTRANSFERMATRIX_FCC     6
#define VIDEOTRANSFERMATRIX_YCgCo   7