session-ios/Signal/src/audio/incall_audio/AudioSocket.m

41 lines
1.6 KiB
Objective-C

#import "AudioSocket.h"
#import "Constraints.h"
#import "RtpPacket.h"
@implementation AudioSocket
+(AudioSocket*) audioSocketOver:(SrtpSocket*)srtpSocket {
require(srtpSocket != nil);
AudioSocket* p = [AudioSocket new];
p->srtpSocket = srtpSocket;
return p;
}
-(void) startWithHandler:(PacketHandler*)handler untilCancelled:(TOCCancelToken*)untilCancelledToken {
require(handler != nil);
requireState(!started);
started = true;
PacketHandlerBlock valueHandler = ^(RtpPacket* rtpPacket) {
require(rtpPacket != nil);
require([rtpPacket isKindOfClass:RtpPacket.class]);
[handler handlePacket:[EncodedAudioPacket encodedAudioPacketWithAudioData:rtpPacket.payload
andTimeStamp:rtpPacket.timeStamp
andSequenceNumber:rtpPacket.sequenceNumber]];
};
[srtpSocket startWithHandler:[PacketHandler packetHandler:valueHandler
withErrorHandler:handler.errorHandler]
untilCancelled:untilCancelledToken];
}
-(void) send:(EncodedAudioPacket*)audioPacket {
require(audioPacket != nil);
RtpPacket* rtpPacket = [RtpPacket rtpPacketWithDefaultsAndSequenceNumber:audioPacket.sequenceNumber
andTimeStamp:audioPacket.timeStamp
andPayload:audioPacket.audioData];
[srtpSocket secureAndSendRtpPacket:rtpPacket];
}
@end