📄 musicplayer_computetotaltime.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 + -