convert_from.h 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. /*
  2. * Copyright 2011 The LibYuv Project Authors. All rights reserved.
  3. *
  4. * Use of this source code is governed by a BSD-style license
  5. * that can be found in the LICENSE file in the root of the source
  6. * tree. An additional intellectual property rights grant can be found
  7. * in the file PATENTS. All contributing project authors may
  8. * be found in the AUTHORS file in the root of the source tree.
  9. */
  10. #ifndef INCLUDE_LIBYUV_CONVERT_FROM_H_
  11. #define INCLUDE_LIBYUV_CONVERT_FROM_H_
  12. #include "libyuv/basic_types.h"
  13. #include "libyuv/rotate.h"
  14. #ifdef __cplusplus
  15. namespace libyuv {
  16. extern "C" {
  17. #endif
  18. // See Also convert.h for conversions from formats to I420.
  19. // I420Copy in convert to I420ToI420.
  20. LIBYUV_API
  21. int I420ToI422(const uint8* src_y,
  22. int src_stride_y,
  23. const uint8* src_u,
  24. int src_stride_u,
  25. const uint8* src_v,
  26. int src_stride_v,
  27. uint8* dst_y,
  28. int dst_stride_y,
  29. uint8* dst_u,
  30. int dst_stride_u,
  31. uint8* dst_v,
  32. int dst_stride_v,
  33. int width,
  34. int height);
  35. LIBYUV_API
  36. int I420ToI444(const uint8* src_y,
  37. int src_stride_y,
  38. const uint8* src_u,
  39. int src_stride_u,
  40. const uint8* src_v,
  41. int src_stride_v,
  42. uint8* dst_y,
  43. int dst_stride_y,
  44. uint8* dst_u,
  45. int dst_stride_u,
  46. uint8* dst_v,
  47. int dst_stride_v,
  48. int width,
  49. int height);
  50. // Copy to I400. Source can be I420, I422, I444, I400, NV12 or NV21.
  51. LIBYUV_API
  52. int I400Copy(const uint8* src_y,
  53. int src_stride_y,
  54. uint8* dst_y,
  55. int dst_stride_y,
  56. int width,
  57. int height);
  58. LIBYUV_API
  59. int I420ToNV12(const uint8* src_y,
  60. int src_stride_y,
  61. const uint8* src_u,
  62. int src_stride_u,
  63. const uint8* src_v,
  64. int src_stride_v,
  65. uint8* dst_y,
  66. int dst_stride_y,
  67. uint8* dst_uv,
  68. int dst_stride_uv,
  69. int width,
  70. int height);
  71. LIBYUV_API
  72. int I420ToNV21(const uint8* src_y,
  73. int src_stride_y,
  74. const uint8* src_u,
  75. int src_stride_u,
  76. const uint8* src_v,
  77. int src_stride_v,
  78. uint8* dst_y,
  79. int dst_stride_y,
  80. uint8* dst_vu,
  81. int dst_stride_vu,
  82. int width,
  83. int height);
  84. LIBYUV_API
  85. int I420ToYUY2(const uint8* src_y,
  86. int src_stride_y,
  87. const uint8* src_u,
  88. int src_stride_u,
  89. const uint8* src_v,
  90. int src_stride_v,
  91. uint8* dst_frame,
  92. int dst_stride_frame,
  93. int width,
  94. int height);
  95. LIBYUV_API
  96. int I420ToUYVY(const uint8* src_y,
  97. int src_stride_y,
  98. const uint8* src_u,
  99. int src_stride_u,
  100. const uint8* src_v,
  101. int src_stride_v,
  102. uint8* dst_frame,
  103. int dst_stride_frame,
  104. int width,
  105. int height);
  106. LIBYUV_API
  107. int I420ToARGB(const uint8* src_y,
  108. int src_stride_y,
  109. const uint8* src_u,
  110. int src_stride_u,
  111. const uint8* src_v,
  112. int src_stride_v,
  113. uint8* dst_argb,
  114. int dst_stride_argb,
  115. int width,
  116. int height);
  117. LIBYUV_API
  118. int I420ToBGRA(const uint8* src_y,
  119. int src_stride_y,
  120. const uint8* src_u,
  121. int src_stride_u,
  122. const uint8* src_v,
  123. int src_stride_v,
  124. uint8* dst_argb,
  125. int dst_stride_argb,
  126. int width,
  127. int height);
  128. LIBYUV_API
  129. int I420ToABGR(const uint8* src_y,
  130. int src_stride_y,
  131. const uint8* src_u,
  132. int src_stride_u,
  133. const uint8* src_v,
  134. int src_stride_v,
  135. uint8* dst_argb,
  136. int dst_stride_argb,
  137. int width,
  138. int height);
  139. LIBYUV_API
  140. int I420ToRGBA(const uint8* src_y,
  141. int src_stride_y,
  142. const uint8* src_u,
  143. int src_stride_u,
  144. const uint8* src_v,
  145. int src_stride_v,
  146. uint8* dst_rgba,
  147. int dst_stride_rgba,
  148. int width,
  149. int height);
  150. LIBYUV_API
  151. int I420ToRGB24(const uint8* src_y,
  152. int src_stride_y,
  153. const uint8* src_u,
  154. int src_stride_u,
  155. const uint8* src_v,
  156. int src_stride_v,
  157. uint8* dst_frame,
  158. int dst_stride_frame,
  159. int width,
  160. int height);
  161. LIBYUV_API
  162. int I420ToRAW(const uint8* src_y,
  163. int src_stride_y,
  164. const uint8* src_u,
  165. int src_stride_u,
  166. const uint8* src_v,
  167. int src_stride_v,
  168. uint8* dst_frame,
  169. int dst_stride_frame,
  170. int width,
  171. int height);
  172. LIBYUV_API
  173. int H420ToRGB24(const uint8* src_y,
  174. int src_stride_y,
  175. const uint8* src_u,
  176. int src_stride_u,
  177. const uint8* src_v,
  178. int src_stride_v,
  179. uint8* dst_frame,
  180. int dst_stride_frame,
  181. int width,
  182. int height);
  183. LIBYUV_API
  184. int H420ToRAW(const uint8* src_y,
  185. int src_stride_y,
  186. const uint8* src_u,
  187. int src_stride_u,
  188. const uint8* src_v,
  189. int src_stride_v,
  190. uint8* dst_frame,
  191. int dst_stride_frame,
  192. int width,
  193. int height);
  194. LIBYUV_API
  195. int I420ToRGB565(const uint8* src_y,
  196. int src_stride_y,
  197. const uint8* src_u,
  198. int src_stride_u,
  199. const uint8* src_v,
  200. int src_stride_v,
  201. uint8* dst_frame,
  202. int dst_stride_frame,
  203. int width,
  204. int height);
  205. LIBYUV_API
  206. int I422ToRGB565(const uint8* src_y,
  207. int src_stride_y,
  208. const uint8* src_u,
  209. int src_stride_u,
  210. const uint8* src_v,
  211. int src_stride_v,
  212. uint8* dst_frame,
  213. int dst_stride_frame,
  214. int width,
  215. int height);
  216. // Convert I420 To RGB565 with 4x4 dither matrix (16 bytes).
  217. // Values in dither matrix from 0 to 7 recommended.
  218. // The order of the dither matrix is first byte is upper left.
  219. LIBYUV_API
  220. int I420ToRGB565Dither(const uint8* src_y,
  221. int src_stride_y,
  222. const uint8* src_u,
  223. int src_stride_u,
  224. const uint8* src_v,
  225. int src_stride_v,
  226. uint8* dst_frame,
  227. int dst_stride_frame,
  228. const uint8* dither4x4,
  229. int width,
  230. int height);
  231. LIBYUV_API
  232. int I420ToARGB1555(const uint8* src_y,
  233. int src_stride_y,
  234. const uint8* src_u,
  235. int src_stride_u,
  236. const uint8* src_v,
  237. int src_stride_v,
  238. uint8* dst_frame,
  239. int dst_stride_frame,
  240. int width,
  241. int height);
  242. LIBYUV_API
  243. int I420ToARGB4444(const uint8* src_y,
  244. int src_stride_y,
  245. const uint8* src_u,
  246. int src_stride_u,
  247. const uint8* src_v,
  248. int src_stride_v,
  249. uint8* dst_frame,
  250. int dst_stride_frame,
  251. int width,
  252. int height);
  253. // Convert I420 to specified format.
  254. // "dst_sample_stride" is bytes in a row for the destination. Pass 0 if the
  255. // buffer has contiguous rows. Can be negative. A multiple of 16 is optimal.
  256. LIBYUV_API
  257. int ConvertFromI420(const uint8* y,
  258. int y_stride,
  259. const uint8* u,
  260. int u_stride,
  261. const uint8* v,
  262. int v_stride,
  263. uint8* dst_sample,
  264. int dst_sample_stride,
  265. int width,
  266. int height,
  267. uint32 format);
  268. #ifdef __cplusplus
  269. } // extern "C"
  270. } // namespace libyuv
  271. #endif
  272. #endif // INCLUDE_LIBYUV_CONVERT_FROM_H_