亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? mtrackcontrol.c

?? 瑞星微公司RK27XX系列芯片的SDK開(kāi)發(fā)包
?? C
字號(hào):
/* Copyright (C) 2007 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*
File : \Audio\common\mTrackControl.c
Desc : 音頻播放管理

Author : FSH
Date :   2007-06-01
Notes :

$Log :
* FSH         2007/06/01 建立此文件
*
* Vincent Hisung    2007/07/xx 修改
*
*/
/****************************************************************/

#include "../include/file_access.h"
#include "../include/audio_main.h"
#include "../include/audio_globals.h"
#include "../include/commoncmd.h"

#include "../mp3enc/MP3Enc.H"
#include "mRECORD.H"
#include "mTrackControl.h"

#include <stdio.h>
#include <string.h>
int gFileHandleOfData;
int gFileHandleOfIndex;
MY_FILE *gFileHandleOfRecord;

int   PcmLength;

extern void FileFuncInit(void);
extern MY_FILE    *RKFSFileOpen(const char *filename, const char *mode);
extern int     RKFSFileClose(MY_FILE        *stream);
#ifdef FLAC_DEC_INCLUDE
extern int CheckFLAC(void);
#endif


BufferState sPlayBuffer;
//AudioInOut_Type AudioIOBuf;
#define ADPCM_FILL_HDR 90
extern unsigned char ADPCM_Hdr[ADPCM_FILL_HDR];
extern unsigned long  ulEndOfRAM;
extern unsigned long buff[0xc000];

#ifdef PCM_ENC_INCLUDE
extern short  RecordWriteBuf[];
#endif

#if  defined(MP3_ENC_INCLUDE)||defined(ADPCM_ENC_INCLUDE)
extern char   RecordWriteBuf[];
#endif
extern unsigned long RecordWriteIndex;
//****************************************************************************
// File System Handles
//****************************************************************************
int TRACK_GetFileHandleOfData()
{
    return gFileHandleOfData;
}

int TRACK_GetFileHandleOfIndex()
{
    return gFileHandleOfIndex;
}

MY_FILE *TRACK_GetFileHandleOfRecord()
{
    return gFileHandleOfRecord;
}

void TRACK_SetFileHandleOfData(int iNewFileHandleOfData)
{
    gFileHandleOfData = iNewFileHandleOfData;
}

void TRACK_SetFileHandleOfIndex(int iNewFileHandleOfIndex)
{
    gFileHandleOfIndex = iNewFileHandleOfIndex;
}

void  TRACK_SetFileHandleOfRecord(MY_FILE *iNewFileHandleOfRecord)
{
    gFileHandleOfRecord = iNewFileHandleOfRecord;
}

/******************************************************
Name:  OpenTrack
Desc:  打開(kāi)音軌準(zhǔn)備播放【OpenTrack prepares to decode and play the specified track.】
Param: 無(wú)
Return: 1-成功 0-失敗
Global: 無(wú)
Note:  無(wú)
Author: FSH,Vincent Hisung
Log:
******************************************************/
int OpenTrack(void)
{
    unsigned long ulSampleRate, ulChannels, ulBitrate;
    unsigned long Err;
    int result, BRWIndex;
    unsigned char Cmd;
    int       gIndexOfFile;
    unsigned int  uiDBIndex;



    gIndexOfFile = 0;

    //(1) 首先必須獲取CurrentCodec,給數(shù)據(jù)在建立數(shù)據(jù)庫(kù)時(shí)可
    // 根據(jù)文件后綴等
    /***************************************/

    //(2) 通過(guò)INDEX(gIndexOfFile) 獲取該文件句柄gFileHandleOfData



    /***************************************************************/
#ifdef MP2_INCLUDE
    if ((CurrentCodec == CODEC_MP3) || (CurrentCodec == CODEC_MP2))
    {
        result = CheckMP3orMP2();

        RKFIO_FSeek(pRawFileCache, 0, 0);

        if (result == 2)
        {
            CurrentCodec = CODEC_MP2;
        }
        else if (result == 1)
        {
            CurrentCodec = CODEC_MP3;
        }
        else
        {
            return 0; //error, added by vincent.
        }
    }
#endif

    ///ape解碼 section added by hxd 20070707
#ifdef APE_DEC_INCLUDE
    if (CurrentCodec == CODEC_APE_DEC)
    {
        //驗(yàn)證APE歌曲
        result = CheckAPE();
        RKFIO_FSeek(pRawFileCache, 0, 0);

        if (result != 0)//zero is SUCCESS ,non-zero is error
        {
            return 0;//驗(yàn)證不通過(guò)
        }
        else
        {
            CurrentCodec = CODEC_APE_DEC;//驗(yàn)證通過(guò)
        }
    }
#endif

    ///FLAC解碼 section added by hxd 20070707
#ifdef FLAC_DEC_INCLUDE
    if (CurrentCodec == CODEC_FLAC_DEC)
    {
        //驗(yàn)證FLAC歌曲
        result = CheckFLAC();

        if (result != 0)//zero is SUCCESS ,non-zero is error
        {
            return 0;//驗(yàn)證不通過(guò)
        }
        else
        {
            CurrentCodec = CODEC_FLAC_DEC;//驗(yàn)證通過(guò)
        }
    }
#endif

#ifdef WAV_INCLUDE
#if 0   //目前需要支持 IMA,MS,PCM
    else if (CurrentCodec == CODEC_WAV)
    {
        result = CheckWAV();
        RKFIO_FSeek(pRawFileCache, 0, 0);
        if (result <= 0)
            return 0;
        if (result == 2)
        {
            CurrentCodec = CODEC_ADPCM;
        }
    }
#endif
#endif



#ifdef MP4_INCLUDE
    else if (CurrentCodec == CODEC_M4A)
    {
        ///////////////////////
        ;
        //////////////////////
    }
#endif


#ifdef MP2_INCLUDE
    if ((CurrentCodec == CODEC_MP3) || (CurrentCodec == CODEC_MP2))
    {
        RKFIO_FSeek(pRawFileCache, 0, 0);
    }
#endif

    REC_SetMpegMode(1);

    Err = CodecOpen(0, CODEC_OPEN_DECODE);

    // See if we are able to decode this file.
    switch (Err)
    {
        case 0:
            // Codec Open Error


            // RKFIO_FClose((MY_FILE*)gFileHandleOfData);

            //Opentrack_return 0
            return 0;
    }

    //相關(guān)初始化工作
    {
        // Set the sample rate of the output processing.
#if 0
        CodecGetSampleRate(&ulSampleRate);
        CodecGetChannels(&ulChannels);
        CodecGetBitrate(&ulBitrate);

        PlaySamplingRate  = (unsigned int)(ulSampleRate / 1000);
        PlayBitrate     = (unsigned int)(ulBitrate / 1000);


        if (SampleRate >= 8000 && SampleRate <= 48000)
            SampleRate = ulSampleRate;
        else
            SampleRate = 44100;
#endif
    }

    ABFlag = 0;   // OpenTrack Time!clear A-B repeate!

    //此處可根據(jù)具體的模塊設(shè)置晶體


    return 1;
}

/******************************************************
Name:  CreateTrack
Desc:  創(chuàng)建音軌準(zhǔn)備錄制【CreatTrack prepares to encode and creats new file.】
Param: 無(wú)
Return: 1-成功 0-失敗
Global: 無(wú)
Note:  尚不可在硬件平臺(tái)上使用!
Author: FSH
Log:
******************************************************/
unsigned char WriteFileSign = 0;
char RecFileNameLong[23];
#if ROCK_CAMERA
int CreateDvTrack(void)
{
	ulEndOfRAM=(unsigned long)buff; //test

	CurrentCodec	= CODEC_WAV;
	// Open the codec.
	if(CodecOpen(0, CODEC_OPEN_ENCODE) == 0)
	{
		//FClose(gFileHandleOfRecord);
		return(0);
	}
	
	return(1);
}
#endif
int CreateTrack(void)
{

    short *psData;
    short *EncLeft;
    short *EncRight;
    long lLength;
    unsigned char a;
    unsigned int count;
    int dir_num = 1;
#if defined(ADPCM_ENC_INCLUDE)||defined(PCM_ENC_INCLUDE)
    unsigned char ucTmp[512];
#endif

    unsigned char ucRecInput = REC_GetCurrRecInput();
    unsigned char *pRecFileName = REC_GetRecFileName();
    char pRecFileNameTemp[23];



    FileFuncInit();     //test   //需要找個(gè)地方初始化
    ulEndOfRAM = (unsigned long)buff; //test


    if (ucRecInput == LINEIN_REC)
    {

#ifdef PCM_ENC_INCLUDE
        if (REC_GetCurrCodec() == 1)
        {
            //尋找一個(gè)逐漸遞增的文件名,做為錄音文件。
            //還回錄音文件的數(shù)字count
        }
#endif
#ifdef ADPCM_ENC_INCLUDE
        if (REC_GetCurrCodec() == 2)
        {
            //尋找一個(gè)逐漸遞增的文件名,做為錄音文件。
            //還回錄音文件的數(shù)字count

        }
#endif

#ifdef MP3_ENC_INCLUDE
        if (REC_GetCurrCodec() == 4)
        {
            //尋找一個(gè)逐漸遞增的文件名,做為錄音文件。
            //還回錄音文件的數(shù)字count

        }
#endif


        pRecFileName[0] = 'L';
        pRecFileName[1] = 'I';
        pRecFileName[2] = 'N';
        pRecFileName[3] = 'E'; // RecFileName[4] = 'O';
        a = count / 100;
        pRecFileName[4] = a + 0x30;
        a = (count % 100) / 10;
        pRecFileName[5] = a + 0x30;
        a = count % 10;
        pRecFileName[6] = a + 0x30;
    }
    else if (ucRecInput == VOICE_REC)
    {

#ifdef PCM_ENC_INCLUDE
        if (REC_GetCurrCodec() == 1)
        {

            //
        }

#endif
#ifdef ADPCM_ENC_INCLUDE
        if (REC_GetCurrCodec() == 2)
        {
            //

        }
#endif
#ifdef MP3_ENC_INCLUDE
        if (REC_GetCurrCodec() == 3)
        {
            //
        }
#endif


        pRecFileName[0] = 'V';
        pRecFileName[1] = 'R';
        pRecFileName[2] = 'E';
        pRecFileName[3] = 'C'; // RecFileName[4] = 'O';
        a = count / 100;
        pRecFileName[4] = a + 0x30;
        a = (count % 100) / 10;
        pRecFileName[5] = a + 0x30;
        a = count % 10;
        pRecFileName[6] = a + 0x30;
    }

//#ifdef RADIO_REC_INCLUDE
    else if (ucRecInput == FM_REC)
    {

#ifdef PCM_ENC_INCLUDE
        if (REC_GetCurrCodec() == 1)
        {
            ///
        }
#endif
#ifdef ADPCM_ENC_INCLUDE
        if (REC_GetCurrCodec() == 2)
        {
            ///
        }
#endif
#ifdef MP3_ENC_INCLUDE
        if (REC_GetCurrCodec() == 3)
        {
            ///
        }
#endif



        pRecFileName[0] = 'F';
        pRecFileName[1] = 'M';
        pRecFileName[2] = 'R';
        pRecFileName[3] = 'C'; // RecFileName[4] = 'O';
        a = count / 100;
        pRecFileName[4] = a + 0x30;
        a = (count % 100) / 10;
        pRecFileName[5] = a + 0x30;
        a = count % 10;
        pRecFileName[6] = a + 0x30;
    }
//#endif


#ifdef PCM_ENC_INCLUDE
    if (REC_GetCurrCodec() == 1)
    {
        pRecFileName[7] = '.';
        pRecFileName[8] = 'W';
        pRecFileName[9] = 'A';
        pRecFileName[10] = 'V';
        pRecFileName[11] = NULL;
        CurrentCodec = CODEC_WAV;
    }
#endif
#ifdef ADPCM_ENC_INCLUDE
    if (REC_GetCurrCodec() == 2)
    {
        pRecFileName[7] = '.';
        pRecFileName[8] = 'W';
        pRecFileName[9] = 'A';
        pRecFileName[10] = 'V';
        pRecFileName[11] = NULL;
        CurrentCodec = CODEC_WAV;
    }
#endif

#ifdef MP3_ENC_INCLUDE
    if (REC_GetCurrCodec() == 3)
    {
        pRecFileName[7] = '.';
        pRecFileName[8] = 'M';
        pRecFileName[9] = 'P';
        pRecFileName[10] = '3';
        pRecFileName[11] = NULL;
        CurrentCodec = CODEC_MP3_ENC;
    }
#endif
    for (count = 0; count < 999; count++)
    {
        a = count / 100;
        pRecFileName[4] = a + 0x30;
        a = (count % 100) / 10;
        pRecFileName[5] = a + 0x30;
        a = count % 10;
        pRecFileName[6] = a + 0x30;

        strcpy(pRecFileNameTemp, "D:\\RECORD\\");
        strcat(pRecFileNameTemp, (char *)pRecFileName);
        //***********************

        //創(chuàng)建錄音文件
        if ((gFileHandleOfRecord = (MY_FILE *)RKFSFileOpen(pRecFileNameTemp, "r")) == 0)
        {
            memcpy(&RecFileNameLong[0], &pRecFileNameTemp[0], sizeof(pRecFileNameTemp));
            //gFileHandleOfRecord=(MY_FILE *)RKFSFileOpen( pRecFileNameTemp, "wb" );
            WriteFileSign = 1;     /* 寫(xiě)文件標(biāo)志 */
            break;
        }
        RKFSFileClose((MY_FILE *)gFileHandleOfRecord);
    }




    // Open the codec.
    if (CodecOpen(0, CODEC_OPEN_ENCODE) == 0)
    {
        //FClose(gFileHandleOfRecord);
        return(0);
    }


#if defined(ADPCM_ENC_INCLUDE)||defined(PCM_ENC_INCLUDE)
    if (CurrentCodec == CODEC_WAV)
    {
        ADPCM_Hdr[4] = 0xFF;
        ADPCM_Hdr[5] = 0xFF;
        ADPCM_Hdr[6] = 0xFF;
        ADPCM_Hdr[7] = 0xFF;
        ADPCM_Hdr[86] = 0xFF;
        ADPCM_Hdr[87] = 0xFF;
        ADPCM_Hdr[88] = 0xFF;
        ADPCM_Hdr[89] = 0xFF;

        ADPCM_Hdr[70] = 'f';
        ADPCM_Hdr[71] = 'a';
        ADPCM_Hdr[72] = 'c';
        ADPCM_Hdr[73] = 't';
        ADPCM_Hdr[74] = 4;
        ADPCM_Hdr[75] = 0;
        ADPCM_Hdr[76] = 0;
        ADPCM_Hdr[77] = 0;

        ADPCM_Hdr[82] = 'd';
        ADPCM_Hdr[83] = 'a';
        ADPCM_Hdr[84] = 't';
        ADPCM_Hdr[85] = 'a';


        ADPCM_Hdr[0] = 'R';
        ADPCM_Hdr[1] = 'I';
        ADPCM_Hdr[2] = 'F';
        ADPCM_Hdr[3] = 'F';
        ADPCM_Hdr[8] = 'W';
        ADPCM_Hdr[9] = 'A';
        ADPCM_Hdr[10] = 'V';
        ADPCM_Hdr[11] = 'E';
        ADPCM_Hdr[12] = 'f';
        ADPCM_Hdr[13] = 'm';
        ADPCM_Hdr[14] = 't';
        ADPCM_Hdr[15] = ' ';
        ADPCM_Hdr[16] = 50;
        ADPCM_Hdr[17] = 0;
        ADPCM_Hdr[18] = 0;

        ADPCM_Hdr[19] = 0;
    }
#endif


    return(1);


}



/******************************************************
Name:  CloseTrack
Desc:  關(guān)閉當(dāng)前播放音軌【CloseTrack closes the currently opened file.】
Param: 無(wú)
Return: 1-成功 0-失敗
Global: 無(wú)
Note:  無(wú)
Author: FSH
Log:
******************************************************/
void CloseTrack(void)
{
    BufferState *pBuffer;
    unsigned char Cmd;
    unsigned  uCPSR;

    CodecClose();

    if (gFileHandleOfData)
    {
        RKFIO_FClose((MY_FILE*)gFileHandleOfData);
        gFileHandleOfData = 0;
    }
    if (gFileHandleOfRecord)
    {

        RKFSFileClose((MY_FILE *)gFileHandleOfRecord);
        gFileHandleOfRecord = 0;
    }

    ///PlaySec = 0;
}


?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠色狠狠色综合| 国产一区二区三区香蕉 | 丝袜美腿亚洲综合| 精品成人一区二区三区四区| 94色蜜桃网一区二区三区| 日韩在线一区二区三区| 亚洲欧洲美洲综合色网| 日韩精品一区二区三区视频在线观看| 97久久人人超碰| 精彩视频一区二区| 亚洲第一激情av| 中文字幕欧美日韩一区| 日韩免费一区二区三区在线播放| 色婷婷亚洲精品| 国产成人一级电影| 久久精品国产亚洲aⅴ| 亚洲在线视频网站| 最新国产成人在线观看| 久久久综合九色合综国产精品| 欧美精选一区二区| 色999日韩国产欧美一区二区| 国产成人小视频| 精品一区二区三区香蕉蜜桃| 婷婷丁香久久五月婷婷| 亚洲精品你懂的| 国产精品的网站| 日本一区二区不卡视频| 久久久天堂av| 久久一日本道色综合| 欧美变态口味重另类| 亚洲免费资源在线播放| 久久精品欧美日韩| xnxx国产精品| 精品久久久久香蕉网| 日韩欧美的一区二区| 91精品国产综合久久婷婷香蕉| 精品视频在线视频| 欧美色偷偷大香| 欧美日韩国产三级| 欧美区在线观看| 91精品国产综合久久精品麻豆| 欧美日韩精品欧美日韩精品一| 欧美最猛性xxxxx直播| 色欧美88888久久久久久影院| 91片黄在线观看| 91在线一区二区三区| 91视频91自| 91福利国产成人精品照片| 日本韩国欧美国产| 欧美在线一区二区| 欧美日韩国产经典色站一区二区三区 | 亚洲成av人影院| 天天色综合天天| 日本伊人精品一区二区三区观看方式| 天天色图综合网| 免费在线观看一区二区三区| 麻豆精品精品国产自在97香蕉| 久久99国产精品久久99果冻传媒| 久久精品99久久久| 国产成都精品91一区二区三| 不卡视频一二三四| 91成人在线精品| 91精品国产91热久久久做人人| 日韩午夜中文字幕| 国产欧美日韩在线视频| 自拍偷拍亚洲综合| 亚洲一区在线观看免费 | 欧美极品aⅴ影院| 亚洲欧美日韩国产一区二区三区 | 午夜国产精品一区| 黑人巨大精品欧美一区| 国产成人啪免费观看软件| 99久久精品99国产精品| 欧美年轻男男videosbes| 精品捆绑美女sm三区| 中文在线一区二区| 亚洲综合成人在线| 美女看a上一区| 北条麻妃一区二区三区| 欧美日韩国产区一| 国产视频一区在线观看| 亚洲一区二区三区免费视频| 免费av网站大全久久| eeuss鲁片一区二区三区在线观看| 欧美日韩一区二区三区视频| 久久久亚洲午夜电影| 一区二区在线观看免费| 精品一区二区精品| 一本色道亚洲精品aⅴ| 日韩精品一区二区三区swag| 综合久久久久久久| 韩国毛片一区二区三区| 欧美三级三级三级爽爽爽| 久久久久久久久久久黄色| 一区二区三区欧美激情| 国产精品一区二区视频| 欧美日韩国产经典色站一区二区三区| 国产亚洲精品资源在线26u| 亚洲国产日韩a在线播放性色| 国产精品夜夜爽| 91精品国产黑色紧身裤美女| 亚洲三级电影全部在线观看高清| 精品一区二区三区不卡 | 久久精品国产99国产| 日本精品免费观看高清观看| 久久亚洲二区三区| 天天影视色香欲综合网老头| 波多野结衣一区二区三区| 精品国产一区二区三区久久久蜜月| 亚洲精品国产a| 成人看片黄a免费看在线| 日韩免费观看高清完整版| 亚洲尤物视频在线| av不卡在线播放| 欧美国产日产图区| 国产最新精品精品你懂的| 欧美一区二区三区在线看| 亚洲一区二区三区四区在线 | 成人av小说网| 2024国产精品| 久热成人在线视频| 欧美肥大bbwbbw高潮| 一区二区三区在线观看网站| 成人h精品动漫一区二区三区| 久久久综合九色合综国产精品| 精品综合免费视频观看| 欧美一区二区三区视频在线| 亚洲成人av中文| 欧美性色黄大片| 亚洲线精品一区二区三区八戒| 91污片在线观看| 18成人在线视频| 白白色 亚洲乱淫| 中文字幕一区二区三区视频| 国产99久久久精品| 亚洲国产精品黑人久久久| 国产成人在线视频网址| 中文字幕高清一区| 成人一二三区视频| 国产精品国产自产拍在线| 成人av网站在线观看免费| 国产在线观看免费一区| 精品黑人一区二区三区久久 | 在线影视一区二区三区| 玉足女爽爽91| 欧美日韩国产综合一区二区三区 | 视频精品一区二区| 欧美一级精品大片| 久草精品在线观看| 久久九九影视网| 97久久久精品综合88久久| 亚洲欧美日韩一区二区| 欧美日韩性生活| 国产在线精品不卡| 亚洲黄网站在线观看| 91精品一区二区三区在线观看| 国产精品污污网站在线观看| 不卡的av电影| 一区二区高清在线| 欧美日韩第一区日日骚| 久久影院午夜片一区| 国产精品资源站在线| 欧美极品少妇xxxxⅹ高跟鞋| 美女一区二区三区在线观看| 国产精品另类一区| 欧美一区二区三区不卡| 97精品久久久午夜一区二区三区| 麻豆91精品视频| 亚洲你懂的在线视频| 久久婷婷一区二区三区| 欧美日本韩国一区| 91女人视频在线观看| 国产福利一区二区三区| 奇米影视在线99精品| 亚洲欧洲精品一区二区三区不卡| 日韩欧美国产三级电影视频| 在线影院国内精品| av在线播放成人| 激情图片小说一区| 日本一区中文字幕| 亚洲一区二区三区三| 日韩美女精品在线| 国产色综合一区| 精品国产精品网麻豆系列| 欧美日韩精品电影| 色一情一伦一子一伦一区| 国产一区二区三区久久久| 日本欧美肥老太交大片| 亚洲国产一区二区视频| 亚洲色图清纯唯美| 国产精品美女久久久久久久久久久| 日韩欧美一区二区不卡| 欧美福利一区二区| 在线免费观看视频一区| 色综合中文字幕| 成人av资源在线| 国产成人av影院| 国产福利一区二区三区视频| 国产一区二区三区日韩 | 国产精品综合一区二区三区|