arm_compute v18.05
[platform/upstream/armcl.git] / documentation / color__convert_8cl.xhtml
1 <!-- HTML header for doxygen 1.8.9.1-->
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
5 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
7 <meta name="generator" content="Doxygen 1.8.11"/>
8 <meta name="robots" content="NOINDEX, NOFOLLOW" /> <!-- Prevent indexing by search engines -->
9 <title>Compute Library: src/core/CL/cl_kernels/color_convert.cl File Reference</title>
10 <link href="tabs.css" rel="stylesheet" type="text/css"/>
11 <script type="text/javascript" src="jquery.js"></script>
12 <script type="text/javascript" src="dynsections.js"></script>
13 <link href="navtree.css" rel="stylesheet" type="text/css"/>
14 <script type="text/javascript" src="resize.js"></script>
15 <script type="text/javascript" src="navtreedata.js"></script>
16 <script type="text/javascript" src="navtree.js"></script>
17 <script type="text/javascript">
18   $(document).ready(initResizable);
19   $(window).load(resizeHeight);
20 </script>
21 <link href="search/search.css" rel="stylesheet" type="text/css"/>
22 <script type="text/javascript" src="search/searchdata.js"></script>
23 <script type="text/javascript" src="search/search.js"></script>
24 <script type="text/javascript">
25   $(document).ready(function() { init_search(); });
26 </script>
27 <script type="text/x-mathjax-config">
28   MathJax.Hub.Config({
29     extensions: ["tex2jax.js"],
30     jax: ["input/TeX","output/HTML-CSS"],
31 });
32 </script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
33 <link href="doxygen.css" rel="stylesheet" type="text/css" />
34 </head>
35 <body>
36 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
37 <div id="titlearea">
38 <table cellspacing="0" cellpadding="0">
39  <tbody>
40  <tr style="height: 56px;">
41   <td style="padding-left: 0.5em;">
42    <div id="projectname">Compute Library
43    &#160;<span id="projectnumber">18.05</span>
44    </div>
45   </td>
46  </tr>
47  </tbody>
48 </table>
49 </div>
50 <!-- end header part -->
51 <!-- Generated by Doxygen 1.8.11 -->
52 <script type="text/javascript">
53 var searchBox = new SearchBox("searchBox", "search",false,'Search');
54 </script>
55   <div id="navrow1" class="tabs">
56     <ul class="tablist">
57       <li><a href="index.xhtml"><span>Main&#160;Page</span></a></li>
58       <li><a href="pages.xhtml"><span>Related&#160;Pages</span></a></li>
59       <li><a href="namespaces.xhtml"><span>Namespaces</span></a></li>
60       <li><a href="annotated.xhtml"><span>Data&#160;Structures</span></a></li>
61       <li class="current"><a href="files.xhtml"><span>Files</span></a></li>
62       <li>
63         <div id="MSearchBox" class="MSearchBoxInactive">
64         <span class="left">
65           <img id="MSearchSelect" src="search/mag_sel.png"
66                onmouseover="return searchBox.OnSearchSelectShow()"
67                onmouseout="return searchBox.OnSearchSelectHide()"
68                alt=""/>
69           <input type="text" id="MSearchField" value="Search" accesskey="S"
70                onfocus="searchBox.OnSearchFieldFocus(true)" 
71                onblur="searchBox.OnSearchFieldFocus(false)" 
72                onkeyup="searchBox.OnSearchFieldChange(event)"/>
73           </span><span class="right">
74             <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
75           </span>
76         </div>
77       </li>
78     </ul>
79   </div>
80   <div id="navrow2" class="tabs2">
81     <ul class="tablist">
82       <li><a href="files.xhtml"><span>File&#160;List</span></a></li>
83       <li><a href="globals.xhtml"><span>Globals</span></a></li>
84     </ul>
85   </div>
86 </div><!-- top -->
87 <div id="side-nav" class="ui-resizable side-nav-resizable">
88   <div id="nav-tree">
89     <div id="nav-tree-contents">
90       <div id="nav-sync" class="sync"></div>
91     </div>
92   </div>
93   <div id="splitbar" style="-moz-user-select:none;" 
94        class="ui-resizable-handle">
95   </div>
96 </div>
97 <script type="text/javascript">
98 $(document).ready(function(){initNavTree('color__convert_8cl.xhtml','');});
99 </script>
100 <div id="doc-content">
101 <!-- window showing the filter options -->
102 <div id="MSearchSelectWindow"
103      onmouseover="return searchBox.OnSearchSelectShow()"
104      onmouseout="return searchBox.OnSearchSelectHide()"
105      onkeydown="return searchBox.OnSearchSelectKey(event)">
106 </div>
107
108 <!-- iframe showing the search results (closed by default) -->
109 <div id="MSearchResultsWindow">
110 <iframe src="javascript:void(0)" frameborder="0" 
111         name="MSearchResults" id="MSearchResults">
112 </iframe>
113 </div>
114
115 <div class="header">
116   <div class="summary">
117 <a href="#func-members">Functions</a>  </div>
118   <div class="headertitle">
119 <div class="title">color_convert.cl File Reference</div>  </div>
120 </div><!--header-->
121 <div class="contents">
122 <div class="textblock"><code>#include &quot;<a class="el" href="helpers_8h_source.xhtml">helpers.h</a>&quot;</code><br />
123 </div>
124 <p><a href="color__convert_8cl_source.xhtml">Go to the source code of this file.</a></p>
125 <table class="memberdecls">
126 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
127 Functions</h2></td></tr>
128 <tr class="memitem:a2a21de930ca0898bed0a081f40cb4406"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a2a21de930ca0898bed0a081f40cb4406">RGB888_to_RGBA8888_bt709</a> (__global uchar *input_ptr, uint input_stride_x, uint input_step_x, uint input_stride_y, uint input_step_y, uint input_offset_first_element_in_bytes, __global uchar *output_ptr, uint output_stride_x, uint output_step_x, uint output_stride_y, uint output_step_y, uint output_offset_first_element_in_bytes)</td></tr>
129 <tr class="memdesc:a2a21de930ca0898bed0a081f40cb4406"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an RGB888 image to RGBX8888.  <a href="#a2a21de930ca0898bed0a081f40cb4406">More...</a><br /></td></tr>
130 <tr class="separator:a2a21de930ca0898bed0a081f40cb4406"><td class="memSeparator" colspan="2">&#160;</td></tr>
131 <tr class="memitem:ae424d47188a7fffd83a3a9d0c0e1ce6e"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#ae424d47188a7fffd83a3a9d0c0e1ce6e">RGBA8888_to_RGB888_bt709</a> (__global uchar *input_ptr, uint input_stride_x, uint input_step_x, uint input_stride_y, uint input_step_y, uint input_offset_first_element_in_bytes, __global uchar *output_ptr, uint output_stride_x, uint output_step_x, uint output_stride_y, uint output_step_y, uint output_offset_first_element_in_bytes)</td></tr>
132 <tr class="memdesc:ae424d47188a7fffd83a3a9d0c0e1ce6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an RGB888 image to RGBX8888.  <a href="#ae424d47188a7fffd83a3a9d0c0e1ce6e">More...</a><br /></td></tr>
133 <tr class="separator:ae424d47188a7fffd83a3a9d0c0e1ce6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
134 <tr class="memitem:a0b20f3b21bfb3e5ef177eb946e3c905f"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a0b20f3b21bfb3e5ef177eb946e3c905f">UYVY422_to_RGB888_bt709</a> (__global uchar *input_ptr, uint input_stride_x, uint input_step_x, uint input_stride_y, uint input_step_y, uint input_offset_first_element_in_bytes, __global uchar *output_ptr, uint output_stride_x, uint output_step_x, uint output_stride_y, uint output_step_y, uint output_offset_first_element_in_bytes)</td></tr>
135 <tr class="memdesc:a0b20f3b21bfb3e5ef177eb946e3c905f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a UYVY422 image to RGB888 using BT709 color space.  <a href="#a0b20f3b21bfb3e5ef177eb946e3c905f">More...</a><br /></td></tr>
136 <tr class="separator:a0b20f3b21bfb3e5ef177eb946e3c905f"><td class="memSeparator" colspan="2">&#160;</td></tr>
137 <tr class="memitem:a22e98db2ca5538961967bdbaa19754b3"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a22e98db2ca5538961967bdbaa19754b3">UYVY422_to_RGBA8888_bt709</a> (__global uchar *input_ptr, uint input_stride_x, uint input_step_x, uint input_stride_y, uint input_step_y, uint input_offset_first_element_in_bytes, __global uchar *output_ptr, uint output_stride_x, uint output_step_x, uint output_stride_y, uint output_step_y, uint output_offset_first_element_in_bytes)</td></tr>
138 <tr class="memdesc:a22e98db2ca5538961967bdbaa19754b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a UYVY422 image to RGBX8888 using BT709 color space.  <a href="#a22e98db2ca5538961967bdbaa19754b3">More...</a><br /></td></tr>
139 <tr class="separator:a22e98db2ca5538961967bdbaa19754b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
140 <tr class="memitem:a694c56c3d1dd37a2773e650ab8e410b2"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a694c56c3d1dd37a2773e650ab8e410b2">YUYV422_to_RGB888_bt709</a> (__global uchar *input_ptr, uint input_stride_x, uint input_step_x, uint input_stride_y, uint input_step_y, uint input_offset_first_element_in_bytes, __global uchar *output_ptr, uint output_stride_x, uint output_step_x, uint output_stride_y, uint output_step_y, uint output_offset_first_element_in_bytes)</td></tr>
141 <tr class="memdesc:a694c56c3d1dd37a2773e650ab8e410b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a YUYV422 image to RGB888 using BT709 color space.  <a href="#a694c56c3d1dd37a2773e650ab8e410b2">More...</a><br /></td></tr>
142 <tr class="separator:a694c56c3d1dd37a2773e650ab8e410b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
143 <tr class="memitem:ab0be9d15196e78ed50afdbfa93a11662"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#ab0be9d15196e78ed50afdbfa93a11662">YUYV422_to_RGBA8888_bt709</a> (__global uchar *input_ptr, uint input_stride_x, uint input_step_x, uint input_stride_y, uint input_step_y, uint input_offset_first_element_in_bytes, __global uchar *output_ptr, uint output_stride_x, uint output_step_x, uint output_stride_y, uint output_step_y, uint output_offset_first_element_in_bytes)</td></tr>
144 <tr class="memdesc:ab0be9d15196e78ed50afdbfa93a11662"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a YUYV422 image to RGBX8888 using BT709 color space.  <a href="#ab0be9d15196e78ed50afdbfa93a11662">More...</a><br /></td></tr>
145 <tr class="separator:ab0be9d15196e78ed50afdbfa93a11662"><td class="memSeparator" colspan="2">&#160;</td></tr>
146 <tr class="memitem:aa07d313ff115012737d4b522efc6079f"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#aa07d313ff115012737d4b522efc6079f">RGB888_to_NV12_bt709</a> (__global uchar *input_ptr, uint input_stride_x, uint input_step_x, uint input_stride_y, uint input_step_y, uint input_offset_first_element_in_bytes, __global uchar *luma_ptr, uint luma_stride_x, uint luma_step_x, uint luma_stride_y, uint luma_step_y, uint luma_offset_first_element_in_bytes, __global uchar *uv_ptr, uint uv_stride_x, uint uv_step_x, uint uv_stride_y, uint uv_step_y, uint uv_offset_first_element_in_bytes)</td></tr>
147 <tr class="memdesc:aa07d313ff115012737d4b522efc6079f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a RGB image to NV12 using BT709 color space.  <a href="#aa07d313ff115012737d4b522efc6079f">More...</a><br /></td></tr>
148 <tr class="separator:aa07d313ff115012737d4b522efc6079f"><td class="memSeparator" colspan="2">&#160;</td></tr>
149 <tr class="memitem:a02037a65e2f5ec0579b8ed8efc33ff18"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a02037a65e2f5ec0579b8ed8efc33ff18">NV12_to_RGB888_bt709</a> (__global uchar *luma_input_ptr, uint luma_input_stride_x, uint luma_input_step_x, uint luma_input_stride_y, uint luma_input_step_y, uint luma_input_offset_first_element_in_bytes, __global uchar *uv_input_ptr, uint uv_input_stride_x, uint uv_input_step_x, uint uv_input_stride_y, uint uv_input_step_y, uint uv_input_offset_first_element_in_bytes, __global uchar *rgb_output_ptr, uint rgb_output_stride_x, uint rgb_output_step_x, uint rgb_output_stride_y, uint rgb_output_step_y, uint rgb_output_offset_first_element_in_bytes)</td></tr>
150 <tr class="memdesc:a02037a65e2f5ec0579b8ed8efc33ff18"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an NV12 image to RGB888.  <a href="#a02037a65e2f5ec0579b8ed8efc33ff18">More...</a><br /></td></tr>
151 <tr class="separator:a02037a65e2f5ec0579b8ed8efc33ff18"><td class="memSeparator" colspan="2">&#160;</td></tr>
152 <tr class="memitem:a917c100f2da4a0e773bb63dd4f87de0b"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a917c100f2da4a0e773bb63dd4f87de0b">RGB888_to_YUV444_bt709</a> (__global uchar *rgb_input_ptr, uint rgb_input_stride_x, uint rgb_input_step_x, uint rgb_input_stride_y, uint rgb_input_step_y, uint rgb_input_offset_first_element_in_bytes, __global uchar *luma_output_ptr, uint luma_output_stride_x, uint luma_output_step_x, uint luma_output_stride_y, uint luma_output_step_y, uint luma_output_offset_first_element_in_bytes, __global uchar *u_output_ptr, uint u_output_stride_x, uint u_output_step_x, uint u_output_stride_y, uint u_output_step_y, uint u_output_offset_first_element_in_bytes, __global uchar *v_output_ptr, uint v_output_stride_x, uint v_output_step_x, uint v_output_stride_y, uint v_output_step_y, uint v_output_offset_first_element_in_bytes)</td></tr>
153 <tr class="memdesc:a917c100f2da4a0e773bb63dd4f87de0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a RGB image to YUV444 using BT709 color space.  <a href="#a917c100f2da4a0e773bb63dd4f87de0b">More...</a><br /></td></tr>
154 <tr class="separator:a917c100f2da4a0e773bb63dd4f87de0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
155 <tr class="memitem:a0e87467985f2b64c5aaf073ee5c64267"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a0e87467985f2b64c5aaf073ee5c64267">RGB888_to_IYUV_bt709</a> (__global uchar *rgb_input_ptr, uint rgb_input_stride_x, uint rgb_input_step_x, uint rgb_input_stride_y, uint rgb_input_step_y, uint rgb_input_offset_first_element_in_bytes, __global uchar *luma_output_ptr, uint luma_output_stride_x, uint luma_output_step_x, uint luma_output_stride_y, uint luma_output_step_y, uint luma_output_offset_first_element_in_bytes, __global uchar *u_output_ptr, uint u_output_stride_x, uint u_output_step_x, uint u_output_stride_y, uint u_output_step_y, uint u_output_offset_first_element_in_bytes, __global uchar *v_output_ptr, uint v_output_stride_x, uint v_output_step_x, uint v_output_stride_y, uint v_output_step_y, uint v_output_offset_first_element_in_bytes)</td></tr>
156 <tr class="memdesc:a0e87467985f2b64c5aaf073ee5c64267"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a RGB image to IYUV using BT709 color space.  <a href="#a0e87467985f2b64c5aaf073ee5c64267">More...</a><br /></td></tr>
157 <tr class="separator:a0e87467985f2b64c5aaf073ee5c64267"><td class="memSeparator" colspan="2">&#160;</td></tr>
158 <tr class="memitem:aee9a7e06c86387d2a46aad341fa940d0"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#aee9a7e06c86387d2a46aad341fa940d0">RGBA8888_to_YUV444_bt709</a> (__global uchar *rgba_input_ptr, uint rgba_input_stride_x, uint rgba_input_step_x, uint rgba_input_stride_y, uint rgba_input_step_y, uint rgba_input_offset_first_element_in_bytes, __global uchar *luma_output_ptr, uint luma_output_stride_x, uint luma_output_step_x, uint luma_output_stride_y, uint luma_output_step_y, uint luma_output_offset_first_element_in_bytes, __global uchar *u_output_ptr, uint u_output_stride_x, uint u_output_step_x, uint u_output_stride_y, uint u_output_step_y, uint u_output_offset_first_element_in_bytes, __global uchar *v_output_ptr, uint v_output_stride_x, uint v_output_step_x, uint v_output_stride_y, uint v_output_step_y, uint v_output_offset_first_element_in_bytes)</td></tr>
159 <tr class="memdesc:aee9a7e06c86387d2a46aad341fa940d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a RGBA image to YUV444 using BT709 color space.  <a href="#aee9a7e06c86387d2a46aad341fa940d0">More...</a><br /></td></tr>
160 <tr class="separator:aee9a7e06c86387d2a46aad341fa940d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
161 <tr class="memitem:a9ef9b466943c743b2a0f2865a70f741a"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a9ef9b466943c743b2a0f2865a70f741a">RGBA8888_to_NV12_bt709</a> (__global uchar *input_ptr, uint input_stride_x, uint input_step_x, uint input_stride_y, uint input_step_y, uint input_offset_first_element_in_bytes, __global uchar *luma_output_ptr, uint luma_output_stride_x, uint luma_output_step_x, uint luma_output_stride_y, uint luma_output_step_y, uint luma_output_offset_first_element_in_bytes, __global uchar *uv_output_ptr, uint uv_output_stride_x, uint uv_output_step_x, uint uv_output_stride_y, uint uv_output_step_y, uint uv_output_offset_first_element_in_bytes)</td></tr>
162 <tr class="memdesc:a9ef9b466943c743b2a0f2865a70f741a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a RGBA image to NV12 using BT709 color space.  <a href="#a9ef9b466943c743b2a0f2865a70f741a">More...</a><br /></td></tr>
163 <tr class="separator:a9ef9b466943c743b2a0f2865a70f741a"><td class="memSeparator" colspan="2">&#160;</td></tr>
164 <tr class="memitem:a18ef3b2b70de9af3e4386b2a07f2cd36"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a18ef3b2b70de9af3e4386b2a07f2cd36">RGBA8888_to_IYUV_bt709</a> (__global uchar *rgba_input_ptr, uint rgba_input_stride_x, uint rgba_input_step_x, uint rgba_input_stride_y, uint rgba_input_step_y, uint rgba_input_offset_first_element_in_bytes, __global uchar *luma_output_ptr, uint luma_output_stride_x, uint luma_output_step_x, uint luma_output_stride_y, uint luma_output_step_y, uint luma_output_offset_first_element_in_bytes, __global uchar *u_output_ptr, uint u_output_stride_x, uint u_output_step_x, uint u_output_stride_y, uint u_output_step_y, uint u_output_offset_first_element_in_bytes, __global uchar *v_output_ptr, uint v_output_stride_x, uint v_output_step_x, uint v_output_stride_y, uint v_output_step_y, uint v_output_offset_first_element_in_bytes)</td></tr>
165 <tr class="memdesc:a18ef3b2b70de9af3e4386b2a07f2cd36"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a RGBA image to IYUV using BT709 color space.  <a href="#a18ef3b2b70de9af3e4386b2a07f2cd36">More...</a><br /></td></tr>
166 <tr class="separator:a18ef3b2b70de9af3e4386b2a07f2cd36"><td class="memSeparator" colspan="2">&#160;</td></tr>
167 <tr class="memitem:a84880a0b48a6d4ff812b07ef7dcf0eda"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a84880a0b48a6d4ff812b07ef7dcf0eda">NV12_to_RGBA8888_bt709</a> (__global uchar *luma_input_ptr, uint luma_input_stride_x, uint luma_input_step_x, uint luma_input_stride_y, uint luma_input_step_y, uint luma_input_offset_first_element_in_bytes, __global uchar *uv_input_ptr, uint uv_input_stride_x, uint uv_input_step_x, uint uv_input_stride_y, uint uv_input_step_y, uint uv_input_offset_first_element_in_bytes, __global uchar *rgb_output_ptr, uint rgb_output_stride_x, uint rgb_output_step_x, uint rgb_output_stride_y, uint rgb_output_step_y, uint rgb_output_offset_first_element_in_bytes)</td></tr>
168 <tr class="memdesc:a84880a0b48a6d4ff812b07ef7dcf0eda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an NV12 image to RGB8888.  <a href="#a84880a0b48a6d4ff812b07ef7dcf0eda">More...</a><br /></td></tr>
169 <tr class="separator:a84880a0b48a6d4ff812b07ef7dcf0eda"><td class="memSeparator" colspan="2">&#160;</td></tr>
170 <tr class="memitem:a8fb5e7276f3da6febe4e9c48fe085169"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a8fb5e7276f3da6febe4e9c48fe085169">NV12_to_IYUV_bt709</a> (__global uchar *luma_input_ptr, uint luma_input_stride_x, uint luma_input_step_x, uint luma_input_stride_y, uint luma_input_step_y, uint luma_input_offset_first_element_in_bytes, __global uchar *uv_input_ptr, uint uv_input_stride_x, uint uv_input_step_x, uint uv_input_stride_y, uint uv_input_step_y, uint uv_input_offset_first_element_in_bytes, __global uchar *luma_output_ptr, uint luma_output_stride_x, uint luma_output_step_x, uint luma_output_stride_y, uint luma_output_step_y, uint luma_output_offset_first_element_in_bytes, __global uchar *u_output_ptr, uint u_output_stride_x, uint u_output_step_x, uint u_output_stride_y, uint u_output_step_y, uint u_output_offset_first_element_in_bytes, __global uchar *v_output_ptr, uint v_output_stride_x, uint v_output_step_x, uint v_output_stride_y, uint v_output_step_y, uint v_output_offset_first_element_in_bytes)</td></tr>
171 <tr class="memdesc:a8fb5e7276f3da6febe4e9c48fe085169"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an NV12 image to IYUV.  <a href="#a8fb5e7276f3da6febe4e9c48fe085169">More...</a><br /></td></tr>
172 <tr class="separator:a8fb5e7276f3da6febe4e9c48fe085169"><td class="memSeparator" colspan="2">&#160;</td></tr>
173 <tr class="memitem:a2c05435371a2cb1b2782d0a434407150"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a2c05435371a2cb1b2782d0a434407150">NV12_to_YUV444_bt709</a> (__global uchar *luma_input_ptr, uint luma_input_stride_x, uint luma_input_step_x, uint luma_input_stride_y, uint luma_input_step_y, uint luma_input_offset_first_element_in_bytes, __global uchar *uv_input_ptr, uint uv_input_stride_x, uint uv_input_step_x, uint uv_input_stride_y, uint uv_input_step_y, uint uv_input_offset_first_element_in_bytes, __global uchar *luma_output_ptr, uint luma_output_stride_x, uint luma_output_step_x, uint luma_output_stride_y, uint luma_output_step_y, uint luma_output_offset_first_element_in_bytes, __global uchar *u_output_ptr, uint u_output_stride_x, uint u_output_step_x, uint u_output_stride_y, uint u_output_step_y, uint u_output_offset_first_element_in_bytes, __global uchar *v_output_ptr, uint v_output_stride_x, uint v_output_step_x, uint v_output_stride_y, uint v_output_step_y, uint v_output_offset_first_element_in_bytes)</td></tr>
174 <tr class="memdesc:a2c05435371a2cb1b2782d0a434407150"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an NV12 image to YUV444.  <a href="#a2c05435371a2cb1b2782d0a434407150">More...</a><br /></td></tr>
175 <tr class="separator:a2c05435371a2cb1b2782d0a434407150"><td class="memSeparator" colspan="2">&#160;</td></tr>
176 <tr class="memitem:a57f0e4cc61a99718caaaaab82d393009"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a57f0e4cc61a99718caaaaab82d393009">NV21_to_RGB888_bt709</a> (__global uchar *luma_input_ptr, uint luma_input_stride_x, uint luma_input_step_x, uint luma_input_stride_y, uint luma_input_step_y, uint luma_input_offset_first_element_in_bytes, __global uchar *uv_input_ptr, uint uv_input_stride_x, uint uv_input_step_x, uint uv_input_stride_y, uint uv_input_step_y, uint uv_input_offset_first_element_in_bytes, __global uchar *rgb_output_ptr, uint rgb_output_stride_x, uint rgb_output_step_x, uint rgb_output_stride_y, uint rgb_output_step_y, uint rgb_output_offset_first_element_in_bytes)</td></tr>
177 <tr class="memdesc:a57f0e4cc61a99718caaaaab82d393009"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an NV21 image to RGB888.  <a href="#a57f0e4cc61a99718caaaaab82d393009">More...</a><br /></td></tr>
178 <tr class="separator:a57f0e4cc61a99718caaaaab82d393009"><td class="memSeparator" colspan="2">&#160;</td></tr>
179 <tr class="memitem:ad96db99a88669713407e91c036b06df2"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#ad96db99a88669713407e91c036b06df2">NV21_to_RGBA8888_bt709</a> (__global uchar *luma_input_ptr, uint luma_input_stride_x, uint luma_input_step_x, uint luma_input_stride_y, uint luma_input_step_y, uint luma_input_offset_first_element_in_bytes, __global uchar *uv_input_ptr, uint uv_input_stride_x, uint uv_input_step_x, uint uv_input_stride_y, uint uv_input_step_y, uint uv_input_offset_first_element_in_bytes, __global uchar *rgba_output_ptr, uint rgba_output_stride_x, uint rgba_output_step_x, uint rgba_output_stride_y, uint rgba_output_step_y, uint rgba_output_offset_first_element_in_bytes)</td></tr>
180 <tr class="memdesc:ad96db99a88669713407e91c036b06df2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an NV12 image to RGB8888.  <a href="#ad96db99a88669713407e91c036b06df2">More...</a><br /></td></tr>
181 <tr class="separator:ad96db99a88669713407e91c036b06df2"><td class="memSeparator" colspan="2">&#160;</td></tr>
182 <tr class="memitem:abd3f622e7d731ae70306266b334ff33b"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#abd3f622e7d731ae70306266b334ff33b">NV21_to_YUV444_bt709</a> (__global uchar *luma_input_ptr, uint luma_input_stride_x, uint luma_input_step_x, uint luma_input_stride_y, uint luma_input_step_y, uint luma_input_offset_first_element_in_bytes, __global uchar *uv_input_ptr, uint uv_input_stride_x, uint uv_input_step_x, uint uv_input_stride_y, uint uv_input_step_y, uint uv_input_offset_first_element_in_bytes, __global uchar *luma_output_ptr, uint luma_output_stride_x, uint luma_output_step_x, uint luma_output_stride_y, uint luma_output_step_y, uint luma_output_offset_first_element_in_bytes, __global uchar *u_output_ptr, uint u_output_stride_x, uint u_output_step_x, uint u_output_stride_y, uint u_output_step_y, uint u_output_offset_first_element_in_bytes, __global uchar *v_output_ptr, uint v_output_stride_x, uint v_output_step_x, uint v_output_stride_y, uint v_output_step_y, uint v_output_offset_first_element_in_bytes)</td></tr>
183 <tr class="memdesc:abd3f622e7d731ae70306266b334ff33b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an NV21 image to YUV444.  <a href="#abd3f622e7d731ae70306266b334ff33b">More...</a><br /></td></tr>
184 <tr class="separator:abd3f622e7d731ae70306266b334ff33b"><td class="memSeparator" colspan="2">&#160;</td></tr>
185 <tr class="memitem:acfdf02c3ab4893afc7e05afc3a950555"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#acfdf02c3ab4893afc7e05afc3a950555">NV21_to_IYUV_bt709</a> (__global uchar *luma_input_ptr, uint luma_input_stride_x, uint luma_input_step_x, uint luma_input_stride_y, uint luma_input_step_y, uint luma_input_offset_first_element_in_bytes, __global uchar *uv_input_ptr, uint uv_input_stride_x, uint uv_input_step_x, uint uv_input_stride_y, uint uv_input_step_y, uint uv_input_offset_first_element_in_bytes, __global uchar *luma_output_ptr, uint luma_output_stride_x, uint luma_output_step_x, uint luma_output_stride_y, uint luma_output_step_y, uint luma_output_offset_first_element_in_bytes, __global uchar *u_output_ptr, uint u_output_stride_x, uint u_output_step_x, uint u_output_stride_y, uint u_output_step_y, uint u_output_offset_first_element_in_bytes, __global uchar *v_output_ptr, uint v_output_stride_x, uint v_output_step_x, uint v_output_stride_y, uint v_output_step_y, uint v_output_offset_first_element_in_bytes)</td></tr>
186 <tr class="memdesc:acfdf02c3ab4893afc7e05afc3a950555"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an NV21 image to IYUV.  <a href="#acfdf02c3ab4893afc7e05afc3a950555">More...</a><br /></td></tr>
187 <tr class="separator:acfdf02c3ab4893afc7e05afc3a950555"><td class="memSeparator" colspan="2">&#160;</td></tr>
188 <tr class="memitem:a8946fa606d523038e103e6b4ceb42e56"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a8946fa606d523038e103e6b4ceb42e56">UYVY422_to_IYUV_bt709</a> (__global uchar *uyvy_input_ptr, uint uyvy_input_stride_x, uint uyvy_input_step_x, uint uyvy_input_stride_y, uint uyvy_input_step_y, uint uyvy_input_offset_first_element_in_bytes, __global uchar *luma_output_ptr, uint luma_output_stride_x, uint luma_output_step_x, uint luma_output_stride_y, uint luma_output_step_y, uint luma_output_offset_first_element_in_bytes, __global uchar *u_output_ptr, uint u_output_stride_x, uint u_output_step_x, uint u_output_stride_y, uint u_output_step_y, uint u_output_offset_first_element_in_bytes, __global uchar *v_output_ptr, uint v_output_stride_x, uint v_output_step_x, uint v_output_stride_y, uint v_output_step_y, uint v_output_offset_first_element_in_bytes)</td></tr>
189 <tr class="memdesc:a8946fa606d523038e103e6b4ceb42e56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a UYVY image to IYUV using BT709 color space.  <a href="#a8946fa606d523038e103e6b4ceb42e56">More...</a><br /></td></tr>
190 <tr class="separator:a8946fa606d523038e103e6b4ceb42e56"><td class="memSeparator" colspan="2">&#160;</td></tr>
191 <tr class="memitem:a3f241a3b4a3fbd337c6fe03cd4e61877"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a3f241a3b4a3fbd337c6fe03cd4e61877">YUYV422_to_IYUV_bt709</a> (__global uchar *yuyv_input_ptr, uint yuyv_input_stride_x, uint yuyv_input_step_x, uint yuyv_input_stride_y, uint yuyv_input_step_y, uint yuyv_input_offset_first_element_in_bytes, __global uchar *luma_output_ptr, uint luma_output_stride_x, uint luma_output_step_x, uint luma_output_stride_y, uint luma_output_step_y, uint luma_output_offset_first_element_in_bytes, __global uchar *u_output_ptr, uint u_output_stride_x, uint u_output_step_x, uint u_output_stride_y, uint u_output_step_y, uint u_output_offset_first_element_in_bytes, __global uchar *v_output_ptr, uint v_output_stride_x, uint v_output_step_x, uint v_output_stride_y, uint v_output_step_y, uint v_output_offset_first_element_in_bytes)</td></tr>
192 <tr class="memdesc:a3f241a3b4a3fbd337c6fe03cd4e61877"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a YUYV image to IYUV using BT709 color space.  <a href="#a3f241a3b4a3fbd337c6fe03cd4e61877">More...</a><br /></td></tr>
193 <tr class="separator:a3f241a3b4a3fbd337c6fe03cd4e61877"><td class="memSeparator" colspan="2">&#160;</td></tr>
194 <tr class="memitem:a40d2fa0803ea5b0e979dc124a2606564"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a40d2fa0803ea5b0e979dc124a2606564">IYUV_to_RGB888_bt709</a> (__global uchar *luma_input_ptr, uint luma_input_stride_x, uint luma_input_step_x, uint luma_input_stride_y, uint luma_input_step_y, uint luma_input_offset_first_element_in_bytes, __global uchar *u_input_ptr, uint u_input_stride_x, uint u_input_step_x, uint u_input_stride_y, uint u_input_step_y, uint u_input_offset_first_element_in_bytes, __global uchar *v_input_ptr, uint v_input_stride_x, uint v_input_step_x, uint v_input_stride_y, uint v_input_step_y, uint v_input_offset_first_element_in_bytes, __global uchar *rgb_output_ptr, uint rgb_output_stride_x, uint rgb_output_step_x, uint rgb_output_stride_y, uint rgb_output_step_y, uint rgb_output_offset_first_element_in_bytes)</td></tr>
195 <tr class="memdesc:a40d2fa0803ea5b0e979dc124a2606564"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an IYUV image to RGB888.  <a href="#a40d2fa0803ea5b0e979dc124a2606564">More...</a><br /></td></tr>
196 <tr class="separator:a40d2fa0803ea5b0e979dc124a2606564"><td class="memSeparator" colspan="2">&#160;</td></tr>
197 <tr class="memitem:a7a8a4562d5b32de4a1d1352712d9c782"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a7a8a4562d5b32de4a1d1352712d9c782">IYUV_to_RGBA8888_bt709</a> (__global uchar *luma_input_ptr, uint luma_input_stride_x, uint luma_input_step_x, uint luma_input_stride_y, uint luma_input_step_y, uint luma_input_offset_first_element_in_bytes, __global uchar *u_input_ptr, uint u_input_stride_x, uint u_input_step_x, uint u_input_stride_y, uint u_input_step_y, uint u_input_offset_first_element_in_bytes, __global uchar *v_input_ptr, uint v_input_stride_x, uint v_input_step_x, uint v_input_stride_y, uint v_input_step_y, uint v_input_offset_first_element_in_bytes, __global uchar *rgba_output_ptr, uint rgba_output_stride_x, uint rgba_output_step_x, uint rgba_output_stride_y, uint rgba_output_step_y, uint rgba_output_offset_first_element_in_bytes)</td></tr>
198 <tr class="memdesc:a7a8a4562d5b32de4a1d1352712d9c782"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an IYUV image to RGB8888.  <a href="#a7a8a4562d5b32de4a1d1352712d9c782">More...</a><br /></td></tr>
199 <tr class="separator:a7a8a4562d5b32de4a1d1352712d9c782"><td class="memSeparator" colspan="2">&#160;</td></tr>
200 <tr class="memitem:a718147fe7bf9f1bce18e07c2cfcc472c"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a718147fe7bf9f1bce18e07c2cfcc472c">IYUV_to_YUV444_bt709</a> (__global uchar *luma_input_ptr, uint luma_input_stride_x, uint luma_input_step_x, uint luma_input_stride_y, uint luma_input_step_y, uint luma_input_offset_first_element_in_bytes, __global uchar *u_input_ptr, uint u_input_stride_x, uint u_input_step_x, uint u_input_stride_y, uint u_input_step_y, uint u_input_offset_first_element_in_bytes, __global uchar *v_input_ptr, uint v_input_stride_x, uint v_input_step_x, uint v_input_stride_y, uint v_input_step_y, uint v_input_offset_first_element_in_bytes, __global uchar *luma_output_ptr, uint luma_output_stride_x, uint luma_output_step_x, uint luma_output_stride_y, uint luma_output_step_y, uint luma_output_offset_first_element_in_bytes, __global uchar *u_output_ptr, uint u_output_stride_x, uint u_output_step_x, uint u_output_stride_y, uint u_output_step_y, uint u_output_offset_first_element_in_bytes, __global uchar *v_output_ptr, uint v_output_stride_x, uint v_output_step_x, uint v_output_stride_y, uint v_output_step_y, uint v_output_offset_first_element_in_bytes)</td></tr>
201 <tr class="memdesc:a718147fe7bf9f1bce18e07c2cfcc472c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an IYUV image to YUV444.  <a href="#a718147fe7bf9f1bce18e07c2cfcc472c">More...</a><br /></td></tr>
202 <tr class="separator:a718147fe7bf9f1bce18e07c2cfcc472c"><td class="memSeparator" colspan="2">&#160;</td></tr>
203 <tr class="memitem:a47fa13a636a45eaa621bdbcbb206895f"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a47fa13a636a45eaa621bdbcbb206895f">IYUV_to_NV12_bt709</a> (__global uchar *luma_input_ptr, uint luma_input_stride_x, uint luma_input_step_x, uint luma_input_stride_y, uint luma_input_step_y, uint luma_input_offset_first_element_in_bytes, __global uchar *u_input_ptr, uint u_input_stride_x, uint u_input_step_x, uint u_input_stride_y, uint u_input_step_y, uint u_input_offset_first_element_in_bytes, __global uchar *v_input_ptr, uint v_input_stride_x, uint v_input_step_x, uint v_input_stride_y, uint v_input_step_y, uint v_input_offset_first_element_in_bytes, __global uchar *luma_output_ptr, uint luma_output_stride_x, uint luma_output_step_x, uint luma_output_stride_y, uint luma_output_step_y, uint luma_output_offset_first_element_in_bytes, __global uchar *uv_output_ptr, uint uv_output_stride_x, uint uv_output_step_x, uint uv_output_stride_y, uint uv_output_step_y, uint uv_output_offset_first_element_in_bytes)</td></tr>
204 <tr class="memdesc:a47fa13a636a45eaa621bdbcbb206895f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert an IYUV image to NV12.  <a href="#a47fa13a636a45eaa621bdbcbb206895f">More...</a><br /></td></tr>
205 <tr class="separator:a47fa13a636a45eaa621bdbcbb206895f"><td class="memSeparator" colspan="2">&#160;</td></tr>
206 <tr class="memitem:aa4d458afddfb19f170cb27a9cc934069"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#aa4d458afddfb19f170cb27a9cc934069">YUYV422_to_NV12_bt709</a> (__global uchar *yuyv_input_ptr, uint yuyv_input_stride_x, uint yuyv_input_step_x, uint yuyv_input_stride_y, uint yuyv_input_step_y, uint yuyv_input_offset_first_element_in_bytes, __global uchar *luma_output_ptr, uint luma_output_stride_x, uint luma_output_step_x, uint luma_output_stride_y, uint luma_output_step_y, uint luma_output_offset_first_element_in_bytes, __global uchar *uv_output_ptr, uint uv_output_stride_x, uint uv_output_step_x, uint uv_output_stride_y, uint uv_output_step_y, uint uv_output_offset_first_element_in_bytes)</td></tr>
207 <tr class="memdesc:aa4d458afddfb19f170cb27a9cc934069"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a YUYV image to NV12 using BT709 color space.  <a href="#aa4d458afddfb19f170cb27a9cc934069">More...</a><br /></td></tr>
208 <tr class="separator:aa4d458afddfb19f170cb27a9cc934069"><td class="memSeparator" colspan="2">&#160;</td></tr>
209 <tr class="memitem:a966fe2be85946bbbe2ecad5ad1100d1f"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="color__convert_8cl.xhtml#a966fe2be85946bbbe2ecad5ad1100d1f">UYVY422_to_NV12_bt709</a> (__global uchar *input_uyvy_ptr, uint input_uyvy_stride_x, uint input_uyvy_step_x, uint input_uyvy_stride_y, uint input_uyvy_step_y, uint input_uyvy_offset_first_element_in_bytes, __global uchar *luma_ptr, uint luma_stride_x, uint luma_step_x, uint luma_stride_y, uint luma_step_y, uint luma_offset_first_element_in_bytes, __global uchar *uv_ptr, uint uv_stride_x, uint uv_step_x, uint uv_stride_y, uint uv_step_y, uint uv_offset_first_element_in_bytes)</td></tr>
210 <tr class="memdesc:a966fe2be85946bbbe2ecad5ad1100d1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a UYVY image to NV12 using BT709 color space.  <a href="#a966fe2be85946bbbe2ecad5ad1100d1f">More...</a><br /></td></tr>
211 <tr class="separator:a966fe2be85946bbbe2ecad5ad1100d1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
212 </table>
213 <h2 class="groupheader">Function Documentation</h2>
214 <a class="anchor" id="a47fa13a636a45eaa621bdbcbb206895f"></a>
215 <div class="memitem">
216 <div class="memproto">
217       <table class="memname">
218         <tr>
219           <td class="memname">__kernel void IYUV_to_NV12_bt709 </td>
220           <td>(</td>
221           <td class="paramtype">__global uchar *&#160;</td>
222           <td class="paramname"><em>luma_input_ptr</em>, </td>
223         </tr>
224         <tr>
225           <td class="paramkey"></td>
226           <td></td>
227           <td class="paramtype">uint&#160;</td>
228           <td class="paramname"><em>luma_input_stride_x</em>, </td>
229         </tr>
230         <tr>
231           <td class="paramkey"></td>
232           <td></td>
233           <td class="paramtype">uint&#160;</td>
234           <td class="paramname"><em>luma_input_step_x</em>, </td>
235         </tr>
236         <tr>
237           <td class="paramkey"></td>
238           <td></td>
239           <td class="paramtype">uint&#160;</td>
240           <td class="paramname"><em>luma_input_stride_y</em>, </td>
241         </tr>
242         <tr>
243           <td class="paramkey"></td>
244           <td></td>
245           <td class="paramtype">uint&#160;</td>
246           <td class="paramname"><em>luma_input_step_y</em>, </td>
247         </tr>
248         <tr>
249           <td class="paramkey"></td>
250           <td></td>
251           <td class="paramtype">uint&#160;</td>
252           <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
253         </tr>
254         <tr>
255           <td class="paramkey"></td>
256           <td></td>
257           <td class="paramtype">__global uchar *&#160;</td>
258           <td class="paramname"><em>u_input_ptr</em>, </td>
259         </tr>
260         <tr>
261           <td class="paramkey"></td>
262           <td></td>
263           <td class="paramtype">uint&#160;</td>
264           <td class="paramname"><em>u_input_stride_x</em>, </td>
265         </tr>
266         <tr>
267           <td class="paramkey"></td>
268           <td></td>
269           <td class="paramtype">uint&#160;</td>
270           <td class="paramname"><em>u_input_step_x</em>, </td>
271         </tr>
272         <tr>
273           <td class="paramkey"></td>
274           <td></td>
275           <td class="paramtype">uint&#160;</td>
276           <td class="paramname"><em>u_input_stride_y</em>, </td>
277         </tr>
278         <tr>
279           <td class="paramkey"></td>
280           <td></td>
281           <td class="paramtype">uint&#160;</td>
282           <td class="paramname"><em>u_input_step_y</em>, </td>
283         </tr>
284         <tr>
285           <td class="paramkey"></td>
286           <td></td>
287           <td class="paramtype">uint&#160;</td>
288           <td class="paramname"><em>u_input_offset_first_element_in_bytes</em>, </td>
289         </tr>
290         <tr>
291           <td class="paramkey"></td>
292           <td></td>
293           <td class="paramtype">__global uchar *&#160;</td>
294           <td class="paramname"><em>v_input_ptr</em>, </td>
295         </tr>
296         <tr>
297           <td class="paramkey"></td>
298           <td></td>
299           <td class="paramtype">uint&#160;</td>
300           <td class="paramname"><em>v_input_stride_x</em>, </td>
301         </tr>
302         <tr>
303           <td class="paramkey"></td>
304           <td></td>
305           <td class="paramtype">uint&#160;</td>
306           <td class="paramname"><em>v_input_step_x</em>, </td>
307         </tr>
308         <tr>
309           <td class="paramkey"></td>
310           <td></td>
311           <td class="paramtype">uint&#160;</td>
312           <td class="paramname"><em>v_input_stride_y</em>, </td>
313         </tr>
314         <tr>
315           <td class="paramkey"></td>
316           <td></td>
317           <td class="paramtype">uint&#160;</td>
318           <td class="paramname"><em>v_input_step_y</em>, </td>
319         </tr>
320         <tr>
321           <td class="paramkey"></td>
322           <td></td>
323           <td class="paramtype">uint&#160;</td>
324           <td class="paramname"><em>v_input_offset_first_element_in_bytes</em>, </td>
325         </tr>
326         <tr>
327           <td class="paramkey"></td>
328           <td></td>
329           <td class="paramtype">__global uchar *&#160;</td>
330           <td class="paramname"><em>luma_output_ptr</em>, </td>
331         </tr>
332         <tr>
333           <td class="paramkey"></td>
334           <td></td>
335           <td class="paramtype">uint&#160;</td>
336           <td class="paramname"><em>luma_output_stride_x</em>, </td>
337         </tr>
338         <tr>
339           <td class="paramkey"></td>
340           <td></td>
341           <td class="paramtype">uint&#160;</td>
342           <td class="paramname"><em>luma_output_step_x</em>, </td>
343         </tr>
344         <tr>
345           <td class="paramkey"></td>
346           <td></td>
347           <td class="paramtype">uint&#160;</td>
348           <td class="paramname"><em>luma_output_stride_y</em>, </td>
349         </tr>
350         <tr>
351           <td class="paramkey"></td>
352           <td></td>
353           <td class="paramtype">uint&#160;</td>
354           <td class="paramname"><em>luma_output_step_y</em>, </td>
355         </tr>
356         <tr>
357           <td class="paramkey"></td>
358           <td></td>
359           <td class="paramtype">uint&#160;</td>
360           <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
361         </tr>
362         <tr>
363           <td class="paramkey"></td>
364           <td></td>
365           <td class="paramtype">__global uchar *&#160;</td>
366           <td class="paramname"><em>uv_output_ptr</em>, </td>
367         </tr>
368         <tr>
369           <td class="paramkey"></td>
370           <td></td>
371           <td class="paramtype">uint&#160;</td>
372           <td class="paramname"><em>uv_output_stride_x</em>, </td>
373         </tr>
374         <tr>
375           <td class="paramkey"></td>
376           <td></td>
377           <td class="paramtype">uint&#160;</td>
378           <td class="paramname"><em>uv_output_step_x</em>, </td>
379         </tr>
380         <tr>
381           <td class="paramkey"></td>
382           <td></td>
383           <td class="paramtype">uint&#160;</td>
384           <td class="paramname"><em>uv_output_stride_y</em>, </td>
385         </tr>
386         <tr>
387           <td class="paramkey"></td>
388           <td></td>
389           <td class="paramtype">uint&#160;</td>
390           <td class="paramname"><em>uv_output_step_y</em>, </td>
391         </tr>
392         <tr>
393           <td class="paramkey"></td>
394           <td></td>
395           <td class="paramtype">uint&#160;</td>
396           <td class="paramname"><em>uv_output_offset_first_element_in_bytes</em>&#160;</td>
397         </tr>
398         <tr>
399           <td></td>
400           <td>)</td>
401           <td></td><td></td>
402         </tr>
403       </table>
404 </div><div class="memdoc">
405
406 <p>Convert an IYUV image to NV12. </p>
407 <p>Global Workgroup Size [ DIV_CEIL(width, 16), height ] No offset.</p>
408 <dl class="params"><dt>Parameters</dt><dd>
409   <table class="params">
410     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_ptr</td><td>Pointer to the source luma channel. Supported Format: U8 </td></tr>
411     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_x</td><td>Stride of the luma image in X dimension (in bytes) </td></tr>
412     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_x</td><td>luma_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
413     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_y</td><td>Stride of the source luma channel in Y dimension (in bytes) </td></tr>
414     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_y</td><td>luma_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
415     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
416     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_ptr</td><td>Pointer to the source U channel. Supported Format: U8 </td></tr>
417     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_stride_x</td><td>Stride of the source image U channel in X dimension (in bytes) </td></tr>
418     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_step_x</td><td>u_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
419     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
420     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_step_y</td><td>u_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
421     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source U channel </td></tr>
422     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_ptr</td><td>Pointer to the source V channel. Supported Format: U8 </td></tr>
423     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_stride_x</td><td>Stride of the source image V channel in X dimension (in bytes) </td></tr>
424     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_step_x</td><td>v_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
425     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_stride_y</td><td>Stride of the source image V channel in Y dimension (in bytes) </td></tr>
426     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_step_y</td><td>v_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
427     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image V channel </td></tr>
428     <tr><td class="paramdir">[out]</td><td class="paramname">luma_output_ptr</td><td>Pointer to the destination luma channel. Supported Format: U8 </td></tr>
429     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_x</td><td>Stride of the destination luma channel in X dimension (in bytes) </td></tr>
430     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_x</td><td>luma_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
431     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
432     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_y</td><td>luma_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
433     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination luma channel </td></tr>
434     <tr><td class="paramdir">[out]</td><td class="paramname">uv_output_ptr</td><td>Pointer to the destination UV channel. Supported Format: U8 </td></tr>
435     <tr><td class="paramdir">[in]</td><td class="paramname">uv_output_stride_x</td><td>Stride of the destination UV channel in X dimension (in bytes) </td></tr>
436     <tr><td class="paramdir">[in]</td><td class="paramname">uv_output_step_x</td><td>uv_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
437     <tr><td class="paramdir">[in]</td><td class="paramname">uv_output_stride_y</td><td>Stride of the destination image U channel in Y dimension (in bytes) </td></tr>
438     <tr><td class="paramdir">[in]</td><td class="paramname">uv_output_step_y</td><td>uv_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
439     <tr><td class="paramdir">[in]</td><td class="paramname">uv_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination UV channel </td></tr>
440   </table>
441   </dd>
442 </dl>
443
444 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l01703">1703</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
445
446 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
447 <div class="fragment"><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;{</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_y   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_input);</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_u   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(u_input);</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_v   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(v_input);</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_y  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_output);</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_uv = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(uv_output);</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;    <span class="comment">// handle 32 pixels every time, two lines, each line for 16 pixels</span></div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;    uchar16 luma_0 = vload16(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;    uchar16 luma_1 = vload16(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_input_stride_y);</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;    uchar8  cb     = vload8(0, in_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;    uchar8  cr     = vload8(0, in_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;    uchar16 cbcr   = (uchar16)(cb.s0, cr.s0, cb.s1, cr.s1, cb.s2, cr.s2, cb.s3, cr.s3, cb.s4, cr.s4, cb.s5, cr.s5, cb.s6,</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;                               cr.s6, cb.s7, cr.s7);</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;    vstore16(luma_0, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160;    vstore16(luma_1, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_output_stride_y);</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;    vstore16(cbcr, 0, out_uv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
448 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
449 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
450 </div><!-- fragment -->
451 </div>
452 </div>
453 <a class="anchor" id="a40d2fa0803ea5b0e979dc124a2606564"></a>
454 <div class="memitem">
455 <div class="memproto">
456       <table class="memname">
457         <tr>
458           <td class="memname">__kernel void IYUV_to_RGB888_bt709 </td>
459           <td>(</td>
460           <td class="paramtype">__global uchar *&#160;</td>
461           <td class="paramname"><em>luma_input_ptr</em>, </td>
462         </tr>
463         <tr>
464           <td class="paramkey"></td>
465           <td></td>
466           <td class="paramtype">uint&#160;</td>
467           <td class="paramname"><em>luma_input_stride_x</em>, </td>
468         </tr>
469         <tr>
470           <td class="paramkey"></td>
471           <td></td>
472           <td class="paramtype">uint&#160;</td>
473           <td class="paramname"><em>luma_input_step_x</em>, </td>
474         </tr>
475         <tr>
476           <td class="paramkey"></td>
477           <td></td>
478           <td class="paramtype">uint&#160;</td>
479           <td class="paramname"><em>luma_input_stride_y</em>, </td>
480         </tr>
481         <tr>
482           <td class="paramkey"></td>
483           <td></td>
484           <td class="paramtype">uint&#160;</td>
485           <td class="paramname"><em>luma_input_step_y</em>, </td>
486         </tr>
487         <tr>
488           <td class="paramkey"></td>
489           <td></td>
490           <td class="paramtype">uint&#160;</td>
491           <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
492         </tr>
493         <tr>
494           <td class="paramkey"></td>
495           <td></td>
496           <td class="paramtype">__global uchar *&#160;</td>
497           <td class="paramname"><em>u_input_ptr</em>, </td>
498         </tr>
499         <tr>
500           <td class="paramkey"></td>
501           <td></td>
502           <td class="paramtype">uint&#160;</td>
503           <td class="paramname"><em>u_input_stride_x</em>, </td>
504         </tr>
505         <tr>
506           <td class="paramkey"></td>
507           <td></td>
508           <td class="paramtype">uint&#160;</td>
509           <td class="paramname"><em>u_input_step_x</em>, </td>
510         </tr>
511         <tr>
512           <td class="paramkey"></td>
513           <td></td>
514           <td class="paramtype">uint&#160;</td>
515           <td class="paramname"><em>u_input_stride_y</em>, </td>
516         </tr>
517         <tr>
518           <td class="paramkey"></td>
519           <td></td>
520           <td class="paramtype">uint&#160;</td>
521           <td class="paramname"><em>u_input_step_y</em>, </td>
522         </tr>
523         <tr>
524           <td class="paramkey"></td>
525           <td></td>
526           <td class="paramtype">uint&#160;</td>
527           <td class="paramname"><em>u_input_offset_first_element_in_bytes</em>, </td>
528         </tr>
529         <tr>
530           <td class="paramkey"></td>
531           <td></td>
532           <td class="paramtype">__global uchar *&#160;</td>
533           <td class="paramname"><em>v_input_ptr</em>, </td>
534         </tr>
535         <tr>
536           <td class="paramkey"></td>
537           <td></td>
538           <td class="paramtype">uint&#160;</td>
539           <td class="paramname"><em>v_input_stride_x</em>, </td>
540         </tr>
541         <tr>
542           <td class="paramkey"></td>
543           <td></td>
544           <td class="paramtype">uint&#160;</td>
545           <td class="paramname"><em>v_input_step_x</em>, </td>
546         </tr>
547         <tr>
548           <td class="paramkey"></td>
549           <td></td>
550           <td class="paramtype">uint&#160;</td>
551           <td class="paramname"><em>v_input_stride_y</em>, </td>
552         </tr>
553         <tr>
554           <td class="paramkey"></td>
555           <td></td>
556           <td class="paramtype">uint&#160;</td>
557           <td class="paramname"><em>v_input_step_y</em>, </td>
558         </tr>
559         <tr>
560           <td class="paramkey"></td>
561           <td></td>
562           <td class="paramtype">uint&#160;</td>
563           <td class="paramname"><em>v_input_offset_first_element_in_bytes</em>, </td>
564         </tr>
565         <tr>
566           <td class="paramkey"></td>
567           <td></td>
568           <td class="paramtype">__global uchar *&#160;</td>
569           <td class="paramname"><em>rgb_output_ptr</em>, </td>
570         </tr>
571         <tr>
572           <td class="paramkey"></td>
573           <td></td>
574           <td class="paramtype">uint&#160;</td>
575           <td class="paramname"><em>rgb_output_stride_x</em>, </td>
576         </tr>
577         <tr>
578           <td class="paramkey"></td>
579           <td></td>
580           <td class="paramtype">uint&#160;</td>
581           <td class="paramname"><em>rgb_output_step_x</em>, </td>
582         </tr>
583         <tr>
584           <td class="paramkey"></td>
585           <td></td>
586           <td class="paramtype">uint&#160;</td>
587           <td class="paramname"><em>rgb_output_stride_y</em>, </td>
588         </tr>
589         <tr>
590           <td class="paramkey"></td>
591           <td></td>
592           <td class="paramtype">uint&#160;</td>
593           <td class="paramname"><em>rgb_output_step_y</em>, </td>
594         </tr>
595         <tr>
596           <td class="paramkey"></td>
597           <td></td>
598           <td class="paramtype">uint&#160;</td>
599           <td class="paramname"><em>rgb_output_offset_first_element_in_bytes</em>&#160;</td>
600         </tr>
601         <tr>
602           <td></td>
603           <td>)</td>
604           <td></td><td></td>
605         </tr>
606       </table>
607 </div><div class="memdoc">
608
609 <p>Convert an IYUV image to RGB888. </p>
610 <p>Global Workgroup Size [ DIV_CEIL(width, 4), height ] No offset.</p>
611 <dl class="params"><dt>Parameters</dt><dd>
612   <table class="params">
613     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_ptr</td><td>Pointer to the source luma channel. Supported Format: U8 </td></tr>
614     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_x</td><td>Stride of the luma image in X dimension (in bytes) </td></tr>
615     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_x</td><td>luma_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
616     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_y</td><td>Stride of the source luma channel in Y dimension (in bytes) </td></tr>
617     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_y</td><td>luma_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
618     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
619     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_ptr</td><td>Pointer to the source U channel. Supported Format: U8 </td></tr>
620     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_stride_x</td><td>Stride of the source image U channel in X dimension (in bytes) </td></tr>
621     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_step_x</td><td>u_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
622     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
623     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_step_y</td><td>u_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
624     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source U channel </td></tr>
625     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_ptr</td><td>Pointer to the source V channel. Supported Format: U8 </td></tr>
626     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_stride_x</td><td>Stride of the source image V channel in X dimension (in bytes) </td></tr>
627     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_step_x</td><td>v_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
628     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_stride_y</td><td>Stride of the source image V channel in Y dimension (in bytes) </td></tr>
629     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_step_y</td><td>v_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
630     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image V channel </td></tr>
631     <tr><td class="paramdir">[out]</td><td class="paramname">rgb_output_ptr</td><td>Pointer to the destination image. Supported Format: U8 </td></tr>
632     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
633     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_step_x</td><td>rgb_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
634     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
635     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_step_y</td><td>rgb_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
636     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
637   </table>
638   </dd>
639 </dl>
640
641 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l01462">1462</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
642
643 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
644 <div class="fragment"><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;{</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_y    = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_input);</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_u    = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(u_input);</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_v    = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(v_input);</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_rgb = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(rgb_output);</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;    <span class="comment">// handle 8 pixels every time, two lines, each line for 4 pixels</span></div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;    uchar4 luma_0 = vload4(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;    uchar4 luma_1 = vload4(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_input_stride_y);</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;    uchar4 cbcr   = (uchar4)(vload2(0, in_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>), vload2(0, in_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>));</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;    char4  cb     = (char4)(cbcr.s0, cbcr.s0, cbcr.s1, cbcr.s1) - (char4)(128);</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;    char4  cr     = (char4)(cbcr.s2, cbcr.s2, cbcr.s3, cbcr.s3) - (char4)(128);</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;    float4 temp0 = (float4)(0.0000f) + (float4)(0.0000f) * convert_float4(cb) + (float4)(1.5748f) * convert_float4(cr);</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;    float4 temp1 = (float4)(0.0000f) - (float4)(0.1873f) * convert_float4(cb) - (float4)(0.4681f) * convert_float4(cr);</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;    float4 temp2 = (float4)(0.0000f) + (float4)(1.8556f) * convert_float4(cb) + (float4)(0.0000f) * convert_float4(cr);</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;    float4 f_r = convert_float4(luma_0) + temp0;</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;    float4 f_g = convert_float4(luma_0) + temp1;</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;    float4 f_b = convert_float4(luma_0) + temp2;</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;    uchar4 r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;    uchar4 g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;    uchar4 b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;    uchar8 rgb_0 = (uchar8)(r_0.s0, g_0.s0, b_0.s0, r_0.s1, g_0.s1, b_0.s1, r_0.s2, g_0.s2);</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;    uchar4 rgb_1 = (uchar4)(b_0.s2, r_0.s3, g_0.s3, b_0.s3);</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;    vstore8(rgb_0, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;    vstore4(rgb_1, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 8);</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;    f_r = convert_float4(luma_1) + temp0;</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;    f_g = convert_float4(luma_1) + temp1;</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;    f_b = convert_float4(luma_1) + temp2;</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;    r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;    g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;    b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;    rgb_0 = (uchar8)(r_0.s0, g_0.s0, b_0.s0, r_0.s1, g_0.s1, b_0.s1, r_0.s2, g_0.s2);</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;    rgb_1 = (uchar4)(b_0.s2, r_0.s3, g_0.s3, b_0.s3);</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;    vstore8(rgb_0, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + rgb_output_stride_y);</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;    vstore4(rgb_1, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + rgb_output_stride_y + 8);</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
645 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
646 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
647 </div><!-- fragment -->
648 </div>
649 </div>
650 <a class="anchor" id="a7a8a4562d5b32de4a1d1352712d9c782"></a>
651 <div class="memitem">
652 <div class="memproto">
653       <table class="memname">
654         <tr>
655           <td class="memname">__kernel void IYUV_to_RGBA8888_bt709 </td>
656           <td>(</td>
657           <td class="paramtype">__global uchar *&#160;</td>
658           <td class="paramname"><em>luma_input_ptr</em>, </td>
659         </tr>
660         <tr>
661           <td class="paramkey"></td>
662           <td></td>
663           <td class="paramtype">uint&#160;</td>
664           <td class="paramname"><em>luma_input_stride_x</em>, </td>
665         </tr>
666         <tr>
667           <td class="paramkey"></td>
668           <td></td>
669           <td class="paramtype">uint&#160;</td>
670           <td class="paramname"><em>luma_input_step_x</em>, </td>
671         </tr>
672         <tr>
673           <td class="paramkey"></td>
674           <td></td>
675           <td class="paramtype">uint&#160;</td>
676           <td class="paramname"><em>luma_input_stride_y</em>, </td>
677         </tr>
678         <tr>
679           <td class="paramkey"></td>
680           <td></td>
681           <td class="paramtype">uint&#160;</td>
682           <td class="paramname"><em>luma_input_step_y</em>, </td>
683         </tr>
684         <tr>
685           <td class="paramkey"></td>
686           <td></td>
687           <td class="paramtype">uint&#160;</td>
688           <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
689         </tr>
690         <tr>
691           <td class="paramkey"></td>
692           <td></td>
693           <td class="paramtype">__global uchar *&#160;</td>
694           <td class="paramname"><em>u_input_ptr</em>, </td>
695         </tr>
696         <tr>
697           <td class="paramkey"></td>
698           <td></td>
699           <td class="paramtype">uint&#160;</td>
700           <td class="paramname"><em>u_input_stride_x</em>, </td>
701         </tr>
702         <tr>
703           <td class="paramkey"></td>
704           <td></td>
705           <td class="paramtype">uint&#160;</td>
706           <td class="paramname"><em>u_input_step_x</em>, </td>
707         </tr>
708         <tr>
709           <td class="paramkey"></td>
710           <td></td>
711           <td class="paramtype">uint&#160;</td>
712           <td class="paramname"><em>u_input_stride_y</em>, </td>
713         </tr>
714         <tr>
715           <td class="paramkey"></td>
716           <td></td>
717           <td class="paramtype">uint&#160;</td>
718           <td class="paramname"><em>u_input_step_y</em>, </td>
719         </tr>
720         <tr>
721           <td class="paramkey"></td>
722           <td></td>
723           <td class="paramtype">uint&#160;</td>
724           <td class="paramname"><em>u_input_offset_first_element_in_bytes</em>, </td>
725         </tr>
726         <tr>
727           <td class="paramkey"></td>
728           <td></td>
729           <td class="paramtype">__global uchar *&#160;</td>
730           <td class="paramname"><em>v_input_ptr</em>, </td>
731         </tr>
732         <tr>
733           <td class="paramkey"></td>
734           <td></td>
735           <td class="paramtype">uint&#160;</td>
736           <td class="paramname"><em>v_input_stride_x</em>, </td>
737         </tr>
738         <tr>
739           <td class="paramkey"></td>
740           <td></td>
741           <td class="paramtype">uint&#160;</td>
742           <td class="paramname"><em>v_input_step_x</em>, </td>
743         </tr>
744         <tr>
745           <td class="paramkey"></td>
746           <td></td>
747           <td class="paramtype">uint&#160;</td>
748           <td class="paramname"><em>v_input_stride_y</em>, </td>
749         </tr>
750         <tr>
751           <td class="paramkey"></td>
752           <td></td>
753           <td class="paramtype">uint&#160;</td>
754           <td class="paramname"><em>v_input_step_y</em>, </td>
755         </tr>
756         <tr>
757           <td class="paramkey"></td>
758           <td></td>
759           <td class="paramtype">uint&#160;</td>
760           <td class="paramname"><em>v_input_offset_first_element_in_bytes</em>, </td>
761         </tr>
762         <tr>
763           <td class="paramkey"></td>
764           <td></td>
765           <td class="paramtype">__global uchar *&#160;</td>
766           <td class="paramname"><em>rgba_output_ptr</em>, </td>
767         </tr>
768         <tr>
769           <td class="paramkey"></td>
770           <td></td>
771           <td class="paramtype">uint&#160;</td>
772           <td class="paramname"><em>rgba_output_stride_x</em>, </td>
773         </tr>
774         <tr>
775           <td class="paramkey"></td>
776           <td></td>
777           <td class="paramtype">uint&#160;</td>
778           <td class="paramname"><em>rgba_output_step_x</em>, </td>
779         </tr>
780         <tr>
781           <td class="paramkey"></td>
782           <td></td>
783           <td class="paramtype">uint&#160;</td>
784           <td class="paramname"><em>rgba_output_stride_y</em>, </td>
785         </tr>
786         <tr>
787           <td class="paramkey"></td>
788           <td></td>
789           <td class="paramtype">uint&#160;</td>
790           <td class="paramname"><em>rgba_output_step_y</em>, </td>
791         </tr>
792         <tr>
793           <td class="paramkey"></td>
794           <td></td>
795           <td class="paramtype">uint&#160;</td>
796           <td class="paramname"><em>rgba_output_offset_first_element_in_bytes</em>&#160;</td>
797         </tr>
798         <tr>
799           <td></td>
800           <td>)</td>
801           <td></td><td></td>
802         </tr>
803       </table>
804 </div><div class="memdoc">
805
806 <p>Convert an IYUV image to RGB8888. </p>
807 <p>Global Workgroup Size [ DIV_CEIL(width, 4), height ] No offset.</p>
808 <dl class="params"><dt>Parameters</dt><dd>
809   <table class="params">
810     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_ptr</td><td>Pointer to the source luma channel. Supported Format: U8 </td></tr>
811     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_x</td><td>Stride of the luma image in X dimension (in bytes) </td></tr>
812     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_x</td><td>luma_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
813     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_y</td><td>Stride of the source luma channel in Y dimension (in bytes) </td></tr>
814     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_y</td><td>luma_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
815     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
816     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_ptr</td><td>Pointer to the source U channel. Supported Format: U8 </td></tr>
817     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_stride_x</td><td>Stride of the source image U channel in X dimension (in bytes) </td></tr>
818     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_step_x</td><td>u_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
819     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
820     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_step_y</td><td>u_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
821     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source U channel </td></tr>
822     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_ptr</td><td>Pointer to the source V channel. Supported Format: U8 </td></tr>
823     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_stride_x</td><td>Stride of the source image V channel in X dimension (in bytes) </td></tr>
824     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_step_x</td><td>v_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
825     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_stride_y</td><td>Stride of the source image V channel in Y dimension (in bytes) </td></tr>
826     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_step_y</td><td>v_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
827     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image V channel </td></tr>
828     <tr><td class="paramdir">[out]</td><td class="paramname">rgba_output_ptr</td><td>Pointer to the destination image. Supported Format: U8 </td></tr>
829     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_output_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
830     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_output_step_x</td><td>rgba_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
831     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_output_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
832     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_output_step_y</td><td>rgba_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
833     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
834   </table>
835   </dd>
836 </dl>
837
838 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l01541">1541</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
839
840 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
841 <div class="fragment"><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;{</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_y    = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_input);</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_u    = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(u_input);</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_v    = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(v_input);</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_rgb = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(rgba_output);</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;    <span class="comment">// handle 8 pixels every time, two lines, each line for 4 pixels</span></div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;    uchar4 luma_0 = vload4(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;    uchar4 luma_1 = vload4(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_input_stride_y);</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;    uchar4 cbcr   = (uchar4)(vload2(0, in_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>), vload2(0, in_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>));</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;    char4  cb     = (char4)(cbcr.s0, cbcr.s0, cbcr.s1, cbcr.s1) - (char4)(128);</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;    char4  cr     = (char4)(cbcr.s2, cbcr.s2, cbcr.s3, cbcr.s3) - (char4)(128);</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;    float4 temp0 = (float4)(0.0000f) + (float4)(0.0000f) * convert_float4(cb) + (float4)(1.5748f) * convert_float4(cr);</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;    float4 temp1 = (float4)(0.0000f) - (float4)(0.1873f) * convert_float4(cb) - (float4)(0.4681f) * convert_float4(cr);</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;    float4 temp2 = (float4)(0.0000f) + (float4)(1.8556f) * convert_float4(cb) + (float4)(0.0000f) * convert_float4(cr);</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;    float4 f_r = convert_float4(luma_0) + temp0;</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;    float4 f_g = convert_float4(luma_0) + temp1;</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;    float4 f_b = convert_float4(luma_0) + temp2;</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;    uchar4 r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;    uchar4 g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;    uchar4 b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;    uchar8 rgb_0 = (uchar8)(r_0.s0, g_0.s0, b_0.s0, 255, r_0.s1, g_0.s1, b_0.s1, 255);</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;    uchar8 rgb_1 = (uchar8)(r_0.s2, g_0.s2, b_0.s2, 255, r_0.s3, g_0.s3, b_0.s3, 255);</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;    vstore8(rgb_0, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;    vstore8(rgb_1, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 8);</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;    f_r = convert_float4(luma_1) + temp0;</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;    f_g = convert_float4(luma_1) + temp1;</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;    f_b = convert_float4(luma_1) + temp2;</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;    r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;    g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;    b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;    rgb_0 = (uchar8)(r_0.s0, g_0.s0, b_0.s0, 255, r_0.s1, g_0.s1, b_0.s1, 255);</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;    rgb_1 = (uchar8)(r_0.s2, g_0.s2, b_0.s2, 255, r_0.s3, g_0.s3, b_0.s3, 255);</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;    vstore8(rgb_0, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + rgba_output_stride_y);</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;    vstore8(rgb_1, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + rgba_output_stride_y + 8);</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
842 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
843 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
844 </div><!-- fragment -->
845 </div>
846 </div>
847 <a class="anchor" id="a718147fe7bf9f1bce18e07c2cfcc472c"></a>
848 <div class="memitem">
849 <div class="memproto">
850       <table class="memname">
851         <tr>
852           <td class="memname">__kernel void IYUV_to_YUV444_bt709 </td>
853           <td>(</td>
854           <td class="paramtype">__global uchar *&#160;</td>
855           <td class="paramname"><em>luma_input_ptr</em>, </td>
856         </tr>
857         <tr>
858           <td class="paramkey"></td>
859           <td></td>
860           <td class="paramtype">uint&#160;</td>
861           <td class="paramname"><em>luma_input_stride_x</em>, </td>
862         </tr>
863         <tr>
864           <td class="paramkey"></td>
865           <td></td>
866           <td class="paramtype">uint&#160;</td>
867           <td class="paramname"><em>luma_input_step_x</em>, </td>
868         </tr>
869         <tr>
870           <td class="paramkey"></td>
871           <td></td>
872           <td class="paramtype">uint&#160;</td>
873           <td class="paramname"><em>luma_input_stride_y</em>, </td>
874         </tr>
875         <tr>
876           <td class="paramkey"></td>
877           <td></td>
878           <td class="paramtype">uint&#160;</td>
879           <td class="paramname"><em>luma_input_step_y</em>, </td>
880         </tr>
881         <tr>
882           <td class="paramkey"></td>
883           <td></td>
884           <td class="paramtype">uint&#160;</td>
885           <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
886         </tr>
887         <tr>
888           <td class="paramkey"></td>
889           <td></td>
890           <td class="paramtype">__global uchar *&#160;</td>
891           <td class="paramname"><em>u_input_ptr</em>, </td>
892         </tr>
893         <tr>
894           <td class="paramkey"></td>
895           <td></td>
896           <td class="paramtype">uint&#160;</td>
897           <td class="paramname"><em>u_input_stride_x</em>, </td>
898         </tr>
899         <tr>
900           <td class="paramkey"></td>
901           <td></td>
902           <td class="paramtype">uint&#160;</td>
903           <td class="paramname"><em>u_input_step_x</em>, </td>
904         </tr>
905         <tr>
906           <td class="paramkey"></td>
907           <td></td>
908           <td class="paramtype">uint&#160;</td>
909           <td class="paramname"><em>u_input_stride_y</em>, </td>
910         </tr>
911         <tr>
912           <td class="paramkey"></td>
913           <td></td>
914           <td class="paramtype">uint&#160;</td>
915           <td class="paramname"><em>u_input_step_y</em>, </td>
916         </tr>
917         <tr>
918           <td class="paramkey"></td>
919           <td></td>
920           <td class="paramtype">uint&#160;</td>
921           <td class="paramname"><em>u_input_offset_first_element_in_bytes</em>, </td>
922         </tr>
923         <tr>
924           <td class="paramkey"></td>
925           <td></td>
926           <td class="paramtype">__global uchar *&#160;</td>
927           <td class="paramname"><em>v_input_ptr</em>, </td>
928         </tr>
929         <tr>
930           <td class="paramkey"></td>
931           <td></td>
932           <td class="paramtype">uint&#160;</td>
933           <td class="paramname"><em>v_input_stride_x</em>, </td>
934         </tr>
935         <tr>
936           <td class="paramkey"></td>
937           <td></td>
938           <td class="paramtype">uint&#160;</td>
939           <td class="paramname"><em>v_input_step_x</em>, </td>
940         </tr>
941         <tr>
942           <td class="paramkey"></td>
943           <td></td>
944           <td class="paramtype">uint&#160;</td>
945           <td class="paramname"><em>v_input_stride_y</em>, </td>
946         </tr>
947         <tr>
948           <td class="paramkey"></td>
949           <td></td>
950           <td class="paramtype">uint&#160;</td>
951           <td class="paramname"><em>v_input_step_y</em>, </td>
952         </tr>
953         <tr>
954           <td class="paramkey"></td>
955           <td></td>
956           <td class="paramtype">uint&#160;</td>
957           <td class="paramname"><em>v_input_offset_first_element_in_bytes</em>, </td>
958         </tr>
959         <tr>
960           <td class="paramkey"></td>
961           <td></td>
962           <td class="paramtype">__global uchar *&#160;</td>
963           <td class="paramname"><em>luma_output_ptr</em>, </td>
964         </tr>
965         <tr>
966           <td class="paramkey"></td>
967           <td></td>
968           <td class="paramtype">uint&#160;</td>
969           <td class="paramname"><em>luma_output_stride_x</em>, </td>
970         </tr>
971         <tr>
972           <td class="paramkey"></td>
973           <td></td>
974           <td class="paramtype">uint&#160;</td>
975           <td class="paramname"><em>luma_output_step_x</em>, </td>
976         </tr>
977         <tr>
978           <td class="paramkey"></td>
979           <td></td>
980           <td class="paramtype">uint&#160;</td>
981           <td class="paramname"><em>luma_output_stride_y</em>, </td>
982         </tr>
983         <tr>
984           <td class="paramkey"></td>
985           <td></td>
986           <td class="paramtype">uint&#160;</td>
987           <td class="paramname"><em>luma_output_step_y</em>, </td>
988         </tr>
989         <tr>
990           <td class="paramkey"></td>
991           <td></td>
992           <td class="paramtype">uint&#160;</td>
993           <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
994         </tr>
995         <tr>
996           <td class="paramkey"></td>
997           <td></td>
998           <td class="paramtype">__global uchar *&#160;</td>
999           <td class="paramname"><em>u_output_ptr</em>, </td>
1000         </tr>
1001         <tr>
1002           <td class="paramkey"></td>
1003           <td></td>
1004           <td class="paramtype">uint&#160;</td>
1005           <td class="paramname"><em>u_output_stride_x</em>, </td>
1006         </tr>
1007         <tr>
1008           <td class="paramkey"></td>
1009           <td></td>
1010           <td class="paramtype">uint&#160;</td>
1011           <td class="paramname"><em>u_output_step_x</em>, </td>
1012         </tr>
1013         <tr>
1014           <td class="paramkey"></td>
1015           <td></td>
1016           <td class="paramtype">uint&#160;</td>
1017           <td class="paramname"><em>u_output_stride_y</em>, </td>
1018         </tr>
1019         <tr>
1020           <td class="paramkey"></td>
1021           <td></td>
1022           <td class="paramtype">uint&#160;</td>
1023           <td class="paramname"><em>u_output_step_y</em>, </td>
1024         </tr>
1025         <tr>
1026           <td class="paramkey"></td>
1027           <td></td>
1028           <td class="paramtype">uint&#160;</td>
1029           <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
1030         </tr>
1031         <tr>
1032           <td class="paramkey"></td>
1033           <td></td>
1034           <td class="paramtype">__global uchar *&#160;</td>
1035           <td class="paramname"><em>v_output_ptr</em>, </td>
1036         </tr>
1037         <tr>
1038           <td class="paramkey"></td>
1039           <td></td>
1040           <td class="paramtype">uint&#160;</td>
1041           <td class="paramname"><em>v_output_stride_x</em>, </td>
1042         </tr>
1043         <tr>
1044           <td class="paramkey"></td>
1045           <td></td>
1046           <td class="paramtype">uint&#160;</td>
1047           <td class="paramname"><em>v_output_step_x</em>, </td>
1048         </tr>
1049         <tr>
1050           <td class="paramkey"></td>
1051           <td></td>
1052           <td class="paramtype">uint&#160;</td>
1053           <td class="paramname"><em>v_output_stride_y</em>, </td>
1054         </tr>
1055         <tr>
1056           <td class="paramkey"></td>
1057           <td></td>
1058           <td class="paramtype">uint&#160;</td>
1059           <td class="paramname"><em>v_output_step_y</em>, </td>
1060         </tr>
1061         <tr>
1062           <td class="paramkey"></td>
1063           <td></td>
1064           <td class="paramtype">uint&#160;</td>
1065           <td class="paramname"><em>v_output_offset_first_element_in_bytes</em>&#160;</td>
1066         </tr>
1067         <tr>
1068           <td></td>
1069           <td>)</td>
1070           <td></td><td></td>
1071         </tr>
1072       </table>
1073 </div><div class="memdoc">
1074
1075 <p>Convert an IYUV image to YUV444. </p>
1076 <p>Global Workgroup Size [ DIV_CEIL(width, 16), height ] No offset.</p>
1077 <dl class="params"><dt>Parameters</dt><dd>
1078   <table class="params">
1079     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_ptr</td><td>Pointer to the source luma channel. Supported Format: U8 </td></tr>
1080     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_x</td><td>Stride of the luma image in X dimension (in bytes) </td></tr>
1081     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_x</td><td>luma_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1082     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_y</td><td>Stride of the source luma channel in Y dimension (in bytes) </td></tr>
1083     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_y</td><td>luma_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1084     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
1085     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_ptr</td><td>Pointer to the source U channel. Supported Format: U8 </td></tr>
1086     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_stride_x</td><td>Stride of the source image U channel in X dimension (in bytes) </td></tr>
1087     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_step_x</td><td>u_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1088     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
1089     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_step_y</td><td>u_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1090     <tr><td class="paramdir">[in]</td><td class="paramname">u_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source U channel </td></tr>
1091     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_ptr</td><td>Pointer to the source V channel. Supported Format: U8 </td></tr>
1092     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_stride_x</td><td>Stride of the source image V channel in X dimension (in bytes) </td></tr>
1093     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_step_x</td><td>v_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1094     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_stride_y</td><td>Stride of the source image V channel in Y dimension (in bytes) </td></tr>
1095     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_step_y</td><td>v_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1096     <tr><td class="paramdir">[in]</td><td class="paramname">v_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image V channel </td></tr>
1097     <tr><td class="paramdir">[out]</td><td class="paramname">luma_output_ptr</td><td>Pointer to the destination luma channel. Supported Format: U8 </td></tr>
1098     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_x</td><td>Stride of the destination luma channel in X dimension (in bytes) </td></tr>
1099     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_x</td><td>luma_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1100     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
1101     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_y</td><td>luma_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1102     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination luma channel </td></tr>
1103     <tr><td class="paramdir">[out]</td><td class="paramname">u_output_ptr</td><td>Pointer to the destination U channel. Supported Format: U8 </td></tr>
1104     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_x</td><td>Stride of the destination U channel in X dimension (in bytes) </td></tr>
1105     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_x</td><td>u_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1106     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_y</td><td>Stride of the destination image U channel in Y dimension (in bytes) </td></tr>
1107     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_y</td><td>u_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1108     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination U channel </td></tr>
1109     <tr><td class="paramdir">[out]</td><td class="paramname">v_output_ptr</td><td>Pointer to the destination V channel. Supported Format: U8 </td></tr>
1110     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_x</td><td>Stride of the destination V channel in X dimension (in bytes) </td></tr>
1111     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_x</td><td>v_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1112     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_y</td><td>Stride of the destination V channel in Y dimension (in bytes) </td></tr>
1113     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_y</td><td>v_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1114     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination V channel </td></tr>
1115   </table>
1116   </dd>
1117 </dl>
1118
1119 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l01633">1633</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
1120
1121 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
1122 <div class="fragment"><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;{</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_y  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_input);</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_u  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(u_input);</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_v  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(v_input);</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_y = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_output);</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_u = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(u_output);</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_v = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(v_output);</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160;</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;    <span class="comment">// handle 32 pixels every time, two lines, each line for 16 pixels</span></div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;    uchar16 luma_0 = vload16(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;    uchar16 luma_1 = vload16(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_input_stride_y);</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;    uchar8  cb_src = vload8(0, in_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;    uchar8  cr_src = vload8(0, in_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;    uchar16 cb     = (uchar16)(cb_src.s0, cb_src.s0, cb_src.s1, cb_src.s1, cb_src.s2, cb_src.s2, cb_src.s3, cb_src.s3,</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;                               cb_src.s4, cb_src.s4, cb_src.s5, cb_src.s5, cb_src.s6, cb_src.s6, cb_src.s7, cb_src.s7);</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;    uchar16 cr = (uchar16)(cr_src.s0, cr_src.s0, cr_src.s1, cr_src.s1, cr_src.s2, cr_src.s2, cr_src.s3, cr_src.s3,</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;                           cr_src.s4, cr_src.s4, cr_src.s5, cr_src.s5, cr_src.s6, cr_src.s6, cr_src.s7, cr_src.s7);</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160;</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;    vstore16(luma_0, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;    vstore16(luma_1, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_output_stride_y);</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;    vstore16(cb, 0, out_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;    vstore16(cb, 0, out_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + u_output_stride_y);</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;    vstore16(cr, 0, out_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;    vstore16(cr, 0, out_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + v_output_stride_y);</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
1123 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
1124 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
1125 </div><!-- fragment -->
1126 </div>
1127 </div>
1128 <a class="anchor" id="a8fb5e7276f3da6febe4e9c48fe085169"></a>
1129 <div class="memitem">
1130 <div class="memproto">
1131       <table class="memname">
1132         <tr>
1133           <td class="memname">__kernel void NV12_to_IYUV_bt709 </td>
1134           <td>(</td>
1135           <td class="paramtype">__global uchar *&#160;</td>
1136           <td class="paramname"><em>luma_input_ptr</em>, </td>
1137         </tr>
1138         <tr>
1139           <td class="paramkey"></td>
1140           <td></td>
1141           <td class="paramtype">uint&#160;</td>
1142           <td class="paramname"><em>luma_input_stride_x</em>, </td>
1143         </tr>
1144         <tr>
1145           <td class="paramkey"></td>
1146           <td></td>
1147           <td class="paramtype">uint&#160;</td>
1148           <td class="paramname"><em>luma_input_step_x</em>, </td>
1149         </tr>
1150         <tr>
1151           <td class="paramkey"></td>
1152           <td></td>
1153           <td class="paramtype">uint&#160;</td>
1154           <td class="paramname"><em>luma_input_stride_y</em>, </td>
1155         </tr>
1156         <tr>
1157           <td class="paramkey"></td>
1158           <td></td>
1159           <td class="paramtype">uint&#160;</td>
1160           <td class="paramname"><em>luma_input_step_y</em>, </td>
1161         </tr>
1162         <tr>
1163           <td class="paramkey"></td>
1164           <td></td>
1165           <td class="paramtype">uint&#160;</td>
1166           <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
1167         </tr>
1168         <tr>
1169           <td class="paramkey"></td>
1170           <td></td>
1171           <td class="paramtype">__global uchar *&#160;</td>
1172           <td class="paramname"><em>uv_input_ptr</em>, </td>
1173         </tr>
1174         <tr>
1175           <td class="paramkey"></td>
1176           <td></td>
1177           <td class="paramtype">uint&#160;</td>
1178           <td class="paramname"><em>uv_input_stride_x</em>, </td>
1179         </tr>
1180         <tr>
1181           <td class="paramkey"></td>
1182           <td></td>
1183           <td class="paramtype">uint&#160;</td>
1184           <td class="paramname"><em>uv_input_step_x</em>, </td>
1185         </tr>
1186         <tr>
1187           <td class="paramkey"></td>
1188           <td></td>
1189           <td class="paramtype">uint&#160;</td>
1190           <td class="paramname"><em>uv_input_stride_y</em>, </td>
1191         </tr>
1192         <tr>
1193           <td class="paramkey"></td>
1194           <td></td>
1195           <td class="paramtype">uint&#160;</td>
1196           <td class="paramname"><em>uv_input_step_y</em>, </td>
1197         </tr>
1198         <tr>
1199           <td class="paramkey"></td>
1200           <td></td>
1201           <td class="paramtype">uint&#160;</td>
1202           <td class="paramname"><em>uv_input_offset_first_element_in_bytes</em>, </td>
1203         </tr>
1204         <tr>
1205           <td class="paramkey"></td>
1206           <td></td>
1207           <td class="paramtype">__global uchar *&#160;</td>
1208           <td class="paramname"><em>luma_output_ptr</em>, </td>
1209         </tr>
1210         <tr>
1211           <td class="paramkey"></td>
1212           <td></td>
1213           <td class="paramtype">uint&#160;</td>
1214           <td class="paramname"><em>luma_output_stride_x</em>, </td>
1215         </tr>
1216         <tr>
1217           <td class="paramkey"></td>
1218           <td></td>
1219           <td class="paramtype">uint&#160;</td>
1220           <td class="paramname"><em>luma_output_step_x</em>, </td>
1221         </tr>
1222         <tr>
1223           <td class="paramkey"></td>
1224           <td></td>
1225           <td class="paramtype">uint&#160;</td>
1226           <td class="paramname"><em>luma_output_stride_y</em>, </td>
1227         </tr>
1228         <tr>
1229           <td class="paramkey"></td>
1230           <td></td>
1231           <td class="paramtype">uint&#160;</td>
1232           <td class="paramname"><em>luma_output_step_y</em>, </td>
1233         </tr>
1234         <tr>
1235           <td class="paramkey"></td>
1236           <td></td>
1237           <td class="paramtype">uint&#160;</td>
1238           <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
1239         </tr>
1240         <tr>
1241           <td class="paramkey"></td>
1242           <td></td>
1243           <td class="paramtype">__global uchar *&#160;</td>
1244           <td class="paramname"><em>u_output_ptr</em>, </td>
1245         </tr>
1246         <tr>
1247           <td class="paramkey"></td>
1248           <td></td>
1249           <td class="paramtype">uint&#160;</td>
1250           <td class="paramname"><em>u_output_stride_x</em>, </td>
1251         </tr>
1252         <tr>
1253           <td class="paramkey"></td>
1254           <td></td>
1255           <td class="paramtype">uint&#160;</td>
1256           <td class="paramname"><em>u_output_step_x</em>, </td>
1257         </tr>
1258         <tr>
1259           <td class="paramkey"></td>
1260           <td></td>
1261           <td class="paramtype">uint&#160;</td>
1262           <td class="paramname"><em>u_output_stride_y</em>, </td>
1263         </tr>
1264         <tr>
1265           <td class="paramkey"></td>
1266           <td></td>
1267           <td class="paramtype">uint&#160;</td>
1268           <td class="paramname"><em>u_output_step_y</em>, </td>
1269         </tr>
1270         <tr>
1271           <td class="paramkey"></td>
1272           <td></td>
1273           <td class="paramtype">uint&#160;</td>
1274           <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
1275         </tr>
1276         <tr>
1277           <td class="paramkey"></td>
1278           <td></td>
1279           <td class="paramtype">__global uchar *&#160;</td>
1280           <td class="paramname"><em>v_output_ptr</em>, </td>
1281         </tr>
1282         <tr>
1283           <td class="paramkey"></td>
1284           <td></td>
1285           <td class="paramtype">uint&#160;</td>
1286           <td class="paramname"><em>v_output_stride_x</em>, </td>
1287         </tr>
1288         <tr>
1289           <td class="paramkey"></td>
1290           <td></td>
1291           <td class="paramtype">uint&#160;</td>
1292           <td class="paramname"><em>v_output_step_x</em>, </td>
1293         </tr>
1294         <tr>
1295           <td class="paramkey"></td>
1296           <td></td>
1297           <td class="paramtype">uint&#160;</td>
1298           <td class="paramname"><em>v_output_stride_y</em>, </td>
1299         </tr>
1300         <tr>
1301           <td class="paramkey"></td>
1302           <td></td>
1303           <td class="paramtype">uint&#160;</td>
1304           <td class="paramname"><em>v_output_step_y</em>, </td>
1305         </tr>
1306         <tr>
1307           <td class="paramkey"></td>
1308           <td></td>
1309           <td class="paramtype">uint&#160;</td>
1310           <td class="paramname"><em>v_output_offset_first_element_in_bytes</em>&#160;</td>
1311         </tr>
1312         <tr>
1313           <td></td>
1314           <td>)</td>
1315           <td></td><td></td>
1316         </tr>
1317       </table>
1318 </div><div class="memdoc">
1319
1320 <p>Convert an NV12 image to IYUV. </p>
1321 <p>Global Workgroup Size [ DIV_CEIL(width, 16), height ] No offset.</p>
1322 <dl class="params"><dt>Parameters</dt><dd>
1323   <table class="params">
1324     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_ptr</td><td>Pointer to the source luma channel. Supported Format: U8 </td></tr>
1325     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_x</td><td>Stride of the luma image in X dimension (in bytes) </td></tr>
1326     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_x</td><td>luma_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1327     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_y</td><td>Stride of the source luma channel in Y dimension (in bytes) </td></tr>
1328     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_y</td><td>luma_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1329     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
1330     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_ptr</td><td>Pointer to the source uv channel. Supported Format: U8 </td></tr>
1331     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_stride_x</td><td>Stride of the source image uv channel in X dimension (in bytes) </td></tr>
1332     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_step_x</td><td>uv_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1333     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
1334     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_step_y</td><td>uv_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1335     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
1336     <tr><td class="paramdir">[out]</td><td class="paramname">luma_output_ptr</td><td>Pointer to the destination luma channel. Supported Format: U8 </td></tr>
1337     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_x</td><td>Stride of the destination luma channel in X dimension (in bytes) </td></tr>
1338     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_x</td><td>luma_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1339     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
1340     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_y</td><td>luma_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1341     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination luma channel </td></tr>
1342     <tr><td class="paramdir">[out]</td><td class="paramname">u_output_ptr</td><td>Pointer to the destination U channel. Supported Format: U8 </td></tr>
1343     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_x</td><td>Stride of the destination U channel in X dimension (in bytes) </td></tr>
1344     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_x</td><td>u_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1345     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_y</td><td>Stride of the destination image U channel in Y dimension (in bytes) </td></tr>
1346     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_y</td><td>u_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1347     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination U channel </td></tr>
1348     <tr><td class="paramdir">[out]</td><td class="paramname">v_output_ptr</td><td>Pointer to the destination V channel. Supported Format: U8 </td></tr>
1349     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_x</td><td>Stride of the destination V channel in X dimension (in bytes) </td></tr>
1350     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_x</td><td>v_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1351     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_y</td><td>Stride of the destination V channel in Y dimension (in bytes) </td></tr>
1352     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_y</td><td>v_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1353     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination V channel </td></tr>
1354   </table>
1355   </dd>
1356 </dl>
1357
1358 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l00949">949</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
1359
1360 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
1361 <div class="fragment"><div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;{</div><div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_y  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_input);</div><div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_uv = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(uv_input);</div><div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_y = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_output);</div><div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_u = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(u_output);</div><div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_v = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(v_output);</div><div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;</div><div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;    <span class="comment">// handle 32 pixels every time, two lines, each line for 16 pixels</span></div><div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;    uchar16 luma_0 = vload16(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;    uchar16 luma_1 = vload16(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_input_stride_y);</div><div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;    uchar16 cbcr   = vload16(0, in_uv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;    uchar8  cb     = (uchar8)(cbcr.s0, cbcr.s2, cbcr.s4, cbcr.s6, cbcr.s8, cbcr.sa, cbcr.sc, cbcr.se);</div><div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;    uchar8  cr     = (uchar8)(cbcr.s1, cbcr.s3, cbcr.s5, cbcr.s7, cbcr.s9, cbcr.sb, cbcr.sd, cbcr.sf);</div><div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;</div><div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;    vstore16(luma_0, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;    vstore16(luma_1, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_output_stride_y);</div><div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;    vstore8(cb, 0, out_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;    vstore8(cr, 0, out_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
1362 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
1363 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
1364 </div><!-- fragment -->
1365 </div>
1366 </div>
1367 <a class="anchor" id="a02037a65e2f5ec0579b8ed8efc33ff18"></a>
1368 <div class="memitem">
1369 <div class="memproto">
1370       <table class="memname">
1371         <tr>
1372           <td class="memname">__kernel void NV12_to_RGB888_bt709 </td>
1373           <td>(</td>
1374           <td class="paramtype">__global uchar *&#160;</td>
1375           <td class="paramname"><em>luma_input_ptr</em>, </td>
1376         </tr>
1377         <tr>
1378           <td class="paramkey"></td>
1379           <td></td>
1380           <td class="paramtype">uint&#160;</td>
1381           <td class="paramname"><em>luma_input_stride_x</em>, </td>
1382         </tr>
1383         <tr>
1384           <td class="paramkey"></td>
1385           <td></td>
1386           <td class="paramtype">uint&#160;</td>
1387           <td class="paramname"><em>luma_input_step_x</em>, </td>
1388         </tr>
1389         <tr>
1390           <td class="paramkey"></td>
1391           <td></td>
1392           <td class="paramtype">uint&#160;</td>
1393           <td class="paramname"><em>luma_input_stride_y</em>, </td>
1394         </tr>
1395         <tr>
1396           <td class="paramkey"></td>
1397           <td></td>
1398           <td class="paramtype">uint&#160;</td>
1399           <td class="paramname"><em>luma_input_step_y</em>, </td>
1400         </tr>
1401         <tr>
1402           <td class="paramkey"></td>
1403           <td></td>
1404           <td class="paramtype">uint&#160;</td>
1405           <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
1406         </tr>
1407         <tr>
1408           <td class="paramkey"></td>
1409           <td></td>
1410           <td class="paramtype">__global uchar *&#160;</td>
1411           <td class="paramname"><em>uv_input_ptr</em>, </td>
1412         </tr>
1413         <tr>
1414           <td class="paramkey"></td>
1415           <td></td>
1416           <td class="paramtype">uint&#160;</td>
1417           <td class="paramname"><em>uv_input_stride_x</em>, </td>
1418         </tr>
1419         <tr>
1420           <td class="paramkey"></td>
1421           <td></td>
1422           <td class="paramtype">uint&#160;</td>
1423           <td class="paramname"><em>uv_input_step_x</em>, </td>
1424         </tr>
1425         <tr>
1426           <td class="paramkey"></td>
1427           <td></td>
1428           <td class="paramtype">uint&#160;</td>
1429           <td class="paramname"><em>uv_input_stride_y</em>, </td>
1430         </tr>
1431         <tr>
1432           <td class="paramkey"></td>
1433           <td></td>
1434           <td class="paramtype">uint&#160;</td>
1435           <td class="paramname"><em>uv_input_step_y</em>, </td>
1436         </tr>
1437         <tr>
1438           <td class="paramkey"></td>
1439           <td></td>
1440           <td class="paramtype">uint&#160;</td>
1441           <td class="paramname"><em>uv_input_offset_first_element_in_bytes</em>, </td>
1442         </tr>
1443         <tr>
1444           <td class="paramkey"></td>
1445           <td></td>
1446           <td class="paramtype">__global uchar *&#160;</td>
1447           <td class="paramname"><em>rgb_output_ptr</em>, </td>
1448         </tr>
1449         <tr>
1450           <td class="paramkey"></td>
1451           <td></td>
1452           <td class="paramtype">uint&#160;</td>
1453           <td class="paramname"><em>rgb_output_stride_x</em>, </td>
1454         </tr>
1455         <tr>
1456           <td class="paramkey"></td>
1457           <td></td>
1458           <td class="paramtype">uint&#160;</td>
1459           <td class="paramname"><em>rgb_output_step_x</em>, </td>
1460         </tr>
1461         <tr>
1462           <td class="paramkey"></td>
1463           <td></td>
1464           <td class="paramtype">uint&#160;</td>
1465           <td class="paramname"><em>rgb_output_stride_y</em>, </td>
1466         </tr>
1467         <tr>
1468           <td class="paramkey"></td>
1469           <td></td>
1470           <td class="paramtype">uint&#160;</td>
1471           <td class="paramname"><em>rgb_output_step_y</em>, </td>
1472         </tr>
1473         <tr>
1474           <td class="paramkey"></td>
1475           <td></td>
1476           <td class="paramtype">uint&#160;</td>
1477           <td class="paramname"><em>rgb_output_offset_first_element_in_bytes</em>&#160;</td>
1478         </tr>
1479         <tr>
1480           <td></td>
1481           <td>)</td>
1482           <td></td><td></td>
1483         </tr>
1484       </table>
1485 </div><div class="memdoc">
1486
1487 <p>Convert an NV12 image to RGB888. </p>
1488 <p>Global Workgroup Size [ DIV_CEIL(width, 4), height ] No offset.</p>
1489 <dl class="params"><dt>Parameters</dt><dd>
1490   <table class="params">
1491     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_ptr</td><td>Pointer to the source luma channel. Supported Format: U8 </td></tr>
1492     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_x</td><td>Stride of the luma image in X dimension (in bytes) </td></tr>
1493     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_x</td><td>luma_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1494     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_y</td><td>Stride of the source luma channel in Y dimension (in bytes) </td></tr>
1495     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_y</td><td>luma_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1496     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
1497     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_ptr</td><td>Pointer to the source uv channel. Supported Format: U8 </td></tr>
1498     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_stride_x</td><td>Stride of the source image uv channel in X dimension (in bytes) </td></tr>
1499     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_step_x</td><td>uv_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1500     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
1501     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_step_y</td><td>uv_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1502     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
1503     <tr><td class="paramdir">[out]</td><td class="paramname">rgb_output_ptr</td><td>Pointer to the destination image. Supported Format: U8 </td></tr>
1504     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
1505     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_step_x</td><td>rgb_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1506     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
1507     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_step_y</td><td>output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1508     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
1509   </table>
1510   </dd>
1511 </dl>
1512
1513 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l00410">410</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
1514
1515 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
1516 <div class="fragment"><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;{</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_luma = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_input);</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_uv   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(uv_input);</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_rgb = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(rgb_output);</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    <span class="comment">// handle 8 pixels every time, two lines, each line for 4 pixels</span></div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;    uchar4 luma_0 = vload4(0, in_luma.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;    uchar4 luma_1 = vload4(0, in_luma.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_input_stride_y);</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;    uchar4 cbcr   = vload4(0, in_uv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;    char4  cb     = (char4)(cbcr.s0, cbcr.s0, cbcr.s2, cbcr.s2) - (char4)(128);</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;    char4  cr     = (char4)(cbcr.s1, cbcr.s1, cbcr.s3, cbcr.s3) - (char4)(128);</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;    float4 temp0 = (float4)(0.0000f) + (float4)(0.0000f) * convert_float4(cb) + (float4)(1.5748f) * convert_float4(cr);</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;    float4 temp1 = (float4)(0.0000f) - (float4)(0.1873f) * convert_float4(cb) - (float4)(0.4681f) * convert_float4(cr);</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;    float4 temp2 = (float4)(0.0000f) + (float4)(1.8556f) * convert_float4(cb) + (float4)(0.0000f) * convert_float4(cr);</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;    float4 f_r = convert_float4(luma_0) + temp0;</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;    float4 f_g = convert_float4(luma_0) + temp1;</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;    float4 f_b = convert_float4(luma_0) + temp2;</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;    uchar4 r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;    uchar4 g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;    uchar4 b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;    uchar8 rgb_0 = (uchar8)(r_0.s0, g_0.s0, b_0.s0, r_0.s1, g_0.s1, b_0.s1, r_0.s2, g_0.s2);</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;    uchar4 rgb_1 = (uchar4)(b_0.s2, r_0.s3, g_0.s3, b_0.s3);</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;    vstore8(rgb_0, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;    vstore4(rgb_1, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 8);</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;    f_r = convert_float4(luma_1) + temp0;</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;    f_g = convert_float4(luma_1) + temp1;</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;    f_b = convert_float4(luma_1) + temp2;</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;    r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;    g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;    b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;    rgb_0 = (uchar8)(r_0.s0, g_0.s0, b_0.s0, r_0.s1, g_0.s1, b_0.s1, r_0.s2, g_0.s2);</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;    rgb_1 = (uchar4)(b_0.s2, r_0.s3, g_0.s3, b_0.s3);</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;    vstore8(rgb_0, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + rgb_output_stride_y);</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;    vstore4(rgb_1, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + rgb_output_stride_y + 8);</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
1517 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
1518 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
1519 </div><!-- fragment -->
1520 </div>
1521 </div>
1522 <a class="anchor" id="a84880a0b48a6d4ff812b07ef7dcf0eda"></a>
1523 <div class="memitem">
1524 <div class="memproto">
1525       <table class="memname">
1526         <tr>
1527           <td class="memname">__kernel void NV12_to_RGBA8888_bt709 </td>
1528           <td>(</td>
1529           <td class="paramtype">__global uchar *&#160;</td>
1530           <td class="paramname"><em>luma_input_ptr</em>, </td>
1531         </tr>
1532         <tr>
1533           <td class="paramkey"></td>
1534           <td></td>
1535           <td class="paramtype">uint&#160;</td>
1536           <td class="paramname"><em>luma_input_stride_x</em>, </td>
1537         </tr>
1538         <tr>
1539           <td class="paramkey"></td>
1540           <td></td>
1541           <td class="paramtype">uint&#160;</td>
1542           <td class="paramname"><em>luma_input_step_x</em>, </td>
1543         </tr>
1544         <tr>
1545           <td class="paramkey"></td>
1546           <td></td>
1547           <td class="paramtype">uint&#160;</td>
1548           <td class="paramname"><em>luma_input_stride_y</em>, </td>
1549         </tr>
1550         <tr>
1551           <td class="paramkey"></td>
1552           <td></td>
1553           <td class="paramtype">uint&#160;</td>
1554           <td class="paramname"><em>luma_input_step_y</em>, </td>
1555         </tr>
1556         <tr>
1557           <td class="paramkey"></td>
1558           <td></td>
1559           <td class="paramtype">uint&#160;</td>
1560           <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
1561         </tr>
1562         <tr>
1563           <td class="paramkey"></td>
1564           <td></td>
1565           <td class="paramtype">__global uchar *&#160;</td>
1566           <td class="paramname"><em>uv_input_ptr</em>, </td>
1567         </tr>
1568         <tr>
1569           <td class="paramkey"></td>
1570           <td></td>
1571           <td class="paramtype">uint&#160;</td>
1572           <td class="paramname"><em>uv_input_stride_x</em>, </td>
1573         </tr>
1574         <tr>
1575           <td class="paramkey"></td>
1576           <td></td>
1577           <td class="paramtype">uint&#160;</td>
1578           <td class="paramname"><em>uv_input_step_x</em>, </td>
1579         </tr>
1580         <tr>
1581           <td class="paramkey"></td>
1582           <td></td>
1583           <td class="paramtype">uint&#160;</td>
1584           <td class="paramname"><em>uv_input_stride_y</em>, </td>
1585         </tr>
1586         <tr>
1587           <td class="paramkey"></td>
1588           <td></td>
1589           <td class="paramtype">uint&#160;</td>
1590           <td class="paramname"><em>uv_input_step_y</em>, </td>
1591         </tr>
1592         <tr>
1593           <td class="paramkey"></td>
1594           <td></td>
1595           <td class="paramtype">uint&#160;</td>
1596           <td class="paramname"><em>uv_input_offset_first_element_in_bytes</em>, </td>
1597         </tr>
1598         <tr>
1599           <td class="paramkey"></td>
1600           <td></td>
1601           <td class="paramtype">__global uchar *&#160;</td>
1602           <td class="paramname"><em>rgb_output_ptr</em>, </td>
1603         </tr>
1604         <tr>
1605           <td class="paramkey"></td>
1606           <td></td>
1607           <td class="paramtype">uint&#160;</td>
1608           <td class="paramname"><em>rgb_output_stride_x</em>, </td>
1609         </tr>
1610         <tr>
1611           <td class="paramkey"></td>
1612           <td></td>
1613           <td class="paramtype">uint&#160;</td>
1614           <td class="paramname"><em>rgb_output_step_x</em>, </td>
1615         </tr>
1616         <tr>
1617           <td class="paramkey"></td>
1618           <td></td>
1619           <td class="paramtype">uint&#160;</td>
1620           <td class="paramname"><em>rgb_output_stride_y</em>, </td>
1621         </tr>
1622         <tr>
1623           <td class="paramkey"></td>
1624           <td></td>
1625           <td class="paramtype">uint&#160;</td>
1626           <td class="paramname"><em>rgb_output_step_y</em>, </td>
1627         </tr>
1628         <tr>
1629           <td class="paramkey"></td>
1630           <td></td>
1631           <td class="paramtype">uint&#160;</td>
1632           <td class="paramname"><em>rgb_output_offset_first_element_in_bytes</em>&#160;</td>
1633         </tr>
1634         <tr>
1635           <td></td>
1636           <td>)</td>
1637           <td></td><td></td>
1638         </tr>
1639       </table>
1640 </div><div class="memdoc">
1641
1642 <p>Convert an NV12 image to RGB8888. </p>
1643 <p>Global Workgroup Size [ DIV_CEIL(width, 4), height ] No offset.</p>
1644 <dl class="params"><dt>Parameters</dt><dd>
1645   <table class="params">
1646     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_ptr</td><td>Pointer to the source luma channel. Supported Format: U8 </td></tr>
1647     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_x</td><td>Stride of the luma image in X dimension (in bytes) </td></tr>
1648     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_x</td><td>luma_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1649     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_y</td><td>Stride of the source luma channel in Y dimension (in bytes) </td></tr>
1650     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_y</td><td>luma_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1651     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
1652     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_ptr</td><td>Pointer to the source uv channel. Supported Format: U8 </td></tr>
1653     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_stride_x</td><td>Stride of the source image uv channel in X dimension (in bytes) </td></tr>
1654     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_step_x</td><td>uv_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1655     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
1656     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_step_y</td><td>uv_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1657     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
1658     <tr><td class="paramdir">[out]</td><td class="paramname">rgb_output_ptr</td><td>Pointer to the destination image. Supported Format: U8 </td></tr>
1659     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
1660     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_step_x</td><td>rgb_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1661     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
1662     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_step_y</td><td>rgb_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1663     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
1664   </table>
1665   </dd>
1666 </dl>
1667
1668 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l00867">867</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
1669
1670 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
1671 <div class="fragment"><div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;{</div><div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_luma = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_input);</div><div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_uv   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(uv_input);</div><div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_rgb = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(rgb_output);</div><div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;</div><div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;    uchar4 luma_0 = vload4(0, in_luma.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;    uchar4 luma_1 = vload4(0, in_luma.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_input_stride_y);</div><div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;    uchar4 cbcr   = vload4(0, in_uv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;    char4  cb     = (char4)(cbcr.s0, cbcr.s0, cbcr.s2, cbcr.s2) - (char4)(128);</div><div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;    char4  cr     = (char4)(cbcr.s1, cbcr.s1, cbcr.s3, cbcr.s3) - (char4)(128);</div><div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;</div><div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;    float4 temp0 = (float4)(0.0000f) + (float4)(0.0000f) * convert_float4(cb) + (float4)(1.5748f) * convert_float4(cr);</div><div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;    float4 temp1 = (float4)(0.0000f) - (float4)(0.1873f) * convert_float4(cb) - (float4)(0.4681f) * convert_float4(cr);</div><div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;    float4 temp2 = (float4)(0.0000f) + (float4)(1.8556f) * convert_float4(cb) + (float4)(0.0000f) * convert_float4(cr);</div><div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;</div><div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;    float4 f_r = convert_float4(luma_0) + temp0;</div><div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;    float4 f_g = convert_float4(luma_0) + temp1;</div><div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;    float4 f_b = convert_float4(luma_0) + temp2;</div><div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;</div><div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;    uchar4 r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;    uchar4 g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;    uchar4 b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;</div><div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;    uchar8 rgb_0 = (uchar8)(r_0.s0, g_0.s0, b_0.s0, 255, r_0.s1, g_0.s1, b_0.s1, 255);</div><div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;    uchar8 rgb_1 = (uchar8)(r_0.s2, g_0.s2, b_0.s2, 255, r_0.s3, g_0.s3, b_0.s3, 255);</div><div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;    vstore8(rgb_0, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;    vstore8(rgb_1, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 8);</div><div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;</div><div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;    f_r = convert_float4(luma_1) + temp0;</div><div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;    f_g = convert_float4(luma_1) + temp1;</div><div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;    f_b = convert_float4(luma_1) + temp2;</div><div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;</div><div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;    r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;    g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;    b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;</div><div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;    rgb_0 = (uchar8)(r_0.s0, g_0.s0, b_0.s0, 255, r_0.s1, g_0.s1, b_0.s1, 255);</div><div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;    rgb_1 = (uchar8)(r_0.s2, g_0.s2, b_0.s2, 255, r_0.s3, g_0.s3, b_0.s3, 255);</div><div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;    vstore8(rgb_0, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + rgb_output_stride_y);</div><div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;    vstore8(rgb_1, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + rgb_output_stride_y + 8);</div><div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
1672 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
1673 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
1674 </div><!-- fragment -->
1675 </div>
1676 </div>
1677 <a class="anchor" id="a2c05435371a2cb1b2782d0a434407150"></a>
1678 <div class="memitem">
1679 <div class="memproto">
1680       <table class="memname">
1681         <tr>
1682           <td class="memname">__kernel void NV12_to_YUV444_bt709 </td>
1683           <td>(</td>
1684           <td class="paramtype">__global uchar *&#160;</td>
1685           <td class="paramname"><em>luma_input_ptr</em>, </td>
1686         </tr>
1687         <tr>
1688           <td class="paramkey"></td>
1689           <td></td>
1690           <td class="paramtype">uint&#160;</td>
1691           <td class="paramname"><em>luma_input_stride_x</em>, </td>
1692         </tr>
1693         <tr>
1694           <td class="paramkey"></td>
1695           <td></td>
1696           <td class="paramtype">uint&#160;</td>
1697           <td class="paramname"><em>luma_input_step_x</em>, </td>
1698         </tr>
1699         <tr>
1700           <td class="paramkey"></td>
1701           <td></td>
1702           <td class="paramtype">uint&#160;</td>
1703           <td class="paramname"><em>luma_input_stride_y</em>, </td>
1704         </tr>
1705         <tr>
1706           <td class="paramkey"></td>
1707           <td></td>
1708           <td class="paramtype">uint&#160;</td>
1709           <td class="paramname"><em>luma_input_step_y</em>, </td>
1710         </tr>
1711         <tr>
1712           <td class="paramkey"></td>
1713           <td></td>
1714           <td class="paramtype">uint&#160;</td>
1715           <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
1716         </tr>
1717         <tr>
1718           <td class="paramkey"></td>
1719           <td></td>
1720           <td class="paramtype">__global uchar *&#160;</td>
1721           <td class="paramname"><em>uv_input_ptr</em>, </td>
1722         </tr>
1723         <tr>
1724           <td class="paramkey"></td>
1725           <td></td>
1726           <td class="paramtype">uint&#160;</td>
1727           <td class="paramname"><em>uv_input_stride_x</em>, </td>
1728         </tr>
1729         <tr>
1730           <td class="paramkey"></td>
1731           <td></td>
1732           <td class="paramtype">uint&#160;</td>
1733           <td class="paramname"><em>uv_input_step_x</em>, </td>
1734         </tr>
1735         <tr>
1736           <td class="paramkey"></td>
1737           <td></td>
1738           <td class="paramtype">uint&#160;</td>
1739           <td class="paramname"><em>uv_input_stride_y</em>, </td>
1740         </tr>
1741         <tr>
1742           <td class="paramkey"></td>
1743           <td></td>
1744           <td class="paramtype">uint&#160;</td>
1745           <td class="paramname"><em>uv_input_step_y</em>, </td>
1746         </tr>
1747         <tr>
1748           <td class="paramkey"></td>
1749           <td></td>
1750           <td class="paramtype">uint&#160;</td>
1751           <td class="paramname"><em>uv_input_offset_first_element_in_bytes</em>, </td>
1752         </tr>
1753         <tr>
1754           <td class="paramkey"></td>
1755           <td></td>
1756           <td class="paramtype">__global uchar *&#160;</td>
1757           <td class="paramname"><em>luma_output_ptr</em>, </td>
1758         </tr>
1759         <tr>
1760           <td class="paramkey"></td>
1761           <td></td>
1762           <td class="paramtype">uint&#160;</td>
1763           <td class="paramname"><em>luma_output_stride_x</em>, </td>
1764         </tr>
1765         <tr>
1766           <td class="paramkey"></td>
1767           <td></td>
1768           <td class="paramtype">uint&#160;</td>
1769           <td class="paramname"><em>luma_output_step_x</em>, </td>
1770         </tr>
1771         <tr>
1772           <td class="paramkey"></td>
1773           <td></td>
1774           <td class="paramtype">uint&#160;</td>
1775           <td class="paramname"><em>luma_output_stride_y</em>, </td>
1776         </tr>
1777         <tr>
1778           <td class="paramkey"></td>
1779           <td></td>
1780           <td class="paramtype">uint&#160;</td>
1781           <td class="paramname"><em>luma_output_step_y</em>, </td>
1782         </tr>
1783         <tr>
1784           <td class="paramkey"></td>
1785           <td></td>
1786           <td class="paramtype">uint&#160;</td>
1787           <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
1788         </tr>
1789         <tr>
1790           <td class="paramkey"></td>
1791           <td></td>
1792           <td class="paramtype">__global uchar *&#160;</td>
1793           <td class="paramname"><em>u_output_ptr</em>, </td>
1794         </tr>
1795         <tr>
1796           <td class="paramkey"></td>
1797           <td></td>
1798           <td class="paramtype">uint&#160;</td>
1799           <td class="paramname"><em>u_output_stride_x</em>, </td>
1800         </tr>
1801         <tr>
1802           <td class="paramkey"></td>
1803           <td></td>
1804           <td class="paramtype">uint&#160;</td>
1805           <td class="paramname"><em>u_output_step_x</em>, </td>
1806         </tr>
1807         <tr>
1808           <td class="paramkey"></td>
1809           <td></td>
1810           <td class="paramtype">uint&#160;</td>
1811           <td class="paramname"><em>u_output_stride_y</em>, </td>
1812         </tr>
1813         <tr>
1814           <td class="paramkey"></td>
1815           <td></td>
1816           <td class="paramtype">uint&#160;</td>
1817           <td class="paramname"><em>u_output_step_y</em>, </td>
1818         </tr>
1819         <tr>
1820           <td class="paramkey"></td>
1821           <td></td>
1822           <td class="paramtype">uint&#160;</td>
1823           <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
1824         </tr>
1825         <tr>
1826           <td class="paramkey"></td>
1827           <td></td>
1828           <td class="paramtype">__global uchar *&#160;</td>
1829           <td class="paramname"><em>v_output_ptr</em>, </td>
1830         </tr>
1831         <tr>
1832           <td class="paramkey"></td>
1833           <td></td>
1834           <td class="paramtype">uint&#160;</td>
1835           <td class="paramname"><em>v_output_stride_x</em>, </td>
1836         </tr>
1837         <tr>
1838           <td class="paramkey"></td>
1839           <td></td>
1840           <td class="paramtype">uint&#160;</td>
1841           <td class="paramname"><em>v_output_step_x</em>, </td>
1842         </tr>
1843         <tr>
1844           <td class="paramkey"></td>
1845           <td></td>
1846           <td class="paramtype">uint&#160;</td>
1847           <td class="paramname"><em>v_output_stride_y</em>, </td>
1848         </tr>
1849         <tr>
1850           <td class="paramkey"></td>
1851           <td></td>
1852           <td class="paramtype">uint&#160;</td>
1853           <td class="paramname"><em>v_output_step_y</em>, </td>
1854         </tr>
1855         <tr>
1856           <td class="paramkey"></td>
1857           <td></td>
1858           <td class="paramtype">uint&#160;</td>
1859           <td class="paramname"><em>v_output_offset_first_element_in_bytes</em>&#160;</td>
1860         </tr>
1861         <tr>
1862           <td></td>
1863           <td>)</td>
1864           <td></td><td></td>
1865         </tr>
1866       </table>
1867 </div><div class="memdoc">
1868
1869 <p>Convert an NV12 image to YUV444. </p>
1870 <p>Global Workgroup Size [ DIV_CEIL(width, 16), height ] No offset.</p>
1871 <dl class="params"><dt>Parameters</dt><dd>
1872   <table class="params">
1873     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_ptr</td><td>Pointer to the source luma channel. Supported Format: U8 </td></tr>
1874     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_x</td><td>Stride of the luma image in X dimension (in bytes) </td></tr>
1875     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_x</td><td>luma_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1876     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_y</td><td>Stride of the source luma channel in Y dimension (in bytes) </td></tr>
1877     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_y</td><td>luma_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1878     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
1879     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_ptr</td><td>Pointer to the source uv channel. Supported Format: U8 </td></tr>
1880     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_stride_x</td><td>Stride of the source image uv channel in X dimension (in bytes) </td></tr>
1881     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_step_x</td><td>uv_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1882     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
1883     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_step_y</td><td>uv_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1884     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
1885     <tr><td class="paramdir">[out]</td><td class="paramname">luma_output_ptr</td><td>Pointer to the destination luma channel. Supported Format: U8 </td></tr>
1886     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_x</td><td>Stride of the destination luma channel in X dimension (in bytes) </td></tr>
1887     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_x</td><td>luma_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1888     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
1889     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_y</td><td>luma_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1890     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination luma channel </td></tr>
1891     <tr><td class="paramdir">[out]</td><td class="paramname">u_output_ptr</td><td>Pointer to the destination U channel. Supported Format: U8 </td></tr>
1892     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_x</td><td>Stride of the destination U channel in X dimension (in bytes) </td></tr>
1893     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_x</td><td>u_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1894     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_y</td><td>Stride of the destination image U channel in Y dimension (in bytes) </td></tr>
1895     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_y</td><td>u_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1896     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination U channel </td></tr>
1897     <tr><td class="paramdir">[out]</td><td class="paramname">v_output_ptr</td><td>Pointer to the destination V channel. Supported Format: U8 </td></tr>
1898     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_x</td><td>Stride of the destination V channel in X dimension (in bytes) </td></tr>
1899     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_x</td><td>v_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
1900     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_y</td><td>Stride of the destination V channel in Y dimension (in bytes) </td></tr>
1901     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_y</td><td>v_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
1902     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination V channel </td></tr>
1903   </table>
1904   </dd>
1905 </dl>
1906
1907 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l01011">1011</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
1908
1909 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
1910 <div class="fragment"><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;{</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_y  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_input);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_uv = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(uv_input);</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_y = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_output);</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_u = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(u_output);</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_v = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(v_output);</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;    <span class="comment">// handle 32 pixels every time, two lines, each line for 16 pixels</span></div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;    uchar16 luma_0 = vload16(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;    uchar16 luma_1 = vload16(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_input_stride_y);</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;    uchar16 cbcr   = vload16(0, in_uv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;    uchar16 cb     = (uchar16)(cbcr.s0, cbcr.s0, cbcr.s2, cbcr.s2, cbcr.s4, cbcr.s4, cbcr.s6, cbcr.s6, cbcr.s8, cbcr.s8,</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;                               cbcr.sa, cbcr.sa, cbcr.sc, cbcr.sc, cbcr.se, cbcr.se);</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;    uchar16 cr = (uchar16)(cbcr.s1, cbcr.s1, cbcr.s3, cbcr.s3, cbcr.s5, cbcr.s5, cbcr.s7, cbcr.s7, cbcr.s9, cbcr.s9,</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;                           cbcr.sb, cbcr.sb, cbcr.sd, cbcr.sd, cbcr.sf, cbcr.sf);</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;    vstore16(luma_0, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;    vstore16(luma_1, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_output_stride_y);</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;    vstore16(cb, 0, out_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;    vstore16(cb, 0, out_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + u_output_stride_y);</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;    vstore16(cr, 0, out_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;    vstore16(cr, 0, out_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + v_output_stride_y);</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
1911 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
1912 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
1913 </div><!-- fragment -->
1914 </div>
1915 </div>
1916 <a class="anchor" id="acfdf02c3ab4893afc7e05afc3a950555"></a>
1917 <div class="memitem">
1918 <div class="memproto">
1919       <table class="memname">
1920         <tr>
1921           <td class="memname">__kernel void NV21_to_IYUV_bt709 </td>
1922           <td>(</td>
1923           <td class="paramtype">__global uchar *&#160;</td>
1924           <td class="paramname"><em>luma_input_ptr</em>, </td>
1925         </tr>
1926         <tr>
1927           <td class="paramkey"></td>
1928           <td></td>
1929           <td class="paramtype">uint&#160;</td>
1930           <td class="paramname"><em>luma_input_stride_x</em>, </td>
1931         </tr>
1932         <tr>
1933           <td class="paramkey"></td>
1934           <td></td>
1935           <td class="paramtype">uint&#160;</td>
1936           <td class="paramname"><em>luma_input_step_x</em>, </td>
1937         </tr>
1938         <tr>
1939           <td class="paramkey"></td>
1940           <td></td>
1941           <td class="paramtype">uint&#160;</td>
1942           <td class="paramname"><em>luma_input_stride_y</em>, </td>
1943         </tr>
1944         <tr>
1945           <td class="paramkey"></td>
1946           <td></td>
1947           <td class="paramtype">uint&#160;</td>
1948           <td class="paramname"><em>luma_input_step_y</em>, </td>
1949         </tr>
1950         <tr>
1951           <td class="paramkey"></td>
1952           <td></td>
1953           <td class="paramtype">uint&#160;</td>
1954           <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
1955         </tr>
1956         <tr>
1957           <td class="paramkey"></td>
1958           <td></td>
1959           <td class="paramtype">__global uchar *&#160;</td>
1960           <td class="paramname"><em>uv_input_ptr</em>, </td>
1961         </tr>
1962         <tr>
1963           <td class="paramkey"></td>
1964           <td></td>
1965           <td class="paramtype">uint&#160;</td>
1966           <td class="paramname"><em>uv_input_stride_x</em>, </td>
1967         </tr>
1968         <tr>
1969           <td class="paramkey"></td>
1970           <td></td>
1971           <td class="paramtype">uint&#160;</td>
1972           <td class="paramname"><em>uv_input_step_x</em>, </td>
1973         </tr>
1974         <tr>
1975           <td class="paramkey"></td>
1976           <td></td>
1977           <td class="paramtype">uint&#160;</td>
1978           <td class="paramname"><em>uv_input_stride_y</em>, </td>
1979         </tr>
1980         <tr>
1981           <td class="paramkey"></td>
1982           <td></td>
1983           <td class="paramtype">uint&#160;</td>
1984           <td class="paramname"><em>uv_input_step_y</em>, </td>
1985         </tr>
1986         <tr>
1987           <td class="paramkey"></td>
1988           <td></td>
1989           <td class="paramtype">uint&#160;</td>
1990           <td class="paramname"><em>uv_input_offset_first_element_in_bytes</em>, </td>
1991         </tr>
1992         <tr>
1993           <td class="paramkey"></td>
1994           <td></td>
1995           <td class="paramtype">__global uchar *&#160;</td>
1996           <td class="paramname"><em>luma_output_ptr</em>, </td>
1997         </tr>
1998         <tr>
1999           <td class="paramkey"></td>
2000           <td></td>
2001           <td class="paramtype">uint&#160;</td>
2002           <td class="paramname"><em>luma_output_stride_x</em>, </td>
2003         </tr>
2004         <tr>
2005           <td class="paramkey"></td>
2006           <td></td>
2007           <td class="paramtype">uint&#160;</td>
2008           <td class="paramname"><em>luma_output_step_x</em>, </td>
2009         </tr>
2010         <tr>
2011           <td class="paramkey"></td>
2012           <td></td>
2013           <td class="paramtype">uint&#160;</td>
2014           <td class="paramname"><em>luma_output_stride_y</em>, </td>
2015         </tr>
2016         <tr>
2017           <td class="paramkey"></td>
2018           <td></td>
2019           <td class="paramtype">uint&#160;</td>
2020           <td class="paramname"><em>luma_output_step_y</em>, </td>
2021         </tr>
2022         <tr>
2023           <td class="paramkey"></td>
2024           <td></td>
2025           <td class="paramtype">uint&#160;</td>
2026           <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
2027         </tr>
2028         <tr>
2029           <td class="paramkey"></td>
2030           <td></td>
2031           <td class="paramtype">__global uchar *&#160;</td>
2032           <td class="paramname"><em>u_output_ptr</em>, </td>
2033         </tr>
2034         <tr>
2035           <td class="paramkey"></td>
2036           <td></td>
2037           <td class="paramtype">uint&#160;</td>
2038           <td class="paramname"><em>u_output_stride_x</em>, </td>
2039         </tr>
2040         <tr>
2041           <td class="paramkey"></td>
2042           <td></td>
2043           <td class="paramtype">uint&#160;</td>
2044           <td class="paramname"><em>u_output_step_x</em>, </td>
2045         </tr>
2046         <tr>
2047           <td class="paramkey"></td>
2048           <td></td>
2049           <td class="paramtype">uint&#160;</td>
2050           <td class="paramname"><em>u_output_stride_y</em>, </td>
2051         </tr>
2052         <tr>
2053           <td class="paramkey"></td>
2054           <td></td>
2055           <td class="paramtype">uint&#160;</td>
2056           <td class="paramname"><em>u_output_step_y</em>, </td>
2057         </tr>
2058         <tr>
2059           <td class="paramkey"></td>
2060           <td></td>
2061           <td class="paramtype">uint&#160;</td>
2062           <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
2063         </tr>
2064         <tr>
2065           <td class="paramkey"></td>
2066           <td></td>
2067           <td class="paramtype">__global uchar *&#160;</td>
2068           <td class="paramname"><em>v_output_ptr</em>, </td>
2069         </tr>
2070         <tr>
2071           <td class="paramkey"></td>
2072           <td></td>
2073           <td class="paramtype">uint&#160;</td>
2074           <td class="paramname"><em>v_output_stride_x</em>, </td>
2075         </tr>
2076         <tr>
2077           <td class="paramkey"></td>
2078           <td></td>
2079           <td class="paramtype">uint&#160;</td>
2080           <td class="paramname"><em>v_output_step_x</em>, </td>
2081         </tr>
2082         <tr>
2083           <td class="paramkey"></td>
2084           <td></td>
2085           <td class="paramtype">uint&#160;</td>
2086           <td class="paramname"><em>v_output_stride_y</em>, </td>
2087         </tr>
2088         <tr>
2089           <td class="paramkey"></td>
2090           <td></td>
2091           <td class="paramtype">uint&#160;</td>
2092           <td class="paramname"><em>v_output_step_y</em>, </td>
2093         </tr>
2094         <tr>
2095           <td class="paramkey"></td>
2096           <td></td>
2097           <td class="paramtype">uint&#160;</td>
2098           <td class="paramname"><em>v_output_offset_first_element_in_bytes</em>&#160;</td>
2099         </tr>
2100         <tr>
2101           <td></td>
2102           <td>)</td>
2103           <td></td><td></td>
2104         </tr>
2105       </table>
2106 </div><div class="memdoc">
2107
2108 <p>Convert an NV21 image to IYUV. </p>
2109 <p>Global Workgroup Size [ DIV_CEIL(width, 16), height ] No offset.</p>
2110 <dl class="params"><dt>Parameters</dt><dd>
2111   <table class="params">
2112     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_ptr</td><td>Pointer to the source luma channel. Supported Format: U8 </td></tr>
2113     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_x</td><td>Stride of the luma image in X dimension (in bytes) </td></tr>
2114     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_x</td><td>luma_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2115     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_y</td><td>Stride of the source luma channel in Y dimension (in bytes) </td></tr>
2116     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_y</td><td>luma_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2117     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
2118     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_ptr</td><td>Pointer to the source uv channel. Supported Format: U8 </td></tr>
2119     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_stride_x</td><td>Stride of the source image uv channel in X dimension (in bytes) </td></tr>
2120     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_step_x</td><td>uv_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2121     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
2122     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_step_y</td><td>uv_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2123     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
2124     <tr><td class="paramdir">[out]</td><td class="paramname">luma_output_ptr</td><td>Pointer to the destination luma channel. Supported Format: U8 </td></tr>
2125     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_x</td><td>Stride of the destination luma channel in X dimension (in bytes) </td></tr>
2126     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_x</td><td>luma_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2127     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
2128     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_y</td><td>luma_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2129     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination luma channel </td></tr>
2130     <tr><td class="paramdir">[out]</td><td class="paramname">u_output_ptr</td><td>Pointer to the destination U channel. Supported Format: U8 </td></tr>
2131     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_x</td><td>Stride of the destination U channel in X dimension (in bytes) </td></tr>
2132     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_x</td><td>u_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2133     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_y</td><td>Stride of the destination image U channel in Y dimension (in bytes) </td></tr>
2134     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_y</td><td>u_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2135     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination U channel </td></tr>
2136     <tr><td class="paramdir">[out]</td><td class="paramname">v_output_ptr</td><td>Pointer to the destination V channel. Supported Format: U8 </td></tr>
2137     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_x</td><td>Stride of the destination V channel in X dimension (in bytes) </td></tr>
2138     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_x</td><td>v_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2139     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_y</td><td>Stride of the destination V channel in Y dimension (in bytes) </td></tr>
2140     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_y</td><td>v_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2141     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination V channel </td></tr>
2142   </table>
2143   </dd>
2144 </dl>
2145
2146 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l01285">1285</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
2147
2148 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
2149 <div class="fragment"><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;{</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_y  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_input);</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_uv = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(uv_input);</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_y = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_output);</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_u = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(u_output);</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_v = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(v_output);</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;    uchar16 luma_0 = vload16(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;    uchar16 luma_1 = vload16(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_input_stride_y);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;    uchar16 cbcr   = vload16(0, in_uv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;    uchar8  cr     = (uchar8)(cbcr.s0, cbcr.s2, cbcr.s4, cbcr.s6, cbcr.s8, cbcr.sa, cbcr.sc, cbcr.se);</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;    uchar8  cb     = (uchar8)(cbcr.s1, cbcr.s3, cbcr.s5, cbcr.s7, cbcr.s9, cbcr.sb, cbcr.sd, cbcr.sf);</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;    vstore16(luma_0, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;    vstore16(luma_1, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_output_stride_y);</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;    vstore8(cb, 0, out_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;    vstore8(cr, 0, out_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
2150 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
2151 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
2152 </div><!-- fragment -->
2153 </div>
2154 </div>
2155 <a class="anchor" id="a57f0e4cc61a99718caaaaab82d393009"></a>
2156 <div class="memitem">
2157 <div class="memproto">
2158       <table class="memname">
2159         <tr>
2160           <td class="memname">__kernel void NV21_to_RGB888_bt709 </td>
2161           <td>(</td>
2162           <td class="paramtype">__global uchar *&#160;</td>
2163           <td class="paramname"><em>luma_input_ptr</em>, </td>
2164         </tr>
2165         <tr>
2166           <td class="paramkey"></td>
2167           <td></td>
2168           <td class="paramtype">uint&#160;</td>
2169           <td class="paramname"><em>luma_input_stride_x</em>, </td>
2170         </tr>
2171         <tr>
2172           <td class="paramkey"></td>
2173           <td></td>
2174           <td class="paramtype">uint&#160;</td>
2175           <td class="paramname"><em>luma_input_step_x</em>, </td>
2176         </tr>
2177         <tr>
2178           <td class="paramkey"></td>
2179           <td></td>
2180           <td class="paramtype">uint&#160;</td>
2181           <td class="paramname"><em>luma_input_stride_y</em>, </td>
2182         </tr>
2183         <tr>
2184           <td class="paramkey"></td>
2185           <td></td>
2186           <td class="paramtype">uint&#160;</td>
2187           <td class="paramname"><em>luma_input_step_y</em>, </td>
2188         </tr>
2189         <tr>
2190           <td class="paramkey"></td>
2191           <td></td>
2192           <td class="paramtype">uint&#160;</td>
2193           <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
2194         </tr>
2195         <tr>
2196           <td class="paramkey"></td>
2197           <td></td>
2198           <td class="paramtype">__global uchar *&#160;</td>
2199           <td class="paramname"><em>uv_input_ptr</em>, </td>
2200         </tr>
2201         <tr>
2202           <td class="paramkey"></td>
2203           <td></td>
2204           <td class="paramtype">uint&#160;</td>
2205           <td class="paramname"><em>uv_input_stride_x</em>, </td>
2206         </tr>
2207         <tr>
2208           <td class="paramkey"></td>
2209           <td></td>
2210           <td class="paramtype">uint&#160;</td>
2211           <td class="paramname"><em>uv_input_step_x</em>, </td>
2212         </tr>
2213         <tr>
2214           <td class="paramkey"></td>
2215           <td></td>
2216           <td class="paramtype">uint&#160;</td>
2217           <td class="paramname"><em>uv_input_stride_y</em>, </td>
2218         </tr>
2219         <tr>
2220           <td class="paramkey"></td>
2221           <td></td>
2222           <td class="paramtype">uint&#160;</td>
2223           <td class="paramname"><em>uv_input_step_y</em>, </td>
2224         </tr>
2225         <tr>
2226           <td class="paramkey"></td>
2227           <td></td>
2228           <td class="paramtype">uint&#160;</td>
2229           <td class="paramname"><em>uv_input_offset_first_element_in_bytes</em>, </td>
2230         </tr>
2231         <tr>
2232           <td class="paramkey"></td>
2233           <td></td>
2234           <td class="paramtype">__global uchar *&#160;</td>
2235           <td class="paramname"><em>rgb_output_ptr</em>, </td>
2236         </tr>
2237         <tr>
2238           <td class="paramkey"></td>
2239           <td></td>
2240           <td class="paramtype">uint&#160;</td>
2241           <td class="paramname"><em>rgb_output_stride_x</em>, </td>
2242         </tr>
2243         <tr>
2244           <td class="paramkey"></td>
2245           <td></td>
2246           <td class="paramtype">uint&#160;</td>
2247           <td class="paramname"><em>rgb_output_step_x</em>, </td>
2248         </tr>
2249         <tr>
2250           <td class="paramkey"></td>
2251           <td></td>
2252           <td class="paramtype">uint&#160;</td>
2253           <td class="paramname"><em>rgb_output_stride_y</em>, </td>
2254         </tr>
2255         <tr>
2256           <td class="paramkey"></td>
2257           <td></td>
2258           <td class="paramtype">uint&#160;</td>
2259           <td class="paramname"><em>rgb_output_step_y</em>, </td>
2260         </tr>
2261         <tr>
2262           <td class="paramkey"></td>
2263           <td></td>
2264           <td class="paramtype">uint&#160;</td>
2265           <td class="paramname"><em>rgb_output_offset_first_element_in_bytes</em>&#160;</td>
2266         </tr>
2267         <tr>
2268           <td></td>
2269           <td>)</td>
2270           <td></td><td></td>
2271         </tr>
2272       </table>
2273 </div><div class="memdoc">
2274
2275 <p>Convert an NV21 image to RGB888. </p>
2276 <p>Global Workgroup Size [ DIV_CEIL(width, 4), height ] No offset.</p>
2277 <dl class="params"><dt>Parameters</dt><dd>
2278   <table class="params">
2279     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_ptr</td><td>Pointer to the source luma channel. Supported Format: U8 </td></tr>
2280     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_x</td><td>Stride of the luma image in X dimension (in bytes) </td></tr>
2281     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_x</td><td>luma_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2282     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_y</td><td>Stride of the source luma channel in Y dimension (in bytes) </td></tr>
2283     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_y</td><td>luma_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2284     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
2285     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_ptr</td><td>Pointer to the source uv channel. Supported Format: U8 </td></tr>
2286     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_stride_x</td><td>Stride of the source image uv channel in X dimension (in bytes) </td></tr>
2287     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_step_x</td><td>uv_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2288     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
2289     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_step_y</td><td>uv_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2290     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
2291     <tr><td class="paramdir">[out]</td><td class="paramname">rgb_output_ptr</td><td>Pointer to the destination image. Supported Format: U8 </td></tr>
2292     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
2293     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_step_x</td><td>rgb_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2294     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
2295     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_step_y</td><td>output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2296     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
2297   </table>
2298   </dd>
2299 </dl>
2300
2301 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l01065">1065</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
2302
2303 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
2304 <div class="fragment"><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;{</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_y    = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_input);</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_uv   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(uv_input);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_rgb = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(rgb_output);</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;    <span class="comment">// handle 8 pixels every time, two lines, each line for 4 pixels</span></div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;    uchar4 luma_0 = vload4(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;    uchar4 luma_1 = vload4(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_input_stride_y);</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;    uchar4 cbcr   = vload4(0, in_uv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;    char4  cr     = (char4)(cbcr.s0, cbcr.s0, cbcr.s2, cbcr.s2) - (char4)(128);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;    char4  cb     = (char4)(cbcr.s1, cbcr.s1, cbcr.s3, cbcr.s3) - (char4)(128);</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;    float4 temp0 = (float4)(0.0000f) + (float4)(0.0000f) * convert_float4(cb) + (float4)(1.5748f) * convert_float4(cr);</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;    float4 temp1 = (float4)(0.0000f) - (float4)(0.1873f) * convert_float4(cb) - (float4)(0.4681f) * convert_float4(cr);</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;    float4 temp2 = (float4)(0.0000f) + (float4)(1.8556f) * convert_float4(cb) + (float4)(0.0000f) * convert_float4(cr);</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;    float4 f_r = convert_float4(luma_0) + temp0;</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;    float4 f_g = convert_float4(luma_0) + temp1;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;    float4 f_b = convert_float4(luma_0) + temp2;</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;    uchar4 r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;    uchar4 g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;    uchar4 b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;    uchar8 rgb_0 = (uchar8)(r_0.s0, g_0.s0, b_0.s0, r_0.s1, g_0.s1, b_0.s1, r_0.s2, g_0.s2);</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;    uchar4 rgb_1 = (uchar4)(b_0.s2, r_0.s3, g_0.s3, b_0.s3);</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;    vstore8(rgb_0, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;    vstore4(rgb_1, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 8);</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;    f_r = convert_float4(luma_1) + temp0;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;    f_g = convert_float4(luma_1) + temp1;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;    f_b = convert_float4(luma_1) + temp2;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;    r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;    g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;    b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;    rgb_0 = (uchar8)(r_0.s0, g_0.s0, b_0.s0, r_0.s1, g_0.s1, b_0.s1, r_0.s2, g_0.s2);</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;    rgb_1 = (uchar4)(b_0.s2, r_0.s3, g_0.s3, b_0.s3);</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;    vstore8(rgb_0, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + rgb_output_stride_y);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;    vstore4(rgb_1, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + rgb_output_stride_y + 8);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
2305 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
2306 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
2307 </div><!-- fragment -->
2308 </div>
2309 </div>
2310 <a class="anchor" id="ad96db99a88669713407e91c036b06df2"></a>
2311 <div class="memitem">
2312 <div class="memproto">
2313       <table class="memname">
2314         <tr>
2315           <td class="memname">__kernel void NV21_to_RGBA8888_bt709 </td>
2316           <td>(</td>
2317           <td class="paramtype">__global uchar *&#160;</td>
2318           <td class="paramname"><em>luma_input_ptr</em>, </td>
2319         </tr>
2320         <tr>
2321           <td class="paramkey"></td>
2322           <td></td>
2323           <td class="paramtype">uint&#160;</td>
2324           <td class="paramname"><em>luma_input_stride_x</em>, </td>
2325         </tr>
2326         <tr>
2327           <td class="paramkey"></td>
2328           <td></td>
2329           <td class="paramtype">uint&#160;</td>
2330           <td class="paramname"><em>luma_input_step_x</em>, </td>
2331         </tr>
2332         <tr>
2333           <td class="paramkey"></td>
2334           <td></td>
2335           <td class="paramtype">uint&#160;</td>
2336           <td class="paramname"><em>luma_input_stride_y</em>, </td>
2337         </tr>
2338         <tr>
2339           <td class="paramkey"></td>
2340           <td></td>
2341           <td class="paramtype">uint&#160;</td>
2342           <td class="paramname"><em>luma_input_step_y</em>, </td>
2343         </tr>
2344         <tr>
2345           <td class="paramkey"></td>
2346           <td></td>
2347           <td class="paramtype">uint&#160;</td>
2348           <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
2349         </tr>
2350         <tr>
2351           <td class="paramkey"></td>
2352           <td></td>
2353           <td class="paramtype">__global uchar *&#160;</td>
2354           <td class="paramname"><em>uv_input_ptr</em>, </td>
2355         </tr>
2356         <tr>
2357           <td class="paramkey"></td>
2358           <td></td>
2359           <td class="paramtype">uint&#160;</td>
2360           <td class="paramname"><em>uv_input_stride_x</em>, </td>
2361         </tr>
2362         <tr>
2363           <td class="paramkey"></td>
2364           <td></td>
2365           <td class="paramtype">uint&#160;</td>
2366           <td class="paramname"><em>uv_input_step_x</em>, </td>
2367         </tr>
2368         <tr>
2369           <td class="paramkey"></td>
2370           <td></td>
2371           <td class="paramtype">uint&#160;</td>
2372           <td class="paramname"><em>uv_input_stride_y</em>, </td>
2373         </tr>
2374         <tr>
2375           <td class="paramkey"></td>
2376           <td></td>
2377           <td class="paramtype">uint&#160;</td>
2378           <td class="paramname"><em>uv_input_step_y</em>, </td>
2379         </tr>
2380         <tr>
2381           <td class="paramkey"></td>
2382           <td></td>
2383           <td class="paramtype">uint&#160;</td>
2384           <td class="paramname"><em>uv_input_offset_first_element_in_bytes</em>, </td>
2385         </tr>
2386         <tr>
2387           <td class="paramkey"></td>
2388           <td></td>
2389           <td class="paramtype">__global uchar *&#160;</td>
2390           <td class="paramname"><em>rgba_output_ptr</em>, </td>
2391         </tr>
2392         <tr>
2393           <td class="paramkey"></td>
2394           <td></td>
2395           <td class="paramtype">uint&#160;</td>
2396           <td class="paramname"><em>rgba_output_stride_x</em>, </td>
2397         </tr>
2398         <tr>
2399           <td class="paramkey"></td>
2400           <td></td>
2401           <td class="paramtype">uint&#160;</td>
2402           <td class="paramname"><em>rgba_output_step_x</em>, </td>
2403         </tr>
2404         <tr>
2405           <td class="paramkey"></td>
2406           <td></td>
2407           <td class="paramtype">uint&#160;</td>
2408           <td class="paramname"><em>rgba_output_stride_y</em>, </td>
2409         </tr>
2410         <tr>
2411           <td class="paramkey"></td>
2412           <td></td>
2413           <td class="paramtype">uint&#160;</td>
2414           <td class="paramname"><em>rgba_output_step_y</em>, </td>
2415         </tr>
2416         <tr>
2417           <td class="paramkey"></td>
2418           <td></td>
2419           <td class="paramtype">uint&#160;</td>
2420           <td class="paramname"><em>rgba_output_offset_first_element_in_bytes</em>&#160;</td>
2421         </tr>
2422         <tr>
2423           <td></td>
2424           <td>)</td>
2425           <td></td><td></td>
2426         </tr>
2427       </table>
2428 </div><div class="memdoc">
2429
2430 <p>Convert an NV12 image to RGB8888. </p>
2431 <p>Global Workgroup Size [ DIV_CEIL(width, 4), height ] No offset.</p>
2432 <dl class="params"><dt>Parameters</dt><dd>
2433   <table class="params">
2434     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_ptr</td><td>Pointer to the source luma channel. Supported Format: U8 </td></tr>
2435     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_x</td><td>Stride of the luma image in X dimension (in bytes) </td></tr>
2436     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_x</td><td>luma_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2437     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_y</td><td>Stride of the source luma channel in Y dimension (in bytes) </td></tr>
2438     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_y</td><td>luma_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2439     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
2440     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_ptr</td><td>Pointer to the source uv channel. Supported Format: U8 </td></tr>
2441     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_stride_x</td><td>Stride of the source image uv channel in X dimension (in bytes) </td></tr>
2442     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_step_x</td><td>uv_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2443     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
2444     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_step_y</td><td>uv_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2445     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
2446     <tr><td class="paramdir">[out]</td><td class="paramname">rgba_output_ptr</td><td>Pointer to the destination image. Supported Format: U8 </td></tr>
2447     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_output_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
2448     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_output_step_x</td><td>rgba_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2449     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_output_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
2450     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_output_step_y</td><td>rgba_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2451     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
2452   </table>
2453   </dd>
2454 </dl>
2455
2456 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l01136">1136</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
2457
2458 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
2459 <div class="fragment"><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;{</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_luma = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_input);</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_uv   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(uv_input);</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_rgb = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(rgba_output);</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;    <span class="comment">// handle 8 pixels every time, two lines, each line for 4 pixels</span></div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;    uchar4 luma_0 = vload4(0, in_luma.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;    uchar4 luma_1 = vload4(0, in_luma.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_input_stride_y);</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;    uchar4 cbcr   = vload4(0, in_uv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;    char4  cr     = (char4)(cbcr.s0, cbcr.s0, cbcr.s2, cbcr.s2) - (char4)(128);</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;    char4  cb     = (char4)(cbcr.s1, cbcr.s1, cbcr.s3, cbcr.s3) - (char4)(128);</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;    float4 temp0 = (float4)(0.0000f) + (float4)(0.0000f) * convert_float4(cb) + (float4)(1.5748f) * convert_float4(cr);</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;    float4 temp1 = (float4)(0.0000f) - (float4)(0.1873f) * convert_float4(cb) - (float4)(0.4681f) * convert_float4(cr);</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;    float4 temp2 = (float4)(0.0000f) + (float4)(1.8556f) * convert_float4(cb) + (float4)(0.0000f) * convert_float4(cr);</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;    float4 f_r = convert_float4(luma_0) + temp0;</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;    float4 f_g = convert_float4(luma_0) + temp1;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;    float4 f_b = convert_float4(luma_0) + temp2;</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;    uchar4 r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;    uchar4 g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;    uchar4 b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;    uchar8 rgb_0 = (uchar8)(r_0.s0, g_0.s0, b_0.s0, 255, r_0.s1, g_0.s1, b_0.s1, 255);</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;    uchar8 rgb_1 = (uchar8)(r_0.s2, g_0.s2, b_0.s2, 255, r_0.s3, g_0.s3, b_0.s3, 255);</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;    vstore8(rgb_0, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;    vstore8(rgb_1, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 8);</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;    f_r = convert_float4(luma_1) + temp0;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;    f_g = convert_float4(luma_1) + temp1;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;    f_b = convert_float4(luma_1) + temp2;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;    r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;    g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;    b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;    rgb_0 = (uchar8)(r_0.s0, g_0.s0, b_0.s0, 255, r_0.s1, g_0.s1, b_0.s1, 255);</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;    rgb_1 = (uchar8)(r_0.s2, g_0.s2, b_0.s2, 255, r_0.s3, g_0.s3, b_0.s3, 255);</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;    vstore8(rgb_0, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + rgba_output_stride_y);</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;    vstore8(rgb_1, 0, out_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + rgba_output_stride_y + 8);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
2460 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
2461 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
2462 </div><!-- fragment -->
2463 </div>
2464 </div>
2465 <a class="anchor" id="abd3f622e7d731ae70306266b334ff33b"></a>
2466 <div class="memitem">
2467 <div class="memproto">
2468       <table class="memname">
2469         <tr>
2470           <td class="memname">__kernel void NV21_to_YUV444_bt709 </td>
2471           <td>(</td>
2472           <td class="paramtype">__global uchar *&#160;</td>
2473           <td class="paramname"><em>luma_input_ptr</em>, </td>
2474         </tr>
2475         <tr>
2476           <td class="paramkey"></td>
2477           <td></td>
2478           <td class="paramtype">uint&#160;</td>
2479           <td class="paramname"><em>luma_input_stride_x</em>, </td>
2480         </tr>
2481         <tr>
2482           <td class="paramkey"></td>
2483           <td></td>
2484           <td class="paramtype">uint&#160;</td>
2485           <td class="paramname"><em>luma_input_step_x</em>, </td>
2486         </tr>
2487         <tr>
2488           <td class="paramkey"></td>
2489           <td></td>
2490           <td class="paramtype">uint&#160;</td>
2491           <td class="paramname"><em>luma_input_stride_y</em>, </td>
2492         </tr>
2493         <tr>
2494           <td class="paramkey"></td>
2495           <td></td>
2496           <td class="paramtype">uint&#160;</td>
2497           <td class="paramname"><em>luma_input_step_y</em>, </td>
2498         </tr>
2499         <tr>
2500           <td class="paramkey"></td>
2501           <td></td>
2502           <td class="paramtype">uint&#160;</td>
2503           <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
2504         </tr>
2505         <tr>
2506           <td class="paramkey"></td>
2507           <td></td>
2508           <td class="paramtype">__global uchar *&#160;</td>
2509           <td class="paramname"><em>uv_input_ptr</em>, </td>
2510         </tr>
2511         <tr>
2512           <td class="paramkey"></td>
2513           <td></td>
2514           <td class="paramtype">uint&#160;</td>
2515           <td class="paramname"><em>uv_input_stride_x</em>, </td>
2516         </tr>
2517         <tr>
2518           <td class="paramkey"></td>
2519           <td></td>
2520           <td class="paramtype">uint&#160;</td>
2521           <td class="paramname"><em>uv_input_step_x</em>, </td>
2522         </tr>
2523         <tr>
2524           <td class="paramkey"></td>
2525           <td></td>
2526           <td class="paramtype">uint&#160;</td>
2527           <td class="paramname"><em>uv_input_stride_y</em>, </td>
2528         </tr>
2529         <tr>
2530           <td class="paramkey"></td>
2531           <td></td>
2532           <td class="paramtype">uint&#160;</td>
2533           <td class="paramname"><em>uv_input_step_y</em>, </td>
2534         </tr>
2535         <tr>
2536           <td class="paramkey"></td>
2537           <td></td>
2538           <td class="paramtype">uint&#160;</td>
2539           <td class="paramname"><em>uv_input_offset_first_element_in_bytes</em>, </td>
2540         </tr>
2541         <tr>
2542           <td class="paramkey"></td>
2543           <td></td>
2544           <td class="paramtype">__global uchar *&#160;</td>
2545           <td class="paramname"><em>luma_output_ptr</em>, </td>
2546         </tr>
2547         <tr>
2548           <td class="paramkey"></td>
2549           <td></td>
2550           <td class="paramtype">uint&#160;</td>
2551           <td class="paramname"><em>luma_output_stride_x</em>, </td>
2552         </tr>
2553         <tr>
2554           <td class="paramkey"></td>
2555           <td></td>
2556           <td class="paramtype">uint&#160;</td>
2557           <td class="paramname"><em>luma_output_step_x</em>, </td>
2558         </tr>
2559         <tr>
2560           <td class="paramkey"></td>
2561           <td></td>
2562           <td class="paramtype">uint&#160;</td>
2563           <td class="paramname"><em>luma_output_stride_y</em>, </td>
2564         </tr>
2565         <tr>
2566           <td class="paramkey"></td>
2567           <td></td>
2568           <td class="paramtype">uint&#160;</td>
2569           <td class="paramname"><em>luma_output_step_y</em>, </td>
2570         </tr>
2571         <tr>
2572           <td class="paramkey"></td>
2573           <td></td>
2574           <td class="paramtype">uint&#160;</td>
2575           <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
2576         </tr>
2577         <tr>
2578           <td class="paramkey"></td>
2579           <td></td>
2580           <td class="paramtype">__global uchar *&#160;</td>
2581           <td class="paramname"><em>u_output_ptr</em>, </td>
2582         </tr>
2583         <tr>
2584           <td class="paramkey"></td>
2585           <td></td>
2586           <td class="paramtype">uint&#160;</td>
2587           <td class="paramname"><em>u_output_stride_x</em>, </td>
2588         </tr>
2589         <tr>
2590           <td class="paramkey"></td>
2591           <td></td>
2592           <td class="paramtype">uint&#160;</td>
2593           <td class="paramname"><em>u_output_step_x</em>, </td>
2594         </tr>
2595         <tr>
2596           <td class="paramkey"></td>
2597           <td></td>
2598           <td class="paramtype">uint&#160;</td>
2599           <td class="paramname"><em>u_output_stride_y</em>, </td>
2600         </tr>
2601         <tr>
2602           <td class="paramkey"></td>
2603           <td></td>
2604           <td class="paramtype">uint&#160;</td>
2605           <td class="paramname"><em>u_output_step_y</em>, </td>
2606         </tr>
2607         <tr>
2608           <td class="paramkey"></td>
2609           <td></td>
2610           <td class="paramtype">uint&#160;</td>
2611           <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
2612         </tr>
2613         <tr>
2614           <td class="paramkey"></td>
2615           <td></td>
2616           <td class="paramtype">__global uchar *&#160;</td>
2617           <td class="paramname"><em>v_output_ptr</em>, </td>
2618         </tr>
2619         <tr>
2620           <td class="paramkey"></td>
2621           <td></td>
2622           <td class="paramtype">uint&#160;</td>
2623           <td class="paramname"><em>v_output_stride_x</em>, </td>
2624         </tr>
2625         <tr>
2626           <td class="paramkey"></td>
2627           <td></td>
2628           <td class="paramtype">uint&#160;</td>
2629           <td class="paramname"><em>v_output_step_x</em>, </td>
2630         </tr>
2631         <tr>
2632           <td class="paramkey"></td>
2633           <td></td>
2634           <td class="paramtype">uint&#160;</td>
2635           <td class="paramname"><em>v_output_stride_y</em>, </td>
2636         </tr>
2637         <tr>
2638           <td class="paramkey"></td>
2639           <td></td>
2640           <td class="paramtype">uint&#160;</td>
2641           <td class="paramname"><em>v_output_step_y</em>, </td>
2642         </tr>
2643         <tr>
2644           <td class="paramkey"></td>
2645           <td></td>
2646           <td class="paramtype">uint&#160;</td>
2647           <td class="paramname"><em>v_output_offset_first_element_in_bytes</em>&#160;</td>
2648         </tr>
2649         <tr>
2650           <td></td>
2651           <td>)</td>
2652           <td></td><td></td>
2653         </tr>
2654       </table>
2655 </div><div class="memdoc">
2656
2657 <p>Convert an NV21 image to YUV444. </p>
2658 <p>Global Workgroup Size [ DIV_CEIL(width, 16), height ] No offset.</p>
2659 <dl class="params"><dt>Parameters</dt><dd>
2660   <table class="params">
2661     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_ptr</td><td>Pointer to the source luma channel. Supported Format: U8 </td></tr>
2662     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_x</td><td>Stride of the luma image in X dimension (in bytes) </td></tr>
2663     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_x</td><td>luma_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2664     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_stride_y</td><td>Stride of the source luma channel in Y dimension (in bytes) </td></tr>
2665     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_step_y</td><td>luma_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2666     <tr><td class="paramdir">[in]</td><td class="paramname">luma_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
2667     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_ptr</td><td>Pointer to the source uv channel. Supported Format: U8 </td></tr>
2668     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_stride_x</td><td>Stride of the source image uv channel in X dimension (in bytes) </td></tr>
2669     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_step_x</td><td>uv_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2670     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
2671     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_step_y</td><td>uv_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2672     <tr><td class="paramdir">[in]</td><td class="paramname">uv_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
2673     <tr><td class="paramdir">[out]</td><td class="paramname">luma_output_ptr</td><td>Pointer to the destination luma channel. Supported Format: U8 </td></tr>
2674     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_x</td><td>Stride of the destination luma channel in X dimension (in bytes) </td></tr>
2675     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_x</td><td>luma_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2676     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
2677     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_y</td><td>luma_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2678     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination luma channel </td></tr>
2679     <tr><td class="paramdir">[out]</td><td class="paramname">u_output_ptr</td><td>Pointer to the destination U channel. Supported Format: U8 </td></tr>
2680     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_x</td><td>Stride of the destination U channel in X dimension (in bytes) </td></tr>
2681     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_x</td><td>u_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2682     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_y</td><td>Stride of the destination image U channel in Y dimension (in bytes) </td></tr>
2683     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_y</td><td>u_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2684     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination U channel </td></tr>
2685     <tr><td class="paramdir">[out]</td><td class="paramname">v_output_ptr</td><td>Pointer to the destination V channel. Supported Format: U8 </td></tr>
2686     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_x</td><td>Stride of the destination V channel in X dimension (in bytes) </td></tr>
2687     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_x</td><td>v_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2688     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_y</td><td>Stride of the destination V channel in Y dimension (in bytes) </td></tr>
2689     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_y</td><td>v_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2690     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination V channel </td></tr>
2691   </table>
2692   </dd>
2693 </dl>
2694
2695 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l01219">1219</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
2696
2697 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
2698 <div class="fragment"><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;{</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_y  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_input);</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_uv = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(uv_input);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_y = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_output);</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_u = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(u_output);</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_v = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(v_output);</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;    <span class="comment">// handle 32 pixels every time, two lines, each line for 16 pixels</span></div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;    uchar16 luma_0 = vload16(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;    uchar16 luma_1 = vload16(0, in_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_input_stride_y);</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;    uchar16 cbcr   = vload16(0, in_uv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;    uchar16 cr     = (uchar16)(cbcr.s0, cbcr.s0, cbcr.s2, cbcr.s2, cbcr.s4, cbcr.s4, cbcr.s6, cbcr.s6, cbcr.s8, cbcr.s8,</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;                               cbcr.sa, cbcr.sa, cbcr.sc, cbcr.sc, cbcr.se, cbcr.se);</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;    uchar16 cb = (uchar16)(cbcr.s1, cbcr.s1, cbcr.s3, cbcr.s3, cbcr.s5, cbcr.s5, cbcr.s7, cbcr.s7, cbcr.s9, cbcr.s9,</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;                           cbcr.sb, cbcr.sb, cbcr.sd, cbcr.sd, cbcr.sf, cbcr.sf);</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;    vstore16(luma_0, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;    vstore16(luma_1, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_output_stride_y);</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;    vstore16(cb, 0, out_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;    vstore16(cb, 0, out_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + u_output_stride_y);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;    vstore16(cr, 0, out_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;    vstore16(cr, 0, out_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + v_output_stride_y);</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
2699 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
2700 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
2701 </div><!-- fragment -->
2702 </div>
2703 </div>
2704 <a class="anchor" id="a0e87467985f2b64c5aaf073ee5c64267"></a>
2705 <div class="memitem">
2706 <div class="memproto">
2707       <table class="memname">
2708         <tr>
2709           <td class="memname">__kernel void RGB888_to_IYUV_bt709 </td>
2710           <td>(</td>
2711           <td class="paramtype">__global uchar *&#160;</td>
2712           <td class="paramname"><em>rgb_input_ptr</em>, </td>
2713         </tr>
2714         <tr>
2715           <td class="paramkey"></td>
2716           <td></td>
2717           <td class="paramtype">uint&#160;</td>
2718           <td class="paramname"><em>rgb_input_stride_x</em>, </td>
2719         </tr>
2720         <tr>
2721           <td class="paramkey"></td>
2722           <td></td>
2723           <td class="paramtype">uint&#160;</td>
2724           <td class="paramname"><em>rgb_input_step_x</em>, </td>
2725         </tr>
2726         <tr>
2727           <td class="paramkey"></td>
2728           <td></td>
2729           <td class="paramtype">uint&#160;</td>
2730           <td class="paramname"><em>rgb_input_stride_y</em>, </td>
2731         </tr>
2732         <tr>
2733           <td class="paramkey"></td>
2734           <td></td>
2735           <td class="paramtype">uint&#160;</td>
2736           <td class="paramname"><em>rgb_input_step_y</em>, </td>
2737         </tr>
2738         <tr>
2739           <td class="paramkey"></td>
2740           <td></td>
2741           <td class="paramtype">uint&#160;</td>
2742           <td class="paramname"><em>rgb_input_offset_first_element_in_bytes</em>, </td>
2743         </tr>
2744         <tr>
2745           <td class="paramkey"></td>
2746           <td></td>
2747           <td class="paramtype">__global uchar *&#160;</td>
2748           <td class="paramname"><em>luma_output_ptr</em>, </td>
2749         </tr>
2750         <tr>
2751           <td class="paramkey"></td>
2752           <td></td>
2753           <td class="paramtype">uint&#160;</td>
2754           <td class="paramname"><em>luma_output_stride_x</em>, </td>
2755         </tr>
2756         <tr>
2757           <td class="paramkey"></td>
2758           <td></td>
2759           <td class="paramtype">uint&#160;</td>
2760           <td class="paramname"><em>luma_output_step_x</em>, </td>
2761         </tr>
2762         <tr>
2763           <td class="paramkey"></td>
2764           <td></td>
2765           <td class="paramtype">uint&#160;</td>
2766           <td class="paramname"><em>luma_output_stride_y</em>, </td>
2767         </tr>
2768         <tr>
2769           <td class="paramkey"></td>
2770           <td></td>
2771           <td class="paramtype">uint&#160;</td>
2772           <td class="paramname"><em>luma_output_step_y</em>, </td>
2773         </tr>
2774         <tr>
2775           <td class="paramkey"></td>
2776           <td></td>
2777           <td class="paramtype">uint&#160;</td>
2778           <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
2779         </tr>
2780         <tr>
2781           <td class="paramkey"></td>
2782           <td></td>
2783           <td class="paramtype">__global uchar *&#160;</td>
2784           <td class="paramname"><em>u_output_ptr</em>, </td>
2785         </tr>
2786         <tr>
2787           <td class="paramkey"></td>
2788           <td></td>
2789           <td class="paramtype">uint&#160;</td>
2790           <td class="paramname"><em>u_output_stride_x</em>, </td>
2791         </tr>
2792         <tr>
2793           <td class="paramkey"></td>
2794           <td></td>
2795           <td class="paramtype">uint&#160;</td>
2796           <td class="paramname"><em>u_output_step_x</em>, </td>
2797         </tr>
2798         <tr>
2799           <td class="paramkey"></td>
2800           <td></td>
2801           <td class="paramtype">uint&#160;</td>
2802           <td class="paramname"><em>u_output_stride_y</em>, </td>
2803         </tr>
2804         <tr>
2805           <td class="paramkey"></td>
2806           <td></td>
2807           <td class="paramtype">uint&#160;</td>
2808           <td class="paramname"><em>u_output_step_y</em>, </td>
2809         </tr>
2810         <tr>
2811           <td class="paramkey"></td>
2812           <td></td>
2813           <td class="paramtype">uint&#160;</td>
2814           <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
2815         </tr>
2816         <tr>
2817           <td class="paramkey"></td>
2818           <td></td>
2819           <td class="paramtype">__global uchar *&#160;</td>
2820           <td class="paramname"><em>v_output_ptr</em>, </td>
2821         </tr>
2822         <tr>
2823           <td class="paramkey"></td>
2824           <td></td>
2825           <td class="paramtype">uint&#160;</td>
2826           <td class="paramname"><em>v_output_stride_x</em>, </td>
2827         </tr>
2828         <tr>
2829           <td class="paramkey"></td>
2830           <td></td>
2831           <td class="paramtype">uint&#160;</td>
2832           <td class="paramname"><em>v_output_step_x</em>, </td>
2833         </tr>
2834         <tr>
2835           <td class="paramkey"></td>
2836           <td></td>
2837           <td class="paramtype">uint&#160;</td>
2838           <td class="paramname"><em>v_output_stride_y</em>, </td>
2839         </tr>
2840         <tr>
2841           <td class="paramkey"></td>
2842           <td></td>
2843           <td class="paramtype">uint&#160;</td>
2844           <td class="paramname"><em>v_output_step_y</em>, </td>
2845         </tr>
2846         <tr>
2847           <td class="paramkey"></td>
2848           <td></td>
2849           <td class="paramtype">uint&#160;</td>
2850           <td class="paramname"><em>v_output_offset_first_element_in_bytes</em>&#160;</td>
2851         </tr>
2852         <tr>
2853           <td></td>
2854           <td>)</td>
2855           <td></td><td></td>
2856         </tr>
2857       </table>
2858 </div><div class="memdoc">
2859
2860 <p>Convert a RGB image to IYUV using BT709 color space. </p>
2861 <p>Global Workgroup Size [ DIV_CEIL(width, 2), height ] No offset.</p>
2862 <dl class="params"><dt>Parameters</dt><dd>
2863   <table class="params">
2864     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_input_ptr</td><td>Pointer to the source image. Supported Format: U8 </td></tr>
2865     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_input_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
2866     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_input_step_x</td><td>input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2867     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
2868     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_input_step_y</td><td>rgb_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2869     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
2870     <tr><td class="paramdir">[out]</td><td class="paramname">luma_output_ptr</td><td>Pointer to the destination luma channel. Supported Format: U8 </td></tr>
2871     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_x</td><td>Stride of the destination luma channel in X dimension (in bytes) </td></tr>
2872     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_x</td><td>luma_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2873     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
2874     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_y</td><td>luma_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2875     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination luma channel </td></tr>
2876     <tr><td class="paramdir">[out]</td><td class="paramname">u_output_ptr</td><td>Pointer to the destination U channel. Supported Format: U8 </td></tr>
2877     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_x</td><td>Stride of the destination U channel in X dimension (in bytes) </td></tr>
2878     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_x</td><td>u_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2879     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_y</td><td>Stride of the destination image U channel in Y dimension (in bytes) </td></tr>
2880     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_y</td><td>u_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2881     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination U channel </td></tr>
2882     <tr><td class="paramdir">[out]</td><td class="paramname">v_output_ptr</td><td>Pointer to the destination V channel. Supported Format: U8 </td></tr>
2883     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_x</td><td>Stride of the destination V channel in X dimension (in bytes) </td></tr>
2884     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_x</td><td>v_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
2885     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_y</td><td>Stride of the destination V channel in Y dimension (in bytes) </td></tr>
2886     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_y</td><td>v_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
2887     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination V channel </td></tr>
2888   </table>
2889   </dd>
2890 </dl>
2891
2892 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l00554">554</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
2893
2894 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00902">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00897">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
2895 <div class="fragment"><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;{</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;    <span class="comment">// handle 4 pixels every time, two lines, each line for 2 pixels</span></div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_rgb = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(rgb_input);</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_y  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_output);</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_u  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(u_output);</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_v  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(v_output);</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;    <span class="comment">// Read 2 pixel of the first line</span></div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;    uchar8 rgb_0 = vload8(0, in_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;    uchar2 r_0   = (uchar2)(rgb_0.s0, rgb_0.s3);</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;    uchar2 g_0   = (uchar2)(rgb_0.s1, rgb_0.s4);</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;    uchar2 b_0   = (uchar2)(rgb_0.s2, rgb_0.s5);</div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;    float2 f_y = (float2)(0.0000f) + (float2)(0.2126f) * convert_float2(r_0) + (float2)(0.7152f) * convert_float2(g_0) + (float2)(0.0722f) * convert_float2(b_0);</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;    float2 f_u = (float2)(0.0000f) - (float2)(0.1146f) * convert_float2(r_0) - (float2)(0.3854f) * convert_float2(g_0) + (float2)(0.5000f) * convert_float2(b_0);</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;    float2 f_v = (float2)(0.0000f) + (float2)(0.5000f) * convert_float2(r_0) - (float2)(0.4542f) * convert_float2(g_0) - (float2)(0.0458f) * convert_float2(b_0);</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;    short2 i_y = convert_short2_rtz(f_y);</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;    short2 i_u = convert_short2_rtz(f_u) + (short2)(128);</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;    short2 i_v = convert_short2_rtz(f_v) + (short2)(128);</div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;</div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;    uchar2 luma_0 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_y, (short2)(255))));</div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;    vstore2(luma_0, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;</div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;    uchar2 cb_0 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_u, (short2)(255))));</div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;    uchar2 cr_0 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_v, (short2)(255))));</div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;    <span class="comment">// Read 2 pixel of the second line</span></div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;    uchar8 rgb_1 = vload8(0, in_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + rgb_input_stride_y);</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;    uchar2 r_1   = (uchar2)(rgb_1.s0, rgb_1.s3);</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;    uchar2 g_1   = (uchar2)(rgb_1.s1, rgb_1.s4);</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;    uchar2 b_1   = (uchar2)(rgb_1.s2, rgb_1.s5);</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;    f_y = (float2)(0.0000f) + (float2)(0.2126f) * convert_float2(r_1) + (float2)(0.7152f) * convert_float2(g_1) + (float2)(0.0722f) * convert_float2(b_1);</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;    f_u = (float2)(0.0000f) - (float2)(0.1146f) * convert_float2(r_1) - (float2)(0.3854f) * convert_float2(g_1) + (float2)(0.5000f) * convert_float2(b_1);</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;    f_v = (float2)(0.0000f) + (float2)(0.5000f) * convert_float2(r_1) - (float2)(0.4542f) * convert_float2(g_1) - (float2)(0.0458f) * convert_float2(b_1);</div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;</div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;    i_y = convert_short2_rtz(f_y);</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;    i_u = convert_short2_rtz(f_u) + (short2)(128);</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;    i_v = convert_short2_rtz(f_v) + (short2)(128);</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;    uchar2 luma_1 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_y, (short2)(255))));</div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;    vstore2(luma_1, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_output_stride_y);</div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;</div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;    uchar2 cb_1 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_u, (short2)(255))));</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;    uchar2 cr_1 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_v, (short2)(255))));</div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;    uchar2 cbcr = (uchar2)(((cb_0.s0 + cb_0.s1 + cb_1.s0 + cb_1.s1) / 4),</div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;                           ((cr_0.s0 + cr_0.s1 + cr_1.s0 + cr_1.s1) / 4));</div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;    *out_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> = cbcr.x;</div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;    *out_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> = cbcr.y;</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00897">FixedPoint.h:897</a></div></div>
2896 <div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
2897 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
2898 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
2899 <div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00902">FixedPoint.h:902</a></div></div>
2900 </div><!-- fragment -->
2901 </div>
2902 </div>
2903 <a class="anchor" id="aa07d313ff115012737d4b522efc6079f"></a>
2904 <div class="memitem">
2905 <div class="memproto">
2906       <table class="memname">
2907         <tr>
2908           <td class="memname">__kernel void RGB888_to_NV12_bt709 </td>
2909           <td>(</td>
2910           <td class="paramtype">__global uchar *&#160;</td>
2911           <td class="paramname"><em>input_ptr</em>, </td>
2912         </tr>
2913         <tr>
2914           <td class="paramkey"></td>
2915           <td></td>
2916           <td class="paramtype">uint&#160;</td>
2917           <td class="paramname"><em>input_stride_x</em>, </td>
2918         </tr>
2919         <tr>
2920           <td class="paramkey"></td>
2921           <td></td>
2922           <td class="paramtype">uint&#160;</td>
2923           <td class="paramname"><em>input_step_x</em>, </td>
2924         </tr>
2925         <tr>
2926           <td class="paramkey"></td>
2927           <td></td>
2928           <td class="paramtype">uint&#160;</td>
2929           <td class="paramname"><em>input_stride_y</em>, </td>
2930         </tr>
2931         <tr>
2932           <td class="paramkey"></td>
2933           <td></td>
2934           <td class="paramtype">uint&#160;</td>
2935           <td class="paramname"><em>input_step_y</em>, </td>
2936         </tr>
2937         <tr>
2938           <td class="paramkey"></td>
2939           <td></td>
2940           <td class="paramtype">uint&#160;</td>
2941           <td class="paramname"><em>input_offset_first_element_in_bytes</em>, </td>
2942         </tr>
2943         <tr>
2944           <td class="paramkey"></td>
2945           <td></td>
2946           <td class="paramtype">__global uchar *&#160;</td>
2947           <td class="paramname"><em>luma_ptr</em>, </td>
2948         </tr>
2949         <tr>
2950           <td class="paramkey"></td>
2951           <td></td>
2952           <td class="paramtype">uint&#160;</td>
2953           <td class="paramname"><em>luma_stride_x</em>, </td>
2954         </tr>
2955         <tr>
2956           <td class="paramkey"></td>
2957           <td></td>
2958           <td class="paramtype">uint&#160;</td>
2959           <td class="paramname"><em>luma_step_x</em>, </td>
2960         </tr>
2961         <tr>
2962           <td class="paramkey"></td>
2963           <td></td>
2964           <td class="paramtype">uint&#160;</td>
2965           <td class="paramname"><em>luma_stride_y</em>, </td>
2966         </tr>
2967         <tr>
2968           <td class="paramkey"></td>
2969           <td></td>
2970           <td class="paramtype">uint&#160;</td>
2971           <td class="paramname"><em>luma_step_y</em>, </td>
2972         </tr>
2973         <tr>
2974           <td class="paramkey"></td>
2975           <td></td>
2976           <td class="paramtype">uint&#160;</td>
2977           <td class="paramname"><em>luma_offset_first_element_in_bytes</em>, </td>
2978         </tr>
2979         <tr>
2980           <td class="paramkey"></td>
2981           <td></td>
2982           <td class="paramtype">__global uchar *&#160;</td>
2983           <td class="paramname"><em>uv_ptr</em>, </td>
2984         </tr>
2985         <tr>
2986           <td class="paramkey"></td>
2987           <td></td>
2988           <td class="paramtype">uint&#160;</td>
2989           <td class="paramname"><em>uv_stride_x</em>, </td>
2990         </tr>
2991         <tr>
2992           <td class="paramkey"></td>
2993           <td></td>
2994           <td class="paramtype">uint&#160;</td>
2995           <td class="paramname"><em>uv_step_x</em>, </td>
2996         </tr>
2997         <tr>
2998           <td class="paramkey"></td>
2999           <td></td>
3000           <td class="paramtype">uint&#160;</td>
3001           <td class="paramname"><em>uv_stride_y</em>, </td>
3002         </tr>
3003         <tr>
3004           <td class="paramkey"></td>
3005           <td></td>
3006           <td class="paramtype">uint&#160;</td>
3007           <td class="paramname"><em>uv_step_y</em>, </td>
3008         </tr>
3009         <tr>
3010           <td class="paramkey"></td>
3011           <td></td>
3012           <td class="paramtype">uint&#160;</td>
3013           <td class="paramname"><em>uv_offset_first_element_in_bytes</em>&#160;</td>
3014         </tr>
3015         <tr>
3016           <td></td>
3017           <td>)</td>
3018           <td></td><td></td>
3019         </tr>
3020       </table>
3021 </div><div class="memdoc">
3022
3023 <p>Convert a RGB image to NV12 using BT709 color space. </p>
3024 <p>Global Workgroup Size [ DIV_CEIL(width, 4), height ] No offset.</p>
3025 <dl class="params"><dt>Parameters</dt><dd>
3026   <table class="params">
3027     <tr><td class="paramdir">[in]</td><td class="paramname">input_ptr</td><td>Pointer to the source image. Supported Format: U8 </td></tr>
3028     <tr><td class="paramdir">[in]</td><td class="paramname">input_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
3029     <tr><td class="paramdir">[in]</td><td class="paramname">input_step_x</td><td>input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3030     <tr><td class="paramdir">[in]</td><td class="paramname">input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
3031     <tr><td class="paramdir">[in]</td><td class="paramname">input_step_y</td><td>input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3032     <tr><td class="paramdir">[in]</td><td class="paramname">input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
3033     <tr><td class="paramdir">[out]</td><td class="paramname">luma_ptr</td><td>Pointer to the destination luma channel. Supported Format: U8 </td></tr>
3034     <tr><td class="paramdir">[in]</td><td class="paramname">luma_stride_x</td><td>Stride of the destination luma channel in X dimension (in bytes) </td></tr>
3035     <tr><td class="paramdir">[in]</td><td class="paramname">luma_step_x</td><td>luma_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3036     <tr><td class="paramdir">[in]</td><td class="paramname">luma_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
3037     <tr><td class="paramdir">[in]</td><td class="paramname">luma_step_y</td><td>luma_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3038     <tr><td class="paramdir">[in]</td><td class="paramname">luma_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image luma channel </td></tr>
3039     <tr><td class="paramdir">[out]</td><td class="paramname">uv_ptr</td><td>Pointer to the destination uv channel. Supported Format: U8 </td></tr>
3040     <tr><td class="paramdir">[in]</td><td class="paramname">uv_stride_x</td><td>Stride of the destination uv channel in X dimension (in bytes) </td></tr>
3041     <tr><td class="paramdir">[in]</td><td class="paramname">uv_step_x</td><td>uv_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3042     <tr><td class="paramdir">[in]</td><td class="paramname">uv_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
3043     <tr><td class="paramdir">[in]</td><td class="paramname">uv_step_y</td><td>uv_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3044     <tr><td class="paramdir">[in]</td><td class="paramname">uv_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image uv channel </td></tr>
3045   </table>
3046   </dd>
3047 </dl>
3048
3049 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l00325">325</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
3050
3051 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00902">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00897">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
3052 <div class="fragment"><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;{</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in     = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(input);</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_y  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma);</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_uv = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(uv);</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    <span class="comment">// handle 4 pixels every time, two lines, each line for 2 pixels</span></div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <span class="comment">// Read 2 pixel of the first line</span></div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    uchar8 rgb_0 = vload8(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;    uchar2 r_0   = (uchar2)(rgb_0.s0, rgb_0.s3);</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;    uchar2 g_0   = (uchar2)(rgb_0.s1, rgb_0.s4);</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    uchar2 b_0   = (uchar2)(rgb_0.s2, rgb_0.s5);</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    float2 f_y = (float2)(0.0000f) + (float2)(0.2126f) * convert_float2(r_0) + (float2)(0.7152f) * convert_float2(g_0) + (float2)(0.0722f) * convert_float2(b_0);</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;    float2 f_u = (float2)(0.0000f) - (float2)(0.1146f) * convert_float2(r_0) - (float2)(0.3854f) * convert_float2(g_0) + (float2)(0.5000f) * convert_float2(b_0);</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    float2 f_v = (float2)(0.0000f) + (float2)(0.5000f) * convert_float2(r_0) - (float2)(0.4542f) * convert_float2(g_0) - (float2)(0.0458f) * convert_float2(b_0);</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;    short2 i_y = convert_short2_rtz(f_y);</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    short2 i_u = convert_short2_rtz(f_u) + (short2)(128);</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;    short2 i_v = convert_short2_rtz(f_v) + (short2)(128);</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    uchar2 luma_0 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_y, (short2)(255))));</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    vstore2(luma_0, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;    uchar2 cb_0 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_u, (short2)(255))));</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;    uchar2 cr_0 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_v, (short2)(255))));</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;    <span class="comment">// Read 2 pixel of the second line</span></div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;    uchar8 rgb_1 = vload8(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + input_stride_y);</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    uchar2 r_1   = (uchar2)(rgb_1.s0, rgb_1.s3);</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;    uchar2 g_1   = (uchar2)(rgb_1.s1, rgb_1.s4);</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;    uchar2 b_1   = (uchar2)(rgb_1.s2, rgb_1.s5);</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    f_y = (float2)(0.0000f) + (float2)(0.2126f) * convert_float2(r_1) + (float2)(0.7152f) * convert_float2(g_1) + (float2)(0.0722f) * convert_float2(b_1);</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;    f_u = (float2)(0.0000f) - (float2)(0.1146f) * convert_float2(r_1) - (float2)(0.3854f) * convert_float2(g_1) + (float2)(0.5000f) * convert_float2(b_1);</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;    f_v = (float2)(0.0000f) + (float2)(0.5000f) * convert_float2(r_1) - (float2)(0.4542f) * convert_float2(g_1) - (float2)(0.0458f) * convert_float2(b_1);</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;    i_y = convert_short2_rtz(f_y);</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;    i_u = convert_short2_rtz(f_u) + (short2)(128);</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;    i_v = convert_short2_rtz(f_v) + (short2)(128);</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;    uchar2 luma_1 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_y, (short2)(255))));</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;    vstore2(luma_1, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_stride_y);</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;    uchar2 cb_1 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_u, (short2)(255))));</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    uchar2 cr_1 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_v, (short2)(255))));</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    uchar2 cbcr = (uchar2)(((cb_0.s0 + cb_0.s1 + cb_1.s0 + cb_1.s1) / 4),</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;                           ((cr_0.s0 + cr_0.s1 + cr_1.s0 + cr_1.s1) / 4));</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;    vstore2(cbcr, 0, out_uv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00897">FixedPoint.h:897</a></div></div>
3053 <div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
3054 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
3055 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
3056 <div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00902">FixedPoint.h:902</a></div></div>
3057 </div><!-- fragment -->
3058 </div>
3059 </div>
3060 <a class="anchor" id="a2a21de930ca0898bed0a081f40cb4406"></a>
3061 <div class="memitem">
3062 <div class="memproto">
3063       <table class="memname">
3064         <tr>
3065           <td class="memname">__kernel void RGB888_to_RGBA8888_bt709 </td>
3066           <td>(</td>
3067           <td class="paramtype">__global uchar *&#160;</td>
3068           <td class="paramname"><em>input_ptr</em>, </td>
3069         </tr>
3070         <tr>
3071           <td class="paramkey"></td>
3072           <td></td>
3073           <td class="paramtype">uint&#160;</td>
3074           <td class="paramname"><em>input_stride_x</em>, </td>
3075         </tr>
3076         <tr>
3077           <td class="paramkey"></td>
3078           <td></td>
3079           <td class="paramtype">uint&#160;</td>
3080           <td class="paramname"><em>input_step_x</em>, </td>
3081         </tr>
3082         <tr>
3083           <td class="paramkey"></td>
3084           <td></td>
3085           <td class="paramtype">uint&#160;</td>
3086           <td class="paramname"><em>input_stride_y</em>, </td>
3087         </tr>
3088         <tr>
3089           <td class="paramkey"></td>
3090           <td></td>
3091           <td class="paramtype">uint&#160;</td>
3092           <td class="paramname"><em>input_step_y</em>, </td>
3093         </tr>
3094         <tr>
3095           <td class="paramkey"></td>
3096           <td></td>
3097           <td class="paramtype">uint&#160;</td>
3098           <td class="paramname"><em>input_offset_first_element_in_bytes</em>, </td>
3099         </tr>
3100         <tr>
3101           <td class="paramkey"></td>
3102           <td></td>
3103           <td class="paramtype">__global uchar *&#160;</td>
3104           <td class="paramname"><em>output_ptr</em>, </td>
3105         </tr>
3106         <tr>
3107           <td class="paramkey"></td>
3108           <td></td>
3109           <td class="paramtype">uint&#160;</td>
3110           <td class="paramname"><em>output_stride_x</em>, </td>
3111         </tr>
3112         <tr>
3113           <td class="paramkey"></td>
3114           <td></td>
3115           <td class="paramtype">uint&#160;</td>
3116           <td class="paramname"><em>output_step_x</em>, </td>
3117         </tr>
3118         <tr>
3119           <td class="paramkey"></td>
3120           <td></td>
3121           <td class="paramtype">uint&#160;</td>
3122           <td class="paramname"><em>output_stride_y</em>, </td>
3123         </tr>
3124         <tr>
3125           <td class="paramkey"></td>
3126           <td></td>
3127           <td class="paramtype">uint&#160;</td>
3128           <td class="paramname"><em>output_step_y</em>, </td>
3129         </tr>
3130         <tr>
3131           <td class="paramkey"></td>
3132           <td></td>
3133           <td class="paramtype">uint&#160;</td>
3134           <td class="paramname"><em>output_offset_first_element_in_bytes</em>&#160;</td>
3135         </tr>
3136         <tr>
3137           <td></td>
3138           <td>)</td>
3139           <td></td><td></td>
3140         </tr>
3141       </table>
3142 </div><div class="memdoc">
3143
3144 <p>Convert an RGB888 image to RGBX8888. </p>
3145 <p>Global Workgroup Size [ DIV_CEIL(width, 16), height ] No offset.</p>
3146 <dl class="params"><dt>Parameters</dt><dd>
3147   <table class="params">
3148     <tr><td class="paramdir">[in]</td><td class="paramname">input_ptr</td><td>Pointer to the source image. Supported Format: U8 </td></tr>
3149     <tr><td class="paramdir">[in]</td><td class="paramname">input_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
3150     <tr><td class="paramdir">[in]</td><td class="paramname">input_step_x</td><td>input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3151     <tr><td class="paramdir">[in]</td><td class="paramname">input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
3152     <tr><td class="paramdir">[in]</td><td class="paramname">input_step_y</td><td>input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3153     <tr><td class="paramdir">[in]</td><td class="paramname">input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
3154     <tr><td class="paramdir">[out]</td><td class="paramname">output_ptr</td><td>Pointer to the destination image. Supported Format: U8 </td></tr>
3155     <tr><td class="paramdir">[in]</td><td class="paramname">output_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
3156     <tr><td class="paramdir">[in]</td><td class="paramname">output_step_x</td><td>output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3157     <tr><td class="paramdir">[in]</td><td class="paramname">output_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
3158     <tr><td class="paramdir">[in]</td><td class="paramname">output_step_y</td><td>output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3159     <tr><td class="paramdir">[in]</td><td class="paramname">output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
3160   </table>
3161   </dd>
3162 </dl>
3163
3164 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l00044">44</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
3165
3166 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
3167 <div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(input);</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(output);</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <span class="comment">// handle 16 pixels every time</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;    uchar16 rgb_0 = vload16(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    uchar16 rgb_1 = vload16(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 16);</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    uchar16 rgb_2 = vload16(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 32);</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;    uchar16 rgba_0 = (uchar16)(rgb_0.s012, 255, rgb_0.s345, 255, rgb_0.s678, 255, rgb_0.s9ab, 255);</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    uchar16 rgba_1 = (uchar16)(rgb_0.scde, 255, rgb_0.sf, rgb_1.s01, 255, rgb_1.s234, 255, rgb_1.s567, 255);</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    uchar16 rgba_2 = (uchar16)(rgb_1.s89a, 255, rgb_1.sbcd, 255, rgb_1.sef, rgb_2.s0, 255, rgb_2.s123, 255);</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    uchar16 rgba_3 = (uchar16)(rgb_2.s456, 255, rgb_2.s789, 255, rgb_2.sabc, 255, rgb_2.sdef, 255);</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    vstore16(rgba_0, 0, out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    vstore16(rgba_1, 0, out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 16);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    vstore16(rgba_2, 0, out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 32);</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;    vstore16(rgba_3, 0, out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 48);</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
3168 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
3169 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
3170 </div><!-- fragment -->
3171 </div>
3172 </div>
3173 <a class="anchor" id="a917c100f2da4a0e773bb63dd4f87de0b"></a>
3174 <div class="memitem">
3175 <div class="memproto">
3176       <table class="memname">
3177         <tr>
3178           <td class="memname">__kernel void RGB888_to_YUV444_bt709 </td>
3179           <td>(</td>
3180           <td class="paramtype">__global uchar *&#160;</td>
3181           <td class="paramname"><em>rgb_input_ptr</em>, </td>
3182         </tr>
3183         <tr>
3184           <td class="paramkey"></td>
3185           <td></td>
3186           <td class="paramtype">uint&#160;</td>
3187           <td class="paramname"><em>rgb_input_stride_x</em>, </td>
3188         </tr>
3189         <tr>
3190           <td class="paramkey"></td>
3191           <td></td>
3192           <td class="paramtype">uint&#160;</td>
3193           <td class="paramname"><em>rgb_input_step_x</em>, </td>
3194         </tr>
3195         <tr>
3196           <td class="paramkey"></td>
3197           <td></td>
3198           <td class="paramtype">uint&#160;</td>
3199           <td class="paramname"><em>rgb_input_stride_y</em>, </td>
3200         </tr>
3201         <tr>
3202           <td class="paramkey"></td>
3203           <td></td>
3204           <td class="paramtype">uint&#160;</td>
3205           <td class="paramname"><em>rgb_input_step_y</em>, </td>
3206         </tr>
3207         <tr>
3208           <td class="paramkey"></td>
3209           <td></td>
3210           <td class="paramtype">uint&#160;</td>
3211           <td class="paramname"><em>rgb_input_offset_first_element_in_bytes</em>, </td>
3212         </tr>
3213         <tr>
3214           <td class="paramkey"></td>
3215           <td></td>
3216           <td class="paramtype">__global uchar *&#160;</td>
3217           <td class="paramname"><em>luma_output_ptr</em>, </td>
3218         </tr>
3219         <tr>
3220           <td class="paramkey"></td>
3221           <td></td>
3222           <td class="paramtype">uint&#160;</td>
3223           <td class="paramname"><em>luma_output_stride_x</em>, </td>
3224         </tr>
3225         <tr>
3226           <td class="paramkey"></td>
3227           <td></td>
3228           <td class="paramtype">uint&#160;</td>
3229           <td class="paramname"><em>luma_output_step_x</em>, </td>
3230         </tr>
3231         <tr>
3232           <td class="paramkey"></td>
3233           <td></td>
3234           <td class="paramtype">uint&#160;</td>
3235           <td class="paramname"><em>luma_output_stride_y</em>, </td>
3236         </tr>
3237         <tr>
3238           <td class="paramkey"></td>
3239           <td></td>
3240           <td class="paramtype">uint&#160;</td>
3241           <td class="paramname"><em>luma_output_step_y</em>, </td>
3242         </tr>
3243         <tr>
3244           <td class="paramkey"></td>
3245           <td></td>
3246           <td class="paramtype">uint&#160;</td>
3247           <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
3248         </tr>
3249         <tr>
3250           <td class="paramkey"></td>
3251           <td></td>
3252           <td class="paramtype">__global uchar *&#160;</td>
3253           <td class="paramname"><em>u_output_ptr</em>, </td>
3254         </tr>
3255         <tr>
3256           <td class="paramkey"></td>
3257           <td></td>
3258           <td class="paramtype">uint&#160;</td>
3259           <td class="paramname"><em>u_output_stride_x</em>, </td>
3260         </tr>
3261         <tr>
3262           <td class="paramkey"></td>
3263           <td></td>
3264           <td class="paramtype">uint&#160;</td>
3265           <td class="paramname"><em>u_output_step_x</em>, </td>
3266         </tr>
3267         <tr>
3268           <td class="paramkey"></td>
3269           <td></td>
3270           <td class="paramtype">uint&#160;</td>
3271           <td class="paramname"><em>u_output_stride_y</em>, </td>
3272         </tr>
3273         <tr>
3274           <td class="paramkey"></td>
3275           <td></td>
3276           <td class="paramtype">uint&#160;</td>
3277           <td class="paramname"><em>u_output_step_y</em>, </td>
3278         </tr>
3279         <tr>
3280           <td class="paramkey"></td>
3281           <td></td>
3282           <td class="paramtype">uint&#160;</td>
3283           <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
3284         </tr>
3285         <tr>
3286           <td class="paramkey"></td>
3287           <td></td>
3288           <td class="paramtype">__global uchar *&#160;</td>
3289           <td class="paramname"><em>v_output_ptr</em>, </td>
3290         </tr>
3291         <tr>
3292           <td class="paramkey"></td>
3293           <td></td>
3294           <td class="paramtype">uint&#160;</td>
3295           <td class="paramname"><em>v_output_stride_x</em>, </td>
3296         </tr>
3297         <tr>
3298           <td class="paramkey"></td>
3299           <td></td>
3300           <td class="paramtype">uint&#160;</td>
3301           <td class="paramname"><em>v_output_step_x</em>, </td>
3302         </tr>
3303         <tr>
3304           <td class="paramkey"></td>
3305           <td></td>
3306           <td class="paramtype">uint&#160;</td>
3307           <td class="paramname"><em>v_output_stride_y</em>, </td>
3308         </tr>
3309         <tr>
3310           <td class="paramkey"></td>
3311           <td></td>
3312           <td class="paramtype">uint&#160;</td>
3313           <td class="paramname"><em>v_output_step_y</em>, </td>
3314         </tr>
3315         <tr>
3316           <td class="paramkey"></td>
3317           <td></td>
3318           <td class="paramtype">uint&#160;</td>
3319           <td class="paramname"><em>v_output_offset_first_element_in_bytes</em>&#160;</td>
3320         </tr>
3321         <tr>
3322           <td></td>
3323           <td>)</td>
3324           <td></td><td></td>
3325         </tr>
3326       </table>
3327 </div><div class="memdoc">
3328
3329 <p>Convert a RGB image to YUV444 using BT709 color space. </p>
3330 <p>Global Workgroup Size [ DIV_CEIL(width, 4), height ] No offset.</p>
3331 <dl class="params"><dt>Parameters</dt><dd>
3332   <table class="params">
3333     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_input_ptr</td><td>Pointer to the source image. Supported Format: U8 </td></tr>
3334     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_input_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
3335     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_input_step_x</td><td>input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3336     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
3337     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_input_step_y</td><td>rgb_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3338     <tr><td class="paramdir">[in]</td><td class="paramname">rgb_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
3339     <tr><td class="paramdir">[out]</td><td class="paramname">luma_output_ptr</td><td>Pointer to the destination luma channel. Supported Format: U8 </td></tr>
3340     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_x</td><td>Stride of the destination luma channel in X dimension (in bytes) </td></tr>
3341     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_x</td><td>luma_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3342     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
3343     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_y</td><td>luma_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3344     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination luma channel </td></tr>
3345     <tr><td class="paramdir">[out]</td><td class="paramname">u_output_ptr</td><td>Pointer to the destination U channel. Supported Format: U8 </td></tr>
3346     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_x</td><td>Stride of the destination U channel in X dimension (in bytes) </td></tr>
3347     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_x</td><td>u_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3348     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_y</td><td>Stride of the destination image U channel in Y dimension (in bytes) </td></tr>
3349     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_y</td><td>u_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3350     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination U channel </td></tr>
3351     <tr><td class="paramdir">[out]</td><td class="paramname">v_output_ptr</td><td>Pointer to the destination V channel. Supported Format: U8 </td></tr>
3352     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_x</td><td>Stride of the destination V channel in X dimension (in bytes) </td></tr>
3353     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_x</td><td>v_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3354     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_y</td><td>Stride of the destination image V channel in Y dimension (in bytes) </td></tr>
3355     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_y</td><td>v_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3356     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination V channel </td></tr>
3357   </table>
3358   </dd>
3359 </dl>
3360
3361 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l00488">488</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
3362
3363 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00902">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00897">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
3364 <div class="fragment"><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;{</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;    <span class="comment">// handle 4 pixels every time</span></div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_rgb = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(rgb_input);</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_y  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_output);</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_u  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(u_output);</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_v  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(v_output);</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;    <span class="comment">// Read 4 pixel</span></div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;    uchar16 rgb_0 = vload16(0, in_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;    uchar4  r_0   = (uchar4)(rgb_0.s0, rgb_0.s3, rgb_0.s6, rgb_0.s9);</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;    uchar4  g_0   = (uchar4)(rgb_0.s1, rgb_0.s4, rgb_0.s7, rgb_0.sa);</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;    uchar4  b_0   = (uchar4)(rgb_0.s2, rgb_0.s5, rgb_0.s8, rgb_0.sb);</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;    float4 f_y = (float4)(0.0000f) + (float4)(0.2126f) * convert_float4(r_0) + (float4)(0.7152f) * convert_float4(g_0) + (float4)(0.0722f) * convert_float4(b_0);</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;    float4 f_u = (float4)(0.0000f) - (float4)(0.1146f) * convert_float4(r_0) - (float4)(0.3854f) * convert_float4(g_0) + (float4)(0.5000f) * convert_float4(b_0);</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;    float4 f_v = (float4)(0.0000f) + (float4)(0.5000f) * convert_float4(r_0) - (float4)(0.4542f) * convert_float4(g_0) - (float4)(0.0458f) * convert_float4(b_0);</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;    short4 i_y = convert_short4_rtz(f_y);</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;    short4 i_u = convert_short4_rtz(f_u) + (short4)(128);</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;    short4 i_v = convert_short4_rtz(f_v) + (short4)(128);</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;</div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;    uchar4 luma_0 = convert_uchar4(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short4)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_y, (short4)(255))));</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;    vstore4(luma_0, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;    uchar4 cb_0 = convert_uchar4(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short4)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_u, (short4)(255))));</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;    uchar4 cr_0 = convert_uchar4(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short4)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_v, (short4)(255))));</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;    vstore4(cb_0, 0, out_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;    vstore4(cr_0, 0, out_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00897">FixedPoint.h:897</a></div></div>
3365 <div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
3366 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
3367 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
3368 <div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00902">FixedPoint.h:902</a></div></div>
3369 </div><!-- fragment -->
3370 </div>
3371 </div>
3372 <a class="anchor" id="a18ef3b2b70de9af3e4386b2a07f2cd36"></a>
3373 <div class="memitem">
3374 <div class="memproto">
3375       <table class="memname">
3376         <tr>
3377           <td class="memname">__kernel void RGBA8888_to_IYUV_bt709 </td>
3378           <td>(</td>
3379           <td class="paramtype">__global uchar *&#160;</td>
3380           <td class="paramname"><em>rgba_input_ptr</em>, </td>
3381         </tr>
3382         <tr>
3383           <td class="paramkey"></td>
3384           <td></td>
3385           <td class="paramtype">uint&#160;</td>
3386           <td class="paramname"><em>rgba_input_stride_x</em>, </td>
3387         </tr>
3388         <tr>
3389           <td class="paramkey"></td>
3390           <td></td>
3391           <td class="paramtype">uint&#160;</td>
3392           <td class="paramname"><em>rgba_input_step_x</em>, </td>
3393         </tr>
3394         <tr>
3395           <td class="paramkey"></td>
3396           <td></td>
3397           <td class="paramtype">uint&#160;</td>
3398           <td class="paramname"><em>rgba_input_stride_y</em>, </td>
3399         </tr>
3400         <tr>
3401           <td class="paramkey"></td>
3402           <td></td>
3403           <td class="paramtype">uint&#160;</td>
3404           <td class="paramname"><em>rgba_input_step_y</em>, </td>
3405         </tr>
3406         <tr>
3407           <td class="paramkey"></td>
3408           <td></td>
3409           <td class="paramtype">uint&#160;</td>
3410           <td class="paramname"><em>rgba_input_offset_first_element_in_bytes</em>, </td>
3411         </tr>
3412         <tr>
3413           <td class="paramkey"></td>
3414           <td></td>
3415           <td class="paramtype">__global uchar *&#160;</td>
3416           <td class="paramname"><em>luma_output_ptr</em>, </td>
3417         </tr>
3418         <tr>
3419           <td class="paramkey"></td>
3420           <td></td>
3421           <td class="paramtype">uint&#160;</td>
3422           <td class="paramname"><em>luma_output_stride_x</em>, </td>
3423         </tr>
3424         <tr>
3425           <td class="paramkey"></td>
3426           <td></td>
3427           <td class="paramtype">uint&#160;</td>
3428           <td class="paramname"><em>luma_output_step_x</em>, </td>
3429         </tr>
3430         <tr>
3431           <td class="paramkey"></td>
3432           <td></td>
3433           <td class="paramtype">uint&#160;</td>
3434           <td class="paramname"><em>luma_output_stride_y</em>, </td>
3435         </tr>
3436         <tr>
3437           <td class="paramkey"></td>
3438           <td></td>
3439           <td class="paramtype">uint&#160;</td>
3440           <td class="paramname"><em>luma_output_step_y</em>, </td>
3441         </tr>
3442         <tr>
3443           <td class="paramkey"></td>
3444           <td></td>
3445           <td class="paramtype">uint&#160;</td>
3446           <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
3447         </tr>
3448         <tr>
3449           <td class="paramkey"></td>
3450           <td></td>
3451           <td class="paramtype">__global uchar *&#160;</td>
3452           <td class="paramname"><em>u_output_ptr</em>, </td>
3453         </tr>
3454         <tr>
3455           <td class="paramkey"></td>
3456           <td></td>
3457           <td class="paramtype">uint&#160;</td>
3458           <td class="paramname"><em>u_output_stride_x</em>, </td>
3459         </tr>
3460         <tr>
3461           <td class="paramkey"></td>
3462           <td></td>
3463           <td class="paramtype">uint&#160;</td>
3464           <td class="paramname"><em>u_output_step_x</em>, </td>
3465         </tr>
3466         <tr>
3467           <td class="paramkey"></td>
3468           <td></td>
3469           <td class="paramtype">uint&#160;</td>
3470           <td class="paramname"><em>u_output_stride_y</em>, </td>
3471         </tr>
3472         <tr>
3473           <td class="paramkey"></td>
3474           <td></td>
3475           <td class="paramtype">uint&#160;</td>
3476           <td class="paramname"><em>u_output_step_y</em>, </td>
3477         </tr>
3478         <tr>
3479           <td class="paramkey"></td>
3480           <td></td>
3481           <td class="paramtype">uint&#160;</td>
3482           <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
3483         </tr>
3484         <tr>
3485           <td class="paramkey"></td>
3486           <td></td>
3487           <td class="paramtype">__global uchar *&#160;</td>
3488           <td class="paramname"><em>v_output_ptr</em>, </td>
3489         </tr>
3490         <tr>
3491           <td class="paramkey"></td>
3492           <td></td>
3493           <td class="paramtype">uint&#160;</td>
3494           <td class="paramname"><em>v_output_stride_x</em>, </td>
3495         </tr>
3496         <tr>
3497           <td class="paramkey"></td>
3498           <td></td>
3499           <td class="paramtype">uint&#160;</td>
3500           <td class="paramname"><em>v_output_step_x</em>, </td>
3501         </tr>
3502         <tr>
3503           <td class="paramkey"></td>
3504           <td></td>
3505           <td class="paramtype">uint&#160;</td>
3506           <td class="paramname"><em>v_output_stride_y</em>, </td>
3507         </tr>
3508         <tr>
3509           <td class="paramkey"></td>
3510           <td></td>
3511           <td class="paramtype">uint&#160;</td>
3512           <td class="paramname"><em>v_output_step_y</em>, </td>
3513         </tr>
3514         <tr>
3515           <td class="paramkey"></td>
3516           <td></td>
3517           <td class="paramtype">uint&#160;</td>
3518           <td class="paramname"><em>v_output_offset_first_element_in_bytes</em>&#160;</td>
3519         </tr>
3520         <tr>
3521           <td></td>
3522           <td>)</td>
3523           <td></td><td></td>
3524         </tr>
3525       </table>
3526 </div><div class="memdoc">
3527
3528 <p>Convert a RGBA image to IYUV using BT709 color space. </p>
3529 <p>Global Workgroup Size [ DIV_CEIL(width, 2), height ] No offset.</p>
3530 <dl class="params"><dt>Parameters</dt><dd>
3531   <table class="params">
3532     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_input_ptr</td><td>Pointer to the source image. Supported Format: U8 </td></tr>
3533     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_input_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
3534     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_input_step_x</td><td>rgba_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3535     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
3536     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_input_step_y</td><td>rgba_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3537     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
3538     <tr><td class="paramdir">[out]</td><td class="paramname">luma_output_ptr</td><td>Pointer to the destination luma channel. Supported Format: U8 </td></tr>
3539     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_x</td><td>Stride of the destination luma channel in X dimension (in bytes) </td></tr>
3540     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_x</td><td>luma_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3541     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
3542     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_y</td><td>luma_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3543     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination luma channel </td></tr>
3544     <tr><td class="paramdir">[out]</td><td class="paramname">u_output_ptr</td><td>Pointer to the destination U channel. Supported Format: U8 </td></tr>
3545     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_x</td><td>Stride of the destination U channel in X dimension (in bytes) </td></tr>
3546     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_x</td><td>u_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3547     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_y</td><td>Stride of the destination image U channel in Y dimension (in bytes) </td></tr>
3548     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_y</td><td>u_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3549     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination U channel </td></tr>
3550     <tr><td class="paramdir">[out]</td><td class="paramname">v_output_ptr</td><td>Pointer to the destination V channel. Supported Format: U8 </td></tr>
3551     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_x</td><td>Stride of the destination V channel in X dimension (in bytes) </td></tr>
3552     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_x</td><td>v_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3553     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_y</td><td>Stride of the destination V channel in Y dimension (in bytes) </td></tr>
3554     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_y</td><td>v_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3555     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination V channel </td></tr>
3556   </table>
3557   </dd>
3558 </dl>
3559
3560 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l00786">786</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
3561
3562 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00902">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00897">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
3563 <div class="fragment"><div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;{</div><div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;    <span class="comment">// handle 4 pixels every time, two lines, each line for 2 pixels</span></div><div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_rgb = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(rgba_input);</div><div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_y  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_output);</div><div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_u  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(u_output);</div><div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_v  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(v_output);</div><div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;</div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;    <span class="comment">// Read 2 pixel of the first line</span></div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;    uchar8 rgb_0 = vload8(0, in_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;    uchar2 r_0   = (uchar2)(rgb_0.s0, rgb_0.s4);</div><div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;    uchar2 g_0   = (uchar2)(rgb_0.s1, rgb_0.s5);</div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;    uchar2 b_0   = (uchar2)(rgb_0.s2, rgb_0.s6);</div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;</div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;    float2 f_y = (float2)(0.0000f) + (float2)(0.2126f) * convert_float2(r_0) + (float2)(0.7152f) * convert_float2(g_0) + (float2)(0.0722f) * convert_float2(b_0);</div><div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;    float2 f_u = (float2)(0.0000f) - (float2)(0.1146f) * convert_float2(r_0) - (float2)(0.3854f) * convert_float2(g_0) + (float2)(0.5000f) * convert_float2(b_0);</div><div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;    float2 f_v = (float2)(0.0000f) + (float2)(0.5000f) * convert_float2(r_0) - (float2)(0.4542f) * convert_float2(g_0) - (float2)(0.0458f) * convert_float2(b_0);</div><div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;</div><div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;    short2 i_y = convert_short2_rtz(f_y);</div><div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;    short2 i_u = convert_short2_rtz(f_u) + (short2)(128);</div><div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;    short2 i_v = convert_short2_rtz(f_v) + (short2)(128);</div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;</div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;    uchar2 luma_0 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_y, (short2)(255))));</div><div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;    vstore2(luma_0, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;</div><div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;    uchar2 cb_0 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_u, (short2)(255))));</div><div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;    uchar2 cr_0 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_v, (short2)(255))));</div><div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;</div><div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;    <span class="comment">// Read 2 pixel of the second line</span></div><div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;    uchar8 rgb_1 = vload8(0, in_rgb.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + rgba_input_stride_y);</div><div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;    uchar2 r_1   = (uchar2)(rgb_1.s0, rgb_1.s4);</div><div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;    uchar2 g_1   = (uchar2)(rgb_1.s1, rgb_1.s5);</div><div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;    uchar2 b_1   = (uchar2)(rgb_1.s2, rgb_1.s6);</div><div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;</div><div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;    f_y = (float2)(0.0000f) + (float2)(0.2126f) * convert_float2(r_1) + (float2)(0.7152f) * convert_float2(g_1) + (float2)(0.0722f) * convert_float2(b_1);</div><div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;    f_u = (float2)(0.0000f) - (float2)(0.1146f) * convert_float2(r_1) - (float2)(0.3854f) * convert_float2(g_1) + (float2)(0.5000f) * convert_float2(b_1);</div><div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;    f_v = (float2)(0.0000f) + (float2)(0.5000f) * convert_float2(r_1) - (float2)(0.4542f) * convert_float2(g_1) - (float2)(0.0458f) * convert_float2(b_1);</div><div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;</div><div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;    i_y = convert_short2_rtz(f_y);</div><div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;    i_u = convert_short2_rtz(f_u) + (short2)(128);</div><div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;    i_v = convert_short2_rtz(f_v) + (short2)(128);</div><div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;</div><div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;    uchar2 luma_1 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_y, (short2)(255))));</div><div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;    vstore2(luma_1, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_output_stride_y);</div><div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;</div><div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;    uchar2 cb_1 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_u, (short2)(255))));</div><div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;    uchar2 cr_1 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_v, (short2)(255))));</div><div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;    uchar2 cbcr = (uchar2)(((cb_0.s0 + cb_0.s1 + cb_1.s0 + cb_1.s1) / 4),</div><div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;                           ((cr_0.s0 + cr_0.s1 + cr_1.s0 + cr_1.s1) / 4));</div><div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;    *out_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> = cbcr.x;</div><div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;    *out_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> = cbcr.y;</div><div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00897">FixedPoint.h:897</a></div></div>
3564 <div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
3565 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
3566 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
3567 <div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00902">FixedPoint.h:902</a></div></div>
3568 </div><!-- fragment -->
3569 </div>
3570 </div>
3571 <a class="anchor" id="a9ef9b466943c743b2a0f2865a70f741a"></a>
3572 <div class="memitem">
3573 <div class="memproto">
3574       <table class="memname">
3575         <tr>
3576           <td class="memname">__kernel void RGBA8888_to_NV12_bt709 </td>
3577           <td>(</td>
3578           <td class="paramtype">__global uchar *&#160;</td>
3579           <td class="paramname"><em>input_ptr</em>, </td>
3580         </tr>
3581         <tr>
3582           <td class="paramkey"></td>
3583           <td></td>
3584           <td class="paramtype">uint&#160;</td>
3585           <td class="paramname"><em>input_stride_x</em>, </td>
3586         </tr>
3587         <tr>
3588           <td class="paramkey"></td>
3589           <td></td>
3590           <td class="paramtype">uint&#160;</td>
3591           <td class="paramname"><em>input_step_x</em>, </td>
3592         </tr>
3593         <tr>
3594           <td class="paramkey"></td>
3595           <td></td>
3596           <td class="paramtype">uint&#160;</td>
3597           <td class="paramname"><em>input_stride_y</em>, </td>
3598         </tr>
3599         <tr>
3600           <td class="paramkey"></td>
3601           <td></td>
3602           <td class="paramtype">uint&#160;</td>
3603           <td class="paramname"><em>input_step_y</em>, </td>
3604         </tr>
3605         <tr>
3606           <td class="paramkey"></td>
3607           <td></td>
3608           <td class="paramtype">uint&#160;</td>
3609           <td class="paramname"><em>input_offset_first_element_in_bytes</em>, </td>
3610         </tr>
3611         <tr>
3612           <td class="paramkey"></td>
3613           <td></td>
3614           <td class="paramtype">__global uchar *&#160;</td>
3615           <td class="paramname"><em>luma_output_ptr</em>, </td>
3616         </tr>
3617         <tr>
3618           <td class="paramkey"></td>
3619           <td></td>
3620           <td class="paramtype">uint&#160;</td>
3621           <td class="paramname"><em>luma_output_stride_x</em>, </td>
3622         </tr>
3623         <tr>
3624           <td class="paramkey"></td>
3625           <td></td>
3626           <td class="paramtype">uint&#160;</td>
3627           <td class="paramname"><em>luma_output_step_x</em>, </td>
3628         </tr>
3629         <tr>
3630           <td class="paramkey"></td>
3631           <td></td>
3632           <td class="paramtype">uint&#160;</td>
3633           <td class="paramname"><em>luma_output_stride_y</em>, </td>
3634         </tr>
3635         <tr>
3636           <td class="paramkey"></td>
3637           <td></td>
3638           <td class="paramtype">uint&#160;</td>
3639           <td class="paramname"><em>luma_output_step_y</em>, </td>
3640         </tr>
3641         <tr>
3642           <td class="paramkey"></td>
3643           <td></td>
3644           <td class="paramtype">uint&#160;</td>
3645           <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
3646         </tr>
3647         <tr>
3648           <td class="paramkey"></td>
3649           <td></td>
3650           <td class="paramtype">__global uchar *&#160;</td>
3651           <td class="paramname"><em>uv_output_ptr</em>, </td>
3652         </tr>
3653         <tr>
3654           <td class="paramkey"></td>
3655           <td></td>
3656           <td class="paramtype">uint&#160;</td>
3657           <td class="paramname"><em>uv_output_stride_x</em>, </td>
3658         </tr>
3659         <tr>
3660           <td class="paramkey"></td>
3661           <td></td>
3662           <td class="paramtype">uint&#160;</td>
3663           <td class="paramname"><em>uv_output_step_x</em>, </td>
3664         </tr>
3665         <tr>
3666           <td class="paramkey"></td>
3667           <td></td>
3668           <td class="paramtype">uint&#160;</td>
3669           <td class="paramname"><em>uv_output_stride_y</em>, </td>
3670         </tr>
3671         <tr>
3672           <td class="paramkey"></td>
3673           <td></td>
3674           <td class="paramtype">uint&#160;</td>
3675           <td class="paramname"><em>uv_output_step_y</em>, </td>
3676         </tr>
3677         <tr>
3678           <td class="paramkey"></td>
3679           <td></td>
3680           <td class="paramtype">uint&#160;</td>
3681           <td class="paramname"><em>uv_output_offset_first_element_in_bytes</em>&#160;</td>
3682         </tr>
3683         <tr>
3684           <td></td>
3685           <td>)</td>
3686           <td></td><td></td>
3687         </tr>
3688       </table>
3689 </div><div class="memdoc">
3690
3691 <p>Convert a RGBA image to NV12 using BT709 color space. </p>
3692 <p>Global Workgroup Size [ DIV_CEIL(width, 2), height ] No offset.</p>
3693 <dl class="params"><dt>Parameters</dt><dd>
3694   <table class="params">
3695     <tr><td class="paramdir">[in]</td><td class="paramname">input_ptr</td><td>Pointer to the source image. Supported Format: U8 </td></tr>
3696     <tr><td class="paramdir">[in]</td><td class="paramname">input_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
3697     <tr><td class="paramdir">[in]</td><td class="paramname">input_step_x</td><td>input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3698     <tr><td class="paramdir">[in]</td><td class="paramname">input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
3699     <tr><td class="paramdir">[in]</td><td class="paramname">input_step_y</td><td>input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3700     <tr><td class="paramdir">[in]</td><td class="paramname">input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
3701     <tr><td class="paramdir">[out]</td><td class="paramname">luma_output_ptr</td><td>Pointer to the destination luma channel. Supported Format: U8 </td></tr>
3702     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_x</td><td>Stride of the destination luma channel in X dimension (in bytes) </td></tr>
3703     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_x</td><td>luma_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3704     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
3705     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_y</td><td>luma_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3706     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image luma channel </td></tr>
3707     <tr><td class="paramdir">[out]</td><td class="paramname">uv_output_ptr</td><td>Pointer to the destination uv channel. Supported Format: U8 </td></tr>
3708     <tr><td class="paramdir">[in]</td><td class="paramname">uv_output_stride_x</td><td>Stride of the destination uv channel in X dimension (in bytes) </td></tr>
3709     <tr><td class="paramdir">[in]</td><td class="paramname">uv_output_step_x</td><td>uv_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3710     <tr><td class="paramdir">[in]</td><td class="paramname">uv_output_stride_y</td><td>Stride of the destination image uv channel in Y dimension (in bytes) </td></tr>
3711     <tr><td class="paramdir">[in]</td><td class="paramname">uv_output_step_y</td><td>uv_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3712     <tr><td class="paramdir">[in]</td><td class="paramname">uv_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image uv channel </td></tr>
3713   </table>
3714   </dd>
3715 </dl>
3716
3717 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l00702">702</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
3718
3719 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00902">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00897">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
3720 <div class="fragment"><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;{</div><div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in     = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(input);</div><div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_y  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_output);</div><div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_uv = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(uv_output);</div><div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;</div><div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;    <span class="comment">// Read 2 pixel of the first line</span></div><div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;    uchar8 rgb_0 = vload8(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;    uchar2 r_0   = (uchar2)(rgb_0.s0, rgb_0.s4);</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;    uchar2 g_0   = (uchar2)(rgb_0.s1, rgb_0.s5);</div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;    uchar2 b_0   = (uchar2)(rgb_0.s2, rgb_0.s6);</div><div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;</div><div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;    float2 f_y = (float2)(0.0000f) + (float2)(0.2126f) * convert_float2(r_0) + (float2)(0.7152f) * convert_float2(g_0) + (float2)(0.0722f) * convert_float2(b_0);</div><div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;    float2 f_u = (float2)(0.0000f) - (float2)(0.1146f) * convert_float2(r_0) - (float2)(0.3854f) * convert_float2(g_0) + (float2)(0.5000f) * convert_float2(b_0);</div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;    float2 f_v = (float2)(0.0000f) + (float2)(0.5000f) * convert_float2(r_0) - (float2)(0.4542f) * convert_float2(g_0) - (float2)(0.0458f) * convert_float2(b_0);</div><div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;</div><div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;    short2 i_y = convert_short2_rtz(f_y);</div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;    short2 i_u = convert_short2_rtz(f_u) + (short2)(128);</div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;    short2 i_v = convert_short2_rtz(f_v) + (short2)(128);</div><div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;</div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;    uchar2 luma_0 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_y, (short2)(255))));</div><div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;    vstore2(luma_0, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;</div><div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;    uchar2 cb_0 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_u, (short2)(255))));</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;    uchar2 cr_0 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_v, (short2)(255))));</div><div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;</div><div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;    <span class="comment">// Read 2 pixel of the second line</span></div><div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;    uchar8 rgb_1 = vload8(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + input_stride_y);</div><div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;    uchar2 r_1   = (uchar2)(rgb_1.s0, rgb_1.s4);</div><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;    uchar2 g_1   = (uchar2)(rgb_1.s1, rgb_1.s5);</div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;    uchar2 b_1   = (uchar2)(rgb_1.s2, rgb_1.s6);</div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;</div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;    f_y = (float2)(0.0000f) + (float2)(0.2126f) * convert_float2(r_1) + (float2)(0.7152f) * convert_float2(g_1) + (float2)(0.0722f) * convert_float2(b_1);</div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;    f_u = (float2)(0.0000f) - (float2)(0.1146f) * convert_float2(r_1) - (float2)(0.3854f) * convert_float2(g_1) + (float2)(0.5000f) * convert_float2(b_1);</div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;    f_v = (float2)(0.0000f) + (float2)(0.5000f) * convert_float2(r_1) - (float2)(0.4542f) * convert_float2(g_1) - (float2)(0.0458f) * convert_float2(b_1);</div><div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;</div><div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;    i_y = convert_short2_rtz(f_y);</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;    i_u = convert_short2_rtz(f_u) + (short2)(128);</div><div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;    i_v = convert_short2_rtz(f_v) + (short2)(128);</div><div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;</div><div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;    uchar2 luma_1 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_y, (short2)(255))));</div><div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;    vstore2(luma_1, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_output_stride_y);</div><div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;</div><div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;    uchar2 cb_1 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_u, (short2)(255))));</div><div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;    uchar2 cr_1 = convert_uchar2(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short2)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_v, (short2)(255))));</div><div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;    uchar2 cbcr = (uchar2)(((cb_0.s0 + cb_0.s1 + cb_1.s0 + cb_1.s1) / 4),</div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;                           ((cr_0.s0 + cr_0.s1 + cr_1.s0 + cr_1.s1) / 4));</div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;    vstore2(cbcr, 0, out_uv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00897">FixedPoint.h:897</a></div></div>
3721 <div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
3722 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
3723 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
3724 <div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00902">FixedPoint.h:902</a></div></div>
3725 </div><!-- fragment -->
3726 </div>
3727 </div>
3728 <a class="anchor" id="ae424d47188a7fffd83a3a9d0c0e1ce6e"></a>
3729 <div class="memitem">
3730 <div class="memproto">
3731       <table class="memname">
3732         <tr>
3733           <td class="memname">__kernel void RGBA8888_to_RGB888_bt709 </td>
3734           <td>(</td>
3735           <td class="paramtype">__global uchar *&#160;</td>
3736           <td class="paramname"><em>input_ptr</em>, </td>
3737         </tr>
3738         <tr>
3739           <td class="paramkey"></td>
3740           <td></td>
3741           <td class="paramtype">uint&#160;</td>
3742           <td class="paramname"><em>input_stride_x</em>, </td>
3743         </tr>
3744         <tr>
3745           <td class="paramkey"></td>
3746           <td></td>
3747           <td class="paramtype">uint&#160;</td>
3748           <td class="paramname"><em>input_step_x</em>, </td>
3749         </tr>
3750         <tr>
3751           <td class="paramkey"></td>
3752           <td></td>
3753           <td class="paramtype">uint&#160;</td>
3754           <td class="paramname"><em>input_stride_y</em>, </td>
3755         </tr>
3756         <tr>
3757           <td class="paramkey"></td>
3758           <td></td>
3759           <td class="paramtype">uint&#160;</td>
3760           <td class="paramname"><em>input_step_y</em>, </td>
3761         </tr>
3762         <tr>
3763           <td class="paramkey"></td>
3764           <td></td>
3765           <td class="paramtype">uint&#160;</td>
3766           <td class="paramname"><em>input_offset_first_element_in_bytes</em>, </td>
3767         </tr>
3768         <tr>
3769           <td class="paramkey"></td>
3770           <td></td>
3771           <td class="paramtype">__global uchar *&#160;</td>
3772           <td class="paramname"><em>output_ptr</em>, </td>
3773         </tr>
3774         <tr>
3775           <td class="paramkey"></td>
3776           <td></td>
3777           <td class="paramtype">uint&#160;</td>
3778           <td class="paramname"><em>output_stride_x</em>, </td>
3779         </tr>
3780         <tr>
3781           <td class="paramkey"></td>
3782           <td></td>
3783           <td class="paramtype">uint&#160;</td>
3784           <td class="paramname"><em>output_step_x</em>, </td>
3785         </tr>
3786         <tr>
3787           <td class="paramkey"></td>
3788           <td></td>
3789           <td class="paramtype">uint&#160;</td>
3790           <td class="paramname"><em>output_stride_y</em>, </td>
3791         </tr>
3792         <tr>
3793           <td class="paramkey"></td>
3794           <td></td>
3795           <td class="paramtype">uint&#160;</td>
3796           <td class="paramname"><em>output_step_y</em>, </td>
3797         </tr>
3798         <tr>
3799           <td class="paramkey"></td>
3800           <td></td>
3801           <td class="paramtype">uint&#160;</td>
3802           <td class="paramname"><em>output_offset_first_element_in_bytes</em>&#160;</td>
3803         </tr>
3804         <tr>
3805           <td></td>
3806           <td>)</td>
3807           <td></td><td></td>
3808         </tr>
3809       </table>
3810 </div><div class="memdoc">
3811
3812 <p>Convert an RGB888 image to RGBX8888. </p>
3813 <p>Global Workgroup Size [ DIV_CEIL(width, 16), height ] No offset.</p>
3814 <dl class="params"><dt>Parameters</dt><dd>
3815   <table class="params">
3816     <tr><td class="paramdir">[in]</td><td class="paramname">input_ptr</td><td>Pointer to the source image. Supported Format: U8 </td></tr>
3817     <tr><td class="paramdir">[in]</td><td class="paramname">input_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
3818     <tr><td class="paramdir">[in]</td><td class="paramname">input_step_x</td><td>input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3819     <tr><td class="paramdir">[in]</td><td class="paramname">input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
3820     <tr><td class="paramdir">[in]</td><td class="paramname">input_step_y</td><td>input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3821     <tr><td class="paramdir">[in]</td><td class="paramname">input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
3822     <tr><td class="paramdir">[out]</td><td class="paramname">output_ptr</td><td>Pointer to the destination image. Supported Format: U8 </td></tr>
3823     <tr><td class="paramdir">[in]</td><td class="paramname">output_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
3824     <tr><td class="paramdir">[in]</td><td class="paramname">output_step_x</td><td>output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
3825     <tr><td class="paramdir">[in]</td><td class="paramname">output_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
3826     <tr><td class="paramdir">[in]</td><td class="paramname">output_step_y</td><td>output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
3827     <tr><td class="paramdir">[in]</td><td class="paramname">output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
3828   </table>
3829   </dd>
3830 </dl>
3831
3832 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l00085">85</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
3833
3834 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
3835 <div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(input);</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(output);</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="comment">// handle 16 pixels every time</span></div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    uchar16 rgba_0 = vload16(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    uchar16 rgba_1 = vload16(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 16);</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    uchar16 rgba_2 = vload16(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 32);</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    uchar16 rgba_3 = vload16(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 48);</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    uchar16 rgb_0 = (uchar16)(rgba_0.s01245689, rgba_0.sacde, rgba_1.s0124);</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    uchar16 rgb_1 = (uchar16)(rgba_1.s5689acde, rgba_2.s01245689);</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    uchar16 rgb_2 = (uchar16)(rgba_2.sacde, rgba_3.s01245689, rgba_3.sacde);</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    vstore16(rgb_0, 0, out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    vstore16(rgb_1, 0, out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 16);</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    vstore16(rgb_2, 0, out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 32);</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
3836 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
3837 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
3838 </div><!-- fragment -->
3839 </div>
3840 </div>
3841 <a class="anchor" id="aee9a7e06c86387d2a46aad341fa940d0"></a>
3842 <div class="memitem">
3843 <div class="memproto">
3844       <table class="memname">
3845         <tr>
3846           <td class="memname">__kernel void RGBA8888_to_YUV444_bt709 </td>
3847           <td>(</td>
3848           <td class="paramtype">__global uchar *&#160;</td>
3849           <td class="paramname"><em>rgba_input_ptr</em>, </td>
3850         </tr>
3851         <tr>
3852           <td class="paramkey"></td>
3853           <td></td>
3854           <td class="paramtype">uint&#160;</td>
3855           <td class="paramname"><em>rgba_input_stride_x</em>, </td>
3856         </tr>
3857         <tr>
3858           <td class="paramkey"></td>
3859           <td></td>
3860           <td class="paramtype">uint&#160;</td>
3861           <td class="paramname"><em>rgba_input_step_x</em>, </td>
3862         </tr>
3863         <tr>
3864           <td class="paramkey"></td>
3865           <td></td>
3866           <td class="paramtype">uint&#160;</td>
3867           <td class="paramname"><em>rgba_input_stride_y</em>, </td>
3868         </tr>
3869         <tr>
3870           <td class="paramkey"></td>
3871           <td></td>
3872           <td class="paramtype">uint&#160;</td>
3873           <td class="paramname"><em>rgba_input_step_y</em>, </td>
3874         </tr>
3875         <tr>
3876           <td class="paramkey"></td>
3877           <td></td>
3878           <td class="paramtype">uint&#160;</td>
3879           <td class="paramname"><em>rgba_input_offset_first_element_in_bytes</em>, </td>
3880         </tr>
3881         <tr>
3882           <td class="paramkey"></td>
3883           <td></td>
3884           <td class="paramtype">__global uchar *&#160;</td>
3885           <td class="paramname"><em>luma_output_ptr</em>, </td>
3886         </tr>
3887         <tr>
3888           <td class="paramkey"></td>
3889           <td></td>
3890           <td class="paramtype">uint&#160;</td>
3891           <td class="paramname"><em>luma_output_stride_x</em>, </td>
3892         </tr>
3893         <tr>
3894           <td class="paramkey"></td>
3895           <td></td>
3896           <td class="paramtype">uint&#160;</td>
3897           <td class="paramname"><em>luma_output_step_x</em>, </td>
3898         </tr>
3899         <tr>
3900           <td class="paramkey"></td>
3901           <td></td>
3902           <td class="paramtype">uint&#160;</td>
3903           <td class="paramname"><em>luma_output_stride_y</em>, </td>
3904         </tr>
3905         <tr>
3906           <td class="paramkey"></td>
3907           <td></td>
3908           <td class="paramtype">uint&#160;</td>
3909           <td class="paramname"><em>luma_output_step_y</em>, </td>
3910         </tr>
3911         <tr>
3912           <td class="paramkey"></td>
3913           <td></td>
3914           <td class="paramtype">uint&#160;</td>
3915           <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
3916         </tr>
3917         <tr>
3918           <td class="paramkey"></td>
3919           <td></td>
3920           <td class="paramtype">__global uchar *&#160;</td>
3921           <td class="paramname"><em>u_output_ptr</em>, </td>
3922         </tr>
3923         <tr>
3924           <td class="paramkey"></td>
3925           <td></td>
3926           <td class="paramtype">uint&#160;</td>
3927           <td class="paramname"><em>u_output_stride_x</em>, </td>
3928         </tr>
3929         <tr>
3930           <td class="paramkey"></td>
3931           <td></td>
3932           <td class="paramtype">uint&#160;</td>
3933           <td class="paramname"><em>u_output_step_x</em>, </td>
3934         </tr>
3935         <tr>
3936           <td class="paramkey"></td>
3937           <td></td>
3938           <td class="paramtype">uint&#160;</td>
3939           <td class="paramname"><em>u_output_stride_y</em>, </td>
3940         </tr>
3941         <tr>
3942           <td class="paramkey"></td>
3943           <td></td>
3944           <td class="paramtype">uint&#160;</td>
3945           <td class="paramname"><em>u_output_step_y</em>, </td>
3946         </tr>
3947         <tr>
3948           <td class="paramkey"></td>
3949           <td></td>
3950           <td class="paramtype">uint&#160;</td>
3951           <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
3952         </tr>
3953         <tr>
3954           <td class="paramkey"></td>
3955           <td></td>
3956           <td class="paramtype">__global uchar *&#160;</td>
3957           <td class="paramname"><em>v_output_ptr</em>, </td>
3958         </tr>
3959         <tr>
3960           <td class="paramkey"></td>
3961           <td></td>
3962           <td class="paramtype">uint&#160;</td>
3963           <td class="paramname"><em>v_output_stride_x</em>, </td>
3964         </tr>
3965         <tr>
3966           <td class="paramkey"></td>
3967           <td></td>
3968           <td class="paramtype">uint&#160;</td>
3969           <td class="paramname"><em>v_output_step_x</em>, </td>
3970         </tr>
3971         <tr>
3972           <td class="paramkey"></td>
3973           <td></td>
3974           <td class="paramtype">uint&#160;</td>
3975           <td class="paramname"><em>v_output_stride_y</em>, </td>
3976         </tr>
3977         <tr>
3978           <td class="paramkey"></td>
3979           <td></td>
3980           <td class="paramtype">uint&#160;</td>
3981           <td class="paramname"><em>v_output_step_y</em>, </td>
3982         </tr>
3983         <tr>
3984           <td class="paramkey"></td>
3985           <td></td>
3986           <td class="paramtype">uint&#160;</td>
3987           <td class="paramname"><em>v_output_offset_first_element_in_bytes</em>&#160;</td>
3988         </tr>
3989         <tr>
3990           <td></td>
3991           <td>)</td>
3992           <td></td><td></td>
3993         </tr>
3994       </table>
3995 </div><div class="memdoc">
3996
3997 <p>Convert a RGBA image to YUV444 using BT709 color space. </p>
3998 <p>Global Workgroup Size [ DIV_CEIL(width, 4), height ] No offset.</p>
3999 <dl class="params"><dt>Parameters</dt><dd>
4000   <table class="params">
4001     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_input_ptr</td><td>Pointer to the source image. Supported Format: U8 </td></tr>
4002     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_input_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
4003     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_input_step_x</td><td>input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4004     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
4005     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_input_step_y</td><td>rgb_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4006     <tr><td class="paramdir">[in]</td><td class="paramname">rgba_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
4007     <tr><td class="paramdir">[out]</td><td class="paramname">luma_output_ptr</td><td>Pointer to the destination luma channel. Supported Format: U8 </td></tr>
4008     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_x</td><td>Stride of the destination luma channel in X dimension (in bytes) </td></tr>
4009     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_x</td><td>luma_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4010     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
4011     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_y</td><td>luma_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4012     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination luma channel </td></tr>
4013     <tr><td class="paramdir">[out]</td><td class="paramname">u_output_ptr</td><td>Pointer to the destination U channel. Supported Format: U8 </td></tr>
4014     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_x</td><td>Stride of the destination U channel in X dimension (in bytes) </td></tr>
4015     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_x</td><td>u_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4016     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_y</td><td>Stride of the destination image U channel in Y dimension (in bytes) </td></tr>
4017     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_y</td><td>u_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4018     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination U channel </td></tr>
4019     <tr><td class="paramdir">[out]</td><td class="paramname">v_output_ptr</td><td>Pointer to the destination V channel. Supported Format: U8 </td></tr>
4020     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_x</td><td>Stride of the destination V channel in X dimension (in bytes) </td></tr>
4021     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_x</td><td>v_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4022     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_y</td><td>Stride of the destination image V channel in Y dimension (in bytes) </td></tr>
4023     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_y</td><td>v_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4024     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination V channel </td></tr>
4025   </table>
4026   </dd>
4027 </dl>
4028
4029 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l00642">642</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
4030
4031 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00902">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00897">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
4032 <div class="fragment"><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;{</div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;    <span class="comment">// handle 4 pixels every time</span></div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_rgba = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(rgba_input);</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_y   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_output);</div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_u   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(u_output);</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_v   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(v_output);</div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;</div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;    <span class="comment">// Read 4 pixel</span></div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;    uchar16 rgb_0 = vload16(0, in_rgba.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;    uchar4  r_0   = (uchar4)(rgb_0.s0, rgb_0.s4, rgb_0.s8, rgb_0.sc);</div><div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;    uchar4  g_0   = (uchar4)(rgb_0.s1, rgb_0.s5, rgb_0.s9, rgb_0.sd);</div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;    uchar4  b_0   = (uchar4)(rgb_0.s2, rgb_0.s6, rgb_0.sa, rgb_0.se);</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;    float4 f_y = (float4)(0.0000f) + (float4)(0.2126f) * convert_float4(r_0) + (float4)(0.7152f) * convert_float4(g_0) + (float4)(0.0722f) * convert_float4(b_0);</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;    float4 f_u = (float4)(0.0000f) - (float4)(0.1146f) * convert_float4(r_0) - (float4)(0.3854f) * convert_float4(g_0) + (float4)(0.5000f) * convert_float4(b_0);</div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;    float4 f_v = (float4)(0.0000f) + (float4)(0.5000f) * convert_float4(r_0) - (float4)(0.4542f) * convert_float4(g_0) - (float4)(0.0458f) * convert_float4(b_0);</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;    short4 i_y = convert_short4(f_y);</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;    short4 i_u = convert_short4(f_u) + (short4)(128);</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;    short4 i_v = convert_short4(f_v) + (short4)(128);</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;    uchar4 luma_0 = convert_uchar4_sat(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short4)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_y, (short4)(255))));</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;    vstore4(luma_0, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;</div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;    uchar4 cb_0 = convert_uchar4_sat(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short4)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_u, (short4)(255))));</div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;    uchar4 cr_0 = convert_uchar4_sat(<a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>((short4)(0), <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(i_v, (short4)(255))));</div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;    vstore4(cb_0, 0, out_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;    vstore4(cr_0, 0, out_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00897">FixedPoint.h:897</a></div></div>
4033 <div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
4034 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
4035 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
4036 <div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00902">FixedPoint.h:902</a></div></div>
4037 </div><!-- fragment -->
4038 </div>
4039 </div>
4040 <a class="anchor" id="a8946fa606d523038e103e6b4ceb42e56"></a>
4041 <div class="memitem">
4042 <div class="memproto">
4043       <table class="memname">
4044         <tr>
4045           <td class="memname">__kernel void UYVY422_to_IYUV_bt709 </td>
4046           <td>(</td>
4047           <td class="paramtype">__global uchar *&#160;</td>
4048           <td class="paramname"><em>uyvy_input_ptr</em>, </td>
4049         </tr>
4050         <tr>
4051           <td class="paramkey"></td>
4052           <td></td>
4053           <td class="paramtype">uint&#160;</td>
4054           <td class="paramname"><em>uyvy_input_stride_x</em>, </td>
4055         </tr>
4056         <tr>
4057           <td class="paramkey"></td>
4058           <td></td>
4059           <td class="paramtype">uint&#160;</td>
4060           <td class="paramname"><em>uyvy_input_step_x</em>, </td>
4061         </tr>
4062         <tr>
4063           <td class="paramkey"></td>
4064           <td></td>
4065           <td class="paramtype">uint&#160;</td>
4066           <td class="paramname"><em>uyvy_input_stride_y</em>, </td>
4067         </tr>
4068         <tr>
4069           <td class="paramkey"></td>
4070           <td></td>
4071           <td class="paramtype">uint&#160;</td>
4072           <td class="paramname"><em>uyvy_input_step_y</em>, </td>
4073         </tr>
4074         <tr>
4075           <td class="paramkey"></td>
4076           <td></td>
4077           <td class="paramtype">uint&#160;</td>
4078           <td class="paramname"><em>uyvy_input_offset_first_element_in_bytes</em>, </td>
4079         </tr>
4080         <tr>
4081           <td class="paramkey"></td>
4082           <td></td>
4083           <td class="paramtype">__global uchar *&#160;</td>
4084           <td class="paramname"><em>luma_output_ptr</em>, </td>
4085         </tr>
4086         <tr>
4087           <td class="paramkey"></td>
4088           <td></td>
4089           <td class="paramtype">uint&#160;</td>
4090           <td class="paramname"><em>luma_output_stride_x</em>, </td>
4091         </tr>
4092         <tr>
4093           <td class="paramkey"></td>
4094           <td></td>
4095           <td class="paramtype">uint&#160;</td>
4096           <td class="paramname"><em>luma_output_step_x</em>, </td>
4097         </tr>
4098         <tr>
4099           <td class="paramkey"></td>
4100           <td></td>
4101           <td class="paramtype">uint&#160;</td>
4102           <td class="paramname"><em>luma_output_stride_y</em>, </td>
4103         </tr>
4104         <tr>
4105           <td class="paramkey"></td>
4106           <td></td>
4107           <td class="paramtype">uint&#160;</td>
4108           <td class="paramname"><em>luma_output_step_y</em>, </td>
4109         </tr>
4110         <tr>
4111           <td class="paramkey"></td>
4112           <td></td>
4113           <td class="paramtype">uint&#160;</td>
4114           <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
4115         </tr>
4116         <tr>
4117           <td class="paramkey"></td>
4118           <td></td>
4119           <td class="paramtype">__global uchar *&#160;</td>
4120           <td class="paramname"><em>u_output_ptr</em>, </td>
4121         </tr>
4122         <tr>
4123           <td class="paramkey"></td>
4124           <td></td>
4125           <td class="paramtype">uint&#160;</td>
4126           <td class="paramname"><em>u_output_stride_x</em>, </td>
4127         </tr>
4128         <tr>
4129           <td class="paramkey"></td>
4130           <td></td>
4131           <td class="paramtype">uint&#160;</td>
4132           <td class="paramname"><em>u_output_step_x</em>, </td>
4133         </tr>
4134         <tr>
4135           <td class="paramkey"></td>
4136           <td></td>
4137           <td class="paramtype">uint&#160;</td>
4138           <td class="paramname"><em>u_output_stride_y</em>, </td>
4139         </tr>
4140         <tr>
4141           <td class="paramkey"></td>
4142           <td></td>
4143           <td class="paramtype">uint&#160;</td>
4144           <td class="paramname"><em>u_output_step_y</em>, </td>
4145         </tr>
4146         <tr>
4147           <td class="paramkey"></td>
4148           <td></td>
4149           <td class="paramtype">uint&#160;</td>
4150           <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
4151         </tr>
4152         <tr>
4153           <td class="paramkey"></td>
4154           <td></td>
4155           <td class="paramtype">__global uchar *&#160;</td>
4156           <td class="paramname"><em>v_output_ptr</em>, </td>
4157         </tr>
4158         <tr>
4159           <td class="paramkey"></td>
4160           <td></td>
4161           <td class="paramtype">uint&#160;</td>
4162           <td class="paramname"><em>v_output_stride_x</em>, </td>
4163         </tr>
4164         <tr>
4165           <td class="paramkey"></td>
4166           <td></td>
4167           <td class="paramtype">uint&#160;</td>
4168           <td class="paramname"><em>v_output_step_x</em>, </td>
4169         </tr>
4170         <tr>
4171           <td class="paramkey"></td>
4172           <td></td>
4173           <td class="paramtype">uint&#160;</td>
4174           <td class="paramname"><em>v_output_stride_y</em>, </td>
4175         </tr>
4176         <tr>
4177           <td class="paramkey"></td>
4178           <td></td>
4179           <td class="paramtype">uint&#160;</td>
4180           <td class="paramname"><em>v_output_step_y</em>, </td>
4181         </tr>
4182         <tr>
4183           <td class="paramkey"></td>
4184           <td></td>
4185           <td class="paramtype">uint&#160;</td>
4186           <td class="paramname"><em>v_output_offset_first_element_in_bytes</em>&#160;</td>
4187         </tr>
4188         <tr>
4189           <td></td>
4190           <td>)</td>
4191           <td></td><td></td>
4192         </tr>
4193       </table>
4194 </div><div class="memdoc">
4195
4196 <p>Convert a UYVY image to IYUV using BT709 color space. </p>
4197 <p>Global Workgroup Size [ DIV_CEIL(width, 8), height ] No offset.</p>
4198 <dl class="params"><dt>Parameters</dt><dd>
4199   <table class="params">
4200     <tr><td class="paramdir">[in]</td><td class="paramname">uyvy_input_ptr</td><td>Pointer to the source image. Supported Format: U8 </td></tr>
4201     <tr><td class="paramdir">[in]</td><td class="paramname">uyvy_input_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
4202     <tr><td class="paramdir">[in]</td><td class="paramname">uyvy_input_step_x</td><td>uyvy_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4203     <tr><td class="paramdir">[in]</td><td class="paramname">uyvy_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
4204     <tr><td class="paramdir">[in]</td><td class="paramname">uyvy_input_step_y</td><td>uyvy_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4205     <tr><td class="paramdir">[in]</td><td class="paramname">uyvy_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
4206     <tr><td class="paramdir">[out]</td><td class="paramname">luma_output_ptr</td><td>Pointer to the destination luma channel. Supported Format: U8 </td></tr>
4207     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_x</td><td>Stride of the destination luma channel in X dimension (in bytes) </td></tr>
4208     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_x</td><td>luma_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4209     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
4210     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_y</td><td>luma_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4211     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination luma channel </td></tr>
4212     <tr><td class="paramdir">[out]</td><td class="paramname">u_output_ptr</td><td>Pointer to the destination U channel. Supported Format: U8 </td></tr>
4213     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_x</td><td>Stride of the destination U channel in X dimension (in bytes) </td></tr>
4214     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_x</td><td>u_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4215     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_y</td><td>Stride of the destination image U channel in Y dimension (in bytes) </td></tr>
4216     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_y</td><td>u_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4217     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination U channel </td></tr>
4218     <tr><td class="paramdir">[out]</td><td class="paramname">v_output_ptr</td><td>Pointer to the destination V channel. Supported Format: U8 </td></tr>
4219     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_x</td><td>Stride of the destination V channel in X dimension (in bytes) </td></tr>
4220     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_x</td><td>v_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4221     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_y</td><td>Stride of the destination V channel in Y dimension (in bytes) </td></tr>
4222     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_y</td><td>v_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4223     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination V channel </td></tr>
4224   </table>
4225   </dd>
4226 </dl>
4227
4228 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l01341">1341</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
4229
4230 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
4231 <div class="fragment"><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;{</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_uyvy = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(uyvy_input);</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_y   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_output);</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_u   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(u_output);</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_v   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(v_output);</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;    <span class="comment">// handle 16 pixels every time, each line 8 pixels</span></div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;    uchar16 uyvy = vload16(0, in_uyvy.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;    uchar8  luma = (uchar8)(uyvy.s1, uyvy.s3, uyvy.s5, uyvy.s7, uyvy.s9, uyvy.sb, uyvy.sd, uyvy.sf);</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;    ushort4 cb_0 = (ushort4)(uyvy.s0, uyvy.s4, uyvy.s8, uyvy.sc);</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;    ushort4 cr_0 = (ushort4)(uyvy.s2, uyvy.s6, uyvy.sa, uyvy.se);</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;    vstore8(luma, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;    uyvy         = vload16(0, in_uyvy.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + uyvy_input_stride_y);</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;    luma         = (uchar8)(uyvy.s1, uyvy.s3, uyvy.s5, uyvy.s7, uyvy.s9, uyvy.sb, uyvy.sd, uyvy.sf);</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;    ushort4 cb_1 = (ushort4)(uyvy.s0, uyvy.s4, uyvy.s8, uyvy.sc);</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;    ushort4 cr_1 = (ushort4)(uyvy.s2, uyvy.s6, uyvy.sa, uyvy.se);</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;    vstore8(luma, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_output_stride_y);</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;    uchar4 cb = convert_uchar4((cb_0 + cb_1) / (ushort4)(2));</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;    uchar4 cr = convert_uchar4((cr_0 + cr_1) / (ushort4)(2));</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;    vstore4(cb, 0, out_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;    vstore4(cr, 0, out_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
4232 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
4233 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
4234 </div><!-- fragment -->
4235 </div>
4236 </div>
4237 <a class="anchor" id="a966fe2be85946bbbe2ecad5ad1100d1f"></a>
4238 <div class="memitem">
4239 <div class="memproto">
4240       <table class="memname">
4241         <tr>
4242           <td class="memname">__kernel void UYVY422_to_NV12_bt709 </td>
4243           <td>(</td>
4244           <td class="paramtype">__global uchar *&#160;</td>
4245           <td class="paramname"><em>input_uyvy_ptr</em>, </td>
4246         </tr>
4247         <tr>
4248           <td class="paramkey"></td>
4249           <td></td>
4250           <td class="paramtype">uint&#160;</td>
4251           <td class="paramname"><em>input_uyvy_stride_x</em>, </td>
4252         </tr>
4253         <tr>
4254           <td class="paramkey"></td>
4255           <td></td>
4256           <td class="paramtype">uint&#160;</td>
4257           <td class="paramname"><em>input_uyvy_step_x</em>, </td>
4258         </tr>
4259         <tr>
4260           <td class="paramkey"></td>
4261           <td></td>
4262           <td class="paramtype">uint&#160;</td>
4263           <td class="paramname"><em>input_uyvy_stride_y</em>, </td>
4264         </tr>
4265         <tr>
4266           <td class="paramkey"></td>
4267           <td></td>
4268           <td class="paramtype">uint&#160;</td>
4269           <td class="paramname"><em>input_uyvy_step_y</em>, </td>
4270         </tr>
4271         <tr>
4272           <td class="paramkey"></td>
4273           <td></td>
4274           <td class="paramtype">uint&#160;</td>
4275           <td class="paramname"><em>input_uyvy_offset_first_element_in_bytes</em>, </td>
4276         </tr>
4277         <tr>
4278           <td class="paramkey"></td>
4279           <td></td>
4280           <td class="paramtype">__global uchar *&#160;</td>
4281           <td class="paramname"><em>luma_ptr</em>, </td>
4282         </tr>
4283         <tr>
4284           <td class="paramkey"></td>
4285           <td></td>
4286           <td class="paramtype">uint&#160;</td>
4287           <td class="paramname"><em>luma_stride_x</em>, </td>
4288         </tr>
4289         <tr>
4290           <td class="paramkey"></td>
4291           <td></td>
4292           <td class="paramtype">uint&#160;</td>
4293           <td class="paramname"><em>luma_step_x</em>, </td>
4294         </tr>
4295         <tr>
4296           <td class="paramkey"></td>
4297           <td></td>
4298           <td class="paramtype">uint&#160;</td>
4299           <td class="paramname"><em>luma_stride_y</em>, </td>
4300         </tr>
4301         <tr>
4302           <td class="paramkey"></td>
4303           <td></td>
4304           <td class="paramtype">uint&#160;</td>
4305           <td class="paramname"><em>luma_step_y</em>, </td>
4306         </tr>
4307         <tr>
4308           <td class="paramkey"></td>
4309           <td></td>
4310           <td class="paramtype">uint&#160;</td>
4311           <td class="paramname"><em>luma_offset_first_element_in_bytes</em>, </td>
4312         </tr>
4313         <tr>
4314           <td class="paramkey"></td>
4315           <td></td>
4316           <td class="paramtype">__global uchar *&#160;</td>
4317           <td class="paramname"><em>uv_ptr</em>, </td>
4318         </tr>
4319         <tr>
4320           <td class="paramkey"></td>
4321           <td></td>
4322           <td class="paramtype">uint&#160;</td>
4323           <td class="paramname"><em>uv_stride_x</em>, </td>
4324         </tr>
4325         <tr>
4326           <td class="paramkey"></td>
4327           <td></td>
4328           <td class="paramtype">uint&#160;</td>
4329           <td class="paramname"><em>uv_step_x</em>, </td>
4330         </tr>
4331         <tr>
4332           <td class="paramkey"></td>
4333           <td></td>
4334           <td class="paramtype">uint&#160;</td>
4335           <td class="paramname"><em>uv_stride_y</em>, </td>
4336         </tr>
4337         <tr>
4338           <td class="paramkey"></td>
4339           <td></td>
4340           <td class="paramtype">uint&#160;</td>
4341           <td class="paramname"><em>uv_step_y</em>, </td>
4342         </tr>
4343         <tr>
4344           <td class="paramkey"></td>
4345           <td></td>
4346           <td class="paramtype">uint&#160;</td>
4347           <td class="paramname"><em>uv_offset_first_element_in_bytes</em>&#160;</td>
4348         </tr>
4349         <tr>
4350           <td></td>
4351           <td>)</td>
4352           <td></td><td></td>
4353         </tr>
4354       </table>
4355 </div><div class="memdoc">
4356
4357 <p>Convert a UYVY image to NV12 using BT709 color space. </p>
4358 <p>Global Workgroup Size [ DIV_CEIL(width, 4), height ] No offset.</p>
4359 <dl class="params"><dt>Parameters</dt><dd>
4360   <table class="params">
4361     <tr><td class="paramdir">[in]</td><td class="paramname">input_uyvy_ptr</td><td>Pointer to the source image. Supported Format: U8 </td></tr>
4362     <tr><td class="paramdir">[in]</td><td class="paramname">input_uyvy_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
4363     <tr><td class="paramdir">[in]</td><td class="paramname">input_uyvy_step_x</td><td>input_uyvy_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4364     <tr><td class="paramdir">[in]</td><td class="paramname">input_uyvy_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
4365     <tr><td class="paramdir">[in]</td><td class="paramname">input_uyvy_step_y</td><td>input_uyvy_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4366     <tr><td class="paramdir">[in]</td><td class="paramname">input_uyvy_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
4367     <tr><td class="paramdir">[out]</td><td class="paramname">luma_ptr</td><td>Pointer to the destination luma channel. Supported Format: U8 </td></tr>
4368     <tr><td class="paramdir">[in]</td><td class="paramname">luma_stride_x</td><td>Stride of the destination luma channel in X dimension (in bytes) </td></tr>
4369     <tr><td class="paramdir">[in]</td><td class="paramname">luma_step_x</td><td>luma_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4370     <tr><td class="paramdir">[in]</td><td class="paramname">luma_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
4371     <tr><td class="paramdir">[in]</td><td class="paramname">luma_step_y</td><td>luma_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4372     <tr><td class="paramdir">[in]</td><td class="paramname">luma_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image luma channel </td></tr>
4373     <tr><td class="paramdir">[out]</td><td class="paramname">uv_ptr</td><td>Pointer to the destination uv channel. Supported Format: U8 </td></tr>
4374     <tr><td class="paramdir">[in]</td><td class="paramname">uv_stride_x</td><td>Stride of the destination uv channel in X dimension (in bytes) </td></tr>
4375     <tr><td class="paramdir">[in]</td><td class="paramname">uv_step_x</td><td>uv_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4376     <tr><td class="paramdir">[in]</td><td class="paramname">uv_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
4377     <tr><td class="paramdir">[in]</td><td class="paramname">uv_step_y</td><td>uv_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4378     <tr><td class="paramdir">[in]</td><td class="paramname">uv_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image uv channel </td></tr>
4379   </table>
4380   </dd>
4381 </dl>
4382
4383 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l01803">1803</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
4384
4385 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
4386 <div class="fragment"><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;{</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in     = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(input_uyvy);</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_y  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma);</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_uv = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(uv);</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160;</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160;    <span class="comment">// handle 16 pixels every time, each line 8 pixels</span></div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160;    <span class="keyword">const</span> uchar16 uyvy_t = vload16(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;    vstore8(uyvy_t.s13579bdf, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160;</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160;    <span class="keyword">const</span> uchar16 uyvy_b = vload16(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + input_uyvy_stride_y);</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160;    vstore8(uyvy_b.s13579bdf, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_stride_y);</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160;</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160;    <span class="keyword">const</span> ushort8 cbcr_t = (ushort8)(uyvy_t.s0, uyvy_t.s2, uyvy_t.s4, uyvy_t.s6, uyvy_t.s8, uyvy_t.sa, uyvy_t.sc, uyvy_t.se);</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;    <span class="keyword">const</span> ushort8 cbcr_b = (ushort8)(uyvy_b.s0, uyvy_b.s2, uyvy_b.s4, uyvy_b.s6, uyvy_b.s8, uyvy_b.sa, uyvy_b.sc, uyvy_b.se);</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160;    <span class="keyword">const</span> uchar8  cbcr   = convert_uchar8((cbcr_t + cbcr_b) / (ushort8)(2));</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;    vstore8(cbcr, 0, out_uv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
4387 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
4388 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
4389 </div><!-- fragment -->
4390 </div>
4391 </div>
4392 <a class="anchor" id="a0b20f3b21bfb3e5ef177eb946e3c905f"></a>
4393 <div class="memitem">
4394 <div class="memproto">
4395       <table class="memname">
4396         <tr>
4397           <td class="memname">__kernel void UYVY422_to_RGB888_bt709 </td>
4398           <td>(</td>
4399           <td class="paramtype">__global uchar *&#160;</td>
4400           <td class="paramname"><em>input_ptr</em>, </td>
4401         </tr>
4402         <tr>
4403           <td class="paramkey"></td>
4404           <td></td>
4405           <td class="paramtype">uint&#160;</td>
4406           <td class="paramname"><em>input_stride_x</em>, </td>
4407         </tr>
4408         <tr>
4409           <td class="paramkey"></td>
4410           <td></td>
4411           <td class="paramtype">uint&#160;</td>
4412           <td class="paramname"><em>input_step_x</em>, </td>
4413         </tr>
4414         <tr>
4415           <td class="paramkey"></td>
4416           <td></td>
4417           <td class="paramtype">uint&#160;</td>
4418           <td class="paramname"><em>input_stride_y</em>, </td>
4419         </tr>
4420         <tr>
4421           <td class="paramkey"></td>
4422           <td></td>
4423           <td class="paramtype">uint&#160;</td>
4424           <td class="paramname"><em>input_step_y</em>, </td>
4425         </tr>
4426         <tr>
4427           <td class="paramkey"></td>
4428           <td></td>
4429           <td class="paramtype">uint&#160;</td>
4430           <td class="paramname"><em>input_offset_first_element_in_bytes</em>, </td>
4431         </tr>
4432         <tr>
4433           <td class="paramkey"></td>
4434           <td></td>
4435           <td class="paramtype">__global uchar *&#160;</td>
4436           <td class="paramname"><em>output_ptr</em>, </td>
4437         </tr>
4438         <tr>
4439           <td class="paramkey"></td>
4440           <td></td>
4441           <td class="paramtype">uint&#160;</td>
4442           <td class="paramname"><em>output_stride_x</em>, </td>
4443         </tr>
4444         <tr>
4445           <td class="paramkey"></td>
4446           <td></td>
4447           <td class="paramtype">uint&#160;</td>
4448           <td class="paramname"><em>output_step_x</em>, </td>
4449         </tr>
4450         <tr>
4451           <td class="paramkey"></td>
4452           <td></td>
4453           <td class="paramtype">uint&#160;</td>
4454           <td class="paramname"><em>output_stride_y</em>, </td>
4455         </tr>
4456         <tr>
4457           <td class="paramkey"></td>
4458           <td></td>
4459           <td class="paramtype">uint&#160;</td>
4460           <td class="paramname"><em>output_step_y</em>, </td>
4461         </tr>
4462         <tr>
4463           <td class="paramkey"></td>
4464           <td></td>
4465           <td class="paramtype">uint&#160;</td>
4466           <td class="paramname"><em>output_offset_first_element_in_bytes</em>&#160;</td>
4467         </tr>
4468         <tr>
4469           <td></td>
4470           <td>)</td>
4471           <td></td><td></td>
4472         </tr>
4473       </table>
4474 </div><div class="memdoc">
4475
4476 <p>Convert a UYVY422 image to RGB888 using BT709 color space. </p>
4477 <p>Global Workgroup Size [ DIV_CEIL(width, 8), height ] No offset.</p>
4478 <dl class="params"><dt>Parameters</dt><dd>
4479   <table class="params">
4480     <tr><td class="paramdir">[in]</td><td class="paramname">input_ptr</td><td>Pointer to the source image. Supported Format: U8 </td></tr>
4481     <tr><td class="paramdir">[in]</td><td class="paramname">input_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
4482     <tr><td class="paramdir">[in]</td><td class="paramname">input_step_x</td><td>input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4483     <tr><td class="paramdir">[in]</td><td class="paramname">input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
4484     <tr><td class="paramdir">[in]</td><td class="paramname">input_step_y</td><td>input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4485     <tr><td class="paramdir">[in]</td><td class="paramname">input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
4486     <tr><td class="paramdir">[out]</td><td class="paramname">output_ptr</td><td>Pointer to the destination image. Supported Format: U8 </td></tr>
4487     <tr><td class="paramdir">[in]</td><td class="paramname">output_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
4488     <tr><td class="paramdir">[in]</td><td class="paramname">output_step_x</td><td>output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4489     <tr><td class="paramdir">[in]</td><td class="paramname">output_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
4490     <tr><td class="paramdir">[in]</td><td class="paramname">output_step_y</td><td>output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4491     <tr><td class="paramdir">[in]</td><td class="paramname">output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
4492   </table>
4493   </dd>
4494 </dl>
4495
4496 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l00124">124</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
4497
4498 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
4499 <div class="fragment"><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;{</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(input);</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(output);</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <span class="comment">// handle 8 pixels every time</span></div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    uchar16 uyvy = vload16(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    uchar8 luma = (uchar8)(uyvy.s1, uyvy.s3, uyvy.s5, uyvy.s7, uyvy.s9, uyvy.sb, uyvy.sd, uyvy.sf);</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    char8  cb   = (char8)(uyvy.s0, uyvy.s0, uyvy.s4, uyvy.s4, uyvy.s8, uyvy.s8, uyvy.sc, uyvy.sc) - (char8)(128);</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    char8  cr   = (char8)(uyvy.s2, uyvy.s2, uyvy.s6, uyvy.s6, uyvy.sa, uyvy.sa, uyvy.se, uyvy.se) - (char8)(128);</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    float8 f_r = convert_float8(luma) + (float8)(0.0000f) * convert_float8(cb) + (float8)(1.5748f) * convert_float8(cr);</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    float8 f_g = convert_float8(luma) - (float8)(0.1873f) * convert_float8(cb) - (float8)(0.4681f) * convert_float8(cr);</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    float8 f_b = convert_float8(luma) + (float8)(1.8556f) * convert_float8(cb) + (float8)(0.0000f) * convert_float8(cr);</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    uchar8 r_0 = convert_uchar8_rtz(f_r);</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    uchar8 g_0 = convert_uchar8_rtz(f_g);</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    uchar8 b_0 = convert_uchar8_rtz(f_b);</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    uchar16 rgb_0 = (uchar16)(r_0.s0, g_0.s0, b_0.s0, r_0.s1, g_0.s1, b_0.s1, r_0.s2, g_0.s2, b_0.s2,</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;                              r_0.s3, g_0.s3, b_0.s3, r_0.s4, g_0.s4, b_0.s4, r_0.s5);</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    uchar8 rgb_1 = (uchar8)(g_0.s5, b_0.s5, r_0.s6, g_0.s6, b_0.s6, r_0.s7, g_0.s7, b_0.s7);</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    vstore16(rgb_0, 0, out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    vstore8(rgb_1, 0, out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 16);</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
4500 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
4501 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
4502 </div><!-- fragment -->
4503 </div>
4504 </div>
4505 <a class="anchor" id="a22e98db2ca5538961967bdbaa19754b3"></a>
4506 <div class="memitem">
4507 <div class="memproto">
4508       <table class="memname">
4509         <tr>
4510           <td class="memname">__kernel void UYVY422_to_RGBA8888_bt709 </td>
4511           <td>(</td>
4512           <td class="paramtype">__global uchar *&#160;</td>
4513           <td class="paramname"><em>input_ptr</em>, </td>
4514         </tr>
4515         <tr>
4516           <td class="paramkey"></td>
4517           <td></td>
4518           <td class="paramtype">uint&#160;</td>
4519           <td class="paramname"><em>input_stride_x</em>, </td>
4520         </tr>
4521         <tr>
4522           <td class="paramkey"></td>
4523           <td></td>
4524           <td class="paramtype">uint&#160;</td>
4525           <td class="paramname"><em>input_step_x</em>, </td>
4526         </tr>
4527         <tr>
4528           <td class="paramkey"></td>
4529           <td></td>
4530           <td class="paramtype">uint&#160;</td>
4531           <td class="paramname"><em>input_stride_y</em>, </td>
4532         </tr>
4533         <tr>
4534           <td class="paramkey"></td>
4535           <td></td>
4536           <td class="paramtype">uint&#160;</td>
4537           <td class="paramname"><em>input_step_y</em>, </td>
4538         </tr>
4539         <tr>
4540           <td class="paramkey"></td>
4541           <td></td>
4542           <td class="paramtype">uint&#160;</td>
4543           <td class="paramname"><em>input_offset_first_element_in_bytes</em>, </td>
4544         </tr>
4545         <tr>
4546           <td class="paramkey"></td>
4547           <td></td>
4548           <td class="paramtype">__global uchar *&#160;</td>
4549           <td class="paramname"><em>output_ptr</em>, </td>
4550         </tr>
4551         <tr>
4552           <td class="paramkey"></td>
4553           <td></td>
4554           <td class="paramtype">uint&#160;</td>
4555           <td class="paramname"><em>output_stride_x</em>, </td>
4556         </tr>
4557         <tr>
4558           <td class="paramkey"></td>
4559           <td></td>
4560           <td class="paramtype">uint&#160;</td>
4561           <td class="paramname"><em>output_step_x</em>, </td>
4562         </tr>
4563         <tr>
4564           <td class="paramkey"></td>
4565           <td></td>
4566           <td class="paramtype">uint&#160;</td>
4567           <td class="paramname"><em>output_stride_y</em>, </td>
4568         </tr>
4569         <tr>
4570           <td class="paramkey"></td>
4571           <td></td>
4572           <td class="paramtype">uint&#160;</td>
4573           <td class="paramname"><em>output_step_y</em>, </td>
4574         </tr>
4575         <tr>
4576           <td class="paramkey"></td>
4577           <td></td>
4578           <td class="paramtype">uint&#160;</td>
4579           <td class="paramname"><em>output_offset_first_element_in_bytes</em>&#160;</td>
4580         </tr>
4581         <tr>
4582           <td></td>
4583           <td>)</td>
4584           <td></td><td></td>
4585         </tr>
4586       </table>
4587 </div><div class="memdoc">
4588
4589 <p>Convert a UYVY422 image to RGBX8888 using BT709 color space. </p>
4590 <p>Global Workgroup Size [ DIV_CEIL(width, 8), height ] No offset.</p>
4591 <dl class="params"><dt>Parameters</dt><dd>
4592   <table class="params">
4593     <tr><td class="paramdir">[in]</td><td class="paramname">input_ptr</td><td>Pointer to the source image. Supported Format: U8 </td></tr>
4594     <tr><td class="paramdir">[in]</td><td class="paramname">input_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
4595     <tr><td class="paramdir">[in]</td><td class="paramname">input_step_x</td><td>input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4596     <tr><td class="paramdir">[in]</td><td class="paramname">input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
4597     <tr><td class="paramdir">[in]</td><td class="paramname">input_step_y</td><td>input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4598     <tr><td class="paramdir">[in]</td><td class="paramname">input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
4599     <tr><td class="paramdir">[out]</td><td class="paramname">output_ptr</td><td>Pointer to the destination image. Supported Format: U8 </td></tr>
4600     <tr><td class="paramdir">[in]</td><td class="paramname">output_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
4601     <tr><td class="paramdir">[in]</td><td class="paramname">output_step_x</td><td>output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4602     <tr><td class="paramdir">[in]</td><td class="paramname">output_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
4603     <tr><td class="paramdir">[in]</td><td class="paramname">output_step_y</td><td>output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4604     <tr><td class="paramdir">[in]</td><td class="paramname">output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
4605   </table>
4606   </dd>
4607 </dl>
4608
4609 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l00172">172</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
4610
4611 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
4612 <div class="fragment"><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;{</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(input);</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(output);</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    <span class="comment">// handle 8 pixels every time</span></div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    uchar16 uyvy = vload16(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    uchar8 luma = (uchar8)(uyvy.s1, uyvy.s3, uyvy.s5, uyvy.s7, uyvy.s9, uyvy.sb, uyvy.sd, uyvy.sf);</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    char8  cb   = (char8)(uyvy.s0, uyvy.s0, uyvy.s4, uyvy.s4, uyvy.s8, uyvy.s8, uyvy.sc, uyvy.sc) - (char8)(128);</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    char8  cr   = (char8)(uyvy.s2, uyvy.s2, uyvy.s6, uyvy.s6, uyvy.sa, uyvy.sa, uyvy.se, uyvy.se) - (char8)(128);</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    float8 f_r = convert_float8(luma) + (float8)(0.0000f) * convert_float8(cb) + (float8)(1.5748f) * convert_float8(cr);</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    float8 f_g = convert_float8(luma) - (float8)(0.1873f) * convert_float8(cb) - (float8)(0.4681f) * convert_float8(cr);</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    float8 f_b = convert_float8(luma) + (float8)(1.8556f) * convert_float8(cb) + (float8)(0.0000f) * convert_float8(cr);</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    uchar8 r_0 = convert_uchar8_rtz(f_r);</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    uchar8 g_0 = convert_uchar8_rtz(f_g);</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    uchar8 b_0 = convert_uchar8_rtz(f_b);</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    uchar16 rgba_0 = (uchar16)(r_0.s0, g_0.s0, b_0.s0, 255, r_0.s1, g_0.s1, b_0.s1, 255,</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;                               r_0.s2, g_0.s2, b_0.s2, 255, r_0.s3, g_0.s3, b_0.s3, 255);</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    uchar16 rgba_1 = (uchar16)(r_0.s4, g_0.s4, b_0.s4, 255, r_0.s5, g_0.s5, b_0.s5, 255,</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;                               r_0.s6, g_0.s6, b_0.s6, 255, r_0.s7, g_0.s7, b_0.s7, 255);</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    vstore16(rgba_0, 0, out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    vstore16(rgba_1, 0, out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 16);</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
4613 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
4614 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
4615 </div><!-- fragment -->
4616 </div>
4617 </div>
4618 <a class="anchor" id="a3f241a3b4a3fbd337c6fe03cd4e61877"></a>
4619 <div class="memitem">
4620 <div class="memproto">
4621       <table class="memname">
4622         <tr>
4623           <td class="memname">__kernel void YUYV422_to_IYUV_bt709 </td>
4624           <td>(</td>
4625           <td class="paramtype">__global uchar *&#160;</td>
4626           <td class="paramname"><em>yuyv_input_ptr</em>, </td>
4627         </tr>
4628         <tr>
4629           <td class="paramkey"></td>
4630           <td></td>
4631           <td class="paramtype">uint&#160;</td>
4632           <td class="paramname"><em>yuyv_input_stride_x</em>, </td>
4633         </tr>
4634         <tr>
4635           <td class="paramkey"></td>
4636           <td></td>
4637           <td class="paramtype">uint&#160;</td>
4638           <td class="paramname"><em>yuyv_input_step_x</em>, </td>
4639         </tr>
4640         <tr>
4641           <td class="paramkey"></td>
4642           <td></td>
4643           <td class="paramtype">uint&#160;</td>
4644           <td class="paramname"><em>yuyv_input_stride_y</em>, </td>
4645         </tr>
4646         <tr>
4647           <td class="paramkey"></td>
4648           <td></td>
4649           <td class="paramtype">uint&#160;</td>
4650           <td class="paramname"><em>yuyv_input_step_y</em>, </td>
4651         </tr>
4652         <tr>
4653           <td class="paramkey"></td>
4654           <td></td>
4655           <td class="paramtype">uint&#160;</td>
4656           <td class="paramname"><em>yuyv_input_offset_first_element_in_bytes</em>, </td>
4657         </tr>
4658         <tr>
4659           <td class="paramkey"></td>
4660           <td></td>
4661           <td class="paramtype">__global uchar *&#160;</td>
4662           <td class="paramname"><em>luma_output_ptr</em>, </td>
4663         </tr>
4664         <tr>
4665           <td class="paramkey"></td>
4666           <td></td>
4667           <td class="paramtype">uint&#160;</td>
4668           <td class="paramname"><em>luma_output_stride_x</em>, </td>
4669         </tr>
4670         <tr>
4671           <td class="paramkey"></td>
4672           <td></td>
4673           <td class="paramtype">uint&#160;</td>
4674           <td class="paramname"><em>luma_output_step_x</em>, </td>
4675         </tr>
4676         <tr>
4677           <td class="paramkey"></td>
4678           <td></td>
4679           <td class="paramtype">uint&#160;</td>
4680           <td class="paramname"><em>luma_output_stride_y</em>, </td>
4681         </tr>
4682         <tr>
4683           <td class="paramkey"></td>
4684           <td></td>
4685           <td class="paramtype">uint&#160;</td>
4686           <td class="paramname"><em>luma_output_step_y</em>, </td>
4687         </tr>
4688         <tr>
4689           <td class="paramkey"></td>
4690           <td></td>
4691           <td class="paramtype">uint&#160;</td>
4692           <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
4693         </tr>
4694         <tr>
4695           <td class="paramkey"></td>
4696           <td></td>
4697           <td class="paramtype">__global uchar *&#160;</td>
4698           <td class="paramname"><em>u_output_ptr</em>, </td>
4699         </tr>
4700         <tr>
4701           <td class="paramkey"></td>
4702           <td></td>
4703           <td class="paramtype">uint&#160;</td>
4704           <td class="paramname"><em>u_output_stride_x</em>, </td>
4705         </tr>
4706         <tr>
4707           <td class="paramkey"></td>
4708           <td></td>
4709           <td class="paramtype">uint&#160;</td>
4710           <td class="paramname"><em>u_output_step_x</em>, </td>
4711         </tr>
4712         <tr>
4713           <td class="paramkey"></td>
4714           <td></td>
4715           <td class="paramtype">uint&#160;</td>
4716           <td class="paramname"><em>u_output_stride_y</em>, </td>
4717         </tr>
4718         <tr>
4719           <td class="paramkey"></td>
4720           <td></td>
4721           <td class="paramtype">uint&#160;</td>
4722           <td class="paramname"><em>u_output_step_y</em>, </td>
4723         </tr>
4724         <tr>
4725           <td class="paramkey"></td>
4726           <td></td>
4727           <td class="paramtype">uint&#160;</td>
4728           <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
4729         </tr>
4730         <tr>
4731           <td class="paramkey"></td>
4732           <td></td>
4733           <td class="paramtype">__global uchar *&#160;</td>
4734           <td class="paramname"><em>v_output_ptr</em>, </td>
4735         </tr>
4736         <tr>
4737           <td class="paramkey"></td>
4738           <td></td>
4739           <td class="paramtype">uint&#160;</td>
4740           <td class="paramname"><em>v_output_stride_x</em>, </td>
4741         </tr>
4742         <tr>
4743           <td class="paramkey"></td>
4744           <td></td>
4745           <td class="paramtype">uint&#160;</td>
4746           <td class="paramname"><em>v_output_step_x</em>, </td>
4747         </tr>
4748         <tr>
4749           <td class="paramkey"></td>
4750           <td></td>
4751           <td class="paramtype">uint&#160;</td>
4752           <td class="paramname"><em>v_output_stride_y</em>, </td>
4753         </tr>
4754         <tr>
4755           <td class="paramkey"></td>
4756           <td></td>
4757           <td class="paramtype">uint&#160;</td>
4758           <td class="paramname"><em>v_output_step_y</em>, </td>
4759         </tr>
4760         <tr>
4761           <td class="paramkey"></td>
4762           <td></td>
4763           <td class="paramtype">uint&#160;</td>
4764           <td class="paramname"><em>v_output_offset_first_element_in_bytes</em>&#160;</td>
4765         </tr>
4766         <tr>
4767           <td></td>
4768           <td>)</td>
4769           <td></td><td></td>
4770         </tr>
4771       </table>
4772 </div><div class="memdoc">
4773
4774 <p>Convert a YUYV image to IYUV using BT709 color space. </p>
4775 <p>Global Workgroup Size [ DIV_CEIL(width, 8), height ] No offset.</p>
4776 <dl class="params"><dt>Parameters</dt><dd>
4777   <table class="params">
4778     <tr><td class="paramdir">[in]</td><td class="paramname">yuyv_input_ptr</td><td>Pointer to the source image. Supported Format: U8 </td></tr>
4779     <tr><td class="paramdir">[in]</td><td class="paramname">yuyv_input_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
4780     <tr><td class="paramdir">[in]</td><td class="paramname">yuyv_input_step_x</td><td>yuyv_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4781     <tr><td class="paramdir">[in]</td><td class="paramname">yuyv_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
4782     <tr><td class="paramdir">[in]</td><td class="paramname">yuyv_input_step_y</td><td>yuyv_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4783     <tr><td class="paramdir">[in]</td><td class="paramname">yuyv_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
4784     <tr><td class="paramdir">[out]</td><td class="paramname">luma_output_ptr</td><td>Pointer to the destination luma channel. Supported Format: U8 </td></tr>
4785     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_x</td><td>Stride of the destination luma channel in X dimension (in bytes) </td></tr>
4786     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_x</td><td>luma_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4787     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
4788     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_y</td><td>luma_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4789     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination luma channel </td></tr>
4790     <tr><td class="paramdir">[out]</td><td class="paramname">u_output_ptr</td><td>Pointer to the destination U channel. Supported Format: U8 </td></tr>
4791     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_x</td><td>Stride of the destination U channel in X dimension (in bytes) </td></tr>
4792     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_x</td><td>u_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4793     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_stride_y</td><td>Stride of the destination image U channel in Y dimension (in bytes) </td></tr>
4794     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_step_y</td><td>u_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4795     <tr><td class="paramdir">[in]</td><td class="paramname">u_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination U channel </td></tr>
4796     <tr><td class="paramdir">[out]</td><td class="paramname">v_output_ptr</td><td>Pointer to the destination V channel. Supported Format: U8 </td></tr>
4797     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_x</td><td>Stride of the destination V channel in X dimension (in bytes) </td></tr>
4798     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_x</td><td>v_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4799     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_stride_y</td><td>Stride of the destination V channel in Y dimension (in bytes) </td></tr>
4800     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_step_y</td><td>v_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4801     <tr><td class="paramdir">[in]</td><td class="paramname">v_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination V channel </td></tr>
4802   </table>
4803   </dd>
4804 </dl>
4805
4806 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l01402">1402</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
4807
4808 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
4809 <div class="fragment"><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;{</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_yuyv = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(yuyv_input);</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_y   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_output);</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_u   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(u_output);</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_v   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(v_output);</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;    <span class="comment">// handle 16 pixels every time, each line 8 pixels</span></div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;    uchar16 yuyv = vload16(0, in_yuyv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;    uchar8  luma = (uchar8)(yuyv.s0, yuyv.s2, yuyv.s4, yuyv.s6, yuyv.s8, yuyv.sa, yuyv.sc, yuyv.se);</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;    ushort4 cb_0 = (ushort4)(yuyv.s1, yuyv.s5, yuyv.s9, yuyv.sd);</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;    ushort4 cr_0 = (ushort4)(yuyv.s3, yuyv.s7, yuyv.sb, yuyv.sf);</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;    vstore8(luma, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;    yuyv         = vload16(0, in_yuyv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + yuyv_input_stride_y);</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;    luma         = (uchar8)(yuyv.s0, yuyv.s2, yuyv.s4, yuyv.s6, yuyv.s8, yuyv.sa, yuyv.sc, yuyv.se);</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;    ushort4 cb_1 = (ushort4)(yuyv.s1, yuyv.s5, yuyv.s9, yuyv.sd);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;    ushort4 cr_1 = (ushort4)(yuyv.s3, yuyv.s7, yuyv.sb, yuyv.sf);</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;    vstore8(luma, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_output_stride_y);</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;    uchar4 cb = convert_uchar4((cb_0 + cb_1) / (ushort4)(2));</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;    uchar4 cr = convert_uchar4((cr_0 + cr_1) / (ushort4)(2));</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;    vstore4(cb, 0, out_u.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;    vstore4(cr, 0, out_v.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
4810 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
4811 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
4812 </div><!-- fragment -->
4813 </div>
4814 </div>
4815 <a class="anchor" id="aa4d458afddfb19f170cb27a9cc934069"></a>
4816 <div class="memitem">
4817 <div class="memproto">
4818       <table class="memname">
4819         <tr>
4820           <td class="memname">__kernel void YUYV422_to_NV12_bt709 </td>
4821           <td>(</td>
4822           <td class="paramtype">__global uchar *&#160;</td>
4823           <td class="paramname"><em>yuyv_input_ptr</em>, </td>
4824         </tr>
4825         <tr>
4826           <td class="paramkey"></td>
4827           <td></td>
4828           <td class="paramtype">uint&#160;</td>
4829           <td class="paramname"><em>yuyv_input_stride_x</em>, </td>
4830         </tr>
4831         <tr>
4832           <td class="paramkey"></td>
4833           <td></td>
4834           <td class="paramtype">uint&#160;</td>
4835           <td class="paramname"><em>yuyv_input_step_x</em>, </td>
4836         </tr>
4837         <tr>
4838           <td class="paramkey"></td>
4839           <td></td>
4840           <td class="paramtype">uint&#160;</td>
4841           <td class="paramname"><em>yuyv_input_stride_y</em>, </td>
4842         </tr>
4843         <tr>
4844           <td class="paramkey"></td>
4845           <td></td>
4846           <td class="paramtype">uint&#160;</td>
4847           <td class="paramname"><em>yuyv_input_step_y</em>, </td>
4848         </tr>
4849         <tr>
4850           <td class="paramkey"></td>
4851           <td></td>
4852           <td class="paramtype">uint&#160;</td>
4853           <td class="paramname"><em>yuyv_input_offset_first_element_in_bytes</em>, </td>
4854         </tr>
4855         <tr>
4856           <td class="paramkey"></td>
4857           <td></td>
4858           <td class="paramtype">__global uchar *&#160;</td>
4859           <td class="paramname"><em>luma_output_ptr</em>, </td>
4860         </tr>
4861         <tr>
4862           <td class="paramkey"></td>
4863           <td></td>
4864           <td class="paramtype">uint&#160;</td>
4865           <td class="paramname"><em>luma_output_stride_x</em>, </td>
4866         </tr>
4867         <tr>
4868           <td class="paramkey"></td>
4869           <td></td>
4870           <td class="paramtype">uint&#160;</td>
4871           <td class="paramname"><em>luma_output_step_x</em>, </td>
4872         </tr>
4873         <tr>
4874           <td class="paramkey"></td>
4875           <td></td>
4876           <td class="paramtype">uint&#160;</td>
4877           <td class="paramname"><em>luma_output_stride_y</em>, </td>
4878         </tr>
4879         <tr>
4880           <td class="paramkey"></td>
4881           <td></td>
4882           <td class="paramtype">uint&#160;</td>
4883           <td class="paramname"><em>luma_output_step_y</em>, </td>
4884         </tr>
4885         <tr>
4886           <td class="paramkey"></td>
4887           <td></td>
4888           <td class="paramtype">uint&#160;</td>
4889           <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
4890         </tr>
4891         <tr>
4892           <td class="paramkey"></td>
4893           <td></td>
4894           <td class="paramtype">__global uchar *&#160;</td>
4895           <td class="paramname"><em>uv_output_ptr</em>, </td>
4896         </tr>
4897         <tr>
4898           <td class="paramkey"></td>
4899           <td></td>
4900           <td class="paramtype">uint&#160;</td>
4901           <td class="paramname"><em>uv_output_stride_x</em>, </td>
4902         </tr>
4903         <tr>
4904           <td class="paramkey"></td>
4905           <td></td>
4906           <td class="paramtype">uint&#160;</td>
4907           <td class="paramname"><em>uv_output_step_x</em>, </td>
4908         </tr>
4909         <tr>
4910           <td class="paramkey"></td>
4911           <td></td>
4912           <td class="paramtype">uint&#160;</td>
4913           <td class="paramname"><em>uv_output_stride_y</em>, </td>
4914         </tr>
4915         <tr>
4916           <td class="paramkey"></td>
4917           <td></td>
4918           <td class="paramtype">uint&#160;</td>
4919           <td class="paramname"><em>uv_output_step_y</em>, </td>
4920         </tr>
4921         <tr>
4922           <td class="paramkey"></td>
4923           <td></td>
4924           <td class="paramtype">uint&#160;</td>
4925           <td class="paramname"><em>uv_output_offset_first_element_in_bytes</em>&#160;</td>
4926         </tr>
4927         <tr>
4928           <td></td>
4929           <td>)</td>
4930           <td></td><td></td>
4931         </tr>
4932       </table>
4933 </div><div class="memdoc">
4934
4935 <p>Convert a YUYV image to NV12 using BT709 color space. </p>
4936 <p>Global Workgroup Size [ DIV_CEIL(width, 8), height ] No offset.</p>
4937 <dl class="params"><dt>Parameters</dt><dd>
4938   <table class="params">
4939     <tr><td class="paramdir">[in]</td><td class="paramname">yuyv_input_ptr</td><td>Pointer to the source image. Supported Format: U8 </td></tr>
4940     <tr><td class="paramdir">[in]</td><td class="paramname">yuyv_input_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
4941     <tr><td class="paramdir">[in]</td><td class="paramname">yuyv_input_step_x</td><td>yuyv_input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4942     <tr><td class="paramdir">[in]</td><td class="paramname">yuyv_input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
4943     <tr><td class="paramdir">[in]</td><td class="paramname">yuyv_input_step_y</td><td>yuyv_input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4944     <tr><td class="paramdir">[in]</td><td class="paramname">yuyv_input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
4945     <tr><td class="paramdir">[out]</td><td class="paramname">luma_output_ptr</td><td>Pointer to the destination luma channel. Supported Format: U8 </td></tr>
4946     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_x</td><td>Stride of the destination luma channel in X dimension (in bytes) </td></tr>
4947     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_x</td><td>luma_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4948     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_stride_y</td><td>Stride of the destination image luma channel in Y dimension (in bytes) </td></tr>
4949     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_step_y</td><td>luma_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4950     <tr><td class="paramdir">[in]</td><td class="paramname">luma_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination luma channel </td></tr>
4951     <tr><td class="paramdir">[out]</td><td class="paramname">uv_output_ptr</td><td>Pointer to the destination UV channel. Supported Format: U8 </td></tr>
4952     <tr><td class="paramdir">[in]</td><td class="paramname">uv_output_stride_x</td><td>Stride of the destination UV channel in X dimension (in bytes) </td></tr>
4953     <tr><td class="paramdir">[in]</td><td class="paramname">uv_output_step_x</td><td>uv_output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
4954     <tr><td class="paramdir">[in]</td><td class="paramname">uv_output_stride_y</td><td>Stride of the destination image UV channel in Y dimension (in bytes) </td></tr>
4955     <tr><td class="paramdir">[in]</td><td class="paramname">uv_output_step_y</td><td>uv_output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
4956     <tr><td class="paramdir">[in]</td><td class="paramname">uv_output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination UV channel </td></tr>
4957   </table>
4958   </dd>
4959 </dl>
4960
4961 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l01754">1754</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
4962
4963 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
4964 <div class="fragment"><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;{</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in_yuyv = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(yuyv_input);</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_y   = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(luma_output);</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out_uv  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(uv_output);</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;    <span class="comment">// handle 16 pixels every time, each line 8 pixels</span></div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;    uchar16 yuyv   = vload16(0, in_yuyv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;    ushort8 cbcr_0 = (ushort8)(yuyv.s1, yuyv.s3, yuyv.s5, yuyv.s7, yuyv.s9, yuyv.sb, yuyv.sd, yuyv.sf);</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;    uchar8  luma   = (uchar8)(yuyv.s0, yuyv.s2, yuyv.s4, yuyv.s6, yuyv.s8, yuyv.sa, yuyv.sc, yuyv.se);</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;    vstore8(luma, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;    yuyv           = vload16(0, in_yuyv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + yuyv_input_stride_y);</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160;    ushort8 cbcr_1 = (ushort8)(yuyv.s1, yuyv.s3, yuyv.s5, yuyv.s7, yuyv.s9, yuyv.sb, yuyv.sd, yuyv.sf);</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;    luma           = (uchar8)(yuyv.s0, yuyv.s2, yuyv.s4, yuyv.s6, yuyv.s8, yuyv.sa, yuyv.sc, yuyv.se);</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;    vstore8(luma, 0, out_y.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + luma_output_stride_y);</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160;</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;    uchar8 cbcr = convert_uchar8((cbcr_0 + cbcr_1) / (ushort8)(2));</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;    vstore8(cbcr, 0, out_uv.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
4965 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
4966 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
4967 </div><!-- fragment -->
4968 </div>
4969 </div>
4970 <a class="anchor" id="a694c56c3d1dd37a2773e650ab8e410b2"></a>
4971 <div class="memitem">
4972 <div class="memproto">
4973       <table class="memname">
4974         <tr>
4975           <td class="memname">__kernel void YUYV422_to_RGB888_bt709 </td>
4976           <td>(</td>
4977           <td class="paramtype">__global uchar *&#160;</td>
4978           <td class="paramname"><em>input_ptr</em>, </td>
4979         </tr>
4980         <tr>
4981           <td class="paramkey"></td>
4982           <td></td>
4983           <td class="paramtype">uint&#160;</td>
4984           <td class="paramname"><em>input_stride_x</em>, </td>
4985         </tr>
4986         <tr>
4987           <td class="paramkey"></td>
4988           <td></td>
4989           <td class="paramtype">uint&#160;</td>
4990           <td class="paramname"><em>input_step_x</em>, </td>
4991         </tr>
4992         <tr>
4993           <td class="paramkey"></td>
4994           <td></td>
4995           <td class="paramtype">uint&#160;</td>
4996           <td class="paramname"><em>input_stride_y</em>, </td>
4997         </tr>
4998         <tr>
4999           <td class="paramkey"></td>
5000           <td></td>
5001           <td class="paramtype">uint&#160;</td>
5002           <td class="paramname"><em>input_step_y</em>, </td>
5003         </tr>
5004         <tr>
5005           <td class="paramkey"></td>
5006           <td></td>
5007           <td class="paramtype">uint&#160;</td>
5008           <td class="paramname"><em>input_offset_first_element_in_bytes</em>, </td>
5009         </tr>
5010         <tr>
5011           <td class="paramkey"></td>
5012           <td></td>
5013           <td class="paramtype">__global uchar *&#160;</td>
5014           <td class="paramname"><em>output_ptr</em>, </td>
5015         </tr>
5016         <tr>
5017           <td class="paramkey"></td>
5018           <td></td>
5019           <td class="paramtype">uint&#160;</td>
5020           <td class="paramname"><em>output_stride_x</em>, </td>
5021         </tr>
5022         <tr>
5023           <td class="paramkey"></td>
5024           <td></td>
5025           <td class="paramtype">uint&#160;</td>
5026           <td class="paramname"><em>output_step_x</em>, </td>
5027         </tr>
5028         <tr>
5029           <td class="paramkey"></td>
5030           <td></td>
5031           <td class="paramtype">uint&#160;</td>
5032           <td class="paramname"><em>output_stride_y</em>, </td>
5033         </tr>
5034         <tr>
5035           <td class="paramkey"></td>
5036           <td></td>
5037           <td class="paramtype">uint&#160;</td>
5038           <td class="paramname"><em>output_step_y</em>, </td>
5039         </tr>
5040         <tr>
5041           <td class="paramkey"></td>
5042           <td></td>
5043           <td class="paramtype">uint&#160;</td>
5044           <td class="paramname"><em>output_offset_first_element_in_bytes</em>&#160;</td>
5045         </tr>
5046         <tr>
5047           <td></td>
5048           <td>)</td>
5049           <td></td><td></td>
5050         </tr>
5051       </table>
5052 </div><div class="memdoc">
5053
5054 <p>Convert a YUYV422 image to RGB888 using BT709 color space. </p>
5055 <p>Global Workgroup Size [ DIV_CEIL(width, 8), height ] No offset.</p>
5056 <dl class="params"><dt>Parameters</dt><dd>
5057   <table class="params">
5058     <tr><td class="paramdir">[in]</td><td class="paramname">input_ptr</td><td>Pointer to the source image. Supported Format: U8 </td></tr>
5059     <tr><td class="paramdir">[in]</td><td class="paramname">input_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
5060     <tr><td class="paramdir">[in]</td><td class="paramname">input_step_x</td><td>input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
5061     <tr><td class="paramdir">[in]</td><td class="paramname">input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
5062     <tr><td class="paramdir">[in]</td><td class="paramname">input_step_y</td><td>input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
5063     <tr><td class="paramdir">[in]</td><td class="paramname">input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
5064     <tr><td class="paramdir">[out]</td><td class="paramname">output_ptr</td><td>Pointer to the destination image. Supported Format: U8 </td></tr>
5065     <tr><td class="paramdir">[in]</td><td class="paramname">output_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
5066     <tr><td class="paramdir">[in]</td><td class="paramname">output_step_x</td><td>output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
5067     <tr><td class="paramdir">[in]</td><td class="paramname">output_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
5068     <tr><td class="paramdir">[in]</td><td class="paramname">output_step_y</td><td>output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
5069     <tr><td class="paramdir">[in]</td><td class="paramname">output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
5070   </table>
5071   </dd>
5072 </dl>
5073
5074 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l00221">221</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
5075
5076 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
5077 <div class="fragment"><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;{</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(input);</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(output);</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    <span class="comment">// handle 8 pixels every time</span></div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    uchar16 uyvy = vload16(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    uchar8 luma = (uchar8)(uyvy.s0, uyvy.s2, uyvy.s4, uyvy.s6, uyvy.s8, uyvy.sa, uyvy.sc, uyvy.se);</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    char8  cb   = (char8)(uyvy.s1, uyvy.s1, uyvy.s5, uyvy.s5, uyvy.s9, uyvy.s9, uyvy.sd, uyvy.sd) - (char8)(128);</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    char8  cr   = (char8)(uyvy.s3, uyvy.s3, uyvy.s7, uyvy.s7, uyvy.sb, uyvy.sb, uyvy.sf, uyvy.sf) - (char8)(128);</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    float8 f_r = convert_float8(luma) + (float8)(0.0000f) * convert_float8(cb) + (float8)(1.5748f) * convert_float8(cr);</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    float8 f_g = convert_float8(luma) - (float8)(0.1873f) * convert_float8(cb) - (float8)(0.4681f) * convert_float8(cr);</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    float8 f_b = convert_float8(luma) + (float8)(1.8556f) * convert_float8(cb) + (float8)(0.0000f) * convert_float8(cr);</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    uchar8 r_0 = convert_uchar8_rtz(f_r);</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    uchar8 g_0 = convert_uchar8_rtz(f_g);</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    uchar8 b_0 = convert_uchar8_rtz(f_b);</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    uchar16 rgb_0 = (uchar16)(r_0.s0, g_0.s0, b_0.s0, r_0.s1, g_0.s1, b_0.s1, r_0.s2, g_0.s2, b_0.s2,</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;                              r_0.s3, g_0.s3, b_0.s3, r_0.s4, g_0.s4, b_0.s4, r_0.s5);</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    uchar8 rgb_1 = (uchar8)(g_0.s5, b_0.s5, r_0.s6, g_0.s6, b_0.s6, r_0.s7, g_0.s7, b_0.s7);</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    vstore16(rgb_0, 0, out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    vstore8(rgb_1, 0, out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 16);</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
5078 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
5079 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
5080 </div><!-- fragment -->
5081 </div>
5082 </div>
5083 <a class="anchor" id="ab0be9d15196e78ed50afdbfa93a11662"></a>
5084 <div class="memitem">
5085 <div class="memproto">
5086       <table class="memname">
5087         <tr>
5088           <td class="memname">__kernel void YUYV422_to_RGBA8888_bt709 </td>
5089           <td>(</td>
5090           <td class="paramtype">__global uchar *&#160;</td>
5091           <td class="paramname"><em>input_ptr</em>, </td>
5092         </tr>
5093         <tr>
5094           <td class="paramkey"></td>
5095           <td></td>
5096           <td class="paramtype">uint&#160;</td>
5097           <td class="paramname"><em>input_stride_x</em>, </td>
5098         </tr>
5099         <tr>
5100           <td class="paramkey"></td>
5101           <td></td>
5102           <td class="paramtype">uint&#160;</td>
5103           <td class="paramname"><em>input_step_x</em>, </td>
5104         </tr>
5105         <tr>
5106           <td class="paramkey"></td>
5107           <td></td>
5108           <td class="paramtype">uint&#160;</td>
5109           <td class="paramname"><em>input_stride_y</em>, </td>
5110         </tr>
5111         <tr>
5112           <td class="paramkey"></td>
5113           <td></td>
5114           <td class="paramtype">uint&#160;</td>
5115           <td class="paramname"><em>input_step_y</em>, </td>
5116         </tr>
5117         <tr>
5118           <td class="paramkey"></td>
5119           <td></td>
5120           <td class="paramtype">uint&#160;</td>
5121           <td class="paramname"><em>input_offset_first_element_in_bytes</em>, </td>
5122         </tr>
5123         <tr>
5124           <td class="paramkey"></td>
5125           <td></td>
5126           <td class="paramtype">__global uchar *&#160;</td>
5127           <td class="paramname"><em>output_ptr</em>, </td>
5128         </tr>
5129         <tr>
5130           <td class="paramkey"></td>
5131           <td></td>
5132           <td class="paramtype">uint&#160;</td>
5133           <td class="paramname"><em>output_stride_x</em>, </td>
5134         </tr>
5135         <tr>
5136           <td class="paramkey"></td>
5137           <td></td>
5138           <td class="paramtype">uint&#160;</td>
5139           <td class="paramname"><em>output_step_x</em>, </td>
5140         </tr>
5141         <tr>
5142           <td class="paramkey"></td>
5143           <td></td>
5144           <td class="paramtype">uint&#160;</td>
5145           <td class="paramname"><em>output_stride_y</em>, </td>
5146         </tr>
5147         <tr>
5148           <td class="paramkey"></td>
5149           <td></td>
5150           <td class="paramtype">uint&#160;</td>
5151           <td class="paramname"><em>output_step_y</em>, </td>
5152         </tr>
5153         <tr>
5154           <td class="paramkey"></td>
5155           <td></td>
5156           <td class="paramtype">uint&#160;</td>
5157           <td class="paramname"><em>output_offset_first_element_in_bytes</em>&#160;</td>
5158         </tr>
5159         <tr>
5160           <td></td>
5161           <td>)</td>
5162           <td></td><td></td>
5163         </tr>
5164       </table>
5165 </div><div class="memdoc">
5166
5167 <p>Convert a YUYV422 image to RGBX8888 using BT709 color space. </p>
5168 <p>Global Workgroup Size [ DIV_CEIL(width, 8), height ] No offset.</p>
5169 <dl class="params"><dt>Parameters</dt><dd>
5170   <table class="params">
5171     <tr><td class="paramdir">[in]</td><td class="paramname">input_ptr</td><td>Pointer to the source image. Supported Format: U8 </td></tr>
5172     <tr><td class="paramdir">[in]</td><td class="paramname">input_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
5173     <tr><td class="paramdir">[in]</td><td class="paramname">input_step_x</td><td>input_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
5174     <tr><td class="paramdir">[in]</td><td class="paramname">input_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
5175     <tr><td class="paramdir">[in]</td><td class="paramname">input_step_y</td><td>input_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
5176     <tr><td class="paramdir">[in]</td><td class="paramname">input_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
5177     <tr><td class="paramdir">[out]</td><td class="paramname">output_ptr</td><td>Pointer to the destination image. Supported Format: U8 </td></tr>
5178     <tr><td class="paramdir">[in]</td><td class="paramname">output_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
5179     <tr><td class="paramdir">[in]</td><td class="paramname">output_step_x</td><td>output_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
5180     <tr><td class="paramdir">[in]</td><td class="paramname">output_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
5181     <tr><td class="paramdir">[in]</td><td class="paramname">output_step_y</td><td>output_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
5182     <tr><td class="paramdir">[in]</td><td class="paramname">output_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
5183   </table>
5184   </dd>
5185 </dl>
5186
5187 <p>Definition at line <a class="el" href="color__convert_8cl_source.xhtml#l00269">269</a> of file <a class="el" href="color__convert_8cl_source.xhtml">color_convert.cl</a>.</p>
5188
5189 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, and <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>.</p>
5190 <div class="fragment"><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;{</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> in  = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(input);</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> out = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(output);</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    <span class="comment">// handle 8 pixels every time</span></div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    uchar16 uyvy = vload16(0, in.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    uchar8 luma = (uchar8)(uyvy.s0, uyvy.s2, uyvy.s4, uyvy.s6, uyvy.s8, uyvy.sa, uyvy.sc, uyvy.se);</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    char8  cb   = (char8)(uyvy.s1, uyvy.s1, uyvy.s5, uyvy.s5, uyvy.s9, uyvy.s9, uyvy.sd, uyvy.sd) - (char8)(128);</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    char8  cr   = (char8)(uyvy.s3, uyvy.s3, uyvy.s7, uyvy.s7, uyvy.sb, uyvy.sb, uyvy.sf, uyvy.sf) - (char8)(128);</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    float8 f_r = convert_float8(luma) + (float8)(0.0000f) * convert_float8(cb) + (float8)(1.5748f) * convert_float8(cr);</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    float8 f_g = convert_float8(luma) - (float8)(0.1873f) * convert_float8(cb) - (float8)(0.4681f) * convert_float8(cr);</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    float8 f_b = convert_float8(luma) + (float8)(1.8556f) * convert_float8(cb) + (float8)(0.0000f) * convert_float8(cr);</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    uchar8 r_0 = convert_uchar8_rtz(f_r);</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    uchar8 g_0 = convert_uchar8_rtz(f_g);</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;    uchar8 b_0 = convert_uchar8_rtz(f_b);</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    uchar16 rgba_0 = (uchar16)(r_0.s0, g_0.s0, b_0.s0, 255, r_0.s1, g_0.s1, b_0.s1, 255,</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;                               r_0.s2, g_0.s2, b_0.s2, 255, r_0.s3, g_0.s3, b_0.s3, 255);</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    uchar16 rgba_1 = (uchar16)(r_0.s4, g_0.s4, b_0.s4, 255, r_0.s5, g_0.s5, b_0.s5, 255,</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;                               r_0.s6, g_0.s6, b_0.s6, 255, r_0.s7, g_0.s7, b_0.s7, 255);</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;    vstore16(rgba_0, 0, out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    vstore16(rgba_1, 0, out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> + 16);</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
5191 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
5192 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
5193 </div><!-- fragment -->
5194 </div>
5195 </div>
5196 </div><!-- contents -->
5197 </div><!-- doc-content -->
5198 <!-- start footer part -->
5199 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
5200   <ul>
5201     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.xhtml">src</a></li><li class="navelem"><a class="el" href="dir_aebb8dcc11953d78e620bbef0b9e2183.xhtml">core</a></li><li class="navelem"><a class="el" href="dir_8c278f79c760e5c5fbd911f9870614c1.xhtml">CL</a></li><li class="navelem"><a class="el" href="dir_25885286e9dad4fa105b7b25a8031bbf.xhtml">cl_kernels</a></li><li class="navelem"><a class="el" href="color__convert_8cl.xhtml">color_convert.cl</a></li>
5202     <li class="footer">Generated on Wed May 23 2018 11:36:38 for Compute Library by
5203     <a href="http://www.doxygen.org/index.html">
5204     <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
5205   </ul>
5206 </div>
5207 </body>
5208 </html>