41 #ifndef __CAMixMap_h__
42 #define __CAMixMap_h__
49 : mIns(0), mOuts (0), mMixMap(NULL)
52 CAMixMap (
const CAMixMap &mm)
53 : mIns(0), mOuts (0), mMixMap(NULL)
56 CAMixMap (UInt32 numIns, UInt32 numOuts)
57 : mIns(numIns), mOuts (numOuts), mMixMap(NULL)
59 mMixMap =
new Float32[numIns * numOuts];
60 memset (mMixMap, 0, ByteSize());
63 ~CAMixMap () {
delete [] mMixMap; }
65 CAMixMap& operator=(
const CAMixMap& mm)
67 if (mMixMap) {
delete [] mMixMap; mMixMap = NULL; }
68 mIns = mm.mIns; mOuts = mm.mOuts;
70 mMixMap =
new Float32 [ NumIns() * NumOuts() ];
71 memcpy (mMixMap, mm.mMixMap, ByteSize());
76 UInt32 NumIns ()
const {
return mIns; }
77 UInt32 NumOuts ()
const {
return mOuts; }
79 void SetCrossPoint (UInt32 inputChan, UInt32 outputChan, Float32 val)
81 if (inputChan < NumIns() && outputChan < NumOuts())
82 mMixMap[inputChan * NumOuts() + outputChan] = val;
84 Float32 GetCrossPoint (UInt32 inputChan, UInt32 outputChan)
const
86 return (inputChan < NumIns() && outputChan < NumOuts())
87 ? mMixMap[inputChan * NumOuts() + outputChan]
91 void SetDiagonal (Float32 val)
93 for (UInt32 i = 0; i < NumIns() && i < NumOuts(); ++i) {
94 mMixMap[i * NumOuts() + i] = val;
98 void Clear () { memset (mMixMap, 0, ByteSize()); }
101 Float32* MM() {
return mMixMap; }
102 const Float32* MM()
const {
return mMixMap; }
103 UInt32 ByteSize ()
const {
return NumIns() * NumOuts() *
sizeof(Float32); }
107 printf (
"Num Ins: %d, Num Outs: %d\n", (
int)mIns, (
int)mOuts);
108 for (
unsigned int ins = 0; ins < mIns; ++ins) {
109 printf (
"\t%d: ", ins);
110 for (
unsigned int outs = 0; outs < mOuts; ++outs)
111 printf (
"(%.3f) ", mMixMap[ins * NumOuts() + outs]);