7 #pragma once // NOLINT(build/header_guard)
12 #include "AgoraOptional.h"
18 #define KEY_PLAYER_REAL_TIME_STREAM_ANALYZE_DURATION "analyze_duration"
24 #define KEY_PLAYER_ENABLE_AUDIO "enable_audio"
30 #define KEY_PLAYER_ENABLE_VIDEO "enable_video"
36 #define KEY_PLAYER_ENABLE_SEARCH_METADATA "enable_search_metadata"
42 #define KEY_PLAYER_SEI_FILTER_TYPE "set_sei_filter_type"
49 static const uint8_t kMaxCharBufferLength = 50;
53 enum MEDIA_PLAYER_STATE {
58 PLAYER_STATE_IDLE = 0,
66 PLAYER_STATE_OPEN_COMPLETED,
78 PLAYER_STATE_PLAYBACK_COMPLETED,
82 PLAYER_STATE_PLAYBACK_ALL_LOOPS_COMPLETED,
89 PLAYER_STATE_PAUSING_INTERNAL = 50,
92 PLAYER_STATE_STOPPING_INTERNAL,
95 PLAYER_STATE_SEEKING_INTERNAL,
98 PLAYER_STATE_GETTING_INTERNAL,
101 PLAYER_STATE_NONE_INTERNAL,
104 PLAYER_STATE_DO_NOTHING_INTERNAL,
107 PLAYER_STATE_SET_TRACK_INTERNAL,
111 PLAYER_STATE_FAILED = 100,
116 enum MEDIA_PLAYER_REASON {
120 PLAYER_REASON_NONE = 0,
124 PLAYER_REASON_INVALID_ARGUMENTS = -1,
128 PLAYER_REASON_INTERNAL = -2,
132 PLAYER_REASON_NO_RESOURCE = -3,
136 PLAYER_REASON_INVALID_MEDIA_SOURCE = -4,
140 PLAYER_REASON_UNKNOWN_STREAM_TYPE = -5,
144 PLAYER_REASON_OBJ_NOT_INITIALIZED = -6,
148 PLAYER_REASON_CODEC_NOT_SUPPORTED = -7,
152 PLAYER_REASON_VIDEO_RENDER_FAILED = -8,
156 PLAYER_REASON_INVALID_STATE = -9,
160 PLAYER_REASON_URL_NOT_FOUND = -10,
164 PLAYER_REASON_INVALID_CONNECTION_STATE = -11,
168 PLAYER_REASON_SRC_BUFFER_UNDERFLOW = -12,
172 PLAYER_REASON_INTERRUPTED = -13,
176 PLAYER_REASON_NOT_SUPPORTED = -14,
179 PLAYER_REASON_TOKEN_EXPIRED = -15,
182 PLAYER_REASON_IP_EXPIRED = -16,
186 PLAYER_REASON_UNKNOWN = -17,
192 enum MEDIA_STREAM_TYPE {
196 STREAM_TYPE_UNKNOWN = 0,
200 STREAM_TYPE_VIDEO = 1,
204 STREAM_TYPE_AUDIO = 2,
208 STREAM_TYPE_SUBTITLE = 3,
214 enum MEDIA_PLAYER_EVENT {
218 PLAYER_EVENT_SEEK_BEGIN = 0,
222 PLAYER_EVENT_SEEK_COMPLETE = 1,
226 PLAYER_EVENT_SEEK_ERROR = 2,
230 PLAYER_EVENT_AUDIO_TRACK_CHANGED = 5,
234 PLAYER_EVENT_BUFFER_LOW = 6,
238 PLAYER_EVENT_BUFFER_RECOVER = 7,
242 PLAYER_EVENT_FREEZE_START = 8,
246 PLAYER_EVENT_FREEZE_STOP = 9,
250 PLAYER_EVENT_SWITCH_BEGIN = 10,
254 PLAYER_EVENT_SWITCH_COMPLETE = 11,
258 PLAYER_EVENT_SWITCH_ERROR = 12,
262 PLAYER_EVENT_FIRST_DISPLAYED = 13,
266 PLAYER_EVENT_REACH_CACHE_FILE_MAX_COUNT = 14,
270 PLAYER_EVENT_REACH_CACHE_FILE_MAX_SIZE = 15,
273 PLAYER_EVENT_TRY_OPEN_START = 16,
276 PLAYER_EVENT_TRY_OPEN_SUCCEED = 17,
279 PLAYER_EVENT_TRY_OPEN_FAILED = 18,
283 PLAYER_EVENT_HTTP_REDIRECT = 19,
289 enum PLAYER_PRELOAD_EVENT {
293 PLAYER_PRELOAD_EVENT_BEGIN = 0,
297 PLAYER_PRELOAD_EVENT_COMPLETE = 1,
301 PLAYER_PRELOAD_EVENT_ERROR = 2,
409 enum MEDIA_PLAYER_METADATA_TYPE {
413 PLAYER_METADATA_TYPE_UNKNOWN = 0,
417 PLAYER_METADATA_TYPE_SEI = 1,
524 virtual int onReadData(
unsigned char *buffer,
int bufferSize) = 0;
551 virtual int64_t
onSeek(int64_t offset,
int whence) = 0;