From 6a99d9bf65aa5878cb409945ed2bdbdcb916d047 Mon Sep 17 00:00:00 2001 From: chenqiyang <1406175257@qq.com> Date: 星期五, 02 九月 2022 14:56:40 +0800 Subject: [PATCH] 更新linphone sdk --- Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/mediastreamer2.framework/Headers/msconference.h | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 211 insertions(+), 0 deletions(-) diff --git a/Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/mediastreamer2.framework/Headers/msconference.h b/Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/mediastreamer2.framework/Headers/msconference.h index 6d4e9f3..b9b0a65 100755 --- a/Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/mediastreamer2.framework/Headers/msconference.h +++ b/Shared.IOS.HDLLinphoneSDK/Shared.IOS.HDLLinphoneSDK/Library/mediastreamer2.framework/Headers/msconference.h @@ -31,11 +31,18 @@ * @{ */ +struct _MSAudioConference; +struct _MSAudioEndpoint; + +typedef void (*MSAudioConferenceNotifyActiveTalker)(struct _MSAudioConference *, struct _MSAudioEndpoint *ep); + /** * Structure that holds audio conference parameters **/ struct _MSAudioConferenceParams{ int samplerate; /**< Conference audio sampling rate in Hz: 8000, 16000 ...*/ + MSAudioConferenceNotifyActiveTalker active_talker_callback; + void *user_data; }; /** @@ -100,6 +107,14 @@ **/ MS2_PUBLIC void ms_audio_conference_remove_member(MSAudioConference *obj, MSAudioEndpoint *ep); + +/** + * Process events of the audio conference. + * Calling this method periodically (for example every 50 ms), is necessary + * to receive the active talker notifications to the callback set in the MSAudioConferenceParams. + * @param obj the conference +**/ +MS2_PUBLIC void ms_audio_conference_process_events(MSAudioConference *obj); /** * Mutes or unmutes a participant. * @@ -168,6 +183,21 @@ MS2_PUBLIC MSAudioEndpoint * ms_audio_endpoint_get_from_stream(AudioStream *st, bool_t is_remote); /** + * Associate a user pointer to the endpoint. + * @param ep the endpoint + * @param user_data the user data + */ +MS2_PUBLIC void ms_audio_endpoint_set_user_data(MSAudioEndpoint *ep, void *user_data); + +/** + * Get the user pointer associated to the endpoint. + * @param ep the endpoint + * @return the user data + */ +MS2_PUBLIC void * ms_audio_endpoint_get_user_data(const MSAudioEndpoint *ep); + + +/** * Destroys a MSAudioEndpoint that was created from an AudioStream with ms_audio_endpoint_get_from_stream(). * The AudioStream can then be destroyed if needed. **/ @@ -210,7 +240,188 @@ * @} */ +/** + * @addtogroup mediastreamer2_video_conference + * @{ + */ +/** + * Structure that holds audio conference parameters +**/ +struct _MSVideoConferenceParams{ + int min_switch_interval; + const char *codec_mime_type; +}; + +/** + * Typedef to structure that holds conference parameters +**/ +typedef struct _MSVideoConferenceParams MSVideoConferenceParams; + +/** + * The MSVideoConference is the object representing a video conference. + * + * First, the conference has to be created with ms_video_conference_new(), with parameters supplied. + * Then, participants to the conference can be added with ms_video_conference_add_member(). + * Participants can be removed from the conference with ms_video_conference_remove_member(). + * The conference processing is performed in a new thread run by a MSTicker object, which is owned by the conference. + * When all participants are removed, the MSVideoConference object can then be safely destroyed with ms_video_conference_destroy(). +**/ +typedef struct _MSVideoConference MSVideoConference; + + +/** + * The MSVideoEndpoint represents a participant in the conference. + * It can be constructed from an existing VideoStream object with + * ms_video_endpoint_get_from_stream(). +**/ +typedef struct _MSVideoEndpoint MSVideoEndpoint; + + + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Creates a conference. + * @param params a MSVideoConferenceParams structure, containing conference parameters. + * @returns a MSVideoConference object. +**/ +MS2_PUBLIC MSVideoConference * ms_video_conference_new(MSFactory *factory, const MSVideoConferenceParams *params); + +/** + * Gets conference's current parameters. + * @param obj the conference. + * @returns a read-only pointer to the conference parameters. +**/ +MS2_PUBLIC const MSVideoConferenceParams *ms_video_conference_get_params(MSVideoConference *obj); + +/** + * Adds a participant to the conference. + * @param obj the conference + * @param ep the participant, represented as a MSVideoEndpoint object +**/ +MS2_PUBLIC void ms_video_conference_add_member(MSVideoConference *obj, MSVideoEndpoint *ep); + +/** + * Removes a participant from the conference. + * @param obj the conference + * @param ep the participant, represented as a MSVideoEndpoint object +**/ +MS2_PUBLIC void ms_video_conference_remove_member(MSVideoConference *obj, MSVideoEndpoint *ep); + + +/** + * Switch the focus of the video conf on a given member. + * @param obj the conference + * @param ep the participant, represented as a MSVideoEndpoint object + */ +MS2_PUBLIC void ms_video_conference_set_focus(MSVideoConference *obj, MSVideoEndpoint *ep); + +/** +* Get the video placeholder member, as MSVideoEndpoint. +* @param obj the conference +* @return a MSVideoEndpoint object. +*/ +MS2_PUBLIC MSVideoEndpoint *ms_video_conference_get_video_placeholder_member(const MSVideoConference *obj); + +/** + * Get the list of members, as MSVideoEndpoints. + * @param obj the conference + * @return a list of MSVideoEndpoint objects. + */ +MS2_PUBLIC const bctbx_list_t* ms_video_conference_get_members(const MSVideoConference *obj); + +/** + * Put an audio conference and a video conference in relationship. + * The audio conference will monitor the active speaker, and notify the video conference. + * @param obj the video conference + * @param obj the audio conference + */ +MS2_PUBLIC void ms_video_conference_set_audio_conference(MSVideoConference *obj, MSAudioConference *audioconf); + +/** + * Returns the size (ie the number of participants) of a conference. + * @param obj the conference +**/ +MS2_PUBLIC int ms_video_conference_get_size(MSVideoConference *obj); + +/** + * Destroys a conference. + * @param obj the conference + * All participants must have been removed before destroying the conference. +**/ +MS2_PUBLIC void ms_video_conference_destroy(MSVideoConference *obj); + +/** + * Creates an MSVideoEndpoint from an existing VideoStream. + * + * In order to create graphs for video processing of each participant, the VideoStream object is used, because + * this object already handles all the processing for encoding, decoding, etc... + * + * The construction of the participants depends whether it is a remote participant, that is somebody in the network + * sending and receiving video through RTP, or a local participant, that is somebody using the local camera to capture + * and local screen to display video. + * + * To create a remote participant, first create and start a VideoStream for the participant with video_stream_new() and + * video_stream_start() with NULL MSWebCam argument. + * Then, create a MSVideoEndpoint representing this participant by calling ms_video_endpoint_get_from_stream() with + * is_remote=TRUE. + * + * To create a local participant, first create and start a VideoStream with video_stream_new() and video_stream_start(), + * with the correct MSWebCam to use. + * Arguments controlling RTP should be filled with placeholders value and will not be used for conferencing. + * Then, create a MSVideoEndpoint representing this local participant by calling ms_video_endpoint_get_from_stream() + * with the video stream and is_remote=FALSE.<br> + * For example:<br> + * <PRE> + * VideoStream *st=video_stream_new(65000,65001,FALSE); + * video_stream_start(st, conf->local_dummy_profile, + * "127.0.0.1", + * 65000, + * "127.0.0.1", + * 65001, + * 0, + * 40, + * webcam + * ); + * MSVideoEndpoint *local_endpoint=ms_video_endpoint_get_from_stream(st,FALSE); + * </PRE> +**/ +MS2_PUBLIC MSVideoEndpoint * ms_video_endpoint_get_from_stream(VideoStream *st, bool_t is_remote); + + +/** + * Associate a user pointer to the endpoint. + * @param ep the endpoint + * @param user_data the user data + */ +MS2_PUBLIC void ms_video_endpoint_set_user_data(MSVideoEndpoint *ep, void *user_data); + +/** + * Get the user pointer associated to the endpoint. + * @param ep the endpoint + * @return the user data + */ +MS2_PUBLIC void * ms_video_endpoint_get_user_data(const MSVideoEndpoint *ep); + + +/** + * Destroys a MSVideoEndpoint that was created from a VideoStream with ms_video_endpoint_get_from_stream(). + * The VideoStream can then be destroyed if needed. +**/ +MS2_PUBLIC void ms_video_endpoint_release_from_stream(MSVideoEndpoint *obj); + + +#ifdef __cplusplus +} +#endif + +/** + * @} + */ #endif -- Gitblit v1.8.0