arm_compute v18.05
[platform/upstream/armcl.git] / documentation / scale_8cl.xhtml
1 <!-- HTML header for doxygen 1.8.9.1-->
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
5 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
7 <meta name="generator" content="Doxygen 1.8.11"/>
8 <meta name="robots" content="NOINDEX, NOFOLLOW" /> <!-- Prevent indexing by search engines -->
9 <title>Compute Library: src/core/CL/cl_kernels/scale.cl File Reference</title>
10 <link href="tabs.css" rel="stylesheet" type="text/css"/>
11 <script type="text/javascript" src="jquery.js"></script>
12 <script type="text/javascript" src="dynsections.js"></script>
13 <link href="navtree.css" rel="stylesheet" type="text/css"/>
14 <script type="text/javascript" src="resize.js"></script>
15 <script type="text/javascript" src="navtreedata.js"></script>
16 <script type="text/javascript" src="navtree.js"></script>
17 <script type="text/javascript">
18   $(document).ready(initResizable);
19   $(window).load(resizeHeight);
20 </script>
21 <link href="search/search.css" rel="stylesheet" type="text/css"/>
22 <script type="text/javascript" src="search/searchdata.js"></script>
23 <script type="text/javascript" src="search/search.js"></script>
24 <script type="text/javascript">
25   $(document).ready(function() { init_search(); });
26 </script>
27 <script type="text/x-mathjax-config">
28   MathJax.Hub.Config({
29     extensions: ["tex2jax.js"],
30     jax: ["input/TeX","output/HTML-CSS"],
31 });
32 </script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
33 <link href="doxygen.css" rel="stylesheet" type="text/css" />
34 </head>
35 <body>
36 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
37 <div id="titlearea">
38 <table cellspacing="0" cellpadding="0">
39  <tbody>
40  <tr style="height: 56px;">
41   <td style="padding-left: 0.5em;">
42    <div id="projectname">Compute Library
43    &#160;<span id="projectnumber">18.05</span>
44    </div>
45   </td>
46  </tr>
47  </tbody>
48 </table>
49 </div>
50 <!-- end header part -->
51 <!-- Generated by Doxygen 1.8.11 -->
52 <script type="text/javascript">
53 var searchBox = new SearchBox("searchBox", "search",false,'Search');
54 </script>
55   <div id="navrow1" class="tabs">
56     <ul class="tablist">
57       <li><a href="index.xhtml"><span>Main&#160;Page</span></a></li>
58       <li><a href="pages.xhtml"><span>Related&#160;Pages</span></a></li>
59       <li><a href="namespaces.xhtml"><span>Namespaces</span></a></li>
60       <li><a href="annotated.xhtml"><span>Data&#160;Structures</span></a></li>
61       <li class="current"><a href="files.xhtml"><span>Files</span></a></li>
62       <li>
63         <div id="MSearchBox" class="MSearchBoxInactive">
64         <span class="left">
65           <img id="MSearchSelect" src="search/mag_sel.png"
66                onmouseover="return searchBox.OnSearchSelectShow()"
67                onmouseout="return searchBox.OnSearchSelectHide()"
68                alt=""/>
69           <input type="text" id="MSearchField" value="Search" accesskey="S"
70                onfocus="searchBox.OnSearchFieldFocus(true)" 
71                onblur="searchBox.OnSearchFieldFocus(false)" 
72                onkeyup="searchBox.OnSearchFieldChange(event)"/>
73           </span><span class="right">
74             <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
75           </span>
76         </div>
77       </li>
78     </ul>
79   </div>
80   <div id="navrow2" class="tabs2">
81     <ul class="tablist">
82       <li><a href="files.xhtml"><span>File&#160;List</span></a></li>
83       <li><a href="globals.xhtml"><span>Globals</span></a></li>
84     </ul>
85   </div>
86 </div><!-- top -->
87 <div id="side-nav" class="ui-resizable side-nav-resizable">
88   <div id="nav-tree">
89     <div id="nav-tree-contents">
90       <div id="nav-sync" class="sync"></div>
91     </div>
92   </div>
93   <div id="splitbar" style="-moz-user-select:none;" 
94        class="ui-resizable-handle">
95   </div>
96 </div>
97 <script type="text/javascript">
98 $(document).ready(function(){initNavTree('scale_8cl.xhtml','');});
99 </script>
100 <div id="doc-content">
101 <!-- window showing the filter options -->
102 <div id="MSearchSelectWindow"
103      onmouseover="return searchBox.OnSearchSelectShow()"
104      onmouseout="return searchBox.OnSearchSelectHide()"
105      onkeydown="return searchBox.OnSearchSelectKey(event)">
106 </div>
107
108 <!-- iframe showing the search results (closed by default) -->
109 <div id="MSearchResultsWindow">
110 <iframe src="javascript:void(0)" frameborder="0" 
111         name="MSearchResults" id="MSearchResults">
112 </iframe>
113 </div>
114
115 <div class="header">
116   <div class="summary">
117 <a href="#func-members">Functions</a>  </div>
118   <div class="headertitle">
119 <div class="title">scale.cl File Reference</div>  </div>
120 </div><!--header-->
121 <div class="contents">
122 <div class="textblock"><code>#include &quot;<a class="el" href="helpers_8h_source.xhtml">helpers.h</a>&quot;</code><br />
123 <code>#include &quot;<a class="el" href="warp__helpers_8h_source.xhtml">warp_helpers.h</a>&quot;</code><br />
124 </div>
125 <p><a href="scale_8cl_source.xhtml">Go to the source code of this file.</a></p>
126 <table class="memberdecls">
127 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
128 Functions</h2></td></tr>
129 <tr class="memitem:a55c710b814464d9b8982c4eb6ca04dee"><td class="memItemLeft" align="right" valign="top">const float8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="scale_8cl.xhtml#a55c710b814464d9b8982c4eb6ca04dee">transform_nearest</a> (const float2 coord, const float2 scale)</td></tr>
130 <tr class="memdesc:a55c710b814464d9b8982c4eb6ca04dee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transforms four 2D coordinates.  <a href="#a55c710b814464d9b8982c4eb6ca04dee">More...</a><br /></td></tr>
131 <tr class="separator:a55c710b814464d9b8982c4eb6ca04dee"><td class="memSeparator" colspan="2">&#160;</td></tr>
132 <tr class="memitem:a1990e87858b15b8fce3f63965fb9b86c"><td class="memItemLeft" align="right" valign="top">const float8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="scale_8cl.xhtml#a1990e87858b15b8fce3f63965fb9b86c">transform_bilinear</a> (const float2 coord, const float2 scale)</td></tr>
133 <tr class="memdesc:a1990e87858b15b8fce3f63965fb9b86c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transforms four 2D coordinates.  <a href="#a1990e87858b15b8fce3f63965fb9b86c">More...</a><br /></td></tr>
134 <tr class="separator:a1990e87858b15b8fce3f63965fb9b86c"><td class="memSeparator" colspan="2">&#160;</td></tr>
135 <tr class="memitem:ace0505bd2794cb971269d525953b9b78"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="scale_8cl.xhtml#ace0505bd2794cb971269d525953b9b78">scale_nearest_neighbour</a> (__global uchar *in_ptr, uint in_stride_x, uint in_step_x, uint in_stride_y, uint in_step_y, uint in_offset_first_element_in_bytes, __global uchar *out_ptr, uint out_stride_x, uint out_step_x, uint out_stride_y, uint out_step_y, uint out_offset_first_element_in_bytes, const float input_width, const float input_height, const float scale_x, const float scale_y)</td></tr>
136 <tr class="memdesc:ace0505bd2794cb971269d525953b9b78"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs an affine transformation on an image interpolating with the NEAREAST NEIGHBOUR method.  <a href="#ace0505bd2794cb971269d525953b9b78">More...</a><br /></td></tr>
137 <tr class="separator:ace0505bd2794cb971269d525953b9b78"><td class="memSeparator" colspan="2">&#160;</td></tr>
138 <tr class="memitem:afafd19fca28a0b88836611dae58ed787"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="scale_8cl.xhtml#afafd19fca28a0b88836611dae58ed787">scale_bilinear</a> (__global uchar *in_ptr, uint in_stride_x, uint in_step_x, uint in_stride_y, uint in_step_y, uint in_offset_first_element_in_bytes, __global uchar *out_ptr, uint out_stride_x, uint out_step_x, uint out_stride_y, uint out_step_y, uint out_offset_first_element_in_bytes, const float input_width, const float input_height, const float scale_x, const float scale_y)</td></tr>
139 <tr class="memdesc:afafd19fca28a0b88836611dae58ed787"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs an affine transformation on an image interpolating with the BILINEAR method.  <a href="#afafd19fca28a0b88836611dae58ed787">More...</a><br /></td></tr>
140 <tr class="separator:afafd19fca28a0b88836611dae58ed787"><td class="memSeparator" colspan="2">&#160;</td></tr>
141 </table>
142 <h2 class="groupheader">Function Documentation</h2>
143 <a class="anchor" id="afafd19fca28a0b88836611dae58ed787"></a>
144 <div class="memitem">
145 <div class="memproto">
146       <table class="memname">
147         <tr>
148           <td class="memname">__kernel void scale_bilinear </td>
149           <td>(</td>
150           <td class="paramtype">__global uchar *&#160;</td>
151           <td class="paramname"><em>in_ptr</em>, </td>
152         </tr>
153         <tr>
154           <td class="paramkey"></td>
155           <td></td>
156           <td class="paramtype">uint&#160;</td>
157           <td class="paramname"><em>in_stride_x</em>, </td>
158         </tr>
159         <tr>
160           <td class="paramkey"></td>
161           <td></td>
162           <td class="paramtype">uint&#160;</td>
163           <td class="paramname"><em>in_step_x</em>, </td>
164         </tr>
165         <tr>
166           <td class="paramkey"></td>
167           <td></td>
168           <td class="paramtype">uint&#160;</td>
169           <td class="paramname"><em>in_stride_y</em>, </td>
170         </tr>
171         <tr>
172           <td class="paramkey"></td>
173           <td></td>
174           <td class="paramtype">uint&#160;</td>
175           <td class="paramname"><em>in_step_y</em>, </td>
176         </tr>
177         <tr>
178           <td class="paramkey"></td>
179           <td></td>
180           <td class="paramtype">uint&#160;</td>
181           <td class="paramname"><em>in_offset_first_element_in_bytes</em>, </td>
182         </tr>
183         <tr>
184           <td class="paramkey"></td>
185           <td></td>
186           <td class="paramtype">__global uchar *&#160;</td>
187           <td class="paramname"><em>out_ptr</em>, </td>
188         </tr>
189         <tr>
190           <td class="paramkey"></td>
191           <td></td>
192           <td class="paramtype">uint&#160;</td>
193           <td class="paramname"><em>out_stride_x</em>, </td>
194         </tr>
195         <tr>
196           <td class="paramkey"></td>
197           <td></td>
198           <td class="paramtype">uint&#160;</td>
199           <td class="paramname"><em>out_step_x</em>, </td>
200         </tr>
201         <tr>
202           <td class="paramkey"></td>
203           <td></td>
204           <td class="paramtype">uint&#160;</td>
205           <td class="paramname"><em>out_stride_y</em>, </td>
206         </tr>
207         <tr>
208           <td class="paramkey"></td>
209           <td></td>
210           <td class="paramtype">uint&#160;</td>
211           <td class="paramname"><em>out_step_y</em>, </td>
212         </tr>
213         <tr>
214           <td class="paramkey"></td>
215           <td></td>
216           <td class="paramtype">uint&#160;</td>
217           <td class="paramname"><em>out_offset_first_element_in_bytes</em>, </td>
218         </tr>
219         <tr>
220           <td class="paramkey"></td>
221           <td></td>
222           <td class="paramtype">const float&#160;</td>
223           <td class="paramname"><em>input_width</em>, </td>
224         </tr>
225         <tr>
226           <td class="paramkey"></td>
227           <td></td>
228           <td class="paramtype">const float&#160;</td>
229           <td class="paramname"><em>input_height</em>, </td>
230         </tr>
231         <tr>
232           <td class="paramkey"></td>
233           <td></td>
234           <td class="paramtype">const float&#160;</td>
235           <td class="paramname"><em>scale_x</em>, </td>
236         </tr>
237         <tr>
238           <td class="paramkey"></td>
239           <td></td>
240           <td class="paramtype">const float&#160;</td>
241           <td class="paramname"><em>scale_y</em>&#160;</td>
242         </tr>
243         <tr>
244           <td></td>
245           <td>)</td>
246           <td></td><td></td>
247         </tr>
248       </table>
249 </div><div class="memdoc">
250
251 <p>Performs an affine transformation on an image interpolating with the BILINEAR method. </p>
252 <dl class="section note"><dt>Note</dt><dd>Sampling policy to used is passed as -DSAMPLING_POLICY_(TYPE) e.g. -DSAMPLING_POLICY_TOP_LEFT</dd></dl>
253 <dl class="params"><dt>Parameters</dt><dd>
254   <table class="params">
255     <tr><td class="paramdir">[in]</td><td class="paramname">in_ptr</td><td>Pointer to the source image. Supported data types: U8, S16. </td></tr>
256     <tr><td class="paramdir">[in]</td><td class="paramname">in_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
257     <tr><td class="paramdir">[in]</td><td class="paramname">in_step_x</td><td>src_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
258     <tr><td class="paramdir">[in]</td><td class="paramname">in_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
259     <tr><td class="paramdir">[in]</td><td class="paramname">in_step_y</td><td>src_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
260     <tr><td class="paramdir">[in]</td><td class="paramname">in_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
261     <tr><td class="paramdir">[out]</td><td class="paramname">out_ptr</td><td>Pointer to the destination image. Supported data types: U8, S16. (Must be the same as the input) </td></tr>
262     <tr><td class="paramdir">[in]</td><td class="paramname">out_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
263     <tr><td class="paramdir">[in]</td><td class="paramname">out_step_x</td><td>dst_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
264     <tr><td class="paramdir">[in]</td><td class="paramname">out_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
265     <tr><td class="paramdir">[in]</td><td class="paramname">out_step_y</td><td>dst_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
266     <tr><td class="paramdir">[in]</td><td class="paramname">out_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
267     <tr><td class="paramdir">[in]</td><td class="paramname">input_width</td><td>Input image width </td></tr>
268     <tr><td class="paramdir">[in]</td><td class="paramname">input_height</td><td>Input image height </td></tr>
269     <tr><td class="paramdir">[in]</td><td class="paramname">scale_x</td><td>The scale factor along x dimension </td></tr>
270     <tr><td class="paramdir">[in]</td><td class="paramname">scale_y</td><td>The scale factor along y dimension </td></tr>
271   </table>
272   </dd>
273 </dl>
274
275 <p>Definition at line <a class="el" href="scale_8cl_source.xhtml#l00122">122</a> of file <a class="el" href="scale_8cl_source.xhtml">scale.cl</a>.</p>
276
277 <p>References <a class="el" href="warp__helpers_8h_source.xhtml#l00094">bilinear_interpolate_with_border()</a>, <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, <a class="el" href="helpers_8h_source.xhtml#l00107">CONVERT_TO_IMAGE_STRUCT_NO_STEP</a>, <a class="el" href="convolution3x3_8cl_source.xhtml#l00027">DATA_TYPE</a>, <a class="el" href="warp__helpers_8h_source.xhtml#l00067">get_current_coords()</a>, <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>, and <a class="el" href="scale_8cl_source.xhtml#l00049">transform_bilinear()</a>.</p>
278 <div class="fragment"><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;{</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a>        in  = <a class="code" href="helpers_8h.xhtml#a4334a4a76f8e9628c0fb9e1acf616e2a">CONVERT_TO_IMAGE_STRUCT_NO_STEP</a>(in);</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a>        out = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(out);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    <span class="keyword">const</span> float2 r   = (float2)(scale_x, scale_y);</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;    <span class="keyword">const</span> float8 tc  = <a class="code" href="scale_8cl.xhtml#a1990e87858b15b8fce3f63965fb9b86c">transform_bilinear</a>(<a class="code" href="warp__helpers_8h.xhtml#a4caaeeb51ea58015267a9974675226d1">get_current_coords</a>(), r);</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    vstore4(<a class="code" href="warp__helpers_8h.xhtml#a8eda58d341afa44da00ebf47f9349499">bilinear_interpolate_with_border</a>(&amp;in, tc, input_width, input_height, BORDER_SIZE), 0, (__global <a class="code" href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a> *)out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;}</div><div class="ttc" id="convolution3x3_8cl_xhtml_afb8c72ce35c4a1f4a2588d6573e54aa1"><div class="ttname"><a href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a></div><div class="ttdeci">#define DATA_TYPE</div><div class="ttdef"><b>Definition:</b> <a href="convolution3x3_8cl_source.xhtml#l00027">convolution3x3.cl:27</a></div></div>
279 <div class="ttc" id="helpers_8h_xhtml_a4334a4a76f8e9628c0fb9e1acf616e2a"><div class="ttname"><a href="helpers_8h.xhtml#a4334a4a76f8e9628c0fb9e1acf616e2a">CONVERT_TO_IMAGE_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00107">helpers.h:107</a></div></div>
280 <div class="ttc" id="warp__helpers_8h_xhtml_a8eda58d341afa44da00ebf47f9349499"><div class="ttname"><a href="warp__helpers_8h.xhtml#a8eda58d341afa44da00ebf47f9349499">bilinear_interpolate_with_border</a></div><div class="ttdeci">const DATA_TYPE4 bilinear_interpolate_with_border(const Image *in, const float8 coords, const float width, const float height, const float border_size)</div><div class="ttdoc">Computes the bilinear interpolation for each set of coordinates in the vector coords and returns the ...</div><div class="ttdef"><b>Definition:</b> <a href="warp__helpers_8h_source.xhtml#l00094">warp_helpers.h:94</a></div></div>
281 <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>
282 <div class="ttc" id="scale_8cl_xhtml_a1990e87858b15b8fce3f63965fb9b86c"><div class="ttname"><a href="scale_8cl.xhtml#a1990e87858b15b8fce3f63965fb9b86c">transform_bilinear</a></div><div class="ttdeci">const float8 transform_bilinear(const float2 coord, const float2 scale)</div><div class="ttdoc">Transforms four 2D coordinates. </div><div class="ttdef"><b>Definition:</b> <a href="scale_8cl_source.xhtml#l00049">scale.cl:49</a></div></div>
283 <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>
284 <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>
285 <div class="ttc" id="warp__helpers_8h_xhtml_a4caaeeb51ea58015267a9974675226d1"><div class="ttname"><a href="warp__helpers_8h.xhtml#a4caaeeb51ea58015267a9974675226d1">get_current_coords</a></div><div class="ttdeci">const float2 get_current_coords()</div><div class="ttdoc">Returns the current thread coordinates. </div><div class="ttdef"><b>Definition:</b> <a href="warp__helpers_8h_source.xhtml#l00067">warp_helpers.h:67</a></div></div>
286 </div><!-- fragment -->
287 </div>
288 </div>
289 <a class="anchor" id="ace0505bd2794cb971269d525953b9b78"></a>
290 <div class="memitem">
291 <div class="memproto">
292       <table class="memname">
293         <tr>
294           <td class="memname">__kernel void scale_nearest_neighbour </td>
295           <td>(</td>
296           <td class="paramtype">__global uchar *&#160;</td>
297           <td class="paramname"><em>in_ptr</em>, </td>
298         </tr>
299         <tr>
300           <td class="paramkey"></td>
301           <td></td>
302           <td class="paramtype">uint&#160;</td>
303           <td class="paramname"><em>in_stride_x</em>, </td>
304         </tr>
305         <tr>
306           <td class="paramkey"></td>
307           <td></td>
308           <td class="paramtype">uint&#160;</td>
309           <td class="paramname"><em>in_step_x</em>, </td>
310         </tr>
311         <tr>
312           <td class="paramkey"></td>
313           <td></td>
314           <td class="paramtype">uint&#160;</td>
315           <td class="paramname"><em>in_stride_y</em>, </td>
316         </tr>
317         <tr>
318           <td class="paramkey"></td>
319           <td></td>
320           <td class="paramtype">uint&#160;</td>
321           <td class="paramname"><em>in_step_y</em>, </td>
322         </tr>
323         <tr>
324           <td class="paramkey"></td>
325           <td></td>
326           <td class="paramtype">uint&#160;</td>
327           <td class="paramname"><em>in_offset_first_element_in_bytes</em>, </td>
328         </tr>
329         <tr>
330           <td class="paramkey"></td>
331           <td></td>
332           <td class="paramtype">__global uchar *&#160;</td>
333           <td class="paramname"><em>out_ptr</em>, </td>
334         </tr>
335         <tr>
336           <td class="paramkey"></td>
337           <td></td>
338           <td class="paramtype">uint&#160;</td>
339           <td class="paramname"><em>out_stride_x</em>, </td>
340         </tr>
341         <tr>
342           <td class="paramkey"></td>
343           <td></td>
344           <td class="paramtype">uint&#160;</td>
345           <td class="paramname"><em>out_step_x</em>, </td>
346         </tr>
347         <tr>
348           <td class="paramkey"></td>
349           <td></td>
350           <td class="paramtype">uint&#160;</td>
351           <td class="paramname"><em>out_stride_y</em>, </td>
352         </tr>
353         <tr>
354           <td class="paramkey"></td>
355           <td></td>
356           <td class="paramtype">uint&#160;</td>
357           <td class="paramname"><em>out_step_y</em>, </td>
358         </tr>
359         <tr>
360           <td class="paramkey"></td>
361           <td></td>
362           <td class="paramtype">uint&#160;</td>
363           <td class="paramname"><em>out_offset_first_element_in_bytes</em>, </td>
364         </tr>
365         <tr>
366           <td class="paramkey"></td>
367           <td></td>
368           <td class="paramtype">const float&#160;</td>
369           <td class="paramname"><em>input_width</em>, </td>
370         </tr>
371         <tr>
372           <td class="paramkey"></td>
373           <td></td>
374           <td class="paramtype">const float&#160;</td>
375           <td class="paramname"><em>input_height</em>, </td>
376         </tr>
377         <tr>
378           <td class="paramkey"></td>
379           <td></td>
380           <td class="paramtype">const float&#160;</td>
381           <td class="paramname"><em>scale_x</em>, </td>
382         </tr>
383         <tr>
384           <td class="paramkey"></td>
385           <td></td>
386           <td class="paramtype">const float&#160;</td>
387           <td class="paramname"><em>scale_y</em>&#160;</td>
388         </tr>
389         <tr>
390           <td></td>
391           <td>)</td>
392           <td></td><td></td>
393         </tr>
394       </table>
395 </div><div class="memdoc">
396
397 <p>Performs an affine transformation on an image interpolating with the NEAREAST NEIGHBOUR method. </p>
398 <p>Input and output are single channel U8 or S16.</p>
399 <dl class="section note"><dt>Note</dt><dd>Sampling policy to used is passed as -DSAMPLING_POLICY_(TYPE) e.g. -DSAMPLING_POLICY_TOP_LEFT</dd></dl>
400 <dl class="params"><dt>Parameters</dt><dd>
401   <table class="params">
402     <tr><td class="paramdir">[in]</td><td class="paramname">in_ptr</td><td>Pointer to the source image. Supported data types: U8, S16. </td></tr>
403     <tr><td class="paramdir">[in]</td><td class="paramname">in_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
404     <tr><td class="paramdir">[in]</td><td class="paramname">in_step_x</td><td>src_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
405     <tr><td class="paramdir">[in]</td><td class="paramname">in_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
406     <tr><td class="paramdir">[in]</td><td class="paramname">in_step_y</td><td>src_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
407     <tr><td class="paramdir">[in]</td><td class="paramname">in_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
408     <tr><td class="paramdir">[out]</td><td class="paramname">out_ptr</td><td>Pointer to the destination image. Supported data types: U8, S16. (Must be the same as the input) </td></tr>
409     <tr><td class="paramdir">[in]</td><td class="paramname">out_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
410     <tr><td class="paramdir">[in]</td><td class="paramname">out_step_x</td><td>dst_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
411     <tr><td class="paramdir">[in]</td><td class="paramname">out_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
412     <tr><td class="paramdir">[in]</td><td class="paramname">out_step_y</td><td>dst_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
413     <tr><td class="paramdir">[in]</td><td class="paramname">out_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
414     <tr><td class="paramdir">[in]</td><td class="paramname">input_width</td><td>Input image width </td></tr>
415     <tr><td class="paramdir">[in]</td><td class="paramname">input_height</td><td>Input image height </td></tr>
416     <tr><td class="paramdir">[in]</td><td class="paramname">scale_x</td><td>The scale factor along x dimension </td></tr>
417     <tr><td class="paramdir">[in]</td><td class="paramname">scale_y</td><td>The scale factor along y dimension </td></tr>
418   </table>
419   </dd>
420 </dl>
421
422 <p>Definition at line <a class="el" href="scale_8cl_source.xhtml#l00086">86</a> of file <a class="el" href="scale_8cl_source.xhtml">scale.cl</a>.</p>
423
424 <p>References <a class="el" href="warp__helpers_8h_source.xhtml#l00034">clamp_to_border_with_size()</a>, <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, <a class="el" href="helpers_8h_source.xhtml#l00107">CONVERT_TO_IMAGE_STRUCT_NO_STEP</a>, <a class="el" href="convolution3x3_8cl_source.xhtml#l00027">DATA_TYPE</a>, <a class="el" href="warp__helpers_8h_source.xhtml#l00067">get_current_coords()</a>, <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>, <a class="el" href="warp__helpers_8h_source.xhtml#l00058">read_texels4()</a>, and <a class="el" href="scale_8cl_source.xhtml#l00034">transform_nearest()</a>.</p>
425 <div class="fragment"><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;{</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a>        in  = <a class="code" href="helpers_8h.xhtml#a4334a4a76f8e9628c0fb9e1acf616e2a">CONVERT_TO_IMAGE_STRUCT_NO_STEP</a>(in);</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a>        out = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(out);</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    <span class="keyword">const</span> float2 r   = (float2)(scale_x, scale_y);</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="keyword">const</span> float8 tc  = <a class="code" href="warp__helpers_8h.xhtml#aaef9851523cbc6f833700f0eb572002b">clamp_to_border_with_size</a>(<a class="code" href="scale_8cl.xhtml#a55c710b814464d9b8982c4eb6ca04dee">transform_nearest</a>(<a class="code" href="warp__helpers_8h.xhtml#a4caaeeb51ea58015267a9974675226d1">get_current_coords</a>(), r), input_width, input_height, BORDER_SIZE);</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    vstore4(<a class="code" href="warp__helpers_8h.xhtml#aba42442a4c991cdbb52727fa370676f1">read_texels4</a>(&amp;in, convert_int8(tc)), 0, (__global <a class="code" href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a> *)out.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;}</div><div class="ttc" id="convolution3x3_8cl_xhtml_afb8c72ce35c4a1f4a2588d6573e54aa1"><div class="ttname"><a href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a></div><div class="ttdeci">#define DATA_TYPE</div><div class="ttdef"><b>Definition:</b> <a href="convolution3x3_8cl_source.xhtml#l00027">convolution3x3.cl:27</a></div></div>
426 <div class="ttc" id="helpers_8h_xhtml_a4334a4a76f8e9628c0fb9e1acf616e2a"><div class="ttname"><a href="helpers_8h.xhtml#a4334a4a76f8e9628c0fb9e1acf616e2a">CONVERT_TO_IMAGE_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00107">helpers.h:107</a></div></div>
427 <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>
428 <div class="ttc" id="scale_8cl_xhtml_a55c710b814464d9b8982c4eb6ca04dee"><div class="ttname"><a href="scale_8cl.xhtml#a55c710b814464d9b8982c4eb6ca04dee">transform_nearest</a></div><div class="ttdeci">const float8 transform_nearest(const float2 coord, const float2 scale)</div><div class="ttdoc">Transforms four 2D coordinates. </div><div class="ttdef"><b>Definition:</b> <a href="scale_8cl_source.xhtml#l00034">scale.cl:34</a></div></div>
429 <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>
430 <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>
431 <div class="ttc" id="warp__helpers_8h_xhtml_aba42442a4c991cdbb52727fa370676f1"><div class="ttname"><a href="warp__helpers_8h.xhtml#aba42442a4c991cdbb52727fa370676f1">read_texels4</a></div><div class="ttdeci">const DATA_TYPE4 read_texels4(const Image *in, const int8 coords)</div><div class="ttdoc">Reads four texels from the input image. </div><div class="ttdef"><b>Definition:</b> <a href="warp__helpers_8h_source.xhtml#l00058">warp_helpers.h:58</a></div></div>
432 <div class="ttc" id="warp__helpers_8h_xhtml_aaef9851523cbc6f833700f0eb572002b"><div class="ttname"><a href="warp__helpers_8h.xhtml#aaef9851523cbc6f833700f0eb572002b">clamp_to_border_with_size</a></div><div class="ttdeci">const float8 clamp_to_border_with_size(float8 coords, const float width, const float height, const float border_size)</div><div class="ttdoc">Clamps the given coordinates to the borders according to the border size. </div><div class="ttdef"><b>Definition:</b> <a href="warp__helpers_8h_source.xhtml#l00034">warp_helpers.h:34</a></div></div>
433 <div class="ttc" id="warp__helpers_8h_xhtml_a4caaeeb51ea58015267a9974675226d1"><div class="ttname"><a href="warp__helpers_8h.xhtml#a4caaeeb51ea58015267a9974675226d1">get_current_coords</a></div><div class="ttdeci">const float2 get_current_coords()</div><div class="ttdoc">Returns the current thread coordinates. </div><div class="ttdef"><b>Definition:</b> <a href="warp__helpers_8h_source.xhtml#l00067">warp_helpers.h:67</a></div></div>
434 </div><!-- fragment -->
435 </div>
436 </div>
437 <a class="anchor" id="a1990e87858b15b8fce3f63965fb9b86c"></a>
438 <div class="memitem">
439 <div class="memproto">
440 <table class="mlabels">
441   <tr>
442   <td class="mlabels-left">
443       <table class="memname">
444         <tr>
445           <td class="memname">const float8 transform_bilinear </td>
446           <td>(</td>
447           <td class="paramtype">const float2&#160;</td>
448           <td class="paramname"><em>coord</em>, </td>
449         </tr>
450         <tr>
451           <td class="paramkey"></td>
452           <td></td>
453           <td class="paramtype">const float2&#160;</td>
454           <td class="paramname"><em>scale</em>&#160;</td>
455         </tr>
456         <tr>
457           <td></td>
458           <td>)</td>
459           <td></td><td></td>
460         </tr>
461       </table>
462   </td>
463   <td class="mlabels-right">
464 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
465   </tr>
466 </table>
467 </div><div class="memdoc">
468
469 <p>Transforms four 2D coordinates. </p>
470 <p>This is used to map the output coordinates to the input coordinates.</p>
471 <dl class="params"><dt>Parameters</dt><dd>
472   <table class="params">
473     <tr><td class="paramdir">[in]</td><td class="paramname">coord</td><td>2D coordinates to transform. </td></tr>
474     <tr><td class="paramdir">[in]</td><td class="paramname">scale</td><td>input/output scale ratio</td></tr>
475   </table>
476   </dd>
477 </dl>
478 <dl class="section return"><dt>Returns</dt><dd>a float8 containing 4 2D transformed values in the input image. </dd></dl>
479
480 <p>Definition at line <a class="el" href="scale_8cl_source.xhtml#l00049">49</a> of file <a class="el" href="scale_8cl_source.xhtml">scale.cl</a>.</p>
481
482 <p>Referenced by <a class="el" href="scale_8cl_source.xhtml#l00122">scale_bilinear()</a>.</p>
483 <div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;{</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    <span class="keyword">const</span> float4 in_x_coords = (float4)(coord.s0, 1 + coord.s0, 2 + coord.s0, 3 + coord.s0);</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#ifdef SAMPLING_POLICY_TOP_LEFT</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keyword">const</span> float4 new_x = in_x_coords * (float4)(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>.s0);</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;    <span class="keyword">const</span> float4 new_y = (float4)(coord.s1 * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>.s1);</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;    <span class="keywordflow">return</span> (float8)(new_x.s0, new_y.s0, new_x.s1, new_y.s1, new_x.s2, new_y.s2, new_x.s3, new_y.s3);</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="preprocessor">#elif SAMPLING_POLICY_CENTER</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    <span class="keyword">const</span> float4 new_x = (in_x_coords + ((float4)(0.5f))) * (float4)(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>.s0) - (float4)(0.5f);</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <span class="keyword">const</span> float4 new_y = (float4)((coord.s1 + 0.5f) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>.s1 - 0.5f);</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    <span class="keywordflow">return</span> (float8)(new_x.s0, new_y.s0, new_x.s1, new_y.s1, new_x.s2, new_y.s2, new_x.s3, new_y.s3);</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#else </span><span class="comment">/* SAMPLING_POLICY */</span><span class="preprocessor"></span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">#error(&quot;Unsupported sampling policy&quot;);</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* SAMPLING_POLICY */</span><span class="preprocessor"></span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_acec6d8ad52a28972fa74e071c1a63b6a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">arm_compute::test::validation::scale</a></div><div class="ttdeci">scale</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00178">PixelWiseMultiplication.cpp:178</a></div></div>
484 </div><!-- fragment -->
485 </div>
486 </div>
487 <a class="anchor" id="a55c710b814464d9b8982c4eb6ca04dee"></a>
488 <div class="memitem">
489 <div class="memproto">
490 <table class="mlabels">
491   <tr>
492   <td class="mlabels-left">
493       <table class="memname">
494         <tr>
495           <td class="memname">const float8 transform_nearest </td>
496           <td>(</td>
497           <td class="paramtype">const float2&#160;</td>
498           <td class="paramname"><em>coord</em>, </td>
499         </tr>
500         <tr>
501           <td class="paramkey"></td>
502           <td></td>
503           <td class="paramtype">const float2&#160;</td>
504           <td class="paramname"><em>scale</em>&#160;</td>
505         </tr>
506         <tr>
507           <td></td>
508           <td>)</td>
509           <td></td><td></td>
510         </tr>
511       </table>
512   </td>
513   <td class="mlabels-right">
514 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
515   </tr>
516 </table>
517 </div><div class="memdoc">
518
519 <p>Transforms four 2D coordinates. </p>
520 <p>This is used to map the output coordinates to the input coordinates.</p>
521 <dl class="params"><dt>Parameters</dt><dd>
522   <table class="params">
523     <tr><td class="paramdir">[in]</td><td class="paramname">coord</td><td>2D coordinates to transform. </td></tr>
524     <tr><td class="paramdir">[in]</td><td class="paramname">scale</td><td>input/output scale ratio</td></tr>
525   </table>
526   </dd>
527 </dl>
528 <dl class="section return"><dt>Returns</dt><dd>a float8 containing 4 2D transformed values in the input image. </dd></dl>
529
530 <p>Definition at line <a class="el" href="scale_8cl_source.xhtml#l00034">34</a> of file <a class="el" href="scale_8cl_source.xhtml">scale.cl</a>.</p>
531
532 <p>Referenced by <a class="el" href="scale_8cl_source.xhtml#l00086">scale_nearest_neighbour()</a>.</p>
533 <div class="fragment"><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;{</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;    <span class="keyword">const</span> float4 in_x_coords = (float4)(coord.s0, 1 + coord.s0, 2 + coord.s0, 3 + coord.s0);</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    <span class="keyword">const</span> float4 new_x       = (in_x_coords + ((float4)(0.5f))) * (float4)(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>.s0);</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    <span class="keyword">const</span> float4 new_y       = (float4)((coord.s1 + 0.5f) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">scale</a>.s1);</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    <span class="keywordflow">return</span> (float8)(new_x.s0, new_y.s0, new_x.s1, new_y.s1, new_x.s2, new_y.s2, new_x.s3, new_y.s3);</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_acec6d8ad52a28972fa74e071c1a63b6a"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#acec6d8ad52a28972fa74e071c1a63b6a">arm_compute::test::validation::scale</a></div><div class="ttdeci">scale</div><div class="ttdef"><b>Definition:</b> <a href="_n_e_o_n_2_pixel_wise_multiplication_8cpp_source.xhtml#l00178">PixelWiseMultiplication.cpp:178</a></div></div>
534 </div><!-- fragment -->
535 </div>
536 </div>
537 </div><!-- contents -->
538 </div><!-- doc-content -->
539 <!-- start footer part -->
540 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
541   <ul>
542     <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="scale_8cl.xhtml">scale.cl</a></li>
543     <li class="footer">Generated on Wed May 23 2018 11:36:39 for Compute Library by
544     <a href="http://www.doxygen.org/index.html">
545     <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
546   </ul>
547 </div>
548 </body>
549 </html>