⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 musicplayer_computetotaltime.c

📁 Actions ucOS-II mp3方案源码,可以做参考
💻 C
字号:
/********************************************************************************
*                        SDK30F_D1
*                     music player main sub
*
*                (c) Copyright 2002, Actions Co,Ld.
*                        All Right Reserved
*
* File: musicplayer_ComputeTotalTime.c
* By  : wurui
* Version: 1> v1.00     first version     2005-10-28 8:28
*
*    $Id: musicplayer_ComputeTotalTime.c,v 1.5 2005/12/30 08:09:35 wurui Exp $
*******************************************************************************
*/
#include "MusicPlayer.h" 
#include "device.h"
#include "my_os_q.h" 
#include "task_cfg.h"

/*
********************************************************************************
*            int MusicPlayer_compute_music_time(music_t *g_music_vars, msg_t *msg)
*
* Description : 计算总时间状态下处理DSP的读请求,计算歌曲文件的总时间
*
* Arguments   : g_music_vars  : musicplayer 任务变量指针  msg  :  消息指针
*               
* Returns     : 操作正常返回0,如果存在错误则返回错误类型
*
* Notes       :
*
********************************************************************************
*/

int MusicPlayer_compute_music_time(music_t *g_music_vars, msg_t *msg)
{
    int    result;
    
    result = MusicPlayer_read_bit_stream(g_music_vars, msg);  
    
    if(result != 0)
    {
        if(result != FS_ERR_EOF) // 到文件尾.
            return result;
    }
    music_api_BitstreamToDsp();
    return 0;
}

/*
********************************************************************************
*            void MusicPlayer_compute_music_time_stop(music_t *g_music_vars)
*
* Description : 终止计算歌曲文件总时间.
*
* Arguments   : g_music_vars  : musicplayer 任务变量指针
*               
* Returns     : void
*
* Notes       :
*
********************************************************************************
*/
void MusicPlayer_compute_music_time_stop(music_t *g_music_vars)
{
    int result;
    if(g_music_vars->infomation.fileflag == TRUE)
    {
        music_api_StopPlay();
        if( (result = api_CloseFile(g_music_vars->infomation.FifoCntNo) ) < 0)
            _MusicPlayer_Exceptions(g_music_vars, FifoCloseErr);
        g_music_vars->infomation.fileflag = FALSE;
    }
}
/*
********************************************************************************
*            void MusicPlayer_ComputeTotalTime_default(music_t *g_music_vars, msg_t *msg)
*
* Description : 在计算总时间状态下进行异常消息处理
*
* Arguments   : g_music_vars  : musicplayer 任务变量指针  ;msg :对时间要求不高的消息指针
*               
* Returns     : void
*
* Notes       :
*
********************************************************************************
*/

void MusicPlayer_ComputeTotalTime_default(music_t *g_music_vars, msg_t *msg)
{
    msg_t msg_send;
    switch(msg->type)
    {
    case MS_END:
        g_music_vars->last_operate = MS_END;
        break;
    case MS_Err:
        if(g_music_vars->last_operate == MS_END)
            g_music_vars->player_status = PLAYER_EXIT;
        else
        {
            g_music_vars->player_status = PLAYER_WAIT_FileLocation;
            MusicPlayer_compute_music_time_stop(g_music_vars);
        }
        g_music_vars->last_operate = 0;
        break;
//    case MS_DSPExit:     // DSP退出完成.
//        g_music_vars->player_status = PLAYER_EXIT;
//        break;
        
    case MS_SetLocation:
        g_music_vars->last_operate = MS_SetLocation;
        break;
    case MS_Play:
        g_music_vars->last_operate = MS_Play;
        break;
        
    case MS_DSPExit:     // DSP退出完成.
    case MS_TotalTime:
        music_api_GetSongInfo( &g_music_vars->dec_info);
        msg_send.type = MS_PLAYER;
        msg_send.msg.data[0] = MS_RedrawInfo;
        MYOSQPost(MP3_Player_Out, &msg_send); 
        
        MusicPlayer_compute_music_time_stop(g_music_vars);
        g_music_vars->player_status = PLAYER_WAIT_Play;
        
        if(g_music_vars->last_operate == MS_END)
        {
            g_music_vars->player_status = PLAYER_EXIT;
            g_music_vars->last_operate = 0;
        }
        break;
    }
}
/*
********************************************************************************
*            void MusicPlayer_SpecialResolve_ComputeTotalTime(music_t *g_music_vars)
*
* Description : 计算总时间状态下的状态变迁进行特殊处理.
*
* Arguments   : g_music_vars  : musicplayer 任务变量指针
*               
* Returns     : void
*
* Notes       :
*
********************************************************************************
*/

void MusicPlayer_SpecialResolve_ComputeTotalTime(music_t *g_music_vars)
{                              
    msg_t msg_send; 
    if(g_music_vars->player_status != PLAYER_ComputeTotalTime)
    {
        if(g_music_vars->last_operate == MS_SetLocation)
        {
            msg_send.type = MS_SetLocation;
            MYOSQPost(MP3_Player_In,&msg_send);  
            g_music_vars->last_operate = 0;
        }
        else if(g_music_vars->last_operate == MS_Play)
        {
            msg_send.type = MS_Play;
            MYOSQPost(MP3_Player_In,&msg_send);  
            g_music_vars->last_operate = 0;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -