Agora Java API Reference for Android
AgoraMediaPlayerTypes.h
1 //
2 // Agora Engine SDK
3 //
4 // Created by Sting Feng in 2020-05.
5 // Copyright (c) 2017 Agora.io. All rights reserved.
6 
7 #pragma once // NOLINT(build/header_guard)
8 
9 #include <cstring>
10 #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1800)
11 #include <cstdint>
12 #endif
13 
14 #include "AgoraOptional.h"
15 
20 #define KEY_PLAYER_REAL_TIME_STREAM_ANALYZE_DURATION "analyze_duration"
21 
26 #define KEY_PLAYER_ENABLE_AUDIO "enable_audio"
27 
32 #define KEY_PLAYER_ENABLE_VIDEO "enable_video"
33 
38 #define KEY_PLAYER_ENABLE_SEARCH_METADATA "enable_search_metadata"
39 
44 #define KEY_PLAYER_SEI_FILTER_TYPE "set_sei_filter_type"
45 
46 namespace agora {
47 
48 namespace media {
49 
50 namespace base {
51 static const uint8_t kMaxCharBufferLength = 50;
56 enum MEDIA_PLAYER_STATE {
59  PLAYER_STATE_IDLE = 0,
62  PLAYER_STATE_OPENING,
65  PLAYER_STATE_OPEN_COMPLETED,
68  PLAYER_STATE_PLAYING,
71  PLAYER_STATE_PAUSED,
74  PLAYER_STATE_PLAYBACK_COMPLETED,
77  PLAYER_STATE_PLAYBACK_ALL_LOOPS_COMPLETED,
80  PLAYER_STATE_STOPPED,
83  PLAYER_STATE_PAUSING_INTERNAL = 50,
86  PLAYER_STATE_STOPPING_INTERNAL,
89  PLAYER_STATE_SEEKING_INTERNAL,
92  PLAYER_STATE_GETTING_INTERNAL,
95  PLAYER_STATE_NONE_INTERNAL,
98  PLAYER_STATE_DO_NOTHING_INTERNAL,
101  PLAYER_STATE_SET_TRACK_INTERNAL,
104  PLAYER_STATE_FAILED = 100,
105 };
110 enum MEDIA_PLAYER_ERROR {
113  PLAYER_ERROR_NONE = 0,
116  PLAYER_ERROR_INVALID_ARGUMENTS = -1,
119  PLAYER_ERROR_INTERNAL = -2,
122  PLAYER_ERROR_NO_RESOURCE = -3,
125  PLAYER_ERROR_INVALID_MEDIA_SOURCE = -4,
128  PLAYER_ERROR_UNKNOWN_STREAM_TYPE = -5,
131  PLAYER_ERROR_OBJ_NOT_INITIALIZED = -6,
134  PLAYER_ERROR_CODEC_NOT_SUPPORTED = -7,
137  PLAYER_ERROR_VIDEO_RENDER_FAILED = -8,
140  PLAYER_ERROR_INVALID_STATE = -9,
143  PLAYER_ERROR_URL_NOT_FOUND = -10,
146  PLAYER_ERROR_INVALID_CONNECTION_STATE = -11,
149  PLAYER_ERROR_SRC_BUFFER_UNDERFLOW = -12,
152  PLAYER_ERROR_INTERRUPTED = -13,
155  PLAYER_ERROR_NOT_SUPPORTED = -14,
158  PLAYER_ERROR_TOKEN_EXPIRED = -15,
161  PLAYER_ERROR_IP_EXPIRED = -16,
164  PLAYER_ERROR_UNKNOWN = -17,
165 };
166 
171 enum MEDIA_STREAM_TYPE {
174  STREAM_TYPE_UNKNOWN = 0,
177  STREAM_TYPE_VIDEO = 1,
180  STREAM_TYPE_AUDIO = 2,
183  STREAM_TYPE_SUBTITLE = 3,
184 };
185 
190 enum MEDIA_PLAYER_EVENT {
193  PLAYER_EVENT_SEEK_BEGIN = 0,
196  PLAYER_EVENT_SEEK_COMPLETE = 1,
199  PLAYER_EVENT_SEEK_ERROR = 2,
202  PLAYER_EVENT_AUDIO_TRACK_CHANGED = 5,
205  PLAYER_EVENT_BUFFER_LOW = 6,
208  PLAYER_EVENT_BUFFER_RECOVER = 7,
211  PLAYER_EVENT_FREEZE_START = 8,
214  PLAYER_EVENT_FREEZE_STOP = 9,
217  PLAYER_EVENT_SWITCH_BEGIN = 10,
220  PLAYER_EVENT_SWITCH_COMPLETE = 11,
223  PLAYER_EVENT_SWITCH_ERROR = 12,
226  PLAYER_EVENT_FIRST_DISPLAYED = 13,
229  PLAYER_EVENT_REACH_CACHE_FILE_MAX_COUNT = 14,
232  PLAYER_EVENT_REACH_CACHE_FILE_MAX_SIZE = 15,
235  PLAYER_EVENT_TRY_OPEN_START = 16,
238  PLAYER_EVENT_TRY_OPEN_SUCCEED = 17,
241  PLAYER_EVENT_TRY_OPEN_FAILED = 18,
242 };
243 
248 enum PLAYER_PRELOAD_EVENT {
251  PLAYER_PRELOAD_EVENT_BEGIN = 0,
254  PLAYER_PRELOAD_EVENT_COMPLETE = 1,
257  PLAYER_PRELOAD_EVENT_ERROR = 2,
258 };
259 
267 
269  MEDIA_STREAM_TYPE streamType;
270 
272  char codecName[kMaxCharBufferLength];
273 
275  char language[kMaxCharBufferLength];
276 
279 
282 
285 
288 
291 
294 
297 
300 
302  int64_t duration;
303 
305  streamType(STREAM_TYPE_UNKNOWN),
306  videoFrameRate(0),
307  videoBitRate(0),
308  videoWidth(0),
309  videoHeight(0),
310  videoRotation(0),
311  audioSampleRate(0),
312  audioChannels(0),
314  duration(0) {
315  memset(codecName, 0, sizeof(codecName));
316  memset(language, 0, sizeof(language));
317  }
318 };
319 
324 struct SrcInfo {
329 
333  const char* name;
334 
335 };
336 
341 enum MEDIA_PLAYER_METADATA_TYPE {
344  PLAYER_METADATA_TYPE_UNKNOWN = 0,
347  PLAYER_METADATA_TYPE_SEI = 1,
348 };
349 
353  int64_t fileSize;
356  int64_t cacheSize;
359  int64_t downloadSize;
360 };
361 
366 
370 
374 };
375 
380 public:
381 
388  virtual int onReadData(unsigned char *buffer, int bufferSize) = 0;
389 
402  virtual int64_t onSeek(int64_t offset, int whence) = 0;
403 
404  virtual ~IMediaPlayerCustomDataProvider() {}
405 };
406 
407 struct MediaSource {
411  const char* url;
418  const char* uri;
422  int64_t startPos;
427  bool autoPlay;
446 
447  MediaSource() : url(NULL), uri(NULL), startPos(0), autoPlay(true), enableCache(false),
448  provider(NULL){
449  }
450 };
451 
452 } // namespace base
453 } // namespace media
454 } // namespace agora
agora::media::base::PlayerUpdatedInfo::playerId
Optional< const char * > playerId
Definition: AgoraMediaPlayerTypes.h:365
agora::media::base::PlayerStreamInfo::videoFrameRate
int videoFrameRate
Definition: AgoraMediaPlayerTypes.h:278
agora::media::base::MediaSource::enableCache
bool enableCache
Definition: AgoraMediaPlayerTypes.h:431
agora::media::base::PlayerStreamInfo::streamType
MEDIA_STREAM_TYPE streamType
Definition: AgoraMediaPlayerTypes.h:269
agora::media::base::IMediaPlayerCustomDataProvider::onReadData
virtual int onReadData(unsigned char *buffer, int bufferSize)=0
The player requests to read the data callback, you need to fill the specified length of data into the...
agora::media::base::PlayerStreamInfo::videoRotation
int videoRotation
Definition: AgoraMediaPlayerTypes.h:290
agora::media::base::CacheStatistics
Definition: AgoraMediaPlayerTypes.h:350
agora::media::base::PlayerStreamInfo::videoWidth
int videoWidth
Definition: AgoraMediaPlayerTypes.h:284
agora::media::base::MediaSource::url
const char * url
Definition: AgoraMediaPlayerTypes.h:411
agora::media::base::PlayerUpdatedInfo
Definition: AgoraMediaPlayerTypes.h:362
agora::media::base::PlayerUpdatedInfo::cacheStatistics
Optional< CacheStatistics > cacheStatistics
Definition: AgoraMediaPlayerTypes.h:373
agora::media::base::PlayerStreamInfo::audioChannels
int audioChannels
Definition: AgoraMediaPlayerTypes.h:296
agora::media::base::PlayerUpdatedInfo::deviceId
Optional< const char * > deviceId
Definition: AgoraMediaPlayerTypes.h:369
agora::media::base::MediaSource::autoPlay
bool autoPlay
Definition: AgoraMediaPlayerTypes.h:427
agora::media::base::MediaSource::provider
IMediaPlayerCustomDataProvider * provider
Definition: AgoraMediaPlayerTypes.h:445
agora::media::base::MediaSource::isAgoraSource
Optional< bool > isAgoraSource
Definition: AgoraMediaPlayerTypes.h:436
agora::media::base::IMediaPlayerCustomDataProvider
Definition: AgoraMediaPlayerTypes.h:379
agora::media::base::PlayerStreamInfo::audioBitsPerSample
int audioBitsPerSample
Definition: AgoraMediaPlayerTypes.h:299
agora::media::base::PlayerStreamInfo::streamIndex
int streamIndex
Definition: AgoraMediaPlayerTypes.h:266
agora::media::base::MediaSource::startPos
int64_t startPos
Definition: AgoraMediaPlayerTypes.h:422
agora::media::base::MediaSource::isLiveSource
Optional< bool > isLiveSource
Definition: AgoraMediaPlayerTypes.h:441
agora::media::base::PlayerStreamInfo::videoBitRate
int videoBitRate
Definition: AgoraMediaPlayerTypes.h:281
agora::media::base::PlayerStreamInfo
The information of the media stream object.
Definition: AgoraMediaPlayerTypes.h:264
agora::media::base::CacheStatistics::downloadSize
int64_t downloadSize
Definition: AgoraMediaPlayerTypes.h:359
agora::media::base::IMediaPlayerCustomDataProvider::onSeek
virtual int64_t onSeek(int64_t offset, int whence)=0
The Player seek event callback, you need to operate the corresponding stream seek operation,...
agora::media::base::SrcInfo::name
const char * name
Definition: AgoraMediaPlayerTypes.h:333
agora::media::base::SrcInfo::bitrateInKbps
int bitrateInKbps
Definition: AgoraMediaPlayerTypes.h:328
agora::media::base::MediaSource
Definition: AgoraMediaPlayerTypes.h:407
agora::media::base::PlayerStreamInfo::duration
int64_t duration
Definition: AgoraMediaPlayerTypes.h:302
agora::media::base::MediaSource::uri
const char * uri
Definition: AgoraMediaPlayerTypes.h:418
agora::media::base::PlayerStreamInfo::audioSampleRate
int audioSampleRate
Definition: AgoraMediaPlayerTypes.h:293
agora::media::base::PlayerStreamInfo::language
char language[kMaxCharBufferLength]
Definition: AgoraMediaPlayerTypes.h:275
agora::media::base::SrcInfo
The information of the media stream object.
Definition: AgoraMediaPlayerTypes.h:324
agora::media::base::CacheStatistics::cacheSize
int64_t cacheSize
Definition: AgoraMediaPlayerTypes.h:356
agora::media::base::CacheStatistics::fileSize
int64_t fileSize
Definition: AgoraMediaPlayerTypes.h:353
agora::media::base::PlayerStreamInfo::codecName
char codecName[kMaxCharBufferLength]
Definition: AgoraMediaPlayerTypes.h:272
agora::media::base::PlayerStreamInfo::videoHeight
int videoHeight
Definition: AgoraMediaPlayerTypes.h:287
agora::Optional< const char * >