📄 aviaudiocontrol.c
字号:
/******************************************************************/
/* Copyright (C) 2007 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*******************************************************************
File : AviInterface.c
Desc : 主界面窗口
Author :
Date : 2007-08-24
Notes :
$Log :
*********************************************************************/
#include "include.h"
#include "system.h"
#include "../browser/BrowserStruct.h"
#ifdef BOARD
#include "../video/avi/avifile.h"
#include "AudioControl.h"
#include "../audio/include/audio_globals.h"
#include "BrowserGlobal.h"
#include "Mpeg4Contrl.h"
#include "AviMacro.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 AviAudioGetData(MY_FILE *fpNo, char *buffer, DWORD size)
{
#ifdef BOARD
return (AviGetAudioData(buffer, size));
#endif
}
unsigned int AviAudioGetLength(MY_FILE *in)
{
return 0xfffffff;
}
int AviAudioFSeek(MY_FILE *in, long int off , int b)
{
if ((b == 0))
AviAudioSeek(&aviPointer, off, b);
return 1;
}
void VideoFileFunInit(void)
{
#ifdef BOARD
FileFuncInit();
RKFIO_FRead = (size_t (*)(MY_FILE *, void *, size_t))AviAudioGetData;
RKFIO_FSeek = (int(*)(MY_FILE *, long int , int))AviAudioFSeek;//AviAudioSeek;
RKFIO_FLength = (unsigned int (*)(MY_FILE *))AviAudioGetLength;
#endif
}
BOOLEAN VideoDecMusicInit(void)
{
#ifdef BOARD
int Err, i;
int offset = 0, result;
ulEndOfRAM = (unsigned long)buff;
Codec_SetMode(Codec_DACout);
#endif
return TRUE;
}
UINT8 AviOpenTrackFlag = 0; // AVI声音文件很短
BOOLEAN VideoDecMusicStart(void)
{
#ifdef BOARD
unsigned long Samplerate;
Codec_DACMute();
I2sStop();
HDMA_Stop(0);
AudioInitList();
VideoFileFunInit();
//audio format check, added by ljn @ 2005-12-28 15:49:22
switch (AviGetAudioFormat())
{
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_DEC;
}
break;
case SIGN_WAVE_FORAMT_PCM:
case SIGN_WAVE_FORAMT_ADPCM:
{
CurrentCodec = CODEC_WAV;
}
break;
default:
CurrentCodec = CODEC_MP2;
break;
}
memset(buff, 0, sizeof(buff));
ulEndOfRAM = (unsigned long)buff;
if (CODEC_AC3_DEC == CurrentCodec)
PMU_EnterModule(PMU_VIDEOLOW);
if (0 == OpenTrack())
{
return FALSE;
}
AviOpenTrackFlag = 1;
#if 0
CodecGetSampleRate(&Samplerate);
#else
Samplerate = AviGetAudioSamplerate(); /* by ljn. 2008-5-28 */
#endif
Codec_SetSampleRate(Samplerate);
AudioIOBuf.lOutLength = 2048;
//AviAudioSeek(&aviPointer, 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();
// RockOSSendMsg(MBAUDIO,AS_GUAU_VolumeSet,(void*)OutputVolume);
Codec_SetVolumet(OutputVolume);
#endif
return TRUE;
}
void AviAudioStart(void)
{
#ifdef BOARD
pRawFileCache = NULL;
Codec_SetVolumet(OutputVolume);
// RockOSSendMsg(MBAUDIO,AS_GUAU_VolumeSet,(void*)OutputVolume);
VideoDecMusicInit();
VideoDecMusicStart();
#endif
}
void AviAudioCtrl(int cmd)
{
switch (cmd)
{
case AVI_AUDIO_CTRL_START:
AviAudioStart();
break;
case AVI_AUDIO_CTRL_PAUSE:
RockOSSendMsg(MBAUDIO, AS_GUAU_Pause, NULL);
break;
case AVI_AUDIO_CTRL_FFD:
AudioPlayState = Audio_State_FFD;
break;
case AVI_AUDIO_CTRL_FFW:
AudioPlayState = Audio_State_FFW;
break;
case AVI_AUDIO_CTRL_RESUME:
if (CurrentCodec == CODEC_WAV)
CodecSeek((unsigned long)AviGetCurTime(), 0);
RockOSSendMsg(MBAUDIO, AS_GUAU_Resume, NULL);
break;
case AVI_AUDIO_CTRL_STOP:
RockOSSendMsg(MBAUDIO, AS_GUAU_VideoAudioStop, NULL);
break;
default:
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -