📄 mrecord.c
字号:
gChannel = 2; // stereo
thePresentCodec = 1;
break;
#endif
#ifdef ADPCM_ENC_INCLUDE
case ADPCM_REC_SETTING_32:
gBitrate = 32;
gSamplingFreq = 8000; // 44.1KHz
gMpegMode = 1; //
gChannel = 1; // mono
thePresentCodec = 2;
break;
case ADPCM_REC_SETTING_45:
gBitrate = 45;
gSamplingFreq = 11025; // 32KHz
gMpegMode = 1; //
gChannel = 1; // stereo
thePresentCodec = 2;
break;
case ADPCM_REC_SETTING_67:
gBitrate = 67;
gSamplingFreq = 8000; // 44.1KHz
gMpegMode = 1; //
gChannel = 2; // stereo
thePresentCodec = 2;
break;
case ADPCM_REC_SETTING_89:
gBitrate = 89;
gSamplingFreq = 22050; // 44.1KHz
gMpegMode = 1; //
gChannel = 1; // stereo
thePresentCodec = 2;
break;
case ADPCM_REC_SETTING_92:
gBitrate = 92;
gSamplingFreq = 11025; // 44.1KHz
gMpegMode = 1; //
gChannel = 2; // stereo
thePresentCodec = 2;
break;
case ADPCM_REC_SETTING_128:
gBitrate = 128;
gSamplingFreq = 32000; // 44.1KHz
gMpegMode = 1; //
gChannel = 1; // stereo
thePresentCodec = 2;
break;
case ADPCM_REC_SETTING_177:
gBitrate = 177;
gSamplingFreq = 44100; // 44.1KHz
gMpegMode = 1; //
gChannel = 1; // stereo
thePresentCodec = 2;
break;
case ADPCM_REC_SETTING_180:
gBitrate = 180;
gSamplingFreq = 22050; // 44.1KHz
gMpegMode = 1; //
gChannel = 2; // stereo
thePresentCodec = 2;
break;
case ADPCM_REC_SETTING_259:
gBitrate = 259;
gSamplingFreq = 32000; // 44.1KHz
gMpegMode = 1; //
gChannel = 2; // stereo
thePresentCodec = 2;
break;
case ADPCM_REC_SETTING_356:
gBitrate = 356;
gSamplingFreq = 44100; // 44.1KHz
gMpegMode = 1; //
gChannel = 2; // stereo
thePresentCodec = 2;
break;
#if ROCK_CAMERA
case ADPCM_DVREC_SETTING_65:
gBitrate = 45;
gSamplingFreq = 11025;
gMpegMode = 1;
gChannel = 1;
thePresentCodec = 2;
break;
#endif
#endif
#ifdef MP3_ENC_INCLUDE
case MP3_REC_SETTING_16:
gBitrate = 16;
gSamplingFreq = 16000; // 16KHz
gMpegMode = 0; // Mpeg2
gChannel = 1; // mono
thePresentCodec = 3;
break;
case MP3_REC_SETTING_24:
gBitrate = 24;
gSamplingFreq = 16000; // 16KHz
gMpegMode = 0; // Mpeg2
gChannel = 1; // mono
thePresentCodec = 3;
break;
case MP3_REC_SETTING_32:
gBitrate = 32;
gSamplingFreq = 16000; // 16KHz
gMpegMode = 0; // Mpeg2
gChannel = 1; // mono
thePresentCodec = 3;
break;
case MP3_REC_SETTING_40:
gBitrate = 40;
gSamplingFreq = 16000; // 16KHz
gMpegMode = 0; // Mpeg2
gChannel = 2; // stereo
thePresentCodec = 3;
break;
case MP3_REC_SETTING_48:
gBitrate = 48;
gSamplingFreq = 22050; // 22.05KHz
gMpegMode = 0; // Mpeg2
gChannel = 2; // stereo
thePresentCodec = 3;
break;
case MP3_REC_SETTING_56:
gBitrate = 56;
gSamplingFreq = 22050; // 22.05KHz
gMpegMode = 0; // Mpeg2
gChannel = 2; // stereo
thePresentCodec = 3;
break;
case MP3_REC_SETTING_64:
gBitrate = 64;
gSamplingFreq = 22050; // 22.05KHz
gMpegMode = 0; // Mpeg2
gChannel = 2; // stereo
thePresentCodec = 3;
break;
case MP3_REC_SETTING_80:
gBitrate = 80;
gSamplingFreq = 22050; // 22.05KHz
gMpegMode = 0; // Mpeg2
gChannel = 2; // stereo
thePresentCodec = 3;
break;
case MP3_REC_SETTING_96:
gBitrate = 96;
gSamplingFreq = 22050; // 22.05KHz
gMpegMode = 0; // Mpeg2
gChannel = 2; // stereo
thePresentCodec = 3;
break;
case MP3_REC_SETTING_112:
gBitrate = 112;
gSamplingFreq = 32000; // 32KHz
gMpegMode = 1; // Mpeg1
gChannel = 2; // stereo
thePresentCodec = 3;
break;
case MP3_REC_SETTING_128:
gBitrate = 128;
gSamplingFreq = 44100; // 32KHz
gMpegMode = 1; // Mpeg1
gChannel = 2; // stereo
thePresentCodec = 3;
break;
case MP3_REC_SETTING_160:
gBitrate = 160;
gSamplingFreq = 44100; // 44.1KHz
gMpegMode = 1; // Mpeg1
gChannel = 2; // stereo
thePresentCodec = 3;
break;
case MP3_REC_SETTING_192:
gBitrate = 192;
gSamplingFreq = 44100; // 44.1KHz
gMpegMode = 1; // Mpeg1
gChannel = 2; // stereo
thePresentCodec = 3;
break;
case MP3_REC_SETTING_256:
gBitrate = 256;
gSamplingFreq = 44100; // 44.1KHz
gMpegMode = 1; // Mpeg1
gChannel = 2; // stereo
thePresentCodec = 3;
break;
#endif
}
}
/*****************************************************
Name: RecHighTaskMsgCallBack(void)
Desc: 录音回调,消息流程处理
Param:
Return:
Global:
Note:
Author: fsh 2007-9-13
Log:
******************************************************/
BOOLEAN RecUpDataMsgCallBack(ROCK_MSG_ID id, void *msg)
{
#ifdef BOARD
int ret = 1;
//RecHighTaskMsg(id,msg);
switch (id)
{
case AS_GUAU_RecUpData:
WindowInvalidateWindow(NULL); //WIN_MAIN
break;
case AS_GUAU_RecErro:
if (WIN_MAIN)
{
WindowSendMessage(WIN_MAIN, WM_COMMAND, (INT32)msg, NULL);
}
break;
default:
ret = 0;
break;
}
return ret;
#endif
}
unsigned char SaveLast_Data(void)
{
if (RecordWriteIndex <= REC_WRITE_BUF_LEN)
#ifdef PCM_ENC_INCLUDE
FS_fwrite(&RecordWriteBuf[0], 1, RecordWriteIndex*2 , (FS_FILE *)TRACK_GetFileHandleOfRecord());
#endif
#if defined(MP3_ENC_INCLUDE)||defined(ADPCM_ENC_INCLUDE)
FS_fwrite(&RecordWriteBuf[0], 1, RecordWriteIndex , (FS_FILE *)TRACK_GetFileHandleOfRecord());
#endif
else if (RecordWriteIndex > REC_WRITE_BUF_LEN)
#ifdef PCM_ENC_INCLUDE
FS_fwrite(&RecordWriteBuf[REC_WRITE_BUF_LEN], 1, (RecordWriteIndex - REC_WRITE_BUF_LEN)*2 , (FS_FILE *)TRACK_GetFileHandleOfRecord());
#endif
#if defined(MP3_ENC_INCLUDE)||defined(ADPCM_ENC_INCLUDE)
FS_fwrite(&RecordWriteBuf[REC_WRITE_BUF_LEN], 1, (RecordWriteIndex - REC_WRITE_BUF_LEN) , (FS_FILE *)TRACK_GetFileHandleOfRecord());
#endif
return 1;
}
/*****************************************************
Name: RecHighTaskMsgCallBack(void)
Desc: 录音回调,消息流程处理
Param:
Return:
Global:
Note:
Author: fsh 2007-9-13
Log:
******************************************************/
UINT16 RecFisrtNoWrite = 0;
int RecHighTaskMsgCallBack(ROCK_MSG_ID id, void *msg)
{
#ifdef BOARD
int ret = 1;
switch (id)
{
case AS_GUAU_RecPrepare:
if ((REC_Flag == RECORD_PREPARE) || (REC_Flag == RECORD_ERROR))
{
if (REC_Prepare() == FALSE)
{
REC_Flag = RECORD_ERROR;
return FALSE;
}
if ((void *)msg)
{
RockOSSendMsg(MBAUDIO, AS_GUAU_TSStartRecReq, NULL);
}
else
{
REC_Flag = RECORD_PREPARE;
}
}
break;
case AS_GUAU_TSStartRecReq://录音硬件初始化,启动录音DMA和CODEC,并创建音轨
if (REC_Flag == RECORD_PREPARE)
{
RecFisrtNoWrite = 1;
if (REC_StartRecord() == FALSE)
{
REC_Flag = RECORD_ERROR;
return FALSE;
}
REC_Flag = RECORD_BEING;
}
break;
case AS_ISRAU_TSRecDMAIntInd://DMA切换数据,帧编码处理
if (REC_Flag == RECORD_BEING)
{
EncodeProcess(); // decode err ??
}
break;
case AS_GUAU_RecPause://录音占停
if (REC_Flag == RECORD_BEING)
{
REC_Flag = RECORD_PAUSE;
Audio_RecordPause();
}
break;
case AS_GUAU_RecResume://继续录音
if (REC_Flag == RECORD_PAUSE)
{
REC_Flag = RECORD_BEING;
Audio_RecordResume();
}
break;
case AS_GUAU_TSStopRecReq://停止录音,关闭文件,等待新录音
// REC_Flag =RECORD_PREPARE;
//暂停的状态 下 等待 DMA 是否 会死?
if (RecordWriteIndex <= REC_WRITE_BUF_LEN)
{
if (RecordWriteIndex > 2*1024)
{
memset(&RecordWriteBuf[RecordWriteIndex - 2*1024], 0, 2*1024);
}
else
{
memset(&RecordWriteBuf[0], 0, RecordWriteIndex);
}
}
else if (RecordWriteIndex > REC_WRITE_BUF_LEN)
{
if (RecordWriteIndex > (2*1024 + REC_WRITE_BUF_LEN))
{
memset(&RecordWriteBuf[RecordWriteIndex - 2*1024], 0, 2*1024);
}
else
{
memset(&RecordWriteBuf[REC_WRITE_BUF_LEN], 0, (RecordWriteIndex - REC_WRITE_BUF_LEN));
}
}
if ((REC_Flag == RECORD_BEING) || (REC_Flag == RECORD_PAUSE) || (REC_Flag == RECORD_ERROR))
{
if ((REC_Flag == RECORD_BEING) || (REC_Flag == RECORD_ERROR)) // RECORD_PAUSE
{
REC_Flag = RECORD_ERROR; // FOR STOP DMA ISR.
while (!DMABufferEmpty);
I2sStop();
}
REC_Flag = RECORD_SAVE;
HDMA_Stop(0);
if (REC_GetCurrRecInput() != FM_REC)//判断是否从Fm进入录音
{
Codec_SetMode(Codec_DACout);
}
//RockOSSendMsg( MBDISP, AS_GUAU_RECORDCLOSE, NULL);
//RockOSSendMsg( MBGUI, AS_GUAU_RECORDCLOSE, NULL);
RockOSSendMsg(MBDISP, AS_GUAU_RECORDCLOSE, NULL);
}
break;
case AS_GUAU_CancleSave:
FSFileDelete(RecFileNameLong);
break;
case AS_GUAU_RecQuailtySwitch:
CodecOpen(0, CODEC_OPEN_ENCODE);
break;
default:
ret = 0;
break;
}
return ret;
#endif
}
int RecHighTaskMsg(ROCK_MSG_ID id, void *msg)
{
switch (id)
{
case AS_GUAU_RECORDWRITE:
if ((REC_Flag != RECORD_PREPARE))
{
#ifdef PCM_ENC_INCLUDE
#if ROCK_CAMERA && CAM_FUN_DV
if (0x8000 != FS_fwrite(msg, 1, 0x8000,
(FS_FILE *)TRACK_GetFileHandleOfRecord()))
#else
if (REC_WRITE_BUF_LEN != FS_fwrite(msg, 1, REC_WRITE_BUF_LEN,
(FS_FILE *)TRACK_GetFileHandleOfRecord()))//不能用立即数,DV录音要改这个长度
#endif
{
// RockOSSendMsg(MBGUI,AS_GUAU_RecErro,(void*)RECORD_FILEWRITE_ERRO); /* 写文件失败 */
}
#endif
#if defined(MP3_ENC_INCLUDE)||defined(ADPCM_ENC_INCLUDE)
#if ROCK_CAMERA && CAM_FUN_DV
if (0x8000 != FS_fwrite(msg, 1, 0x8000,
(FS_FILE *)TRACK_GetFileHandleOfRecord()))
#else
if (REC_WRITE_BUF_LEN != FS_fwrite(msg, 1, REC_WRITE_BUF_LEN, //不能用立即数,DV录音要改这个长度
(FS_FILE *)TRACK_GetFileHandleOfRecord()))
#endif
{
//RockOSSendMsg(MBAUDIO,AS_GUAU_RecPause,NULL);
//RockOSSendMsg(MBGUI,AS_GUAU_RecErro,(void*)RECORD_FILEWRITE_ERRO); /* 写文件失败 */
}
#endif
}
break;
case AS_GUAU_RECORDCLOSE:
if (REC_Flag == RECORD_SAVE)
{
SaveLast_Data();
CloseTrack();
PMU_ExitModule(PMU_RECORDADPCM);
// PMU_ExitModule(PMU_RECORDMP3);
REC_Flag = RECORD_PREPARE;
}
break;
default:
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -