Skip to content

Commit 4905f8e

Browse files
committed
删除pcm vad,防止pcm漏掉,添加自动挂断回调
Change-Id: I542db41ef624511fb17cc2855916156e6c84d8d0
1 parent dd3214b commit 4905f8e

File tree

6 files changed

+52
-30
lines changed

6 files changed

+52
-30
lines changed

Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoVideoPushVC.m

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ typedef NS_ENUM(NSInteger, TIotDemoDeviceDirection) {
4444
};
4545

4646

47-
@interface TIoTDemoVideoPushVC ()<H264EncoderDelegate,TIoTAACEncoderDelegate>
47+
@interface TIoTDemoVideoPushVC ()<H264EncoderDelegate,TIoTAACEncoderDelegate, TIoTCoreXP2PBridgeDelegate>
4848
@property (nonatomic, assign) CGRect screenRect;
4949
@property (nonatomic, strong) UIImageView *imageView;
5050
@property (nonatomic, strong) UIView *remoteVideoView; //录像中提示view
@@ -81,6 +81,30 @@ - (instancetype)init {
8181
return self;
8282
}
8383

84+
#pragma mark - TIoTCoreXP2PBridgeDelegate
85+
- (NSString *)reviceDeviceMsgWithID:(NSString *)dev_name data:(NSData *)data {
86+
NSString *deviceMsg = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
87+
NSLog(@"接收到设备主动发的消息==%@", deviceMsg);
88+
89+
return @"responseMES";
90+
}
91+
92+
//下载完成事件
93+
- (void)reviceEventMsgWithID:(NSString *)dev_name eventType:(XP2PType)eventType msg:(const char *)msg {
94+
if (eventType == XP2PTypeClose) {
95+
96+
NSString *msgDetail = [NSString stringWithCString:msg encoding:[NSString defaultCStringEncoding]];
97+
if ([msgDetail containsString:@"2000"]) {
98+
[MBProgressHUD dismissInView:self.view];
99+
[MBProgressHUD showError:@"语音对讲服务关闭"];
100+
}
101+
NSLog(@"msgDDD=%@",msgDetail);
102+
}
103+
}
104+
105+
106+
107+
84108
- (void)viewDidLoad {
85109
[super viewDidLoad];
86110
// Do any additional setup after loading the view.
@@ -89,6 +113,8 @@ - (void)viewDidLoad {
89113

90114
_is_ijkPlayer_stream = YES;
91115
//关闭日志
116+
[TIoTCoreXP2PBridge sharedInstance].delegate = self;
117+
92118
[TIoTCoreXP2PBridge sharedInstance].logEnable = YES;
93119
self.navigationController.navigationBar.tintColor = [UIColor blackColor];
94120

Source/LinkSDKDemo/Video/P2P/Controller/TIoTSessionManager.m

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ - (void)cacheCurrentAudioSession {
8181

8282
//需要录音时,AudioSession的设置代码如下:
8383
- (void)resumeRTCAudioSession {
84-
return;
8584
self.session = [AVAudioSession sharedInstance];
8685
if (self.session.category != AVAudioSessionCategoryPlayAndRecord) {
8786
[self cacheCurrentAudioSession]; //先缓存之前的
@@ -103,7 +102,6 @@ - (void)resumeRTCAudioSession {
103102
}
104103
//功能结束时重置audioSession,重置到缓存的audioSession设置
105104
- (void)resetToCachedAudioSession {
106-
return;
107105
if (!cachedCategory) {
108106
return;
109107
}

Source/LinkSDKDemo/Video/PlayBack/LocalPlayBack/Controller/TIoTDemoLocalRecordVC.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -781,7 +781,7 @@ - (NSString *)reviceDeviceMsgWithID:(NSString *)dev_name data:(NSData *)data {
781781
}
782782

783783
//下载完成事件
784-
- (void)reviceEventMsgWithID:(NSString *)dev_name eventType:(XP2PType)eventType {
784+
- (void)reviceEventMsgWithID:(NSString *)dev_name eventType:(XP2PType)eventType msg:(nonnull const char *)msg{
785785
if (eventType == XP2PTypeDownloadEnd) {//下载完成的事件
786786

787787
if (self.downLoading) {

Source/SDK/LinkVideo/FLV/TIoTAVCaptionFLV.mm

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ - (void)setPitch:(int)pitch {
368368
ijk_soundtouch_handle = ijk_soundtouch_create(1.0, _pitch, tmpChannel, 16000);
369369
}
370370

371-
static uint8_t trae_pcm_buffer[512];
371+
//static uint8_t trae_pcm_buffer[512];
372372
static uint8_t trae_aac_buffer[8192];
373373
float indata[FRAME_LEN];
374374
TPCircularBuffer aac_circularBuffer;
@@ -377,12 +377,12 @@ static void record_callback(uint8_t *buffer, int size, void *u)
377377
{
378378
// printf("pcm_size_callback: %d\n", size);
379379
TIoTAVCaptionFLV *vc = (__bridge TIoTAVCaptionFLV *)(u);
380-
memset(trae_pcm_buffer, 0, 512);
380+
/*memset(trae_pcm_buffer, 0, 512);
381381
UInt32 len = [vc.pcmRecord getData:&pcm_circularBuffer :trae_pcm_buffer :512];
382382
if (len < 512) {
383383
return;
384384
}
385-
/*
385+
386386
// check vad
387387
int temp;
388388
for(int i = 0; i< FRAME_LEN; i++) {
@@ -401,13 +401,13 @@ static void record_callback(uint8_t *buffer, int size, void *u)
401401
if (!vc.isVadRecongize) {
402402
return;
403403
}
404+
[vc.pcmRecord addData:&aac_circularBuffer :trae_pcm_buffer :512];
404405
*/
405406

406407
//pcm=>aac
407-
[vc.pcmRecord addData:&aac_circularBuffer :trae_pcm_buffer :512];
408408
dispatch_async(vc.audioEncodeQueue, ^{
409409
static int tmpChannelDataLen = 2048;//vc.pcmRecord.pcmStreamDescription.mChannelsPerFrame * 2048;
410-
UInt32 aaclen = [vc.pcmRecord getData:&aac_circularBuffer :trae_aac_buffer :tmpChannelDataLen];
410+
UInt32 aaclen = [vc.pcmRecord getData:&pcm_circularBuffer :trae_aac_buffer :tmpChannelDataLen];
411411
if (aaclen < tmpChannelDataLen) {
412412
return;
413413
}

Source/SDK/LinkVideo/TIoTCoreXP2PBridge.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,9 @@ extern NSNotificationName const TIoTCoreXP2PBridgeNotificationStreamEnd;
4343

4444
/*
4545
* sdk 事件消息,事件对应类型与意义详见 XP2PType 类型说明
46+
* msg 事件详情
4647
*/
47-
- (void)reviceEventMsgWithID:(NSString *)dev_name eventType:(XP2PType)eventType;
48+
- (void)reviceEventMsgWithID:(NSString *)dev_name eventType:(XP2PType)eventType msg:(const char*) msg;
4849
@end
4950

5051

Source/SDK/LinkVideo/TIoTCoreXP2PBridge.mm

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ - (void)cancelTimer;
9696

9797
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
9898
id<TIoTCoreXP2PBridgeDelegate> delegate = [TIoTCoreXP2PBridge sharedInstance].delegate;
99-
if ([delegate respondsToSelector:@selector(reviceEventMsgWithID:eventType:)]) {
100-
[delegate reviceEventMsgWithID:DeviceName eventType:type];
99+
if ([delegate respondsToSelector:@selector(reviceEventMsgWithID:eventType:msg:)]) {
100+
[delegate reviceEventMsgWithID:DeviceName eventType:type msg:msg];
101101
}
102102
});
103103
}
@@ -116,23 +116,25 @@ void XP2PDataMsgHandle(const char *idd, uint8_t* recv_buf, size_t recv_len) {
116116
char *msg = (char *)recv_buf;
117117
printf("device feedback ==> %s\n",msg);
118118

119-
NSString *DeviceName = [NSString stringWithCString:idd encoding:[NSString defaultCStringEncoding]]?:@"";
120-
NSData *DeviceData = [NSData dataWithBytes:recv_buf length:recv_len];
121-
119+
NSString *response = @"{\"status\":0}"; //默认返回值
120+
122121
id<TIoTCoreXP2PBridgeDelegate> delegate = [TIoTCoreXP2PBridge sharedInstance].delegate;
123122
if ([delegate respondsToSelector:@selector(reviceDeviceMsgWithID:data:)]) {
124-
NSString *response = [delegate reviceDeviceMsgWithID:DeviceName data:DeviceData];
125123

126-
if (response) {
127-
NSUInteger length = strlen(response.UTF8String);
128-
char *response_msg = (char *)malloc(length + 1);
129-
strncpy(response_msg, response.UTF8String, length);
130-
response_msg[length] = '\0';
131-
132-
return response_msg;
124+
NSString *DeviceName = [NSString stringWithCString:idd encoding:[NSString defaultCStringEncoding]]?:@"";
125+
NSData *DeviceData = [NSData dataWithBytes:recv_buf length:recv_len];
126+
NSString *res = [delegate reviceDeviceMsgWithID:DeviceName data:DeviceData];
127+
if (res) {
128+
response = res;
133129
}
134130
}
135-
return NULL;
131+
132+
NSUInteger length = strlen(response.UTF8String);
133+
char *response_msg = (char *)malloc(length + 1);
134+
strncpy(response_msg, response.UTF8String, length);
135+
response_msg[length] = '\0';
136+
137+
return response_msg;
136138
}
137139

138140
typedef char *(*device_data_recv_handle_t)(const char *id, uint8_t *recv_buf, size_t recv_len);
@@ -357,7 +359,7 @@ - (void)setupAVAudioSession:(TIoTCoreAudioConfig *)audio_config {
357359
}
358360

359361
- (void)sendVoiceToServer:(NSString *)dev_name channel:(NSString *)channel_number audioConfig:(TIoTCoreAudioConfig *)audio_config videoConfig:(TIoTCoreVideoConfig *)video_config {
360-
[self setupAVAudioSession:audio_config];
362+
// [self setupAVAudioSession:audio_config];
361363
// NSString *audioFile = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"testVideoStreamfile.flv"];
362364
// [[NSFileManager defaultManager] removeItemAtPath:audioFile error:nil];
363365
// [[NSFileManager defaultManager] createFileAtPath:audioFile contents:nil attributes:nil];
@@ -465,11 +467,6 @@ - (XP2PErrCode)stopVoiceToServer {
465467
[systemAvCapture stopCapture];
466468

467469
int errorcode = stopSendService(self.dev_name.UTF8String, nullptr);
468-
469-
AVAudioSession *avsession = [AVAudioSession sharedInstance];
470-
[avsession setCategory:AVAudioSessionCategoryAmbient withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];
471-
[avsession setActive:YES error:nil];
472-
473470
return (XP2PErrCode)errorcode;
474471
}
475472

0 commit comments

Comments
 (0)