| 97 | |
| 98 | template <unsigned int TileRows, unsigned int TileCols> |
| 99 | void CopyCropped<TileRows, TileCols>::execute( |
| 100 | const size_t size, |
| 101 | const void * const inptr, |
| 102 | const size_t in_row_stride, |
| 103 | const size_t in_col_stride, |
| 104 | void * const outptr, |
| 105 | const size_t out_row_stride, |
| 106 | const size_t out_col_stride, |
| 107 | const unsigned int pad_top, |
| 108 | const unsigned int pad_left, |
| 109 | const unsigned int pad_bottom, |
| 110 | const unsigned int pad_right |
| 111 | ) |
| 112 | { |
| 113 | for (unsigned int out_i = 0, in_i = pad_top; in_i < TileRows - pad_bottom; out_i++, in_i++) |
| 114 | { |
| 115 | for (unsigned int out_j = 0, in_j = pad_left; in_j < TileCols - pad_right; out_j++, in_j++) |
| 116 | { |
| 117 | std::memcpy( |
| 118 | static_cast<uint8_t *>(outptr) + out_i*out_row_stride + out_j*out_col_stride, |
| 119 | static_cast<const uint8_t *>(inptr) + in_i*in_row_stride + in_j*in_col_stride, |
| 120 | size |
| 121 | ); |
| 122 | } |
| 123 | } |
| 124 | } |
| 125 | |
| 126 | template class CopyCropped<2, 2>; |
| 127 | template class CopyCropped<3, 3>; |