Agora Java API Reference for Android
IAgoraStreamingKit.h
1 //
2 // Agora Streaming Kit
3 //
4 // Copyright (c) 2020 Agora.io. All rights reserved.
5 //
6 
7 #ifndef AGORA_STREAMING_KIT_H_
8 #define AGORA_STREAMING_KIT_H_
9 
10 #include "AgoraBase.h"
11 #include "IAgoraLog.h"
12 #include "AgoraMediaBase.h"
13 #include "AgoraStreamingBase.h"
14 
15 namespace agora {
16 namespace streaming {
17 
18 class IAudioDeviceManager;
19 class IVideoDeviceManager;
20 class IVideoPreviewRenderer;
21 class ISnapshotCallback;
22 
23 // The maximum device ID length.
24 // GENERATED_JAVA_ENUM_PACKAGE: io.agora.streaming
25 enum MAX_DEVICE_ID_LENGTH_TYPE {
26  // The maximum device ID length is 512.
27  MAX_DEVICE_ID_LENGTH = 512
28 };
29 
30 // The error codes for initializing streaming kit.
31 // GENERATED_JAVA_ENUM_PACKAGE: io.agora.streaming
32 enum INITIALIZE_ERROR {
33  // No error occurs.
34  INITIALIZE_KIT_ERR_OK = 0,
35  // A general error occurs (no specified reason).
36  INITIALIZE_KIT_ERR_FAILED = 1,
37  // Invalid argument used.
38  INITIALIZE_KIT_ERR_INVALID_ARGUMENT = 2,
39  // Streaming kit is already initialized.
40  INITIALIZE_KIT_ERR_ALREADY_INITIALIZED = 3,
41  // Error occurs while configuring audio
42  INITIALIZE_KIT_ERR_AUDIO_CONFIG = 4,
43  // Error occurs while configuring video
44  INITIALIZE_KIT_ERR_VIDEO_CONFIG = 5,
45 };
46 
47 // The error codes for starting media streaming.
48 // GENERATED_JAVA_ENUM_PACKAGE: io.agora.streaming
49 enum START_STREAMING_ERROR {
50  // No error occurs.
51  START_STREAMING_ERR_OK = 0,
52  // A general error occurs (no specified reason).
53  START_STREAMING_ERR_FAILED = 1,
54  // Streaming kit is not initialized.
55  START_STREAMING_ERR_NOT_INITIALIZED = 2,
56  // Streaming kit is already started.
57  START_STREAMING_ERR_ALREADY_STARTED = 3,
58  // Failed to open audio device.
59  START_STREAMING_ERR_OPEN_AUDIO_DEVICE = 4,
60  // Failed to open video device.
61  START_STREAMING_ERR_OPEN_VIDEO_DEVICE = 5,
62  // Failed to connect RTMP.
63  START_STREAMING_ERR_CONNECT_RTMP = 6,
64  // Invalid argument used.
65  START_STREAMING_ERR_INVALID_ARGUMENT = 7,
66 };
67 
68 // The error codes for media streaming
69 // GENERATED_JAVA_ENUM_PACKAGE: io.agora.streaming
70 enum MEDIA_STREAMING_ERROR {
71  // No error occurs.
72  MEDIA_STREAMING_ERR_OK = 0,
73  // A general error occurs (no specified reason).
74  MEDIA_STREAMING_ERR_FAILED = 1,
75  // Audio publication error.
76  MEDIA_STREAMING_ERR_AUDIO_PUBLICATION = 2,
77  // Video publication error.
78  MEDIA_STREAMING_ERR_VIDEO_PUBLICATION = 3,
79 };
80 
81 // The connection state of media streaming
82 // GENERATED_JAVA_ENUM_PACKAGE: io.agora.streaming
83 enum STREAMING_CONNECTION_STATE {
84  // The SDK is disconnected from streaming server.
85  STREAMING_CONNECTION_STATE_DISCONNECTED = 0,
86  // The SDK is connected to streaming server.
87  STREAMING_CONNECTION_STATE_CONNECTED = 1,
88  // The SDK is trying to reconnect to streaming server.
89  STREAMING_CONNECTION_STATE_RECONNECTING = 2,
90  // The SDK fails to connect to streaming server.
91  STREAMING_CONNECTION_STATE_FAILED = 3,
92 };
93 
94 // The video display mode.
95 // GENERATED_JAVA_ENUM_PACKAGE: io.agora.streaming
96 enum RENDER_MODE_TYPE {
97  // Uniformly scale the video until it fills the visible boundaries
98  // (cropped). One dimension of the video may have clipped contents.
99  RENDER_MODE_HIDDEN = 1,
100  // Uniformly scale the video until one of its dimension fits the boundary
101  // (zoomed to fit). Areas that are not filled due to the disparity in the
102  // aspect ratio will be filled with black.
103  RENDER_MODE_FIT = 2,
104 };
105 
106 // GENERATED_JAVA_ENUM_PACKAGE: io.agora.streaming
107 enum LOG_FILTER_TYPE {
108  LOG_FILTER_OFF = 0,
109  LOG_FILTER_DEBUG = 0x080f,
110  LOG_FILTER_INFO = 0x000f,
111  LOG_FILTER_WARN = 0x000e,
112  LOG_FILTER_ERROR = 0x000c,
113  LOG_FILTER_CRITICAL = 0x0008,
114 };
115 
127  public:
128  virtual ~IStreamingEventHandler() {}
129 
130  virtual void onStartStreamingSuccess() {}
131 
132  virtual void onStartStreamingFailure(START_STREAMING_ERROR err, const char* msg) {
133  (void)err;
134  (void)msg;
135  }
136 
137  virtual void onMediaStreamingError(MEDIA_STREAMING_ERROR err, const char* msg) {
138  (void)err;
139  (void)msg;
140  };
141 
142  virtual void onStreamingConnectionStateChanged(STREAMING_CONNECTION_STATE state) {
143  (void)state;
144  };
145 };
146 
154 
159  const char* appId;
160 
164  void *context;
165 
181 
197 
202 
207 
209  : eventHandler(NULL), appId(NULL), context(NULL), enableAudioStreaming(true),
210  enableVideoStreaming(true) {}
211 };
212 
222  public:
236  virtual int initialize(const StreamingContext& context) = 0;
237 
252  virtual void release(bool sync = false) = 0;
253 
264  virtual int startStreaming(const char* publishUrl) = 0;
265 
273  virtual int stopStreaming() = 0;
274 
286  virtual int enableAudioRecording(bool enabled) = 0;
287 
299  virtual int enableVideoCapturing(bool enabled) = 0;
300 
312  virtual int muteAudioStream(bool muted) = 0;
313 
325  virtual int muteVideoStream(bool muted) = 0;
326 
339 
352 
365  virtual int switchResolution(int width, int height) = 0;
366 
375  virtual int snapshot(agora::streaming::ISnapshotCallback* callback) = 0;
376 
389  virtual int adjustRecordingSignalVolume(int volume) = 0;
390 
399  virtual int setExternalAudioSource(bool enable) = 0;
400 
409  virtual int setExternalVideoSource(bool enable) = 0;
410 
419  virtual int pushExternalVideoFrame(const media::IVideoFrameObserver::VideoFrame& Frame) = 0;
420 
429  virtual int pushExternalAudioFrame(const media::IAudioFrameObserver::AudioFrame& frame) = 0;
430 
440 
450 
460 
470  virtual int registerAudioFrameObserver(media::base::IAudioFrameObserver* observer) = 0;
471 
477  virtual void unregisterAudioFrameObserver(media::base::IAudioFrameObserver* observer) = 0;
478 
488  virtual int registerVideoFrameObserver(media::base::IVideoFrameObserver* observer) = 0;
489 
495  virtual void unregisterVideoFrameObserver(media::base::IVideoFrameObserver* observer) = 0;
496 
513  virtual int setLogFile(const char* filePath) = 0;
514 
537  virtual int setLogFilter(unsigned int filter) = 0;
538 
551  virtual int setLogFileSize(unsigned int fileSizeInKBytes) = 0;
552 
553 #if defined(__ANDROID__)
554 
563  virtual int startScreenCapture(void *mediaProjectionPermissionResultData, int width, int height) = 0;
564 
570  virtual void stopScreenCapture() = 0;
571 #endif
572 
573  protected:
574  virtual ~IStreamingKit() {}
575 };
576 
581  public:
590  virtual int getNumberOfRecordingDevices() = 0;
591 
602  virtual int getRecordingDeviceInfo(int index, char deviceName[MAX_DEVICE_ID_LENGTH],
603  char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
604 
608  virtual void release() = 0;
609 
610  protected:
611  virtual ~IAudioDeviceCollection() {};
612 };
613 
618  public:
634 
646  virtual int setRecordingDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
647 
657  virtual int getRecordingDeviceInUse(char deviceId[MAX_DEVICE_ID_LENGTH],
658  char deviceName[MAX_DEVICE_ID_LENGTH]) = 0;
659 
668  virtual int setRecordingDeviceVolume(unsigned int volume) = 0;
669 
678  virtual int getRecordingDeviceVolume(unsigned int* volume) = 0;
679 
683  virtual void release() = 0;
684 
685  protected:
686  virtual ~IAudioDeviceManager() {}
687 };
688 
693  public:
694 
700  virtual int getCount() = 0;
701 
713  virtual int getDeviceInfo(int index, char deviceName[MAX_DEVICE_ID_LENGTH],
714  char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
715 
719  virtual void release() = 0;
720 
721  protected:
722  virtual ~IVideoDeviceCollection() {};
723 };
724 
729  public:
745 
757  virtual int setDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
758 
769  virtual int getDeviceInUse(char deviceId[MAX_DEVICE_ID_LENGTH],
770  char deviceName[MAX_DEVICE_ID_LENGTH]) = 0;
771 
774  virtual void release() = 0;
775 
776 protected:
777  virtual ~IVideoDeviceManager() {}
778 };
779 
784  public:
796  virtual int setView(view_t view) = 0;
797 
811  virtual int setRenderMode(RENDER_MODE_TYPE renderMode) = 0;
812 
827  virtual int setMirrorMode(VIDEO_MIRROR_MODE_TYPE mirrorMode) = 0;
828 
832  virtual void release() = 0;
833 
834  protected:
835  virtual ~IVideoPreviewRenderer() {};
836 };
837 
839  public:
840  virtual void onSnapshot(const uint8_t* imageBuffer, int bufferLength, int imageWidth, int imageHeight) = 0;
841  virtual ~ISnapshotCallback() {}
842 };
843 
844 } // namespace streaming
845 } // namespace agora
846 
853 AGORA_API agora::streaming::IStreamingKit* AGORA_CALL createAgoraStreamingKit();
854 
860 AGORA_API const char* AGORA_CALL getAgoraSdkVersion(int* build);
861 
862 #endif // AGORA_STREAMING_KIT_H_
agora::streaming::IVideoPreviewRenderer::release
virtual void release()=0
agora::streaming::IStreamingKit::getAudioDeviceManager
virtual IAudioDeviceManager * getAudioDeviceManager()=0
agora::streaming::IStreamingKit::setLogFileSize
virtual int setLogFileSize(unsigned int fileSizeInKBytes)=0
agora::streaming::IVideoDeviceManager::enumerateVideoDevices
virtual IVideoDeviceCollection * enumerateVideoDevices()=0
agora::streaming::IVideoDeviceCollection
Definition: IAgoraStreamingKit.h:692
agora::streaming::IVideoPreviewRenderer::setMirrorMode
virtual int setMirrorMode(VIDEO_MIRROR_MODE_TYPE mirrorMode)=0
agora::streaming::IVideoDeviceManager::getDeviceInUse
virtual int getDeviceInUse(char deviceId[MAX_DEVICE_ID_LENGTH], char deviceName[MAX_DEVICE_ID_LENGTH])=0
agora::streaming::IVideoDeviceCollection::getCount
virtual int getCount()=0
agora::streaming::IStreamingKit::muteVideoStream
virtual int muteVideoStream(bool muted)=0
agora::streaming::IStreamingKit::switchResolution
virtual int switchResolution(int width, int height)=0
agora::streaming::IAudioDeviceManager
Definition: IAgoraStreamingKit.h:617
agora::streaming::IStreamingKit::registerAudioFrameObserver
virtual int registerAudioFrameObserver(media::base::IAudioFrameObserver *observer)=0
agora::streaming::IStreamingKit::adjustRecordingSignalVolume
virtual int adjustRecordingSignalVolume(int volume)=0
agora::streaming::IStreamingKit::setExternalVideoSource
virtual int setExternalVideoSource(bool enable)=0
agora::streaming::IStreamingKit::muteAudioStream
virtual int muteAudioStream(bool muted)=0
agora::streaming::IAudioDeviceCollection::getRecordingDeviceInfo
virtual int getRecordingDeviceInfo(int index, char deviceName[MAX_DEVICE_ID_LENGTH], char deviceId[MAX_DEVICE_ID_LENGTH])=0
agora::streaming::IStreamingKit::getVideoDeviceManager
virtual IVideoDeviceManager * getVideoDeviceManager()=0
agora::streaming::IStreamingKit::release
virtual void release(bool sync=false)=0
agora::streaming::VideoStreamConfiguration
Definition: AgoraStreamingBase.h:85
agora::streaming::IStreamingKit::enableAudioRecording
virtual int enableAudioRecording(bool enabled)=0
agora::streaming::StreamingContext::videoStreamConfiguration
VideoStreamConfiguration videoStreamConfiguration
Definition: IAgoraStreamingKit.h:206
agora::streaming::AudioStreamConfiguration
Definition: AgoraStreamingBase.h:56
agora::streaming::IAudioDeviceManager::setRecordingDeviceVolume
virtual int setRecordingDeviceVolume(unsigned int volume)=0
agora::streaming::IStreamingKit::getVideoPreviewRenderer
virtual IVideoPreviewRenderer * getVideoPreviewRenderer()=0
agora::streaming::IAudioDeviceCollection::getNumberOfRecordingDevices
virtual int getNumberOfRecordingDevices()=0
agora::streaming::StreamingContext::audioStreamConfiguration
AudioStreamConfiguration audioStreamConfiguration
Definition: IAgoraStreamingKit.h:201
agora::streaming::IStreamingKit::initialize
virtual int initialize(const StreamingContext &context)=0
agora::streaming::IStreamingKit::setLogFilter
virtual int setLogFilter(unsigned int filter)=0
agora::streaming::IStreamingKit::enableVideoCapturing
virtual int enableVideoCapturing(bool enabled)=0
agora::streaming::IAudioDeviceManager::release
virtual void release()=0
agora::streaming::IStreamingKit::setAudioStreamConfiguration
virtual int setAudioStreamConfiguration(const AudioStreamConfiguration &config)=0
agora::streaming::IAudioDeviceCollection::release
virtual void release()=0
agora::streaming::StreamingContext::context
void * context
Definition: IAgoraStreamingKit.h:164
agora::streaming::IVideoDeviceCollection::release
virtual void release()=0
agora::streaming::IStreamingKit::unregisterAudioFrameObserver
virtual void unregisterAudioFrameObserver(media::base::IAudioFrameObserver *observer)=0
agora::streaming::StreamingContext::eventHandler
IStreamingEventHandler * eventHandler
Definition: IAgoraStreamingKit.h:153
agora::streaming::StreamingContext::enableAudioStreaming
bool enableAudioStreaming
Definition: IAgoraStreamingKit.h:180
agora::streaming::IVideoDeviceManager::setDevice
virtual int setDevice(const char deviceId[MAX_DEVICE_ID_LENGTH])=0
agora::streaming::IStreamingKit
Definition: IAgoraStreamingKit.h:221
agora::streaming::IStreamingKit::pushExternalAudioFrame
virtual int pushExternalAudioFrame(const media::IAudioFrameObserver::AudioFrame &frame)=0
agora::streaming::IVideoDeviceManager
Definition: IAgoraStreamingKit.h:728
agora::streaming::IStreamingKit::setVideoStreamConfiguration
virtual int setVideoStreamConfiguration(const VideoStreamConfiguration &config)=0
agora::streaming::IAudioDeviceManager::setRecordingDevice
virtual int setRecordingDevice(const char deviceId[MAX_DEVICE_ID_LENGTH])=0
agora::streaming::IVideoPreviewRenderer
Definition: IAgoraStreamingKit.h:783
agora::streaming::ISnapshotCallback
Definition: IAgoraStreamingKit.h:838
agora::streaming::IVideoPreviewRenderer::setRenderMode
virtual int setRenderMode(RENDER_MODE_TYPE renderMode)=0
agora::streaming::IStreamingKit::setExternalAudioSource
virtual int setExternalAudioSource(bool enable)=0
agora::streaming::IVideoDeviceManager::release
virtual void release()=0
agora::streaming::IStreamingKit::setLogFile
virtual int setLogFile(const char *filePath)=0
agora::streaming::IVideoPreviewRenderer::setView
virtual int setView(view_t view)=0
agora::streaming::IStreamingKit::unregisterVideoFrameObserver
virtual void unregisterVideoFrameObserver(media::base::IVideoFrameObserver *observer)=0
agora::streaming::IStreamingKit::startStreaming
virtual int startStreaming(const char *publishUrl)=0
agora::streaming::IAudioDeviceManager::enumerateRecordingDevices
virtual IAudioDeviceCollection * enumerateRecordingDevices()=0
agora::streaming::IStreamingKit::registerVideoFrameObserver
virtual int registerVideoFrameObserver(media::base::IVideoFrameObserver *observer)=0
agora::streaming::IAudioDeviceManager::getRecordingDeviceVolume
virtual int getRecordingDeviceVolume(unsigned int *volume)=0
agora::streaming::IAudioDeviceManager::getRecordingDeviceInUse
virtual int getRecordingDeviceInUse(char deviceId[MAX_DEVICE_ID_LENGTH], char deviceName[MAX_DEVICE_ID_LENGTH])=0
agora::streaming::IStreamingEventHandler
Definition: IAgoraStreamingKit.h:126
agora::streaming::StreamingContext::appId
const char * appId
Definition: IAgoraStreamingKit.h:159
agora::streaming::IAudioDeviceCollection
Definition: IAgoraStreamingKit.h:580
agora::streaming::StreamingContext::enableVideoStreaming
bool enableVideoStreaming
Definition: IAgoraStreamingKit.h:196
agora::streaming::IStreamingKit::snapshot
virtual int snapshot(agora::streaming::ISnapshotCallback *callback)=0
agora::streaming::StreamingContext
Definition: IAgoraStreamingKit.h:149
agora::streaming::IStreamingKit::stopStreaming
virtual int stopStreaming()=0
agora::streaming::IVideoDeviceCollection::getDeviceInfo
virtual int getDeviceInfo(int index, char deviceName[MAX_DEVICE_ID_LENGTH], char deviceId[MAX_DEVICE_ID_LENGTH])=0
agora::streaming::IStreamingKit::pushExternalVideoFrame
virtual int pushExternalVideoFrame(const media::IVideoFrameObserver::VideoFrame &Frame)=0