KR101138920B1 - 멀티 스레드 기반의 비디오 디코더 및 디코딩 방법 - Google Patents

멀티 스레드 기반의 비디오 디코더 및 디코딩 방법 Download PDF

Info

Publication number
KR101138920B1
KR101138920B1 KR1020100041915A KR20100041915A KR101138920B1 KR 101138920 B1 KR101138920 B1 KR 101138920B1 KR 1020100041915 A KR1020100041915 A KR 1020100041915A KR 20100041915 A KR20100041915 A KR 20100041915A KR 101138920 B1 KR101138920 B1 KR 101138920B1
Authority
KR
South Korea
Prior art keywords
processing
thread
area
memory bank
result
Prior art date
Application number
KR1020100041915A
Other languages
English (en)
Other versions
KR20110122412A (ko
Inventor
김원진
정기석
Original Assignee
한양대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Priority to KR1020100041915A priority Critical patent/KR101138920B1/ko
Publication of KR20110122412A publication Critical patent/KR20110122412A/ko
Application granted granted Critical
Publication of KR101138920B1 publication Critical patent/KR101138920B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

처리 성능이 향상된 멀티 스레드 기반의 비디오 디코딩 방법이 제공된다. 비디오 디코딩 방법은 비디오 프레임을 제1 내지 제N 영역으로 분할하고, 제1 단계에서 제1-1 스레드를 생성하여 제1 영역에 대해 제1 처리를 수행하고, 제2 단계에서 제2-1 스레드를 생성하여 제1 영역에 대해 제2 처리를 수행하고, 제2-2 스레드를 생성하여 제2 영역에 대해 제1 처리를 수행하고, 제3 단계에서 제3-1 스레드를 생성하여 제1 영역에 대해 제3 처리를 수행하고, 제3-2 스레드를 생성하여 제2 영역에 대해 제2 처리를 수행하고, 제3-3 스레드를 생성하여 제3 영역에 대해 제1 처리를 수행하는 것을 포함한다.

Description

멀티 스레드 기반의 비디오 디코더 및 디코딩 방법{Video decoder and method for video decoding using multi-thread}
본 발명은 멀티 스레드 기반의 비디오 디코더 및 디코딩 방법에 관한 것이다.
인터넷을 포함한 정보통신 기술이 발달함에 따라 문자, 음성뿐만 아니라 화상통신이 증가하고 있다. 기존의 문자 위주의 통신 방식으로는 소비자의 다양한 욕구를 충족시키기에는 부족하며, 이에 따라 문자, 영상, 음악 등 다양한 형태의 정보를 수용할 수 있는 멀티미디어 서비스가 증가하고 있다. 멀티미디어 데이터는 그 양이 방대하여 대용량의 저장매체를 필요로 하며 전송 시에 넓은 대역폭을 필요로 한다. 따라서 문자, 영상, 오디오를 포함한 멀티미디어 데이터를 전송하기 위해서는 압축코딩기법을 사용하는 것이 필수적이다.
데이터를 압축하는 기본적인 원리는 데이터의 중복(redundancy) 요소를 제거하는 과정이다. 이러한 데이터 중에서도 특히, 비디오 데이터는 그 용량이 매우 크기 때문에 다른 종류의 멀티미디어 데이터들에 비하여 효율적인 압축의 중요성이 보다 크다고 할 수 있다.
비디오 압축의 기본 원리는 하나의 픽쳐(프레임) 내에서 동일한 색이나 객체가 반복되는 것과 같은 공간적 중복이나, 동영상 프레임에서 인접 프레임이 거의 변화가 없는 경우나 오디오에서 같은 음이 계속 반복되는 것과 같은 시간적 중복, 또는 인간의 시각 및 지각 능력이 높은 주파수에 둔감한 것을 고려하여 지각적 중복을 제거하는 방법 등을 통하여 데이터를 압축하는 것이다. 일반적인 비디오 코딩 방법에 있어서, 시간적 중복은 모션 보상에 근거한 시간적 필터링(temporal filtering)에 의해 제거하고, 공간적 중복은 공간적 변환(spatial transform)에 의해 제거한다.
종래에는 이러한 비디오 코딩이나 디코딩 작업이 단일 코어 프로세서(single-core processor)에 의하여 이루어지는 것이 일반적이었다. 그러나, 최근 들어 강력한 성능의 멀티 코어 프로세서(multi-core processor)가 보급화되면서 비디오 코딩/디코딩과 같이 시스템 자원을 많이 소모하는 분야에서 멀티 코어 프로세서의 활용도가 높아지고 있다.
본 발명이 해결하고자 하는 기술적 과제는 처리 성능이 향상된 멀티 스레드 기반의 비디오 디코딩 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 처리 성능이 향상된 멀티 스레드 기반의 비디오 디코더를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 멀티 스레드 기반의 비디오 디코딩 방법의 일 태양(aspect)은, 비디오 프레임을 제1 내지 제N 영역으로 분할하고, 제1 단계에서 제1-1 스레드를 생성하여 제1 영역에 대해 제1 처리를 수행하고, 제2 단계에서 제2-1 스레드를 생성하여 제1 영역에 대해 제2 처리를 수행하고, 제2-2 스레드를 생성하여 제2 영역에 대해 제1 처리를 수행하고, 제3 단계에서 제3-1 스레드를 생성하여 제1 영역에 대해 제3 처리를 수행하고, 제3-2 스레드를 생성하여 제2 영역에 대해 제2 처리를 수행하고, 제3-3 스레드를 생성하여 제3 영역에 대해 제1 처리를 수행하는 것을 포함한다.
상기 다른 기술적 과제를 달성하기 위한 본 발명의 멀티 스레드 기반의 비디오 디코더의 일 태양은, 제1 내지 제N 영역을 포함하는 비디오 프레임을 제공받는 입력 모듈, 및 다수의 스레드를 생성하여 비디오 프레임에 대한 디코딩 처리를 수행하는 처리 모듈을 포함하되, 처리 모듈은, 제1 단계에서 제1-1 스레드를 생성하여 제1 영역에 대해 제1 처리를 수행하고, 제2 단계에서 제2-1 스레드를 생성하여 제1 영역에 대해 제2 처리를 수행하고, 제2-2 스레드를 생성하여 제2 영역에 대해 제1 처리를 수행하고, 제3 단계에서 제3-1 스레드를 생성하여 제1 영역에 대해 제3 처리를 수행하고, 제3-2 스레드를 생성하여 제2 영역에 대해 제2 처리를 수행하고, 제3-3 스레드를 생성하여 제3 영역에 대해 제1 처리를 수행한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코더 및 디코딩 방법에 따를 경우, H.264/AVC 표준에 따른 데이터 의존성을 만족시키면서 디코딩 처리 성능을 향상시킬 수 있다. 또한, 디코딩 과정에서 메모리 뱅크를 재사용함으로써, 메모리의 효율적인 이용이 가능하다.
도 1은 H.264/AVC 표준에 따른 비디오 디코딩 흐름도이다.
도 2는 H.264/AVC 표준에 따른 비디오 디코딩에서 매크로 블록간 의존성을 나타낸 도면이다.
도 3 내지 도 6은 본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코딩 방법을 설명하기 위한 도면들이다.
도 7 및 도 8은 본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코딩 방법의 성능을 설명하기 위한 도면들이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하며, "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하 도 1 내지 도 6을 참조하여, 본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코딩 방법에 대해 설명한다.
이하에서는 본 발명을 H.264/AVC 표준에 따라 디코딩하는 것을 예로 들어 설명하나, 본 발명이 이에 제한되는 것은 아니다. 또한, 본 명세서에서는 비디오 프레임이 다수의 매크로 블록(Macro Block, 이하 MB표시함)을 포함하는 것을 예로 들어 설명하고 있으나, 역시 본 발명이 이에 제한되는 것은 아니다.
먼저, 도 1을 참조하여 H.264/AVC 표준에 따라 인코딩된 비디오 프레임을 디코딩하는 작업 흐름에 대해 설명한다.
도 1은 H.264/AVC 표준에 따른 비디오 디코딩 흐름도이다.
도 1을 참조하면, 비디오 프레임을 구성하는 비트 스트림(Bit Stream)이 제공되면, 이를 엔트로피 복호화(Entropy Decoding, 이하 ED로 표시함)(10)한다. 구체적으로, H.264/AVC에서 비트 스트림은 Network Adaptation Layer (NAL) 단위로 입력되어 ED(10)에서 계수(Coefficient)를 생성할 수 있다. 다음, 엔트로피 복호화 작업 후 생성되는 계수들은 역 양자화(Inverse Quantization, 이하 IQ로 표시함)(20) 및 역 변환(Inverse Transformation, 이하, IT로 표시함)(30) 과정 후에 레시듀얼 데이터(residual data)로 생성될 수 있다.
한편, 엔트로피 복호화 작업 후 생성되는 계수들은 여러 예측데이터 생성에도 사용될 수 있는데, 인트라 예측(intra prediction, 이하 IP로 표시함)(40)은 공간적 중복성을 이용하여 화면 내 예측을 수행하고, 모션 보상(motion compensation, 이하 MC로 표시함)(50)은 시간적 중복성을 사용하여 화면간의 예측을 수행할 수 있다. 이러한 예측 작업은 MB의 타입에 따라서 IP가 적용되거나, MC가 적용될 수 있다.
IP 및 MC후 만들어지는 블록은 IQ/IT 후에 만들어지는 레시듀얼 데이터와 합쳐질 수 있다(60). 그리고 이렇게 디코딩된 영상은 블록간의 경계가 뚜렷이 나타나는 블록킹 현상이 나타날 수 있기 때문에, 이를 없애기 위해서 블록 경 계를 부드럽게 하는 디블록킹 필터(Deblocking Filter, 이하 DF로 표시함)(70)를 적용할 수 있다. 여기서, H.264/AVC의 DF는 가중치 값을 제어하면서 적용하는 적응형(adaptive) 방법을 사용할 수 있다.
다음, 도 2를 참조하여, H.264/AVC 표준에 따른 디코딩 방법에서 MB간 데이터 의존성에 대해 설명한다.
도 2는 H.264/AVC 표준에 따른 비디오 디코딩에서 매크로 블록간 의존성을 나타낸 도면이다.
도 2를 참조하면, 현재 처리하고자 하는 MB의 IP, MC 및 DF가 각각 처리되기 위해서는 주변 MB들의 IP, MC 및 DF가 각각 처리된 상태여야 한다. 구체적으로 현재 처리하고자 하는 MB의 IP 및 MC가 처리되기 위해서는, 처리하고자 하는 MB(Current MB)의 좌상, 상, 우상의 MB(1, 2, 3) 및 좌측의 MB(4)의 IP 및 MC가 처리된 상태여야 한다. 그리고, 현재 처리하고자 하는 MB의 DF가 각각 처리되기 위해서는, 처리하고자 하는 MB(Current MB)의 상측 의 MB(2) 및 좌측의 MB(4)의 DF가 처리된 상태여야 한다. 이는 각 MB를 처리하는데 있어서 의존성 있는 MB의 처리여부를 확인해야 하는 결과를 가져오게 되고, 이는 처리 속도에 악영향을 끼칠 수 있다. 이에 대해서는 보다 자세히 후술하도록 한다.
다음 도 3 내지 도 6을 참조하여, 본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코딩 방법에 대해 설명한다.
도 3 내지 도 6은 본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코딩 방법을 설명하기 위한 도면들이다.
먼저 도 3을 참조하면, 비디오 프레임을 제1 내지 제N 영역으로 분할한다. 여기서 비디오 프레임은 전술하였듯이 H.264/AVC 표준에 따라 인코딩된 비디오 프레임일 수 있다.
각각의 제1 내지 제N 영역은 다수의 MB(110)를 포함할 수 있다. 도 3 내지 도 6을 함께 참조하면, 본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코딩 방법에서는 비디오 프레임(100)을 각각 16개의 MB를 포함하는 제1 내지 제4 영역으로 분할한 것을 예시하고 있으나, 본 발명이 이에 제한되는 것은 아니다. 필요에 따라 분할된 영역의 개수는 훨씬 더 많아질 수 있다. 또한, 여기서는 제1 내지 제4 영역에 포함된 MB(110)의 개수가 서로 16개로 동일한 것을 예시하고 있으나, 이 역시 하나의 예시에 불과한 것으로 MB(110)의 개수는 얼마든지 달라질 수도 있으며, 필요에 따라 제1 내지 제4 영역은 서로 다른 개수의 MB(110)를 포함할 수도 있다. 마지막으로 도 3 내지 도 6에는 비디오 프레임(100)이 도시된 바와 같이 가로방향으로 4등분 되어 있는 것이 도시되어 있으나, 본 발명은 역시 이에 제한되지 않는다.
다시 도 3을 참조하면, 제1 단계(Stage 1)에서 제1-1 스레드(211)를 생성하여 제1 영역에 대해 제1 처리를 수행한다. 여기서 제1 처리는 ED일 수 있다. 제1-1 스레드(211)가 제1 영역에 대해 ED를 모두 수행하고 나면, 그 결과는 제1 메모리 뱅크(310)에 저장될 수 있다. 이는 후술하겠지만 다른 스레드가 다른 처리를 위해 제1 영역에 대한 ED 결과를 이용하기 위함일 수 있다.
다음 도 4를 참조하면, 제2 단계(Stage 2)에서 제2-1 스레드(221)를 생성하여 제1 영역에 대해 제2 처리를 수행하고, 제2-2 스레드(222)를 생성하여 제2 영역에 대해 제1 처리를 수행한다. 여기서 제1 처리는 ED일 수 있으며, 제2 처리는 MC+IQ/IP 또는 IP+IQ/IT일 수 있다. 여기서는 MB의 타입에 따라 MC와 IP중 어느 하나가 수행될 수 있다.
제2-1 스레드(221)는 제1 메모리 뱅크(310)에 저장된 제1-1 스레드(도 3의 211)가 제1 영역에 대해 ED 처리한 결과를 이용하여, 제1 영역에 대한 MC+IQ/IP 또는 IP+IQ/IT 처리를 수행할 수 있다. 그리고, 수행된 처리 결과는 다시 제1 메모리 뱅크(310)에 저장될 수 있다. 제2-2 스레드(222)는 제2 영역에 대해 제1 처리를 수행하고, 그 처리 결과를 제2 메모리 뱅크(320)에 저장할 수 있다.
다음 도 5를 참조하면, 제3 단계(Stage 3)에서 제3-1 스레드(231)를 생성하여 제1 영역에 대해 제3 처리를 수행하고, 제3-2 스레드(232)를 생성하여 제2 영역에 대해 제2 처리를 수행하고, 제3-3 스레드(233)를 생성하여 제3 영역에 대해 제1 처리를 수행한다. 여기서 제1 처리는 ED일 수 있으며, 제2 처리는 MC+IQ/IP 또는 IP+IQ/IT일 수 있고, 제3 처리는 DF일 수 있다.
제3-1 스레드(231)는 제1 메모리 뱅크(310)에 저장된 제2-1 스레드(도 4의 221)가 제1 영역에 대해 MC+IQ/IP 또는 IP+IQ/IT 처리한 결과를 이용하여, 제1 영역에 대한 DF 처리를 수행할 수 있다. 그리고, 수행된 처리 결과는 다시 제1 메모리 뱅크(310)에 저장될 수 있다. 제3-2 스레드(232)는 제2 메모리 뱅크(320)에 저장된 제2-2 스레드(도 4의 222)가 제2 영역에 대해 ED 처리한 결과를 이용하여, 제2 영역에 대한 MC+IQ/IP 또는 IP+IQ/IT 처리를 수행하고, 그 처리 결과를 다시 제2 메모리 뱅크(320)에 저장할 수 있다. 여기서 본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코딩 방법에서는 제2 영역에 대한 MC+IQ/IP 또는 IP+IQ/IT 처리가 제1 영역에 대한 MC+IQ/IP 또는 IP+IQ/IT 처리가 수행된 후 수행되기 때문에, 도 2에 도시한 H.264/AVC 표준에 따른 데이터 의존성을 만족시킴을 알 수 있다. 마지막으로 제3-3 스레드(233)는 제3 영역에 대해 제1 처리를 수행하고, 그 처리 결과를 제3 메모리 뱅크(330)에 저장할 수 있다.
다음 도 6을 참조하면, 제4 단계(Stage 4)에서 제4-1 스레드(241)를 생성하여 제4 영역에 대해 제1 처리를 수행하고, 제4-2 스레드(242)를 생성하여 제2 영역에 대해 제3 처리를 수행하고, 제4-3 스레드(243)를 생성하여 제3 영역에 대해 제2 처리를 수행한다. 앞에서와 마찬가지로 여기서, 제1 처리는 ED일 수 있으며, 제2 처리는 MC+IQ/IP 또는 IP+IQ/IT일 수 있고, 제3 처리는 DF일 수 있다.
도 6을 참조하면, 제1 영역은 ED, MC+IQ/IP 또는 IP+IQ/IT, DF처리가 모두 완료되어 디코딩이 끝난 영역(Decoded)일 수 있다. 한편, 제4-2 스레드(242)는 제2 메모리 뱅크(320)에 저장된 제3-2 스레드(도 5의 232)가 제2 영역에 대해 MC+IQ/IP 또는 IP+IQ/IT 처리한 결과를 이용하여, 제2 영역에 대한 DF 처리를 수행할 수 있다. 그리고, 수행된 처리 결과는 다시 제2 메모리 뱅크(320)에 저장될 수 있다. 제4-3 스레드(243)는 제3 메모리 뱅크(330)에 저장된 제3-3 스레드(도 4의 233)가 제3 영역에 대해 ED 처리한 결과를 이용하여, 제3 영역에 대한 MC+IQ/IP 또는 IP+IQ/IT 처리를 수행하고, 그 처리 결과를 다시 제3 메모리 뱅크(330)에 저장할 수 있다. 마찬가지로, 여기서 제3 영역에 대한 MC+IQ/IP 또는 IP+IQ/IT 처리는 제2 영역에 대한 MC+IQ/IP 또는 IP+IQ/IT 처리가 수행된 후 수행되기 때문에, 도 2에 도시한 H.264/AVC 표준에 따른 데이터 의존성을 만족시킴을 알 수 있다. 마지막으로, 제 4-1 스레드(241)는 제4 영역에 대해 ED 처리를 수행하고, 그 처리 결과를 제1 메모리 뱅크(310)에 저장할 수 있다. 여기서, 제1 메모리 뱅크(310)는 제1 영역에 대한 디코딩이 진행될 때는 제1 영역에 대한 디코딩 데이터가 저장되다가, 제1 영역에 대한 디코딩이 모두 완료된 후 제4 영역에 대한 디코딩에 사용되기 위해 재사용되는 메모리 뱅크일 수 있다. 즉, 본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코딩 방법에서는 이처럼 메모리 뱅크를 재사용함으로써, 고해상도 비디오 프레임을 처리할수록 급격하게 요구되는 메모리에 대한 요구를 저감할 수 있게 된다.
전술한 제 4단계 이후의 과정은 앞서 설명한 제1 내지 제4 단계에 대한 설명으로 충분히 유추 가능한바 자세한 설명을 생략하도록 한다. 이와 같은 순서로 디코딩 처리를 계속 진행하면 제1 내지 제4 영역에 대한 디코딩을 모두 완료할 수 있게 된다.
다음 도 7 및 도 8을 참조하여, 본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코딩 방법의 처리 성능 향상도에 대해 설명한다.
아래의 표 1은 병렬화 방법을 적용하기 전의 H.264/AVC 디코더를 이용하여 다양한 영상(rush hour ~ shields)에 대한 디코딩 시간을 나타낸 표이다. 그리고, 표 2는 태스크 레벨 병렬화 방법, 데이터 레벨 병렬화 방법 및 본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코딩 방법을 각각 사용하여, 다양한 영상(rush hour ~ shields)에 대해 디코딩 했을 때의 프레임당 최소 처리 시간을 나타낸 표이고, 도 7은 표 1에 관한 그래프이다.
마지막으로, 표 3은 표 2와 동일한 방법을 각각 사용하였을 때 프레임당 평균 디코딩 시간을 나타낸 표이고, 도 8은 표 2에 관한 그래프이다.
여기서, 태스크 레벨 병렬화 방법으로는 전형적인 파이프라인 기법(A)을 사용하였고, 데이터 레벨 병렬화 방법으로는 2Dwave 기법(B)을 사용하였다. 여기서, 2Dwave 기법은 2개의 스레드를 이용한 기법(B-1)과 3개의 스레드를 이용한 기법(B-2)을 각각 사용하였다. 또한, 각 영상(rush hour ~ shields)은 JM-v16을 사용하여 인코딩 하였고, 인코딩 환경은 JM-v16 에서 제공하는 H.264/AVC baseline profile를 기반으로 하였다. 그리고, 운영체제는 리눅스 ubuntu 9.10, 커널 버전 2.6.31에서 개발하였고, 인텔 쿼드 코어 i5 프로세서를 사용 하였다. 컴파일러는 gcc v4.4.1을 이용하였고 병렬화 방법은 OpenMP를 사용하였다.
Basic ED (AVG) MC+IQ/IT
IP+ IQ/IT (AVG)
DF (AVG) AVG MIN
Sequence (㎲) (%) (㎲) (%) (㎲) (%) (㎲) (㎲)
rush_hour FHD, 1920X1088 3929 24% 6567 41% 5699 35% 16195 14746
blue_sky FHD, 1920X1088 4184 27% 5863 38% 5514 35% 15561 13694
pedestrain_area FHD, 1920X1088 4295 24% 6800 39% 6440 37% 17535 13498
sunflower FHD, 1920X1088 3905 29% 6301 47% 3130 23% 13336 11034
park_run HD, 1280X720 5150 40% 3926 31% 3714 29% 12790 10687
mobcal HD, 1280X720 2310 28% 3458 42% 2564 31% 8332 3882
stockholm HD, 1280X720 2029 28% 2993 42% 2190 30% 7212 6640
shields HD, 1280X720 2211 30% 2997 40% 2210 30% 7418 5707
Sequence A B-1 B-2 C
MIN
(㎲)
MIN
(%)
MIN
(㎲)
MIN
(%)
MIN
(㎲)
MIN
(%)
MIN
(㎲)
MIN
(%)
rush_hour FHD, 1920X1088 11873 19% 12105 18% 9998 32% 6993 53%
blue_sky FHD, 1920X1088 11018 20% 11470 16% 9558 30% 6735 51%
pedestrain_area FHD, 1920X1088 12126 10% 10666 21% 9604 29% 8431 38%
sunflower FHD, 1920X1088 9481 14% 9616 13% 8507 23% 6718 39%
park_run HD, 1280X720 7813 27% 8482 21% 7441 30% 5580 48%
mobcal HD, 1280X720 2655 32% 3154 19% 2678 31% 2172 44%
stockholm HD, 1280X720 4996 25% 5395 19% 4563 31% 3702 44%
shields HD, 1280X720 5046 12% 4689 18% 4160 27% 3528 38%
Sequence A B-1 B-2 C
AVG
(㎲)
AVG
(%)
AVG
(㎲)
AVG
(%)
AVG
(㎲)
AVG
(%)
AVG
(㎲)
AVG
(%)
rush_hour FHD, 1920X1088 14309 12% 13390 17% 12130 25% 9236 43%
blue_sky FHD, 1920X1088 13914 11% 13159 15% 11780 24% 8477 46%
pedestrain_area FHD, 1920X1088 15784 10% 14264 19% 13498 23% 10875 38%
sunflower FHD, 1920X1088 12023 10% 11572 13% 10580 21% 8822 34%
park_run HD, 1280X720 11025 14% 10709 16% 10045 21% 6994 45%
mobcal HD, 1280X720 7403 11% 6938 17% 6387 23% 5458 34%
stockholm HD, 1280X720 5865 19% 6126 15% 5713 21% 4802 33%
shields HD, 1280X720 6978 6% 6209 16% 5637 24% 4950 33%
먼저 표 1을 참조하면, 각 영상(rush hour ~ shields)에 따라 디코딩 시간이 각각 다름을 알 수 있고, 하나의 영상도 디코더의 처리 기능에 따라 처리 시간이 각각 다름을 알 수 있다.
다음 표 2 및 도 7을 참조하면, 파이프 라인 병렬화 방법(A)은 병렬화 방법을 적용하기 전의 H.264/AVC 디코더의 처리시간을 기준으로 최소 처리 시간을 12~32% 향상하였음을 알 수 있고, 2개의 스레드를 이용한 2Dwave 기법(B-1)은 13~21% 향상하였음을 알 수 있다. 한편, 3개의 스레드를 이용한 2Dwave 기법(B-2)은 23~32% 성능 향상하였음을 알 수 있고, 본 발명의 일 실시예에 따른 비디오 디코딩 방법(C)은 38~53%의 성능을 향상시켰음을 알 수 있다.
다음 표 3 및 도 8을 참조하면, 파이프 라인 병렬화 방법(A)은 병렬화 방법을 적용하기 전의 H.264/AVC 디코더의 처리시간을 기준으로 평균 처리 시간을 6~19% 향상하였음을 알 수 있고, 2개의 스레드를 이용한 2Dwave 기법(B-1)은 13~19% 향상하였음을 알 수 있다. 한편, 3개의 스레드를 이용한 2Dwave 기법(B-2)은 21~25% 성능 향상하였음을 알 수 있고, 본 발명의 일 실시예에 따른 비디오 디코딩 방법(C)은 33~46%의 성능을 향상시켰음을 알 수 있다.
앞서 살펴본, 파이프 라인 병렬화 방법(A)은 MB타입에 따라서 MB간 처리 속도가 다르고, 작업 흐름에 따라 작업별 처리속도가 다르기 때문에 지속적으로 스레드간 동기화가 필요하다. 따라서 파이프 라인 병렬화 방법(A)에서는 스레드 동기화로 인한 지연현상이 발생한다고 볼 수 있다. 한편, 2Dwave 기법(B)은 ED가 병렬화 되지 않기 때문에 ED의 순차 처리가 성능 향상에 병목 현상으로 작용한다. 반면, 본 발명의 일 실시예에 따른 비디오 디코딩 방법(C)은 비디오 프레임을 N영역로 분할 처리 하고, 스레드의 동기화를 최소화 하여 비교적 빠른 시간에 디코딩을 수행할 수 있어, 디코딩 처리 성능을 향상시킬 수 있다.
다음 도 3 내지 도 6을 참조하여, 본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코더에 대해 설명한다. 본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코더는 앞서 설명한 본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코딩 방법과 실직적으로 동일한 동작을 하므로, 앞서 설명한 내용과 중복된 설명은 모두 생략하도록 한다.
도 3 내지 도 6을 참조하면, 본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코더는 입력 모듈(미도시), 처리 모듈(200) 및 제1 내지 제3 메모리 뱅크(310~330)을 포함할 수 있다.
입력 모듈(미도시)은 제1 내지 제N 영역을 포함하는 비디오 프레임(100)을 제공받는 모듈일 수 있다.
처리 모듈(200)은 전술한 본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코딩 방법에서, 각 단계마다 스레드(211~241)를 생성하여 입력 모듈(미도시)에 제공된 비디오 프레임(100)에 대한 디코딩 처리를 수행하고, 처리 결과를 제1 내지 제3 메모리 뱅크(310~330)에 저장하는 모듈일 수 있다.
제1 내지 제3 메모리 뱅크(310~330)는 전술한 본 발명의 일 실시예에 따른 멀티 스레드 기반의 비디오 디코딩 방법에서와 동일한 기능을 수행하는 메모리 뱅크일 수 있다.
이와 같은 본 발명의 일 실시예에 따른 멀티 스레드 기반의 디코더는 H.264/AVC 표준에 따른 데이터 의존성을 만족시키면서 디코딩 처리 성능을 향상시킬 수 있다. 한편, 메모리 뱅크(310~330)를 재사용함으로써, 메모리의 효율적인 이용도 도모할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 비디오 프레임 110: 매크로 블록
200: 처리 모듈 211~241: 스레드
310, 320, 330: 메모리 뱅크

Claims (15)

  1. 비디오 프레임을 각각 다수의 매크로 블록을 포함하는 제1 내지 제N 영역으로 분할하고,
    제1 단계에서 제1-1 스레드를 이용하여 상기 제1 영역에 대해 제1 처리를 수행한 후 그 결과를 제1 메모리 뱅크에 저장하고,
    제2 단계에서 제2-1 스레드 및 상기 제1 메모리 뱅크에 저장된 상기 제1 처리 결과를 이용하여 상기 제1 영역에 대해 상기 제1 처리와 다른 제2 처리를 수행한 후 그 결과를 상기 제1 메모리 뱅크에 저장하고, 제2-2 스레드를 이용하여 상기 제2 영역에 대해 상기 제1 처리를 수행한 후 그 결과를 상기 제1 메모리 뱅크와 다른 제2 메모리 뱅크에 저장하는 것을 포함하되,
    상기 제1 및 제2 메모리 뱅크는 상기 제M(여기서, 2 < M ≤N, M은 자연수) 영역에 대한 상기 제1 처리 시 재사용되는 멀티 스레드 기반의 비디오 디코딩 방법.
  2. 제 1항에 있어서,
    상기 비디오 프레임은 H.264/AVC 표준에 따라 인코딩된 비디오 프레임을 포함하는 멀티 스레드 기반의 비디오 디코딩 방법.
  3. 제 1항에 있어서,
    제3 단계에서 제3-1 스레드를 이용하여 상기 제1 영역에 대해 상기 제1 및 제2 처리와 다른 제3 처리를 수행하고, 제3-2 스레드를 이용하여 상기 제2 영역에 대해 상기 제2 처리를 수행하고, 제3-3 스레드를 이용하여 상기 제3 영역에 대해 상기 제1 처리를 수행하는 것을 더 포함하는 멀티 스레드 기반의 비디오 디코딩 방법.
  4. 제 1항에 있어서,
    상기 제1 내지 제N영역에 포함된 매크로 블록의 개수는 서로 동일한 멀티 스레드 기반의 비디오 디코딩 방법.
  5. 제 1항에 있어서,
    상기 제1 내지 제N영역은 상기 비디오 프레임이 가로 방향으로 N등분된 영역인 멀티 스레드 기반의 비디오 디코딩 방법.
  6. 제 3항에 있어서,
    상기 제1 처리는 ED(Entropy Decoding)를 포함하고,
    상기 제2 처리는 IP(Intra Prediction) 또는 MC(Motion Compensation) 중 어느 하나와 IQ 및 IT(Inverse Quantization and Inverse Transformation)를 포함하고,
    상기 제3 처리는 DF(Deblocking Filter)를 포함하는 멀티 스레드 기반의 비디오 디코딩 방법.
  7. 제 3항에 있어서,
    상기 제3-1 스레드는 상기 제1 메모리 뱅크에 저장된 상기 제1 영역에 대한 상기 제2 처리 결과를 이용하여 상기 제1 영역에 대한 상기 제3 처리를 수행하고,
    상기 제3-2 스레드는 상기 제2 메모리 뱅크에 저장된 상기 제2 영역에 대한 상기 제1 처리 결과를 이용하여 상기 제2 영역에 대한 상기 제2 처리를 수행하는 멀티 스레드 기반의 비디오 디코딩 방법.
  8. 제 7항에 있어서,
    제4 단계에서 제4-1 스레드를 이용하여 상기 제4 영역에 대해 상기 제1 처리를 수행한 후 그 처리 결과를 상기 제1 메모리 뱅크에 저장하는 것을 더 포함하는 멀티 스레드 기반의 비디오 디코딩 방법.
  9. 각 영역이 다수의 매크로 블록을 포함하는 제1 내지 제N 영역을 포함하는 비디오 프레임을 제공받는 입력 모듈; 및
    다수의 스레드를 생성하여 상기 비디오 프레임에 대한 디코딩 처리를 수행하는 처리 모듈을 포함하되,
    상기 처리 모듈은,
    제1 단계에서 제1-1 스레드를 이용하여 상기 제1 영역에 대해 제1 처리를 수행한 후 그 결과를 제1 메모리 뱅크에 저장하고,
    제2 단계에서 제2-1 스레드 및 상기 제1 메모리 뱅크에 저장된 상기 제1 처리 결과를 이용하여 상기 제1 영역에 대해 상기 제1 처리와 다른 제2 처리를 수행한 후 그 결과를 상기 제1 메모리 뱅크에 저장하고, 제2-2 스레드를 이용하여 상기 제2 영역에 대해 상기 제1 처리를 수행한 후 그 결과를 상기 제1 메모리 뱅크와 다른 제2 메모리 뱅크에 저장하되,
    상기 제1 및 제2 메모리 뱅크는 상기 제M(여기서, 2 < M ≤N, M은 자연수) 영역에 대한 상기 제1 처리 시 재사용되는 멀티 스레드 기반의 비디오 디코더.
  10. 제 9항에 있어서,
    상기 처리 모듈은,
    제3 단계에서 제3-1 스레드를 이용하여 상기 제1 영역에 대해 상기 제1 및 제2 처리와 다른 제3 처리를 수행하고, 제3-2 스레드를 이용하여 상기 제2 영역에 대해 상기 제2 처리를 수행하고, 제3-3 스레드를 이용하여 상기 제3 영역에 대해 상기 제1 처리를 수행하는 멀티 스레드 기반의 비디오 디코더.
  11. 제 9항에 있어서,
    상기 제1 내지 제N 영역은 각각 서로 동일한 개수의 매크로 블록을 포함하는 멀티 스레드 기반의 비디오 디코더.
  12. 제 11항에 있어서,
    상기 제1 내지 제N영역은 상기 비디오 프레임이 가로 방향으로 N등분된 영역인 멀티 스레드 기반의 비디오 디코더.
  13. 제 10항에 있어서,
    상기 제1 처리는 ED를 포함하고,
    상기 제2 처리는 IP 또는 MC 중 어느 하나와 IQ 및 IT를 포함하고,
    상기 제3 처리는 DF를 포함하는 멀티 스레드 기반의 비디오 디코더.
  14. 제 10항에 있어서,
    상기 제3-1 스레드는 상기 제1 메모리 뱅크에 저장된 상기 제1 영역에 대한 상기 제2 처리 결과를 이용하여 상기 제1 영역에 대해 제3 처리를 수행하고,
    상기 제3-2 스레드는 상기 제2 메모리 뱅크에 저장된 상기 제2 영역에 대한 상기 제1 처리 결과를 이용하여 상기 제2 영역에 대해 상기 제2 처리를 수행하는 멀티 스레드 기반의 비디오 디코더.
  15. 제 14항에 있어서,
    상기 처리 모듈은 제4 단계에서 제4-1 스레드를 이용하여 상기 제4 영역에 대해 상기 제1 처리를 수행한 후 그 처리 결과를 상기 제1 메모리 뱅크에 저장하는 멀티 스레드 기반의 비디오 디코더.
KR1020100041915A 2010-05-04 2010-05-04 멀티 스레드 기반의 비디오 디코더 및 디코딩 방법 KR101138920B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100041915A KR101138920B1 (ko) 2010-05-04 2010-05-04 멀티 스레드 기반의 비디오 디코더 및 디코딩 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100041915A KR101138920B1 (ko) 2010-05-04 2010-05-04 멀티 스레드 기반의 비디오 디코더 및 디코딩 방법

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020110100739A Division KR20110122658A (ko) 2011-10-04 2011-10-04 멀티 스레드 기반의 비디오 디코더 및 디코딩 방법

Publications (2)

Publication Number Publication Date
KR20110122412A KR20110122412A (ko) 2011-11-10
KR101138920B1 true KR101138920B1 (ko) 2012-05-14

Family

ID=45392952

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100041915A KR101138920B1 (ko) 2010-05-04 2010-05-04 멀티 스레드 기반의 비디오 디코더 및 디코딩 방법

Country Status (1)

Country Link
KR (1) KR101138920B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101485219B1 (ko) * 2012-02-22 2015-01-29 한양대학교 산학협력단 영상 디코딩 장치 및 방법
KR101364086B1 (ko) * 2012-09-12 2014-02-21 전자부품연구원 영상 복호 방법 및 장치
KR101531036B1 (ko) * 2013-09-12 2015-06-23 전자부품연구원 3d 영상 복호화 장치 및 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060003426A (ko) * 2004-07-06 2006-01-11 삼성전자주식회사 파이프 라인 방식의 복호화 장치 및 방법과, 이 장치를제어하는 컴퓨터 프로그램을 저장하는 컴퓨터로 읽을 수있는 기록 매체
KR20060042732A (ko) * 2004-11-10 2006-05-15 삼성전자주식회사 비디오 디코더에서의 인접 정보 처리 장치 및 방법과 그방법을 수행하기 위한 프로그램이 저장된 기록 매체
KR100801630B1 (ko) * 2007-06-15 2008-02-05 디비코 주식회사 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060003426A (ko) * 2004-07-06 2006-01-11 삼성전자주식회사 파이프 라인 방식의 복호화 장치 및 방법과, 이 장치를제어하는 컴퓨터 프로그램을 저장하는 컴퓨터로 읽을 수있는 기록 매체
KR20060042732A (ko) * 2004-11-10 2006-05-15 삼성전자주식회사 비디오 디코더에서의 인접 정보 처리 장치 및 방법과 그방법을 수행하기 위한 프로그램이 저장된 기록 매체
KR100801630B1 (ko) * 2007-06-15 2008-02-05 디비코 주식회사 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Yen-Kuang Chen et al., "Implementation of H.264 encoder and decoder on personal computers",Elsevie, 19 July 2005 *

Also Published As

Publication number Publication date
KR20110122412A (ko) 2011-11-10

Similar Documents

Publication Publication Date Title
US8218641B2 (en) Picture encoding using same-picture reference for pixel reconstruction
US8218640B2 (en) Picture decoding using same-picture reference for pixel reconstruction
CA2760425C (en) Method and system for parallel encoding of a video
CN105992008B (zh) 一种在多核处理器平台上的多层次多任务并行解码方法
US9247248B2 (en) Mode searching and early termination of a video picture and fast compression of variable length symbols
US9131240B2 (en) Video decoding method and apparatus which uses double buffering
US20110211642A1 (en) Moving picture encoding/decoding apparatus and method for processing of moving picture divided in units of slices
US9148670B2 (en) Multi-core decompression of block coded video data
US8660191B2 (en) Software video decoder display buffer underflow prediction and recovery
WO2008067500A2 (en) Parallel deblocking filter for h.264 video codec
US9510021B2 (en) Method and apparatus for filtering pixel blocks
KR101425620B1 (ko) 멀티 코어 프로세서 기반의 비디오 디코딩 방법 및 장치
de Souza et al. HEVC in-loop filters GPU parallelization in embedded systems
KR102035759B1 (ko) 멀티-쓰레드 텍스처 디코딩
Franche et al. A multi-frame and multi-slice H. 264 parallel video encoding approach with simultaneous encoding of prediction frames
Kim et al. Stage-based frame-partitioned parallelization of H. 264/AVC decoding
KR101138920B1 (ko) 멀티 스레드 기반의 비디오 디코더 및 디코딩 방법
Gudumasu et al. Software-based versatile video coding decoder parallelization
KR20090020460A (ko) 비디오 디코딩 방법 및 장치
De Souza et al. GPU-assisted HEVC intra decoder
Yan et al. Parallel deblocking filter for H. 264/AVC implemented on Tile64 platform
US9761232B2 (en) Multi-decoding method and multi-decoder for performing same
Han et al. GPU based real-time UHD intra decoding for AVS3
Baaklini et al. H. 264 macroblock line level parallel video decoding on embedded multicore processors
KR20110122658A (ko) 멀티 스레드 기반의 비디오 디코더 및 디코딩 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160418

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee