SDL_Main isn't needed on sane platforms anyway. Remove it
[jpcrr.git] / streamtools / resizer-test.cpp
blob79b2c6531d5aa1e77b1c08ff6824688adfd90f82
1 #include <stdint.h>
2 #include <cmath>
3 #include <stdexcept>
4 #include "resize.hpp"
6 namespace
8 inline uint32_t nnscale(uint32_t value, uint32_t trange, uint32_t srange)
10 //x / trange is as good approximation for value / srange as possible.
11 //=> x is as good approximation for value * trange / srange as possible.
12 return (uint32_t)(((uint64_t)value * trange + srange / 2) / srange);
15 void do_resize(uint8_t* target, uint32_t twidth, uint32_t theight,
16 const uint8_t* source, uint32_t swidth, uint32_t sheight)
18 uint32_t* __restrict__ src = (uint32_t*)source;
19 uint32_t* __restrict__ dest = (uint32_t*)target;
21 for(uint32_t y = 0; y < sheight; y++)
22 for(uint32_t x = 0; x < swidth; x++) {
23 uint32_t _x = nnscale(x, twidth, swidth);
24 uint32_t _y = nnscale(y, theight, sheight);
25 dest[_y * twidth + _x] = src[y * swidth + x];
29 simple_resizer factory("test", do_resize);