【瑞昱RTL8763E】音频

打印 上一主题 下一主题

主题 857|帖子 857|积分 2571

1 音乐播放控制
1.1 播放列表更新
文件系统在sd卡中保存header.bin及name.bin两份文件用于歌曲名称的存储。为方便应用层举行歌曲显示及列表管理,可将这两个bin文件信息读取并保存到nor flash中。需要播放指定名称的歌曲时,将对于歌曲名称传递给文件系统接口,可直接完成歌曲的播放。
   
uint32_t audio_fs_get_header_list_size(void);

  
uint32_t audio_fs_get_name_list_size(void);

  
uint16_t audio_fs_read_header_list(uint32_t offset, uint8_t *readBuf, uint32_t readLen, uint32_t *len);

  
uint16_t audio_fs_read_name_list(uint32_t offset, uint8_t *readBuf, uint32_t readLen, uint32_t *len);

  

  • offset,文件偏移地点
  • readBuf,读取数据buffer
  • readLen,盼望读取长度
  • len,实际读取长度
header.bin描述歌曲总数及各个歌曲名称在name.bin中的偏移及长度信息。header.bin格式如下。
Count
Reserved
Song info1
Song info2
……
2bytes
4bytes
Sizeof(T_SONG_NAME_INFO)
Sizeof(T_SONG_NAME_INFO)

   
typedef struct

  
{

  
    uint32_t    offset;    //Start offset of the song name

  
    uint16_t    length;       //Length of the song name

  
    uint16_t    plIndex;    /*Play List Index, indicate which playlist the song belongs to.

  
    uint8_t     isDeleted : 1;  /* flag of if song is deleted.1: deleted,0: not deleted */

  
    uint8_t     needToUnlink : 1;  /* flag of if song need to unlink. */

  
    uint8_t     extension : 6;

  
    uint16_t     rsv;            /* Reserve for future usage, should set to "0" */

  
} __attribute__((packed)) T_SONG_NAME_INFO;

   name.bin保存各个歌曲的名称信息,结合song info中提供的offset和length部门,可以提取到各个歌曲的名称。
Song name 1
Song name 2
……
Name data(Unicode)
Name data(Unicode)

1.2音乐播放控制
   
T_APP_AUDIO_FS_ERROR app_audio_fs_interface_play_by_name(uint8_t *file_name, uint16_t length)

  
void app_mmi_handle_action(uint8_t action)

  

  
    case IO_MSG_MMI:

  
        {

  
            uint8_t action = p_watch_msg->u.param;

  
            app_mmi_handle_action(action);

  
        }

  
        break;

  
    case IO_MSG_PLAY_BY_NAME:

  
        {

  
            if (app_db.usb_status == USB_PLUG_OUT)

  
            {

  
                T_SONG_NAME_INFO *play_name = (T_SONG_NAME_INFO *)p_watch_msg->u.param;

  
                app_audio_fs_interface_play_by_name((uint8_t *)(MUSIC_NAME_BIN_ADDR + play_name->offset), play_name->length);

  
            }

  
            else

  
            {

  
                APP_PRINT_INFO0("ERROR: USB plug in, disallow play media now!");

  
            }

  
        }

  
        break;

   音频控制,包罗播放、暂停、音量调节等,可通过MMI(Man Machine Interface)和app_audio_fs_interface_play_by_name完成。播放列表的维护由上层举行,切换歌曲时,上层只需要控制传入歌曲的名称信息即可。MMI命令所定义的action可参考T_MMI_ACTION,已实现的功能参考void app_mmi_handle_action(uint8_t action)。
本地播放模式与耳机播放模式下,上层共用MMI命令,底下会做区分。不同模式之间的切换也可通过MMI命令完成。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

冬雨财经

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表