1// **************************************************************************** 2// 3// CPipeOutCtrl.h 4// 5// Class to control output pipes on cards with or without vmixers. 6// 7// ---------------------------------------------------------------------------- 8// 9// This file is part of Echo Digital Audio's generic driver library. 10// Copyright Echo Digital Audio Corporation (c) 1998 - 2005 11// All rights reserved 12// www.echoaudio.com 13// 14// This library is free software; you can redistribute it and/or 15// modify it under the terms of the GNU Lesser General Public 16// License as published by the Free Software Foundation; either 17// version 2.1 of the License, or (at your option) any later version. 18// 19// This library is distributed in the hope that it will be useful, 20// but WITHOUT ANY WARRANTY; without even the implied warranty of 21// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 22// Lesser General Public License for more details. 23// 24// You should have received a copy of the GNU Lesser General Public 25// License along with this library; if not, write to the Free Software 26// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 27// 28// **************************************************************************** 29 30#ifndef _CPIPEOUTCTRL_H_ 31#define _CPIPEOUTCTRL_H_ 32 33class CEchoGals; 34 35class CPipeOutCtrl 36{ 37 38protected: 39 40 typedef struct 41 { 42 INT8 iLeft; 43 INT8 iRight; 44 } PAN_DB; 45 46 CEchoGals *m_pEG; 47 48 WORD m_wNumPipesOut; 49 WORD m_wNumBussesOut; 50 BOOL m_fHasVmixer; 51 52 INT8 *m_Gains; 53 BYTE *m_Mutes; 54 WORD *m_Pans; 55 PAN_DB *m_PanDbs; 56 57 WORD GetIndex(WORD wPipe,WORD wBus) 58 { 59 if (!m_fHasVmixer) 60 return wPipe; 61 62 return (wBus >> 1) * m_wNumPipesOut + wPipe; 63 } 64 65public: 66 67 ~CPipeOutCtrl(); 68 69 ECHOSTATUS Init(CEchoGals *m_pEG); 70 void Cleanup(); 71 72 ECHOSTATUS SetGain 73 ( 74 WORD wPipeOut, 75 WORD wBusOut, 76 INT32 iGain, 77 BOOL fImmediate = TRUE 78 ); 79 ECHOSTATUS GetGain(WORD wPipeOut, WORD wBusOut, INT32 &iGain); 80 81 ECHOSTATUS SetMute 82 ( 83 WORD wPipeOut, 84 WORD wBusOut, 85 BOOL bMute, 86 BOOL fImmediate = TRUE 87 ); 88 ECHOSTATUS GetMute(WORD wPipeOut, WORD wBusOut, BOOL &bMute); 89 90 ECHOSTATUS SetPan(WORD wPipeOut, WORD wBusOut, INT32 iPan); 91 ECHOSTATUS GetPan(WORD wPipeOut, WORD wBusOut, INT32 &iPan); 92 93}; 94 95#endif // _CPIPEOUTCTRL_H_ 96