hi_mpi_ao_send_frame
产品支持情况
| 
          产品  | 
        
          是否支持  | 
       
|---|---|
| 
          | 
        
          x  | 
       
| 
          | 
        
          x  | 
       
| 
          | 
        
          √  | 
       
| 
          | 
        
          x  | 
       
| 
          | 
        
          x  | 
       
| 
          | 
        
          x  | 
       
功能说明
发送AO音频帧。
函数原型
hi_s32 hi_mpi_ao_send_frame(hi_audio_dev ao_dev, hi_ao_chn ao_chn, const hi_audio_frame *data, hi_s32 milli_sec)
参数说明
| 
          参数名  | 
        
          输入/输出  | 
        
          说明  | 
       
|---|---|---|
| 
          ao_dev  | 
        
          输入  | 
        
          音频设备号,取值范围:[0, 4]。  | 
       
| 
          ao_chn  | 
        
          输入  | 
        
          音频输出通道号。  | 
       
| 
          data  | 
        
          输入  | 
        
          音频帧结构体。  | 
       
| 
          milli_sec  | 
        
          输入  | 
        
          配置发送数据的超时时间,单位是毫秒,取值范围如下: 
  | 
       
返回值说明
- 0:成功。
 - 非0:失败,参见音频相关返回码。
 
约束说明
- 该接口用于用户主动发送音频帧至AO输出。
 - 调用该接口发送音频帧到AO输出时,必须先调用hi_mpi_ao_enable_chn接口使能对应的AO通道。
 - 播音为左声道和双声道时,ai_chn需固定为0;右声道时,ai_chn为1。
 - 音频帧结构体的成员变量len和virt_addr需要匹配,len代表帧长(单位:字节),virt_addr为传入的音频数据的地址。建议每次传入的数据为一帧数据,即长度len为point_num_per_frame与位宽(16bit为2字节,24bit为3字节)的乘积。
 - 对长度len限制如下:首先根据len与位宽计算出数据点数(数据点数=len/位宽对应的字节数),数据点数的范围为[1, frame_num * point_num_per_frame],最大上限为4096。
      
- 举例1:如果frame_num=2,point_num_per_frame=480(frame_num和point_num_per_frame的范围限制可以参见结构体hi_aio_attr),此时frame_num * point_num_per_frame=960,且960<4096,那么数据点数的范围为[1, 960]。
 - 举例2:如果frame_num=30,point_num_per_frame=4096,此时frame_num * point_num_per_frame=122880,且122880>4096,那么数据点数的范围为[1, 4096]。
 - 举例3:如果根据frame_num和point_num_per_frame确定的数据点数范围为[1, 960]。若此时len=960,位宽为16位(即2字节),计算得到数据点数为960/2=480,在[1, 960]范围之内,即符合要求;若此时len=3840,位宽为16位(即2字节),计算得到数据点数为3840/2=1920,在[1, 960]范围之外,则会返回报错。
 
 
     父主题: AI音频输入/AO音频输出