2025-11-28 00:35:46 +09:00

102 lines
2.9 KiB
C

//////////////////////////////////////////////////////////////////////
//
// Settings.h
//
// Contains application constants.
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//////////////////////////////////////////////////////////////////////
#pragma once
struct ColorInfo
{
BOOL bBT709; // If FALSE, YCbCr is BT-601
BOOL bRgbRange16_235; // If FALSE, RGB is full range
};
// Frame rate
const UINT VIDEO_FPS = 60;
const UINT VIDEO_MSPF = (1000 + VIDEO_FPS / 2) / VIDEO_FPS;
const UINT VIDEO_100NSPF = VIDEO_MSPF * 10000;
// Formats
const D3DFORMAT VIDEO_RENDER_TARGET_FORMAT = D3DFMT_X8R8G8B8;
const D3DFORMAT VIDEO_MAIN_FORMAT = D3DFMT_YUY2;
const D3DFORMAT VIDEO_SUB_FORMAT = D3DFORMAT('VUYA'); // AYUV
// Primary stream
const UINT VIDEO_MAIN_WIDTH = 640;
const UINT VIDEO_MAIN_HEIGHT = 480;
const RECT VIDEO_MAIN_RECT = {0, 0, VIDEO_MAIN_WIDTH, VIDEO_MAIN_HEIGHT};
const UINT DEST_BORDER = 20;
const RECT VIDEO_MAIN_DEST_RECT = { DEST_BORDER, DEST_BORDER, VIDEO_MAIN_WIDTH - DEST_BORDER, VIDEO_MAIN_HEIGHT - DEST_BORDER };
// Substreams
const UINT SUB_STREAM_COUNT = 1;
const UINT VIDEO_SUB_WIDTH = 128;
const UINT VIDEO_SUB_HEIGHT = 128;
const UINT VIDEO_SUB_SURF_WIDTH = VIDEO_SUB_WIDTH * 3;
const UINT VIDEO_SUB_SURF_HEIGHT = VIDEO_SUB_HEIGHT * 3;
const RECT VIDEO_SUB_RECT = { VIDEO_SUB_WIDTH, VIDEO_SUB_HEIGHT };
const UINT VIDEO_SUB_VX = 3; // horizontal velocity
const UINT VIDEO_SUB_VY = 2; // vertical velocity
// Default alpha values
const BYTE DEFAULT_PLANAR_ALPHA_VALUE = 0xFF;
const BYTE DEFAULT_PIXEL_ALPHA_VALUE = 0x80;
// Miscellaneous
const UINT DWM_BUFFER_COUNT = 4;
// Settings for color-space conversions.
const ColorInfo EX_COLOR_INFO[] =
{
// SDTV ITU-R BT.601 YCbCr to studio RGB [16...235]
{FALSE, TRUE},
// SDTV ITU-R BT.601 YCbCr to computer RGB [0...255]
{FALSE, FALSE},
// HDTV ITU-R BT.709 YCbCr to studio RGB [16...235]
{TRUE, TRUE},
// HDTV ITU-R BT.709 YCbCr to computer RGB [0...255]
{TRUE, FALSE}
};
const DWORD NUM_EX_COLORS = ARRAYSIZE(EX_COLOR_INFO);
// Background colors
const DXVAHD_COLOR_RGBA BACKGROUND_COLORS[] =
{
// White // Red // Yellow // Green
{ 1, 1, 1, 1 }, { 1, 0, 0, 1 }, { 1, 1, 0, 1 }, { 0, 1, 0, 1},
// Cyan // Blue // Magenta // Black
{ 0, 1, 1, 1 }, { 0, 0, 1, 1 }, { 1, 0, 1, 1 }, { 0, 0, 0, 0 }
};
const DWORD NUM_BACKGROUND_COLORS = ARRAYSIZE(BACKGROUND_COLORS);
// ProcAmp filters
const DXVAHD_FILTER PROCAMP_FILTERS[] =
{
DXVAHD_FILTER_BRIGHTNESS,
DXVAHD_FILTER_CONTRAST,
DXVAHD_FILTER_HUE,
DXVAHD_FILTER_SATURATION
};
const DWORD NUM_FILTERS = ARRAYSIZE(PROCAMP_FILTERS);