void CConferenceInfo::sendAudioFrame(const CLockMap<CConferenceMember*, CMemberData::pointer> & audios) { if (audios.empty()) return; boost::mutex::scoped_lock lock(m_members.mutex()); CLockMap<void*, CConferenceMember::pointer>::iterator iter; for (iter=m_members.begin(); iter!= m_members.end(); iter++) { // member don't receive audio if (!iter->second->getAudioRecv()) continue; int timestamp = 0; if (mix_member_frame(iter->second, audios, timestamp)) { DoRtpHandler::pointer pDoRtpHandler = iter->second->getAudioHandler(); long sendSize = 0; unsigned char * tempBuffer = 0; encode_audio(pDoRtpHandler->doGetMediaType(), iter->second->audioBuffer(), &tempBuffer, sendSize); //int timestamp = 0; pDoRtpHandler->doSendData(tempBuffer, sendSize, timestamp); delete[] tempBuffer; } } }