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">
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);
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(); });
27 <script type="text/x-mathjax-config">
29 extensions: ["tex2jax.js"],
30 jax: ["input/TeX","output/HTML-CSS"],
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" />
36 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
38 <table cellspacing="0" cellpadding="0">
40 <tr style="height: 56px;">
41 <td style="padding-left: 0.5em;">
42 <div id="projectname">Compute Library
43  <span id="projectnumber">18.05</span>
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');
55 <div id="navrow1" class="tabs">
57 <li><a href="index.xhtml"><span>Main Page</span></a></li>
58 <li><a href="pages.xhtml"><span>Related Pages</span></a></li>
59 <li><a href="namespaces.xhtml"><span>Namespaces</span></a></li>
60 <li><a href="annotated.xhtml"><span>Data Structures</span></a></li>
61 <li class="current"><a href="files.xhtml"><span>Files</span></a></li>
63 <div id="MSearchBox" class="MSearchBoxInactive">
65 <img id="MSearchSelect" src="search/mag_sel.png"
66 onmouseover="return searchBox.OnSearchSelectShow()"
67 onmouseout="return searchBox.OnSearchSelectHide()"
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>
80 <div id="navrow2" class="tabs2">
82 <li><a href="files.xhtml"><span>File List</span></a></li>
83 <li><a href="globals.xhtml"><span>Globals</span></a></li>
87 <div id="side-nav" class="ui-resizable side-nav-resizable">
89 <div id="nav-tree-contents">
90 <div id="nav-sync" class="sync"></div>
93 <div id="splitbar" style="-moz-user-select:none;"
94 class="ui-resizable-handle">
97 <script type="text/javascript">
98 $(document).ready(function(){initNavTree('color__convert_8cl.xhtml','');});
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)">
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">
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>
121 <div class="contents">
122 <div class="textblock"><code>#include "<a class="el" href="helpers_8h_source.xhtml">helpers.h</a>"</code><br />
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 </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"> </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"> </td></tr>
131 <tr class="memitem:ae424d47188a7fffd83a3a9d0c0e1ce6e"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
134 <tr class="memitem:a0b20f3b21bfb3e5ef177eb946e3c905f"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
137 <tr class="memitem:a22e98db2ca5538961967bdbaa19754b3"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
140 <tr class="memitem:a694c56c3d1dd37a2773e650ab8e410b2"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
143 <tr class="memitem:ab0be9d15196e78ed50afdbfa93a11662"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
146 <tr class="memitem:aa07d313ff115012737d4b522efc6079f"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
149 <tr class="memitem:a02037a65e2f5ec0579b8ed8efc33ff18"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
152 <tr class="memitem:a917c100f2da4a0e773bb63dd4f87de0b"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
155 <tr class="memitem:a0e87467985f2b64c5aaf073ee5c64267"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
158 <tr class="memitem:aee9a7e06c86387d2a46aad341fa940d0"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
161 <tr class="memitem:a9ef9b466943c743b2a0f2865a70f741a"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
164 <tr class="memitem:a18ef3b2b70de9af3e4386b2a07f2cd36"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
167 <tr class="memitem:a84880a0b48a6d4ff812b07ef7dcf0eda"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
170 <tr class="memitem:a8fb5e7276f3da6febe4e9c48fe085169"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
173 <tr class="memitem:a2c05435371a2cb1b2782d0a434407150"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
176 <tr class="memitem:a57f0e4cc61a99718caaaaab82d393009"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
179 <tr class="memitem:ad96db99a88669713407e91c036b06df2"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
182 <tr class="memitem:abd3f622e7d731ae70306266b334ff33b"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
185 <tr class="memitem:acfdf02c3ab4893afc7e05afc3a950555"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
188 <tr class="memitem:a8946fa606d523038e103e6b4ceb42e56"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
191 <tr class="memitem:a3f241a3b4a3fbd337c6fe03cd4e61877"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
194 <tr class="memitem:a40d2fa0803ea5b0e979dc124a2606564"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
197 <tr class="memitem:a7a8a4562d5b32de4a1d1352712d9c782"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
200 <tr class="memitem:a718147fe7bf9f1bce18e07c2cfcc472c"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
203 <tr class="memitem:a47fa13a636a45eaa621bdbcbb206895f"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
206 <tr class="memitem:aa4d458afddfb19f170cb27a9cc934069"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
209 <tr class="memitem:a966fe2be85946bbbe2ecad5ad1100d1f"><td class="memItemLeft" align="right" valign="top">__kernel void </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"> </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"> </td></tr>
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">
219 <td class="memname">__kernel void IYUV_to_NV12_bt709 </td>
221 <td class="paramtype">__global uchar * </td>
222 <td class="paramname"><em>luma_input_ptr</em>, </td>
225 <td class="paramkey"></td>
227 <td class="paramtype">uint </td>
228 <td class="paramname"><em>luma_input_stride_x</em>, </td>
231 <td class="paramkey"></td>
233 <td class="paramtype">uint </td>
234 <td class="paramname"><em>luma_input_step_x</em>, </td>
237 <td class="paramkey"></td>
239 <td class="paramtype">uint </td>
240 <td class="paramname"><em>luma_input_stride_y</em>, </td>
243 <td class="paramkey"></td>
245 <td class="paramtype">uint </td>
246 <td class="paramname"><em>luma_input_step_y</em>, </td>
249 <td class="paramkey"></td>
251 <td class="paramtype">uint </td>
252 <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
255 <td class="paramkey"></td>
257 <td class="paramtype">__global uchar * </td>
258 <td class="paramname"><em>u_input_ptr</em>, </td>
261 <td class="paramkey"></td>
263 <td class="paramtype">uint </td>
264 <td class="paramname"><em>u_input_stride_x</em>, </td>
267 <td class="paramkey"></td>
269 <td class="paramtype">uint </td>
270 <td class="paramname"><em>u_input_step_x</em>, </td>
273 <td class="paramkey"></td>
275 <td class="paramtype">uint </td>
276 <td class="paramname"><em>u_input_stride_y</em>, </td>
279 <td class="paramkey"></td>
281 <td class="paramtype">uint </td>
282 <td class="paramname"><em>u_input_step_y</em>, </td>
285 <td class="paramkey"></td>
287 <td class="paramtype">uint </td>
288 <td class="paramname"><em>u_input_offset_first_element_in_bytes</em>, </td>
291 <td class="paramkey"></td>
293 <td class="paramtype">__global uchar * </td>
294 <td class="paramname"><em>v_input_ptr</em>, </td>
297 <td class="paramkey"></td>
299 <td class="paramtype">uint </td>
300 <td class="paramname"><em>v_input_stride_x</em>, </td>
303 <td class="paramkey"></td>
305 <td class="paramtype">uint </td>
306 <td class="paramname"><em>v_input_step_x</em>, </td>
309 <td class="paramkey"></td>
311 <td class="paramtype">uint </td>
312 <td class="paramname"><em>v_input_stride_y</em>, </td>
315 <td class="paramkey"></td>
317 <td class="paramtype">uint </td>
318 <td class="paramname"><em>v_input_step_y</em>, </td>
321 <td class="paramkey"></td>
323 <td class="paramtype">uint </td>
324 <td class="paramname"><em>v_input_offset_first_element_in_bytes</em>, </td>
327 <td class="paramkey"></td>
329 <td class="paramtype">__global uchar * </td>
330 <td class="paramname"><em>luma_output_ptr</em>, </td>
333 <td class="paramkey"></td>
335 <td class="paramtype">uint </td>
336 <td class="paramname"><em>luma_output_stride_x</em>, </td>
339 <td class="paramkey"></td>
341 <td class="paramtype">uint </td>
342 <td class="paramname"><em>luma_output_step_x</em>, </td>
345 <td class="paramkey"></td>
347 <td class="paramtype">uint </td>
348 <td class="paramname"><em>luma_output_stride_y</em>, </td>
351 <td class="paramkey"></td>
353 <td class="paramtype">uint </td>
354 <td class="paramname"><em>luma_output_step_y</em>, </td>
357 <td class="paramkey"></td>
359 <td class="paramtype">uint </td>
360 <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
363 <td class="paramkey"></td>
365 <td class="paramtype">__global uchar * </td>
366 <td class="paramname"><em>uv_output_ptr</em>, </td>
369 <td class="paramkey"></td>
371 <td class="paramtype">uint </td>
372 <td class="paramname"><em>uv_output_stride_x</em>, </td>
375 <td class="paramkey"></td>
377 <td class="paramtype">uint </td>
378 <td class="paramname"><em>uv_output_step_x</em>, </td>
381 <td class="paramkey"></td>
383 <td class="paramtype">uint </td>
384 <td class="paramname"><em>uv_output_stride_y</em>, </td>
387 <td class="paramkey"></td>
389 <td class="paramtype">uint </td>
390 <td class="paramname"><em>uv_output_step_y</em>, </td>
393 <td class="paramkey"></td>
395 <td class="paramtype">uint </td>
396 <td class="paramname"><em>uv_output_offset_first_element_in_bytes</em> </td>
404 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>  <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>  <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>  <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>  <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>  <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> </div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>  <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>  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>  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>  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>  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>  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>  cr.s6, cb.s7, cr.s7);</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span> </div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>  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>  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>  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> }</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 -->
453 <a class="anchor" id="a40d2fa0803ea5b0e979dc124a2606564"></a>
454 <div class="memitem">
455 <div class="memproto">
456 <table class="memname">
458 <td class="memname">__kernel void IYUV_to_RGB888_bt709 </td>
460 <td class="paramtype">__global uchar * </td>
461 <td class="paramname"><em>luma_input_ptr</em>, </td>
464 <td class="paramkey"></td>
466 <td class="paramtype">uint </td>
467 <td class="paramname"><em>luma_input_stride_x</em>, </td>
470 <td class="paramkey"></td>
472 <td class="paramtype">uint </td>
473 <td class="paramname"><em>luma_input_step_x</em>, </td>
476 <td class="paramkey"></td>
478 <td class="paramtype">uint </td>
479 <td class="paramname"><em>luma_input_stride_y</em>, </td>
482 <td class="paramkey"></td>
484 <td class="paramtype">uint </td>
485 <td class="paramname"><em>luma_input_step_y</em>, </td>
488 <td class="paramkey"></td>
490 <td class="paramtype">uint </td>
491 <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
494 <td class="paramkey"></td>
496 <td class="paramtype">__global uchar * </td>
497 <td class="paramname"><em>u_input_ptr</em>, </td>
500 <td class="paramkey"></td>
502 <td class="paramtype">uint </td>
503 <td class="paramname"><em>u_input_stride_x</em>, </td>
506 <td class="paramkey"></td>
508 <td class="paramtype">uint </td>
509 <td class="paramname"><em>u_input_step_x</em>, </td>
512 <td class="paramkey"></td>
514 <td class="paramtype">uint </td>
515 <td class="paramname"><em>u_input_stride_y</em>, </td>
518 <td class="paramkey"></td>
520 <td class="paramtype">uint </td>
521 <td class="paramname"><em>u_input_step_y</em>, </td>
524 <td class="paramkey"></td>
526 <td class="paramtype">uint </td>
527 <td class="paramname"><em>u_input_offset_first_element_in_bytes</em>, </td>
530 <td class="paramkey"></td>
532 <td class="paramtype">__global uchar * </td>
533 <td class="paramname"><em>v_input_ptr</em>, </td>
536 <td class="paramkey"></td>
538 <td class="paramtype">uint </td>
539 <td class="paramname"><em>v_input_stride_x</em>, </td>
542 <td class="paramkey"></td>
544 <td class="paramtype">uint </td>
545 <td class="paramname"><em>v_input_step_x</em>, </td>
548 <td class="paramkey"></td>
550 <td class="paramtype">uint </td>
551 <td class="paramname"><em>v_input_stride_y</em>, </td>
554 <td class="paramkey"></td>
556 <td class="paramtype">uint </td>
557 <td class="paramname"><em>v_input_step_y</em>, </td>
560 <td class="paramkey"></td>
562 <td class="paramtype">uint </td>
563 <td class="paramname"><em>v_input_offset_first_element_in_bytes</em>, </td>
566 <td class="paramkey"></td>
568 <td class="paramtype">__global uchar * </td>
569 <td class="paramname"><em>rgb_output_ptr</em>, </td>
572 <td class="paramkey"></td>
574 <td class="paramtype">uint </td>
575 <td class="paramname"><em>rgb_output_stride_x</em>, </td>
578 <td class="paramkey"></td>
580 <td class="paramtype">uint </td>
581 <td class="paramname"><em>rgb_output_step_x</em>, </td>
584 <td class="paramkey"></td>
586 <td class="paramtype">uint </td>
587 <td class="paramname"><em>rgb_output_stride_y</em>, </td>
590 <td class="paramkey"></td>
592 <td class="paramtype">uint </td>
593 <td class="paramname"><em>rgb_output_step_y</em>, </td>
596 <td class="paramkey"></td>
598 <td class="paramtype">uint </td>
599 <td class="paramname"><em>rgb_output_offset_first_element_in_bytes</em> </td>
607 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>  <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>  <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>  <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>  <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> </div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  <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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>  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>  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>  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> </div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>  float4 f_r = convert_float4(luma_0) + temp0;</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>  float4 f_g = convert_float4(luma_0) + temp1;</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>  float4 f_b = convert_float4(luma_0) + temp2;</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> </div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>  uchar4 r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>  uchar4 g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>  uchar4 b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span> </div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>  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>  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>  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>  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> </div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>  f_r = convert_float4(luma_1) + temp0;</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>  f_g = convert_float4(luma_1) + temp1;</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  f_b = convert_float4(luma_1) + temp2;</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span> </div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>  r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>  g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>  b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span> </div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>  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>  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>  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>  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> }</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 -->
650 <a class="anchor" id="a7a8a4562d5b32de4a1d1352712d9c782"></a>
651 <div class="memitem">
652 <div class="memproto">
653 <table class="memname">
655 <td class="memname">__kernel void IYUV_to_RGBA8888_bt709 </td>
657 <td class="paramtype">__global uchar * </td>
658 <td class="paramname"><em>luma_input_ptr</em>, </td>
661 <td class="paramkey"></td>
663 <td class="paramtype">uint </td>
664 <td class="paramname"><em>luma_input_stride_x</em>, </td>
667 <td class="paramkey"></td>
669 <td class="paramtype">uint </td>
670 <td class="paramname"><em>luma_input_step_x</em>, </td>
673 <td class="paramkey"></td>
675 <td class="paramtype">uint </td>
676 <td class="paramname"><em>luma_input_stride_y</em>, </td>
679 <td class="paramkey"></td>
681 <td class="paramtype">uint </td>
682 <td class="paramname"><em>luma_input_step_y</em>, </td>
685 <td class="paramkey"></td>
687 <td class="paramtype">uint </td>
688 <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
691 <td class="paramkey"></td>
693 <td class="paramtype">__global uchar * </td>
694 <td class="paramname"><em>u_input_ptr</em>, </td>
697 <td class="paramkey"></td>
699 <td class="paramtype">uint </td>
700 <td class="paramname"><em>u_input_stride_x</em>, </td>
703 <td class="paramkey"></td>
705 <td class="paramtype">uint </td>
706 <td class="paramname"><em>u_input_step_x</em>, </td>
709 <td class="paramkey"></td>
711 <td class="paramtype">uint </td>
712 <td class="paramname"><em>u_input_stride_y</em>, </td>
715 <td class="paramkey"></td>
717 <td class="paramtype">uint </td>
718 <td class="paramname"><em>u_input_step_y</em>, </td>
721 <td class="paramkey"></td>
723 <td class="paramtype">uint </td>
724 <td class="paramname"><em>u_input_offset_first_element_in_bytes</em>, </td>
727 <td class="paramkey"></td>
729 <td class="paramtype">__global uchar * </td>
730 <td class="paramname"><em>v_input_ptr</em>, </td>
733 <td class="paramkey"></td>
735 <td class="paramtype">uint </td>
736 <td class="paramname"><em>v_input_stride_x</em>, </td>
739 <td class="paramkey"></td>
741 <td class="paramtype">uint </td>
742 <td class="paramname"><em>v_input_step_x</em>, </td>
745 <td class="paramkey"></td>
747 <td class="paramtype">uint </td>
748 <td class="paramname"><em>v_input_stride_y</em>, </td>
751 <td class="paramkey"></td>
753 <td class="paramtype">uint </td>
754 <td class="paramname"><em>v_input_step_y</em>, </td>
757 <td class="paramkey"></td>
759 <td class="paramtype">uint </td>
760 <td class="paramname"><em>v_input_offset_first_element_in_bytes</em>, </td>
763 <td class="paramkey"></td>
765 <td class="paramtype">__global uchar * </td>
766 <td class="paramname"><em>rgba_output_ptr</em>, </td>
769 <td class="paramkey"></td>
771 <td class="paramtype">uint </td>
772 <td class="paramname"><em>rgba_output_stride_x</em>, </td>
775 <td class="paramkey"></td>
777 <td class="paramtype">uint </td>
778 <td class="paramname"><em>rgba_output_step_x</em>, </td>
781 <td class="paramkey"></td>
783 <td class="paramtype">uint </td>
784 <td class="paramname"><em>rgba_output_stride_y</em>, </td>
787 <td class="paramkey"></td>
789 <td class="paramtype">uint </td>
790 <td class="paramname"><em>rgba_output_step_y</em>, </td>
793 <td class="paramkey"></td>
795 <td class="paramtype">uint </td>
796 <td class="paramname"><em>rgba_output_offset_first_element_in_bytes</em> </td>
804 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>  <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>  <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>  <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>  <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> </div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>  <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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>  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>  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>  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> </div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>  float4 f_r = convert_float4(luma_0) + temp0;</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>  float4 f_g = convert_float4(luma_0) + temp1;</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>  float4 f_b = convert_float4(luma_0) + temp2;</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span> </div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>  uchar4 r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>  uchar4 g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>  uchar4 b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span> </div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>  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>  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>  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>  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> </div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>  f_r = convert_float4(luma_1) + temp0;</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>  f_g = convert_float4(luma_1) + temp1;</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>  f_b = convert_float4(luma_1) + temp2;</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span> </div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>  r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>  g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>  b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span> </div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>  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>  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>  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>  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> }</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 -->
847 <a class="anchor" id="a718147fe7bf9f1bce18e07c2cfcc472c"></a>
848 <div class="memitem">
849 <div class="memproto">
850 <table class="memname">
852 <td class="memname">__kernel void IYUV_to_YUV444_bt709 </td>
854 <td class="paramtype">__global uchar * </td>
855 <td class="paramname"><em>luma_input_ptr</em>, </td>
858 <td class="paramkey"></td>
860 <td class="paramtype">uint </td>
861 <td class="paramname"><em>luma_input_stride_x</em>, </td>
864 <td class="paramkey"></td>
866 <td class="paramtype">uint </td>
867 <td class="paramname"><em>luma_input_step_x</em>, </td>
870 <td class="paramkey"></td>
872 <td class="paramtype">uint </td>
873 <td class="paramname"><em>luma_input_stride_y</em>, </td>
876 <td class="paramkey"></td>
878 <td class="paramtype">uint </td>
879 <td class="paramname"><em>luma_input_step_y</em>, </td>
882 <td class="paramkey"></td>
884 <td class="paramtype">uint </td>
885 <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
888 <td class="paramkey"></td>
890 <td class="paramtype">__global uchar * </td>
891 <td class="paramname"><em>u_input_ptr</em>, </td>
894 <td class="paramkey"></td>
896 <td class="paramtype">uint </td>
897 <td class="paramname"><em>u_input_stride_x</em>, </td>
900 <td class="paramkey"></td>
902 <td class="paramtype">uint </td>
903 <td class="paramname"><em>u_input_step_x</em>, </td>
906 <td class="paramkey"></td>
908 <td class="paramtype">uint </td>
909 <td class="paramname"><em>u_input_stride_y</em>, </td>
912 <td class="paramkey"></td>
914 <td class="paramtype">uint </td>
915 <td class="paramname"><em>u_input_step_y</em>, </td>
918 <td class="paramkey"></td>
920 <td class="paramtype">uint </td>
921 <td class="paramname"><em>u_input_offset_first_element_in_bytes</em>, </td>
924 <td class="paramkey"></td>
926 <td class="paramtype">__global uchar * </td>
927 <td class="paramname"><em>v_input_ptr</em>, </td>
930 <td class="paramkey"></td>
932 <td class="paramtype">uint </td>
933 <td class="paramname"><em>v_input_stride_x</em>, </td>
936 <td class="paramkey"></td>
938 <td class="paramtype">uint </td>
939 <td class="paramname"><em>v_input_step_x</em>, </td>
942 <td class="paramkey"></td>
944 <td class="paramtype">uint </td>
945 <td class="paramname"><em>v_input_stride_y</em>, </td>
948 <td class="paramkey"></td>
950 <td class="paramtype">uint </td>
951 <td class="paramname"><em>v_input_step_y</em>, </td>
954 <td class="paramkey"></td>
956 <td class="paramtype">uint </td>
957 <td class="paramname"><em>v_input_offset_first_element_in_bytes</em>, </td>
960 <td class="paramkey"></td>
962 <td class="paramtype">__global uchar * </td>
963 <td class="paramname"><em>luma_output_ptr</em>, </td>
966 <td class="paramkey"></td>
968 <td class="paramtype">uint </td>
969 <td class="paramname"><em>luma_output_stride_x</em>, </td>
972 <td class="paramkey"></td>
974 <td class="paramtype">uint </td>
975 <td class="paramname"><em>luma_output_step_x</em>, </td>
978 <td class="paramkey"></td>
980 <td class="paramtype">uint </td>
981 <td class="paramname"><em>luma_output_stride_y</em>, </td>
984 <td class="paramkey"></td>
986 <td class="paramtype">uint </td>
987 <td class="paramname"><em>luma_output_step_y</em>, </td>
990 <td class="paramkey"></td>
992 <td class="paramtype">uint </td>
993 <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
996 <td class="paramkey"></td>
998 <td class="paramtype">__global uchar * </td>
999 <td class="paramname"><em>u_output_ptr</em>, </td>
1002 <td class="paramkey"></td>
1004 <td class="paramtype">uint </td>
1005 <td class="paramname"><em>u_output_stride_x</em>, </td>
1008 <td class="paramkey"></td>
1010 <td class="paramtype">uint </td>
1011 <td class="paramname"><em>u_output_step_x</em>, </td>
1014 <td class="paramkey"></td>
1016 <td class="paramtype">uint </td>
1017 <td class="paramname"><em>u_output_stride_y</em>, </td>
1020 <td class="paramkey"></td>
1022 <td class="paramtype">uint </td>
1023 <td class="paramname"><em>u_output_step_y</em>, </td>
1026 <td class="paramkey"></td>
1028 <td class="paramtype">uint </td>
1029 <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
1032 <td class="paramkey"></td>
1034 <td class="paramtype">__global uchar * </td>
1035 <td class="paramname"><em>v_output_ptr</em>, </td>
1038 <td class="paramkey"></td>
1040 <td class="paramtype">uint </td>
1041 <td class="paramname"><em>v_output_stride_x</em>, </td>
1044 <td class="paramkey"></td>
1046 <td class="paramtype">uint </td>
1047 <td class="paramname"><em>v_output_step_x</em>, </td>
1050 <td class="paramkey"></td>
1052 <td class="paramtype">uint </td>
1053 <td class="paramname"><em>v_output_stride_y</em>, </td>
1056 <td class="paramkey"></td>
1058 <td class="paramtype">uint </td>
1059 <td class="paramname"><em>v_output_step_y</em>, </td>
1062 <td class="paramkey"></td>
1064 <td class="paramtype">uint </td>
1065 <td class="paramname"><em>v_output_offset_first_element_in_bytes</em> </td>
1073 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>  <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>  <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>  <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>  <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>  <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>  <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> </div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>  <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>  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>  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>  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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>  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>  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>  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>  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>  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>  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> }</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 -->
1128 <a class="anchor" id="a8fb5e7276f3da6febe4e9c48fe085169"></a>
1129 <div class="memitem">
1130 <div class="memproto">
1131 <table class="memname">
1133 <td class="memname">__kernel void NV12_to_IYUV_bt709 </td>
1135 <td class="paramtype">__global uchar * </td>
1136 <td class="paramname"><em>luma_input_ptr</em>, </td>
1139 <td class="paramkey"></td>
1141 <td class="paramtype">uint </td>
1142 <td class="paramname"><em>luma_input_stride_x</em>, </td>
1145 <td class="paramkey"></td>
1147 <td class="paramtype">uint </td>
1148 <td class="paramname"><em>luma_input_step_x</em>, </td>
1151 <td class="paramkey"></td>
1153 <td class="paramtype">uint </td>
1154 <td class="paramname"><em>luma_input_stride_y</em>, </td>
1157 <td class="paramkey"></td>
1159 <td class="paramtype">uint </td>
1160 <td class="paramname"><em>luma_input_step_y</em>, </td>
1163 <td class="paramkey"></td>
1165 <td class="paramtype">uint </td>
1166 <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
1169 <td class="paramkey"></td>
1171 <td class="paramtype">__global uchar * </td>
1172 <td class="paramname"><em>uv_input_ptr</em>, </td>
1175 <td class="paramkey"></td>
1177 <td class="paramtype">uint </td>
1178 <td class="paramname"><em>uv_input_stride_x</em>, </td>
1181 <td class="paramkey"></td>
1183 <td class="paramtype">uint </td>
1184 <td class="paramname"><em>uv_input_step_x</em>, </td>
1187 <td class="paramkey"></td>
1189 <td class="paramtype">uint </td>
1190 <td class="paramname"><em>uv_input_stride_y</em>, </td>
1193 <td class="paramkey"></td>
1195 <td class="paramtype">uint </td>
1196 <td class="paramname"><em>uv_input_step_y</em>, </td>
1199 <td class="paramkey"></td>
1201 <td class="paramtype">uint </td>
1202 <td class="paramname"><em>uv_input_offset_first_element_in_bytes</em>, </td>
1205 <td class="paramkey"></td>
1207 <td class="paramtype">__global uchar * </td>
1208 <td class="paramname"><em>luma_output_ptr</em>, </td>
1211 <td class="paramkey"></td>
1213 <td class="paramtype">uint </td>
1214 <td class="paramname"><em>luma_output_stride_x</em>, </td>
1217 <td class="paramkey"></td>
1219 <td class="paramtype">uint </td>
1220 <td class="paramname"><em>luma_output_step_x</em>, </td>
1223 <td class="paramkey"></td>
1225 <td class="paramtype">uint </td>
1226 <td class="paramname"><em>luma_output_stride_y</em>, </td>
1229 <td class="paramkey"></td>
1231 <td class="paramtype">uint </td>
1232 <td class="paramname"><em>luma_output_step_y</em>, </td>
1235 <td class="paramkey"></td>
1237 <td class="paramtype">uint </td>
1238 <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
1241 <td class="paramkey"></td>
1243 <td class="paramtype">__global uchar * </td>
1244 <td class="paramname"><em>u_output_ptr</em>, </td>
1247 <td class="paramkey"></td>
1249 <td class="paramtype">uint </td>
1250 <td class="paramname"><em>u_output_stride_x</em>, </td>
1253 <td class="paramkey"></td>
1255 <td class="paramtype">uint </td>
1256 <td class="paramname"><em>u_output_step_x</em>, </td>
1259 <td class="paramkey"></td>
1261 <td class="paramtype">uint </td>
1262 <td class="paramname"><em>u_output_stride_y</em>, </td>
1265 <td class="paramkey"></td>
1267 <td class="paramtype">uint </td>
1268 <td class="paramname"><em>u_output_step_y</em>, </td>
1271 <td class="paramkey"></td>
1273 <td class="paramtype">uint </td>
1274 <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
1277 <td class="paramkey"></td>
1279 <td class="paramtype">__global uchar * </td>
1280 <td class="paramname"><em>v_output_ptr</em>, </td>
1283 <td class="paramkey"></td>
1285 <td class="paramtype">uint </td>
1286 <td class="paramname"><em>v_output_stride_x</em>, </td>
1289 <td class="paramkey"></td>
1291 <td class="paramtype">uint </td>
1292 <td class="paramname"><em>v_output_step_x</em>, </td>
1295 <td class="paramkey"></td>
1297 <td class="paramtype">uint </td>
1298 <td class="paramname"><em>v_output_stride_y</em>, </td>
1301 <td class="paramkey"></td>
1303 <td class="paramtype">uint </td>
1304 <td class="paramname"><em>v_output_step_y</em>, </td>
1307 <td class="paramkey"></td>
1309 <td class="paramtype">uint </td>
1310 <td class="paramname"><em>v_output_offset_first_element_in_bytes</em> </td>
1318 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  <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>  <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>  <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>  <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>  <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> </div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  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>  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>  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>  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> }</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 -->
1367 <a class="anchor" id="a02037a65e2f5ec0579b8ed8efc33ff18"></a>
1368 <div class="memitem">
1369 <div class="memproto">
1370 <table class="memname">
1372 <td class="memname">__kernel void NV12_to_RGB888_bt709 </td>
1374 <td class="paramtype">__global uchar * </td>
1375 <td class="paramname"><em>luma_input_ptr</em>, </td>
1378 <td class="paramkey"></td>
1380 <td class="paramtype">uint </td>
1381 <td class="paramname"><em>luma_input_stride_x</em>, </td>
1384 <td class="paramkey"></td>
1386 <td class="paramtype">uint </td>
1387 <td class="paramname"><em>luma_input_step_x</em>, </td>
1390 <td class="paramkey"></td>
1392 <td class="paramtype">uint </td>
1393 <td class="paramname"><em>luma_input_stride_y</em>, </td>
1396 <td class="paramkey"></td>
1398 <td class="paramtype">uint </td>
1399 <td class="paramname"><em>luma_input_step_y</em>, </td>
1402 <td class="paramkey"></td>
1404 <td class="paramtype">uint </td>
1405 <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
1408 <td class="paramkey"></td>
1410 <td class="paramtype">__global uchar * </td>
1411 <td class="paramname"><em>uv_input_ptr</em>, </td>
1414 <td class="paramkey"></td>
1416 <td class="paramtype">uint </td>
1417 <td class="paramname"><em>uv_input_stride_x</em>, </td>
1420 <td class="paramkey"></td>
1422 <td class="paramtype">uint </td>
1423 <td class="paramname"><em>uv_input_step_x</em>, </td>
1426 <td class="paramkey"></td>
1428 <td class="paramtype">uint </td>
1429 <td class="paramname"><em>uv_input_stride_y</em>, </td>
1432 <td class="paramkey"></td>
1434 <td class="paramtype">uint </td>
1435 <td class="paramname"><em>uv_input_step_y</em>, </td>
1438 <td class="paramkey"></td>
1440 <td class="paramtype">uint </td>
1441 <td class="paramname"><em>uv_input_offset_first_element_in_bytes</em>, </td>
1444 <td class="paramkey"></td>
1446 <td class="paramtype">__global uchar * </td>
1447 <td class="paramname"><em>rgb_output_ptr</em>, </td>
1450 <td class="paramkey"></td>
1452 <td class="paramtype">uint </td>
1453 <td class="paramname"><em>rgb_output_stride_x</em>, </td>
1456 <td class="paramkey"></td>
1458 <td class="paramtype">uint </td>
1459 <td class="paramname"><em>rgb_output_step_x</em>, </td>
1462 <td class="paramkey"></td>
1464 <td class="paramtype">uint </td>
1465 <td class="paramname"><em>rgb_output_stride_y</em>, </td>
1468 <td class="paramkey"></td>
1470 <td class="paramtype">uint </td>
1471 <td class="paramname"><em>rgb_output_step_y</em>, </td>
1474 <td class="paramkey"></td>
1476 <td class="paramtype">uint </td>
1477 <td class="paramname"><em>rgb_output_offset_first_element_in_bytes</em> </td>
1485 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <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>  <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>  <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> </div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  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>  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>  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> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  float4 f_r = convert_float4(luma_0) + temp0;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  float4 f_g = convert_float4(luma_0) + temp1;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  float4 f_b = convert_float4(luma_0) + temp2;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> </div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  uchar4 r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  uchar4 g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  uchar4 b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  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>  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>  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>  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> </div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  f_r = convert_float4(luma_1) + temp0;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  f_g = convert_float4(luma_1) + temp1;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  f_b = convert_float4(luma_1) + temp2;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  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>  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>  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>  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> }</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 -->
1522 <a class="anchor" id="a84880a0b48a6d4ff812b07ef7dcf0eda"></a>
1523 <div class="memitem">
1524 <div class="memproto">
1525 <table class="memname">
1527 <td class="memname">__kernel void NV12_to_RGBA8888_bt709 </td>
1529 <td class="paramtype">__global uchar * </td>
1530 <td class="paramname"><em>luma_input_ptr</em>, </td>
1533 <td class="paramkey"></td>
1535 <td class="paramtype">uint </td>
1536 <td class="paramname"><em>luma_input_stride_x</em>, </td>
1539 <td class="paramkey"></td>
1541 <td class="paramtype">uint </td>
1542 <td class="paramname"><em>luma_input_step_x</em>, </td>
1545 <td class="paramkey"></td>
1547 <td class="paramtype">uint </td>
1548 <td class="paramname"><em>luma_input_stride_y</em>, </td>
1551 <td class="paramkey"></td>
1553 <td class="paramtype">uint </td>
1554 <td class="paramname"><em>luma_input_step_y</em>, </td>
1557 <td class="paramkey"></td>
1559 <td class="paramtype">uint </td>
1560 <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
1563 <td class="paramkey"></td>
1565 <td class="paramtype">__global uchar * </td>
1566 <td class="paramname"><em>uv_input_ptr</em>, </td>
1569 <td class="paramkey"></td>
1571 <td class="paramtype">uint </td>
1572 <td class="paramname"><em>uv_input_stride_x</em>, </td>
1575 <td class="paramkey"></td>
1577 <td class="paramtype">uint </td>
1578 <td class="paramname"><em>uv_input_step_x</em>, </td>
1581 <td class="paramkey"></td>
1583 <td class="paramtype">uint </td>
1584 <td class="paramname"><em>uv_input_stride_y</em>, </td>
1587 <td class="paramkey"></td>
1589 <td class="paramtype">uint </td>
1590 <td class="paramname"><em>uv_input_step_y</em>, </td>
1593 <td class="paramkey"></td>
1595 <td class="paramtype">uint </td>
1596 <td class="paramname"><em>uv_input_offset_first_element_in_bytes</em>, </td>
1599 <td class="paramkey"></td>
1601 <td class="paramtype">__global uchar * </td>
1602 <td class="paramname"><em>rgb_output_ptr</em>, </td>
1605 <td class="paramkey"></td>
1607 <td class="paramtype">uint </td>
1608 <td class="paramname"><em>rgb_output_stride_x</em>, </td>
1611 <td class="paramkey"></td>
1613 <td class="paramtype">uint </td>
1614 <td class="paramname"><em>rgb_output_step_x</em>, </td>
1617 <td class="paramkey"></td>
1619 <td class="paramtype">uint </td>
1620 <td class="paramname"><em>rgb_output_stride_y</em>, </td>
1623 <td class="paramkey"></td>
1625 <td class="paramtype">uint </td>
1626 <td class="paramname"><em>rgb_output_step_y</em>, </td>
1629 <td class="paramkey"></td>
1631 <td class="paramtype">uint </td>
1632 <td class="paramname"><em>rgb_output_offset_first_element_in_bytes</em> </td>
1640 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <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>  <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>  <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> </div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  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>  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>  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>  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>  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> </div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  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>  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>  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> </div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  float4 f_r = convert_float4(luma_0) + temp0;</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  float4 f_g = convert_float4(luma_0) + temp1;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  float4 f_b = convert_float4(luma_0) + temp2;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> </div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  uchar4 r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  uchar4 g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  uchar4 b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span> </div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  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>  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>  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>  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> </div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  f_r = convert_float4(luma_1) + temp0;</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  f_g = convert_float4(luma_1) + temp1;</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  f_b = convert_float4(luma_1) + temp2;</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> </div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span> </div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  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>  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>  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>  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> }</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 -->
1677 <a class="anchor" id="a2c05435371a2cb1b2782d0a434407150"></a>
1678 <div class="memitem">
1679 <div class="memproto">
1680 <table class="memname">
1682 <td class="memname">__kernel void NV12_to_YUV444_bt709 </td>
1684 <td class="paramtype">__global uchar * </td>
1685 <td class="paramname"><em>luma_input_ptr</em>, </td>
1688 <td class="paramkey"></td>
1690 <td class="paramtype">uint </td>
1691 <td class="paramname"><em>luma_input_stride_x</em>, </td>
1694 <td class="paramkey"></td>
1696 <td class="paramtype">uint </td>
1697 <td class="paramname"><em>luma_input_step_x</em>, </td>
1700 <td class="paramkey"></td>
1702 <td class="paramtype">uint </td>
1703 <td class="paramname"><em>luma_input_stride_y</em>, </td>
1706 <td class="paramkey"></td>
1708 <td class="paramtype">uint </td>
1709 <td class="paramname"><em>luma_input_step_y</em>, </td>
1712 <td class="paramkey"></td>
1714 <td class="paramtype">uint </td>
1715 <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
1718 <td class="paramkey"></td>
1720 <td class="paramtype">__global uchar * </td>
1721 <td class="paramname"><em>uv_input_ptr</em>, </td>
1724 <td class="paramkey"></td>
1726 <td class="paramtype">uint </td>
1727 <td class="paramname"><em>uv_input_stride_x</em>, </td>
1730 <td class="paramkey"></td>
1732 <td class="paramtype">uint </td>
1733 <td class="paramname"><em>uv_input_step_x</em>, </td>
1736 <td class="paramkey"></td>
1738 <td class="paramtype">uint </td>
1739 <td class="paramname"><em>uv_input_stride_y</em>, </td>
1742 <td class="paramkey"></td>
1744 <td class="paramtype">uint </td>
1745 <td class="paramname"><em>uv_input_step_y</em>, </td>
1748 <td class="paramkey"></td>
1750 <td class="paramtype">uint </td>
1751 <td class="paramname"><em>uv_input_offset_first_element_in_bytes</em>, </td>
1754 <td class="paramkey"></td>
1756 <td class="paramtype">__global uchar * </td>
1757 <td class="paramname"><em>luma_output_ptr</em>, </td>
1760 <td class="paramkey"></td>
1762 <td class="paramtype">uint </td>
1763 <td class="paramname"><em>luma_output_stride_x</em>, </td>
1766 <td class="paramkey"></td>
1768 <td class="paramtype">uint </td>
1769 <td class="paramname"><em>luma_output_step_x</em>, </td>
1772 <td class="paramkey"></td>
1774 <td class="paramtype">uint </td>
1775 <td class="paramname"><em>luma_output_stride_y</em>, </td>
1778 <td class="paramkey"></td>
1780 <td class="paramtype">uint </td>
1781 <td class="paramname"><em>luma_output_step_y</em>, </td>
1784 <td class="paramkey"></td>
1786 <td class="paramtype">uint </td>
1787 <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
1790 <td class="paramkey"></td>
1792 <td class="paramtype">__global uchar * </td>
1793 <td class="paramname"><em>u_output_ptr</em>, </td>
1796 <td class="paramkey"></td>
1798 <td class="paramtype">uint </td>
1799 <td class="paramname"><em>u_output_stride_x</em>, </td>
1802 <td class="paramkey"></td>
1804 <td class="paramtype">uint </td>
1805 <td class="paramname"><em>u_output_step_x</em>, </td>
1808 <td class="paramkey"></td>
1810 <td class="paramtype">uint </td>
1811 <td class="paramname"><em>u_output_stride_y</em>, </td>
1814 <td class="paramkey"></td>
1816 <td class="paramtype">uint </td>
1817 <td class="paramname"><em>u_output_step_y</em>, </td>
1820 <td class="paramkey"></td>
1822 <td class="paramtype">uint </td>
1823 <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
1826 <td class="paramkey"></td>
1828 <td class="paramtype">__global uchar * </td>
1829 <td class="paramname"><em>v_output_ptr</em>, </td>
1832 <td class="paramkey"></td>
1834 <td class="paramtype">uint </td>
1835 <td class="paramname"><em>v_output_stride_x</em>, </td>
1838 <td class="paramkey"></td>
1840 <td class="paramtype">uint </td>
1841 <td class="paramname"><em>v_output_step_x</em>, </td>
1844 <td class="paramkey"></td>
1846 <td class="paramtype">uint </td>
1847 <td class="paramname"><em>v_output_stride_y</em>, </td>
1850 <td class="paramkey"></td>
1852 <td class="paramtype">uint </td>
1853 <td class="paramname"><em>v_output_step_y</em>, </td>
1856 <td class="paramkey"></td>
1858 <td class="paramtype">uint </td>
1859 <td class="paramname"><em>v_output_offset_first_element_in_bytes</em> </td>
1867 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <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>  <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>  <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>  <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>  <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> </div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <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>  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>  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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  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>  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>  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>  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>  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>  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> }</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 -->
1916 <a class="anchor" id="acfdf02c3ab4893afc7e05afc3a950555"></a>
1917 <div class="memitem">
1918 <div class="memproto">
1919 <table class="memname">
1921 <td class="memname">__kernel void NV21_to_IYUV_bt709 </td>
1923 <td class="paramtype">__global uchar * </td>
1924 <td class="paramname"><em>luma_input_ptr</em>, </td>
1927 <td class="paramkey"></td>
1929 <td class="paramtype">uint </td>
1930 <td class="paramname"><em>luma_input_stride_x</em>, </td>
1933 <td class="paramkey"></td>
1935 <td class="paramtype">uint </td>
1936 <td class="paramname"><em>luma_input_step_x</em>, </td>
1939 <td class="paramkey"></td>
1941 <td class="paramtype">uint </td>
1942 <td class="paramname"><em>luma_input_stride_y</em>, </td>
1945 <td class="paramkey"></td>
1947 <td class="paramtype">uint </td>
1948 <td class="paramname"><em>luma_input_step_y</em>, </td>
1951 <td class="paramkey"></td>
1953 <td class="paramtype">uint </td>
1954 <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
1957 <td class="paramkey"></td>
1959 <td class="paramtype">__global uchar * </td>
1960 <td class="paramname"><em>uv_input_ptr</em>, </td>
1963 <td class="paramkey"></td>
1965 <td class="paramtype">uint </td>
1966 <td class="paramname"><em>uv_input_stride_x</em>, </td>
1969 <td class="paramkey"></td>
1971 <td class="paramtype">uint </td>
1972 <td class="paramname"><em>uv_input_step_x</em>, </td>
1975 <td class="paramkey"></td>
1977 <td class="paramtype">uint </td>
1978 <td class="paramname"><em>uv_input_stride_y</em>, </td>
1981 <td class="paramkey"></td>
1983 <td class="paramtype">uint </td>
1984 <td class="paramname"><em>uv_input_step_y</em>, </td>
1987 <td class="paramkey"></td>
1989 <td class="paramtype">uint </td>
1990 <td class="paramname"><em>uv_input_offset_first_element_in_bytes</em>, </td>
1993 <td class="paramkey"></td>
1995 <td class="paramtype">__global uchar * </td>
1996 <td class="paramname"><em>luma_output_ptr</em>, </td>
1999 <td class="paramkey"></td>
2001 <td class="paramtype">uint </td>
2002 <td class="paramname"><em>luma_output_stride_x</em>, </td>
2005 <td class="paramkey"></td>
2007 <td class="paramtype">uint </td>
2008 <td class="paramname"><em>luma_output_step_x</em>, </td>
2011 <td class="paramkey"></td>
2013 <td class="paramtype">uint </td>
2014 <td class="paramname"><em>luma_output_stride_y</em>, </td>
2017 <td class="paramkey"></td>
2019 <td class="paramtype">uint </td>
2020 <td class="paramname"><em>luma_output_step_y</em>, </td>
2023 <td class="paramkey"></td>
2025 <td class="paramtype">uint </td>
2026 <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
2029 <td class="paramkey"></td>
2031 <td class="paramtype">__global uchar * </td>
2032 <td class="paramname"><em>u_output_ptr</em>, </td>
2035 <td class="paramkey"></td>
2037 <td class="paramtype">uint </td>
2038 <td class="paramname"><em>u_output_stride_x</em>, </td>
2041 <td class="paramkey"></td>
2043 <td class="paramtype">uint </td>
2044 <td class="paramname"><em>u_output_step_x</em>, </td>
2047 <td class="paramkey"></td>
2049 <td class="paramtype">uint </td>
2050 <td class="paramname"><em>u_output_stride_y</em>, </td>
2053 <td class="paramkey"></td>
2055 <td class="paramtype">uint </td>
2056 <td class="paramname"><em>u_output_step_y</em>, </td>
2059 <td class="paramkey"></td>
2061 <td class="paramtype">uint </td>
2062 <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
2065 <td class="paramkey"></td>
2067 <td class="paramtype">__global uchar * </td>
2068 <td class="paramname"><em>v_output_ptr</em>, </td>
2071 <td class="paramkey"></td>
2073 <td class="paramtype">uint </td>
2074 <td class="paramname"><em>v_output_stride_x</em>, </td>
2077 <td class="paramkey"></td>
2079 <td class="paramtype">uint </td>
2080 <td class="paramname"><em>v_output_step_x</em>, </td>
2083 <td class="paramkey"></td>
2085 <td class="paramtype">uint </td>
2086 <td class="paramname"><em>v_output_stride_y</em>, </td>
2089 <td class="paramkey"></td>
2091 <td class="paramtype">uint </td>
2092 <td class="paramname"><em>v_output_step_y</em>, </td>
2095 <td class="paramkey"></td>
2097 <td class="paramtype">uint </td>
2098 <td class="paramname"><em>v_output_offset_first_element_in_bytes</em> </td>
2106 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  <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>  <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>  <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>  <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>  <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> </div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  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>  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>  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>  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>  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> </div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  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>  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>  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>  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> }</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 -->
2155 <a class="anchor" id="a57f0e4cc61a99718caaaaab82d393009"></a>
2156 <div class="memitem">
2157 <div class="memproto">
2158 <table class="memname">
2160 <td class="memname">__kernel void NV21_to_RGB888_bt709 </td>
2162 <td class="paramtype">__global uchar * </td>
2163 <td class="paramname"><em>luma_input_ptr</em>, </td>
2166 <td class="paramkey"></td>
2168 <td class="paramtype">uint </td>
2169 <td class="paramname"><em>luma_input_stride_x</em>, </td>
2172 <td class="paramkey"></td>
2174 <td class="paramtype">uint </td>
2175 <td class="paramname"><em>luma_input_step_x</em>, </td>
2178 <td class="paramkey"></td>
2180 <td class="paramtype">uint </td>
2181 <td class="paramname"><em>luma_input_stride_y</em>, </td>
2184 <td class="paramkey"></td>
2186 <td class="paramtype">uint </td>
2187 <td class="paramname"><em>luma_input_step_y</em>, </td>
2190 <td class="paramkey"></td>
2192 <td class="paramtype">uint </td>
2193 <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
2196 <td class="paramkey"></td>
2198 <td class="paramtype">__global uchar * </td>
2199 <td class="paramname"><em>uv_input_ptr</em>, </td>
2202 <td class="paramkey"></td>
2204 <td class="paramtype">uint </td>
2205 <td class="paramname"><em>uv_input_stride_x</em>, </td>
2208 <td class="paramkey"></td>
2210 <td class="paramtype">uint </td>
2211 <td class="paramname"><em>uv_input_step_x</em>, </td>
2214 <td class="paramkey"></td>
2216 <td class="paramtype">uint </td>
2217 <td class="paramname"><em>uv_input_stride_y</em>, </td>
2220 <td class="paramkey"></td>
2222 <td class="paramtype">uint </td>
2223 <td class="paramname"><em>uv_input_step_y</em>, </td>
2226 <td class="paramkey"></td>
2228 <td class="paramtype">uint </td>
2229 <td class="paramname"><em>uv_input_offset_first_element_in_bytes</em>, </td>
2232 <td class="paramkey"></td>
2234 <td class="paramtype">__global uchar * </td>
2235 <td class="paramname"><em>rgb_output_ptr</em>, </td>
2238 <td class="paramkey"></td>
2240 <td class="paramtype">uint </td>
2241 <td class="paramname"><em>rgb_output_stride_x</em>, </td>
2244 <td class="paramkey"></td>
2246 <td class="paramtype">uint </td>
2247 <td class="paramname"><em>rgb_output_step_x</em>, </td>
2250 <td class="paramkey"></td>
2252 <td class="paramtype">uint </td>
2253 <td class="paramname"><em>rgb_output_stride_y</em>, </td>
2256 <td class="paramkey"></td>
2258 <td class="paramtype">uint </td>
2259 <td class="paramname"><em>rgb_output_step_y</em>, </td>
2262 <td class="paramkey"></td>
2264 <td class="paramtype">uint </td>
2265 <td class="paramname"><em>rgb_output_offset_first_element_in_bytes</em> </td>
2273 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  <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>  <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>  <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> </div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  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>  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>  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> </div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  float4 f_r = convert_float4(luma_0) + temp0;</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  float4 f_g = convert_float4(luma_0) + temp1;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  float4 f_b = convert_float4(luma_0) + temp2;</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> </div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  uchar4 r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  uchar4 g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  uchar4 b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> </div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  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>  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>  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>  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> </div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  f_r = convert_float4(luma_1) + temp0;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  f_g = convert_float4(luma_1) + temp1;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  f_b = convert_float4(luma_1) + temp2;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> </div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> </div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  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>  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>  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>  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> }</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 -->
2310 <a class="anchor" id="ad96db99a88669713407e91c036b06df2"></a>
2311 <div class="memitem">
2312 <div class="memproto">
2313 <table class="memname">
2315 <td class="memname">__kernel void NV21_to_RGBA8888_bt709 </td>
2317 <td class="paramtype">__global uchar * </td>
2318 <td class="paramname"><em>luma_input_ptr</em>, </td>
2321 <td class="paramkey"></td>
2323 <td class="paramtype">uint </td>
2324 <td class="paramname"><em>luma_input_stride_x</em>, </td>
2327 <td class="paramkey"></td>
2329 <td class="paramtype">uint </td>
2330 <td class="paramname"><em>luma_input_step_x</em>, </td>
2333 <td class="paramkey"></td>
2335 <td class="paramtype">uint </td>
2336 <td class="paramname"><em>luma_input_stride_y</em>, </td>
2339 <td class="paramkey"></td>
2341 <td class="paramtype">uint </td>
2342 <td class="paramname"><em>luma_input_step_y</em>, </td>
2345 <td class="paramkey"></td>
2347 <td class="paramtype">uint </td>
2348 <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
2351 <td class="paramkey"></td>
2353 <td class="paramtype">__global uchar * </td>
2354 <td class="paramname"><em>uv_input_ptr</em>, </td>
2357 <td class="paramkey"></td>
2359 <td class="paramtype">uint </td>
2360 <td class="paramname"><em>uv_input_stride_x</em>, </td>
2363 <td class="paramkey"></td>
2365 <td class="paramtype">uint </td>
2366 <td class="paramname"><em>uv_input_step_x</em>, </td>
2369 <td class="paramkey"></td>
2371 <td class="paramtype">uint </td>
2372 <td class="paramname"><em>uv_input_stride_y</em>, </td>
2375 <td class="paramkey"></td>
2377 <td class="paramtype">uint </td>
2378 <td class="paramname"><em>uv_input_step_y</em>, </td>
2381 <td class="paramkey"></td>
2383 <td class="paramtype">uint </td>
2384 <td class="paramname"><em>uv_input_offset_first_element_in_bytes</em>, </td>
2387 <td class="paramkey"></td>
2389 <td class="paramtype">__global uchar * </td>
2390 <td class="paramname"><em>rgba_output_ptr</em>, </td>
2393 <td class="paramkey"></td>
2395 <td class="paramtype">uint </td>
2396 <td class="paramname"><em>rgba_output_stride_x</em>, </td>
2399 <td class="paramkey"></td>
2401 <td class="paramtype">uint </td>
2402 <td class="paramname"><em>rgba_output_step_x</em>, </td>
2405 <td class="paramkey"></td>
2407 <td class="paramtype">uint </td>
2408 <td class="paramname"><em>rgba_output_stride_y</em>, </td>
2411 <td class="paramkey"></td>
2413 <td class="paramtype">uint </td>
2414 <td class="paramname"><em>rgba_output_step_y</em>, </td>
2417 <td class="paramkey"></td>
2419 <td class="paramtype">uint </td>
2420 <td class="paramname"><em>rgba_output_offset_first_element_in_bytes</em> </td>
2428 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  <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>  <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>  <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> </div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  <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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  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>  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>  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> </div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  float4 f_r = convert_float4(luma_0) + temp0;</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  float4 f_g = convert_float4(luma_0) + temp1;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  float4 f_b = convert_float4(luma_0) + temp2;</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> </div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  uchar4 r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  uchar4 g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  uchar4 b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> </div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  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>  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>  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>  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> </div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  f_r = convert_float4(luma_1) + temp0;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  f_g = convert_float4(luma_1) + temp1;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  f_b = convert_float4(luma_1) + temp2;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span> </div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  r_0 = convert_uchar4_rtz(f_r);</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  g_0 = convert_uchar4_rtz(f_g);</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  b_0 = convert_uchar4_rtz(f_b);</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span> </div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  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>  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>  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>  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> }</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 -->
2465 <a class="anchor" id="abd3f622e7d731ae70306266b334ff33b"></a>
2466 <div class="memitem">
2467 <div class="memproto">
2468 <table class="memname">
2470 <td class="memname">__kernel void NV21_to_YUV444_bt709 </td>
2472 <td class="paramtype">__global uchar * </td>
2473 <td class="paramname"><em>luma_input_ptr</em>, </td>
2476 <td class="paramkey"></td>
2478 <td class="paramtype">uint </td>
2479 <td class="paramname"><em>luma_input_stride_x</em>, </td>
2482 <td class="paramkey"></td>
2484 <td class="paramtype">uint </td>
2485 <td class="paramname"><em>luma_input_step_x</em>, </td>
2488 <td class="paramkey"></td>
2490 <td class="paramtype">uint </td>
2491 <td class="paramname"><em>luma_input_stride_y</em>, </td>
2494 <td class="paramkey"></td>
2496 <td class="paramtype">uint </td>
2497 <td class="paramname"><em>luma_input_step_y</em>, </td>
2500 <td class="paramkey"></td>
2502 <td class="paramtype">uint </td>
2503 <td class="paramname"><em>luma_input_offset_first_element_in_bytes</em>, </td>
2506 <td class="paramkey"></td>
2508 <td class="paramtype">__global uchar * </td>
2509 <td class="paramname"><em>uv_input_ptr</em>, </td>
2512 <td class="paramkey"></td>
2514 <td class="paramtype">uint </td>
2515 <td class="paramname"><em>uv_input_stride_x</em>, </td>
2518 <td class="paramkey"></td>
2520 <td class="paramtype">uint </td>
2521 <td class="paramname"><em>uv_input_step_x</em>, </td>
2524 <td class="paramkey"></td>
2526 <td class="paramtype">uint </td>
2527 <td class="paramname"><em>uv_input_stride_y</em>, </td>
2530 <td class="paramkey"></td>
2532 <td class="paramtype">uint </td>
2533 <td class="paramname"><em>uv_input_step_y</em>, </td>
2536 <td class="paramkey"></td>
2538 <td class="paramtype">uint </td>
2539 <td class="paramname"><em>uv_input_offset_first_element_in_bytes</em>, </td>
2542 <td class="paramkey"></td>
2544 <td class="paramtype">__global uchar * </td>
2545 <td class="paramname"><em>luma_output_ptr</em>, </td>
2548 <td class="paramkey"></td>
2550 <td class="paramtype">uint </td>
2551 <td class="paramname"><em>luma_output_stride_x</em>, </td>
2554 <td class="paramkey"></td>
2556 <td class="paramtype">uint </td>
2557 <td class="paramname"><em>luma_output_step_x</em>, </td>
2560 <td class="paramkey"></td>
2562 <td class="paramtype">uint </td>
2563 <td class="paramname"><em>luma_output_stride_y</em>, </td>
2566 <td class="paramkey"></td>
2568 <td class="paramtype">uint </td>
2569 <td class="paramname"><em>luma_output_step_y</em>, </td>
2572 <td class="paramkey"></td>
2574 <td class="paramtype">uint </td>
2575 <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
2578 <td class="paramkey"></td>
2580 <td class="paramtype">__global uchar * </td>
2581 <td class="paramname"><em>u_output_ptr</em>, </td>
2584 <td class="paramkey"></td>
2586 <td class="paramtype">uint </td>
2587 <td class="paramname"><em>u_output_stride_x</em>, </td>
2590 <td class="paramkey"></td>
2592 <td class="paramtype">uint </td>
2593 <td class="paramname"><em>u_output_step_x</em>, </td>
2596 <td class="paramkey"></td>
2598 <td class="paramtype">uint </td>
2599 <td class="paramname"><em>u_output_stride_y</em>, </td>
2602 <td class="paramkey"></td>
2604 <td class="paramtype">uint </td>
2605 <td class="paramname"><em>u_output_step_y</em>, </td>
2608 <td class="paramkey"></td>
2610 <td class="paramtype">uint </td>
2611 <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
2614 <td class="paramkey"></td>
2616 <td class="paramtype">__global uchar * </td>
2617 <td class="paramname"><em>v_output_ptr</em>, </td>
2620 <td class="paramkey"></td>
2622 <td class="paramtype">uint </td>
2623 <td class="paramname"><em>v_output_stride_x</em>, </td>
2626 <td class="paramkey"></td>
2628 <td class="paramtype">uint </td>
2629 <td class="paramname"><em>v_output_step_x</em>, </td>
2632 <td class="paramkey"></td>
2634 <td class="paramtype">uint </td>
2635 <td class="paramname"><em>v_output_stride_y</em>, </td>
2638 <td class="paramkey"></td>
2640 <td class="paramtype">uint </td>
2641 <td class="paramname"><em>v_output_step_y</em>, </td>
2644 <td class="paramkey"></td>
2646 <td class="paramtype">uint </td>
2647 <td class="paramname"><em>v_output_offset_first_element_in_bytes</em> </td>
2655 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  <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>  <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>  <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>  <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>  <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> </div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  <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>  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>  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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  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>  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>  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>  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>  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>  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> }</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 -->
2704 <a class="anchor" id="a0e87467985f2b64c5aaf073ee5c64267"></a>
2705 <div class="memitem">
2706 <div class="memproto">
2707 <table class="memname">
2709 <td class="memname">__kernel void RGB888_to_IYUV_bt709 </td>
2711 <td class="paramtype">__global uchar * </td>
2712 <td class="paramname"><em>rgb_input_ptr</em>, </td>
2715 <td class="paramkey"></td>
2717 <td class="paramtype">uint </td>
2718 <td class="paramname"><em>rgb_input_stride_x</em>, </td>
2721 <td class="paramkey"></td>
2723 <td class="paramtype">uint </td>
2724 <td class="paramname"><em>rgb_input_step_x</em>, </td>
2727 <td class="paramkey"></td>
2729 <td class="paramtype">uint </td>
2730 <td class="paramname"><em>rgb_input_stride_y</em>, </td>
2733 <td class="paramkey"></td>
2735 <td class="paramtype">uint </td>
2736 <td class="paramname"><em>rgb_input_step_y</em>, </td>
2739 <td class="paramkey"></td>
2741 <td class="paramtype">uint </td>
2742 <td class="paramname"><em>rgb_input_offset_first_element_in_bytes</em>, </td>
2745 <td class="paramkey"></td>
2747 <td class="paramtype">__global uchar * </td>
2748 <td class="paramname"><em>luma_output_ptr</em>, </td>
2751 <td class="paramkey"></td>
2753 <td class="paramtype">uint </td>
2754 <td class="paramname"><em>luma_output_stride_x</em>, </td>
2757 <td class="paramkey"></td>
2759 <td class="paramtype">uint </td>
2760 <td class="paramname"><em>luma_output_step_x</em>, </td>
2763 <td class="paramkey"></td>
2765 <td class="paramtype">uint </td>
2766 <td class="paramname"><em>luma_output_stride_y</em>, </td>
2769 <td class="paramkey"></td>
2771 <td class="paramtype">uint </td>
2772 <td class="paramname"><em>luma_output_step_y</em>, </td>
2775 <td class="paramkey"></td>
2777 <td class="paramtype">uint </td>
2778 <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
2781 <td class="paramkey"></td>
2783 <td class="paramtype">__global uchar * </td>
2784 <td class="paramname"><em>u_output_ptr</em>, </td>
2787 <td class="paramkey"></td>
2789 <td class="paramtype">uint </td>
2790 <td class="paramname"><em>u_output_stride_x</em>, </td>
2793 <td class="paramkey"></td>
2795 <td class="paramtype">uint </td>
2796 <td class="paramname"><em>u_output_step_x</em>, </td>
2799 <td class="paramkey"></td>
2801 <td class="paramtype">uint </td>
2802 <td class="paramname"><em>u_output_stride_y</em>, </td>
2805 <td class="paramkey"></td>
2807 <td class="paramtype">uint </td>
2808 <td class="paramname"><em>u_output_step_y</em>, </td>
2811 <td class="paramkey"></td>
2813 <td class="paramtype">uint </td>
2814 <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
2817 <td class="paramkey"></td>
2819 <td class="paramtype">__global uchar * </td>
2820 <td class="paramname"><em>v_output_ptr</em>, </td>
2823 <td class="paramkey"></td>
2825 <td class="paramtype">uint </td>
2826 <td class="paramname"><em>v_output_stride_x</em>, </td>
2829 <td class="paramkey"></td>
2831 <td class="paramtype">uint </td>
2832 <td class="paramname"><em>v_output_step_x</em>, </td>
2835 <td class="paramkey"></td>
2837 <td class="paramtype">uint </td>
2838 <td class="paramname"><em>v_output_stride_y</em>, </td>
2841 <td class="paramkey"></td>
2843 <td class="paramtype">uint </td>
2844 <td class="paramname"><em>v_output_step_y</em>, </td>
2847 <td class="paramkey"></td>
2849 <td class="paramtype">uint </td>
2850 <td class="paramname"><em>v_output_offset_first_element_in_bytes</em> </td>
2858 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <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>  <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>  <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>  <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>  <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> </div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="comment">// Read 2 pixel of the first line</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  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>  uchar2 r_0 = (uchar2)(rgb_0.s0, rgb_0.s3);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  uchar2 g_0 = (uchar2)(rgb_0.s1, rgb_0.s4);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  uchar2 b_0 = (uchar2)(rgb_0.s2, rgb_0.s5);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span> </div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  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>  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>  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> </div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  short2 i_y = convert_short2_rtz(f_y);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  short2 i_u = convert_short2_rtz(f_u) + (short2)(128);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  short2 i_v = convert_short2_rtz(f_v) + (short2)(128);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> </div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  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>  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> </div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  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>  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> </div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="comment">// Read 2 pixel of the second line</span></div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  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>  uchar2 r_1 = (uchar2)(rgb_1.s0, rgb_1.s3);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  uchar2 g_1 = (uchar2)(rgb_1.s1, rgb_1.s4);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  uchar2 b_1 = (uchar2)(rgb_1.s2, rgb_1.s5);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  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>  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>  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> </div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  i_y = convert_short2_rtz(f_y);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  i_u = convert_short2_rtz(f_u) + (short2)(128);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  i_v = convert_short2_rtz(f_v) + (short2)(128);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span> </div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  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>  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> </div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  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>  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>  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>  ((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>  *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>  *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> }</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< T > min(fixed_point< T > x, fixed_point< T > 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< T > max(fixed_point< T > x, fixed_point< T > 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 -->
2903 <a class="anchor" id="aa07d313ff115012737d4b522efc6079f"></a>
2904 <div class="memitem">
2905 <div class="memproto">
2906 <table class="memname">
2908 <td class="memname">__kernel void RGB888_to_NV12_bt709 </td>
2910 <td class="paramtype">__global uchar * </td>
2911 <td class="paramname"><em>input_ptr</em>, </td>
2914 <td class="paramkey"></td>
2916 <td class="paramtype">uint </td>
2917 <td class="paramname"><em>input_stride_x</em>, </td>
2920 <td class="paramkey"></td>
2922 <td class="paramtype">uint </td>
2923 <td class="paramname"><em>input_step_x</em>, </td>
2926 <td class="paramkey"></td>
2928 <td class="paramtype">uint </td>
2929 <td class="paramname"><em>input_stride_y</em>, </td>
2932 <td class="paramkey"></td>
2934 <td class="paramtype">uint </td>
2935 <td class="paramname"><em>input_step_y</em>, </td>
2938 <td class="paramkey"></td>
2940 <td class="paramtype">uint </td>
2941 <td class="paramname"><em>input_offset_first_element_in_bytes</em>, </td>
2944 <td class="paramkey"></td>
2946 <td class="paramtype">__global uchar * </td>
2947 <td class="paramname"><em>luma_ptr</em>, </td>
2950 <td class="paramkey"></td>
2952 <td class="paramtype">uint </td>
2953 <td class="paramname"><em>luma_stride_x</em>, </td>
2956 <td class="paramkey"></td>
2958 <td class="paramtype">uint </td>
2959 <td class="paramname"><em>luma_step_x</em>, </td>
2962 <td class="paramkey"></td>
2964 <td class="paramtype">uint </td>
2965 <td class="paramname"><em>luma_stride_y</em>, </td>
2968 <td class="paramkey"></td>
2970 <td class="paramtype">uint </td>
2971 <td class="paramname"><em>luma_step_y</em>, </td>
2974 <td class="paramkey"></td>
2976 <td class="paramtype">uint </td>
2977 <td class="paramname"><em>luma_offset_first_element_in_bytes</em>, </td>
2980 <td class="paramkey"></td>
2982 <td class="paramtype">__global uchar * </td>
2983 <td class="paramname"><em>uv_ptr</em>, </td>
2986 <td class="paramkey"></td>
2988 <td class="paramtype">uint </td>
2989 <td class="paramname"><em>uv_stride_x</em>, </td>
2992 <td class="paramkey"></td>
2994 <td class="paramtype">uint </td>
2995 <td class="paramname"><em>uv_step_x</em>, </td>
2998 <td class="paramkey"></td>
3000 <td class="paramtype">uint </td>
3001 <td class="paramname"><em>uv_stride_y</em>, </td>
3004 <td class="paramkey"></td>
3006 <td class="paramtype">uint </td>
3007 <td class="paramname"><em>uv_step_y</em>, </td>
3010 <td class="paramkey"></td>
3012 <td class="paramtype">uint </td>
3013 <td class="paramname"><em>uv_offset_first_element_in_bytes</em> </td>
3021 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <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>  <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>  <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> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <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>  <span class="comment">// Read 2 pixel of the first line</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  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>  uchar2 r_0 = (uchar2)(rgb_0.s0, rgb_0.s3);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  uchar2 g_0 = (uchar2)(rgb_0.s1, rgb_0.s4);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  uchar2 b_0 = (uchar2)(rgb_0.s2, rgb_0.s5);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  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>  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>  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> </div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  short2 i_y = convert_short2_rtz(f_y);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  short2 i_u = convert_short2_rtz(f_u) + (short2)(128);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  short2 i_v = convert_short2_rtz(f_v) + (short2)(128);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  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>  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> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  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>  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> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="comment">// Read 2 pixel of the second line</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  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>  uchar2 r_1 = (uchar2)(rgb_1.s0, rgb_1.s3);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  uchar2 g_1 = (uchar2)(rgb_1.s1, rgb_1.s4);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  uchar2 b_1 = (uchar2)(rgb_1.s2, rgb_1.s5);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  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>  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>  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> </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  i_y = convert_short2_rtz(f_y);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  i_u = convert_short2_rtz(f_u) + (short2)(128);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  i_v = convert_short2_rtz(f_v) + (short2)(128);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  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>  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> </div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  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>  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>  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>  ((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> </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  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> }</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< T > min(fixed_point< T > x, fixed_point< T > 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< T > max(fixed_point< T > x, fixed_point< T > 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 -->
3060 <a class="anchor" id="a2a21de930ca0898bed0a081f40cb4406"></a>
3061 <div class="memitem">
3062 <div class="memproto">
3063 <table class="memname">
3065 <td class="memname">__kernel void RGB888_to_RGBA8888_bt709 </td>
3067 <td class="paramtype">__global uchar * </td>
3068 <td class="paramname"><em>input_ptr</em>, </td>
3071 <td class="paramkey"></td>
3073 <td class="paramtype">uint </td>
3074 <td class="paramname"><em>input_stride_x</em>, </td>
3077 <td class="paramkey"></td>
3079 <td class="paramtype">uint </td>
3080 <td class="paramname"><em>input_step_x</em>, </td>
3083 <td class="paramkey"></td>
3085 <td class="paramtype">uint </td>
3086 <td class="paramname"><em>input_stride_y</em>, </td>
3089 <td class="paramkey"></td>
3091 <td class="paramtype">uint </td>
3092 <td class="paramname"><em>input_step_y</em>, </td>
3095 <td class="paramkey"></td>
3097 <td class="paramtype">uint </td>
3098 <td class="paramname"><em>input_offset_first_element_in_bytes</em>, </td>
3101 <td class="paramkey"></td>
3103 <td class="paramtype">__global uchar * </td>
3104 <td class="paramname"><em>output_ptr</em>, </td>
3107 <td class="paramkey"></td>
3109 <td class="paramtype">uint </td>
3110 <td class="paramname"><em>output_stride_x</em>, </td>
3113 <td class="paramkey"></td>
3115 <td class="paramtype">uint </td>
3116 <td class="paramname"><em>output_step_x</em>, </td>
3119 <td class="paramkey"></td>
3121 <td class="paramtype">uint </td>
3122 <td class="paramname"><em>output_stride_y</em>, </td>
3125 <td class="paramkey"></td>
3127 <td class="paramtype">uint </td>
3128 <td class="paramname"><em>output_step_y</em>, </td>
3131 <td class="paramkey"></td>
3133 <td class="paramtype">uint </td>
3134 <td class="paramname"><em>output_offset_first_element_in_bytes</em> </td>
3142 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <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>  <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> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// handle 16 pixels every time</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  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>  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>  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> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  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>  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>  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>  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> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  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>  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>  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>  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> }</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 -->
3173 <a class="anchor" id="a917c100f2da4a0e773bb63dd4f87de0b"></a>
3174 <div class="memitem">
3175 <div class="memproto">
3176 <table class="memname">
3178 <td class="memname">__kernel void RGB888_to_YUV444_bt709 </td>
3180 <td class="paramtype">__global uchar * </td>
3181 <td class="paramname"><em>rgb_input_ptr</em>, </td>
3184 <td class="paramkey"></td>
3186 <td class="paramtype">uint </td>
3187 <td class="paramname"><em>rgb_input_stride_x</em>, </td>
3190 <td class="paramkey"></td>
3192 <td class="paramtype">uint </td>
3193 <td class="paramname"><em>rgb_input_step_x</em>, </td>
3196 <td class="paramkey"></td>
3198 <td class="paramtype">uint </td>
3199 <td class="paramname"><em>rgb_input_stride_y</em>, </td>
3202 <td class="paramkey"></td>
3204 <td class="paramtype">uint </td>
3205 <td class="paramname"><em>rgb_input_step_y</em>, </td>
3208 <td class="paramkey"></td>
3210 <td class="paramtype">uint </td>
3211 <td class="paramname"><em>rgb_input_offset_first_element_in_bytes</em>, </td>
3214 <td class="paramkey"></td>
3216 <td class="paramtype">__global uchar * </td>
3217 <td class="paramname"><em>luma_output_ptr</em>, </td>
3220 <td class="paramkey"></td>
3222 <td class="paramtype">uint </td>
3223 <td class="paramname"><em>luma_output_stride_x</em>, </td>
3226 <td class="paramkey"></td>
3228 <td class="paramtype">uint </td>
3229 <td class="paramname"><em>luma_output_step_x</em>, </td>
3232 <td class="paramkey"></td>
3234 <td class="paramtype">uint </td>
3235 <td class="paramname"><em>luma_output_stride_y</em>, </td>
3238 <td class="paramkey"></td>
3240 <td class="paramtype">uint </td>
3241 <td class="paramname"><em>luma_output_step_y</em>, </td>
3244 <td class="paramkey"></td>
3246 <td class="paramtype">uint </td>
3247 <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
3250 <td class="paramkey"></td>
3252 <td class="paramtype">__global uchar * </td>
3253 <td class="paramname"><em>u_output_ptr</em>, </td>
3256 <td class="paramkey"></td>
3258 <td class="paramtype">uint </td>
3259 <td class="paramname"><em>u_output_stride_x</em>, </td>
3262 <td class="paramkey"></td>
3264 <td class="paramtype">uint </td>
3265 <td class="paramname"><em>u_output_step_x</em>, </td>
3268 <td class="paramkey"></td>
3270 <td class="paramtype">uint </td>
3271 <td class="paramname"><em>u_output_stride_y</em>, </td>
3274 <td class="paramkey"></td>
3276 <td class="paramtype">uint </td>
3277 <td class="paramname"><em>u_output_step_y</em>, </td>
3280 <td class="paramkey"></td>
3282 <td class="paramtype">uint </td>
3283 <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
3286 <td class="paramkey"></td>
3288 <td class="paramtype">__global uchar * </td>
3289 <td class="paramname"><em>v_output_ptr</em>, </td>
3292 <td class="paramkey"></td>
3294 <td class="paramtype">uint </td>
3295 <td class="paramname"><em>v_output_stride_x</em>, </td>
3298 <td class="paramkey"></td>
3300 <td class="paramtype">uint </td>
3301 <td class="paramname"><em>v_output_step_x</em>, </td>
3304 <td class="paramkey"></td>
3306 <td class="paramtype">uint </td>
3307 <td class="paramname"><em>v_output_stride_y</em>, </td>
3310 <td class="paramkey"></td>
3312 <td class="paramtype">uint </td>
3313 <td class="paramname"><em>v_output_step_y</em>, </td>
3316 <td class="paramkey"></td>
3318 <td class="paramtype">uint </td>
3319 <td class="paramname"><em>v_output_offset_first_element_in_bytes</em> </td>
3327 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="comment">// handle 4 pixels every time</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <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>  <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>  <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>  <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> </div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="comment">// Read 4 pixel</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  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>  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>  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>  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> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  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>  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>  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> </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  short4 i_y = convert_short4_rtz(f_y);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  short4 i_u = convert_short4_rtz(f_u) + (short4)(128);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  short4 i_v = convert_short4_rtz(f_v) + (short4)(128);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  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>  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> </div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  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>  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>  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>  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> }</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< T > min(fixed_point< T > x, fixed_point< T > 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< T > max(fixed_point< T > x, fixed_point< T > 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 -->
3372 <a class="anchor" id="a18ef3b2b70de9af3e4386b2a07f2cd36"></a>
3373 <div class="memitem">
3374 <div class="memproto">
3375 <table class="memname">
3377 <td class="memname">__kernel void RGBA8888_to_IYUV_bt709 </td>
3379 <td class="paramtype">__global uchar * </td>
3380 <td class="paramname"><em>rgba_input_ptr</em>, </td>
3383 <td class="paramkey"></td>
3385 <td class="paramtype">uint </td>
3386 <td class="paramname"><em>rgba_input_stride_x</em>, </td>
3389 <td class="paramkey"></td>
3391 <td class="paramtype">uint </td>
3392 <td class="paramname"><em>rgba_input_step_x</em>, </td>
3395 <td class="paramkey"></td>
3397 <td class="paramtype">uint </td>
3398 <td class="paramname"><em>rgba_input_stride_y</em>, </td>
3401 <td class="paramkey"></td>
3403 <td class="paramtype">uint </td>
3404 <td class="paramname"><em>rgba_input_step_y</em>, </td>
3407 <td class="paramkey"></td>
3409 <td class="paramtype">uint </td>
3410 <td class="paramname"><em>rgba_input_offset_first_element_in_bytes</em>, </td>
3413 <td class="paramkey"></td>
3415 <td class="paramtype">__global uchar * </td>
3416 <td class="paramname"><em>luma_output_ptr</em>, </td>
3419 <td class="paramkey"></td>
3421 <td class="paramtype">uint </td>
3422 <td class="paramname"><em>luma_output_stride_x</em>, </td>
3425 <td class="paramkey"></td>
3427 <td class="paramtype">uint </td>
3428 <td class="paramname"><em>luma_output_step_x</em>, </td>
3431 <td class="paramkey"></td>
3433 <td class="paramtype">uint </td>
3434 <td class="paramname"><em>luma_output_stride_y</em>, </td>
3437 <td class="paramkey"></td>
3439 <td class="paramtype">uint </td>
3440 <td class="paramname"><em>luma_output_step_y</em>, </td>
3443 <td class="paramkey"></td>
3445 <td class="paramtype">uint </td>
3446 <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
3449 <td class="paramkey"></td>
3451 <td class="paramtype">__global uchar * </td>
3452 <td class="paramname"><em>u_output_ptr</em>, </td>
3455 <td class="paramkey"></td>
3457 <td class="paramtype">uint </td>
3458 <td class="paramname"><em>u_output_stride_x</em>, </td>
3461 <td class="paramkey"></td>
3463 <td class="paramtype">uint </td>
3464 <td class="paramname"><em>u_output_step_x</em>, </td>
3467 <td class="paramkey"></td>
3469 <td class="paramtype">uint </td>
3470 <td class="paramname"><em>u_output_stride_y</em>, </td>
3473 <td class="paramkey"></td>
3475 <td class="paramtype">uint </td>
3476 <td class="paramname"><em>u_output_step_y</em>, </td>
3479 <td class="paramkey"></td>
3481 <td class="paramtype">uint </td>
3482 <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
3485 <td class="paramkey"></td>
3487 <td class="paramtype">__global uchar * </td>
3488 <td class="paramname"><em>v_output_ptr</em>, </td>
3491 <td class="paramkey"></td>
3493 <td class="paramtype">uint </td>
3494 <td class="paramname"><em>v_output_stride_x</em>, </td>
3497 <td class="paramkey"></td>
3499 <td class="paramtype">uint </td>
3500 <td class="paramname"><em>v_output_step_x</em>, </td>
3503 <td class="paramkey"></td>
3505 <td class="paramtype">uint </td>
3506 <td class="paramname"><em>v_output_stride_y</em>, </td>
3509 <td class="paramkey"></td>
3511 <td class="paramtype">uint </td>
3512 <td class="paramname"><em>v_output_step_y</em>, </td>
3515 <td class="paramkey"></td>
3517 <td class="paramtype">uint </td>
3518 <td class="paramname"><em>v_output_offset_first_element_in_bytes</em> </td>
3526 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <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>  <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>  <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>  <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>  <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> </div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="comment">// Read 2 pixel of the first line</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  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>  uchar2 r_0 = (uchar2)(rgb_0.s0, rgb_0.s4);</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  uchar2 g_0 = (uchar2)(rgb_0.s1, rgb_0.s5);</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  uchar2 b_0 = (uchar2)(rgb_0.s2, rgb_0.s6);</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> </div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  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>  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>  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> </div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  short2 i_y = convert_short2_rtz(f_y);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  short2 i_u = convert_short2_rtz(f_u) + (short2)(128);</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  short2 i_v = convert_short2_rtz(f_v) + (short2)(128);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> </div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  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>  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> </div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  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>  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> </div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="comment">// Read 2 pixel of the second line</span></div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  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>  uchar2 r_1 = (uchar2)(rgb_1.s0, rgb_1.s4);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  uchar2 g_1 = (uchar2)(rgb_1.s1, rgb_1.s5);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  uchar2 b_1 = (uchar2)(rgb_1.s2, rgb_1.s6);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> </div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  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>  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>  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> </div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  i_y = convert_short2_rtz(f_y);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  i_u = convert_short2_rtz(f_u) + (short2)(128);</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  i_v = convert_short2_rtz(f_v) + (short2)(128);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> </div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  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>  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> </div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  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>  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>  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>  ((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>  *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>  *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> }</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< T > min(fixed_point< T > x, fixed_point< T > 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< T > max(fixed_point< T > x, fixed_point< T > 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 -->
3571 <a class="anchor" id="a9ef9b466943c743b2a0f2865a70f741a"></a>
3572 <div class="memitem">
3573 <div class="memproto">
3574 <table class="memname">
3576 <td class="memname">__kernel void RGBA8888_to_NV12_bt709 </td>
3578 <td class="paramtype">__global uchar * </td>
3579 <td class="paramname"><em>input_ptr</em>, </td>
3582 <td class="paramkey"></td>
3584 <td class="paramtype">uint </td>
3585 <td class="paramname"><em>input_stride_x</em>, </td>
3588 <td class="paramkey"></td>
3590 <td class="paramtype">uint </td>
3591 <td class="paramname"><em>input_step_x</em>, </td>
3594 <td class="paramkey"></td>
3596 <td class="paramtype">uint </td>
3597 <td class="paramname"><em>input_stride_y</em>, </td>
3600 <td class="paramkey"></td>
3602 <td class="paramtype">uint </td>
3603 <td class="paramname"><em>input_step_y</em>, </td>
3606 <td class="paramkey"></td>
3608 <td class="paramtype">uint </td>
3609 <td class="paramname"><em>input_offset_first_element_in_bytes</em>, </td>
3612 <td class="paramkey"></td>
3614 <td class="paramtype">__global uchar * </td>
3615 <td class="paramname"><em>luma_output_ptr</em>, </td>
3618 <td class="paramkey"></td>
3620 <td class="paramtype">uint </td>
3621 <td class="paramname"><em>luma_output_stride_x</em>, </td>
3624 <td class="paramkey"></td>
3626 <td class="paramtype">uint </td>
3627 <td class="paramname"><em>luma_output_step_x</em>, </td>
3630 <td class="paramkey"></td>
3632 <td class="paramtype">uint </td>
3633 <td class="paramname"><em>luma_output_stride_y</em>, </td>
3636 <td class="paramkey"></td>
3638 <td class="paramtype">uint </td>
3639 <td class="paramname"><em>luma_output_step_y</em>, </td>
3642 <td class="paramkey"></td>
3644 <td class="paramtype">uint </td>
3645 <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
3648 <td class="paramkey"></td>
3650 <td class="paramtype">__global uchar * </td>
3651 <td class="paramname"><em>uv_output_ptr</em>, </td>
3654 <td class="paramkey"></td>
3656 <td class="paramtype">uint </td>
3657 <td class="paramname"><em>uv_output_stride_x</em>, </td>
3660 <td class="paramkey"></td>
3662 <td class="paramtype">uint </td>
3663 <td class="paramname"><em>uv_output_step_x</em>, </td>
3666 <td class="paramkey"></td>
3668 <td class="paramtype">uint </td>
3669 <td class="paramname"><em>uv_output_stride_y</em>, </td>
3672 <td class="paramkey"></td>
3674 <td class="paramtype">uint </td>
3675 <td class="paramname"><em>uv_output_step_y</em>, </td>
3678 <td class="paramkey"></td>
3680 <td class="paramtype">uint </td>
3681 <td class="paramname"><em>uv_output_offset_first_element_in_bytes</em> </td>
3689 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <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>  <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>  <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> </div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <span class="comment">// Read 2 pixel of the first line</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  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>  uchar2 r_0 = (uchar2)(rgb_0.s0, rgb_0.s4);</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  uchar2 g_0 = (uchar2)(rgb_0.s1, rgb_0.s5);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  uchar2 b_0 = (uchar2)(rgb_0.s2, rgb_0.s6);</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span> </div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  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>  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>  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> </div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  short2 i_y = convert_short2_rtz(f_y);</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  short2 i_u = convert_short2_rtz(f_u) + (short2)(128);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  short2 i_v = convert_short2_rtz(f_v) + (short2)(128);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span> </div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  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>  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> </div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  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>  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> </div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="comment">// Read 2 pixel of the second line</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  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>  uchar2 r_1 = (uchar2)(rgb_1.s0, rgb_1.s4);</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  uchar2 g_1 = (uchar2)(rgb_1.s1, rgb_1.s5);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  uchar2 b_1 = (uchar2)(rgb_1.s2, rgb_1.s6);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> </div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  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>  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>  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> </div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  i_y = convert_short2_rtz(f_y);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  i_u = convert_short2_rtz(f_u) + (short2)(128);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  i_v = convert_short2_rtz(f_v) + (short2)(128);</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> </div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  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>  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> </div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  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>  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>  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>  ((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>  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> }</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< T > min(fixed_point< T > x, fixed_point< T > 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< T > max(fixed_point< T > x, fixed_point< T > 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 -->
3728 <a class="anchor" id="ae424d47188a7fffd83a3a9d0c0e1ce6e"></a>
3729 <div class="memitem">
3730 <div class="memproto">
3731 <table class="memname">
3733 <td class="memname">__kernel void RGBA8888_to_RGB888_bt709 </td>
3735 <td class="paramtype">__global uchar * </td>
3736 <td class="paramname"><em>input_ptr</em>, </td>
3739 <td class="paramkey"></td>
3741 <td class="paramtype">uint </td>
3742 <td class="paramname"><em>input_stride_x</em>, </td>
3745 <td class="paramkey"></td>
3747 <td class="paramtype">uint </td>
3748 <td class="paramname"><em>input_step_x</em>, </td>
3751 <td class="paramkey"></td>
3753 <td class="paramtype">uint </td>
3754 <td class="paramname"><em>input_stride_y</em>, </td>
3757 <td class="paramkey"></td>
3759 <td class="paramtype">uint </td>
3760 <td class="paramname"><em>input_step_y</em>, </td>
3763 <td class="paramkey"></td>
3765 <td class="paramtype">uint </td>
3766 <td class="paramname"><em>input_offset_first_element_in_bytes</em>, </td>
3769 <td class="paramkey"></td>
3771 <td class="paramtype">__global uchar * </td>
3772 <td class="paramname"><em>output_ptr</em>, </td>
3775 <td class="paramkey"></td>
3777 <td class="paramtype">uint </td>
3778 <td class="paramname"><em>output_stride_x</em>, </td>
3781 <td class="paramkey"></td>
3783 <td class="paramtype">uint </td>
3784 <td class="paramname"><em>output_step_x</em>, </td>
3787 <td class="paramkey"></td>
3789 <td class="paramtype">uint </td>
3790 <td class="paramname"><em>output_stride_y</em>, </td>
3793 <td class="paramkey"></td>
3795 <td class="paramtype">uint </td>
3796 <td class="paramname"><em>output_step_y</em>, </td>
3799 <td class="paramkey"></td>
3801 <td class="paramtype">uint </td>
3802 <td class="paramname"><em>output_offset_first_element_in_bytes</em> </td>
3810 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <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>  <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>  <span class="comment">// handle 16 pixels every time</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  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>  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>  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>  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> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  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>  uchar16 rgb_1 = (uchar16)(rgba_1.s5689acde, rgba_2.s01245689);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  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> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  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>  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>  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> }</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 -->
3841 <a class="anchor" id="aee9a7e06c86387d2a46aad341fa940d0"></a>
3842 <div class="memitem">
3843 <div class="memproto">
3844 <table class="memname">
3846 <td class="memname">__kernel void RGBA8888_to_YUV444_bt709 </td>
3848 <td class="paramtype">__global uchar * </td>
3849 <td class="paramname"><em>rgba_input_ptr</em>, </td>
3852 <td class="paramkey"></td>
3854 <td class="paramtype">uint </td>
3855 <td class="paramname"><em>rgba_input_stride_x</em>, </td>
3858 <td class="paramkey"></td>
3860 <td class="paramtype">uint </td>
3861 <td class="paramname"><em>rgba_input_step_x</em>, </td>
3864 <td class="paramkey"></td>
3866 <td class="paramtype">uint </td>
3867 <td class="paramname"><em>rgba_input_stride_y</em>, </td>
3870 <td class="paramkey"></td>
3872 <td class="paramtype">uint </td>
3873 <td class="paramname"><em>rgba_input_step_y</em>, </td>
3876 <td class="paramkey"></td>
3878 <td class="paramtype">uint </td>
3879 <td class="paramname"><em>rgba_input_offset_first_element_in_bytes</em>, </td>
3882 <td class="paramkey"></td>
3884 <td class="paramtype">__global uchar * </td>
3885 <td class="paramname"><em>luma_output_ptr</em>, </td>
3888 <td class="paramkey"></td>
3890 <td class="paramtype">uint </td>
3891 <td class="paramname"><em>luma_output_stride_x</em>, </td>
3894 <td class="paramkey"></td>
3896 <td class="paramtype">uint </td>
3897 <td class="paramname"><em>luma_output_step_x</em>, </td>
3900 <td class="paramkey"></td>
3902 <td class="paramtype">uint </td>
3903 <td class="paramname"><em>luma_output_stride_y</em>, </td>
3906 <td class="paramkey"></td>
3908 <td class="paramtype">uint </td>
3909 <td class="paramname"><em>luma_output_step_y</em>, </td>
3912 <td class="paramkey"></td>
3914 <td class="paramtype">uint </td>
3915 <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
3918 <td class="paramkey"></td>
3920 <td class="paramtype">__global uchar * </td>
3921 <td class="paramname"><em>u_output_ptr</em>, </td>
3924 <td class="paramkey"></td>
3926 <td class="paramtype">uint </td>
3927 <td class="paramname"><em>u_output_stride_x</em>, </td>
3930 <td class="paramkey"></td>
3932 <td class="paramtype">uint </td>
3933 <td class="paramname"><em>u_output_step_x</em>, </td>
3936 <td class="paramkey"></td>
3938 <td class="paramtype">uint </td>
3939 <td class="paramname"><em>u_output_stride_y</em>, </td>
3942 <td class="paramkey"></td>
3944 <td class="paramtype">uint </td>
3945 <td class="paramname"><em>u_output_step_y</em>, </td>
3948 <td class="paramkey"></td>
3950 <td class="paramtype">uint </td>
3951 <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
3954 <td class="paramkey"></td>
3956 <td class="paramtype">__global uchar * </td>
3957 <td class="paramname"><em>v_output_ptr</em>, </td>
3960 <td class="paramkey"></td>
3962 <td class="paramtype">uint </td>
3963 <td class="paramname"><em>v_output_stride_x</em>, </td>
3966 <td class="paramkey"></td>
3968 <td class="paramtype">uint </td>
3969 <td class="paramname"><em>v_output_step_x</em>, </td>
3972 <td class="paramkey"></td>
3974 <td class="paramtype">uint </td>
3975 <td class="paramname"><em>v_output_stride_y</em>, </td>
3978 <td class="paramkey"></td>
3980 <td class="paramtype">uint </td>
3981 <td class="paramname"><em>v_output_step_y</em>, </td>
3984 <td class="paramkey"></td>
3986 <td class="paramtype">uint </td>
3987 <td class="paramname"><em>v_output_offset_first_element_in_bytes</em> </td>
3995 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="comment">// handle 4 pixels every time</span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <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>  <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>  <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>  <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> </div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="comment">// Read 4 pixel</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  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>  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>  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>  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> </div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  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>  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>  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> </div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  short4 i_y = convert_short4(f_y);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  short4 i_u = convert_short4(f_u) + (short4)(128);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  short4 i_v = convert_short4(f_v) + (short4)(128);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> </div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  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>  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> </div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  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>  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>  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>  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> }</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< T > min(fixed_point< T > x, fixed_point< T > 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< T > max(fixed_point< T > x, fixed_point< T > 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 -->
4040 <a class="anchor" id="a8946fa606d523038e103e6b4ceb42e56"></a>
4041 <div class="memitem">
4042 <div class="memproto">
4043 <table class="memname">
4045 <td class="memname">__kernel void UYVY422_to_IYUV_bt709 </td>
4047 <td class="paramtype">__global uchar * </td>
4048 <td class="paramname"><em>uyvy_input_ptr</em>, </td>
4051 <td class="paramkey"></td>
4053 <td class="paramtype">uint </td>
4054 <td class="paramname"><em>uyvy_input_stride_x</em>, </td>
4057 <td class="paramkey"></td>
4059 <td class="paramtype">uint </td>
4060 <td class="paramname"><em>uyvy_input_step_x</em>, </td>
4063 <td class="paramkey"></td>
4065 <td class="paramtype">uint </td>
4066 <td class="paramname"><em>uyvy_input_stride_y</em>, </td>
4069 <td class="paramkey"></td>
4071 <td class="paramtype">uint </td>
4072 <td class="paramname"><em>uyvy_input_step_y</em>, </td>
4075 <td class="paramkey"></td>
4077 <td class="paramtype">uint </td>
4078 <td class="paramname"><em>uyvy_input_offset_first_element_in_bytes</em>, </td>
4081 <td class="paramkey"></td>
4083 <td class="paramtype">__global uchar * </td>
4084 <td class="paramname"><em>luma_output_ptr</em>, </td>
4087 <td class="paramkey"></td>
4089 <td class="paramtype">uint </td>
4090 <td class="paramname"><em>luma_output_stride_x</em>, </td>
4093 <td class="paramkey"></td>
4095 <td class="paramtype">uint </td>
4096 <td class="paramname"><em>luma_output_step_x</em>, </td>
4099 <td class="paramkey"></td>
4101 <td class="paramtype">uint </td>
4102 <td class="paramname"><em>luma_output_stride_y</em>, </td>
4105 <td class="paramkey"></td>
4107 <td class="paramtype">uint </td>
4108 <td class="paramname"><em>luma_output_step_y</em>, </td>
4111 <td class="paramkey"></td>
4113 <td class="paramtype">uint </td>
4114 <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
4117 <td class="paramkey"></td>
4119 <td class="paramtype">__global uchar * </td>
4120 <td class="paramname"><em>u_output_ptr</em>, </td>
4123 <td class="paramkey"></td>
4125 <td class="paramtype">uint </td>
4126 <td class="paramname"><em>u_output_stride_x</em>, </td>
4129 <td class="paramkey"></td>
4131 <td class="paramtype">uint </td>
4132 <td class="paramname"><em>u_output_step_x</em>, </td>
4135 <td class="paramkey"></td>
4137 <td class="paramtype">uint </td>
4138 <td class="paramname"><em>u_output_stride_y</em>, </td>
4141 <td class="paramkey"></td>
4143 <td class="paramtype">uint </td>
4144 <td class="paramname"><em>u_output_step_y</em>, </td>
4147 <td class="paramkey"></td>
4149 <td class="paramtype">uint </td>
4150 <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
4153 <td class="paramkey"></td>
4155 <td class="paramtype">__global uchar * </td>
4156 <td class="paramname"><em>v_output_ptr</em>, </td>
4159 <td class="paramkey"></td>
4161 <td class="paramtype">uint </td>
4162 <td class="paramname"><em>v_output_stride_x</em>, </td>
4165 <td class="paramkey"></td>
4167 <td class="paramtype">uint </td>
4168 <td class="paramname"><em>v_output_step_x</em>, </td>
4171 <td class="paramkey"></td>
4173 <td class="paramtype">uint </td>
4174 <td class="paramname"><em>v_output_stride_y</em>, </td>
4177 <td class="paramkey"></td>
4179 <td class="paramtype">uint </td>
4180 <td class="paramname"><em>v_output_step_y</em>, </td>
4183 <td class="paramkey"></td>
4185 <td class="paramtype">uint </td>
4186 <td class="paramname"><em>v_output_offset_first_element_in_bytes</em> </td>
4194 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  <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>  <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>  <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>  <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> </div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  <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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>  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>  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>  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>  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>  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> </div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  uchar4 cb = convert_uchar4((cb_0 + cb_1) / (ushort4)(2));</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  uchar4 cr = convert_uchar4((cr_0 + cr_1) / (ushort4)(2));</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>  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>  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> }</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 -->
4237 <a class="anchor" id="a966fe2be85946bbbe2ecad5ad1100d1f"></a>
4238 <div class="memitem">
4239 <div class="memproto">
4240 <table class="memname">
4242 <td class="memname">__kernel void UYVY422_to_NV12_bt709 </td>
4244 <td class="paramtype">__global uchar * </td>
4245 <td class="paramname"><em>input_uyvy_ptr</em>, </td>
4248 <td class="paramkey"></td>
4250 <td class="paramtype">uint </td>
4251 <td class="paramname"><em>input_uyvy_stride_x</em>, </td>
4254 <td class="paramkey"></td>
4256 <td class="paramtype">uint </td>
4257 <td class="paramname"><em>input_uyvy_step_x</em>, </td>
4260 <td class="paramkey"></td>
4262 <td class="paramtype">uint </td>
4263 <td class="paramname"><em>input_uyvy_stride_y</em>, </td>
4266 <td class="paramkey"></td>
4268 <td class="paramtype">uint </td>
4269 <td class="paramname"><em>input_uyvy_step_y</em>, </td>
4272 <td class="paramkey"></td>
4274 <td class="paramtype">uint </td>
4275 <td class="paramname"><em>input_uyvy_offset_first_element_in_bytes</em>, </td>
4278 <td class="paramkey"></td>
4280 <td class="paramtype">__global uchar * </td>
4281 <td class="paramname"><em>luma_ptr</em>, </td>
4284 <td class="paramkey"></td>
4286 <td class="paramtype">uint </td>
4287 <td class="paramname"><em>luma_stride_x</em>, </td>
4290 <td class="paramkey"></td>
4292 <td class="paramtype">uint </td>
4293 <td class="paramname"><em>luma_step_x</em>, </td>
4296 <td class="paramkey"></td>
4298 <td class="paramtype">uint </td>
4299 <td class="paramname"><em>luma_stride_y</em>, </td>
4302 <td class="paramkey"></td>
4304 <td class="paramtype">uint </td>
4305 <td class="paramname"><em>luma_step_y</em>, </td>
4308 <td class="paramkey"></td>
4310 <td class="paramtype">uint </td>
4311 <td class="paramname"><em>luma_offset_first_element_in_bytes</em>, </td>
4314 <td class="paramkey"></td>
4316 <td class="paramtype">__global uchar * </td>
4317 <td class="paramname"><em>uv_ptr</em>, </td>
4320 <td class="paramkey"></td>
4322 <td class="paramtype">uint </td>
4323 <td class="paramname"><em>uv_stride_x</em>, </td>
4326 <td class="paramkey"></td>
4328 <td class="paramtype">uint </td>
4329 <td class="paramname"><em>uv_step_x</em>, </td>
4332 <td class="paramkey"></td>
4334 <td class="paramtype">uint </td>
4335 <td class="paramname"><em>uv_stride_y</em>, </td>
4338 <td class="paramkey"></td>
4340 <td class="paramtype">uint </td>
4341 <td class="paramname"><em>uv_step_y</em>, </td>
4344 <td class="paramkey"></td>
4346 <td class="paramtype">uint </td>
4347 <td class="paramname"><em>uv_offset_first_element_in_bytes</em> </td>
4355 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>  <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>  <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>  <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> </div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>  <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>  <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>  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> </div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>  <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>  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> </div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>  <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>  <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>  <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>  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> }</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 -->
4392 <a class="anchor" id="a0b20f3b21bfb3e5ef177eb946e3c905f"></a>
4393 <div class="memitem">
4394 <div class="memproto">
4395 <table class="memname">
4397 <td class="memname">__kernel void UYVY422_to_RGB888_bt709 </td>
4399 <td class="paramtype">__global uchar * </td>
4400 <td class="paramname"><em>input_ptr</em>, </td>
4403 <td class="paramkey"></td>
4405 <td class="paramtype">uint </td>
4406 <td class="paramname"><em>input_stride_x</em>, </td>
4409 <td class="paramkey"></td>
4411 <td class="paramtype">uint </td>
4412 <td class="paramname"><em>input_step_x</em>, </td>
4415 <td class="paramkey"></td>
4417 <td class="paramtype">uint </td>
4418 <td class="paramname"><em>input_stride_y</em>, </td>
4421 <td class="paramkey"></td>
4423 <td class="paramtype">uint </td>
4424 <td class="paramname"><em>input_step_y</em>, </td>
4427 <td class="paramkey"></td>
4429 <td class="paramtype">uint </td>
4430 <td class="paramname"><em>input_offset_first_element_in_bytes</em>, </td>
4433 <td class="paramkey"></td>
4435 <td class="paramtype">__global uchar * </td>
4436 <td class="paramname"><em>output_ptr</em>, </td>
4439 <td class="paramkey"></td>
4441 <td class="paramtype">uint </td>
4442 <td class="paramname"><em>output_stride_x</em>, </td>
4445 <td class="paramkey"></td>
4447 <td class="paramtype">uint </td>
4448 <td class="paramname"><em>output_step_x</em>, </td>
4451 <td class="paramkey"></td>
4453 <td class="paramtype">uint </td>
4454 <td class="paramname"><em>output_stride_y</em>, </td>
4457 <td class="paramkey"></td>
4459 <td class="paramtype">uint </td>
4460 <td class="paramname"><em>output_step_y</em>, </td>
4463 <td class="paramkey"></td>
4465 <td class="paramtype">uint </td>
4466 <td class="paramname"><em>output_offset_first_element_in_bytes</em> </td>
4474 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <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>  <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> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// handle 8 pixels every time</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  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> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  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>  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>  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> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  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>  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>  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> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  uchar8 r_0 = convert_uchar8_rtz(f_r);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  uchar8 g_0 = convert_uchar8_rtz(f_g);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  uchar8 b_0 = convert_uchar8_rtz(f_b);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  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>  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>  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> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  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>  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> }</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 -->
4505 <a class="anchor" id="a22e98db2ca5538961967bdbaa19754b3"></a>
4506 <div class="memitem">
4507 <div class="memproto">
4508 <table class="memname">
4510 <td class="memname">__kernel void UYVY422_to_RGBA8888_bt709 </td>
4512 <td class="paramtype">__global uchar * </td>
4513 <td class="paramname"><em>input_ptr</em>, </td>
4516 <td class="paramkey"></td>
4518 <td class="paramtype">uint </td>
4519 <td class="paramname"><em>input_stride_x</em>, </td>
4522 <td class="paramkey"></td>
4524 <td class="paramtype">uint </td>
4525 <td class="paramname"><em>input_step_x</em>, </td>
4528 <td class="paramkey"></td>
4530 <td class="paramtype">uint </td>
4531 <td class="paramname"><em>input_stride_y</em>, </td>
4534 <td class="paramkey"></td>
4536 <td class="paramtype">uint </td>
4537 <td class="paramname"><em>input_step_y</em>, </td>
4540 <td class="paramkey"></td>
4542 <td class="paramtype">uint </td>
4543 <td class="paramname"><em>input_offset_first_element_in_bytes</em>, </td>
4546 <td class="paramkey"></td>
4548 <td class="paramtype">__global uchar * </td>
4549 <td class="paramname"><em>output_ptr</em>, </td>
4552 <td class="paramkey"></td>
4554 <td class="paramtype">uint </td>
4555 <td class="paramname"><em>output_stride_x</em>, </td>
4558 <td class="paramkey"></td>
4560 <td class="paramtype">uint </td>
4561 <td class="paramname"><em>output_step_x</em>, </td>
4564 <td class="paramkey"></td>
4566 <td class="paramtype">uint </td>
4567 <td class="paramname"><em>output_stride_y</em>, </td>
4570 <td class="paramkey"></td>
4572 <td class="paramtype">uint </td>
4573 <td class="paramname"><em>output_step_y</em>, </td>
4576 <td class="paramkey"></td>
4578 <td class="paramtype">uint </td>
4579 <td class="paramname"><em>output_offset_first_element_in_bytes</em> </td>
4587 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <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>  <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> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="comment">// handle 8 pixels every time</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  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> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  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>  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>  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> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  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>  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>  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> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  uchar8 r_0 = convert_uchar8_rtz(f_r);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  uchar8 g_0 = convert_uchar8_rtz(f_g);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  uchar8 b_0 = convert_uchar8_rtz(f_b);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  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>  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>  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>  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> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  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>  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> }</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 -->
4618 <a class="anchor" id="a3f241a3b4a3fbd337c6fe03cd4e61877"></a>
4619 <div class="memitem">
4620 <div class="memproto">
4621 <table class="memname">
4623 <td class="memname">__kernel void YUYV422_to_IYUV_bt709 </td>
4625 <td class="paramtype">__global uchar * </td>
4626 <td class="paramname"><em>yuyv_input_ptr</em>, </td>
4629 <td class="paramkey"></td>
4631 <td class="paramtype">uint </td>
4632 <td class="paramname"><em>yuyv_input_stride_x</em>, </td>
4635 <td class="paramkey"></td>
4637 <td class="paramtype">uint </td>
4638 <td class="paramname"><em>yuyv_input_step_x</em>, </td>
4641 <td class="paramkey"></td>
4643 <td class="paramtype">uint </td>
4644 <td class="paramname"><em>yuyv_input_stride_y</em>, </td>
4647 <td class="paramkey"></td>
4649 <td class="paramtype">uint </td>
4650 <td class="paramname"><em>yuyv_input_step_y</em>, </td>
4653 <td class="paramkey"></td>
4655 <td class="paramtype">uint </td>
4656 <td class="paramname"><em>yuyv_input_offset_first_element_in_bytes</em>, </td>
4659 <td class="paramkey"></td>
4661 <td class="paramtype">__global uchar * </td>
4662 <td class="paramname"><em>luma_output_ptr</em>, </td>
4665 <td class="paramkey"></td>
4667 <td class="paramtype">uint </td>
4668 <td class="paramname"><em>luma_output_stride_x</em>, </td>
4671 <td class="paramkey"></td>
4673 <td class="paramtype">uint </td>
4674 <td class="paramname"><em>luma_output_step_x</em>, </td>
4677 <td class="paramkey"></td>
4679 <td class="paramtype">uint </td>
4680 <td class="paramname"><em>luma_output_stride_y</em>, </td>
4683 <td class="paramkey"></td>
4685 <td class="paramtype">uint </td>
4686 <td class="paramname"><em>luma_output_step_y</em>, </td>
4689 <td class="paramkey"></td>
4691 <td class="paramtype">uint </td>
4692 <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
4695 <td class="paramkey"></td>
4697 <td class="paramtype">__global uchar * </td>
4698 <td class="paramname"><em>u_output_ptr</em>, </td>
4701 <td class="paramkey"></td>
4703 <td class="paramtype">uint </td>
4704 <td class="paramname"><em>u_output_stride_x</em>, </td>
4707 <td class="paramkey"></td>
4709 <td class="paramtype">uint </td>
4710 <td class="paramname"><em>u_output_step_x</em>, </td>
4713 <td class="paramkey"></td>
4715 <td class="paramtype">uint </td>
4716 <td class="paramname"><em>u_output_stride_y</em>, </td>
4719 <td class="paramkey"></td>
4721 <td class="paramtype">uint </td>
4722 <td class="paramname"><em>u_output_step_y</em>, </td>
4725 <td class="paramkey"></td>
4727 <td class="paramtype">uint </td>
4728 <td class="paramname"><em>u_output_offset_first_element_in_bytes</em>, </td>
4731 <td class="paramkey"></td>
4733 <td class="paramtype">__global uchar * </td>
4734 <td class="paramname"><em>v_output_ptr</em>, </td>
4737 <td class="paramkey"></td>
4739 <td class="paramtype">uint </td>
4740 <td class="paramname"><em>v_output_stride_x</em>, </td>
4743 <td class="paramkey"></td>
4745 <td class="paramtype">uint </td>
4746 <td class="paramname"><em>v_output_step_x</em>, </td>
4749 <td class="paramkey"></td>
4751 <td class="paramtype">uint </td>
4752 <td class="paramname"><em>v_output_stride_y</em>, </td>
4755 <td class="paramkey"></td>
4757 <td class="paramtype">uint </td>
4758 <td class="paramname"><em>v_output_step_y</em>, </td>
4761 <td class="paramkey"></td>
4763 <td class="paramtype">uint </td>
4764 <td class="paramname"><em>v_output_offset_first_element_in_bytes</em> </td>
4772 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  <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>  <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>  <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>  <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> </div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  <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>  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>  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>  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>  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>  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> </div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>  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>  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>  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>  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>  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> </div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>  uchar4 cb = convert_uchar4((cb_0 + cb_1) / (ushort4)(2));</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>  uchar4 cr = convert_uchar4((cr_0 + cr_1) / (ushort4)(2));</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>  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>  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> }</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 -->
4815 <a class="anchor" id="aa4d458afddfb19f170cb27a9cc934069"></a>
4816 <div class="memitem">
4817 <div class="memproto">
4818 <table class="memname">
4820 <td class="memname">__kernel void YUYV422_to_NV12_bt709 </td>
4822 <td class="paramtype">__global uchar * </td>
4823 <td class="paramname"><em>yuyv_input_ptr</em>, </td>
4826 <td class="paramkey"></td>
4828 <td class="paramtype">uint </td>
4829 <td class="paramname"><em>yuyv_input_stride_x</em>, </td>
4832 <td class="paramkey"></td>
4834 <td class="paramtype">uint </td>
4835 <td class="paramname"><em>yuyv_input_step_x</em>, </td>
4838 <td class="paramkey"></td>
4840 <td class="paramtype">uint </td>
4841 <td class="paramname"><em>yuyv_input_stride_y</em>, </td>
4844 <td class="paramkey"></td>
4846 <td class="paramtype">uint </td>
4847 <td class="paramname"><em>yuyv_input_step_y</em>, </td>
4850 <td class="paramkey"></td>
4852 <td class="paramtype">uint </td>
4853 <td class="paramname"><em>yuyv_input_offset_first_element_in_bytes</em>, </td>
4856 <td class="paramkey"></td>
4858 <td class="paramtype">__global uchar * </td>
4859 <td class="paramname"><em>luma_output_ptr</em>, </td>
4862 <td class="paramkey"></td>
4864 <td class="paramtype">uint </td>
4865 <td class="paramname"><em>luma_output_stride_x</em>, </td>
4868 <td class="paramkey"></td>
4870 <td class="paramtype">uint </td>
4871 <td class="paramname"><em>luma_output_step_x</em>, </td>
4874 <td class="paramkey"></td>
4876 <td class="paramtype">uint </td>
4877 <td class="paramname"><em>luma_output_stride_y</em>, </td>
4880 <td class="paramkey"></td>
4882 <td class="paramtype">uint </td>
4883 <td class="paramname"><em>luma_output_step_y</em>, </td>
4886 <td class="paramkey"></td>
4888 <td class="paramtype">uint </td>
4889 <td class="paramname"><em>luma_output_offset_first_element_in_bytes</em>, </td>
4892 <td class="paramkey"></td>
4894 <td class="paramtype">__global uchar * </td>
4895 <td class="paramname"><em>uv_output_ptr</em>, </td>
4898 <td class="paramkey"></td>
4900 <td class="paramtype">uint </td>
4901 <td class="paramname"><em>uv_output_stride_x</em>, </td>
4904 <td class="paramkey"></td>
4906 <td class="paramtype">uint </td>
4907 <td class="paramname"><em>uv_output_step_x</em>, </td>
4910 <td class="paramkey"></td>
4912 <td class="paramtype">uint </td>
4913 <td class="paramname"><em>uv_output_stride_y</em>, </td>
4916 <td class="paramkey"></td>
4918 <td class="paramtype">uint </td>
4919 <td class="paramname"><em>uv_output_step_y</em>, </td>
4922 <td class="paramkey"></td>
4924 <td class="paramtype">uint </td>
4925 <td class="paramname"><em>uv_output_offset_first_element_in_bytes</em> </td>
4933 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>  <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>  <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>  <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> </div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>  <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>  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>  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>  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>  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> </div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>  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>  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>  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>  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> </div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>  uchar8 cbcr = convert_uchar8((cbcr_0 + cbcr_1) / (ushort8)(2));</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>  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> }</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 -->
4970 <a class="anchor" id="a694c56c3d1dd37a2773e650ab8e410b2"></a>
4971 <div class="memitem">
4972 <div class="memproto">
4973 <table class="memname">
4975 <td class="memname">__kernel void YUYV422_to_RGB888_bt709 </td>
4977 <td class="paramtype">__global uchar * </td>
4978 <td class="paramname"><em>input_ptr</em>, </td>
4981 <td class="paramkey"></td>
4983 <td class="paramtype">uint </td>
4984 <td class="paramname"><em>input_stride_x</em>, </td>
4987 <td class="paramkey"></td>
4989 <td class="paramtype">uint </td>
4990 <td class="paramname"><em>input_step_x</em>, </td>
4993 <td class="paramkey"></td>
4995 <td class="paramtype">uint </td>
4996 <td class="paramname"><em>input_stride_y</em>, </td>
4999 <td class="paramkey"></td>
5001 <td class="paramtype">uint </td>
5002 <td class="paramname"><em>input_step_y</em>, </td>
5005 <td class="paramkey"></td>
5007 <td class="paramtype">uint </td>
5008 <td class="paramname"><em>input_offset_first_element_in_bytes</em>, </td>
5011 <td class="paramkey"></td>
5013 <td class="paramtype">__global uchar * </td>
5014 <td class="paramname"><em>output_ptr</em>, </td>
5017 <td class="paramkey"></td>
5019 <td class="paramtype">uint </td>
5020 <td class="paramname"><em>output_stride_x</em>, </td>
5023 <td class="paramkey"></td>
5025 <td class="paramtype">uint </td>
5026 <td class="paramname"><em>output_step_x</em>, </td>
5029 <td class="paramkey"></td>
5031 <td class="paramtype">uint </td>
5032 <td class="paramname"><em>output_stride_y</em>, </td>
5035 <td class="paramkey"></td>
5037 <td class="paramtype">uint </td>
5038 <td class="paramname"><em>output_step_y</em>, </td>
5041 <td class="paramkey"></td>
5043 <td class="paramtype">uint </td>
5044 <td class="paramname"><em>output_offset_first_element_in_bytes</em> </td>
5052 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <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>  <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> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="comment">// handle 8 pixels every time</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  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> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  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>  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>  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> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  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>  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>  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> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  uchar8 r_0 = convert_uchar8_rtz(f_r);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  uchar8 g_0 = convert_uchar8_rtz(f_g);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  uchar8 b_0 = convert_uchar8_rtz(f_b);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  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>  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>  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> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  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>  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> }</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 -->
5083 <a class="anchor" id="ab0be9d15196e78ed50afdbfa93a11662"></a>
5084 <div class="memitem">
5085 <div class="memproto">
5086 <table class="memname">
5088 <td class="memname">__kernel void YUYV422_to_RGBA8888_bt709 </td>
5090 <td class="paramtype">__global uchar * </td>
5091 <td class="paramname"><em>input_ptr</em>, </td>
5094 <td class="paramkey"></td>
5096 <td class="paramtype">uint </td>
5097 <td class="paramname"><em>input_stride_x</em>, </td>
5100 <td class="paramkey"></td>
5102 <td class="paramtype">uint </td>
5103 <td class="paramname"><em>input_step_x</em>, </td>
5106 <td class="paramkey"></td>
5108 <td class="paramtype">uint </td>
5109 <td class="paramname"><em>input_stride_y</em>, </td>
5112 <td class="paramkey"></td>
5114 <td class="paramtype">uint </td>
5115 <td class="paramname"><em>input_step_y</em>, </td>
5118 <td class="paramkey"></td>
5120 <td class="paramtype">uint </td>
5121 <td class="paramname"><em>input_offset_first_element_in_bytes</em>, </td>
5124 <td class="paramkey"></td>
5126 <td class="paramtype">__global uchar * </td>
5127 <td class="paramname"><em>output_ptr</em>, </td>
5130 <td class="paramkey"></td>
5132 <td class="paramtype">uint </td>
5133 <td class="paramname"><em>output_stride_x</em>, </td>
5136 <td class="paramkey"></td>
5138 <td class="paramtype">uint </td>
5139 <td class="paramname"><em>output_step_x</em>, </td>
5142 <td class="paramkey"></td>
5144 <td class="paramtype">uint </td>
5145 <td class="paramname"><em>output_stride_y</em>, </td>
5148 <td class="paramkey"></td>
5150 <td class="paramtype">uint </td>
5151 <td class="paramname"><em>output_step_y</em>, </td>
5154 <td class="paramkey"></td>
5156 <td class="paramtype">uint </td>
5157 <td class="paramname"><em>output_offset_first_element_in_bytes</em> </td>
5165 </div><div class="memdoc">
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>
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>
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> {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <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>  <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> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="comment">// handle 8 pixels every time</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  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> </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  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>  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>  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> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  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>  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>  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> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  uchar8 r_0 = convert_uchar8_rtz(f_r);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  uchar8 g_0 = convert_uchar8_rtz(f_g);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  uchar8 b_0 = convert_uchar8_rtz(f_b);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  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>  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>  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>  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> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  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>  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> }</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 -->
5196 </div><!-- contents -->
5197 </div><!-- doc-content -->
5198 <!-- start footer part -->
5199 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
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>