/*****************************************************************************
 * Module    : Music
 * File      : music.h
 * Author    : Hanny
 * Email     : coldney@yahoo.com.cn
 * Function  : 音乐播放及解码控制流程的函数定义
 *****************************************************************************/
#ifndef MUSIC_ID3_H
#define MUSIC_ID3_H

typedef struct {
    u8  major_ver;        //版本号
    //u8  revision;         //副版本号
    //u8  flag;             //存放标志
    u32 total_size;       //标签总大小
    u8  frame_id[4];      //帧头标识
    //u32 frame_size;       //帧内容大小，不包括帧头
    //u16 frame_flag;       //帧存放标志
} type_msc_ID3;

typedef u8 GUID[16];

#define ID3_DATA_LEN  200
/*#define ID3_TITLE_SIZE 100
#define ID3_YEAR_SIZE  5
#define ID3_ALBUM_SIZE 31
#define ID3_ARTIST_SIZE 31

typedef struct {
    u8 title[ID3_DATA_LEN];
    u8 year[ID3_YEAR_SIZE];
    u8 genre;//类型
    u8 album[ID3_ALBUM_SIZE];//
    u8 artist[ID3_ARTIST_SIZE];
}type_info_id3;*/


enum {
    NOTUNICODE,        //ISO-8859-1编码，不是UNICODE编码
    UTF_8,             //UTF-8编码
    UTF_16LE,          //UTF-16小端
    UTF_16BE           //UTF-16大端
};

enum {
    ID3_ERR,
    ID3_OK,
};

extern IAR_XDATA_A u8 id3_title[];
extern IAR_XDATA_A u8 id3_artist[];
extern IAR_XDATA_A u8 id3_album[];

__near_func u8 m_player_getbyte(void);
__near_func u16 m_player_getle16(void);
__near_func void m_player_skipbytes(u32 offset);
bool mp3_id3_sel(void);
bool wav_id3_sel(void);
void music_clear_ID3(void);
bool music_decode_ID3(void);                             //获取歌曲的ID3信息

#define GUID_CMP(g1, g2) str_memcmp((void *)(g1), (void __code *)(g2), sizeof(GUID))

#endif
