1 /* 2 * Copyright (c) 2006-2023, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2023-03-29 Rbb666 the first version 9 */ 10 11 #ifndef PLAYER_H 12 #define PLAYER_H 13 14 #include <rtthread.h> 15 #include <rthw.h> 16 17 #include "drv_jpeg.h" 18 19 #define PLAYER_SOUND_SIZE_DEFAULT 0 20 #define PLAYER_SONG_NUM_MAX 20 21 #define PLAYER_SONG_NAME_LEN_MAX 32 22 23 enum PLAYER_STATUS 24 { 25 PLAYER_IDLE, 26 PLAYER_READY, 27 PLAYER_RUNNING, 28 PLAYER_STOP, 29 PLAYER_DELETE, 30 PLAYER_LAST, 31 PLAYER_NEXT, 32 }; 33 enum PLAYER_CMD 34 { 35 PLAYER_CMD_INIT, 36 PLAYER_CMD_PLAY, 37 PLAYER_CMD_STOP, 38 PLAYER_CMD_LAST, 39 PLAYER_CMD_NEXT, 40 PLAYER_CMD_SET_VOL, 41 PLAYER_CMD_GET_VOL, 42 PLAYER_CMD_GET_STATUS 43 }; 44 enum AUDIO_OPS_CMD 45 { 46 AUDIO_OPS_CMD_SET_VOL 47 }; 48 enum DECODE_OPS_CMD 49 { 50 DECODE_OPS_CMD_GET_NAME, 51 DECODE_OPS_CMD_GET_LEN 52 }; 53 54 struct audio_ops 55 { 56 int (*init)(void); 57 int (*open)(void); 58 int (*close)(void); 59 int (*control)(int cmd, void *arg); 60 int (*write)(void *buffer, int size); 61 }; 62 63 struct player 64 { 65 enum PLAYER_STATUS status; /*state*/ 66 int16_t volume; /*Sound Size*/ 67 uint8_t song_current; /*Playing video*/ 68 uint8_t video_num; /*Total number of videos*/ 69 uint16_t song_time_pass; /*Played time*/ 70 uint16_t song_time_all; /*Played all time*/ 71 char * video_list[PLAYER_SONG_NUM_MAX]; 72 char video_name[PLAYER_SONG_NAME_LEN_MAX]; 73 74 rt_sem_t sem_play; 75 rt_thread_t play_thread; 76 77 struct audio_ops *audio; 78 decode_drv_t *decode; 79 }; 80 typedef struct player *player_t; 81 82 int player_add_song(player_t player, void *song); 83 int player_start(player_t player); 84 int player_control(player_t player, int cmd, void *arg); 85 int player_show(player_t player); 86 int player_delete(player_t player); 87 88 #endif 89