TI论坛
直播中

文甘翀

7年用户 962经验值
私信 关注
[问答]

dm8168 tlv320音频实时回放报错的原因?


  • 环境:
    1、平台:DM8168 evm
    2、sdk:DVRRDK_03.00.00.00
    3、linux:2.6.37
    4、音频芯片:tlv320aic3106
    问题描述:
    我在做音频采集并实时回放的测试,首先依次打开音频采集、播放,然后将采集后的音频,缓存大于等于1000帧则回放,但是总有Underrun发生或者是直接writei返回资源无效。谢谢!
    调试信息如下:
    ++++++++ Audio_DrvOpen start! ++++++++AUDIO Rate requested 44100Hz, get 44100Hz)

    AUDIO CAPTURE: period size = 1000 frames

    AUDIO CAPTURE: period time = 22675 us

    AUDIO CAPTURE: buffer_size = 16000

    ++++++++ Audio_DrvOpen end! ++++++++

    audio play init start

    AUDIO_PLAY >> opened device

    AUDIO PLAYBACK: period size = 1000 frames

    AUDIO PLAYBACK: period time = 22675 us

    AUDIO PLAYBACK: buffer_size = 16000

    audio play init end!

    AUDIO >> audio play wait............



    Audio_playMain, 238: audio play pcm 174000

    hwptr_update: pcmC0D0p:0: pos=36/1000/16000, hwptr=36/0/36/0

    hwptr_update: pcmC0D0p:0: pos=337/1000/16000, hwptr=301/36/337/0

    hwptr_update: pcmC0D0p:0: pos=662/1000/16000, hwptr=325/337/662/0

    hwptr_update: pcmC0D0p:0: pos=979/1000/16000, hwptr=317/662/979/0

    hwptr_update: pcmC0D0p:0: pos=1248/1000/16000, hwptr=2/1246/1248/0

    hwptr_update: pcmC0D0p:0: pos=1522/1000/16000, hwptr=274/1248/1522/0

    hwptr_update: pcmC0D0p:0: pos=1802/1000/16000, hwptr=280/1522/1802/0

    hwptr_update: pcmC0D0p:0: pos=2083/1000/16000, hwptr=2/2081/2083/0

    hwptr_update: pcmC0D0p:0: pos=2356/1000/16000, hwptr=273/2083/2356/0

    hwptr_update: pcmC0D0p:0: pos=2637/1000/16000, hwptr=281/2356/2637/0

    hwptr_update: pcmC0D0p:0: pos=2918/1000/16000, hwptr=281/2637/2918/0

    hwptr_update: pcmC0D0p:0: pos=3199/1000/16000, hwptr=2/3197/3199/0

    hwptr_update: pcmC0D0p:0: pos=3472/1000/16000, hwptr=273/3199/3472/0

    hwptr_update: pcmC0D0p:0: pos=3753/1000/16000, hwptr=281/3472/3753/0

    hwptr_update: pcmC0D0p:0: pos=4034/1000/16000, hwptr=2/4032/4034/0

    hwptr_update: pcmC0D0p:0: pos=4307/1000/16000, hwptr=273/4034/4307/0

    hwptr_update: pcmC0D0p:0: pos=4588/1000/16000, hwptr=281/4307/4588/0

    hwptr_update: pcmC0D0p:0: pos=4868/1000/16000, hwptr=280/4588/4868/0

    hwptr_update: pcmC0D0p:0: pos=5149/1000/16000, hwptr=2/5147/5149/0

    hwptr_update: pcmC0D0p:0: pos=5421/1000/16000, hwptr=272/5149/5421/0

    hwptr_update: pcmC0D0p:0: pos=5702/1000/16000, hwptr=281/5421/5702/0

    AUDIO >> error from writei: Resource temporarily unavailable

    AUDIO >>  PLAYBACK ERROR <174000 bytes> Resource temporarily unavailable, playback wont continue...

回帖(1)

LL-LING宁

2024-11-9 09:25:04
根据您提供的信息,您在使用DM8168 EVM2平台、DVRRDK_03.00.00.003 SDK、Linux 2.6.374和TLV320AIC3106音频芯片进行音频采集和实时回放测试时遇到了Underrun错误或writei返回资源无效的问题。以下是一些可能的原因和解决方案:

1. 缓冲区大小设置不当:您提到的缓冲区大小为16000帧,可能不足以满足实时回放的需求。您可以尝试增加缓冲区大小,以确保音频数据能够顺利传输。

2. 采样率不匹配:您提到的采样率为44100Hz,确保您的音频采集和播放设备都支持这个采样率。如果采样率不匹配,可能会导致音频数据传输错误。

3. 音频驱动问题:检查您的音频驱动是否正确安装和配置。如果驱动有问题,可能会导致音频数据传输错误或资源无效。

4. 内核配置问题:检查您的Linux内核配置,确保音频相关的模块已经正确加载。如果内核配置不正确,可能会导致音频设备无法正常工作。

5. 音频芯片问题:检查您的TLV320AIC3106音频芯片是否正常工作。如果芯片有问题,可能会导致音频数据传输错误。

6. 代码逻辑问题:检查您的音频采集和回放代码逻辑,确保音频数据能够正确地从采集设备传输到播放设备。

为了解决这个问题,您可以尝试以下步骤:

1. 检查和调整缓冲区大小,确保它足够大以满足实时回放的需求。

2. 确保音频采集和播放设备的采样率匹配。

3. 检查音频驱动是否正确安装和配置。

4. 检查Linux内核配置,确保音频相关的模块已经正确加载。

5. 检查TLV320AIC3106音频芯片是否正常工作。

6. 检查音频采集和回放代码逻辑,确保音频数据能够正确地从采集设备传输到播放设备。

希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便进一步分析和解决。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分