AnsweredAssumed Answered

help! 请帮我看看 我这种情况的audio route怎么配置

Question asked by steven shi on Sep 9, 2015
Latest reply on Oct 25, 2016 by li yu

Freescale:

     你好

OS: Android 4.4.2

板子是自己的,是基于freescale SDB设计的。

audio codec 是ad1937 有点类似CS42888,蓝牙芯片是BCM4334(BT/WIFI/FM)

 

情况如下:

我们主要是用esai方式播放声音,android UI这边都没有问题的,之后我们要做FMRadio,FM的连线是AUD6 <--> FM I2S, FM这里我们是用SSI方式进行处理,

实现声卡0挂载两个device,这个也是成功的,请见如下信息

/dev/snd 下                                           
controlC0                                                                 
controlC1                                                                 
pcmC0D0c     主device                                                             
pcmC0D0p                                                                  
pcmC0D1c      第二个device(FM)                                                            
pcmC0D1p                                                                                                                                          
pcmC1D0p                                                                  

timer

 

我开始是在linux下使用tinyplay/tinycap进行测试, Card 0 Device 0 播放录制都正常, Card 0 Device 1 也就是FM这里,我用tinycap test.wav -D 0 -d 1 -c 2 -r 48000 -b 16 也是可以正确录制FM的声音,并且用tinyplay 可以播放录制好的FM声音(其实是用Card 0 Device 0 esai方式播放)所有的都很正常,之后我就要去做在Android UI中打开FM app的时候也要发出声音,这里就不行了,播放音乐是可以的,应该就是从SSI得到的数据没有送到esai的输入才导致这个现象的。

整体的过程应该是  FM data -》AUDMUX -》SSI -》 “MEMORY” -》ESAI input -》 playback

 

我现在初步推断 我的android HAL这块可能是没配置对, 我的配置如下

主要是参考CS42888的配置。我自己加了AUDIO_DEVICE_OUT_AUX_DIGITAL AUDIO_DEVICE_IN_AUX_DIGITAL

static struct audio_card  ad193x_card = {

    .name = "ad193x-audio",

    .driver_name = "ad193x-audio",

    .supported_out_devices = (AUDIO_DEVICE_OUT_EARPIECE |

            AUDIO_DEVICE_OUT_SPEAKER |

            AUDIO_DEVICE_OUT_WIRED_HEADSET |

            AUDIO_DEVICE_OUT_WIRED_HEADPHONE |

            AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET |

            AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET |

            AUDIO_DEVICE_OUT_ALL_SCO |

            AUDIO_DEVICE_OUT_DEFAULT |

            AUDIO_DEVICE_OUT_AUX_DIGITAL ),

    .supported_in_devices = (

            AUDIO_DEVICE_IN_COMMUNICATION |

            AUDIO_DEVICE_IN_AMBIENT |

            AUDIO_DEVICE_IN_BUILTIN_MIC |

            AUDIO_DEVICE_IN_WIRED_HEADSET |

            AUDIO_DEVICE_IN_BACK_MIC |

            AUDIO_DEVICE_IN_ALL_SCO |

            AUDIO_DEVICE_IN_DEFAULT |

            AUDIO_DEVICE_IN_AUX_DIGITAL),

    .defaults            = NULL,

    .bt_output           = NULL,

    .speaker_output      = NULL,

    .hs_output           = NULL,

    .earpiece_output     = NULL,

    .vx_hs_mic_input     = NULL,

    .mm_main_mic_input   = NULL,

    .vx_main_mic_input   = NULL,

    .mm_hs_mic_input     = NULL,

    .vx_bt_mic_input     = NULL,

    .mm_bt_mic_input     = NULL,

    .card                = 0,

    .out_rate            = 0,

    .out_channels        = 0,

    .out_format          = 0,

    .in_rate             = 0,

    .in_channels         = 0,

    .in_format           = 0,

};

 

audio_policy.conf如下:

内容太多了,我就不全放上了,我改动的就是添加了AUDIO_DEVICE_IN_AUX_DIGITAL,这个也是参考AI board去加的

inputs {

      primary {

        sampling_rates 8000|11025|16000|22050|24000|32000|44100|48000

        channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO

        formats AUDIO_FORMAT_PCM_16_BIT

        devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_WIRED_HEADSET|AUDIO_DEVICE_IN_USB_DEVICE|AUDIO_DEVICE_IN_AUX_DIGITAL

      }

    }

 

以上就是我修改的,肯定有遗漏,但是就不知道哪里不对,Android UI FM就是没声音输出,应该就是route这里我没搞对, 我也参考过AI board, 它也有FM,是si4763,虽然si4763跟我的机制有些不一样,但是Android HAL这块应该差不多啊,但是我就是没找到原因为什么我的audio route配置哪里有问题啊。。。。  按道理说AI board 的si4763肯定在Android UI上也会有声音输出,而不是用linux下的tinyplay/tinycap去做。

 

请帮忙给点意见,搞了好久了,现在就差这一个问题了,谢谢!!!!!

Outcomes