📄 flvaudiocontrol.c
字号:
/******************************************************************/
/* Copyright (C) 2007 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*******************************************************************
File : FlvAudioControl.c
Desc : 主界面窗口
Author :
Date : 2007-08-24
Notes :
$Log :
*********************************************************************/
#include "include.h"
#include "system.h"
#include "../browser/BrowserStruct.h"
#ifdef BOARD
#include "../video/flv/flvfile.h"
#include "AudioControl.h"
#include "../audio/include/audio_globals.h"
#include "BrowserGlobal.h"
#include "FlvMacro.h"
#include "FlvVideoControl.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;
extern UINT32 CurrentTime;
extern UINT32 TotalTime;
extern UINT32 CurrentTimeLast;
/*************************************************************/
void FileFuncInit(void);
void AudioInitList(void);
/*************************************************************/
int FlvAfterSeekCnt = 0;
int FlvAudioReadData(MY_FILE *fpNo, char *buffer, DWORD size)
{
#ifdef BOARD
//Add by Vincent Hisung , Jan 13,2008
//For Avoid Audio Noise
if (FlvAfterSeekCnt != 0)
{
FlvAfterSeekCnt--;
memset(buffer, 0, size);
buffer[0] = 0xff;
buffer[1] = 0xf9;
return size; //add by ljn, Jan 22, 2008
}
//-------------------------------
return FlvAudioGetData(buffer, size);
#endif
}
unsigned int FlvAudioGetLength(MY_FILE *in)
{
return 0xfffffff;
}
int FlvAudioFSeek(MY_FILE *in, long int off , int b)
{
if ((b == 0) && (off == 0))
FlvAudioSeek(&flv, off, b);
return 1;
}
void FlvAudioFileFunInit(void)
{
#ifdef BOARD
FileFuncInit();
RKFIO_FRead = (size_t (*)(MY_FILE *, void *, size_t))FlvAudioReadData;
RKFIO_FSeek = (int(*)(MY_FILE *, long int , int))FlvAudioFSeek;//AviAudioSeek;
RKFIO_FLength = (unsigned int (*)(MY_FILE *))FlvAudioGetLength;
#endif
}
BOOLEAN FlvDecMusicInit(void)
{
#ifdef BOARD
int Err, i;
int offset = 0, result;
ulEndOfRAM = (unsigned long)buff;
Codec_SetMode(Codec_DACout);
#endif
return TRUE;
}
BOOLEAN FlvDecMusicStart(void)
{
#ifdef BOARD
unsigned long Samplerate;
Codec_DACMute();
I2sStop();
HDMA_Stop(0);
AudioInitList();
FlvAudioFileFunInit();
#if 0
switch (FlvGetAudioFormat())
{
case SIGN_WAVE_FORMAT_MPEG:
{
CurrentCodec = CODEC_MP2;
}
break;
case SIGN_WAVE_FORAMT_MPEGLAYER3:
{
CurrentCodec = CODEC_MP3;
}
break;
case SIGN_WAVE_FORAMT_AC3:
{
//CurrentCodec = CODEC_AC3;
}
break;
default:
CurrentCodec = CODEC_MP2;
break;
}
#else
CurrentCodec = CODEC_MP3;
#endif
memset(buff, 0, sizeof(buff));
ulEndOfRAM = (unsigned long)buff;
if (0 == OpenTrack())
{
return FALSE;
}
CodecGetSampleRate(&Samplerate);
Codec_SetSampleRate(Samplerate);
AudioIOBuf.lOutLength = 2048;
FlvAudioSeek(&flv, 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;
}
void FlvAudioStart(void)
{
#ifdef BOARD
pRawFileCache = NULL;
FlvDecMusicInit();
FlvDecMusicStart();
#endif
}
void FlvAudioCtrl(int cmd)
{
switch (cmd)
{
case FLV_AUDIO_CTRL_START:
FlvAfterSeekCnt = 0;
FlvAudioStart();
break;
case FLV_AUDIO_CTRL_PAUSE:
RockOSSendMsg(MBAUDIO, AS_GUAU_Pause, NULL);
break;
case FLV_AUDIO_CTRL_FFD:
AudioPlayState = Audio_State_FFD;
break;
case FLV_AUDIO_CTRL_FFW:
AudioPlayState = Audio_State_FFW;
break;
case FLV_AUDIO_CTRL_RESUME:
//Add by Vincent Hisung , Jan 13,2008
//For Avoid Audio Noise
FlvAfterSeekCnt = 1200;
RockOSSendMsg(MBAUDIO, AS_GUAU_Resume, NULL);
break;
case FLV_AUDIO_CTRL_STOP:
RockOSSendMsg(MBAUDIO, AS_GUAU_VideoAudioStop, NULL);
break;
default:
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -