3131#include < vector>
3232#include " half.hpp"
3333#include < algorithm>
34+ #include " concurrency.hpp"
3435
3536using namespace std ;
3637
@@ -250,13 +251,11 @@ namespace coder::HWY_NAMESPACE {
250251 auto mSrc = reinterpret_cast <const uint8_t *>(sourceData);
251252 auto mDst = reinterpret_cast <uint8_t *>(dst);
252253
253- #pragma omp parallel for num_threads(4) schedule(dynamic)
254- for (int y = 0 ; y < height; ++y) {
255- Rgba8To565HWYRow (
256- reinterpret_cast <const uint8_t *>(mSrc + y * srcStride),
257- reinterpret_cast <uint16_t *>(mDst + y * dstStride), width,
258- attenuateAlpha);
259- }
254+ concurrency::parallel_for (2 , height, [&](int y) {
255+ Rgba8To565HWYRow (reinterpret_cast <const uint8_t *>(mSrc + y * srcStride),
256+ reinterpret_cast <uint16_t *>(mDst + y * dstStride), width,
257+ attenuateAlpha);
258+ });
260259 }
261260
262261 inline Vec<FixedTag<uint8_t , 8 >>
@@ -329,9 +328,12 @@ namespace coder::HWY_NAMESPACE {
329328 }
330329
331330 for (; x < width; ++x) {
332- uint8_t r = static_cast <uint8_t >(roundf (clamp (LoadHalf (src[0 ]), 0 .0f , 1 .0f ) * maxColors));
333- uint8_t g = static_cast <uint8_t >(roundf (clamp (LoadHalf (src[1 ]), 0 .0f , 1 .0f ) * maxColors));
334- uint8_t b = static_cast <uint8_t >(roundf (clamp (LoadHalf (src[2 ]), 0 .0f , 1 .0f ) * maxColors));
331+ uint8_t r = static_cast <uint8_t >(roundf (
332+ clamp (LoadHalf (src[0 ]), 0 .0f , 1 .0f ) * maxColors));
333+ uint8_t g = static_cast <uint8_t >(roundf (
334+ clamp (LoadHalf (src[1 ]), 0 .0f , 1 .0f ) * maxColors));
335+ uint8_t b = static_cast <uint8_t >(roundf (
336+ clamp (LoadHalf (src[2 ]), 0 .0f , 1 .0f ) * maxColors));
335337
336338 r = clamp (r, (uint8_t ) 0 , (uint8_t ) maxColors);
337339 g = clamp (g, (uint8_t ) 0 , (uint8_t ) maxColors);
@@ -358,13 +360,11 @@ namespace coder::HWY_NAMESPACE {
358360 auto mSrc = reinterpret_cast <const uint8_t *>(sourceData);
359361 auto mDst = reinterpret_cast <uint8_t *>(dst);
360362
361- #pragma omp parallel for num_threads(4) schedule(dynamic)
362- for (int y = 0 ; y < height; ++y) {
363- RGBAF16To565RowHWY (
364- reinterpret_cast <const uint16_t *>(mSrc + y * srcStride),
365- reinterpret_cast <uint16_t *>(mDst + y * dstStride), width,
366- maxColors);
367- }
363+ concurrency::parallel_for (2 , height, [&](int y) {
364+ RGBAF16To565RowHWY (reinterpret_cast <const uint16_t *>(mSrc + y * srcStride),
365+ reinterpret_cast <uint16_t *>(mDst + y * dstStride), width,
366+ maxColors);
367+ });
368368 }
369369
370370 void Rgb565ToU8HWY (const uint16_t *sourceData, int srcStride,
@@ -374,13 +374,11 @@ namespace coder::HWY_NAMESPACE {
374374 auto mSrc = reinterpret_cast <const uint8_t *>(sourceData);
375375 auto mDst = reinterpret_cast <uint8_t *>(dst);
376376
377- #pragma omp parallel for num_threads(4) schedule(dynamic)
378- for (int y = 0 ; y < height; ++y) {
379- Rgb565ToU8HWYRow (
380- reinterpret_cast <const uint16_t *>(mSrc + srcStride * y),
377+ concurrency::parallel_for (2 , height, [&](int y) {
378+ Rgb565ToU8HWYRow (reinterpret_cast <const uint16_t *>(mSrc + srcStride * y),
381379 reinterpret_cast <uint8_t *>(mDst + dstStride * y),
382380 width, permuteMap, bgColor);
383- }
381+ });
384382 }
385383}
386384
0 commit comments