所以,我给了一个程序在C++中,我必须使用TBB并行化(使其更快)。当我查看代码时,我认为使用管道是有道理的。问题是我没有什么经验,我在网上发现的任何东西都让我更加困惑。这里是代码的主要部分:并行视频转换程序tbb
uint64_t cbRaw=uint64_t(w)*h*bits/8;
std::vector<uint64_t> raw(cbRaw/8);
std::vector<uint32_t> pixels(w*h);
while(1){
if(!read_blob(STDIN_FILENO, cbRaw, &raw[0]))
break; // No more images
unpack_blob(w, h, bits, &raw[0], &pixels[0]);
process(levels, w, h, bits, pixels);
//invert(levels, w, h, bits, pixels);
pack_blob(w, h, bits, &pixels[0], &raw[0]);
write_blob(STDOUT_FILENO, cbRaw, &raw[0]);
}
它实际上读取视频文件,拆包,适用改造,包装,然后将它写入到输出。这看起来很简单,所以如果你有任何想法或资源可能有用,请分享。
Thanx提前,
D.基督。
从概念上说,我明白了。问题在于它在教程中使用了TextSlice *类型以便在流水线阶段之间传输数据。它看起来非常复杂 – user3371706
我已经更新了答案,以解释您可能需要做的数据传输。希望有所帮助。 –