@多核系统下H264解码器并行解码方案的疑惑????
poty 2009-01-03 04:12:07 现在正在做H264解码器针对多核系统的优化,到网上搜索了一些并行解码的方案;主要是基于gop、slice、mb三种数据结构的划分。
下面是我做的一些尝试,主要是slice层与MB层并行解码方案:
(1)Slice层的并行解码方案对基于帧编码的多Slice结构的码流解码性能提高明显;但基于场编码的单Slice结构的码流,由于仍然等同于串行解码,性能没什么提升,所以后来又做了基于MB的并行解码;
(2)MB的并行解码,让我很失望!!!从调整程序架构、修改代码、实现方案整整发了快两个星期,最后发现性能还远远不如以前的串行解码的方式;实现的方案大致是先构造一个扫描表,然后将对等的MB分别用线程并行去解的方式,但效率很低,起初我以为是自己的线程设计的不是很理想,然后直接用OPenMP将其放入并行区域去解,但解码性能都差不多,郁闷中……
后来,做了很多测试程序,感觉基于MB的并行解码这种方式的划分,视乎粒度太小了(相当每个宏块用一个线程去解);而基于MB的并行解码的预处理阶段缓存了很多信息感觉Cache也有点问题;现在正在迷惘中…………,不知MB的并行解码究竟可行不可行???
还请有这方面经验的前辈不吝赐教,由衷感谢……