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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
NAME BDASAMPL
|
||||
|
||||
DESCRIPTION 'Test app for BDA'
|
||||
|
||||
EXETYPE WINDOWS
|
||||
|
||||
CODE MOVEABLE DISCARDABLE LOADONCALL
|
||||
DATA MOVEABLE MULTIPLE
|
||||
|
||||
HEAPSIZE 1024
|
||||
STACKSIZE 8192
|
||||
@@ -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
|
||||
@@ -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>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -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 |
@@ -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
|
||||
|
||||
1209
Library/dxx8/samples/Multimedia/DirectShow/BDA/BDASample/graph.cpp
Normal file
1209
Library/dxx8/samples/Multimedia/DirectShow/BDA/BDASample/graph.cpp
Normal file
File diff suppressed because it is too large
Load Diff
125
Library/dxx8/samples/Multimedia/DirectShow/BDA/BDASample/graph.h
Normal file
125
Library/dxx8/samples/Multimedia/DirectShow/BDA/BDASample/graph.h
Normal 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_
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user