Merge #2959 into ln from refs/changes/2959/head 2962/target/1
authoraliyun3243248791 <accounts_67aaf52ad497cd558d73ac32@mail.teambition.com>
Tue, 23 Dec 2025 08:48:20 +0000 (08:48 +0000)
committersnickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Tue, 23 Dec 2025 08:48:20 +0000 (08:48 +0000)
优化蓝牙打断

* refs/changes/2959/head: (1 commits squashed)

  - 优化蓝牙打断

Signed-off-by: 薛文强 <accounts_67aaf52ad497cd558d73ac32@mail.teambition.com>
Reviewed-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Merged-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/2959
code/sdk/zhihui/ai/media/ai_media_service_ext.cpp

index d771359..8badf51 100644 (file)
@@ -2450,6 +2450,30 @@ int32_t AI_ForceInterrupt(void)
     // ResetAudioStreams();
     
     MEDIA_INFO_LOG("AI voice force interrupt completed");
+
+    if (a2dp_is_connect)
+    {
+        uint32_t queueSize = 0, queueCapacity = 0;
+        AI_GetQueueStatus(&queueSize, &queueCapacity);
+        if (queueSize == 0)
+        {
+            // 使用静音音频数据(自动匹配大小)
+            AIVoiceQueueMessage cachedMsg;
+            cachedMsg.size = SILENCE_AUDIO_SIZE;
+            cachedMsg.data = (uint8_t *)malloc(cachedMsg.size);
+            memcpy(cachedMsg.data, (void*)silence_audio, SILENCE_AUDIO_SIZE);
+
+            osStatus_t queueStatus = osMessageQueuePut(g_aiVoiceContext->inputQueue, &cachedMsg, 0, 0);
+            if (queueStatus == osOK) {
+                g_aiVoiceContext->queueMsgCount++;
+                // MEDIA_INFO_LOG("Successfully restored %u bytes from cache to queue", cachedMsg.size);
+            } else {
+                MEDIA_ERR_LOG("Failed to restore cached data to queue: %d", queueStatus);
+                // 如果队列写入失败,释放内存
+                free(cachedMsg.data);
+            }
+        }
+    }
     
     MediaMutexUnLock(mutex);
     return 0;