对讲机开发,对讲延时的问题

简介: 笔记

通过查看Log发现,是由于按下PTT键播放Tone音时影响了录音的启动,该Tone音使用的是STREAM_CALL类型,于是修改为STREAM_MUSIC后解决此问题。

分析过程如下:


log分析


建议你们梳理一下上层的流程和配置。你上层开启的stream可能有问题。
08-05 13:24:54.267   145  1898 D AudioPolicyManagerSPRD: startOutput() is_voip_set 0,stream 0,
08-05 13:24:54.267   145  1898 D AudioPolicyManagerSPRD: startOutput() outputDesc->mRefCount[AudioSystem::VOICE_CALL] 1
08-05 13:24:54.267   145   315 D AudioPolicyService: AudioCommandThread() processing set parameters string sprd_voip_start=true, io 0
08-05 13:24:54.267   145   315 V AudioFlinger: setParameters(): io 0, keyvalue sprd_voip_start=true, calling pid 145
08-05 13:24:54.267   145   315 W audio_hw_primary: adev_set_parameters, kvpairs : sprd_voip_start=true
AudioSystem::VOICE_CALL这个设置会让sprd_voip_start打开。直到13:24:54.867 tone音播放结束,关闭voip:
08-05 13:24:54.867   145   315 D AudioPolicyService: AudioCommandThread() processing set parameters string sprd_voip_start=false, io 0
08-05 13:24:54.867   145   315 V AudioFlinger: setParameters(): io 0, keyvalue sprd_voip_start=false, calling pid 145
之后,才开始真正的录音:
08-05 13:24:54.867   145  2174 D audio_hw_primary: : in_read sco stop  and do standby  // 这时 sco的read才关闭
// 正常声卡录音设备才打开
08-05 13:24:54.907   145   357 W audio_hw_primary: open s_tinycard in
08-05 13:24:54.917   145   357 W audio_hw_primary: open s_tinycard successfully
08-05 13:24:54.967   145  2174 E audio_hw_primary: start_input_stream pcm_open_0
08-05 13:24:54.967   145  2174 W audio_hw_primary: rec_mode(3), sample_rate(8000)
08-05 13:24:54.977  1867  2175 D oem_dsp : first record dequed
08-05 13:24:54.977   145  2174 W audio_hw_primary: extendArraySize=118, eq_size=52, dp_size=38
08-05 13:24:54.977   145  2174 I audio_hw_primary: record process module created is successful.
也就是说在“in_read sco stop  and do standby”后才可能录音,13:24:54.267 ~ 13:24:54.867之间的都是通话相关的流程(dsp控制vbc和codec设备),不可能录到音。
从log看直到13:24:54.977,才录到第一帧。
08-05 13:24:54.977  1867  2175 D oem_dsp : first record dequed
之前都是录不到的:
08-05 13:24:54.957  1867  1888 W oem_dsp : recorder read none frame


目录
相关文章
|
存储 消息中间件 NoSQL
延时消息常见实现方案
延时消息常见实现方案
延时消息常见实现方案
|
6月前
|
消息中间件 RocketMQ
消息队列 MQ产品使用合集之在开源延时消息插件方案中和原生延时消息方案中,同时设置参数是否会出现错乱
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
传感器 算法
RTOS中相对延时和绝对延时的区别
RTOS中相对延时和绝对延时的区别
125 1
|
编解码 测试技术
srt推拉流延时性能测试
srt推拉流延时性能测试
365 0
srt推拉流延时性能测试
|
Web App开发 监控 算法
详解 WebRTC 高音质低延时的背后 — AGC(自动增益控制)
本文将结合实例全面解析 WebRTC AGC 的基本框架,一起探索其基本原理、模式的差异、存在的问题以及优化方向。
详解 WebRTC 高音质低延时的背后 — AGC(自动增益控制)
|
存储 消息中间件 NoSQL
一口气说出 6 种实现延时消息的方案,还有谁不会?!
一口气说出 6 种实现延时消息的方案,还有谁不会?!
|
消息中间件
延时队列优化 (2)
在这里新增了一个队列QC,绑定关系如下,该队列不设置TTL时间
延时队列优化 (2)
|
Java 调度 数据库
手把手实现一条延时消息(上)
近期在维护公司的调度平台,其中有个关键功能那就是定时任务;定时任务大家平时肯定接触的不少,比如 JDK 中的 Timer、ScheduledExecutorService、调度框架 Quartz 等。
|
消息中间件 Java Kafka
手把手实现一条延时消息(下)
近期在维护公司的调度平台,其中有个关键功能那就是定时任务;定时任务大家平时肯定接触的不少,比如 JDK 中的 Timer、ScheduledExecutorService、调度框架 Quartz 等。