TiSDKInterface.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612
  1. //
  2. // TiSDKInterface.h
  3. // TiSDK
  4. //
  5. // Created by Cat66 on 2018/5/10.
  6. // Copyright © 2018年 Tillusory Tech. All rights reserved.
  7. //
  8. #import <UIKit/UIKit.h>
  9. #import <Foundation/Foundation.h>
  10. #import <OpenGLES/ES2/gl.h>
  11. /**
  12. * 初始化状态回调值
  13. */
  14. typedef struct InitStatus {
  15. NSInteger code ;
  16. NSString *message;
  17. } InitStatus;
  18. typedef void (^TiInitCallbackBlock)(InitStatus callBack);
  19. /***************************
  20. * TiSDK初始化
  21. ***************************/
  22. @interface TiSDK : NSObject
  23. /**
  24. * 初始化函数一
  25. *
  26. * @param key TiSDK鉴权Key
  27. */
  28. + (TiSDK *)init:(NSString *)key;
  29. /**
  30. * 初始化函数二
  31. *
  32. * @param key TiSDK在线鉴权Key
  33. * @param block 初始化回调block
  34. */
  35. + (TiSDK *)init:(NSString *)key CallBack:(TiInitCallbackBlock)block;
  36. /**
  37. * 初始化函数三,适配最新版本swift
  38. *
  39. * @param key TiSDK在线鉴权Key
  40. * @param block 初始化回调block
  41. */
  42. + (TiSDK *)initSDK:(NSString *)key CallBack:(TiInitCallbackBlock)block;
  43. /**
  44. * 初始化函数四
  45. *
  46. * @param license TiSDK离线鉴权License
  47. */
  48. + (TiSDK *)initOffline:(NSString *)license;
  49. /**
  50. * 资源文件(贴纸、礼物、水印)URL是否获取成功通知名称
  51. */
  52. #define TiResourceURLNotificationName @"TiResourceURLNotification"
  53. /**
  54. * 贴纸文件URL地址设置函数
  55. */
  56. + (void)setStickerUrl:(NSString *)url;
  57. /**
  58. * 贴纸文件URL地址获取函数
  59. */
  60. + (NSString *)getStickerURL;
  61. /**
  62. * 贴纸IconURL地址设置函数
  63. */
  64. + (void)setStickerThumbUrl:(NSString *)url;
  65. /**
  66. * 贴纸IconURL地址获取函数
  67. */
  68. + (NSString *)getStickerIconURL;
  69. /**
  70. * 礼物文件URL地址设置函数
  71. */
  72. + (void)setGiftUrl:(NSString *)url;
  73. /**
  74. * 礼物文件URL地址获取函数
  75. */
  76. + (NSString *)getGiftURL;
  77. /**
  78. * 礼物IconURL地址设置函数
  79. */
  80. + (void)setGiftThumbUrl:(NSString *)url;
  81. /**
  82. * 礼物IconURL地址获取函数
  83. */
  84. + (NSString *)getGiftIconURL;
  85. /**
  86. * 水印文件URL地址设置函数
  87. */
  88. + (void)setWatermarkUrl:(NSString *)url;
  89. /**
  90. * 水印文件URL地址获取函数
  91. */
  92. + (NSString *)getWatermarkURL;
  93. /**
  94. * 水印IconURL地址设置函数
  95. */
  96. + (void)setWatermarkThumbUrl:(NSString *)url;
  97. /**
  98. * 水印IconURL地址获取函数
  99. */
  100. + (NSString *)getWatermarkIconURL;
  101. /**
  102. * 面具文件URL地址设置函数
  103. */
  104. + (void)setMaskUrl:(NSString *)url;
  105. /**
  106. * 面具文件URL地址获取函数
  107. */
  108. + (NSString *)getMaskURL;
  109. /**
  110. * 面具IconURL地址设置函数
  111. */
  112. + (void)setMaskThumbUrl:(NSString *)url;
  113. /**
  114. * 面具IconURL地址获取函数
  115. */
  116. + (NSString *)getMaskIconURL;
  117. /**
  118. * 绿幕文件URL地址设置函数
  119. */
  120. + (void)setGreenScreenUrl:(NSString *)url;
  121. /**
  122. * 绿幕文件URL地址获取函数
  123. */
  124. + (NSString *)getGreenScreenURL;
  125. /**
  126. * 绿幕IconURL地址设置函数
  127. */
  128. + (void)setGreenScreenThumbUrl:(NSString *)url;
  129. /**
  130. * 绿幕IconURL地址获取函数
  131. */
  132. + (NSString *)getGreenScreenIconURL;
  133. /**
  134. * 模型文件沙盒路径
  135. */
  136. + (NSString *)getModelPath;
  137. /**
  138. * 打开/关闭日志
  139. */
  140. + (void)setLog:(BOOL)enable;
  141. @end
  142. /****************************
  143. * TiSDK渲染管理器
  144. ***************************/
  145. @interface TiSDKManager : NSObject
  146. // 视频帧格式
  147. typedef NS_ENUM(NSInteger, TiImageFormatEnum) {
  148. RGBA = 3,
  149. NV21 = 1,
  150. BGRA = 0,
  151. RGB = 2,
  152. NV12 = 4,
  153. I420 = 5
  154. };
  155. // 旋转角度
  156. typedef NS_ENUM(NSInteger, TiRotationEnum){
  157. CLOCKWISE_0 = 0,
  158. CLOCKWISE_90 = 90,
  159. CLOCKWISE_180 = 180,
  160. CLOCKWISE_270 = 270
  161. };
  162. // Filter类型
  163. typedef NS_ENUM(NSInteger, TiFilterEnum) {
  164. NO_FILTER = 0, // 无
  165. SKETCH_FILTER = 1, // 素描
  166. SOBELEDGE_FILTER = 2, // 黑边
  167. TOON_FILTER = 3, // 卡通
  168. EMBOSS_FILTER = 4, // 浮雕
  169. FILM_FILTER = 5, // 胶片
  170. PIXELLATION_FILTER = 6, // 马赛克
  171. HALFTONE_FILTER = 7, // 半色调
  172. CROSSHATCH_FILTER = 8, // 交叉线
  173. NASHVILLE_FILTER = 9, // 那舍尔
  174. COFFEE_FILTER = 10, // 咖啡
  175. CHOCOLATE_FILTER = 11, // 巧克力
  176. COCO_FILTER = 12, // 可可
  177. DELICIOUS_FILTER = 13, // 美味
  178. FIRSTLOVE_FILTER = 14, // 初恋
  179. FOREST_FILTER = 15, // 森林
  180. GLOSSY_FILTER = 16, // 光泽
  181. GRASS_FILTER = 17, // 禾草
  182. HOLIDAY_FILTER = 18, // 假日
  183. KISS_FILTER = 19, // 初吻
  184. LOLITA_FILTER = 20, // 洛丽塔
  185. MEMORY_FILTER = 21, // 回忆
  186. MOUSSE_FILTER = 22, // 慕斯
  187. NORMAL_FILTER = 23, // 标准
  188. OXGEN_FILTER = 24, // 氧气
  189. PLATYCODON_FILTER = 25, // 桔梗
  190. RED_FILTER = 26, // 赤红
  191. SUNLESS_FILTER = 27, // 冷日
  192. PINCH_DISTORTION_FILTER = 28, // 扭曲
  193. KUWAHARA_FILTER = 29, // 油画
  194. POSTERIZE_FILTER = 30, // 分色
  195. SWIRL_DISTORTION_FILTER = 31, // 漩涡
  196. VIGNETTE_FILTER = 32, // 光晕
  197. ZOOM_BLUR_FILTER = 33, // 眩晕
  198. POLKA_DOT_FILTER = 34, // 圆点
  199. POLAR_PIXELLATE_FILTER = 35, // 极坐标
  200. GLASS_SPHERE_REFRACTION_FILTER = 36, // 水晶球
  201. SOLARIZE_FILTER = 37, // 曝光
  202. INK_WASH_PAINTING_FILTER = 38, // 水墨
  203. ARABICA_FILTER = 39, // 阿拉比卡
  204. AVA_FILTER = 40, // 阿瓦
  205. AZREAL_FILTER = 41, // 艾瑟瑞尔
  206. BOURBON_FILTER = 42, // 波旁
  207. BYERS_FILTER = 43, // 拜尔斯
  208. CHEMICAL_FILTER = 44, // 化学
  209. CLAYTON_FILTER = 45, // 克莱顿
  210. CLOUSEAU_FILTER = 46, // 克卢索
  211. COBI_FILTER = 47, // 小新
  212. CONTRAIL_FILTER = 48, // 凝迹
  213. CUBICLE_FILTER = 49, // 隔间
  214. DJANGO_FILTER = 50, // 姜戈
  215. FUJI_REALA_FILTER = 90 // 真实
  216. };
  217. // Rock类型
  218. typedef NS_ENUM(NSInteger, TiRockEnum) {
  219. NO_ROCK = 0, // 无抖音特效
  220. DAZZLED_COLOR_ROCK = 1, // 炫彩抖动
  221. LIGHT_COLOR_ROCK = 2, // 轻彩抖动
  222. DIZZY_GIDDY_ROCK = 3, // 头晕目眩
  223. ASTRAL_PROJECTION_ROCK = 4, // 灵魂出窍
  224. BLACK_MAGIC_ROCK = 5, // 暗黑魔法
  225. VIRTUAL_MIRROR_ROCK = 6, // 虚拟镜像
  226. DYNAMIC_SPLIT_SCREEN_ROCK = 7, //动感分屏
  227. BLACK_WHITE_FILM_ROCK = 8, // 黑白电影
  228. GRAY_PETRIFACTION_ROCK = 9, // 瞬间石化
  229. BULGE_DISTORTION__ROCK = 10 // 魔法镜面
  230. };
  231. // Distortion类型
  232. typedef NS_ENUM(NSInteger, TiDistortionEnum) {
  233. NO_DISTORTION = 0, // 无
  234. ET_DISTORTION = 1, // 外星人
  235. PEAR_FACE_DISTORTION = 2, // 梨梨脸
  236. SLIM_FACE_DISTORTION = 3, // 瘦瘦脸
  237. SQUARE_FACE_DISTORTION = 4 // 方方脸
  238. };
  239. //// GreenScreen类型
  240. //typedef NS_ENUM(NSInteger, TiGreenScreenEnum) {
  241. // NO_GREEN_SCREEN = 0, // 无
  242. // STARRY_SKY_GREEN_SCREEN = 1, // 星空
  243. // CLASS_ROOM_GREEN_SCREEN = 2, // 教室
  244. // THE_BUND_GREEN_SCREEN=3, // 外滩
  245. // IMPERIAL_PALACE_GREEN_SCREEN=4 // 故宫
  246. //};
  247. // Makeup类型
  248. typedef NS_ENUM(NSInteger, TiMakeupEnum) {
  249. NO_MAKEUP = 0, // 无
  250. LIP_GLOSS_MAKEUP = 1, // 唇彩
  251. EYE_SHADWO_MAKEUP= 2, // 眼影
  252. BROW_PENCIL_MAKEUP = 3, // 描眉
  253. BLUSHER_MAKEUP = 4 // 腮红
  254. };
  255. + (TiSDKManager *)shareManager;
  256. /**
  257. * 纹理渲染接口函数
  258. *
  259. * @param texture2D 待渲染纹理
  260. * @param imageWidth 纹理宽度
  261. * @param imageHeight 纹理高度
  262. * @param rotation 纹理转为正向(home键向下)待旋转角度
  263. * @param isMirror 是否存在镜像
  264. *
  265. * @return 渲染后的纹理
  266. */
  267. - (GLuint)renderTexture2D:(GLuint)texture2D Width:(CGFloat)imageWidth Height:(CGFloat)imageHeight Rotation:(TiRotationEnum)rotation Mirror:(BOOL)isMirror;
  268. /**
  269. * 纹理渲染接口函数
  270. *
  271. * @param texture2D 待渲染纹理
  272. * @param imageWidth 纹理宽度
  273. * @param imageHeight 纹理高度
  274. * @param rotation 纹理转为正向(home键向下)待旋转角度
  275. * @param isMirror 是否存在镜像
  276. * @param faceNumber 人脸相关特效可支持的人脸数 [1, 5]
  277. *
  278. * @return 渲染后的纹理
  279. */
  280. - (GLuint)renderTexture2D:(GLuint)texture2D Width:(CGFloat)imageWidth Height:(CGFloat)imageHeight Rotation:(TiRotationEnum)rotation Mirror:(BOOL)isMirror FaceNumber:(int)faceNumber;
  281. /**
  282. * pixelBuffer渲染接口函数
  283. *
  284. * @param pixels 待渲染视频帧
  285. * @param imageWidth 纹理宽度
  286. * @param imageHeight 纹理高度
  287. * @param rotation 纹理转为正向(home键向下)待旋转角度
  288. * @param isMirror 是否存在镜像
  289. *
  290. */
  291. - (void)renderPixels:(unsigned char *)pixels Format:(TiImageFormatEnum)imageFormat Width:(CGFloat)imageWidth Height:(CGFloat)imageHeight Rotation:(TiRotationEnum)rotation Mirror:(BOOL)isMirror;
  292. /**
  293. * pixelBuffer渲染接口函数
  294. *
  295. * @param pixels 待渲染视频帧
  296. * @param imageWidth 纹理宽度
  297. * @param imageHeight 纹理高度
  298. * @param rotation 纹理转为正向(home键向下)待旋转角度
  299. * @param isMirror 是否存在镜像
  300. * @param faceNumber 人脸相关特效可支持的人脸数 [1, 5]
  301. *
  302. */
  303. - (void)renderPixels:(unsigned char *)pixels Format:(TiImageFormatEnum)imageFormat Width:(CGFloat)imageWidth Height:(CGFloat)imageHeight Rotation:(TiRotationEnum)rotation Mirror:(BOOL)isMirror FaceNumber:(int)faceNumber;
  304. /**
  305. * 开启/关闭美颜特效函数
  306. *
  307. * @param enable 是否开启美颜特效
  308. */
  309. - (void)setBeautyEnable:(BOOL)enable;
  310. /**
  311. * 设置美颜-美白特效参数函数
  312. *
  313. * @param param [0, 100]
  314. */
  315. - (void)setSkinWhitening:(int)param;
  316. /**
  317. * 设置美颜-磨皮特效参数函数
  318. *
  319. * @param param [0, 100]
  320. */
  321. - (void)setSkinBlemishRemoval:(int)param;
  322. /**
  323. * 设置美颜-饱和特效参数函数
  324. *
  325. * @param param [-50, 50]
  326. */
  327. - (void)setSkinSaturation:(int)param;
  328. /**
  329. * 设置美颜-粉嫩特效参数函数
  330. *
  331. * @param param [0, 100]
  332. */
  333. - (void)setSkinTenderness:(int)param;
  334. /**
  335. * 设置美颜-亮度特效参数函数
  336. *
  337. * @param param [-50, 50]
  338. */
  339. - (void)setSkinBrightness:(int)param;
  340. /**
  341. * 设置美颜-鲜明特效参数函数
  342. *
  343. * @param param [0, 100]
  344. */
  345. - (void)setSkinSharpness:(int)param;
  346. /**
  347. * 打开/关闭美型特效函数
  348. *
  349. * @param enable 是否打开美型特效
  350. */
  351. - (void)setFaceTrimEnable:(BOOL)enable;
  352. /**
  353. * 设置美型-大眼特效参数函数
  354. *
  355. * @param param [0, 100]
  356. */
  357. - (void)setEyeMagnifying:(int)param;
  358. /**
  359. * 设置美型-瘦脸特效参数函数
  360. *
  361. * @param param [0, 100]
  362. */
  363. - (void)setChinSlimming:(int)param;
  364. /**
  365. * 设置美型-下巴特效参数函数
  366. *
  367. * @param param [-50, 50]
  368. */
  369. - (void)setJawTransforming:(int)param;
  370. /**
  371. * 设置美型-额头特效参数函数
  372. *
  373. * @param param [-50, 50]
  374. */
  375. - (void)setForeheadTransforming:(int)param;
  376. /**
  377. * 设置美型-嘴型特效参数函数
  378. *
  379. * @param param [-50, 50]
  380. */
  381. - (void)setMouthTransforming:(int)param;
  382. /**
  383. * 设置美型-瘦鼻特效参数函数
  384. *
  385. * @param param [-50, 50]
  386. */
  387. - (void)setNoseMinifying:(int)param;
  388. /**
  389. * 设置美型-美牙特效参数函数
  390. *
  391. * @param param [0, 100]
  392. */
  393. - (void)setTeethWhitening:(int)param;
  394. /**
  395. * 设置美型-窄脸特效参数函数
  396. *
  397. * @param param [0, 100]
  398. */
  399. - (void)setFaceNarrowing:(int)param;
  400. /**
  401. * 设置美型-眼间距特效参数函数
  402. *
  403. * @param param [-50, 50]
  404. * 默认值为0
  405. * >0,缩小眼间距;<0,增大眼间距
  406. */
  407. - (void)setEyeSpacing:(int)param;
  408. /**
  409. * 设置美型-长鼻特效参数函数
  410. *
  411. * @param param [0, 100]
  412. * 默认值为0
  413. */
  414. - (void)setNoseElongating:(int)param;
  415. /**
  416. * 设置美型-眼角特效参数函数
  417. *
  418. * @param param [-50, 50]
  419. * 默认值为0
  420. */
  421. - (void)setEyeCorners:(int)param;
  422. /**
  423. * 切换贴纸函数
  424. *
  425. * @param stickerName 贴纸名称
  426. */
  427. - (void)setStickerName:(NSString *)stickerName;
  428. /**
  429. * 切换滤镜函数
  430. *
  431. * @param filterEnum 参考宏定义TiFilterEnum
  432. */
  433. - (void)setFilterEnum:(TiFilterEnum)filterEnum;
  434. /**
  435. * 切换滤镜并设置相应参数函数
  436. *
  437. * @param filterEnum 参考宏定义TiFilterEnum
  438. * @param param 滤镜参数
  439. */
  440. - (void)setFilterEnum:(TiFilterEnum)filterEnum Param:(int)param;
  441. /**
  442. * 设置Rock特效参数函数
  443. *
  444. * @param rockEnum 参考宏定义TiRockEnum
  445. */
  446. - (void)setRockEnum:(TiRockEnum)rockEnum;
  447. /**
  448. * 设置哈哈镜特效参数函数
  449. *
  450. * @param distortionEnum 参考宏定义TiDistortionEnum
  451. */
  452. - (void)setDistortionEnum:(TiDistortionEnum)distortionEnum;
  453. /**
  454. * 设置水印参数函数
  455. *
  456. * @param enable true: 开启 false: 关闭
  457. * @param x 水印左上角横坐标[0, 100]
  458. * @param y 水印右上角纵坐标[0, 100]
  459. * @param ratio 水印横向占据屏幕的比例[0, 100]
  460. */
  461. - (void)setWatermark:(BOOL)enable Left:(int)x Top:(int)y Ratio:(int)ratio FileName:(NSString *)fileName;
  462. /**
  463. * 设置绿幕特效参数函数
  464. *
  465. * @param greenScreenName 幕布名称
  466. */
  467. - (void)setGreenScreen:(NSString *)greenScreenName;
  468. /**
  469. * 设置礼物特效参数函数
  470. *
  471. * @param giftName 礼物名称
  472. */
  473. - (void)setGift:(NSString *)giftName;
  474. /**
  475. * 设置面具特效参数函数
  476. *
  477. * @param maskName 面具名称
  478. */
  479. - (void)setMask:(NSString *)maskName;
  480. /**
  481. * 设置美妆特效参数函数
  482. *
  483. * @param makeupName 美妆名称
  484. */
  485. - (void)setMakeup:(NSString *)makeupName;
  486. /**
  487. * 美妆特效开关函数
  488. *
  489. * @param enable 是否开启美妆
  490. */
  491. - (void)setMakeupEnable:(bool)enable;
  492. /**
  493. * 唇彩特效开关函数
  494. *
  495. * @param name 唇彩特效名称
  496. */
  497. - (void)setLipGloss:(NSString*)name;
  498. /**
  499. * 眼影特效开关函数
  500. *
  501. * @param name 眼影特效名称
  502. */
  503. - (void)setEyeShadow:(NSString*)name;
  504. /**
  505. * 眉毛特效开关函数
  506. *
  507. * @param name 眉毛特效名称
  508. */
  509. - (void)setBrowPencil:(NSString*)name;
  510. /**
  511. * 腮红特效开关函数
  512. *
  513. * @param enable 腮红特效名称
  514. */
  515. - (void)setBlusher:(NSString*)name;
  516. /**
  517. * 渲染特效开关
  518. *
  519. * @param enable YES是打开渲染;NO是关闭开关
  520. */
  521. -(void)setRenderEnable:(bool)enable;
  522. /**
  523. * 资源释放函数
  524. */
  525. - (void)destroy;
  526. /**
  527. * 获取人脸中心点的坐标
  528. */
  529. -(CGPoint)getFaceCenter;
  530. /**
  531. * 是否检测到人脸
  532. */
  533. -(int)isFaceDected;
  534. @end