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 // The video mirror mode.
107 // GENERATED_JAVA_ENUM_PACKAGE: io.agora.streaming
108 enum VIDEO_MIRROR_MODE_TYPE {
109  // (Default) 0: The mode mode determined by the SDK.
110  VIDEO_MIRROR_MODE_AUTO = 0,
111  // 1: Enable the mirror mode.
112  VIDEO_MIRROR_MODE_ENABLED = 1,
113  // 2: Disable the mirror mode.
114  VIDEO_MIRROR_MODE_DISABLED = 2,
115 };
116 
117 // GENERATED_JAVA_ENUM_PACKAGE: io.agora.streaming
118 enum LOG_FILTER_TYPE {
119  LOG_FILTER_OFF = 0,
120  LOG_FILTER_DEBUG = 0x080f,
121  LOG_FILTER_INFO = 0x000f,
122  LOG_FILTER_WARN = 0x000e,
123  LOG_FILTER_ERROR = 0x000c,
124  LOG_FILTER_CRITICAL = 0x0008,
125 };
126 
138  public:
139  virtual ~IStreamingEventHandler() {}
140 
141  virtual void onStartStreamingSuccess() {}
142 
143  virtual void onStartStreamingFailure(START_STREAMING_ERROR err, const char* msg) {
144  (void)err;
145  (void)msg;
146  }
147 
148  virtual void onMediaStreamingError(MEDIA_STREAMING_ERROR err, const char* msg) {
149  (void)err;
150  (void)msg;
151  };
152 
153  virtual void onStreamingConnectionStateChanged(STREAMING_CONNECTION_STATE state) {
154  (void)state;
155  };
156 };
157 
165 
170  const char* appId;
171 
175  void *context;
176 
192 
208 
213 
218 
220  : eventHandler(NULL), appId(NULL), context(NULL), enableAudioStreaming(true),
221  enableVideoStreaming(true) {}
222 };
223 
233  public:
247  virtual int initialize(const StreamingContext& context) = 0;
248 
263  virtual void release(bool sync = false) = 0;
264 
275  virtual int startStreaming(const char* publishUrl) = 0;
276 
284  virtual int stopStreaming() = 0;
285 
297  virtual int enableAudioRecording(bool enabled) = 0;
298 
310  virtual int enableVideoCapturing(bool enabled) = 0;
311 
323  virtual int muteAudioStream(bool muted) = 0;
324 
336  virtual int muteVideoStream(bool muted) = 0;
337 
350 
363 
376  virtual int switchResolution(int width, int height) = 0;
377 
386  virtual int snapshot(agora::streaming::ISnapshotCallback* callback) = 0;
387 
400  virtual int adjustRecordingSignalVolume(int volume) = 0;
401 
411 
421 
431 
441  virtual int registerAudioFrameObserver(media::base::IAudioFrameObserver* observer) = 0;
442 
448  virtual void unregisterAudioFrameObserver(media::base::IAudioFrameObserver* observer) = 0;
449 
459  virtual int registerVideoFrameObserver(media::base::IVideoFrameObserver* observer) = 0;
460 
466  virtual void unregisterVideoFrameObserver(media::base::IVideoFrameObserver* observer) = 0;
467 
484  virtual int setLogFile(const char* filePath) = 0;
485 
508  virtual int setLogFilter(unsigned int filter) = 0;
509 
522  virtual int setLogFileSize(unsigned int fileSizeInKBytes) = 0;
523 
524 #if defined(__ANDROID__)
525 
534  virtual int startScreenCapture(void *mediaProjectionPermissionResultData, int width, int height) = 0;
535 
541  virtual void stopScreenCapture() = 0;
542 #endif
543 
544  protected:
545  virtual ~IStreamingKit() {}
546 };
547 
552  public:
561  virtual int getNumberOfRecordingDevices() = 0;
562 
573  virtual int getRecordingDeviceInfo(int index, char deviceName[MAX_DEVICE_ID_LENGTH],
574  char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
575 
579  virtual void release() = 0;
580 
581  protected:
582  virtual ~IAudioDeviceCollection() {};
583 };
584 
589  public:
605 
617  virtual int setRecordingDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
618 
628  virtual int getRecordingDeviceInUse(char deviceId[MAX_DEVICE_ID_LENGTH],
629  char deviceName[MAX_DEVICE_ID_LENGTH]) = 0;
630 
639  virtual int setRecordingDeviceVolume(unsigned int volume) = 0;
640 
649  virtual int getRecordingDeviceVolume(unsigned int* volume) = 0;
650 
654  virtual void release() = 0;
655 
656  protected:
657  virtual ~IAudioDeviceManager() {}
658 };
659 
664  public:
665 
671  virtual int getCount() = 0;
672 
684  virtual int getDeviceInfo(int index, char deviceName[MAX_DEVICE_ID_LENGTH],
685  char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
686 
690  virtual void release() = 0;
691 
692  protected:
693  virtual ~IVideoDeviceCollection() {};
694 };
695 
700  public:
716 
728  virtual int setDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
729 
740  virtual int getDeviceInUse(char deviceId[MAX_DEVICE_ID_LENGTH],
741  char deviceName[MAX_DEVICE_ID_LENGTH]) = 0;
742 
745  virtual void release() = 0;
746 
747 protected:
748  virtual ~IVideoDeviceManager() {}
749 };
750 
755  public:
767  virtual int setView(view_t view) = 0;
768 
782  virtual int setRenderMode(RENDER_MODE_TYPE renderMode) = 0;
783 
798  virtual int setMirrorMode(VIDEO_MIRROR_MODE_TYPE mirrorMode) = 0;
799 
803  virtual void release() = 0;
804 
805  protected:
806  virtual ~IVideoPreviewRenderer() {};
807 };
808 
810  public:
811  virtual void onSnapshot(const uint8_t* imageBuffer, int bufferLength, int imageWidth, int imageHeight) = 0;
812  virtual ~ISnapshotCallback() {}
813 };
814 
815 } // namespace streaming
816 } // namespace agora
817 
824 AGORA_API agora::streaming::IStreamingKit* AGORA_CALL createAgoraStreamingKit();
825 
831 AGORA_API const char* AGORA_CALL getAgoraStreamingKitSdkVersion(int* build);
832 
833 #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:663
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:588
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::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:63
agora::streaming::IStreamingKit::enableAudioRecording
virtual int enableAudioRecording(bool enabled)=0
agora::streaming::StreamingContext::videoStreamConfiguration
VideoStreamConfiguration videoStreamConfiguration
Definition: IAgoraStreamingKit.h:217
agora::streaming::AudioStreamConfiguration
Definition: AgoraStreamingBase.h:34
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:212
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:175
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:164
agora::streaming::StreamingContext::enableAudioStreaming
bool enableAudioStreaming
Definition: IAgoraStreamingKit.h:191
agora::streaming::IVideoDeviceManager::setDevice
virtual int setDevice(const char deviceId[MAX_DEVICE_ID_LENGTH])=0
agora::streaming::IStreamingKit
Definition: IAgoraStreamingKit.h:232
agora::streaming::IVideoDeviceManager
Definition: IAgoraStreamingKit.h:699
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:754
agora::streaming::ISnapshotCallback
Definition: IAgoraStreamingKit.h:809
agora::streaming::IVideoPreviewRenderer::setRenderMode
virtual int setRenderMode(RENDER_MODE_TYPE renderMode)=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:137
agora::streaming::StreamingContext::appId
const char * appId
Definition: IAgoraStreamingKit.h:170
agora::streaming::IAudioDeviceCollection
Definition: IAgoraStreamingKit.h:551
agora::streaming::StreamingContext::enableVideoStreaming
bool enableVideoStreaming
Definition: IAgoraStreamingKit.h:207
agora::streaming::IStreamingKit::snapshot
virtual int snapshot(agora::streaming::ISnapshotCallback *callback)=0
agora::streaming::StreamingContext
Definition: IAgoraStreamingKit.h:160
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