📄 mpegaudiocontrol.c
字号:
/******************************************************************/
/* Copyright (C) 2007 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*******************************************************************
File : MpegAudioControl.c
Desc : 主界面窗口
Author :
Date : 2007-08-24
Notes :
$Log :
*********************************************************************/
#include "include.h"
#include "system.h"
#include "../browser/BrowserStruct.h"
#ifdef BOARD
#include "AudioControl.h"
#include "../audio/include/audio_globals.h"
#include "BrowserGlobal.h"
#include "MpegMacro.h"
#include "MpegVideoControl.h"
#include "MpegFile.h"
#endif
/*********************************declare********************************/
#ifdef BOARD
extern SYS_FILE_INFO VideoFileInfo;
extern BACKGRND gScreen;
/*************************************************************/
extern MY_FILE*(*RKFIO_FOpen)(const char *, const char *);
extern size_t (*RKFIO_FRead)(MY_FILE *, void *, size_t) ;
extern int (*RKFIO_FSeek)(MY_FILE * /*stream*/, long int /*offset*/, int /*whence*/);
extern unsigned int (*RKFIO_FLength)(MY_FILE *in);
extern int (*RKFIO_FClose)(MY_FILE * /*stream*/);
extern long int (*RKFIO_FTell)(MY_FILE *stream); //long int ftell(MY_FILE *stream);
extern size_t (*RKFIO_FWrite)(MY_FILE *stream, const void *ptr, size_t n);
extern unsigned long ulEndOfRAM;
extern unsigned long buff[0xc000];
extern AudioInOut_Type AudioIOBuf;
extern MY_FILE * pRawFileCache;
#endif
extern INT16U AudioPlayState;
/*************************************************************/
void FileFuncInit(void);
void AudioInitList(void);
/*************************************************************/
int MpegAfterSeekCnt = 0;
int MpegAudioReadData(MY_FILE *fpNo, char *buffer, DWORD size)
{
#ifdef BOARD
//Add by Vincent Hisung , Jan 13,2008
//For Avoid Audio Noise
if (MpegAfterSeekCnt != 0)
{
MpegAfterSeekCnt--;
memset(buffer, 0, size);
buffer[0] = 0xff;
buffer[1] = 0xfd;
return size; //add by ljn, Jan 22, 2008
}
//-------------------------------
return MpegAudioGetData(buffer, size);
#endif
}
unsigned int MpegAudioGetLength(MY_FILE *in)
{
return 0xfffffff;
}
void MpegAudioFileFunInit(void)
{
#ifdef BOARD
FileFuncInit();
RKFIO_FRead = (size_t (*)(MY_FILE *, void *, size_t))MpegAudioReadData;
RKFIO_FSeek = (int(*)(MY_FILE *, long int , int))MpegAudioFSeek;
RKFIO_FLength = (unsigned int (*)(MY_FILE *))MpegAudioGetLength;
#endif
}
BOOLEAN MpegDecMusicInit(void)
{
#ifdef BOARD
int Err, i;
int offset = 0, result;
ulEndOfRAM = (unsigned long)buff;
Codec_SetMode(Codec_DACout);
#endif
return TRUE;
}
BOOLEAN MpegDecMusicStart(void)
{
#ifdef BOARD
unsigned long Samplerate;
Codec_DACMute();
I2sStop();
HDMA_Stop(0);
AudioInitList();
MpegAudioFileFunInit();
#if 1
switch (mpeg.auCodec)
{
case MPEG_AUDIO_TYPE_MP2:
CurrentCodec = CODEC_MP2;
break;
case MPEG_AUDIO_TYPE_AC3_0:
case MPEG_AUDIO_TYPE_AC3_1:
CurrentCodec = CODEC_AC3_DEC;
break;
default:
//CurrentCodec = CODEC_MP2;
//break;
return FALSE;
}
#else
CurrentCodec = mpeg.auCodec;
#endif
memset(buff, 0, sizeof(buff));
ulEndOfRAM = (unsigned long)buff;
if (CODEC_AC3_DEC == CurrentCodec)
PMU_EnterModule(PMU_VIDEOLOW);
if (0 == OpenTrack())
{
return FALSE;
}
CodecGetSampleRate(&Samplerate);
Codec_SetSampleRate(Samplerate);
AudioIOBuf.lOutLength = 2048;
MpegAudioFSeek(mpeg.audioStr, 0, SEEK_SET);
AudioPlayState = Audio_State_Play;
memset(AudioIOBuf.PCMBuf, 0, AUDIO_OUT_BUF_NUM*AUDIO_OUT_BUF_LEN*sizeof(short));
I2sStart(I2S_Start_Tx);
AudioOutBufSwitch();
Codec_DACUnMute();
Codec_SetVolumet(OutputVolume);
//RockOSSendMsg(MBAUDIO,AS_GUAU_VolumeSet,(void*)OutputVolume);
#endif
return TRUE;
}
BOOLEAN MpegAudioStart(void)
{
#ifdef BOARD
pRawFileCache = NULL;
MpegDecMusicInit();
return MpegDecMusicStart();
#endif
}
int MpegAudioCtrl(int cmd)
{
switch (cmd)
{
case MPEG_AUDIO_CTRL_START:
return MpegAudioStart();
break;
case MPEG_AUDIO_CTRL_PAUSE:
RockOSSendMsg(MBAUDIO, AS_GUAU_Pause, NULL);
break;
case MPEG_AUDIO_CTRL_FFD:
//AudioPlayState = Audio_State_FFD;
//break;
case MPEG_AUDIO_CTRL_FFW:
if (AudioPlayState == Audio_State_Pause)
RockOSSendMsg(MBAUDIO, AS_GUAU_Resume, NULL);
//AudioPlayState = Audio_State_FFW;
break;
case MPEG_AUDIO_CTRL_RESUME:
//Add by Vincent Hisung , Jan 13,2008
//For Avoid Audio Noise
//MpegAfterSeekCnt = 1200;
RockOSSendMsg(MBAUDIO, AS_GUAU_Resume, NULL);
break;
case MPEG_AUDIO_CTRL_STOP:
RockOSSendMsg(MBAUDIO, AS_GUAU_VideoAudioStop, NULL);
break;
default:
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -