Blame view

LiveChat/SDK/include/lemon/service/rcs/mtc_conf.h 45 KB
9f17d59e   陈明泉   no message
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
  /************************************************************************
  
          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__
  
  /**
   * @file
   * @brief MTC Conference Interfaces
   *
   * This file includes session and conference interface function.
   */
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  /** @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,         /**< @brief Unknown reason. */
      EN_MTC_CONF_REASON_LEAVED,          /**< @brief Leaved. */
      EN_MTC_CONF_REASON_KICKED,          /**< @brief Kicked off. */
      EN_MTC_CONF_REASON_INVALID_PARM,    /**< @brief Invalid parameter. */
      EN_MTC_CONF_REASON_OFFLINE,         /**< @brief Peer is offline. */
      EN_MTC_CONF_REASON_INVALID_CONF,    /**< @brief Invalid conference. */
      EN_MTC_CONF_REASON_INVALID_PARTP,   /**< @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_MEDIA_ENGINE,    /**< @brief Media engine. */
      EN_MTC_CONF_REASON_DECLINE,
      EN_MTC_CONF_REASON_ACCOUNT_NOT_EXIST, /**< @brief Account not exist. */
      EN_MTC_CONF_REASON_NETWORK,          /**< @brief Network error. */
      EN_MTC_CONF_REASON_MEMBER_FULL,      /**< @brief Member full. */
      EN_MTC_CONF_REASON_OVER,            /**< @brief Conference over. */
      EN_MTC_CONF_REASON_NOT_EXSIT,       /**< @brief Conference not exsit. */
  } EN_MTC_CONF_REASON_TYPE;
  
  /**
   * @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 state of speech right control */
  #define MTC_CONF_STATE_SPEECH_RIGHT_CONTROL 0x100
  /** @brief The state of presenter */
  #define MTC_CONF_STATE_PRESENTER            0x200
  /** @brief The state of document sharing */
  #define MTC_CONF_STATE_DOCUMENT_SHARING     0x400
  
  /** @brief The valid service mask */
  #define MTC_CONF_STATE_SERVICE_MASK \
      ( MTC_CONF_STATE_SPEECH_RIGHT_CONTROL \
      | MTC_CONF_STATE_PRESENTER \
      | MTC_CONF_STATE_DOCUMENT_SHARING)
  /** @} */
  
  /**
   * @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            0x03
  /** @brief his event will be broadcast */
  #define MTC_CONF_ROLE_PLAYER           0x04
  /** @brief normal participant, this is default roles */
  #define MTC_CONF_ROLE_PARTP            0x07
  /** @brief the autogen by Conference and only one participant */
  #define MTC_CONF_ROLE_OWNER            0x08
  
  /** @brief The role of speech right control */
  #define MTC_CONF_ROLE_SPEECH_RIGHT_CONTROL 0x100
  /** @brief The role of presenter */
  #define MTC_CONF_ROLE_PRESENTER            0x200
  /** @brief The role of document sharing */
  #define MTC_CONF_ROLE_DOCUMENT_SHARING     0x400
  
  /** @brief The valid service mask */
  #define MTC_CONF_ROLE_SERVICE_MASK \
      ( MTC_CONF_ROLE_SPEECH_RIGHT_CONTROL \
      | MTC_CONF_ROLE_PRESENTER \
      | MTC_CONF_ROLE_DOCUMENT_SHARING)
  /** @} */
  
  /**
   * @defgroup MtcConfCap MTC participant capability of conference.
   * @{}
   */
  /** @brief The capability of speech right control */
  #define MTC_CONF_CAP_SPEECH_RIGHT_CONTROL 0x100
  /** @brief The capability of presenter */
  #define MTC_CONF_CAP_PRESENTER            0x200
  /** @brief The capability of document sharing */
  #define MTC_CONF_CAP_DOCUMENT_SHARING     0x400
  /** @c} */
  
  /**
   * @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 MtcConfCdnViewMode MTC conference CDN video merge mode.
   * @{
   */
  /** @brief Merge screen content without any attendee's camera content. */
  #define MTC_CONF_CDN_VIEW_MODE_SCREEN    0x01
  /** @brief Merge screen content with all attendees' camera content. */
  #define MTC_CONF_CDN_VIEW_MODE_PLATFORM  0x02
  /** @brief Merge screen content with the speaker's camera content. */
  #define MTC_CONF_CDN_VIEW_MODE_SPEAKER   0x03
  /** @} */
  
  /**
   * @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 
   * 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 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 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 MtcConfNetworkKey             "MtcConfNetworkKey"
  
  /**
   * @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 MtcConfNetworkKey.
   */
  #define MtcConfPartpNetworkLstKey        "MtcConfPartpNetworkLstKey"
  
  /**
   * @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"
  
  /** @} */
  
  /**
   * @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 string object in json format reflecting 
   * the conference passard.
   */
  #define MtcConfPasswordKey              "MtcConfPasswordKey"
  
  /**
   * @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 string object in json format reflecting 
   * the CDN push address, if empty will auto choosed.
   */
  #define MtcConfCdnPushAddressKey        "MtcConfCdnPushAddressKey"
  
  /**
   * @brief A key whose value is a number object in json format reflecting 
   * the CDN video merge mode, @ref MtcConfCdnViewMode.
   */
  #define MtcConfCdnViewModeKey           "MtcConfCdnViewModeKey"
  
  /**
   * @brief A key whose value is a number object in json format reflecting 
   * the CDN video picture size, @ref MtcConfPs.
   */
  #define MtcConfCdnPictureSizeKey        "MtcConfCdnPictureSizeKey"
  
  /** @} */
  
  /**
   * @defgroup MtcConfNotification MTC notification of conference event.
   * @{
   */
  
  /**
   * @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
   */
  #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.
   */
  #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
   */
  #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 join to a conference successfully.
   *
   * 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
   */
  #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.
   */
  #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.
   */
  #define MtcConfInviteDidFailNotification    "MtcConfInviteDidFailNotification"
  
  /**
   * @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 MtcConfPartpNetworkLstKey.
   */
  #define MtcConfNetworkChangedNotification    "MtcConfNetworkChangedNotification"
  
  /**
   * @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 there is an error.
   *
   * The pcInfo of this notification contains
   * @ref MtcConfIdKey
   * @ref MtcConfNumberKey
   * @ref MtcConfEventKey
   * @ref MtcConfReasonKey.
   */
  #define MtcConfErrorNotification            "MtcConfErrorNotification"
  
  /** @} */
  
  /** 
   * @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.
   * @deprecated replaced by Mtc_ConfCreateEx
   *
   * @param [in] zCookie Used to correspond conference with UI resource.
   * @param [in] pcTitle Conference title.
   * @param [in] pcPassword Conference password.
   * @param [in] bVideo ZTRUE for video conference, ZFALSE for voice conference.
   *
   * @retval ZOK on succeed. 
   * @retval ZFAILED on failure.
   */
  MTCFUNC ZINT Mtc_ConfCreate(ZCOOKIE zCookie, ZCONST ZCHAR *pcTitle,
      ZCONST ZCHAR *pcPassword, ZBOOL bVideo);
  
  /** 
   * @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] 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,
   *                     @ref MtcConfViewModeKey
   *
   * @retval ZOK on succeed. 
   * @retval ZFAILED on failure.
   */
  MTCFUNC ZINT Mtc_ConfCreateEx(ZCOOKIE zCookie, ZCONST ZCHAR *pcTitle,
      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] 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, 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.
   *
   * @return The conference ID when send request successfully.
   * Otherwise return ZMAXUINT.
   *
   * @see Mtc_ConfCreate
   */
  MTCFUNC ZUINT Mtc_ConfJoin(ZCONST ZCHAR *pcUri, ZCOOKIE zCookie);
  
  /** 
   * @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] pcPassord 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 Create and join a conference.
   * 
   * @param  pcUdid        The User Defined ID of conference.
   * @param  zCookie       The cookie value.
   * @param  pcDisplayName The display name string.
   * @param  bVideo        Video flag.
   * 
   * @return The conference ID when send request successfully.
   * Otherwise return ZMAXUINT.
   */
  MTCFUNC ZUINT Mtc_ConfJoinX(ZCONST ZCHAR *pcUdid, ZCOOKIE zCookie,
      ZCONST ZCHAR *pcDisplayName, ZBOOL bVideo);
  
  /** 
   * @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 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.
   *
   * @retval ZOK on succeed.
   * @retval ZFAILED on failure.
   *
   * @see Mtc_ConfInviteUser
   */
  MTCFUNC ZINT Mtc_ConfDeclineInvite(ZCONST ZCHAR *pcUri, ZCONST ZCHAR *pcUserUri);
  
  /** 
   * @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 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 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.
   *
   * @retval ZOK on succeed.
   * @retval ZFAILED on failure.
   */
  MTCFUNC ZINT Mtc_ConfSetFileAsMicrophone(ZUINT iConfId, ZCONST ZCHAR *pcName);
  
  /** 
   * @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 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 merge param of media data received 
   *
   * @param [in] iConfId The ID of conference.
   * @param [in] iPictureSize The merged video quality, the picture size value @ref MtcConfPs.
   * @param [in] iMergeMode The video merge mode @ref MtcConfCdnViewMode
   *
   * @retval ZOK
   * @retval ZFAILED Fail to set media data merge param.
   */
  MTCFUNC ZINT Mtc_ConfConfigMediaMerge(ZUINT iConfId, ZUINT iVideoLevel, ZUINT iMergeMode);
  
  /**
   * @brief Start record merged media data to the file 
   *
   * @param [in] iConfId The ID of conference.
   * @param [in] pcFileName The file name of media data record
   * @param [in] bRecAudio  Record with audio
   * @param [in] bRecVideo  Record with video
   *
   * @retval ZOK
   * @retval ZFAILED Fail to start file record.
   */
  MTCFUNC ZINT Mtc_ConfStartMediaRecord(ZUINT iConfId, ZCONST ZCHAR *pcFileName, ZBOOL bRecAudio, ZBOOL bRecVideo);
  
  /**
   * @brief Stop record merged media data to the file 
   *
   * @param [in] iConfId The ID of conference.
   *
   * @retval ZOK
   * @retval ZFAILED Fail to stop file record.
   */
  MTCFUNC ZINT Mtc_ConfStopMediaRecord(ZUINT iConfId);
  
  /** 
   * @brief Start delivery conference to CDN
   *
   * @param [in] iConfId The ID of conference.
   * @param [in] pcCdnUri the CDN Server URI of push target address.
   *
   * @retval ZOK
   * @retval ZFAILED Fail to start media delivery.
   */
  MTCFUNC ZINT Mtc_ConfStartDelivery(ZUINT iConfId, ZCONST ZCHAR *pcCdnUri);
  
  /** 
   * @brief Stop delivery conference to CDN.
   *
   * @param [in] iConfId The ID of conference.
   *
   * @retval ZOK
   * @retval ZFAILED Fail to start media declivery.
   */
  MTCFUNC ZINT Mtc_ConfStopDelivery(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 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 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 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);
  
  /**
   * @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.
   *
   * @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();
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif /* _MTC_CONF_H__ */