205 lines
4.3 KiB
C
205 lines
4.3 KiB
C
|
//---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Module: sn.h
|
||
|
//
|
||
|
// Description: start node classes
|
||
|
//
|
||
|
//
|
||
|
//@@BEGIN_MSINTERNAL
|
||
|
// Development Team:
|
||
|
// Mike McLaughlin
|
||
|
//
|
||
|
// History: Date Author Comment
|
||
|
//
|
||
|
//@@END_MSINTERNAL
|
||
|
//---------------------------------------------------------------------------
|
||
|
//
|
||
|
// 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) 1996-1999 Microsoft Corporation. All Rights Reserved.
|
||
|
//
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
// Constants and Macros
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
// Classes
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
#define STARTNODE_FLAGS_SECONDPASS 0x01
|
||
|
|
||
|
#define STARTNODE_SPECIALFLAG_NONE 0
|
||
|
|
||
|
// StartNode must connect with the same format bottom up.
|
||
|
// Use this information to optimize graph building.
|
||
|
#define STARTNODE_SPECIALFLAG_STRICT 0x00000001
|
||
|
|
||
|
// StartNode contains Aec filter.
|
||
|
#define STARTNODE_SPECIALFLAG_AEC 0x00000002
|
||
|
|
||
|
typedef class CStartNode : public CListDoubleItem
|
||
|
{
|
||
|
friend class CStartInfo;
|
||
|
private:
|
||
|
CStartNode(
|
||
|
PPIN_NODE pPinNode,
|
||
|
PCONNECT_NODE pConnectNode,
|
||
|
ULONG ulOverhead,
|
||
|
PGRAPH_NODE pGraphNode
|
||
|
);
|
||
|
|
||
|
~CStartNode(
|
||
|
);
|
||
|
|
||
|
public:
|
||
|
static NTSTATUS
|
||
|
Create(
|
||
|
PPIN_NODE pPinNode,
|
||
|
PCONNECT_NODE pConnectNode,
|
||
|
PGRAPH_PIN_INFO pGraphPinInfo,
|
||
|
ULONG ulFlagsCurrent,
|
||
|
ULONG ulOverhead,
|
||
|
PGRAPH_NODE pGraphNode
|
||
|
);
|
||
|
|
||
|
ENUMFUNC
|
||
|
Destroy()
|
||
|
{
|
||
|
Assert(this);
|
||
|
delete this;
|
||
|
return(STATUS_CONTINUE);
|
||
|
};
|
||
|
|
||
|
PGRAPH_PIN_INFO
|
||
|
GetGraphPinInfo(
|
||
|
)
|
||
|
{
|
||
|
Assert(this);
|
||
|
return(pStartInfo->GetGraphPinInfo());
|
||
|
};
|
||
|
|
||
|
ENUMFUNC
|
||
|
RemoveBypassPaths(
|
||
|
PVOID pGraphNode
|
||
|
);
|
||
|
|
||
|
ENUMFUNC
|
||
|
RemoveConnectedStartNode(
|
||
|
PVOID pReference
|
||
|
);
|
||
|
|
||
|
PKSPIN_CINSTANCES
|
||
|
GetPinInstances(
|
||
|
)
|
||
|
{
|
||
|
Assert(this);
|
||
|
return(pStartInfo->GetPinInstances());
|
||
|
};
|
||
|
|
||
|
VOID
|
||
|
AddPinInstance(
|
||
|
)
|
||
|
{
|
||
|
Assert(this);
|
||
|
pStartInfo->AddPinInstance();
|
||
|
};
|
||
|
|
||
|
VOID
|
||
|
RemovePinInstance(
|
||
|
)
|
||
|
{
|
||
|
Assert(this);
|
||
|
pStartInfo->RemovePinInstance();
|
||
|
};
|
||
|
|
||
|
BOOL
|
||
|
IsPinInstances(
|
||
|
)
|
||
|
{
|
||
|
Assert(this);
|
||
|
return(pStartInfo->IsPinInstances());
|
||
|
};
|
||
|
|
||
|
BOOL
|
||
|
IsPossibleInstances(
|
||
|
)
|
||
|
{
|
||
|
Assert(this);
|
||
|
return(pStartInfo->IsPossibleInstances());
|
||
|
};
|
||
|
|
||
|
PCONNECT_NODE
|
||
|
GetFirstConnectNode(
|
||
|
)
|
||
|
{
|
||
|
return(pConnectNodeHead);
|
||
|
};
|
||
|
|
||
|
PSTART_INFO
|
||
|
GetStartInfo(
|
||
|
)
|
||
|
{
|
||
|
Assert(this);
|
||
|
return(pStartInfo);
|
||
|
};
|
||
|
|
||
|
BOOL
|
||
|
IsCaptureFormatStrict(
|
||
|
)
|
||
|
{
|
||
|
return ulSpecialFlags & STARTNODE_SPECIALFLAG_STRICT;
|
||
|
};
|
||
|
|
||
|
BOOL
|
||
|
IsAecIncluded(
|
||
|
)
|
||
|
{
|
||
|
return ulSpecialFlags & STARTNODE_SPECIALFLAG_AEC;
|
||
|
};
|
||
|
|
||
|
#ifdef DEBUG
|
||
|
VOID
|
||
|
DumpFilters(
|
||
|
);
|
||
|
|
||
|
ENUMFUNC Dump();
|
||
|
#endif
|
||
|
|
||
|
private:
|
||
|
void
|
||
|
SetSpecialFlags();
|
||
|
|
||
|
private:
|
||
|
PSTART_INFO pStartInfo;
|
||
|
PCONNECT_NODE pConnectNodeHead;
|
||
|
ULONG ulSpecialFlags;
|
||
|
public:
|
||
|
BOOL fRender;
|
||
|
ULONG ulOverhead;
|
||
|
ULONG ulFlags;
|
||
|
PPIN_NODE pPinNode;
|
||
|
DefineSignature(0x20204e53); // SN
|
||
|
|
||
|
} START_NODE, *PSTART_NODE;
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
typedef ListDoubleDestroy<START_NODE> LIST_START_NODE;
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
typedef ListData<START_NODE> LIST_DATA_START_NODE, *PLIST_DATA_START_NODE;
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
// Globals
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
// Local prototypes
|
||
|
//---------------------------------------------------------------------------
|