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

86 lines
2.6 KiB
C++

//------------------------------------------------------------------------------
// File: Crossbar.h
//
// Desc: DirectShow sample code - definition of class for controlling
// video crossbars.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#ifndef __Crossbar_h__
#define __Crossbar_h__
//------------------------------------------------------------------------------
// Name: class CClass
// Desc: This class contains routing information for the capture data
//------------------------------------------------------------------------------
class CRouting {
public:
class CRouting *pLeftRouting;
class CRouting *pRightRouting;
LONG VideoInputIndex;
LONG VideoOutputIndex;
LONG AudioInputIndex;
LONG AudioOutputIndex;
IAMCrossbar *pXbar;
LONG InputPhysicalType;
LONG OutputPhysicalType;
LONG Depth;
CRouting () {};
~CRouting () {};
};
typedef CGenericList<CRouting> CRoutingList;
//------------------------------------------------------------------------------
// Name: class CCrossbar
// Desc: The actual helper class for Crossbars
//------------------------------------------------------------------------------
class CCrossbar
{
private:
IPin *m_pStartingPin;
CRouting m_RoutingRoot;
CRoutingList *m_RoutingList;
int m_CurrentRoutingIndex;
HRESULT BuildRoutingList (
IPin *pStartingInputPin,
CRouting *pCRouting,
int Depth);
HRESULT SaveRouting (CRouting *pRoutingNew);
HRESULT DestroyRoutingList();
BOOL StringFromPinType (TCHAR *pc, int nSize, long lType);
HRESULT GetCrossbarIPinAtIndex(
IAMCrossbar *pXbar,
LONG PinIndex,
BOOL IsInputPin,
IPin ** ppPin);
HRESULT GetCrossbarIndexFromIPin (
IAMCrossbar * pXbar,
LONG * PinIndex,
BOOL IsInputPin,
IPin * pPin);
public:
CCrossbar (IPin *pPin, HRESULT *phr);
~CCrossbar();
HRESULT GetInputCount (LONG *pCount);
HRESULT GetInputType (LONG Index, LONG * PhysicalType);
HRESULT GetInputName (LONG Index, TCHAR * pName, LONG NameSize);
HRESULT SetInputIndex (LONG Index);
HRESULT GetInputIndex (LONG *Index);
};
#endif // __Crossbar_h__