cias_voice_plyer_handle.c 解析
#if VOICE_PLAY_BY_UART
/****************
* 播报器参数初始化
* 
* * * **/
void audio_player_param_init()    
{
    outside_init_stream(&mp3_player, &mp3_player_end, IOT_AUDIO_PLAY_BUF_SIZE);
    if (!mp3_player)
        mprintf("mp3_player alloc error %x\n", mp3_player);
    else
        ci_loginfo(LOG_MEDIA, "mp3_player alloc success\n");
    set_curr_outside_handle(mp3_player, mp3_player_end);
}
#endif音频播放器参数的初始化:
主要调用以下函数:包括分配内存,创建二值信号量。
/**
 * @brief 初始化创建数据流、结束信号
 * 
 * @param outside_stream 数据流描述符
 * @param outside_end_sem 数据流结束信号描述符
 * @param full_size 数据缓冲流总大小
 */
void outside_init_stream(audio_play_os_stream_t *outside_stream, audio_play_os_sem_t *outside_end_sem, uint32_t full_size)
{
    *outside_stream = audio_play_stream_buffer_create(full_size,4096);
    if(NULL == *outside_stream)
    {
        ci_logerr(LOG_AUDIO_GET_DATA,"audio_play_stream_buffer_create() failed\n");
    }
    *outside_end_sem = audio_play_semaphore_create_binary();
    if(NULL == *outside_end_sem)
    {
        ci_logerr(LOG_AUDIO_GET_DATA,"outside_end_sem creat fail\r\n");   
    }
}
/* 上面函数内第一行: audio_play_stream_buffer_create
 * @brief 创建数据缓存流
 * 
 * @param xBufferSizeBytes 缓冲区大小 
 * @param xTriggerLevelBytes 触发深度
 * @return audio_play_os_stream_t 缓存流句柄
 */
audio_play_os_stream_t audio_play_stream_buffer_create(size_t xBufferSizeBytes, size_t xTriggerLevelBytes)
{
    return xStreamBufferCreate(xBufferSizeBytes, xTriggerLevelBytes);
}
返回最上级:set_curr_outside_handle(mp3_player, mp3_player_end);
/**
 * @brief 设置当前使用的数据流、结束信号描述符
 *
 * @param outside_stream 数据流描述符
 * @param outside_end_sem 数据流结束信号描述符
 */
void set_curr_outside_handle(audio_play_os_stream_t outside_stream, audio_play_os_sem_t outside_end_sem)
{
    g_outside_stream = outside_stream;
    g_outside_end_sem = outside_end_sem;
}可见是设置了两个全局变量,这两个全局变量应该用的很频繁
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号