35 MpBridgeGain inputBridgeWeights[DEFAULT_BRIDGE_MAX_IN_OUTPUTS];
37 InfoLog( <<
"calculatingMixWeigthsForParticipant, handle=" << participant->
getParticipantHandle() <<
", bridgePort=" << bridgePort <<
", hasInput=" << participant->
hasInput() <<
", hasOutput=" << participant->
hasOutput());
41 bool processingMultiChannelRecorder =
false;
42 if (participant->
hasInput() && bridgePort == 0)
45 processingMultiChannelRecorder =
true;
48 for(
int i = 0; i < DEFAULT_BRIDGE_MAX_IN_OUTPUTS; i++)
53 mMixMatrix[bridgePort][i] = 0;
54 if (processingMultiChannelRecorder)
65 mMixMatrix[i][bridgePort] = 0;
67 inputBridgeWeights[i] = 0;
73 Participant::ConversationMap::const_iterator it1;
74 for(it1 = partConvs.begin(); it1 != partConvs.end(); it1++)
79 Conversation::ParticipantMap::iterator it2;
81 unsigned int participantOutputGain = 0;
82 unsigned int participantInputGain = 0;
83 if(it2 != convParts.end())
85 participantOutputGain = it2->second.getOutputGain();
86 participantInputGain = it2->second.getInputGain();
88 for(it2 = convParts.begin(); it2 != convParts.end(); it2++)
94 int otherBridgePort = it2->second.getParticipant()->getConnectionPortOnBridge();
95 if (otherBridgePort != -1)
97 int bridgePortToUse = bridgePort;
99 it2->second.getParticipant()->hasOutput())
106 unsigned int outputGain = (it2->second.getOutputGain() * participantInputGain * MP_BRIDGE_GAIN_PASSTHROUGH) / (100 * 100);
107 if (processingMultiChannelRecorder)
111 if (it2->second.getParticipant()->getRecordChannelNum() == 2)
117 mMixMatrix[bridgePortToUse][otherBridgePort] =
max((
int)outputGain, mMixMatrix[bridgePortToUse][otherBridgePort]);
121 it2->second.getParticipant()->hasInput())
125 unsigned int inputGain = (it2->second.getInputGain() * participantOutputGain * MP_BRIDGE_GAIN_PASSTHROUGH) / (100 * 100);
128 if (otherBridgePort == 0)
137 inputBridgeWeights[otherBridgePort] = mMixMatrix[otherBridgePort][bridgePortToUse] =
max((
int)inputGain, mMixMatrix[otherBridgePort][bridgePortToUse]);
151 MprBridge::setMixWeightsForOutput(DEFAULT_BRIDGE_RESOURCE_NAME, *mMediaInterface.getMsgQ(), bridgePort, DEFAULT_BRIDGE_MAX_IN_OUTPUTS, mMixMatrix[bridgePort]);
152 if (processingMultiChannelRecorder)
155 MprBridge::setMixWeightsForOutput(DEFAULT_BRIDGE_RESOURCE_NAME, *mMediaInterface.getMsgQ(), 1, DEFAULT_BRIDGE_MAX_IN_OUTPUTS, mMixMatrix[1]);
161 MprBridge::setMixWeightsForInput(DEFAULT_BRIDGE_RESOURCE_NAME, *mMediaInterface.getMsgQ(), bridgePort, DEFAULT_BRIDGE_MAX_IN_OUTPUTS, inputBridgeWeights);
172 for(i = 0; i < DEFAULT_BRIDGE_MAX_IN_OUTPUTS; i++)
176 data +=
" " +
Data(i);
180 data +=
" " +
Data(i);
186 for(i = 0; i < DEFAULT_BRIDGE_MAX_IN_OUTPUTS; i++)
192 for(i = 0; i < DEFAULT_BRIDGE_MAX_IN_OUTPUTS; i++)
196 data =
Data(i) +
" |";
200 data =
Data(i) +
"|";
202 for(
int j = 0; j < DEFAULT_BRIDGE_MAX_IN_OUTPUTS; j++)
204 if(mMixMatrix[i][j]/10 < 10)
206 data +=
" " +
Data(mMixMatrix[i][j]/10) +
" ";
208 else if(mMixMatrix[i][j]/10 < 100)
210 data +=
Data(mMixMatrix[i][j]/10) +
" ";
214 data +=
Data(mMixMatrix[i][j]/10) +
" ";