您好!
我的客户正在使用 CC2564和 STM32开发产品。
他们有一个需要尽快解决的技术问题:
我们使用的是 A3DP 源演示应用程序、它连接到远程接收设备并按预期流式传输音乐、到目前为止一切正常。
然后、当我们要暂停音频流时、我们将调用 Pause (NULL)、如果我们将该流暂停30秒或更长时间、当我们再次启动该流时、在远程接收器处听到的音频会失真。
如果我们将音频流暂停更短的时间、例如10秒、则在远程接收器处听到的音频效果良好。
谢谢、
Chuchen
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我的客户正在使用 CC2564和 STM32开发产品。
他们有一个需要尽快解决的技术问题:
我们使用的是 A3DP 源演示应用程序、它连接到远程接收设备并按预期流式传输音乐、到目前为止一切正常。
然后、当我们要暂停音频流时、我们将调用 Pause (NULL)、如果我们将该流暂停30秒或更长时间、当我们再次启动该流时、在远程接收器处听到的音频会失真。
如果我们将音频流暂停更短的时间、例如10秒、则在远程接收器处听到的音频效果良好。
谢谢、
Chuchen
附加一个包含一些日志的文件时、我没有看到任何错误、 但在暂停30秒后、流变回 ssStarted 后、我们确实会听到音频失真。
非常感谢您的帮助。
因此、
ELISA
器件、*
* GetRemoteName、OpenSink、CloseSink、Play、*
*暂停、帮助*
(二
A3DP_OpenConnection:成功
5260:Headset_InitPind
A3DP_InsertLinkKey
NVM 耳机 BD_ADDR:0xB869C22BC6C9。
NVM 耳机链接密钥:0xA41BC4A64167F93C0FA2BD0FFBF34064
5274:Headset_ManualConnect
5277:-连接到 JBL 反射迷你 BT [0x20000839]
A3DP_StartConnection()
连接到 BD_ADDR:0xB869C22BC6C9。
通过 AUD 自动连接到0xB869C22BC6C9……
5950:Headset_InitPind
A3DP_InsertLinkKey
NVM 耳机 BD_ADDR:0xB869C22BC6C9。
NVM 耳机链接密钥:0xA41BC4A64167F93C0FA2BD0FFBF34064
5983:Headset_ManualConnect
5989:-连接到 JBL 反射迷你 BT [0x20000839]
A3DP_StartConnection()
连接到 BD_ADDR:0xB869C22BC6C9。
atLinkKeyRequest:0xB869C22BC6C9
找到 LinkKeyInfo (索引=0):
GAP_Authentication_Response 成功。
动臂>
0xB869C22BC6C9的 atAuthenticationStatus:0
7728:耳机配对
动臂>
0xB869C22BC6C9的 etEncryption_Change_Result、状态:0x00、模式:启用。
动臂>
etAUD_Signaling_Channel_Open_Indication
BD_ADDR:0xB869C22BC6C9
动臂>
etAUD_Stream_Open_Confirmation
状态:0
BD_ADDR:0xB869C22BC6C9
MediaMTU:895
A3DP 打开:0
使用采样频率48000初始化音频
流格式:
频率:48000
通道:2.
标志:0
AUD_Change_Stream_State_Play 成功。
8081:- etAUD_Stream_Open_Confirmation
8090:耳机已连接
动臂>
etAUD_Stream_State_Change_Confirmation
BD_ADDR:0xB869C22BC6C9
StreamState:已启动
A3DP 开始:0
A3DP 流状态设置为 ssStarted
已更改播放状态的发送寄存器通知
etAUD_Remote_Control_Open_Indication
BD_ADDR:0xB869C22BC6C9
AVRCP (通知)命令已成功发送。
9203:- etAUD_Remote_Control_Open_Indication
9213:Headset_已连接
动臂>
etAUD_Remote_Control_Command_Confirmation:10.
RCCC 状态:0
RCCC MSG 类型:19.
A3DP_ProcessRemoteControlCmd 确认:19.
RCCC 事件 ID:13.
RCCC 卷:32
A3DP_ProcessRemoteControlCmd 确认:AVRCP_RESPONSE_INTERIME
9275:- etAUD_Remote_Control_Command_Confirmation
etAUD_Remote_Control_Command_Indication
MessageType:8.
amtGetCapabilities:3.
RemoteControl 功能响应:0
动臂>
etAUD_Remote_Control_Command_Indication
MessageType:19.
amtRegisterNotification- EventID:1.
已注册回放通知
RemoteControl 通知响应:0
etAUD_Remote_Control_Command_Confirmation:10.
RCCC 状态:0
RCCC MSG 类型:22.
A3DP_ProcessRemoteControlCmd 确认:22.
11404:- etAUD_Remote_Control_Command_Confirmation
etAUD_Remote_Control_Command_Confirmation:10.
RCCC 状态:0
RCCC MSG 类型:22.
A3DP_ProcessRemoteControlCmd 确认:22.
29923:- etAUD_Remote_Control_Command_Confirmation
123816:- AVRCP_EVENT_RELOAD_STATUS_CHANGE
123827:-暂停
AUD_Change_Stream_State_Pause 成功。
etAUD_Stream_State_Change_Confirmation
BD_ADDR:0xB869C22BC6C9
StreamState:已暂停
A3DP 停止:0
已更改播放状态的发送寄存器通知
etAUD_Remote_Control_Command_Indication
MessageType:19.
amtRegisterNotification- EventID:1.
已注册回放通知
RemoteControl 通知响应:0
185604:- AVRCP_EVENT_RELOAD_STATUS_CHANGE
185615:-播放
AUD_Change_Stream_State_Play 成功。
etAUD_Stream_State_Change_Confirmation
BD_ADDR:0xB869C22BC6C9
StreamState:已启动
A3DP 开始:0
A3DP 流状态设置为 ssStarted
已更改播放状态的发送寄存器通知
etAUD_Remote_Control_Command_Indication
MessageType:19.
amtRegisterNotification- EventID:1.
已注册回放通知
RemoteControl 通知响应:0
感谢您的帮助、我很感谢您的帮助、我不熟悉 TI 的 CC2564、因此我尝试观看 A3DP 源代码演示。
是否有特定的方法、 我们应该执行函数调用? 也许我们错过了我应该做的其他一些呼叫。 已建立与远程接收器的连接,并将流状态更改为“已启动”,然后调用 VS_A3DP_Start_Stream (),似乎可以正常工作,因为我们可以在连接的远程接收器上听到我们的音频流。
因此、为了暂停、我们遵循类似的顺序:
-将流状态更改为暂停、
-调用 VS_A3DP_Stop_Stream ()
该序列确实会暂停音频、但出于某种原因、将音频流暂停30秒或更长时间、似乎会使其失真。 音频库是否可能认为/假设30秒后不再有音频流式传输?
应用程序级别是否应关闭音频路径并在暂停这么长时间后重新启动?
你(们)好
我可以确认我们的硬件和应用没有任何低功耗或空闲模式启用、并且我们仍在观察相同的行为、在30秒停止/暂停或更长时间后、启动音频流会产生失真的音频。
我尝试在流停止后重新配置(VS_A3DP_Stop_Stream ()),我使用 VS_PCM_Codec_Config_Slave_I2S ()和 VS_A3DP_Codec_Configuration ()重新配置流; 但没有成功。
我注意到 A3DPDemo 具有流的3种状态:已开始、待处理和已停止;但 AUDAPI.h 只有两种状态:已开始和已停止。 这种差异是否有任何特殊原因?
我还注意到、应用程序中从未设置状态"待定"。
我正在使用:VS_A3DP_Stop_Stream() 来停止音频流,是使用正确的功能,我一直在寻找暂停或暂停的功能,但找不到任何功能。 ?
任何见解都非常值得赞赏、我们已经有很长一段时间了、无法找到解决问题的方法。
谢谢你
您好!
通过阅读 A3DPDemo_SRC.c、我们发现他有以下几行:
if ((HCI_DriverInformation.DriverInformation.COMMDriverInformation.Protocol =cpHCILL)||(HCI_DriverInformation.DriverInformation.COMMDriverInformation.Protocol ==cpHCILL_RTS_CTS)){
HCILLConfig.Sleep CallbackFunction = HCI_SLEEP_Callback;
HILLConfig.Sleep CallbackParameter = 0;
DriverReconfigureData.ReconfigureCommand = HCI_COMM_DRIVER_RECONFIG_DATA_COMMAND_CHANGE_HCILL_PARAMETERS;
DriverReconfigureData.ReconfigureData =(void *) HFILLConfig;
/*注册睡眠模式回调。 请注意、如果这是*/
/*函数返回大于0的值、然后睡眠当前为*/
/*已启用。 *
结果= HCI_RECONFIG_Driver ((unsigned int)结果、false、&DriverReconfigureData);
如果(结果> 0){
/*标志睡眠模式已启用。 *
显示("\n\r ***** 允许睡眠。 ***** \r\n");
}
}否则{
误差=-1;
}
因此、我们查找了回调函数、并添加了一条显示消息:
/*以下是 HCI 睡眠回调。 这已在*/中注册
/*要注意主机处理器何时进入睡眠状态的堆栈*/
/*模式。 *
void BTPSAPI HCI_SLEEP_Callback (BOOLEOLEO_t Sleep Allded、unsigned long CallbackParameter){
//xxx 监视低功耗状态
显示("\n\r 允许睡眠:%d \n\r",睡眠已全部);
display("\n\r CallbackParameter :%d \n\r",CallbackParameter));
}
事实证明、在30秒或更长时间不存在音频流后、我们确实会收到此回调函数、因此看起来 TI 正是休眠的人。
现在的问题是、我们如何禁用此睡眠模式?
我们一直在浏览 BluetopiaCoreAPI.pdf、但我无法找到具体方法。
感谢您的意见、谢谢。