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

📄 file_access.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
字号:
/* Copyright (C) 2007 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*
File : \Audio\common\
Desc : 文件访问函数。

Author : Vincent Hisung
Date :   2007-07-xx
Notes :

$Log :
* Vincent Hisung    2007/07/xx 建立此文件
*
*/
/****************************************************************/

#include "include.h"
MY_FILE *pRawFileCache = NULL;
extern MY_FILE* outfile;

MY_FILE*(*RKFIO_FOpen)(const char *, const char *);
size_t (*RKFIO_FRead)(MY_FILE *, void *, size_t) ;
int (*RKFIO_FSeek)(MY_FILE * /*stream*/, long int /*offset*/, int /*whence*/);
unsigned int (*RKFIO_FLength)(MY_FILE *in);
int (*RKFIO_FClose)(MY_FILE * /*stream*/);
long int (*RKFIO_FTell)(MY_FILE *stream); //long int ftell(MY_FILE *stream);
size_t (*RKFIO_FWrite)(MY_FILE *stream, const void *ptr, size_t n);

//若使用了RK27的文件系统函数则定定义该宏
#if defined(BOARD) || defined(ROCK_FS) //080706,HUANGSL,增加 PC ROCK_FS的支持.
#define RK27_FS

long int RKFS_Tell(MY_FILE *in)
{

    MY_FILE *a = (MY_FILE*)in;
    return (long int)(a->Offset);

}
#endif

size_t RKfread(MY_FILE *f, void *b, size_t s)
{
#ifdef RK27_FS
    //return FSFileRead(b,s,(MY_FILE*)f);
    size_t tmp = FSFileRead(b, s, (MY_FILE*)f);
    //FSFileWrite(b,2048,(MY_FILE*)outfile);
    //while(1);
    return tmp;
#else
    return fread(b, 1, s, f);
#endif
}

size_t RKFIO_flacFRead(void *ptr, size_t size, size_t n, MY_FILE *stream)
{
    return RKfread(stream, ptr, size*n);
}

unsigned int  RKftell(MY_FILE *in)
{
    unsigned int  AllByteLength, OldOptionByte;

#ifdef RK27_FS
    AllByteLength = FSFileGetSize((MY_FILE*)in);
#else
    OldOptionByte = ftell(in);
    fseek(in, 0, 2);
    AllByteLength = ftell(in);
    fseek(in, OldOptionByte, 0);
#endif

    return  AllByteLength;

}

size_t RKfwrite(MY_FILE *stream, const void *ptr, size_t n)
{
    size_t p = 0;
#ifdef RK27_FS
    p = FSFileWrite(ptr, n, (MY_FILE*)stream);
#else
    p = fwrite(ptr, 1, n, stream);
#endif
    return p;
}

/******************************************************
Name:  FileFuncInit
Desc:  文件操作函数指针初始化
Param: 无
Return: 无
Global: 无
Note:  在使用音频CODEC之前一定要调用此函数
Author: Vincent Hisung
Log:
******************************************************/
void FileFuncInit(void)
{

#ifdef RK27_FS
    RKFIO_FOpen = (MY_FILE * (*)(const char *, const char *))FSFileOpen;
    //*
    RKFIO_FRead = RKfread;
    RKFIO_FSeek = (int(*)(MY_FILE *, long int , int))FSFileSeek;
    RKFIO_FLength = RKftell;
    RKFIO_FTell = RKFS_Tell;//ftell;
    RKFIO_FClose = (int (*)(MY_FILE *))FSFileClose;
    RKFIO_FWrite = RKfwrite;
#else
    RKFIO_FOpen = fopen;
    RKFIO_FRead = RKfread;
    RKFIO_FSeek = fseek;
    RKFIO_FLength = RKftell;
    RKFIO_FTell = ftell;
    RKFIO_FClose = fclose;
    RKFIO_FWrite = RKfwrite;
#endif
}

⌨️ 快捷键说明

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