멀티코어 시스템을 위한 멀티스레드 H.264/AVC 병렬 디코더

고해상도의 동영상 서비스가 보편화 되면서 동영상을 빠르게 처리를 위한 연구가 활발히 이루어지고 있다. 멀티코어 프로세서의 사용이 증가하고 멀티코어 시스템에서 H.264/AVC 디코더를 구현하기 위하여 다양한 병렬화 방법이 제안되고 있다. 하지만 H.264/AVC 디코더를 병렬화 하는 경우, 각 스레드에서 처리하는 데이터의 처리 시간 차이로 인하여 지속적으로 스레드의 동기를 확인해야 하는데, 이는 병렬화를 통한 디코더의 성능 향상의 걸림돌이 된다. 이러한 병렬화 과정에서 발생하는 문제점을 해결하기 위해 우리가 제안하는 Multi -Threaded Parallelization(MTP) 방법은 프레임을 매크로 블록 묶음으로 나누어 병렬화 한다. 그리고 병렬화 과정에서 스레드를 처리하는 방법을 개선하고, 메모리를 재사용함으로써 디코더의 성능을 향상 시켰다. 본 논문에서는 FFmpeg H.264/AVC 디코더를 인텔 쿼드 코어 기반의 멀티코어 시스템에서 멀티 스레드로 구현하여 실험이 진행되었다. 그 결과, MTP 방법을 적용하여 병렬화 방법 적용하지 않은 H.264/AVC 디코더와 비교하여 최대 53%의 성능 향상을 보였으며, 2Dwave 병렬화 방법의 메모리 사용량에 비해 HD 영상에서 65%, FHD 영상에서 81%의 메모리 사용량을 줄 일 수 있었다.