Initial commit: ROW Client source code

Game client codebase including:
- CharacterActionControl: Character and creature management
- GlobalScript: Network, items, skills, quests, utilities
- RYLClient: Main client application with GUI and event handlers
- Engine: 3D rendering engine (RYLGL)
- MemoryManager: Custom memory allocation
- Library: Third-party dependencies (DirectX, boost, etc.)
- Tools: Development utilities

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-29 16:24:34 +09:00
commit e067522598
5135 changed files with 1745744 additions and 0 deletions

View File

@@ -0,0 +1,385 @@
//------------------------------------------------------------------------------
// File: Bdasampl.cpp
//
// Desc: Sample code implementing BDA graph building.
//
// Copyright (c) 2000-2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#include "bdasampl.h"
#include "graph.h"
#include "resource.h"
#include <initguid.h>
#include <objbase.h>
// Globals
HWND hwndMain;
HWND g_hwndDlg;
HINSTANCE hInst;
TCHAR szAppName[] = TEXT("BDASampl");
TCHAR szAppTitle[] = TEXT("BDA Sample");
CBDAFilterGraph* g_pfg = NULL;
const int MAJOR_CHANNEL_LOWER_LIMIT = -1;
const int MAJOR_CHANNEL_UPPER_LIMIT = 126;
const int MINOR_CHANNEL_LOWER_LIMIT = -1;
const int MINOR_CHANNEL_UPPER_LIMIT = 126;
INT WINAPI
WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine,
INT nCmdShow)
{
MSG msg;
HWND hwnd;
WNDCLASS wndclass;
HACCEL hAccel;
hInst = hInstance;
//initialize COM library
HRESULT hr = CoInitializeEx (NULL, COINIT_MULTITHREADED);
if (FAILED (hr))
{
MessageBox(
NULL,
TEXT("Failed to load COM library!"),
TEXT("Initialization Error"),
MB_ICONEXCLAMATION
);
return 0;
}
wndclass.style = 0; //CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInst;
wndclass.hIcon = LoadIcon(hInst, TEXT("BDASAMPLICON"));
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 2);
wndclass.lpszMenuName = szAppName;
wndclass.lpszClassName = szAppName;
RegisterClass(&wndclass);
hwnd = CreateWindow(szAppName, szAppTitle, WS_OVERLAPPEDWINDOW |
WS_CLIPCHILDREN, 200, 200, 500, 280, NULL, NULL, hInst, NULL);
ASSERT(hwnd);
// Create the BDA filter graph and initialize its components
g_pfg = new CBDAFilterGraph();
ASSERT(g_pfg);
// If the graph failed to build, don't go any further.
if (!g_pfg)
{
MessageBox(hwnd, TEXT("Failed to create the filter graph!"),
TEXT("Initialization Error"), MB_ICONEXCLAMATION);
return 0;
}
ShowWindow(hwnd, nCmdShow);
hwndMain = hwnd;
hAccel = LoadAccelerators(hInst, MAKEINTRESOURCE(ACC_GRAPH));
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
if(!TranslateAccelerator(hwnd, hAccel, &msg))
{
//if (!IsDialogMessage (hwnd, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
// Release the BDA components and clean up
delete g_pfg;
CoUninitialize ();
return msg.wParam;
}
// WndProc
LRESULT CALLBACK
WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_CREATE:
{
DbgInitialise (hInst);
break
;
}
case WM_SIZE:
{
if(g_pfg->m_fGraphBuilt)
g_pfg->SetVideoWindow(hwndMain);
break;
}
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDM_BUILD_ATSC:
{
if(FAILED(g_pfg->BuildGraph(ATSC)))
{
ErrorMessageBox(TEXT("Could not Build the ATSC BDA FilterGraph."));
}
else
{
g_pfg->SetVideoWindow(hwndMain);
}
HMENU hMenu = GetSubMenu (GetMenu (hwnd), 1);
EnableMenuItem (hMenu, IDM_BUILD_ATSC, MF_GRAYED | MF_BYCOMMAND);
EnableMenuItem (
hMenu,
IDM_STOP_GRAPH,
(g_pfg->m_fGraphRunning) ? (MF_BYCOMMAND|MF_ENABLED) : (MF_BYCOMMAND|MF_GRAYED)
);
EnableMenuItem (
hMenu,
IDM_SELECT_CHANNEL,
(g_pfg->m_fGraphBuilt) ? (MF_BYCOMMAND|MF_ENABLED) : (MF_BYCOMMAND|MF_GRAYED) );
break;
}
case IDM_RUN_GRAPH:
{
if(g_pfg->m_fGraphBuilt)
{
if(!g_pfg->m_fGraphRunning)
{
if(FAILED(g_pfg->RunGraph()))
{
ErrorMessageBox(TEXT("Could not play the FilterGraph."));
}
}
}
else
{
ErrorMessageBox(TEXT("The FilterGraph is not yet built."));
}
break;
}
case IDM_STOP_GRAPH:
{
if(g_pfg->m_fGraphBuilt)
{
if(g_pfg->m_fGraphRunning)
{
if(FAILED(g_pfg->StopGraph()))
{
ErrorMessageBox(TEXT("Could not stop the FilterGraph,"));
}
}
}
else
{
ErrorMessageBox(TEXT("The FilterGraph is not yet built."));
}
HMENU hMenu = GetSubMenu (GetMenu (hwnd), 1);
EnableMenuItem (
hMenu,
IDM_SELECT_CHANNEL,
MF_BYCOMMAND | MF_GRAYED);
break;
}
case IDM_SELECT_CHANNEL:
{
if(g_pfg->m_fGraphBuilt)
{
g_hwndDlg = reinterpret_cast <HWND> ( DialogBox(
hInst,
MAKEINTRESOURCE(IDD_SELECT_CHANNEL),
hwnd,
reinterpret_cast<DLGPROC>(SelectChannelDlgProc)
) );
}
else
{
ErrorMessageBox(TEXT("The FilterGraph is not yet built."));
}
break;
}
case IDM_ABOUT:
{
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUT), hwnd,
reinterpret_cast<DLGPROC>(AboutDlgProc));
break;
}
case IDM_EXIT:
{
DbgTerminate();
PostQuitMessage(0);
break;
}
default:
break;
}
case WM_INITMENU:
if(g_pfg->m_fGraphFailure)
{
EnableMenuItem((HMENU)wParam, IDM_BUILD_ATSC, MF_BYCOMMAND| MF_GRAYED);
EnableMenuItem((HMENU)wParam, IDM_RUN_GRAPH, MF_BYCOMMAND| MF_GRAYED);
EnableMenuItem((HMENU)wParam, IDM_STOP_GRAPH, MF_BYCOMMAND| MF_GRAYED);
}
else
{
EnableMenuItem((HMENU)wParam, IDM_RUN_GRAPH,
g_pfg->m_fGraphRunning ? MF_BYCOMMAND|MF_GRAYED : MF_BYCOMMAND|MF_ENABLED);
EnableMenuItem((HMENU)wParam, IDM_BUILD_ATSC,
g_pfg->m_fGraphBuilt ? MF_BYCOMMAND|MF_GRAYED : MF_BYCOMMAND|MF_ENABLED);
// we can stop viewing if it's currently viewing
EnableMenuItem((HMENU)wParam, IDM_STOP_GRAPH,
(g_pfg->m_fGraphRunning) ? MF_BYCOMMAND|MF_ENABLED : MF_BYCOMMAND|MF_GRAYED);
}
EnableMenuItem(
(HMENU)wParam,
IDM_SELECT_CHANNEL,
g_pfg->m_fGraphBuilt ? MF_BYCOMMAND|MF_ENABLED : MF_BYCOMMAND|MF_GRAYED);
break;
case WM_CLOSE:
case WM_DESTROY:
DbgTerminate();
PostQuitMessage(0);
break;
default:
break;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
// AboutDlgProc
//
// Dialog Procedure for the "about" dialog box.
//
BOOL CALLBACK
AboutDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_COMMAND:
EndDialog(hwnd, TRUE);
return TRUE;
case WM_INITDIALOG:
return TRUE;
}
return FALSE;
}
// SelectChannelDlgProc
// Dialog Procedure for the "Select Channel" dialog box.
//
BOOL CALLBACK
SelectChannelDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
LONG lChannelMaj = g_pfg->GetMajorChannel ();
LONG lChannelMin = g_pfg->GetMinorChannel ();
BOOL bRet = FALSE;
switch(message)
{
case WM_INITDIALOG:
{
//refresh the controls
SetDlgItemInt (hDlg, IDC_MAJOR_CHANNEL, lChannelMaj, TRUE);
SetDlgItemInt (hDlg, IDC_MINOR_CHANNEL, lChannelMin, TRUE);
//set the spin controls
HWND hWndSpin = GetDlgItem (hDlg, IDC_SPIN_MAJOR);
::SendMessage(
hWndSpin,
UDM_SETRANGE32,
static_cast <WPARAM> (MINOR_CHANNEL_LOWER_LIMIT),
static_cast <LPARAM> (MAJOR_CHANNEL_UPPER_LIMIT)
);
hWndSpin = GetDlgItem (hDlg, IDC_SPIN_MINOR);
::SendMessage(
hWndSpin,
UDM_SETRANGE32,
static_cast <WPARAM> (MINOR_CHANNEL_LOWER_LIMIT),
static_cast <LPARAM> (MINOR_CHANNEL_UPPER_LIMIT)
);
break;
}
case WM_DESTROY:
{
EndDialog (hDlg, 0);
return TRUE;
}
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDC_ENTER:
{
lChannelMaj = (LONG) GetDlgItemInt(hDlg, IDC_MAJOR_CHANNEL, &bRet, TRUE);
lChannelMin = (LONG) GetDlgItemInt(hDlg, IDC_MINOR_CHANNEL, &bRet, TRUE);
g_pfg->ChangeChannel (lChannelMaj, lChannelMin);
break;
}
case IDOK:
{
lChannelMaj = (LONG) GetDlgItemInt(hDlg, IDC_MAJOR_CHANNEL, &bRet, TRUE);
lChannelMin = (LONG) GetDlgItemInt(hDlg, IDC_MINOR_CHANNEL, &bRet, TRUE);
g_pfg->ChangeChannel (lChannelMaj, lChannelMin);
}
case IDCANCEL:
{
EndDialog (hDlg, 0);
break;
}
}
break;
}
}
return FALSE;
}
// ErrorMessageBox
//
// Opens a Message box with a error message in it. The user can
// select the OK button to continue.
//
VOID
ErrorMessageBox(LPTSTR sz,...)
{
static TCHAR ach[2000];
va_list va;
va_start(va, sz);
wvsprintf(ach, sz, va);
va_end(va);
MessageBox(hwndMain, ach, NULL, MB_OK|MB_ICONEXCLAMATION|MB_TASKMODAL);
}

View File

@@ -0,0 +1,11 @@
NAME BDASAMPL
DESCRIPTION 'Test app for BDA'
EXETYPE WINDOWS
CODE MOVEABLE DISCARDABLE LOADONCALL
DATA MOVEABLE MULTIPLE
HEAPSIZE 1024
STACKSIZE 8192

View File

@@ -0,0 +1,130 @@
# Microsoft Developer Studio Project File - Name="BDASample" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Application" 0x0101
CFG=BDASample - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "bdasampl.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "bdasampl.mak" CFG="BDASample - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "BDASample - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "BDASample - Win32 Debug" (based on "Win32 (x86) Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "BDASample - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "NDEBUG" /D WINVER=0x400 /D _WIN32_WINNT=0x400 /D "_WINDOWS" /FD /c
# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /i "..\..\BaseClasses" /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
# ADD LINK32 ..\..\baseclasses\release\strmbase.lib quartz.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib ole32.lib winmm.lib msacm32.lib olepro32.lib oleaut32.lib advapi32.lib uuid.lib strmiids.lib /nologo /subsystem:windows /pdb:none /machine:I386 /out:"Release/bdasample.exe" /libpath:"..\..\..\..\..\lib" /OPT:NOREF /OPT:ICF
# SUBTRACT LINK32 /nodefaultlib
!ELSEIF "$(CFG)" == "BDASample - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /MTd /W3 /GX /Zi /Od /I "..\..\BaseClasses" /I "..\..\..\..\..\include" /D "WIN32" /D "_DEBUG" /D WINVER=0x400 /D _WIN32_WINNT=0x400 /D "_WINDOWS" /D "DEBUG" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /i "..\..\directshow\BaseClasses" /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# ADD LINK32 ..\..\baseclasses\debug\strmbasd.lib quartz.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib ole32.lib winmm.lib msacm32.lib olepro32.lib oleaut32.lib advapi32.lib uuid.lib /nologo /subsystem:windows /pdb:none /debug /machine:I386 /out:"Debug/bdasample.exe" /libpath:"..\..\..\..\..\lib"
# SUBTRACT LINK32 /nodefaultlib
!ENDIF
# Begin Target
# Name "BDASample - Win32 Release"
# Name "BDASample - Win32 Debug"
# Begin Group "Header Files"
# PROP Default_Filter ".h"
# Begin Source File
SOURCE=.\bdasampl.h
# End Source File
# Begin Source File
SOURCE=.\graph.h
# End Source File
# Begin Source File
SOURCE=.\resource.h
# End Source File
# End Group
# Begin Group "Source Files"
# PROP Default_Filter ".cpp, .c"
# Begin Source File
SOURCE=.\bdasampl.cpp
# End Source File
# Begin Source File
SOURCE=.\graph.cpp
# End Source File
# End Group
# Begin Source File
SOURCE=.\bdasampl.ico
# End Source File
# Begin Source File
SOURCE=.\bdasampl.rc
# End Source File
# End Target
# End Project

View File

@@ -0,0 +1,44 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "BDASample"=.\bdasampl.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name BaseClasses
End Project Dependency
}}}
###############################################################################
Project: "BaseClasses"=..\..\BaseClasses\baseclasses.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@@ -0,0 +1,54 @@
//------------------------------------------------------------------------------
// File: Bdasampl.h
//
// Desc: Sample code header file for BDA graph building.
//
// Copyright (c) 2000-2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#ifndef BDASAMPL_H_INCLUDED_
#define BDASAMPL_H_INCLUDED_
#include <streams.h>
#include <mmreg.h>
#include <msacm.h>
#include <fcntl.h>
#include <io.h>
#include <stdio.h>
// Temporarily disable /W4 C4201: nonstandard extension used : nameless struct/union
#pragma warning(disable:4201)
#include <ks.h>
// Enable default handling of C4201 warning
#pragma warning(default:4201)
#include <ksmedia.h>
#include <bdatypes.h>
#include <bdamedia.h>
#include <bdaiface.h>
#include <uuids.h>
#include <tuner.h>
#include <commctrl.h>
#include <atlbase.h>
#include "resource.h"
//-----------------------------------------------------------------------------
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK AboutDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
BOOL CALLBACK SelectChannelDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
VOID ErrorMessageBox(LPTSTR sz,...);
//-----------------------------------------------------------------------------
// index of tuning spaces
enum NETWORK_TYPE
{
ATSC = 0x0003
};
#endif // BDASAMPL_H_INCLUDED_

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,208 @@
//Microsoft Developer Studio generated resource script.
//
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS
#include "resource.h"
#include "ntverp.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
BDASAMPLICON ICON DISCARDABLE "bdasampl.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
BDASAMPL MENU DISCARDABLE
BEGIN
POPUP "&File"
BEGIN
MENUITEM "E&xit", IDM_EXIT
END
POPUP "HDTV &Control"
BEGIN
MENUITEM "Build &ATSC Graph\tCtrl+A", IDM_BUILD_ATSC
MENUITEM SEPARATOR
MENUITEM "&Run Graph\tCtrl+R", IDM_RUN_GRAPH
MENUITEM "S&top Graph\tCtrl+T", IDM_STOP_GRAPH
MENUITEM SEPARATOR
MENUITEM "&Select Channel\tCtrl+S", IDM_SELECT_CHANNEL
END
POPUP "&Help"
BEGIN
MENUITEM "&About...", IDM_ABOUT
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
ACC_GRAPH ACCELERATORS MOVEABLE PURE
BEGIN
"^A", IDM_BUILD_ATSC, ASCII, NOINVERT
"^R", IDM_RUN_GRAPH, ASCII, NOINVERT
"^S", IDM_SELECT_CHANNEL, ASCII, NOINVERT
"^T", IDM_STOP_GRAPH, ASCII, NOINVERT
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_SELECT_CHANNEL DIALOG DISCARDABLE 12, 15, 178, 71
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Select Channel"
FONT 8, "MS Shell Dlg"
BEGIN
EDITTEXT IDC_MAJOR_CHANNEL,41,20,22,12,ES_CENTER | ES_LOWERCASE |
ES_NUMBER | WS_GROUP
CONTROL "Spin1",IDC_SPIN_MAJOR,"msctls_updown32",UDS_SETBUDDYINT |
UDS_AUTOBUDDY | UDS_ARROWKEYS,62,20,11,14
EDITTEXT IDC_MINOR_CHANNEL,41,40,22,12,ES_CENTER | ES_LOWERCASE |
ES_NUMBER | WS_GROUP
CONTROL "Spin2",IDC_SPIN_MINOR,"msctls_updown32",UDS_SETBUDDYINT |
UDS_AUTOBUDDY | UDS_ARROWKEYS,62,39,11,14
PUSHBUTTON "&Enter",IDC_ENTER,82,29,28,14,WS_GROUP
DEFPUSHBUTTON "&OK",IDOK,127,13,40,14
PUSHBUTTON "&Cancel",IDCANCEL,127,30,40,14
GROUPBOX "ATSC Channels",IDC_STATIC,11,9,106,49,WS_GROUP
CTEXT "Major",109,18,23,18,8,SS_CENTERIMAGE
CTEXT "Minor",108,18,42,18,8,SS_CENTERIMAGE
END
IDD_ABOUT DIALOG DISCARDABLE 12, 15, 182, 107
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "About BDA Sample"
FONT 8, "MS Shell Dlg"
BEGIN
CTEXT "DirectX 8 SDK BDA Sample",IDC_STATIC,51,12,98,8,NOT
WS_GROUP
CTEXT "Version 8.1",IDC_STATIC,21,56,140,8,NOT WS_GROUP
CTEXT "Copyright <20> 2000-2001 Microsoft Corporation",
IDC_STATIC,8,70,166,8,NOT WS_GROUP
DEFPUSHBUTTON "OK",IDOK,72,87,32,14,WS_GROUP
LTEXT "This sample allows you to build ATSC filter graphs to tune and view digital television signals.",
IDC_STATIC,10,34,161,21
ICON "BDASAMPLICON",IDC_STATIC,21,5,20,20
END
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resrc1.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""windows.h""\r\n"
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""bdasampl.h""\r\n"
"#include ""resource.h""\r\n"
"#include ""ntverp.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 8,1,0,0
PRODUCTVERSION 8,1,0,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904B0"
BEGIN
VALUE "Comments", "DirectShow Sample\0"
VALUE "CompanyName", "Microsoft\0"
VALUE "FileDescription", "BDA Sample Application\0"
VALUE "FileVersion", "8.10\0"
VALUE "InternalName", "BDASample\0"
VALUE "LegalCopyright", "Copyright (c) 2000-2001 Microsoft Corporation\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "BDASample.EXE\0"
VALUE "ProductName", "DirectX 8 SDK\0"
VALUE "ProductVersion", "8.1\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#endif // !_MAC
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,125 @@
//------------------------------------------------------------------------------
// File: Graph.h
//
// Desc: Sample code for BDA graph building.
//
// Copyright (c) 2000-2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#ifndef GRAPH_H_INCLUDED_
#define GRAPH_H_INCLUDED_
#include "bdasampl.h"
class CBDAFilterGraph
{
private:
CComPtr <ITuningSpace> m_pITuningSpace;
CComPtr <IScanningTuner> m_pITuner;
CComPtr <IGraphBuilder> m_pFilterGraph; // for current graph
CComPtr <IMediaControl> m_pIMediaControl; // for controlling graph state
CComPtr <ICreateDevEnum> m_pICreateDevEnum; // for enumerating system devices
CComPtr <IBaseFilter> m_pNetworkProvider; // for network provider filter
CComPtr <IBaseFilter> m_pTunerDevice; // for tuner device filter
CComPtr <IBaseFilter> m_pDemodulatorDevice; // for tuner device filter
CComPtr <IBaseFilter> m_pCaptureDevice; // for capture device filter
CComPtr <IBaseFilter> m_pDemux; // for demux filter
CComPtr <IBaseFilter> m_pVideoDecoder; // for mpeg video decoder filter
CComPtr <IBaseFilter> m_pAudioDecoder; // for mpeg audio decoder filter
CComPtr <IBaseFilter> m_pTIF; // for transport information filter
CComPtr <IBaseFilter> m_pMPE; // for multiple protocol encapsulator
CComPtr <IBaseFilter> m_pIPSink; // for ip sink filter
CComPtr <IBaseFilter> m_pOVMixer; // for overlay mixer filter
CComPtr <IBaseFilter> m_pVRenderer; // for video renderer filter
CComPtr <IBaseFilter> m_pDDSRenderer; // for sound renderer filter
//required for an ATSC network when creating a tune request
LONG m_lMajorChannel;
LONG m_lMinorChannel;
LONG m_lPhysicalChannel;
//registration number for the RunningObjectTable
DWORD m_dwGraphRegister;
NETWORK_TYPE m_NetworkType;
HRESULT InitializeGraphBuilder();
HRESULT LoadTuningSpace();
HRESULT LoadNetworkProvider();
HRESULT LoadDemux();
HRESULT RenderDemux();
HRESULT LoadFilter(
REFCLSID clsid,
IBaseFilter** ppFilter,
IBaseFilter* pConnectFilter,
BOOL fIsUpstream
);
HRESULT ConnectFilters(
IBaseFilter* pFilterUpstream,
IBaseFilter* pFilterDownstream
);
HRESULT CreateATSCTuneRequest(
LONG lPhysicalChannel,
LONG lMajorChannel,
LONG lMinorChannel,
IATSCChannelTuneRequest** pTuneRequest
);
public:
bool m_fGraphBuilt;
bool m_fGraphRunning;
bool m_fGraphFailure;
CBDAFilterGraph();
~CBDAFilterGraph();
HRESULT
BuildGraph(
NETWORK_TYPE NetworkType
);
HRESULT
RunGraph();
HRESULT
StopGraph();
HRESULT
TearDownGraph();
HRESULT
SetVideoWindow(
HWND hwndMain
);
HRESULT
ChangeChannel(
LONG lMajorChannel,
LONG lMinorChannel
);
// Adds/removes a DirectShow filter graph from the Running Object Table,
// allowing GraphEdit to "spy" on a remote filter graph if enabled.
HRESULT
AddGraphToRot(
IUnknown *pUnkGraph,
DWORD *pdwRegister
);
void
RemoveGraphFromRot(
DWORD pdwRegister
);
LONG
GetMajorChannel () {return m_lMajorChannel;};
LONG
GetMinorChannel () {return m_lMinorChannel;};
};
#endif // GRAPH_H_INCLUDED_

View File

@@ -0,0 +1,19 @@
DirectShow Sample -- BDASample
---------------------------------
A sample app to depict Broadcast Driver Architecture's Graph Building Methodology.
Demonstrates how to construct a filter graph based on digital TV tuner cards
that support the new Microsoft<66> Broadcast Driver Architecture (BDA). The sample
also shows how to perform tuning based on the new Microsoft<66> Tuning Model.
The sample is discussed in more detail in the article
"Writing Digital TV Applications" in the DirectX SDK documentation.
Requirements
------------
- BDA-compatible ATSC digital tuner card, such as the Broadlogic DTA-100 receiver.
- MPEG-2 decoder (for example, a software DVD decoder)

View File

@@ -0,0 +1,46 @@
//------------------------------------------------------------------------------
// File: Resource.h
//
// Desc: Sample code for BDA graph building.
//
// Copyright (c) 2000-2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
// Dialogs
#define IDD_ABOUT 400
#define IDD_SELECT_CHANNEL 401
// Menus
#define IDM_EXIT 502
#define IDM_BUILD_ATSC 503
#define IDM_RUN_GRAPH 505
#define IDM_STOP_GRAPH 506
#define IDM_SELECT_CHANNEL 508
#define IDM_ABOUT 509
// Buttons
#define IDC_CHANNEL 1001
#define IDC_SPIN_MAJOR 1002
#define IDC_SPIN_MINOR 1003
#define IDC_MAJOR_CHANNEL 1004
#define IDC_MINOR_CHANNEL 1005
#define IDC_ENTER 1008
#define IDC_STATIC -1
// Accel
#define ACC_GRAPH 1100
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1007
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif