@byteplus/rtc 4.42.0 → 4.43.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -123,7 +123,6 @@ declare enum ErrorCode {
123
123
  * @brief Users have been removed from the room because the administrator dismissed the room by calling OpenAPI.
124
124
  */
125
125
  ROOM_DISMISS = "ROOM_DISMISS",
126
- /** Token过期被踢出房间 */
127
126
 
128
127
  /**
129
128
  * @brief Token expired. Call `joinRoom` to rejoin with a valid Token.
@@ -367,7 +366,13 @@ declare enum ErrorCode {
367
366
  /**
368
367
  * @brief The user publishes a public stream before joining room.
369
368
  */
370
- START_PUBLIC_STREAM_BEFORE_JOIN = "START_PUBLIC_STREAM_BEFORE_JOIN"
369
+ START_PUBLIC_STREAM_BEFORE_JOIN = "START_PUBLIC_STREAM_BEFORE_JOIN",
370
+
371
+ /**
372
+ * @brief Reconnection with the server fails and SDK will no longer automatically retry. <br>
373
+ * Please leave room first and join room again, or contact technical support.
374
+ */
375
+ RECONNECT_FAILED = "RECONNECT_FAILED"
371
376
  }
372
377
  declare enum AudioMixingError {
373
378
 
@@ -698,6 +703,76 @@ export interface RTCDevice {
698
703
  */
699
704
  deviceState: "active" | "inactive";
700
705
  }
706
+ export interface AudioCodecProfile {
707
+ chn: number;
708
+ sr: number;
709
+ }
710
+ export interface IEngineBAC {
711
+ codec?: any;
712
+ play?: AudioCodecProfile;
713
+ record?: AudioCodecProfile;
714
+ agc?: any;
715
+ aec?: any;
716
+ ans?: any;
717
+ }
718
+ export interface IEngineANM {
719
+ enc_param: {
720
+ bitrate: number;
721
+ chn: number;
722
+ };
723
+ }
724
+ export interface IAudioConfig {
725
+ bitrate: number;
726
+ channel: number;
727
+ sampleRate: number;
728
+ agc: boolean;
729
+ aec: boolean;
730
+ ans: boolean;
731
+ }
732
+ declare class AudioProfileManager {
733
+ engineBAC: any;
734
+ engineANM: any;
735
+ bitrate?: number;
736
+ sampleRate?: number;
737
+ channel: number;
738
+ aec: boolean;
739
+ agc: boolean;
740
+ ans: boolean;
741
+ constructor();
742
+ private _init;
743
+ updateEngineBAC(newProfile?: IEngineBAC): void;
744
+ updateEngineANM(newProfile?: IEngineANM): void;
745
+ setAudioProfile(profile: AudioProfileType): void;
746
+ setBitrate(bitrate: number): void;
747
+ setAEC(enable: boolean): void;
748
+ setAGC(enable: boolean): void;
749
+ setANS(enable: boolean): void;
750
+ getOpusConfigStr(): string;
751
+ get config(): IAudioConfig;
752
+ }
753
+ /**
754
+ * @brief Cloud proxy informatio
755
+ */
756
+ export interface CloudProxyInfo {
757
+
758
+ /**
759
+ * @brief The cloud proxy IP of log report
760
+ */
761
+ logProxy: string;
762
+
763
+ /**
764
+ * @brief The cloud proxy IP of the access
765
+ */
766
+ accessProxy: string;
767
+
768
+ /**
769
+ * @brief The cloud proxy IP of RTC admin control
770
+ */
771
+ configProxy: string;
772
+ }
773
+ export interface RTCContext {
774
+ audioProfileManager: AudioProfileManager;
775
+ }
701
776
 
702
777
  /**
703
778
  * A user joins the room
@@ -809,7 +884,12 @@ export interface onVideoFirstFrameDecodedEvent {
809
884
  /**
810
885
  * Event related to decoding the first video frame of the public stream.
811
886
  */
812
- export declare type PublicStreamVideoFirstFrameDecodedEvent = Omit<onVideoFirstFrameDecodedEvent, "userId"> & {
887
+ export declare type PublicStreamVideoFirstFrameDecodedEvent = Omit<
888
+
889
+ /**
890
+ * @brief Event related to the decoding of the first video frame.
891
+ */
892
+ onVideoFirstFrameDecodedEvent, "userId"> & {
813
893
 
814
894
  /**
815
895
  * @brief The public stream's ID.
@@ -1686,10 +1766,14 @@ export interface IEngineEvents {
1686
1766
 
1687
1767
  /**
1688
1768
  * @brief A new stream added into the room.
1689
- * @param event `stream` object.
1769
+ * @param event
1690
1770
  * @region Room Management Event
1691
1771
  */
1692
1772
  [EngineEventsTypes.onStreamAdd]: (event: {
1773
+
1774
+ /**
1775
+ * @brief `stream` object.
1776
+ */
1693
1777
  stream: RTCStream;
1694
1778
  }) => void;
1695
1779
 
@@ -1709,11 +1793,19 @@ export interface IEngineEvents {
1709
1793
 
1710
1794
  /**
1711
1795
  * @brief Users will receive this event when a user in the room pauses/ resumes publishing audio stream.
1712
- * @param event <li>stream: media stream</li><li>reason</li>.
1796
+ * @param event
1713
1797
  * @region Room Management Event
1714
1798
  */
1715
1799
  [EngineEventsTypes.onStreamRemove]: (event: {
1800
+
1801
+ /**
1802
+ * @brief Media stream
1803
+ */
1716
1804
  stream: RTCStream;
1805
+
1806
+ /**
1807
+ * @brief Reason
1808
+ */
1717
1809
  reason: StreamRemoveReason;
1718
1810
  }) => void;
1719
1811
 
@@ -1754,31 +1846,55 @@ export interface IEngineEvents {
1754
1846
 
1755
1847
  /**
1756
1848
  * @brief Event of media track ending
1757
- * @param event <li>kind: string Type of the track</li><li>isScreen: boolean Whether it is a screen-sharing stream</li>
1849
+ * @param event
1758
1850
  * @region Video Management Event
1759
1851
  */
1760
1852
  [EngineEventsTypes.onTrackEnded]: (event: {
1853
+
1854
+ /**
1855
+ * @brief Type of the trac
1856
+ */
1761
1857
  kind: string;
1858
+
1859
+ /**
1860
+ * @brief Whether it is a screen-sharing stream.
1861
+ */
1762
1862
  isScreen: boolean;
1763
1863
  }) => void;
1764
1864
 
1765
1865
  /**
1766
1866
  * @brief Event of receiving a broadcast text message in the room
1767
- * @param event <li>userId: string userID of the message sender</li><li>message: Contents of the message</li>
1867
+ * @param event
1768
1868
  * @region Message Event
1769
1869
  */
1770
1870
  [EngineEventsTypes.onRoomMessageReceived]: (event: {
1871
+
1872
+ /**
1873
+ * @brief userID of the message sender.
1874
+ */
1771
1875
  userId: string;
1876
+
1877
+ /**
1878
+ * @brief Contents of the message.
1879
+ */
1772
1880
  message: any;
1773
1881
  }) => void;
1774
1882
 
1775
1883
  /**
1776
1884
  * @brief Event of receiving a broadcast binary message in the room
1777
- * @param event <li>userId: string userID of the message sender</li><li>message: any Contents of the message</li>
1885
+ * @param event
1778
1886
  * @region Message Event
1779
1887
  */
1780
1888
  [EngineEventsTypes.onRoomBinaryMessageReceived]: (event: {
1889
+
1890
+ /**
1891
+ * @brief userID of the message sender
1892
+ */
1781
1893
  userId: string;
1894
+
1895
+ /**
1896
+ * @brief Contents of the message
1897
+ */
1782
1898
  message: ArrayBuffer;
1783
1899
  }) => void;
1784
1900
 
@@ -1811,7 +1927,7 @@ export interface IEngineEvents {
1811
1927
  [EngineEventsTypes.onLocalStreamStats]: (stats: LocalStreamStats) => void;
1812
1928
 
1813
1929
  /**
1814
- * @brief Subscribed public stream's statistics and network condition, reference period 2s.
1930
+ * @brief This 2 s periodical callback notifies information of the public stream after calling [startPlayPublicStream](104478#startplaypublicstream).
1815
1931
  * @param stats
1816
1932
  */
1817
1933
  [EngineEventsTypes.onPublicStreamStats]: (stats: PublicStreamStats) => void;
@@ -1821,10 +1937,14 @@ export interface IEngineEvents {
1821
1937
  * @deprecated since 4.42, use onLocalAudioPropertiesReport and onRemoteAudioPropertiesReport instead.
1822
1938
  * @brief Volume of each of the users in the room
1823
1939
  * If the user has not joined a room, the list will only include volume of `local_user`.
1824
- * @param event Active user in the room and his/her volume.
1940
+ * @param event
1825
1941
  * @region Room Event
1826
1942
  */
1827
1943
  [EngineEventsTypes.onAudioVolumeIndication]: (event: {
1944
+
1945
+ /**
1946
+ * @brief Active user in the room and his/her volume.
1947
+ */
1828
1948
  speakers: AudioVolumeInfo[];
1829
1949
  }) => void;
1830
1950
 
@@ -1853,37 +1973,53 @@ export interface IEngineEvents {
1853
1973
 
1854
1974
  /**
1855
1975
  * @brief The remote clients in the room will be informed of the state change via this event after the publisher starts audio capture by calling [startAudioCapture](104478#startAudioCapture).
1856
- * @param event `userId: string` The publisher who starts the internal audio capture
1976
+ * @param event
1857
1977
  * @region Audio Management Event
1858
1978
  */
1859
1979
  [EngineEventsTypes.onUserStartAudioCapture]: (event: {
1980
+
1981
+ /**
1982
+ * @brief The publisher who starts the internal audio capture
1983
+ */
1860
1984
  userId: string;
1861
1985
  }) => void;
1862
1986
 
1863
1987
  /**
1864
1988
  * @brief The remote clients in the room will be informed of the state change via this event after the publisher stops audio capture by calling [stopAudioCapture](104478#stopAudioCapture).
1865
- * @param event `userId: string` userId of the publisher who stops the internal audio capture
1989
+ * @param event
1866
1990
  * @region Room Management Event
1867
1991
  */
1868
1992
  [EngineEventsTypes.onUserStopAudioCapture]: (event: {
1993
+
1994
+ /**
1995
+ * @brief The userId of the publisher who stops the internal audio capture.
1996
+ */
1869
1997
  userId: string;
1870
1998
  }) => void;
1871
1999
 
1872
2000
  /**
1873
2001
  * @brief The remote clients in the room will be informed of the state change via this event after the publisher starts video capture by calling [startVideoCapture](104478#startVideoCapture).
1874
- * @param event `userId: string` userId of the publisher who starts the internal video capture
2002
+ * @param event
1875
2003
  * @region Room Management Event
1876
2004
  */
1877
2005
  [EngineEventsTypes.onUserStartVideoCapture]: (event: {
2006
+
2007
+ /**
2008
+ * @brief The userId of the publisher who starts the internal video capture.
2009
+ */
1878
2010
  userId: string;
1879
2011
  }) => void;
1880
2012
 
1881
2013
  /**
1882
2014
  The remote clients in the room will be informed of the state change via this event after the publisher stops video capture by calling [stopVideoCapture](104478#stopVideoCapture).
1883
- * @param event `userId: string` userId of the publisher who stops the internal video capture
2015
+ * @param event
1884
2016
  * @region Room Management Event
1885
2017
  */
1886
2018
  [EngineEventsTypes.onUserStopVideoCapture]: (event: {
2019
+
2020
+ /**
2021
+ * @brief The userId of the publisher who stops the internal video capture.
2022
+ */
1887
2023
  userId: string;
1888
2024
  }) => void;
1889
2025
 
@@ -1896,22 +2032,42 @@ export interface IEngineEvents {
1896
2032
 
1897
2033
  /**
1898
2034
  * @brief Result of the Auto-Subscription
1899
- * @param event <li>`userId: string` userId of the publisher to be subscribed</li><li>`isScreen: boolean` Wether it is a screen-sharing stream</li><li>`state: SubscribeState` </li>
2035
+ * @param event
1900
2036
  * @region Room Management Event
1901
2037
  */
1902
2038
  [EngineEventsTypes.onAutoSubscribeResult]: (event: {
2039
+
2040
+ /**
2041
+ * @brief The userId of the publisher to be subscribed
2042
+ */
1903
2043
  userId: string;
2044
+
2045
+ /**
2046
+ * @brief Wether it is a screen-sharing stream
2047
+ */
1904
2048
  isScreen: boolean;
2049
+
2050
+ /**
2051
+ * @brief Subscription state.
2052
+ */
1905
2053
  state: SubscribeState;
1906
2054
  }) => void;
1907
2055
 
1908
2056
  /**
1909
2057
  * @brief Result of Auto-publishing. You will receive this event if you enable Auto-publish when calling `joinRoom`
1910
- * @param event <li>`isScreen: boolean` Wether it is a screen-sharing stream </li><li>`state: PublishState` </li>
2058
+ * @param event
1911
2059
  * @region Room Management Event
1912
2060
  */
1913
2061
  [EngineEventsTypes.onAutoPublishResult]: (event: {
2062
+
2063
+ /**
2064
+ * @brief Wether it is a screen-sharing stream
2065
+ */
1914
2066
  isScreen: boolean;
2067
+
2068
+ /**
2069
+ * @brief Publish state.
2070
+ */
1915
2071
  state: PublishState;
1916
2072
  }) => void;
1917
2073
 
@@ -1931,11 +2087,15 @@ export interface IEngineEvents {
1931
2087
 
1932
2088
  /**
1933
2089
  * @brief event of error
1934
- * @param event The reason why the current user has been removed from the room.
2090
+ * @param event
1935
2091
  * @region Room Management Event
1936
2092
  */
1937
2093
  [EngineEventsTypes.onError]: (event: {
1938
- errorCode: ErrorCode.DUPLICATE_LOGIN | ErrorCode.RTM_DUPLICATE_LOGIN | ErrorCode.RTM_TOKEN_ERROR | ErrorCode.EXPIRED_TOKEN;
2094
+
2095
+ /**
2096
+ * @brief The reason why the current user has been removed from the room.
2097
+ */
2098
+ errorCode: ErrorCode.DUPLICATE_LOGIN | ErrorCode.RTM_DUPLICATE_LOGIN | ErrorCode.RTM_TOKEN_ERROR | ErrorCode.EXPIRED_TOKEN | ErrorCode.RECONNECT_FAILED;
1939
2099
  }) => void;
1940
2100
 
1941
2101
  /**
@@ -2005,6 +2165,7 @@ export interface IEngineEvents {
2005
2165
 
2006
2166
  /**
2007
2167
  * @brief Callback of the successful rendering of the first video frame of the public stream.
2168
+ * Refer to [startPlayPublicStream](104478#startplaypublicstream) for details about subscribing to a public stream.
2008
2169
  * @param event
2009
2170
  */
2010
2171
  [EngineEventsTypes.onFirstPublicStreamVideoFrameRendered]: (event: PublicStreamAudioFirstFrameDecodedEvent) => void;
@@ -2017,27 +2178,6 @@ export interface IEngineEvents {
2017
2178
  [EngineEventsTypes.onAudioPlaybackDeviceTestVolume]: (volume: number) => void;
2018
2179
  }
2019
2180
 
2020
- /**
2021
- * @brief Cloud proxy informatio
2022
- */
2023
- export interface CloudProxyInfo {
2024
-
2025
- /**
2026
- * @brief The cloud proxy IP of log report
2027
- */
2028
- logProxy: string;
2029
-
2030
- /**
2031
- * @brief The cloud proxy IP of the access
2032
- */
2033
- accessProxy: string;
2034
-
2035
- /**
2036
- * @brief The cloud proxy IP of RTC admin control
2037
- */
2038
- configProxy: string;
2039
- }
2040
-
2041
2181
  /**
2042
2182
  * @list 104477
2043
2183
  * @detail 104478
@@ -2767,6 +2907,13 @@ export interface IRTCEngine extends EnhancedEventEmitter<IEngineEvents> {
2767
2907
  * Before the test ends by itself, you can call this API to stop the recording or playing.
2768
2908
  */
2769
2909
  stopAudioDevicePlayTest(): void;
2910
+
2911
+ /**
2912
+ * @brief Set the sound quality.
2913
+ * @param profile A sound quality option consists of a set of audio profiles and applying each brings a different listening experience. Choose the appropriate audio quality to meet the requirement of the scenario.
2914
+ * @notes We recommend to call this API before the audio capture starts.
2915
+ */
2916
+ setAudioProfile(profile: AudioProfileType): void;
2770
2917
  }
2771
2918
 
2772
2919
  /**
@@ -2878,6 +3025,13 @@ export interface RoomConfig {
2878
3025
  * Call subscribeUserStream, unsubscribe to revise the subscription.
2879
3026
  */
2880
3027
  isAutoSubscribeVideo: boolean;
3028
+
3029
+ /**
3030
+ * @brief Room profile<br>
3031
+ * Choose an appropriate room-profile option to meet the requirement of the scenario for media encoding algorithm, video profiles, and network configurations.
3032
+ * Call [setAudioProfile](104478#setaudioprofile) to choose an audio quality option.
3033
+ */
3034
+ roomProfileType: RoomProfileType;
2881
3035
  }
2882
3036
 
2883
3037
  /**
@@ -2923,12 +3077,12 @@ export interface SubscribeConfig {
2923
3077
  export declare enum MuteState {
2924
3078
 
2925
3079
  /**
2926
- * @brief Enable
3080
+ * @brief Disable
2927
3081
  */
2928
3082
  MUTE_STATE_OFF = 0,
2929
3083
 
2930
3084
  /**
2931
- * @brief Disable
3085
+ * @brief Enable
2932
3086
  */
2933
3087
  MUTE_STATE_ON = 1
2934
3088
  }
@@ -3446,7 +3600,7 @@ export interface LiveTranscodeAudioConfig {
3446
3600
  channels: number;
3447
3601
 
3448
3602
  /**
3449
- * @brief The AAC profile to be set. The value must be `LC`, `HEv1`, ` or 'HEv2`. The default value is `LC`.
3603
+ * @brief The AAC profile to be set. The value must be `LC`, `HEv1`, or `HEv2`. The default value is `LC`.
3450
3604
  */
3451
3605
  AACProfile: "LC" | "HEv1" | "HEv2";
3452
3606
  }
@@ -3720,6 +3874,97 @@ export interface PublicStreamConfig {
3720
3874
  };
3721
3875
  }
3722
3876
 
3877
+ /**
3878
+ * @brief Room profile<br>
3879
+ * While calling [joinRoom](104478#joinroom) choose an appropriate room-profile option to meet the requirement of the scenario for media encoding algorithm, video profiles, and network configurations.
3880
+ * Call [setAudioProfile](104478#setaudioprofile) to choose an audio quality option if it is necessary.
3881
+ */
3882
+ export declare enum RoomProfileType {
3883
+
3884
+ /**
3885
+ * @brief Default mode for video/audio calls, such as voice chat room
3886
+ */
3887
+ communication = 0,
3888
+
3889
+ /**
3890
+ * @brief For 1 v.s. 1 audio and video calls
3891
+ */
3892
+ chat = 5,
3893
+
3894
+ /**
3895
+ * @brief Audio and video chat for 3 or more people
3896
+ */
3897
+ chatRoom = 6,
3898
+
3899
+ /**
3900
+ * @brief For the event of co-hosting during live streaming broadcast
3901
+ */
3902
+ coHost = 9,
3903
+
3904
+ /**
3905
+ * @brief For meeting Apps installed on terminals of meeting rooms
3906
+ */
3907
+ meeting = 16,
3908
+
3909
+ /**
3910
+ * @brief For the online classrooms and lectures that over 9 participants can join the audio and video chat.
3911
+ */
3912
+ classRoom = 18
3913
+ }
3914
+
3915
+ /**
3916
+ * @brief Audio quality
3917
+ * Call [setAudioProfile](104478#setaudioprofile) to choose an audio quality option.
3918
+ */
3919
+ export declare enum AudioProfileType {
3920
+
3921
+ /**
3922
+ * @brief Default sound quality
3923
+ * The sound quality configuration of RoomProfileType{@link #RoomProfileType} set by the server or client side
3924
+ */
3925
+ default = 0,
3926
+
3927
+ /**
3928
+ * @brief Smooth <br>
3929
+ * Sample rate: 16 KHz<br>
3930
+ * Mono-channel<br>
3931
+ * Encoding birrate: 24 Kpbs
3932
+ * Fluent priority, low power consumption, and low traffic consumption, suitable for most game scenarios, such as team-wide voice chat, group-wide voice chat, nation-wide voice chat.
3933
+ */
3934
+ fluent = 1,
3935
+
3936
+ /**
3937
+ * @brief Mono-channel standard <br>
3938
+ * Sample rate: 48 KHz<br>
3939
+ * Encoding bitrate: 48 Kpbs<br>
3940
+ * For scenarios requiring distinct voice, you can choose this mode, which achieves balanced latency, consumption, and network packets. It is suitable for educational Apps and the online Mafia Games.
3941
+ */
3942
+ standard = 2,
3943
+
3944
+ /**
3945
+ * @brief Dual-channel music <br>
3946
+ * Sample rate: 48 KHz<br>
3947
+ * Encoding birrate: 128 Kpbs<br>
3948
+ * This mode provides high-resolution audio at a cost of high latency, consumption, and large network packets. It is suitable for entertainment Apps such as co-hosting and online talent contests. <br>
3949
+ * Not recommended for game Apps.
3950
+ */
3951
+ hd = 3,
3952
+
3953
+ /**
3954
+ * @brief Dual-channel standard <br>
3955
+ * Sample rate: 48 KHz<br>
3956
+ * Encoding birrate: 80 Kpbs
3957
+ */
3958
+ standardStereo = 4,
3959
+
3960
+ /**
3961
+ * @brief Mono-channel music <br>
3962
+ * Sample rate: 48 KHz<br>
3963
+ * Encoding birrate: 128 Kpbs<br>
3964
+ */
3965
+ hdMono = 5
3966
+ }
3967
+
3723
3968
  /**
3724
3969
  * @brief Point-to-point text message
3725
3970
  */
@@ -3793,9 +4038,10 @@ declare const Config: {
3793
4038
  EXPECTED_ADDR: string;
3794
4039
  LOG_SERVER_URL: string;
3795
4040
  CONFIG_REQUEST_DOMAINS: string[];
4041
+ DEVICE_ID: string;
3796
4042
  };
3797
4043
  declare function setParameter(key: keyof typeof Config, value: any): void;
3798
- declare function getParameter(key: keyof typeof Config): string | string[] | never[];
4044
+ declare function getParameter(key: keyof typeof Config): string | string[];
3799
4045
  /**
3800
4046
  * @list 104477
3801
4047
  * @detail 104478
@@ -3807,10 +4053,10 @@ declare function getParameter(key: keyof typeof Config): string | string[] | nev
3807
4053
  export interface IVERTC {
3808
4054
 
3809
4055
  /**
3810
- * @brief Call this API to create an IRTCEngine instance that provides RTC service. <br>
3811
- * Call this API before calling any other APIs within the RTC SDK.<br>
4056
+ * @brief Call this API to create an IRTCEngine instance that provides RTC service.
4057
+ * Call this API before calling any other APIs within the RTC SDK.
3812
4058
  * Calling this API repeatedly will create multiple IRTCEngine instances.
3813
- * @param appId A unique identifier for each application. You can apply appIDs on the RTC console. <br>
4059
+ * @param appId A unique identifier for each application. You can apply appIDs on the RTC console.
3814
4060
  * Instances generated by different AppIDs are independent in RTC service. Users served by one AppID cannot communicate with users served by another AppID.
3815
4061
  * @return Return an `IRTCEngine` instance if you call this API successfully.
3816
4062
  * @notes + Call [destroyEngine](#destroyengine) respectively to destroy each IRTCEngine instance.
@@ -3822,7 +4068,7 @@ export interface IVERTC {
3822
4068
  /**
3823
4069
  * @brief Call this API to destroy the IRTCEngine instance created by [createEngine](#createengine).
3824
4070
  * @param engine By calling this API, this `IRTCEngine` instance and resource related will be wiped from memory. And any interaction with the media server will end.
3825
- * @notes + Before calling this API, ensure all business scenarios related to this `IRTCEngine` instance have ended. <br>
4071
+ * @notes + Before calling this API, ensure all business scenarios related to this `IRTCEngine` instance have ended.
3826
4072
  * + Calling this API will block the main thread until it completes the exiting process. Therefore, do not include this API in a callback. Nor wait in a callback for the execution of this API in the main thread, thus causing a deadlock.
3827
4073
  * @region Engine Management
3828
4074
  */
@@ -3846,12 +4092,20 @@ export interface IVERTC {
3846
4092
  /**
3847
4093
  * @brief Call this API to request for access to video and audio devices.
3848
4094
  * @param options The device type you need
3849
- * <li>`video: boolean` Video devices<li>`audio:boolean` Audio devices</li>
3850
- * @return <li>`video: boolean` Video devices<li>`audio:boolean` Audio devices</li>
4095
+ * @return + `video: boolean` Video devices
4096
+ * + `audio:boolean` Audio devices
3851
4097
  * @region Device Management
3852
4098
  */
3853
4099
  enableDevices: (options?: {
4100
+
4101
+ /**
4102
+ * @brief Video devices
4103
+ */
3854
4104
  video: boolean;
4105
+
4106
+ /**
4107
+ * @brief Audio devices
4108
+ */
3855
4109
  audio: boolean;
3856
4110
  }) => Promise<{
3857
4111
  video: boolean;
@@ -3884,9 +4138,8 @@ export interface IVERTC {
3884
4138
 
3885
4139
  /**
3886
4140
  * @brief Call this API to check whether the browser is supported.
3887
- * @return
3888
- * + `True`: Supported
3889
- * - `False`: Not Supported
4141
+ * @return + `True`: Supported
4142
+ * + `False`: Not Supported
3890
4143
  * @region Engine Management
3891
4144
  */
3892
4145
  isSupported: () => Promise<boolean>;
@@ -3894,7 +4147,7 @@ export interface IVERTC {
3894
4147
  /**
3895
4148
  * @brief Gets the codec type supported by current browser.
3896
4149
  * If you have enabled vp8 codec, you can call the API to check whether the current browser supports vp8 encoding type before entering the room.
3897
- * @return 当前浏览器支持的编解码类型
4150
+ * @return Codec types supported by the current browser
3898
4151
  * @region Engine Management
3899
4152
  */
3900
4153
  getSupportedCodecs: () => Promise<string[]>;