⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mrecord.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
📖 第 1 页 / 共 3 页
字号:
/******************************************************
Copyright(C)2007,Rockchip Co., Ltd. All Rights Reserved.
File:mRECORD.c
Desc:完成模块录音的相关处理接口函数
Note:
Author:fsh
$Log: mRECORD.c,v $
Revision 1.4  2008/07/09 14:25:04  DDL
增加对camera模块的支持  由宏ROCK_CAMRA隔离

dengdl

Revision 1.3  2008/06/19 04:42:24  Administrator
代码整理!

Revision 1.2  2008/05/24 02:39:39  Administrator
原录音文件冲数据的BUG没有更新,现更新上去!

Revision 1.1.1.1  2008/05/07 04:14:50  Administrator
no message

Revision 1.2  2008/03/07 09:28:29  Hanjiang
no message

Revision 1.18  2008/01/10 09:25:29  Lingzhaojun
发布0110版本

Revision 1.17  2008/01/09 06:59:35  Lingzhaojun
提交APE

Revision 1.16  2008/01/08 13:33:42  Lingzhaojun
合并蓝魔970代码

Revision 1.14  2007/12/26 01:52:55  Huangzufang
录音修改提交

Revision 1.13  2007/12/24 07:54:37  Lingzhaojun
同步蓝魔版本基本模块

Revision 1.2  2007/12/21 10:06:51  Lingzhaojun
蓝魔二合一初步

Revision 1.1.1.1  2007/12/21 02:33:32  Lingzhaojun
12.21

Revision 1.3  2007/12/14 15:05:34  Hanjiang
rm972 pp后的版本上传

Revision 1.2  2007/12/13 12:44:35  Caifeng
no message

Revision 1.1.1.1  2007/12/11 14:18:09  cvsadmin
no message

Revision 1.3  2007/12/06 06:50:16  Xiexiuxin
Fm自动录音

Revision 1.2  2007/12/04 13:36:50  Fangzhenfu
新 SDK 整合完后上传!!!

Revision 1.1.1.1  2007/12/01 01:29:00  Lingzhaojun
no message

Revision 1.9  2007/11/22 02:10:36  Huangzufang
录音文件不能播放修改

Revision 1.8  2007/11/21 08:52:52  Huangzufang
录音提交

Revision 1.7  2007/11/08 09:07:15  Fangsaihong
no message

Revision 1.6  2007/11/02 00:52:53  Fangsaihong
录音模块修改

Revision 1.5  2007/10/30 10:16:19  Hanjiang
no message

Revision 1.3  2007/10/24 07:05:21  Hanjiang
no message

Revision 1.0  2007/08/30 fsh
******************************************************/
/****************************************************************************/
#include "include.h"
#include "../include/audio_main.h"
#include "../include/audio_globals.h"
#include "mTrackControl.h"
#include "../include/commoncmd.h"


#include "../mp3enc/MP3enc.H"


#include "mRECORD.H"
void Audio_RecISR(void);


unsigned long gBitrate;       // Bit Rate for recording
unsigned int gSamplingFreq;      // Sampling Frequency for recording
unsigned char gMpegMode;       // Mpeg Mode for recording
unsigned char gChannel;       // Channel for recording
unsigned char REC_Flag;       // flag to store updating status for recording
unsigned long CurrRecordTime;      // Total current recording time as second
unsigned long FreeSize;       // Total Free Size in disk as kbytes
unsigned long TotalSize;       // Total Disk Size as kbytes
unsigned long RemainTime;       // Remain Time for recording
unsigned char CurRecInput;        // Current Recording Input like line-in, Voice, FM
#ifdef RADIO_REC_INCLUDE
unsigned char PrevRecInput;      // Previous Recording Input like line-in, Voice, FM
#endif
unsigned char MenuRecMode;      // Recording Mode according to Bitrate
unsigned char   RecFileName[REC_FILE_NAME_SIZE+1]; // Recording File Name
unsigned int  thePresentCodec; //[1]PCM [2]ADPCM [3]MP3

#define REC_WRITE_BUF_NUM    2
#ifdef PCM_ENC_INCLUDE
short  RecordWriteBuf[REC_WRITE_BUF_NUM*REC_WRITE_BUF_LEN];
#endif

#if  defined(MP3_ENC_INCLUDE)||defined(ADPCM_ENC_INCLUDE)
char  RecordWriteBuf[REC_WRITE_BUF_NUM*REC_WRITE_BUF_LEN];
#endif
unsigned long RecordWriteIndex = 0;
unsigned char SendFirstBufSign = 0;
unsigned char SendSecondBufSign = 0;
#if ROCK_CAMERA
char * pCurDvAudioOutputBuf;
int	  curDvAudioOutputBufLen;
#endif
extern unsigned char REC_Error_Flag;
extern unsigned char REC_SaveFlag;




/******************************************************
Name: REC_InitVariable
Desc: 录音前的数据变量初始化
Param:
Return:
Global:
Note:
Author:fsh
Log:
******************************************************/
void REC_InitVariable(void)
{
    CurrRecordTime = 0;
    FreeSize  = 0;
    RemainTime  = 0;
    TotalSize  = 0;
    //CurRecInput  = 0;
    REC_Flag        = RECORD_PREPARE;

#ifdef PCM_ENC_INCLUDE
    gBitrate  = 128;
    gSamplingFreq = 8000;
    gMpegMode  = 1;
    gChannel  = 1;
    MenuRecMode  = PCM_REC_SETTING_128;
    thePresentCodec = 1;
#elif defined(ADPCM_ENC_INCLUDE)
    gBitrate  = 32;
    gSamplingFreq = 8000;
    gMpegMode  = 1;
    gChannel  = 1;
    MenuRecMode  = ADPCM_REC_SETTING_32;
    thePresentCodec = 2;

#elif defined(MP3_ENC_INCLUDE)
    gBitrate  = 16;
    gSamplingFreq = 16000;
    gMpegMode  = 0;
    gChannel  = 1;
    MenuRecMode  = MP3_REC_SETTING_16;
    thePresentCodec = 3;
#endif
}

///////////////////////////////////////////////////////////////////////////////////////////
/******************************************************
Name: REC_GetCurrCodec()
Desc: Get the  current codec ;//[1]PCM [2]ADPCM  [3]MP3
Param:
Return: Current Codec
Global:
Note:
Author:fsh
Log:
******************************************************/
unsigned int REC_GetCurrCodec(void)
{
    return thePresentCodec;
}

/******************************************************
Name:  REC_GetCurrRecMode(void)
Desc: getting the record mode.example :PCM_REC_SETTING_128
Param:
Return:  getting the Menu recorder Mode
Global:
Note:
Author:fsh
Log:
******************************************************/
unsigned char REC_GetCurrRecMode(void)
{
    return MenuRecMode;
}

/******************************************************
Name:  REC_SetRecMode(unsigned char ucMode)
Desc:  Setting the recorder mode.example :PCM_REC_SETTING_128
Param:
Return:  setting the Menu record Mode
Global:
Note:
Author:fsh
Log:
******************************************************/
void REC_SetRecMode(unsigned char ucMode)
{
    MenuRecMode = ucMode;
}

/******************************************************
Name:  REC_GetRemainTime(void)
Desc:  Getting remain time about recorder.
Param:
Return:  RemainTime
Global:
Note:
Author:fsh
Log:
******************************************************/
unsigned long REC_GetRemainTime(unsigned char getfreesize)
{
    unsigned long long recFreeSize;//M
    unsigned long compensationTime;

    if (getfreesize)
    {
        FreeSize = FS_GetFreeMem("D:\\");
    }
    if ((long)(FreeSize - MIN_SIZE_FOR_RECORD) <= 0)
    {
        recFreeSize = 0;
    }
    else
    {
        recFreeSize = (FreeSize - MIN_SIZE_FOR_RECORD);
    }

    RemainTime = 0;
    if (recFreeSize > 0)
    {
        RemainTime = ((recFreeSize) << 13) / ((gBitrate * 1000));
        compensationTime = ((recFreeSize) << 13) % ((gBitrate * 1000));// * 8 *1024

        if (compensationTime)
            RemainTime++;
    }

    return RemainTime;//sec
}

/******************************************************
Name: REC_GetFreeSize(void)
Desc:  how many free size for recorder .
Param:
Return:  FreeSize
Global:
Note:
Author:fsh
Log:
******************************************************/
unsigned long REC_GetFreeSize(void)
{
    return FreeSize;
}

/******************************************************
Name: REC_UpdateDiskSize()
Desc:
Param:
Return:
Global:
Note:
Author:fsh
Log:
******************************************************/
void REC_UpdateDiskSize()
{
    //return FreeSize;
}

/******************************************************
Name:  REC_GetCurrRecInput(void)
Desc:   RK27XX has three recorder Mode for Input.
               LINEIN_REC,VOICE_REC,FM_REC
Param:
Return:
Global:
Note:
Author:fsh
Log:
******************************************************/
unsigned char REC_GetCurrRecInput(void)
{
    return CurRecInput;
}

/******************************************************
Name:  REC_SetCurrRecInput(unsigned char)
Desc:  Setting the  Input Mode.
               LINEIN_REC,VOICE_REC,FM_REC
Param:
Return:   NULL
Global:
Note:
Author: fsh
Log:
******************************************************/
void REC_SetCurrRecInput(unsigned char ucRecInput)
{
    CurRecInput = ucRecInput;
}


/*****************************************************
Name:   REC_GetCurrRecordingSec(void)
Desc:    Getting the current recordTime.
Param:
Return:
Global:
Note:
Author: fsh
Log:
******************************************************/
unsigned long REC_GetCurrRecordingSec(void)
{
    return CurrRecordTime;
}

unsigned long  REC_GetTotalTime(void)
{
    return RemainTime;
}

/*****************************************************
Name:   REC_SetCurrRecordingSec(void)
Desc:   Updata the new recordTime.
Param:
Return:
Global:
Note:
Author: fsh
Log:
******************************************************/
void REC_SetCurrRecordingSec(unsigned long usNewRecordTime)
{
    CurrRecordTime = usNewRecordTime;
}

/*****************************************************
Name:   REC_GetMinRecordTime(void)
Desc:   Getting the min times for recorder.//now it is buffer size.

Param:
Return:
Global:
Note:
Author: fsh
Log:
******************************************************/
unsigned int REC_GetMinRecordTime(void)
{
    return MIN_SIZE_FOR_RECORD;
}

/*****************************************************
Name:   REC_GetRecFileName(void)
Desc:   return the recorder name .
Param:
Return:
Global:
Note:
Author: fsh
Log:
******************************************************/
unsigned char* REC_GetRecFileName(void)
{
    return RecFileName;
}

/*****************************************************
Name:   REC_GetRecFileNameSize(void)
Desc:   return the name size .
Param:
Return:
Global:
Note:
Author: fsh
Log:
******************************************************/
unsigned int REC_GetRecFileNameSize(void)
{
    return REC_FILE_NAME_SIZE;
}

/*****************************************************
Name:   REC_GetgBitrate(void)
Desc:   Getting the Bitrate of recorder.
Param:
Return:
Global:
Note:
Author: fsh
Log:
******************************************************/
unsigned long REC_GetgBitrate(void)
{
    return (unsigned long)gBitrate;
}

/*****************************************************
Name:   REC_GetSamplingFreq(void)
Desc:   Getting the Sample rate of recorder.
Param:
Return:
Global:
Note:
Author: fsh
Log:
******************************************************/
unsigned int REC_GetSamplingFreq(void)
{
    return gSamplingFreq;
}

/*****************************************************
Name:   REC_GetChannel(void)
Desc:   Getting the Channel of recorder.
Param:
Return:
Global:
Note:
Author: fsh
Log:
******************************************************/
unsigned char REC_GetChannel(void)
{
    return gChannel;
}
/*****************************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -