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.

[参考译文] CC2564MODA:A2DP 解码数据全部为零

Guru**** 1641220 points
Other Parts Discussed in Thread: CC2564MODA, CC2564MODAEM, CC256XM4BTBLESW, CC2564
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/828339/cc2564moda-a2dp-decoded-data-are-all-zero

器件型号:CC2564MODA
主题中讨论的其他器件:DK-TM4C129XCC256XM4BTBLESWCC2564

您好!

我有一位客户将 CC2564MODA 与 TM4C129x 搭配使用。
他正在评估 A2DP (而非 A3DP)演示。

环境:
CC2564MODAEM
DK-TM4C129X
CC256XM4BTBLESW 1.2R2

CC2564已成功与智能手机连接、并且某些数据已从 CC2564接收到 Tiva。
但在返回 SBC_Decode_data()(AudioDecode.c lines#175)后,DecodedData.LeftChannelDataPtr 和 RightPtr 中的所有数据都为零。
客户确认 SBC_Decode_data ()的返回值为 SBC_processing_complete。
问题的可能原因是什么?

以下是一些其他信息。
teraterm.txt
调用 bc_Decode_data()之前的 sbc 缓冲区内容。
e2e.ti.com/.../teraterm.txt
SBC_DECODE_DATA.png
仅在返回 SBC_Decode_data()后、CCS 屏幕截图才显示参数。
(此屏幕截图是使用不同的音乐拍摄的、因此 SBC 数据与 TeraTerm .txt 不同)


谢谢、此致、
田志郎一郎

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    客户提供的其他信息:

    使用 iPhone7作为源时、原始帖子就是这种情况。
    客户还尝试使用 Android 手机和 Windows10 PC 作为来源。
    如果使用 Android 或 Windows10、则 SBC_Decode_data()的输出数据在开头全为零、但一些数据在中间和之后接收。
    如果使用 iPhone7,解码的数据将永远为零。

    似乎 iPhone 支持 SBC 和 AAC、Android 支持 SBC 和 aptX。
    iPhone 首先尝试使用 AAC、如果失败、则会切换到 SBC。
    A2DP 演示中是否实现了此类机制?

    谢谢、此致、
    田志郎一郎

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    圣一郎

    [引用用户="Koichiro Tashiro]iPhone 似乎支持 SBC 和 AAC、Android 支持 SBC 和 aptX。
    iPhone 首先尝试使用 AAC、如果失败、则会切换到 SBC。

    根据 A2DP 配置文件规范、默认情况下、拉电流和灌电流均应使用 SBC (强制编解码器)。 如果支持附加编解码器(可选)、则拉电流和灌电流可能会协商使用两侧都支持的附加编解码器之一。 因此、我认为这不是问题所在。

    [引用用户="Koichiro Tashiro"]此类机制是否在 A2DP 演示中实现?

    此处使用的 CC256XM4BTBLESW 版本在过去5年中未得到维护。 因此、您看到的问题可能是由于旧堆栈版本中的一些互操作性问题。

    您可以尝试通过检查空气嗅探器日志(例如一线或 ellisys 嗅探器)来缩小根本原因、以确定通过空气传输的编码数据是否有效。 如果是、则问题可能是在主机端解码。  

    此致、

    Vihang

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Vihang、

    在不使用监听器的情况下、您是否有任何调试建议?
    恐怕客户没有这样的环境。

    谢谢、此致、
    田志郎一郎

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    圣一郎

    [引用 USER="Koichiro Tashiro"]您是否有任何调试建议而不使用监听器?

    不是我能想到的。

    它是未修改的 A2DPDemo 还是从其他版本/平台移植?

    此致、

    Vihang

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Vihang、

    客户修改了 Main.c.中 MainThread()中的以下器件
    (因为客户目前未连接外部编解码器)
    蓝色线被注释掉。

    /*尝试初始化编解码器。 如果此函数失败、则*/
    /*编解码器不存在或存在错误条件。*/
    if (SoundInit()) 
    {
    //我们需要执行 Add a 函数来处理命令*/
    到 BTPS 计划程序的/*行。 *
    if (BTPS_AddFunctionToScheduler (ProcessCharacters、NULL、200))
    {
    /*添加 IDLE 函数(用于确定 LPM3是否为*/)
    /*已输入)到调度程序。 *
    if (BTPS_AddFunctionToScheduler (IdleFunction、NULL、0))
    {
    /*永久循环并执行调度程序。 *
    while (1)
    BTPS_ExecuteScheduler();
    }
    }
    
    其他
    {
    显示("error:could not initialize AIC3262 codec.\r\n\r\n);
    显示("请将编解码器电源和连接加倍(可能需要重置)。\r\n);
    } 



    代码的其他部分未修改。

    谢谢、此致、
    田志郎一郎

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Vihang、

    删除上述代码中以下行。

    第3行:
         if (SoundInit())

    第19行至第23行:
         其他
         {
            显示("error:could not initialize AIC3262 codec.\r\n\r\n);
            显示("请将编解码器电源和连接加倍(可能需要重置)。\r\n);
         }

    谢谢、此致、
    田志郎一郎

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Vihang、

    您是否可以在您的一侧尝试 A2DP 演示并重现此问题?
    我认为调试这个问题的速度要快得多。

    谢谢、此致、
    田志郎一郎

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    圣一郎

    此时、我无法提交大量的调试工作。 我将检查我的团队中的其他人是否可以启动此演示以进行进一步调试。 BTW、客户是否仅在 A2DP 演示的 TI-RTOS 版本或无操作系统版本的演示中看到此行为?

    此致、

    Vihang

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Vihang、

    请查找人来调试此问题。

    至于演示、我认为 Tiva A2DP 演示只有无操作系统版本、因此客户使用此版本。

    谢谢、此致、
    田志郎一郎

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Koichiro、

    我仍在尝试举一个例子来说明您的问题。 一直在与 Vihang 合作。 请给我更多时间。

    Jesu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Koichiro、

    最终能够提出该示例。 继续讨论这个问题、如果我正确理解所有内容、在我看来、就像客户看到的是预期的那样。 由于我也不使用编解码器、我也不得不注释掉您提到的行以及 AudioDecoder.c 中的以下行

    // /*继续并配置输出设备。 */
    // if (!_ConfigureOutputDevice (&PlaybackContext))
    // {
    // /*现在,我们已准备好开始解码。 首先、让我们来看看*/
    / /*初始化解码器。 */
    // if ((PlaybackContext.DecoderHandle = SBC_Initialize_Decoder ()!= NULL)
    // {
    // 初始化= true;
    //
    // if (BTPS_AddFunctionToScheduler (PlaybackThread、NULL、1))
    // 结果= 0;
    // else
    // {
    // 已初始化= false;
    //
    // 显示("无法启动回放任务。\r\n);
    //}
    //}
    // else
    // 显示("初始化解码器失败。\r\n);
    //}
    // else
    // 显示("配置输出设备失败。\r\n); 

    如果不对上面的行进行注释,我最终会出现一个故障 ISR,因为它会尝试使用一个已注释掉的外设 SountInit()。 假设、解码数据将始终为0、因为由于必要的注释、PlaybackThread 永远不会添加到调度程序中。 PlaybackThread 很重要、因为它会更新左右通道。

    Jesu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jesu、

    感谢您的调试。

    根据您的反馈、客户修改了代码、以便与原始代码相比最大限度地减少差异。
    现在一切都恢复到原始演示代码、只有下面两个文件会按附件的方式进行修改。
    如您所见,一些外部音频编解码器相关函数会被修改,并且始终返回“TRUE”。
    e2e.ti.com/.../5554.dac.c

    e2e.ti.com/.../sound_5F00_ssi.c
    客户使用更新的代码观察到以下行为。
    a)带 iOS 12.3.1的 iPhone XR:音频数据在缓冲区中解码(数据定期更新)。 这似乎是一种预期行为。
    b) iPhone 7与 iOS 12.4-1:音频数据在缓冲区中解码、全部为零。 解码前的数据显示了一些值,这很奇怪,但在 SBC_Decode_Data()函数之后,所有数据都变为零。

    我在 TIJ 的 iPhone XR 和 iPhone 7上尝试过相同的代码、但两者似乎都可以正常工作。
    您是否知道为什么同一台智能手机(iPhone7)显示不同的结果?
    您是否可以替换您旁边的这两个文件并尝试?

    谢谢、此致、
    田志郎一郎

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、一郎一郎、

    我将获得与之前所述不同的行为。 我目前在接下来的两天内不在办公室。 我一回来、就会检查并测试您发送的代码、然后返回给您。

    Jesu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Koichiro、

    我使用客户所做的修改测试了代码、我在左通道和右通道缓冲区看到了更新、告诉我数据正在解码。 我使用运行 iOS 12.4-1的 Samsung s10e 和 iPhone 8对其进行了测试。 请让客户重试以确保并让他们发送控制台日志。

    Jesu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jesu、

    控制台日志已附加。
    如您所见,控制台输出“AUD 编码音频数据指示,长度953”会定期显示。
    但对于特定 iPhone、解码后的数据都是零。
    e2e.ti.com/.../a2dp_5F00_out.txt
    谢谢、此致、
    田志郎一郎

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Koichiro、

    为了确保我们在同一页上查看文章前面提到的用于解码数据的左通道和右通道。 解码之前、您能否检查音频数据是否为0? 我现在没有代码访问权限、但通过从左通道和右通道跟踪返回到接收到的编码数据的任何函数更新、可以轻松找到代码。 如果找不到、请告诉我。

    Jesu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jesu、

    客户将 iOS 更新为 iOS13后、问题消失。
    我想这是 iOS 方面的问题。
    我现在关闭此项目。
    感谢您对此的支持。

    谢谢、此致、
    田志郎一郎