You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

2683 lines
87 KiB

/************************************************************************
Copyright (c) 2005-2011 by Juphoon System Software, Inc.
All rights reserved.
This software is confidential and proprietary to Juphoon System,
Inc. No part of this software may be reproduced, stored, transmitted,
disclosed or used in any form or by any means other than as expressly
provided by the written license agreement between Juphoon and its
licensee.
THIS SOFTWARE IS PROVIDED BY JUPHOON "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL JUPHOON BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Juphoon System Software, Inc.
Email: support@juphoon.com
Web: http://www.juphoon.com
************************************************************************/
/*************************************************
File name : mtc_conf.h
Module : rich session enabler
Author : bob.liu
Created on : 2015-06-02
Description :
Data structure and function declare required by mtc conference
Modify History:
1. Date: Author: Modification:
*************************************************/
#ifndef _MTC_CONF_H__
#define _MTC_CONF_H__
#include "mtc_def.h"
#include "mtc_conf_db.h"
#include "mtc_conf2.h"
/**
* @file
* @brief MTC Conference Interfaces
*
* This file includes session and conference interface function.
*/
#ifdef __cplusplus
extern "C" {
#endif
/** @brief MTC video pattern mode */
typedef enum EN_MTC_VIDEO_PATTERN_TYPE
{
EN_MTC_VIDEO_PATTERN_SOLO = 0,
EN_MTC_VIDEO_PATTERN_TILE = 2,
EN_MTC_VIDEO_PATTERN_CINEMA = 3,
EN_MTC_VIDEO_PATTERN_PIP = 4
} EN_MTC_VIDEO_PATTERN_TYPE;
/** @brief MTC video pattern mode */
typedef enum EN_MTC_CONF_ERROR_TYPE
{
EN_MTC_CONF_JOIN_ERROR_LEAVING = 1000,
} EN_MTC_CONF_ERROR_TYPE;
/** @brief Event type. */
typedef enum EN_MTC_CONF_EVENT_TYPE
{
EN_MTC_CONF_EVENT_UNKNOWN, /**< @brief Unknown error. */
EN_MTC_CONF_EVENT_START_MEDIA, /**< @brief Start media error. */
EN_MTC_CONF_EVENT_STOP_MEDIA, /**< @brief Stop media error. */
EN_MTC_CONF_EVENT_START_FORWARD, /**< @brief Start forward error. */
EN_MTC_CONF_EVENT_STOP_FORWARD, /**< @brief Stop forward error. */
EN_MTC_CONF_EVENT_SET_TITLE, /**< @brief Change title error. */
EN_MTC_CONF_EVENT_SET_SCREEN, /**< @brief Change shared screen error. */
EN_MTC_CONF_EVENT_INVITE,
EN_MTC_CONF_EVENT_KICKOUT,
EN_MTC_CONF_EVENT_LEAVE,
EN_MTC_CONF_EVENT_JOIN,
EN_MTC_CONF_EVENT_CHAT
} EN_MTC_CONF_EVENT_TYPE;
/** @brief Reason type for error. */
typedef enum EN_MTC_CONF_REASON_TYPE
{
EN_MTC_CONF_REASON_UNKNOWN = 2000, /**< @brief Unknown reason. */
EN_MTC_CONF_REASON_LEAVED, /**< @brief Leaved. */
EN_MTC_CONF_REASON_KICKED, /**< @brief Kicked off. */
EN_MTC_CONF_REASON_OFFLINE, /**< @brief Peer is offline. */
EN_MTC_CONF_REASON_DECLINE, /**< @brief Peer declined. */
EN_MTC_CONF_REASON_OVER, /**< @brief Conference over. */
EN_MTC_CONF_REASON_GENERAL_ERROR = 2100, /**< @brief General error. */
EN_MTC_CONF_REASON_INVALID_CONFERENCE, /**< @brief Invalid conference. */
EN_MTC_CONF_REASON_INVALID_PARTICIPANT, /**< @brief Invalid participant. */
EN_MTC_CONF_REASON_TIMEOUT, /**< @brief Timeout. */
EN_MTC_CONF_REASON_INVALID_PASSWORD, /**< @brief Invalid password. */
EN_MTC_CONF_REASON_NO_PERMISSION, /**< @brief No permission. */
EN_MTC_CONF_REASON_MEMBER_FULL, /**< @brief Member full. */
EN_MTC_CONF_REASON_MEDIA_ENGINE, /**< @brief Media engine. */
EN_MTC_CONF_REASON_INVALID_PARAM, /**< @brief Invalid parameter. */
EN_MTC_CONF_REASON_INVALID_CONFERENCE_NUMBER, /**< @brief Invalid conference number. */
EN_MTC_CONF_REASON_INVALID_DOMAIN, /**< @brief Invalid domain. */
EN_MTC_CONF_REASON_MISMATCH, /**< @brief Conference number and ID mismatch. */
EN_MTC_CONF_REASON_PARAM_ERROR = 2200, /**< @brief Parameter error. */
EN_MTC_CONF_REASON_NO_DOMAIN_ID, /**< @brief No domain ID. */
EN_MTC_CONF_REASON_NO_APP_ID, /**< @brief No app ID. */
EN_MTC_CONF_REASON_NO_CONFERENCE_ID, /**< @brief No conference ID. */
EN_MTC_CONF_REASON_NO_CONFERENCE_NUMBER, /**< @brief No conference number. */
EN_MTC_CONF_REASON_NO_PASSWORD, /**< @brief No password. */
EN_MTC_CONF_REASON_NO_REALY_ID, /**< @brief No relay ID. */
EN_MTC_CONF_REASON_NO_ROOM_ID, /**< @brief No room ID. */
EN_MTC_CONF_REASON_NO_CONFERENCE_SID, /**< @brief No conference service ID. */
EN_MTC_CONF_REASON_NO_ACCOUNT_ID, /**< @brief No account ID. */
EN_MTC_CONF_REASON_NO_SESSION_ID, /**< @brief No session ID. */
EN_MTC_CONF_REASON_NO_HOST, /**< @brief No host. */
EN_MTC_CONF_REASON_NO_START_TIME, /**< @brief No start time. */
EN_MTC_CONF_REASON_NO_END_TIME, /**< @brief No end time. */
EN_MTC_CONF_REASON_NO_DURATION, /**< @brief No duration. */
EN_MTC_CONF_REASON_NO_RESERVATION_FLAG, /**< @brief No reservation flag. */
EN_MTC_CONF_REASON_NO_CAPACITY, /**< @brief No capacity. */
EN_MTC_CONF_REASON_NO_VIDEO_FLAG, /**< @brief No video flag. */
EN_MTC_CONF_REASON_NO_RESERVATION_TIME, /**< @brief No reservation time. */
EN_MTC_CONF_REASON_NO_RESERVATION_START_TIME, /**< @brief No reservation start time. */
EN_MTC_CONF_REASON_NO_MEDIA_TYPE, /**< @brief No media type. */
EN_MTC_CONF_REASON_NO_TERMINATION_REASON, /**< @brief No termination reason. */
EN_MTC_CONF_REASON_NO_PICTURE_SIZE, /**< @brief No picture size. */
EN_MTC_CONF_REASON_NO_PICTURE_RATIO, /**< @brief No picture ratio. */
EN_MTC_CONF_REASON_NO_WEBCASTING_URI, /**< @brief No webcasting URI. */
EN_MTC_CONF_REASON_NO_COMPOSITE_MODE, /**< @brief No composite mode. */
EN_MTC_CONF_REASON_NO_COMPOSITE_PICTURE_SIZE, /**< @brief No composite picture size. */
EN_MTC_CONF_REASON_NO_ACCOUNT_NAME, /**< @brief No account name. */
EN_MTC_CONF_REASON_NO_IVR_ROLE, /**< @brief No IVR role. */
EN_MTC_CONF_REASON_NO_RECORDER_ROLE, /**< @brief No recorder role. */
EN_MTC_CONF_REASON_EXCEED_LIMIT_ERROR = 2300, /**< @brief Exceed limit error. */
EN_MTC_CONF_REASON_EXCEED_RESOLUTION, /**< @brief Exceed resolution limit. */
EN_MTC_CONF_REASON_EXCEED_PARTICIPANT_COUNT, /**< @brief Exceed participants count. */
EN_MTC_CONF_REASON_EXCEED_ROOM_COUNT, /**< @brief Exceed room count. */
EN_MTC_CONF_REASON_EXCEED_TOTAL_PARTICIPANT_COUNT, /**< @brief Exceed total participants count. */
EN_MTC_CONF_REASON_EXCEED_DOMAIN_RESOLUTION, /**< @brief Exceed resolution limit of domain. */
EN_MTC_CONF_REASON_EXCEED_DOMAIN_PARTICIPANT_COUNT, /**< @brief Exceed participants count of domain. */
EN_MTC_CONF_REASON_EXCEED_DOMAIN_ROOM_COUNT, /**< @brief Exceed room count of domain. */
EN_MTC_CONF_REASON_EXCEED_DOMAIN_TOTAL_PARTICIPANT_COUNT, /**< @brief Exceed total participants count of domain. */
EN_MTC_CONF_REASON_EXCEED_APP_RESOLUTION, /**< @brief Exceed resolution limit of app. */
EN_MTC_CONF_REASON_EXCEED_APP_PARTICIPANT_COUNT, /**< @brief Exceed participants count of app. */
EN_MTC_CONF_REASON_EXCEED_APP_ROOM_COUNT, /**< @brief Exceed room count of app. */
EN_MTC_CONF_REASON_EXCEED_APP_TOTAL_PARTICIPANT_COUNT, /**< @brief Exceed total participants count of app. */
EN_MTC_CONF_REASON_SERVER_ERROR = 2400, /**< @brief Server error. */
EN_MTC_CONF_REASON_SERVER_NO_RESOURCE, /**< @brief No resource. */
EN_MTC_CONF_REASON_SERVER_NO_RESOURCE_JSMS, /**< @brief No candidate server. */
EN_MTC_CONF_REASON_SERVER_NO_RESOURCE_RELAY, /**< @brief No candidate server. */
EN_MTC_CONF_REASON_SERVER_NO_RESOURCE_JMDS, /**< @brief No candidate server. */
EN_MTC_CONF_REASON_SERVER_ALLOC_CONTENT, /**< @brief Allocate content error. */
EN_MTC_CONF_REASON_SERVER_NO_ENGINED, /**< @brief No conference engine. */
EN_MTC_CONF_REASON_JSMCONF_ERROR = 2500, /**< @brief JSMConf server error. */
EN_MTC_CONF_REASON_JSMCONF_PARAM_PARSE, /**< @brief Param parse error. */
EN_MTC_CONF_REASON_JSMCONF_OVER_LIMIT, /**< @brief Member over limit. */
EN_MTC_CONF_REASON_JSMCONF_SAVE_DB, /**< @brief Save db error. */
EN_MTC_CONF_REASON_JSMCONF_UPDATE_DB, /**< @brief Update db error. */
EN_MTC_CONF_REASON_JSMCONF_LOCK, /**< @brief Conference locked. */
EN_MTC_CONF_REASON_JSMCONF_PASSWORD_ERROR, /**< @brief Password error. */
EN_MTC_CONF_REASON_JSMCONF_CANCELED, /**< @brief Conference already canceled. */
EN_MTC_CONF_REASON_JSMCONF_NOT_BELONG, /**< @brief Not belong to conference. */
EN_MTC_CONF_REASON_JSMCONF_DENY_BEFORE_CHAIRMAN, /**< @brief Not allow before chairman. */
EN_MTC_CONF_REASON_JSMCONF_DENY_CREATER, /**< @brief Not allow except creater. */
EN_MTC_CONF_REASON_JSMCONF_DENY_CHAIRMAN, /**< @brief Not allow except chairman. */
EN_MTC_CONF_REASON_JSMCONF_NOT_IN_CONF, /**< @brief Member not in conference. */
EN_MTC_CONF_REASON_JSMCONF_UUID_NOT_FOUND, /**< @brief Uuid not found. */
EN_MTC_CONF_REASON_JSMCONF_NOT_IN_RESERVE, /**< @brief Not in reserve. */
EN_MTC_CONF_REASON_JSMCONF_ROOMID_NOT_FOUND, /**< @brief Roomid not found. */
EN_MTC_CONF_REASON_JSMCONF_SYSTEM_ERROR, /**< @brief System error. */
EN_MTC_CONF_REASON_JSMCONF_CONFID_NOT_FOUND, /**< @brief Confid not found. */
EN_MTC_CONF_REASON_JSMCONF_CONFID_ALREADY_USED,/**< @brief Confid already in use. */
EN_MTC_CONF_REASON_JSMCONF_RESERVE_TIME_INVALID,/**< @brief Reserve time invalid. */
EN_MTC_CONF_REASON_JSMCONF_GROUP_CONF_EXIST,/**< @brief Group conference exist. */
EN_MTC_CONF_REASON_JSMCONF_ACTOR_ALONE,/**< @brief Only one actor in the conference. */
EN_MTC_CONF_REASON_JSMCONF_NO_CONF_IN_GROUP,/**< @brief No conference in group. */
EN_MTC_CONF_REASON_JSMCONF_SUB_ID_REPEAT,/**< @brief sub id repeat. */
} EN_MTC_CONF_REASON_TYPE;
/** @brief MTC conf dtmf type */
typedef enum EN_MTC_CONF_DTMF_TYPE
{
EN_MTC_CONF_DTMF_0, /**< @brief DTMF signal 0. */
EN_MTC_CONF_DTMF_1, /**< @brief DTMF signal 1. */
EN_MTC_CONF_DTMF_2, /**< @brief DTMF signal 2. */
EN_MTC_CONF_DTMF_3, /**< @brief DTMF signal 3. */
EN_MTC_CONF_DTMF_4, /**< @brief DTMF signal 4. */
EN_MTC_CONF_DTMF_5, /**< @brief DTMF signal 5. */
EN_MTC_CONF_DTMF_6, /**< @brief DTMF signal 6. */
EN_MTC_CONF_DTMF_7, /**< @brief DTMF signal 7. */
EN_MTC_CONF_DTMF_8, /**< @brief DTMF signal 8. */
EN_MTC_CONF_DTMF_9, /**< @brief DTMF signal 9. */
EN_MTC_CONF_DTMF_STAR, /**< @brief DTMF signal *. */
EN_MTC_CONF_DTMF_POUND, /**< @brief DTMF signal #. */
EN_MTC_CONF_DTMF_A, /**< @brief DTMF signal A. */
EN_MTC_CONF_DTMF_B, /**< @brief DTMF signal B. */
EN_MTC_CONF_DTMF_C, /**< @brief DTMF signal C. */
EN_MTC_CONF_DTMF_D, /**< @brief DTMF signal D. */
} EN_MTC_CONF_DTMF_TYPE;
/** @brief Minimal value of region ID */
#define MTC_CONF_REGION_ID_MIN 10
/** @brief Maximal value of region ID */
#define MTC_CONF_REGION_ID_MAX 99
/** @brief Region ID for default */
#define MTC_CONF_REGION_ID_DEFAULT 0
/**
* @defgroup MtcConfState MTC participant status type of conference.
* @{
*/
/** @brief Invalid state value. */
#define MTC_CONF_STATE_INVALID 0x00
/** @brief Conference server forwards the video. */
#define MTC_CONF_STATE_FWD_VIDEO 0x01
/** @brief Conference server forwards the audio. */
#define MTC_CONF_STATE_FWD_AUDIO 0x02
/** @brief The participant upload the video to server. */
#define MTC_CONF_STATE_VIDEO 0x04
/** @brief The participant upload the audio to server. */
#define MTC_CONF_STATE_AUDIO 0x08
/** @brief The cdn server upload state. */
#define MTC_CONF_STATE_CDN_PUSH 0x10
/** @brief The IVR state of ConfDelivery */
#define MTC_CONF_STATE_DELIVERY_IVR 0x100
/** @brief The REC state of ConfDelivery */
#define MTC_CONF_STATE_DELIVERY_REC 0x200
/** @brief The sip alerting state of ConfDelivery */
#define MTC_CONF_STATE_DELIVERY_SIP_ALERTING 0x400
/** @brief The sip talking state of ConfDelivery */
#define MTC_CONF_STATE_DELIVERY_SIP_TALKING 0x800
/** @brief The valid service mask, keep for special purpose */
#define MTC_CONF_STATE_SERVICE_MASK 0x0000FFFF
/** @} */
/** @brief The valid delivery state mask */
#define MTC_CONF_STATE_DELIVERY_MASK \
( MTC_CONF_STATE_DELIVERY_IVR \
| MTC_CONF_STATE_DELIVERY_REC)
/** @} */
/**
* @defgroup MtcConfRole MTC participant role type of conference.
* @{
*/
/** @brief only can receive */
#define MTC_CONF_ROLE_VIEWER 0x01
/** @brief only can.send*/
#define MTC_CONF_ROLE_SENDER 0x02
/** @brief can receive and send. */
#define MTC_CONF_ROLE_ACTOR (MTC_CONF_ROLE_VIEWER \
| MTC_CONF_ROLE_SENDER)
/** @brief his event will be broadcast */
#define MTC_CONF_ROLE_PLAYER 0x04
/** @brief normal participant, this is default roles */
#define MTC_CONF_ROLE_PARTP (MTC_CONF_ROLE_VIEWER \
| MTC_CONF_ROLE_SENDER \
| MTC_CONF_ROLE_PLAYER)
/** @brief the autogen by Conference and only one participant */
#define MTC_CONF_ROLE_OWNER 0x08
/** @brief The role of ConfDelivery for IVR/REC/CDN */
#define MTC_CONF_ROLE_DELIVERY_IRC 0x100
/** @brief The role of ConfDelivery for WebRTC */
#define MTC_CONF_ROLE_DELIVERY_WEBRTC 0x200
/** @brief The role of ConfDelivery for PSTN */
#define MTC_CONF_ROLE_DELIVERY_PSTN 0x400
/** @brief The role of ConfDelivery for MCU */
#define MTC_CONF_ROLE_DELIVERY_MCU 0x800
/** @brief The valid service mask, keep for special purpose */
#define MTC_CONF_ROLE_SERVICE_MASK 0x0000FFFF
/** @} */
/** @brief The valid delivery role mask */
#define MTC_CONF_ROLE_DELIVERY_MASK \
( MTC_CONF_ROLE_DELIVERY_IRC \
| MTC_CONF_ROLE_DELIVERY_WEBRTC \
| MTC_CONF_ROLE_DELIVERY_PSTN)
/**
* @defgroup MtcConfMedia MTC media option of conference.
* @{
*/
/** @brief Request for audio. */
#define MTC_CONF_MEDIA_AUDIO 0x01
/** @brief Request for video. */
#define MTC_CONF_MEDIA_VIDEO 0x02
/** @brief Request for both audio and video */
#define MTC_CONF_MEDIA_ALL 0x03
/** @} */
/**
* @defgroup MtcConfRenderState MTC render state of conference.
* @{
*/
/** @brief normal render state. */
#define MTC_CONF_RENDER_STATE_NORMAL 0x01
/** @brief stop by network blocked. */
#define MTC_CONF_RENDER_STATE_BLOCKED 0x02
/** @brief stop by user or server */
#define MTC_CONF_RENDER_STATE_PAUSED 0x03
/** @} */
/**
* @defgroup MtcConfMode MTC mode of conference.
* @{
*/
/** @brief all actors subscribe videos freely. */
#define MTC_CONF_MODE_VIEW_FREEDOM 0x01
/** @brief all actors subscribe the same videos. */
#define MTC_CONF_MODE_VIEW_UNIFORMITY 0x02
/** @} */
/**
* @defgroup MtcConfQualityGrade MTC quality grade of conference's video.
* @{
*/
/** @brief video quality is junior. */
#define MTC_CONF_QUALITY_GRADE_JUNIOR 0x0
/** @brief video quality is middle. */
#define MTC_CONF_QUALITY_GRADE_MIDDLE 0x01
/** @brief video quality is high. */
#define MTC_CONF_QUALITY_GRADE_HIGH 0x02
/** @} */
/**
* @defgroup MtcConfPs MTC conference picture size.
* @{
*/
/** @brief Request not to transmit video. */
#define MTC_CONF_PS_OFF 0
/** @brief Request to transmit video with minial picture size. */
#define MTC_CONF_PS_MIN 0x100
/** @brief Request to transmit video with small picture size. */
#define MTC_CONF_PS_SMALL 0x200
/** @brief Request to transmit video with large picture size. */
#define MTC_CONF_PS_LARGE 0x300
/** @brief Request to transmit video with maxium picture size. */
#define MTC_CONF_PS_MAX 0x400
/** @} */
/**
* @defgroup MtcConfCompositeMode MTC conference composite mode.
* @{
*/
/** @brief Merge screen content without any attendee's camera content. */
#define MTC_CONF_COMPOSITE_MODE_SCREEN 0x01
/** @brief Merge screen content with all attendees' camera content. */
#define MTC_CONF_COMPOSITE_MODE_PLATFORM 0x02
/** @brief Merge screen content with the speaker's camera content. */
#define MTC_CONF_COMPOSITE_MODE_SPEAKER 0x03
/** @brief Merge use layout callback */
#define MTC_CONF_COMPOSITE_MODE_LAYOUT 0x04
/** @brief Merge use intellegence layout */
#define MTC_CONF_COMPOSITE_MODE_INTELLEGENCE 0x05
/** @brief only screen sharing content */
#define MTC_CONF_COMPOSITE_MODE_SCREENSHARING 0x06
/** @} */
/**
* @defgroup MtcConfCompositeMode_i MTC conference composite mode.
* @{
*/
/** @brief Free layout without any attendee's camera content. */
#define MTC_CONF_COMPOSITE_MODE_FREE_LAYOUT_I 0x01
/** @brief Rect layout with all attendees' camera content. */
#define MTC_CONF_COMPOSITE_MODE_RECT_LAYOUT_I 0x02
/** @brief Big small zoom 2 times with all attendees' camera content. */
#define MTC_CONF_COMPOSITE_MODE_BIG_SMALLX2_I 0x03
/** @brief Big small zoom 3 times with all attendees' camera content. */
#define MTC_CONF_COMPOSITE_MODE_BIG_SMALLX3_I 0x04
/** @brief Big small zoom 4 times with all attendees' camera content. */
#define MTC_CONF_COMPOSITE_MODE_BIG_SMALLX4_I 0x05
/** @brief Big small zoom 5 times with all attendees' camera content. */
#define MTC_CONF_COMPOSITE_MODE_BIG_SMALLX5_I 0x06
/** @brief Big small zoom 6 times with all attendees' camera content. */
#define MTC_CONF_COMPOSITE_MODE_BIG_SMALLX6_I 0x07
/** @brief Big small zoom 7 times with all attendees' camera content. */
#define MTC_CONF_COMPOSITE_MODE_BIG_SMALLX7_I 0x08
/** @brief Big small zoom 8 times with all attendees' camera content. */
#define MTC_CONF_COMPOSITE_MODE_BIG_SMALLX8_I 0x09
/** @brief Big small zoom 9 times with all attendees' camera content. */
#define MTC_CONF_COMPOSITE_MODE_BIG_SMALLX9_I 0x0a
/** @brief Big small zoom 10 times with all attendees' camera content. */
#define MTC_CONF_COMPOSITE_MODE_BIG_SMALLX10_I 0x0b
/** @brief Big small like Platform with all attendees' camera content. */
#define MTC_CONF_COMPOSITE_MODE_BIG_SMALL_TOP_I 0x0c
/** @brief Big small like Platform with all attendees' camera content. */
#define MTC_CONF_COMPOSITE_MODE_BIG_SMALL_BOTTOM_I 0x0d
/** @brief Divide layout like Platform with all attendees' camera content. */
#define MTC_CONF_COMPOSITE_MODE_DIVIDE_LAYOUT_I 0x0e
/** @brief Divide layout like Platform with all attendees' camera content with no angle. */
#define MTC_CONF_COMPOSITE_MODE_DIVIDE_LAYOUT_NOANGLE_I 0x0f
/** @brief Merge screen content without any attendee's camera content. */
#define MTC_CONF_COMPOSITE_SCREENSHARE_I 0x01
/** @brief Merge screen content with all attendees' camera content. */
#define MTC_CONF_COMPOSITE_MODE_PLATFORM_I 0x02
/** @brief Merge screen content with the speaker's camera content. */
#define MTC_CONF_COMPOSITE_MODE_PLATFORM_COVER_I 0x03
/** @brief Merge use layout callback */
#define MTC_CONF_COMPOSITE_MODE_SPEAKER_I 0x04
/** @brief Merge speaker's camera content without screenshare callback */
#define MTC_CONF_COMPOSITE_MODE_WITHOUT_SCREENSHARE_I 0x05
/** @} */
/**
* @defgroup MtcConfCanvasMode MTC conference canvas mode.
* @{
*/
/** @brief Landscape canvas. */
#define MTC_CONF_CANVAS_MODE_LANDSCAPE 0x00
/** @brief Portrait canvas. */
#define MTC_CONF_CANVAS_MODE_PORTRAIT 0x01
/** @} */
/**
* @defgroup MtcConfKey MTC notification key of conference event.
* @{
*/
/**
* @brief A key whose value is a number object in json format reflecting
* error type @ref EN_MTC_CONF_EVENT_TYPE.
*/
#define MtcConfEventKey "MtcConfEventKey"
/**
* @brief A key whose value is a number object in json format reflecting
* reason value @ref EN_MTC_CONF_REASON_TYPE.
*/
#define MtcConfReasonKey "MtcConfReasonKey"
/**
* @brief A key whose value is a string object in json format reflecting
* the initiator of conf invite.
*/
#define MtcConfInitiatorKey "MtcConfInitiatorKey"
/**
* @brief A key whose value is a string object in json format reflecting
* detail failed reason.
*/
#define MtcConfDetailReasonKey "MtcConfDetailReasonKey"
/**
* @brief A key whose value is a string object in json format reflecting
* decline reason of invite.
*/
#define MtcConfDeclineReasonKey "MtcConfDeclineReasonKey"
/**
* @brief A key whose value is a string object in json format reflecting
* conference resource.
* @deprecated using MtcConfNumberKey
*/
#define MtcConfUriKey "MtcConfUriKey"
/**
* @brief A key whose value is a number object in json format reflecting
* conference number.
*/
#define MtcConfNumberKey "MtcConfNumberKey"
/**
* @brief A key whose value is a number object in json format reflecting
* ID of the conference has joined to.
*/
#define MtcConfIdKey "MtcConfIdKey"
/**
* @brief A key whose value is a string object in json format reflecting
* ID of the conference participant.
*/
#define MtcConfUserUriKey "MtcConfUserUriKey"
/**
* @brief A key whose value is a number object in json format reflecting
* view mode of the conference. @ref MtcConfMode
*/
#define MtcConfViewModeKey "MtcConfViewModeKey"
/**
* @brief A key whose value is a string object in json format reflecting
* Render tag of the conference participant.
*/
#define MtcConfRenderTagKey "MtcConfRenderTagKey"
/**
* @brief A key whose value is a string object in json format reflecting
* title of conference.
*/
#define MtcConfTitleKey "MtcConfTitleKey"
/**
* @brief A key whose value is a string object in json format reflecting
* shared custom data of conference.
*/
#define MtcConfDataKey "MtcConfDataKey"
/**
* @brief A key whose value is a string object in json format reflecting
* ID of the conference participant who is using shared screen.
*/
#define MtcConfScreenUserKey "MtcConfScreenUserKey"
/**
* @brief A key whose value is a boolean object in json format reflecting
* if the conference is video conference.
*/
#define MtcConfIsVideoKey "MtcConfIsVideoKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the participant status @ref MtcConfState.
*/
#define MtcConfStateKey "MtcConfStateKey"
/**
* @brief A key whose value is a number object in json format used by
* mark bits of participant status mask @ref MtcConfState.
*/
#define MtcConfStateMaskKey "MtcConfStateMaskKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the participant role @ref MtcConfRole.
*/
#define MtcConfRoleKey "MtcConfRoleKey"
/**
* @brief A key whose value is a number object in json format used by
* mark bits of participant status @ref MtcConfRole.
*/
#define MtcConfRoleMaskKey "MtcConfRoleMaskKey"
/**
* @brief A key whose value is a string object in json format reflecting
* the participant's display name.
*/
#define MtcConfDisplayNameKey "MtcConfDisplayNameKey"
/**
* @brief A key whose value is a string object in json format reflecting
* the text message
*/
#define MtcConfTextKey "MtcConfTextKey"
/**
* @brief A key whose value is a string object in json format reflecting
* the type of data.
*/
#define MtcConfDataTypeKey "MtcConfDataTypeKey"
/**
* @brief A key whose value is a string object in json format reflecting
* the content of data.
*/
#define MtcConfDataContentKey "MtcConfDataContentKey"
/**
* @brief A key whose value is an array object in json format reflecting
* the participant list. Each array element is an object contains
* @ref MtcConfUserUriKey, @ref MtcConfStateKey.
*/
#define MtcConfPartpLstKey "MtcConfPartpLstKey"
/**
* @brief A key whose value is an array object in json format reflecting
* the candidate list. Each array element is an object contains
* @ref MtcConfUserUriKey.
*/
#define MtcConfCandLstKey "MtcConfCandLstKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the picture size value @ref MtcConfPs.
*/
#define MtcConfPictureSizeKey "MtcConfPictureSizeKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the frame rate value from 1 to 30.
*/
#define MtcConfFrameRateKey "MtcConfFrameRateKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the picture height value.
*/
#define MtcConfPictureHeightKey "MtcConfPictureHeightKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the picture width value.
*/
#define MtcConfPictureWidthKey "MtcConfPictureWidthKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the media option type @ref MtcConfMedia.
*/
#define MtcConfMediaOptionKey "MtcConfMediaOptionKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the volume energy. Valid value from 0 to 100.
*/
#define MtcConfVolumeKey "MtcConfVolumeKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the network status. Valid value from 0 to 5.
*/
#define MtcConfNetworkStatusKey "MtcConfNetworkStatusKey"
/**
* @brief A key whose value is a boolean object in json format reflecting
* the network status indicates upstream network status, otherwise indicates
* downstream network status.
*/
#define MtcConfIsUpstreamKey "MtcConfIsUpstreamKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the video render state type, @ref MtcConfRenderState.
*/
#define MtcConfVideoStateKey "MtcConfVideoStateKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the shared screen render state type, @ref MtcConfRenderState.
*/
#define MtcConfScreenStateKey "MtcConfScreenStateKey"
/**
* @brief A key whose value is an array object in json format reflecting
* the participant volume energy list. Each array element is an object contains
* @ref MtcConfUserUriKey, @ref MtcConfVolumeKey.
*/
#define MtcConfPartpVolumeLstKey "MtcConfPartpVolumeLstKey"
/**
* @brief A key whose value is an array object in json format reflecting
* the participant network status list. Each array element is an object contains
* @ref MtcConfUserUriKey, @ref MtcConfNetworkStatusKey.
*/
#define MtcConfPartpNetworkStatusListKey "MtcConfPartpNetworkStatusListKey"
/**
* @brief A key whose value is an array object in json format reflecting
* the participant video render state list. Each array element is an object contains
* @ref MtcConfUserUriKey, @ref MtcConfVideoStateKey.
*/
#define MtcConfPartpVideoStateLstKey "MtcConfPartpVideoStateLstKey"
/**
* @brief A key whose value is an array object in json format reflecting
* the participant video render tag list. Each array element is an object contains
* @ref MtcConfUserUriKey, @ref MtcConfRenderTagKey.
*/
#define MtcConfPartpVideoTagLstKey "MtcConfPartpVideoTagLstKey"
/**
* @brief A key whose value is an array object in JSON format reflecting
* the rectangle position and size. Each item is relative value of background.
* The coordinate of the upper left corner of background is [0.0, 0.0].
* The coordinate of the bottom right corner of background is [1.0, 1.0].
* The 1st item is the X coordinate of the upper left corner.
* The 2nd item is the Y coordinate of the upper left corner.
* The 3rd item is the width. The 4th item is the height.
*/
#define MtcConfRectangleKey "MtcConfRectangleKey"
/**
* @brief A key whose value is a number object in JSON format reflecting
* the ID of region which between 10 to 99.
*/
#define MtcRegionIdKey "MtcRegionIdKey"
/**
* @brief A key whose value is a string object in JSON format reflecting
* the name of region.
*/
#define MtcRegionNameKey "MtcRegionNameKey"
/**
* @brief A key whose value is a string object in JSON format reflecting
* the description of region.
*/
#define MtcRegionDescKey "MtcRegionDescKey"
/**
* @brief A key whose value is object in JSON format contains
* @ref MtcRegionIdKey, @ref MtcRegionNameKey, @ref MtcRegionDescKey.
*/
#define MtcConfDefaultRegionKey "MtcConfDefaultRegionKey"
/**
* @brief A key whose value is array in JSON format. Each item is object contains
* @ref MtcRegionIdKey, @ref MtcRegionNameKey, @ref MtcRegionDescKey.
*/
#define MtcConfOtherRegionKey "MtcConfOtherRegionKey"
/** @} */
/**
* @defgroup MtcConfPropKey MTC param key of conference create json string.
* @{
*/
/**
* @brief A key whose value is a number object in json format reflecting
* the conference capacity, the max number of the actors in the conference, at least 4.
*/
#define MtcConfCapacityKey "MtcConfCapacityKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the conference start or finish time remaining, positive number, milliseconds.
*/
#define MtcConfTimeRemainingKey "MtcConfTimeRemainingKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the conference video quality @ref MtcConfQualityGrade.
*/
#define MtcConfQualityGradeKey "MtcConfQualityGradeKey"
/**
* @brief A key whose value is a bool object in json format reflecting
* the conference video aspect is square.
*/
#define MtcConfVideoSquareKey "MtcConfVideoSquareKey"
/**
* @brief A key whose value is a bool object in json format reflecting
* the whether conference is smooth mode.
*/
#define MtcConfSmoothModeKey "MtcConfSmoothModeKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the max sender of conference.
*/
#define MtcConfMaxSenderKey "MtcConfMaxSenderKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the max bitrate of conference.
*/
#define MtcConfMaxBitrateKey "MtcConfMaxBitrateKey"
/**
* @brief A key whose value is a bool object in json format reflecting
* the conference using security transmission.
*/
#define MtcConfSecurityKey "MtcConfSecurityKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the current client count in conference.
*/
#define MtcConfClientCountKey "MtcConfClientCountKey"
/**
* @brief A key whose value is a string object in json format reflecting
* the user defined info of conference.
*/
#define MtcConfExInfoKey "MtcConfExInfoKey"
/**
* @brief A key whose value is a string object in json format reflecting
* the user token.
*/
#define MtcConfTokenKey "MtcConfTokenKey"
/**
* @brief A key whose value is a string object in json format reflecting
* the user custom number.
*/
#define MtcConfCustomNoKey "MtcConfCustomNoKey"
/**
* @brief A key whose value is array in JSON format. Each item is an user
* in the conference.
*/
#define MtcConfMemberListKey "MtcConfMemberListKey"
/**
* @brief A key whose value is a string object in json format reflecting
* the conference passard.
* the password contains any letter or digit.
*/
#define MtcConfPasswordKey "MtcConfPasswordKey"
/**
* @brief A key whose value is a string object in json format reflecting
* the jsmid of conference.
*/
#define MtcConfJsmidKey "MtcConfJsmidKey"
/**
* @brief A key whose value is a string object in json format reflecting
* the start time of conference, in milliseconds.
*/
#define MtcConfStartTimeKey "MtcConfStartTimeKey"
/**
* @brief A key whose value is a string object in json format reflecting
* the duration time of conference, in milliseconds.
*/
#define MtcConfDurationKey "MtcConfDurationKey"
/**
* @brief A key whose value is a boolean object in json format reflecting
* whether the conference has a replay function.
*/
#define MtcConfReplayKey "MtcConfReplayKey"
/**
* @brief A key whose value is a string object in json format reflecting
* the URI for webcasting,
* if empty will auto choosed.
* if end with '/',will auto append the conference number.
*/
#define MtcConfWebCastingUriKey "MtcConfWebCastingUriKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the composite mode, @ref MtcConfCompositeMode.
*/
#define MtcConfCompositeModeKey "MtcConfCompositeModeKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the composited picture size, @ref MtcConfPs.
*/
#define MtcConfCompositePictureSizeKey "MtcConfCompositePictureSizeKey"
/**
* @brief A key whose value is a number object in json format reflecting
* media video level.
*/
#define MtcConfVideoLevelKey "MtcConfVideoLevelKey"
/**
* @brief A key whose value is a number object in json format reflecting
* conf domain id.
*/
#define MtcConfDomainIdKey "MtcConfDomainIdKey"
/**
* @brief A key whose value is a number object in json format reflecting
* conf app id.
*/
#define MtcConfAppIdKey "MtcConfAppIdKey"
/**
* @brief A key whose value is a string object in json format reflecting
* the conference image ratio.
*/
#define MtcConfImageRatioKey "MtcConfImageRatioKey"
/**
* @brief A key whose value is a string object in json format reflecting
* the conference resolution information. Height Common Divisor, Level mutiple, Bitrate.
*/
#define MtcConfResolutionInfoKey "MtcConfResolutionInfoKey"
/**
* @brief A key whose value is a number object in json format reflecting
* the conference fps (1-30).
*/
#define MtcConfFpsKey "MtcConfFpsKey"
/**
* @brief A key whose value is number object in json format reflecting
* the conference member heartbeat timeout value(second).
*/
#define MtcConfHbTimeoutKey "MtcConfHbTimeoutKey"
/**
* @brief A key whose value is number object in json format reflecting
* the conference member heartbeat time value(second).
*/
#define MtcConfHbTimeKey "MtcConfHbTimeKey"
/**
* @brief A key whose value is number object in json format reflecting
* the conference use default subs peer video level. @ref MTC_CONF_PS_OFF to MTC_CONF_PS_MAX
*/
#define MtcConfDirectSubLevelKey "MtcConfDirectSubLevelKey"
/*
* @brief A key whose value is a number object in json format reflecting
* the dtmf type @ref EN_MTC_CONF_DTMF_TYPE.
*/
#define MtcConfCompositeDtmfKey "MtcConfCompositeDtmfKey"
/**
* @brief A key whose value is boolean object in json format reflecting
* whether the dtmf is inbound, ZTRUE to send inband, otherwise send outband.
*/
#define MtcConfDtmfTypeKey "MtcConfDtmfTypeKey"
/** @} */
/**
* @defgroup MtcConfNotification MTC notification of conference event.
* @{
*/
/**
* @brief Posted when region information loaded.
*
* The pcInfo of this notification contains
* @ref MtcConfDefaultRegionKey
* @ref MtcConfOtherRegionKey
*/
#define MtcConfLoadRegionInfoOkNotification "MtcConfLoadRegionInfoOkNotification"
/**
* @brief Posted when region information load failed.
*/
#define MtcConfLoadRegionInfoDidFailNotification "MtcConfLoadRegionInfoDidFailNotification"
/**
* @brief Posted when conference resource created.
*
* The pcInfo of this notification contains
* @ref MtcConfUriKey
* @ref MtcConfNumberKey
* @ref MtcConfIsVideoKey
*/
#define MtcConfCreateOkNotification "MtcConfCreateOkNotification"
/**
* @brief Posted when conference resource create failed.
*/
#define MtcConfCreateDidFailNotification "MtcConfCreateDidFailNotification"
/**
* @brief Posted when query conference URI OK.
*
* The pcInfo of this notification contains
* @ref MtcConfUriKey
* @ref MtcConfNumberKey
* @ref MtcConfTitleKey
* @ref MtcConfIsVideoKey
* @ref MtcConfStartTimeKey
* @ref MtcConfDurationKey
* @ref MtcRegionIdKey
* @ref MtcRegionNameKey
* @ref MtcRegionDescKey
* @ref MtcConfPartpLstKey
* @ref MtcConfCandLstKey
*/
#define MtcConfQueryOkNotification "MtcConfQueryOkNotification"
/**
* @brief Posted when query conference URI failed.
*/
#define MtcConfQueryDidFailNotification "MtcConfQueryDidFailNotification"
/**
* @brief Posted when conference resource reserved.
*
* The pcInfo of this notification contains
* @ref MtcConfNumberKey.
*/
#define MtcConfReserveOkNotification "MtcConfReserveOkNotification"
/**
* @brief Posted when conference resource reserve failed.
*/
#define MtcConfReserveDidFailNotification "MtcConfReserveDidFailNotification"
/**
* @brief Posted when cancel reservation OK.
*
* The pcInfo of this notification contains
* @ref MtcConfNumberKey.
*/
#define MtcConfCancelReservationOkNotification "MtcConfCancelReservationOkNotification"
/**
* @brief Posted when cancel reservation failed.
*
* The pcInfo of this notification contains
* @ref MtcConfReasonKey
*/
#define MtcConfCancelReservationDidFailNotification "MtcConfCancelReservationDidFailNotification"
/**
* @brief Posted when there is a conference invitation received.
*
* The pcInfo of this notification contains
* @ref MtcConfUriKey
* @ref MtcConfNumberKey
* @ref MtcConfTitleKey
* @ref MtcConfIsVideoKey
* @ref MtcConfUserUriKey indicates who send the invitation
* @ref MtcConfPasswordKey
* @ref MtcConfJsmidKey.
*/
#define MtcConfInviteReceivedNotification "MtcConfInviteReceivedNotification"
/**
* @brief Posted when there is a conference cancel received.
*
* The pcInfo of this notification contains
* @ref MtcConfUriKey
* @ref MtcConfNumberKey
* @ref MtcConfTitleKey
* @ref MtcConfIsVideoKey
* @ref MtcConfReasonKey
* @ref MtcConfUserUriKey indicates who send the cancel
*/
#define MtcConfCancelReceivedNotification "MtcConfCancelReceivedNotification"
/**
* @brief Posted when there is a conference condidate update received.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfUriKey
* @ref MtcConfNumberKey
* @ref MtcConfTitleKey
* @ref MtcConfIsVideoKey
* @ref MtcConfUserUriKey indicates who send the invitation.
* @ref MtcConfPasswordKey
* @ref MtcConfCandLstKey
*/
#define MtcConfCandidateUpdateNotification "MtcConfCandidateUpdateNotification"
/**
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfPartpLstKey
* @ref MtcConfTitleKey,
* @ref MtcConfDataKey
* @ref MtcConfScreenUserKey
* @ref MtcConfViewModeKey
* @ref MtcConfQualityGradeKey
* @ref MtcConfVideoSquareKey
* @ref MtcConfPropUserDefined
* @ref MtcConfPropDocumentUri
* @ref MtcConfPropDocumentPageId
* @ref MtcRegionIdKey
* @ref MtcRegionNameKey
* @ref MtcRegionDescKey
* @ref MtcConfCapacityKey.
*/
#define MtcConfJoinOkNotification "MtcConfJoinOkNotification"
/**
* @brief Posted when join to a conference failed.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfEventKey
* @ref MtcConfReasonKey.
*/
#define MtcConfJoinDidFailNotification "MtcConfJoinDidFailNotification"
/**
* @brief Posted when there is another user has joined to the conference.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfUserUriKey
* @ref MtcConfDisplayNameKey
* @ref MtcConfRoleKey
* @ref MtcConfStateKey
* @ref MtcConfCapacityKey.
*/
#define MtcConfJoinedNotification "MtcConfJoinedNotification"
/**
* @brief Posted when leaved from the conference.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfEventKey
* @ref MtcConfReasonKey
*/
#define MtcConfDidLeaveNotification "MtcConfDidLeaveNotification"
/**
* @brief Posted when there is another user has leaved from the conference.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfUserUriKey.
*/
#define MtcConfLeavedNotification "MtcConfLeavedNotification"
/**
* @brief Posted when invitation sent out successfully.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfEventKey
* @ref MtcConfUserUriKey.
*/
#define MtcConfInviteOkNotification "MtcConfInviteOkNotification"
/**
* @brief Posted when invitation sent out failed.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfUserUriKey
* @ref MtcConfEventKey
* @ref MtcConfReasonKey,
* @ref MtcConfDeclineReasonKey.
*/
#define MtcConfInviteDidFailNotification "MtcConfInviteDidFailNotification"
/**
* @brief Posted when invitation sent out failed.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
*/
#define MtcConfImportCandidateOkNotification "MtcConfImportCandidateOkNotification"
/**
* @brief Posted when invitation sent out failed.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfReasonKey.
*/
#define MtcConfImportCandidateFailedNotification "MtcConfImportCandidateFailedNotification"
/**
* @brief Posted when invitation sent out failed.
*
* The pcInfo of this notification contains
* @ref MtcConfUriKey
*/
#define MtcConfCandidateRejectOkNotification "MtcConfCandidateRejectOkNotification"
/**
* @brief Posted when invitation sent out failed.
*
* The pcInfo of this notification contains
* @ref MtcConfUriKey
* @ref MtcConfReasonKey.
*/
#define MtcConfCandidateRejectFailedNotification "MtcConfCandidateRejectFailedNotification"
/**
* @brief Posted when kickout sent out successfully.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfUserUriKey
*/
#define MtcConfKickOkNotification "MtcConfKickOkNotification"
/**
* @brief Posted when kickout sent out failed.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfUserUriKey
* @ref MtcConfEventKey
* @ref MtcConfReasonKey
*/
#define MtcConfKickDidFailNotification "MtcConfKickDidFailNotification"
/**
* @brief Posted when a participant's state changed.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfUserUriKey
* @ref MtcConfStateKey.
* @ref MtcConfRoleKey
* @ref MtcConfDisplayNameKey
*/
#define MtcConfParticipantChangedNotification "MtcConfParticipantChangedNotification"
/**
* @brief Posted when conference property changed.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfTitleKey
* @ref MtcConfDataKey
* @ref MtcConfScreenUserKey
* @ref MtcConfPropUserDefined
* @ref MtcConfPropDocumentUri
* @ref MtcConfPropDocumentPageId
*/
#define MtcConfPropertyChangedNotfication "MtcConfPropertyChangedNotfication"
/**
* @brief Posted when volume energy changed.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfPartpVolumeLstKey.
*/
#define MtcConfVolumeChangedNotification "MtcConfVolumeChangedNotification"
/**
* @brief Posted when volume energy changed.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfPartpNetworkStatusListKey.
* @ref MtcConfIsUpstreamKey.
*/
#define MtcConfNetworkStatusChangedNotification "MtcConfNetworkStatusChangedNotification"
/**
* @brief Posted when render state changed.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfPartpVideoStateLstKey
* @ref MtcConfScreenStateKey
*/
#define MtcConfRenderChangedNotification "MtcConfRenderChangedNotification"
/**
* @brief Posted when render tag changed.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfPartpVideoTagLstKey
*/
#define MtcConfRenderTagChangedNotification "MtcConfRenderTagChangedNotification"
/**
* @brief Posted when received text message.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfUserUriKey
* @ref MtcConfTextKey.
*/
#define MtcConfTextReceivedNotification "MtcConfTextReceivedNotification"
/**
* @brief Posted when received data message.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey,
* @ref MtcConfNumberKey
* @ref MtcConfUserUriKey
* @ref MtcConfDataTypeKey
* @ref MtcConfDataContentKey.
*/
#define MtcConfDataReceivedNotification "MtcConfDataReceivedNotification"
/**
* @brief Posted when received bypass data message.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey,
* @ref MtcConfNumberKey
* @ref MtcConfDataTypeKey
* @ref MtcConfDataContentKey.
*/
#define MtcConfBypassDataReceivedNotification "MtcConfBypassDataReceivedNotification"
/**
* @brief Posted when there is an error.
*
* The pcInfo of this notification contains
* @ref MtcConfIdKey
* @ref MtcConfNumberKey
* @ref MtcConfEventKey
* @ref MtcConfReasonKey.
*/
#define MtcConfErrorNotification "MtcConfErrorNotification"
/** @} */
#ifdef __cplusplus
}
#endif
#ifdef __cplusplus
EXPORT_FLAG {
#endif
/**
* @brief MTC get JSM version
*
* @return JSM version.
*/
MTCFUNC ZCONST ZCHAR * Mtc_GetJsmVersion(ZFUNC_VOID);
/**
* @brief Get region information.
*
* @return Region information which is a object in JSON. It contains
* @ref MtcConfDefaultRegionKey and @ref MtcConfOtherRegionKey.
*/
MTCFUNC ZCONST ZCHAR * Mtc_ConfGetRegionInfo(ZFUNC_VOID);
/**
* @brief Load region information from server.
*
* @retval ZOK on succeed, result will be notified by
* @ref MtcConfLoadRegionInfoOkNotification or
* @ref MtcConfLoadRegionInfoDidFailNotification.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfLoadRegionInfo(ZFUNC_VOID);
/**
* @brief Join a meeting room directily. The room is identified by room ID.
*
* @param iRegionId The region ID.
* @param pcRoomId The User Defined ID of room.
* @param zCookie The cookie value.
* @param pcDisplayName The display name string.
* @param bVideo Video flag.
* @param pcParm The json string, param key is @ref MtcConfPropKey,
* @ref MtcConfViewModeKey, @ref MtcConfStateKey.
*
* @return The conference ID when send request successfully.
* Otherwise return ZMAXUINT.
*/
MTCFUNC ZUINT Mtc_ConfJoinRoom(ZINT iRegionId,
ZCONST ZCHAR *pcRoomId, ZCOOKIE zCookie, ZCONST ZCHAR *pcDisplayName,
ZBOOL bVideo, ZCONST ZCHAR *pcParm);
/**
* @brief Join a meeting room as viewer. The room is identified by room ID.
*
* @param iRegionId The region ID.
* @param pcRoomId The User Defined ID of room.
* @param zCookie The cookie value.
*
* @return The conference ID when send request successfully.
* Otherwise return ZMAXUINT.
*/
MTCFUNC ZUINT Mtc_ConfJoinRoomAsViewer(ZINT iRegionId,
ZCONST ZCHAR *pcRoomId, ZCOOKIE zCookie);
/**
* @brief Query room. The room is identified by room ID.
*
* @param iRegionId The region ID.
* @param pcRoomId The User Defined ID of room.
* @param zCookie The cookie value.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfQueryRoom(ZINT iRegionId,
ZCONST ZCHAR *pcRoomId, ZCOOKIE zCookie);
/**
* @brief Create a conference resource.
*
* If conference resource created successfully,
* @ref MtcConfCreateOkNotification will be notified with
* the URI of conference resource.
* Otherwise @ref MtcConfCreateDidFailNotification will be notified.
*
* @param [in] zCookie Used to correspond conference with UI resource.
* @param [in] iRegionId Region ID.
* @param [in] pcTitle Conference title.
* @param [in] pcPassword Conference password, contains any letter or digit.
* @param [in] bVideo ZTRUE for video conference, ZFALSE for voice conference.
* @param [in] pcParm The json string, param key is @ref MtcConfPropKey,
* @ref MtcConfViewModeKey
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfCreateEx(ZCOOKIE zCookie, ZINT iRegionId,
ZCONST ZCHAR *pcTitle, ZCONST ZCHAR *pcPassword, ZBOOL bVideo,
ZCONST ZCHAR *pcParm);
/**
* @brief Query a conference resource.
*
* If query conference resource successfully,
* @ref MtcConfQueryOkNotification will be notified with
* the URI of conference resource.
* Otherwise @ref MtcConfQueryDidFailNotification will be notified.
*
* @param zCookie Cookie used by UI.
* @param iConfNo The conference number.
*
* @retval ZOK Query sent successfully.
* @retval ZFAILED Query sent failed.
*/
MTCFUNC ZINT Mtc_ConfQuery(ZCOOKIE zCookie, ZINT iConfNo);
/**
* @brief Reserve a conference resource.
*
* If conference resource reserved successfully,
* @ref MtcConfReserveOkNotification will be notified with
* the URI of conference resource.
* Otherwise @ref MtcConfReserveDidFailNotification will be notified.
*
* @param [in] zCookie Used to correspond conference with UI resource.
* @param [in] iRegionId Region ID.
* @param [in] qwStartTs Conference start time, seconds from 1/1/1970 00:00:00 GMT.
* @param [in] qwDuration Conference duration seconds.
* @param [in] pcTitle Conference title.
* @param [in] bVideo ZTRUE for video conference, ZFALSE for voice conference.
* @param [in] pcParm The json string, param key is @ref MtcConfPropKey
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfReserve(ZCOOKIE zCookie, ZINT iRegionId, ZUINT64 qwStartTs,
ZUINT64 qwDuration, ZCONST ZCHAR *pcTitle, ZBOOL bVideo, ZCONST ZCHAR *pcParm);
/**
* @brief Cancel a conference reservation.
*
* @param zCookie Cookie value.
* @param iConfNo The conference number.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfCancelReservation(ZCOOKIE zCookie, ZINT iConfNo);
/**
* @brief Join a conference.
*
* When join to the conference successfully,
* @ref MtcConfJoinOkNotification will be notified.
*
* @param [in] pcUri The URI of conference resource.
* @param [in] zCookie Used to correspond conference with UI resource.
* @param [in] pcDisplayName Used to display name, must UTF-8 encoding.
* @param [in] iRoles The role type of participant, option @ref MtcConfRole
* @param [in] pcPassword The passord of conference, it is option.
*
* @return The conference ID when send request successfully.
* Otherwise return ZMAXUINT.
*
* @see Mtc_ConfCreate
*/
MTCFUNC ZUINT Mtc_ConfJoinEx(ZCONST ZCHAR *pcUri, ZCOOKIE zCookie,
ZCONST ZCHAR *pcDisplayName, ZUINT iRoles, ZCONST ZCHAR *pcPassword);
/**
* @brief Join a conference.
*
* When join to the conference successfully,
* @ref MtcConfJoinOkNotification will be notified.
*
* @param [in] pcUri The URI of conference resource.
* @param [in] zCookie Used to correspond conference with UI resource.
* @param [in] pcPassword The passord of conference, it is option.
* @param [in] iRoles The role type of participant, option @ref MtcConfRole
* @param [in] pcParm More parameters which is a object in JSON format, contains
* @ref MtcConfDisplayNameKey, @ref MtcConfStateKey
*
* @return The conference ID when send request successfully.
* Otherwise return ZMAXUINT.
*
* @see Mtc_ConfCreate
*/
MTCFUNC ZUINT Mtc_ConfJoin(ZCONST ZCHAR *pcUri, ZCOOKIE zCookie,
ZCONST ZCHAR *pcPassword, ZUINT iRoles, ZCONST ZCHAR *pcParm);
/**
* @brief Join conference's relay node.
* @param pcUri The conference URI.
* @param zCookie The cookie value.
* @param pcPassword The conference's password.
*
* @return The conference ID when send request successfully.
* Otherwise return ZMAXUINT.
*/
MTCFUNC ZUINT Mtc_ConfJoinAsViewer(ZCONST ZCHAR *pcUri, ZCOOKIE zCookie,
ZCONST ZCHAR *pcPassword);
/**
* @brief Send text in the conference.
*
* @param [in] iConfId The ID of conference in which you chat.
* @param [in] pcUserUri The URI of target user, NULL will broadcast.
* @param [in] pcText The UTF8 encoding message
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfSendText(ZUINT iConfId, ZCONST ZCHAR *pcUserUri,
ZCONST ZCHAR *pcText);
/**
* @brief Send data in the conference.
*
* @param [in] iConfId The ID of conference in which you chat.
* @param [in] pcUserUri The URI of target user, NULL will broadcast.
* @param [in] pcType The data type.
* @param [in] pcContent The data content in UTF8.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfSendData(ZUINT iConfId, ZCONST ZCHAR *pcUserUri,
ZCONST ZCHAR *pcType, ZCONST ZCHAR *pcContent);
/**
* @brief Send bypass data in the conference.
*
* @param [in] iConfId The ID of conference in which you chat.
* @param [in] pcType The data type.
* @param [in] pcContent The data content.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfSendBypassData(ZUINT iConfId, ZCONST ZCHAR *pcType,
ZCONST ZCHAR *pcContent);
/**
* @brief Leave a conference.
*
* When leave the conference successfully,
* @ref MtcConfDidLeaveNotification will be notified.
*
* @param [in] iConfId The ID of conference which you want leave.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*
* @see Mtc_ConfJoin
*/
MTCFUNC ZINT Mtc_ConfLeave(ZUINT iConfId);
/**
* @brief Invite an user to the conference.
*
* When invitation has been delivieried to peer successfully,
* @ref MtcConfInviteOkNotification will be notified.
* Otherwise @ref MtcConfInviteDidFailNotification will be notified.
*
* @param [in] iConfId The ID of conference to which you want invite new
* participant.
* @param [in] pcUserUri The URI of user invited.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*
* @see Mtc_ConfKickUser
*/
MTCFUNC ZINT Mtc_ConfInviteUser(ZUINT iConfId, ZCONST ZCHAR *pcUserUri);
/**
* @brief decline the invite from conference.
*
* @param [in] pcUri The URI of conference resource.
* @param [in] pcUserUri The URI of target user.
* @param [in] pcReason The reason of decline.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*
* @see Mtc_ConfInviteUser
*/
MTCFUNC ZINT Mtc_ConfDeclineInvite(ZCONST ZCHAR *pcUri, ZCONST ZCHAR *pcUserUri, ZCONST ZCHAR *pcReason);
/**
* @brief Kick an user out of the conference.
*
* When invitation has been delivieried to server successfully,
* @ref MtcConfKickOkNotification will be notified.
* Otherwise @ref MtcConfKickDidFailNotification will be notified.
*
* @param [in] iConfId The ID of conference to which you want kick participant.
* @param [in] pcUserUri The URI of user.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*
* @see Mtc_ConfInviteUser
*/
MTCFUNC ZINT Mtc_ConfKickUser(ZUINT iConfId, ZCONST ZCHAR *pcUserUri);
/**
* @brief import candidate member of the conference.
*
* When invitation has been delivieried to server successfully,
* @ref MtcConfImportCandidateOkNotification will be notified.
* Otherwise @ref MtcConfImportCandidateFailedNotification will be notified.
*
* @param [in] iConfId The ID of conference to which you want kick participant.
* @param [in] pcJson The json list of candidate @ref MtcConfPartpLstKey.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfImportCandidate(ZUINT iConfId, ZCONST ZCHAR *pcJson);
/**
* @brief candidate reject the invite of the conference.
*
* When invitation has been delivieried to server successfully,
* @ref MtcConfCandidateRejectOkNotification will be notified.
* Otherwise @ref MtcConfCandidateRejectFailedNotification will be notified.
*
* @param [in] pcUri The ID of conference to which you want kick participant.
* @param [in] pcUserId The ID of user;
* @param [in] zCookie The Cookie.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfCandidateReject(ZCONST ZCHAR *pcUri, ZCOOKIE zCookie,
ZCONST ZCHAR* pcUserId);
/**
* @brief Set video capture device for conference.
*
* @param [in] iConfId The ID of conference.
* @param [in] pcName Capture device name.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfSetVideoCapture(ZUINT iConfId, ZCONST ZCHAR *pcName);
/**
* @brief Close video capture device for conference.
*
* @param [in] iConfId The ID of conference.
* @param [in] pcName Capture device name, null for close all.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfCloseVideoCapture(ZUINT iConfId, ZCONST ZCHAR *pcName);
/**
* @brief Set video capture layout for conference.
*
* @param [in] iConfId The ID of conference.
* @param [in] iPattern Layout pattern.
* @param [in] pcConfig A string which is a JSON array contains
* string of ID of capture device.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfSetVideoCaptureLayout(ZUINT iConfId, ZUINT iPattern,
ZCONST ZCHAR *pcConfig);
/**
* @brief Set screen capture device for conference.
*
* @param [in] iConfId The ID of conference.
* @param [in] pcName Capture device name.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfSetScreenCapture(ZUINT iConfId, ZCONST ZCHAR *pcName);
/**
* @brief Set microphone file for conference.
*
* @param [in] iConfId The ID of conference.
* @param [in] pcName microphone file path.
* @param [in] bLoop Indicate whether to loop.
* @param [in] bMixWithMic Indicate whether to mix with mic.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfSetFileAsMicrophone(ZUINT iConfId, ZCONST ZCHAR *pcName, ZBOOL bLoop, ZBOOL bMixWithMic);
/**
* @brief Set set send image ratio for conference.
*
* @param [in] iConfId The ID of conference.
* @param [in] bEnable enable adaptiveaspect flag.
* @param [in] fAspectRatio the ratio value (if fAspectRatio <= 0 use default ratio).
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfSetAdaptiveAspect(ZUINT iConfId, ZBOOL bEnable, ZFLOAT fAspectRatio);
/**
* @brief Set user for conference shared screen.
*
* @param [in] iConfId The ID of conference.
* @param [in] pcUserUri The URI of user.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfSetScreenUser(ZUINT iConfId, ZCONST ZCHAR *pcUserUri);
/**
* @brief Start media sending.
*
* @param [in] iConfId The ID of conference to which you want kick participant.
* @param [in] iMediaOption Media option @ref MtcConfMedia.
*
* @retval ZOK Start media sending successfully, and request has sent to server.
* If request failed, @ref MtcConfErrorNotification will be notified.
* @retval ZFAILED Fail to start media sending.
*/
MTCFUNC ZINT Mtc_ConfStartSend(ZUINT iConfId, ZUINT iMediaOption);
/**
* @brief Stop media sending.
*
* @param [in] iConfId The ID of conference to which you want kick participant.
* @param [in] iMediaOption Media option @ref MtcConfMedia.
*
* @retval ZOK Stop media sending successfully, and request has sent to server.
* If request failed, @ref MtcConfErrorNotification will be notified.
* @retval ZFAILED Fail to stop media sending.
*/
MTCFUNC ZINT Mtc_ConfStopSend(ZUINT iConfId, ZUINT iMediaOption);
/**
* @brief Start all participant's media sending.
*
* @param [in] iConfId The ID of conference to which you want start.
* @param [in] iMediaOption Media option @ref MtcConfMedia.
*
* @retval ZOK Start media sending successfully, and request has sent to server.
* If request failed, @ref MtcConfErrorNotification will be notified.
* @retval ZFAILED Fail to start media sending.
*/
MTCFUNC ZINT Mtc_ConfStartSendAll(ZUINT iConfId, ZUINT iMediaOption);
/**
* @brief Stop all participant's media sending.
*
* @param [in] iConfId The ID of conference to which you want stop.
* @param [in] iMediaOption Media option @ref MtcConfMedia.
*
* @retval ZOK Stop media sending successfully, and request has sent to server.
* If request failed, @ref MtcConfErrorNotification will be notified.
* @retval ZFAILED Fail to stop media sending.
*/
MTCFUNC ZINT Mtc_ConfStopSendAll(ZUINT iConfId, ZUINT iMediaOption);
/**
* @brief Start conference CDN service
*
* @param [in] iConfId The ID of conference.
*
* @retval ZOK
* @retval ZFAILED Fail to start CDN service.
*/
MTCFUNC ZINT Mtc_ConfStartCdn(ZUINT iConfId);
/**
* @brief Stop conference CDN service.
*
* @param [in] iConfId The ID of conference.
*
* @retval ZOK
* @retval ZFAILED Fail to stop CDN service.
*/
MTCFUNC ZINT Mtc_ConfStopCdn(ZUINT iConfId);
/**
* @brief Set participant's role.
*
* @param iConfId The ID of conference.
* @param pcUserUri The user's URI, ZNULL for self.
* @param iMask The mask of value, @ref MtcConfRole.
* @param iValue The value, @ref MtcConfRole.
*
* @return ZOK when succeed. ZFAILED when failed.
*/
MTCFUNC ZINT Mtc_ConfSetRole(ZUINT iConfId, ZCONST ZCHAR *pcUserUri,
ZUINT iMask, ZUINT iValue);
/**
* @brief Get roles of conference user.
*
* @param [in] iConfId The ID of conference.
*
* @return The role value of conference user.
*/
MTCFUNC ZUINT Mtc_ConfGetRole(ZUINT iConfId);
/**
* @brief Set participant's state.
*
* @param iConfId The ID of conference.
* @param pcUserUri The user's URI, ZNULL for self.
* @param iMask The mask of value, @ref MtcConfState.
* @param iValue The value, @ref MtcConfState.
*
* @return ZOK when succeed. ZFAILED when failed.
*/
MTCFUNC ZINT Mtc_ConfSetState(ZUINT iConfId, ZCONST ZCHAR *pcUserUri,
ZUINT iMask, ZUINT iValue);
/**
* @defgroup MtcConfReq MTC request parameters.
* @{
*/
/**
* @brief Start forwarding media of specific participant.
*
* The pcParm is a string which is a object in JSON format includes
* @ref MtcConfUserUriKey, @ref MtcConfMediaOptionKey.
*/
#define MtcConfCmdStartForward "MtcConfCmdStartForward"
/**
* @brief Stop forwarding media of specific praticipant.
*
* The pcParm is a string which is a object in JSON format includes
* @ref MtcConfUserUriKey, @ref MtcConfMediaOptionKey.
*/
#define MtcConfCmdStopForward "MtcConfCmdStopForward"
/**
* @brief Request video of specific participant.
*
* The pcParm is a string which is a object in JSON format includes
* @ref MtcConfUserUriKey, @ref MtcConfPictureSizeKey and @ref MtcConfFrameRateKey.
*/
#define MtcConfCmdRequestVideo "MtcConfCmdRequestVideo"
/**
* @brief Request video of specific participant.
*
* The pcParm is a string which is a object in JSON format includes
* @ref MtcConfUserUriKey, @ref MtcConfPictureHeightKey and @ref MtcConfPictureWidthKey.
*/
#define MtcConfCmdRequestVideoX "MtcConfCmdRequestVideoX"
/**
* @brief Command name of change title.
*
* The pcParm is a string which is a object in JSON format includes
* @ref MtcConfTitleKey.
*/
#define MtcConfCmdChangeTitle "MtcConfCmdChangeTitle"
/**
* @brief Command name of invite some users.
*
* The pcParm is a string which is a array in JSON format includes
* uri.
*/
#define MtcConfCmdInviteUsers "MtcConfCmdInviteUsers"
/**
* @brief Command name of set property of some users.
*
* The pcParm is a string which is a JSON format includes
* @ref MtcConfPartpLstKey, @ref MtcConfDisplayNameKey,
* @ref MtcConfRoleKey, and @ref MtcConfStateKey
*/
#define MtcConfCmdSetPartpProp "MtcConfCmdSetPartpProp"
/**
* @brief Command name of set property of some users.
*
* The pcParm is a string which is a JSON format includes
* @ref MtcConfUserUriKey, The URI of target user, NULL will broadcast.
* @ref MtcConfCompositeDtmfKey, The DTMF type defined in RFC2833.
* @ref MtcConfDtmfTypeKey, ZTRUE to send inband, otherwise send outband.
*/
#define MtcConfCmdSipSendDtmf "MtcConfCmdSipSendDtmf"
/**
* @brief Command name of apply layout to replayer.
*
* The pcParm is a string in JSON array format.
* Each item of array is the participant's layout information, which includes
* @ref MtcConfUserUriKey, @ref MtcConfPictureSizeKey,
* @ref MtcConfRectangleKey.
*/
#define MtcConfCmdReplayApplyLayout "MtcConfCmdReplayApplyLayout"
/**
* @brief Command name of replayer to set layout mode.
*
* The pcParm is a string in JSON format which contains
* @ref MtcConfCompositeModeKey.
*/
#define MtcConfCmdReplayApplyMode "MtcConfCmdReplayApplyMode"
/**
* @brief Command name of replayer to start push content to CDN.
*/
#define MtcConfCmdReplayStartWebCasting "MtcConfCmdReplayStartWebCasting"
/**
* @brief Command name of replayer to stop push content to CDN.
*/
#define MtcConfCmdReplayStopWebCasting "MtcConfCmdReplayStopWebCasting"
/**
* @brief Command name of replayer to start push content to CDN.
*/
#define MtcConfCmdReplayStartPushX "MtcConfCmdReplayStartPushX"
/**
* @brief Command name of replayer to stop push content to CDN.
*/
#define MtcConfCmdReplayStopPushX "MtcConfCmdReplayStopPushX"
/**
* @brief Command name of replayer to start record.
*
* The pcParm is a string in JSON format which contains
* @ref MtcConfIsVideoKey
*/
#define MtcConfCmdReplayStartRecord "MtcConfCmdReplayStartRecord"
/**
* @brief Command name of replayer to stop record.
*/
#define MtcConfCmdReplayStopRecord "MtcConfCmdReplayStopRecord"
/**
* @brief Command name of replayer to start play.
*/
#define MtcConfCmdReplayStartPlay "MtcConfCmdReplayStartPlay"
/**
* @brief Command name of replayer to stop play.
*/
#define MtcConfCmdReplayStopPlay "MtcConfCmdReplayStopPlay"
/**
* @brief Command name of replayer to set video level.
*/
#define MtcConfCmdReplaySetVideoLevel "MtcConfCmdReplaySetVideoLevel"
/**
* @brief A key whose value is a object in JSON format reflecting
* the storage information, which contains
* @ref MtcConfProtocolKey,
* @ref MtcConfAccessKeyKey,
* @ref MtcConfSecretKeyKey,
* @ref MtcConfBucketNameKey,
* @ref MtcConfFileKeyKey,
* @ref MtcConfRecVideoLevelKey
* @ref MtcConfRecMergeModeKey
* @ref MtcConfRecMergeFpsKey
* probably contains
* @ref MtcConfAutoSplitKey,
* @ref MtcConfSplitFileSizeKey.
*/
#define MtcConfStorageKey "Storage"
/**
* @brief A key whose value is a string object in JSON format reflecting
* the storage protocol type. Avaliable values contains "qiniu".
*/
#define MtcConfProtocolKey "Protocol"
/**
* @brief A key whose value is a string object in JSON format reflecting
* the access key value of storage.
*/
#define MtcConfAccessKeyKey "AccessKey"
/**
* @brief A key whose value is a string object in JSON format reflecting
* the secret key value of storage.
*/
#define MtcConfSecretKeyKey "SecretKey"
/**
* @brief A key whose value is a string object in JSON format reflecting
* the bucket name.
*/
#define MtcConfBucketNameKey "BucketName"
/**
* @brief A key whose value is a string object in JSON format reflecting
* the file key.
*/
#define MtcConfFileKeyKey "FileKey"
/**
* @brief A key whose value is a bool object in JSON format reflecting
* whether auto split the record file.
*/
#define MtcConfAutoSplitKey "AutoSplit"
/**
* @brief A key whose value is a number object in JSON format reflecting
* the auto split file size.
*/
#define MtcConfSplitFileSizeKey "SplitFileSize"
/**
* @brief A key whose value is a string object in JSON format reflecting
* the record file name.
*/
#define MtcConfFileNameKey "FileName"
/**
* @brief A key whose value is a boolean object in JSON format reflecting
* whether rec audio is enabled.
*/
#define MtcConfRecAudioKey "RecAudio"
/**
* @brief A key whose value is a boolean object in JSON format reflecting
* whether rec vedio is enabled.
*/
#define MtcConfRecVideoKey "RecVideo"
/**
* @brief A key whose value is a number object in JSON format reflecting
* the rec vedio level.
*/
#define MtcConfRecVideoLevelKey "VideoLevel"
/**
* @brief A key whose value is a number object in JSON format reflecting
* the rec merge mode.
*/
#define MtcConfRecMergeModeKey "MergeMode"
/**
* @brief A key whose value is a number object in JSON format reflecting
* the rec merge fps.
*/
#define MtcConfRecMergeFpsKey "MergeFPS"
/**
* @brief A key whose value is a number object in JSON format reflecting
* the rec merge bitrate.
*/
#define MtcConfRecMergeBitrateKey "MergeBitrate"
/**
* @brief A key whose value is a number object in JSON format reflecting
* the rec merge height.
*/
#define MtcConfRecMergeHeightKey "MergeHeight"
/**
* @brief A key whose value is a number object in JSON format reflecting
* the rec merge width.
*/
#define MtcConfRecMergeWidthKey "MergeWidth"
/**
* @brief A key whose value is a boolean object in JSON format reflecting
* whether rec need merge self.
*/
#define MtcConfRecMergeSelfKey "MergeSelf"
/**
* @brief A key whose value is a string object in JSON format reflecting
* the parm of start record.
*/
#define MtcConfStartMediaRecordKey "Mtc_ConfStartMediaRecord"
/**
* @brief A key whose value is a string object in JSON format reflecting
* the parm of stop record.
*/
#define MtcConfStopMediaRecordKey "Mtc_ConfStopMediaRecord"
/**
* @brief A key whose value is a number object in JSON format reflecting
* the push vedio level.
*/
#define MtcConfPushVideoLevelKey "VideoLevel"
/**
* @brief A key whose value is a number object in JSON format reflecting
* the push merge mode.
*/
#define MtcConfPushMergeModeKey "MergeMode"
/**
* @brief A key whose value is a number object in JSON format reflecting
* the push merge fps.
*/
#define MtcConfPushMergeFpsKey "MergeFPS"
/**
* @brief A key whose value is a string object in JSON format reflecting
* merge key interval.
*/
#define MtcConfMergeKeyIntervalKey "MergeKeyInterval"
/** @} */
/**
* @brief Request to change conference parameters.
*
* @param [in] iConfId The ID of conference.
* @param [in] pcCmd The command name, @ref MtcConfReq.
* @param [in] pcParm The parameter string, reference each command description.
*
* @retval ZOK Command has been sent out successfully.
* When server accept the command, there will be
* a @ref MtcConfParticipantChangedNotification
* notification.
* When server reject the command or timeout, there will be
* a @ref MtcConfErrorNotification notification.
* @retval ZFAILED Fail to sent the command.
*/
MTCFUNC ZINT Mtc_ConfCommand(ZUINT iConfId, ZCONST ZCHAR *pcCmd,
ZCONST ZCHAR *pcParm);
/**
* @defgroup MtcConfProp MTC conference property's name.
* @{
*/
/**
* @brief Property name of conference title.
* This property is readonly.
*/
#define MtcConfPropTitle MtcConfTitleKey
/**
* @brief Property name of conference number.
* This property is readonly.
*/
#define MtcConfPropConfNumber MtcConfNumberKey
/**
* @brief Property name of conference's max participant count.
* This property is readonly.
*/
#define MtcConfPropCapacity MtcConfCapacityKey
/**
* @brief Property name of conference's password.
* This property is readonly.
*/
#define MtcConfPropPassword MtcConfPasswordKey
/**
* @brief Property name of conference start timestamp in milliseconds.
* This property is readonly.
*/
#define MtcConfPropStartTime MtcConfStartTimeKey
/**
* @brief Property name of conference duration time in milliseconds.
* This property is readonly.
*/
#define MtcConfPropDuration MtcConfDurationKey
/**
* @brief Property name of conference URI.
* This property is readonly.
*/
#define MtcConfPropConfUri MtcConfUriKey
/**
* @brief Property name of conference shared screen URI.
* This property is readonly.
*/
#define MtcConfPropScreenUri "ScreenURI"
/**
* @brief Property name of conference shared delivery URI.
* This property is readonly.
*/
#define MtcConfPropDeliveryUri "DeliveryURI"
/**
* @brief Property name of user defined value.
*/
#define MtcConfPropUserDefined MtcConfDataKey
/**
* @brief Property name of the sharing document's URI.
*/
#define MtcConfPropDocumentUri "DSR.Uri"
/**
* @brief Property name of the sharing document's page Id.
*/
#define MtcConfPropDocumentPageId "DSR.PageId"
/** @} */
/**
* @brief Get conference property's value.
*
* @param [in] iConfId The ID of conference.
* @param [in] pcName The property name. @ref MtcConfProp
*
* @return Reference @ref MtcConfProp for detail. ZNULL when failed.
*/
MTCFUNC ZCONST ZCHAR * Mtc_ConfGetProp(ZUINT iConfId, ZCONST ZCHAR *pcName);
/**
* @brief Set conference property.
*
* @param iConfId The ID of conference.
* @param pcName The property name. @ref MtcConfProp
* @param pcValue The property value. Use ZNULL to delete this value.
*
* @return ZOK when succeed. ZFAILED when failed.
*
* If specific property is not found, it will create new one.
* If same property is found, it replace the value.
*
* Other participants will be notified by @ref MtcConfPropertyChangedNotfication
* when property was set.
*/
MTCFUNC ZINT Mtc_ConfSetProp(ZUINT iConfId, ZCONST ZCHAR *pcName,
ZCONST ZCHAR *pcValue);
/**
* @brief Get count of conference participants.
*
* @param [in] iConfId The ID of conference.
*
* @return The count of participants.
*/
MTCFUNC ZUINT Mtc_ConfGetPartpCount(ZUINT iConfId);
/**
* @brief Get all user's URI of conference.
*
* @param [in] iConfId The ID of conference.
*
* @return The string is an array object in JSON format contains
* all the user's URI of conference.
*/
MTCFUNC ZCONST ZCHAR * Mtc_ConfGetAllPartp(ZUINT iConfId);
/**
* @brief Get properties of one participant.
*
* @param [in] iConfId The ID of conference
* @param [in] pcUserUri The user's URI of the participant.
*
* @return The string is an object in JSON format contains
* @ref MtcConfStateKey.
* ZNULL indicates failed.
*/
MTCFUNC ZCONST ZCHAR * Mtc_ConfGetPartpProp(ZUINT iConfId,
ZCONST ZCHAR *pcUserUri);
/**
* @defgroup MtcConfStatistics MTC Conference Statistics Type
* @{
*/
/**
* @brief Configuration statistics.
*/
#define MTC_CONF_STS_CONFIG "MtcConfStsConfig"
/**
* @brief Network statistics.
*/
#define MTC_CONF_STS_NETWORK "MtcConfStsNetwork"
/**
* @brief Transport statistics.
*/
#define MTC_CONF_STS_TRANSPORT "MtcConfStsTransport"
/**
* @brief Participant statistics. The pcParm must be the user's URI of participant.
*/
#define MTC_CONF_STS_PARTICIPANT "MtcConfStsParticipant"
/** @} */
/**
* @brief Get statistics.
*
* @param [in] iConfId The ID of conference.
* @param [in] pcName The statistics name. @ref MtcConfStatistics.
* @param [in] pcParm The statistics parameter. @ref MtcConfStatistics for detail.
*
* @return Statistics string.
* ZNULL indicates failed.
*/
MTCFUNC ZCONST ZCHAR * Mtc_ConfGetStatistics(ZUINT iConfId,
ZCONST ZCHAR *pcName, ZCONST ZCHAR *pcParm);
/**
* @brief Get json statistics.
*
* @param [in] iConfId The ID of conference.
*
* @return Statistics string.
* ZNULL indicates failed.
*/
MTCFUNC ZCONST ZCHAR * Mtc_ConfGetJsonStats(ZUINT iConfId);
/**
* @brief Get the user list which audio this user didn't subscribed .
*
* @param [in] iConfId The ID of conference.
*
* @return information which is a object in JSON when succeed. It contains @ref MtcConfMemberListKey
* @return ZNULL when failed.
*/
MTCFUNC ZCONST ZCHAR * Mtc_ConfGetAudioMutedUserList(ZUINT iConfId);
/**
* @defgroup MtcConfTest MTC conference test type.
* @{
*/
/**
* @brief Testing the microphone record
* Get real-time volume recorded by Mtc_ConfDspGetMicLevel().
*/
#define MTC_CONF_TEST_MIC 0x01
/**
* @brief By playing an audio file, test the speakers
* Gets the speaker volume by Mtc_ConfDspGetSpkLevel()
*/
#define MTC_CONF_TEST_SPK 0x02
/** @} */
/**
* @brief Start test microphone or camera deivce for conference
*
* @param [in] iTestType The test type @ref MtcConfTest.
* @param [in] pcFilename The test file name.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfTestStart(ZUINT iTestType, ZCONST ZCHAR* pcFilename);
/**
* @brief Stop microphone or camera deivce test for conference
*
* @param [in] iTestType The test type @ref MtcConfTest.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfTestStop(ZUINT iTestType);
/**
* @brief Get the current speaker volume level
* Only the current existence of audio playback, @ref MTC_CONF_TEST_SPK,
* or when meeting someone speak, will have to play the volume level
*
* @return Playback volume range 0-100
*/
MTCFUNC ZINT Mtc_ConfDspGetSpkLevel();
/**
* @brief Get the current local recording volume level, range 0-100
* Only Mic test currently exists, @ref MTC_CONF_TEST_MIC
* or when a meeting on the audio, will have a volume level recorded
*
* @return Record volume range 0-100
*/
MTCFUNC ZINT Mtc_ConfDspGetMicLevel();
/**
* @brief MTC session get the mute status of speaker.
*
* @param [in] iConfId The ID of session which you want to get.
*
* @retval ZTRUE on muted.
* @retval ZFALSE on not muted.
*
* @see @ref Mtc_ConfSetSpkMute
*/
MTCFUNC ZBOOL Mtc_ConfGetSpkMute(ZUINT iConfId);
/**
* @brief MTC session set the mute status of speaker.
*
* @param [in] iConfId The ID of session which you want to set.
* @param [in] bMute Indicate whether to mute the speaker.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*
* @see @ref Mtc_ConfGetSpkMute
*/
MTCFUNC ZINT Mtc_ConfSetSpkMute(ZUINT iConfId, ZBOOL bMute);
/**
* @brief MTC session get the mute status of microphone.
*
* @param [in] iConfId The ID of session which you want to get.
*
* @retval ZTRUE on muted.
* @retval ZFALSE on not muted.
*
* @see @ref Mtc_ConfSetMicMute
*/
MTCFUNC ZBOOL Mtc_ConfGetMicMute(ZUINT iConfId);
/**
* @brief MTC session set the mute status of microphone.
*
* @param [in] iConfId The ID of session which you want to set.
* @param [in] bMute Indicate whether to mute the microphone.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*
* @see @ref Mtc_ConfGetMicMute
*/
MTCFUNC ZINT Mtc_ConfSetMicMute(ZUINT iConfId, ZBOOL bMute);
/**
* @brief MTC session set the dsp status.
*
* @param [in] bEnable Indicate whether to enable the dsp.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfDspSetEnable(ZBOOL bEnable);
/**
* @brief MTC session set the dsp status.
*
* @param [in] bEnable Indicate whether to enable the dsp.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*/
MTCFUNC ZINT Mtc_ConfDspSetEnable(ZBOOL bEnable);
/**
* @brief Type define of MTC filter callback.
* @param audio10ms is 10ms' data of audio
* @param bytes is the size of data.
* @param freqHz is sample rate
* @param channels is channel number
*/
typedef ZVOID(*PFN_MTCCONFILTER)(const ZCHAR* actorId,
ZVOID* audio10ms, ZINT bytes, ZINT freqHz, ZINT channels);
/**
* @brief Set filter callback of audio data
*
* @param pfnFilter The filter callback @ref PFN_MTCCONFILTER
*
* @retval ZOK
* @retval ZFAILED Fail to set callback.
*/
MTCFUNC ZINT Mtc_ConfSetPlayoutFilter(ZUINT iConfId, PFN_MTCCONFILTER pfnFilter);
/* mtc layout item */
typedef struct tagMTC_CONF_LAYOUT_ITEM
{
int id, x, y, w, h;
const char* name;
} ST_MTC_CONF_LAYOUT_ITEM;
/**
* @brief Type define of MTC layout callback.
* @param width is the width of canvas
* @param height is the height of canvas.
* @param item is the video in canvas
* @param size is the number of item
* @param sharerIndex is the index of sharer video at item
* @retval 1 will force
*/
typedef ZINT (*PFN_MTCCONFLAYOUT)(ZINT width, ZINT height,
ST_MTC_CONF_LAYOUT_ITEM item[], ZINT size, ZINT sharerIndex);
/**
* @brief Set layout callback of media data received
*
* @param pfnLayout The merge layout callback @ref PFN_MTCCONFLAYOUT
*
* @retval ZOK
* @retval ZFAILED Fail to set callback.
*/
MTCFUNC ZINT Mtc_ConfSetLayout(PFN_MTCCONFLAYOUT pfnLayout);
/**
* @brief Change Display Name while in meeting
* @param [in] iConfId The ID of session which you want to get.
* @param [in] pcUserUri The user's URI, ZNULL for self.
* @param [in] pcDisplayName Used to display name, must UTF-8 encoding.
*
* @retval ZOK
* @retval ZFAILED Fail to change display name.
*/
MTCFUNC ZINT Mtc_ConfChangeDisplayName(ZUINT iConfId, ZCONST ZCHAR *pcUserUri, ZCONST ZCHAR *pcDisplayName);
/**
* @brief Start forward video.
*
* @param iConfId The ID of conference.
* @param pcUserUri The user's URI, ZNULL for self.
*
* @return ZOK when succeed. ZFAILED when failed.
*/
MTCFUNC ZINT Mtc_ConfStartForwardVideo(ZUINT iConfId, ZCONST ZCHAR *pcUserUri);
/**
* @brief Stop forward video.
*
* @param iConfId The ID of conference.
* @param pcUserUri The user's URI, ZNULL for self.
*
* @return ZOK when succeed. ZFAILED when failed.
*/
MTCFUNC ZINT Mtc_ConfStopForwardVideo(ZUINT iConfId, ZCONST ZCHAR *pcUserUri);
/**
* @brief Start forward audio.
*
* @param iConfId The ID of conference.
* @param pcUserUri The user's URI, ZNULL for self.
*
* @return ZOK when succeed. ZFAILED when failed.
*/
MTCFUNC ZINT Mtc_ConfStartForwardAudio(ZUINT iConfId, ZCONST ZCHAR *pcUserUri);
/**
* @brief Stop forward audio.
*
* @param iConfId The ID of conference.
* @param pcUserUri The user's URI, ZNULL for self.
*
* @return ZOK when succeed. ZFAILED when failed.
*/
MTCFUNC ZINT Mtc_ConfStopForwardAudio(ZUINT iConfId, ZCONST ZCHAR *pcUserUri);
/**
* @brief Start video.
*
* @param iConfId The ID of conference.
*
* @return ZOK when succeed. ZFAILED when failed.
*/
MTCFUNC ZINT Mtc_ConfStartVideo(ZUINT iConfId);
/**
* @brief Stop video.
*
* @param iConfId The ID of conference.
*
* @return ZOK when succeed. ZFAILED when failed.
*/
MTCFUNC ZINT Mtc_ConfStopVideo(ZUINT iConfId);
/**
* @brief Start audio.
*
* @param iConfId The ID of conference.
*
* @return ZOK when succeed. ZFAILED when failed.
*/
MTCFUNC ZINT Mtc_ConfStartAudio(ZUINT iConfId);
/**
* @brief Stop audio.
*
* @param iConfId The ID of conference.
*
* @return ZOK when succeed. ZFAILED when failed.
*/
MTCFUNC ZINT Mtc_ConfStopAudio(ZUINT iConfId);
/**
* @brief MTC session subscribe audio of the meeting.
*
* @param [in] iConfId The ID of session which you want to set.
* @param [in] bSubscribe Indicate whether to subscribe the voice.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*
*/
MTCFUNC ZINT Mtc_ConfSubscribeAudio(ZUINT iConfId, ZBOOL bSubscribe);
/**
* @brief MTC session subscribe audio of one user in meeting. you can get the muted list @ref Mtc_ConfGetAudioMutedUserList
*
* @param [in] iConfId The ID of session which you want to set.
* @param [in] pcUserUri The Uri of user which you want to set.
* @param [in] bSubscribe Indicate whether to subscribe the voice.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*
*/
MTCFUNC ZINT Mtc_ConfSubscribeUserAudio(ZUINT iConfId, ZCONST ZCHAR* pcUserUri, ZBOOL bSubscribe);
/**
* @brief MTC session set merge capture of the meeting.
*
* @param [in] iConfId The ID of session which you want to set.
* @param [in] bMerge Indicate whether to merge the capture.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*
*/
MTCFUNC ZINT Mtc_ConfSetMergeCapture(ZUINT iConfId, ZBOOL bMerge);
/**
* @brief MTC session set key interval of video codec.
*
* @param [in] iConfId The ID of session which you want to set.
* @param [in] iValue key interval time in milliseconds, such as 2000.
*
* @retval ZOK on succeed.
* @retval ZFAILED on failure.
*
*/
MTCFUNC ZINT Mtc_ConfSetMergeKeyInterval(ZUINT iConfId, ZUINT iValue);
/**
* @brief Set participant as player.
*
* @param iConfId The ID of conference.
* @param pcUserUri The user's URI, ZNULL for self.
*
* @return ZOK when succeed. ZFAILED when failed.
*/
MTCFUNC ZINT Mtc_ConfSetPlayer(ZUINT iConfId, ZCONST ZCHAR *pcUserUri);
/**
* @brief Set participant as owner.
*
* @param iConfId The ID of conference.
* @param pcUserUri The user's URI, ZNULL for self.
*
* @return ZOK when succeed. ZFAILED when failed.
*/
MTCFUNC ZINT Mtc_ConfSetOwner(ZUINT iConfId, ZCONST ZCHAR *pcUserUri);
#ifdef __cplusplus
}
#endif
#endif /* _MTC_CONF_H__ */