EncodeDataSourse.m 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. //
  2. // EncodeDataSourse.m
  3. // FunSDKDemo
  4. //
  5. // Created by XM on 2018/10/25.
  6. // Copyright © 2018年 XM. All rights reserved.
  7. //
  8. #import "EncodeDataSourse.h"
  9. #import "Header.h"
  10. @interface EncodeDataSourse ()
  11. {
  12. NSArray *resolutionArray;
  13. }
  14. @end
  15. @implementation EncodeDataSourse
  16. #pragma mark - 根据画质int值获取画质名
  17. - (NSString *)getQualityString:(NSInteger)quality {
  18. NSArray *array = [self getQualityArray];
  19. if (quality >0 && quality <7) {
  20. //如果获取到的数据在正常数据范围内
  21. return array[quality-1];
  22. }
  23. //数据异常时也要返回
  24. return array[0];
  25. }
  26. #pragma mark 根据画质名称值获取画质int值
  27. - (NSInteger)getQualityInt:(NSString*)qualityString {
  28. NSArray *array = [self getQualityArray];
  29. if ([array containsObject:qualityString]) {
  30. return [array indexOfObject:qualityString]+1;
  31. }
  32. //数据异常时也要返回
  33. return 0;
  34. }
  35. #pragma mark - 获取开关字符串
  36. -(NSString *)getEnableString:(BOOL)enable {
  37. NSArray *array = [self getEnableArray];
  38. return array[enable];
  39. }
  40. #pragma mark 获取开关BOOL值
  41. -(BOOL)getEnableBool:(NSString *)enableStr {
  42. NSArray *array = [self getEnableArray];
  43. if ([array containsObject:enableStr]) {
  44. return [array indexOfObject:enableStr];
  45. }
  46. return NO;
  47. }
  48. #pragma mark - 根据索引获取当前分辨率名称
  49. -(NSString*)getResolotionName:(NSInteger)nResIndex {
  50. if (resolutionArray == nil) {
  51. resolutionArray = [self getResolutionArray];
  52. }
  53. if (nResIndex >= 0 && nResIndex < N_RESOLUTION_COUNT) {
  54. return resolutionArray[nResIndex];
  55. }
  56. return resolutionArray[0];
  57. }
  58. #pragma mark 根据分辨率名称获取当前索引
  59. - (NSInteger)getResolutionIndex:(NSString*)name {
  60. if (resolutionArray == nil) {
  61. resolutionArray = [self getResolutionArray];
  62. }
  63. return (int)[resolutionArray indexOfObject:name];
  64. }
  65. #pragma mark 根据传递的可用能力级、帧率、支持的分辨率来获取当前可用的分辨率
  66. - (NSInteger)getResolutionMark:(NSInteger)size rate:(NSInteger)fps range:(NSInteger)support {
  67. NSInteger nRetMark = 0;
  68. NSInteger nGetRes = 0;
  69. //在所有的分辨率中循环判断
  70. //判断当前循环的分辨率是否支持
  71. for (int i = 0; i < N_RESOLUTION_COUNT; ++i) {
  72. if (support & (0x1 << i)) {
  73. //获取分辨率大小
  74. nGetRes = [self getResolutionSize:i];
  75. //分辨率*帧率<可用能力级,说明这个分辨率是可用的
  76. if (nGetRes * fps <= size) {
  77. nRetMark |= (0x1 << i);
  78. }
  79. }
  80. }
  81. return nRetMark; //二进制数据,二进制中的某一位是1的话,说明支持对应位置的分辨率
  82. }
  83. #pragma mark 根据当前可用的分辨率二进制来获取分辨率名称字符串
  84. - (NSMutableArray*)getResolutionArrayWithMark:(NSInteger)support {
  85. NSMutableArray *markArray = [[NSMutableArray alloc] initWithCapacity:0];
  86. //在所有的分辨率中循环判断
  87. for (int i = 0; i< N_RESOLUTION_COUNT ; i++) {
  88. //判断当前循环的分辨率是否支持
  89. if (support & (0x01<<i)) {
  90. //如果支持的话,获取对应的分辨率名称
  91. NSArray *resolutionNameArray = [self getResolutionArray];
  92. NSString *mask =[resolutionNameArray objectAtIndex:i];
  93. //添加进数组
  94. [markArray addObject:mask];
  95. }
  96. }
  97. return markArray;
  98. }
  99. #pragma mark 根据索引获取当前分辨率大小
  100. -(NSInteger)getResolutionSize:(NSInteger)nResIndex {
  101. static int s_fps[] = {
  102. 704*576,//D1
  103. 704*288,//HD1
  104. 352*576,//BCIF
  105. 352*288,//CIF
  106. 176*144,//QCIF
  107. 640*480,//VGA
  108. 320*240,//QVGA
  109. 480*480,//SVCD
  110. 160*128,//QQVGA
  111. 240*192,//ND1 9
  112. 928*576,//650TVL
  113. 1280*720,//720P
  114. 1280*960,//1_3M
  115. 1600*1200,//UXGA
  116. 1920*1080,//1080P
  117. 1920*1200,//WUXGA
  118. 1872*1408,//2_5M
  119. 2048*1536,//3M
  120. 3744*1408,//5M
  121. 960*1080,//1080N
  122. 2592*1520,//4M
  123. 3072*2048,//6M
  124. 3264*2448,//8M
  125. 4000*3000,//12M
  126. 4096*2160,//4K
  127. 640*720,//720N
  128. 1024*576,//WSVGA
  129. 640*360,//NHD
  130. 1024*1536,//3M_N
  131. 1280*1440,//4M_N
  132. 1872*1408,//5M_N
  133. 2048*2106,//4K_N
  134. };
  135. if (nResIndex >= 0 && nResIndex < N_RESOLUTION_COUNT) {
  136. return s_fps[nResIndex];
  137. }
  138. return s_fps[0];
  139. }
  140. //NSTC下分辨率大小稍微有些不同,单独列出来供NSTC读取
  141. -(NSInteger)getResolutionSizeNSTC:(NSInteger)nResIndex {
  142. static int s_fps[] = {
  143. 704*480,//D1
  144. 704*240,//HD1
  145. 352*480,//BCIF
  146. 352*240,//CIF
  147. 176*120,//QCIF
  148. 640*480,//VGA
  149. 320*240,//QVGA
  150. 480*480,//SVCD
  151. 160*128,//QQVGA
  152. 240*192,//ND1 9
  153. 928*576,//650TVL
  154. 1280*720,//720P
  155. 1280*960,//1_3M
  156. 1600*1200,//UXGA
  157. 1920*1080,//1080P
  158. 1920*1200,//WUXGA
  159. 1872*1408,//2_5M
  160. 2048*1536,//3M
  161. 3744*1408,//5M
  162. 960*1080,//1080N
  163. 2592*1520,//4M
  164. 3072*2048,//6M
  165. 3264*2448,//8M
  166. 4000*3000,//12M
  167. 4096*2160,//4K
  168. 640*720,//720N
  169. 1024*576,//WSVGA
  170. 640*360,//NHD
  171. 1024*1536,//3M_N
  172. 1280*1440,//4M_N
  173. 1872*1408,//5M_N
  174. 2048*2106,//4K_N
  175. };
  176. if (nResIndex >= 0 && nResIndex < N_RESOLUTION_COUNT) {
  177. return s_fps[nResIndex];
  178. }
  179. return s_fps[0];
  180. }
  181. - (NSArray*)getResolutionArray {
  182. NSArray *array = [NSArray arrayWithObjects:
  183. @"D1", /// < 704*576(PAL) 704*480(NTSC)
  184. @"HD1", ///< 352*576(PAL) 352*480(NTSC)
  185. @"BCIF", ///< 720*288(PAL) 720*240(NTSC)
  186. @"CIF", ///< 352*288(PAL) 352*240(NTSC)
  187. @"QCIF", ///< 176*144(PAL) 176*120(NTSC)
  188. @"VGA", ///< 640*480(PAL) 640*480(NTSC)
  189. @"QVGA", ///< 320*240(PAL) 320*240(NTSC)
  190. @"SVCD", ///< 480*480(PAL) 480*480(NTSC)
  191. @"QQVGA", ///< 160*128(PAL) 160*128(NTSC)
  192. @"ND1", ///< 240*192
  193. @"650TVL", ///< 926*576
  194. @"720P", ///< 1280*720
  195. @"1_3M", ///< 1280*960
  196. @"UXGA ", ///< 1600*1200
  197. @"1080P", ///< 1920*1080
  198. @"WUXGA", ///< 1920*1200
  199. @"2_5M", ///< 1872*1408
  200. @"3M", ///< 2048*1536
  201. @"5M", // < 3744*1408
  202. @"1080N", ///< 960*1080
  203. @"4M", ///< 2592*1520
  204. @"6M", ///< 3072*2048
  205. @"8M", ///< 3264*2448
  206. @"12M", ///< 4000*3000
  207. @"4K", ///< 4096 * 2160/3840*2160
  208. @"720N", // 640*720
  209. @"WSVGA", ///< 1024*576
  210. @"NHD", // Wi-Fi IPC 640*360
  211. @"3M_N", // 1024*1536
  212. @"4M_N", // 1280*1440
  213. @"5M_N", // 1872*1408
  214. @"4K_N", // 2048*2106
  215. @"V3_NR",
  216. nil];
  217. return array;
  218. }
  219. - (NSArray *)getQualityArray {
  220. NSArray *array = @[TS("Bad"), TS("Poor"), TS("General"), TS("Good"), TS("Better"), TS("Best")];
  221. return array;
  222. }
  223. - (NSArray *)getEnableArray {
  224. NSArray *array = @[TS("close"), TS("open")];
  225. return array;
  226. }
  227. @end