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

📄 mp3_play.h

📁 dm270 source code
💻 H
字号:
#ifndef __MP3_MAIN_H__
#define __MP3_MAIN_H__

#include <system/armsys270.h>
#include <demo/mem_alloc.h>
#include <util/mem_fs.h>

#include <util/file_name_gen.h>
#include <fileio/fileio.h>

#define MP3_FS_FILE

#define MP3_DECODE		0x0510

#ifdef MP3_FS_FILE
	#include <demo/dm270_demo.h>
	#include <appl/mp3_filelist.h>
#endif

#define MP3_BLK_DECODE_SIZE		(16*KB)

#define MP3_MAX_FILES               256
#define MP3_DEFAULT_DIR_NAME        "MP3"
#define MP3_DEFAULT_DEV_NAME        DRV_A        /*  "A:"  */
#define MP3_EXT                     "MP3"        /*  MP3 file extension  */

typedef struct MP3_CTRL {
	Uint32	BufferAddr;
	Uint32	BufferSize;
	Uint32	CurBuff;

	Uint32	NumBlksDecoded;

	BOOL	Stop;
	BOOL	Pause;
	BOOL	FF;
#ifdef MP3_FS_FILE
	FILE_ID		 *File;
	
    char         Mp3DevName[8];
    char         Mp3DirName[10];

    int          Mp3FileIndex;
    char         Mp3FileList[MP3_MAX_FILES][256];
    int          Mp3MaxFileIndex;

#else
	MEM_FILE	File;
#endif
	Uint32      DecDataSize;
	Uint32		DecTime;
} MP3_CTRL;

extern MP3_CTRL Mp3Ctrl;

typedef enum MP3_ACTION_ID {
	MP3_CMD_NONE,
	MP3_CMD_PLAY,
	MP3_CMD_STOP,
	MP3_CMD_RESUME,
	MP3_CMD_FF,
	MP3_CMD_PAUSE
} MP3_ACTION_ID;


#define MP3_CMD_INT_NONE    0xFFFF  // Update interval - no update
#define MP3_CMD_INT_FRAME   0x00    // Update interval - every frame
#define MP3_CMD_INT_512     0x01    // Update interval - every 512 bytes read
#define MP3_CMD_INT_16K     0x02    // Update interval - every 16K

#define ARM_CMD_MP3				0x0200

#define MP3_STATUS_ERROR		0x8000
#define MP3_STATUS_DEC_DONE		0x0000
#define MP3_STATUS_RUNNING		0x0001


typedef struct MP3_CMD {
	Uint16	ActionId;
	Uint16	reserved;
	Uint16	DataBuffAddrHigh;
	Uint16	DataBuffAddrLow;
	Uint16	DataBuffSizeHigh;
	Uint16	DataBuffSizeLow;
	Uint16  FeedTime;
	Uint16	Volume;
	Uint16	DataSizeHigh;
	Uint16	DataSizeLow;
	Uint16	DataBuffOffsetHigh;
	Uint16	DataBuffOffsetLow;
	Uint16	UpdateInterval;
	Uint16	reserved1;
} MP3_CMD;


typedef struct MP3_STATUS {
	Uint16	Status;
	Uint16	LevelDataLeft;
	Uint16	LevelDataRight;
	Uint16	DecTime;
	Uint16	DecSizeHigh;
	Uint16	DecSizeLow;
} MP3_STATUS;

STATUS MP3_init() ;
STATUS MP3_deviceNameSet(char *dev_name) ;
void   MP3_PLAY_MAIN_MENU_run() ;
STATUS MP3_PLAY_START_run() ;
void   MP3_PLAY_run()  ;
void   MP3_PLAY_IN_PROGRESS_run()  ;
BOOL   MP3_PLAY_isDataBuffEmpty() ;
STATUS MP3_PLAY_STOP_run() ;
void   MP3_togglePause() ;
void   MP3_toggleFF() ;
void   MP3_PLAY_isr() ;
STATUS MP3_readBuff( Uint16 nBuff ) ;
STATUS MP3_initMp3Ctrl() ;
STATUS MP3_sendCmd( MP3_ACTION_ID mp3_action ) ;
void   MP3_AIC23_init();
void   MP3_AIC23_stop();

#endif	/*	__MP3_MAIN_H__	*/

⌨️ 快捷键说明

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