var peerConnection: RTCPeerConnection?
var pcObserver: RTCPeerConnectionObserver!
var queuedRemoteCandidates: [RTCICECandidate]?
var stream: RTCMediaStream?
var streams: StreamsConfig
var localAudioTrack: RTCAudioTrack?
func createOrUpdateStream() {
if self.stream != nil {
self.peerConnection!.removeStream(self.stream)
self.stream = nil
}
self.stream = peerConnectionFactory!.mediaStreamWithLabel("ARDAMS")
if self.streams.audio {
if self.localAudioTrack == nil {
self.initLocalAudioTrack()
}
self.stream!.addAudioTrack(self.localAudioTrack!)
}
self.peerConnection!.addStream(self.stream)
}
func initLocalAudioTrack() {
self.localAudioTrack = peerConnectionFactory!.audioTrackWithID("ARDAMSa0")
}
I don't know if it's possible in a way or another to get the RTCAudioTrack microphone input device, and then change it's gain? If it is possible, I sadly didn't find where.
Thanks for taking time reading my problem,
Philippe
have you been able to find a solution for this problem? I am trying to do something similar right now and would love to hear you opinion!
Thanks a lot and have a nice day!
AudioDeviceIOS::RecordProcessImpl(AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, uint32_t inBusNumber, uint32_t inNumberFrames) { // Setup some basic stuff // Use temp buffer not to lock up recording buffer more than necessary // todo: Make dataTmp a member variable with static size that holds // max possible frames? int16_t* dataTmp = new int16_t[inNumberFrames]; memset(dataTmp, 0, 2*inNumberFrames);
AudioBufferList abList; abList.mNumberBuffers = 1; //abList.mBuffers[0].mData = dataTmp; // HERE - insert gain modificator abList.mBuffers[0].mData = dataTmp * 0.3; abList.mBuffers[0].mDataByteSize = 2*inNumberFrames; // 2 bytes/sample abList.mBuffers[0].mNumberChannels = 1;
// Get data from mic OSStatus res = AudioUnitRender(_auVoiceProcessing, ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, &abList); if (res != 0) { WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, " Error getting rec data, error = %d", res);
if (_recWarning > 0) { WEBRTC_TRACE(kTraceWarning, kTraceAudioDevice, _id, " Pending rec warning exists"); } _recWarning = 1;
delete [] dataTmp; return 0; }