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

36 lines
1.3 KiB
Objective-C

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