NIMAVChatDefs.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698
  1. //
  2. // NIMAVChatDefs.h
  3. // NIMAVChat
  4. //
  5. // Created by Netease on 16/10/28.
  6. // Copyright © 2016年 Netease. All rights reserved.
  7. //
  8. #ifndef NIMAVChatDefs_h
  9. #define NIMAVChatDefs_h
  10. /**
  11. 视频方向
  12. */
  13. typedef NS_ENUM(NSInteger, NIMVideoOrientation) {
  14. /**
  15. * 默认方向
  16. */
  17. NIMVideoOrientationDefault = 0,
  18. /**
  19. * 垂直方向, home 键朝下
  20. */
  21. NIMVideoOrientationPortrait = 1,
  22. /**
  23. * 垂直方向, home 键朝上
  24. */
  25. NIMVideoOrientationPortraitUpsideDown = 2,
  26. /**
  27. * 水平方向, home 键在右边
  28. */
  29. NIMVideoOrientationLandscapeRight = 3,
  30. /**
  31. * 水平方向, home 键在左边
  32. */
  33. NIMVideoOrientationLandscapeLeft = 4,
  34. };
  35. /**
  36. 视频采集格式
  37. */
  38. typedef NS_ENUM(NSInteger, NIMNetCallVideoCaptureFormat) {
  39. /**
  40. * NV12 格式, full range, 对应 kCVPixelFormatType_420YpCbCr8BiPlanarFullRange
  41. */
  42. NIMNetCallVideoCaptureFormat420f = 0,
  43. /**
  44. * NV12 格式, video range, 对应 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange
  45. */
  46. NIMNetCallVideoCaptureFormat420v = 1,
  47. /**
  48. * ARGB 格式, 对应 kCVPixelFormatType_32BGRA
  49. */
  50. NIMNetCallVideoCaptureFormatBGRA = 2,
  51. };
  52. /**
  53. * 网络通话视频质量
  54. */
  55. typedef NS_ENUM(NSInteger, NIMNetCallVideoQuality) {
  56. /**
  57. * 默认视频质量. 一般是 480P 等级
  58. */
  59. NIMNetCallVideoQualityDefault = 0,
  60. /**
  61. * 低视频质量
  62. */
  63. NIMNetCallVideoQualityLow = 1,
  64. /**
  65. * 中等视频质量
  66. */
  67. NIMNetCallVideoQualityMedium = 2,
  68. /**
  69. * 高视频质量
  70. */
  71. NIMNetCallVideoQualityHigh = 3,
  72. /**
  73. * 480P 等级视频质量
  74. */
  75. NIMNetCallVideoQuality480pLevel = 4,
  76. /**
  77. * 540P 等级视频质量
  78. */
  79. NIMNetCallVideoQuality540pLevel = 5,
  80. /**
  81. * 720P 等级视频质量
  82. */
  83. NIMNetCallVideoQuality720pLevel = 6,
  84. };
  85. /**
  86. * 画面裁剪
  87. */
  88. typedef NS_ENUM(NSInteger, NIMNetCallVideoCrop) {
  89. /**
  90. * 16:9 裁剪
  91. */
  92. NIMNetCallVideoCrop16x9 = 0,
  93. /**
  94. * 4:3 裁剪
  95. */
  96. NIMNetCallVideoCrop4x3 = 1,
  97. /**
  98. * 1:1 裁剪
  99. */
  100. NIMNetCallVideoCrop1x1 = 2,
  101. /**
  102. * 不裁剪
  103. */
  104. NIMNetCallVideoCropNoCrop = 3,
  105. };
  106. /**
  107. * 视频编码器
  108. */
  109. typedef NS_ENUM(NSUInteger, NIMNetCallVideoCodec) {
  110. /**
  111. * 默认编解码器, SDK 自己选择合适的编码器
  112. */
  113. NIMNetCallVideoCodecDefault = 0,
  114. /**
  115. * 软件编解码
  116. */
  117. NIMNetCallVideoCodecSoftware = 1,
  118. /**
  119. * 硬件编解码. 注意: 硬件编解码只在 iOS 8.0 及以上系统适用
  120. */
  121. NIMNetCallVideoCodecHardware = 2,
  122. };
  123. /**
  124. * 视频帧率
  125. */
  126. typedef NS_ENUM(NSUInteger, NIMNetCallVideoFrameRate) {
  127. /**
  128. * SDK 支持的最小帧率
  129. */
  130. NIMNetCallVideoFrameRateMin = 0,
  131. /**
  132. * 5 FPS
  133. */
  134. NIMNetCallVideoFrameRate5FPS,
  135. /**
  136. * 10 FPS
  137. */
  138. NIMNetCallVideoFrameRate10FPS,
  139. /**
  140. * 15 FPS
  141. */
  142. NIMNetCallVideoFrameRate15FPS,
  143. /**
  144. * 20 FPS
  145. */
  146. NIMNetCallVideoFrameRate20FPS,
  147. /**
  148. * 25 FPS
  149. */
  150. NIMNetCallVideoFrameRate25FPS,
  151. /**
  152. * 缺省帧率. 15 FPS
  153. */
  154. NIMNetCallVideoFrameRateDefault,
  155. /**
  156. * SDK 支持的最大帧率
  157. */
  158. NIMNetCallVideoFrameRateMax,
  159. };
  160. /**
  161. * 网络通话类型
  162. */
  163. typedef NS_ENUM(NSInteger, NIMNetCallMediaType){
  164. /**
  165. * 音频通话
  166. */
  167. NIMNetCallMediaTypeAudio = 1,
  168. /**
  169. * 视频通话
  170. */
  171. NIMNetCallMediaTypeVideo = 2,
  172. };
  173. /**
  174. * 场景
  175. */
  176. typedef NS_ENUM(NSUInteger, NIMAVChatScene) {
  177. /**
  178. * 默认场景
  179. */
  180. NIMAVChatSceneDefault,
  181. /**
  182. * 高清音乐场景. 只在 preferHDAudio 开启时生效
  183. */
  184. NIMAVChatSceneHighQualityMusic,
  185. /**
  186. * 自适应高清音乐场景. 只在 preferHDAudio 开启时生效. 该场景在多人会议中无其他端或者其他端都是观众时适时自动适配高清音乐,当其他端有发言者时自动适配 VoIP 通话
  187. */
  188. NIMAVChatSceneHighQualityMusicAdaptive,
  189. };
  190. /**
  191. * 视频调控策略
  192. */
  193. typedef NS_ENUM(NSUInteger, NIMAVChatVideoAdaptiveStrategy) {
  194. /**
  195. * 流畅优先
  196. */
  197. NIMAVChatVideoAdaptiveStrategySmooth = 1,
  198. /**
  199. * 清晰优先
  200. */
  201. NIMAVChatVideoAdaptiveStrategyQuality = 2,
  202. /**
  203. * 录屏模式
  204. */
  205. NIMAVChatVideoAdaptiveStrategyScreenRecord = 3,
  206. };
  207. /**
  208. * 回声抑制
  209. */
  210. typedef NS_ENUM(NSUInteger, NIMAVChatAcousticEchoCanceler) {
  211. /**
  212. * 默认回声抑制
  213. */
  214. NIMAVChatAcousticEchoCancelerDefault = 0,
  215. /**
  216. * SDK 内建回声抑制
  217. */
  218. NIMAVChatAcousticEchoCancelerSDKBuiltin,
  219. /**
  220. * 关闭回声抑制
  221. */
  222. NIMAVChatAcousticEchoCancelerClose,
  223. };
  224. /**
  225. * 音视频混屏模式, 用于互动直播连麦时的音视频混屏参数设置
  226. */
  227. typedef NS_ENUM(NSUInteger, NIMNetCallBypassStreamingMixMode) {
  228. /**
  229. * 右侧纵排浮窗(画中画)
  230. */
  231. NIMNetCallBypassStreamingMixModeFloatingRightVertical = 0,
  232. /**
  233. * 左侧纵排浮窗(画中画)
  234. */
  235. NIMNetCallBypassStreamingMixModeFloatingLeftVertical = 1,
  236. /**
  237. * 分格平铺, 显示完整画面, 不裁剪
  238. */
  239. NIMNetCallBypassStreamingMixModeLatticeAspectFit = 2,
  240. /**
  241. * 分格平铺, 填满区域, 可能裁剪
  242. */
  243. NIMNetCallBypassStreamingMixModeLatticeAspectFill = 3,
  244. /**
  245. * 自定义视频布局
  246. */
  247. NIMNetCallBypassStreamingMixModeCustomVideoLayout = 4,
  248. /**
  249. * 自定义音频布局(混屏人数)
  250. */
  251. NIMNetCallBypassStreamingMixModeCustomAudioLayout = 5,
  252. };
  253. /**
  254. * NIM 网络通话 Error Domain
  255. */
  256. extern NSString *const NIMNetCallErrorDomain;
  257. /**
  258. * 网络通话错误码
  259. */
  260. typedef NS_ENUM(NSInteger, NIMNetCallErrorCode) {
  261. /**
  262. * 网络通话没有启动
  263. */
  264. NIMNetCallErrorCodeNotStarted = 20001,
  265. /**
  266. * 操作失败
  267. */
  268. NIMNetCallErrorCodeOperationFailed = 20002,
  269. /**
  270. * 超过最大允许直播节点数量
  271. */
  272. NIMNetCallErrorCodeBypassSetExceedMax = 20202,
  273. /**
  274. * 必须由主播第一个开启直播
  275. */
  276. NIMNetCallErrorCodeBypassSetHostNotJoined = 20203,
  277. /**
  278. * 互动直播服务器错误
  279. */
  280. NIMNetCallErrorCodeBypassSetServerError = 20204,
  281. /**
  282. * 互动直播其他错误
  283. */
  284. NIMNetCallErrorCodeBypassSetOtherError = 20205,
  285. /**
  286. * 互动直播服务器没有响应
  287. */
  288. NIMNetCallErrorCodeBypassSetNoResponse = 20404,
  289. /**
  290. * 重连过程中无法进行相关操作,稍后再试
  291. */
  292. NIMNetCallErrorCodeBypassReconnecting = 20405,
  293. /**
  294. * 互动直播设置超时
  295. */
  296. NIMNetCallErrorCodeBypassSetTimeout = 20408,
  297. /**
  298. * 与音视频服务器连接断开
  299. */
  300. NIMNetCallErrorCodeServerDisconnected = 20409,
  301. /**
  302. * 对方超时离开了房间
  303. */
  304. NIMNetCallErrorCodePeerLeftForTimeout = 20410,
  305. /**
  306. * 音频设备异常
  307. */
  308. NIMNetCallErrorCodeAudioDeviceError = 20411,
  309. /**
  310. * 被踢出了音视频
  311. */
  312. NIMNetCallErrorCodeBeKicked = 20412,
  313. /**
  314. * 房间被关闭
  315. */
  316. NIMNetCallErrorCodeChannelClosed = 20413,
  317. };
  318. /**
  319. * 本地错误码 (AV) Doamin: NIMLocalErrorDomain
  320. */
  321. typedef NS_ENUM(NSInteger, NIMAVLocalErrorCode) {
  322. /**
  323. * 有正在进行的网络通话
  324. */
  325. NIMAVLocalErrorCodeNetCallBusy = 10012,
  326. /**
  327. * 这一通网络通话已经被其他端处理过了
  328. */
  329. NIMAVLocalErrorCodeNetCallOtherHandled = 10013,
  330. /**
  331. * 音频设备初始化失败
  332. */
  333. NIMAVLocalErrorCodeAudioDeviceInitFailed = 10015,
  334. /**
  335. * 无法开始录制, 因为文件路径不合法
  336. */
  337. NIMAVLocalErrorCodeRecordInvalidFilePath = 10017,
  338. /**
  339. * 开始录制失败
  340. */
  341. NIMAVLocalErrorCodeRecordStartFailed = 10018,
  342. /**
  343. * 创建录制文件失败
  344. */
  345. NIMAVLocalErrorCodeRecordCreateFileFailed = 10019,
  346. /**
  347. * 初始化录制音频失败
  348. */
  349. NIMAVLocalErrorCodeRecordInitAudioFailed = 10020,
  350. /**
  351. * 初始化录制视频失败
  352. */
  353. NIMAVLocalErrorCodeRecordInitVideoFailed = 10021,
  354. /**
  355. * 开始写录制文件失败
  356. */
  357. NIMAVLocalErrorCodeRecordStartWritingFailed = 10022,
  358. /**
  359. * 结束录制失败
  360. */
  361. NIMAVLocalErrorCodeRecordStopFailed = 10023,
  362. /**
  363. * 写录制文件失败
  364. */
  365. NIMAVLocalErrorCodeRecordWritingFileFailed = 10024,
  366. /**
  367. * 空间不足,录制即将结束
  368. */
  369. NIMAVLocalErrorCodeRecordWillStopForLackSpace = 10025,
  370. /**
  371. * 操作尚未完成
  372. */
  373. NIMAVLocalErrorCodeOperationIncomplete = 10027,
  374. /**
  375. * 连接网络通话服务器超时
  376. */
  377. NIMAVLocalErrorCodeNetCallConnectTimeout = 10029,
  378. /**
  379. * 非互动直播用户无法加入开启互动直播的房间,互动直播用户指主播和连麦者
  380. */
  381. NIMAVLocalErrorCodeNetCallCannotJoinBypassChannel = 10030,
  382. /**
  383. * 该频道超过了互动直播房间用户数限制: 每个房间只能有一个主播和三个连麦者
  384. */
  385. NIMAVLocalErrorCodeNetCallTooManyBypassStreamers = 10031,
  386. /**
  387. * 该房间超过了互动直播主播数限制: 每个房间只能有一个主播和三个连麦者
  388. */
  389. NIMAVLocalErrorCodeNetCallTooManyBypassStreamingHosts = 10032,
  390. /**
  391. * 主播尚未加入互动直播房间,连麦者无法在主播之前加入
  392. */
  393. NIMAVLocalErrorCodeNetCallHostNotJoined = 10033,
  394. /**
  395. * 主播设置定制布局参数错误
  396. */
  397. NIMAVLocalErrorCodeBypassStreamingCustomLayoutError = 10034,
  398. };
  399. /**
  400. * 互动直播设置主画面错误码 (AV) Doamin:NIMAVRoomServerErrorDomain
  401. */
  402. typedef NS_ENUM(NSInteger, NIMAVRoomServerErrorCode) {
  403. /**
  404. * 服务器错误
  405. */
  406. NIMAVRoomServerErrorServerError = 101,
  407. /**
  408. * 请求失败
  409. */
  410. NIMAVRoomServerErrorConnctionFailed = 102,
  411. /**
  412. * 发起者不是主播
  413. */
  414. NIMAVRoomServerErrorNotAnchor = 103,
  415. /**
  416. * 模式错误
  417. */
  418. NIMAVRoomServerErrorModeFault = 104,
  419. /**
  420. * 请求参数错误
  421. */
  422. NIMAVRoomServerErrorUserInvalidParam = 400,
  423. /**
  424. * 请求认证错误
  425. */
  426. NIMAVRoomServerErrorKeyInvalid = 401,
  427. /**
  428. * 房间不存在
  429. */
  430. NIMAVRoomServerErrorRoomNotExsit = 404,
  431. /**
  432. * 房间内不存在该用户
  433. */
  434. NIMAVRoomServerErrorUserNotJoined = 405,
  435. /**
  436. * 请求数据错误
  437. */
  438. NIMAVRoomServerErrorInvalidRequst = 417,
  439. /**
  440. * 服务器内部错误
  441. */
  442. NIMAVRoomServerErrorServerUnknown = 500,
  443. };
  444. /**
  445. * 服务器错误码 (AV) Doamin: NIMRemoteErrorDomain
  446. * @discussion 更多错误详见 [服务器端状态码](http://dev.netease.im/docs?doc=nim_status_code#服务器端状态码)
  447. */
  448. typedef NS_ENUM(NSInteger, NIMAVRemoteErrorCode) {
  449. /**
  450. * 被叫离线(无可送达的被叫方)
  451. */
  452. NIMAVRemoteErrorCodeCalleeOffline = 11001,
  453. };
  454. /**
  455. * 网络通话的网络状态
  456. */
  457. typedef NS_ENUM(NSInteger, NIMNetCallNetStatus){
  458. /**
  459. * 网络极差,视频发送被关闭
  460. */
  461. NIMNetCallNetStatusVideoClosed = -1,
  462. /**
  463. * 网络非常好
  464. */
  465. NIMNetCallNetStatusVeryGood = 0,
  466. /**
  467. * 网络好
  468. */
  469. NIMNetCallNetStatusGood = 1,
  470. /**
  471. * 网络弱
  472. */
  473. NIMNetCallNetStatusPoor = 2,
  474. /**
  475. * 网络差
  476. */
  477. NIMNetCallNetStatusBad = 3,
  478. /**
  479. * 网络极差, 建议停止视频发送
  480. */
  481. NIMNetCallNetStatusVeryBad = 4,
  482. };
  483. /**
  484. * 用户离开多人实时会话的原因
  485. */
  486. typedef NS_ENUM(NSUInteger, NIMRTSConferenceUserLeaveReason) {
  487. /**
  488. * 正常离开
  489. */
  490. NIMRTSConferenceUserLeaveReasonNormal,
  491. /**
  492. * 超时离开
  493. */
  494. NIMRTSConferenceUserLeaveReasonTimeout,
  495. };
  496. /**
  497. * 互动直播状态码
  498. */
  499. typedef NS_ENUM(NSUInteger, NIMBypassStreamingStatus) {
  500. /**
  501. * 初始状态
  502. */
  503. NIMBypassStreamingStatusInitial = 500,
  504. /**
  505. * 主播设置定制布局参数错误
  506. */
  507. NIMBypassStreamingStatusLayoutError = 501,
  508. /**
  509. * 开始连接
  510. */
  511. NIMBypassStreamingStatusConnecting = 502,
  512. /**
  513. * 连接成功
  514. */
  515. NIMBypassStreamingStatusConnected = 503,
  516. /**
  517. * 连连接失败
  518. */
  519. NIMBypassStreamingStatusConnectFailed = 504,
  520. /**
  521. * 推流中
  522. */
  523. NIMBypassStreamingStatusPushing = 505,
  524. /**
  525. * 推流中
  526. */
  527. NIMBypassStreamingStatusPushFailed = 506,
  528. /**
  529. * 互动直播服务器内部错误
  530. */
  531. NIMBypassStreamingStatusInternalError = 507,
  532. /**
  533. * 人数超出限制
  534. */
  535. NIMBypassStreamingStatusUserCountLimit = 508,
  536. };
  537. /**
  538. * 美颜滤镜类型
  539. */
  540. typedef NS_ENUM(NSUInteger, NIMNetCallFilterType) {
  541. /**
  542. * 无滤镜
  543. */
  544. NIMNetCallFilterTypeNormal = 0,
  545. /**
  546. * 黑白
  547. */
  548. NIMNetCallFilterTypeSepia,
  549. /**
  550. * 自然
  551. */
  552. NIMNetCallFilterTypeZiran,
  553. /**
  554. * 粉嫩
  555. */
  556. NIMNetCallFilterTypeMeiyan1,
  557. /**
  558. * 怀旧
  559. */
  560. NIMNetCallFilterTypeMeiyan2,
  561. };
  562. /**
  563. * 水印位置
  564. */
  565. typedef NS_ENUM(NSUInteger, NIMNetCallWaterMarkLocation) {
  566. /**
  567. * 由rect的origin定位置
  568. */
  569. NIMNetCallWaterMarkLocationRect = 0,
  570. /**
  571. * 左上
  572. */
  573. NIMNetCallWaterMarkLocationLeftUp,
  574. /**
  575. * 左下
  576. */
  577. NIMNetCallWaterMarkLocationLeftDown,
  578. /**
  579. * 右上
  580. */
  581. NIMNetCallWaterMarkLocationRightUp,
  582. /**
  583. * 右下
  584. */
  585. NIMNetCallWaterMarkLocationRightDown,
  586. /**
  587. * 中间
  588. */
  589. NIMNetCallWaterMarkLocationCenter
  590. };
  591. /**
  592. * 对焦模式
  593. */
  594. typedef NS_ENUM(NSUInteger, NIMNetCallFocusMode) {
  595. /**
  596. * 手动对焦
  597. */
  598. NIMNetCallFocusModeManual = 1,
  599. /**
  600. * 自动对焦
  601. */
  602. NIMNetCallFocusModeAuto,
  603. };
  604. /**
  605. * NIM 多人实时会话 Error Domain
  606. */
  607. extern NSString *const NIMRTSConferenceErrorDomain;
  608. /**
  609. * 多人实时会话错误码
  610. */
  611. typedef NS_ENUM(NSInteger, NIMRTSConferenceErrorCode) {
  612. /**
  613. * 与服务器连接已断开
  614. */
  615. NIMRTSConferenceErrorCodeServerDisconnected = 21001,
  616. /**
  617. * TCP 连接关闭
  618. */
  619. NIMRTSConferenceErrorCodeTcpConnectionClosed = 21002,
  620. };
  621. #endif /* NIMAVChatDefs_h */