airplay.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #ifndef _AIRPLAY_H_
  2. #define _AIRPLAY_H_
  3. #include <stdbool.h>
  4. #include <stdint.h>
  5. #define METADATA_STRING_LEN 100
  6. typedef enum
  7. {
  8. AIRPLAY_SUCCESS = 0,
  9. AIRPLAY_ERR_BAD_PARAM,
  10. AIRPLAY_ERR_BAD_STATE,
  11. AIRPLAY_ERR_NO_RESOURCE,
  12. AIRPLAY_ERR_OOM,
  13. AIRPLAY_ERR_NOT_SUPPORTED,
  14. AIRPLAY_ERR_OTHER,
  15. } Airplay_Status_e;
  16. typedef enum
  17. {
  18. AIRPLAY_SUPPORT_MIRROR = 0x01,
  19. AIRPLAY_SUPPORT_VIDEO_CAST = 0x02,
  20. AIRPLAY_DISPLAY_COVERART = 0x04,
  21. AIRPLAY_SUPPORT_ALL = 0xff,
  22. } Airplay_Capability_e;
  23. typedef struct
  24. {
  25. char data[METADATA_STRING_LEN];
  26. uint8_t size;
  27. } MetaData_String_t;
  28. typedef struct
  29. {
  30. MetaData_String_t songAlbumArtist;
  31. MetaData_String_t songArtist;
  32. MetaData_String_t songAlbum;
  33. MetaData_String_t songComposer;
  34. MetaData_String_t songGenre;
  35. MetaData_String_t songName;
  36. uint16_t songYear;
  37. uint16_t songTrackCount;
  38. uint16_t songTrackNumber;
  39. uint32_t totalTime; // in milliseconds
  40. uint32_t startTime; // in milliseconds
  41. } Airplay_Audio_MetaData_t;
  42. typedef struct
  43. {
  44. int size;
  45. char *data;
  46. } Airplay_Audio_CoverArt_t;
  47. typedef enum
  48. {
  49. AIRPLAY_AV_EVENT_DECODE_START = 0X0001000F, /*!< Audio/Video Decode Start evnet*/
  50. AIRPLAY_AV_EVENT_INITOK,
  51. AIRPLAY_AV_EVENT_PLAY_DONE,
  52. AIRPLAY_AV_EVENT_SET_VOLUME,
  53. AIRPLAY_AV_EVENT_SET_METADATA,
  54. AIRPLAY_AV_EVENT_SET_COVERART,
  55. AIRPLAY_AV_EVENT_NOT_HTTP,
  56. AIRPLAY_AV_EVENT_SCREEN_ON,
  57. AIRPLAY_AV_EVENT_SCREEN_OFF,
  58. AIRPLAY_AV_EVENT_UNKNOWN_FORMAT,
  59. AIRPLAY_AV_EVENT_LOADING,
  60. AIRPLAY_AV_EVENT_PAUSED,
  61. AIRPLAY_EVENT_END = 0X000FFFFF,
  62. } Airplay_Event_t;
  63. typedef enum {
  64. AIRP_PLAYER_STOPPED,
  65. AIRP_PLAYER_INITIALIZING,
  66. AIRP_PLAYER_READY,
  67. AIRP_PLAYER_PLAYING,
  68. AIRP_PLAYER_PAUSED,
  69. AIRP_PLAYER_STOPPING,
  70. } Airp_Player_State_t;
  71. typedef bool (*AirplayCbkFunc_t)(Airplay_Event_t, int param);
  72. Airplay_Status_e Airplay_Start(uint32_t capability);
  73. Airplay_Status_e Airplay_Stop(void);
  74. Airplay_Status_e Airplay_GetAudioMetadata(Airplay_Audio_MetaData_t *);
  75. Airplay_Status_e Airplay_GetAudioCoverArt(Airplay_Audio_CoverArt_t *);
  76. Airplay_Status_e Airplay_FreeAudioCoverArt(Airplay_Audio_CoverArt_t *);
  77. void Airplay_RegisterCBKFunc(AirplayCbkFunc_t);
  78. AirplayCbkFunc_t Airplay_GetRegisteredCBKFunc(void);
  79. Airplay_Status_e Airplay_Ctrl_PausePlay(void);
  80. bool Airplay_Is_AudioOnly(void);
  81. Airp_Player_State_t Airplay_Get_PlayerState(void);
  82. #endif