diff --git a/android/build.gradle b/android/build.gradle index 5dd1e810c..20c2f0e5b 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -57,9 +57,9 @@ dependencies { if (isDev(project)) { api fileTree(dir: "libs", include: ["*.jar"]) } else { - api 'io.agora.rtc:iris-rtc:4.5.0-dev.10' - api 'io.agora.rtc:agora-full-preview:4.5.0-dev.10' - api 'io.agora.rtc:full-screen-sharing-special:4.5.0-dev.10' + api 'io.agora.rtc:iris-rtc:4.5.0-dev.12' + api 'io.agora.rtc:agora-full-preview:4.5.0-dev.12' + api 'io.agora.rtc:full-screen-sharing-special:4.5.0-dev.12' } } diff --git a/android/src/main/cpp/third_party/include/agora_rtc/rte_base/c/c_player.h b/android/src/main/cpp/third_party/include/agora_rtc/rte_base/c/c_player.h index e08453ec3..b87b88af0 100644 --- a/android/src/main/cpp/third_party/include/agora_rtc/rte_base/c/c_player.h +++ b/android/src/main/cpp/third_party/include/agora_rtc/rte_base/c/c_player.h @@ -20,46 +20,166 @@ typedef struct Rte Rte; typedef struct RteStream RteStream; typedef struct RtePlayerInternal RtePlayerInternal; +/** + * Player states. + * When the player state changes, the state will be notified through the PlayerObserver::onStateChanged callback interface. + * @since v4.4.0 + */ typedef enum RtePlayerState { + /** + * 0: Idle state. + */ kRtePlayerStateIdle, + /** + * 1: Opening state. This state is notified after calling rte::Player::OpenWithUrl(). + */ kRtePlayerStateOpening, + /** + * 2: Open completed state. This state is notified after successfully calling rte::Player::OpenWithUrl(). + */ kRtePlayerStateOpenCompleted, + /** + * 3: Playing state. This state is notified when audience members successfully subscribe to the broadcaster after opening an RTE URL. + */ kRtePlayerStatePlaying, + /** + * 4: Paused state. This state is notified when playback is paused. + */ kRtePlayerStatePaused, + /** + * 5: Playback completed state. This state is notified when the broadcaster stops streaming and leaves the live streaming room after playing the rte URL. + */ kRtePlayerStatePlaybackCompleted, + /** + * 6: Stopped state. This state is entered after the user calls Player::stop. + */ kRtePlayerStateStopped, + /** + * 7: Failed state. This state is entered when an internal error occurs. + */ kRtePlayerStateFailed } RtePlayerState; +/** + * Player events. + * When an event occurs, it will be notified through the PlayerObserver::onEvent callback interface. + * @since v4.4.0 + */ typedef enum RtePlayerEvent { + /** + * 0: Start seeking to a specified position for playback. + */ kRtePlayerEventSeekBegin, + /** + * 1: Seeking completes. + */ kRtePlayerEventSeekComplete, + /** + * 2: An error occurs when seeking to a new playback position. + */ kRtePlayerEventSeekError, + /** + * 3: The currently buffered data is not enough to support playback. + */ kRtePlayerEventBufferLow, + /** + * 4: The currently buffered data is just enough to support playback. + */ kRtePlayerEventBufferRecover, + /** + * 5: Audio or video playback starts freezing. + */ kRtePlayerEventFreezeStart, + /** + * 6: The audio or video playback resumes without freezing. + */ kRtePlayerEventFreezeStop, + /** + * 7: One loop playback completed. + */ kRtePlayerEventOneLoopPlaybackCompleted, + /** + * 8: URL authentication will expire. + */ kRtePlayerEventAuthenticationWillExpire, + /** + * 9: When the fallback option is enabled, ABR revert to the audio-only layer due to poor network. + */ kRtePlayerEventAbrFallbackToAudioOnlyLayer, + /** + * 10: ABR recovers from audio-only layer to video layer when fallback option is enabled. + */ kRtePlayerEventAbrRecoverFromAudioOnlyLayer } RtePlayerEvent; +/** + * ABR subscription layer. + * This enumeration can be used to set the value of the abr_subscription_layer query parameter in the rte URL. + * It can also be used in the PlayerConfig::SetAbrSubscriptionLayer setting interface. + * @since v4.4.0 + */ typedef enum RteAbrSubscriptionLayer { + /** + * 0: High-quality video stream, this layer has the highest resolution and bitrate. + */ kRteAbrSubscriptionHigh = 0, + /** + * 1: Low-quality video stream, this layer has the lowest resolution and bitrate. + */ kRteAbrSubscriptionLow = 1, + /** + * 2: Layer1 video stream, this layer has lower resolution and bitrate than that of the high-quality video stream. + */ kRteAbrSubscriptionLayer1 = 2, + /** + * 3: Layer2 video stream, this layer has lower resolution and bitrate than layer1. + */ kRteAbrSubscriptionLayer2 = 3, + /** + * 4: Layer3 video stream, this layer has lower resolution and bitrate than layer2. + */ kRteAbrSubscriptionLayer3 = 4, + /** + * 5: Layer4 video stream, this layer has lower resolution and bitrate than layer3. + */ kRteAbrSubscriptionLayer4 = 5, + /** + * 6: Layer5 video stream, this layer has lower resolution and bitrate than layer4. + */ kRteAbrSubscriptionLayer5 = 6, + /** + * 7: Layer6 video stream, this layer has lower resolution and bitrate than layer5. + */ kRteAbrSubscriptionLayer6 = 7, } RteAbrSubscriptionLayer; + +/** + * ABR fallback layer. + * This enumeration can be used to set the value of the abr_fallback_layer query parameter in the rte URL. + * It can also be used in the PlayerConfig::SetAbrFallbackLayer setting interface. + * @since v4.4.0 + */ typedef enum RteAbrFallbackLayer { + /** + * 0: When the network quality is poor, it will not revert to a lower resolution stream. + * It may still revert to scalable video coding but will maintain the high-quality video resolution. + */ kRteAbrFallbackDisabled = 0, + /** + * 1: (Default) In a poor network environment, the receiver's SDK will receive the kRteAbrSubscriptionLow layer video stream. + */ kRteAbrFallbackLow = 1, + /** + * 2: In a poor network environment, the SDK may first receive the kRteAbrSubscriptionLow layer, + * and if the relevant layer exists, it will revert to kRteAbrSubscriptionLayer1 to kRteAbrSubscriptionLayer6. + * If the network environment is too poor to play video, the SDK will only receive audio. + */ kRteAbrFallbackAudioOnly = 2, + /** + * 3~8: If the receiving end sets the fallback option, the SDK will receive one of the layers from kRteAbrSubscriptionLayer1 to kRteAbrSubscriptionLayer6. + * The lower boundary of the fallback video stream is determined by the configured fallback option. + */ kRteAbrFallbackLayer1 = 3, kRteAbrFallbackLayer2 = 4, kRteAbrFallbackLayer3 = 5, @@ -68,32 +188,90 @@ typedef enum RteAbrFallbackLayer { kRteAbrFallbackLayer6 = 8, } RteAbrFallbackLayer; +/** + * Player information. + * When playerInfo changes, it will be notified through the PlayerObserver::onPlayerInfoUpdated callback interface. + * It can also be actively obtained through the Player::GetInfo interface. + * @since v4.4.0 + */ typedef struct RtePlayerInfo { + /** + * Current player state + */ RtePlayerState state; + /** + * Reserved parameter. + */ size_t duration; + /** + * Reserved parameter. + */ size_t stream_count; + /** + * Whether there is an audio stream. When opening an rte URL, it indicates whether the broadcaster has pushed audio. + */ bool has_audio; + /** + * Whether there is a video stream. When opening an rte URL, it indicates whether the broadcaster has pushed video. + */ bool has_video; + /** + * Whether the audio is muted. Indicates whether the audience has subscribed to the audio stream. + */ bool is_audio_muted; + /** + * Whether the video is muted. Indicates whether the audience has subscribed to the video stream. + */ bool is_video_muted; + /** + * Video resolution height + */ int video_height; + /** + * Video resolution width + */ int video_width; + /** + * The currently subscribed video layer + */ RteAbrSubscriptionLayer abr_subscription_layer; - + /** + * Audio sample rate + */ int audio_sample_rate; + /** + * Number of audio channels + */ int audio_channels; + /** + * Reserved parameter. + */ int audio_bits_per_sample; } RtePlayerInfo; - - - +/** + * Player statistics. + * Can be actively obtained through the Player::GetStats interface. + * @since v4.4.0 + */ typedef struct RtePlayerStats { - int video_decode_frame_rate; - int video_render_frame_rate; - int video_bitrate; - - int audio_bitrate; + /** + * Decoding frame rate + */ + int video_decode_frame_rate; + /** + * Rendering frame rate + */ + int video_render_frame_rate; + /** + * Video bitrate + */ + int video_bitrate; + + /** + * Audio bitrate + */ + int audio_bitrate; } RtePlayerStats; typedef struct RteMediaTrackInfo { diff --git a/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_callback_utils.h b/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_callback_utils.h index a26fbe757..27e1e36bc 100644 --- a/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_callback_utils.h +++ b/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_callback_utils.h @@ -4,7 +4,6 @@ #include "rte_base/c/handle.h" /** - * * @technical preview */ namespace rte { diff --git a/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_canvas.h b/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_canvas.h index d496f70d6..c35ce3df6 100644 --- a/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_canvas.h +++ b/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_canvas.h @@ -35,7 +35,6 @@ class CanvasInitialConfig { /** * The CanvasConfig class is used to configure the Canvas object. * @since v4.4.0 - * @technical preview */ class CanvasConfig { public: @@ -43,23 +42,24 @@ class CanvasConfig { ~CanvasConfig() {RteCanvasConfigDeinit(&c_canvas_config, nullptr);} /** - * Set the Render Mode. + * Set the video render mode. * @since v4.4.0 - * @param mode - * @param err + * @param mode The render mode to set. Refer to the rte::VideoRenderMode type, default is kRteVideoRenderModeHidden. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidArgument: The mode parameter is set to an illegal value. * @return void - * @technical preview */ void SetRenderMode(VideoRenderMode mode, Error *err = nullptr) { RteCanvasConfigSetVideoRenderMode(&c_canvas_config, mode, err != nullptr ? err->get_underlying_impl() : nullptr); } /** - * Get the Render Mode. + * Get the render mode. * @since v4.4.0 - * @param err + * @param err Possible return values for ErrorCode: + * - kRteOk: Success * @return VideoRenderMode - * @technical preview */ VideoRenderMode GetRenderMode(Error *err = nullptr) { VideoRenderMode mode; @@ -68,22 +68,24 @@ class CanvasConfig { } /** - * Set the Mirror Mode. + * Set the video mirror mode. * @since v4.4.0 - * @param mode - * @param err + * @param mode The mirror mode to set. Refer to the rte::VideoMirrorMode type, default is kRteVideoMirrorModeAuto. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidArgument: The mode parameter is set to an illegal value. * @return void - * @technical preview */ void SetMirrorMode(VideoMirrorMode mode, Error *err = nullptr) { RteCanvasConfigSetVideoMirrorMode(&c_canvas_config, mode, err != nullptr ? err->get_underlying_impl() : nullptr); } /** - * Get the Mirror Mode. + * Get the video mirror mode. * @since v4.4.0 - * @param err - * @return VideoMirrorMode + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * @return VideoMirrorMode The current video mirror mode. */ VideoMirrorMode GetMirrorMode(Error *err = nullptr) { VideoMirrorMode mode; @@ -124,10 +126,15 @@ class CanvasConfig { /** * The Canvas class is used to render the video stream. * @since v4.4.0 - * @technical preview */ class Canvas { public: + /** + * Construct a Canvas object. + * @since v4.4.0 + * @param rte Rte object. + * @param initial_config CanvasInitialConfig initialization configuration object. Currently, a null pointer can be passed. + */ Canvas(Rte *rte, CanvasInitialConfig *initial_config = nullptr) { c_canvas = ::RteCanvasCreate(&rte->c_rte, initial_config != nullptr ? &initial_config->c_canvas_initial_config : nullptr, nullptr); }; @@ -145,54 +152,66 @@ class Canvas { /** - * Get the Configs object. + * Get the configuration of Canvas object. * @since v4.4.0 - * @param config - * @param err - * @return true - * @return false - * @technical preview + * @param config The object used to get the canvas config configuration. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Canvas object has been destroyed or is invalid. + * - kRteErrorInvalidArgument: The passed config object is null. + * @return bool Returns the result of getting the configuration information. + * - true: Successfully retrieved. + * - false: Failed to retrieve. */ bool GetConfigs(CanvasConfig *config, Error *err = nullptr) { return RteCanvasGetConfigs(&c_canvas, &config->c_canvas_config, err != nullptr ? err->get_underlying_impl() : nullptr); } /** - * Set the Configs object. + * Configure the Canvas object. * @since v4.4.0 - * @param config - * @param err - * @return true - * @return false - * @technical preview + * @param config The object used to set the canvas config configuration. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Canvas object has been destroyed or is invalid. + * - kRteErrorInvalidArgument: The passed config object is null. + * @return bool Returns the result of setting the configuration information. + * - true: Successfully set the configuration. + * - false: Failed to set the configuration. */ bool SetConfigs(CanvasConfig *config, Error *err = nullptr) { return RteCanvasSetConfigs(&c_canvas, &config->c_canvas_config, err != nullptr ? err->get_underlying_impl() : nullptr); } /** - * Add the View object. + * Add a rendering view. Currently, only one view is supported. * @since v4.4.0 - * @param view - * @param config - * @param err - * @return true - * @return false - * @technical preview + * @param view Pointer to the View object. On the Windows platform, you can assign an HWND window handle to a View type variable and pass it to the interface. + * @param config View-related configuration. Currently, nullptr can be passed. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Canvas object has been destroyed or is invalid. + * - kRteErrorInvalidArgument: The passed view is null. + * @return bool Returns the result of adding the View. + * - true: Successfully add the View. + * - false: Failed to add the View. */ bool AddView(View *view, ViewConfig *config, rte::Error *err = nullptr) { return RteCanvasAddView(&c_canvas, view, config, err != nullptr ? err->get_underlying_impl() : nullptr); } - /** - * Remove the View object. + /** + * Remove a rendering view. * @since v4.4.0 - * @param view - * @param config - * @param err - * @return true - * @return false - * @technical preview + * @param view Pointer to the View object. + * @param config View-related configuration. Currently, nullptr can be passed. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Canvas object has been destroyed or is invalid. + * - kRteErrorInvalidArgument: The passed view is null. + * @return bool Returns the result of removing the View. + * - true: Successfully removed the View. + * - false: Failed to remove the View. */ bool RemoveView(View *view, ViewConfig *config, rte::Error *err = nullptr) { return RteCanvasRemoveView(&c_canvas, view, config, err != nullptr ? err->get_underlying_impl() : nullptr); diff --git a/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_error.h b/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_error.h index edefed2a7..31afaae88 100644 --- a/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_error.h +++ b/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_error.h @@ -25,9 +25,8 @@ class CanvasConfig; using ErrorCode = ::RteErrorCode; /** - * The Error class is used to manage the error. + * Error class. Used to record the execution result of an interface call. * @since v4.4.0 - * @technical preview */ class Error { public: @@ -54,8 +53,18 @@ class Error { } } + /** + * This interface is used to get the specific error code. + * @since v4.4.0 + * @return ErrorCode Error code,Refer to the ErrorCode type for details. + */ ErrorCode Code() const { return c_error != nullptr ? c_error->code : kRteErrorDefault; } + /** + * This interface is used to get the specific error description. + * @since v4.4.0 + * @return const char* Error description + */ const char *Message() const { if(c_error != nullptr && c_error->message != nullptr){ return RteStringCStr(c_error->message, nullptr); diff --git a/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_player.h b/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_player.h index 56e125a0e..213250176 100644 --- a/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_player.h +++ b/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_player.h @@ -52,7 +52,6 @@ static void onAudioVolumeIndication(::RtePlayerObserver *observer, int32_t volum /** * The PlayerObserver class is used to observe the event of Player object. * @since v4.4.0 - * @technical preview */ class PlayerObserver { public: @@ -78,12 +77,22 @@ class PlayerObserver { // @} /** - * This callback will be triggered when the player state changed. - * @since v4.4.0 - * @param old_state - * @param new_state - * @param err - * @technical preview + * Player state callback. This function is called when the player state changes. + * @since v4.4.0 + * @param old_state The old state. + * @param new_state The new state. + * @param err Possible return values for ErrorCode. Only when the new_state value is kRtePlayerStateFailed, you need to check the value of this parameter. + * - kRteErrorDefault. For specific reasons, see Error.Message, including the following situations: + * - Failed to connect to the channel. + * - kRteErrorInvalidArgument. + * - Invalid appid. + * - Invalid channelid. + * - Invalid uid. + * - kRteErrorAuthenticationFailed. + * - Invalid token. + * - Token expired. + * - kRteErrorStreamNotFound. After entering the channel, no stream was received from the broadcaster for more than 10 seconds. + * @return void */ virtual void onStateChanged(PlayerState old_state, PlayerState new_state, rte::Error *err) {}; @@ -93,52 +102,56 @@ class PlayerObserver { * @since v4.4.0 * @param curr_time * @param utc_time - * @technical preview */ virtual void onPositionChanged(uint64_t curr_time, uint64_t utc_time) {}; /** - * This callback will be triggered when the resolution of the video changed. + * Video resolution change callback. * @since v4.4.0 - * @param width - * @param height - * @technical preview + * @param width The width of the video frame. + * @param height The height of the video frame. + * @return void */ virtual void onResolutionChanged(int width, int height) {}; /** - * This callback will be triggered when the player event happened. + * Event callback. * @since v4.4.0 - * @param event - * @technical preview + * @param event The event notified by the callback. Refer to the rte::PlayerEvent type. Currently, the following events can be handled accordingly: + * - kRtePlayerEventFreezeStart: Indicates that stuttering has occurred or shows a loading animation. + * - kRtePlayerEventFreezeStop: Indicates that stuttering has ended or stops the loading animation. + * - kRtePlayerEventAuthenticationWillExpire: Regenerate the token, use the new token to construct the RTE URL, and call Player::OpenWithUrl to refresh the token. + * - kRtePlayerEventAbrFallbackToAudioOnlyLayer: Indicates that due to network reasons, it has fallen back to audio-only mode. + * - kRtePlayerEventAbrRecoverFromAudioOnlyLayer: Indicates that it has recovered from audio-only mode to video mode. + * @return void */ virtual void onEvent(PlayerEvent event) {}; /** - * This callback will be triggered when the player metadata received. + * Metadata callback. * @since v4.4.0 - * @param type - * @param data - * @param length - * @technical preview + * @param type The type of metadata. + * @param data The metadata buffer. + * @param length The length of the metadata. + * @return void */ virtual void onMetadata(PlayerMetadataType type, const uint8_t *data, size_t length) {}; /** - * This callback will be triggered when the player info updated. + * Player information update callback. This is called when fields in rte::PlayerInfo are updated. * @since v4.4.0 - * @param info - * @technical preview + * @param info The current PlayerInfo information. + * @return void */ virtual void onPlayerInfoUpdated(const PlayerInfo *info) {}; /** - * This callback will be triggered when the audio volume indication received. + * Broadcaster audio volume update callback. * @since v4.4.0 - * @param volume - * @technical preview + * @param volume The current volume of the Broadcaster. The value range is [0, 255]. + * @return void */ virtual void onAudioVolumeIndication(int32_t volume) {}; @@ -204,7 +217,6 @@ void onAudioVolumeIndication(::RtePlayerObserver *observer, int32_t volume){ /** * The PlayerConfig class is used to configure the Player object. * @since v4.4.0 - * @technical preview */ class PlayerConfig { public: @@ -227,26 +239,29 @@ class PlayerConfig { }; // @} - /** - * Set the auto play parameter. - * @since v4.4.0 - * @param auto_play - * @param err - * @return void - * @technical preview - */ + /** + * Whether to automatically play after a successful call to Player::OpenWithUrl. + * If not set, the default value is true. + * @since v4.4.0 + * @param auto_play + * - true: Automatically start streaming and playing after a successful opening. + * - false: After a successful open with OpenWithUrl, you need to actively call Player::Play() to play the audio and video stream. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * @return void + */ void SetAutoPlay(bool auto_play, Error *err = nullptr) { RtePlayerConfigSetAutoPlay(&c_player_config, auto_play, err != nullptr ? err->get_underlying_impl() : nullptr); } - /** - * Get the auto play parameter. - * @since v4.4.0 - * @param err - * @return bool - * @technical preview - */ + /** + * Get the auto-play setting. + * @since v4.4.0 + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * @return bool Returns whether auto-play is enabled. + */ bool GetAutoPlay(Error *err = nullptr) { bool auto_play; RtePlayerConfigGetAutoPlay(&c_player_config, &auto_play, @@ -579,12 +594,13 @@ class PlayerConfig { } /** - * Set the json parameter. + * Set player private parameters. This parameter setting can be done according to actual needs, referring to the suggestions of Agora SA. * @since v4.4.0 - * @param json_parameter - * @param err + * @param json_parameter JSON formatted string + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidArgument: Indicates that the json_parameter parameter is empty. * @return void - * @technical preview */ void SetJsonParameter(const char *json_parameter, Error *err = nullptr) { String str(json_parameter); @@ -593,11 +609,11 @@ class PlayerConfig { } /** - * Get the json parameter. + * Get the currently configured private parameters of the player. * @since v4.4.0 - * @param err - * @return std::string - * @technical preview + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * @return std::string */ std::string GetJsonParameter(Error *err = nullptr) { String str; @@ -607,12 +623,14 @@ class PlayerConfig { } /** - * Set the abr subscription layer parameter. + * Set the ABR subscription layer. + * If ABR is not enabled, the audience can only switch the high and low video stream in the origin channel. After enabling it, the audience can switch any layer in the abr channel. * @since v4.4.0 - * @param abr_subscription_layer - * @param err + * @param abr_subscription_layer The layer to subscribe to. Refer to the rte::AbrSubscriptionLayer enumeration values for details. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidArgument: An illegal AbrSubscriptionLayer value was set. * @return void - * @technical preview */ void SetAbrSubscriptionLayer(AbrSubscriptionLayer abr_subscription_layer, Error *err = nullptr) { RtePlayerConfigSetAbrSubscriptionLayer(&c_player_config, abr_subscription_layer, @@ -620,11 +638,11 @@ class PlayerConfig { } /** - * Get the abr subscription layer parameter. + * Get the ABR subscription layer. * @since v4.4.0 - * @param err - * @return AbrSubscriptionLayer - * @technical preview + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * @return AbrSubscriptionLayer The currently set subscription layer. */ AbrSubscriptionLayer GetAbrSubscriptionLayer(Error *err = nullptr) { AbrSubscriptionLayer abr_subscription_layer; @@ -634,12 +652,15 @@ class PlayerConfig { } /** - * Set the abr fallback layer parameter. + * Set the ABR fallback layer option. + * If ABR is not enabled, after calling this method, the audience can only set kRteAbrFallbackDisabled ~ kRteAbrFallbackAudioOnly in the original channel. + * After enabling it, the audience can switch all values of AbrFallbackLayer in the abr channel. * @since v4.4.0 - * @param abr_fallback_layer - * @param err + * @param abr_fallback_layer The ABR fallback option to set. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidArgument: An illegal AbrFallbackLayer value was set. Check the value of the passed abr_fallback_layer parameter. * @return void - * @technical preview */ void SetAbrFallbackLayer(AbrFallbackLayer abr_fallback_layer, Error *err = nullptr) { RtePlayerConfigSetAbrFallbackLayer(&c_player_config, abr_fallback_layer, @@ -648,11 +669,11 @@ class PlayerConfig { /** - * Get the abr fallback layer parameter. + * Get the ABR fallback layer option. * @since v4.4.0 - * @param err - * @return AbrFallbackLayer - * @technical preview + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * @return AbrFallbackLayer The currently set ABR fallback option. */ AbrFallbackLayer GetAbrFallbackLayer(Error *err = nullptr) { AbrFallbackLayer abr_fallback_layer; @@ -671,12 +692,17 @@ class PlayerConfig { }; /** - * The Player class is used to play the url resource. + * The Player class can be used to play URL resources. * @since v4.4.0 - * @techinical preview */ class Player { public: +/** + * Construct a Player object. + * @since v4.4.0 + * @param rte Rte object. + * @param config PlayerInitialConfig initialization configuration object. Currently, a null pointer can be passed. + */ explicit Player(Rte *self, PlayerInitialConfig *config = nullptr) : c_player(::RtePlayerCreate(&self->c_rte, nullptr, nullptr)) {}; ~Player() { @@ -692,25 +718,43 @@ class Player { // @} /** - * Preload the url. + * Preload URL, only valid for rte type URLs. This interface can speed up the OpenWithUrl operation. Up to 20 URLs can be preloaded. If the limit is exceeded, new preloads will replace old ones. * @since v4.4.0 - * @param url - * @param err - * @return bool - * @technical preview + * @param url rte type URL + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidArgument: The passed URL is empty or has an invalid format. + * @return bool Whether the preload operation was successful. + * - true: Successfully preload the Rte URL. + * - false: Failed to preload the Rte URL. */ static bool PreloadWithUrl(const char* url, Error *err = nullptr) { return RtePlayerPreloadWithUrl(nullptr, url, err != nullptr ? err->get_underlying_impl() : nullptr); }; - /** - * Open a url. - * @since v4.4.0 - * @param url - * @param start_time - * @param cb + /** + * Open URL resource. Currently, only rte URLs are supported, and cdn URLs and files are not supported. + * This interface can also be used to refresh the token of an already opened URL. + * For URL format definition and token refresh method description, refer to the doc: + * https://doc.shengwang.cn/doc/rtc/android/best-practice/playing-url + * @since v4.4.0 + * @param url The URL resource to open + * @param start_time Start time [currently not supported] + * @param cb Callback to asynchronously notify the result of the open operation. If an error occurs during open, it will enter the kRtePlayerStateFailed state. You need to call the Stop method before calling OpenWithUrl again. + * @param err Possible return values for ErrorCode. At this time, the new_state value corresponds to kRtePlayerStateFailed. + * - kRteOk: Success + * - kRteErrorDefault: For specific reasons, see Error.Message, including the following situations: + * - Failed to connect to the channel + * - kRteErrorInvalidArgument: + * - Invalid appid + * - Invalid channelid + * - Invalid uid + * - kRteErrorAuthenticationFailed: + * - Invalid token + * - Token expired + * - kRteErrorInvalidOperation: + * - Engine not initialized * @return void - * @technical preview */ void OpenWithUrl(const char* url, uint64_t start_time, std::function cb) { CallbackContext* callbackCtx = new CallbackContext(this, cb); @@ -746,11 +790,13 @@ class Player { }; /** - * Get the stats of player. + * Get player playback statistics. * @since v4.4.0 - * @param cb + * @param cb Asynchronous callback for statistical data. + * @param stats Statistical values. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success * @return void - * @technical preview */ void GetStats(std::function cb){ CallbackContextWithArgs *ctx = new CallbackContextWithArgs(this, cb); @@ -758,57 +804,73 @@ class Player { } /** - * Set the canvas. + * Set canvas. After the stream is successfully pulled, the video frame will be rendered on the set canvas. * @since v4.4.0 - * @param canvas - * @param err - * @return bool - * @technical preview + * @param canvas The canvas object used to render video frames. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidArgument: The canvas is null. + * - kRteErrorInvalidOperation: The corresponding internal Player object has been destroyed or is invalid. + * @return bool The result of the SetCanvas operation. If it fails, you can check the specific error through err. + * - true: Successfully set the canvas. + * - false: Failed to set the canvas. */ bool SetCanvas(Canvas *canvas, Error *err = nullptr) { return RtePlayerSetCanvas(&c_player, canvas != nullptr ? &canvas->c_canvas : nullptr, err != nullptr ? err->get_underlying_impl() : nullptr); }; /** - * Start to play. + * Start stream playback. * @since v4.4.0 - * @param err - * @return bool - * @technical preview + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Player object has been destroyed or is invalid. + * @return bool The result of the Play operation. If it fails, you can check the specific error through err. + * - true: Successfully play. + * - false: Failed to play. */ bool Play(Error *err = nullptr) { return RtePlayerPlay(&c_player, err != nullptr ? err->get_underlying_impl() : nullptr); } /** - * Stop the player. + * Stop playback. * @since v4.4.0 - * @param err - * @return bool - * @technical preview + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Player object has been destroyed or is invalid. + * @return bool The result of the Stop operation. If it fails, you can check the specific error through err. + * - true: Successfully stop. + * - false: Failed to stop. */ bool Stop(Error *err = nullptr) { return RtePlayerStop(&c_player, err != nullptr ? err->get_underlying_impl() : nullptr); } /** - * Pause the player. + * Pause playback. * @since v4.4.0 - * @param err - * @return bool - * @technical preview + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Player object has been destroyed or is invalid. + * @return bool The result of the Pause operation. If it fails, you can check the specific error through err. + * - true: Successfully pause. + * - false: Failed to pause. */ bool Pause(Error *err = nullptr) { return RtePlayerPause(&c_player, err != nullptr ? err->get_underlying_impl() : nullptr); } /** - * Seek the playback postion. + * Seek the playback position. * @since v4.4.0 - * @param new_time - * @param err - * @return true - * @return false + * @param new_time The new playback position to seek to. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Player object has been destroyed or is invalid. + * @return bool The result of the Seek operation. If it fails, you can check the specific error through err. + * - true: Successfully Seek. + * - false: Failed to Seek. * @technical preview */ bool Seek(uint64_t new_time, Error *err = nullptr) { @@ -816,24 +878,30 @@ class Player { } /** - * Mute/Unmute the audio. + * Mute/unmute audio separately. * @since v4.4.0 - * @param mute - * @param err - * @return bool - * @technical preview + * @param mute Whether to mute. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Player object has been destroyed or is invalid. + * @return bool The result of the MuteAudio operation. If it fails, you can check the specific error through err. + * - true: The mute operation was successful. + * - false: The mute operation failed. */ bool MuteAudio(bool mute, Error *err = nullptr) { return RtePlayerMuteAudio(&c_player, mute, err != nullptr ? err->get_underlying_impl() : nullptr); } /** - * Mute/Unmute the video. + * Mute/unmute video separately. * @since v4.4.0 - * @param mute - * @param err - * @return bool - * @technical preview + * @param mute Whether to mute. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Player object has been destroyed or is invalid. + * @return bool The result of the MuteVideo operation. If it fails, you can check the specific error through err. + * - true: The mute operation was successful. + * - false: The mute operation failedl. */ bool MuteVideo(bool mute, Error *err = nullptr) { return RtePlayerMuteVideo(&c_player, mute, err != nullptr ? err->get_underlying_impl() : nullptr); @@ -844,75 +912,89 @@ class Player { * @since v4.4.0 * @param err * @return uint64_t - * @technical preview + * @technical preview */ uint64_t GetPosition(Error *err = nullptr){ return RtePlayerGetPosition(&c_player, err != nullptr ? err->get_underlying_impl() : nullptr); } /** - * Get the PlayerInfo object. + * Get player information. * @since v4.4.0 - * @param info - * @param err - * @return bool - * - true: Success. - * - false: Failure. - * @technical preview + * @param info The object used to receive player information. After the interface call is successful, the player information will be copied to the info object. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Player object has been destroyed or is invalid. + * - kRteErrorInvalidArgument: The info object is null. + * @return bool The result of the GetInfo operation. If it fails, you can check the specific error through err. + * - true: Successfully get the player information. + * - false: Failed to get the player information. */ bool GetInfo(PlayerInfo *info, Error *err = nullptr){ return RtePlayerGetInfo(&c_player, info, err != nullptr ? err->get_underlying_impl() : nullptr); } /** - * Get the PlayerConfig object. + * Get the configuration of Player object. * @since v4.4.0 - * @param config - * @param err - * @return bool - * - true: Success. - * - false: Failure. - * @technical preview + * @param config The object used to receive PlayerConfig information. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Player object has been destroyed or is invalid. + * - kRteErrorInvalidArgument: The config object is null. + * @return bool The result of the GetConfigs operation. If it fails, you can check the specific error through err. + * - true: Successfully get the configuration. + * - false: Failed to get the configuration. */ bool GetConfigs(PlayerConfig* config, Error *err = nullptr) { return RtePlayerGetConfigs(&c_player, config->get_underlying_impl(), err != nullptr ? err->get_underlying_impl() : nullptr); } /** - * Set the PlayerConfig object. + * Configure the Player object. * @since v4.4.0 - * @param config - * @param err - * @return bool - * - true: Success. - * - false: Failure. - * @technical preview + * @param config The object used to change the player configuration. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Player object has been destroyed or is invalid. + * - kRteErrorInvalidArgument: The config object is null. + * @return bool The result of the SetConfigs operation. If it fails, you can check the specific error through err. + * - true: Successfully set the configuration. + * - false: Failed to set the configuration. */ bool SetConfigs(PlayerConfig* config, Error *err = nullptr) { return RtePlayerSetConfigs(&c_player, config->get_underlying_impl(), err != nullptr ? err->get_underlying_impl() : nullptr); } /** - * Register the observer. + * Register player observer. * @since v4.4.0 - * @param observer - * @param err - * @return bool - * @technical preview + * @param observer The object used to receive player-related callbacks. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Player object has been destroyed or is invalid. + * - kRteErrorInvalidArgument: The observer object is null. + * @return bool The result of the RegisterObserver operation. If it fails, you can check the specific error through err. + * - true: Successfully register the observer. + * - false: Failed to register the observer. */ bool RegisterObserver(PlayerObserver *observer, Error *err = nullptr) { return RtePlayerRegisterObserver( &c_player, observer != nullptr ? observer->c_player_observer : nullptr, err != nullptr ? err->get_underlying_impl() : nullptr); } - /** - * Unregister the observer. - * @since v4.4.0 - * @param observer - * @param err - * @return bool - * @technical preview - */ +/** + * Unregister player observer. + * @since v4.4.0 + * @param observer The object used to receive player-related callbacks. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Player object has been destroyed or is invalid. + * - kRteErrorInvalidArgument: The observer object is null. + * @return bool The result of the UnregisterObserver operation. If it fails, you can check the specific error through err. + * - true: Successfully unregister the observer. + * - false: Failed to unregister the observer. + */ bool UnregisterObserver(PlayerObserver *observer, Error *err = nullptr){ return RtePlayerUnregisterObserver(&c_player, observer != nullptr ? observer->c_player_observer : nullptr, err != nullptr ? err->get_underlying_impl() : nullptr); diff --git a/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_rte.h b/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_rte.h index 5853d3c91..79ec4249d 100644 --- a/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_rte.h +++ b/android/src/main/cpp/third_party/include/agora_rtc/rte_base/rte_cpp_rte.h @@ -63,7 +63,6 @@ class Observer { /** * The Config class is used to configure the Rte object. * @since v4.4.0 - * @technical preview */ class Config { public: @@ -78,11 +77,14 @@ class Config { // @} /** - * Set the App Id Parameter - * @since v4.4.0 - * @param app_id - * @param err - * @technical preview + * Set the App ID Parameter, which is used to initialize the engine. This field value needs to be set before calling Rte::InitMediaEngine to initialize the engine. + * If not set, the default value is an empty string. + * @since v4.4.0 + * @param app_id Your project's App ID + * @param err Possible return of the following ErrorCode + * - kRteOk: Success + * - kRteErrorInvalidArgument: Indicates that the app_id parameter is empty. + * @return void */ void SetAppId(const char *app_id, Error *err = nullptr){ String str(app_id); @@ -90,11 +92,11 @@ class Config { } /** - * Get the App Id Parameter - * @since v4.4.0 - * @param err - * @return const char* - * @technical preview + * Get the App ID Parameter. + * @since v4.4.0 + * @param err Possible return of the following ErrorCode + * - kRteOk: Success + * @return std::string The AppId value */ std::string GetAppId(Error *err = nullptr){ String str; @@ -203,23 +205,27 @@ class Config { } /** - * Set the Json Parameter + * Set Json format parameters, usually used to set some private parameters supported by rte. * @since v4.4.0 - * @param json_parameter - * @param err - * @technical preview + * @param json_parameter json format parameter set + * @param err Possible return of the following ErrorCode + * - kRteOk: Success + * - kRteErrorInvalidArgument: Indicates that the json_parameter parameter is empty. + * @return void */ + void SetJsonParameter(const char *json_parameter, Error *err = nullptr){ String str(json_parameter); RteConfigSetJsonParameter(&c_rte_config, str.get_underlying_impl(), err != nullptr ? err->get_underlying_impl() : nullptr); } /** - * Get the Json Parameter + * Get the currently configured private parameters of the Rte. + * * @since v4.4.0 - * @param err - * @return const char* - * @technical preview + * @param err Possible return of the following error codes: + * - kRteOk: Success + * @return std::string Returns the set JSON format parameter set. */ std::string GetJsonParameter(Error *err = nullptr){ String str; @@ -238,17 +244,19 @@ class Config { /** * The Rte class, which is the base interface of the Agora Real Time Engagement SDK. * @since v4.4.0 - * @technical preview */ class Rte { public: /** - * Create a new Rte object via the bridge method. - * - * @param err - * @return Rte - * @technical preview + * Create an Rte object from the rtc bridge. Used in scenarios where the rtc engine has already been initialized, + * which can save the operation of initializing the rte engine. + * @since v4.4.0 + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: Indicates that the rtc engine instance has not been created or the rtc engine has not been initialized. + * Unable to bridge rte from rtc engine. + * @return Rte object. If the Rte object is invalid, subsequent operations on Rte will return an error. */ static Rte GetFromBridge(Error* err = nullptr){ Rte rte( RteGetFromBridge(err != nullptr ? err->get_underlying_impl() : nullptr)); @@ -256,10 +264,9 @@ class Rte { } /** - * Construct a new Rte object. - * - * @param config - * @technical preview + * Construct an Rte object. + * @since v4.4.0 + * @param config Rte object initialization configuration object. */ explicit Rte(InitialConfig *config = nullptr): c_rte(::RteCreate(config != nullptr ? &config->c_rte_init_cfg : nullptr, nullptr)) {} ~Rte(){RteDestroy(&c_rte, nullptr);}; @@ -268,7 +275,6 @@ class Rte { * Construct a new Rte object. * * @param other - * @technical preview */ Rte(Rte &&other) : c_rte(other.c_rte) { other.c_rte = {}; @@ -281,11 +287,16 @@ class Rte { // @} /** - * Register the observer. - * - * @param observer - * @param err + * Register an RTE observer. + * @since v4.4.0 + * @param observer The object that observes RTE callback events. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal RTE object has been destroyed or is invalid. + * - kRteErrorInvalidArgument: The registered observer object is null. * @return bool + * - true: Registration is successful. + * - false: Registration failed. * @technical preview */ bool RegisterObserver(Observer *observer, Error *err = nullptr){ @@ -293,11 +304,16 @@ class Rte { } /** - * Unregister the observer. - * - * @param observer - * @param err + * Unregister the RTE observer object. + * @since v4.4.0 + * @param observer The object that observes RTE callback events. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal RTE object has been destroyed or is invalid. + * - kRteErrorInvalidArgument: The unregistered observer object is null. * @return bool + * - true: Unregistration is successful. + * - false: Unregistration failed. * @technical preview */ bool UnregisterObserver(Observer *observer, Error *err = nullptr){ @@ -305,41 +321,55 @@ class Rte { err != nullptr ? err->get_underlying_impl() : nullptr); } - /** * Initialize the media engine. * - * @param cb - * @param err - * @return bool - * @technical preview + * @param cb Asynchronous callback function that returns the result of engine initialization. + * - @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorDefault: Engine initialization failed, specific error reason can be obtained through Error.Message(). + * - kRteErrorInvalidOperation: Rte object created through GetFromBridge, initialization is not allowed. + * + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorDefault: Engine initialization failed, specific error description can be obtained through Error.Message(). + * - kRteErrorInvalidOperation: The corresponding internal Rte object has been destroyed or is invalid. + * @return bool Returns whether the asynchronous operation was successfully placed in the asynchronous operation queue, not whether the initialization action was successful. + * - true: Asynchronous initialization action executed normally. + * - false: Asynchronous initialization action did not execute normally. */ bool InitMediaEngine(std::function cb, Error *err = nullptr){ auto* ctx = new CallbackContext(this, cb); return RteInitMediaEngine(&c_rte, &CallbackFunc<::Rte, Rte>, ctx, err != nullptr ? err->get_underlying_impl() : nullptr); } - - /** - * Get the Configs object. - * - * @param config - * @param err - * @return bool - * @technical preview - */ +/** + * Get the configuration of Rte object. + * @since v4.4.0 + * @param config The object used to get the rte config configuration. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Rte object has been destroyed or is invalid. + * - kRteErrorInvalidArgument: The passed config object is null. + * @return bool Returns the result of getting the configuration information. + * - true: Successfully retrieved. + * - false: Failed to retrieve. + */ bool GetConfigs(Config *config, Error *err = nullptr){ return RteGetConfigs(&c_rte, config != nullptr ? config->get_underlying_impl(): nullptr, err != nullptr ? err->get_underlying_impl() : nullptr); } /** - * Set the Configs object. - * - * @param config - * @param err - * @return true - * @return false - * @technical preview + * Configure the Rte object. + * @since v4.4.0 + * @param config The object used to set the rte config configuration. + * @param err Possible return values for ErrorCode: + * - kRteOk: Success + * - kRteErrorInvalidOperation: The corresponding internal Rte object has been destroyed or is invalid. + * - kRteErrorInvalidArgument: The passed config object is null. + * @return bool Returns the result of setting the configuration information. + * - true: Successfully set the configuration. + * - false: Failed to set the configuration. */ bool SetConfigs(Config *config, Error *err = nullptr){ return RteSetConfigs(&c_rte, config != nullptr ? config->get_underlying_impl(): nullptr, err != nullptr ? err->get_underlying_impl() : nullptr); diff --git a/internal/deps_summary.txt b/internal/deps_summary.txt index b6166303f..4ea1fd40d 100644 --- a/internal/deps_summary.txt +++ b/internal/deps_summary.txt @@ -1,18 +1,18 @@ Iris: -https://download.agora.io/sdk/release/iris_4.5.0-dev.10_DCG_Android_Video_16K_20241028_0432_676.zip -https://download.agora.io/sdk/release/iris_4.5.0-dev.10_DCG_iOS_Video_20241028_0434_552.zip -https://download.agora.io/sdk/release/iris_4.5.0-dev.10_DCG_Mac_Video_20241028_0432_518.zip -https://download.agora.io/sdk/release/iris_4.5.0-dev.10_DCG_Windows_Video_20241028_0432_557.zip -implementation 'io.agora.rtc:iris-rtc:4.5.0-dev.10' -pod 'AgoraIrisRTC_iOS', '4.5.0-dev.10' -pod 'AgoraIrisRTC_macOS', '4.5.0-dev.10' +https://download.agora.io/sdk/release/iris_4.5.0-dev.12_DCG_Android_Video_16K_20241106_1153_680.zip +https://download.agora.io/sdk/release/iris_4.5.0-dev.12_DCG_iOS_Video_20241106_1156_555.zip +https://download.agora.io/sdk/release/iris_4.5.0-dev.12_DCG_Mac_Video_20241106_1153_521.zip +https://download.agora.io/sdk/release/iris_4.5.0-dev.12_DCG_Windows_Video_20241106_1153_560.zip +implementation 'io.agora.rtc:iris-rtc:4.5.0-dev.12' +pod 'AgoraIrisRTC_iOS', '4.5.0-dev.12' +pod 'AgoraIrisRTC_macOS', '4.5.0-dev.12' Native: -implementation 'io.agora.rtc:agora-full-preview:4.5.0-dev.10' -implementation 'io.agora.rtc:full-screen-sharing-special:4.5.0-dev.10' -pod 'AgoraRtcEngine_iOS_Preview', '4.5.0-dev.10' -pod 'AgoraRtcEngine_macOS_Preview', '4.5.0-dev.10' \ No newline at end of file +implementation 'io.agora.rtc:agora-full-preview:4.5.0-dev.12' +implementation 'io.agora.rtc:full-screen-sharing-special:4.5.0-dev.12' +pod 'AgoraRtcEngine_iOS_Preview', '4.5.0-dev.12' +pod 'AgoraRtcEngine_macOS_Preview', '4.5.0-dev.12' \ No newline at end of file diff --git a/ios/agora_rtc_engine.podspec b/ios/agora_rtc_engine.podspec index ea6258dbb..074b12f79 100644 --- a/ios/agora_rtc_engine.podspec +++ b/ios/agora_rtc_engine.podspec @@ -23,8 +23,8 @@ Pod::Spec.new do |s| puts '[plugin_dev] Found .plugin_dev file, use vendored_frameworks instead.' s.vendored_frameworks = 'libs/*.xcframework' else - s.dependency 'AgoraIrisRTC_iOS', '4.5.0-dev.10' - s.dependency 'AgoraRtcEngine_iOS_Preview', '4.5.0-dev.10' + s.dependency 'AgoraIrisRTC_iOS', '4.5.0-dev.12' + s.dependency 'AgoraRtcEngine_iOS_Preview', '4.5.0-dev.12' end s.platform = :ios, '9.0' diff --git a/macos/agora_rtc_engine.podspec b/macos/agora_rtc_engine.podspec index 9ffab30e1..98b65f6ee 100644 --- a/macos/agora_rtc_engine.podspec +++ b/macos/agora_rtc_engine.podspec @@ -21,8 +21,8 @@ A new flutter plugin project. puts '[plugin_dev] Found .plugin_dev file, use vendored_frameworks instead.' s.vendored_frameworks = 'libs/*.xcframework', 'libs/*.framework' else - s.dependency 'AgoraRtcEngine_macOS_Preview', '4.5.0-dev.10' - s.dependency 'AgoraIrisRTC_macOS', '4.5.0-dev.10' + s.dependency 'AgoraRtcEngine_macOS_Preview', '4.5.0-dev.12' + s.dependency 'AgoraIrisRTC_macOS', '4.5.0-dev.12' end s.platform = :osx, '10.11' diff --git a/scripts/artifacts_version.sh b/scripts/artifacts_version.sh index f6cb22e8e..fa478f8d9 100644 --- a/scripts/artifacts_version.sh +++ b/scripts/artifacts_version.sh @@ -1,6 +1,6 @@ set -e -export IRIS_CDN_URL_ANDROID="https://download.agora.io/sdk/release/iris_4.5.0-dev.10_DCG_Android_Video_16K_20241028_0432_676.zip" -export IRIS_CDN_URL_IOS="https://download.agora.io/sdk/release/iris_4.5.0-dev.10_DCG_iOS_Video_20241028_0434_552.zip" -export IRIS_CDN_URL_MACOS="https://download.agora.io/sdk/release/iris_4.5.0-dev.10_DCG_Mac_Video_20241028_0432_518.zip" -export IRIS_CDN_URL_WINDOWS="https://download.agora.io/sdk/release/iris_4.5.0-dev.10_DCG_Windows_Video_20241028_0432_557.zip" +export IRIS_CDN_URL_ANDROID="https://download.agora.io/sdk/release/iris_4.5.0-dev.12_DCG_Android_Video_16K_20241106_1153_680.zip" +export IRIS_CDN_URL_IOS="https://download.agora.io/sdk/release/iris_4.5.0-dev.12_DCG_iOS_Video_20241106_1156_555.zip" +export IRIS_CDN_URL_MACOS="https://download.agora.io/sdk/release/iris_4.5.0-dev.12_DCG_Mac_Video_20241106_1153_521.zip" +export IRIS_CDN_URL_WINDOWS="https://download.agora.io/sdk/release/iris_4.5.0-dev.12_DCG_Windows_Video_20241106_1153_560.zip" diff --git a/windows/CMakeLists.txt b/windows/CMakeLists.txt index b0be5c3de..33c58f51d 100644 --- a/windows/CMakeLists.txt +++ b/windows/CMakeLists.txt @@ -12,8 +12,8 @@ project(${PROJECT_NAME} LANGUAGES CXX) # not be changed set(PLUGIN_NAME "agora_rtc_engine_plugin") -set(IRIS_SDK_DOWNLOAD_URL "https://download.agora.io/sdk/release/iris_4.5.0-dev.10_DCG_Windows_Video_20241028_0432_557.zip") -set(IRIS_SDK_DOWNLOAD_NAME "iris_4.5.0-dev.10_DCG_Windows") +set(IRIS_SDK_DOWNLOAD_URL "https://download.agora.io/sdk/release/iris_4.5.0-dev.12_DCG_Windows_Video_20241106_1153_560.zip") +set(IRIS_SDK_DOWNLOAD_NAME "iris_4.5.0-dev.12_DCG_Windows") set(RTC_SDK_DOWNLOAD_NAME "Agora_Native_SDK_for_Windows_FULL") set(IRIS_SDK_VERSION "v3_6_2_fix.1")