convert_from_argb.h 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. /*
  2. * Copyright 2012 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_ARGB_H_
  11. #define INCLUDE_LIBYUV_CONVERT_FROM_ARGB_H_
  12. #include "libyuv/basic_types.h"
  13. #ifdef __cplusplus
  14. namespace libyuv {
  15. extern "C" {
  16. #endif
  17. // Copy ARGB to ARGB.
  18. #define ARGBToARGB ARGBCopy
  19. LIBYUV_API
  20. int ARGBCopy(const uint8* src_argb,
  21. int src_stride_argb,
  22. uint8* dst_argb,
  23. int dst_stride_argb,
  24. int width,
  25. int height);
  26. // Convert ARGB To BGRA.
  27. LIBYUV_API
  28. int ARGBToBGRA(const uint8* src_argb,
  29. int src_stride_argb,
  30. uint8* dst_bgra,
  31. int dst_stride_bgra,
  32. int width,
  33. int height);
  34. // Convert ARGB To ABGR.
  35. LIBYUV_API
  36. int ARGBToABGR(const uint8* src_argb,
  37. int src_stride_argb,
  38. uint8* dst_abgr,
  39. int dst_stride_abgr,
  40. int width,
  41. int height);
  42. // Convert ARGB To RGBA.
  43. LIBYUV_API
  44. int ARGBToRGBA(const uint8* src_argb,
  45. int src_stride_argb,
  46. uint8* dst_rgba,
  47. int dst_stride_rgba,
  48. int width,
  49. int height);
  50. // Convert ARGB To RGB24.
  51. LIBYUV_API
  52. int ARGBToRGB24(const uint8* src_argb,
  53. int src_stride_argb,
  54. uint8* dst_rgb24,
  55. int dst_stride_rgb24,
  56. int width,
  57. int height);
  58. // Convert ARGB To RAW.
  59. LIBYUV_API
  60. int ARGBToRAW(const uint8* src_argb,
  61. int src_stride_argb,
  62. uint8* dst_rgb,
  63. int dst_stride_rgb,
  64. int width,
  65. int height);
  66. // Convert ARGB To RGB565.
  67. LIBYUV_API
  68. int ARGBToRGB565(const uint8* src_argb,
  69. int src_stride_argb,
  70. uint8* dst_rgb565,
  71. int dst_stride_rgb565,
  72. int width,
  73. int height);
  74. // Convert ARGB To RGB565 with 4x4 dither matrix (16 bytes).
  75. // Values in dither matrix from 0 to 7 recommended.
  76. // The order of the dither matrix is first byte is upper left.
  77. // TODO(fbarchard): Consider pointer to 2d array for dither4x4.
  78. // const uint8(*dither)[4][4];
  79. LIBYUV_API
  80. int ARGBToRGB565Dither(const uint8* src_argb,
  81. int src_stride_argb,
  82. uint8* dst_rgb565,
  83. int dst_stride_rgb565,
  84. const uint8* dither4x4,
  85. int width,
  86. int height);
  87. // Convert ARGB To ARGB1555.
  88. LIBYUV_API
  89. int ARGBToARGB1555(const uint8* src_argb,
  90. int src_stride_argb,
  91. uint8* dst_argb1555,
  92. int dst_stride_argb1555,
  93. int width,
  94. int height);
  95. // Convert ARGB To ARGB4444.
  96. LIBYUV_API
  97. int ARGBToARGB4444(const uint8* src_argb,
  98. int src_stride_argb,
  99. uint8* dst_argb4444,
  100. int dst_stride_argb4444,
  101. int width,
  102. int height);
  103. // Convert ARGB To I444.
  104. LIBYUV_API
  105. int ARGBToI444(const uint8* src_argb,
  106. int src_stride_argb,
  107. uint8* dst_y,
  108. int dst_stride_y,
  109. uint8* dst_u,
  110. int dst_stride_u,
  111. uint8* dst_v,
  112. int dst_stride_v,
  113. int width,
  114. int height);
  115. // Convert ARGB To I422.
  116. LIBYUV_API
  117. int ARGBToI422(const uint8* src_argb,
  118. int src_stride_argb,
  119. uint8* dst_y,
  120. int dst_stride_y,
  121. uint8* dst_u,
  122. int dst_stride_u,
  123. uint8* dst_v,
  124. int dst_stride_v,
  125. int width,
  126. int height);
  127. // Convert ARGB To I420. (also in convert.h)
  128. LIBYUV_API
  129. int ARGBToI420(const uint8* src_argb,
  130. int src_stride_argb,
  131. uint8* dst_y,
  132. int dst_stride_y,
  133. uint8* dst_u,
  134. int dst_stride_u,
  135. uint8* dst_v,
  136. int dst_stride_v,
  137. int width,
  138. int height);
  139. // Convert ARGB to J420. (JPeg full range I420).
  140. LIBYUV_API
  141. int ARGBToJ420(const uint8* src_argb,
  142. int src_stride_argb,
  143. uint8* dst_yj,
  144. int dst_stride_yj,
  145. uint8* dst_u,
  146. int dst_stride_u,
  147. uint8* dst_v,
  148. int dst_stride_v,
  149. int width,
  150. int height);
  151. // Convert ARGB to J422.
  152. LIBYUV_API
  153. int ARGBToJ422(const uint8* src_argb,
  154. int src_stride_argb,
  155. uint8* dst_yj,
  156. int dst_stride_yj,
  157. uint8* dst_u,
  158. int dst_stride_u,
  159. uint8* dst_v,
  160. int dst_stride_v,
  161. int width,
  162. int height);
  163. // Convert ARGB to J400. (JPeg full range).
  164. LIBYUV_API
  165. int ARGBToJ400(const uint8* src_argb,
  166. int src_stride_argb,
  167. uint8* dst_yj,
  168. int dst_stride_yj,
  169. int width,
  170. int height);
  171. // Convert ARGB to I400.
  172. LIBYUV_API
  173. int ARGBToI400(const uint8* src_argb,
  174. int src_stride_argb,
  175. uint8* dst_y,
  176. int dst_stride_y,
  177. int width,
  178. int height);
  179. // Convert ARGB to G. (Reverse of J400toARGB, which replicates G back to ARGB)
  180. LIBYUV_API
  181. int ARGBToG(const uint8* src_argb,
  182. int src_stride_argb,
  183. uint8* dst_g,
  184. int dst_stride_g,
  185. int width,
  186. int height);
  187. // Convert ARGB To NV12.
  188. LIBYUV_API
  189. int ARGBToNV12(const uint8* src_argb,
  190. int src_stride_argb,
  191. uint8* dst_y,
  192. int dst_stride_y,
  193. uint8* dst_uv,
  194. int dst_stride_uv,
  195. int width,
  196. int height);
  197. // Convert ARGB To NV21.
  198. LIBYUV_API
  199. int ARGBToNV21(const uint8* src_argb,
  200. int src_stride_argb,
  201. uint8* dst_y,
  202. int dst_stride_y,
  203. uint8* dst_vu,
  204. int dst_stride_vu,
  205. int width,
  206. int height);
  207. // Convert ARGB To NV21.
  208. LIBYUV_API
  209. int ARGBToNV21(const uint8* src_argb,
  210. int src_stride_argb,
  211. uint8* dst_y,
  212. int dst_stride_y,
  213. uint8* dst_vu,
  214. int dst_stride_vu,
  215. int width,
  216. int height);
  217. // Convert ARGB To YUY2.
  218. LIBYUV_API
  219. int ARGBToYUY2(const uint8* src_argb,
  220. int src_stride_argb,
  221. uint8* dst_yuy2,
  222. int dst_stride_yuy2,
  223. int width,
  224. int height);
  225. // Convert ARGB To UYVY.
  226. LIBYUV_API
  227. int ARGBToUYVY(const uint8* src_argb,
  228. int src_stride_argb,
  229. uint8* dst_uyvy,
  230. int dst_stride_uyvy,
  231. int width,
  232. int height);
  233. #ifdef __cplusplus
  234. } // extern "C"
  235. } // namespace libyuv
  236. #endif
  237. #endif // INCLUDE_LIBYUV_CONVERT_FROM_ARGB_H_