Publishing R5 content (#72)
[platform/upstream/dldt.git] / inference-engine / thirdparty / clDNN / api / C / border.h
1 // Copyright (c) 2018 Intel Corporation
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //      http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 ///////////////////////////////////////////////////////////////////////////////////////////////////
16 #ifndef BORDER_H
17 #define BORDER_H
18
19 #include "cldnn.h"
20
21
22 /// @addtogroup c_api C API
23 /// @{
24 /// @addtogroup c_topology Network Topology
25 /// @{
26 /// @addtogroup c_primitives Primitives
27 /// @{
28
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32
33 /// @brief Type of border that will be added to the input by current layer / primitive
34 ///        ( @CLDNN_PRIMITIVE_DESC{border} ​).
35 typedef enum /*:int32_t*/
36 {
37     /// @brief All points in the border are set to constant value.
38     cldnn_border_constant,
39     /// @brief Border is constructed as an mirror of image (edge is also mirrored).
40     /// @details Size of border in any dimension cannot be larger than size of
41     ///          input in the same dimension.
42     cldnn_border_mirror,
43     /// @brief Border is constructed as an replication of edge.
44     /// @details Size of border in any dimension cannot be larger than size of
45     ///          input in the same dimension.
46     cldnn_border_edge,
47     /// @brief Border is constructed as an mirror of image (edge is NOT mirrored).
48     /// @details Size of border in any dimension cannot be larger than size of
49     ///          input in the same dimension decreased by @c 1.
50     cldnn_border_mirror_101
51 } cldnn_border_type;
52
53
54 /// @brief Adds border around input.
55 ///
56 /// @details Applies border of specified type around input data. The size of output data is increased
57 ///          by @c left_top_sizes and by @right_bottom_sizes.
58 /// @n
59 /// @n@b Requirements:
60 /// @n - @c left_top_sizes and @c right_bottom_sizes must be non-negative on all dimensions and compatible
61 ///      with size of input (describe the same dimensions).
62 /// @n - For @c border_type equal to @c cldnn_border_mirror, @c left_top_sizes and @c right_bottom_sizes
63 ///      must be lower than or equal to size of input on corresponding dimension (for all dimensions)
64 /// @n - For @c border_type equal to @c cldnn_border_mirror_101, @c left_top_sizes and @c right_bottom_sizes
65 ///      must be lower than size of input on corresponding dimension (for all dimensions)
66 CLDNN_BEGIN_PRIMITIVE_DESC(border)
67 /// @brief Size of border that needs to be added from left (in X dimension) and from top (in Y dimension).
68 cldnn_tensor left_top_sizes;
69 /// @brief Size of border that needs to be added from right (in X dimension) and from bottom (in Y dimension).
70 cldnn_tensor right_bottom_sizes;
71 /// @brief Type of border that needs to be added to the input.
72 cldnn_border_type border_type;
73 /// @brief Border value that is used in constant mode.
74 float border_value;
75 CLDNN_END_PRIMITIVE_DESC(border)
76
77
78 CLDNN_DECLARE_PRIMITIVE_TYPE_ID(border);
79
80 #ifdef __cplusplus
81 }
82 #endif
83
84 /// @}
85 /// @}
86 /// @}
87 #endif // BORDER_H