Abstract
Wide deployment of high resolution video services leads to active studies on high speed video processing. Especially, prevalent employment of multi-core systems accelerates researches on high resolution video processing based on parallelization of multimedia software. In this paper, we propose a novel parallel H.264/AVC decoding scheme on a multi-core platform. Parallel H.264/AVC decoding is challenging not only because parallelization may incur significant synchronization overhead but also because software may have complicated dependencies. To overcome such issues, we propose a novel approach called Multi-Threaded Parallelization(MTP). In MTP, to reduce synchronization overhead, a separate thread is allocated to each stage in the pipeline. In addition, an efficient memory reuse technique is used to reduce the memory requirement. To verify the effectiveness of the proposed approach, we parallelized FFmpeg H.264/AVC decoder with the proposed technique using OpenMP, and carried out experiments on an Intel Quad-Core platform. The proposed design performs better than FFmpeg H.264/AVC decoder before the parallelization by 53%. We also reduced the amount of memory usage by 65% and 81% for a high-definition(HD) and a full high-definition(FHD) video, respectively compared with that of popular existing method called 2Dwave.
고해상도의 동영상 서비스가 보편화 되면서 동영상을 빠르게 처리를 위한 연구가 활발히 이루어지고 있다. 멀티코어 프로세서의 사용이 증가하고 멀티코어 시스템에서 H.264/AVC 디코더를 구현하기 위하여 다양한 병렬화 방법이 제안되고 있다. 하지만 H.264/AVC 디코더를 병렬화 하는 경우, 각 스레드에서 처리하는 데이터의 처리 시간 차이로 인하여 지속적으로 스레드의 동기를 확인해야 하는데, 이는 병렬화를 통한 디코더의 성능 향상의 걸림돌이 된다. 이러한 병렬화 과정에서 발생하는 문제점을 해결하기 위해 우리가 제안하는 Multi -Threaded Parallelization(MTP) 방법은 프레임을 매크로 블록 묶음으로 나누어 병렬화 한다. 그리고 병렬화 과정에서 스레드를 처리하는 방법을 개선하고, 메모리를 재사용함으로써 디코더의 성능을 향상 시켰다. 본 논문에서는 FFmpeg H.264/AVC 디코더를 인텔 쿼드 코어 기반의 멀티코어 시스템에서 멀티 스레드로 구현하여 실험이 진행되었다. 그 결과, MTP 방법을 적용하여 병렬화 방법 적용하지 않은 H.264/AVC 디코더와 비교하여 최대 53%의 성능향상을 보였으며, 2Dwave 병렬화 방법의 메모리 사용량에 비해 HD 영상에서 65%, FHD 영상에서 81%의 메모리 사용량을 줄 일 수 있었다.