- for(int y = r.begin(); y != r.end(); ++y)
- A_memcpy(result + y*plane.linesize, decoded + y*decoded_linesize, plane.linesize);
- }, ap);
+ // Copy line by line since ffmpeg sometimes pads each line.
+ tbb::affinity_partitioner ap;
+ tbb::parallel_for(tbb::blocked_range<int>(0, desc.planes[n].height), [&](const tbb::blocked_range<int>& r)
+ {
+ for (int y = r.begin(); y != r.end(); ++y)
+ A_memcpy(result + y*plane.linesize, decoded + y*decoded_linesize, plane.linesize);
+ }, ap);
+ }
+ else
+ {
+ fast_memcpy(result, decoded, plane.size);
+ }