| 30 | } |
| 31 | |
| 32 | std::string CvTransposeKernel::GetCVKernelBody(TContext* context) const { |
| 33 | auto kernel_sig = GetCVKernelSignature(context); |
| 34 | std::string body_temp = R"( |
| 35 | #include <string.h> |
| 36 | #include "tinycv_c.h" |
| 37 | void ${kernel_sig}{ |
| 38 | uint8_t * src_base_ptr = src->data; |
| 39 | uint8_t * dst_base_ptr = dst->data; |
| 40 | int src_rows = src->rows; |
| 41 | int src_cols = src->cols; |
| 42 | int src_chans = src->channels; |
| 43 | for(int row_id = 0; row_id < src_rows; ++row_id) |
| 44 | for(int col_id = 0; col_id < src_cols; ++col_id){ |
| 45 | uint8_t * src_ptr = src_base_ptr + row_id * src_cols * src_chans + col_id * src_chans; |
| 46 | uint8_t * dst_ptr = dst_base_ptr + col_id * src_rows * src_chans + row_id * src_chans; |
| 47 | for(int channel_id = 0 ; channel_id < src_chans; ++channel_id){ |
| 48 | dst_ptr[channel_id] = src_ptr[channel_id]; |
| 49 | } |
| 50 | } |
| 51 | } |
| 52 | )"; |
| 53 | return StringTemplate::StringTemplateArgs() |
| 54 | .add("kernel_sig", kernel_sig) |
| 55 | .render(body_temp); |
| 56 | } |
| 57 | |
| 58 | // vim: syntax=cpp.doxygen |
nothing calls this directly
no test coverage detected