Cleanup and move deps
This commit is contained in:
3
game_re/.gitignore
vendored
3
game_re/.gitignore
vendored
@@ -2,4 +2,5 @@ gh_auto/*
|
||||
gh_ref/*
|
||||
*.bak
|
||||
gh_cmake_timestamp
|
||||
functions.dat
|
||||
functions.dat
|
||||
*.zip
|
||||
@@ -1,9 +1,3 @@
|
||||
# Build for 32-bit compatibility
|
||||
add_compile_options(-m32)
|
||||
add_link_options(-m32)
|
||||
|
||||
add_subdirectory(third_party/spdlog)
|
||||
|
||||
add_executable(game_re
|
||||
r3/main.cpp
|
||||
r3/binders/static_mem.cxx
|
||||
@@ -11,24 +5,19 @@ add_executable(game_re
|
||||
)
|
||||
|
||||
target_compile_features(game_re PUBLIC cxx_std_20)
|
||||
target_include_directories(game_re PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
target_include_directories(game_re PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/third_party/bink
|
||||
set_target_properties(
|
||||
game_re PROPERTIES
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
target_link_directories(game_re PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/third_party/bink)
|
||||
target_include_directories(game_re PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/third_party/bink)
|
||||
target_link_libraries(game_re PRIVATE binkw32)
|
||||
|
||||
# Copy to output dir
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/binkw32.dll
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/third_party/bink/binkw32.dll ${CMAKE_CURRENT_BINARY_DIR}
|
||||
if(WIN32 AND R3_32BIT)
|
||||
target_link_libraries(game_re PRIVATE
|
||||
binkw32
|
||||
d3d8
|
||||
dinput8
|
||||
)
|
||||
add_custom_target(copy_binkw32 ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/binkw32.dll)
|
||||
add_dependencies(game_re copy_binkw32)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(game_re PRIVATE
|
||||
@@ -40,15 +29,6 @@ target_compile_definitions(game_re PRIVATE
|
||||
R3_DATA_SEGMENT_FILE=\"${R3_DATA_SEGMENT_FILE}\"
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
target_link_directories(game_re PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/third_party/mssdk/lib)
|
||||
target_include_directories(game_re SYSTEM AFTER PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/third_party/mssdk/include)
|
||||
target_link_libraries(game_re PRIVATE
|
||||
d3d8
|
||||
dinput8
|
||||
)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(game_re PRIVATE
|
||||
_CRT_SECURE_NO_WARNINGS=1
|
||||
_CRT_NONSTDC_NO_WARNINGS=1)
|
||||
@@ -79,6 +59,6 @@ set_property(
|
||||
PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gh_cmake_timestamp
|
||||
)
|
||||
|
||||
target_precompile_headers(game_re PRIVATE
|
||||
target_precompile_headers(game_re PRIVATE
|
||||
"$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/r3/binders/auto_pch.cxx>"
|
||||
)
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
gh_fix
|
||||
@@ -1,28 +0,0 @@
|
||||
// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
|
||||
extern "C" {
|
||||
|
||||
// 0043e1d0
|
||||
/* Allocate error manager system numbers */
|
||||
|
||||
byte Erm_fn_ucInitErrMsg(void)
|
||||
|
||||
{
|
||||
byte RVar1;
|
||||
tdstLastErrorInfo *pdVar2;
|
||||
int iVar2;
|
||||
|
||||
RVar1 = g_ucErmNbOfModule;
|
||||
if (g_ucErmNbOfModule == 0) {
|
||||
for (size_t i = 0; i < std::size(g_stErmTheLastErrorInfo); i++) {
|
||||
g_stErmTheLastErrorInfo[i].lastErr = 0;
|
||||
g_stErmTheLastErrorInfo[i].ulChannelId = 0;
|
||||
}
|
||||
}
|
||||
g_ucErmNbOfModule = g_ucErmNbOfModule + 1;
|
||||
return RVar1;
|
||||
}
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <spdlog/spdlog.h>
|
||||
|
||||
extern "C" {
|
||||
void r3_noop(void *p_cTxt1, void *p_cTxt2); // 00401100 // r3_noop
|
||||
tdstLastErrorInfo *Erm_fn_p_stFindstMyLastErrorInfo(
|
||||
ulong ulChannelId); // 0043e2b0 // Erm_fn_p_stFindstMyLastErrorInfo
|
||||
|
||||
// 0043e410
|
||||
/* Check CpaError.h */
|
||||
|
||||
void Erm_fn_v_UpdateLastError(ushort uwStartOfWarningsId, byte ucModuleId,
|
||||
ulong ulChannelId, ushort uwErrNum,
|
||||
long lDebugData, uchar ucOpenInfoWindow,
|
||||
uchar ucStopForDebug, char *szPersonalMsg)
|
||||
|
||||
{
|
||||
tdstLastErrorInfo *ptVar2;
|
||||
|
||||
ptVar2 = Erm_fn_p_stFindstMyLastErrorInfo(ulChannelId);
|
||||
if (ptVar2 == (tdstLastErrorInfo *)0x0) {
|
||||
throw std::runtime_error(
|
||||
fmt::format("{} {}", s_Error_in_the_Erm__005bd374,
|
||||
s_There_is_no_more_Channel_error_t_005bd388));
|
||||
}
|
||||
if (ptVar2->lastErr != 0) {
|
||||
throw std::runtime_error(
|
||||
fmt::format("{}", s_Strange__The_last_error_was_neve_005bd348));
|
||||
}
|
||||
ptVar2->lastErr = uwErrNum;
|
||||
ptVar2->ucLastFailedModuleId = ucModuleId;
|
||||
ptVar2->ulChannelId = ulChannelId;
|
||||
if (uwErrNum < uwStartOfWarningsId) {
|
||||
if (szPersonalMsg == (char *)0x0) {
|
||||
throw std::runtime_error(fmt::format(
|
||||
"Unkown fatal error ({}, module: {})", uwErrNum, ucModuleId));
|
||||
} else {
|
||||
throw std::runtime_error(
|
||||
fmt::format("Unkown fatal error ({}, module: {}, {})", uwErrNum,
|
||||
ucModuleId, szPersonalMsg));
|
||||
}
|
||||
}
|
||||
if (szPersonalMsg == (char *)0x0) {
|
||||
return;
|
||||
} else {
|
||||
SPDLOG_WARN("Erm_Warn: {}, module: {}, {}", uwErrNum, ucModuleId,
|
||||
szPersonalMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
|
||||
extern "C" {
|
||||
|
||||
// 0043ff60
|
||||
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
||||
|
||||
void FUN_0043ff60(float param_1,float param_2,float param_3)
|
||||
|
||||
{
|
||||
longlong lVar1;
|
||||
longlong lVar2;
|
||||
longlong lVar3;
|
||||
|
||||
lVar1 = r3_ftol(param_1 * 255.0);
|
||||
lVar2 = r3_ftol(param_2 * 255.0);
|
||||
lVar3 = r3_ftol(param_3 * 255.0);
|
||||
DAT_007a2c14 = ((int)lVar1 << 8 | (uint)lVar2) << 8 | (uint)lVar3;
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
|
||||
extern "C" {
|
||||
undefined4* FUN_0046ecc0(undefined2 param_1, undefined2 param_2); // 0046ecc0 // FUN_0046ecc0
|
||||
|
||||
// 0046f240
|
||||
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
||||
|
||||
undefined4 FUN_0046f240(short param_1,short param_2,undefined4 *param_3)
|
||||
|
||||
{
|
||||
uint uVar1;
|
||||
undefined4 *puVar2;
|
||||
uint uVar3;
|
||||
int iVar4;
|
||||
|
||||
DAT_005e6b04 = 1;
|
||||
do {
|
||||
} while (DAT_005e6b00 != 0);
|
||||
uVar1 = (uint)param_2;
|
||||
uVar3 = uVar1 & 0x8000000f;
|
||||
if ((int)uVar3 < 0) {
|
||||
uVar3 = (uVar3 - 1 | 0xfffffff0) + 1;
|
||||
}
|
||||
puVar2 = (undefined4 *)FUN_0046ecc0((int)(uVar1 + ((int)uVar1 >> 0x1f & 0xfU)) >> 4,uVar3);
|
||||
puVar2[0x19] = 0xffffffff;
|
||||
puVar2[0x18] = 0;
|
||||
for (iVar4 = 0x1c; iVar4 != 0; iVar4 = iVar4 + -1) {
|
||||
*param_3 = *puVar2;
|
||||
puVar2 = puVar2 + 1;
|
||||
param_3 = param_3 + 1;
|
||||
}
|
||||
DAT_005e6b04 = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
|
||||
extern "C" {
|
||||
undefined FUN_0047c340(dword* param_1, dword* param_2, undefined4 param_3); // 0047c340 // FUN_0047c340
|
||||
undefined FUN_0046f240(short param_1, short param_2, undefined4 * param_3); // 0046f240 // FUN_0046f240
|
||||
undefined FUN_0046f060(short param_1, undefined4 * param_2); // 0046f060 // FUN_0046f060
|
||||
|
||||
// 0047c150
|
||||
void FUN_0047c150(short param_1,short param_2,int param_3)
|
||||
|
||||
{
|
||||
int iVar1;
|
||||
dword local_d0 [24];
|
||||
dword local_70 [28];
|
||||
|
||||
iVar1 = FUN_0046f060(param_1,local_d0);
|
||||
if ((iVar1 != 0) && (iVar1 = FUN_0046f240(param_1,param_2,local_70), iVar1 != 0)) {
|
||||
if (param_3 != 0) {
|
||||
DAT_005f5e24 = param_3;
|
||||
}
|
||||
FUN_0047c340(local_d0,local_70,DAT_005f5e24);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <bink.h>
|
||||
|
||||
extern "C" {
|
||||
|
||||
// 00441e40
|
||||
void binkInit(void) {
|
||||
BinkSetSoundSystem(&BinkOpenDirectSound, 0);
|
||||
BinkSetSoundOnOff(0, 0);
|
||||
BinkSetIOSize(0x80000000);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
|
||||
|
||||
// 00401410
|
||||
|
||||
HWND getHWND(void)
|
||||
|
||||
{
|
||||
return g_gameHWND;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 00445580
|
||||
// r3_checkCmdlineLevel
|
||||
extern "C" void r3_checkCmdlineLevel(void) {
|
||||
// NOOP
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
|
||||
extern "C" {
|
||||
|
||||
// 0045d2e0
|
||||
void r3_initUnusedSM(void)
|
||||
|
||||
{
|
||||
WORD_007d9e68 = 1;
|
||||
/* 0x53 */
|
||||
sz_S[0] = s_S_005bf008[0];
|
||||
sz_S[1] = s_S_005bf008[1];
|
||||
WORD_007d9e6c = 2;
|
||||
/* 0x4d */
|
||||
sz_M[0] = s_M_005bf004[0];
|
||||
sz_M[1] = s_M_005bf004[1];
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,425 +0,0 @@
|
||||
// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <r3/config/static.hpp>
|
||||
|
||||
extern "C" {
|
||||
undefined FUN_00470db0(void); // 00470db0 // FUN_00470db0
|
||||
undefined r3_checkDisc(void); // 004464f0 // r3_checkDisc
|
||||
undefined FUN_00503710(void); // 00503710 // FUN_00503710
|
||||
undefined r3_initAllModules(void); // 00401000 // r3_initAllModules
|
||||
undefined FUN_00472150(void); // 00472150 // FUN_00472150
|
||||
undefined r3_wait_for_dvd(char *param_1, char *param_2,
|
||||
undefined4 param_3); // 0043e540 // r3_wait_for_dvd
|
||||
undefined FUN_004725a0(void); // 004725a0 // FUN_004725a0
|
||||
int r3_get_gli_width1(void); // 0047baf0 // r3_get_gli_width1
|
||||
undefined gfx_init2(void); // 00470be0 // gfx_init2
|
||||
void g_setInitVar0(void); // 00401310 // g_setInitVar0
|
||||
int r3_get_gli_height1(void); // 0047bb00 // r3_get_gli_height1
|
||||
undefined FUN_004010b0(void); // 004010b0 // FUN_004010b0
|
||||
undefined FUN_00401320(void); // 00401320 // FUN_00401320
|
||||
void r3_noop(void *p_cTxt1, void *p_cTxt2); // 00401100 // r3_noop
|
||||
undefined r3_initEngine(void); // 00401220 // r3_initEngine
|
||||
undefined FUN_005038e0(void); // 005038e0 // FUN_005038e0
|
||||
undefined FUN_004fb300(void); // 004fb300 // FUN_004fb300
|
||||
undefined spawnThread(void); // 004477d0 // spawnThread
|
||||
undefined
|
||||
r3_setupWindow(HINSTANCE hInstance, undefined4 param_2,
|
||||
undefined4 maximizeWindow); // 00402140 // r3_setupWindow
|
||||
|
||||
// 00401630
|
||||
int r3_main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR *cmdline,
|
||||
int showCmd)
|
||||
|
||||
{
|
||||
undefined4 uVar1;
|
||||
undefined2 uVar3;
|
||||
LPSTR pCVar3;
|
||||
char *pcVar4;
|
||||
FILE *pFVar5;
|
||||
LONG LVar6;
|
||||
HMODULE hLibModule;
|
||||
DWORD DVar7;
|
||||
HANDLE hTargetProcessHandle;
|
||||
HANDLE hSourceHandle;
|
||||
HANDLE hSourceProcessHandle;
|
||||
LPSTR *ppCVar8;
|
||||
uint32_t uVar9;
|
||||
HWND hWnd;
|
||||
int iVar10;
|
||||
int iVar11;
|
||||
int iVar12;
|
||||
int iVar13;
|
||||
uint uVar14;
|
||||
void *unaff_ESI;
|
||||
undefined4 *puVar15;
|
||||
void *unaff_EDI;
|
||||
undefined4 *puVar16;
|
||||
char *pcVar17;
|
||||
undefined4 uStack_83c;
|
||||
HKEY pHStack_838;
|
||||
HANDLE pvStack_834;
|
||||
UINT UStack_830;
|
||||
BYTE aBStack_82c[4];
|
||||
DWORD DStack_828;
|
||||
DWORD DStack_824;
|
||||
tagRECT tStack_820;
|
||||
char acStack_810[260];
|
||||
CHAR languageStr[256];
|
||||
CHAR pathToUbi_ini[260];
|
||||
char acStack_508[260];
|
||||
CHAR windowsDir[260];
|
||||
char acStack_300[256];
|
||||
char acStack_200[256];
|
||||
char acStack_100[256];
|
||||
BOOL BVar18;
|
||||
char cVar1;
|
||||
undefined4 chars;
|
||||
DWORD dwOptions;
|
||||
tagRECT *lpRect;
|
||||
HANDLE *lpTargetHandle;
|
||||
undefined2 uVar2;
|
||||
undefined4 uVar22;
|
||||
|
||||
pCVar3 = GetCommandLineA();
|
||||
|
||||
R3Config &gameConfig = getDefaultConfig();
|
||||
|
||||
// Store and change to game directory
|
||||
chdir(gameConfig.gameRootDir.c_str());
|
||||
strcpy(r3_main_data_005d28b6.gameDataDir, gameConfig.gameRootDir.c_str());
|
||||
|
||||
strcpy(languageStr, gameConfig.language.c_str());
|
||||
sprintf(g_mutexName_Rayman3, s_percents, lpAppName_005b68f0);
|
||||
sprintf(g_windowTitle, s_percents, s_windowTitle);
|
||||
|
||||
/* Setup localized quiting/restoring strings */
|
||||
iVar13 = strcmpi(languageStr, s_French_005b6828);
|
||||
if (iVar13 == 0) {
|
||||
sprintf(s_windowTitleRestoring, s_Restauration_fmt, s_windowTitle);
|
||||
chars = s_QUITTER + Field<4, 4>();
|
||||
puVar15 = (undefined4 *)s_ou_appuyez_sur_Echap_pour_quitte_005b67d0;
|
||||
puVar16 = (undefined4 *)s_quitting1;
|
||||
for (iVar13 = 0xb; uVar22 = s_QUITTER + Field<4, 4>(), iVar13 != 0;
|
||||
iVar13 = iVar13 + -1) {
|
||||
*puVar16 = *puVar15;
|
||||
puVar15 = puVar15 + 1;
|
||||
puVar16 = puVar16 + 1;
|
||||
}
|
||||
s_wndStrQuiting[0] = s_QUITTER[0];
|
||||
s_wndStrQuiting[1] = s_QUITTER[1];
|
||||
s_wndStrQuiting[2] = s_QUITTER[2];
|
||||
s_wndStrQuiting[3] = s_QUITTER[3];
|
||||
/* Wrong decompilation? */
|
||||
s_QUITTER[4] = (char)chars;
|
||||
s_QUITTER[5] = SUB41(chars, 1);
|
||||
s_QUITTER[6] = SUB41(chars, 2);
|
||||
s_QUITTER[7] = SUB41(chars, 3);
|
||||
s_wndStrQuiting[4] = s_QUITTER[4];
|
||||
s_wndStrQuiting[5] = s_QUITTER[5];
|
||||
s_wndStrQuiting[6] = s_QUITTER[6];
|
||||
s_wndStrQuiting[7] = s_QUITTER[7];
|
||||
s_QUITTER + Field<4, 4>() = uVar22;
|
||||
sprintf(lpString_0077d2c0, s__s___Pause_005b67c4, s_windowTitle);
|
||||
puVar15 = (undefined4 *)s_Restauration;
|
||||
puVar16 = (undefined4 *)s_wndStrRestoring;
|
||||
for (iVar13 = 7; iVar13 != 0; iVar13 = iVar13 + -1) {
|
||||
*puVar16 = *puVar15;
|
||||
puVar15 = puVar15 + 1;
|
||||
puVar16 = puVar16 + 1;
|
||||
}
|
||||
} else {
|
||||
iVar13 = strcmpi(languageStr, s_Spanish_005b67a0);
|
||||
if (iVar13 == 0) {
|
||||
sprintf(s_windowTitleRestoring, s__s___Restablecer_datos____005b6784,
|
||||
s_windowTitle);
|
||||
uVar2 = s_SALIR_005b675c + Field<4, 2>();
|
||||
puVar15 = (undefined4 *)s_Pulsa_ESC_para_salir_Rayman_3__005b6764;
|
||||
puVar16 = (undefined4 *)s_quitting1;
|
||||
for (iVar13 = 7; chars = s_SALIR_005b675c + Field<0, 4>(), iVar13 != 0;
|
||||
iVar13 = iVar13 + -1) {
|
||||
*puVar16 = *puVar15;
|
||||
puVar15 = puVar15 + 1;
|
||||
puVar16 = puVar16 + 1;
|
||||
}
|
||||
*(undefined2 *)puVar16 = *(undefined2 *)puVar15;
|
||||
*(undefined *)((int)puVar16 + 2) = *(undefined *)((int)puVar15 + 2);
|
||||
uVar3 = s_SALIR_005b675c + Field<4, 2>();
|
||||
uVar22 = s_SALIR_005b675c + Field<0, 4>();
|
||||
s_SALIR_005b675c[0] = (char)chars;
|
||||
s_SALIR_005b675c[1] = SUB41(chars, 1);
|
||||
s_SALIR_005b675c[2] = SUB41(chars, 2);
|
||||
s_SALIR_005b675c[3] = SUB41(chars, 3);
|
||||
s_wndStrQuiting[0] = s_SALIR_005b675c[0];
|
||||
s_wndStrQuiting[1] = s_SALIR_005b675c[1];
|
||||
s_wndStrQuiting[2] = s_SALIR_005b675c[2];
|
||||
s_wndStrQuiting[3] = s_SALIR_005b675c[3];
|
||||
s_SALIR_005b675c[4] = (char)uVar2;
|
||||
s_SALIR_005b675c[5] = SUB21(uVar2, 1);
|
||||
s_wndStrQuiting[4] = s_SALIR_005b675c[4];
|
||||
s_wndStrQuiting[5] = s_SALIR_005b675c[5];
|
||||
s_SALIR_005b675c + Field<0, 4>() = uVar22;
|
||||
s_SALIR_005b675c + Field<4, 2>() = uVar3;
|
||||
sprintf(lpString_0077d2c0, s__s___Rotura_005b6750, s_windowTitle);
|
||||
puVar15 = (undefined4 *)s_Restablecer_datos____005b6738;
|
||||
puVar16 = (undefined4 *)s_wndStrRestoring;
|
||||
for (iVar13 = 5; iVar13 != 0; iVar13 = iVar13 + -1) {
|
||||
*puVar16 = *puVar15;
|
||||
puVar15 = puVar15 + 1;
|
||||
puVar16 = puVar16 + 1;
|
||||
}
|
||||
*(undefined *)puVar16 = *(undefined *)puVar15;
|
||||
} else {
|
||||
iVar13 = strcmpi(languageStr, s_Italian_005b6730);
|
||||
if (iVar13 == 0) {
|
||||
sprintf(s_windowTitleRestoring, s__s___Ripristino_dati____005b6718,
|
||||
s_windowTitle);
|
||||
uVar2 = s_USCIRE_005b66ec + Field<4, 2>();
|
||||
puVar15 = (undefined4 *)s_Premi_ESC_per_uscire_da_Rayman_3_005b66f4;
|
||||
puVar16 = (undefined4 *)s_quitting1;
|
||||
for (iVar13 = 8; cVar1 = s_USCIRE_005b66ec[6], iVar13 != 0;
|
||||
iVar13 = iVar13 + -1) {
|
||||
*puVar16 = *puVar15;
|
||||
puVar15 = puVar15 + 1;
|
||||
puVar16 = puVar16 + 1;
|
||||
}
|
||||
s_wndStrQuiting[0] = s_USCIRE_005b66ec[0];
|
||||
s_wndStrQuiting[1] = s_USCIRE_005b66ec[1];
|
||||
s_wndStrQuiting[2] = s_USCIRE_005b66ec[2];
|
||||
s_wndStrQuiting[3] = s_USCIRE_005b66ec[3];
|
||||
*(undefined2 *)puVar16 = *(undefined2 *)puVar15;
|
||||
s_wndStrQuiting + Field<4, 3>() = CONCAT12(cVar1, uVar2);
|
||||
sprintf(lpString_0077d2c0, s__s___Pausa_005b66e0, s_windowTitle);
|
||||
s_wndStrRestoring[0] = s_Ripristino_dati____005b66cc[0];
|
||||
s_wndStrRestoring[1] = s_Ripristino_dati____005b66cc[1];
|
||||
s_wndStrRestoring[2] = s_Ripristino_dati____005b66cc[2];
|
||||
s_wndStrRestoring[3] = s_Ripristino_dati____005b66cc[3];
|
||||
s_wndStrRestoring[4] = s_Ripristino_dati____005b66cc[4];
|
||||
s_wndStrRestoring[5] = s_Ripristino_dati____005b66cc[5];
|
||||
s_wndStrRestoring[6] = s_Ripristino_dati____005b66cc[6];
|
||||
s_wndStrRestoring[7] = s_Ripristino_dati____005b66cc[7];
|
||||
s_wndStrRestoring[8] = s_Ripristino_dati____005b66cc[8];
|
||||
s_wndStrRestoring[9] = s_Ripristino_dati____005b66cc[9];
|
||||
s_wndStrRestoring[10] = s_Ripristino_dati____005b66cc[10];
|
||||
s_wndStrRestoring[0xb] = s_Ripristino_dati____005b66cc[0xb];
|
||||
s_wndStrRestoring + Field<12, 4>() =
|
||||
s_Ripristino_dati____005b66cc + Field<12, 4>();
|
||||
s_wndStrRestoring + Field<16, 2>() =
|
||||
s_Ripristino_dati____005b66cc + Field<16, 2>();
|
||||
s_wndStrRestoring[0x12] = s_Ripristino_dati____005b66cc[0x12];
|
||||
} else {
|
||||
iVar13 = strcmpi(languageStr, s_German_005b66c4);
|
||||
if (iVar13 == 0) {
|
||||
sprintf(s_windowTitleRestoring, s__s___Daten_Reparatur____005b66ac,
|
||||
s_windowTitle);
|
||||
chars = s_BEENDIGEN_005b6678 + Field<0, 4>();
|
||||
puVar15 = (undefined4 *)&CHAR_E_005b6684;
|
||||
puVar16 = (undefined4 *)s_quitting1;
|
||||
for (iVar13 = 9; uVar2 = s_BEENDIGEN_005b6678 + Field<8, 2>(),
|
||||
uVar22 = s_BEENDIGEN_005b6678 + Field<4, 4>(), iVar13 != 0;
|
||||
iVar13 = iVar13 + -1) {
|
||||
*puVar16 = *puVar15;
|
||||
puVar15 = puVar15 + 1;
|
||||
puVar16 = puVar16 + 1;
|
||||
}
|
||||
*(undefined2 *)puVar16 = *(undefined2 *)puVar15;
|
||||
uVar1 = s_BEENDIGEN_005b6678 + Field<0, 4>();
|
||||
s_BEENDIGEN_005b6678[0] = (char)chars;
|
||||
s_BEENDIGEN_005b6678[1] = SUB41(chars, 1);
|
||||
s_BEENDIGEN_005b6678[2] = SUB41(chars, 2);
|
||||
s_BEENDIGEN_005b6678[3] = SUB41(chars, 3);
|
||||
s_wndStrQuiting[0] = s_BEENDIGEN_005b6678[0];
|
||||
s_wndStrQuiting[1] = s_BEENDIGEN_005b6678[1];
|
||||
s_wndStrQuiting[2] = s_BEENDIGEN_005b6678[2];
|
||||
s_wndStrQuiting[3] = s_BEENDIGEN_005b6678[3];
|
||||
s_BEENDIGEN_005b6678 + Field<0, 4>() = uVar1;
|
||||
*(undefined *)((int)puVar16 + 2) = *(undefined *)((int)puVar15 + 2);
|
||||
uVar3 = s_BEENDIGEN_005b6678 + Field<8, 2>();
|
||||
chars = s_BEENDIGEN_005b6678 + Field<4, 4>();
|
||||
s_BEENDIGEN_005b6678[4] = (char)uVar22;
|
||||
s_BEENDIGEN_005b6678[5] = SUB41(uVar22, 1);
|
||||
s_BEENDIGEN_005b6678[6] = SUB41(uVar22, 2);
|
||||
s_BEENDIGEN_005b6678[7] = SUB41(uVar22, 3);
|
||||
s_wndStrQuiting[4] = s_BEENDIGEN_005b6678[4];
|
||||
s_wndStrQuiting[5] = s_BEENDIGEN_005b6678[5];
|
||||
s_wndStrQuiting[6] = s_BEENDIGEN_005b6678[6];
|
||||
s_wndStrQuiting[7] = s_BEENDIGEN_005b6678[7];
|
||||
s_BEENDIGEN_005b6678[8] = (char)uVar2;
|
||||
s_BEENDIGEN_005b6678[9] = SUB21(uVar2, 1);
|
||||
s_wndStrQuiting[8] = s_BEENDIGEN_005b6678[8];
|
||||
s_wndStrQuiting[9] = s_BEENDIGEN_005b6678[9];
|
||||
s_BEENDIGEN_005b6678 + Field<4, 4>() = chars;
|
||||
s_BEENDIGEN_005b6678 + Field<8, 2>() = uVar3;
|
||||
sprintf(lpString_0077d2c0, s__s___Pause_005b67c4, s_windowTitle);
|
||||
s_wndStrRestoring[0] = s_Daten_Reparatur____005b6664[0];
|
||||
s_wndStrRestoring[1] = s_Daten_Reparatur____005b6664[1];
|
||||
s_wndStrRestoring[2] = s_Daten_Reparatur____005b6664[2];
|
||||
s_wndStrRestoring[3] = s_Daten_Reparatur____005b6664[3];
|
||||
s_wndStrRestoring[4] = s_Daten_Reparatur____005b6664[4];
|
||||
s_wndStrRestoring[5] = s_Daten_Reparatur____005b6664[5];
|
||||
s_wndStrRestoring[6] = s_Daten_Reparatur____005b6664[6];
|
||||
s_wndStrRestoring[7] = s_Daten_Reparatur____005b6664[7];
|
||||
s_wndStrRestoring[8] = s_Daten_Reparatur____005b6664[8];
|
||||
s_wndStrRestoring[9] = s_Daten_Reparatur____005b6664[9];
|
||||
s_wndStrRestoring[10] = s_Daten_Reparatur____005b6664[10];
|
||||
s_wndStrRestoring[0xb] = s_Daten_Reparatur____005b6664[0xb];
|
||||
s_wndStrRestoring[0xc] = s_Daten_Reparatur____005b6664[0xc];
|
||||
s_wndStrRestoring[0xd] = s_Daten_Reparatur____005b6664[0xd];
|
||||
s_wndStrRestoring[0xe] = s_Daten_Reparatur____005b6664[0xe];
|
||||
s_wndStrRestoring[0xf] = s_Daten_Reparatur____005b6664[0xf];
|
||||
s_wndStrRestoring[0x10] = s_Daten_Reparatur____005b6664[0x10];
|
||||
s_wndStrRestoring[0x11] = s_Daten_Reparatur____005b6664[0x11];
|
||||
s_wndStrRestoring[0x12] = s_Daten_Reparatur____005b6664[0x12];
|
||||
} else {
|
||||
sprintf(s_windowTitleRestoring, s__s___Restoring_data____005b664c,
|
||||
s_windowTitle);
|
||||
chars = s_QUIT + Field<0, 4>();
|
||||
puVar15 = (undefined4 *)s_or_press_ESC_to_quit_Rayman_3__005b662c;
|
||||
puVar16 = (undefined4 *)s_quitting1;
|
||||
for (iVar13 = 7; cVar1 = s_QUIT[4], iVar13 != 0;
|
||||
iVar13 = iVar13 + -1) {
|
||||
*puVar16 = *puVar15;
|
||||
puVar15 = puVar15 + 1;
|
||||
puVar16 = puVar16 + 1;
|
||||
}
|
||||
*(undefined2 *)puVar16 = *(undefined2 *)puVar15;
|
||||
*(undefined *)((int)puVar16 + 2) = *(undefined *)((int)puVar15 + 2);
|
||||
uVar22 = s_QUIT + Field<0, 4>();
|
||||
s_QUIT[0] = (char)chars;
|
||||
s_QUIT[1] = SUB41(chars, 1);
|
||||
s_QUIT[2] = SUB41(chars, 2);
|
||||
s_QUIT[3] = SUB41(chars, 3);
|
||||
s_wndStrQuiting[0] = s_QUIT[0];
|
||||
s_wndStrQuiting[1] = s_QUIT[1];
|
||||
s_wndStrQuiting[2] = s_QUIT[2];
|
||||
s_wndStrQuiting[3] = s_QUIT[3];
|
||||
s_wndStrQuiting[4] = cVar1;
|
||||
s_QUIT + Field<0, 4>() = uVar22;
|
||||
sprintf(lpString_0077d2c0, s__s___Pause_005b67c4, s_windowTitle);
|
||||
s_wndStrRestoring[0] = s_Restoring_data_____005b6610[0];
|
||||
s_wndStrRestoring[1] = s_Restoring_data_____005b6610[1];
|
||||
s_wndStrRestoring[2] = s_Restoring_data_____005b6610[2];
|
||||
s_wndStrRestoring[3] = s_Restoring_data_____005b6610[3];
|
||||
s_wndStrRestoring[4] = s_Restoring_data_____005b6610[4];
|
||||
s_wndStrRestoring[5] = s_Restoring_data_____005b6610[5];
|
||||
s_wndStrRestoring[6] = s_Restoring_data_____005b6610[6];
|
||||
s_wndStrRestoring[7] = s_Restoring_data_____005b6610[7];
|
||||
s_wndStrRestoring[8] = s_Restoring_data_____005b6610[8];
|
||||
s_wndStrRestoring[9] = s_Restoring_data_____005b6610[9];
|
||||
s_wndStrRestoring[10] = s_Restoring_data_____005b6610[10];
|
||||
s_wndStrRestoring[0xb] = s_Restoring_data_____005b6610[0xb];
|
||||
s_wndStrRestoring + Field<12, 4>() =
|
||||
s_Restoring_data_____005b6610 + Field<12, 4>();
|
||||
s_wndStrRestoring + Field<16, 2>() =
|
||||
s_Restoring_data_____005b6610 + Field<16, 2>();
|
||||
s_wndStrRestoring[0x12] = s_Restoring_data_____005b6610[0x12];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Create draw semaphore
|
||||
Initial count = 1
|
||||
Maximum count = 1 */
|
||||
g_drawSemaphore =
|
||||
CreateSemaphoreA((LPSECURITY_ATTRIBUTES)0x0, 1, 1, s_DRAWSEM_005b6608);
|
||||
if (hPrevInstance != (HINSTANCE)0x0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Load DirectPlay probably unused */
|
||||
// hLibModule = LoadLibraryA(s_dpnhpast_dll_005b65f8);
|
||||
// if (hLibModule == (HMODULE)0x0) {
|
||||
// iVar13 = strcmpi(languageStr, s_French_005b6828);
|
||||
// if (iVar13 == 0) {
|
||||
// MessageBoxA((HWND)0x0, lpText_005b6598, s_Erreur_Rayman_3_005b65e4,
|
||||
// 0x10); return -1;
|
||||
// }
|
||||
// iVar13 = strcmpi(languageStr, s_Spanish_005b67a0);
|
||||
// if (iVar13 == 0) {
|
||||
// MessageBoxA((HWND)0x0, lpText_005b6540, s_Rayman_3_005b6588, 0x10);
|
||||
// return -1;
|
||||
// }
|
||||
// iVar13 = strcmpi(languageStr, s_Italian_005b6730);
|
||||
// if (iVar13 == 0) {
|
||||
// MessageBoxA((HWND)0x0, lpText_005b64f0, s_Rayman_3_005b6588, 0x10);
|
||||
// return -1;
|
||||
// }
|
||||
// iVar13 = strcmpi(languageStr, s_German_005b66c4);
|
||||
// if (iVar13 != 0) {
|
||||
// MessageBoxA((HWND)0x0, s_Check_your_version_of_DirectX__V_005b6430,
|
||||
// s_Rayman_3_Error_005b68bc, 0x10);
|
||||
// return -1;
|
||||
// }
|
||||
// MessageBoxA((HWND)0x0, lpText_005b6478, s_Rayman_3_005b6588, 0x10);
|
||||
// return -1;
|
||||
// }
|
||||
// FreeLibrary(hLibModule);
|
||||
|
||||
/* For GLIMode
|
||||
1 = maximize
|
||||
0 = windowed */
|
||||
g_runMaximized = (int)(acStack_200[0] != '0');
|
||||
// r3_checkDisc();
|
||||
dwOptions = 0;
|
||||
BVar18 = 0;
|
||||
lpTargetHandle = &pvStack_834;
|
||||
DVar7 = 0x1f03ff;
|
||||
g_hinstance = hInstance;
|
||||
hTargetProcessHandle = GetCurrentProcess();
|
||||
hSourceHandle = GetCurrentThread();
|
||||
hSourceProcessHandle = GetCurrentProcess();
|
||||
DuplicateHandle(hSourceProcessHandle, hSourceHandle, hTargetProcessHandle,
|
||||
lpTargetHandle, DVar7, BVar18, dwOptions);
|
||||
g_mainThreadHandle = pvStack_834;
|
||||
/* Copy cmdline */
|
||||
strcpy(g_appCmdLine, GetCommandLineA());
|
||||
|
||||
// SetErrorMode(1);
|
||||
|
||||
r3_initAllModules();
|
||||
iVar13 = r3_setupWindow(hInstance, showCmd, g_runMaximized);
|
||||
if (iVar13 == 0) {
|
||||
return -1;
|
||||
}
|
||||
g_setInitVar0();
|
||||
FUN_00401320();
|
||||
spawnThread();
|
||||
gfx_init2();
|
||||
lpRect = &tStack_820;
|
||||
hWnd = GetDesktopWindow();
|
||||
GetWindowRect(hWnd, lpRect);
|
||||
BVar18 = 1;
|
||||
iVar13 = r3_get_gli_height1();
|
||||
iVar13 = iVar13 + 0x20;
|
||||
iVar10 = r3_get_gli_width1();
|
||||
iVar10 = iVar10 + 0xc;
|
||||
iVar11 = r3_get_gli_height1();
|
||||
iVar11 = (tStack_820.bottom - iVar11) / 2;
|
||||
iVar12 = r3_get_gli_width1();
|
||||
MoveWindow(g_gameHWND, (tStack_820.right - iVar12) / 2, iVar11, iVar10,
|
||||
iVar13, BVar18);
|
||||
FUN_004010b0();
|
||||
SystemParametersInfoA(0x10, 0, &UStack_830, 0);
|
||||
SystemParametersInfoA(0x11, 0, (PVOID)0x0, 0);
|
||||
ShowCursor(0);
|
||||
uStack_83c = 0;
|
||||
SystemParametersInfoA(0x61, 1, &uStack_83c, 0);
|
||||
g_engineRunning = 1;
|
||||
r3_initEngine();
|
||||
FUN_004725a0();
|
||||
FUN_005038e0();
|
||||
FUN_00503710();
|
||||
FUN_004fb300();
|
||||
FUN_00472150();
|
||||
FUN_00470db0();
|
||||
uStack_83c = 0;
|
||||
SystemParametersInfoA(0x61, 0, &uStack_83c, 0);
|
||||
ShowCursor(1);
|
||||
SystemParametersInfoA(0x11, UStack_830, (PVOID)0x0, 0);
|
||||
CloseHandle(pvStack_834);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
|
||||
extern "C" {
|
||||
void Erm_fn_v_UpdateLastError(ushort uwStartOfWarningsId, byte ucModuleId, ulong ulChannelId, ushort uwErrNum, long lDebugData, uchar ucOpenInfoWindow, uchar ucStopForDebug, char * szPersonalMsg); // 0043e410 // Erm_fn_v_UpdateLastError
|
||||
byte Erm_fn_ucInitErrMsg(void); // 0043e1d0 // Erm_fn_ucInitErrMsg
|
||||
|
||||
// 00504ef0
|
||||
void r3_module10_init(void)
|
||||
|
||||
{
|
||||
/* 0x104ef0 95 IPT_fn_vFirstInitInput */
|
||||
if (g_errMod10 == 0xff) {
|
||||
g_errMod10 = Erm_fn_ucInitErrMsg();
|
||||
return;
|
||||
}
|
||||
Erm_fn_v_UpdateLastError(3,g_errMod0,0,4,-1,0xff,0xff,(char *)0x0);
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
|
||||
|
||||
// 00401100
|
||||
|
||||
/* Sometimes: Erm_fn_v_PrintErrMsg
|
||||
Also used as noop function */
|
||||
|
||||
void r3_noop(void *p_cTxt1,void *p_cTxt2)
|
||||
|
||||
{
|
||||
/* 0x1100 145 SND_PrintUsedStaticMemory
|
||||
0x1100 205 SND_fn_vChangeVolumeSound
|
||||
0x1100 210 SND_fn_vFadeOut
|
||||
0x1100 215 SND_fn_vInitStereoSound
|
||||
0x1100 230 SND_fn_vSetDopplerFactorSound
|
||||
0x1100 231 SND_fn_vSetFadeOutTicks
|
||||
0x1100 233 SND_fn_vSetMusicFadeOut
|
||||
0x1100 237 SND_fn_vSetReverseStereoSound
|
||||
0x1100 239 SND_fn_vSetStereoSound */
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <r3/config/static.hpp>
|
||||
|
||||
extern "C" {
|
||||
undefined r3_config_setIdentifier(
|
||||
const char *param_1); // 00470570 // r3_config_setIdentifier
|
||||
void r3_config_setTexturesMem(
|
||||
const char *param_1); // 00470f30 // r3_config_setTexturesMem
|
||||
void r3_noop(void *p_cTxt1, void *p_cTxt2); // 00401100 // r3_noop
|
||||
undefined
|
||||
r3_read_game_config_udp_port(void); // 00446040 // r3_read_game_config_udp_port
|
||||
undefined
|
||||
r3_config_setGLIMode(const char *param_1); // 004704e0 // r3_config_setGLIMode
|
||||
undefined r3_set_GameDataBinPath(
|
||||
const char *param_1); // 0055a8d0 // r3_set_GameDataBinPath
|
||||
undefined r3_read_game_config_modem_quality(
|
||||
void); // 00445fc0 // r3_read_game_config_modem_quality
|
||||
|
||||
// 004460c0
|
||||
void r3_read_gli_config(void) {
|
||||
R3Config &config = getDefaultConfig();
|
||||
r3_config_setGLIMode(config.gfxGliMode.c_str());
|
||||
r3_config_setIdentifier(config.gfxIdentifier.c_str());
|
||||
r3_config_setTexturesMem(config.gfxTexturesMem.c_str());
|
||||
g_GLI_adapter = config.gfxAdapter;
|
||||
r3_config_setIdentifier(config.gfxIdentifier.c_str());
|
||||
g_config_tex_compressed = config.gfxTexturesCompressed;
|
||||
g_GLI_tnl = config.gfxTnl;
|
||||
g_GLI_trilinear = config.gfxTrilinear;
|
||||
r3_config_setTexturesMem(config.gfxTexturesMem.c_str());
|
||||
g_config_unused0 = 0;
|
||||
g_config_camera_hor_axis = config.cameraHorizontalAxis;
|
||||
g_config_camera_ver_axis = config.cameraVerticalAxis;
|
||||
r3_set_GameDataBinPath(config.gameDataBinPath.c_str());
|
||||
|
||||
// GetPrivateProfileStringA
|
||||
// (sectionName,s_SingleProcessor_005be308,&lpDefault_005be318,stringBuffer,0x104,local_204
|
||||
// );
|
||||
// /* Set single processor mode */
|
||||
// iVar4 = strcmpi(stringBuffer,(char *)&s_Yes);
|
||||
// if (iVar4 == 0) {
|
||||
// sectionName[4] = '\x01';
|
||||
// sectionName[5] = '\0';
|
||||
// sectionName[6] = '\0';
|
||||
// sectionName[7] = '\0';
|
||||
// sectionName[0] = -0x1a;
|
||||
// sectionName[1] = 'c';
|
||||
// sectionName[2] = 'D';
|
||||
// sectionName[3] = '\0';
|
||||
// sectionName + Field<0, 4>() = GetCurrentProcess();
|
||||
// SetProcessAffinityMask((HANDLE)sectionName + Field<0, 4>(),sectionName +
|
||||
// Field<4, 4>());
|
||||
// }
|
||||
// sectionName[4] = -0xe;
|
||||
// sectionName[5] = 'c';
|
||||
// sectionName[6] = 'D';
|
||||
// sectionName[7] = '\0';
|
||||
// r3_read_game_config_modem_quality();
|
||||
// r3_read_game_config_udp_port();
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1,155 +0,0 @@
|
||||
// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
|
||||
extern "C" {
|
||||
undefined4 get_one(void); // 00485bd0 // get_one
|
||||
void set_unk(HWND wnd); // 0043e620 // set_unk
|
||||
int r3_get_gli_width0(void); // 004012c0 // r3_get_gli_width0
|
||||
int r3_get_gli_height0(void); // 004012d0 // r3_get_gli_height0
|
||||
undefined4 FUN_0046ed70(char * param_1, short * param_2); // 0046ed70 // FUN_0046ed70
|
||||
undefined FUN_0046f640(undefined param_1, short param_2, undefined4 * param_3); // 0046f640 // FUN_0046f640
|
||||
void FUN_0047c150(short param_1, short param_2, int param_3); // 0047c150 // FUN_0047c150
|
||||
long r3_windowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); // 004025e0 // r3_windowProc
|
||||
int r3_get_gli_width1(void); // 0047baf0 // r3_get_gli_width1
|
||||
void r3_load_splash_bitmap(HWND unused); // 00402450 // r3_load_splash_bitmap
|
||||
int r3_get_gli_height1(void); // 0047bb00 // r3_get_gli_height1
|
||||
undefined4 FUN_0046f0b0(short param_1, undefined4 * param_2, short * param_3); // 0046f0b0 // FUN_0046f0b0
|
||||
void r3_set_window_wh(undefined4 param_1, undefined4 param_2); // 004012a0 // r3_set_window_wh
|
||||
|
||||
// 00402140
|
||||
undefined4 r3_setupWindow(HINSTANCE hInstance,undefined4 param_2,int maximizeWindow)
|
||||
|
||||
{
|
||||
ATOM AVar1;
|
||||
int iVar2;
|
||||
HWND hWnd;
|
||||
HWND pHVar3;
|
||||
bool bVar4;
|
||||
char acStack_e0 [28];
|
||||
int iStack_c4;
|
||||
int iStack_c0;
|
||||
undefined4 uStack_bc;
|
||||
HWND pHStack_b8;
|
||||
HWND pHStack_b4;
|
||||
undefined4 uStack_b0;
|
||||
undefined4 uStack_ac;
|
||||
undefined4 auStack_80 [5];
|
||||
undefined4 uStack_6c;
|
||||
DWORD dwStyle;
|
||||
int iVar5;
|
||||
int iVar6;
|
||||
undefined local_28 [28];
|
||||
HBRUSH pHStack_c;
|
||||
LPCSTR pCStack_8;
|
||||
char *pcStack_4;
|
||||
|
||||
INT_0077d0a4 = 1;
|
||||
/* WindowClassA (overlaps usage below) */
|
||||
local_28 + Field<0, 4>() = 0x3003;
|
||||
local_28 + Field<4, 4>() = r3_windowProc;
|
||||
local_28 + Field<8, 4>() = 0;
|
||||
local_28 + Field<12, 4>() = 0;
|
||||
local_28 + Field<16, 4>() = hInstance;
|
||||
local_28 + Field<20, 4>() = LoadIconA(hInstance,(LPCSTR)0x65);
|
||||
local_28 + Field<24, 4>() = LoadCursorA((HINSTANCE)0x0,(LPCSTR)0x7f00);
|
||||
pHStack_c = (HBRUSH)0x6;
|
||||
pCStack_8 = (LPCSTR)0x0;
|
||||
pcStack_4 = g_windowTitle;
|
||||
AVar1 = RegisterClassA((WNDCLASSA *)local_28);
|
||||
if (AVar1 != 0) {
|
||||
bVar4 = maximizeWindow == 0;
|
||||
if (bVar4) {
|
||||
iVar5 = GetSystemMetrics(0x20);
|
||||
iVar5 = iVar5 * 2 + 0x140;
|
||||
iVar6 = GetSystemMetrics(0x21);
|
||||
iVar2 = GetSystemMetrics(4);
|
||||
iVar6 = iVar2 + 0xf0 + iVar6 * 2;
|
||||
dwStyle = 0x90cf0000;
|
||||
}
|
||||
else {
|
||||
iVar6 = 0xf0;
|
||||
iVar5 = 0x140;
|
||||
dwStyle = 0x91000000;
|
||||
}
|
||||
uStack_6c = 0x40221d;
|
||||
hWnd = CreateWindowExA(0,g_windowTitle,g_windowTitle,dwStyle,(uint)bVar4,(uint)bVar4,iVar5,iVar6
|
||||
,(HWND)0x0,(HMENU)0x0,hInstance,(LPVOID)0x0);
|
||||
g_gameHWND1 = hWnd;
|
||||
if (hWnd != (HWND)0x0) {
|
||||
g_gameHWND = hWnd;
|
||||
SetWindowTextA(hWnd,s_windowTitle);
|
||||
if (maximizeWindow == 0) {
|
||||
/* SW_NORMAL */
|
||||
iVar5 = 1;
|
||||
}
|
||||
else {
|
||||
/* SW_MAXIMIZE */
|
||||
iVar5 = 3;
|
||||
}
|
||||
ShowWindow(hWnd,iVar5);
|
||||
SetWindowPos(hWnd,(HWND)0x0,0,0,0,0,0x43);
|
||||
EnableWindow(hWnd,1);
|
||||
SetFocus(hWnd);
|
||||
UpdateWindow(hWnd);
|
||||
SetForegroundWindow(hWnd);
|
||||
pHVar3 = GetFocus();
|
||||
while (pHVar3 != hWnd) {
|
||||
SetWindowPos(hWnd,(HWND)0x0,0,0,0,0,0x43);
|
||||
EnableWindow(hWnd,1);
|
||||
SetFocus(hWnd);
|
||||
UpdateWindow(hWnd);
|
||||
SetForegroundWindow(hWnd);
|
||||
pHVar3 = GetFocus();
|
||||
}
|
||||
set_unk(hWnd);
|
||||
r3_load_splash_bitmap(hWnd);
|
||||
INT_0077d0a4 = 1;
|
||||
iVar5 = get_one();
|
||||
/* always taken */
|
||||
if (iVar5 != 0) {
|
||||
iVar5 = get_one();
|
||||
/* never taken */
|
||||
if (iVar5 == 0) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
exit(-1);
|
||||
}
|
||||
iVar5 = r3_get_gli_height1();
|
||||
iVar6 = r3_get_gli_width1();
|
||||
r3_set_window_wh(iVar6,iVar5);
|
||||
GetClientRect(g_gameHWND,(LPRECT)(local_28 + 0x18));
|
||||
uStack_b0 = 1;
|
||||
iStack_c4 = r3_get_gli_width0();
|
||||
iStack_c0 = r3_get_gli_height0();
|
||||
uStack_bc = 0x10;
|
||||
pHStack_b8 = g_gameHWND;
|
||||
pHStack_b4 = g_gameHWND;
|
||||
uStack_ac = 10;
|
||||
iVar5 = FUN_0046ed70(acStack_e0,(short *)&WORD_0077d4d4);
|
||||
if (iVar5 != 0) {
|
||||
local_28 + Field<0, 4>() = 0;
|
||||
local_28 + Field<4, 4>() = (WNDPROC)0x0;
|
||||
iVar5 = FUN_0046f0b0(WORD_0077d4d4,auStack_80,(short *)&WORD_0077d4d6);
|
||||
if ((iVar5 != 0) &&
|
||||
(iVar5 = FUN_0046f640((char)WORD_0077d4d4,WORD_0077d4d6,&DWORD_0077d4d8), iVar5 != 0))
|
||||
{
|
||||
if (DWORD_0077d4d8 != 0) {
|
||||
FUN_0047c150(WORD_0077d4d4,WORD_0077d4d6,DWORD_0077d4d8);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
/* Failed */
|
||||
return 0;
|
||||
}
|
||||
/* WARNING: Subroutine does not return */
|
||||
exit(-1);
|
||||
}
|
||||
}
|
||||
/* Failed */
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
|
||||
extern "C" {
|
||||
|
||||
// 00442090
|
||||
void r3_validateBinkVideoQuality(byte videoBpp, byte wantedVideoQuality)
|
||||
|
||||
{
|
||||
byte bVar1;
|
||||
|
||||
bVar1 = wantedVideoQuality;
|
||||
if (4 < wantedVideoQuality) {
|
||||
bVar1 = 4;
|
||||
}
|
||||
g_bink_realVideoQuality = g_bink_wantedVideoQuality;
|
||||
if ((g_bink_wantedVideoQuality <= bVar1) &&
|
||||
(g_bink_realVideoQuality = 4, wantedVideoQuality < 5)) {
|
||||
g_bink_realVideoQuality = wantedVideoQuality;
|
||||
}
|
||||
wantedVideoQuality = (uint)g_bink_realVideoQuality;
|
||||
g_bink_videoBpp = videoBpp;
|
||||
g_bink_wantedVideoQualityPlus1 = wantedVideoQuality + 1;
|
||||
DAT_007a2e0c = -(uint)(wantedVideoQuality != 0) & 0x80000000;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
|
||||
extern "C" {
|
||||
undefined FUN_004013a0(void); // 004013a0 // FUN_004013a0
|
||||
undefined FUN_00401320(void); // 00401320 // FUN_00401320
|
||||
|
||||
// 004025e0
|
||||
long r3_windowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
|
||||
|
||||
{
|
||||
long lVar1;
|
||||
|
||||
if (uMsg < WM_SETCURSOR + 1) {
|
||||
if (uMsg == WM_SETCURSOR) {
|
||||
if (((g_engineShouldRun != 0) && (g_engineRunning != 0)) && (g_runMaximized != 0)) {
|
||||
FUN_00401320();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (uMsg == WM_CLOSE) {
|
||||
FUN_004013a0();
|
||||
DAT_0077d0b8 = 1;
|
||||
if (g_drawSemaphore != (HANDLE)0x0) {
|
||||
CloseHandle(g_drawSemaphore);
|
||||
}
|
||||
g_drawSemaphore = (HANDLE)0x0;
|
||||
PostQuitMessage(0);
|
||||
return 0;
|
||||
}
|
||||
if (uMsg == WM_ACTIVATEAPP) {
|
||||
g_engineShouldRun = wParam;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (uMsg != WM_NCHITTEST) {
|
||||
if (uMsg != WM_SYSCOMMAND) goto LAB_004026ab;
|
||||
/* handle SYSCOMMAND */
|
||||
if (wParam < SC_MAXIMIZE + 1) {
|
||||
if ((wParam != SC_MAXIMIZE) && ((wParam != SC_SIZE && (wParam != SC_MOVE))))
|
||||
goto LAB_004026ab;
|
||||
}
|
||||
else if ((wParam != SC_KEYMENU) && (wParam != SC_MONITORPOWER)) goto LAB_004026ab;
|
||||
}
|
||||
/* WM_NCHITTEST
|
||||
*/
|
||||
if (g_runMaximized != 0) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
LAB_004026ab:
|
||||
/* WARNING: Could not recover jumptable at 0x004026b3. Too many branches */
|
||||
/* WARNING: Treating indirect jump as call */
|
||||
lVar1 = DefWindowProcA(hwnd,uMsg,wParam,lParam);
|
||||
return lVar1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 004010b0
|
||||
// FUN_004010b0
|
||||
extern "C" undefined FUN_004010b0(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: FUN_004010b0");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 004011e0
|
||||
// FUN_004011e0
|
||||
extern "C" undefined FUN_004011e0(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: FUN_004011e0");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 00401320
|
||||
// FUN_00401320
|
||||
extern "C" undefined FUN_00401320(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: FUN_00401320");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 0043e4f0
|
||||
// FUN_0043e4f0
|
||||
extern "C" undefined FUN_0043e4f0(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: FUN_0043e4f0");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 00441d70
|
||||
// FUN_00441d70
|
||||
extern "C" undefined FUN_00441d70(undefined4 param_1, undefined4 param_2, undefined4 param_3, undefined4 param_4, undefined4 param_5) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: FUN_00441d70");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 0046f060
|
||||
// FUN_0046f060
|
||||
extern "C" BOOL FUN_0046f060(short param_1, undefined4 * param_2) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: FUN_0046f060");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 0046fe20
|
||||
// FUN_0046fe20
|
||||
extern "C" undefined FUN_0046fe20(undefined4 param_1, undefined4 param_2, undefined4 param_3) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: FUN_0046fe20");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 00470db0
|
||||
// FUN_00470db0
|
||||
extern "C" undefined FUN_00470db0(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: FUN_00470db0");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 00472150
|
||||
// FUN_00472150
|
||||
extern "C" undefined FUN_00472150(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: FUN_00472150");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 004725a0
|
||||
// FUN_004725a0
|
||||
extern "C" undefined FUN_004725a0(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: FUN_004725a0");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 004fb300
|
||||
// FUN_004fb300
|
||||
extern "C" undefined FUN_004fb300(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: FUN_004fb300");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 00503710
|
||||
// FUN_00503710
|
||||
extern "C" undefined FUN_00503710(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: FUN_00503710");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 005038e0
|
||||
// FUN_005038e0
|
||||
extern "C" undefined FUN_005038e0(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: FUN_005038e0");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 0047c340
|
||||
// GLI_xAdjustCameraToViewport
|
||||
extern "C" void GLI_xAdjustCameraToViewport(GLD_tdstDeviceAttributes_ * p_stDev, GLD_tdstViewportAttributes * p_stVpt, GLI_tdstCamera * camera) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: GLI_xAdjustCameraToViewport");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 00505fe0
|
||||
// IPT_fn_vReadInput
|
||||
extern "C" void IPT_fn_vReadInput(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: IPT_fn_vReadInput");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 00401110
|
||||
// fn_vChooseTheGoodInit
|
||||
extern "C" undefined fn_vChooseTheGoodInit(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: fn_vChooseTheGoodInit");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 00401310
|
||||
// g_setInitVar0
|
||||
extern "C" void g_setInitVar0(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: g_setInitVar0");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 00470be0
|
||||
// gfx_init2
|
||||
extern "C" undefined gfx_init2(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: gfx_init2");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 004464f0
|
||||
// r3_checkDisc
|
||||
extern "C" undefined r3_checkDisc(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: r3_checkDisc");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 00401130
|
||||
// r3_checkEngineTermination
|
||||
extern "C" int r3_checkEngineTermination(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: r3_checkEngineTermination");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 00401150
|
||||
// r3_engine_init_phase_adv2_is_2_6_8
|
||||
extern "C" undefined r3_engine_init_phase_adv2_is_2_6_8(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: r3_engine_init_phase_adv2_is_2_6_8");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 0047bb00
|
||||
// r3_get_gli_height1
|
||||
extern "C" int r3_get_gli_height1(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: r3_get_gli_height1");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 0047baf0
|
||||
// r3_get_gli_width1
|
||||
extern "C" int r3_get_gli_width1(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: r3_get_gli_width1");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 0046fed0
|
||||
// r3_gfxFrame?
|
||||
extern "C" undefined r3_gfxFrame?(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: r3_gfxFrame?");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 00401000
|
||||
// r3_initAllModules
|
||||
extern "C" undefined r3_initAllModules(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: r3_initAllModules");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 004013a0
|
||||
// r3_windowUnlockCursor
|
||||
extern "C" undefined r3_windowUnlockCursor(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: r3_windowUnlockCursor");
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
// AUTO-GENERATED FILE!!!!
|
||||
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
|
||||
// with possible manualy fixes
|
||||
|
||||
#include <r3/binders/auto.h>
|
||||
#include <gh_global.h>
|
||||
#include <stdexcept>
|
||||
|
||||
// 00401120
|
||||
// thunk_FUN_00444a80
|
||||
extern "C" undefined thunk_FUN_00444a80(void) {
|
||||
// TODO: Implement this function
|
||||
throw GHStubException("Function not implemented: thunk_FUN_00444a80");
|
||||
}
|
||||
7995
game_re/gh_types.h
7995
game_re/gh_types.h
File diff suppressed because it is too large
Load Diff
714
game_re/third_party/bink/bink.h
vendored
714
game_re/third_party/bink/bink.h
vendored
@@ -1,714 +0,0 @@
|
||||
#ifndef __BINKH__
|
||||
#define __BINKH__
|
||||
|
||||
#define BINKMAJORVERSION 1
|
||||
#define BINKMINORVERSION 5
|
||||
#define BINKSUBVERSION 21
|
||||
#define BINKVERSION "1.5y"
|
||||
#define BINKDATE "2003-09-23"
|
||||
|
||||
#ifndef __RADRES__
|
||||
|
||||
#ifndef __RADBASEH__
|
||||
#include "radbase.h"
|
||||
#endif
|
||||
|
||||
RADDEFSTART
|
||||
|
||||
typedef struct BINK PTR4* HBINK;
|
||||
|
||||
struct BINKIO;
|
||||
typedef S32 (RADLINK PTR4* BINKIOOPEN) (struct BINKIO PTR4* Bnkio, const char PTR4 *name, U32 flags);
|
||||
typedef U32 (RADLINK PTR4* BINKIOREADHEADER) (struct BINKIO PTR4* Bnkio, S32 Offset, void PTR4* Dest,U32 Size);
|
||||
typedef U32 (RADLINK PTR4* BINKIOREADFRAME) (struct BINKIO PTR4* Bnkio, U32 Framenum,S32 origofs,void PTR4* dest,U32 size);
|
||||
typedef U32 (RADLINK PTR4* BINKIOGETBUFFERSIZE)(struct BINKIO PTR4* Bnkio, U32 Size);
|
||||
typedef void (RADLINK PTR4* BINKIOSETINFO) (struct BINKIO PTR4* Bnkio, void PTR4* Buf,U32 Size,U32 FileSize,U32 simulate);
|
||||
typedef U32 (RADLINK PTR4* BINKIOIDLE) (struct BINKIO PTR4* Bnkio);
|
||||
typedef void (RADLINK PTR4* BINKIOCLOSE) (struct BINKIO PTR4* Bnkio);
|
||||
|
||||
typedef void (RADLINK PTR4* BINKCBSUSPEND) (struct BINKIO PTR4* Bnkio);
|
||||
typedef S32 (RADLINK PTR4* BINKCBTRYSUSPEND) (struct BINKIO PTR4* Bnkio);
|
||||
typedef void (RADLINK PTR4* BINKCBRESUME) (struct BINKIO PTR4* Bnkio);
|
||||
typedef void (RADLINK PTR4* BINKCBIDLE) (struct BINKIO PTR4* Bnkio);
|
||||
|
||||
typedef struct BINKIO {
|
||||
BINKIOREADHEADER ReadHeader;
|
||||
BINKIOREADFRAME ReadFrame;
|
||||
BINKIOGETBUFFERSIZE GetBufferSize;
|
||||
BINKIOSETINFO SetInfo;
|
||||
BINKIOIDLE Idle;
|
||||
BINKIOCLOSE Close;
|
||||
HBINK bink;
|
||||
volatile U32 ReadError;
|
||||
volatile U32 DoingARead;
|
||||
volatile U32 BytesRead;
|
||||
volatile U32 Working;
|
||||
volatile U32 TotalTime;
|
||||
volatile U32 ForegroundTime;
|
||||
volatile U32 IdleTime;
|
||||
volatile U32 ThreadTime;
|
||||
volatile U32 BufSize;
|
||||
volatile U32 BufHighUsed;
|
||||
volatile U32 CurBufSize;
|
||||
volatile U32 CurBufUsed;
|
||||
volatile U8 iodata[128+32];
|
||||
|
||||
// filled in by the caller
|
||||
BINKCBSUSPEND suspend_callback;
|
||||
BINKCBTRYSUSPEND try_suspend_callback;
|
||||
BINKCBRESUME resume_callback;
|
||||
BINKCBIDLE idle_on_callback;
|
||||
volatile U32 callback_control[16]; // buffer for background IO callback
|
||||
} BINKIO;
|
||||
|
||||
struct BINKSND;
|
||||
typedef S32 (RADLINK PTR4* BINKSNDOPEN) (struct BINKSND PTR4* BnkSnd, U32 freq, S32 bits, S32 chans, U32 flags, HBINK bink);
|
||||
typedef S32 (RADLINK PTR4* BINKSNDREADY) (struct BINKSND PTR4* BnkSnd);
|
||||
typedef S32 (RADLINK PTR4* BINKSNDLOCK) (struct BINKSND PTR4* BnkSnd, U8 PTR4* PTR4* addr, U32 PTR4* len);
|
||||
typedef S32 (RADLINK PTR4* BINKSNDUNLOCK) (struct BINKSND PTR4* BnkSnd, U32 filled);
|
||||
typedef void (RADLINK PTR4* BINKSNDVOLUME) (struct BINKSND PTR4* BnkSnd, S32 volume);
|
||||
typedef void (RADLINK PTR4* BINKSNDPAN) (struct BINKSND PTR4* BnkSnd, S32 pan);
|
||||
typedef void (RADLINK PTR4* BINKSNDMIXBINS) (struct BINKSND PTR4* BnkSnd, U32 PTR4* mix_bins, U32 total);
|
||||
typedef void (RADLINK PTR4* BINKSNDMIXBINVOLS) (struct BINKSND PTR4* BnkSnd, U32 PTR4* vol_mix_bins, S32 PTR4* volumes, U32 total );
|
||||
typedef S32 (RADLINK PTR4* BINKSNDONOFF) (struct BINKSND PTR4* BnkSnd, S32 status);
|
||||
typedef S32 (RADLINK PTR4* BINKSNDPAUSE) (struct BINKSND PTR4* BnkSnd, S32 status);
|
||||
typedef void (RADLINK PTR4* BINKSNDCLOSE) (struct BINKSND PTR4* BnkSnd);
|
||||
|
||||
typedef BINKSNDOPEN (RADLINK PTR4* BINKSNDSYSOPEN) (U32 param);
|
||||
|
||||
typedef struct BINKSND {
|
||||
BINKSNDREADY Ready;
|
||||
BINKSNDLOCK Lock;
|
||||
BINKSNDUNLOCK Unlock;
|
||||
BINKSNDVOLUME Volume;
|
||||
BINKSNDPAN Pan;
|
||||
BINKSNDPAUSE Pause;
|
||||
BINKSNDONOFF SetOnOff;
|
||||
BINKSNDCLOSE Close;
|
||||
BINKSNDMIXBINS MixBins;
|
||||
BINKSNDMIXBINVOLS MixBinVols;
|
||||
|
||||
U32 sndbufsize; // sound buffer size
|
||||
U8 PTR4* sndbuf; // sound buffer
|
||||
U8 PTR4* sndend; // end of the sound buffer
|
||||
U8 PTR4* sndwritepos; // current write position
|
||||
U8 PTR4* sndreadpos; // current read position
|
||||
U32 sndcomp; // sound compression handle
|
||||
U32 sndamt; // amount of sound currently in the buffer
|
||||
U32 sndconvert8; // convert back to 8-bit sound at runtime
|
||||
U32 sndendframe; // frame number that the sound ends on
|
||||
U32 sndprime; // amount of data to prime the playahead
|
||||
U32 sndpad; // padded this much audio
|
||||
|
||||
U32 BestSizeIn16;
|
||||
U32 BestSizeMask;
|
||||
U32 SoundDroppedOut;
|
||||
S32 NoThreadService;
|
||||
S32 OnOff;
|
||||
U32 Latency;
|
||||
U32 VideoScale;
|
||||
U32 freq;
|
||||
S32 bits,chans;
|
||||
U8 snddata[256];
|
||||
} BINKSND;
|
||||
|
||||
typedef struct BINKRECT {
|
||||
S32 Left,Top,Width,Height;
|
||||
} BINKRECT;
|
||||
|
||||
#define BINKMAXDIRTYRECTS 8
|
||||
|
||||
typedef struct BUNDLEPOINTERS {
|
||||
void* typeptr;
|
||||
void* type16ptr;
|
||||
void* colorptr;
|
||||
void* bits2ptr;
|
||||
void* motionXptr;
|
||||
void* motionYptr;
|
||||
void* dctptr;
|
||||
void* mdctptr;
|
||||
void* patptr;
|
||||
} BUNDLEPOINTERS;
|
||||
|
||||
|
||||
typedef struct BINK {
|
||||
U32 Width; // Width (1 based, 640 for example)
|
||||
U32 Height; // Height (1 based, 480 for example)
|
||||
U32 Frames; // Number of frames (1 based, 100 = 100 frames)
|
||||
U32 FrameNum; // Frame to *be* displayed (1 based)
|
||||
U32 LastFrameNum; // Last frame decompressed or skipped (1 based)
|
||||
|
||||
U32 FrameRate; // Frame Rate Numerator
|
||||
U32 FrameRateDiv; // Frame Rate Divisor (frame rate=numerator/divisor)
|
||||
|
||||
U32 ReadError; // Non-zero if a read error has ocurred
|
||||
U32 OpenFlags; // flags used on open
|
||||
U32 BinkType; // Bink flags
|
||||
|
||||
U32 Size; // size of file
|
||||
U32 FrameSize; // The current frame's size in bytes
|
||||
U32 SndSize; // The current frame sound tracks' size in bytes
|
||||
|
||||
BINKRECT FrameRects[BINKMAXDIRTYRECTS];// Dirty rects from BinkGetRects
|
||||
S32 NumRects;
|
||||
|
||||
U32 PlaneNum; // which set of planes is current
|
||||
void PTR4* YPlane[2]; // pointer to the uncompressed Y (Cr and Cr follow)
|
||||
void PTR4* APlane[2]; // decompressed alpha plane (if present)
|
||||
U32 YWidth; // widths and heights of the video planes
|
||||
U32 YHeight;
|
||||
U32 UVWidth;
|
||||
U32 UVHeight;
|
||||
|
||||
void PTR4* MaskPlane; // pointer to the mask plane (Ywidth/16*Yheight/16)
|
||||
U32 MaskPitch; // Mask Pitch
|
||||
U32 MaskLength; // total length of the mask plane
|
||||
|
||||
U32 LargestFrameSize; // Largest frame size
|
||||
U32 InternalFrames; // how many frames were potentially compressed
|
||||
|
||||
S32 NumTracks; // how many tracks
|
||||
|
||||
U32 Highest1SecRate; // Highest 1 sec data rate
|
||||
U32 Highest1SecFrame; // Highest 1 sec data rate starting frame
|
||||
|
||||
S32 Paused; // is the bink movie paused?
|
||||
|
||||
U32 BackgroundThread; // handle to background thread
|
||||
|
||||
// everything below is for internal Bink use
|
||||
|
||||
void PTR4* compframe; // compressed frame data
|
||||
void PTR4* preloadptr; // preloaded compressed frame data
|
||||
U32* frameoffsets; // offsets of each of the frames
|
||||
|
||||
BINKIO bio; // IO structure
|
||||
U8 PTR4* ioptr; // io buffer ptr
|
||||
U32 iosize; // io buffer size
|
||||
U32 decompwidth; // width not include scaling
|
||||
U32 decompheight; // height not include scaling
|
||||
|
||||
S32 PTR4* trackindexes; // track indexes
|
||||
U32 PTR4* tracksizes; // largest single frame of track
|
||||
U32 PTR4* tracktypes; // type of each sound track
|
||||
S32 PTR4* trackIDs; // external track numbers
|
||||
|
||||
U32 numrects; // number of rects from BinkGetRects
|
||||
|
||||
U32 playedframes; // how many frames have we played
|
||||
U32 firstframetime; // very first frame start
|
||||
U32 startframetime; // start frame start
|
||||
U32 startblittime; // start of blit period
|
||||
U32 startsynctime; // start of synched time
|
||||
U32 startsyncframe; // frame of startsynctime
|
||||
U32 twoframestime; // two frames worth of time
|
||||
U32 entireframetime; // entire frame time
|
||||
|
||||
U32 slowestframetime; // slowest frame in ms
|
||||
U32 slowestframe; // slowest frame number
|
||||
U32 slowest2frametime; // second slowest frame in ms
|
||||
U32 slowest2frame; // second slowest frame
|
||||
|
||||
U32 soundon; // sound turned on?
|
||||
U32 videoon; // video turned on?
|
||||
|
||||
U32 totalmem; // total memory used
|
||||
U32 timevdecomp; // total time decompressing video
|
||||
U32 timeadecomp; // total time decompressing audio
|
||||
U32 timeblit; // total time blitting
|
||||
U32 timeopen; // total open time
|
||||
|
||||
U32 fileframerate; // frame rate originally in the file
|
||||
U32 fileframeratediv;
|
||||
|
||||
U32 runtimeframes; // max frames for runtime analysis
|
||||
U32 runtimemoveamt; // bytes to move each frame
|
||||
U32 PTR4* rtframetimes; // start times for runtime frames
|
||||
U32 PTR4* rtadecomptimes; // decompress times for runtime frames
|
||||
U32 PTR4* rtvdecomptimes; // decompress times for runtime frames
|
||||
U32 PTR4* rtblittimes; // blit times for runtime frames
|
||||
U32 PTR4* rtreadtimes; // read times for runtime frames
|
||||
U32 PTR4* rtidlereadtimes; // idle read times for runtime frames
|
||||
U32 PTR4* rtthreadreadtimes;// thread read times for runtime frames
|
||||
|
||||
U32 lastblitflags; // flags used on last blit
|
||||
U32 lastdecompframe; // last frame number decompressed
|
||||
|
||||
U32 lastresynctime; // last loop point that we did a resync on
|
||||
U32 doresync; // should we do a resync in the next doframe?
|
||||
|
||||
U32 playingtracks; // how many tracks are playing
|
||||
U32 soundskips; // number of sound stops
|
||||
BINKSND PTR4* bsnd; // SND structures
|
||||
U32 skippedlastblit; // skipped last frame?
|
||||
U32 skipped_this_frame; // skipped the current frame?
|
||||
U32 skippedblits; // how many blits were skipped
|
||||
|
||||
BUNDLEPOINTERS bunp; // pointers to internal temporary memory
|
||||
U32 skipped_in_a_row; // how many frames have we skipped in a row
|
||||
U32 big_sound_skip_adj; // adjustment for large skips
|
||||
U32 big_sound_skip_reduce; // amount to reduce large skips by each frame
|
||||
U32 last_time_almost_empty; // time of last almost empty IO buffer
|
||||
U32 last_read_count; // counter to keep track of the last bink IO
|
||||
U32 last_sound_count; // counter to keep track of the last bink sound
|
||||
U32 snd_callback_buffer[16]; // buffer for background sound callback
|
||||
} BINK;
|
||||
|
||||
|
||||
typedef struct BINKSUMMARY {
|
||||
U32 Width; // Width of frames
|
||||
U32 Height; // Height of frames
|
||||
U32 TotalTime; // total time (ms)
|
||||
U32 FileFrameRate; // frame rate
|
||||
U32 FileFrameRateDiv; // frame rate divisor
|
||||
U32 FrameRate; // frame rate
|
||||
U32 FrameRateDiv; // frame rate divisor
|
||||
U32 TotalOpenTime; // Time to open and prepare for decompression
|
||||
U32 TotalFrames; // Total Frames
|
||||
U32 TotalPlayedFrames; // Total Frames played
|
||||
U32 SkippedFrames; // Total number of skipped frames
|
||||
U32 SkippedBlits; // Total number of skipped blits
|
||||
U32 SoundSkips; // Total number of sound skips
|
||||
U32 TotalBlitTime; // Total time spent blitting
|
||||
U32 TotalReadTime; // Total time spent reading
|
||||
U32 TotalVideoDecompTime; // Total time spent decompressing video
|
||||
U32 TotalAudioDecompTime; // Total time spent decompressing audio
|
||||
U32 TotalIdleReadTime; // Total time spent reading while idle
|
||||
U32 TotalBackReadTime; // Total time spent reading in background
|
||||
U32 TotalReadSpeed; // Total io speed (bytes/second)
|
||||
U32 SlowestFrameTime; // Slowest single frame time (ms)
|
||||
U32 Slowest2FrameTime; // Second slowest single frame time (ms)
|
||||
U32 SlowestFrameNum; // Slowest single frame number
|
||||
U32 Slowest2FrameNum; // Second slowest single frame number
|
||||
U32 AverageDataRate; // Average data rate of the movie
|
||||
U32 AverageFrameSize; // Average size of the frame
|
||||
U32 HighestMemAmount; // Highest amount of memory allocated
|
||||
U32 TotalIOMemory; // Total extra memory allocated
|
||||
U32 HighestIOUsed; // Highest extra memory actually used
|
||||
U32 Highest1SecRate; // Highest 1 second rate
|
||||
U32 Highest1SecFrame; // Highest 1 second start frame
|
||||
} BINKSUMMARY;
|
||||
|
||||
|
||||
typedef struct BINKREALTIME {
|
||||
U32 FrameNum; // Current frame number
|
||||
U32 FrameRate; // frame rate
|
||||
U32 FrameRateDiv; // frame rate divisor
|
||||
U32 Frames; // frames in this sample period
|
||||
U32 FramesTime; // time is ms for these frames
|
||||
U32 FramesVideoDecompTime; // time decompressing these frames
|
||||
U32 FramesAudioDecompTime; // time decompressing these frames
|
||||
U32 FramesReadTime; // time reading these frames
|
||||
U32 FramesIdleReadTime; // time reading these frames at idle
|
||||
U32 FramesThreadReadTime; // time reading these frames in background
|
||||
U32 FramesBlitTime; // time blitting these frames
|
||||
U32 ReadBufferSize; // size of read buffer
|
||||
U32 ReadBufferUsed; // amount of read buffer currently used
|
||||
U32 FramesDataRate; // data rate for these frames
|
||||
} BINKREALTIME;
|
||||
|
||||
#define BINKMARKER1 'fKIB'
|
||||
#define BINKMARKER2 'gKIB' // new Bink files use this tag
|
||||
#define BINKMARKER3 'hKIB' // newer Bink files use this tag
|
||||
#define BINKMARKER4 'iKIB' // even newer Bink files use this tag
|
||||
|
||||
typedef struct BINKHDR {
|
||||
U32 Marker; // Bink marker
|
||||
U32 Size; // size of the file-8
|
||||
U32 Frames; // Number of frames (1 based, 100 = 100 frames)
|
||||
U32 LargestFrameSize; // Size in bytes of largest frame
|
||||
U32 InternalFrames; // Number of internal frames
|
||||
|
||||
U32 Width; // Width (1 based, 640 for example)
|
||||
U32 Height; // Height (1 based, 480 for example)
|
||||
U32 FrameRate; // frame rate
|
||||
U32 FrameRateDiv; // frame rate divisor (framerate/frameratediv=fps)
|
||||
|
||||
U32 Flags; // height compression options
|
||||
U32 NumTracks; // number of tracks
|
||||
} BINKHDR;
|
||||
|
||||
|
||||
//=======================================================================
|
||||
#define BINKYAINVERT 0x00000800L // Reverse Y and A planes when blitting (for debugging)
|
||||
#define BINKFRAMERATE 0x00001000L // Override fr (call BinkFrameRate first)
|
||||
#define BINKPRELOADALL 0x00002000L // Preload the entire animation
|
||||
#define BINKSNDTRACK 0x00004000L // Set the track number to play
|
||||
#define BINKOLDFRAMEFORMAT 0x00008000L // using the old Bink frame format (internal use only)
|
||||
#define BINKRBINVERT 0x00010000L // use reversed R and B planes (internal use only)
|
||||
#define BINKGRAYSCALE 0x00020000L // Force Bink to use grayscale
|
||||
#define BINKNOMMX 0x00040000L // Don't use MMX
|
||||
#define BINKNOSKIP 0x00080000L // Don't skip frames if falling behind
|
||||
#define BINKALPHA 0x00100000L // Decompress alpha plane (if present)
|
||||
#define BINKNOFILLIOBUF 0x00200000L // Fill the IO buffer in SmackOpen
|
||||
#define BINKSIMULATE 0x00400000L // Simulate the speed (call BinkSim first)
|
||||
#define BINKFILEHANDLE 0x00800000L // Use when passing in a file handle
|
||||
#define BINKIOSIZE 0x01000000L // Set an io size (call BinkIOSize first)
|
||||
#define BINKIOPROCESSOR 0x02000000L // Set an io processor (call BinkIO first)
|
||||
#define BINKFROMMEMORY 0x04000000L // Use when passing in a pointer to the file
|
||||
#define BINKNOTHREADEDIO 0x08000000L // Don't use a background thread for IO
|
||||
|
||||
#define BINKSURFACEFAST 0x00000000L
|
||||
#define BINKSURFACESLOW 0x08000000L
|
||||
#define BINKSURFACEDIRECT 0x04000000L
|
||||
|
||||
#define BINKCOPYALL 0x80000000L // copy all pixels (not just changed)
|
||||
#define BINKCOPY2XH 0x10000000L // Force doubling height scaling
|
||||
#define BINKCOPY2XHI 0x20000000L // Force interleaving height scaling
|
||||
#define BINKCOPY2XW 0x30000000L // copy the width zoomed by two
|
||||
#define BINKCOPY2XWH 0x40000000L // copy the width and height zoomed by two
|
||||
#define BINKCOPY2XWHI 0x50000000L // copy the width and height zoomed by two
|
||||
#define BINKCOPY1XI 0x60000000L // copy the width and height zoomed by two
|
||||
#define BINKCOPYNOSCALING 0x70000000L // Force scaling off
|
||||
|
||||
//#define BINKALPHA 0x00100000L // Decompress alpha plane (if present)
|
||||
//#define BINKNOSKIP 0x00080000L // don't skip the blit if behind in sound
|
||||
//#define BINKNOMMX 0x00040000L // Don't skip frames if falling behind
|
||||
//#define BINKGRAYSCALE 0x00020000L // force Bink to use grayscale
|
||||
//#define BINKRBINVERT 0x00010000L // use reversed R and B planes
|
||||
|
||||
#define BINKSURFACE8P 0
|
||||
#define BINKSURFACE24 1
|
||||
#define BINKSURFACE24R 2
|
||||
#define BINKSURFACE32 3
|
||||
#define BINKSURFACE32R 4
|
||||
#define BINKSURFACE32A 5
|
||||
#define BINKSURFACE32RA 6
|
||||
#define BINKSURFACE4444 7
|
||||
#define BINKSURFACE5551 8
|
||||
#define BINKSURFACE555 9
|
||||
#define BINKSURFACE565 10
|
||||
#define BINKSURFACE655 11
|
||||
#define BINKSURFACE664 12
|
||||
#define BINKSURFACEYUY2 13
|
||||
#define BINKSURFACEUYVY 14
|
||||
#define BINKSURFACEYV12 15
|
||||
#define BINKSURFACEMASK 15
|
||||
|
||||
#ifdef __RADXBOX__
|
||||
|
||||
#define BINKSURFACESALL 32
|
||||
#define BINKCONVERTERSMONO 64
|
||||
#define BINKCONVERTERS2X 256
|
||||
|
||||
#define BINKCONVERTERSALL (BINKSURFACESALL|BINKCONVERTERSMONO|BINKCONVERTERS2X)
|
||||
|
||||
#define BinkLoad() BinkLoadUnload(1)
|
||||
#define BinkUnload() BinkLoadUnload(0)
|
||||
|
||||
#define BinkLoadConverter(val) BinkLoadUnloadConverter(val,1)
|
||||
#define BinkUnloadConverter(val) BinkLoadUnloadConverter(val,0)
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkLoadUnload( S32 inout );
|
||||
RADEXPFUNC void RADEXPLINK BinkLoadUnloadConverter( U32 surfaces, S32 inout );
|
||||
|
||||
#endif
|
||||
|
||||
#define BINKGOTOQUICK 1
|
||||
#define BINKGOTOQUICKSOUND 2
|
||||
|
||||
#define BINKGETKEYPREVIOUS 0
|
||||
#define BINKGETKEYNEXT 1
|
||||
#define BINKGETKEYCLOSEST 2
|
||||
#define BINKGETKEYNOTEQUAL 128
|
||||
|
||||
//=======================================================================
|
||||
|
||||
#ifdef __RADMAC__
|
||||
#pragma export on
|
||||
|
||||
RADEXPFUNC HBINK RADEXPLINK BinkMacOpen(void /*FSSpec*/ * fsp,U32 flags);
|
||||
#endif
|
||||
|
||||
RADEXPFUNC void PTR4* RADEXPLINK BinkLogoAddress(void);
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkSetError(const char PTR4* err);
|
||||
RADEXPFUNC char PTR4* RADEXPLINK BinkGetError(void);
|
||||
|
||||
RADEXPFUNC HBINK RADEXPLINK BinkOpen(const char PTR4* name,U32 flags);
|
||||
|
||||
RADEXPFUNC S32 RADEXPLINK BinkDoFrame(HBINK bnk);
|
||||
RADEXPFUNC void RADEXPLINK BinkNextFrame(HBINK bnk);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkWait(HBINK bnk);
|
||||
RADEXPFUNC void RADEXPLINK BinkClose(HBINK bnk);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkPause(HBINK bnk,S32 pause);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkCopyToBuffer(HBINK bnk,void* dest,S32 destpitch,U32 destheight,U32 destx,U32 desty,U32 flags);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkCopyToBufferRect(HBINK bnk,void* dest,S32 destpitch,U32 destheight,U32 destx,U32 desty,U32 srcx, U32 srcy, U32 srcw, U32 srch, U32 flags);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkGetRects(HBINK bnk,U32 flags);
|
||||
RADEXPFUNC void RADEXPLINK BinkGoto(HBINK bnk,U32 frame,S32 flags); // use 1 for the first frame
|
||||
RADEXPFUNC U32 RADEXPLINK BinkGetKeyFrame(HBINK bnk,U32 frame,S32 flags);
|
||||
|
||||
RADEXPFUNC S32 RADEXPLINK BinkSetVideoOnOff(HBINK bnk,S32 onoff);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkSetSoundOnOff(HBINK bnk,S32 onoff);
|
||||
RADEXPFUNC void RADEXPLINK BinkFreeGlocalMemory( void );
|
||||
RADEXPFUNC void RADEXPLINK BinkSetVolume(HBINK bnk, U32 trackid, S32 volume);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetPan(HBINK bnk,U32 trackid, S32 pan);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetMixBins(HBINK bnk,U32 trackid, U32 PTR4* mix_bins, U32 total);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetMixBinVolumes(HBINK bnk,U32 trackid, U32 PTR4* vol_mix_bins, S32 PTR4* volumes, U32 total);
|
||||
RADEXPFUNC void RADEXPLINK BinkService(HBINK bink);
|
||||
|
||||
typedef struct BINKTRACK PTR4* HBINKTRACK;
|
||||
|
||||
typedef struct BINKTRACK
|
||||
{
|
||||
U32 Frequency;
|
||||
U32 Bits;
|
||||
U32 Channels;
|
||||
U32 MaxSize;
|
||||
|
||||
HBINK bink;
|
||||
U32 sndcomp;
|
||||
S32 trackindex;
|
||||
} BINKTRACK;
|
||||
|
||||
|
||||
RADEXPFUNC HBINKTRACK RADEXPLINK BinkOpenTrack(HBINK bnk,U32 trackindex);
|
||||
RADEXPFUNC void RADEXPLINK BinkCloseTrack(HBINKTRACK bnkt);
|
||||
RADEXPFUNC U32 RADEXPLINK BinkGetTrackData(HBINKTRACK bnkt,void PTR4* dest);
|
||||
|
||||
RADEXPFUNC U32 RADEXPLINK BinkGetTrackType(HBINK bnk,U32 trackindex);
|
||||
RADEXPFUNC U32 RADEXPLINK BinkGetTrackMaxSize(HBINK bnk,U32 trackindex);
|
||||
RADEXPFUNC U32 RADEXPLINK BinkGetTrackID(HBINK bnk,U32 trackindex);
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkGetSummary(HBINK bnk,BINKSUMMARY PTR4* sum);
|
||||
RADEXPFUNC void RADEXPLINK BinkGetRealtime(HBINK bink,BINKREALTIME PTR4* run,U32 frames);
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkSetSoundTrack(U32 total_tracks, U32 PTR4* tracks);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetIO(BINKIOOPEN io);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetFrameRate(U32 forcerate,U32 forceratediv);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetSimulate(U32 sim);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetIOSize(U32 iosize);
|
||||
|
||||
RADEXPFUNC S32 RADEXPLINK BinkSetSoundSystem(BINKSNDSYSOPEN open, U32 param);
|
||||
|
||||
#ifdef __RADWIN__
|
||||
|
||||
RADEXPFUNC BINKSNDOPEN RADEXPLINK BinkOpenDirectSound(U32 param); // don't call directly
|
||||
#define BinkSoundUseDirectSound(lpDS) BinkSetSoundSystem(BinkOpenDirectSound,(U32)lpDS)
|
||||
|
||||
RADEXPFUNC BINKSNDOPEN RADEXPLINK BinkOpenWaveOut(U32 param); // don't call directly
|
||||
#define BinkSoundUseWaveOut() BinkSetSoundSystem(BinkOpenWaveOut,0)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __RADMAC__
|
||||
|
||||
RADEXPFUNC BINKSNDOPEN RADEXPLINK BinkOpenMiles(U32 param); // don't call directly
|
||||
#define BinkSoundUseMiles(hdigdriver) BinkSetSoundSystem(BinkOpenMiles,(U32)hdigdriver)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __RADMAC__
|
||||
|
||||
RADEXPFUNC BINKSNDOPEN RADEXPLINK BinkOpenSoundManager(U32 param); // don't call directly
|
||||
#define BinkSoundUseSoundManager() BinkSetSoundSystem(BinkOpenSoundManager,0)
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __RADLINUX__
|
||||
|
||||
RADEXPFUNC BINKSNDOPEN RADEXPLINK BinkOpenSDLMixer(U32 param); // don't call directly
|
||||
#define BinkSoundUseSDLMixer() BinkSetSoundSystem(BinkOpenSDLMixer,0)
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __RADNGC__
|
||||
|
||||
typedef void PTR4 * (RADLINK PTR4* RADARAMALLOC) ( U32 num_bytes );
|
||||
typedef void (RADLINK PTR4* RADARAMFREE) ( void PTR4 * ptr );
|
||||
|
||||
typedef struct RADARAMCALLBACKS
|
||||
{
|
||||
RADARAMALLOC aram_malloc;
|
||||
RADARAMFREE aram_free;
|
||||
} RADARAMCALLBACKS;
|
||||
|
||||
RADEXPFUNC BINKSNDOPEN RADEXPLINK BinkOpenAX(U32 param); // don't call directly
|
||||
#define BinkSoundUseAX( functions ) BinkSetSoundSystem(BinkOpenAX,(U32)functions) // takes a pointer to RADARAMCALLBACKS
|
||||
|
||||
RADEXPFUNC BINKSNDOPEN RADEXPLINK BinkOpenMusyXSound(U32 param); // don't call directly
|
||||
#define BinkSoundUseMusyX( ) BinkSetSoundSystem(BinkOpenMusyXSound,0)
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(__RADXBOX__) || defined(__RADWIN__)
|
||||
|
||||
RADEXPFUNC S32 RADEXPLINK BinkDX8SurfaceType(void* lpD3Ds);
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(__RADWIN__)
|
||||
|
||||
RADEXPFUNC S32 RADEXPLINK BinkDX9SurfaceType(void* lpD3Ds);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
// The BinkBuffer API isn't implemented on DOS, Xbox or GameCube
|
||||
#if !defined(__RADDOS__) && !defined(__RADXBOX__) && !defined(__RADNGC__)
|
||||
|
||||
//=========================================================================
|
||||
typedef struct BINKBUFFER * HBINKBUFFER;
|
||||
|
||||
#define BINKBUFFERSTRETCHXINT 0x80000000
|
||||
#define BINKBUFFERSTRETCHX 0x40000000
|
||||
#define BINKBUFFERSHRINKXINT 0x20000000
|
||||
#define BINKBUFFERSHRINKX 0x10000000
|
||||
#define BINKBUFFERSTRETCHYINT 0x08000000
|
||||
#define BINKBUFFERSTRETCHY 0x04000000
|
||||
#define BINKBUFFERSHRINKYINT 0x02000000
|
||||
#define BINKBUFFERSHRINKY 0x01000000
|
||||
#define BINKBUFFERSCALES 0xff000000
|
||||
#define BINKBUFFERRESOLUTION 0x00800000
|
||||
|
||||
#ifdef __RADMAC__
|
||||
|
||||
//#include <windows.h>
|
||||
//#include <palettes.h>
|
||||
//#include <qdoffscreen.h>
|
||||
|
||||
typedef struct BINKBUFFER {
|
||||
U32 Width;
|
||||
U32 Height;
|
||||
U32 WindowWidth;
|
||||
U32 WindowHeight;
|
||||
U32 SurfaceType;
|
||||
void* Buffer;
|
||||
S32 BufferPitch;
|
||||
U32 ScreenWidth;
|
||||
U32 ScreenHeight;
|
||||
U32 ScreenDepth;
|
||||
U32 ScaleFlags;
|
||||
|
||||
S32 destx,desty;
|
||||
S32 wndx,wndy;
|
||||
U32 wnd;
|
||||
|
||||
S32 noclipping;
|
||||
U32 type;
|
||||
S32 issoftcur;
|
||||
U32 cursorcount;
|
||||
|
||||
} BINKBUFFER;
|
||||
|
||||
|
||||
#define BINKBUFFERAUTO 0
|
||||
#define BINKBUFFERDIRECT 1
|
||||
#define BINKBUFFERGWORLD 2
|
||||
#define BINKBUFFERTYPEMASK 31
|
||||
|
||||
RADEXPFUNC HBINKBUFFER RADEXPLINK BinkBufferOpen( void* /*WindowPtr*/ wnd, U32 width, U32 height, U32 bufferflags);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkGDSurfaceType( void* /*GDHandle*/ gd );
|
||||
RADEXPFUNC S32 RADEXPLINK BinkIsSoftwareCursor(void* /*GDHandle*/ gd);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkCheckCursor(void* /*WindowPtr*/ wp,S32 x,S32 y,S32 w,S32 h);
|
||||
|
||||
#else
|
||||
|
||||
typedef struct BINKBUFFER {
|
||||
U32 Width;
|
||||
U32 Height;
|
||||
U32 WindowWidth;
|
||||
U32 WindowHeight;
|
||||
U32 SurfaceType;
|
||||
void* Buffer;
|
||||
S32 BufferPitch;
|
||||
S32 ClientOffsetX;
|
||||
S32 ClientOffsetY;
|
||||
U32 ScreenWidth;
|
||||
U32 ScreenHeight;
|
||||
U32 ScreenDepth;
|
||||
U32 ExtraWindowWidth;
|
||||
U32 ExtraWindowHeight;
|
||||
U32 ScaleFlags;
|
||||
U32 StretchWidth;
|
||||
U32 StretchHeight;
|
||||
|
||||
S32 surface;
|
||||
void* ddsurface;
|
||||
void* ddclipper;
|
||||
S32 destx,desty;
|
||||
S32 wndx,wndy;
|
||||
U32 wnd;
|
||||
S32 minimized;
|
||||
S32 ddoverlay;
|
||||
S32 ddoffscreen;
|
||||
S32 lastovershow;
|
||||
|
||||
S32 issoftcur;
|
||||
U32 cursorcount;
|
||||
void* buffertop;
|
||||
U32 type;
|
||||
S32 noclipping;
|
||||
|
||||
S32 loadeddd;
|
||||
S32 loadedwin;
|
||||
|
||||
void* dibh;
|
||||
void* dibbuffer;
|
||||
S32 dibpitch;
|
||||
void* dibinfo;
|
||||
U32 dibdc;
|
||||
U32 diboldbitmap;
|
||||
|
||||
} BINKBUFFER;
|
||||
|
||||
|
||||
#define BINKBUFFERAUTO 0
|
||||
#define BINKBUFFERPRIMARY 1
|
||||
#define BINKBUFFERDIBSECTION 2
|
||||
#define BINKBUFFERYV12OVERLAY 3
|
||||
#define BINKBUFFERYUY2OVERLAY 4
|
||||
#define BINKBUFFERUYVYOVERLAY 5
|
||||
#define BINKBUFFERYV12OFFSCREEN 6
|
||||
#define BINKBUFFERYUY2OFFSCREEN 7
|
||||
#define BINKBUFFERUYVYOFFSCREEN 8
|
||||
#define BINKBUFFERRGBOFFSCREENVIDEO 9
|
||||
#define BINKBUFFERRGBOFFSCREENSYSTEM 10
|
||||
#define BINKBUFFERLAST 10
|
||||
#define BINKBUFFERTYPEMASK 31
|
||||
|
||||
RADEXPFUNC HBINKBUFFER RADEXPLINK BinkBufferOpen( void* /*HWND*/ wnd, U32 width, U32 height, U32 bufferflags);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkBufferSetHWND( HBINKBUFFER buf, void* /*HWND*/ newwnd);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkDDSurfaceType(void PTR4* lpDDS);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkIsSoftwareCursor(void PTR4* lpDDSP, void* /*HCURSOR*/ cur);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkCheckCursor(void* /*HWND*/ wnd,S32 x,S32 y,S32 w,S32 h);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkBufferSetDirectDraw(void PTR4* lpDirectDraw, void PTR4* lpPrimary);
|
||||
|
||||
#endif
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkBufferClose( HBINKBUFFER buf);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkBufferLock( HBINKBUFFER buf);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkBufferUnlock( HBINKBUFFER buf);
|
||||
RADEXPFUNC void RADEXPLINK BinkBufferSetResolution( S32 w, S32 h, S32 bits);
|
||||
RADEXPFUNC void RADEXPLINK BinkBufferCheckWinPos( HBINKBUFFER buf, S32 PTR4* NewWindowX, S32 PTR4* NewWindowY);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkBufferSetOffset( HBINKBUFFER buf, S32 destx, S32 desty);
|
||||
RADEXPFUNC void RADEXPLINK BinkBufferBlit( HBINKBUFFER buf, BINKRECT PTR4* rects, U32 numrects );
|
||||
RADEXPFUNC S32 RADEXPLINK BinkBufferSetScale( HBINKBUFFER buf, U32 w, U32 h);
|
||||
RADEXPFUNC char PTR4* RADEXPLINK BinkBufferGetDescription( HBINKBUFFER buf);
|
||||
RADEXPFUNC char PTR4* RADEXPLINK BinkBufferGetError();
|
||||
RADEXPFUNC void RADEXPLINK BinkRestoreCursor(S32 checkcount);
|
||||
RADEXPFUNC S32 RADEXPLINK BinkBufferClear(HBINKBUFFER buf, U32 RGB);
|
||||
|
||||
#endif
|
||||
|
||||
typedef void PTR4* (RADLINK PTR4* BINKMEMALLOC) (U32 bytes);
|
||||
typedef void (RADLINK PTR4* BINKMEMFREE) (void PTR4* ptr);
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkSetMemory(BINKMEMALLOC a,BINKMEMFREE f);
|
||||
|
||||
#ifdef __RADMAC__
|
||||
|
||||
#pragma export off
|
||||
|
||||
#endif
|
||||
|
||||
RADDEFEND
|
||||
|
||||
#endif
|
||||
|
||||
// @cdep pre $set(INCs,$INCs -I$clipfilename($file)) $ignore(TakeCPP)
|
||||
|
||||
#endif
|
||||
|
||||
BIN
game_re/third_party/bink/binkw32.dll
vendored
BIN
game_re/third_party/bink/binkw32.dll
vendored
Binary file not shown.
BIN
game_re/third_party/bink/binkw32.lib
vendored
BIN
game_re/third_party/bink/binkw32.lib
vendored
Binary file not shown.
389
game_re/third_party/bink/radbase.h
vendored
389
game_re/third_party/bink/radbase.h
vendored
@@ -1,389 +0,0 @@
|
||||
// __RAD16__ means 16 bit code (Win16)
|
||||
// __RAD32__ means 32 bit code (DOS, Win386, Win32s, Mac)
|
||||
|
||||
// __RADDOS__ means DOS code (16 or 32 bit)
|
||||
// __RADWIN__ means Windows code (Win16, Win386, Win32s)
|
||||
// __RADWINEXT__ means Windows 386 extender (Win386)
|
||||
// __RADNT__ means Win32s code
|
||||
// __RADMAC__ means Macintosh
|
||||
// __RADCARBON__ means Carbon
|
||||
// __RADMACH__ means MachO
|
||||
// __RADXBOX__ means the XBox console
|
||||
// __RADNGC__ means the Nintendo GameCube
|
||||
// __RADNTBUILDLINUX__ means building Linux on NT
|
||||
// __RADLINUX__ means actually building on Linux (most likely with GCC)
|
||||
|
||||
// __RADX86__ means Intel x86
|
||||
// __RADMMX__ means Intel x86 MMX instructions are allowed
|
||||
// __RAD68K__ means 68K
|
||||
// __RADPPC__ means PowerPC
|
||||
|
||||
// __RADLITTLEENDIAN__ means processor is little-endian (x86)
|
||||
// __RADBIGENDIAN__ means processor is big-endian (680x0, PPC)
|
||||
|
||||
#ifndef __RADBASEH__
|
||||
#define __RADBASEH__
|
||||
|
||||
#define RADCOPYRIGHT "Copyright (C) 1994-2003, RAD Game Tools, Inc."
|
||||
|
||||
#ifndef __RADRES__
|
||||
|
||||
#if defined(GEKKO)
|
||||
|
||||
#define __RADNGC__
|
||||
#define __RAD32__
|
||||
#define __RADPPC__
|
||||
#define __RADBIGENDIAN__
|
||||
#define RADINLINE inline
|
||||
|
||||
#elif (defined(__MWERKS__) && !defined(__INTEL__)) || defined(__MRC__) || defined(THINK_C) || defined(powerc) || defined(macintosh) || defined(__powerc) || defined(__APPLE__) || defined(__MACH__)
|
||||
#define __RADMAC__
|
||||
#if defined(powerc) || defined(__powerc) || defined(__ppc__)
|
||||
#define __RADPPC__
|
||||
#else
|
||||
#define __RAD68K__
|
||||
#endif
|
||||
|
||||
#define __RAD32__
|
||||
#define __RADBIGENDIAN__
|
||||
|
||||
#if defined(__MWERKS__)
|
||||
#if (defined(__cplusplus) || ! __option(only_std_keywords))
|
||||
#define RADINLINE inline
|
||||
#endif
|
||||
#elif defined(__MRC__)
|
||||
#if defined(__cplusplus)
|
||||
#define RADINLINE inline
|
||||
#endif
|
||||
#elif defined(__GNUC__) || defined(__GNUG__)
|
||||
#define RADINLINE inline
|
||||
#define __RADMACH__
|
||||
#endif
|
||||
|
||||
#ifdef __MACH__
|
||||
#define __RADMACH__
|
||||
#endif
|
||||
|
||||
#ifdef TARGET_API_MAC_CARBON
|
||||
#if TARGET_API_MAC_CARBON
|
||||
#ifndef __RADCARBON__
|
||||
#define __RADCARBON__
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#elif defined(linux)
|
||||
|
||||
#define __RADLINUX__
|
||||
#define __RADX86__
|
||||
#define __RADMMX__
|
||||
#define __RAD32__
|
||||
#define __RADLITTLEENDIAN__
|
||||
#define RADINLINE inline
|
||||
|
||||
#else
|
||||
|
||||
#define __RADX86__
|
||||
#define __RADMMX__
|
||||
|
||||
#ifdef __MWERKS__
|
||||
#define _WIN32
|
||||
#endif
|
||||
|
||||
#ifdef __DOS__
|
||||
#define __RADDOS__
|
||||
#endif
|
||||
|
||||
#ifdef __386__
|
||||
#define __RAD32__
|
||||
#endif
|
||||
|
||||
#ifdef _Windows //For Borland
|
||||
#ifdef __WIN32__
|
||||
#define WIN32
|
||||
#else
|
||||
#define __WINDOWS__
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _WINDOWS //For MS
|
||||
#ifndef _WIN32
|
||||
#define __WINDOWS__
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifdef _XBOX
|
||||
#define __RADXBOX__
|
||||
#else
|
||||
#define __RADNT__
|
||||
#endif
|
||||
#define __RADWIN__
|
||||
#define __RAD32__
|
||||
#else
|
||||
#ifdef __NT__
|
||||
#ifdef _XBOX
|
||||
#define __RADXBOX__
|
||||
#else
|
||||
#define __RADNT__
|
||||
#endif
|
||||
#define __RADWIN__
|
||||
#define __RAD32__
|
||||
#else
|
||||
#ifdef __WINDOWS_386__
|
||||
#define __RADWIN__
|
||||
#define __RADWINEXT__
|
||||
#define __RAD32__
|
||||
#else
|
||||
#ifdef __WINDOWS__
|
||||
#define __RADWIN__
|
||||
#define __RAD16__
|
||||
#else
|
||||
#ifdef WIN32
|
||||
#ifdef _XBOX
|
||||
#define __RADXBOX__
|
||||
#else
|
||||
#define __RADNT__
|
||||
#endif
|
||||
#define __RADWIN__
|
||||
#define __RAD32__
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define __RADLITTLEENDIAN__
|
||||
#ifdef __WATCOMC__
|
||||
#define RADINLINE
|
||||
#else
|
||||
#define RADINLINE __inline
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if (!defined(__RADDOS__) && !defined(__RADWIN__) && !defined(__RADMAC__) && !defined(__RADNGC__) && !defined(__RADXBOX__) && !defined(__RADLINUX__))
|
||||
#error "RAD.H did not detect your platform. Define __DOS__, __WINDOWS__, WIN32, macintosh, or powerc."
|
||||
#endif
|
||||
|
||||
#ifdef __RADFINAL__
|
||||
#define RADTODO(str) { char __str[0]=str; }
|
||||
#else
|
||||
#define RADTODO(str)
|
||||
#endif
|
||||
|
||||
#ifdef __RADNGC__
|
||||
|
||||
#define RADLINK
|
||||
#define RADEXPLINK
|
||||
#define RADEXPFUNC RADDEFFUNC
|
||||
#define RADASMLINK
|
||||
#define PTR4
|
||||
|
||||
#elif defined(__RADLINUX__)
|
||||
|
||||
#define RADLINK __attribute__((cdecl))
|
||||
#define RADEXPLINK __attribute__((cdecl))
|
||||
#define RADEXPFUNC RADDEFFUNC
|
||||
#define RADASMLINK
|
||||
#define PTR4
|
||||
|
||||
#elif defined(__RADMAC__)
|
||||
|
||||
// this define is for CodeWarrior 11's stupid new libs (even though
|
||||
// we don't use longlong's).
|
||||
|
||||
#define __MSL_LONGLONG_SUPPORT__
|
||||
|
||||
#define RADLINK
|
||||
#define RADEXPLINK
|
||||
|
||||
#ifdef __CFM68K__
|
||||
#ifdef __RADINDLL__
|
||||
#define RADEXPFUNC RADDEFFUNC __declspec(export)
|
||||
#else
|
||||
#define RADEXPFUNC RADDEFFUNC __declspec(import)
|
||||
#endif
|
||||
#else
|
||||
#define RADEXPFUNC RADDEFFUNC
|
||||
#endif
|
||||
#define RADASMLINK
|
||||
|
||||
#else
|
||||
|
||||
#ifdef __RADNT__
|
||||
#ifndef _WIN32
|
||||
#define _WIN32
|
||||
#endif
|
||||
#ifndef WIN32
|
||||
#define WIN32
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __RADWIN__
|
||||
#ifdef __RAD32__
|
||||
#ifdef __RADXBOX__
|
||||
|
||||
#define RADLINK __stdcall
|
||||
#define RADEXPLINK __stdcall
|
||||
#define RADEXPFUNC RADDEFFUNC
|
||||
|
||||
#elif defined(__RADNTBUILDLINUX__)
|
||||
|
||||
#define RADLINK __cdecl
|
||||
#define RADEXPLINK __cdecl
|
||||
#define RADEXPFUNC RADDEFFUNC
|
||||
|
||||
#else
|
||||
#ifdef __RADNT__
|
||||
|
||||
#define RADLINK __stdcall
|
||||
#define RADEXPLINK __stdcall
|
||||
|
||||
#ifdef __RADINEXE__
|
||||
#define RADEXPFUNC RADDEFFUNC
|
||||
#else
|
||||
#ifndef __RADINDLL__
|
||||
#define RADEXPFUNC RADDEFFUNC __declspec(dllimport)
|
||||
#ifdef __BORLANDC__
|
||||
#if __BORLANDC__<=0x460
|
||||
#undef RADEXPFUNC
|
||||
#define RADEXPFUNC RADDEFFUNC
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#define RADEXPFUNC RADDEFFUNC __declspec(dllexport)
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#define RADLINK __pascal
|
||||
#define RADEXPLINK __far __pascal
|
||||
#define RADEXPFUNC RADDEFFUNC
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#define RADLINK __pascal
|
||||
#define RADEXPLINK __far __pascal __export
|
||||
#define RADEXPFUNC RADDEFFUNC
|
||||
#endif
|
||||
#else
|
||||
#define RADLINK __pascal
|
||||
#define RADEXPLINK __pascal
|
||||
#define RADEXPFUNC RADDEFFUNC
|
||||
#endif
|
||||
|
||||
#define RADASMLINK __cdecl
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef __RADXBOX__
|
||||
#ifdef __RADWIN__
|
||||
#ifndef _WINDOWS
|
||||
#define _WINDOWS
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef RADDEFFUNC
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define RADDEFFUNC extern "C"
|
||||
#define RADDEFSTART extern "C" {
|
||||
#define RADDEFEND }
|
||||
#define RADDEFINEDATA extern "C"
|
||||
#define RADDECLAREDATA extern "C"
|
||||
#define RADDEFAULT( val ) =val
|
||||
#else
|
||||
#define RADDEFFUNC
|
||||
#define RADDEFSTART
|
||||
#define RADDEFEND
|
||||
#define RADDEFINEDATA
|
||||
#define RADDECLAREDATA extern
|
||||
#define RADDEFAULT( val )
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __RADNGC__
|
||||
#define RAD_ATTRIBUTE_ALIGN(num) __attribute__ ((aligned (num)))
|
||||
#else
|
||||
#ifdef __RADX86__
|
||||
#ifdef __WATCOMC__
|
||||
#define RAD_ATTRIBUTE_ALIGN(num)
|
||||
#else
|
||||
#define RAD_ATTRIBUTE_ALIGN(num) __declspec(align(num))
|
||||
#endif
|
||||
#else
|
||||
#define RAD_ATTRIBUTE_ALIGN(num)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __RADX86__
|
||||
#ifdef __WATCOMC__
|
||||
#define RAD_ALIGN_TYPE double
|
||||
#define RAD_ALIGN_DEF 0.0
|
||||
#else
|
||||
#define RAD_ALIGN_TYPE double __declspec(align(8))
|
||||
#define RAD_ALIGN_DEF 0.0
|
||||
#endif
|
||||
#else
|
||||
#define RAD_ALIGN_TYPE double
|
||||
#define RAD_ALIGN_DEF 0.0
|
||||
#endif
|
||||
|
||||
#define RAD_ALIGN_ADD_TYPE(var) RAD_ALIGN_TYPE var##align = RAD_ALIGN_DEF
|
||||
|
||||
#define S8 signed char
|
||||
#define U8 unsigned char
|
||||
#define U32 unsigned long
|
||||
#define S32 signed long
|
||||
#define F32 float
|
||||
#define F64 double
|
||||
|
||||
#if defined(__MWERKS__) || defined(__MRC__) || defined( GEKKO )
|
||||
#define U64 unsigned long long
|
||||
#define S64 signed long long
|
||||
#else
|
||||
#define U64 unsigned __int64
|
||||
#define S64 signed __int64
|
||||
#endif
|
||||
|
||||
#ifdef __RAD32__
|
||||
#define PTR4
|
||||
#define U16 unsigned short
|
||||
#define S16 signed short
|
||||
#else
|
||||
#define PTR4 __far
|
||||
#define U16 unsigned int
|
||||
#define S16 signed int
|
||||
#endif
|
||||
|
||||
#ifndef RAD_NO_LOWERCASE_TYPES
|
||||
|
||||
#ifdef __RADNGC__
|
||||
|
||||
// Unfortunately dolphin\types.h typedefs the
|
||||
// same types that we use.
|
||||
// So we use the typedefs for this platform.
|
||||
|
||||
#include <dolphin\types.h>
|
||||
|
||||
#else
|
||||
|
||||
#define u8 U8
|
||||
#define s8 S8
|
||||
#define u16 U16
|
||||
#define s16 S16
|
||||
#define u32 U32
|
||||
#define s32 S32
|
||||
#define u64 U64
|
||||
#define s64 S64
|
||||
#define f32 F32
|
||||
#define f64 F64
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
620
game_re/third_party/bink10p/bink.h
vendored
620
game_re/third_party/bink10p/bink.h
vendored
@@ -1,620 +0,0 @@
|
||||
#ifndef BINKH
|
||||
#define BINKH
|
||||
|
||||
#define BINKVERSION "1.0p"
|
||||
#define BINKDATE "2000-06-26"
|
||||
|
||||
#ifndef __RADRES__
|
||||
|
||||
#include "rad.h"
|
||||
|
||||
RADDEFSTART
|
||||
|
||||
typedef struct BINK PTR4* HBINK;
|
||||
|
||||
typedef s32 (RADLINK PTR4* BINKIOOPEN) (struct BINKIO PTR4* Bnkio, const char PTR4 *name, u32 flags);
|
||||
typedef u32 (RADLINK PTR4* BINKIOREADHEADER) (struct BINKIO PTR4* Bnkio, s32 Offset, void PTR4* Dest,u32 Size);
|
||||
typedef u32 (RADLINK PTR4* BINKIOREADFRAME) (struct BINKIO PTR4* Bnkio, u32 Framenum,s32 origofs,void PTR4* dest,u32 size);
|
||||
typedef u32 (RADLINK PTR4* BINKIOGETBUFFERSIZE)(struct BINKIO PTR4* Bnkio, u32 Size);
|
||||
typedef void (RADLINK PTR4* BINKIOSETINFO) (struct BINKIO PTR4* Bnkio, void PTR4* Buf,u32 Size,u32 FileSize,u32 simulate);
|
||||
typedef u32 (RADLINK PTR4* BINKIOIDLE) (struct BINKIO PTR4* Bnkio);
|
||||
typedef void (RADLINK PTR4* BINKIOCLOSE) (struct BINKIO PTR4* Bnkio);
|
||||
|
||||
typedef struct BINKIO {
|
||||
BINKIOREADHEADER ReadHeader;
|
||||
BINKIOREADFRAME ReadFrame;
|
||||
BINKIOGETBUFFERSIZE GetBufferSize;
|
||||
BINKIOSETINFO SetInfo;
|
||||
BINKIOIDLE Idle;
|
||||
BINKIOCLOSE Close;
|
||||
HBINK bink;
|
||||
volatile u32 ReadError;
|
||||
volatile u32 DoingARead;
|
||||
volatile u32 BytesRead;
|
||||
volatile u32 Working;
|
||||
volatile u32 TotalTime;
|
||||
volatile u32 ForegroundTime;
|
||||
volatile u32 IdleTime;
|
||||
volatile u32 ThreadTime;
|
||||
volatile u32 BufSize;
|
||||
volatile u32 BufHighUsed;
|
||||
volatile u32 CurBufSize;
|
||||
volatile u32 CurBufUsed;
|
||||
volatile u8 iodata[128];
|
||||
} BINKIO;
|
||||
|
||||
typedef s32 (RADLINK PTR4* BINKSNDOPEN) (struct BINKSND PTR4* BnkSnd, u32 freq, s32 bits, s32 chans, u32 flags, HBINK bink);
|
||||
typedef s32 (RADLINK PTR4* BINKSNDREADY) (struct BINKSND PTR4* BnkSnd);
|
||||
typedef s32 (RADLINK PTR4* BINKSNDLOCK) (struct BINKSND PTR4* BnkSnd, u8 PTR4* PTR4* addr, u32 PTR4* len);
|
||||
typedef s32 (RADLINK PTR4* BINKSNDUNLOCK) (struct BINKSND PTR4* BnkSnd, u32 filled);
|
||||
typedef void (RADLINK PTR4* BINKSNDVOLUME) (struct BINKSND PTR4* BnkSnd, s32 volume);
|
||||
typedef void (RADLINK PTR4* BINKSNDPAN) (struct BINKSND PTR4* BnkSnd, s32 pan);
|
||||
typedef s32 (RADLINK PTR4* BINKSNDONOFF) (struct BINKSND PTR4* BnkSnd, s32 status);
|
||||
typedef s32 (RADLINK PTR4* BINKSNDPAUSE) (struct BINKSND PTR4* BnkSnd, s32 status);
|
||||
typedef void (RADLINK PTR4* BINKSNDCLOSE) (struct BINKSND PTR4* BnkSnd);
|
||||
|
||||
typedef BINKSNDOPEN (RADLINK PTR4* BINKSNDSYSOPEN) (u32 param);
|
||||
|
||||
typedef struct BINKSND {
|
||||
BINKSNDREADY Ready;
|
||||
BINKSNDLOCK Lock;
|
||||
BINKSNDUNLOCK Unlock;
|
||||
BINKSNDVOLUME Volume;
|
||||
BINKSNDPAN Pan;
|
||||
BINKSNDPAUSE Pause;
|
||||
BINKSNDONOFF SetOnOff;
|
||||
BINKSNDCLOSE Close;
|
||||
u32 BestSizeIn16;
|
||||
u32 SoundDroppedOut;
|
||||
s32 OnOff;
|
||||
u32 Latency;
|
||||
u32 freq;
|
||||
s32 bits,chans;
|
||||
u8 snddata[128];
|
||||
} BINKSND;
|
||||
|
||||
typedef struct BINKRECT {
|
||||
s32 Left,Top,Width,Height;
|
||||
} BINKRECT;
|
||||
|
||||
#define BINKMAXDIRTYRECTS 8
|
||||
|
||||
typedef struct BUNDLEPOINTERS {
|
||||
void* typeptr;
|
||||
void* type16ptr;
|
||||
void* colorptr;
|
||||
void* bits2ptr;
|
||||
void* motionXptr;
|
||||
void* motionYptr;
|
||||
void* dctptr;
|
||||
void* mdctptr;
|
||||
void* patptr;
|
||||
} BUNDLEPOINTERS;
|
||||
|
||||
|
||||
typedef struct BINK {
|
||||
u32 Width; // Width (1 based, 640 for example)
|
||||
u32 Height; // Height (1 based, 480 for example)
|
||||
u32 Frames; // Number of frames (1 based, 100 = 100 frames)
|
||||
u32 FrameNum; // Frame to *be* displayed (1 based)
|
||||
u32 LastFrameNum; // Last frame decompressed or skipped (1 based)
|
||||
|
||||
u32 FrameRate; // Frame Rate Numerator
|
||||
u32 FrameRateDiv; // Frame Rate Divisor (frame rate=numerator/divisor)
|
||||
|
||||
u32 ReadError; // Non-zero if a read error has ocurred
|
||||
u32 OpenFlags; // flags used on open
|
||||
u32 BinkType; // Bink flags
|
||||
|
||||
u32 Size; // size of file
|
||||
u32 FrameSize; // The current frame's size in bytes
|
||||
u32 SndSize; // The current frame sound tracks' size in bytes
|
||||
|
||||
BINKRECT FrameRects[BINKMAXDIRTYRECTS];// Dirty rects from BinkGetRects
|
||||
s32 NumRects;
|
||||
|
||||
u32 PlaneNum; // which set of planes is current
|
||||
void PTR4* YPlane[2]; // pointer to the uncompressed Y (Cr and Cr follow)
|
||||
void PTR4* APlane[2]; // decompressed alpha plane (if present)
|
||||
u32 YWidth; // widths and heights of the video planes
|
||||
u32 YHeight;
|
||||
u32 UVWidth;
|
||||
u32 UVHeight;
|
||||
|
||||
void PTR4* MaskPlane; // pointer to the mask plane (Ywidth/16*Yheight/16)
|
||||
u32 MaskPitch; // Mask Pitch
|
||||
u32 MaskLength; // total length of the mask plane
|
||||
|
||||
u32 LargestFrameSize; // Largest frame size
|
||||
u32 InternalFrames; // how many frames were potentially compressed
|
||||
|
||||
s32 NumTracks; // how many tracks
|
||||
|
||||
u32 Highest1SecRate; // Highest 1 sec data rate
|
||||
u32 Highest1SecFrame; // Highest 1 sec data rate starting frame
|
||||
|
||||
s32 Paused; // is the bink movie paused?
|
||||
|
||||
u32 BackgroundThread; // handle to background thread
|
||||
|
||||
// everything below is for internal Bink use
|
||||
|
||||
void PTR4* compframe; // compressed frame data
|
||||
void PTR4* preloadptr; // preloaded compressed frame data
|
||||
u32* frameoffsets; // offsets of each of the frames
|
||||
|
||||
BINKIO bio; // IO structure
|
||||
u8 PTR4* ioptr; // io buffer ptr
|
||||
u32 iosize; // io buffer size
|
||||
u32 decompwidth; // width not include scaling
|
||||
u32 decompheight; // height not include scaling
|
||||
|
||||
s32 trackindex; // track index
|
||||
u32 PTR4* tracksizes; // largest single frame of track
|
||||
u32 PTR4* tracktypes; // type of each sound track
|
||||
s32 PTR4* trackIDs; // external track numbers
|
||||
|
||||
u32 numrects; // number of rects from BinkGetRects
|
||||
|
||||
u32 playedframes; // how many frames have we played
|
||||
u32 firstframetime; // very first frame start
|
||||
u32 startframetime; // start frame start
|
||||
u32 startblittime; // start of blit period
|
||||
u32 startsynctime; // start of synched time
|
||||
u32 startsyncframe; // frame of startsynctime
|
||||
u32 twoframestime; // two frames worth of time
|
||||
u32 entireframetime; // entire frame time
|
||||
|
||||
u32 slowestframetime; // slowest frame in ms
|
||||
u32 slowestframe; // slowest frame number
|
||||
u32 slowest2frametime; // second slowest frame in ms
|
||||
u32 slowest2frame; // second slowest frame
|
||||
|
||||
u32 soundon; // sound turned on?
|
||||
u32 videoon; // video turned on?
|
||||
|
||||
u32 totalmem; // total memory used
|
||||
u32 timevdecomp; // total time decompressing video
|
||||
u32 timeadecomp; // total time decompressing audio
|
||||
u32 timeblit; // total time blitting
|
||||
u32 timeopen; // total open time
|
||||
|
||||
u32 fileframerate; // frame rate originally in the file
|
||||
u32 fileframeratediv;
|
||||
|
||||
volatile u32 threadcontrol; // controls the background reading thread
|
||||
|
||||
u32 runtimeframes; // max frames for runtime analysis
|
||||
u32 runtimemoveamt; // bytes to move each frame
|
||||
u32 PTR4* rtframetimes; // start times for runtime frames
|
||||
u32 PTR4* rtadecomptimes; // decompress times for runtime frames
|
||||
u32 PTR4* rtvdecomptimes; // decompress times for runtime frames
|
||||
u32 PTR4* rtblittimes; // blit times for runtime frames
|
||||
u32 PTR4* rtreadtimes; // read times for runtime frames
|
||||
u32 PTR4* rtidlereadtimes; // idle read times for runtime frames
|
||||
u32 PTR4* rtthreadreadtimes;// thread read times for runtime frames
|
||||
|
||||
u32 lastblitflags; // flags used on last blit
|
||||
u32 lastdecompframe; // last frame number decompressed
|
||||
|
||||
u32 sndbufsize; // sound buffer size
|
||||
u8 PTR4* sndbuf; // sound buffer
|
||||
u8 PTR4* sndend; // end of the sound buffer
|
||||
u8 PTR4* sndwritepos; // current write position
|
||||
u8 PTR4* sndreadpos; // current read position
|
||||
u32 sndcomp; // sound compression handle
|
||||
u32 sndamt; // amount of sound currently in the buffer
|
||||
volatile u32 sndreenter; // re-entrancy check on the sound
|
||||
u32 sndconvert8; // convert back to 8-bit sound at runtime
|
||||
BINKSND bsnd; // SND structure
|
||||
u32 skippedlastblit; // skipped last frame?
|
||||
u32 skippedblits; // how many blits were skipped
|
||||
u32 soundskips; // number of sound stops
|
||||
u32 sndendframe; // frame number that the sound ends on
|
||||
u32 sndprime; // amount of data to prime the playahead
|
||||
u32 sndpad; // padded this much audio
|
||||
|
||||
BUNDLEPOINTERS bunp; // pointers to internal temporary memory
|
||||
} BINK;
|
||||
|
||||
|
||||
typedef struct BINKSUMMARY {
|
||||
u32 Width; // Width of frames
|
||||
u32 Height; // Height of frames
|
||||
u32 TotalTime; // total time (ms)
|
||||
u32 FileFrameRate; // frame rate
|
||||
u32 FileFrameRateDiv; // frame rate divisor
|
||||
u32 FrameRate; // frame rate
|
||||
u32 FrameRateDiv; // frame rate divisor
|
||||
u32 TotalOpenTime; // Time to open and prepare for decompression
|
||||
u32 TotalFrames; // Total Frames
|
||||
u32 TotalPlayedFrames; // Total Frames played
|
||||
u32 SkippedFrames; // Total number of skipped frames
|
||||
u32 SkippedBlits; // Total number of skipped blits
|
||||
u32 SoundSkips; // Total number of sound skips
|
||||
u32 TotalBlitTime; // Total time spent blitting
|
||||
u32 TotalReadTime; // Total time spent reading
|
||||
u32 TotalVideoDecompTime; // Total time spent decompressing video
|
||||
u32 TotalAudioDecompTime; // Total time spent decompressing audio
|
||||
u32 TotalIdleReadTime; // Total time spent reading while idle
|
||||
u32 TotalBackReadTime; // Total time spent reading in background
|
||||
u32 TotalReadSpeed; // Total io speed (bytes/second)
|
||||
u32 SlowestFrameTime; // Slowest single frame time (ms)
|
||||
u32 Slowest2FrameTime; // Second slowest single frame time (ms)
|
||||
u32 SlowestFrameNum; // Slowest single frame number
|
||||
u32 Slowest2FrameNum; // Second slowest single frame number
|
||||
u32 AverageDataRate; // Average data rate of the movie
|
||||
u32 AverageFrameSize; // Average size of the frame
|
||||
u32 HighestMemAmount; // Highest amount of memory allocated
|
||||
u32 TotalIOMemory; // Total extra memory allocated
|
||||
u32 HighestIOUsed; // Highest extra memory actually used
|
||||
u32 Highest1SecRate; // Highest 1 second rate
|
||||
u32 Highest1SecFrame; // Highest 1 second start frame
|
||||
} BINKSUMMARY;
|
||||
|
||||
|
||||
typedef struct BINKREALTIME {
|
||||
u32 FrameNum; // Current frame number
|
||||
u32 FrameRate; // frame rate
|
||||
u32 FrameRateDiv; // frame rate divisor
|
||||
u32 Frames; // frames in this sample period
|
||||
u32 FramesTime; // time is ms for these frames
|
||||
u32 FramesVideoDecompTime; // time decompressing these frames
|
||||
u32 FramesAudioDecompTime; // time decompressing these frames
|
||||
u32 FramesReadTime; // time reading these frames
|
||||
u32 FramesIdleReadTime; // time reading these frames at idle
|
||||
u32 FramesThreadReadTime; // time reading these frames in background
|
||||
u32 FramesBlitTime; // time blitting these frames
|
||||
u32 ReadBufferSize; // size of read buffer
|
||||
u32 ReadBufferUsed; // amount of read buffer currently used
|
||||
u32 FramesDataRate; // data rate for these frames
|
||||
} BINKREALTIME;
|
||||
|
||||
#define BINKMARKER1 'fKIB'
|
||||
#define BINKMARKER2 'gKIB' // new Bink files use this tag
|
||||
#define BINKMARKER3 'hKIB' // newer Bink files use this tag
|
||||
#define BINKMARKER4 'iKIB' // even newer Bink files use this tag
|
||||
|
||||
typedef struct BINKHDR {
|
||||
u32 Marker; // Bink marker
|
||||
u32 Size; // size of the file-8
|
||||
u32 Frames; // Number of frames (1 based, 100 = 100 frames)
|
||||
u32 LargestFrameSize; // Size in bytes of largest frame
|
||||
u32 InternalFrames; // Number of internal frames
|
||||
|
||||
u32 Width; // Width (1 based, 640 for example)
|
||||
u32 Height; // Height (1 based, 480 for example)
|
||||
u32 FrameRate; // frame rate
|
||||
u32 FrameRateDiv; // frame rate divisor (framerate/frameratediv=fps)
|
||||
|
||||
u32 Flags; // height compression options
|
||||
u32 NumTracks; // number of tracks
|
||||
} BINKHDR;
|
||||
|
||||
|
||||
//=======================================================================
|
||||
#define BINKFRAMERATE 0x00001000L // Override fr (call BinkFrameRate first)
|
||||
#define BINKPRELOADALL 0x00002000L // Preload the entire animation
|
||||
#define BINKSNDTRACK 0x00004000L // Set the track number to play
|
||||
#define BINKOLDFRAMEFORMAT 0x00008000L // using the old Bink frame format (internal use only)
|
||||
#define BINKRBINVERT 0x00010000L // use reversed R and B planes (internal use only)
|
||||
#define BINKGRAYSCALE 0x00020000L // Force Bink to use grayscale
|
||||
#define BINKNOMMX 0x00040000L // Don't use MMX
|
||||
#define BINKNOSKIP 0x00080000L // Don't skip frames if falling behind
|
||||
#define BINKALPHA 0x00100000L // Decompress alpha plane (if present)
|
||||
#define BINKNOFILLIOBUF 0x00200000L // Fill the IO buffer in SmackOpen
|
||||
#define BINKSIMULATE 0x00400000L // Simulate the speed (call BinkSim first)
|
||||
#define BINKFILEHANDLE 0x00800000L // Use when passing in a file handle
|
||||
#define BINKIOSIZE 0x01000000L // Set an io size (call BinkIOSize first)
|
||||
#define BINKIOPROCESSOR 0x02000000L // Set an io processor (call BinkIO first)
|
||||
#define BINKFROMMEMORY 0x04000000L // Use when passing in a pointer to the file
|
||||
#define BINKNOTHREADEDIO 0x08000000L // Don't use a background thread for IO
|
||||
|
||||
#define BINKSURFACEFAST 0x00000000L
|
||||
#define BINKSURFACESLOW 0x08000000L
|
||||
#define BINKSURFACEDIRECT 0x04000000L
|
||||
|
||||
#define BINKCOPYALL 0x80000000L // copy all pixels (not just changed)
|
||||
#define BINKCOPY2XH 0x10000000L // Force doubling height scaling
|
||||
#define BINKCOPY2XHI 0x20000000L // Force interleaving height scaling
|
||||
#define BINKCOPY2XW 0x30000000L // copy the width zoomed by two
|
||||
#define BINKCOPY2XWH 0x40000000L // copy the width and height zoomed by two
|
||||
#define BINKCOPY2XWHI 0x50000000L // copy the width and height zoomed by two
|
||||
#define BINKCOPY1XI 0x60000000L // copy the width and height zoomed by two
|
||||
#define BINKCOPYNOSCALING 0x70000000L // Force scaling off
|
||||
|
||||
//#define BINKALPHA 0x00100000L // Decompress alpha plane (if present)
|
||||
//#define BINKNOSKIP 0x00080000L // don't skip the blit if behind in sound
|
||||
//#define BINKNOMMX 0x00040000L // Don't skip frames if falling behind
|
||||
//#define BINKGRAYSCALE 0x00020000L // force Bink to use grayscale
|
||||
//#define BINKRBINVERT 0x00010000L // use reversed R and B planes
|
||||
|
||||
#define BINKSURFACE8P 0
|
||||
#define BINKSURFACE24 1
|
||||
#define BINKSURFACE24R 2
|
||||
#define BINKSURFACE32 3
|
||||
#define BINKSURFACE32R 4
|
||||
#define BINKSURFACE32A 5
|
||||
#define BINKSURFACE32RA 6
|
||||
#define BINKSURFACE4444 7
|
||||
#define BINKSURFACE5551 8
|
||||
#define BINKSURFACE555 9
|
||||
#define BINKSURFACE565 10
|
||||
#define BINKSURFACE655 11
|
||||
#define BINKSURFACE664 12
|
||||
#define BINKSURFACEYUY2 13
|
||||
#define BINKSURFACEUYVY 14
|
||||
#define BINKSURFACEYV12 15
|
||||
#define BINKSURFACEMASK 15
|
||||
|
||||
#define BINKGOTOQUICK 1
|
||||
|
||||
#define BINKGETKEYPREVIOUS 0
|
||||
#define BINKGETKEYNEXT 1
|
||||
#define BINKGETKEYCLOSEST 2
|
||||
#define BINKGETKEYNOTEQUAL 128
|
||||
|
||||
//=======================================================================
|
||||
|
||||
#ifdef __RADMAC__
|
||||
#include <files.h>
|
||||
|
||||
#pragma export on
|
||||
|
||||
RADEXPFUNC HBINK RADEXPLINK BinkMacOpen(FSSpec* fsp,u32 flags);
|
||||
#endif
|
||||
|
||||
RADEXPFUNC void PTR4* RADEXPLINK BinkLogoAddress(void);
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkSetError(const char PTR4* err);
|
||||
RADEXPFUNC char PTR4* RADEXPLINK BinkGetError(void);
|
||||
|
||||
RADEXPFUNC HBINK RADEXPLINK BinkOpen(const char PTR4* name,u32 flags);
|
||||
|
||||
RADEXPFUNC s32 RADEXPLINK BinkDoFrame(HBINK bnk);
|
||||
RADEXPFUNC void RADEXPLINK BinkNextFrame(HBINK bnk);
|
||||
RADEXPFUNC s32 RADEXPLINK BinkWait(HBINK bnk);
|
||||
RADEXPFUNC void RADEXPLINK BinkClose(HBINK bnk);
|
||||
RADEXPFUNC s32 RADEXPLINK BinkPause(HBINK bnk,s32 pause);
|
||||
RADEXPFUNC s32 RADEXPLINK BinkCopyToBuffer(HBINK bnk,void* dest,s32 destpitch,u32 destheight,u32 destx,u32 desty,u32 flags);
|
||||
RADEXPFUNC s32 RADEXPLINK BinkGetRects(HBINK bnk,u32 flags);
|
||||
RADEXPFUNC void RADEXPLINK BinkGoto(HBINK bnk,u32 frame,s32 flags); // use 1 for the first frame
|
||||
RADEXPFUNC u32 RADEXPLINK BinkGetKeyFrame(HBINK bnk,u32 frame,s32 flags);
|
||||
|
||||
RADEXPFUNC s32 RADEXPLINK BinkSetVideoOnOff(HBINK bnk,s32 onoff);
|
||||
RADEXPFUNC s32 RADEXPLINK BinkSetSoundOnOff(HBINK bnk,s32 onoff);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetVolume(HBINK bnk,s32 volume);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetPan(HBINK bnk,s32 pan);
|
||||
RADEXPFUNC void RADEXPLINK BinkService(HBINK bink);
|
||||
|
||||
typedef struct BINKTRACK PTR4* HBINKTRACK;
|
||||
|
||||
typedef struct BINKTRACK
|
||||
{
|
||||
u32 Frequency;
|
||||
u32 Bits;
|
||||
u32 Channels;
|
||||
u32 MaxSize;
|
||||
|
||||
HBINK bink;
|
||||
u32 sndcomp;
|
||||
s32 trackindex;
|
||||
} BINKTRACK;
|
||||
|
||||
|
||||
RADEXPFUNC HBINKTRACK RADEXPLINK BinkOpenTrack(HBINK bnk,u32 trackindex);
|
||||
RADEXPFUNC void RADEXPLINK BinkCloseTrack(HBINKTRACK bnkt);
|
||||
RADEXPFUNC u32 RADEXPLINK BinkGetTrackData(HBINKTRACK bnkt,void PTR4* dest);
|
||||
|
||||
RADEXPFUNC u32 RADEXPLINK BinkGetTrackType(HBINK bnk,u32 trackindex);
|
||||
RADEXPFUNC u32 RADEXPLINK BinkGetTrackMaxSize(HBINK bnk,u32 trackindex);
|
||||
RADEXPFUNC u32 RADEXPLINK BinkGetTrackID(HBINK bnk,u32 trackindex);
|
||||
RADEXPFUNC u32 RADEXPLINK BinkGetTrackLargest(HBINK bnk,u32 trackindex);
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkGetSummary(HBINK bnk,BINKSUMMARY PTR4* sum);
|
||||
RADEXPFUNC void RADEXPLINK BinkGetRealtime(HBINK bink,BINKREALTIME PTR4* run,u32 frames);
|
||||
|
||||
#define BINKNOSOUND 0xffffffff
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkSetSoundTrack(u32 track);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetIO(BINKIOOPEN io);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetFrameRate(u32 forcerate,u32 forceratediv);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetSimulate(u32 sim);
|
||||
RADEXPFUNC void RADEXPLINK BinkSetIOSize(u32 iosize);
|
||||
|
||||
RADEXPFUNC s32 RADEXPLINK BinkSetSoundSystem(BINKSNDSYSOPEN open, u32 param);
|
||||
|
||||
#ifdef __RADWIN__
|
||||
|
||||
RADEXPFUNC BINKSNDOPEN RADEXPLINK BinkOpenDirectSound(u32 param); // don't call directly
|
||||
#define BinkSoundUseDirectSound(lpDS) BinkSetSoundSystem(BinkOpenDirectSound,(u32)lpDS)
|
||||
|
||||
RADEXPFUNC BINKSNDOPEN RADEXPLINK BinkOpenWaveOut(u32 param); // don't call directly
|
||||
#define BinkSoundUseWaveOut() BinkSetSoundSystem(BinkOpenWaveOut,0)
|
||||
|
||||
#define INCLUDE_MMSYSTEM_H
|
||||
#include "windows.h"
|
||||
#include "windowsx.h"
|
||||
|
||||
#ifdef __RADNT__ // to combat WIN32_LEAN_AND_MEAN
|
||||
#include "mmsystem.h"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __RADMAC__
|
||||
|
||||
RADEXPFUNC BINKSNDOPEN RADEXPLINK BinkOpenMiles(u32 param); // don't call directly
|
||||
#define BinkSoundUseMiles(hdigdriver) BinkSetSoundSystem(BinkOpenMiles,(u32)hdigdriver)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __RADMAC__
|
||||
|
||||
RADEXPFUNC BINKSNDOPEN RADEXPLINK BinkOpenSoundManager(u32 param); // don't call directly
|
||||
#define BinkSoundUseSoundManager() BinkSetSoundSystem(BinkOpenSoundManager,0)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
// The BinkBuffer API isn't currently implemented on DOS
|
||||
#if !defined(__RADDOS__)
|
||||
|
||||
//=========================================================================
|
||||
typedef struct BINKBUFFER * HBINKBUFFER;
|
||||
|
||||
#define BINKBUFFERSTRETCHXINT 0x80000000
|
||||
#define BINKBUFFERSTRETCHX 0x40000000
|
||||
#define BINKBUFFERSHRINKXINT 0x20000000
|
||||
#define BINKBUFFERSHRINKX 0x10000000
|
||||
#define BINKBUFFERSTRETCHYINT 0x08000000
|
||||
#define BINKBUFFERSTRETCHY 0x04000000
|
||||
#define BINKBUFFERSHRINKYINT 0x02000000
|
||||
#define BINKBUFFERSHRINKY 0x01000000
|
||||
#define BINKBUFFERSCALES 0xff000000
|
||||
#define BINKBUFFERRESOLUTION 0x00800000
|
||||
|
||||
#ifdef __RADMAC__
|
||||
|
||||
#include <windows.h>
|
||||
#include <palettes.h>
|
||||
#include <qdoffscreen.h>
|
||||
|
||||
typedef struct BINKBUFFER {
|
||||
u32 Width;
|
||||
u32 Height;
|
||||
u32 WindowWidth;
|
||||
u32 WindowHeight;
|
||||
u32 SurfaceType;
|
||||
void* Buffer;
|
||||
s32 BufferPitch;
|
||||
u32 ScreenWidth;
|
||||
u32 ScreenHeight;
|
||||
u32 ScreenDepth;
|
||||
u32 ScaleFlags;
|
||||
|
||||
s32 destx,desty;
|
||||
s32 wndx,wndy;
|
||||
u32 wnd;
|
||||
|
||||
s32 noclipping;
|
||||
u32 type;
|
||||
s32 issoftcur;
|
||||
u32 cursorcount;
|
||||
|
||||
} BINKBUFFER;
|
||||
|
||||
|
||||
#define BINKBUFFERAUTO 0
|
||||
#define BINKBUFFERDIRECT 1
|
||||
#define BINKBUFFERGWORLD 2
|
||||
#define BINKBUFFERTYPEMASK 31
|
||||
|
||||
RADEXPFUNC HBINKBUFFER RADEXPLINK BinkBufferOpen( WindowPtr wnd, u32 width, u32 height, u32 bufferflags);
|
||||
RADEXPFUNC s32 RADEXPLINK BinkGDSurfaceType( GDHandle gd );
|
||||
RADEXPFUNC s32 RADEXPLINK BinkIsSoftwareCursor(GDHandle gd);
|
||||
RADEXPFUNC s32 RADEXPLINK BinkCheckCursor(WindowPtr wp,s32 x,s32 y,s32 w,s32 h);
|
||||
|
||||
#else
|
||||
|
||||
typedef struct BINKBUFFER {
|
||||
u32 Width;
|
||||
u32 Height;
|
||||
u32 WindowWidth;
|
||||
u32 WindowHeight;
|
||||
u32 SurfaceType;
|
||||
void* Buffer;
|
||||
s32 BufferPitch;
|
||||
s32 ClientOffsetX;
|
||||
s32 ClientOffsetY;
|
||||
u32 ScreenWidth;
|
||||
u32 ScreenHeight;
|
||||
u32 ScreenDepth;
|
||||
u32 ExtraWindowWidth;
|
||||
u32 ExtraWindowHeight;
|
||||
u32 ScaleFlags;
|
||||
u32 StretchWidth;
|
||||
u32 StretchHeight;
|
||||
|
||||
s32 surface;
|
||||
void* ddsurface;
|
||||
void* ddclipper;
|
||||
s32 destx,desty;
|
||||
s32 wndx,wndy;
|
||||
u32 wnd;
|
||||
s32 ddoverlay;
|
||||
s32 ddoffscreen;
|
||||
s32 lastovershow;
|
||||
|
||||
s32 issoftcur;
|
||||
u32 cursorcount;
|
||||
void* buffertop;
|
||||
u32 type;
|
||||
s32 noclipping;
|
||||
|
||||
s32 loadeddd;
|
||||
s32 loadedwin;
|
||||
|
||||
void* dibh;
|
||||
void* dibbuffer;
|
||||
s32 dibpitch;
|
||||
void* dibinfo;
|
||||
u32 dibdc;
|
||||
u32 diboldbitmap;
|
||||
|
||||
} BINKBUFFER;
|
||||
|
||||
|
||||
#define BINKBUFFERAUTO 0
|
||||
#define BINKBUFFERPRIMARY 1
|
||||
#define BINKBUFFERDIBSECTION 2
|
||||
#define BINKBUFFERYV12OVERLAY 3
|
||||
#define BINKBUFFERYUY2OVERLAY 4
|
||||
#define BINKBUFFERUYVYOVERLAY 5
|
||||
#define BINKBUFFERYV12OFFSCREEN 6
|
||||
#define BINKBUFFERYUY2OFFSCREEN 7
|
||||
#define BINKBUFFERUYVYOFFSCREEN 8
|
||||
#define BINKBUFFERRGBOFFSCREENVIDEO 9
|
||||
#define BINKBUFFERRGBOFFSCREENSYSTEM 10
|
||||
#define BINKBUFFERLAST 10
|
||||
#define BINKBUFFERTYPEMASK 31
|
||||
|
||||
RADEXPFUNC HBINKBUFFER RADEXPLINK BinkBufferOpen( HWND wnd, u32 width, u32 height, u32 bufferflags);
|
||||
RADEXPFUNC s32 RADEXPLINK BinkBufferSetHWND( HBINKBUFFER buf, HWND newwnd);
|
||||
RADEXPFUNC s32 RADEXPLINK BinkDDSurfaceType(void PTR4* lpDDS);
|
||||
RADEXPFUNC s32 RADEXPLINK BinkIsSoftwareCursor(void PTR4* lpDDSP,HCURSOR cur);
|
||||
RADEXPFUNC s32 RADEXPLINK BinkCheckCursor(HWND wnd,s32 x,s32 y,s32 w,s32 h);
|
||||
RADEXPFUNC s32 RADEXPLINK BinkBufferSetDirectDraw(void PTR4* lpDirectDraw, void PTR4* lpPrimary);
|
||||
|
||||
#endif
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkBufferClose( HBINKBUFFER buf);
|
||||
RADEXPFUNC s32 RADEXPLINK BinkBufferLock( HBINKBUFFER buf);
|
||||
RADEXPFUNC s32 RADEXPLINK BinkBufferUnlock( HBINKBUFFER buf);
|
||||
RADEXPFUNC void RADEXPLINK BinkBufferSetResolution( s32 w, s32 h, s32 bits);
|
||||
RADEXPFUNC void RADEXPLINK BinkBufferCheckWinPos( HBINKBUFFER buf, s32 PTR4* NewWindowX, s32 PTR4* NewWindowY);
|
||||
RADEXPFUNC s32 RADEXPLINK BinkBufferSetOffset( HBINKBUFFER buf, s32 destx, s32 desty);
|
||||
RADEXPFUNC void RADEXPLINK BinkBufferBlit( HBINKBUFFER buf, BINKRECT PTR4* rects, u32 numrects );
|
||||
RADEXPFUNC s32 RADEXPLINK BinkBufferSetScale( HBINKBUFFER buf, u32 w, u32 h);
|
||||
RADEXPFUNC char PTR4* RADEXPLINK BinkBufferGetDescription( HBINKBUFFER buf);
|
||||
RADEXPFUNC char PTR4* RADEXPLINK BinkBufferGetError();
|
||||
RADEXPFUNC s32 RADEXPLINK BinkBufferClear(HBINKBUFFER buf, u32 RGB);
|
||||
|
||||
RADEXPFUNC void RADEXPLINK BinkRestoreCursor(s32 checkcount);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __RADMAC__
|
||||
|
||||
#pragma export off
|
||||
|
||||
#endif
|
||||
|
||||
RADDEFEND
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
BIN
game_re/third_party/bink10p/binkw32.lib
vendored
BIN
game_re/third_party/bink10p/binkw32.lib
vendored
Binary file not shown.
962
game_re/third_party/bink10p/rad.h
vendored
962
game_re/third_party/bink10p/rad.h
vendored
@@ -1,962 +0,0 @@
|
||||
#ifndef __RAD__
|
||||
#define __RAD__
|
||||
|
||||
#define RADCOPYRIGHT "Copyright (C) 1994-2000, RAD Game Tools, Inc."
|
||||
|
||||
#ifndef __RADRES__
|
||||
|
||||
// __RAD16__ means 16 bit code (Win16)
|
||||
// __RAD32__ means 32 bit code (DOS, Win386, Win32s, Mac)
|
||||
|
||||
// __RADDOS__ means DOS code (16 or 32 bit)
|
||||
// __RADWIN__ means Windows code (Win16, Win386, Win32s)
|
||||
// __RADWINEXT__ means Windows 386 extender (Win386)
|
||||
// __RADNT__ means Win32s code
|
||||
// __RADMAC__ means Macintosh
|
||||
|
||||
// __RADX86__ means Intel x86
|
||||
// __RADMMX__ means Intel x86 MMX instructions are allowed
|
||||
// __RAD68K__ means 68K
|
||||
// __RADPPC__ means PowerPC
|
||||
|
||||
// __RADLITTLEENDIAN__ means processor is little-endian (x86)
|
||||
// __RADBIGENDIAN__ means processor is big-endian (680x0, PPC)
|
||||
|
||||
// __RADALLOWINLINES__ means this compiler allows inline function declarations
|
||||
// use RADINLINE for the appropriate keyword
|
||||
|
||||
|
||||
#if (defined(__MWERKS__) && !defined(__INTEL__)) || defined(__MRC__) || defined(THINK_C) || defined(powerc) || defined(macintosh) || defined(__powerc)
|
||||
|
||||
#define __RADMAC__
|
||||
#if defined(powerc) || defined(__powerc)
|
||||
#define __RADPPC__
|
||||
#else
|
||||
#define __RAD68K__
|
||||
#endif
|
||||
|
||||
#define __RAD32__
|
||||
|
||||
#define __RADBIGENDIAN__
|
||||
|
||||
#if defined(__MWERKS__)
|
||||
#if (defined(__cplusplus) || ! __option(only_std_keywords))
|
||||
#define __RADALLOWINLINES__
|
||||
#define RADINLINE inline
|
||||
#endif
|
||||
#elif defined(__MRC__)
|
||||
#if defined(__cplusplus)
|
||||
#define __RADALLOWINLINES__
|
||||
#define RADINLINE inline
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#define __RADX86__
|
||||
#define __RADMMX__
|
||||
|
||||
#ifdef __MWERKS__
|
||||
#define _WIN32
|
||||
#endif
|
||||
|
||||
#ifdef __DOS__
|
||||
#define __RADDOS__
|
||||
#endif
|
||||
|
||||
#ifdef __386__
|
||||
#define __RAD32__
|
||||
#endif
|
||||
|
||||
#ifdef _Windows //For Borland
|
||||
#ifdef __WIN32__
|
||||
#define WIN32
|
||||
#else
|
||||
#define __WINDOWS__
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _WINDOWS //For MS
|
||||
#ifndef _WIN32
|
||||
#define __WINDOWS__
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#define __RADWIN__
|
||||
#define __RADNT__
|
||||
#define __RAD32__
|
||||
#else
|
||||
#ifdef __NT__
|
||||
#define __RADWIN__
|
||||
#define __RADNT__
|
||||
#define __RAD32__
|
||||
#else
|
||||
#ifdef __WINDOWS_386__
|
||||
#define __RADWIN__
|
||||
#define __RADWINEXT__
|
||||
#define __RAD32__
|
||||
#else
|
||||
#ifdef __WINDOWS__
|
||||
#define __RADWIN__
|
||||
#define __RAD16__
|
||||
#else
|
||||
#ifdef WIN32
|
||||
#define __RADWIN__
|
||||
#define __RADNT__
|
||||
#define __RAD32__
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define __RADLITTLEENDIAN__
|
||||
|
||||
// TODO - make sure these are set correctly for non-Mac versions
|
||||
#define __RADALLOWINLINES__
|
||||
#define RADINLINE __inline
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef __RADALLOWINLINES__
|
||||
#define RADINLINE
|
||||
#endif
|
||||
|
||||
#if (!defined(__RADDOS__) && !defined(__RADWIN__) && !defined(__RADMAC__))
|
||||
#error RAD.H did not detect your platform. Define __DOS__, __WINDOWS__, WIN32, macintosh, or powerc.
|
||||
#endif
|
||||
|
||||
#ifdef __RADMAC__
|
||||
|
||||
// this define is for CodeWarrior 11's stupid new libs (even though
|
||||
// we don't use longlong's).
|
||||
|
||||
#define __MSL_LONGLONG_SUPPORT__
|
||||
|
||||
#define RADLINK
|
||||
#define RADEXPLINK
|
||||
|
||||
#ifdef __CFM68K__
|
||||
#ifdef __RADINDLL__
|
||||
#define RADEXPFUNC RADDEFFUNC __declspec(export)
|
||||
#else
|
||||
#define RADEXPFUNC RADDEFFUNC __declspec(import)
|
||||
#endif
|
||||
#else
|
||||
#define RADEXPFUNC RADDEFFUNC
|
||||
#endif
|
||||
#define RADASMLINK
|
||||
|
||||
#else
|
||||
|
||||
#ifdef __RADNT__
|
||||
#ifndef _WIN32
|
||||
#define _WIN32
|
||||
#endif
|
||||
#ifndef WIN32
|
||||
#define WIN32
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __RADWIN__
|
||||
#ifdef __RAD32__
|
||||
#ifdef __RADNT__
|
||||
|
||||
#define RADLINK __stdcall
|
||||
#define RADEXPLINK __stdcall
|
||||
|
||||
#ifdef __RADINEXE__
|
||||
#define RADEXPFUNC RADDEFFUNC
|
||||
#else
|
||||
#ifndef __RADINDLL__
|
||||
#define RADEXPFUNC RADDEFFUNC __declspec(dllimport)
|
||||
#ifdef __BORLANDC__
|
||||
#if __BORLANDC__<=0x460
|
||||
#undef RADEXPFUNC
|
||||
#define RADEXPFUNC RADDEFFUNC
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#define RADEXPFUNC RADDEFFUNC __declspec(dllexport)
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#define RADLINK __pascal
|
||||
#define RADEXPLINK __far __pascal
|
||||
#define RADEXPFUNC RADDEFFUNC
|
||||
#endif
|
||||
#else
|
||||
#define RADLINK __pascal
|
||||
#define RADEXPLINK __far __pascal __export
|
||||
#define RADEXPFUNC RADDEFFUNC
|
||||
#endif
|
||||
#else
|
||||
#define RADLINK __pascal
|
||||
#define RADEXPLINK __pascal
|
||||
#define RADEXPFUNC RADDEFFUNC
|
||||
#endif
|
||||
|
||||
#define RADASMLINK __cdecl
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __RADWIN__
|
||||
#ifndef _WINDOWS
|
||||
#define _WINDOWS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define RADDEFFUNC extern "C"
|
||||
#define RADDEFSTART extern "C" {
|
||||
#define RADDEFEND }
|
||||
#else
|
||||
#define RADDEFFUNC
|
||||
#define RADDEFSTART
|
||||
#define RADDEFEND
|
||||
#endif
|
||||
|
||||
|
||||
RADDEFSTART
|
||||
|
||||
#define s8 signed char
|
||||
#define u8 unsigned char
|
||||
#define u32 unsigned long
|
||||
#define s32 signed long
|
||||
#define f32 float
|
||||
#define f64 double
|
||||
|
||||
#if defined(__MWERKS__) || defined(__MRC__)
|
||||
#define u64 unsigned long long
|
||||
#define s64 signed long long
|
||||
#else
|
||||
#define u64 unsigned __int64
|
||||
#define s64 signed __int64
|
||||
#endif
|
||||
|
||||
/* 32 bit implementations */
|
||||
|
||||
#ifdef __RAD32__
|
||||
#define PTR4
|
||||
|
||||
#define u16 unsigned short
|
||||
#define s16 signed short
|
||||
|
||||
#ifdef __RADMAC__
|
||||
|
||||
#include <string.h>
|
||||
#include <MacTypes.h>
|
||||
#include <Memory.h>
|
||||
#include <OSUtils.h>
|
||||
#ifdef __MRC__
|
||||
#include "intrinsics.h"
|
||||
#endif
|
||||
|
||||
void radconv32a(void* p, u32 n);
|
||||
|
||||
u32 radloadu32(u32 a);
|
||||
|
||||
u32 radloadu32ptr(u32* p);
|
||||
|
||||
#define radstrcpy strcpy
|
||||
|
||||
#define radstrcat strcat
|
||||
|
||||
#define radmemcpy(dest,source,size) BlockMoveData((Ptr)(source),(Ptr)(dest),size)
|
||||
|
||||
#define radmemcpydb(dest,source,size) BlockMoveData((Ptr)(source),(Ptr)(dest),size)
|
||||
|
||||
#define radmemcmp memcmp
|
||||
|
||||
#define radmemset memset
|
||||
|
||||
#define radstrlen strlen
|
||||
|
||||
#define radstrchr strchr
|
||||
|
||||
#define radtoupper toupper
|
||||
|
||||
#define radstru32(s) ((u32)atol(s))
|
||||
|
||||
//s8 radstricmp(const void* s1,const void* s2);
|
||||
|
||||
#define radstrcmp strcmp
|
||||
|
||||
//char* radstrupr(void* s1);
|
||||
|
||||
//char* radstrlwr(void* s1);
|
||||
|
||||
u32 radsqr(u32 a);
|
||||
|
||||
u32 mult64anddiv(u32 m1,u32 m2,u32 d);
|
||||
|
||||
s32 radabs(s32 ab);
|
||||
|
||||
#define radabs32 radabs
|
||||
|
||||
//char* radstpcpy(void* dest,const void* source);
|
||||
|
||||
//char* radstpcpyrs(void* dest,const void* source);
|
||||
|
||||
void radmemset16(void* dest,u16 value,u32 size);
|
||||
|
||||
//void radmemset32(void* dest,u32 value,u32 size);
|
||||
|
||||
#define BreakPoint() DebugStr("\pBreakPoint() was called")
|
||||
|
||||
//u8 radinp(u16 p);
|
||||
|
||||
//void radoutp(u16 p,u8 v);
|
||||
|
||||
//u32 RADsqrt(u32 sq);
|
||||
|
||||
u32 RADCycleTimerAvail(void);
|
||||
|
||||
void RADCycleTimerStartAddr(u32* addr);
|
||||
|
||||
u32 RADCycleTimerDeltaAddr(u32* addr);
|
||||
|
||||
void RADCycleTimerStartAddr64(u64* addr);
|
||||
|
||||
void RADCycleTimerDeltaAddr64(u64* addr);
|
||||
|
||||
#define RADCycleTimerStart(var) RADCycleTimerStartAddr(&var)
|
||||
|
||||
#define RADCycleTimerDelta(var) RADCycleTimerDeltaAddr(&var)
|
||||
|
||||
#define RADCycleTimerStart64(var) RADCycleTimerStartAddr64(&var)
|
||||
|
||||
#define RADCycleTimerDelta64(var) RADCycleTimerDeltaAddr64(&var)
|
||||
|
||||
|
||||
#ifdef __RAD68K__
|
||||
#pragma parameter radconv32a(__A0,__D0)
|
||||
void radconv32a(void* p,u32 n) ={0x4A80,0x600C,0x2210,0xE059,0x4841,0xE059,0x20C1,0x5380,0x6EF2};
|
||||
// tst.l d0 bra.s @loope @loop: move.l (a0),d1 ror.w #8,d1 swap d1 ror.w #8,d1 move.l d1,(a0)+ sub.l #1,d0 bgt.s @loop @loope:
|
||||
#endif
|
||||
|
||||
#ifdef __RADALLOWINLINES__
|
||||
#if defined __RADPPC__ && defined(__MWERKS__) && (__MWERKS__ >= 0x2301) && 0
|
||||
u32 RADINLINE radloadu32(register u32 x) {
|
||||
register u32 t1, t2;
|
||||
asm { // x = aa bb cc dd
|
||||
rlwinm t1,x,24,0,23 // t1 = dd aa bb 00
|
||||
rlwinm t2,x,8,24,31 // t2 = 00 00 00 aa
|
||||
rlwimi t1,x,8, 8,15 // t1 = dd cc bb 00
|
||||
or x,t1,t2 // x = dd cc bb aa
|
||||
}
|
||||
return x;
|
||||
}
|
||||
#else
|
||||
u32 RADINLINE radloadu32(register u32 x) {
|
||||
return (((x << 24) & 0xFF000000) |
|
||||
((x << 8) & 0x00FF0000) |
|
||||
((x >> 8) & 0x0000FF00) |
|
||||
((x >> 24) & 0x000000FF));
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__RADPPC__) && (defined(__MWERKS__) || defined(__MRC__))
|
||||
#define radloadu32ptr(p) (u32) __lwbrx((p),0)
|
||||
#else
|
||||
#define radloadu32ptr(p) radloadu32(*(u32*)(p));
|
||||
#endif
|
||||
|
||||
#ifdef __RADALLOWINLINES__
|
||||
u32 RADINLINE radsqr(u32 a) { return(a*a); }
|
||||
#endif
|
||||
|
||||
#ifdef __RAD68K__
|
||||
#pragma parameter __D0 mult64anddiv(__D0,__D1,__D2)
|
||||
u32 mult64anddiv(u32 m1,u32 m2,u32 d) ={0x4C01,0x0C01,0x4C42,0x0C01};
|
||||
// muls.l d1,d1:d0 divs.l d2,d1:d0
|
||||
#endif
|
||||
|
||||
#if defined(__RADPPC__) && (defined(__MWERKS__) || defined(__MRC__))
|
||||
#define radabs(ab) __abs((s32)(ab))
|
||||
#elif defined(__RADALLOWINLINES__)
|
||||
s32 RADINLINE radabs(s32 ab) { return (ab < 0) ? -ab : ab; }
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#define radconv32a(p,n) ((void)0)
|
||||
|
||||
#define radloadu32(a) ((u32)(a))
|
||||
|
||||
#define radloadu32ptr(p) *((u32*)(p))
|
||||
|
||||
#ifdef __WATCOMC__
|
||||
|
||||
u32 radsqr(s32 a);
|
||||
#pragma aux radsqr = "mul eax" parm [eax] modify [EDX eax];
|
||||
|
||||
u32 mult64anddiv(u32 m1,u32 m2,u32 d);
|
||||
#pragma aux mult64anddiv = "mul ecx" "div ebx" parm [eax] [ecx] [ebx] modify [EDX eax];
|
||||
|
||||
s32 radabs(s32 ab);
|
||||
#pragma aux radabs = "test eax,eax" "jge skip" "neg eax" "skip:" parm [eax];
|
||||
|
||||
#define radabs32 radabs
|
||||
|
||||
u32 DOSOut(const char* str);
|
||||
#pragma aux DOSOut = "cld" "mov ecx,0xffffffff" "xor eax,eax" "mov edx,edi" "repne scasb" "not ecx" "dec ecx" "mov ebx,1" "mov ah,0x40" "int 0x21" parm [EDI] modify [EAX EBX ECX EDX EDI] value [ecx];
|
||||
|
||||
void DOSOutNum(const char* str,u32 len);
|
||||
#pragma aux DOSOutNum = "mov ah,0x40" "mov ebx,1" "int 0x21" parm [edx] [ecx] modify [eax ebx];
|
||||
|
||||
u32 ErrOut(const char* str);
|
||||
#pragma aux ErrOut = "cld" "mov ecx,0xffffffff" "xor eax,eax" "mov edx,edi" "repne scasb" "not ecx" "dec ecx" "xor ebx,ebx" "mov ah,0x40" "int 0x21" parm [EDI] modify [EAX EBX ECX EDX EDI] value [ecx];
|
||||
|
||||
void ErrOutNum(const char* str,u32 len);
|
||||
#pragma aux ErrOutNum = "mov ah,0x40" "xor ebx,ebx" "int 0x21" parm [edx] [ecx] modify [eax ebx];
|
||||
|
||||
void radmemset16(void* dest,u16 value,u32 size);
|
||||
#pragma aux radmemset16 = "cld" "mov bx,ax" "shl eax,16" "mov ax,bx" "mov bl,cl" "shr ecx,1" "rep stosd" "mov cl,bl" "and cl,1" "rep stosw" parm [EDI] [EAX] [ECX] modify [EAX EDX EBX ECX EDI];
|
||||
|
||||
void radmemset(void* dest,u8 value,u32 size);
|
||||
#pragma aux radmemset = "cld" "mov ah,al" "mov bx,ax" "shl eax,16" "mov ax,bx" "mov bl,cl" "shr ecx,2" "and bl,3" "rep stosd" "mov cl,bl" "rep stosb" parm [EDI] [AL] [ECX] modify [EAX EDX EBX ECX EDI];
|
||||
|
||||
void radmemset32(void* dest,u32 value,u32 size);
|
||||
#pragma aux radmemset32 = "cld" "rep stosd" parm [EDI] [EAX] [ECX] modify [EAX EDX EBX ECX EDI];
|
||||
|
||||
void radmemcpy(void* dest,const void* source,u32 size);
|
||||
#pragma aux radmemcpy = "cld" "mov bl,cl" "shr ecx,2" "rep movsd" "mov cl,bl" "and cl,3" "rep movsb" parm [EDI] [ESI] [ECX] modify [EBX ECX EDI ESI];
|
||||
|
||||
void __far *radfmemcpy(void __far* dest,const void __far* source,u32 size);
|
||||
#pragma aux radfmemcpy = "cld" "push es" "push ds" "mov es,cx" "mov ds,dx" "mov ecx,eax" "shr ecx,2" "rep movsd" "mov cl,al" "and cl,3" "rep movsb" "pop ds" "pop es" parm [CX EDI] [DX ESI] [EAX] modify [ECX EDI ESI] value [CX EDI];
|
||||
|
||||
void radmemcpydb(void* dest,const void* source,u32 size); //Destination bigger
|
||||
#pragma aux radmemcpydb = "std" "mov bl,cl" "lea esi,[esi+ecx-4]" "lea edi,[edi+ecx-4]" "shr ecx,2" "rep movsd" "and bl,3" "jz dne" "add esi,3" "add edi,3" "mov cl,bl" "rep movsb" "dne:" "cld" parm [EDI] [ESI] [ECX] modify [EBX ECX EDI ESI];
|
||||
|
||||
char* radstrcpy(void* dest,const void* source);
|
||||
#pragma aux radstrcpy = "cld" "mov edx,edi" "lp:" "mov al,[esi]" "inc esi" "mov [edi],al" "inc edi" "cmp al,0" "jne lp" parm [EDI] [ESI] modify [EAX EDX EDI ESI] value [EDX];
|
||||
|
||||
char __far* radfstrcpy(void __far* dest,const void __far* source);
|
||||
#pragma aux radfstrcpy = "cld" "push es" "push ds" "mov es,cx" "mov ds,dx" "mov edx,edi" "lp:" "lodsb" "stosb" "test al,0xff" "jnz lp" "pop ds" "pop es" parm [CX EDI] [DX ESI] modify [EAX EDX EDI ESI] value [CX EDX];
|
||||
|
||||
char* radstpcpy(void* dest,const void* source);
|
||||
#pragma aux radstpcpy = "cld" "lp:" "mov al,[esi]" "inc esi" "mov [edi],al" "inc edi" "cmp al,0" "jne lp" "dec edi" parm [EDI] [ESI] modify [EAX EDI ESI] value [EDI];
|
||||
|
||||
char* radstpcpyrs(void* dest,const void* source);
|
||||
#pragma aux radstpcpyrs = "cld" "lp:" "mov al,[esi]" "inc esi" "mov [edi],al" "inc edi" "cmp al,0" "jne lp" "dec esi" parm [EDI] [ESI] modify [EAX EDI ESI] value [ESI];
|
||||
|
||||
u32 radstrlen(const void* dest);
|
||||
#pragma aux radstrlen = "cld" "mov ecx,0xffffffff" "xor eax,eax" "repne scasb" "not ecx" "dec ecx" parm [EDI] modify [EAX ECX EDI] value [ECX];
|
||||
|
||||
char* radstrcat(void* dest,const void* source);
|
||||
#pragma aux radstrcat = "cld" "mov ecx,0xffffffff" "mov edx,edi" "xor eax,eax" "repne scasb" "dec edi" "lp:" "lodsb" "stosb" "test al,0xff" "jnz lp" \
|
||||
parm [EDI] [ESI] modify [EAX ECX EDI ESI] value [EDX];
|
||||
|
||||
char* radstrchr(const void* dest,char chr);
|
||||
#pragma aux radstrchr = "cld" "lp:" "lodsb" "cmp al,dl" "je fnd" "cmp al,0" "jnz lp" "mov esi,1" "fnd:" "dec esi" parm [ESI] [DL] modify [EAX ESI] value [esi];
|
||||
|
||||
s8 radmemcmp(const void* s1,const void* s2,u32 len);
|
||||
#pragma aux radmemcmp = "cld" "rep cmpsb" "setne al" "jbe end" "neg al" "end:" parm [EDI] [ESI] [ECX] modify [ECX EDI ESI];
|
||||
|
||||
s8 radstrcmp(const void* s1,const void* s2);
|
||||
#pragma aux radstrcmp = "lp:" "mov al,[esi]" "mov ah,[edi]" "cmp al,ah" "jne set" "cmp al,0" "je set" "inc esi" "inc edi" "jmp lp" "set:" "setne al" "jbe end" "neg al" "end:" \
|
||||
parm [EDI] [ESI] modify [EAX EDI ESI];
|
||||
|
||||
s8 radstricmp(const void* s1,const void* s2);
|
||||
#pragma aux radstricmp = "lp:" "mov al,[esi]" "mov ah,[edi]" "cmp al,'a'" "jb c1" "cmp al,'z'" "ja c1" "sub al,32" "c1:" "cmp ah,'a'" "jb c2" "cmp ah,'z'" "ja c2" "sub ah,32" "c2:" "cmp al,ah" "jne set" "cmp al,0" "je set" \
|
||||
"inc esi" "inc edi" "jmp lp" "set:" "setne al" "jbe end" "neg al" "end:" \
|
||||
parm [EDI] [ESI] modify [EAX EDI ESI];
|
||||
|
||||
s8 radstrnicmp(const void* s1,const void* s2,u32 len);
|
||||
#pragma aux radstrnicmp = "lp:" "mov al,[esi]" "mov ah,[edi]" "cmp al,'a'" "jb c1" "cmp al,'z'" "ja c1" "sub al,32" "c1:" "cmp ah,'a'" "jb c2" "cmp ah,'z'" "ja c2" "sub ah,32" "c2:" "cmp al,ah" "jne set" "cmp al,0" "je set" \
|
||||
"dec ecx" "jz set" "inc esi" "inc edi" "jmp lp" "set:" "setne al" "jbe end" "neg al" "end:" \
|
||||
parm [EDI] [ESI] [ECX] modify [EAX ECX EDI ESI];
|
||||
|
||||
char* radstrupr(void* s1);
|
||||
#pragma aux radstrupr = "mov ecx,edi" "lp:" "mov al,[edi]" "cmp al,'a'" "jb c1" "cmp al,'z'" "ja c1" "sub [edi],32" "c1:" "inc edi" "cmp al,0" "jne lp" parm [EDI] modify [EAX EDI] value [ecx];
|
||||
|
||||
char* radstrlwr(void* s1);
|
||||
#pragma aux radstrlwr = "mov ecx,edi" "lp:" "mov al,[edi]" "cmp al,'A'" "jb c1" "cmp al,'Z'" "ja c1" "add [edi],32" "c1:" "inc edi" "cmp al,0" "jne lp" parm [EDI] modify [EAX EDI] value [ecx];
|
||||
|
||||
u32 radstru32(const void* dest);
|
||||
#pragma aux radstru32 = "cld" "xor ecx,ecx" "xor ebx,ebx" "xor edi,edi" "lodsb" "cmp al,45" "jne skip2" "mov edi,1" "jmp skip" "lp:" "mov eax,10" "mul ecx" "lea ecx,[eax+ebx]" \
|
||||
"skip:" "lodsb" "skip2:" "cmp al,0x39" "ja dne" "cmp al,0x30" "jb dne" "mov bl,al" "sub bl,0x30" "jmp lp" "dne:" "test edi,1" "jz pos" "neg ecx" "pos:" \
|
||||
parm [ESI] modify [EAX EBX EDX EDI ESI] value [ecx];
|
||||
|
||||
u16 GetDS();
|
||||
#pragma aux GetDS = "mov ax,ds" value [ax];
|
||||
|
||||
#ifdef __RADWINEXT__
|
||||
|
||||
#define _16To32(ptr16) ((void*)(((GetSelectorBase((u16)(((u32)(ptr16))>>16))+((u16)(u32)(ptr16)))-GetSelectorBase(GetDS()))))
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef __RADWIN__
|
||||
#define int86 int386
|
||||
#define int86x int386x
|
||||
#endif
|
||||
|
||||
#define u32regs x
|
||||
#define u16regs w
|
||||
|
||||
#else
|
||||
|
||||
#define radstrcpy strcpy
|
||||
#define radstrcat strcat
|
||||
#define radmemcpy memcpy
|
||||
#define radmemcpydb memmove
|
||||
#define radmemcmp memcmp
|
||||
#define radmemset memset
|
||||
#define radstrlen strlen
|
||||
#define radstrchr strchr
|
||||
#define radtoupper toupper
|
||||
#define radstru32(s) ((u32)atol(s))
|
||||
#define radstricmp _stricmp
|
||||
#define radstrcmp strcmp
|
||||
#define radstrupr _strupr
|
||||
#define radstrlwr _strlwr
|
||||
#define BreakPoint() __asm {int 3}
|
||||
#define DOSOut(str)
|
||||
|
||||
#ifdef _MSC_VER
|
||||
|
||||
#pragma warning( disable : 4035)
|
||||
|
||||
typedef char* RADPCHAR;
|
||||
|
||||
u32 __inline radsqr(u32 m) {
|
||||
__asm {
|
||||
mov eax,[m]
|
||||
mul eax
|
||||
}
|
||||
}
|
||||
|
||||
u32 __inline mult64anddiv(u32 m1,u32 m2, u32 d) {
|
||||
__asm {
|
||||
mov eax,[m1]
|
||||
mov ecx,[m2]
|
||||
mul ecx
|
||||
mov ecx,[d]
|
||||
div ecx
|
||||
}
|
||||
}
|
||||
|
||||
s32 __inline radabs(s32 ab) {
|
||||
__asm {
|
||||
mov eax,[ab]
|
||||
test eax,eax
|
||||
jge skip
|
||||
neg eax
|
||||
skip:
|
||||
}
|
||||
}
|
||||
|
||||
u8 __inline radinp(u16 p) {
|
||||
__asm {
|
||||
mov dx,[p]
|
||||
in al,dx
|
||||
}
|
||||
}
|
||||
|
||||
void __inline radoutp(u16 p,u8 v) {
|
||||
__asm {
|
||||
mov dx,[p]
|
||||
mov al,[v]
|
||||
out dx,al
|
||||
}
|
||||
}
|
||||
|
||||
RADPCHAR __inline radstpcpy(char* p1, char* p2) {
|
||||
__asm {
|
||||
mov edx,[p1]
|
||||
mov ecx,[p2]
|
||||
cld
|
||||
lp:
|
||||
mov al,[ecx]
|
||||
inc ecx
|
||||
mov [edx],al
|
||||
inc edx
|
||||
cmp al,0
|
||||
jne lp
|
||||
dec edx
|
||||
mov eax,edx
|
||||
}
|
||||
}
|
||||
|
||||
RADPCHAR __inline radstpcpyrs(char* p1, char* p2) {
|
||||
__asm {
|
||||
mov edx,[p1]
|
||||
mov ecx,[p2]
|
||||
cld
|
||||
lp:
|
||||
mov al,[ecx]
|
||||
inc ecx
|
||||
mov [edx],al
|
||||
inc edx
|
||||
cmp al,0
|
||||
jne lp
|
||||
dec ecx
|
||||
mov eax,ecx
|
||||
}
|
||||
}
|
||||
|
||||
void __inline radmemset16(void* dest,u16 value,u32 sizeb) {
|
||||
__asm {
|
||||
mov edi,[dest]
|
||||
mov ax,[value]
|
||||
mov ecx,[sizeb]
|
||||
shl eax,16
|
||||
cld
|
||||
mov ax,[value]
|
||||
mov bl,cl
|
||||
shr ecx,1
|
||||
rep stosd
|
||||
mov cl,bl
|
||||
and cl,1
|
||||
rep stosw
|
||||
}
|
||||
}
|
||||
|
||||
void __inline radmemset32(void* dest,u32 value,u32 sizeb) {
|
||||
__asm {
|
||||
mov edi,[dest]
|
||||
mov eax,[value]
|
||||
mov ecx,[sizeb]
|
||||
cld
|
||||
rep stosd
|
||||
}
|
||||
}
|
||||
|
||||
u32 __inline __stdcall RADsqrt(u32 sq) {
|
||||
__asm {
|
||||
fild dword ptr [sq]
|
||||
fsqrt
|
||||
fistp word ptr [sq]
|
||||
movzx eax,word ptr [sq]
|
||||
}
|
||||
}
|
||||
|
||||
u32 __inline RADCycleTimerAvail(void)
|
||||
{
|
||||
u32 rdtscavail=(u32)-1;
|
||||
__try
|
||||
{
|
||||
__asm
|
||||
{
|
||||
#ifdef __MWERKS__
|
||||
rdtsc
|
||||
#else
|
||||
#if _MSC_VER<=1100
|
||||
__emit 0xf
|
||||
__emit 0x31
|
||||
#else
|
||||
rdtsc
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
rdtscavail=1;
|
||||
}
|
||||
__except (1)
|
||||
{
|
||||
rdtscavail=(u32)-1;
|
||||
}
|
||||
return rdtscavail;
|
||||
}
|
||||
|
||||
void __inline RADCycleTimerStartAddr(u32* addr)
|
||||
{
|
||||
__asm {
|
||||
mov ecx,[addr]
|
||||
#ifdef __MWERKS__
|
||||
rdtsc
|
||||
#else
|
||||
#if _MSC_VER<=1100
|
||||
__emit 0xf
|
||||
__emit 0x31
|
||||
#else
|
||||
rdtsc
|
||||
#endif
|
||||
#endif
|
||||
mov [ecx],eax
|
||||
}
|
||||
}
|
||||
|
||||
u32 __inline RADCycleTimerDeltaAddr(u32* addr)
|
||||
{
|
||||
__asm {
|
||||
#ifdef __MWERKS__
|
||||
rdtsc
|
||||
#else
|
||||
#if _MSC_VER<=1100
|
||||
__emit 0xf
|
||||
__emit 0x31
|
||||
#else
|
||||
rdtsc
|
||||
#endif
|
||||
#endif
|
||||
mov ecx,[addr]
|
||||
mov edx,eax
|
||||
sub eax,[ecx]
|
||||
mov [ecx],eax
|
||||
}
|
||||
}
|
||||
|
||||
void __inline RADCycleTimerStartAddr64(u64* addr)
|
||||
{
|
||||
__asm {
|
||||
mov ecx,[addr]
|
||||
#ifdef __MWERKS__
|
||||
rdtsc
|
||||
#else
|
||||
#if _MSC_VER<=1100
|
||||
__emit 0xf
|
||||
__emit 0x31
|
||||
#else
|
||||
rdtsc
|
||||
#endif
|
||||
#endif
|
||||
mov [ecx],eax
|
||||
mov [ecx+4],edx
|
||||
}
|
||||
}
|
||||
|
||||
void __inline RADCycleTimerDeltaAddr64(u64* addr)
|
||||
{
|
||||
__asm {
|
||||
#ifdef __MWERKS__
|
||||
rdtsc
|
||||
#else
|
||||
#if _MSC_VER<=1100
|
||||
__emit 0xf
|
||||
__emit 0x31
|
||||
#else
|
||||
rdtsc
|
||||
#endif
|
||||
#endif
|
||||
mov ecx,[addr]
|
||||
sub eax,[ecx]
|
||||
sbb edx,[ecx+4]
|
||||
mov [ecx],eax
|
||||
mov [ecx+4],edx
|
||||
}
|
||||
}
|
||||
|
||||
#define RADCycleTimerStart(var) RADCycleTimerStartAddr(&var)
|
||||
#define RADCycleTimerDelta(var) RADCycleTimerDeltaAddr(&var)
|
||||
|
||||
#define RADCycleTimerStart64(var) RADCycleTimerStartAddr64(&var)
|
||||
#define RADCycleTimerDelta64(var) RADCycleTimerDeltaAddr64(&var)
|
||||
|
||||
#pragma warning( default : 4035)
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#define PTR4 __far
|
||||
|
||||
#define u16 unsigned int
|
||||
#define s16 signed int
|
||||
|
||||
#ifdef __WATCOMC__
|
||||
|
||||
u32 radsqr(s32 a);
|
||||
#pragma aux radsqr = "shl edx,16" "mov dx,ax" "mov eax,edx" "xor edx,edx" "mul eax" "shld edx,eax,16" parm [dx ax] modify [DX ax] value [dx ax];
|
||||
|
||||
s16 radabs(s16 ab);
|
||||
#pragma aux radabs = "test ax,ax" "jge skip" "neg ax" "skip:" parm [ax] value [ax];
|
||||
|
||||
s32 radabs32(s32 ab);
|
||||
#pragma aux radabs32 = "test dx,dx" "jge skip" "neg dx" "neg ax" "sbb dx,0" "skip:" parm [dx ax] value [dx ax];
|
||||
|
||||
u32 DOSOut(const char far* dest);
|
||||
#pragma aux DOSOut = "cld" "and edi,0xffff" "mov dx,di" "mov ecx,0xffffffff" "xor eax,eax" 0x67 "repne scasb" "not ecx" "dec ecx" "mov bx,1" "push ds" "push es" "pop ds" "mov ah,0x40" "int 0x21" "pop ds" "movzx eax,cx" "shr ecx,16" \
|
||||
parm [ES DI] modify [AX BX CX DX DI ES] value [CX AX];
|
||||
|
||||
void DOSOutNum(const char far* str,u16 len);
|
||||
#pragma aux DOSOutNum = "push ds" "mov ds,cx" "mov cx,bx" "mov ah,0x40" "mov bx,1" "int 0x21" "pop ds" parm [cx dx] [bx] modify [ax bx cx];
|
||||
|
||||
u32 ErrOut(const char far* dest);
|
||||
#pragma aux ErrOut = "cld" "and edi,0xffff" "mov dx,di" "mov ecx,0xffffffff" "xor eax,eax" 0x67 "repne scasb" "not ecx" "dec ecx" "xor bx,bx" "push ds" "push es" "pop ds" "mov ah,0x40" "int 0x21" "pop ds" "movzx eax,cx" "shr ecx,16" \
|
||||
parm [ES DI] modify [AX BX CX DX DI ES] value [CX AX];
|
||||
|
||||
void ErrOutNum(const char far* str,u16 len);
|
||||
#pragma aux ErrOutNum = "push ds" "mov ds,cx" "mov cx,bx" "mov ah,0x40" "xor bx,bx" "int 0x21" "pop ds" parm [cx dx] [bx] modify [ax bx cx];
|
||||
|
||||
void radmemset(void far *dest,u8 value,u32 size);
|
||||
#pragma aux radmemset = "cld" "and edi,0ffffh" "shl ecx,16" "mov cx,bx" "mov ah,al" "mov bx,ax" "shl eax,16" "mov ax,bx" "mov bl,cl" "shr ecx,2" 0x67 "rep stosd" "mov cl,bl" "and cl,3" "rep stosb" parm [ES DI] [AL] [CX BX];
|
||||
|
||||
void radmemset16(void far* dest,u16 value,u32 size);
|
||||
#pragma aux radmemset16 = "cld" "and edi,0ffffh" "shl ecx,16" "mov cx,bx" "mov bx,ax" "shl eax,16" "mov ax,bx" "mov bl,cl" "shr ecx,1" "rep stosd" "mov cl,bl" "and cl,1" "rep stosw" parm [ES DI] [AX] [CX BX];
|
||||
|
||||
void radmemcpy(void far* dest,const void far* source,u32 size);
|
||||
#pragma aux radmemcpy = "cld" "push ds" "mov ds,dx" "and esi,0ffffh" "and edi,0ffffh" "shl ecx,16" "mov cx,bx" "shr ecx,2" 0x67 "rep movsd" "mov cl,bl" "and cl,3" "rep movsb" "pop ds" parm [ES DI] [DX SI] [CX BX] modify [CX SI DI ES];
|
||||
|
||||
s8 radmemcmp(const void far* s1,const void far* s2,u32 len);
|
||||
#pragma aux radmemcmp = "cld" "push ds" "mov ds,dx" "shl ecx,16" "mov cx,bx" "rep cmpsb" "setne al" "jbe end" "neg al" "end:" "pop ds" parm [ES DI] [DX SI] [CX BX] modify [CX SI DI ES];
|
||||
|
||||
char far* radstrcpy(void far* dest,const void far* source);
|
||||
#pragma aux radstrcpy = "cld" "push ds" "mov ds,dx" "and esi,0xffff" "and edi,0xffff" "mov dx,di" "lp:" "lodsb" "stosb" "test al,0xff" "jnz lp" "pop ds" parm [ES DI] [DX SI] modify [AX DX DI SI ES] value [es dx];
|
||||
|
||||
char far* radstpcpy(void far* dest,const void far* source);
|
||||
#pragma aux radstpcpy = "cld" "push ds" "mov ds,dx" "and esi,0xffff" "and edi,0xffff" "lp:" "lodsb" "stosb" "test al,0xff" "jnz lp" "dec di" "pop ds" parm [ES DI] [DX SI] modify [DI SI ES] value [es di];
|
||||
|
||||
u32 radstrlen(const void far* dest);
|
||||
#pragma aux radstrlen = "cld" "and edi,0xffff" "mov ecx,0xffffffff" "xor eax,eax" 0x67 "repne scasb" "not ecx" "dec ecx" "movzx eax,cx" "shr ecx,16" parm [ES DI] modify [AX CX DI ES] value [CX AX];
|
||||
|
||||
char far* radstrcat(void far* dest,const void far* source);
|
||||
#pragma aux radstrcat = "cld" "and edi,0xffff" "mov ecx,0xffffffff" "and esi,0xffff" "push ds" "mov ds,dx" "mov dx,di" "xor eax,eax" 0x67 "repne scasb" "dec edi" "lp:" "lodsb" "stosb" "test al,0xff" "jnz lp" "pop ds" \
|
||||
parm [ES DI] [DX SI] modify [AX CX DI SI ES] value [es dx];
|
||||
|
||||
char far* radstrchr(const void far* dest,char chr);
|
||||
#pragma aux radstrchr = "cld" "lp:" 0x26 "lodsb" "cmp al,dl" "je fnd" "cmp al,0" "jnz lp" "xor ax,ax" "mov es,ax" "mov si,1" "fnd:" "dec si" parm [ES SI] [DL] modify [AX SI ES] value [es si];
|
||||
|
||||
s8 radstricmp(const void far* s1,const void far* s2);
|
||||
#pragma aux radstricmp = "and edi,0xffff" "push ds" "mov ds,dx" "and esi,0xffff" "lp:" "mov al,[esi]" "mov ah,[edi]" "cmp al,'a'" "jb c1" "cmp al,'z'" "ja c1" "sub al,32" "c1:" \
|
||||
"cmp ah,'a'" "jb c2" "cmp ah,'z'" "ja c2" "sub ah,32" "c2:" "cmp al,ah" "jne set" "cmp al,0" "je set" \
|
||||
"inc esi" "inc edi" "jmp lp" "set:" "setne al" "jbe end" "neg al" "end:" "pop ds" \
|
||||
parm [ES DI] [DX SI] modify [AX DI SI];
|
||||
|
||||
u32 radstru32(const void far* dest);
|
||||
#pragma aux radstru32 = "cld" "xor ecx,ecx" "xor ebx,ebx" "xor edi,edi" 0x26 "lodsb" "cmp al,45" "jne skip2" "mov edi,1" "jmp skip" "lp:" "mov eax,10" "mul ecx" "lea ecx,[eax+ebx]" \
|
||||
"skip:" 0x26 "lodsb" "skip2:" "cmp al,0x39" "ja dne" "cmp al,0x30" "jb dne" "mov bl,al" "sub bl,0x30" "jmp lp" "dne:" "test edi,1" "jz pos" "neg ecx" "pos:" \
|
||||
"movzx eax,cx" "shr ecx,16" parm [ES SI] modify [AX BX DX DI SI] value [cx ax];
|
||||
|
||||
u32 mult64anddiv(u32 m1,u32 m2,u32 d);
|
||||
#pragma aux mult64anddiv = "shl ecx,16" "mov cx,ax" "shrd eax,edx,16" "mov ax,si" "mul ecx" "shl edi,16" "mov di,bx" "div edi" "shld edx,eax,16" "and edx,0xffff" "and eax,0xffff" parm [cx ax] [dx si] [di bx] \
|
||||
modify [ax bx cx dx si di] value [dx ax];
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
RADDEFEND
|
||||
|
||||
#define u32neg1 ((u32)(s32)-1)
|
||||
#define RAD_align(var) var; u8 junk##var[4-(sizeof(var)&3)];
|
||||
#define RAD_align_after(var) u8 junk##var[4-(sizeof(var)&3)]={0};
|
||||
#define RAD_align_init(var,val) var=val; u8 junk##var[4-(sizeof(var)&3)]={0};
|
||||
#define RAD_align_array(var,num) var[num]; u8 junk##var[4-(sizeof(var)&3)];
|
||||
#define RAD_align_string(var,str) char var[]=str; u8 junk##var[4-(sizeof(var)&3)]={0};
|
||||
|
||||
|
||||
typedef void PTR4* (RADLINK PTR4* RADMEMALLOC) (u32 bytes);
|
||||
typedef void (RADLINK PTR4* RADMEMFREE) (void PTR4* ptr);
|
||||
|
||||
#ifdef __RADMAC__
|
||||
#pragma export on
|
||||
#endif
|
||||
RADEXPFUNC void RADEXPLINK RADSetMemory(RADMEMALLOC a,RADMEMFREE f);
|
||||
#ifdef __RADMAC__
|
||||
#pragma export off
|
||||
#endif
|
||||
|
||||
RADEXPFUNC void PTR4* RADEXPLINK radmalloc(u32 numbytes);
|
||||
RADEXPFUNC void RADEXPLINK radfree(void PTR4* ptr);
|
||||
|
||||
#ifdef __RADDOS__
|
||||
|
||||
RADDEFSTART
|
||||
extern void* RADTimerSetupAddr;
|
||||
extern void* RADTimerReadAddr;
|
||||
extern void* RADTimerDoneAddr;
|
||||
RADDEFEND
|
||||
|
||||
typedef void RADEXPLINK (*RADTimerSetupType)(void);
|
||||
typedef u32 RADEXPLINK (*RADTimerReadType)(void);
|
||||
typedef void RADEXPLINK (*RADTimerDoneType)(void);
|
||||
|
||||
#define RADTimerSetup() ((RADTimerSetupType)(RADTimerSetupAddr))()
|
||||
#define RADTimerRead() ((RADTimerReadType)(RADTimerReadAddr))()
|
||||
#define RADTimerDone() ((RADTimerDoneType)(RADTimerDoneAddr))()
|
||||
|
||||
#else
|
||||
|
||||
#define RADTimerSetup()
|
||||
#define RADTimerDone()
|
||||
|
||||
#if (defined(__RAD16__) || defined(__RADWINEXT__))
|
||||
|
||||
#define RADTimerRead timeGetTime
|
||||
|
||||
#else
|
||||
|
||||
RADEXPFUNC u32 RADEXPLINK RADTimerRead(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __WATCOMC__
|
||||
|
||||
char bkbhit();
|
||||
#pragma aux bkbhit = "mov ah,1" "int 0x16" "lahf" "shr eax,14" "and eax,1" "xor al,1" ;
|
||||
|
||||
char bgetch();
|
||||
#pragma aux bgetch = "xor ah,ah" "int 0x16" "test al,0xff" "jnz done" "mov al,ah" "or al,0x80" "done:" modify [AX];
|
||||
|
||||
void BreakPoint();
|
||||
#pragma aux BreakPoint = "int 3";
|
||||
|
||||
u8 radinp(u16 p);
|
||||
#pragma aux radinp = "in al,dx" parm [DX];
|
||||
|
||||
u8 radtoupper(u8 p);
|
||||
#pragma aux radtoupper = "cmp al,'a'" "jb c1" "cmp al,'z'" "ja c1" "sub al,32" "c1:" parm [al] value [al];
|
||||
|
||||
void radoutp(u16 p,u8 v);
|
||||
#pragma aux radoutp = "out dx,al" parm [DX] [AL];
|
||||
|
||||
#else
|
||||
|
||||
// for multi-processor machines
|
||||
|
||||
#ifdef __RADNT__
|
||||
#define LockedIncrement(var) __asm { lock inc [var] }
|
||||
#define LockedDecrement(var) __asm { lock dec [var] }
|
||||
void __inline LockedIncrementFunc(void PTR4* var) {
|
||||
__asm {
|
||||
mov eax,[var]
|
||||
lock inc [eax]
|
||||
}
|
||||
}
|
||||
|
||||
void __inline LockedDecrementFunc(void PTR4* var) {
|
||||
__asm {
|
||||
mov eax,[var]
|
||||
lock dec [eax]
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#ifdef __RADMAC__
|
||||
|
||||
#define LockedIncrement(var) {++(var);}
|
||||
#define LockedDecrement(var) {--(var);}
|
||||
|
||||
#define LockedIncrementFunc(ptr) {++(*((u32*)(ptr)));}
|
||||
#define LockedDecrementFunc(ptr) {--(*((u32*)(ptr)));}
|
||||
|
||||
#else
|
||||
|
||||
#define LockedIncrement(var) __asm { inc [var] }
|
||||
#define LockedDecrement(var) __asm { dec [var] }
|
||||
void __inline LockedIncrementFunc(void PTR4* var) { __asm { mov eax,[var]
|
||||
inc [eax] } }
|
||||
void __inline LockedDecrementFunc(void PTR4* var) { __asm { mov eax,[var]
|
||||
dec [eax] } }
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
979
game_re/third_party/mssdk/DXReadme.txt
vendored
979
game_re/third_party/mssdk/DXReadme.txt
vendored
@@ -1,979 +0,0 @@
|
||||
|
||||
Microsoft<EFBFBD> DirectX<74> 8.0 SDK
|
||||
|
||||
This CD is the Microsoft DirectX 8.0 Software Development Kit (SDK).
|
||||
It contains all DirectX software required to create DirectX 8.0
|
||||
compliant applications. Parts of this SDK will also be made
|
||||
available for download at the Microsoft DirectX developer web page
|
||||
(http://msdn.microsoft.com/directx).
|
||||
|
||||
Major components include: DirectX 8.0 system components (runtimes);
|
||||
DirectX 8.0 Application Programing Interface (API) Documentation for
|
||||
each of the DirectX core areas (written for C++ or Visual Basic
|
||||
developers); DirectX 8.0 headers & libraries; Sample applications
|
||||
and source code; miscellaneous tools and utilities.
|
||||
|
||||
After installing, those new to DirectX should start with the
|
||||
DirectX 8.0 documentation. More seasoned developers may also want
|
||||
to view the "WHAT'S NEW" section. Professional DirectX developers
|
||||
should refer to the "KNOWN ISSUES" section prior to raising concerns.
|
||||
|
||||
__________________________________________________________________
|
||||
|
||||
|
||||
Contents:
|
||||
|
||||
- INSTALLATION
|
||||
- WHAT'S NEW
|
||||
- CD LAYOUT
|
||||
- DIRECTX 8.0 SDK RELEASE NOTES AND KNOWN ISSUES
|
||||
- COMPILER SUPPORT
|
||||
|
||||
__________________________________________________________________
|
||||
|
||||
|
||||
INSTALLATION:
|
||||
|
||||
|
||||
ALWAYS UNINSTALL PREVIOUS RELEASES of the DirectX SDK prior to
|
||||
installing DirectX 8.0 SDK Release (see UnInstall). The directory
|
||||
structure and file names have changed significantly. Installing on
|
||||
top of a previous installation will cause you problems.
|
||||
|
||||
On Windows 2000 systems, you must be logged in as administrator to
|
||||
install the DirectX 8.0 runtimes.
|
||||
|
||||
If you install the BDA cab, the DirectX 8.0 setup program requires
|
||||
that you restart your system.
|
||||
|
||||
UnInstall:
|
||||
|
||||
To uninstall, use "Add/Remove Programs" from the Control Panel to
|
||||
uninstall the InstallShield installations.
|
||||
|
||||
__________________________________________________________________
|
||||
|
||||
|
||||
WHAT'S NEW:
|
||||
|
||||
|
||||
DirectX Audio (DirectSound & DirectMusic)
|
||||
=========================================
|
||||
|
||||
DirectX 8.0 audio covers both DirectSound and DirectMusic API's. In
|
||||
DirectX 8.0, these API's are more closely aligned and tied together.
|
||||
|
||||
There are many new features. They include:
|
||||
|
||||
Effects processing on DirectSound Buffers
|
||||
DLS2 synthesis
|
||||
Arbitrary loop points
|
||||
Release waveforms
|
||||
Optional Filter per voice
|
||||
6-stage envelope
|
||||
Ramped volume scaling
|
||||
Time-stamped playback
|
||||
"Audiopaths": a powerful and easy way to use the DirectMusic DLS2 synthesizer
|
||||
for sound effects programming.
|
||||
Submixing of audio prior to 3D processing (by DLS2 synthesizer)
|
||||
Automatic streaming and ACM compression (ADPCM, etc.)
|
||||
Composition enhancements
|
||||
Audio Scripting
|
||||
|
||||
We also think you will want to look at using the DLS2 synthesizer as your
|
||||
main sound effects engine. The DLS2 synthesizer is accessed primarily through
|
||||
the DirectMusic API's. Please do not let the word, "Music" mislead you; the
|
||||
DirectX 8.0 DirectMusic API's have been enhanced *specifically* for sound effects
|
||||
playback. The new DirectMusic API's that are designed to support sound effects
|
||||
refer to audiopaths. Please investigate audiopaths; they provide a lot of
|
||||
cool features for sound effects. For example, if you have multiple sounds
|
||||
that need to come from the same 3d location, you can pre-mix them (using Audiopaths)
|
||||
and use only one 3d hardware buffer to play them.
|
||||
|
||||
Parameter Validation:
|
||||
DirectSound in particular has some greater parameter validation in place
|
||||
when the DirectSound8 interfaces are used.
|
||||
|
||||
-Waveformats are more tightly parsed
|
||||
-You can no longer create a DirectSoundBuffer with both CTRL_3D and CTRL_PAN set
|
||||
-You can no longer create a DirectSoundBuffer with CTRL_3D set and a wave format
|
||||
with more than 1 channel. I.e. Only mono buffers may be created with CTRL_3D.
|
||||
|
||||
Scripting is very exciting. It puts much of the control over the audio
|
||||
implementation of the game into the hands of the sound designer. Using
|
||||
scripts, audio designers can change implementations, make the music 'magically'
|
||||
interactive, and play different sound effects based on in-game variables.
|
||||
It also drastically shortens the edit-integrate-listen cycle. This should
|
||||
result in improved sound effects and music, with much less game-programmer
|
||||
time required.
|
||||
|
||||
There are sections in the documentation on a new FullDuplex interface and
|
||||
"Capture effects." These interfaces are not currently supported.
|
||||
|
||||
If you are using DirectPlayVoice, you should use those interfaces. If your
|
||||
application requires audio capture outside of DirectPlayVoice,
|
||||
you should use the existing DirectSoundCapture interfaces.
|
||||
|
||||
|
||||
Direct3D
|
||||
========
|
||||
|
||||
Migration of DirectDraw into Direct3D:
|
||||
|
||||
In DirectX 8.0, DirectDraw<61> is fully integrated into Microsoft Direct3D
|
||||
to enable drastically simplified application initialization, improved data
|
||||
allocation and management performance, and reduced memory footprint.
|
||||
The new Direct3D infrastructure provides the services that are called
|
||||
at relatively low frequency. These services comprise:
|
||||
|
||||
- Creation of Direct3D
|
||||
- Creation of resources (textures, vertex buffers etc)
|
||||
- Display mode selection
|
||||
- Presentation of rendered images to the display
|
||||
|
||||
New Graphics Features for DirectX 8.0 are:
|
||||
|
||||
Parallel vertex input streams for more flexible mapping to dynamic
|
||||
application data structures. Programmable vertex processing language
|
||||
enables programmers to write hardware shaders for:
|
||||
|
||||
- Morphing/tweening animation
|
||||
- Matrix palette skinning
|
||||
- User-defined lighting models
|
||||
- General environment mapping
|
||||
- Procedural geometry
|
||||
- Any other developer-defined algorithm
|
||||
|
||||
Programmable Pixel processing language enables programmers to write
|
||||
hardware shaders for:
|
||||
|
||||
- Per-pixel lighting/bump mapping
|
||||
- Per-pixel environment mapping
|
||||
- Any other developer-defined algorithm
|
||||
|
||||
MultiSample Rendering support enables:
|
||||
|
||||
- Full-scene antialiasing
|
||||
- Multisample effects such as motion blur, depth-of-field, etc.
|
||||
|
||||
Point Sprites enable:
|
||||
|
||||
- High-performance rendering of particle systems
|
||||
|
||||
3-D Volume textures enable:
|
||||
|
||||
- Range-attenuation in per-pixel lighting
|
||||
- Volume atmospheric effects
|
||||
- Easy texturing of very complex geometry
|
||||
|
||||
Higher-Order Primitive Support:
|
||||
|
||||
- For enhancing the appearance of 3-D content
|
||||
- Facilitating mapping of content from major 3-D authoring tools
|
||||
|
||||
Higher-Level Technologies:
|
||||
|
||||
- 3-D content creation tool plugins for export into Direct3D of skinned
|
||||
meshes using a variety of Direct3D techniques such as, multi-resolution
|
||||
LOD geometry, and higher order surface data.
|
||||
|
||||
Direct3D Feature Notes:
|
||||
|
||||
No significant API changes are contemplated beyond this point.
|
||||
All implemented features have been tested individually
|
||||
to some extent, but they have not been tested in exhaustive combinations
|
||||
yet. Many features in DirectX 8.0 are awaiting new hardware, however
|
||||
there is at least one implementation available for each of the features
|
||||
shipped:
|
||||
|
||||
- Programmable vertex shaders are supported on the host CPU. On CPUs they
|
||||
will operate with performance comparable to HW implementations and can be
|
||||
used immediately for DirectX 8.0 prototyping and development.
|
||||
- Programmable pixel shaders are supported on the host CPU using refrast
|
||||
only. These can be used for prototyping DirectX 8.0 shaders for use when
|
||||
hardware ships.
|
||||
- Parallel DMA data input is supported on refrast and the SW geometry pipeline.
|
||||
- Point Sprites are supported in refrast, software T&L pipeline, and should
|
||||
be supported in a prototype DirectX 8.0 driver from at least one hardware
|
||||
manufacturer.
|
||||
- Volume Textures are supported in refrast.
|
||||
- Multisample rendering is supported in refrast and future hardware.
|
||||
- Higher-Order Primitives are supported in refrast and via D3DX utilities.
|
||||
|
||||
D3DX
|
||||
====
|
||||
|
||||
Debug Binaries for D3DX:
|
||||
|
||||
The D3DX library is a static library. However, to help debugging, we also
|
||||
have a debug only dynamic library of D3DX in DirectX 8.0. To use this, link
|
||||
with the d3dx8d.lib which is an import lib corresponding to the D3DX8D.DLL.
|
||||
If you are reporting a bug and sending Microsoft an example that reproduces
|
||||
that behavior, please make sure the executable is linked to the dynamic debug
|
||||
library.
|
||||
|
||||
The dynamic debug d3dx8 library is for debugging only and is not intended
|
||||
for use of shipping applications. D3DX8D.DLL is installed as part of the
|
||||
DirectX 8.0 SDK setup, not as part of the redistributable runtime setup.
|
||||
This will not be available as part of future operating systems.
|
||||
|
||||
If apps want to statically link to the debug d3dx8 library they need to
|
||||
link to d3dx8dt.lib. To statically link to a retail d3dx8 library please
|
||||
link to d3dx8.lib.
|
||||
|
||||
The D3DX Effect Framework
|
||||
|
||||
The D3DX effect framework allows you to define shading effects using a text
|
||||
file that describes the various techniques of implementing an effect. For
|
||||
an example of an effect file see water.sha in the C samples media directory.
|
||||
|
||||
|
||||
DirectInput
|
||||
===========
|
||||
|
||||
DirectInput for DirectX 8.0 features a major addition, the DirectInput
|
||||
Mapper. The Mapper makes it possible for applications to code to their
|
||||
in-game actions, without the effort of figuring out the actions represented
|
||||
on the device itself. Additionally, the Mapper makes user configuration
|
||||
of devices much simpler by offering a default configuration UI.
|
||||
|
||||
DIPROP_KEYNAME is supported by the IDirectInputDevice8::GetProperty
|
||||
method. DIPROP_KEYNAME retrieves the localized key name, in the form
|
||||
of a DIPROPSTRING, from a DirectInput DIK_* value.
|
||||
|
||||
DIPROP_SCANCODE is supported by the IDirectInputDevice8::GetProperty
|
||||
method. DIPROP_KEYNAME retrieves the device scancode, in the form of a
|
||||
DIPROPDWORD, from a DirectInput DIK_* value.
|
||||
|
||||
|
||||
DirectPlay
|
||||
==========
|
||||
|
||||
DirectPlay has been completely rewritten in DirectX 8.0 to provide the
|
||||
robust scalability required to build high performance, massively
|
||||
scaleable network games. With version 8.0, DirectPlay also provides
|
||||
voice communication via the DirectPlay Voice API.
|
||||
|
||||
Note: In these release notes the phrases "DirectPlay4", "DirectPlay4
|
||||
interface" or "DirectPlay4 session" are used to mean the IDirectPlay4
|
||||
interface or a session hosted using the IDirectPlay4 interface, even
|
||||
if that interface or session is implemented using the dlls that are
|
||||
part of DirectX 8.0. "DirectPlay8", "DirectPlay8 interface", and
|
||||
"DirectPlay8 session" mean the IDirectPlay8... family of interfaces,
|
||||
or a session hosted using the IDirectPlay8... family of interfaces.
|
||||
|
||||
Since DirectPlay8 has been completely re-written from the ground up,
|
||||
the DirectPlay8 interfaces are not extensions of the existing
|
||||
DirectPlay4 interfaces. i.e. the DirectPlay8 interfaces do not
|
||||
inherit from the DirectPlay4 interfaces in the object oriented sense.
|
||||
|
||||
Also, DirectPlay8 sessions are not network compatible with DirectPlay4
|
||||
sessions.
|
||||
|
||||
Note that the DirectPlay4 interfaces are still present in DirectPlay8
|
||||
and are still compatible with previous versions of DirectPlay. So games
|
||||
written for DirectPlay4 will still run on systems with DirectX 8.0
|
||||
installed.
|
||||
|
||||
To enable maximum scalability, DirectPlay8 uses a callback model. All
|
||||
indications from DirectPlay8 are delivered to the application via an
|
||||
application supplied callback function. Therefore DirectPlay can indicate
|
||||
multiple events to the application in parallel on different threads.
|
||||
|
||||
Additionally, performance critical operations such as Send and Receive
|
||||
can be performed without copying data, and without thread switching.
|
||||
|
||||
This programming model allows DirectPlay applications to achieve maximum
|
||||
possible performance and scalability on both single-processor and
|
||||
multi-processor hardware.
|
||||
|
||||
DirectPlay8 also adds:
|
||||
- Better support for NATs, Firewalls, and Proxy Servers
|
||||
- Application defined payloads on session enumerations and replies
|
||||
- Revised addressing scheme that is URL ruled based designed to be human
|
||||
readable and portable
|
||||
- The use of I/O completion ports in Windows 2000
|
||||
- Improved ease of use through the removal of obtuse services, for example
|
||||
groups within groups
|
||||
|
||||
The DirectPlay Voice interfaces allow you to quickly and easily establish
|
||||
voice communications over an existing DirectPlay8 or DirectPlay4 session.
|
||||
|
||||
DirectPlay Voice provides the following features:
|
||||
- Peer to peer, forwarding server, and mixing server voice topologies
|
||||
- A variety of codecs from 1.2kbit/sec to 64kbit/sec, that can be used
|
||||
royalty free in DirectPlay Voice.
|
||||
- Voice detection to automatically trigger voice transmission
|
||||
- Automatic gain control to automatically adjust the recording volume level
|
||||
- Adaptive queuing that provides a smooth speech stream with minimum latency
|
||||
over different and changing network conditions
|
||||
- Integration with DirectSound & DirectSoundCapture
|
||||
- Sound Hardware Test wizard
|
||||
- Support for IDirectPlay8 and IDirectPlay4 transport sessions
|
||||
|
||||
DirectPlay8 still has all the benefits of previous versions of DirectPlay,
|
||||
including:
|
||||
- session setup and teardown
|
||||
- session discovery
|
||||
- application launching
|
||||
- player management
|
||||
- group management
|
||||
- client/server and peer to peer operation
|
||||
- peer to peer host migration
|
||||
- bandwidth throttling protocol
|
||||
|
||||
|
||||
DirectShow
|
||||
==========
|
||||
|
||||
DirectX 8.0 marks the first release that DirectShow has been part of the
|
||||
core DirectX redistribution. This means that for the first time,
|
||||
applications using DirectShow need not install a separate redist, and
|
||||
current DirectX users can now take advantage of DirectShow in their
|
||||
applications. Adding to the existing capabilities for audio and video
|
||||
playback and capture that DirectShow provided, this new release also
|
||||
provides the following new features:
|
||||
|
||||
Windows Media Format Support: Two new filters enable DirectShow applications
|
||||
to read and write files in Windows Media Format. The ASF Reader filter
|
||||
reads and parses Windows Media Format files. The ASF File Writer filter
|
||||
writes Windows Media Format files; it also does the necessary multiplexing
|
||||
and compressing.
|
||||
|
||||
DirectShow Editing Services (DES): This is a complete API for timeline and
|
||||
switching services built on top of DirectShow. This API implements the
|
||||
core of non-linear editing services, and allows for the creation of
|
||||
composite media from a variable number of source audio and video streams.
|
||||
By allowing real-time effects and transitions, true "on-the-fly" source
|
||||
switching, run-time compositing, run-time seeking, and graph management,
|
||||
DES provides a powerful high-level way to use DirectShow, while
|
||||
still allowing applications to access lower-level DirectShow functions.
|
||||
DES replaces cutlists, which are no longer supported.
|
||||
|
||||
New DVD Support: Two new interfaces, IDVDControl2 and IDVDInfo2, greatly expand
|
||||
the functionality of the DVD Navigator. The new MSWebDVD ActiveX<65> control
|
||||
makes this functionality available to script-based applications.
|
||||
New DVD features include: Karaoke multichannel audio support, audio volume
|
||||
control through IBasicAudio, support for frame stepping and frame-accurate
|
||||
seeking, simplified access to DVD text information strings, and improved support
|
||||
for parental management controls.
|
||||
|
||||
DirectX Media Objects: DirectX Media Objects (DMOs) are a new way to write
|
||||
data-streaming components. Like DirectShow filters, DMOs take input data and use
|
||||
it to produce output data. However, the application programming interfaces
|
||||
(APIs) for DMOs are much simpler than the corresponding APIs for DirectShow. As
|
||||
a result, DMOs are easier to create, test, and use than DirectShow filters.
|
||||
A wrapper filter is provided to allow DMOs to be used within DirectShow.
|
||||
|
||||
Media Parameters: Media parameters are a new set of APIs that support run-time
|
||||
changes to an object's properties. They offer precise control over properties
|
||||
that change rapidly and require both high performance and repeatability. They
|
||||
enable a property to follow an exact curve, such as a sine wave or
|
||||
inverse-square curve, in real time.
|
||||
|
||||
New Filters:
|
||||
- MJPEG Decompressor: Decodes a video stream from motion JPEG to uncompressed video
|
||||
- MJPEG Compressor: Compresses an uncompressed video stream using
|
||||
motion JPEG compression.
|
||||
- Null Renderer: Discards samples without displaying or rendering the sample data.
|
||||
Applications can use this filter to discard data from a stream.
|
||||
- Sample Grabber: Retrieves media samples as they move through the filter graph.
|
||||
Applications can use this filter to obtain poster frames or other media data.
|
||||
|
||||
Dynamic Graph Building: DirectShow applications can now change the graph
|
||||
while it is still playing. This allows new audio or video streams to be added
|
||||
to a graph, effects to be inserted in the graph without any visible gap in the
|
||||
playback, and chains of filters to be paused and run independent of the main graph.
|
||||
|
||||
Push Model Clock Support: This allows for improved synchronization between
|
||||
audio and video streams. The default audio renderer can now be slaved to
|
||||
another clock, allowing for applications to deal with timing differences
|
||||
between clocks on sound cards and capture devices, among other scenarios.
|
||||
|
||||
Graph Edit enhancements: GraphEdit now displays filter registration information
|
||||
in the Insert Filters dialog and allows you to spy on existing graphs in
|
||||
external processes (if those processes register their graphs).
|
||||
|
||||
|
||||
DirectMusic Producer
|
||||
====================
|
||||
|
||||
This version of Producer features many new features to aid in both
|
||||
authoring and auditioning of DirectMusic content. These features include
|
||||
authoring support for audio path configurations, which manages pchannel
|
||||
and synth assignments as well as effects routing, the new DLS level 2
|
||||
format (which includes stereo waves, layering of regions, and filtering)
|
||||
and a new API for scripting, which allows composers and sound designers
|
||||
to integrate audio content directly into an application. Other major
|
||||
features include new track types, including a wave track, a script
|
||||
track, a secondary segment trigger track and a melody track, which
|
||||
integrates a variable approach with greater control of form.
|
||||
|
||||
|
||||
DirectX Control Panel
|
||||
=====================
|
||||
Developers can now toggle between DirectX retail and debug system components
|
||||
through the DirectX Control Panel.
|
||||
|
||||
|
||||
Broadcast Driver Architecture
|
||||
======================
|
||||
|
||||
Broadcast Driver Architecture (BDA) is a set of Ring 0 and Ring 3 software
|
||||
components based on the DirectShow<6F> architecture for streaming multimedia
|
||||
broadcast content. BDA is also a specification that defines how custom
|
||||
components, such as filters for parsing private data, interface with the
|
||||
rest of the system. Digital-TV applications can use the Ring 3 components
|
||||
to build filter graphs, implement a single model for tuning across all
|
||||
network types, automate the storage and retrieval of electronic program
|
||||
guide information, and capture IP data including ATVEF announcements,
|
||||
triggers, and packages.
|
||||
|
||||
__________________________________________________________________
|
||||
|
||||
|
||||
CD LAYOUT:
|
||||
|
||||
|
||||
The following is a brief description of the directories found with a complete
|
||||
DirectX 8.0 SDK download. Depending on options specified during
|
||||
installation, some of these directories can be installed on your hard drive.
|
||||
|
||||
\Bin
|
||||
High level DirectX applications & tools.
|
||||
All can be accessed from the Start menu if "Utilities" are installed.
|
||||
|
||||
Note: Japanese systems will require Internet Explorer 5.0 (IE5) for
|
||||
the DirectX Control Panel to display properly. IE5 can be found at
|
||||
http://www.microsoft.com/windows/ie/default.htm.
|
||||
|
||||
|
||||
\Doc
|
||||
Contains reference documentation for the DirectX 8.0 APIs.
|
||||
This Documentation must be viewed with Windows HTMLHelp.
|
||||
|
||||
Note: The HTMLHelp viewer requires a minimum installation of
|
||||
Internet Explorer 5.0 (IE5). IE5 can be found at
|
||||
http://www.microsoft.com/windows/ie/default.htm.
|
||||
|
||||
\Essentls
|
||||
\DMusProd (Direct Music Producer)
|
||||
- DirectMusic Producer is the authoring tool for Direct Music. It
|
||||
allows composers and sound designers to use the interactive and
|
||||
variable resources of DirectMusic along with the consistent sound
|
||||
performance of DLS. DirectX Audio Scripting can also be authored
|
||||
and tested within Producer. The DirectMusic Producer setup program
|
||||
and all files are located here.
|
||||
|
||||
\Extras
|
||||
\Direct3D
|
||||
- Skinning exporter tools
|
||||
\DirectShow
|
||||
- Contains the DVDBoilerplate. See readme.txt within the directory
|
||||
for more information.
|
||||
- Contains additional media that can be used with DirectShow and the
|
||||
DirectShow Editing Services (DES) interfaces.
|
||||
\Documentation
|
||||
- Contains DirectX 7 HTMLHelp Documentation for English and Japanese.
|
||||
- Also contains DirectX 7 Documentation in Microsoft Word format
|
||||
(English only).
|
||||
\GameVoice
|
||||
- Contains the installer for the English Version of Game Voice Share,
|
||||
which includes voice communication and game launching functionality.
|
||||
For more information on Game Voice, visit http://www.gamevoice.com.
|
||||
\Symbols
|
||||
- Contains directories of DirectX 8.0 symbol files for
|
||||
Win2000 and Win9x (retail and debug for each).
|
||||
|
||||
\Include
|
||||
contains DirectX 8.0 include files for DirectX core components.
|
||||
|
||||
\Lib
|
||||
contains DirectX 8.0 library files for DirectX core components.
|
||||
|
||||
\License
|
||||
Text versions of the DirectX SDK and End User License Agreements and
|
||||
the Redistributable License Agreement.
|
||||
|
||||
\Redist
|
||||
Redistributable versions of the DirectX 8.0 Runtime.
|
||||
|
||||
\Samples
|
||||
Contains all sample code and sample binaries. Most samples can be
|
||||
accessed from the Start menu when installed via the downloaded
|
||||
InstallShield setup.
|
||||
|
||||
\SDKDev
|
||||
This directory contains the runtime installs that are installed with
|
||||
the SDK. They are English only and contain both debug and retail
|
||||
DirectX 8.0 system components that can be "switched" between retail
|
||||
and debug without re-installing. For the DirectX 8.0 components,
|
||||
retail or debug can be switched via the DirectX Control Panel.
|
||||
|
||||
The \retail folder contains the setup that will install non-DirectX 8.0
|
||||
retail components while the \debug folder will install all debug
|
||||
components. Both install DX8 retail and debug components. These are
|
||||
the only components that can be "switched".
|
||||
|
||||
__________________________________________________________________
|
||||
|
||||
|
||||
DIRECTX 8.0 SDK NOTES AND KNOWN ISSUES
|
||||
|
||||
|
||||
DirectX Audio (DirectSound & DirectMusic)
|
||||
=========================================
|
||||
|
||||
Below are some known issues with DirectMusic and DirectSound in
|
||||
DirectX 8.0 that you may encounter.
|
||||
|
||||
- ParamEQ and Distortion effects have parameters that are sampling rate
|
||||
dependent.
|
||||
Setting these params to a value that is out of range for that sampling
|
||||
rate will result in:
|
||||
Distortion: Parameters are 'clipped' at the valid range for the
|
||||
sampling rate
|
||||
ParamEQ: If the frequency is greater than can be supported by the
|
||||
sampling rate, the effect is disabled- In the DirectMusic
|
||||
3DAudio sample, there may be some breakup if Doppler is set > 4
|
||||
- DirectSound buffers that are created with DSBCAPS_CTRLFX must be at
|
||||
least 100ms in length.
|
||||
|
||||
|
||||
Direct3D
|
||||
========
|
||||
|
||||
- All executables compiled against earlier DirectX 8.0 betas must be
|
||||
recompiled with this version to run.
|
||||
- Alt-enter in the samples results in texture corruption for some drivers.
|
||||
Workaround: Get newer drivers.
|
||||
- The value for MaxPrimitiveCount defines the max number of vertices
|
||||
as well as the max number of primitives that can be sent to a
|
||||
DrawIndexedPrimitive or DrawPrimitive call.
|
||||
- A bug in the Windows2000 kernel causes an issue upon mode-switches for
|
||||
AGP surfaces locked with the NOSYSLOCK flag. The contents of any such
|
||||
surface may become inaccessible for the duration of the NOSYSLOCK lock
|
||||
if a mode-switch happens after the Lock and before the Unlock. This happens
|
||||
for both DX7 and DX8 applications. The most likely scenario is a DX8
|
||||
application running on a driver that supports hardware vertex buffers,
|
||||
but using software vertex processing (fixed or shader). Under these
|
||||
scenarios, Direct3D might keep a NOSYSLOCK lock on an AGP vertex buffer.
|
||||
If the user alt-tabs out of the application or does anything else to cause
|
||||
a mode-change, the thread writing into the vertex buffer may fault. There
|
||||
is no known workaround. Microsoft will fix this issue in the next version
|
||||
of Windows and will attempt to ship a fix in a future Windows2000
|
||||
Service Pack.
|
||||
- A bug in the DX6 and DX7 implementation of
|
||||
IDirectDraw*::GetDeviceIdentifier causes the DirectDraw runtime to write
|
||||
four extra bytes past the end of the structure. To work around this issue,
|
||||
allocate an extra four bytes at the end of your DDDEVICEIDENTIFIER*
|
||||
structure. This bug does not exist in the IDirect3D8::GetAdapterIdentifier
|
||||
version.
|
||||
- The Direct3D8 run-time exhibits the following behvior on all Windows NT
|
||||
platforms. Run a full-screen Direct3D8 application, press Ctrl-Alt-Del,
|
||||
press ESC. The desktop will appear, but the display card will still be in
|
||||
the application's resolution, not the proper desktop resolution. (The user
|
||||
may alt-tab back to the application at this time.) A fix for this will be
|
||||
in the next release of DirectX, and the problem will be fixed in the next
|
||||
version of Windows NT. Developers are urged NOT to try to work-around this
|
||||
problem nor code their own solutions, since such solutions are very likely
|
||||
to interact poorly with our own fix.
|
||||
- Terminating a process with un-released vertex buffers on Win9x DX7 APIs
|
||||
can cause instability. This is caused by a bug in the automatic per-process
|
||||
cleanup code in DirectDraw which causes VBs to be leaked permanently (until
|
||||
reboot) on all Win9x platforms: Windows 95, 98, Millenirum. Applications
|
||||
should be carefully coded to ensure all Vertex Buffers are correctly released
|
||||
before exiting the process.
|
||||
- Applications should be careful when responding to the WM_MOUSEMOVE message.
|
||||
If the application calls IDirect3DDevice8::SetCursorPosition with a coordinate
|
||||
that is outside the current display mode size, then the Direct3D run-time may
|
||||
cause another WM_MOUSEMOVE, which may cause the application to call
|
||||
IDirect3DDevice8::SetCursorPosition again, resulting in an infinite loop.
|
||||
The application should either be careful not to call
|
||||
IDirect3DDevice8::SetCursorPosition with invalid positions, or should never
|
||||
call IDirect3DDevice8::SetCursorPosition with repeated positions.
|
||||
One common scenario for generating invalid mouse cursors is to remove the
|
||||
menu style from a window incorrectly when going full-screen. The SDK sample
|
||||
applications incorrectly use SetWindowLong to remove the menu bar from the
|
||||
window before going fullscreen. The correct technique is to call
|
||||
"hOldMenu = SetMenu(hWnd, NULL)'" before going fullscreen, and then
|
||||
"SetMenu(hWnd, hOldMenu);" before returning to windowed mode.
|
||||
- When using the function ValidateDevice on Win9x the return value will be
|
||||
DD_OK if it is successful.
|
||||
|
||||
Point Sprites:
|
||||
|
||||
- When using the Direct3D software T&L pipeline (device created with
|
||||
D3DCREATE_SOFTWARE_VERTEXPROCESSING flag set or with
|
||||
D3DCREATE_MIXED_VERTEXPROCESSING flag and software vertex processing
|
||||
toggled on), then point sprite support is guaranteed. When using
|
||||
hardware vertex processing, some older drivers may not support point
|
||||
sprites, indicated by d3dcaps->MaxPointSize = 0. Upgrading to a DX8
|
||||
driver for these parts will enable them.
|
||||
|
||||
To ensure consistent behavior for point sprite support, set
|
||||
D3DRS_CULLMODE = D3DCULL_NONE
|
||||
D3DRS_FILLMODE = D3DFILL_SOLID
|
||||
when rendering point sprites.
|
||||
|
||||
Vertex Shaders:
|
||||
|
||||
- Two vertex shader instructions may produce implementation-specific
|
||||
results for out-of-range inputs, such as the log of a negative number.
|
||||
The log, logp and y- component of the lit instruction macro should not
|
||||
be passed negative values for this reason.
|
||||
|
||||
Driver/Device Specific Issues:
|
||||
|
||||
- The Windows Millennium driver for the ATI Rage 128 fails (draws nothing)
|
||||
when using vertex shaders which output more than two texture coordinates
|
||||
per texture coordinate set when the D3DTTFF_PROJECTED bit is not set.
|
||||
|
||||
D3DX
|
||||
====
|
||||
|
||||
- This product includes software developed by the University of California,
|
||||
Berkeley and its contributors D3DX Mesh APIs.
|
||||
- The ID3DXSkinMesh interfaces currently only support 16-bit mesh. 32-bit
|
||||
mesh support is not yet implemented.
|
||||
- All other D3DX Mesh interfaces do support 32-bit meshes even though the
|
||||
docs say they do not.
|
||||
- D3XGenerateAdjacency currently ignored the epsilon value and uses 0.0f
|
||||
as the epsilon.
|
||||
- In D3DXMatrixPerspectiveFOV, the aspect ratio is x/y instead of y/x.
|
||||
|
||||
|
||||
DirectInput
|
||||
===========
|
||||
|
||||
- There is a bug in DirectInput which causes the Logitech Wingman Formula wheel to
|
||||
report pedal data on the wrong axes.
|
||||
- There are some know issues that can cause mouse behavior to be very sluggish
|
||||
when debugging using DirectInput. There are two reg files that will
|
||||
assist with this issue. They are:
|
||||
Mouse and Keyboard Emulation On.reg
|
||||
Mouse and Keyboard Emulation Off.reg
|
||||
"Mouse and Keyboard Emulation On.reg" will force all mouse calls through
|
||||
dinput emulation, thus making the mouse perform properly inside the debugger.
|
||||
"Mouse and Keyboard Emulation Off.reg" will turn off force emulation.
|
||||
Only use these keys on development machines, they are not intended to be
|
||||
redisted as they are a global setting that effects all Direct Input clients.
|
||||
- The following devices are supported with device images in this release.
|
||||
+ ACT LABS RS
|
||||
+ ACT LABS Force RS
|
||||
+ Gravis Xterminator Dual Control
|
||||
+ Gravis Blackhawk Digital
|
||||
+ Gravis Gamepad Pro USB
|
||||
+ Gravis Gamepad Pro
|
||||
+ Gravis Eliminator Gamepad Pro
|
||||
+ Gravis Xterminator Digital GamePad
|
||||
+ InterAct/3dfx SV-262A HammerHead Fx
|
||||
+ InterAct Axispad
|
||||
+ InterAct SV-251 Raider Digital
|
||||
+ Logitech WingMan Formula (Yellow)
|
||||
+ Logitech WingMan Extreme Digital 3D
|
||||
+ Logitech WingMan Gamepad Black (USB)
|
||||
+ Logitech Wingman Rally Force USB
|
||||
+ Logitech Wingman Rumblepad
|
||||
+ Microsoft Sidewinder Gamepad Pro
|
||||
+ Microsoft SideWinder Force Feedback Wheel
|
||||
+ Microsoft SideWinder Force Feedback Pro
|
||||
+ Microsoft Sidewinder FF 2
|
||||
+ Microsoft Sidewinder Dual Strike
|
||||
+ Microsoft Sidewinder Precision 2
|
||||
+ Microsoft Sidewinder Plug and Play
|
||||
+ Microsoft SideWinder Game Pad
|
||||
+ Microsoft SideWinder Precision Racing Wheel
|
||||
+ Microsoft SideWinder Precision Pro
|
||||
+ Microsoft SideWinder Freestyle Pro
|
||||
+ Microsoft SideWinder 3D Pro
|
||||
|
||||
|
||||
DirectPlay
|
||||
==========
|
||||
|
||||
The following are known issues with DirectPlay in this release that
|
||||
you may need to work around.
|
||||
|
||||
- Note that the dwTimeoutUntilKeepAlive member of the DPN_CAPS structure
|
||||
specifies a minimum value. The first keepalive packet may be sent as
|
||||
much as 30 seconds later than the minimum value specified in this
|
||||
member. For example, if you set dwTimeoutUntilKeepAlive to 60000
|
||||
(60 seconds) the first keepalive packet may be sent anywhere from
|
||||
60 to 90 seconds after the last normal packet was sent.
|
||||
- The "debug output level" slider on the DirectPlay tab of the DirectX
|
||||
control panel is not functional. For instructions on how to change the
|
||||
debug output level, see the "dp8log.txt" file in the
|
||||
[sdkroot]\bin\DXUtils directory.
|
||||
- To use DirectPlay Voice in full duplex mode, we recommend that you update
|
||||
to the latest drivers for your audio device. Some older drivers do not
|
||||
provide reliable full duplex performance.
|
||||
- If you connect to a location that you have enumerated, the enumeration
|
||||
will be canceled automatically for you. If you attempt to do a cancel
|
||||
asynchronous operation on this enum after the connect is completed you
|
||||
will get back DPNERR_USERCANCEL error code. Be aware that this is the
|
||||
expected behavior and that you should not exit with an error condition.
|
||||
- The modem service provider implementation for DirectPlay8 requires
|
||||
TAPI 2.0 functionality. TAPI 2.0 is available as an installed component
|
||||
on Windows 98 and later, but not on Windows 95. If your application
|
||||
requires modem functionality on the Windows 95 platform, the TAPI 2.0
|
||||
patch for Windows 95 can be obtained on the Microsoft FTP site
|
||||
(ftp://ftp.microsoft.com/developr/TAPI/tapi2195.zip) and distributed
|
||||
with you application.
|
||||
|
||||
Notes on NATs (Network Address Translators):
|
||||
|
||||
- There are many different NAT solutions available, some of which are
|
||||
different from others. We have attempted to document some of the issues
|
||||
with various NAT solutions, but is not comprehensive. Please refer to
|
||||
the DirectX Developer Page at http://msdn.microsoft.com/directx for
|
||||
further information on these issues.
|
||||
|
||||
DirectPlay Voice codecs via Windows ACM (Audio Compression Manager):
|
||||
|
||||
- DirectPlay Voice uses the following codecs via the Windows ACM:
|
||||
- Microsoft ADPCM
|
||||
- Microsoft GSM
|
||||
- DSP Group Truespeech
|
||||
- Installation of these codecs with Windows is optional. If they
|
||||
are not installed, then one or more of the compression types in
|
||||
DirectPlay Voice will not function. If the application attempts
|
||||
to use a compression type that is not functional due to a missing
|
||||
ACM codec, it will receive the DVERR_COMPRESSIONNOTSUPPORTED
|
||||
return code.
|
||||
- On Windows 2000, the user can install these codecs through the
|
||||
Add/Remove Hardware wizard. The user should select
|
||||
"Add/Troubleshoot a device". When a list of hardware is presented,
|
||||
the user should select "Add a new device", then on the next
|
||||
page select "No, I want to select the hardware from a list".
|
||||
This will bring up a list of hardware. Select "Sound, video, and
|
||||
game controllers". The "Audio Codecs" item is listed under
|
||||
"(Standard system devices)".
|
||||
- On Windows 9x, the user can install these codecs through the
|
||||
Add New Hardware wizard. When prompted, the user should select
|
||||
"No, I want to select the hardware from a list". In the list of
|
||||
device types, codecs are listed under "Sound video and game
|
||||
controllers". The codecs are listed under two manufacturers.
|
||||
The ADPCM and GSM codecs are listed under "Microsoft Audio
|
||||
Codecs" and the Truespeech codec is listed under "DSP Group".
|
||||
|
||||
|
||||
DirectShow
|
||||
==========
|
||||
|
||||
- The GraphEdit Tool (and some of the DirectShow samples) requires MFC42.DLL
|
||||
to be present on the system. The DirectX SDK Setup does not install this
|
||||
DLL. This will only be an issue on Windows 95 systems and will require you
|
||||
to install Microsoft Visual C++ to acquire the DLL.
|
||||
- Application development using the DirectShow base classes libraries requires
|
||||
installation of the DirectShow samples. The source code for the base classes
|
||||
is now included as a sample project, rather than as a separate Classes\Base
|
||||
directory. You must compile these base classes to generate strmbase.lib and
|
||||
strmbasd.lib, which are no longer installed as binary files. If you are
|
||||
linking with strmbase.lib or strmbasd.lib with your own application, be sure
|
||||
to build and link with the updated DirectX 8 libraries (instead of the older
|
||||
libraries that are installed with Visual C++ or the Microsoft Platform SDK).
|
||||
- The samples included with the SDK are configured to compile and link with
|
||||
the updated libraries, which are generated by building the BaseClasses project.
|
||||
Further build instructions are provided in:
|
||||
<DXSDKInstallFolder>\samples\Multimedia\DirectShow\readme.txt.
|
||||
- The <streams.h> header file, along with many other DirectShow-specific header
|
||||
files, is now located in the DirectShow samples BaseClasses directory,
|
||||
which includes the BaseClasses source code and header files. You must add
|
||||
the BaseClasses directory to the beginning of your project's include path
|
||||
settings in order for Visual C++ to find all of the updated header files.
|
||||
- To use the Teletext Decoder Fonts that are shipped with DX8, make sure that
|
||||
the WST_* fonts are installed by examining the \windows\fonts directory.
|
||||
- There is a known problem with the MP3 decoder filter when used with
|
||||
Audio Effects DMOs. If you add an audio effect DMO (like WavesReverb, Echo,
|
||||
or Flange) to an existing MP3 filter graph, the audio could be played back
|
||||
at double speed. The problem would occur whenever the MP3 decoder is connected
|
||||
to a downstream audio effect dmo (via the dmo filter wrapper) that offers a
|
||||
default audio input type which doesn't match the native format of the
|
||||
uncompressed MP3 stream. For example, if you render a 22kHz MP3 file and
|
||||
add a DMO Audio effect, the MP3 filter could misinterpret the input type as
|
||||
being 44kHz when it is actually 22kHz. This would not be a problem for 44kHz
|
||||
MP3 files. This issue will be fixed in a future release.
|
||||
- If you have the SDK on CD-ROM, the Extras\DirectShow\Media directory
|
||||
contains additional media that can be used with DirectShow and the DirectShow
|
||||
Editing Services (DES) interfaces. We have included DV-encoded AVI videos,
|
||||
larger MPEG videos, and higher-quality JPEG images. Since the DV files are
|
||||
very large, you should copy them to your hard disk before playing them to
|
||||
ensure the best performance.
|
||||
- Remote graph spying with GraphEdit works only on Windows 2000.
|
||||
- The DirectShow Editing Services (DES) Color Generator source filter may
|
||||
generate blue or green components incorrectly if they have small values.
|
||||
For best results, use solid primary colors or set Blue and Green
|
||||
components to values of either 0xFF or 0x00.
|
||||
|
||||
|
||||
Broadcast Driver Architecture
|
||||
======================
|
||||
|
||||
Known issues with Broadcast IP Data Reception under Windows 2000:
|
||||
|
||||
- After rebooting a Windows 2000 system with a BDA receiver card installed,
|
||||
the BDA NDIS IP NIC is not immediately active. It becomes active only
|
||||
when an application inserts the BDA IPSink filter into a graph and connects
|
||||
its input pin. Once activated by connecting the IPSink filter's input pin,
|
||||
it takes 20 to 30 seconds for the BDA NDIS IP NIC to be assigned an IP
|
||||
address. The address assigned will be a Net 10 address. Once activated,
|
||||
the BDA NDIS IP NIC will remain active until the system is rebooted.
|
||||
- There may be some applications that use the BDA NDIS IP NIC as the default
|
||||
LAN adapter. These apps will fail if the BDA NDIS IP NIC is active. To
|
||||
de-activate the BDA NDIS IP NIC, reboot the system and do not run a TV graph
|
||||
or application.
|
||||
|
||||
|
||||
Documentation
|
||||
=============
|
||||
|
||||
- For proper viewing of the DirectX Documentation, install the docs from
|
||||
the DirectX 8.0 SDK CD. Specify a full installation, or if you chose a
|
||||
Custom install, ensure that you've selected Documentation.
|
||||
- The known issues with the DirectX 8.0 Documentation are written up in a
|
||||
separate file. You will find these issues listed in the
|
||||
DirectX8_Doc_Readme.txt file found in the <DXSDKCDRoot>\dxf\doc\DirectX8
|
||||
folder. This file is also installed into the <DXSDKInstallFolder>\doc\DirectX8
|
||||
when DirectX8 Documentation is installed.
|
||||
|
||||
|
||||
Samples
|
||||
=======
|
||||
|
||||
Miscellaneous Issues:
|
||||
|
||||
- Some samples will compile with errors with the UNICODE flag defined.
|
||||
- Visual C/C++ 5 compatibility in DirectX 8.0 depends on Service Pack 3
|
||||
for Visual Studio 97. If you see the following errors:
|
||||
"fatal error LNK1106: invalid file or disk full: cannot seek to 0x389bc8bf"
|
||||
"Internal error during Pass1"
|
||||
then you need to upgrade your Visual C/C++ 5 installation. Service packs
|
||||
for Visual Studio can be found at http://msdn.microsoft.com/vstudio/sp/vs97.
|
||||
|
||||
Direct3D Samples:
|
||||
|
||||
- There are miscellaneous issues with some display hardware & drivers.
|
||||
Please let us know of any problems you encounter and specify whether you
|
||||
believe it is sample or driver related.
|
||||
|
||||
DirectShow Samples:
|
||||
|
||||
- There are several .XTL sample files in the \media folder. These files
|
||||
demonstrate some of the functionality available in the DirectShow Editing
|
||||
Services. You can render these files using the XTLTest C++ sample and
|
||||
the XTLTestVB and DexterVB VisualBasic samples. All provided XTL files
|
||||
refer to media that ships in the SDK's media directory. Rendering XTL
|
||||
files is a great way to get an idea of what the new DirectShow Editing
|
||||
Services APIs make possible. For a simple demo, drag a few of the SDK
|
||||
media directory's sample .XTL files onto the XTLTestVB sample's client area.
|
||||
- The DirectShow Visual Basic samples demonstrate more of the DES functionality
|
||||
than the C++ samples. Be sure to run SlideShowVB and TrimmerVB if you are
|
||||
interested in DES. You can also use the DexterVB ("Dexter Explorer")
|
||||
application as an XTL development/test tool.
|
||||
- The Texture3D sample is known to fail on some systems (referencing
|
||||
invalid memory), for which you may see an error message. This failure is
|
||||
in initialization of D3D. We recommend updating your video card drivers
|
||||
to the most current revision, as that usually resolves the problem.
|
||||
- The DirectShow IDL files are currently located in the
|
||||
\include\DShowIDL directory of the SDK for your convenience.
|
||||
- You will be required to build the \BaseClasses libraries before any sample
|
||||
that depends on them can be built or executed. Please review the Readme.Txt
|
||||
file in the DirectShow samples root directory for more information on
|
||||
building the samples.
|
||||
|
||||
|
||||
DirectX for Visual Basic Samples:
|
||||
|
||||
- DBMON.exe is a console application which allows the Visual Basic DirectX
|
||||
developer to take advantage of extended output that debug installs of
|
||||
DirectX provide. This application works only under Windows 2000.
|
||||
To use, execute the application. All debug output will be captured and sent
|
||||
to the console window. If you are not seeing debug output, ensure that
|
||||
you have installed the debug version of DirectX, and that you are running
|
||||
Windows 2000.
|
||||
- DXVB Messenger Server is the server portion of a client/server instant
|
||||
messaging application. This sample requires the use of ActiveX Data Object
|
||||
(ADO) to maintain the data needed. If you are running Windows 9x, you must
|
||||
have the latest version of ADO installed on your machine to compile or run
|
||||
this sample. You can install the latest ADO while Visual Basic Professional
|
||||
is being installed or you can download the latest ADO from the web at:
|
||||
http://www.microsoft.com/data/ado/. ADO is installed by default with
|
||||
Visual Basic 6 Enterprise.
|
||||
- If you are experiencing problems searching for and connecting to sessions
|
||||
using DirectPlay for VisualBasic, you may need to update your system.
|
||||
To update, install DCOM98 from:
|
||||
http://download.microsoft.com/msdownload/dcom/98/x86/en/dcom98.exe
|
||||
|
||||
|
||||
Other
|
||||
=====
|
||||
|
||||
- The DirectDraw "Debug Level" slider in DirectX Control Panel Applet does
|
||||
not function. Instead use the "Debug Output Level" slider on the Direct3D
|
||||
tab, this will effect both DDraw and D3D8. Also note that DirectDraw labels
|
||||
it's debug spew as coming from "Direct3D8".
|
||||
- The DirectX runtime will not operate on NEC PC98 systems. SDK and Runtime
|
||||
installations have been intentionally blocked on this system.
|
||||
- The DirectX 8.0 runtime requires a Pentium compatible CPU for operation.
|
||||
The DirectX runtime setup will not install on processors that do not report
|
||||
Pentium compatibility. Some older Cyrix processors, while compatible with
|
||||
the Pentium instruction set, report as x486 processors, and thus do not
|
||||
support installation of the DirectX 8.0 run time.
|
||||
- When installing the DirectX 8.0 runtime from the DirectX SDK you will
|
||||
notice that the size requirements are inflated from previous DirectX versions.
|
||||
For example, if you were only to install a DirectX 8.0 runtime from the
|
||||
DirectX SDK onto a system with low disk space, you would see that at least
|
||||
120 MB is required. This is because both the retail and debug runtimes are
|
||||
included in each of the DirectX SDK runtime installs (this allows developers
|
||||
to switch between retail and debug without having to re-install). However,
|
||||
this inflated size is not true of the redistributable runtimes shipped with
|
||||
the SDK. Redistributable installs will require significantly less disk space.
|
||||
While this number is dependent on the disk format (Fat16/32 vs. NTFS) we
|
||||
expect approximately 40 MB of free space is required for uncompression and
|
||||
installation and approximately 15 MB once installed (and this is only true for
|
||||
systems with no previous DirectX version installed). The DirectX Setup API
|
||||
will check for and display error messages when these requirements are not met.
|
||||
- Windows 95 Japanese Systems will require MS UI Gothic patch for Windows 95
|
||||
or Internet Explorer 5.0 (or after) for the DirectX Control Panel to display
|
||||
properly. MS UI Gothic Patch can be found at
|
||||
http://www.microsoft.com/JAPAN/win95/msgotupd/default.htm and IE5 (or after)
|
||||
can be found at http://www.microsoft.com/windows/ie/default.htm.
|
||||
|
||||
__________________________________________________________________
|
||||
|
||||
|
||||
COMPILER SUPPORT
|
||||
|
||||
All DirectX 8.0 SDK samples are developed and compiled with Visual Studio 6.0.
|
||||
We have provided Visual Studio 6.0 DSP files for your convenience.
|
||||
|
||||
All DirectX 8.0 libraries, with the exception of the DirectShow libraries, should
|
||||
be compatible with Visual Studio 5.0 SP3 or higher.
|
||||
|
||||
__________________________________________________________________
|
||||
|
||||
|
||||
SPECIAL THANKS
|
||||
|
||||
Marlin Studios
|
||||
|
||||
Textures used in the Billboard sample, tree02S.tga, tree01S.tga & tree35S.tga,
|
||||
are provided courtesy of Marlin Studios (http://www.marlinstudios.com).
|
||||
They are provided for use with this sample only and cannot be distributed
|
||||
with any application without prior written consent.
|
||||
|
||||
Viewpoint Digital, Inc.
|
||||
|
||||
The model used by the Visual Basic AutoParts sample, engine1.x, is provided
|
||||
courtesy of Viewpoint Digital, Inc. (http://www.viewpoint.com). It is provided
|
||||
for use with this sample only and cannot be distributed with any application
|
||||
without prior written consent. V6 Engine Model copyright 1999 Viewpoint
|
||||
Digital, Inc..
|
||||
|
||||
3DCAFE and Platinum Pictures
|
||||
|
||||
The model in the Dolphin samples, Dolphin.x, is derived from the model files
|
||||
(dolphins.zip) provided courtesy of 3DCAFE and Platinum Pictures
|
||||
(http://www.3dcafe.com/). It is provided for use with this sample only.
|
||||
For further terms of use please visit the 3DCAFE site or contact 3DCAFE.
|
||||
BIN
game_re/third_party/mssdk/Uninst.isu
vendored
BIN
game_re/third_party/mssdk/Uninst.isu
vendored
Binary file not shown.
@@ -1,24 +0,0 @@
|
||||
SUPPLEMENTAL END USER LICENSE AGREEMENT FOR MICROSOFT SOFTWARE
|
||||
|
||||
IMPORTANT: READ CAREFULLY - The Microsoft Corporation ("Microsoft") operating system components which you are about to install, including any "online" or electronic documentation ("OS COMPONENTS"), are subject to the terms and conditions of the agreement under which you have validly licensed the applicable Microsoft operating system product identified below (each an "End User License Agreement" or "EULA") and the terms and conditions of this Supplemental EULA. BY INSTALLING, COPYING OR OTHERWISE USING THE OS COMPONENTS, YOU AGREE TO BE BOUND BY THE TERMS AND CONDITIONS OF THE EULA FOR THE APPLICABLE OPERATING SYSTEM PRODUCT IDENTIFIED BELOW AND THIS SUPPLEMENTAL EULA. IF YOU DO NOT AGREE TO THESE TERMS AND CONDITIONS, DO NOT INSTALL, COPY OR USE THE OS COMPONENTS.
|
||||
|
||||
NOTE: IF YOU DO NOT HAVE A VALID EULA FOR EITHER MICROSOFT WINDOWS 95, WINDOWS 98, WINDOWS ME, OR WINDOWS 2000, (each an "OS Product"), YOU ARE NOT AUTHORIZED TO INSTALL, COPY OR OTHERWISE USE THE OS COMPONENTS AND YOU HAVE NO RIGHTS UNDER THIS SUPPLEMENTAL EULA.
|
||||
|
||||
Capitalized terms used in this Supplemental EULA and not otherwise defined herein shall have the meanings assigned to them in the applicable OS Product EULA.
|
||||
|
||||
General. The OS COMPONENTS are provided to you by Microsoft to update, supplement, or replace existing functionality of the applicable OS Product. Microsoft grants you a license to use the OS COMPONENTS under the terms and conditions of the EULA for the applicable OS Product (which is hereby incorporated by reference) and the terms and conditions set forth in this Supplemental EULA, provided that you comply with all such terms and conditions. To the extent that any terms in this Supplemental EULA conflict with terms in the applicable OS Product EULA, the terms of this Supplemental EULA control solely with respect to the OS COMPONENTS.
|
||||
|
||||
Additional Rights and Limitations.
|
||||
|
||||
* If you have multiple validly licensed copies of the applicable OS Product(s), you may reproduce, install and use one copy of the OS COMPONENTS as part of such OS Product on each of your computers running validly licensed copies of such OS Product(s) provided that you use such additional copies of the OS COMPONENTS in accordance with the terms and conditions above. For each validly licensed copy of an applicable OS Product, you also may reproduce one additional copy of the OS COMPONENTS solely for archival purposes or reinstallation of the OS COMPONENTS on the same computer as the OS COMPONENTS were previously installed. Microsoft retains all right, title and interest in and to the OS COMPONENTS. All rights not expressly granted are reserved by Microsoft.
|
||||
|
||||
IF THE OS PRODUCT WAS LICENSED TO YOU BY MICROSOFT OR ANY OF ITS WHOLLY OWNED SUBSIDIARIES, THE LIMITED WARRANTY (IF ANY) INCLUDED IN THE OS PRODUCT EULA APPLIES TO THE OS COMPONENTS PROVIDED THE OS COMPONENTS HAVE BEEN LICENSED BY YOU WITHIN THE TERM OF THE LIMITED WARRANTY IN THE OS PRODUCT EULA. HOWEVER, THIS SUPPLEMENTAL EULA DOES NOT EXTEND THE TIME PERIOD FOR WHICH THE LIMITED WARRANTY IS PROVIDED.
|
||||
|
||||
IF THE OS PRODUCT WAS LICENSED TO YOU BY AN ENTITY OTHER THAN MICROSOFT OR ANY OF ITS WHOLLY OWNED SUBSIDIARIES, MICROSOFT DISCLAIMS ALL WARRANTIES WITH RESPECT TO THE OS COMPONENTS AS FOLLOWS:
|
||||
|
||||
DISCLAIMER OF WARRANTIES. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, MICROSOFT AND ITS SUPPLIERS PROVIDE TO YOU THE OS COMPONENTS, AND ANY (IF ANY) SUPPORT SERVICES RELATED TO THE OS COMPONENTS ("SUPPORT SERVICES") AS IS AND WITH ALL FAULTS; AND MICROSOFT AND ITS SUPPLIERS HEREBY DISCLAIM WITH RESPECT TO THE OS COMPONENTS AND SUPPORT SERVICES ALL WARRANTIES AND CONDITIONS, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY (IF ANY) WARRANTIES OR CONDITIONS OF OR RELATED TO: TITLE, NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR COMPLETENESS OF RESPONSES, RESULTS, LACK OF NEGLIGENCE OR LACK OF WORKMANLIKE EFFORT, QUIET ENJOYMENT, QUIET POSSESSION, AND CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR PERFORMANCE OF THE OS COMPONENTS AND ANY SUPPORT SERVICES REMAINS WITH YOU.
|
||||
|
||||
EXCLUSION OF INCIDENTAL, CONSEQUENTIAL AND CERTAIN OTHER DAMAGES. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL MICROSOFT OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, BUT NOT LIMITED TO, DAMAGES FOR: LOSS OF PROFITS, LOSS OF CONFIDENTIAL OR OTHER INFORMATION, BUSINESS INTERRUPTION, PERSONAL INJURY, LOSS OF PRIVACY, FAILURE TO MEET ANY DUTY (INCLUDING OF GOOD FAITH OR OF REASONABLE CARE), NEGLIGENCE, AND ANY OTHER PECUNIARY OR OTHER LOSS WHATSOEVER) ARISING OUT OF OR IN ANY WAY RELATED TO THE USE OF OR INABILITY TO USE THE OS COMPONENTS OR THE SUPPORT SERVICES, OR THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT SERVICES, OR OTHERWISE UNDER OR IN CONNECTION WITH ANY PROVISION OF THIS SUPPLEMENTAL EULA, EVEN IN THE EVENT OF THE FAULT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY, BREACH OF CONTRACT OR BREACH OF WARRANTY OF MICROSOFT OR ANY SUPPLIER, AND EVEN IF MICROSOFT OR ANY SUPPLIER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
LIMITATION OF LIABILITY AND REMEDIES. NOTWITHSTANDING ANY DAMAGES THAT YOU MIGHT INCUR FOR ANY REASON WHATSOEVER (INCLUDING, WITHOUT LIMITATION, ALL DAMAGES REFERENCED ABOVE AND ALL DIRECT OR GENERAL DAMAGES), THE ENTIRE LIABILITY OF MICROSOFT AND ANY OF ITS SUPPLIERS UNDER ANY PROVISION OF THIS SUPPLEMENTAL EULA AND YOUR EXCLUSIVE REMEDY FOR ALL OF THE FOREGOING SHALL BE LIMITED TO THE GREATER OF THE AMOUNT ACTUALLY PAID BY YOU FOR THE OS COMPONENTS OR U.S.$5.00. THE FOREGOING LIMITATIONS, EXCLUSIONS AND DISCLAIMERS SHALL APPLY TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, EVEN IF ANY REMEDY FAILS ITS ESSENTIAL PURPOSE.
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
|
||||
Microsoft DirectX 8.0 Software Development Kit
|
||||
END-USER LICENSE AGREEMENT FOR MICROSOFT SOFTWARE
|
||||
|
||||
IMPORTANT-READ CAREFULLY: This End-User License Agreement ("EULA") is a legal agreement between you (either an individual or a single entity) and Microsoft Corporation ("Microsoft") for the Microsoft software product identified above, which includes computer software and may include associated media and printed materials, and "online" or electronic documentation ("SOFTWARE PRODUCT). The SOFTWARE PRODUCT provided to you by Microsoft. Any software provided along with the SOFTWARE PRODUCT that is associated with a separate end-user license agreement is licensed to you under the terms of that license agreement. You agree to be bound by the terms of this EULA by installing, copying, downloading, accessing or otherwise using the SOFTWARE PRODUCT. If you do not agree to the terms of this EULA, do not install or use the SOFTWARE PRODUCT.
|
||||
|
||||
SOFTWARE PRODUCT LICENSE
|
||||
|
||||
The SOFTWARE PRODUCT is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE PRODUCT is licensed, not sold.
|
||||
|
||||
1.GRANT OF LICENSE.
|
||||
|
||||
Microsoft grants you the following rights provided that you comply with all the terms and conditions of this EULA:
|
||||
|
||||
SOFTWARE PRODUCT. You may install and use the SOFTWARE PRODUCT on up to ten (10) computers, including workstations, terminals or other digital electronic devices ("COMPUTERS"), provided that you are the only individual using the SOFTWARE PRODUCT on each COMPUTER, to design, develop, and test software application products for use with Microsoft operating system products including Windows 2000, Windows 95, Windows 98 and Windows Me and subsequent releases thereto ("Application"). If you are an entity, Microsoft grants you the right to designate one individual within your organization to have the right to use the SOFTWARE PRODUCT in the manner provided above.
|
||||
|
||||
SAMPLE CODE. You may modify the sample source code located in the SOFTWARE PRODUCT's <Release Image> root directory "<Release Image>\DXF\Samples\Multimedia"("Sample Code") to design, develop and test your Application. You may also reproduce and distribute the Sample Code in object code form along with any modifications you make to the Sample Code, provided that you comply with the Distribution Requirements described below. For purposes of this Section, "modifications" shall mean enhancements to the functionality of the Sample Code.
|
||||
|
||||
REDISTRIBUTABLE CODE. Portions of the SOFTWARE PRODUCT are designated as "Redistributable Code". If you choose to distribute the Redistributable Code, you must include the files as specified listed in the SOFTWARE PRODUCTS <Release Image> root directory "<Release Image>\DXF\doc\directxeulas\directx redist.txt". No other modifications, additions, or deletions to the Redistributable Code are permitted without written permission from Microsoft Corporation. Your rights to distribute the Redistributable Code are subject to the Distribution Requirements described below.
|
||||
|
||||
DISTRIBUTION REQUIREMENTS. You may reproduce and distribute an unlimited number of copies of the Sample Code and/or Redistributable Code, (collectively "REDISTRIBUTABLE COMPONENTS")as described above, provided that (a) you distribute the REDISTRIBUTABLE COMPONENTS only as part of, or for use in conjunction with your Application; (b) your Application adds significant and primary functionality to the REDISTRIBUTABLE COMPONENTS; (c) the REDISTRIBUTABLE COMPONENTS only operate in conjunction with Microsoft Windows operating system products including Windows 2000, Windows 95, Windows 98, Windows Me, and subsequent versions thereof, (d) you distribute your Application containing the REDISTRIBUTABLE COMPONENTS pursuant to an End-User License Agreement (which may be "break-the-seal", "click-wrap", or signed), with terms no less protective than those contained herein; (e) you do not permit further redistribution of the REDISTRIBUTABLE COMPONENTS by your end-user customers; (f) you must use the setup utility included with the REDISTRIBUTABLE COMPONENTS to install the Redistributable Code; (g) you do not use Microsoft's name, logo, or trademarks to market your Application; (h) you include all copyright and trademark notices contained in the REDISTRIBUTABLE COMPONENTS; (i) you include a valid copyright notice on your Application; and (j) you agree to indemnify, hold harmless, and defend Microsoft from any against any claims or lawsuits, including attorneys' feeds, that arise or result from the use or distribution of your Application.
|
||||
|
||||
If you distribute the Redistributable Code separately for use with your Application (such as on your web site or as part of an update to your Application), you must include an end user license agreement in the install program for the Redistributable Code in the form of <Release Image>\license\directx end user eula.txt. Contact Microsoft for the applicable royalties due and other licensing terms for all other uses and/or distribution of the REDISTRIBUTABLE COMPONENTS.
|
||||
|
||||
2. COPYRIGHT.
|
||||
|
||||
All title and intellectual property rights in and to the SOFTWARE PRODUCT (including but not limited to any images, photographs, animations, video, audio, music, text and "applets," incorporated into the SOFTWARE PRODUCT), any accompanying printed materials, and any copies of the SOFTWARE PRODUCT, are owned by Microsoft or its suppliers. All title and intellectual property rights in and to the content which may by accessed through use of the SOFTWARE PRODUCT is the property of the respective content owner and may be protected by applicable copyright or other intellectual property laws and treaties . This EULA grants you no rights to use such content. If this SOFTWARE PRODUCT contains documentation which is provided only in electronic form, you may print one copy of such electronic documentation. You may not copy the printed materials accompanying the SOFTWARE PRODUCT. All rights not expressly granted are reserved by Microsoft.
|
||||
|
||||
3. DESCRIPTION OF OTHER RIGHTS AND LIMITATIONS.
|
||||
|
||||
a. Limitations on Reverse Engineering, Decompilation and Disassembly. You may not reverse engineer, decompile, or disassemble the SOFTWARE PRODUCT, except and only to the extent that such activity is expressly permitted by applicable law notwithstanding this limitation.
|
||||
|
||||
b. Rental. You may not rent, lease or lend the SOFTWARE PRODUCT.
|
||||
|
||||
c. Support Services. Microsoft may provide you with support services related to the SOFTWARE PRODUCT ("Support Services"). Use of the Support Services is governed by the Microsoft policies and programs described in the user manual, in "on line" documentation and/or other Microsoft-provided materials. Any supplemental software code provided to you as part of the Support Services shall be considered part of the SOFTWARE PRODUCT and subject to the terms and conditions of this EULA. With respect to technical information you provide to Microsoft as part of the Support Services, Microsoft may use such information for its business purposes, including for product support and development. Microsoft will not utilize such technical information in a form that personally identifies you.
|
||||
|
||||
d. Software Transfer. The initial user of the SOFTWARE PRODUCT may make a one-time permanent transfer of this EULA and SOFTWARE PRODUCT only directly to an end-user. This transfer must include all of the SOFTWARE PRODUCT (including all component parts, the media and printed materials, any upgrades, this EULA, and, if applicable, the Certificate of Authenticity). Such transfer may not be by way of consignment or any other indirect transfer. The transferee of such one-time transfer must agree to comply with the terms of this EULA, including the obligation not to further transfer this EULA and SOFTWARE PRODUCT.
|
||||
|
||||
e. Termination. Without prejudice to any other rights, Microsoft may cancel this EULA if you do not abide with the terms and conditions of this EULA, in which case, you must cease all use or distribution and destroy all copies of the SOFTWARE PRODUCT and all of its component parts.
|
||||
|
||||
4. U.S. GOVERNMENT RESTRICTED RIGHTS.
|
||||
All SOFTWARE PRODUCT provided to the U.S. Government pursuant to solicitations issued on or after December 1, 1995 is provided with the commercial license rights and restrictions described elsewhere herein. All SOFTWARE PRODUCT provided to the U.S. Government pursuant to solicitations issued prior to December 1, 1995 is provided with "Restricted Rights" as provided for in FAR, 48 CFR 52.227-14 (JUNE 1987) or DFAR, 48 CFR 252.227-7013 (OCT 1988), as applicable. The reseller is responsible for ensuring SOFTWARE PRODUCT is marked with the "Restricted Rights Notice" or "Restricted Rights Legend", as required. All rights not expressly granted are reserved.
|
||||
|
||||
5. EXPORT RESTRICTIONS.
|
||||
|
||||
You acknowledge that the SOFTWARE PRODUCT is of U.S.-origin. You agree to comply with all applicable international and national laws that apply to these products, including the U.S. Export Administration Regulations, as well as end-user, end-use and country destination restrictions issued by U.S. and other governments. For additional information see http://www.microsoft.com/exporting/.
|
||||
6. DISCLAIMER OF WARRANTIES. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, MICROSOFT AND ITS SUPPLIERS PROVIDE TO YOU THE SOFTWARE PRODUCT AND SUPPORT SERVICES (IF ANY) AS IS AND WITH ALL FAULTS; AND HEREBY DISCLAIM ALL OTHER WARRANTIES AND CONDITIONS, EITHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY (IF ANY) WARRANTIES OR CONDITIONS OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF LACK OF VIRUSES, OF ACCURACY OR COMPLETENESS OF RESPONSES, OF RESULTS, AND OF LACK OF NEGLIGENCE OR LACK OF WORKMANLIKE EFFORT, ALL WITH REGARD TO THE SOFTWARE PRODUCT, AND THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT SERVICES. ALSO, THERE IS NO WARRANTY OR CONDITION OF TITLE, QUIET ENJOYMENT, QUIET POSSESSION, AND CORRESPONDENCE TO DESCRIPTION OR NON-INFRINGEMENT WITH REGARD TO THE SOFTWARE PRODUCT.
|
||||
|
||||
7. EXCULSION OF INCIDENTAL, CONSEQUENTIAL AND CERTAIN OTHER DAMAGES. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL MICROSOFT OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, BUT NOT LIMITED TO, DAMAGES FOR LOSS OF BUSINESS PROFITS OR CONFIDENTIAL OR OTHER INFORMATION, FOR BUSINESS INTERRUPTION, FOR PERSONAL INJURY, FOR LOSS OF PRIVACY, FOR FAILURE TO MEET ANY DUTY (INCLUDING OF GOOD FAITH OR OF REASONABLE CARE), FOR NEGLIGENCE, AND FOR ANY OTHER PECUNIARY OR OTHER LOSS WHATSOEVER) ARISING OUT OF OR IN ANY WAY RELATED TO THE USE OF OR INABILITY TO USE THE SOFTWARE PRODUCT, THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT SERVICES, OR OTHERWISE UNDER OR IN CONNECTION WITH ANY PROVISION OF THIS EULA, EVEN IN THE EVENT OF THE FAULT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY, BREACH OF CONTRACT OR BREACH OF WARRANTY OF MICROSOFT OR ANY SUPPLIER, AND EVEN IF MICROSOFT OR ANY SUPPLIER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
8. LIMITATION OF LIABILITY AND REMEDIES. NOTWITHSTANDING ANY DAMAGES THAT YOU MIGHT INCUR FOR ANY REASON WHATSOEVER (INCLUDING, WITHOUT LIMITATION, ALL DAMAGES REFERENCED ABOVE AND ALL DIRECT OR GENERAL DAMAGES), THE ENTIRE LIABILITY OF MICROSOFT AND ANY OF ITS SUPPLIERS UNDER ANY PROVISION OF THIS EULA AND YOUR EXCLUSIVE REMEDY FOR ALL OF THE FOREGOING SHALL BE LIMITED TO THE GREATER OF THE AMOUNT ACTUALLY PAID BY YOU FOR THE SOFTWARE PRODUCT OR U.S.$5.00. THE FOREGOING LIMITATIONS, EXCLUSIONS AND DISCLAIMERS DESCRIBED ABOVE SHALL APPLY TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, EVEN IF ANY REMEDY FAILS ITS ESSENTIAL PURPOSE.
|
||||
|
||||
9. APPLICABLE LAW. If you acquired this SOFTWARE PRODCUT in the United States, this EULA is governed by the laws of the State of Washington.
|
||||
|
||||
If you acquired this SOFTWARE PRODUCT in Canada, this EULA is governed by the laws of the Province of Ontario, Canada. Each of the parties hereto irrevocably attorns to the jurisdiction of the courts of the Province of Ontario and further agrees to commence any litigation which may arise hereunder in the courts located in the Judicial District of York, Province of Ontario.
|
||||
|
||||
If this product was acquired outside the United States, then local law may apply.
|
||||
10. QUESTIONS? Should you have any questions concerning this Agreement, or if you desire to contact Microsoft for any reason, please contact the Microsoft subsidiary serving your country, or write: Microsoft Sales Information Center/One Microsoft Way/Redmond, WA 98052-6399.
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
DirectX Software Development Kit Redistributable Code
|
||||
-------------------------------------------------------------
|
||||
Redistributable Code is identified as all of the files in the following
|
||||
directory on the DirectX 8.0 SDK CD:
|
||||
|
||||
redist/directx8/
|
||||
|
||||
All files in the above directory must be included in any distribution of
|
||||
the DirectX 8.0 Redistributable Code with the exception of the Broadcast
|
||||
Driver Architecture cab files:
|
||||
|
||||
bda.cab
|
||||
bdant.cab
|
||||
|
||||
Both of which are considered optional DirectX 8.0 redistributable
|
||||
components and can be removed from your distribution of the DirectX
|
||||
8.0 redistributable components.
|
||||
|
||||
|
||||
77
game_re/third_party/mssdk/include/DShow.h
vendored
77
game_re/third_party/mssdk/include/DShow.h
vendored
@@ -1,77 +0,0 @@
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (C) 2000 Microsoft Corporation. All Right Reserved.
|
||||
//
|
||||
// File: dshow.h
|
||||
// Content: DirectShow top-level include file
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __DSHOW_INCLUDED__
|
||||
#define __DSHOW_INCLUDED__
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Set up constants & pragmas for the compiler
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
#ifdef _MSC_VER
|
||||
// disable some level-4 warnings, use #pragma warning(enable:###) to re-enable
|
||||
#pragma warning(disable:4100) // warning C4100: unreferenced formal parameter
|
||||
#pragma warning(disable:4201) // warning C4201: nonstandard extension used : nameless struct/union
|
||||
#pragma warning(disable:4511) // warning C4511: copy constructor could not be generated
|
||||
#pragma warning(disable:4512) // warning C4512: assignment operator could not be generated
|
||||
#pragma warning(disable:4514) // warning C4514: "unreferenced inline function has been removed"
|
||||
|
||||
#if _MSC_VER>=1100
|
||||
#define AM_NOVTABLE __declspec(novtable)
|
||||
#else
|
||||
#define AM_NOVTABLE
|
||||
#endif
|
||||
#endif // MSC_VER
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Include standard Windows files
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
#include <windows.h>
|
||||
#include <windowsx.h>
|
||||
#include <olectl.h>
|
||||
#include <ddraw.h>
|
||||
#include <mmsystem.h>
|
||||
|
||||
#ifndef NUMELMS
|
||||
#define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0]))
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Include DirectShow include files
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
#include <strmif.h> // Generated IDL header file for streams interfaces
|
||||
#include <amvideo.h> // ActiveMovie video interfaces and definitions
|
||||
#include <amaudio.h> // ActiveMovie audio interfaces and definitions
|
||||
#include <control.h> // generated from control.odl
|
||||
#include <evcode.h> // event code definitions
|
||||
#include <uuids.h> // declaration of type GUIDs and well-known clsids
|
||||
#include <errors.h> // HRESULT status and error definitions
|
||||
#include <edevdefs.h> // External device control interface defines
|
||||
#include <audevcod.h> // audio filter device error event codes
|
||||
#include <dvdevcod.h> // DVD error event codes
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Define OLE Automation constants
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
#ifndef OATRUE
|
||||
#define OATRUE (-1)
|
||||
#endif // OATRUE
|
||||
#ifndef OAFALSE
|
||||
#define OAFALSE (0)
|
||||
#endif // OAFALSE
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Define Win64 interfaces if not already defined
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// InterlockedExchangePointer
|
||||
#ifndef InterlockedExchangePointer
|
||||
#define InterlockedExchangePointer(Target, Value) \
|
||||
(PVOID)InterlockedExchange((PLONG)(Target), (LONG)(Value))
|
||||
#endif
|
||||
|
||||
|
||||
#endif // __DSHOW_INCLUDED__
|
||||
@@ -1,338 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: AMStream.idl
|
||||
//
|
||||
// Desc:
|
||||
//
|
||||
// Copyright (c) 1998 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
import "unknwn.idl";
|
||||
import "mmstream.idl";
|
||||
import "strmif.idl";
|
||||
|
||||
cpp_quote("#include <ddraw.h>")
|
||||
cpp_quote("#include <mmsystem.h>")
|
||||
cpp_quote("#include <mmstream.h>")
|
||||
cpp_quote("#include <ddstream.h>")
|
||||
cpp_quote("#include <austream.h>")
|
||||
|
||||
|
||||
|
||||
interface IAMMultiMediaStream;
|
||||
interface IAMMediaStream;
|
||||
interface IMediaStreamFilter;
|
||||
interface IDirectDraw;
|
||||
interface IDirectDrawSurface;
|
||||
interface IAMMediaTypeStream;
|
||||
interface IAMMediaTypeSample;
|
||||
|
||||
// Flags definitions for IAMMultiMediaStream::Initialize
|
||||
enum {
|
||||
AMMSF_NOGRAPHTHREAD = 0x00000001
|
||||
};
|
||||
|
||||
// Flags definitions for AddMediaStream and IAMMediaStream::Initialize
|
||||
enum {
|
||||
// Don't add a stream - create a default renderer instead
|
||||
// for the supplied purpose id
|
||||
AMMSF_ADDDEFAULTRENDERER = 0x00000001,
|
||||
AMMSF_CREATEPEER = 0x00000002,
|
||||
|
||||
// If no samples are created when we run or the last sample
|
||||
// is deleted then terminate this stream
|
||||
AMMSF_STOPIFNOSAMPLES = 0x00000004,
|
||||
|
||||
// If Update is not called keep going
|
||||
AMMSF_NOSTALL = 0x00000008
|
||||
};
|
||||
|
||||
|
||||
// Flag definitions for OpenFile and OpenMoniker
|
||||
enum {
|
||||
AMMSF_RENDERTYPEMASK = 0x00000003,
|
||||
AMMSF_RENDERTOEXISTING = 0x00000000,
|
||||
AMMSF_RENDERALLSTREAMS = 0x00000001,
|
||||
AMMSF_NORENDER = 0x00000002,
|
||||
|
||||
AMMSF_NOCLOCK = 0x00000004,
|
||||
AMMSF_RUN = 0x00000008
|
||||
};
|
||||
|
||||
|
||||
typedef [v1_enum] enum {
|
||||
Disabled = 0,
|
||||
ReadData = 1,
|
||||
RenderData = 2
|
||||
} OUTPUT_STATE;
|
||||
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(7DB01C96-C0C3-11d0-8FF1-00C04FD9189D),
|
||||
dual,
|
||||
helpstring("IDirectShowStream Interface"),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IDirectShowStream : IDispatch
|
||||
{
|
||||
[propget, id(1), helpstring("property FileName")] HRESULT FileName([out, retval] BSTR *pVal);
|
||||
[propput, id(1), helpstring("property FileName")] HRESULT FileName([in] BSTR newVal);
|
||||
[propget, id(2), helpstring("property Video")] HRESULT Video([out, retval] OUTPUT_STATE *pVal);
|
||||
[propput, id(2), helpstring("propetry Video")] HRESULT Video([in] OUTPUT_STATE newVal);
|
||||
[propget, id(3), helpstring("property Audio")] HRESULT Audio([out, retval] OUTPUT_STATE *pVal);
|
||||
[propput, id(3), helpstring("propetry Audio")] HRESULT Audio([in] OUTPUT_STATE newVal);
|
||||
};
|
||||
|
||||
|
||||
// IAMMultiMediaStream interface
|
||||
[
|
||||
object,
|
||||
uuid(BEBE595C-9A6F-11d0-8FDE-00C04FD9189D),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IAMMultiMediaStream : IMultiMediaStream
|
||||
{
|
||||
HRESULT Initialize(
|
||||
[in] STREAM_TYPE StreamType,
|
||||
[in] DWORD dwFlags,
|
||||
[in] IGraphBuilder *pFilterGraph);
|
||||
|
||||
HRESULT GetFilterGraph(
|
||||
[out] IGraphBuilder **ppGraphBuilder);
|
||||
|
||||
HRESULT GetFilter(
|
||||
[out] IMediaStreamFilter **ppFilter);
|
||||
|
||||
HRESULT AddMediaStream(
|
||||
[in] IUnknown *pStreamObject,
|
||||
[in] const MSPID *PurposeId,
|
||||
[in] DWORD dwFlags,
|
||||
[out] IMediaStream **ppNewStream);
|
||||
|
||||
HRESULT OpenFile(
|
||||
[in] LPCWSTR pszFileName,
|
||||
[in] DWORD dwFlags);
|
||||
|
||||
HRESULT OpenMoniker(
|
||||
[in] IBindCtx *pCtx,
|
||||
[in] IMoniker *pMoniker,
|
||||
[in] DWORD dwFlags);
|
||||
|
||||
HRESULT Render(
|
||||
[in] DWORD dwFlags);
|
||||
}
|
||||
|
||||
|
||||
// IAMMediaStream interface
|
||||
[
|
||||
object,
|
||||
uuid(BEBE595D-9A6F-11d0-8FDE-00C04FD9189D),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IAMMediaStream : IMediaStream
|
||||
{
|
||||
HRESULT Initialize(
|
||||
[in] IUnknown *pSourceObject,
|
||||
[in] DWORD dwFlags,
|
||||
[in] REFMSPID PurposeId,
|
||||
[in] const STREAM_TYPE StreamType);
|
||||
|
||||
HRESULT SetState(
|
||||
[in] FILTER_STATE State);
|
||||
|
||||
HRESULT JoinAMMultiMediaStream(
|
||||
[in] IAMMultiMediaStream *pAMMultiMediaStream);
|
||||
|
||||
HRESULT JoinFilter(
|
||||
[in] IMediaStreamFilter *pMediaStreamFilter);
|
||||
|
||||
HRESULT JoinFilterGraph(
|
||||
[in] IFilterGraph *pFilterGraph);
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
// IMediaStreamFilter interface
|
||||
[
|
||||
object,
|
||||
local,
|
||||
uuid(BEBE595E-9A6F-11d0-8FDE-00C04FD9189D),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IMediaStreamFilter : IBaseFilter
|
||||
{
|
||||
HRESULT AddMediaStream(
|
||||
[in] IAMMediaStream *pAMMediaStream);
|
||||
|
||||
HRESULT GetMediaStream(
|
||||
[in] REFMSPID idPurpose,
|
||||
[out] IMediaStream **ppMediaStream);
|
||||
|
||||
HRESULT EnumMediaStreams(
|
||||
[in] long Index,
|
||||
[out] IMediaStream **ppMediaStream);
|
||||
|
||||
HRESULT SupportSeeking(
|
||||
[in] BOOL bRenderer);
|
||||
|
||||
HRESULT ReferenceTimeToStreamTime(
|
||||
[in] [out] REFERENCE_TIME *pTime);
|
||||
|
||||
HRESULT GetCurrentStreamTime(
|
||||
[out] REFERENCE_TIME *pCurrentStreamTime);
|
||||
|
||||
HRESULT WaitUntil(
|
||||
[in] REFERENCE_TIME WaitStreamTime);
|
||||
|
||||
HRESULT Flush(
|
||||
[in] BOOL bCancelEOS);
|
||||
|
||||
HRESULT EndOfStream();
|
||||
};
|
||||
|
||||
|
||||
|
||||
[
|
||||
object,
|
||||
local,
|
||||
uuid(AB6B4AFC-F6E4-11d0-900D-00C04FD9189D),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IDirectDrawMediaSampleAllocator : IUnknown
|
||||
{
|
||||
HRESULT GetDirectDraw(IDirectDraw **ppDirectDraw);
|
||||
};
|
||||
|
||||
|
||||
[
|
||||
object,
|
||||
local,
|
||||
uuid(AB6B4AFE-F6E4-11d0-900D-00C04FD9189D),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IDirectDrawMediaSample : IUnknown
|
||||
{
|
||||
HRESULT GetSurfaceAndReleaseLock(
|
||||
[out] IDirectDrawSurface **ppDirectDrawSurface,
|
||||
[out] RECT * pRect);
|
||||
HRESULT LockMediaSamplePointer(void);
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[
|
||||
object,
|
||||
local,
|
||||
uuid(AB6B4AFA-F6E4-11d0-900D-00C04FD9189D),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IAMMediaTypeStream : IMediaStream
|
||||
{
|
||||
HRESULT GetFormat(
|
||||
[out] AM_MEDIA_TYPE * pMediaType,
|
||||
[in] DWORD dwFlags);
|
||||
|
||||
HRESULT SetFormat(
|
||||
[in] AM_MEDIA_TYPE * pMediaType,
|
||||
[in] DWORD dwFlags);
|
||||
|
||||
HRESULT CreateSample(
|
||||
[in] long lSampleSize,
|
||||
[in] BYTE * pbBuffer,
|
||||
[in] DWORD dwFlags,
|
||||
[in] IUnknown *pUnkOuter,
|
||||
[out] IAMMediaTypeSample ** ppAMMediaTypeSample);
|
||||
|
||||
HRESULT GetStreamAllocatorRequirements(
|
||||
[out] ALLOCATOR_PROPERTIES *pProps);
|
||||
|
||||
HRESULT SetStreamAllocatorRequirements(
|
||||
[in] ALLOCATOR_PROPERTIES *pProps);
|
||||
};
|
||||
|
||||
|
||||
[
|
||||
object,
|
||||
local,
|
||||
uuid(AB6B4AFB-F6E4-11d0-900D-00C04FD9189D),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IAMMediaTypeSample : IStreamSample
|
||||
{
|
||||
//
|
||||
// Unique methods for IAMMediaTypeSample
|
||||
//
|
||||
HRESULT SetPointer([in] BYTE *pBuffer, [in] long lSize);
|
||||
|
||||
//
|
||||
// Mirror of IMediaSample
|
||||
//
|
||||
HRESULT GetPointer([out] BYTE ** ppBuffer);
|
||||
long GetSize(void);
|
||||
HRESULT GetTime([out] REFERENCE_TIME * pTimeStart, [out] REFERENCE_TIME * pTimeEnd);
|
||||
HRESULT SetTime([in] REFERENCE_TIME * pTimeStart, [in] REFERENCE_TIME * pTimeEnd);
|
||||
HRESULT IsSyncPoint(void);
|
||||
HRESULT SetSyncPoint(BOOL bIsSyncPoint);
|
||||
HRESULT IsPreroll(void);
|
||||
HRESULT SetPreroll(BOOL bIsPreroll);
|
||||
long GetActualDataLength(void);
|
||||
HRESULT SetActualDataLength(long);
|
||||
HRESULT GetMediaType(AM_MEDIA_TYPE **ppMediaType);
|
||||
HRESULT SetMediaType(AM_MEDIA_TYPE *pMediaType);
|
||||
HRESULT IsDiscontinuity(void);
|
||||
HRESULT SetDiscontinuity(BOOL bDiscontinuity);
|
||||
HRESULT GetMediaTime([out] LONGLONG * pTimeStart, [out] LONGLONG * pTimeEnd);
|
||||
HRESULT SetMediaTime([in] LONGLONG * pTimeStart, [in] LONGLONG * pTimeEnd);
|
||||
};
|
||||
|
||||
|
||||
[
|
||||
uuid(4E6CDE29-C0C4-11d0-8FF1-00C04FD9189D),
|
||||
version(1.0),
|
||||
helpstring("DirectShowStream 1.0 Type Library")
|
||||
]
|
||||
|
||||
library DirectShowStreamLib
|
||||
{
|
||||
importlib("stdole32.tlb");
|
||||
importlib("stdole2.tlb");
|
||||
|
||||
[
|
||||
uuid(49c47ce5-9ba4-11d0-8212-00c04fc32c45),
|
||||
helpstring("DirectShow Multi Media Stream")
|
||||
]
|
||||
coclass AMMultiMediaStream
|
||||
{
|
||||
[default] dispinterface IDirectShowStream;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
//
|
||||
// The MIDL compiler wants to produce a CLSID for everything defined in
|
||||
// our type library, but it also wants to generate huge, fat proxy code
|
||||
// so we use DEFINE_GUID for all other classes. It has another interesting
|
||||
// bug in that it defines CLSID_AMMultiMediaStream within a #ifdef __cplusplus
|
||||
// block, so we need to define it outside of that scope.
|
||||
//
|
||||
|
||||
cpp_quote("#ifndef __cplusplus")
|
||||
cpp_quote("EXTERN_C const CLSID CLSID_AMMultiMediaStream;")
|
||||
cpp_quote("#endif")
|
||||
|
||||
cpp_quote("DEFINE_GUID(CLSID_AMDirectDrawStream, /* 49c47ce4-9ba4-11d0-8212-00c04fc32c45 */")
|
||||
cpp_quote("0x49c47ce4, 0x9ba4, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);")
|
||||
cpp_quote("DEFINE_GUID(CLSID_AMAudioStream, /* 8496e040-af4c-11d0-8212-00c04fc32c45 */")
|
||||
cpp_quote("0x8496e040, 0xaf4c, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);")
|
||||
cpp_quote("DEFINE_GUID(CLSID_AMAudioData, /* f2468580-af8a-11d0-8212-00c04fc32c45 */")
|
||||
cpp_quote("0xf2468580, 0xaf8a, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);")
|
||||
cpp_quote("DEFINE_GUID(CLSID_AMMediaTypeStream, /* CF0F2F7C-F7BF-11d0-900D-00C04FD9189D */")
|
||||
cpp_quote("0xcf0f2f7c, 0xf7bf, 0x11d0, 0x90, 0xd, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
|
||||
171
game_re/third_party/mssdk/include/DShowIDL/amvpe.idl
vendored
171
game_re/third_party/mssdk/include/DShowIDL/amvpe.idl
vendored
@@ -1,171 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: AMVPE.idl
|
||||
//
|
||||
// Desc:
|
||||
//
|
||||
// Copyright (c) 1992 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
import "unknwn.idl";
|
||||
import "objidl.idl"; // for IPersist (IFilter's root)
|
||||
|
||||
|
||||
/*
|
||||
* VIDOESIGNALINFO
|
||||
*/
|
||||
typedef struct _VIDEOSIGNALINFO
|
||||
{
|
||||
DWORD dwSize; // Size of the structure
|
||||
DWORD dwVREFHeight; // Specifies the number of lines of data in the vref
|
||||
BOOL bDoubleClock; // videoport should enable double clocking
|
||||
BOOL bVACT; // videoport should use an external VACT signal
|
||||
BOOL bInterlaced; // Indicates that the signal is interlaced
|
||||
BOOL bHalfline; // Device will write half lines into the frame buffer
|
||||
BOOL bInvertedPolarity; // Devoce inverts the polarity by default
|
||||
} AMVIDEOSIGNALINFO;
|
||||
|
||||
typedef struct AMVIDEOSIGNALINFO *LPAMVIDEOSIGNALINFO;
|
||||
|
||||
|
||||
interface IVPEConfig;
|
||||
interface IVPE;
|
||||
|
||||
|
||||
/*
|
||||
* DDVIDEOPORTCONNECT
|
||||
*/
|
||||
typedef struct _DDVIDEOPORTCONNECT
|
||||
{
|
||||
DWORD dwSize; // size of the DDVIDEOPORTCONNECT structure
|
||||
GUID guidTypeID; // Description of video port connection
|
||||
DWORD dwPortWidth; // Width of the video port
|
||||
DWORD dwFlags; // Connection flags
|
||||
} DDVIDEOPORTCONNECT;
|
||||
|
||||
typedef DDVIDEOPORTCONNECT *LPDDVIDEOPORTCONNECT;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* DDPIXELFORMAT
|
||||
*/
|
||||
typedef struct _DDPIXELFORMAT
|
||||
{
|
||||
DWORD dwSize; // size of structure
|
||||
DWORD dwFlags; // pixel format flags
|
||||
DWORD dwFourCC; // (FOURCC code)
|
||||
union
|
||||
{
|
||||
DWORD dwRGBBitCount; // how many bits per pixel (BD_1,2,4,8,16,24,32)
|
||||
DWORD dwYUVBitCount; // how many bits per pixel (BD_4,8,16,24,32)
|
||||
DWORD dwZBufferBitDepth; // how many bits for z buffers (BD_8,16,24,32)
|
||||
DWORD dwAlphaBitDepth; // how many bits for alpha channels (BD_1,2,4,8)
|
||||
};
|
||||
union
|
||||
{
|
||||
DWORD dwRBitMask; // mask for red bit
|
||||
DWORD dwYBitMask; // mask for Y bits
|
||||
};
|
||||
union
|
||||
{
|
||||
DWORD dwGBitMask; // mask for green bits
|
||||
DWORD dwUBitMask; // mask for U bits
|
||||
};
|
||||
union
|
||||
{
|
||||
DWORD dwBBitMask; // mask for blue bits
|
||||
DWORD dwVBitMask; // mask for V bits
|
||||
};
|
||||
union
|
||||
{
|
||||
DWORD dwRGBAlphaBitMask; // mask for alpha channel
|
||||
DWORD dwYUVAlphaBitMask; // mask for alpha channel
|
||||
DWORD dwRGBZBitMask; // mask for Z channel
|
||||
DWORD dwYUVZBitMask; // mask for Z channel
|
||||
};
|
||||
} DDPIXELFORMAT;
|
||||
|
||||
typedef DDPIXELFORMAT * LPDDPIXELFORMAT;
|
||||
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(BC29A660-30E3-11d0-9E69-00C04FD7C15B),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IVPEConfig : IUnknown {
|
||||
|
||||
// gets the various connection information structures (guid, portwidth)
|
||||
// in an array of structures. If the pointer to the array is NULL, first
|
||||
// parameter returns the total number of formats supported.
|
||||
HRESULT GetConnectInfo(
|
||||
[in,out] LPDWORD lpNumConnectInfo,
|
||||
[out] LPDDVIDEOPORTCONNECT lpddvpConnectInfo
|
||||
);
|
||||
|
||||
HRESULT SetConnectInfo(
|
||||
[in] DDVIDEOPORTCONNECT ddvpConnectInfo
|
||||
);
|
||||
|
||||
// gets the various formats supported by the decoder in an array
|
||||
// of structures. If the pointer to the array is NULL, first parameter
|
||||
// returns the total number of formats supported.
|
||||
HRESULT GetVideoFormats(
|
||||
[in,out] LPDWORD lpNumFormats,
|
||||
[out] LPDDPIXELFORMAT lpddpfFormats
|
||||
);
|
||||
|
||||
// retrives maximum pixels per second rate expected for a given
|
||||
// format and a given scaling factor. If decoder does not support
|
||||
// those scaling factors, then it gives the rate and the nearest
|
||||
// scaling factors.
|
||||
HRESULT GetMaxPixelRate(
|
||||
[in] DDPIXELFORMAT ddpfFormat,
|
||||
[in,out] LPDWORD lpdwZoomHeight,
|
||||
[in,out] LPDWORD lpdwZoomWidth,
|
||||
[out] LPDWORD lpdwMaxPixelsPerSecond
|
||||
);
|
||||
|
||||
// retrives various properties of the decoder for a given format
|
||||
HRESULT GetVideoSignalInfo(
|
||||
[in] DDPIXELFORMAT ddpfFormat,
|
||||
[out] LPAMVIDEOSIGNALINFO lpAMVideoSignalInfo
|
||||
);
|
||||
|
||||
// asks the decoder to ouput in this format. Return value should give
|
||||
// appropriate error code
|
||||
HRESULT SetVideoFormat(
|
||||
[in] DDPIXELFORMAT ddpfFormat
|
||||
);
|
||||
|
||||
// asks the decoder to treat even fields like odd fields and visa versa
|
||||
HRESULT SetInvertPolarity(
|
||||
);
|
||||
|
||||
// sets the scaling factors. If decoder does not support these,
|
||||
// then it sets the values to the nearest factors it can support
|
||||
HRESULT SetScalingFactors(
|
||||
[in,out] LPDWORD lpdwZoomHeight,
|
||||
[in,out] LPDWORD lpdwZoomWidth
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(BC29A661-30E3-11d0-9E69-00C04FD7C15B),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IVPE : IUnknown {
|
||||
HRESULT SetOverlaySurface(
|
||||
// [in] LPDIRECTDRAWSURFACE lpOverlaySurface,
|
||||
[in] LPUNKNOWN lpOverlaySurface,
|
||||
[in] INT iNumBackBuffers
|
||||
);
|
||||
|
||||
}
|
||||
@@ -1,106 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: AuStream.idl
|
||||
//
|
||||
// Desc:
|
||||
//
|
||||
// Copyright (c) 1998 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
import "unknwn.idl";
|
||||
import "mmstream.idl";
|
||||
|
||||
cpp_quote("//")
|
||||
cpp_quote("// The following declarations within the 'if 0' block are dummy typedefs used to make")
|
||||
cpp_quote("// the ddstream.idl file build. The actual definitions are contained in DDRAW.H")
|
||||
cpp_quote("//")
|
||||
cpp_quote("#if 0")
|
||||
typedef struct tWAVEFORMATEX WAVEFORMATEX;
|
||||
cpp_quote ("#endif")
|
||||
|
||||
interface IAudioMediaStream;
|
||||
interface IAudioStreamSample;
|
||||
interface IMemoryData;
|
||||
interface IAudioData;
|
||||
|
||||
// IAudioMediaStream
|
||||
|
||||
|
||||
[
|
||||
object,
|
||||
local,
|
||||
uuid(f7537560-a3be-11d0-8212-00c04fc32c45),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IAudioMediaStream : IMediaStream
|
||||
{
|
||||
|
||||
HRESULT GetFormat(
|
||||
[out] WAVEFORMATEX *pWaveFormatCurrent
|
||||
);
|
||||
|
||||
HRESULT SetFormat(
|
||||
[in] const WAVEFORMATEX *lpWaveFormat);
|
||||
|
||||
HRESULT CreateSample(
|
||||
[in] IAudioData *pAudioData,
|
||||
[in] DWORD dwFlags,
|
||||
[out] IAudioStreamSample **ppSample
|
||||
);
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
local,
|
||||
uuid(345fee00-aba5-11d0-8212-00c04fc32c45),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IAudioStreamSample : IStreamSample
|
||||
{
|
||||
HRESULT GetAudioData(
|
||||
[out] IAudioData **ppAudio
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
[
|
||||
object,
|
||||
local,
|
||||
uuid(327fc560-af60-11d0-8212-00c04fc32c45),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IMemoryData : IUnknown
|
||||
{
|
||||
HRESULT SetBuffer(
|
||||
[in] DWORD cbSize,
|
||||
[in] BYTE *pbData,
|
||||
[in] DWORD dwFlags
|
||||
);
|
||||
|
||||
HRESULT GetInfo(
|
||||
[out] DWORD *pdwLength,
|
||||
[out] BYTE **ppbData,
|
||||
[out] DWORD *pcbActualData
|
||||
);
|
||||
HRESULT SetActual(
|
||||
[in] DWORD cbDataValid
|
||||
);
|
||||
}
|
||||
|
||||
[
|
||||
object,
|
||||
local,
|
||||
uuid(54c719c0-af60-11d0-8212-00c04fc32c45),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IAudioData : IMemoryData
|
||||
{
|
||||
HRESULT GetFormat(
|
||||
[out] WAVEFORMATEX *pWaveFormatCurrent
|
||||
);
|
||||
|
||||
HRESULT SetFormat(
|
||||
[in] const WAVEFORMATEX *lpWaveFormat
|
||||
);
|
||||
}
|
||||
|
||||
1277
game_re/third_party/mssdk/include/DShowIDL/axcore.idl
vendored
1277
game_re/third_party/mssdk/include/DShowIDL/axcore.idl
vendored
File diff suppressed because it is too large
Load Diff
4647
game_re/third_party/mssdk/include/DShowIDL/axextend.idl
vendored
4647
game_re/third_party/mssdk/include/DShowIDL/axextend.idl
vendored
File diff suppressed because it is too large
Load Diff
@@ -1,772 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: BDAIface.idl
|
||||
//
|
||||
// Desc: This file defines the Ring 3 BDA interfaces that are common to
|
||||
// all BDA network and device types.
|
||||
//
|
||||
// The interfaces specific to a particular Network Type or filter
|
||||
// implementation are defined in a separate include file for that
|
||||
// Network Type or filter implementation.
|
||||
//
|
||||
// Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// IUnknown import idl
|
||||
//---------------------------------------------------------------------
|
||||
#ifndef DO_NO_IMPORTS
|
||||
import "unknwn.idl";
|
||||
import "strmif.idl";
|
||||
import "BdaTypes.h";
|
||||
#endif
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
//
|
||||
// IBDA_NetworkProvider interface
|
||||
//
|
||||
// Implemented by a BDA Network Provider
|
||||
//
|
||||
// Used by a BDA device filter to register itself with
|
||||
// a Network Provider and query information about the
|
||||
// the current tuning request.
|
||||
//
|
||||
//---------------------------------------------------------------------
|
||||
[
|
||||
object,
|
||||
uuid(fd501041-8ebe-11ce-8183-00aa00577da2),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IBDA_NetworkProvider : IUnknown
|
||||
{
|
||||
|
||||
HRESULT
|
||||
PutSignalSource (
|
||||
[in] ULONG ulSignalSource
|
||||
);
|
||||
|
||||
|
||||
HRESULT
|
||||
GetSignalSource (
|
||||
[in, out] ULONG * pulSignalSource
|
||||
);
|
||||
|
||||
HRESULT
|
||||
GetNetworkType (
|
||||
[in, out] GUID * pguidNetworkType
|
||||
);
|
||||
|
||||
HRESULT
|
||||
PutTuningSpace (
|
||||
[in] REFGUID guidTuningSpace
|
||||
);
|
||||
|
||||
HRESULT
|
||||
GetTuningSpace (
|
||||
[in, out] GUID * pguidTuingSpace
|
||||
);
|
||||
|
||||
HRESULT
|
||||
RegisterDeviceFilter (
|
||||
[in] IUnknown * pUnkFilterControl,
|
||||
[in, out] ULONG * ppvRegisitrationContext
|
||||
);
|
||||
|
||||
HRESULT
|
||||
UnRegisterDeviceFilter (
|
||||
[in] ULONG pvRegistrationContext
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
//
|
||||
// IBDA_EthernetFilter interface
|
||||
//
|
||||
// Implemented by a BDA Network Provider
|
||||
//
|
||||
// Used by an Ethernet Network Data Sink filter (eg. IPSink) to
|
||||
// request that the Network Provider make its best effort to tune
|
||||
// to the stream(s) on which a list of Ethernet multicast addresses
|
||||
// may be transmitted.
|
||||
//
|
||||
// Addresses in the address list are byte aligned in Network order.
|
||||
// UlcbAddresses will always be an integer multiple of the
|
||||
// size of an ethernet address.
|
||||
//
|
||||
//---------------------------------------------------------------------
|
||||
[
|
||||
object,
|
||||
uuid(71985F43-1CA1-11d3-9CC8-00C04F7971E0),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IBDA_EthernetFilter : IUnknown
|
||||
{
|
||||
HRESULT
|
||||
GetMulticastListSize (
|
||||
[in, out] ULONG * pulcbAddresses
|
||||
);
|
||||
|
||||
HRESULT
|
||||
PutMulticastList (
|
||||
[in] ULONG ulcbAddresses,
|
||||
[in, size_is(ulcbAddresses)] BYTE pAddressList []
|
||||
);
|
||||
|
||||
HRESULT
|
||||
GetMulticastList (
|
||||
[in, out] ULONG * pulcbAddresses,
|
||||
[out, size_is(*pulcbAddresses)] BYTE pAddressList []
|
||||
);
|
||||
|
||||
HRESULT
|
||||
PutMulticastMode (
|
||||
[in] ULONG ulModeMask
|
||||
);
|
||||
|
||||
HRESULT
|
||||
GetMulticastMode (
|
||||
[out] ULONG * pulModeMask
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
//
|
||||
// IBDA_IPV4Filter interface
|
||||
//
|
||||
// Implemented by a BDA Network Provider
|
||||
//
|
||||
// Used by an IPv4 Network Data Sink filter to request
|
||||
// that the Network Provider make its best effort to tune
|
||||
// to the stream(s) on which a list of IPv4 multicast addresses
|
||||
// may be transmitted.
|
||||
//
|
||||
// Addresses in the address list are byte aligned in Network order.
|
||||
// UlcbAddresses will always be an integer multiple of the
|
||||
// size of an IPv4 address.
|
||||
//
|
||||
//---------------------------------------------------------------------
|
||||
[
|
||||
object,
|
||||
uuid(71985F44-1CA1-11d3-9CC8-00C04F7971E0),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IBDA_IPV4Filter : IUnknown
|
||||
{
|
||||
|
||||
HRESULT
|
||||
GetMulticastListSize (
|
||||
[in, out] ULONG * pulcbAddresses
|
||||
);
|
||||
|
||||
HRESULT
|
||||
PutMulticastList (
|
||||
[in] ULONG ulcbAddresses,
|
||||
[in, size_is(ulcbAddresses)] BYTE pAddressList []
|
||||
);
|
||||
|
||||
HRESULT
|
||||
GetMulticastList (
|
||||
[in, out] ULONG * pulcbAddresses,
|
||||
[out, size_is(*pulcbAddresses)] BYTE pAddressList []
|
||||
);
|
||||
|
||||
HRESULT
|
||||
PutMulticastMode (
|
||||
[in] ULONG ulModeMask
|
||||
);
|
||||
|
||||
HRESULT
|
||||
GetMulticastMode (
|
||||
[out] ULONG* pulModeMask
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
//
|
||||
// IBDA_IPV6Filter interface
|
||||
//
|
||||
// Implemented by a BDA Network Provider
|
||||
//
|
||||
// Used by an IPv6 Network Data Sink filter to request
|
||||
// that the Network Provider make its best effort to tune
|
||||
// to the stream(s) on which a list of IPv6 multicast addresses
|
||||
// may be transmitted.
|
||||
//
|
||||
// Addresses in the address list are byte aligned in Network order.
|
||||
// UlcbAddresses will always be an integer multiple of the
|
||||
// size of an IPv6 address.
|
||||
//
|
||||
//---------------------------------------------------------------------
|
||||
[
|
||||
object,
|
||||
uuid(E1785A74-2A23-4fb3-9245-A8F88017EF33),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IBDA_IPV6Filter : IUnknown
|
||||
{
|
||||
|
||||
HRESULT
|
||||
GetMulticastListSize (
|
||||
[in, out] ULONG * pulcbAddresses
|
||||
);
|
||||
|
||||
HRESULT
|
||||
PutMulticastList (
|
||||
[in] ULONG ulcbAddresses,
|
||||
[in, size_is(ulcbAddresses)] BYTE pAddressList []
|
||||
);
|
||||
|
||||
HRESULT
|
||||
GetMulticastList (
|
||||
[in, out] ULONG * pulcbAddresses,
|
||||
[out, size_is(*pulcbAddresses)] BYTE pAddressList []
|
||||
);
|
||||
|
||||
HRESULT
|
||||
PutMulticastMode (
|
||||
[in] ULONG ulModeMask
|
||||
);
|
||||
|
||||
HRESULT
|
||||
GetMulticastMode (
|
||||
[out] ULONG* pulModeMask
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
//
|
||||
// IBDA_DeviceControl interface
|
||||
//
|
||||
// Implemented by a BDA Device Filter
|
||||
//
|
||||
// Used by the Network Provider to commit a series of changes
|
||||
// on a BDA device filter. The device filter validates and
|
||||
// accumulates all changes requested after StartChanges(). It
|
||||
// effects the accumulated list of changes when CommitChanges() is
|
||||
// called.
|
||||
//
|
||||
//---------------------------------------------------------------------
|
||||
[
|
||||
object,
|
||||
uuid(FD0A5AF3-B41D-11d2-9C95-00C04F7971E0),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IBDA_DeviceControl : IUnknown
|
||||
{
|
||||
HRESULT
|
||||
StartChanges (
|
||||
void
|
||||
);
|
||||
|
||||
HRESULT
|
||||
CheckChanges (
|
||||
void
|
||||
);
|
||||
|
||||
HRESULT
|
||||
CommitChanges (
|
||||
void
|
||||
);
|
||||
|
||||
HRESULT
|
||||
GetChangeState (
|
||||
[in, out] ULONG * pState
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
//
|
||||
// IBDA_PinControl interface
|
||||
//
|
||||
// Implemented by a BDA Device Filter's Pin
|
||||
//
|
||||
// Used by the Network Provider to determine the BDA PinID and
|
||||
// PinType on a BDA Filter's Pin
|
||||
//
|
||||
//---------------------------------------------------------------------
|
||||
[
|
||||
object,
|
||||
uuid(0DED49D5-A8B7-4d5d-97A1-12B0C195874D),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IBDA_PinControl : IUnknown
|
||||
{
|
||||
HRESULT
|
||||
GetPinID (
|
||||
[in, out] ULONG * pulPinID
|
||||
);
|
||||
|
||||
HRESULT
|
||||
GetPinType (
|
||||
[in, out] ULONG * pulPinType
|
||||
);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
//
|
||||
// IBDA_SignalProperties interface
|
||||
//
|
||||
// Implemented by a BDA Device Filter
|
||||
//
|
||||
// BDA Signal Properties is used by a Network Provider to inform
|
||||
// a BDA Device Filter about the current tuning request. The
|
||||
// Network Provider will call the Put functions when the BDA
|
||||
// device is first registered with the Network Provider and whenever
|
||||
// the current tuning request is modified.
|
||||
//
|
||||
//---------------------------------------------------------------------
|
||||
[
|
||||
object,
|
||||
uuid(D2F1644B-B409-11d2-BC69-00A0C9EE9E16),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IBDA_SignalProperties : IUnknown
|
||||
{
|
||||
HRESULT
|
||||
PutNetworkType (
|
||||
[in] REFGUID guidNetworkType
|
||||
);
|
||||
|
||||
HRESULT
|
||||
GetNetworkType (
|
||||
[in, out] GUID * pguidNetworkType
|
||||
);
|
||||
|
||||
HRESULT
|
||||
PutSignalSource (
|
||||
[in] ULONG ulSignalSource
|
||||
);
|
||||
|
||||
HRESULT
|
||||
GetSignalSource (
|
||||
[in, out] ULONG * pulSignalSource
|
||||
);
|
||||
|
||||
HRESULT
|
||||
PutTuningSpace (
|
||||
[in] REFGUID guidTuningSpace
|
||||
);
|
||||
|
||||
HRESULT
|
||||
GetTuningSpace (
|
||||
[in, out] GUID * pguidTuingSpace
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
//
|
||||
// IBDA_Topology interface
|
||||
//
|
||||
// Implemented by a BDA Device Filter
|
||||
//
|
||||
// Used by the Network Provider to query a BDA Device Filter's
|
||||
// possible topologies (template topology) and to configure
|
||||
// the device with an appropriate topology for the current
|
||||
// tuning request. It is also used to get an IUnknown to
|
||||
// a control node which may be used to set specific tuning
|
||||
// information.
|
||||
//
|
||||
//---------------------------------------------------------------------
|
||||
[
|
||||
object,
|
||||
uuid(A14EE835-0A23-11d3-9CC7-00C04F7971E0),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IBDA_Topology : IUnknown
|
||||
{
|
||||
HRESULT
|
||||
GetNodeTypes (
|
||||
[in, out] ULONG * pulcNodeTypes,
|
||||
[in] ULONG ulcNodeTypesMax,
|
||||
[in, out, size_is (ulcNodeTypesMax)] ULONG rgulNodeTypes[]
|
||||
);
|
||||
|
||||
|
||||
HRESULT
|
||||
GetNodeInterfaces (
|
||||
[in] ULONG ulNodeType,
|
||||
[in, out] ULONG * pulcInterfaces,
|
||||
[in] ULONG ulcInterfacesMax,
|
||||
[in, out, size_is (ulcInterfacesMax)] GUID * rgguidInterfaces[]
|
||||
);
|
||||
|
||||
HRESULT
|
||||
GetPinTypes (
|
||||
[in, out] ULONG * pulcPinTypes,
|
||||
[in] ULONG ulcPinTypesMax,
|
||||
[in, out, size_is (ulcPinTypesMax)] ULONG rgulPinTypes[]
|
||||
);
|
||||
|
||||
HRESULT
|
||||
GetTemplateConnections (
|
||||
[in, out] ULONG * pulcConnections,
|
||||
[in] ULONG ulcConnectionsMax,
|
||||
[in, out, size_is (ulcConnectionsMax)] BDA_TEMPLATE_CONNECTION rgConnections[]
|
||||
);
|
||||
|
||||
HRESULT
|
||||
CreatePin (
|
||||
[in] ULONG ulPinType,
|
||||
[in, out] ULONG * pulPinId
|
||||
);
|
||||
|
||||
HRESULT
|
||||
DeletePin (
|
||||
[in] ULONG ulPinId
|
||||
);
|
||||
|
||||
HRESULT
|
||||
SetMediaType (
|
||||
[in] ULONG ulPinId,
|
||||
[in] AM_MEDIA_TYPE * pMediaType
|
||||
);
|
||||
|
||||
HRESULT
|
||||
SetMedium (
|
||||
[in] ULONG ulPinId,
|
||||
[in] REGPINMEDIUM * pMedium
|
||||
);
|
||||
|
||||
HRESULT
|
||||
CreateTopology (
|
||||
[in] ULONG ulInputPinId,
|
||||
[in] ULONG ulOutputPinId
|
||||
);
|
||||
|
||||
HRESULT
|
||||
GetControlNode (
|
||||
[in] ULONG ulInputPinId,
|
||||
[in] ULONG ulOutputPinId,
|
||||
[in] ULONG ulNodeType,
|
||||
[in, out] IUnknown ** ppControlNode
|
||||
);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// IBDA_VoidTransform interface
|
||||
//---------------------------------------------------------------------
|
||||
[
|
||||
object,
|
||||
uuid(71985F46-1CA1-11d3-9CC8-00C04F7971E0),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IBDA_VoidTransform : IUnknown
|
||||
{
|
||||
HRESULT
|
||||
Start (
|
||||
void
|
||||
);
|
||||
|
||||
HRESULT
|
||||
Stop (
|
||||
void
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// IBDA_NullTransform interface
|
||||
//---------------------------------------------------------------------
|
||||
[
|
||||
object,
|
||||
uuid(DDF15B0D-BD25-11d2-9CA0-00C04F7971E0),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IBDA_NullTransform : IUnknown
|
||||
{
|
||||
HRESULT
|
||||
Start (
|
||||
void
|
||||
);
|
||||
|
||||
HRESULT
|
||||
Stop (
|
||||
void
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// IBDA_FrequencyFilter interface
|
||||
//---------------------------------------------------------------------
|
||||
[
|
||||
object,
|
||||
uuid(71985F47-1CA1-11d3-9CC8-00C04F7971E0),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IBDA_FrequencyFilter : IUnknown
|
||||
{
|
||||
HRESULT
|
||||
put_Autotune (
|
||||
[in] ULONG * pulTransponder
|
||||
);
|
||||
|
||||
HRESULT
|
||||
put_Frequency (
|
||||
[in] ULONG * pulFrequency
|
||||
);
|
||||
|
||||
HRESULT
|
||||
get_Frequency (
|
||||
[in, out] ULONG * pulFrequency
|
||||
);
|
||||
|
||||
HRESULT
|
||||
put_Polarity (
|
||||
[in] ULONG * pulPolarity
|
||||
);
|
||||
|
||||
HRESULT
|
||||
get_Polarity (
|
||||
[in, out] ULONG * pulPolarity
|
||||
);
|
||||
|
||||
HRESULT
|
||||
put_Range (
|
||||
[in] ULONG * pulRange
|
||||
);
|
||||
|
||||
HRESULT
|
||||
get_Range (
|
||||
[in, out] ULONG * pulRange
|
||||
);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// IBDA_AutoDemodulate interface
|
||||
//---------------------------------------------------------------------
|
||||
[
|
||||
object,
|
||||
uuid(DDF15B12-BD25-11d2-9CA0-00C04F7971E0),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IBDA_AutoDemodulate : IUnknown
|
||||
{
|
||||
HRESULT
|
||||
put_AutoDemodulate (
|
||||
void
|
||||
);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// IBDA_DigitalDemodulator interface
|
||||
//---------------------------------------------------------------------
|
||||
[
|
||||
object,
|
||||
uuid(EF30F379-985B-4d10-B640-A79D5E04E1E0),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IBDA_DigitalDemodulator : IUnknown
|
||||
{
|
||||
HRESULT
|
||||
put_ModulationType (
|
||||
[in] ModulationType * pModulationType
|
||||
);
|
||||
|
||||
HRESULT
|
||||
get_ModulationType (
|
||||
[in, out] ModulationType * pModulationType
|
||||
);
|
||||
|
||||
HRESULT
|
||||
put_InnerFECMethod (
|
||||
[in] FECMethod * pFECMethod
|
||||
);
|
||||
|
||||
HRESULT
|
||||
get_InnerFECMethod (
|
||||
[in, out] FECMethod * pFECMethod
|
||||
);
|
||||
|
||||
HRESULT
|
||||
put_InnerFECRate (
|
||||
[in] BinaryConvolutionCodeRate * pFECRate
|
||||
);
|
||||
|
||||
HRESULT
|
||||
get_InnerFECRate (
|
||||
[in, out] BinaryConvolutionCodeRate * pFECRate
|
||||
);
|
||||
|
||||
HRESULT
|
||||
put_OuterFECMethod (
|
||||
[in] FECMethod * pFECMethod
|
||||
);
|
||||
|
||||
HRESULT
|
||||
get_OuterFECMethod (
|
||||
[in, out] FECMethod * pFECMethod
|
||||
);
|
||||
|
||||
HRESULT
|
||||
put_OuterFECRate (
|
||||
[in] BinaryConvolutionCodeRate * pFECRate
|
||||
);
|
||||
|
||||
HRESULT
|
||||
get_OuterFECRate (
|
||||
[in, out] BinaryConvolutionCodeRate * pFECRate
|
||||
);
|
||||
|
||||
HRESULT
|
||||
put_SymbolRate (
|
||||
[in] ULONG * pSymbolRate
|
||||
);
|
||||
|
||||
HRESULT
|
||||
get_SymbolRate (
|
||||
[in, out] ULONG * pSymbolRate
|
||||
);
|
||||
|
||||
HRESULT
|
||||
put_SpectralInversion (
|
||||
[in] SpectralInversion * pSpectralInversion
|
||||
);
|
||||
|
||||
HRESULT
|
||||
get_SpectralInversion (
|
||||
[in, out] SpectralInversion * pSpectralInversion
|
||||
);
|
||||
}
|
||||
|
||||
typedef enum
|
||||
{
|
||||
KSPROPERTY_IPSINK_MULTICASTLIST,
|
||||
KSPROPERTY_IPSINK_ADAPTER_DESCRIPTION,
|
||||
KSPROPERTY_IPSINK_ADAPTER_ADDRESS
|
||||
|
||||
} KSPROPERTY_IPSINK;
|
||||
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// IBDA_IPSinkControl interface
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(3F4DC8E2-4050-11d3-8F4B-00C04F7971E2),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
interface IBDA_IPSinkControl : IUnknown
|
||||
{
|
||||
HRESULT GetMulticastList (
|
||||
[in, out] unsigned long *pulcbSize,
|
||||
[in, out] BYTE **pbBuffer
|
||||
);
|
||||
|
||||
|
||||
HRESULT GetAdapterIPAddress (
|
||||
[in,out] unsigned long *pulcbSize,
|
||||
[in,out] BYTE **pbBuffer
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
// mpeg-2 demultiplexer-specific interfaces follow
|
||||
//
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// IEnumPIDMap interface
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
#ifdef REMOVE_THESE
|
||||
typedef enum {
|
||||
MEDIA_TRANSPORT_PACKET, // complete TS packet e.g. pass-through mode
|
||||
MEDIA_ELEMENTARY_STREAM, // PES payloads; audio/video only
|
||||
MEDIA_MPEG2_PSI, // PAT, PMT, CAT, Private
|
||||
MEDIA_TRANSPORT_PAYLOAD // gathered TS packet payloads (PES packets, etc...)
|
||||
} MEDIA_SAMPLE_CONTENT ;
|
||||
|
||||
typedef struct {
|
||||
ULONG ulPID ;
|
||||
MEDIA_SAMPLE_CONTENT MediaSampleContent ;
|
||||
} PID_MAP ;
|
||||
#endif // REMOVE_THESE
|
||||
|
||||
[
|
||||
object,
|
||||
uuid (afb6c2a2-2c41-11d3-8a60-0000f81e0e4a),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IEnumPIDMap : IUnknown
|
||||
{
|
||||
HRESULT
|
||||
Next (
|
||||
[in] ULONG cRequest,
|
||||
[in, out, size_is (cRequest)] PID_MAP * pPIDMap,
|
||||
[out] ULONG * pcReceived
|
||||
) ;
|
||||
|
||||
HRESULT
|
||||
Skip (
|
||||
[in] ULONG cRecords
|
||||
) ;
|
||||
|
||||
HRESULT
|
||||
Reset (
|
||||
) ;
|
||||
|
||||
HRESULT
|
||||
Clone (
|
||||
[out] IEnumPIDMap ** ppIEnumPIDMap
|
||||
) ;
|
||||
} ;
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// IMPEG2PIDMap interface
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
[
|
||||
object,
|
||||
uuid (afb6c2a1-2c41-11d3-8a60-0000f81e0e4a),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IMPEG2PIDMap : IUnknown
|
||||
{
|
||||
HRESULT
|
||||
MapPID (
|
||||
[in] ULONG culPID,
|
||||
[in] ULONG * pulPID,
|
||||
[in] MEDIA_SAMPLE_CONTENT MediaSampleContent
|
||||
) ;
|
||||
|
||||
HRESULT
|
||||
UnmapPID (
|
||||
[in] ULONG culPID,
|
||||
[in] ULONG * pulPID
|
||||
) ;
|
||||
|
||||
HRESULT
|
||||
EnumPIDMap (
|
||||
[out] IEnumPIDMap ** pIEnumPIDMap
|
||||
) ;
|
||||
} ;
|
||||
@@ -1,912 +0,0 @@
|
||||
//==========================================================================;
|
||||
//
|
||||
// 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) 1992 - 1999 Microsoft Corporation. All Rights Reserved.
|
||||
//
|
||||
//--------------------------------------------------------------------------;
|
||||
|
||||
// Neutral/English language type library for basic Quartz control interfaces
|
||||
|
||||
// the quartz type library defines the basic control interfaces
|
||||
[
|
||||
uuid(56a868b0-0ad4-11ce-b03a-0020af0ba770),
|
||||
helpstring("ActiveMovie control type library"),
|
||||
lcid(0x0000),
|
||||
version(1.0)
|
||||
]
|
||||
library QuartzTypeLib
|
||||
{
|
||||
importlib("STDOLE32.TLB");
|
||||
|
||||
// types are restricted to be automation-compatible
|
||||
typedef double REFTIME; // ReferenceTime
|
||||
typedef LONG_PTR OAEVENT; // should be a HANDLE
|
||||
typedef LONG_PTR OAHWND; // should be an hwnd
|
||||
|
||||
// from strmif.idl
|
||||
typedef long OAFilterState;
|
||||
|
||||
// collection interface - represents a collection of IUnknowns
|
||||
// this is used below to collect filter-info objects, registry-filters
|
||||
// pin-info objects and wrapped media type objects
|
||||
[
|
||||
uuid(56a868b9-0ad4-11ce-b03a-0020af0ba770),
|
||||
helpstring("Collection"),
|
||||
odl,
|
||||
oleautomation,
|
||||
dual
|
||||
]
|
||||
interface IAMCollection : IDispatch
|
||||
{
|
||||
// number of items in collection
|
||||
[propget]
|
||||
HRESULT Count(
|
||||
[out, retval] LONG* plCount);
|
||||
|
||||
// return IUnknown for contained item by index
|
||||
HRESULT Item(
|
||||
[in] long lItem,
|
||||
[out] IUnknown** ppUnk);
|
||||
|
||||
// return IUnknown for an object that implements IEnumVARIANT on
|
||||
// this collection
|
||||
[propget]
|
||||
HRESULT _NewEnum(
|
||||
[out, retval] IUnknown** ppUnk);
|
||||
}
|
||||
|
||||
|
||||
// core control providing state control
|
||||
[
|
||||
uuid(56a868b1-0ad4-11ce-b03a-0020af0ba770),
|
||||
helpstring("IMediaControl interface"),
|
||||
odl,
|
||||
oleautomation,
|
||||
dual
|
||||
]
|
||||
interface IMediaControl : IDispatch
|
||||
{
|
||||
// methods
|
||||
HRESULT Run();
|
||||
HRESULT Pause();
|
||||
HRESULT Stop();
|
||||
|
||||
//returns the state. same semantics as IMediaFilter::GetState
|
||||
|
||||
HRESULT GetState(
|
||||
[in] LONG msTimeout,
|
||||
[out] OAFilterState* pfs);
|
||||
|
||||
// adds and connects filters needed to play the specified file
|
||||
// (same as IFilterGraph::RenderFile)
|
||||
HRESULT RenderFile(
|
||||
[in] BSTR strFilename);
|
||||
|
||||
// adds to the graph the source filter that can read this file,
|
||||
// and returns an IFilterInfo object for it (actually returns
|
||||
// an IDispatch for the IFilterInfo object).
|
||||
HRESULT AddSourceFilter(
|
||||
[in] BSTR strFilename,
|
||||
[out] IDispatch**ppUnk);
|
||||
|
||||
// get a collection of IFilterInfo objects representing the
|
||||
// filters in the graph (returns IDispatch for an object
|
||||
// that supports IAMCollection
|
||||
[propget]
|
||||
HRESULT FilterCollection(
|
||||
[out, retval] IDispatch** ppUnk);
|
||||
|
||||
// get a collection of IRegFilter objects representing the
|
||||
// filters available in the registry
|
||||
[propget]
|
||||
HRESULT RegFilterCollection(
|
||||
[out, retval] IDispatch** ppUnk);
|
||||
|
||||
HRESULT StopWhenReady();
|
||||
}
|
||||
|
||||
|
||||
// provides an event notification scheme passing events
|
||||
// asynchronously to applications. See also IMediaEventSink in
|
||||
// strmif.idl and sdk\h\evcodes.h.
|
||||
//
|
||||
// this interface behaves as if events are held on a queue. A call to
|
||||
// IMediaEventSink::Notify will place an event on this queue. Calling
|
||||
// GetEvent removes the first item off the queue and returns it. Items are
|
||||
// returned in the order they were queued (there is no priority scheme).
|
||||
// The event handle is in a signalled state iff the queue is non-empty.
|
||||
//
|
||||
// Apps that issue multiple Run calls without always picking up the
|
||||
// completion events are advised to call GetEvent or WaitForCompletion
|
||||
// (with a 0 timeout) repeatedly to remove all events from the queue
|
||||
// when in stopped or paused state before each Run method.
|
||||
//
|
||||
// Parameters to events are actually LONG, IUnknown* or BSTR. You need to
|
||||
// look at evcode.h for details of parameters to a specific event code.
|
||||
// In order to correctly free resources, always call FreeEventParams
|
||||
// after receiving an event.
|
||||
//
|
||||
|
||||
[
|
||||
uuid(56a868b6-0ad4-11ce-b03a-0020af0ba770),
|
||||
helpstring("IMediaEvent interface"),
|
||||
odl,
|
||||
oleautomation,
|
||||
dual
|
||||
]
|
||||
interface IMediaEvent : IDispatch
|
||||
{
|
||||
// get back the event handle. This is manual-reset
|
||||
// (don't - it's reset by the event mechanism) and remains set
|
||||
// when events are queued, and reset when the queue is empty.
|
||||
HRESULT GetEventHandle(
|
||||
[out] OAEVENT * hEvent);
|
||||
|
||||
// remove the next event notification from the head of the queue and
|
||||
// return it. Waits up to msTimeout millisecs if there are no events.
|
||||
// if a timeout occurs without any events, this method will return
|
||||
// E_ABORT, and the value of the event code and other parameters
|
||||
// is undefined.
|
||||
//
|
||||
// If this call returns successfully the caller MUST call
|
||||
// FreeEventParams(lEventCode, lParam1, lParam2) to release
|
||||
// resources held inside the event arguments
|
||||
//
|
||||
HRESULT GetEvent(
|
||||
[out] long * lEventCode,
|
||||
[out] LONG_PTR * lParam1,
|
||||
[out] LONG_PTR * lParam2,
|
||||
[in] long msTimeout
|
||||
);
|
||||
|
||||
// Calls GetEvent repeatedly discarding events until it finds a
|
||||
// completion event (EC_COMPLETE, EC_ERRORABORT, or EC_USERABORT).
|
||||
// The completion event is removed from the queue and returned
|
||||
// in pEvCode. Note that the object is still in running mode until
|
||||
// a Pause or Stop call is made.
|
||||
// If the timeout occurs, *pEvCode will be 0 and E_ABORT will be
|
||||
// returned.
|
||||
HRESULT WaitForCompletion(
|
||||
[in] long msTimeout,
|
||||
[out] long * pEvCode);
|
||||
|
||||
// cancels any system handling of the specified event code
|
||||
// and ensures that the events are passed straight to the application
|
||||
// (via GetEvent) and not handled. A good example of this is
|
||||
// EC_REPAINT: default handling for this ensures the painting of the
|
||||
// window and does not get posted to the app.
|
||||
HRESULT CancelDefaultHandling(
|
||||
[in] long lEvCode);
|
||||
|
||||
// restore the normal system default handling that may have been
|
||||
// cancelled by CancelDefaultHandling().
|
||||
HRESULT RestoreDefaultHandling( [in] long lEvCode);
|
||||
|
||||
// Free any resources associated with the parameters to an event.
|
||||
// Event parameters may be LONGs, IUnknown* or BSTR. No action
|
||||
// is taken with LONGs. IUnknown are passed addrefed and need a
|
||||
// Release call. BSTR are allocated by the task allocator and will be
|
||||
// freed by calling the task allocator.
|
||||
HRESULT FreeEventParams(
|
||||
[in] long lEvCode,
|
||||
[in] LONG_PTR lParam1,
|
||||
[in] LONG_PTR lParam2
|
||||
);
|
||||
}
|
||||
|
||||
[
|
||||
uuid(56a868c0-0ad4-11ce-b03a-0020af0ba770),
|
||||
helpstring("IMediaEventEx interface"),
|
||||
odl
|
||||
]
|
||||
interface IMediaEventEx : IMediaEvent
|
||||
{
|
||||
|
||||
// Register a window to send messages to when events occur
|
||||
// Parameters:
|
||||
//
|
||||
// hwnd - handle of window to notify -
|
||||
// pass NULL to stop notification
|
||||
// lMsg - Message id to pass messages with
|
||||
// lInstanceData - will come back in lParam
|
||||
//
|
||||
// The event information must still be retrived by a call
|
||||
// to GetEvent when the window message is received.
|
||||
//
|
||||
// Multiple events may be notified with one window message.
|
||||
//
|
||||
HRESULT SetNotifyWindow(
|
||||
[in] OAHWND hwnd,
|
||||
[in] long lMsg,
|
||||
[in] LONG_PTR lInstanceData
|
||||
);
|
||||
|
||||
// Turn events notification on or off
|
||||
// lNoNotify = 0x00 event notification is ON
|
||||
// lNoNotify = 0x01 event notification is OFF. The
|
||||
// handle returned by GetEventHandle will be signalled at
|
||||
// end of stream
|
||||
HRESULT SetNotifyFlags(
|
||||
[in] long lNoNotifyFlags
|
||||
);
|
||||
HRESULT GetNotifyFlags(
|
||||
[out] long *lplNoNotifyFlags
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// seek/cueing for positional media
|
||||
[
|
||||
uuid(56a868b2-0ad4-11ce-b03a-0020af0ba770),
|
||||
helpstring("IMediaPosition interface"),
|
||||
odl,
|
||||
oleautomation,
|
||||
dual
|
||||
]
|
||||
interface IMediaPosition : IDispatch
|
||||
{
|
||||
// properties
|
||||
|
||||
[propget]
|
||||
HRESULT Duration(
|
||||
[out, retval] REFTIME* plength);
|
||||
|
||||
[propput]
|
||||
HRESULT CurrentPosition(
|
||||
[in] REFTIME llTime);
|
||||
|
||||
[propget]
|
||||
HRESULT CurrentPosition(
|
||||
[out, retval] REFTIME* pllTime);
|
||||
|
||||
[propget]
|
||||
HRESULT StopTime(
|
||||
[out, retval] REFTIME* pllTime);
|
||||
[propput]
|
||||
HRESULT StopTime(
|
||||
[in] REFTIME llTime);
|
||||
|
||||
[propget]
|
||||
HRESULT PrerollTime(
|
||||
[out, retval] REFTIME* pllTime);
|
||||
[propput]
|
||||
HRESULT PrerollTime(
|
||||
[in] REFTIME llTime);
|
||||
|
||||
[propput]
|
||||
HRESULT Rate(
|
||||
[in] double dRate);
|
||||
[propget]
|
||||
HRESULT Rate(
|
||||
[out, retval] double * pdRate);
|
||||
|
||||
HRESULT CanSeekForward([out, retval] LONG *pCanSeekForward);
|
||||
HRESULT CanSeekBackward([out, retval] LONG *pCanSeekBackward);
|
||||
}
|
||||
|
||||
// basic audio-related functionality
|
||||
[
|
||||
uuid(56a868b3-0ad4-11ce-b03a-0020af0ba770),
|
||||
helpstring("IBasicAudio interface"),
|
||||
odl,
|
||||
oleautomation,
|
||||
dual
|
||||
]
|
||||
interface IBasicAudio : IDispatch
|
||||
{
|
||||
// properties
|
||||
|
||||
[propput]
|
||||
HRESULT Volume(
|
||||
[in] long lVolume);
|
||||
[propget]
|
||||
HRESULT Volume(
|
||||
[out, retval] long * plVolume);
|
||||
|
||||
[propput]
|
||||
HRESULT Balance(
|
||||
[in] long lBalance);
|
||||
[propget]
|
||||
HRESULT Balance(
|
||||
[out, retval] long * plBalance);
|
||||
}
|
||||
|
||||
// basic window-related functionality
|
||||
[
|
||||
uuid(56a868b4-0ad4-11ce-b03a-0020af0ba770),
|
||||
helpstring("IVideoWindow interface"),
|
||||
odl,
|
||||
oleautomation,
|
||||
dual
|
||||
]
|
||||
interface IVideoWindow : IDispatch
|
||||
{
|
||||
// properties
|
||||
|
||||
// set and get the window title caption
|
||||
|
||||
[propput]
|
||||
HRESULT Caption([in] BSTR strCaption);
|
||||
[propget]
|
||||
HRESULT Caption([out, retval] BSTR *strCaption);
|
||||
|
||||
// change the window styles (as per Win32)
|
||||
|
||||
[propput]
|
||||
HRESULT WindowStyle([in] long WindowStyle);
|
||||
[propget]
|
||||
HRESULT WindowStyle([out, retval] long *WindowStyle);
|
||||
|
||||
// change the extended window styles (as per Win32)
|
||||
|
||||
[propput]
|
||||
HRESULT WindowStyleEx([in] long WindowStyleEx);
|
||||
[propget]
|
||||
HRESULT WindowStyleEx([out, retval] long *WindowStyleEx);
|
||||
|
||||
[propput]
|
||||
HRESULT AutoShow([in] long AutoShow);
|
||||
[propget]
|
||||
HRESULT AutoShow([out, retval] long *AutoShow);
|
||||
|
||||
// change the window state (as per Win32)
|
||||
|
||||
[propput]
|
||||
HRESULT WindowState([in] long WindowState);
|
||||
[propget]
|
||||
HRESULT WindowState([out, retval] long *WindowState);
|
||||
|
||||
// realise the palette in the background
|
||||
|
||||
[propput]
|
||||
HRESULT BackgroundPalette([in] long BackgroundPalette);
|
||||
[propget]
|
||||
HRESULT BackgroundPalette([out, retval] long *pBackgroundPalette);
|
||||
|
||||
// affect the visibility of the window
|
||||
|
||||
[propput]
|
||||
HRESULT Visible([in] long Visible);
|
||||
[propget]
|
||||
HRESULT Visible([out, retval] long *pVisible);
|
||||
|
||||
// change the desktop position of the video window
|
||||
|
||||
[propput]
|
||||
HRESULT Left([in] long Left);
|
||||
[propget]
|
||||
HRESULT Left([out, retval] long *pLeft);
|
||||
|
||||
[propput]
|
||||
HRESULT Width([in] long Width);
|
||||
[propget]
|
||||
HRESULT Width([out, retval] long *pWidth);
|
||||
|
||||
[propput]
|
||||
HRESULT Top([in] long Top);
|
||||
[propget]
|
||||
HRESULT Top([out, retval] long *pTop);
|
||||
|
||||
[propput]
|
||||
HRESULT Height([in] long Height);
|
||||
[propget]
|
||||
HRESULT Height([out, retval] long *pHeight);
|
||||
|
||||
// change the owning window of the video
|
||||
|
||||
[propput]
|
||||
HRESULT Owner([in] OAHWND Owner);
|
||||
[propget]
|
||||
HRESULT Owner([out, retval] OAHWND *Owner);
|
||||
|
||||
// change the window to receive posted messages
|
||||
|
||||
[propput]
|
||||
HRESULT MessageDrain([in] OAHWND Drain);
|
||||
[propget]
|
||||
HRESULT MessageDrain([out, retval] OAHWND *Drain);
|
||||
|
||||
[propget]
|
||||
HRESULT BorderColor([out, retval] long *Color);
|
||||
|
||||
[propput]
|
||||
HRESULT BorderColor([in] long Color);
|
||||
|
||||
[propget]
|
||||
HRESULT FullScreenMode([out, retval] long *FullScreenMode);
|
||||
|
||||
[propput]
|
||||
HRESULT FullScreenMode([in] long FullScreenMode);
|
||||
|
||||
// methods
|
||||
|
||||
// ask the renderer to grab it's window the foreground
|
||||
// and optionally also give the window the input focus
|
||||
HRESULT SetWindowForeground([in] long Focus);
|
||||
|
||||
// owners should pass WM_PALETTECHANGED and WM_SYSCOLORCHANGE
|
||||
// messages on the filter graph so they can be distributed
|
||||
// otherwise child renderers never see these messages go by
|
||||
|
||||
HRESULT NotifyOwnerMessage([in] OAHWND hwnd,
|
||||
[in] long uMsg,
|
||||
[in] LONG_PTR wParam,
|
||||
[in] LONG_PTR lParam
|
||||
);
|
||||
|
||||
// get and set the window position on the desktop
|
||||
|
||||
HRESULT SetWindowPosition([in] long Left,
|
||||
[in] long Top,
|
||||
[in] long Width,
|
||||
[in] long Height);
|
||||
|
||||
HRESULT GetWindowPosition([out] long *pLeft,
|
||||
[out] long *pTop,
|
||||
[out] long *pWidth,
|
||||
[out] long *pHeight);
|
||||
|
||||
// get the ideal sizes for the video image playback (client) area
|
||||
|
||||
HRESULT GetMinIdealImageSize([out] long *pWidth,[out] long *pHeight);
|
||||
HRESULT GetMaxIdealImageSize([out] long *pWidth,[out] long *pHeight);
|
||||
|
||||
// get the restored window size when we're maximised or iconic
|
||||
|
||||
HRESULT GetRestorePosition([out] long *pLeft,
|
||||
[out] long *pTop,
|
||||
[out] long *pWidth,
|
||||
[out] long *pHeight);
|
||||
|
||||
// show and hide cursors useful when fullscreen
|
||||
HRESULT HideCursor([in] long HideCursor);
|
||||
HRESULT IsCursorHidden([out] long *CursorHidden);
|
||||
}
|
||||
|
||||
// basic video-related functionality
|
||||
[
|
||||
uuid(56a868b5-0ad4-11ce-b03a-0020af0ba770),
|
||||
helpstring("IBasicVideo interface"),
|
||||
odl,
|
||||
oleautomation,
|
||||
dual
|
||||
]
|
||||
interface IBasicVideo : IDispatch
|
||||
{
|
||||
// properties
|
||||
|
||||
// Video specific (approximate) bit and frame rates
|
||||
|
||||
[propget]
|
||||
HRESULT AvgTimePerFrame([out, retval] REFTIME *pAvgTimePerFrame);
|
||||
|
||||
[propget]
|
||||
HRESULT BitRate([out, retval] long *pBitRate);
|
||||
|
||||
[propget]
|
||||
HRESULT BitErrorRate([out, retval] long *pBitErrorRate);
|
||||
|
||||
// read the native video size
|
||||
|
||||
[propget]
|
||||
HRESULT VideoWidth([out, retval] long *pVideoWidth);
|
||||
|
||||
[propget]
|
||||
HRESULT VideoHeight([out, retval] long *pVideoHeight);
|
||||
|
||||
// change the source rectangle for the video
|
||||
|
||||
[propput]
|
||||
HRESULT SourceLeft([in] long SourceLeft);
|
||||
[propget]
|
||||
HRESULT SourceLeft([out, retval] long *pSourceLeft);
|
||||
|
||||
[propput]
|
||||
HRESULT SourceWidth([in] long SourceWidth);
|
||||
[propget]
|
||||
HRESULT SourceWidth([out, retval] long *pSourceWidth);
|
||||
|
||||
[propput]
|
||||
HRESULT SourceTop([in] long SourceTop);
|
||||
[propget]
|
||||
HRESULT SourceTop([out, retval] long *pSourceTop);
|
||||
|
||||
[propput]
|
||||
HRESULT SourceHeight([in] long SourceHeight);
|
||||
[propget]
|
||||
HRESULT SourceHeight([out, retval] long *pSourceHeight);
|
||||
|
||||
// change the destination rectangle for the video
|
||||
|
||||
[propput]
|
||||
HRESULT DestinationLeft([in] long DestinationLeft);
|
||||
[propget]
|
||||
HRESULT DestinationLeft([out, retval] long *pDestinationLeft);
|
||||
|
||||
[propput]
|
||||
HRESULT DestinationWidth([in] long DestinationWidth);
|
||||
[propget]
|
||||
HRESULT DestinationWidth([out, retval] long *pDestinationWidth);
|
||||
|
||||
[propput]
|
||||
HRESULT DestinationTop([in] long DestinationTop);
|
||||
[propget]
|
||||
HRESULT DestinationTop([out, retval] long *pDestinationTop);
|
||||
|
||||
[propput]
|
||||
HRESULT DestinationHeight([in] long DestinationHeight);
|
||||
[propget]
|
||||
HRESULT DestinationHeight([out, retval] long *pDestinationHeight);
|
||||
|
||||
// methods
|
||||
|
||||
// get and set the source rectangle position
|
||||
|
||||
HRESULT SetSourcePosition([in] long Left,
|
||||
[in] long Top,
|
||||
[in] long Width,
|
||||
[in] long Height);
|
||||
|
||||
HRESULT GetSourcePosition([out] long *pLeft,
|
||||
[out] long *pTop,
|
||||
[out] long *pWidth,
|
||||
[out] long *pHeight);
|
||||
|
||||
HRESULT SetDefaultSourcePosition();
|
||||
|
||||
// get and set the destination rectangle position
|
||||
|
||||
HRESULT SetDestinationPosition([in] long Left,
|
||||
[in] long Top,
|
||||
[in] long Width,
|
||||
[in] long Height);
|
||||
|
||||
HRESULT GetDestinationPosition([out] long *pLeft,
|
||||
[out] long *pTop,
|
||||
[out] long *pWidth,
|
||||
[out] long *pHeight);
|
||||
|
||||
HRESULT SetDefaultDestinationPosition();
|
||||
|
||||
// get the native video dimensions
|
||||
|
||||
HRESULT GetVideoSize([out] long *pWidth,[out] long *pHeight);
|
||||
|
||||
// get all or some of the current video palette
|
||||
|
||||
HRESULT GetVideoPaletteEntries([in] long StartIndex,
|
||||
[in] long Entries,
|
||||
[out] long *pRetrieved,
|
||||
[out] long *pPalette);
|
||||
|
||||
HRESULT GetCurrentImage([in,out] long *pBufferSize,
|
||||
[out] long *pDIBImage);
|
||||
|
||||
// are we using a default source or destination
|
||||
|
||||
HRESULT IsUsingDefaultSource();
|
||||
HRESULT IsUsingDefaultDestination();
|
||||
}
|
||||
|
||||
// interface extension to IBasicVideo to return preferred aspect ratio
|
||||
[
|
||||
uuid(329bb360-f6ea-11d1-9038-00a0c9697298),
|
||||
helpstring("IBasicVideo2"),
|
||||
odl
|
||||
]
|
||||
interface IBasicVideo2 : IBasicVideo
|
||||
{
|
||||
// This may not match the native video dimensions because of
|
||||
// non-square pixels or whatever.
|
||||
// The video may not always be displayed in the preferred
|
||||
// aspect ratio for performance reasons
|
||||
|
||||
HRESULT GetPreferredAspectRatio([out] long *plAspectX,
|
||||
[out] long *plAspectY);
|
||||
}
|
||||
|
||||
// interface returned to a command that has been queued via IQueueCommand
|
||||
[
|
||||
uuid(56a868b8-0ad4-11ce-b03a-0020af0ba770),
|
||||
helpstring("IDeferredCommand"),
|
||||
odl
|
||||
]
|
||||
interface IDeferredCommand : IUnknown
|
||||
{
|
||||
HRESULT Cancel();
|
||||
HRESULT Confidence(
|
||||
[out] LONG* pConfidence);
|
||||
HRESULT Postpone(
|
||||
[in] REFTIME newtime);
|
||||
// return value is S_OK if completed. phrResult is set to the
|
||||
// result of the deferred command.
|
||||
HRESULT GetHResult(
|
||||
[out] HRESULT* phrResult);
|
||||
};
|
||||
|
||||
// queue an IDispatch-based command for execution at a specified time
|
||||
[
|
||||
uuid(56a868b7-0ad4-11ce-b03a-0020af0ba770),
|
||||
helpstring("IQueueCommand"),
|
||||
odl
|
||||
]
|
||||
interface IQueueCommand : IUnknown
|
||||
{
|
||||
HRESULT InvokeAtStreamTime(
|
||||
[out] IDeferredCommand** pCmd,
|
||||
[in] REFTIME time, // at this streamtime
|
||||
[in] GUID* iid, // call this interface
|
||||
[in] long dispidMethod, // ..and this method
|
||||
[in] short wFlags, // method/property
|
||||
[in] long cArgs, // count of args
|
||||
[in] VARIANT* pDispParams, // actual args
|
||||
[in, out] VARIANT* pvarResult, // return value
|
||||
[out] short* puArgErr // which arg in error
|
||||
);
|
||||
|
||||
HRESULT InvokeAtPresentationTime(
|
||||
[out] IDeferredCommand** pCmd,
|
||||
[in] REFTIME time, // at this presentation time
|
||||
[in] GUID* iid, // call this interface
|
||||
[in] long dispidMethod, // ..and this method
|
||||
[in] short wFlags, // method/property
|
||||
[in] long cArgs, // count of args
|
||||
[in] VARIANT* pDispParams, // actual args
|
||||
[in, out] VARIANT* pvarResult, // return value
|
||||
[out] short* puArgErr // which arg in error
|
||||
);
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
// the filgraph object (CLSID_Filgraph)
|
||||
[
|
||||
uuid(e436ebb3-524f-11ce-9f53-0020af0ba770),
|
||||
helpstring("Filtergraph type info")
|
||||
]
|
||||
coclass FilgraphManager
|
||||
{
|
||||
[default] interface IMediaControl;
|
||||
interface IMediaEvent;
|
||||
interface IMediaPosition;
|
||||
interface IBasicAudio;
|
||||
interface IBasicVideo;
|
||||
interface IVideoWindow;
|
||||
|
||||
};
|
||||
|
||||
|
||||
// represents a filter (you can't QI for IBaseFilter from this object)
|
||||
[
|
||||
uuid(56a868ba-0ad4-11ce-b03a-0020af0ba770),
|
||||
helpstring("FilterInfo"),
|
||||
odl,
|
||||
oleautomation,
|
||||
dual
|
||||
]
|
||||
interface IFilterInfo : IDispatch
|
||||
{
|
||||
// find a pin given an id - returns an object supporting
|
||||
// IPinInfo
|
||||
HRESULT FindPin(
|
||||
[in] BSTR strPinID,
|
||||
[out] IDispatch** ppUnk);
|
||||
|
||||
// filter name
|
||||
[propget]
|
||||
HRESULT Name(
|
||||
[out, retval] BSTR* strName);
|
||||
|
||||
// Vendor info string
|
||||
[propget]
|
||||
HRESULT VendorInfo(
|
||||
[out, retval] BSTR* strVendorInfo);
|
||||
|
||||
// returns the actual filter object (supports IBaseFilter)
|
||||
[propget]
|
||||
HRESULT Filter(
|
||||
[out, retval] IUnknown **ppUnk);
|
||||
|
||||
// returns an IAMCollection object containing the PinInfo objects
|
||||
// for this filter
|
||||
[propget]
|
||||
HRESULT Pins(
|
||||
[out, retval] IDispatch ** ppUnk);
|
||||
|
||||
// returns -1 if true or 0 if false (OATRUE/FALSE)
|
||||
[propget]
|
||||
HRESULT IsFileSource(
|
||||
[out, retval] LONG * pbIsSource);
|
||||
|
||||
[propget]
|
||||
HRESULT Filename(
|
||||
[out, retval] BSTR* pstrFilename);
|
||||
|
||||
[propput]
|
||||
HRESULT Filename(
|
||||
[in] BSTR strFilename);
|
||||
}
|
||||
|
||||
[
|
||||
uuid(56a868bb-0ad4-11ce-b03a-0020af0ba770),
|
||||
helpstring("Registry Filter Info"),
|
||||
odl,
|
||||
oleautomation,
|
||||
dual
|
||||
]
|
||||
interface IRegFilterInfo : IDispatch
|
||||
{
|
||||
// get the name of this filter
|
||||
[propget]
|
||||
HRESULT Name(
|
||||
[out, retval] BSTR* strName);
|
||||
|
||||
|
||||
// make an instance of this filter, add it to the graph and
|
||||
// return an IFilterInfo for it.
|
||||
HRESULT Filter(
|
||||
[out] IDispatch** ppUnk);
|
||||
}
|
||||
|
||||
// wrapper for a media type
|
||||
[
|
||||
uuid(56a868bc-0ad4-11ce-b03a-0020af0ba770),
|
||||
helpstring("Media Type"),
|
||||
odl,
|
||||
oleautomation,
|
||||
dual
|
||||
]
|
||||
interface IMediaTypeInfo : IDispatch
|
||||
{
|
||||
// get the major type GUID as a string
|
||||
[propget]
|
||||
HRESULT Type(
|
||||
[out, retval] BSTR* strType);
|
||||
|
||||
// get the subtype GUID as a string
|
||||
[propget]
|
||||
HRESULT Subtype(
|
||||
[out, retval] BSTR* strType);
|
||||
}
|
||||
|
||||
[
|
||||
uuid(56a868bd-0ad4-11ce-b03a-0020af0ba770),
|
||||
helpstring("Pin Info"),
|
||||
odl,
|
||||
oleautomation,
|
||||
dual
|
||||
]
|
||||
interface IPinInfo : IDispatch
|
||||
{
|
||||
// get the pin object (IUnknown for an object that
|
||||
// supports IPin
|
||||
[propget]
|
||||
HRESULT Pin(
|
||||
[out, retval] IUnknown** ppUnk);
|
||||
|
||||
// get the PinInfo object for the pin we are connected to
|
||||
[propget]
|
||||
HRESULT ConnectedTo(
|
||||
[out, retval] IDispatch** ppUnk);
|
||||
|
||||
// get the media type on this connection - returns an
|
||||
// object supporting IMediaTypeInfo
|
||||
[propget]
|
||||
HRESULT ConnectionMediaType(
|
||||
[out, retval] IDispatch** ppUnk);
|
||||
|
||||
|
||||
// return the FilterInfo object for the filter this pin
|
||||
// is part of
|
||||
[propget]
|
||||
HRESULT FilterInfo(
|
||||
[out, retval] IDispatch** ppUnk);
|
||||
|
||||
// get the name of this pin
|
||||
[propget]
|
||||
HRESULT Name(
|
||||
[out, retval] BSTR* ppUnk);
|
||||
|
||||
// pin direction
|
||||
[propget]
|
||||
HRESULT Direction(
|
||||
[out, retval] LONG *ppDirection);
|
||||
|
||||
// PinID - can pass to IFilterInfo::FindPin
|
||||
[propget]
|
||||
HRESULT PinID(
|
||||
[out, retval] BSTR* strPinID);
|
||||
|
||||
// collection of preferred media types (IAMCollection)
|
||||
[propget]
|
||||
HRESULT MediaTypes(
|
||||
[out, retval] IDispatch** ppUnk);
|
||||
|
||||
// Connect to the following pin, using other transform
|
||||
// filters as necessary. pPin can support either IPin or IPinInfo
|
||||
HRESULT Connect(
|
||||
[in] IUnknown* pPin);
|
||||
|
||||
// Connect directly to the following pin, not using any intermediate
|
||||
// filters
|
||||
HRESULT ConnectDirect(
|
||||
[in] IUnknown* pPin);
|
||||
|
||||
// Connect directly to the following pin, using the specified
|
||||
// media type only. pPin is an object that must support either
|
||||
// IPin or IPinInfo, and pMediaType must support IMediaTypeInfo.
|
||||
HRESULT ConnectWithType(
|
||||
[in] IUnknown * pPin,
|
||||
[in] IDispatch * pMediaType);
|
||||
|
||||
// disconnect this pin and the corresponding connected pin from
|
||||
// each other. (Calls IPin::Disconnect on both pins).
|
||||
HRESULT Disconnect(void);
|
||||
|
||||
// render this pin using any necessary transform and rendering filters
|
||||
HRESULT Render(void);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
//
|
||||
// IAMStats - statistics
|
||||
//
|
||||
// Note that the calls using an index are likely to be much faster
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
[
|
||||
uuid(bc9bcf80-dcd2-11d2-abf6-00a0c905f375),
|
||||
helpstring("Statistics"),
|
||||
odl,
|
||||
oleautomation,
|
||||
dual
|
||||
]
|
||||
interface IAMStats : IDispatch {
|
||||
// Reset all stats
|
||||
HRESULT Reset();
|
||||
|
||||
// Get number of stats collected
|
||||
[propget]
|
||||
HRESULT Count(
|
||||
[out, retval] LONG* plCount);
|
||||
|
||||
// Pull out a specific value by position
|
||||
HRESULT GetValueByIndex([in] long lIndex,
|
||||
[out] BSTR *szName,
|
||||
[out] long *lCount,
|
||||
[out] double *dLast,
|
||||
[out] double *dAverage,
|
||||
[out] double *dStdDev,
|
||||
[out] double *dMin,
|
||||
[out] double *dMax);
|
||||
|
||||
// Pull out a specific value by name
|
||||
HRESULT GetValueByName([in] BSTR szName,
|
||||
[out] long *lIndex,
|
||||
[out] long *lCount,
|
||||
[out] double *dLast,
|
||||
[out] double *dAverage,
|
||||
[out] double *dStdDev,
|
||||
[out] double *dMin,
|
||||
[out] double *dMax);
|
||||
|
||||
|
||||
// The calls below are for generators of statistics
|
||||
|
||||
// Return the index for a string - optinally create
|
||||
HRESULT GetIndex([in] BSTR szName,
|
||||
[in] long lCreate,
|
||||
[out] long *plIndex);
|
||||
|
||||
// Add a new value
|
||||
HRESULT AddValue([in] long lIndex,
|
||||
[in] double dValue);
|
||||
}
|
||||
};
|
||||
@@ -1,86 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: DDStream.idl
|
||||
//
|
||||
// Desc:
|
||||
//
|
||||
// Copyright (c) 1998 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
import "unknwn.idl";
|
||||
import "mmstream.idl";
|
||||
|
||||
cpp_quote("//")
|
||||
cpp_quote("// The following declarations within the 'if 0' block are dummy typedefs used to make")
|
||||
cpp_quote("// the ddstream.idl file build. The actual definitions are contained in DDRAW.H")
|
||||
cpp_quote("//")
|
||||
cpp_quote("#if 0")
|
||||
typedef void * LPDDSURFACEDESC;
|
||||
typedef struct tDDSURFACEDESC DDSURFACEDESC;
|
||||
cpp_quote("#endif")
|
||||
cpp_quote("#include <ddraw.h>")
|
||||
|
||||
enum {
|
||||
DDSFF_PROGRESSIVERENDER = 0x00000001
|
||||
};
|
||||
|
||||
interface IDirectDraw;
|
||||
interface IDirectDrawSurface;
|
||||
interface IDirectDrawPalette;
|
||||
|
||||
interface IDirectDrawMediaStream;
|
||||
interface IDirectDrawStreamSample;
|
||||
|
||||
// IDirectDrawMediaStream
|
||||
[
|
||||
object,
|
||||
local,
|
||||
uuid(F4104FCE-9A70-11d0-8FDE-00C04FD9189D),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IDirectDrawMediaStream : IMediaStream
|
||||
{
|
||||
HRESULT GetFormat(
|
||||
[out] DDSURFACEDESC *pDDSDCurrent,
|
||||
[out] IDirectDrawPalette **ppDirectDrawPalette,
|
||||
[out] DDSURFACEDESC *pDDSDDesired,
|
||||
[out] DWORD *pdwFlags);
|
||||
|
||||
HRESULT SetFormat(
|
||||
[in] const DDSURFACEDESC *pDDSurfaceDesc,
|
||||
[in] IDirectDrawPalette *pDirectDrawPalette);
|
||||
|
||||
HRESULT GetDirectDraw(
|
||||
[out] IDirectDraw **ppDirectDraw);
|
||||
|
||||
HRESULT SetDirectDraw(
|
||||
[in] IDirectDraw *pDirectDraw);
|
||||
|
||||
HRESULT CreateSample(
|
||||
[in] IDirectDrawSurface *pSurface,
|
||||
[in] const RECT *pRect,
|
||||
[in] DWORD dwFlags,
|
||||
[out]IDirectDrawStreamSample **ppSample);
|
||||
|
||||
HRESULT GetTimePerFrame(
|
||||
[out] STREAM_TIME *pFrameTime);
|
||||
};
|
||||
|
||||
|
||||
// IDirectDrawStreamSample
|
||||
[
|
||||
object,
|
||||
local,
|
||||
uuid(F4104FCF-9A70-11d0-8FDE-00C04FD9189D),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IDirectDrawStreamSample : IStreamSample
|
||||
{
|
||||
HRESULT GetSurface(
|
||||
[out] IDirectDrawSurface ** ppDirectDrawSurface,
|
||||
[out] RECT * pRect);
|
||||
|
||||
HRESULT SetRect(
|
||||
[in] const RECT * pRect);
|
||||
|
||||
};
|
||||
@@ -1,30 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: DevEnum.idl
|
||||
//
|
||||
// Desc: IDL source for devenum.dll. This file will be processed by the
|
||||
// MIDL tool to produce the type library (devenum.tlb) and marshalling
|
||||
// code.
|
||||
//
|
||||
// Copyright (c) 1998 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
cpp_quote("#define CDEF_CLASS_DEFAULT 0x0001")
|
||||
cpp_quote("#define CDEF_BYPASS_CLASS_MANAGER 0x0002")
|
||||
//cpp_quote("#define CDEF_CLASS_LEGACY 0x0004")
|
||||
cpp_quote("#define CDEF_MERIT_ABOVE_DO_NOT_USE 0x0008")
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(29840822-5B84-11D0-BD3B-00A0C911CE86),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface ICreateDevEnum : IUnknown
|
||||
{
|
||||
import "oaidl.idl";
|
||||
|
||||
HRESULT CreateClassEnumerator(
|
||||
[in] REFCLSID clsidDeviceClass,
|
||||
[out] IEnumMoniker ** ppEnumMoniker,
|
||||
[in] DWORD dwFlags);
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: DMODShow.idl
|
||||
//
|
||||
// Desc:
|
||||
//
|
||||
// Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
import "unknwn.idl";
|
||||
import "objidl.idl";
|
||||
import "mediaobj.idl";
|
||||
|
||||
// 94297043-bd82-4dfd-b0de-8177739c6d20
|
||||
cpp_quote("DEFINE_GUID(CLSID_DMOWrapperFilter, 0x94297043,0xbd82,0x4dfd,0xb0,0xde,0x81,0x77,0x73,0x9c,0x6d,0x20);")
|
||||
// bcd5796c-bd52-4d30-ab76-70f975b89199
|
||||
cpp_quote("DEFINE_GUID(CLSID_DMOFilterCategory,0xbcd5796c,0xbd52,0x4d30,0xab,0x76,0x70,0xf9,0x75,0xb8,0x91,0x99);")
|
||||
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(52d6f586-9f0f-4824-8fc8-e32ca04930c2),
|
||||
]
|
||||
interface IDMOWrapperFilter : IUnknown
|
||||
{
|
||||
// Init is passed in the clsid (so it can call CoCreateInstance)
|
||||
// and the catgory under which the DMO lives
|
||||
// Note that catDMO can be CLSID_NULL in which case no special
|
||||
// category-specific processing will be invoked in the wrapper filter
|
||||
HRESULT Init(REFCLSID clsidDMO, REFCLSID catDMO);
|
||||
}
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: DShowASF.idl
|
||||
//
|
||||
// Desc:
|
||||
//
|
||||
// Copyright (c) 1992-2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
import "unknwn.idl";
|
||||
import "objidl.idl";
|
||||
import "strmif.idl"; // for media type and time definitions
|
||||
import "wmsdkidl.idl";
|
||||
|
||||
cpp_quote( "EXTERN_GUID( IID_IConfigAsfWriter,0x45086030,0xF7E4,0x486a,0xB5,0x04,0x82,0x6B,0xB5,0x79,0x2A,0x3B );" )
|
||||
|
||||
interface IConfigAsfWriter;
|
||||
interface IWMProfile;
|
||||
|
||||
// Interface to control the ASF writer
|
||||
[
|
||||
object,
|
||||
uuid(45086030-F7E4-486a-B504-826BB5792A3B),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IConfigAsfWriter : IUnknown
|
||||
{
|
||||
//
|
||||
// The user is expected to enumerate profiles using the wmsdk IWMProfileManager
|
||||
// method and then pass the desired profile index to the ASF Writer filter via this
|
||||
// method. The filter will then try to configure itself for the selected profile.
|
||||
//
|
||||
// NOTE: These 2 XXXProfileId methods are now obsolete because they assume
|
||||
// version 4.0 WMSDK profiles. To configure the filter for later profile
|
||||
// versions using a profile index, use the XXXProfile methods which take
|
||||
// the IWMProfile* directly.
|
||||
//
|
||||
HRESULT ConfigureFilterUsingProfileId([in] DWORD dwProfileId);
|
||||
HRESULT GetCurrentProfileId([out] DWORD *pdwProfileId);
|
||||
|
||||
//
|
||||
// configure using a pre-defined wmsdk profile guid
|
||||
//
|
||||
HRESULT ConfigureFilterUsingProfileGuid([in] REFGUID guidProfile);
|
||||
HRESULT GetCurrentProfileGuid([out] GUID *pProfileGuid);
|
||||
|
||||
//
|
||||
// Use these methods when a custom profile setup is preferred
|
||||
//
|
||||
HRESULT ConfigureFilterUsingProfile([in] IWMProfile * pProfile);
|
||||
HRESULT GetCurrentProfile([out] IWMProfile **ppProfile);
|
||||
|
||||
//
|
||||
// allow app to control whether or not to index file
|
||||
//
|
||||
HRESULT SetIndexMode( [in] BOOL bIndexFile );
|
||||
HRESULT GetIndexMode( [out] BOOL *pbIndexFile );
|
||||
}
|
||||
|
||||
2324
game_re/third_party/mssdk/include/DShowIDL/dvdif.idl
vendored
2324
game_re/third_party/mssdk/include/DShowIDL/dvdif.idl
vendored
File diff suppressed because it is too large
Load Diff
1059
game_re/third_party/mssdk/include/DShowIDL/dxtrans.idl
vendored
1059
game_re/third_party/mssdk/include/DShowIDL/dxtrans.idl
vendored
File diff suppressed because it is too large
Load Diff
@@ -1,318 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: DynGraph.idl
|
||||
//
|
||||
// Desc: Dynamic graph interfaces.
|
||||
//
|
||||
// Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
interface IPinConnection;
|
||||
interface IPinFlowControl;
|
||||
interface IGraphConfig;
|
||||
interface IGraphConfigCallback;
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
//
|
||||
// IPinConnection - supported by input pins
|
||||
//
|
||||
//--------------------------------------------------------------------
|
||||
[
|
||||
local,
|
||||
object,
|
||||
uuid(4a9a62d3-27d4-403d-91e9-89f540e55534),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IPinConnection : IUnknown {
|
||||
|
||||
// Do you accept this type chane in your current state?
|
||||
HRESULT DynamicQueryAccept([in] const AM_MEDIA_TYPE *pmt);
|
||||
|
||||
// Set event when EndOfStream receive - do NOT pass it on
|
||||
// This condition is cancelled by a flush or Stop
|
||||
HRESULT NotifyEndOfStream([in] HANDLE hNotifyEvent);
|
||||
|
||||
// Are you an 'end pin'
|
||||
HRESULT IsEndPin();
|
||||
|
||||
HRESULT DynamicDisconnect();
|
||||
};
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
//
|
||||
// IPinFlowControl - supported by output pins
|
||||
//
|
||||
//--------------------------------------------------------------------
|
||||
[
|
||||
local,
|
||||
object,
|
||||
uuid(c56e9858-dbf3-4f6b-8119-384af2060deb),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IPinFlowControl : IUnknown {
|
||||
// Block processing on this pin
|
||||
HRESULT Block([in] DWORD dwBlockFlags, [in] HANDLE hEvent);
|
||||
}
|
||||
|
||||
// block flags
|
||||
enum _AM_PIN_FLOW_CONTROL_BLOCK_FLAGS {
|
||||
AM_PIN_FLOW_CONTROL_BLOCK = 0x00000001, // 0 means unblock
|
||||
};
|
||||
|
||||
|
||||
// Reconnect flags
|
||||
typedef enum _AM_GRAPH_CONFIG_RECONNECT_FLAGS {
|
||||
AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = 0x00000001,
|
||||
AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = 0x00000002,
|
||||
AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = 0x00000004
|
||||
} AM_GRAPH_CONFIG_RECONNECT_FLAGS;
|
||||
|
||||
// RemoveFilterEx flags
|
||||
enum _REM_FILTER_FLAGS {
|
||||
REMFILTERF_LEAVECONNECTED = 0x00000001
|
||||
};
|
||||
|
||||
typedef enum _AM_FILTER_FLAGS {
|
||||
AM_FILTER_FLAGS_REMOVABLE = 0x00000001
|
||||
} AM_FILTER_FLAGS;
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
//
|
||||
// IGraphConfig
|
||||
//
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
[
|
||||
local,
|
||||
object,
|
||||
uuid(03A1EB8E-32BF-4245-8502-114D08A9CB88),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IGraphConfig : IUnknown {
|
||||
HRESULT Reconnect([in] IPin *pOutputPin,
|
||||
[in] IPin *pInputPin,
|
||||
[in] const AM_MEDIA_TYPE *pmtFirstConnection,
|
||||
[in] IBaseFilter *pUsingFilter, // can be NULL
|
||||
[in] HANDLE hAbortEvent,
|
||||
[in] DWORD dwFlags);
|
||||
|
||||
HRESULT Reconfigure([in] IGraphConfigCallback *pCallback,
|
||||
[in] PVOID pvContext,
|
||||
[in] DWORD dwFlags,
|
||||
[in] HANDLE hAbortEvent);
|
||||
|
||||
|
||||
HRESULT AddFilterToCache([in] IBaseFilter *pFilter);
|
||||
HRESULT EnumCacheFilter([out] IEnumFilters **pEnum);
|
||||
HRESULT RemoveFilterFromCache([in]IBaseFilter *pFilter);
|
||||
|
||||
// Get the start time associated with the last Run() call
|
||||
// If the graph is not running returns VFW_E_WRONG_STATE
|
||||
HRESULT GetStartTime([out] REFERENCE_TIME *prtStart);
|
||||
|
||||
HRESULT PushThroughData(
|
||||
[in] IPin *pOutputPin,
|
||||
[in] IPinConnection *pConnection,
|
||||
[in] HANDLE hEventAbort);
|
||||
|
||||
HRESULT SetFilterFlags([in] IBaseFilter *pFilter, [in] DWORD dwFlags);
|
||||
HRESULT GetFilterFlags([in] IBaseFilter *pFilter, [out] DWORD *pdwFlags);
|
||||
|
||||
HRESULT RemoveFilterEx( [in] IBaseFilter *pFilter, DWORD Flags );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
//
|
||||
// IGraphConfigCallback
|
||||
//
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
[
|
||||
local,
|
||||
object,
|
||||
uuid(ade0fd60-d19d-11d2-abf6-00a0c905f375),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IGraphConfigCallback : IUnknown
|
||||
{
|
||||
HRESULT Reconfigure(PVOID pvContext, DWORD dwFlags);
|
||||
}
|
||||
|
||||
// Filter Chain Definition
|
||||
//
|
||||
// Filter chains have the following properties:
|
||||
//
|
||||
// - Each filter chain has one or more filters.
|
||||
//
|
||||
// - Each filter in a filter chain has at most one connected input pin and one
|
||||
// connected output pin. For example, filters A, C, D, F, G, H, I, J and K
|
||||
// (see the diagram below) can be in a filter chain because each one has at
|
||||
// most one connected input pin and one connected output pin.
|
||||
//
|
||||
// - Any filter in a chain is reachable by any other filter in the chain.
|
||||
// For example, in the filter chain F-G-H, F can reach H by following the F-
|
||||
// G connection to G and then following the G-H connection to H. Filters F
|
||||
// and J cannot be in the same filter chain because J is not reachable from
|
||||
// F. Anotherwords, there no sequence of connected filters between F and J.
|
||||
//
|
||||
// - The start filter is the only filter in the filter chain who's input
|
||||
// pin is not connected to another filter in the chain. For instance, F is
|
||||
// the start filter in F-G-H because F's input pin is connected to E and E
|
||||
// is not in the filter chain. G's input pin is connected to F and H's is
|
||||
// connected to G. Both F and G are in the filter chain.
|
||||
//
|
||||
// - The end filter is the only filter in the filter chain who's output pin
|
||||
// is not connected to another filter in the chain. For example, in the
|
||||
// filter chain J-K, K is the end filter because K's output pin is
|
||||
// connected to L. J's output pin is connected to K and K is in the J-K
|
||||
// filter chain.
|
||||
//
|
||||
//
|
||||
// --->|---| |---|--->
|
||||
// | C |--->| D |
|
||||
// |---| |---|--->|---| |---|--->|---| |---| |---| |---|
|
||||
// | A |--->| B | | E |--->| F |--->| G |--->| H |
|
||||
// |---| |---|--->|---|------------>|---| |---| |---| |---|
|
||||
// | I |--->
|
||||
// --->|---|--->
|
||||
//
|
||||
// |---| |---| |---|
|
||||
// | J |--->| K |--->| L |
|
||||
// |---| |---| |---|
|
||||
//
|
||||
// Example Filter Graph
|
||||
//
|
||||
//
|
||||
//
|
||||
// IFilterChain Methods Documentation
|
||||
//
|
||||
// HRESULT StartChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
|
||||
//
|
||||
// StartChain() switches all the filters in the chain into the running state
|
||||
// If one of the filters will not switch to the running state, then all the filters
|
||||
// in the chain are stopped. This method can only be called if the filter graph is
|
||||
// running.
|
||||
//
|
||||
// Parameters:
|
||||
// - pStartFilter [in]
|
||||
// The first filter in the filter chain. Note that this can be the same
|
||||
// filter as pEndFilter .
|
||||
//
|
||||
// - pEndFilter [in]
|
||||
// The last filter in the filter chain. Note that this can be the same
|
||||
// filter as pStartFilter. If pEndFilter is NULL then the filter chain extends
|
||||
// from pStartFilter to the last downstream filter which can be in a filter chain.
|
||||
// For example, IFilterChain::StartChain( A, NULL ) would start filter A.
|
||||
// IFilterChain::StartChain( G, NULL ) would start filters G and H.
|
||||
// IFilterChain::StartChain( C, NULL ) would start filters C and D. Finally,
|
||||
// IFilterChain::StartChain( E, NULL ) would fail because E cannot be in a
|
||||
// filter chain (see the Filter Chain Definition section for more information).
|
||||
//
|
||||
// Return Value:
|
||||
// An HRESULT. See the Direct Show SDK and COM SDK documentation for more
|
||||
// information on interpreting HRESULTs.
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// HRESULT PauseChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
|
||||
//
|
||||
// PauseChain() switches all the filters in a chain to the paused state. If it cannot
|
||||
// switch one of the filtres into the paused state, all the filters in the chain are
|
||||
// stopped. This method can only be called if the filter graph is paused.
|
||||
//
|
||||
// Parameters:
|
||||
// - pStartFilter [in]
|
||||
// The first filter in the filter chain. Note that this can be the same
|
||||
// filter as pEndFilter .
|
||||
//
|
||||
// - pEndFilter [in]
|
||||
// The last filter in the filter chain. Note that this can be the same
|
||||
// filter as pStartFilter. If pEndFilter is NULL then the filter chain extends
|
||||
// from pStartFilter to the last downstream filter which can be in a filter chain.
|
||||
// For example, IFilterChain::StopChain( A, NULL ) would stop filter A.
|
||||
// IFilterChain::StopChain( G, NULL ) would stop filters G and H.
|
||||
// IFilterChain::StopChain( C, NULL ) would stop filters C and D. Finally,
|
||||
// IFilterChain::StopChain( E, NULL ) would fail because E cannot be in a filter
|
||||
// chain (see the Filter Chain Definition section for more information).
|
||||
//
|
||||
//
|
||||
// Return Value:
|
||||
// An HRESULT. See the Direct Show SDK and COM SDK documentation for more
|
||||
// information on interpreting HRESULTs.
|
||||
//
|
||||
//
|
||||
//
|
||||
// HRESULT StopChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
|
||||
//
|
||||
// StopChain() switches all the filters in chain to the stopped state.
|
||||
//
|
||||
// Parameters:
|
||||
// - pStartFilter [in]
|
||||
// The first filter in the filter chain. Note that this can be the same
|
||||
// filter as pEndFilter .
|
||||
//
|
||||
// - pEndFilter [in]
|
||||
// The last filter in the filter chain. Note that this can be the same
|
||||
// filter as pStartFilter. If pEndFilter is NULL then the filter chain extends
|
||||
// from pStartFilter to the last downstream filter which can be in a filter chain.
|
||||
// For example, IFilterChain::StopChain( A, NULL ) would stop filter A.
|
||||
// IFilterChain::StopChain( G, NULL ) would stop filters G and H.
|
||||
// IFilterChain::StopChain( C, NULL ) would stop filters C and D. Finally,
|
||||
// IFilterChain::StopChain( E, NULL ) would fail because E cannot be in a filter
|
||||
// chain (see the Filter Chain Definition section for more information).
|
||||
//
|
||||
//
|
||||
// Return Value:
|
||||
// An HRESULT. See the Direct Show SDK and COM SDK documentation for more
|
||||
// information on interpreting HRESULTs.
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// HRESULT RemoveChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
|
||||
//
|
||||
// RemoveChain() removes every filter in a chain from the filter graph.
|
||||
// The filters can be removed while the graph is running.
|
||||
//
|
||||
// Parameters:
|
||||
// - pStartFilter [in]
|
||||
// The first filter in the filter chain. Note that this can be the same
|
||||
// filter as pEndFilter .
|
||||
//
|
||||
// - pEndFilter [in]
|
||||
// The last filter in the filter chain. Note that this can be the same
|
||||
// filter as pStartFilter. If pEndFilter is NULL then the filter chain
|
||||
// extends from pStartFilter to the last downstream filter which can be in a
|
||||
// filter chain. For example, IFilterChain::RemoveChain( A, NULL ) would remove
|
||||
// filter A from the filter graph. IFilterChain::RemoveChain( G, NULL ) would
|
||||
// remove filters G and H. IFilterChain::RemoveChain( C, NULL ) would remove
|
||||
// filters C and D. Finally, IFilterChain::RemoveChain( E, NULL ) would fail
|
||||
// because E cannot be in a filter chain (see the Filter Chain Definition
|
||||
// section for more information).
|
||||
//
|
||||
//
|
||||
// Return Value:
|
||||
// An HRESULT. See the Direct Show SDK and COM SDK documentation for more
|
||||
// information on interpreting HRESULTs.
|
||||
//
|
||||
//
|
||||
[
|
||||
local,
|
||||
object,
|
||||
uuid(DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IFilterChain : IUnknown
|
||||
{
|
||||
HRESULT StartChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
|
||||
HRESULT PauseChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
|
||||
HRESULT StopChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
|
||||
HRESULT RemoveChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,144 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: IAMovie.idl
|
||||
//
|
||||
// Desc:
|
||||
//
|
||||
// Copyright (c) 1992 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(359ace10-7688-11cf-8b23-00805f6cef60),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IAMovie : IFilterGraph
|
||||
{
|
||||
// IGraphBuilder
|
||||
// Connect these two pins directly or indirectly, using transform filters
|
||||
// if necessary.
|
||||
|
||||
HRESULT Connect
|
||||
( [in] IPin * ppinOut, // the output pin
|
||||
[in] IPin * ppinIn // the input pin
|
||||
);
|
||||
|
||||
|
||||
// Connect this output pin directly or indirectly, using transform filters
|
||||
// if necessary to something that will render it.
|
||||
|
||||
HRESULT Render
|
||||
( [in] IPin * ppinOut // the output pin
|
||||
);
|
||||
|
||||
|
||||
// IMediaControl methods
|
||||
HRESULT Run();
|
||||
HRESULT Pause();
|
||||
HRESULT Stop();
|
||||
|
||||
//returns the state. same semantics as IMediaFilter::GetState
|
||||
|
||||
HRESULT GetState(
|
||||
[in] LONG msTimeout,
|
||||
[out] FILTER_STATE* pfs);
|
||||
|
||||
// adds and connects filters needed to play the specified file
|
||||
HRESULT RenderFile(
|
||||
[in] LPCWSTR strFilename);
|
||||
|
||||
// adds to the graph the source filter that can read this file,
|
||||
// and returns an IFilterInfo object for it
|
||||
HRESULT AddSourceFilter(
|
||||
[in] LPCWSTR strFilename,
|
||||
[out] IBaseFilter ** ppUnk);
|
||||
|
||||
// get back the event handle. This is manual-reset
|
||||
// (don't - it's reset by the event mechanism) and remains set
|
||||
// when events are queued, and reset when the queue is empty.
|
||||
HRESULT GetEventHandle(
|
||||
[out] HEVENT * hEvent);
|
||||
|
||||
// remove the next event notification from the head of the queue and
|
||||
// return it. Waits up to msTimeout millisecs if there are no events.
|
||||
// if a timeout occurs without any events, this method will return
|
||||
// E_ABORT, and the value of the event code and other parameters
|
||||
// is undefined.
|
||||
HRESULT GetEvent(
|
||||
[out] long * lEventCode,
|
||||
[out] long * lParam1,
|
||||
[out] long * lParam2,
|
||||
[in] long msTimeout
|
||||
);
|
||||
|
||||
// Calls GetEvent repeatedly discarding events until it finds a
|
||||
// completion event (EC_COMPLETE, EC_ERRORABORT, or EC_USERABORT).
|
||||
// The completion event is removed from the queue and returned
|
||||
// in pEvCode. Note that the object is still in running mode until
|
||||
// a Pause or Stop call is made.
|
||||
// If the timeout occurs, *pEvCode will be 0 and E_ABORT will be
|
||||
// returned.
|
||||
HRESULT WaitForCompletion(
|
||||
[in] long msTimeout,
|
||||
[out] long * pEvCode);
|
||||
|
||||
// cancels any system handling of the specified event code
|
||||
// and ensures that the events are passed straight to the application
|
||||
// (via GetEvent) and not handled. A good example of this is
|
||||
// EC_REPAINT: default handling for this ensures the painting of the
|
||||
// window and does not get posted to the app.
|
||||
HRESULT CancelDefaultHandling(
|
||||
[in] long lEvCode);
|
||||
|
||||
// restore the normal system default handling that may have been
|
||||
// cancelled by CancelDefaultHandling().
|
||||
HRESULT RestoreDefaultHandling( [in] long lEvCode);
|
||||
|
||||
// properties
|
||||
HRESULT get_Duration(
|
||||
[out] REFTIME* plength);
|
||||
|
||||
HRESULT put_CurrentPosition(
|
||||
[in] REFTIME llTime);
|
||||
|
||||
HRESULT get_CurrentPosition(
|
||||
[out] REFTIME* pllTime);
|
||||
|
||||
HRESULT get_StopTime(
|
||||
[out] REFTIME* pllTime);
|
||||
|
||||
HRESULT put_StopTime(
|
||||
[in] REFTIME llTime);
|
||||
|
||||
HRESULT get_PrerollTime(
|
||||
[out] REFTIME* pllTime);
|
||||
HRESULT put_PrerollTime(
|
||||
[in] REFTIME llTime);
|
||||
|
||||
HRESULT put_Rate(
|
||||
[in] double dRate);
|
||||
HRESULT get_Rate(
|
||||
[out] double * pdRate);
|
||||
|
||||
/* New methods */
|
||||
HRESULT RemoveAllFilters();
|
||||
HRESULT Play();
|
||||
HRESULT PlayFile([in] LPCWSTR strFilename);
|
||||
HRESULT EnumFiltersByInterface( [in] REFIID riid, [out] IEnumFilters ** ppEnum );
|
||||
HRESULT EnumPins( [out] IEnumPins ** ppEnum );
|
||||
HRESULT EnumPinsIn( [out] IEnumPins ** ppEnum );
|
||||
HRESULT EnumPinsOut( [out] IEnumPins ** ppEnum );
|
||||
HRESULT RenderAll();
|
||||
HRESULT RenderNewFile( [in] LPCWSTR strFilename);
|
||||
|
||||
// Free any resources associated with the parameters to an event.
|
||||
// Event parameters may be LONGs, IUnknown* or BSTR. No action
|
||||
// is taken with LONGs. IUnknown are passed addrefed and need a
|
||||
// Release call. BSTR are allocated by the task allocator and will be
|
||||
// freed by calling the task allocator.
|
||||
HRESULT FreeEventParams(
|
||||
[in] long lEvCode,
|
||||
[in] long lParam1,
|
||||
[in] long lParam2);
|
||||
}
|
||||
|
||||
@@ -1,412 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: MediaObj.idl
|
||||
//
|
||||
// Desc: Define the interfaces for DirectX Media Objects. This file will
|
||||
// be processed by the MIDL tool to produce mediaobj.h and proxy-stub
|
||||
// code.
|
||||
//
|
||||
// Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
import "unknwn.idl";
|
||||
import "objidl.idl";
|
||||
|
||||
// DMO_MEDIA_TYPE structure
|
||||
|
||||
cpp_quote("#ifdef __strmif_h__")
|
||||
cpp_quote("typedef AM_MEDIA_TYPE DMO_MEDIA_TYPE;")
|
||||
cpp_quote("#else")
|
||||
typedef struct _DMOMediaType {
|
||||
GUID majortype;
|
||||
GUID subtype;
|
||||
BOOL bFixedSizeSamples;
|
||||
BOOL bTemporalCompression;
|
||||
ULONG lSampleSize;
|
||||
GUID formattype;
|
||||
IUnknown *pUnk;
|
||||
ULONG cbFormat;
|
||||
[size_is(cbFormat)] BYTE * pbFormat;
|
||||
} DMO_MEDIA_TYPE;
|
||||
typedef LONGLONG REFERENCE_TIME;
|
||||
cpp_quote("#endif")
|
||||
|
||||
|
||||
// Per-buffer flags that apply to input buffers
|
||||
enum _DMO_INPUT_DATA_BUFFER_FLAGS {
|
||||
DMO_INPUT_DATA_BUFFERF_SYNCPOINT = 0x00000001,
|
||||
DMO_INPUT_DATA_BUFFERF_TIME = 0x00000002,
|
||||
DMO_INPUT_DATA_BUFFERF_TIMELENGTH = 0x00000004
|
||||
};
|
||||
|
||||
// Per-buffer flags that apply to output buffers.
|
||||
enum _DMO_OUTPUT_DATA_BUFFER_FLAGS {
|
||||
DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT = 0x00000001,
|
||||
DMO_OUTPUT_DATA_BUFFERF_TIME = 0x00000002,
|
||||
DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH = 0x00000004,
|
||||
|
||||
//
|
||||
// This flag means the object could have generated more data for this
|
||||
// output stream, even with no additional input from any input stream,
|
||||
// but the output buffer did not have sufficient room.
|
||||
//
|
||||
DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE = 0x01000000
|
||||
};
|
||||
|
||||
// Flags returned by GetInputStatus()
|
||||
enum _DMO_INPUT_STATUS_FLAGS {
|
||||
//
|
||||
// ACCEPT_DATA indicates that the input stream is ready to accept
|
||||
// new data via ProcessInput().
|
||||
//
|
||||
DMO_INPUT_STATUSF_ACCEPT_DATA = 0x00000001
|
||||
};
|
||||
|
||||
// Flags returned by GetInputStreamInfo()
|
||||
enum _DMO_INPUT_STREAM_INFO_FLAGS {
|
||||
DMO_INPUT_STREAMF_WHOLE_SAMPLES = 0x00000001,
|
||||
DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x00000002,
|
||||
DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE = 0x00000004,
|
||||
DMO_INPUT_STREAMF_HOLDS_BUFFERS = 0x00000008
|
||||
};
|
||||
|
||||
// Flags returned by GetOutputStreamInfo()
|
||||
enum _DMO_OUTPUT_STREAM_INFO_FLAGS {
|
||||
DMO_OUTPUT_STREAMF_WHOLE_SAMPLES = 0x00000001,
|
||||
DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x00000002,
|
||||
DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE = 0x00000004,
|
||||
DMO_OUTPUT_STREAMF_DISCARDABLE = 0x00000008,
|
||||
DMO_OUTPUT_STREAMF_OPTIONAL = 0x00000010
|
||||
};
|
||||
|
||||
// SetType flags
|
||||
enum _DMO_SET_TYPE_FLAGS {
|
||||
DMO_SET_TYPEF_TEST_ONLY = 0x00000001,// check but don't set
|
||||
DMO_SET_TYPEF_CLEAR = 0x00000002 // unset
|
||||
};
|
||||
|
||||
// Process Output Flags
|
||||
enum _DMO_PROCESS_OUTPUT_FLAGS {
|
||||
DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = 0x00000001 // Discard
|
||||
};
|
||||
|
||||
// Buffer wrapper interface
|
||||
[
|
||||
object,
|
||||
uuid(59eff8b9-938c-4a26-82f2-95cb84cdc837)
|
||||
]
|
||||
interface IMediaBuffer : IUnknown
|
||||
{
|
||||
HRESULT SetLength(
|
||||
DWORD cbLength
|
||||
);
|
||||
HRESULT GetMaxLength(
|
||||
[out] DWORD *pcbMaxLength
|
||||
);
|
||||
HRESULT GetBufferAndLength(
|
||||
[out] BYTE **ppBuffer, // not filled if NULL
|
||||
[out] DWORD *pcbLength // not filled if NULL
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Output buffer info structure: one of these must be passed in for each
|
||||
// output stream with every ProcessOutput() call
|
||||
// All [out] fields should be
|
||||
// assumed undefined if ProcessOutput() failed
|
||||
//
|
||||
typedef struct _DMO_OUTPUT_DATA_BUFFER {
|
||||
|
||||
IMediaBuffer *pBuffer; // [in] can be NULL
|
||||
|
||||
// ProcessOutput() must set any appropriate flags and zero out the rest.
|
||||
DWORD dwStatus; // [out] DMO_OUTPUT_DATA_BUFFERF_XXX (INCOMPLETE, etc.)
|
||||
|
||||
//
|
||||
// Each of these is valid if the corresponding flag is set in dwStatus
|
||||
//
|
||||
REFERENCE_TIME rtTimestamp; // [out]
|
||||
REFERENCE_TIME rtTimelength; // [out]
|
||||
} DMO_OUTPUT_DATA_BUFFER, *PDMO_OUTPUT_DATA_BUFFER;
|
||||
|
||||
|
||||
// Interface supported by media objects
|
||||
[
|
||||
object,
|
||||
uuid(d8ad0f58-5494-4102-97c5-ec798e59bcf4)
|
||||
]
|
||||
interface IMediaObject : IUnknown
|
||||
{
|
||||
|
||||
//
|
||||
// Stream enumeration
|
||||
//
|
||||
HRESULT GetStreamCount(
|
||||
[out] DWORD *pcInputStreams,
|
||||
[out] DWORD *pcOutputStreams
|
||||
);
|
||||
HRESULT GetInputStreamInfo(
|
||||
DWORD dwInputStreamIndex, // 0-based
|
||||
[out] DWORD *pdwFlags // HOLDS_BUFFERS
|
||||
);
|
||||
HRESULT GetOutputStreamInfo(
|
||||
DWORD dwOutputStreamIndex, // 0-based
|
||||
[out] DWORD *pdwFlags // Media object sets to 0
|
||||
);
|
||||
|
||||
//
|
||||
// Mediatypes
|
||||
//
|
||||
//
|
||||
// GetType - iterate through media types supported by a stream.
|
||||
// Returns S_FALSE if the type index is out of range ("no more types").
|
||||
//
|
||||
HRESULT GetInputType(
|
||||
DWORD dwInputStreamIndex,
|
||||
DWORD dwTypeIndex, // 0-based
|
||||
[out] DMO_MEDIA_TYPE *pmt
|
||||
);
|
||||
HRESULT GetOutputType(
|
||||
DWORD dwOutputStreamIndex,
|
||||
DWORD dwTypeIndex, // 0-based
|
||||
[out] DMO_MEDIA_TYPE *pmt
|
||||
);
|
||||
|
||||
//
|
||||
// SetType - tell the object the type of data it will work with.
|
||||
//
|
||||
HRESULT SetInputType(
|
||||
DWORD dwInputStreamIndex,
|
||||
[in] const DMO_MEDIA_TYPE *pmt,
|
||||
DWORD dwFlags // test only
|
||||
);
|
||||
HRESULT SetOutputType(
|
||||
DWORD dwOutputStreamIndex,
|
||||
[in] const DMO_MEDIA_TYPE *pmt,
|
||||
DWORD dwFlags // test only
|
||||
);
|
||||
|
||||
//
|
||||
// GetCurrentType - get the last mediatype supplied via SetType.
|
||||
// Returns S_FALSE if SetType has not been called.
|
||||
//
|
||||
HRESULT GetInputCurrentType(
|
||||
DWORD dwInputStreamIndex,
|
||||
[out] DMO_MEDIA_TYPE *pmt
|
||||
);
|
||||
HRESULT GetOutputCurrentType(
|
||||
DWORD dwOutputStreamIndex,
|
||||
[out] DMO_MEDIA_TYPE *pmt
|
||||
);
|
||||
|
||||
//
|
||||
// SizeInfo
|
||||
//
|
||||
//
|
||||
// GetSizeInfo - Get buffer size requirementes of a stream.
|
||||
//
|
||||
// If buffer size depends on the media type used, the object should
|
||||
// base its response on the most recent media type set for this stream.
|
||||
// If no mediatype has been set, the object may return an error.
|
||||
//
|
||||
HRESULT GetInputSizeInfo(
|
||||
DWORD dwInputStreamIndex,
|
||||
[out] DWORD *pcbSize, // size of input 'quantum'
|
||||
[out] DWORD *pcbMaxLookahead, // max total bytes held
|
||||
[out] DWORD *pcbAlignment // buffer alignment requirement
|
||||
);
|
||||
HRESULT GetOutputSizeInfo(
|
||||
DWORD dwOutputStreamIndex,
|
||||
[out] DWORD *pcbSize, // size of output 'quantum'
|
||||
[out] DWORD *pcbAlignment // buffer alignment requirement
|
||||
);
|
||||
|
||||
//
|
||||
// Latency methods
|
||||
//
|
||||
HRESULT GetInputMaxLatency(
|
||||
DWORD dwInputStreamIndex,
|
||||
[out] REFERENCE_TIME *prtMaxLatency
|
||||
);
|
||||
HRESULT SetInputMaxLatency(
|
||||
DWORD dwInputStreamIndex,
|
||||
REFERENCE_TIME rtMaxLatency
|
||||
);
|
||||
|
||||
//
|
||||
// Streaming / state methods
|
||||
//
|
||||
//
|
||||
// Flush() - discard any buffered data.
|
||||
//
|
||||
HRESULT Flush();
|
||||
|
||||
//
|
||||
// Send a discontinuity to an input stream. The object will not
|
||||
// accept any more data on this input stream until the discontinuity
|
||||
// has been completely processed, which may involve multiple
|
||||
// ProcessOutput() calls.
|
||||
//
|
||||
HRESULT Discontinuity(DWORD dwInputStreamIndex);
|
||||
|
||||
//
|
||||
// If a streaming object needs to perform any time consuming
|
||||
// initialization before it can stream data, it should do it inside
|
||||
// AllocateStreamingResources() rather than during the first process
|
||||
// call.
|
||||
//
|
||||
// This method is NOT guaranteed to be called before streaming
|
||||
// starts. If it is not called, the object should perform any
|
||||
// required initialization during a process call.
|
||||
//
|
||||
HRESULT AllocateStreamingResources();
|
||||
|
||||
// Free anything allocated in AllocateStreamingResources().
|
||||
HRESULT FreeStreamingResources();
|
||||
|
||||
// GetInputStatus - the only flag defined right now is ACCEPT_DATA.
|
||||
HRESULT GetInputStatus(
|
||||
DWORD dwInputStreamIndex,
|
||||
[out] DWORD *dwFlags // ACCEPT_DATA
|
||||
);
|
||||
|
||||
//
|
||||
// Pass one new buffer to an input stream
|
||||
//
|
||||
HRESULT ProcessInput(
|
||||
DWORD dwInputStreamIndex,
|
||||
IMediaBuffer *pBuffer, // must not be NULL
|
||||
DWORD dwFlags, // DMO_INPUT_DATA_BUFFERF_XXX (syncpoint, etc.)
|
||||
REFERENCE_TIME rtTimestamp, // valid if flag set
|
||||
REFERENCE_TIME rtTimelength // valid if flag set
|
||||
);
|
||||
|
||||
//
|
||||
// ProcessOutput() - generate output for current input buffers
|
||||
//
|
||||
// Output stream specific status information is returned in the
|
||||
// dwStatus member of each buffer wrapper structure.
|
||||
//
|
||||
HRESULT ProcessOutput(
|
||||
DWORD dwFlags, // DMO_PROCESS_OUTPUT_FLAGS
|
||||
DWORD cOutputBufferCount, // # returned by GetStreamCount()
|
||||
[in,out,size_is(cOutputBufferCount)]
|
||||
DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, // one per stream
|
||||
[out] DWORD *pdwStatus // TBD, must be set to 0
|
||||
);
|
||||
|
||||
// Locking - lock if bLock is TRUE, otherwise unlock
|
||||
HRESULT Lock(LONG bLock);
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// Interface returned by the DMO enumeration API
|
||||
//
|
||||
[
|
||||
object,
|
||||
uuid(2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f)
|
||||
]
|
||||
interface IEnumDMO : IUnknown {
|
||||
HRESULT Next(
|
||||
DWORD cItemsToFetch,
|
||||
[out, size_is(cItemsToFetch), length_is(*pcItemsFetched)] CLSID *pCLSID,
|
||||
[out, size_is(cItemsToFetch), length_is(*pcItemsFetched), string] WCHAR **Names,
|
||||
[out] DWORD *pcItemsFetched
|
||||
);
|
||||
HRESULT Skip(
|
||||
DWORD cItemsToSkip
|
||||
);
|
||||
HRESULT Reset(void);
|
||||
HRESULT Clone(
|
||||
[out] IEnumDMO **ppEnum
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// Flags for IMediaObjectInPlace::Process
|
||||
enum _DMO_INPLACE_PROCESS_FLAGS {
|
||||
DMO_INPLACE_NORMAL = 0x00000000,
|
||||
DMO_INPLACE_ZERO = 0x00000001
|
||||
};
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(651b9ad0-0fc7-4aa9-9538-d89931010741)
|
||||
]
|
||||
interface IMediaObjectInPlace : IUnknown {
|
||||
|
||||
// Proces - Given a buffer of size ulSize, put the output
|
||||
// of the DMO into the same buffer.
|
||||
HRESULT Process(
|
||||
[in] ULONG ulSize,
|
||||
[in,out,size_is(ulSize)] BYTE* pData,
|
||||
[in] REFERENCE_TIME refTimeStart,
|
||||
[in] DWORD dwFlags
|
||||
);
|
||||
|
||||
// Create a copy of the In-Place Media Object. This allows
|
||||
// for very fast initialization of a number of In-Place objects
|
||||
// in a known state.
|
||||
HRESULT Clone(
|
||||
[out] IMediaObjectInPlace **ppMediaObject
|
||||
);
|
||||
|
||||
// GetLatency - Returns a REFERENCE_TIME value
|
||||
// (1 tick = 100ns) which corresponds to the latency time
|
||||
// processing this effect will add to the graph. This assumes
|
||||
// the effect cost per buffer is a constant.
|
||||
HRESULT GetLatency(
|
||||
[out] REFERENCE_TIME *pLatencyTime
|
||||
);
|
||||
}
|
||||
|
||||
// Quality control status flags
|
||||
enum _DMO_QUALITY_STATUS_FLAGS {
|
||||
DMO_QUALITY_STATUS_ENABLED = 0x00000001
|
||||
};
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(65abea96-cf36-453f-af8a-705e98f16260)
|
||||
]
|
||||
interface IDMOQualityControl : IUnknown {
|
||||
HRESULT SetNow(
|
||||
[in] REFERENCE_TIME rtNow
|
||||
);
|
||||
HRESULT SetStatus(
|
||||
[in] DWORD dwFlags
|
||||
);
|
||||
HRESULT GetStatus(
|
||||
[out] DWORD *pdwFlags
|
||||
);
|
||||
}
|
||||
|
||||
// Flags for IVideoOutputOptimizations
|
||||
enum _DMO_VIDEO_OUTPUT_STREAM_FLAGS {
|
||||
DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = 0x00000001
|
||||
};
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(be8f4f4e-5b16-4d29-b350-7f6b5d9298ac)
|
||||
]
|
||||
interface IDMOVideoOutputOptimizations : IUnknown {
|
||||
HRESULT QueryOperationModePreferences (
|
||||
ULONG ulOutputStreamIndex,
|
||||
DWORD *pdwRequestedCapabilities
|
||||
);
|
||||
HRESULT SetOperationMode (
|
||||
ULONG ulOutputStreamIndex,
|
||||
DWORD dwEnabledFeatures
|
||||
);
|
||||
HRESULT GetCurrentOperationMode (
|
||||
ULONG ulOutputStreamIndex,
|
||||
DWORD *pdwEnabledFeatures
|
||||
);
|
||||
HRESULT GetCurrentSampleRequirements (
|
||||
ULONG ulOutputStreamIndex,
|
||||
DWORD *pdwRequestedFeatures
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,228 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: MedParam.idl
|
||||
//
|
||||
// Desc: Definition of the IMediaParams and associated interfaces. These
|
||||
// interfaces are designed to allow communication of curve-following
|
||||
// behaviors for parameters of objects which require dynamic changes
|
||||
// to their parameters at run time. All changes are specified by
|
||||
// timestamp and curve type to ensure the parameters can be set
|
||||
// at sufficient accuracy with predictable behavior on subsequent
|
||||
// playback of the same curves.
|
||||
//
|
||||
// Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
import "oaidl.idl";
|
||||
import "ocidl.idl";
|
||||
import "strmif.idl";
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Define the semantic type to be used for each parameter. All values passed
|
||||
// into this interface are 32-bit floats, but the interface can specify that
|
||||
// the values must be integer, or booleans or enumerated types
|
||||
//------------------------------------------------------------------------------
|
||||
typedef float MP_DATA; // All data is 32-bit floats
|
||||
|
||||
typedef enum _MP_Type {
|
||||
MPT_INT, // data is signed 23 bit integer (mantissa)
|
||||
MPT_FLOAT, // data is 32bit IEEE float
|
||||
MPT_BOOL, // data is true or false (using ANSI C++ definition)
|
||||
MPT_ENUM, // data is a set (represented by consecutive integers)
|
||||
MPT_MAX,
|
||||
} MP_TYPE;
|
||||
|
||||
const MP_DATA MPBOOL_TRUE = 1.0; // Value of true
|
||||
const MP_DATA MPBOOL_FALSE = 0.0; // Value of false
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Define the types of curves which are supported
|
||||
//------------------------------------------------------------------------------
|
||||
typedef enum _MP_CURVE_TYPE {
|
||||
MP_CURVE_JUMP = 0x0001, // No interpolation, just jump to next point
|
||||
MP_CURVE_LINEAR = 0x0002, // Linear interpolation (y follows x from 0.0 to 1.0)
|
||||
MP_CURVE_SQUARE = 0x0004, // y follow x^2 from 0.0 to 1.0
|
||||
MP_CURVE_INVSQUARE = 0x0008, // y follows 1-(x^2) from 0.0 to 1.0
|
||||
MP_CURVE_SINE = 0x0010, // y follows sin(x) from -pi/2 to pi/2
|
||||
} MP_CURVE_TYPE;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Capability bits. Used by the object to specify what capabilities it has.
|
||||
//------------------------------------------------------------------------------
|
||||
typedef DWORD MP_CAPS;
|
||||
// Curve capabilities - If the cap bit is set, that type of curve is supported
|
||||
const MP_CAPS MP_CAPS_CURVE_JUMP = MP_CURVE_JUMP;
|
||||
const MP_CAPS MP_CAPS_CURVE_LINEAR = MP_CURVE_LINEAR;
|
||||
const MP_CAPS MP_CAPS_CURVE_SQUARE = MP_CURVE_SQUARE;
|
||||
const MP_CAPS MP_CAPS_CURVE_INVSQUARE = MP_CURVE_INVSQUARE;
|
||||
const MP_CAPS MP_CAPS_CURVE_SINE = MP_CURVE_SINE;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Structure used to return information about the type and limits of a parameter
|
||||
//------------------------------------------------------------------------------
|
||||
typedef struct _MP_PARAMINFO {
|
||||
MP_TYPE mpType; // One of MP_TYPE_xxx codes
|
||||
MP_CAPS mopCaps; // A collection of MP_CAPS flags
|
||||
|
||||
// Minimum and maximum values
|
||||
MP_DATA mpdMinValue; // minimum legal value
|
||||
MP_DATA mpdMaxValue; // maximum legal value
|
||||
MP_DATA mpdNeutralValue; // default or 'center' value
|
||||
|
||||
// Defualt Unit and Label text. These strings will ALWAYS be English
|
||||
// strings in the UNICODE character set. For international text
|
||||
// use the GetParamText member function
|
||||
WCHAR szUnitText[32]; // units of the parameter
|
||||
WCHAR szLabel[32]; // name of the parameter
|
||||
|
||||
} MP_PARAMINFO;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Parameter Index types
|
||||
//------------------------------------------------------------------------------
|
||||
typedef DWORD DWORD;
|
||||
const DWORD DWORD_ALLPARAMS = -1; // Apply this operation to all params
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Defined list of timestamp types
|
||||
//------------------------------------------------------------------------------
|
||||
typedef DWORD MP_TIMEDATA; // Extra data to further define type
|
||||
|
||||
// REFERENCE_TIME (1 tick = 100 nanoseconds, MP_TIMEDATA ignored)
|
||||
cpp_quote("DEFINE_GUID(GUID_TIME_REFERENCE,")
|
||||
cpp_quote("0x93ad712b, 0xdaa0, 0x4ffe, 0xbc, 0x81, 0xb0, 0xce, 0x50, 0xf, 0xcd, 0xd9);")
|
||||
|
||||
// Music Time (MP_TIMEDATA = parts/quarter note)
|
||||
cpp_quote("DEFINE_GUID(GUID_TIME_MUSIC,")
|
||||
cpp_quote("0x574c49d, 0x5b04, 0x4b15, 0xa5, 0x42, 0xae, 0x28, 0x20, 0x30, 0x11, 0x7b);")
|
||||
|
||||
// Time is measures in samples. MP_TIMEDATA = Samples/sec)
|
||||
cpp_quote("DEFINE_GUID(GUID_TIME_SAMPLES,")
|
||||
cpp_quote("0xa8593d05, 0xc43, 0x4984, 0x9a, 0x63, 0x97, 0xaf, 0x9e, 0x2, 0xc4, 0xc0);")
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// The value of a given parameter at a specific point in time
|
||||
//------------------------------------------------------------------------------
|
||||
typedef DWORD MP_FLAGS;
|
||||
const MP_FLAGS MPF_ENVLP_STANDARD = 0x0000; // Use all data provided
|
||||
const MP_FLAGS MPF_ENVLP_BEGIN_CURRENTVAL = 0x0001;
|
||||
// Ignore valStart value, use current value as the staring point
|
||||
const MP_FLAGS MPF_ENVLP_BEGIN_NEUTRALVAL = 0x0002;
|
||||
// Ignore valStart value, use neutral value as the staring point
|
||||
|
||||
typedef struct _MP_ENVELOPE_SEGMENT {
|
||||
REFERENCE_TIME rtStart; // Start time in current time format
|
||||
REFERENCE_TIME rtEnd; // End time in current time format
|
||||
MP_DATA valStart; // Initial Value
|
||||
MP_DATA valEnd; // Final Value
|
||||
MP_CURVE_TYPE iCurve; // One of MP_CURVE_TYPE codes
|
||||
MP_FLAGS flags; // Special cases
|
||||
} MP_ENVELOPE_SEGMENT;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Define flags for Punch-in timing
|
||||
//------------------------------------------------------------------------------
|
||||
const MP_FLAGS MPF_PUNCHIN_REFTIME = 0; // Use the reference time as the PI time
|
||||
const MP_FLAGS MPF_PUNCHIN_NOW = 0x0001; // Punch in at the current clock time
|
||||
const MP_FLAGS MPF_PUNCHIN_STOPPED = 0x0002; // Return change notifications during
|
||||
// author time
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// IMediaParamInfo - Interface used to determine the names, data types and
|
||||
// units of the parameters which are exposed by the object. This interface
|
||||
// is used at discovery time, and is not required during run-time since the
|
||||
// objects parameters are a fixed set and this data can be cached by the
|
||||
// calling applicaiton
|
||||
//------------------------------------------------------------------------------
|
||||
[
|
||||
object,
|
||||
uuid(6d6cbb60-a223-44aa-842f-a2f06750be6d),
|
||||
version(1.0)
|
||||
]
|
||||
interface IMediaParamInfo : IUnknown
|
||||
{
|
||||
HRESULT GetParamCount (
|
||||
[out] DWORD * pdwParams
|
||||
);
|
||||
HRESULT GetParamInfo (
|
||||
[in] DWORD dwParamIndex,
|
||||
[out] MP_PARAMINFO * pInfo
|
||||
);
|
||||
// returns a series of null terminated strings. strings are in the
|
||||
// following order:
|
||||
// Param Label, Units Text, 1st Enum Text, 2nd Enum Text, etc...
|
||||
HRESULT GetParamText (
|
||||
[in] DWORD dwParamIndex, // which param to get text for
|
||||
[out] WCHAR **ppwchText // returns ptr to CoTaskMemAlloc'd string
|
||||
);
|
||||
|
||||
// Returns the number of diffrent time formats this object understands
|
||||
HRESULT GetNumTimeFormats (
|
||||
[out] DWORD * pdwNumTimeFormats
|
||||
);
|
||||
|
||||
// Returns the GUID for the ith supported time format
|
||||
HRESULT GetSupportedTimeFormat(
|
||||
[in] DWORD dwFormatIndex,
|
||||
[out] GUID *pguidTimeFormat
|
||||
);
|
||||
|
||||
// Returns the current time format
|
||||
HRESULT GetCurrentTimeFormat (
|
||||
[out] GUID *pguidTimeFormat,
|
||||
[out] MP_TIMEDATA *pTimeData
|
||||
);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// IMediaParams - Interfaes used to actually set the media params and the
|
||||
// envelopes to follow
|
||||
//------------------------------------------------------------------------------
|
||||
[
|
||||
object,
|
||||
uuid(6d6cbb61-a223-44aa-842f-a2f06750be6e),
|
||||
version(1.0)
|
||||
]
|
||||
interface IMediaParams : IUnknown
|
||||
{
|
||||
// Single param Get/Set methods
|
||||
HRESULT GetParam (
|
||||
[in] DWORD dwParamIndex,
|
||||
[out] MP_DATA *pValue
|
||||
);
|
||||
HRESULT SetParam (
|
||||
[in] DWORD dwParamIndex,
|
||||
[in] MP_DATA value
|
||||
);
|
||||
|
||||
// Envelope methods (param change over time)
|
||||
HRESULT AddEnvelope (
|
||||
[in] DWORD dwParamIndex,
|
||||
[in] DWORD cSegments,
|
||||
[in] MP_ENVELOPE_SEGMENT * pEnvelopeSegments
|
||||
);
|
||||
|
||||
// Flush all of the envelope information for the given paramter between
|
||||
// the timestamps specified
|
||||
HRESULT FlushEnvelope (
|
||||
[in] DWORD dwParamIndex,
|
||||
[in] REFERENCE_TIME refTimeStart,
|
||||
[in] REFERENCE_TIME refTimeEnd
|
||||
);
|
||||
|
||||
// Change the time format being used by the object
|
||||
HRESULT SetTimeFormat (
|
||||
[in] GUID guidTimeFormat,
|
||||
[in] MP_TIMEDATA mpTimeData
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,189 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: MMStream.idl
|
||||
//
|
||||
// Desc: MultiMedia streaming interface IDL file.
|
||||
//
|
||||
// Copyright (c) 1998 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
import "unknwn.idl";
|
||||
|
||||
cpp_quote("#define MS_ERROR_CODE(x) MAKE_HRESULT(1, FACILITY_ITF, (x) + 0x400)")
|
||||
cpp_quote("#define MS_SUCCESS_CODE(x) MAKE_HRESULT(0, FACILITY_ITF, x)")
|
||||
cpp_quote("#define MS_S_PENDING MS_SUCCESS_CODE(1)")
|
||||
cpp_quote("#define MS_S_NOUPDATE MS_SUCCESS_CODE(2)")
|
||||
cpp_quote("#define MS_S_ENDOFSTREAM MS_SUCCESS_CODE(3)")
|
||||
|
||||
cpp_quote("#define MS_E_SAMPLEALLOC MS_ERROR_CODE(1)")
|
||||
cpp_quote("#define MS_E_PURPOSEID MS_ERROR_CODE(2)")
|
||||
cpp_quote("#define MS_E_NOSTREAM MS_ERROR_CODE(3)")
|
||||
cpp_quote("#define MS_E_NOSEEKING MS_ERROR_CODE(4)")
|
||||
cpp_quote("#define MS_E_INCOMPATIBLE MS_ERROR_CODE(5)")
|
||||
cpp_quote("#define MS_E_BUSY MS_ERROR_CODE(6)")
|
||||
cpp_quote("#define MS_E_NOTINIT MS_ERROR_CODE(7)")
|
||||
cpp_quote("#define MS_E_SOURCEALREADYDEFINED MS_ERROR_CODE(8)")
|
||||
cpp_quote("#define MS_E_INVALIDSTREAMTYPE MS_ERROR_CODE(9)")
|
||||
cpp_quote("#define MS_E_NOTRUNNING MS_ERROR_CODE(10)")
|
||||
|
||||
cpp_quote("// {A35FF56A-9FDA-11d0-8FDF-00C04FD9189D}")
|
||||
cpp_quote("DEFINE_GUID(MSPID_PrimaryVideo, ")
|
||||
cpp_quote("0xa35ff56a, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
|
||||
|
||||
cpp_quote("// {A35FF56B-9FDA-11d0-8FDF-00C04FD9189D}")
|
||||
cpp_quote("DEFINE_GUID(MSPID_PrimaryAudio,")
|
||||
cpp_quote("0xa35ff56b, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
|
||||
|
||||
cpp_quote("#if(_WIN32_WINNT < 0x0400)")
|
||||
typedef void (__stdcall * PAPCFUNC)(DWORD_PTR dwParam);
|
||||
cpp_quote("#endif")
|
||||
|
||||
typedef LONGLONG STREAM_TIME;
|
||||
|
||||
typedef GUID MSPID;
|
||||
typedef REFGUID REFMSPID;
|
||||
|
||||
typedef enum {
|
||||
STREAMTYPE_READ = 0,
|
||||
STREAMTYPE_WRITE = 1,
|
||||
STREAMTYPE_TRANSFORM= 2
|
||||
} STREAM_TYPE;
|
||||
|
||||
typedef enum {
|
||||
STREAMSTATE_STOP = 0,
|
||||
STREAMSTATE_RUN = 1
|
||||
} STREAM_STATE;
|
||||
|
||||
|
||||
typedef enum {
|
||||
COMPSTAT_NOUPDATEOK = 0x00000001,
|
||||
COMPSTAT_WAIT = 0x00000002,
|
||||
COMPSTAT_ABORT = 0x00000004
|
||||
} COMPLETION_STATUS_FLAGS;
|
||||
|
||||
// Flags for GetInformation
|
||||
enum {
|
||||
MMSSF_HASCLOCK = 0x00000001,
|
||||
MMSSF_SUPPORTSEEK = 0x00000002,
|
||||
MMSSF_ASYNCHRONOUS = 0x00000004
|
||||
};
|
||||
|
||||
// Flags for StreamSample::Update
|
||||
enum {
|
||||
SSUPDATE_ASYNC = 0x00000001,
|
||||
SSUPDATE_CONTINUOUS = 0x00000002
|
||||
};
|
||||
|
||||
interface IMultiMediaStream;
|
||||
interface IMediaStream;
|
||||
interface IStreamSample;
|
||||
|
||||
// IMultiMediaStream interface
|
||||
[
|
||||
object,
|
||||
local,
|
||||
uuid(B502D1BC-9A57-11d0-8FDE-00C04FD9189D),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IMultiMediaStream : IUnknown {
|
||||
|
||||
HRESULT GetInformation(
|
||||
[out] DWORD *pdwFlags,
|
||||
[out] STREAM_TYPE *pStreamType);
|
||||
|
||||
HRESULT GetMediaStream(
|
||||
[in] REFMSPID idPurpose,
|
||||
[out] IMediaStream **ppMediaStream);
|
||||
|
||||
HRESULT EnumMediaStreams(
|
||||
[in] long Index,
|
||||
[out] IMediaStream **ppMediaStream);
|
||||
|
||||
HRESULT GetState(
|
||||
[out] STREAM_STATE *pCurrentState);
|
||||
|
||||
HRESULT SetState(
|
||||
[in] STREAM_STATE NewState);
|
||||
|
||||
HRESULT GetTime(
|
||||
[out] STREAM_TIME *pCurrentTime);
|
||||
|
||||
HRESULT GetDuration(
|
||||
[out] STREAM_TIME *pDuration);
|
||||
|
||||
HRESULT Seek(
|
||||
[in] STREAM_TIME SeekTime);
|
||||
|
||||
HRESULT GetEndOfStreamEventHandle(
|
||||
[out] HANDLE *phEOS);
|
||||
};
|
||||
|
||||
|
||||
// IMediaStream interface
|
||||
[
|
||||
object,
|
||||
uuid(B502D1BD-9A57-11d0-8FDE-00C04FD9189D),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IMediaStream : IUnknown {
|
||||
|
||||
HRESULT GetMultiMediaStream(
|
||||
[out] IMultiMediaStream **ppMultiMediaStream);
|
||||
|
||||
HRESULT GetInformation(
|
||||
[out] MSPID *pPurposeId,
|
||||
[out] STREAM_TYPE *pType);
|
||||
|
||||
HRESULT SetSameFormat(
|
||||
[in] IMediaStream *pStreamThatHasDesiredFormat,
|
||||
[in] DWORD dwFlags);
|
||||
|
||||
HRESULT AllocateSample(
|
||||
[in] DWORD dwFlags,
|
||||
[out] IStreamSample **ppSample);
|
||||
|
||||
|
||||
HRESULT CreateSharedSample(
|
||||
[in] IStreamSample *pExistingSample,
|
||||
[in] DWORD dwFlags,
|
||||
[out] IStreamSample **ppNewSample);
|
||||
|
||||
HRESULT SendEndOfStream(DWORD dwFlags);
|
||||
};
|
||||
|
||||
|
||||
// IStreamSample interface
|
||||
[
|
||||
object,
|
||||
local,
|
||||
uuid(B502D1BE-9A57-11d0-8FDE-00C04FD9189D),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IStreamSample : IUnknown {
|
||||
|
||||
HRESULT GetMediaStream(
|
||||
[in] IMediaStream **ppMediaStream);
|
||||
|
||||
HRESULT GetSampleTimes(
|
||||
[out] STREAM_TIME * pStartTime,
|
||||
[out] STREAM_TIME * pEndTime,
|
||||
[out] STREAM_TIME * pCurrentTime);
|
||||
|
||||
HRESULT SetSampleTimes(
|
||||
[in] const STREAM_TIME *pStartTime,
|
||||
[in] const STREAM_TIME *pEndTime);
|
||||
|
||||
HRESULT Update(
|
||||
[in] DWORD dwFlags,
|
||||
[in] HANDLE hEvent,
|
||||
[in] PAPCFUNC pfnAPC,
|
||||
[in] DWORD_PTR dwAPCData);
|
||||
|
||||
HRESULT CompletionStatus(
|
||||
[in] DWORD dwFlags,
|
||||
[in] DWORD dwMilliseconds);
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
1702
game_re/third_party/mssdk/include/DShowIDL/qedit.idl
vendored
1702
game_re/third_party/mssdk/include/DShowIDL/qedit.idl
vendored
File diff suppressed because it is too large
Load Diff
@@ -1,43 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: RegBag.idl
|
||||
//
|
||||
// Desc: IDL source for RegBag.dll.
|
||||
//
|
||||
// Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
import "objidl.idl";
|
||||
import "oaidl.idl";
|
||||
import "ocidl.idl";
|
||||
|
||||
|
||||
//*****************************************************************************
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Custom Factory interface
|
||||
// since com doesn't support ctors or initialization parameters on std factory interface
|
||||
// we have a custom creation interface
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//*****************************************************************************
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
[object,
|
||||
hidden, restricted,
|
||||
uuid(8A674B48-1F63-11d3-B64C-00C04F79498E),
|
||||
helpstring("Create property bag backed by registry"),
|
||||
pointer_default(unique),
|
||||
local
|
||||
]
|
||||
interface ICreatePropBagOnRegKey : IUnknown {
|
||||
// NOTE: it is up to the caller to set the correct registry access based on the interface
|
||||
// and methods the caller intends to use
|
||||
// IPropertyBag2::GetPropertyInfo and CountProperties require both KEY_QUERY_VALUE and KEY_ENUMERATE_SUBKEYS
|
||||
// IPropertyBagXXX::Read requires KEY_READ
|
||||
// IPropertyBagXXX::Write requires KEY_WRITE
|
||||
// also, you must CoTaskMemFree the name string from GetPropertyInfo
|
||||
// if you write a value of VT_EMPTY or VT_NULL the property will be removed from the bag and the corresponding
|
||||
// registry info will be deleted.
|
||||
HRESULT Create([in] HKEY hkey, [in] LPCOLESTR subkey, [in] DWORD ulOptions, [in] DWORD samDesired, REFIID iid, [out] LPVOID *ppBag);
|
||||
};
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: StrmIf.idl
|
||||
//
|
||||
// Desc: ActiveMovie interface definitions.
|
||||
//
|
||||
// Copyright (c) 1992 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
import "unknwn.idl";
|
||||
import "objidl.idl"; // for IPersist (IFilter's root)
|
||||
|
||||
#include "devenum.idl"
|
||||
|
||||
// core interfaces
|
||||
#include "axcore.idl"
|
||||
|
||||
// extended, ActiveMovie-only interfaces
|
||||
#include "axextend.idl"
|
||||
|
||||
// ActiveMovie-only sample plug-in distributor interface
|
||||
#include "IAMovie.idl"
|
||||
|
||||
// application interfaces for DVD
|
||||
#include "dvdif.idl"
|
||||
|
||||
// Dynamic graph stuff
|
||||
#include "dyngraph.idl"
|
||||
1996
game_re/third_party/mssdk/include/DShowIDL/tuner.idl
vendored
1996
game_re/third_party/mssdk/include/DShowIDL/tuner.idl
vendored
File diff suppressed because it is too large
Load Diff
@@ -1,172 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: VideoAcc.idl
|
||||
//
|
||||
// Desc: An interface exposed by the overlay mixer to help decode samples
|
||||
// using hardware video acceleration.
|
||||
//
|
||||
// Copyright (c) 1992 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
import "unknwn.idl";
|
||||
|
||||
cpp_quote("//")
|
||||
cpp_quote("// The following declarations within the 'if 0' block are dummy typedefs used to make")
|
||||
cpp_quote("// the motncomp.idl file build. The actual definitions are contained in ddraw.h and amva.h")
|
||||
cpp_quote("//")
|
||||
cpp_quote("#if 0")
|
||||
|
||||
typedef void* LPVOID;
|
||||
typedef void* LPGUID;
|
||||
typedef void* LPDIRECTDRAWSURFACE;
|
||||
typedef void* LPDDPIXELFORMAT;
|
||||
typedef void* LPAMVAInternalMemInfo;
|
||||
typedef void AMVAUncompDataInfo;
|
||||
typedef void* LPAMVACompBufferInfo;
|
||||
typedef void AMVABUFFERINFO;
|
||||
typedef void AMVAEndFrameInfo;
|
||||
typedef void* LPAMVAUncompBufferInfo;
|
||||
typedef void AMVABeginFrameInfo;
|
||||
typedef IUnknown* IMediaSample;
|
||||
|
||||
cpp_quote("#endif")
|
||||
cpp_quote("#include <ddraw.h>")
|
||||
cpp_quote("#include <amva.h>")
|
||||
|
||||
|
||||
[
|
||||
local,
|
||||
object,
|
||||
uuid(256A6A21-FBAD-11d1-82BF-00A0C9696C8F),
|
||||
helpstring("IAMVideoAcceleratorNotify Interface"),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
// IAMVideoAcceleratorNotify
|
||||
interface IAMVideoAcceleratorNotify : IUnknown
|
||||
{
|
||||
// get information necessary to allocate uncompressed data buffers
|
||||
// which is not part of the mediatype format (like how many buffers to allocate etc)
|
||||
HRESULT GetUncompSurfacesInfo([in] const GUID *pGuid, [in] [out] LPAMVAUncompBufferInfo pUncompBufferInfo);
|
||||
|
||||
// set information regarding allocated uncompressed data buffers
|
||||
HRESULT SetUncompSurfacesInfo([in] DWORD dwActualUncompSurfacesAllocated);
|
||||
|
||||
// get information necessary to create video accelerator object. It is the caller's responsibility
|
||||
// to call CoTaskMemFree() on *ppMiscData
|
||||
HRESULT GetCreateVideoAcceleratorData([in] const GUID *pGuid, [out] LPDWORD pdwSizeMiscData, [out] LPVOID *ppMiscData);
|
||||
};
|
||||
|
||||
[
|
||||
local,
|
||||
object,
|
||||
uuid(256A6A22-FBAD-11d1-82BF-00A0C9696C8F),
|
||||
helpstring("IAMVideoAccelerator Interface"),
|
||||
pointer_default(unique)
|
||||
]
|
||||
|
||||
// IAMVideoAccelerator
|
||||
interface IAMVideoAccelerator : IUnknown
|
||||
{
|
||||
// pdwNumGuidsSupported is an IN OUT paramter
|
||||
// pGuidsSupported is an IN OUT paramter
|
||||
// if pGuidsSupported is NULL, pdwNumGuidsSupported should return back with the
|
||||
// number of uncompressed pixel formats supported
|
||||
// Otherwise pGuidsSupported is an array of *pdwNumGuidsSupported structures
|
||||
HRESULT GetVideoAcceleratorGUIDs([in] [out] LPDWORD pdwNumGuidsSupported, [in] [out] LPGUID pGuidsSupported);
|
||||
|
||||
// pGuid is an IN parameter
|
||||
// pdwNumFormatsSupported is an IN OUT paramter
|
||||
// pFormatsSupported is an IN OUT paramter (caller should make sure to set the size of EACH struct)
|
||||
// if pFormatsSupported is NULL, pdwNumFormatsSupported should return back with
|
||||
// the number of uncompressed pixel formats supported
|
||||
// Otherwise pFormatsSupported is an array of *pdwNumFormatsSupported structures
|
||||
HRESULT GetUncompFormatsSupported( [in] const GUID *pGuid, [in] [out] LPDWORD pdwNumFormatsSupported,
|
||||
[in] [out] LPDDPIXELFORMAT pFormatsSupported);
|
||||
|
||||
// pGuid is an IN parameter
|
||||
// pamvaUncompDataInfo is an IN parameter
|
||||
// pamvaInternalMemInfo is an IN OUT parameter (caller should make sure to set the size of struct)
|
||||
// currently only gets info about how much scratch memory will the hal allocate for its private use
|
||||
HRESULT GetInternalMemInfo([in] const GUID *pGuid, [in] const AMVAUncompDataInfo *pamvaUncompDataInfo,
|
||||
[in] [out] LPAMVAInternalMemInfo pamvaInternalMemInfo);
|
||||
|
||||
// pGuid is an IN parameter
|
||||
// pamvaUncompDataInfo is an IN parameter
|
||||
// pdwNumTypesCompBuffers is an IN OUT paramter
|
||||
// pamvaCompBufferInfo is an IN OUT paramter (caller should make sure to set the size of EACH struct)
|
||||
// if pamvaCompBufferInfo is NULL, pdwNumTypesCompBuffers should return back with the number of types of
|
||||
// compressed buffers
|
||||
// Otherwise pamvaCompBufferInfo is an array of *pdwNumTypesCompBuffers structures
|
||||
HRESULT GetCompBufferInfo([in] const GUID *pGuid, [in] const AMVAUncompDataInfo *pamvaUncompDataInfo,
|
||||
[in] [out] LPDWORD pdwNumTypesCompBuffers, [out] LPAMVACompBufferInfo pamvaCompBufferInfo);
|
||||
|
||||
|
||||
// pdwNumTypesCompBuffers is an IN OUT paramter
|
||||
// pamvaCompBufferInfo is an IN OUT paramter (caller should make sure to set the size of EACH struct)
|
||||
// if pamvaCompBufferInfo is NULL, pdwNumTypesCompBuffers should return back with the number of types of
|
||||
// compressed buffers
|
||||
// Otherwise pamvaCompBufferInfo is an array of *pdwNumTypesCompBuffers structures
|
||||
// only valid to call this after the pins are connected
|
||||
HRESULT GetInternalCompBufferInfo([in] [out] LPDWORD pdwNumTypesCompBuffers, [out] LPAMVACompBufferInfo pamvaCompBufferInfo);
|
||||
|
||||
// begin a frame, the pMiscData is passed directly to the hal
|
||||
// only valid to call this after the pins are connected
|
||||
// Tells the ovmixer which frame is the destination
|
||||
// frame. Use indices (valid vales are [0 .. pdwNumSurfacesAllocated-1]) to specify frames
|
||||
HRESULT BeginFrame([in] const AMVABeginFrameInfo *amvaBeginFrameInfo);
|
||||
|
||||
// end a frame, the pMiscData is passed directly to the hal
|
||||
// only valid to call this after the pins are connected
|
||||
HRESULT EndFrame([in] const AMVAEndFrameInfo *pEndFrameInfo);
|
||||
|
||||
// lock and obtain access to a single buffer
|
||||
// only valid to call this after the pins are connected
|
||||
// Buffers are identified by type and index within that type
|
||||
// Specifiying read-only will allow access to busy reference
|
||||
// frames
|
||||
// Output (uncompressed) frames use a type index of 0xFFFFFFFF
|
||||
HRESULT GetBuffer(
|
||||
[in] DWORD dwTypeIndex,
|
||||
[in] DWORD dwBufferIndex,
|
||||
[in] BOOL bReadOnly,
|
||||
[out] LPVOID *ppBuffer,
|
||||
[out] LONG *lpStride);
|
||||
|
||||
// unlock a single buffer
|
||||
// Buffers are identified by type and index within that type
|
||||
// only valid to call this after the pins are connected
|
||||
HRESULT ReleaseBuffer([in] DWORD dwTypeIndex, [in] DWORD dwBufferIndex);
|
||||
|
||||
// Perform a decompression operation
|
||||
// Private data can be passed to and from a driver
|
||||
// identifiers for the corresponding members of pamvaMacroBlockInfo
|
||||
// pamvaMacroBlockInfo is an IN parameter which is array (of length dwNumBlocks) of structures
|
||||
// only valid to call this after the pins are connected
|
||||
HRESULT Execute(
|
||||
[in] DWORD dwFunction,
|
||||
[in] LPVOID lpPrivateInputData,
|
||||
[in] DWORD cbPrivateInputData,
|
||||
[in] LPVOID lpPrivateOutputDat,
|
||||
[in] DWORD cbPrivateOutputData,
|
||||
[in] DWORD dwNumBuffers,
|
||||
[in] const AMVABUFFERINFO *pamvaBufferInfo);
|
||||
|
||||
// query the decode status of a particular decompression operation
|
||||
// dwTypeIndex and dwBufferIndex define the buffer whose status is
|
||||
// being queried
|
||||
HRESULT QueryRenderStatus([in] DWORD dwTypeIndex,
|
||||
[in] DWORD dwBufferIndex,
|
||||
[in] DWORD dwFlags);
|
||||
|
||||
// display a frame. The mediasample contains the timestamps etc for the frame to be displayed
|
||||
// this call is a non-blocking call
|
||||
// only valid to call this after the pins are connected
|
||||
HRESULT DisplayFrame([in] DWORD dwFlipToIndex, [in] IMediaSample *pMediaSample);
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
18
game_re/third_party/mssdk/include/activecf.h
vendored
18
game_re/third_party/mssdk/include/activecf.h
vendored
@@ -1,18 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: ActiveCf.h
|
||||
//
|
||||
// Desc: Contains the data formats for the transfer of VfW4 filters via the
|
||||
// clipboard.
|
||||
//
|
||||
// Copyright (c) 1992 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#define CFSTR_VFW_FILTERLIST "Video for Windows 4 Filters"
|
||||
|
||||
typedef struct tagVFW_FILTERLIST{
|
||||
UINT cFilters; // number of CLSIDs in aClsId
|
||||
CLSID aClsId[1]; // ClsId of each filter
|
||||
} VFW_FILTERLIST;
|
||||
|
||||
|
||||
54
game_re/third_party/mssdk/include/amaudio.h
vendored
54
game_re/third_party/mssdk/include/amaudio.h
vendored
@@ -1,54 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: AMAudio.h
|
||||
//
|
||||
// Desc: Audio related definitions and interfaces for ActiveMovie.
|
||||
//
|
||||
// Copyright (c) 1992 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef __AMAUDIO__
|
||||
#define __AMAUDIO__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif // __cplusplus
|
||||
|
||||
#include <mmsystem.h>
|
||||
#include <dsound.h>
|
||||
|
||||
// This is the interface the audio renderer supports to give the application
|
||||
// access to the direct sound object and buffers it is using, to allow the
|
||||
// application to use things like the 3D features of Direct Sound for the
|
||||
// soundtrack of a movie being played with Active Movie
|
||||
|
||||
// be nice to our friends in C
|
||||
#undef INTERFACE
|
||||
#define INTERFACE IAMDirectSound
|
||||
|
||||
DECLARE_INTERFACE_(IAMDirectSound,IUnknown)
|
||||
{
|
||||
/* IUnknown methods */
|
||||
|
||||
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
|
||||
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
||||
|
||||
/* IAMDirectSound methods */
|
||||
|
||||
STDMETHOD(GetDirectSoundInterface)(THIS_ LPDIRECTSOUND *lplpds) PURE;
|
||||
STDMETHOD(GetPrimaryBufferInterface)(THIS_ LPDIRECTSOUNDBUFFER *lplpdsb) PURE;
|
||||
STDMETHOD(GetSecondaryBufferInterface)(THIS_ LPDIRECTSOUNDBUFFER *lplpdsb) PURE;
|
||||
STDMETHOD(ReleaseDirectSoundInterface)(THIS_ LPDIRECTSOUND lpds) PURE;
|
||||
STDMETHOD(ReleasePrimaryBufferInterface)(THIS_ LPDIRECTSOUNDBUFFER lpdsb) PURE;
|
||||
STDMETHOD(ReleaseSecondaryBufferInterface)(THIS_ LPDIRECTSOUNDBUFFER lpdsb) PURE;
|
||||
STDMETHOD(SetFocusWindow)(THIS_ HWND, BOOL) PURE ;
|
||||
STDMETHOD(GetFocusWindow)(THIS_ HWND *, BOOL*) PURE ;
|
||||
};
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif // __cplusplus
|
||||
#endif // __AMAUDIO__
|
||||
|
||||
38
game_re/third_party/mssdk/include/amparse.h
vendored
38
game_re/third_party/mssdk/include/amparse.h
vendored
@@ -1,38 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: AMParse.h
|
||||
//
|
||||
// Desc: Interface to the parser to get current time. This is useful for
|
||||
// multifile playback.
|
||||
//
|
||||
// Copyright (c) 1996 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef __AMPARSE__
|
||||
#define __AMPARSE__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif // __cplusplus
|
||||
|
||||
|
||||
DEFINE_GUID(IID_IAMParse,
|
||||
0xc47a3420, 0x005c, 0x11d2, 0x90, 0x38, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x98);
|
||||
|
||||
//
|
||||
// Parser interface - supported by MPEG-2 splitter filter
|
||||
//
|
||||
DECLARE_INTERFACE_(IAMParse, IUnknown) {
|
||||
STDMETHOD(GetParseTime) (THIS_
|
||||
REFERENCE_TIME *prtCurrent
|
||||
) PURE;
|
||||
STDMETHOD(SetParseTime) (THIS_
|
||||
REFERENCE_TIME rtCurrent
|
||||
) PURE;
|
||||
STDMETHOD(Flush) (THIS) PURE;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif // __cplusplus
|
||||
#endif // __AMPARSE__
|
||||
2295
game_re/third_party/mssdk/include/amstream.h
vendored
2295
game_re/third_party/mssdk/include/amstream.h
vendored
File diff suppressed because it is too large
Load Diff
85
game_re/third_party/mssdk/include/amva.h
vendored
85
game_re/third_party/mssdk/include/amva.h
vendored
@@ -1,85 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: AMVA.h
|
||||
//
|
||||
// Desc: DirectShowMotionComp include file.
|
||||
//
|
||||
// Copyright (c) 1997 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef __AMVA_INCLUDED__
|
||||
#define __AMVA_INCLUDED__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#define AMVA_TYPEINDEX_OUTPUTFRAME 0xFFFFFFFF
|
||||
|
||||
// Flags for QueryRenderStatus
|
||||
#define AMVA_QUERYRENDERSTATUSF_READ 0x00000001 // Query for read
|
||||
// set this bit to 0
|
||||
// if query for update
|
||||
|
||||
typedef struct _tag_AMVAUncompBufferInfo
|
||||
{
|
||||
DWORD dwMinNumSurfaces; // IN min number of surfaces to be allocated
|
||||
DWORD dwMaxNumSurfaces; // IN max number of surfaces to be allocated
|
||||
DDPIXELFORMAT ddUncompPixelFormat; // IN pixel format of surfaces to be allocated
|
||||
} AMVAUncompBufferInfo, *LPAMVAUncompBufferInfo;
|
||||
|
||||
typedef struct _tag_AMVAUncompDataInfo
|
||||
{
|
||||
DWORD dwUncompWidth; // [in] width of uncompressed data
|
||||
DWORD dwUncompHeight; // [in] height of uncompressed data
|
||||
DDPIXELFORMAT ddUncompPixelFormat; // [in] pixel-format of uncompressed data
|
||||
} AMVAUncompDataInfo, *LPAMVAUncompDataInfo;
|
||||
|
||||
typedef struct _tag_AMVAInternalMemInfo
|
||||
{
|
||||
DWORD dwScratchMemAlloc; // [out] amount of scratch memory will the hal allocate for its private use
|
||||
} AMVAInternalMemInfo, *LPAMVAInternalMemInfo;
|
||||
|
||||
|
||||
typedef struct _tag_AMVACompBufferInfo
|
||||
{
|
||||
DWORD dwNumCompBuffers; // [out] number of buffers reqd for compressed data
|
||||
DWORD dwWidthToCreate; // [out] Width of surface to create
|
||||
DWORD dwHeightToCreate; // [out] Height of surface to create
|
||||
DWORD dwBytesToAllocate; // [out] Total number of bytes used by each surface
|
||||
DDSCAPS2 ddCompCaps; // [out] caps to create surfaces to store compressed data
|
||||
DDPIXELFORMAT ddPixelFormat; // [out] fourcc to create surfaces to store compressed data
|
||||
} AMVACompBufferInfo, *LPAMVACompBufferInfo;
|
||||
|
||||
|
||||
// Note that you are NOT allowed to store any pointer in pMiscData
|
||||
typedef struct _tag_AMVABeginFrameInfo
|
||||
{
|
||||
DWORD dwDestSurfaceIndex; // IN destination buffer in which to decoding this frame
|
||||
LPVOID pInputData; // IN pointer to misc data
|
||||
DWORD dwSizeInputData; // IN size of other misc data to begin frame
|
||||
LPVOID pOutputData; // OUT pointer to data which the VGA is going to fill
|
||||
DWORD dwSizeOutputData; // IN size of data which the VGA is going to fill
|
||||
} AMVABeginFrameInfo, *LPAMVABeginFrameInfo;
|
||||
|
||||
// Note that you are NOT allowed to store any pointer in pMiscData
|
||||
typedef struct _tag_AMVAEndFrameInfo
|
||||
{
|
||||
DWORD dwSizeMiscData; // [in] size of other misc data to begin frame
|
||||
LPVOID pMiscData; // [in] pointer to misc data
|
||||
} AMVAEndFrameInfo, *LPAMVAEndFrameInfo;
|
||||
|
||||
typedef struct _tag_AMVABUFFERINFO
|
||||
{
|
||||
DWORD dwTypeIndex; // [in] Type of buffer
|
||||
DWORD dwBufferIndex; // [in] Buffer index
|
||||
DWORD dwDataOffset; // [in] offset of relevant data from the beginning of buffer
|
||||
DWORD dwDataSize; // [in] size of relevant data
|
||||
} AMVABUFFERINFO, *LPAMVABUFFERINFO;
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif // _AMVA_INCLUDED
|
||||
433
game_re/third_party/mssdk/include/amvideo.h
vendored
433
game_re/third_party/mssdk/include/amvideo.h
vendored
@@ -1,433 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: AMVideo.h
|
||||
//
|
||||
// Desc: Video related definitions and interfaces for ActiveMovie.
|
||||
//
|
||||
// Copyright (c) 1992 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef __AMVIDEO__
|
||||
#define __AMVIDEO__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif // __cplusplus
|
||||
|
||||
#include <ddraw.h>
|
||||
|
||||
|
||||
// This is an interface on the video renderer that provides information about
|
||||
// DirectDraw with respect to its use by the renderer. For example it allows
|
||||
// an application to get details of the surface and any hardware capabilities
|
||||
// that are available. It also allows someone to adjust the surfaces that the
|
||||
// renderer should use and furthermore even set the DirectDraw instance. We
|
||||
// allow someone to set the DirectDraw instance because DirectDraw can only
|
||||
// be opened once per process so it helps resolve conflicts. There is some
|
||||
// duplication in this interface as the hardware/emulated/FOURCCs available
|
||||
// can all be found through the IDirectDraw interface, this interface allows
|
||||
// simple access to that information without calling the DirectDraw provider
|
||||
// itself. The AMDDS prefix is ActiveMovie DirectDraw Switches abbreviated.
|
||||
|
||||
#define AMDDS_NONE 0x00 // No use for DCI/DirectDraw
|
||||
#define AMDDS_DCIPS 0x01 // Use DCI primary surface
|
||||
#define AMDDS_PS 0x02 // Use DirectDraw primary
|
||||
#define AMDDS_RGBOVR 0x04 // RGB overlay surfaces
|
||||
#define AMDDS_YUVOVR 0x08 // YUV overlay surfaces
|
||||
#define AMDDS_RGBOFF 0x10 // RGB offscreen surfaces
|
||||
#define AMDDS_YUVOFF 0x20 // YUV offscreen surfaces
|
||||
#define AMDDS_RGBFLP 0x40 // RGB flipping surfaces
|
||||
#define AMDDS_YUVFLP 0x80 // YUV flipping surfaces
|
||||
#define AMDDS_ALL 0xFF // ALL the previous flags
|
||||
#define AMDDS_DEFAULT AMDDS_ALL // Use all available surfaces
|
||||
|
||||
#define AMDDS_YUV (AMDDS_YUVOFF | AMDDS_YUVOVR | AMDDS_YUVFLP)
|
||||
#define AMDDS_RGB (AMDDS_RGBOFF | AMDDS_RGBOVR | AMDDS_RGBFLP)
|
||||
#define AMDDS_PRIMARY (AMDDS_DCIPS | AMDDS_PS)
|
||||
|
||||
// be nice to our friends in C
|
||||
#undef INTERFACE
|
||||
#define INTERFACE IDirectDrawVideo
|
||||
|
||||
DECLARE_INTERFACE_(IDirectDrawVideo, IUnknown)
|
||||
{
|
||||
// IUnknown methods
|
||||
|
||||
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
|
||||
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
||||
|
||||
// IDirectDrawVideo methods
|
||||
|
||||
STDMETHOD(GetSwitches)(THIS_ DWORD *pSwitches) PURE;
|
||||
STDMETHOD(SetSwitches)(THIS_ DWORD Switches) PURE;
|
||||
STDMETHOD(GetCaps)(THIS_ DDCAPS *pCaps) PURE;
|
||||
STDMETHOD(GetEmulatedCaps)(THIS_ DDCAPS *pCaps) PURE;
|
||||
STDMETHOD(GetSurfaceDesc)(THIS_ DDSURFACEDESC *pSurfaceDesc) PURE;
|
||||
STDMETHOD(GetFourCCCodes)(THIS_ DWORD *pCount,DWORD *pCodes) PURE;
|
||||
STDMETHOD(SetDirectDraw)(THIS_ LPDIRECTDRAW pDirectDraw) PURE;
|
||||
STDMETHOD(GetDirectDraw)(THIS_ LPDIRECTDRAW *ppDirectDraw) PURE;
|
||||
STDMETHOD(GetSurfaceType)(THIS_ DWORD *pSurfaceType) PURE;
|
||||
STDMETHOD(SetDefault)(THIS) PURE;
|
||||
STDMETHOD(UseScanLine)(THIS_ long UseScanLine) PURE;
|
||||
STDMETHOD(CanUseScanLine)(THIS_ long *UseScanLine) PURE;
|
||||
STDMETHOD(UseOverlayStretch)(THIS_ long UseOverlayStretch) PURE;
|
||||
STDMETHOD(CanUseOverlayStretch)(THIS_ long *UseOverlayStretch) PURE;
|
||||
STDMETHOD(UseWhenFullScreen)(THIS_ long UseWhenFullScreen) PURE;
|
||||
STDMETHOD(WillUseFullScreen)(THIS_ long *UseWhenFullScreen) PURE;
|
||||
};
|
||||
|
||||
|
||||
// be nice to our friends in C
|
||||
#undef INTERFACE
|
||||
#define INTERFACE IQualProp
|
||||
|
||||
DECLARE_INTERFACE_(IQualProp, IUnknown)
|
||||
{
|
||||
// IUnknown methods
|
||||
|
||||
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
|
||||
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
||||
|
||||
// Compare these with the functions in class CGargle in gargle.h
|
||||
|
||||
STDMETHOD(get_FramesDroppedInRenderer)(THIS_ int *pcFrames) PURE; // Out
|
||||
STDMETHOD(get_FramesDrawn)(THIS_ int *pcFramesDrawn) PURE; // Out
|
||||
STDMETHOD(get_AvgFrameRate)(THIS_ int *piAvgFrameRate) PURE; // Out
|
||||
STDMETHOD(get_Jitter)(THIS_ int *iJitter) PURE; // Out
|
||||
STDMETHOD(get_AvgSyncOffset)(THIS_ int *piAvg) PURE; // Out
|
||||
STDMETHOD(get_DevSyncOffset)(THIS_ int *piDev) PURE; // Out
|
||||
};
|
||||
|
||||
|
||||
// This interface allows an application or plug in distributor to control a
|
||||
// full screen renderer. The Modex renderer supports this interface. When
|
||||
// connected a renderer should load the display modes it has available
|
||||
// The number of modes available can be obtained through CountModes. Then
|
||||
// information on each individual mode is available by calling GetModeInfo
|
||||
// and IsModeAvailable. An application may enable and disable any modes
|
||||
// by calling the SetEnabled flag with OATRUE or OAFALSE (not C/C++ TRUE
|
||||
// and FALSE values) - the current value may be queried by IsModeEnabled
|
||||
|
||||
// A more generic way of setting the modes enabled that is easier to use
|
||||
// when writing applications is the clip loss factor. This defines the
|
||||
// amount of video that can be lost when deciding which display mode to
|
||||
// use. Assuming the decoder cannot compress the video then playing an
|
||||
// MPEG file (say 352x288) into a 320x200 display will lose about 25% of
|
||||
// the image. The clip loss factor specifies the upper range permissible.
|
||||
// To allow typical MPEG video to be played in 320x200 it defaults to 25%
|
||||
|
||||
// be nice to our friends in C
|
||||
#undef INTERFACE
|
||||
#define INTERFACE IFullScreenVideo
|
||||
|
||||
DECLARE_INTERFACE_(IFullScreenVideo, IUnknown)
|
||||
{
|
||||
// IUnknown methods
|
||||
|
||||
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
|
||||
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
||||
|
||||
// IFullScreenVideo methods
|
||||
|
||||
STDMETHOD(CountModes)(THIS_ long *pModes) PURE;
|
||||
STDMETHOD(GetModeInfo)(THIS_ long Mode,long *pWidth,long *pHeight,long *pDepth) PURE;
|
||||
STDMETHOD(GetCurrentMode)(THIS_ long *pMode) PURE;
|
||||
STDMETHOD(IsModeAvailable)(THIS_ long Mode) PURE;
|
||||
STDMETHOD(IsModeEnabled)(THIS_ long Mode) PURE;
|
||||
STDMETHOD(SetEnabled)(THIS_ long Mode,long bEnabled) PURE;
|
||||
STDMETHOD(GetClipFactor)(THIS_ long *pClipFactor) PURE;
|
||||
STDMETHOD(SetClipFactor)(THIS_ long ClipFactor) PURE;
|
||||
STDMETHOD(SetMessageDrain)(THIS_ HWND hwnd) PURE;
|
||||
STDMETHOD(GetMessageDrain)(THIS_ HWND *hwnd) PURE;
|
||||
STDMETHOD(SetMonitor)(THIS_ long Monitor) PURE;
|
||||
STDMETHOD(GetMonitor)(THIS_ long *Monitor) PURE;
|
||||
STDMETHOD(HideOnDeactivate)(THIS_ long Hide) PURE;
|
||||
STDMETHOD(IsHideOnDeactivate)(THIS) PURE;
|
||||
STDMETHOD(SetCaption)(THIS_ BSTR strCaption) PURE;
|
||||
STDMETHOD(GetCaption)(THIS_ BSTR *pstrCaption) PURE;
|
||||
STDMETHOD(SetDefault)(THIS) PURE;
|
||||
};
|
||||
|
||||
|
||||
// This adds the accelerator table capabilities in fullscreen. This is being
|
||||
// added between the original runtime release and the full SDK release. We
|
||||
// cannot just add the method to IFullScreenVideo as we don't want to force
|
||||
// applications to have to ship the ActiveMovie support DLLs - this is very
|
||||
// important to applications that plan on being downloaded over the Internet
|
||||
|
||||
// be nice to our friends in C
|
||||
#undef INTERFACE
|
||||
#define INTERFACE IFullScreenVideoEx
|
||||
|
||||
DECLARE_INTERFACE_(IFullScreenVideoEx, IFullScreenVideo)
|
||||
{
|
||||
// IUnknown methods
|
||||
|
||||
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
|
||||
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
||||
|
||||
// IFullScreenVideo methods
|
||||
|
||||
STDMETHOD(CountModes)(THIS_ long *pModes) PURE;
|
||||
STDMETHOD(GetModeInfo)(THIS_ long Mode,long *pWidth,long *pHeight,long *pDepth) PURE;
|
||||
STDMETHOD(GetCurrentMode)(THIS_ long *pMode) PURE;
|
||||
STDMETHOD(IsModeAvailable)(THIS_ long Mode) PURE;
|
||||
STDMETHOD(IsModeEnabled)(THIS_ long Mode) PURE;
|
||||
STDMETHOD(SetEnabled)(THIS_ long Mode,long bEnabled) PURE;
|
||||
STDMETHOD(GetClipFactor)(THIS_ long *pClipFactor) PURE;
|
||||
STDMETHOD(SetClipFactor)(THIS_ long ClipFactor) PURE;
|
||||
STDMETHOD(SetMessageDrain)(THIS_ HWND hwnd) PURE;
|
||||
STDMETHOD(GetMessageDrain)(THIS_ HWND *hwnd) PURE;
|
||||
STDMETHOD(SetMonitor)(THIS_ long Monitor) PURE;
|
||||
STDMETHOD(GetMonitor)(THIS_ long *Monitor) PURE;
|
||||
STDMETHOD(HideOnDeactivate)(THIS_ long Hide) PURE;
|
||||
STDMETHOD(IsHideOnDeactivate)(THIS) PURE;
|
||||
STDMETHOD(SetCaption)(THIS_ BSTR strCaption) PURE;
|
||||
STDMETHOD(GetCaption)(THIS_ BSTR *pstrCaption) PURE;
|
||||
STDMETHOD(SetDefault)(THIS) PURE;
|
||||
|
||||
// IFullScreenVideoEx
|
||||
|
||||
STDMETHOD(SetAcceleratorTable)(THIS_ HWND hwnd,HACCEL hAccel) PURE;
|
||||
STDMETHOD(GetAcceleratorTable)(THIS_ HWND *phwnd,HACCEL *phAccel) PURE;
|
||||
STDMETHOD(KeepPixelAspectRatio)(THIS_ long KeepAspect) PURE;
|
||||
STDMETHOD(IsKeepPixelAspectRatio)(THIS_ long *pKeepAspect) PURE;
|
||||
};
|
||||
|
||||
|
||||
// The SDK base classes contain a base video mixer class. Video mixing in a
|
||||
// software environment is tricky because we typically have multiple streams
|
||||
// each sending data at unpredictable times. To work with this we defined a
|
||||
// pin that is the lead pin, when data arrives on this pin we do a mix. As
|
||||
// an alternative we may not want to have a lead pin but output samples at
|
||||
// predefined spaces, like one every 1/15 of a second, this interfaces also
|
||||
// supports that mode of operations (there is a working video mixer sample)
|
||||
|
||||
// be nice to our friends in C
|
||||
#undef INTERFACE
|
||||
#define INTERFACE IBaseVideoMixer
|
||||
|
||||
DECLARE_INTERFACE_(IBaseVideoMixer, IUnknown)
|
||||
{
|
||||
STDMETHOD(SetLeadPin)(THIS_ int iPin) PURE;
|
||||
STDMETHOD(GetLeadPin)(THIS_ int *piPin) PURE;
|
||||
STDMETHOD(GetInputPinCount)(THIS_ int *piPinCount) PURE;
|
||||
STDMETHOD(IsUsingClock)(THIS_ int *pbValue) PURE;
|
||||
STDMETHOD(SetUsingClock)(THIS_ int bValue) PURE;
|
||||
STDMETHOD(GetClockPeriod)(THIS_ int *pbValue) PURE;
|
||||
STDMETHOD(SetClockPeriod)(THIS_ int bValue) PURE;
|
||||
};
|
||||
|
||||
#define iPALETTE_COLORS 256 // Maximum colours in palette
|
||||
#define iEGA_COLORS 16 // Number colours in EGA palette
|
||||
#define iMASK_COLORS 3 // Maximum three components
|
||||
#define iTRUECOLOR 16 // Minimum true colour device
|
||||
#define iRED 0 // Index position for RED mask
|
||||
#define iGREEN 1 // Index position for GREEN mask
|
||||
#define iBLUE 2 // Index position for BLUE mask
|
||||
#define iPALETTE 8 // Maximum colour depth using a palette
|
||||
#define iMAXBITS 8 // Maximum bits per colour component
|
||||
|
||||
|
||||
// Used for true colour images that also have a palette
|
||||
|
||||
typedef struct tag_TRUECOLORINFO {
|
||||
DWORD dwBitMasks[iMASK_COLORS];
|
||||
RGBQUAD bmiColors[iPALETTE_COLORS];
|
||||
} TRUECOLORINFO;
|
||||
|
||||
|
||||
// The BITMAPINFOHEADER contains all the details about the video stream such
|
||||
// as the actual image dimensions and their pixel depth. A source filter may
|
||||
// also request that the sink take only a section of the video by providing a
|
||||
// clipping rectangle in rcSource. In the worst case where the sink filter
|
||||
// forgets to check this on connection it will simply render the whole thing
|
||||
// which isn't a disaster. Ideally a sink filter will check the rcSource and
|
||||
// if it doesn't support image extraction and the rectangle is not empty then
|
||||
// it will reject the connection. A filter should use SetRectEmpty to reset a
|
||||
// rectangle to all zeroes (and IsRectEmpty to later check the rectangle).
|
||||
// The rcTarget specifies the destination rectangle for the video, for most
|
||||
// source filters they will set this to all zeroes, a downstream filter may
|
||||
// request that the video be placed in a particular area of the buffers it
|
||||
// supplies in which case it will call QueryAccept with a non empty target
|
||||
|
||||
typedef struct tagVIDEOINFOHEADER {
|
||||
|
||||
RECT rcSource; // The bit we really want to use
|
||||
RECT rcTarget; // Where the video should go
|
||||
DWORD dwBitRate; // Approximate bit data rate
|
||||
DWORD dwBitErrorRate; // Bit error rate for this stream
|
||||
REFERENCE_TIME AvgTimePerFrame; // Average time per frame (100ns units)
|
||||
|
||||
BITMAPINFOHEADER bmiHeader;
|
||||
|
||||
} VIDEOINFOHEADER;
|
||||
|
||||
// make sure the pbmi is initialized before using these macros
|
||||
#define TRUECOLOR(pbmi) ((TRUECOLORINFO *)(((LPBYTE)&((pbmi)->bmiHeader)) \
|
||||
+ (pbmi)->bmiHeader.biSize))
|
||||
#define COLORS(pbmi) ((RGBQUAD *)(((LPBYTE)&((pbmi)->bmiHeader)) \
|
||||
+ (pbmi)->bmiHeader.biSize))
|
||||
#define BITMASKS(pbmi) ((DWORD *)(((LPBYTE)&((pbmi)->bmiHeader)) \
|
||||
+ (pbmi)->bmiHeader.biSize))
|
||||
|
||||
// All the image based filters use this to communicate their media types. It's
|
||||
// centred principally around the BITMAPINFO. This structure always contains a
|
||||
// BITMAPINFOHEADER followed by a number of other fields depending on what the
|
||||
// BITMAPINFOHEADER contains. If it contains details of a palettised format it
|
||||
// will be followed by one or more RGBQUADs defining the palette. If it holds
|
||||
// details of a true colour format then it may be followed by a set of three
|
||||
// DWORD bit masks that specify where the RGB data can be found in the image
|
||||
// (For more information regarding BITMAPINFOs see the Win32 documentation)
|
||||
|
||||
// The rcSource and rcTarget fields are not for use by filters supplying the
|
||||
// data. The destination (target) rectangle should be set to all zeroes. The
|
||||
// source may also be zero filled or set with the dimensions of the video. So
|
||||
// if the video is 352x288 pixels then set it to (0,0,352,288). These fields
|
||||
// are mainly used by downstream filters that want to ask the source filter
|
||||
// to place the image in a different position in an output buffer. So when
|
||||
// using for example the primary surface the video renderer may ask a filter
|
||||
// to place the video images in a destination position of (100,100,452,388)
|
||||
// on the display since that's where the window is positioned on the display
|
||||
|
||||
// !!! WARNING !!!
|
||||
// DO NOT use this structure unless you are sure that the BITMAPINFOHEADER
|
||||
// has a normal biSize == sizeof(BITMAPINFOHEADER) !
|
||||
// !!! WARNING !!!
|
||||
|
||||
typedef struct tagVIDEOINFO {
|
||||
|
||||
RECT rcSource; // The bit we really want to use
|
||||
RECT rcTarget; // Where the video should go
|
||||
DWORD dwBitRate; // Approximate bit data rate
|
||||
DWORD dwBitErrorRate; // Bit error rate for this stream
|
||||
REFERENCE_TIME AvgTimePerFrame; // Average time per frame (100ns units)
|
||||
|
||||
BITMAPINFOHEADER bmiHeader;
|
||||
|
||||
union {
|
||||
RGBQUAD bmiColors[iPALETTE_COLORS]; // Colour palette
|
||||
DWORD dwBitMasks[iMASK_COLORS]; // True colour masks
|
||||
TRUECOLORINFO TrueColorInfo; // Both of the above
|
||||
};
|
||||
|
||||
} VIDEOINFO;
|
||||
|
||||
// These macros define some standard bitmap format sizes
|
||||
|
||||
#define SIZE_EGA_PALETTE (iEGA_COLORS * sizeof(RGBQUAD))
|
||||
#define SIZE_PALETTE (iPALETTE_COLORS * sizeof(RGBQUAD))
|
||||
#define SIZE_MASKS (iMASK_COLORS * sizeof(DWORD))
|
||||
#define SIZE_PREHEADER (FIELD_OFFSET(VIDEOINFOHEADER,bmiHeader))
|
||||
#define SIZE_VIDEOHEADER (sizeof(BITMAPINFOHEADER) + SIZE_PREHEADER)
|
||||
// !!! for abnormal biSizes
|
||||
// #define SIZE_VIDEOHEADER(pbmi) ((pbmi)->bmiHeader.biSize + SIZE_PREHEADER)
|
||||
|
||||
// DIBSIZE calculates the number of bytes required by an image
|
||||
|
||||
#define WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8)
|
||||
#define DIBWIDTHBYTES(bi) (DWORD)WIDTHBYTES((DWORD)(bi).biWidth * (DWORD)(bi).biBitCount)
|
||||
#define _DIBSIZE(bi) (DIBWIDTHBYTES(bi) * (DWORD)(bi).biHeight)
|
||||
#define DIBSIZE(bi) ((bi).biHeight < 0 ? (-1)*(_DIBSIZE(bi)) : _DIBSIZE(bi))
|
||||
|
||||
// This compares the bit masks between two VIDEOINFOHEADERs
|
||||
|
||||
#define BIT_MASKS_MATCH(pbmi1,pbmi2) \
|
||||
(((pbmi1)->dwBitMasks[iRED] == (pbmi2)->dwBitMasks[iRED]) && \
|
||||
((pbmi1)->dwBitMasks[iGREEN] == (pbmi2)->dwBitMasks[iGREEN]) && \
|
||||
((pbmi1)->dwBitMasks[iBLUE] == (pbmi2)->dwBitMasks[iBLUE]))
|
||||
|
||||
// These zero fill different parts of the VIDEOINFOHEADER structure
|
||||
|
||||
// Only use these macros for pbmi's with a normal BITMAPINFOHEADER biSize
|
||||
#define RESET_MASKS(pbmi) (ZeroMemory((PVOID)(pbmi)->dwBitFields,SIZE_MASKS))
|
||||
#define RESET_HEADER(pbmi) (ZeroMemory((PVOID)(pbmi),SIZE_VIDEOHEADER))
|
||||
#define RESET_PALETTE(pbmi) (ZeroMemory((PVOID)(pbmi)->bmiColors,SIZE_PALETTE));
|
||||
|
||||
#if 0
|
||||
// !!! This is the right way to do it, but may break existing code
|
||||
#define RESET_MASKS(pbmi) (ZeroMemory((PVOID)(((LPBYTE)(pbmi)->bmiHeader) + \
|
||||
(pbmi)->bmiHeader.biSize,SIZE_MASKS)))
|
||||
#define RESET_HEADER(pbmi) (ZeroMemory((PVOID)(pbmi), SIZE_PREHEADER + \
|
||||
sizeof(BITMAPINFOHEADER)))
|
||||
#define RESET_PALETTE(pbmi) (ZeroMemory((PVOID)(((LPBYTE)(pbmi)->bmiHeader) + \
|
||||
(pbmi)->bmiHeader.biSize,SIZE_PALETTE))
|
||||
#endif
|
||||
|
||||
// Other (hopefully) useful bits and bobs
|
||||
|
||||
#define PALETTISED(pbmi) ((pbmi)->bmiHeader.biBitCount <= iPALETTE)
|
||||
#define PALETTE_ENTRIES(pbmi) ((DWORD) 1 << (pbmi)->bmiHeader.biBitCount)
|
||||
|
||||
// Returns the address of the BITMAPINFOHEADER from the VIDEOINFOHEADER
|
||||
#define HEADER(pVideoInfo) (&(((VIDEOINFOHEADER *) (pVideoInfo))->bmiHeader))
|
||||
|
||||
|
||||
// MPEG variant - includes a DWORD length followed by the
|
||||
// video sequence header after the video header.
|
||||
//
|
||||
// The sequence header includes the sequence header start code and the
|
||||
// quantization matrices associated with the first sequence header in the
|
||||
// stream so is a maximum of 140 bytes long.
|
||||
|
||||
typedef struct tagMPEG1VIDEOINFO {
|
||||
|
||||
VIDEOINFOHEADER hdr; // Compatible with VIDEOINFO
|
||||
DWORD dwStartTimeCode; // 25-bit Group of pictures time code
|
||||
// at start of data
|
||||
DWORD cbSequenceHeader; // Length in bytes of bSequenceHeader
|
||||
BYTE bSequenceHeader[1]; // Sequence header including
|
||||
// quantization matrices if any
|
||||
} MPEG1VIDEOINFO;
|
||||
|
||||
#define MAX_SIZE_MPEG1_SEQUENCE_INFO 140
|
||||
#define SIZE_MPEG1VIDEOINFO(pv) (FIELD_OFFSET(MPEG1VIDEOINFO, bSequenceHeader[0]) + (pv)->cbSequenceHeader)
|
||||
#define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)
|
||||
|
||||
|
||||
// Analog video variant - Use this when the format is FORMAT_AnalogVideo
|
||||
//
|
||||
// rcSource defines the portion of the active video signal to use
|
||||
// rcTarget defines the destination rectangle
|
||||
// both of the above are relative to the dwActiveWidth and dwActiveHeight fields
|
||||
// dwActiveWidth is currently set to 720 for all formats (but could change for HDTV)
|
||||
// dwActiveHeight is 483 for NTSC and 575 for PAL/SECAM (but could change for HDTV)
|
||||
|
||||
typedef struct tagAnalogVideoInfo {
|
||||
RECT rcSource; // Width max is 720, height varies w/ TransmissionStd
|
||||
RECT rcTarget; // Where the video should go
|
||||
DWORD dwActiveWidth; // Always 720 (CCIR-601 active samples per line)
|
||||
DWORD dwActiveHeight; // 483 for NTSC, 575 for PAL/SECAM
|
||||
REFERENCE_TIME AvgTimePerFrame; // Normal ActiveMovie units (100 nS)
|
||||
} ANALOGVIDEOINFO;
|
||||
|
||||
//
|
||||
// AM_KSPROPSETID_FrameStep property set definitions
|
||||
//
|
||||
typedef enum {
|
||||
// Step
|
||||
AM_PROPERTY_FRAMESTEP_STEP = 0x01,
|
||||
AM_PROPERTY_FRAMESTEP_CANCEL = 0x02,
|
||||
|
||||
// S_OK for these 2 means we can - S_FALSE if we can't
|
||||
AM_PROPERTY_FRAMESTEP_CANSTEP = 0x03,
|
||||
AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 0x04
|
||||
} AM_PROPERTY_FRAMESTEP;
|
||||
|
||||
typedef struct _AM_FRAMESTEP_STEP
|
||||
{
|
||||
// 1 means step 1 frame forward
|
||||
// 0 is invalid
|
||||
// n (n > 1) means skip n - 1 frames and show the nth
|
||||
DWORD dwFramesToStep;
|
||||
} AM_FRAMESTEP_STEP;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif // __cplusplus
|
||||
#endif // __AMVIDEO__
|
||||
|
||||
34
game_re/third_party/mssdk/include/atsmedia.h
vendored
34
game_re/third_party/mssdk/include/atsmedia.h
vendored
@@ -1,34 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: ATSMedia.h
|
||||
//
|
||||
// Desc: Broadcast Driver Architecture Media Definitions for ATSC
|
||||
//
|
||||
// Copyright (c) 1996 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#if !defined(_KSMEDIA_)
|
||||
#error KSMEDIA.H must be included before BDAMEDIA.H
|
||||
#endif // !defined(_KSMEDIA_)
|
||||
|
||||
#if !defined(_BDAMEDIA_)
|
||||
#error BDAMEDIA.H must be included before ATSCMEDIA.H
|
||||
#endif // !defined(_KSMEDIA_)
|
||||
|
||||
#if !defined(_ATSCMEDIA_)
|
||||
#define _ATSCMEDIA_
|
||||
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
// ATSC Network Type
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
#define STATIC_BDANETWORKTYPE_ATSC\
|
||||
0x71985f51, 0x1ca1, 0x11d3, 0x9c, 0xc8, 0x0, 0xc0, 0x4f, 0x79, 0x71, 0xe0
|
||||
DEFINE_GUIDSTRUCT("71985F51-1CA1-11d3-9CC8-00C04F7971E0", BDANETWORKTYPE_ATSC);
|
||||
#define BDANETWORKTYPE_ATSC DEFINE_GUIDNAMED(BDANETWORKTYPE_ATSC)
|
||||
|
||||
|
||||
#endif // _ATSCMEDIA_
|
||||
53
game_re/third_party/mssdk/include/audevcod.h
vendored
53
game_re/third_party/mssdk/include/audevcod.h
vendored
@@ -1,53 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: AudEvCod.h
|
||||
//
|
||||
// Desc: List of Audio device error event codes and the expected params.
|
||||
//
|
||||
// Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
#ifndef __AUDEVCOD__
|
||||
#define __AUDEVCOD__
|
||||
|
||||
|
||||
#define EC_SND_DEVICE_ERROR_BASE 0x0200
|
||||
|
||||
typedef enum _tagSND_DEVICE_ERROR {
|
||||
|
||||
SNDDEV_ERROR_Open=1,
|
||||
SNDDEV_ERROR_Close=2,
|
||||
SNDDEV_ERROR_GetCaps=3,
|
||||
SNDDEV_ERROR_PrepareHeader=4,
|
||||
SNDDEV_ERROR_UnprepareHeader=5,
|
||||
SNDDEV_ERROR_Reset=6,
|
||||
SNDDEV_ERROR_Restart=7,
|
||||
SNDDEV_ERROR_GetPosition=8,
|
||||
SNDDEV_ERROR_Write=9,
|
||||
SNDDEV_ERROR_Pause=10,
|
||||
SNDDEV_ERROR_Stop=11,
|
||||
SNDDEV_ERROR_Start=12,
|
||||
SNDDEV_ERROR_AddBuffer=13,
|
||||
SNDDEV_ERROR_Query=14,
|
||||
|
||||
} SNDDEV_ERR;
|
||||
|
||||
|
||||
// Sound device error event codes
|
||||
// ==============================
|
||||
//
|
||||
// All audio device error events are always passed on to the application, and are
|
||||
// never processed by the filter graph
|
||||
|
||||
|
||||
#define EC_SNDDEV_IN_ERROR (EC_SND_DEVICE_ERROR_BASE + 0x00)
|
||||
#define EC_SNDDEV_OUT_ERROR (EC_SND_DEVICE_ERROR_BASE + 0x01)
|
||||
// Parameters: ( DWORD, DWORD)
|
||||
// lParam1 is an enum SND_DEVICE_ERROR which notifies the app how the device was
|
||||
// being accessed when the failure occurred.
|
||||
//
|
||||
// lParam2 is the error returned from the sound device call.
|
||||
//
|
||||
|
||||
#endif // __AUDEVCOD__
|
||||
715
game_re/third_party/mssdk/include/austream.h
vendored
715
game_re/third_party/mssdk/include/austream.h
vendored
@@ -1,715 +0,0 @@
|
||||
|
||||
#pragma warning( disable: 4049 ) /* more than 64k source lines */
|
||||
|
||||
/* this ALWAYS GENERATED file contains the definitions for the interfaces */
|
||||
|
||||
|
||||
/* File created by MIDL compiler version 6.00.0338 */
|
||||
/* Compiler settings for austream.idl:
|
||||
Oicf, W1, Zp8, env=Win32 (32b run)
|
||||
protocol : dce , ms_ext, c_ext
|
||||
error checks: allocation ref bounds_check enum stub_data
|
||||
VC __declspec() decoration level:
|
||||
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
|
||||
DECLSPEC_UUID(), MIDL_INTERFACE()
|
||||
*/
|
||||
//@@MIDL_FILE_HEADING( )
|
||||
|
||||
|
||||
/* verify that the <rpcndr.h> version is high enough to compile this file*/
|
||||
#ifndef __REQUIRED_RPCNDR_H_VERSION__
|
||||
#define __REQUIRED_RPCNDR_H_VERSION__ 440
|
||||
#endif
|
||||
|
||||
#include "rpc.h"
|
||||
#include "rpcndr.h"
|
||||
|
||||
#ifndef __RPCNDR_H_VERSION__
|
||||
#error this stub requires an updated version of <rpcndr.h>
|
||||
#endif // __RPCNDR_H_VERSION__
|
||||
|
||||
#ifndef COM_NO_WINDOWS_H
|
||||
#include "windows.h"
|
||||
#include "ole2.h"
|
||||
#endif /*COM_NO_WINDOWS_H*/
|
||||
|
||||
#ifndef __austream_h__
|
||||
#define __austream_h__
|
||||
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
/* Forward Declarations */
|
||||
|
||||
#ifndef __IAudioMediaStream_FWD_DEFINED__
|
||||
#define __IAudioMediaStream_FWD_DEFINED__
|
||||
typedef interface IAudioMediaStream IAudioMediaStream;
|
||||
#endif /* __IAudioMediaStream_FWD_DEFINED__ */
|
||||
|
||||
|
||||
#ifndef __IAudioStreamSample_FWD_DEFINED__
|
||||
#define __IAudioStreamSample_FWD_DEFINED__
|
||||
typedef interface IAudioStreamSample IAudioStreamSample;
|
||||
#endif /* __IAudioStreamSample_FWD_DEFINED__ */
|
||||
|
||||
|
||||
#ifndef __IMemoryData_FWD_DEFINED__
|
||||
#define __IMemoryData_FWD_DEFINED__
|
||||
typedef interface IMemoryData IMemoryData;
|
||||
#endif /* __IMemoryData_FWD_DEFINED__ */
|
||||
|
||||
|
||||
#ifndef __IAudioData_FWD_DEFINED__
|
||||
#define __IAudioData_FWD_DEFINED__
|
||||
typedef interface IAudioData IAudioData;
|
||||
#endif /* __IAudioData_FWD_DEFINED__ */
|
||||
|
||||
|
||||
/* header files for imported files */
|
||||
#include "unknwn.h"
|
||||
#include "mmstream.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"{
|
||||
#endif
|
||||
|
||||
void * __RPC_USER MIDL_user_allocate(size_t);
|
||||
void __RPC_USER MIDL_user_free( void * );
|
||||
|
||||
/* interface __MIDL_itf_austream_0000 */
|
||||
/* [local] */
|
||||
|
||||
//
|
||||
// The following declarations within the 'if 0' block are dummy typedefs used to make
|
||||
// the ddstream.idl file build. The actual definitions are contained in DDRAW.H
|
||||
//
|
||||
#if 0
|
||||
typedef struct tWAVEFORMATEX WAVEFORMATEX;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern RPC_IF_HANDLE __MIDL_itf_austream_0000_v0_0_c_ifspec;
|
||||
extern RPC_IF_HANDLE __MIDL_itf_austream_0000_v0_0_s_ifspec;
|
||||
|
||||
#ifndef __IAudioMediaStream_INTERFACE_DEFINED__
|
||||
#define __IAudioMediaStream_INTERFACE_DEFINED__
|
||||
|
||||
/* interface IAudioMediaStream */
|
||||
/* [unique][uuid][local][object] */
|
||||
|
||||
|
||||
EXTERN_C const IID IID_IAudioMediaStream;
|
||||
|
||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
||||
|
||||
MIDL_INTERFACE("f7537560-a3be-11d0-8212-00c04fc32c45")
|
||||
IAudioMediaStream : public IMediaStream
|
||||
{
|
||||
public:
|
||||
virtual HRESULT STDMETHODCALLTYPE GetFormat(
|
||||
/* [out] */ WAVEFORMATEX *pWaveFormatCurrent) = 0;
|
||||
|
||||
virtual HRESULT STDMETHODCALLTYPE SetFormat(
|
||||
/* [in] */ const WAVEFORMATEX *lpWaveFormat) = 0;
|
||||
|
||||
virtual HRESULT STDMETHODCALLTYPE CreateSample(
|
||||
/* [in] */ IAudioData *pAudioData,
|
||||
/* [in] */ DWORD dwFlags,
|
||||
/* [out] */ IAudioStreamSample **ppSample) = 0;
|
||||
|
||||
};
|
||||
|
||||
#else /* C style interface */
|
||||
|
||||
typedef struct IAudioMediaStreamVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IAudioMediaStream * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IAudioMediaStream * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IAudioMediaStream * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetMultiMediaStream )(
|
||||
IAudioMediaStream * This,
|
||||
/* [out] */ IMultiMediaStream **ppMultiMediaStream);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetInformation )(
|
||||
IAudioMediaStream * This,
|
||||
/* [out] */ MSPID *pPurposeId,
|
||||
/* [out] */ STREAM_TYPE *pType);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetSameFormat )(
|
||||
IAudioMediaStream * This,
|
||||
/* [in] */ IMediaStream *pStreamThatHasDesiredFormat,
|
||||
/* [in] */ DWORD dwFlags);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *AllocateSample )(
|
||||
IAudioMediaStream * This,
|
||||
/* [in] */ DWORD dwFlags,
|
||||
/* [out] */ IStreamSample **ppSample);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *CreateSharedSample )(
|
||||
IAudioMediaStream * This,
|
||||
/* [in] */ IStreamSample *pExistingSample,
|
||||
/* [in] */ DWORD dwFlags,
|
||||
/* [out] */ IStreamSample **ppNewSample);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SendEndOfStream )(
|
||||
IAudioMediaStream * This,
|
||||
DWORD dwFlags);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetFormat )(
|
||||
IAudioMediaStream * This,
|
||||
/* [out] */ WAVEFORMATEX *pWaveFormatCurrent);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetFormat )(
|
||||
IAudioMediaStream * This,
|
||||
/* [in] */ const WAVEFORMATEX *lpWaveFormat);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *CreateSample )(
|
||||
IAudioMediaStream * This,
|
||||
/* [in] */ IAudioData *pAudioData,
|
||||
/* [in] */ DWORD dwFlags,
|
||||
/* [out] */ IAudioStreamSample **ppSample);
|
||||
|
||||
END_INTERFACE
|
||||
} IAudioMediaStreamVtbl;
|
||||
|
||||
interface IAudioMediaStream
|
||||
{
|
||||
CONST_VTBL struct IAudioMediaStreamVtbl *lpVtbl;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#ifdef COBJMACROS
|
||||
|
||||
|
||||
#define IAudioMediaStream_QueryInterface(This,riid,ppvObject) \
|
||||
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
|
||||
|
||||
#define IAudioMediaStream_AddRef(This) \
|
||||
(This)->lpVtbl -> AddRef(This)
|
||||
|
||||
#define IAudioMediaStream_Release(This) \
|
||||
(This)->lpVtbl -> Release(This)
|
||||
|
||||
|
||||
#define IAudioMediaStream_GetMultiMediaStream(This,ppMultiMediaStream) \
|
||||
(This)->lpVtbl -> GetMultiMediaStream(This,ppMultiMediaStream)
|
||||
|
||||
#define IAudioMediaStream_GetInformation(This,pPurposeId,pType) \
|
||||
(This)->lpVtbl -> GetInformation(This,pPurposeId,pType)
|
||||
|
||||
#define IAudioMediaStream_SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags) \
|
||||
(This)->lpVtbl -> SetSameFormat(This,pStreamThatHasDesiredFormat,dwFlags)
|
||||
|
||||
#define IAudioMediaStream_AllocateSample(This,dwFlags,ppSample) \
|
||||
(This)->lpVtbl -> AllocateSample(This,dwFlags,ppSample)
|
||||
|
||||
#define IAudioMediaStream_CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample) \
|
||||
(This)->lpVtbl -> CreateSharedSample(This,pExistingSample,dwFlags,ppNewSample)
|
||||
|
||||
#define IAudioMediaStream_SendEndOfStream(This,dwFlags) \
|
||||
(This)->lpVtbl -> SendEndOfStream(This,dwFlags)
|
||||
|
||||
|
||||
#define IAudioMediaStream_GetFormat(This,pWaveFormatCurrent) \
|
||||
(This)->lpVtbl -> GetFormat(This,pWaveFormatCurrent)
|
||||
|
||||
#define IAudioMediaStream_SetFormat(This,lpWaveFormat) \
|
||||
(This)->lpVtbl -> SetFormat(This,lpWaveFormat)
|
||||
|
||||
#define IAudioMediaStream_CreateSample(This,pAudioData,dwFlags,ppSample) \
|
||||
(This)->lpVtbl -> CreateSample(This,pAudioData,dwFlags,ppSample)
|
||||
|
||||
#endif /* COBJMACROS */
|
||||
|
||||
|
||||
#endif /* C style interface */
|
||||
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE IAudioMediaStream_GetFormat_Proxy(
|
||||
IAudioMediaStream * This,
|
||||
/* [out] */ WAVEFORMATEX *pWaveFormatCurrent);
|
||||
|
||||
|
||||
void __RPC_STUB IAudioMediaStream_GetFormat_Stub(
|
||||
IRpcStubBuffer *This,
|
||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
||||
PRPC_MESSAGE _pRpcMessage,
|
||||
DWORD *_pdwStubPhase);
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE IAudioMediaStream_SetFormat_Proxy(
|
||||
IAudioMediaStream * This,
|
||||
/* [in] */ const WAVEFORMATEX *lpWaveFormat);
|
||||
|
||||
|
||||
void __RPC_STUB IAudioMediaStream_SetFormat_Stub(
|
||||
IRpcStubBuffer *This,
|
||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
||||
PRPC_MESSAGE _pRpcMessage,
|
||||
DWORD *_pdwStubPhase);
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE IAudioMediaStream_CreateSample_Proxy(
|
||||
IAudioMediaStream * This,
|
||||
/* [in] */ IAudioData *pAudioData,
|
||||
/* [in] */ DWORD dwFlags,
|
||||
/* [out] */ IAudioStreamSample **ppSample);
|
||||
|
||||
|
||||
void __RPC_STUB IAudioMediaStream_CreateSample_Stub(
|
||||
IRpcStubBuffer *This,
|
||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
||||
PRPC_MESSAGE _pRpcMessage,
|
||||
DWORD *_pdwStubPhase);
|
||||
|
||||
|
||||
|
||||
#endif /* __IAudioMediaStream_INTERFACE_DEFINED__ */
|
||||
|
||||
|
||||
#ifndef __IAudioStreamSample_INTERFACE_DEFINED__
|
||||
#define __IAudioStreamSample_INTERFACE_DEFINED__
|
||||
|
||||
/* interface IAudioStreamSample */
|
||||
/* [unique][uuid][local][object] */
|
||||
|
||||
|
||||
EXTERN_C const IID IID_IAudioStreamSample;
|
||||
|
||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
||||
|
||||
MIDL_INTERFACE("345fee00-aba5-11d0-8212-00c04fc32c45")
|
||||
IAudioStreamSample : public IStreamSample
|
||||
{
|
||||
public:
|
||||
virtual HRESULT STDMETHODCALLTYPE GetAudioData(
|
||||
/* [out] */ IAudioData **ppAudio) = 0;
|
||||
|
||||
};
|
||||
|
||||
#else /* C style interface */
|
||||
|
||||
typedef struct IAudioStreamSampleVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IAudioStreamSample * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IAudioStreamSample * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IAudioStreamSample * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetMediaStream )(
|
||||
IAudioStreamSample * This,
|
||||
/* [in] */ IMediaStream **ppMediaStream);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetSampleTimes )(
|
||||
IAudioStreamSample * This,
|
||||
/* [out] */ STREAM_TIME *pStartTime,
|
||||
/* [out] */ STREAM_TIME *pEndTime,
|
||||
/* [out] */ STREAM_TIME *pCurrentTime);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetSampleTimes )(
|
||||
IAudioStreamSample * This,
|
||||
/* [in] */ const STREAM_TIME *pStartTime,
|
||||
/* [in] */ const STREAM_TIME *pEndTime);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Update )(
|
||||
IAudioStreamSample * This,
|
||||
/* [in] */ DWORD dwFlags,
|
||||
/* [in] */ HANDLE hEvent,
|
||||
/* [in] */ PAPCFUNC pfnAPC,
|
||||
/* [in] */ DWORD_PTR dwAPCData);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *CompletionStatus )(
|
||||
IAudioStreamSample * This,
|
||||
/* [in] */ DWORD dwFlags,
|
||||
/* [in] */ DWORD dwMilliseconds);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetAudioData )(
|
||||
IAudioStreamSample * This,
|
||||
/* [out] */ IAudioData **ppAudio);
|
||||
|
||||
END_INTERFACE
|
||||
} IAudioStreamSampleVtbl;
|
||||
|
||||
interface IAudioStreamSample
|
||||
{
|
||||
CONST_VTBL struct IAudioStreamSampleVtbl *lpVtbl;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#ifdef COBJMACROS
|
||||
|
||||
|
||||
#define IAudioStreamSample_QueryInterface(This,riid,ppvObject) \
|
||||
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
|
||||
|
||||
#define IAudioStreamSample_AddRef(This) \
|
||||
(This)->lpVtbl -> AddRef(This)
|
||||
|
||||
#define IAudioStreamSample_Release(This) \
|
||||
(This)->lpVtbl -> Release(This)
|
||||
|
||||
|
||||
#define IAudioStreamSample_GetMediaStream(This,ppMediaStream) \
|
||||
(This)->lpVtbl -> GetMediaStream(This,ppMediaStream)
|
||||
|
||||
#define IAudioStreamSample_GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime) \
|
||||
(This)->lpVtbl -> GetSampleTimes(This,pStartTime,pEndTime,pCurrentTime)
|
||||
|
||||
#define IAudioStreamSample_SetSampleTimes(This,pStartTime,pEndTime) \
|
||||
(This)->lpVtbl -> SetSampleTimes(This,pStartTime,pEndTime)
|
||||
|
||||
#define IAudioStreamSample_Update(This,dwFlags,hEvent,pfnAPC,dwAPCData) \
|
||||
(This)->lpVtbl -> Update(This,dwFlags,hEvent,pfnAPC,dwAPCData)
|
||||
|
||||
#define IAudioStreamSample_CompletionStatus(This,dwFlags,dwMilliseconds) \
|
||||
(This)->lpVtbl -> CompletionStatus(This,dwFlags,dwMilliseconds)
|
||||
|
||||
|
||||
#define IAudioStreamSample_GetAudioData(This,ppAudio) \
|
||||
(This)->lpVtbl -> GetAudioData(This,ppAudio)
|
||||
|
||||
#endif /* COBJMACROS */
|
||||
|
||||
|
||||
#endif /* C style interface */
|
||||
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE IAudioStreamSample_GetAudioData_Proxy(
|
||||
IAudioStreamSample * This,
|
||||
/* [out] */ IAudioData **ppAudio);
|
||||
|
||||
|
||||
void __RPC_STUB IAudioStreamSample_GetAudioData_Stub(
|
||||
IRpcStubBuffer *This,
|
||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
||||
PRPC_MESSAGE _pRpcMessage,
|
||||
DWORD *_pdwStubPhase);
|
||||
|
||||
|
||||
|
||||
#endif /* __IAudioStreamSample_INTERFACE_DEFINED__ */
|
||||
|
||||
|
||||
#ifndef __IMemoryData_INTERFACE_DEFINED__
|
||||
#define __IMemoryData_INTERFACE_DEFINED__
|
||||
|
||||
/* interface IMemoryData */
|
||||
/* [unique][uuid][local][object] */
|
||||
|
||||
|
||||
EXTERN_C const IID IID_IMemoryData;
|
||||
|
||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
||||
|
||||
MIDL_INTERFACE("327fc560-af60-11d0-8212-00c04fc32c45")
|
||||
IMemoryData : public IUnknown
|
||||
{
|
||||
public:
|
||||
virtual HRESULT STDMETHODCALLTYPE SetBuffer(
|
||||
/* [in] */ DWORD cbSize,
|
||||
/* [in] */ BYTE *pbData,
|
||||
/* [in] */ DWORD dwFlags) = 0;
|
||||
|
||||
virtual HRESULT STDMETHODCALLTYPE GetInfo(
|
||||
/* [out] */ DWORD *pdwLength,
|
||||
/* [out] */ BYTE **ppbData,
|
||||
/* [out] */ DWORD *pcbActualData) = 0;
|
||||
|
||||
virtual HRESULT STDMETHODCALLTYPE SetActual(
|
||||
/* [in] */ DWORD cbDataValid) = 0;
|
||||
|
||||
};
|
||||
|
||||
#else /* C style interface */
|
||||
|
||||
typedef struct IMemoryDataVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IMemoryData * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IMemoryData * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IMemoryData * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetBuffer )(
|
||||
IMemoryData * This,
|
||||
/* [in] */ DWORD cbSize,
|
||||
/* [in] */ BYTE *pbData,
|
||||
/* [in] */ DWORD dwFlags);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetInfo )(
|
||||
IMemoryData * This,
|
||||
/* [out] */ DWORD *pdwLength,
|
||||
/* [out] */ BYTE **ppbData,
|
||||
/* [out] */ DWORD *pcbActualData);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetActual )(
|
||||
IMemoryData * This,
|
||||
/* [in] */ DWORD cbDataValid);
|
||||
|
||||
END_INTERFACE
|
||||
} IMemoryDataVtbl;
|
||||
|
||||
interface IMemoryData
|
||||
{
|
||||
CONST_VTBL struct IMemoryDataVtbl *lpVtbl;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#ifdef COBJMACROS
|
||||
|
||||
|
||||
#define IMemoryData_QueryInterface(This,riid,ppvObject) \
|
||||
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
|
||||
|
||||
#define IMemoryData_AddRef(This) \
|
||||
(This)->lpVtbl -> AddRef(This)
|
||||
|
||||
#define IMemoryData_Release(This) \
|
||||
(This)->lpVtbl -> Release(This)
|
||||
|
||||
|
||||
#define IMemoryData_SetBuffer(This,cbSize,pbData,dwFlags) \
|
||||
(This)->lpVtbl -> SetBuffer(This,cbSize,pbData,dwFlags)
|
||||
|
||||
#define IMemoryData_GetInfo(This,pdwLength,ppbData,pcbActualData) \
|
||||
(This)->lpVtbl -> GetInfo(This,pdwLength,ppbData,pcbActualData)
|
||||
|
||||
#define IMemoryData_SetActual(This,cbDataValid) \
|
||||
(This)->lpVtbl -> SetActual(This,cbDataValid)
|
||||
|
||||
#endif /* COBJMACROS */
|
||||
|
||||
|
||||
#endif /* C style interface */
|
||||
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE IMemoryData_SetBuffer_Proxy(
|
||||
IMemoryData * This,
|
||||
/* [in] */ DWORD cbSize,
|
||||
/* [in] */ BYTE *pbData,
|
||||
/* [in] */ DWORD dwFlags);
|
||||
|
||||
|
||||
void __RPC_STUB IMemoryData_SetBuffer_Stub(
|
||||
IRpcStubBuffer *This,
|
||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
||||
PRPC_MESSAGE _pRpcMessage,
|
||||
DWORD *_pdwStubPhase);
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE IMemoryData_GetInfo_Proxy(
|
||||
IMemoryData * This,
|
||||
/* [out] */ DWORD *pdwLength,
|
||||
/* [out] */ BYTE **ppbData,
|
||||
/* [out] */ DWORD *pcbActualData);
|
||||
|
||||
|
||||
void __RPC_STUB IMemoryData_GetInfo_Stub(
|
||||
IRpcStubBuffer *This,
|
||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
||||
PRPC_MESSAGE _pRpcMessage,
|
||||
DWORD *_pdwStubPhase);
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE IMemoryData_SetActual_Proxy(
|
||||
IMemoryData * This,
|
||||
/* [in] */ DWORD cbDataValid);
|
||||
|
||||
|
||||
void __RPC_STUB IMemoryData_SetActual_Stub(
|
||||
IRpcStubBuffer *This,
|
||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
||||
PRPC_MESSAGE _pRpcMessage,
|
||||
DWORD *_pdwStubPhase);
|
||||
|
||||
|
||||
|
||||
#endif /* __IMemoryData_INTERFACE_DEFINED__ */
|
||||
|
||||
|
||||
#ifndef __IAudioData_INTERFACE_DEFINED__
|
||||
#define __IAudioData_INTERFACE_DEFINED__
|
||||
|
||||
/* interface IAudioData */
|
||||
/* [unique][uuid][local][object] */
|
||||
|
||||
|
||||
EXTERN_C const IID IID_IAudioData;
|
||||
|
||||
#if defined(__cplusplus) && !defined(CINTERFACE)
|
||||
|
||||
MIDL_INTERFACE("54c719c0-af60-11d0-8212-00c04fc32c45")
|
||||
IAudioData : public IMemoryData
|
||||
{
|
||||
public:
|
||||
virtual HRESULT STDMETHODCALLTYPE GetFormat(
|
||||
/* [out] */ WAVEFORMATEX *pWaveFormatCurrent) = 0;
|
||||
|
||||
virtual HRESULT STDMETHODCALLTYPE SetFormat(
|
||||
/* [in] */ const WAVEFORMATEX *lpWaveFormat) = 0;
|
||||
|
||||
};
|
||||
|
||||
#else /* C style interface */
|
||||
|
||||
typedef struct IAudioDataVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IAudioData * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IAudioData * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IAudioData * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetBuffer )(
|
||||
IAudioData * This,
|
||||
/* [in] */ DWORD cbSize,
|
||||
/* [in] */ BYTE *pbData,
|
||||
/* [in] */ DWORD dwFlags);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetInfo )(
|
||||
IAudioData * This,
|
||||
/* [out] */ DWORD *pdwLength,
|
||||
/* [out] */ BYTE **ppbData,
|
||||
/* [out] */ DWORD *pcbActualData);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetActual )(
|
||||
IAudioData * This,
|
||||
/* [in] */ DWORD cbDataValid);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetFormat )(
|
||||
IAudioData * This,
|
||||
/* [out] */ WAVEFORMATEX *pWaveFormatCurrent);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetFormat )(
|
||||
IAudioData * This,
|
||||
/* [in] */ const WAVEFORMATEX *lpWaveFormat);
|
||||
|
||||
END_INTERFACE
|
||||
} IAudioDataVtbl;
|
||||
|
||||
interface IAudioData
|
||||
{
|
||||
CONST_VTBL struct IAudioDataVtbl *lpVtbl;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#ifdef COBJMACROS
|
||||
|
||||
|
||||
#define IAudioData_QueryInterface(This,riid,ppvObject) \
|
||||
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
|
||||
|
||||
#define IAudioData_AddRef(This) \
|
||||
(This)->lpVtbl -> AddRef(This)
|
||||
|
||||
#define IAudioData_Release(This) \
|
||||
(This)->lpVtbl -> Release(This)
|
||||
|
||||
|
||||
#define IAudioData_SetBuffer(This,cbSize,pbData,dwFlags) \
|
||||
(This)->lpVtbl -> SetBuffer(This,cbSize,pbData,dwFlags)
|
||||
|
||||
#define IAudioData_GetInfo(This,pdwLength,ppbData,pcbActualData) \
|
||||
(This)->lpVtbl -> GetInfo(This,pdwLength,ppbData,pcbActualData)
|
||||
|
||||
#define IAudioData_SetActual(This,cbDataValid) \
|
||||
(This)->lpVtbl -> SetActual(This,cbDataValid)
|
||||
|
||||
|
||||
#define IAudioData_GetFormat(This,pWaveFormatCurrent) \
|
||||
(This)->lpVtbl -> GetFormat(This,pWaveFormatCurrent)
|
||||
|
||||
#define IAudioData_SetFormat(This,lpWaveFormat) \
|
||||
(This)->lpVtbl -> SetFormat(This,lpWaveFormat)
|
||||
|
||||
#endif /* COBJMACROS */
|
||||
|
||||
|
||||
#endif /* C style interface */
|
||||
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE IAudioData_GetFormat_Proxy(
|
||||
IAudioData * This,
|
||||
/* [out] */ WAVEFORMATEX *pWaveFormatCurrent);
|
||||
|
||||
|
||||
void __RPC_STUB IAudioData_GetFormat_Stub(
|
||||
IRpcStubBuffer *This,
|
||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
||||
PRPC_MESSAGE _pRpcMessage,
|
||||
DWORD *_pdwStubPhase);
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE IAudioData_SetFormat_Proxy(
|
||||
IAudioData * This,
|
||||
/* [in] */ const WAVEFORMATEX *lpWaveFormat);
|
||||
|
||||
|
||||
void __RPC_STUB IAudioData_SetFormat_Stub(
|
||||
IRpcStubBuffer *This,
|
||||
IRpcChannelBuffer *_pRpcChannelBuffer,
|
||||
PRPC_MESSAGE _pRpcMessage,
|
||||
DWORD *_pdwStubPhase);
|
||||
|
||||
|
||||
|
||||
#endif /* __IAudioData_INTERFACE_DEFINED__ */
|
||||
|
||||
|
||||
/* Additional Prototypes for ALL interfaces */
|
||||
|
||||
/* end of Additional Prototypes */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
402
game_re/third_party/mssdk/include/aviriff.h
vendored
402
game_re/third_party/mssdk/include/aviriff.h
vendored
@@ -1,402 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: AVIRIFF.h
|
||||
//
|
||||
// Desc: Structures and defines for the RIFF AVI file format extended to
|
||||
// handle very large/long files.
|
||||
//
|
||||
// Copyright (c) 1996 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#pragma warning(disable: 4097 4511 4512 4514 4705)
|
||||
|
||||
|
||||
#if !defined AVIRIFF_H
|
||||
#define AVIRIFF_H
|
||||
|
||||
#if !defined NUMELMS
|
||||
#define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0]))
|
||||
#endif
|
||||
|
||||
// all structures in this file are packed on word boundaries
|
||||
//
|
||||
#include <pshpack2.h>
|
||||
|
||||
/*
|
||||
* heres the general layout of an AVI riff file (new format)
|
||||
*
|
||||
* RIFF (3F??????) AVI <- not more than 1 GB in size
|
||||
* LIST (size) hdrl
|
||||
* avih (0038)
|
||||
* LIST (size) strl
|
||||
* strh (0038)
|
||||
* strf (????)
|
||||
* indx (3ff8) <- size may vary, should be sector sized
|
||||
* LIST (size) strl
|
||||
* strh (0038)
|
||||
* strf (????)
|
||||
* indx (3ff8) <- size may vary, should be sector sized
|
||||
* LIST (size) odml
|
||||
* dmlh (????)
|
||||
* JUNK (size) <- fill to align to sector - 12
|
||||
* LIST (7f??????) movi <- aligned on sector - 12
|
||||
* 00dc (size) <- sector aligned
|
||||
* 01wb (size) <- sector aligned
|
||||
* ix00 (size) <- sector aligned
|
||||
* idx1 (00??????) <- sector aligned
|
||||
* RIFF (7F??????) AVIX
|
||||
* JUNK (size) <- fill to align to sector -12
|
||||
* LIST (size) movi
|
||||
* 00dc (size) <- sector aligned
|
||||
* RIFF (7F??????) AVIX <- not more than 2GB in size
|
||||
* JUNK (size) <- fill to align to sector - 12
|
||||
* LIST (size) movi
|
||||
* 00dc (size) <- sector aligned
|
||||
*
|
||||
*-===================================================================*/
|
||||
|
||||
//
|
||||
// structures for manipulating RIFF headers
|
||||
//
|
||||
#define FCC(ch4) ((((DWORD)(ch4) & 0xFF) << 24) | \
|
||||
(((DWORD)(ch4) & 0xFF00) << 8) | \
|
||||
(((DWORD)(ch4) & 0xFF0000) >> 8) | \
|
||||
(((DWORD)(ch4) & 0xFF000000) >> 24))
|
||||
|
||||
typedef struct _riffchunk {
|
||||
FOURCC fcc;
|
||||
DWORD cb;
|
||||
} RIFFCHUNK, * LPRIFFCHUNK;
|
||||
typedef struct _rifflist {
|
||||
FOURCC fcc;
|
||||
DWORD cb;
|
||||
FOURCC fccListType;
|
||||
} RIFFLIST, * LPRIFFLIST;
|
||||
|
||||
#define RIFFROUND(cb) ((cb) + ((cb)&1))
|
||||
#define RIFFNEXT(pChunk) (LPRIFFCHUNK)((LPBYTE)(pChunk) \
|
||||
+ sizeof(RIFFCHUNK) \
|
||||
+ RIFFROUND(((LPRIFFCHUNK)pChunk)->cb))
|
||||
|
||||
|
||||
//
|
||||
// ==================== avi header structures ===========================
|
||||
//
|
||||
|
||||
// main header for the avi file (compatibility header)
|
||||
//
|
||||
#define ckidMAINAVIHEADER FCC('avih')
|
||||
typedef struct _avimainheader {
|
||||
FOURCC fcc; // 'avih'
|
||||
DWORD cb; // size of this structure -8
|
||||
DWORD dwMicroSecPerFrame; // frame display rate (or 0L)
|
||||
DWORD dwMaxBytesPerSec; // max. transfer rate
|
||||
DWORD dwPaddingGranularity; // pad to multiples of this size; normally 2K.
|
||||
DWORD dwFlags; // the ever-present flags
|
||||
#define AVIF_HASINDEX 0x00000010 // Index at end of file?
|
||||
#define AVIF_MUSTUSEINDEX 0x00000020
|
||||
#define AVIF_ISINTERLEAVED 0x00000100
|
||||
#define AVIF_TRUSTCKTYPE 0x00000800 // Use CKType to find key frames
|
||||
#define AVIF_WASCAPTUREFILE 0x00010000
|
||||
#define AVIF_COPYRIGHTED 0x00020000
|
||||
DWORD dwTotalFrames; // # frames in first movi list
|
||||
DWORD dwInitialFrames;
|
||||
DWORD dwStreams;
|
||||
DWORD dwSuggestedBufferSize;
|
||||
DWORD dwWidth;
|
||||
DWORD dwHeight;
|
||||
DWORD dwReserved[4];
|
||||
} AVIMAINHEADER;
|
||||
|
||||
#define ckidODML FCC('odml')
|
||||
#define ckidAVIEXTHEADER FCC('dmlh')
|
||||
typedef struct _aviextheader {
|
||||
FOURCC fcc; // 'dmlh'
|
||||
DWORD cb; // size of this structure -8
|
||||
DWORD dwGrandFrames; // total number of frames in the file
|
||||
DWORD dwFuture[61]; // to be defined later
|
||||
} AVIEXTHEADER;
|
||||
|
||||
//
|
||||
// structure of an AVI stream header riff chunk
|
||||
//
|
||||
#define ckidSTREAMLIST FCC('strl')
|
||||
|
||||
#ifndef ckidSTREAMHEADER
|
||||
#define ckidSTREAMHEADER FCC('strh')
|
||||
#endif
|
||||
typedef struct _avistreamheader {
|
||||
FOURCC fcc; // 'strh'
|
||||
DWORD cb; // size of this structure - 8
|
||||
|
||||
FOURCC fccType; // stream type codes
|
||||
|
||||
#ifndef streamtypeVIDEO
|
||||
#define streamtypeVIDEO FCC('vids')
|
||||
#define streamtypeAUDIO FCC('auds')
|
||||
#define streamtypeMIDI FCC('mids')
|
||||
#define streamtypeTEXT FCC('txts')
|
||||
#endif
|
||||
|
||||
FOURCC fccHandler;
|
||||
DWORD dwFlags;
|
||||
#define AVISF_DISABLED 0x00000001
|
||||
#define AVISF_VIDEO_PALCHANGES 0x00010000
|
||||
|
||||
WORD wPriority;
|
||||
WORD wLanguage;
|
||||
DWORD dwInitialFrames;
|
||||
DWORD dwScale;
|
||||
DWORD dwRate; // dwRate/dwScale is stream tick rate in ticks/sec
|
||||
DWORD dwStart;
|
||||
DWORD dwLength;
|
||||
DWORD dwSuggestedBufferSize;
|
||||
DWORD dwQuality;
|
||||
DWORD dwSampleSize;
|
||||
struct {
|
||||
short int left;
|
||||
short int top;
|
||||
short int right;
|
||||
short int bottom;
|
||||
} rcFrame;
|
||||
} AVISTREAMHEADER;
|
||||
|
||||
|
||||
//
|
||||
// structure of an AVI stream format chunk
|
||||
//
|
||||
#ifndef ckidSTREAMFORMAT
|
||||
#define ckidSTREAMFORMAT FCC('strf')
|
||||
#endif
|
||||
//
|
||||
// avi stream formats are different for each stream type
|
||||
//
|
||||
// BITMAPINFOHEADER for video streams
|
||||
// WAVEFORMATEX or PCMWAVEFORMAT for audio streams
|
||||
// nothing for text streams
|
||||
// nothing for midi streams
|
||||
|
||||
|
||||
#pragma warning(disable:4200)
|
||||
//
|
||||
// structure of old style AVI index
|
||||
//
|
||||
#define ckidAVIOLDINDEX FCC('idx1')
|
||||
typedef struct _avioldindex {
|
||||
FOURCC fcc; // 'idx1'
|
||||
DWORD cb; // size of this structure -8
|
||||
struct _avioldindex_entry {
|
||||
DWORD dwChunkId;
|
||||
DWORD dwFlags;
|
||||
|
||||
#ifndef AVIIF_LIST
|
||||
#define AVIIF_LIST 0x00000001
|
||||
#define AVIIF_KEYFRAME 0x00000010
|
||||
#endif
|
||||
|
||||
#define AVIIF_NO_TIME 0x00000100
|
||||
#define AVIIF_COMPRESSOR 0x0FFF0000 // unused?
|
||||
DWORD dwOffset; // offset of riff chunk header for the data
|
||||
DWORD dwSize; // size of the data (excluding riff header size)
|
||||
} aIndex[]; // size of this array
|
||||
} AVIOLDINDEX;
|
||||
|
||||
|
||||
//
|
||||
// ============ structures for timecode in an AVI file =================
|
||||
//
|
||||
|
||||
#ifndef TIMECODE_DEFINED
|
||||
#define TIMECODE_DEFINED
|
||||
|
||||
// defined
|
||||
// timecode time structure
|
||||
//
|
||||
typedef union _timecode {
|
||||
struct {
|
||||
WORD wFrameRate;
|
||||
WORD wFrameFract;
|
||||
LONG cFrames;
|
||||
};
|
||||
DWORDLONG qw;
|
||||
} TIMECODE;
|
||||
|
||||
#endif // TIMECODE_DEFINED
|
||||
|
||||
#define TIMECODE_RATE_30DROP 0 // this MUST be zero
|
||||
|
||||
// struct for all the SMPTE timecode info
|
||||
//
|
||||
typedef struct _timecodedata {
|
||||
TIMECODE time;
|
||||
DWORD dwSMPTEflags;
|
||||
DWORD dwUser;
|
||||
} TIMECODEDATA;
|
||||
|
||||
// dwSMPTEflags masks/values
|
||||
//
|
||||
#define TIMECODE_SMPTE_BINARY_GROUP 0x07
|
||||
#define TIMECODE_SMPTE_COLOR_FRAME 0x08
|
||||
|
||||
//
|
||||
// ============ structures for new style AVI indexes =================
|
||||
//
|
||||
|
||||
// index type codes
|
||||
//
|
||||
#define AVI_INDEX_OF_INDEXES 0x00
|
||||
#define AVI_INDEX_OF_CHUNKS 0x01
|
||||
#define AVI_INDEX_OF_TIMED_CHUNKS 0x02
|
||||
#define AVI_INDEX_OF_SUB_2FIELD 0x03
|
||||
#define AVI_INDEX_IS_DATA 0x80
|
||||
|
||||
// index subtype codes
|
||||
//
|
||||
#define AVI_INDEX_SUB_DEFAULT 0x00
|
||||
|
||||
// INDEX_OF_CHUNKS subtype codes
|
||||
//
|
||||
#define AVI_INDEX_SUB_2FIELD 0x01
|
||||
|
||||
// meta structure of all avi indexes
|
||||
//
|
||||
typedef struct _avimetaindex {
|
||||
FOURCC fcc;
|
||||
UINT cb;
|
||||
WORD wLongsPerEntry;
|
||||
BYTE bIndexSubType;
|
||||
BYTE bIndexType;
|
||||
DWORD nEntriesInUse;
|
||||
DWORD dwChunkId;
|
||||
DWORD dwReserved[3];
|
||||
DWORD adwIndex[];
|
||||
} AVIMETAINDEX;
|
||||
|
||||
#define STDINDEXSIZE 0x4000
|
||||
#define NUMINDEX(wLongsPerEntry) ((STDINDEXSIZE-32)/4/(wLongsPerEntry))
|
||||
#define NUMINDEXFILL(wLongsPerEntry) ((STDINDEXSIZE/4) - NUMINDEX(wLongsPerEntry))
|
||||
|
||||
// structure of a super index (INDEX_OF_INDEXES)
|
||||
//
|
||||
#define ckidAVISUPERINDEX FCC('indx')
|
||||
typedef struct _avisuperindex {
|
||||
FOURCC fcc; // 'indx'
|
||||
UINT cb; // size of this structure
|
||||
WORD wLongsPerEntry; // ==4
|
||||
BYTE bIndexSubType; // ==0 (frame index) or AVI_INDEX_SUB_2FIELD
|
||||
BYTE bIndexType; // ==AVI_INDEX_OF_INDEXES
|
||||
DWORD nEntriesInUse; // offset of next unused entry in aIndex
|
||||
DWORD dwChunkId; // chunk ID of chunks being indexed, (i.e. RGB8)
|
||||
DWORD dwReserved[3]; // must be 0
|
||||
struct _avisuperindex_entry {
|
||||
DWORDLONG qwOffset; // 64 bit offset to sub index chunk
|
||||
DWORD dwSize; // 32 bit size of sub index chunk
|
||||
DWORD dwDuration; // time span of subindex chunk (in stream ticks)
|
||||
} aIndex[NUMINDEX(4)];
|
||||
} AVISUPERINDEX;
|
||||
#define Valid_SUPERINDEX(pi) (*(DWORD *)(&((pi)->wLongsPerEntry)) == (4 | (AVI_INDEX_OF_INDEXES << 24)))
|
||||
|
||||
// struct of a standard index (AVI_INDEX_OF_CHUNKS)
|
||||
//
|
||||
typedef struct _avistdindex_entry {
|
||||
DWORD dwOffset; // 32 bit offset to data (points to data, not riff header)
|
||||
DWORD dwSize; // 31 bit size of data (does not include size of riff header), bit 31 is deltaframe bit
|
||||
} AVISTDINDEX_ENTRY;
|
||||
#define AVISTDINDEX_DELTAFRAME ( 0x80000000) // Delta frames have the high bit set
|
||||
#define AVISTDINDEX_SIZEMASK (~0x80000000)
|
||||
|
||||
typedef struct _avistdindex {
|
||||
FOURCC fcc; // 'indx' or '##ix'
|
||||
UINT cb; // size of this structure
|
||||
WORD wLongsPerEntry; // ==2
|
||||
BYTE bIndexSubType; // ==0
|
||||
BYTE bIndexType; // ==AVI_INDEX_OF_CHUNKS
|
||||
DWORD nEntriesInUse; // offset of next unused entry in aIndex
|
||||
DWORD dwChunkId; // chunk ID of chunks being indexed, (i.e. RGB8)
|
||||
DWORDLONG qwBaseOffset; // base offset that all index intries are relative to
|
||||
DWORD dwReserved_3; // must be 0
|
||||
AVISTDINDEX_ENTRY aIndex[NUMINDEX(2)];
|
||||
} AVISTDINDEX;
|
||||
|
||||
// struct of a time variant standard index (AVI_INDEX_OF_TIMED_CHUNKS)
|
||||
//
|
||||
typedef struct _avitimedindex_entry {
|
||||
DWORD dwOffset; // 32 bit offset to data (points to data, not riff header)
|
||||
DWORD dwSize; // 31 bit size of data (does not include size of riff header) (high bit is deltaframe bit)
|
||||
DWORD dwDuration; // how much time the chunk should be played (in stream ticks)
|
||||
} AVITIMEDINDEX_ENTRY;
|
||||
|
||||
typedef struct _avitimedindex {
|
||||
FOURCC fcc; // 'indx' or '##ix'
|
||||
UINT cb; // size of this structure
|
||||
WORD wLongsPerEntry; // ==3
|
||||
BYTE bIndexSubType; // ==0
|
||||
BYTE bIndexType; // ==AVI_INDEX_OF_TIMED_CHUNKS
|
||||
DWORD nEntriesInUse; // offset of next unused entry in aIndex
|
||||
DWORD dwChunkId; // chunk ID of chunks being indexed, (i.e. RGB8)
|
||||
DWORDLONG qwBaseOffset; // base offset that all index intries are relative to
|
||||
DWORD dwReserved_3; // must be 0
|
||||
AVITIMEDINDEX_ENTRY aIndex[NUMINDEX(3)];
|
||||
DWORD adwTrailingFill[NUMINDEXFILL(3)]; // to align struct to correct size
|
||||
} AVITIMEDINDEX;
|
||||
|
||||
// structure of a timecode stream
|
||||
//
|
||||
typedef struct _avitimecodeindex {
|
||||
FOURCC fcc; // 'indx' or '##ix'
|
||||
UINT cb; // size of this structure
|
||||
WORD wLongsPerEntry; // ==4
|
||||
BYTE bIndexSubType; // ==0
|
||||
BYTE bIndexType; // ==AVI_INDEX_IS_DATA
|
||||
DWORD nEntriesInUse; // offset of next unused entry in aIndex
|
||||
DWORD dwChunkId; // 'time'
|
||||
DWORD dwReserved[3]; // must be 0
|
||||
TIMECODEDATA aIndex[NUMINDEX(sizeof(TIMECODEDATA)/sizeof(LONG))];
|
||||
} AVITIMECODEINDEX;
|
||||
|
||||
// structure of a timecode discontinuity list (when wLongsPerEntry == 7)
|
||||
//
|
||||
typedef struct _avitcdlindex_entry {
|
||||
DWORD dwTick; // stream tick time that maps to this timecode value
|
||||
TIMECODE time;
|
||||
DWORD dwSMPTEflags;
|
||||
DWORD dwUser;
|
||||
TCHAR szReelId[12];
|
||||
} AVITCDLINDEX_ENTRY;
|
||||
|
||||
typedef struct _avitcdlindex {
|
||||
FOURCC fcc; // 'indx' or '##ix'
|
||||
UINT cb; // size of this structure
|
||||
WORD wLongsPerEntry; // ==7 (must be 4 or more all 'tcdl' indexes
|
||||
BYTE bIndexSubType; // ==0
|
||||
BYTE bIndexType; // ==AVI_INDEX_IS_DATA
|
||||
DWORD nEntriesInUse; // offset of next unused entry in aIndex
|
||||
DWORD dwChunkId; // 'tcdl'
|
||||
DWORD dwReserved[3]; // must be 0
|
||||
AVITCDLINDEX_ENTRY aIndex[NUMINDEX(7)];
|
||||
DWORD adwTrailingFill[NUMINDEXFILL(7)]; // to align struct to correct size
|
||||
} AVITCDLINDEX;
|
||||
|
||||
typedef struct _avifieldindex_chunk {
|
||||
FOURCC fcc; // 'ix##'
|
||||
DWORD cb; // size of this structure
|
||||
WORD wLongsPerEntry; // must be 3 (size of each entry in
|
||||
// aIndex array)
|
||||
BYTE bIndexSubType; // AVI_INDEX_2FIELD
|
||||
BYTE bIndexType; // AVI_INDEX_OF_CHUNKS
|
||||
DWORD nEntriesInUse; //
|
||||
DWORD dwChunkId; // '##dc' or '##db'
|
||||
DWORDLONG qwBaseOffset; // offsets in aIndex array are relative to this
|
||||
DWORD dwReserved3; // must be 0
|
||||
struct _avifieldindex_entry {
|
||||
DWORD dwOffset;
|
||||
DWORD dwSize; // size of all fields
|
||||
// (bit 31 set for NON-keyframes)
|
||||
DWORD dwOffsetField2; // offset to second field
|
||||
} aIndex[ ];
|
||||
} AVIFIELDINDEX, * PAVIFIELDINDEX;
|
||||
|
||||
|
||||
#include <poppack.h>
|
||||
|
||||
#endif
|
||||
3067
game_re/third_party/mssdk/include/bdaiface.h
vendored
3067
game_re/third_party/mssdk/include/bdaiface.h
vendored
File diff suppressed because it is too large
Load Diff
1417
game_re/third_party/mssdk/include/bdamedia.h
vendored
1417
game_re/third_party/mssdk/include/bdamedia.h
vendored
File diff suppressed because it is too large
Load Diff
585
game_re/third_party/mssdk/include/bdatypes.h
vendored
585
game_re/third_party/mssdk/include/bdatypes.h
vendored
@@ -1,585 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: BDATypes.h
|
||||
//
|
||||
// Desc: Typedefs and enums needed by both the WDM drivers and the user mode
|
||||
// COM interfaces.
|
||||
//
|
||||
// Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef _BDATYPES_
|
||||
|
||||
#define _BDATYPES_ 1
|
||||
|
||||
/* Utility Macros */
|
||||
|
||||
#define MIN_DIMENSION 1
|
||||
#define NATURAL 4
|
||||
#define CACHE_LINE 128
|
||||
#define PAGE 4096
|
||||
#define ALIGN( pointer, size) (((ULONG)(pointer) + (ULONG)(size) - 1) & ~((ULONG)(size) - 1))
|
||||
#define BDA_STRING_CONST(x) {sizeof(L##x)-2, sizeof(L##x), L##x}
|
||||
|
||||
|
||||
#ifdef __midl
|
||||
#define V1_ENUM [v1_enum]
|
||||
#else
|
||||
#define V1_ENUM
|
||||
#endif
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
// BDA Topology Structures
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
typedef struct _BDA_TEMPLATE_CONNECTION
|
||||
{
|
||||
ULONG FromNodeType;
|
||||
ULONG FromNodePinType;
|
||||
ULONG ToNodeType;
|
||||
ULONG ToNodePinType;
|
||||
}BDA_TEMPLATE_CONNECTION, *PBDA_TEMPLATE_CONNECTION;
|
||||
|
||||
|
||||
typedef struct _BDA_TEMPLATE_PIN_JOINT
|
||||
{
|
||||
ULONG uliTemplateConnection;
|
||||
ULONG ulcInstancesMax;
|
||||
}BDA_TEMPLATE_PIN_JOINT, *PBDA_TEMPLATE_PIN_JOINT;
|
||||
|
||||
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
// BDA Events
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
// In-band Event IDs
|
||||
//
|
||||
typedef enum {
|
||||
BDA_EVENT_SIGNAL_LOSS = 0,
|
||||
BDA_EVENT_SIGNAL_LOCK,
|
||||
BDA_EVENT_DATA_START,
|
||||
BDA_EVENT_DATA_STOP,
|
||||
BDA_EVENT_CHANNEL_ACQUIRED,
|
||||
BDA_EVENT_CHANNEL_LOST,
|
||||
BDA_EVENT_CHANNEL_SOURCE_CHANGED,
|
||||
BDA_EVENT_CHANNEL_ACTIVATED,
|
||||
BDA_EVENT_CHANNEL_DEACTIVATED,
|
||||
BDA_EVENT_SUBCHANNEL_ACQUIRED,
|
||||
BDA_EVENT_SUBCHANNEL_LOST,
|
||||
BDA_EVENT_SUBCHANNEL_SOURCE_CHANGED,
|
||||
BDA_EVENT_SUBCHANNEL_ACTIVATED,
|
||||
BDA_EVENT_SUBCHANNEL_DEACTIVATED,
|
||||
BDA_EVENT_ACCESS_GRANTED,
|
||||
BDA_EVENT_ACCESS_DENIED,
|
||||
BDA_EVENT_OFFER_EXTENDED,
|
||||
BDA_EVENT_PURCHASE_COMPLETED,
|
||||
BDA_EVENT_SMART_CARD_INSERTED,
|
||||
BDA_EVENT_SMART_CARD_REMOVED
|
||||
} BDA_EVENT_ID, *PBDA_EVENT_ID;
|
||||
|
||||
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
// KSSTREAM_HEADER extensions for BDA
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
typedef struct tagKS_BDA_FRAME_INFO {
|
||||
ULONG ExtendedHeaderSize; // Size of this extended header
|
||||
DWORD dwFrameFlags; //
|
||||
ULONG ulEvent; //
|
||||
ULONG ulChannelNumber; //
|
||||
ULONG ulSubchannelNumber; //
|
||||
ULONG ulReason; //
|
||||
} KS_BDA_FRAME_INFO, *PKS_BDA_FRAME_INFO;
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
// BDA Network Ethernet Filter Property Set
|
||||
//
|
||||
// {71985F43-1CA1-11d3-9CC8-00C04F7971E0}
|
||||
//
|
||||
typedef struct _BDA_ETHERNET_ADDRESS {
|
||||
BYTE rgbAddress[6];
|
||||
} BDA_ETHERNET_ADDRESS, *PBDA_ETHERNET_ADDRESS;
|
||||
|
||||
typedef struct _BDA_ETHERNET_ADDRESS_LIST {
|
||||
ULONG ulcAddresses;
|
||||
BDA_ETHERNET_ADDRESS rgAddressl[MIN_DIMENSION];
|
||||
} BDA_ETHERNET_ADDRESS_LIST, * PBDA_ETHERNET_ADDRESS_LIST;
|
||||
|
||||
typedef enum {
|
||||
BDA_PROMISCUOUS_MULTICAST = 0,
|
||||
BDA_FILTERED_MULTICAST,
|
||||
BDA_NO_MULTICAST
|
||||
} BDA_MULTICAST_MODE, *PBDA_MULTICAST_MODE;
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
// BDA Network IPv4 Filter Property Set
|
||||
//
|
||||
// {71985F44-1CA1-11d3-9CC8-00C04F7971E0}
|
||||
//
|
||||
typedef struct _BDA_IPv4_ADDRESS {
|
||||
BYTE rgbAddress[4];
|
||||
} BDA_IPv4_ADDRESS, *PBDA_IPv4_ADDRESS;
|
||||
|
||||
typedef struct _BDA_IPv4_ADDRESS_LIST {
|
||||
ULONG ulcAddresses;
|
||||
BDA_IPv4_ADDRESS rgAddressl[MIN_DIMENSION];
|
||||
} BDA_IPv4_ADDRESS_LIST, * PBDA_IPv4_ADDRESS_LIST;
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
// BDA Network IPv4 Filter Property Set
|
||||
//
|
||||
// {E1785A74-2A23-4fb3-9245-A8F88017EF33}
|
||||
//
|
||||
typedef struct _BDA_IPv6_ADDRESS {
|
||||
BYTE rgbAddress[6];
|
||||
} BDA_IPv6_ADDRESS, *PBDA_IPv6_ADDRESS;
|
||||
|
||||
typedef struct _BDA_IPv6_ADDRESS_LIST {
|
||||
ULONG ulcAddresses;
|
||||
BDA_IPv6_ADDRESS rgAddressl[MIN_DIMENSION];
|
||||
} BDA_IPv6_ADDRESS_LIST, * PBDA_IPv6_ADDRESS_LIST;
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
// BDA Signal Property Set
|
||||
//
|
||||
// {D2F1644B-B409-11d2-BC69-00A0C9EE9E16}
|
||||
//
|
||||
typedef enum {
|
||||
BDA_SIGNAL_UNAVAILABLE = 0,
|
||||
BDA_SIGNAL_INACTIVE,
|
||||
BDA_SIGNAL_ACTIVE
|
||||
} BDA_SIGNAL_STATE, * PBDA_SIGNAL_STATE;
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
// BDA Change Sync Method Set
|
||||
//
|
||||
// {FD0A5AF3-B41D-11d2-9C95-00C04F7971E0}
|
||||
//
|
||||
typedef enum
|
||||
{
|
||||
BDA_CHANGES_COMPLETE = 0,
|
||||
BDA_CHANGES_PENDING
|
||||
|
||||
} BDA_CHANGE_STATE, * PBDA_CHANGE_STATE;
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
// BDA Device Configuration Method Set
|
||||
//
|
||||
// {71985F45-1CA1-11d3-9CC8-00C04F7971E0}
|
||||
//
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
// BDA Topology Property Set
|
||||
//
|
||||
// {A14EE835-0A23-11d3-9CC7-00C04F7971E0}
|
||||
//
|
||||
|
||||
typedef struct _BDANODE_DESCRIPTOR
|
||||
{
|
||||
ULONG ulBdaNodeType; // The node type as it is used
|
||||
// in the BDA template topology
|
||||
|
||||
GUID guidFunction; // GUID from BdaMedia.h describing
|
||||
// the node's function (e.g.
|
||||
// KSNODE_BDA_RF_TUNER)
|
||||
|
||||
GUID guidName; // GUID that can be use to look up
|
||||
// a displayable name for the node.
|
||||
} BDANODE_DESCRIPTOR, *PBDANODE_DESCRIPTOR;
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
// BDA Void Transform Property Set
|
||||
//
|
||||
// {71985F46-1CA1-11d3-9CC8-00C04F7971E0}
|
||||
//
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
// BDA Null Transform Property Set
|
||||
//
|
||||
// {DDF15B0D-BD25-11d2-9CA0-00C04F7971E0}
|
||||
//
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
// BDA Frequency Filter Property Set
|
||||
//
|
||||
// {71985F47-1CA1-11d3-9CC8-00C04F7971E0}
|
||||
//
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
// BDA Autodemodulate Property Set
|
||||
//
|
||||
// {DDF15B12-BD25-11d2-9CA0-00C04F7971E0}
|
||||
//
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
// BDA PmtProcessor Property Set
|
||||
//
|
||||
// {516B99C5-971C-4aaf-B3F3-D9FDA8A15E16}
|
||||
//
|
||||
|
||||
typedef struct _BDA_PMT
|
||||
{
|
||||
ULONG ulTableID;
|
||||
ULONG ulcbSectionLength;
|
||||
ULONG argbSectionData[MIN_DIMENSION];
|
||||
} BDA_PMT, *PBDA_PMT;
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
// BDA Descriptor Property Set
|
||||
//
|
||||
// {DE6A1C9E-87DF-48aa-95AA-289B7AA4F49F}
|
||||
//
|
||||
|
||||
typedef struct _BDA_CAT_DESCRIPTOR
|
||||
{
|
||||
ULONG ulTag;
|
||||
ULONG ulcbLength;
|
||||
ULONG argbData[MIN_DIMENSION];
|
||||
} BDA_CAT_DESCRIPTOR, *PBDA_CAT_DESCRIPTOR;
|
||||
|
||||
typedef struct _BDA_ES_DESCRIPTOR
|
||||
{
|
||||
ULONG ulProgramNum;
|
||||
ULONG ulContentPID;
|
||||
ULONG ulTag;
|
||||
ULONG ulcbLength;
|
||||
ULONG argbData[MIN_DIMENSION];
|
||||
} BDA_ES_DESCRIPTOR, *PBDA_ES_DESCRIPTOR;
|
||||
|
||||
typedef struct _BDA_PROGRAM_DESCRIPTOR
|
||||
{
|
||||
ULONG ulProgramNum;
|
||||
ULONG ulTag;
|
||||
ULONG ulcbLength;
|
||||
ULONG argbData[MIN_DIMENSION];
|
||||
} BDA_PROGRAM_DESCRIPTOR, *PBDA_PROGRAM_DESCRIPTOR;
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
// BDA EsMap Property Set
|
||||
//
|
||||
// {FA14A8B3-6068-48ef-96DD-53010B985A7D}
|
||||
//
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ES_MAP_STATE_GOOD_FLOW = 0,
|
||||
ES_MAP_STATE_NO_CONTENT,
|
||||
ES_MAP_STATE_NO_ECM,
|
||||
ES_MAP_STATE_BAD_MAP
|
||||
} BDA_ES_MAP_STATE, *PBDA_ES_MAP_STATE;
|
||||
|
||||
typedef struct _BDA_ES_MAP
|
||||
{
|
||||
ULONG ulContentPID;
|
||||
ULONG ulProgramNum;
|
||||
ULONG ulStreamType;
|
||||
BDA_ES_MAP_STATE mapState;
|
||||
} BDA_ES_MAP, *PBDA_ES_MAP;
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
// BDA PID Filter Property Set
|
||||
//
|
||||
// {D0A67D65-08DF-4fec-8533-E5B550410B85}
|
||||
//
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// From IEnumPIDMap interface
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
typedef enum {
|
||||
MEDIA_TRANSPORT_PACKET, // complete TS packet e.g. pass-through mode
|
||||
MEDIA_ELEMENTARY_STREAM, // PES payloads; audio/video only
|
||||
MEDIA_MPEG2_PSI, // PAT, PMT, CAT, Private
|
||||
MEDIA_TRANSPORT_PAYLOAD // gathered TS packet payloads (PES packets, etc...)
|
||||
} MEDIA_SAMPLE_CONTENT ;
|
||||
|
||||
typedef struct {
|
||||
ULONG ulPID ;
|
||||
MEDIA_SAMPLE_CONTENT MediaSampleContent ;
|
||||
} PID_MAP ;
|
||||
|
||||
typedef struct _BDA_PID_MAP
|
||||
{
|
||||
MEDIA_SAMPLE_CONTENT MediaSampleContent;
|
||||
ULONG ulcPIDs;
|
||||
ULONG aulPIDs[MIN_DIMENSION];
|
||||
} BDA_PID_MAP, *PBDA_PID_MAP;
|
||||
|
||||
typedef struct _BDA_PID_UNMAP
|
||||
{
|
||||
ULONG ulcPIDs;
|
||||
ULONG aulPIDs[MIN_DIMENSION];
|
||||
} BDA_PID_UNMAP, *PBDA_PID_UNMAP;
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
// BDA CA Property Set
|
||||
//
|
||||
// {B0693766-5278-4ec6-B9E1-3CE40560EF5A}
|
||||
//
|
||||
typedef struct _BDA_CA_MODULE_UI
|
||||
{
|
||||
ULONG ulFormat;
|
||||
ULONG ulbcDesc;
|
||||
ULONG ulDesc[MIN_DIMENSION];
|
||||
} BDA_CA_MODULE_UI, *PBDA_CA_MODULE_UI;
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
// BDA CA Event Set
|
||||
//
|
||||
// {488C4CCC-B768-4129-8EB1-B00A071F9068}
|
||||
//
|
||||
|
||||
|
||||
|
||||
//=============================================================
|
||||
//
|
||||
//
|
||||
// BDA Tuning Model enumerations
|
||||
//
|
||||
//
|
||||
//=============================================================
|
||||
|
||||
// system type for particular DVB Tuning Space instance
|
||||
typedef enum DVBSystemType {
|
||||
DVB_Cable,
|
||||
DVB_Terrestrial,
|
||||
DVB_Satellite,
|
||||
} DVBSystemType;
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
// BDA Channel Tune Request
|
||||
|
||||
V1_ENUM enum {
|
||||
BDA_UNDEFINED_CHANNEL = -1,
|
||||
};
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
// BDA Component(substream)
|
||||
//
|
||||
|
||||
typedef V1_ENUM enum ComponentCategory
|
||||
{
|
||||
CategoryNotSet = -1,
|
||||
CategoryOther = 0,
|
||||
CategoryVideo,
|
||||
CategoryAudio,
|
||||
CategoryText,
|
||||
CategoryData,
|
||||
} ComponentCategory;
|
||||
|
||||
// Component Status
|
||||
typedef enum ComponentStatus
|
||||
{
|
||||
StatusActive,
|
||||
StatusInactive,
|
||||
StatusUnavailable,
|
||||
} ComponentStatus;
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
// BDA MPEG2 Component Type
|
||||
//
|
||||
// from the MPEG2 specification
|
||||
typedef V1_ENUM enum MPEG2StreamType {
|
||||
BDA_UNITIALIZED_MPEG2STREAMTYPE = -1,
|
||||
Reserved1 = 0x0,
|
||||
ISO_IEC_11172_2_VIDEO = Reserved1 + 1,
|
||||
ISO_IEC_13818_2_VIDEO = ISO_IEC_11172_2_VIDEO + 1,
|
||||
ISO_IEC_11172_3_AUDIO = ISO_IEC_13818_2_VIDEO + 1,
|
||||
ISO_IEC_13818_3_AUDIO = ISO_IEC_11172_3_AUDIO + 1,
|
||||
ISO_IEC_13818_1_PRIVATE_SECTION = ISO_IEC_13818_3_AUDIO + 1,
|
||||
ISO_IEC_13818_1_PES = ISO_IEC_13818_1_PRIVATE_SECTION + 1,
|
||||
ISO_IEC_13522_MHEG = ISO_IEC_13818_1_PES + 1,
|
||||
ANNEX_A_DSM_CC = ISO_IEC_13522_MHEG + 1,
|
||||
ITU_T_REC_H_222_1 = ANNEX_A_DSM_CC + 1,
|
||||
ISO_IEC_13818_6_TYPE_A = ITU_T_REC_H_222_1 + 1,
|
||||
ISO_IEC_13818_6_TYPE_B = ISO_IEC_13818_6_TYPE_A + 1,
|
||||
ISO_IEC_13818_6_TYPE_C = ISO_IEC_13818_6_TYPE_B + 1,
|
||||
ISO_IEC_13818_6_TYPE_D = ISO_IEC_13818_6_TYPE_C + 1,
|
||||
ISO_IEC_13818_1_AUXILIARY = ISO_IEC_13818_6_TYPE_D + 1,
|
||||
ISO_IEC_13818_1_RESERVED = ISO_IEC_13818_1_AUXILIARY + 1,
|
||||
USER_PRIVATE = ISO_IEC_13818_1_RESERVED + 1
|
||||
} MPEG2StreamType;
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
// BDA ATSC Component Type
|
||||
//
|
||||
//
|
||||
// ATSC made AC3 Audio a descriptor instead of
|
||||
// defining a user private stream type.
|
||||
typedef enum ATSCComponentTypeFlags {
|
||||
// bit flags for various component type properties
|
||||
ATSCCT_AC3 = 0x00000001,
|
||||
} ATSCComponentTypeFlags;
|
||||
|
||||
|
||||
//------------------------------------------------------------
|
||||
//
|
||||
// BDA Locators
|
||||
//
|
||||
|
||||
|
||||
typedef V1_ENUM enum BinaryConvolutionCodeRate {
|
||||
BDA_BCC_RATE_NOT_SET = -1,
|
||||
BDA_BCC_RATE_NOT_DEFINED = 0,
|
||||
BDA_BCC_RATE_1_2 = 1, // 1/2
|
||||
BDA_BCC_RATE_2_3, // 2/3
|
||||
BDA_BCC_RATE_3_4, // 3/4
|
||||
BDA_BCC_RATE_3_5,
|
||||
BDA_BCC_RATE_4_5,
|
||||
BDA_BCC_RATE_5_6, // 5/6
|
||||
BDA_BCC_RATE_5_11,
|
||||
BDA_BCC_RATE_7_8, // 7/8
|
||||
BDA_BCC_RATE_MAX,
|
||||
} BinaryConvolutionCodeRate;
|
||||
|
||||
typedef V1_ENUM enum FECMethod {
|
||||
BDA_FEC_METHOD_NOT_SET = -1,
|
||||
BDA_FEC_METHOD_NOT_DEFINED = 0,
|
||||
BDA_FEC_VITERBI = 1, // FEC is a Viterbi Binary Convolution.
|
||||
BDA_FEC_RS_204_188, // The FEC is Reed-Solomon 204/188 (outer FEC)
|
||||
BDA_FEC_MAX,
|
||||
} FECMethod;
|
||||
|
||||
typedef V1_ENUM enum ModulationType {
|
||||
BDA_MOD_NOT_SET = -1,
|
||||
BDA_MOD_NOT_DEFINED = 0,
|
||||
BDA_MOD_16QAM = 1,
|
||||
BDA_MOD_32QAM,
|
||||
BDA_MOD_64QAM,
|
||||
BDA_MOD_80QAM,
|
||||
BDA_MOD_96QAM,
|
||||
BDA_MOD_112QAM,
|
||||
BDA_MOD_128QAM,
|
||||
BDA_MOD_160QAM,
|
||||
BDA_MOD_192QAM,
|
||||
BDA_MOD_224QAM,
|
||||
BDA_MOD_256QAM,
|
||||
BDA_MOD_320QAM,
|
||||
BDA_MOD_384QAM,
|
||||
BDA_MOD_448QAM,
|
||||
BDA_MOD_512QAM,
|
||||
BDA_MOD_640QAM,
|
||||
BDA_MOD_768QAM,
|
||||
BDA_MOD_896QAM,
|
||||
BDA_MOD_1024QAM,
|
||||
BDA_MOD_QPSK,
|
||||
BDA_MOD_BPSK,
|
||||
BDA_MOD_OQPSK,
|
||||
BDA_MOD_8VSB,
|
||||
BDA_MOD_16VSB,
|
||||
BDA_MOD_ANALOG_AMPLITUDE, // std am
|
||||
BDA_MOD_ANALOG_FREQUENCY, // std fm
|
||||
BDA_MOD_MAX,
|
||||
} ModulationType;
|
||||
|
||||
typedef V1_ENUM enum SpectralInversion {
|
||||
BDA_SPECTRAL_INVERSION_NOT_SET = -1,
|
||||
BDA_SPECTRAL_INVERSION_NOT_DEFINED = 0,
|
||||
BDA_SPECTRAL_INVERSION_AUTOMATIC = 1,
|
||||
BDA_SPECTRAL_INVERSION_NORMAL,
|
||||
BDA_SPECTRAL_INVERSION_INVERTED,
|
||||
BDA_SPECTRAL_INVERSION_MAX
|
||||
} SpectralInversion;
|
||||
|
||||
typedef V1_ENUM enum Polarisation {
|
||||
BDA_POLARISATION_NOT_SET = -1,
|
||||
BDA_POLARISATION_NOT_DEFINED = 0,
|
||||
BDA_POLARISATION_LINEAR_H = 1, // Linear horizontal polarisation
|
||||
BDA_POLARISATION_LINEAR_V, // Linear vertical polarisation
|
||||
BDA_POLARISATION_CIRCULAR_L, // Circular left polarisation
|
||||
BDA_POLARISATION_CIRCULAR_R, // Circular right polarisation
|
||||
BDA_POLARISATION_MAX,
|
||||
} Polarisation;
|
||||
|
||||
typedef V1_ENUM enum GuardInterval {
|
||||
BDA_GUARD_NOT_SET = -1,
|
||||
BDA_GUARD_NOT_DEFINED = 0,
|
||||
BDA_GUARD_1_32 = 1, // Guard interval is 1/32
|
||||
BDA_GUARD_1_16, // Guard interval is 1/16
|
||||
BDA_GUARD_1_8, // Guard interval is 1/8
|
||||
BDA_GUARD_1_4, // Guard interval is 1/4
|
||||
BDA_GUARD_MAX,
|
||||
} GuardInterval;
|
||||
|
||||
typedef V1_ENUM enum HierarchyAlpha {
|
||||
BDA_HALPHA_NOT_SET = -1,
|
||||
BDA_HALPHA_NOT_DEFINED = 0,
|
||||
BDA_HALPHA_1 = 1, // Hierarchy alpha is 1.
|
||||
BDA_HALPHA_2, // Hierarchy alpha is 2.
|
||||
BDA_HALPHA_4, // Hierarchy alpha is 4.
|
||||
BDA_HALPHA_MAX,
|
||||
} HierarchyAlpha;
|
||||
|
||||
typedef V1_ENUM enum TransmissionMode {
|
||||
BDA_XMIT_MODE_NOT_SET = -1,
|
||||
BDA_XMIT_MODE_NOT_DEFINED = 0,
|
||||
BDA_XMIT_MODE_2K = 1, // Transmission uses 1705 carriers (use a 2K FFT)
|
||||
BDA_XMIT_MODE_8K, // Transmission uses 6817 carriers (use an 8K FFT)
|
||||
BDA_XMIT_MODE_MAX,
|
||||
} TransmissionMode;
|
||||
|
||||
#endif // not defined _BDATYPES_
|
||||
|
||||
// end of file -- bdatypes.h
|
||||
26
game_re/third_party/mssdk/include/comlite.h
vendored
26
game_re/third_party/mssdk/include/comlite.h
vendored
@@ -1,26 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// File: COMLite.h
|
||||
//
|
||||
// Desc: This header file is to provide a migration path for users of
|
||||
// ActiveMovie betas 1 and 2.
|
||||
//
|
||||
// Copyright (c) 1992 - 2000, Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
#ifndef _INC_COMLITE_
|
||||
#define _INC_COMLITE_
|
||||
|
||||
#define QzInitialize CoInitialize
|
||||
#define QzUninitialize CoUninitialize
|
||||
#define QzFreeUnusedLibraries CoFreeUnusedLibraries
|
||||
|
||||
#define QzGetMalloc CoGetMalloc
|
||||
#define QzTaskMemAlloc CoTaskMemAlloc
|
||||
#define QzTaskMemRealloc CoTaskMemRealloc
|
||||
#define QzTaskMemFree CoTaskMemFree
|
||||
#define QzCreateFilterObject CoCreateInstance
|
||||
#define QzCLSIDFromString CLSIDFromString
|
||||
#define QzStringFromGUID2 StringFromGUID2
|
||||
|
||||
#endif // _INC_COMLITE_
|
||||
5539
game_re/third_party/mssdk/include/control.h
vendored
5539
game_re/third_party/mssdk/include/control.h
vendored
File diff suppressed because it is too large
Load Diff
1687
game_re/third_party/mssdk/include/d3d.h
vendored
1687
game_re/third_party/mssdk/include/d3d.h
vendored
File diff suppressed because it is too large
Load Diff
1276
game_re/third_party/mssdk/include/d3d8.h
vendored
1276
game_re/third_party/mssdk/include/d3d8.h
vendored
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user