KR101425620B1 - 멀티 코어 프로세서 기반의 비디오 디코딩 방법 및 장치 - Google Patents
멀티 코어 프로세서 기반의 비디오 디코딩 방법 및 장치 Download PDFInfo
- Publication number
- KR101425620B1 KR101425620B1 KR1020080004533A KR20080004533A KR101425620B1 KR 101425620 B1 KR101425620 B1 KR 101425620B1 KR 1020080004533 A KR1020080004533 A KR 1020080004533A KR 20080004533 A KR20080004533 A KR 20080004533A KR 101425620 B1 KR101425620 B1 KR 101425620B1
- Authority
- KR
- South Korea
- Prior art keywords
- core
- cores
- video decoding
- jobs
- idle time
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 발명은 멀티 코어 프로세서 환경에서 많은 연산량을 필요로 하는 비디오 디코딩 처리에 있어서 시스템 자원을 보다 효과적으로 사용하고자 하기 위한 방법 및 장치에 관한 것이다.
본 발명의 일 실시예에 따른 멀티 코어 프로세서 장치는, 비디오 디코딩을 수행하기 위한 기능 모듈들로 구성되는 비디오 디코더 모듈과, 입력된 비트스트림을 저장하고 상기 기능 모듈들을 로드하는 메모리와, 상기 기능 모듈들을 이용하여 상기 입력된 비트스트림에 대한 비디오 디코딩을 수행하는 복수의 코어들을 포함하는 멀티 코어 프로세서를 포함하며, 상기 비디오 디코딩을 수행하는 중에 상기 코어들 중에서 제1 코어에 유휴 시간이 발생한 경우에는, 비디오 디코딩에 관한 잔여 작업을 가지는 제2 코어가 상기 잔여 작업 중에서 일부의 작업을 상기 제1 코어에 할당하여 상기 유휴 시간을 감소시키는 것을 특징으로 한다.
비디오 코딩, 멀티 코어 프로세서, 심볼 디코딩, 모션 보상, 의존성
Description
본 발명은 비디오 디코딩 기술에 관한 것으로, 보다 상세하게는 멀티 코어 프로세서 환경에서 많은 연산량을 필요로 하는 비디오 디코딩 처리에 있어서 시스템 자원을 보다 효과적으로 사용하고자 하기 위한 방법 및 장치에 관한 것이다.
인터넷을 포함한 정보통신 기술이 발달함에 따라 문자, 음성뿐만 아니라 화상통신이 증가하고 있다. 기존의 문자 위주의 통신 방식으로는 소비자의 다양한 욕구를 충족시키기에는 부족하며, 이에 따라 문자, 영상, 음악 등 다양한 형태의 정보를 수용할 수 있는 멀티미디어 서비스가 증가하고 있다. 멀티미디어 데이터는 그 양이 방대하여 대용량의 저장매체를 필요로 하며 전송시에 넓은 대역폭을 필요로 한다. 따라서 문자, 영상, 오디오를 포함한 멀티미디어 데이터를 전송하기 위해서는 압축코딩기법을 사용하는 것이 필수적이다.
데이터를 압축하는 기본적인 원리는 데이터의 중복(redundancy) 요소를 제거하는 과정이다. 이러한 데이터 중에서도 특히, 비디오 데이터는 그 용량이 매우 크기 때문에 다른 종류의 멀티미디어 데이터들에 비하여 효율적인 압축의 중요성이 보다 크다고 할 수 있다.
비디오 압축의 기본 원리는 하나의 픽쳐(프레임) 내에서 동일한 색이나 객체가 반복되는 것과 같은 공간적 중복이나, 동영상 프레임에서 인접 프레임이 거의 변화가 없는 경우나 오디오에서 같은 음이 계속 반복되는 것과 같은 시간적 중복, 또는 인간의 시각 및 지각 능력이 높은 주파수에 둔감한 것을 고려하여 지각적 중복을 제거하는 방법 등을 통하여 데이터를 압축하는 것이다. 일반적인 비디오 코딩 방법에 있어서, 시간적 중복은 모션 보상에 근거한 시간적 필터링(temporal filtering)에 의해 제거하고, 공간적 중복은 공간적 변환(spatial transform)에 의해 제거한다.
종래에는 이러한 비디오 코딩이나 디코딩 작업이 단일 코어 프로세서(single-core processor)에 의하여 이루어지는 것이 일반적이었다. 그러나, 최근 들어 강력한 성능의 멀티 코어 프로세서(multi-core processor)가 보급화되면서 비디오 코딩/디코딩과 같이 시스템 자원을 많이 소모하는 분야에서 멀티 코어 프로세서의 활용도가 높아지고 있다.
멀티 코어 프로세서는 보다 강력한 성능과 소비 전력 절감, 그리고 여러 개의 작업을 보다 효율적으로 한 번에 처리하기 위해 두 개 이상의 코어가 결합되어 있는 집적회로를 가리킨다. 멀티 코어 프로세서는 한 컴퓨터 내에 두 개 이상의 독립된 프로세서가 설치된 경우와 종종 비교되곤 한다. 그러나, 멀티 코어 프로세서의 경우 두 개의 프로세서가 실제로는 하나의 소켓에 꽂혀지기 때문에 프로세서 간의 연결이 더 빠른 장점이 있다. 이론적으로는 듀얼 코어 프로세서가 단일 코어 프 로세서보다 성능 면에서 두 배가 되어야 하지만, 실제로는 듀얼 코어 프로세서가 단일 코어 프로세서보다 성능 면에서 약 1.5배 정도 우수한 것으로 알려져 있다.
현재, 단일 코어 프로세서가 복잡도나 속도 측면에 있어 거의 물리적 한계에 도달하고 있다고 여겨지고 있기 때문에, 멀티 코어 프로세서와 관련된 산업의 성장이 가속화되고 있는 추세에 있다. 멀티 코어 프로세서 제품을 생산하거나 이와 관련되어 있는 회사들로는 AMD, ARM, Intel 등이 있는데, 이들 회사들은 향후 프로세서 시장의 대부분을 멀티 코어 프로세서가 장악할 것이라고 예측하고 그 개발에 박차를 가하고 있다.
이러한 멀티 코어 프로세서를 이용하여 비디오 디코딩을 수행하는 종래의 기술로는 기능적(functional) 분할 방식과 데이터 분할 방식이 있다.
도 1 및 도 2는 상기 기능적 분할 방식을 설명하기 위한 도면들이다. 도 1에 도시된 바와 같이, 일반적으로 비디오 디코딩을 위해서 프로세서는, 데이터 읽기, 전처리/초기화, 엔트로피 복호화(entropy decoding, 이하 ED로 표시함), 역 양자화(inverse quantization, 이하 IQ로 표시함), 역 변환(inverse transform, 이하 IT로 표시함), 인트라 예측(intra prediction, 이하 IP로 표시함), 모션 보상(motion compensation, 이하 MC로 표시함), 디블록(deblocking), 데이터 쓰기 등 다양한 세부 기능을 수행하여야 한다.
상기 기능적 분할 방식에서는, 하나의 프로세서를 구성하는 복수의 코어들은 각각 정해진 기능만을 담당하도록 정해져 있다. 예를 들면, 코어 #2는 엔트로피 복호화(ED) 기능만을 담당하고, 코어 #4는 디블록 기능만을 담당한다. 이와 같이 복 수의 코어들을 기능적으로 분할하게 되면, 도 2와 같이, 각각의 코어들이 담당하는 연산량들(21, 22, 23, 24) 간에 불균형이 발생한다. 특히, 코어 #3은 상대적으로 과중한 부하(load)로 인하여 병목(critical path)으로 작용하기 때문에 프로세서 전체 성능의 저하를 유발하게 된다. 이와 같이, 기능적 분할 방식은 그 구현이 용이하기는 하지만 분할된 기능을 각각의 코어가 처리하는 시간들이 동일하지 않기 때문에 병렬 처리가 어렵고, 프로세서의 전체적 성능을 모두 활용하지 못하는 단점이 있다.
도 3은 상기 데이터 분할 방식을 설명하기 위한 도면이다. 데이터 분할 방식은, 도 3에 도시한 바와 같이, 하나의 픽쳐(30)를 복수의 영역으로 나누고 이를 각각의 코어에 할당하는 방식이다. 예를 들면, 하나의 픽쳐를 동일한 크기로 4등분 한 후, 4등분된 영역들을 각각 대응되는 코어가 처리하게 된다.
이와 같이, 데이터 분할 방식은 단순한 데이터 처리에 있어서는 높은 병렬성을 보장한다. 그러나, 데이터 처리 프로세스간 의존성(dependency)이 있으면 구현이 복잡해지고 이를 해결하기 위한 추가 작업(데이터의 분할 크기와 연산 부하 간의 관계 예측)이 필요하게 되므로 성능이 급격하게 저하되는 단점이 있다. 또한 멀티 코어 프로세서를 구성하는 각각의 코어가 비디오 디코딩을 위한 전체 기능을 가지고 있어야 하기 때문에 시스템 자원(예: local storage)의 사용에 있어서도 비효율적이 된다.
특히, 최근 많이 사용되고 있는 H.264 표준 규격은 다른 표준 규격의 디코더에 비하여 연산량이 많고 기능 간의 의존성이 매우 높아서, 이상과 같은 종래의 방 식들로는 멀티 코어 프로세서의 성능을 제대로 발휘할 수가 없다.
본 발명이 이루고자 하는 기술적 과제는, 멀티 코어 프로세서를 이용하여 비디오 디코딩을 수행하는 데 있어서, 멀티 코어들 간에 의존성이 없는 독립적인 작업들을 공유하게 함으로써, 비디오 디코딩 성능을 향상시키고자 하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 멀티 코어 프로세서 장치는, 비디오 디코딩을 수행하기 위한 기능 모듈들로 구성되는 비디오 디코더 모듈; 입력된 비트스트림을 저장하고 상기 기능 모듈들을 로드하는 메모리; 및 상기 기능 모듈들을 이용하여 상기 입력된 비트스트림에 대한 비디오 디코딩을 수행하는 복수의 코어들을 포함하는 멀티 코어 프로세서를 포함하며, 상기 비디오 디코딩을 수행하는 중에 상기 코어들 중에서 제1 코어에 유휴 시간이 발생한 경우에는, 비디오 디코딩에 관한 잔여 작업을 가지는 제2 코어가 상기 잔여 작업 중에서 일부의 작업을 상기 제1 코어에 할당하여 상기 유휴 시간을 감소시킨다.
또한, 상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 멀티 코어 프로세서 기반의 비디오 디코딩 방법은, 입력된 비트스트림을 저장하고 비디오 디코딩을 수행하기 위한 기능 모듈들을 로드하는 단계; 상기 입력된 비트스트림 및 기능 모듈들을 이용하여 작업들을 생성하고, 상기 작업을 해당하는 기능에 따라 상기 코어들에 분배하기 위하여 상기 생성된 작업들을 버퍼에 큐잉하는 단계; 상기 기능 모듈들을 이용하여 상기 입력된 비트스트림에 대한 비디오 디코딩을 수행하는 단계로서, 상기 비디오 디코딩은 복수의 코어들을 갖는 멀티 코어 프로세서에 의하여 수행되는 상기 단계; 및 상기 비디오 디코딩을 수행하는 중에 상기 코어들 중에서 제1 코어에 유휴 시간이 발생한 경우에는, 비디오 디코딩에 관한 잔여 작업을 가지는 제2 코어가 상기 잔여 작업 중에서 일부의 작업을 상기 제1 코어에 할당하는 단계를 포함한다.
본 발명에 따르면, 멀티 코어 프로세서 환경에서 코어 간의 부하 균형을 제공함으로써 비디오 디코딩의 성능을 높일 수 있다.
또한, 본 발명에 따르면 주요 연산 간에 존재하는 의존성이 고려되기 때문에 코어 별로 비디오 디코딩의 기능 모듈을 동적으로 할당할 수 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명 세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하 첨부된 도면들을 참조하여 본 발명의 일 실시예를 상세히 설명한다.
도 4 및 도 5는 본 발명에 따른 동적 부하 밸런싱 기법의 개념을 설명하기 위한 도면들이다. 이 중에서, 도 4는 종래에 멀티 코어 프로세서가 비디오 디코딩을 수행하는 과정을 보여주는 도면이다. 여기서, 코어 #1 및 코어 #2는 엔트로피 디코딩(ED), 역 양자화(IQ) 및 역 변환(IT)만을 담당하고, 코어 #3는 인트라 예측(IP) 및 모션 보상(MC)만을 담당하며, 코어 #4는 디블록 만을 담당한다.
이 경우, 코어 #3는 t1에서 작업이 완료되고, 코어 #1 및 코어 #2는 t2에서 작업이 완료되지만 코어 #3이 t3에서 작업이 완료되기 전까지는 다음 영상(또는 수개의 매크로블록들)을 처리하지 못하고 유휴(idle) 상태에 있게 된다. 따라서, 멀티 코어 프로세서의 전체적인 성능을 제대로 활용하지 못한다.
도 5는 도 4의 환경에서 본 발명에 따른 부하의 동적 부하 밸런싱(dynamic load balancing) 기법을 적용한 예를 보여준다. 도 4와 같이 멀티 코어 프로세서에 기능적 분할 방식을 적용하면 전술한 바와 같은 유휴 시간이 발생하지만, 제1 코어에서 유휴 시간이 발생하면 잔여 작업이 남아 있는 제1 코어에서 상기 제1 코어에 일부 작업을 분배하게 되면 이와 같은 유휴 시간을 없애거나 줄일 수가 있다.
코어 #4은 t--1에서 유휴 상태가 되면 코어 #3에게 이러한 사실을 알린다. 그러면, 코어 #3은 자신의 잔여 작업 중 일부를 코어 #4에게 할당하게 된다. 물론, 코어 #3은 마찬가지로 코어 #4 뿐만 아니라 코어 #1 및 #2에도 일부 작업을 할당할 수 있다. 이와 같이, 특정 코어에서 초과되는 부하를 다른 코어들에 동적으로 균형을 맞추게 되면, t4에서 모든 코어들이 동시에 작업을 완료할 수 있다.
도 6은 본 발명의 일 실시예에 따른 비디오 디코딩 과정을 보여주는 도면이다.
심볼 디코더(61)는 입력된 비트스트림에 대하여 무손실 복호화를 수행하고, 모션 벡터와 텍스쳐 데이터를 구한다. 상기 무손실 복호화에는 허프만 복호화(Huffman decoding), 산술 복호화(arithmetic decoding), 가변 길이 복호화(variable length decoding) 등이 있다. 일반적으로 특정 매크로블록에 대한 모션 벡터는 주변 매크로블록의 모션 벡터에 의존성을 지닌다. 즉, 주변 매크로블록의 모션 벡터를 구하지 않고서는 상기 특정 매크로블록의 모션 벡터도 구할 수 없다. 이와 같이 의존성이 있는 데이터들이 각각 서로 다른 코어에서 처리되게 되면 병렬처리가 불가능하게 되므로, 본 발명의 부하의 동적 부하 밸런싱에 있어서는 상호간에 의존성이 존재하는 데이터들이 가급적 하나의 코어에서 처리될 수 있도록 작업을 할당할 필요가 있다.
상기 구한 텍스쳐 데이터는 역 양자화부(62)에 제공되고, 상기 구한 모션 벡터는 모션 보상부(65)에 제공된다.
한편, 역 양자화부(62)는 심볼 디코더(61)로부터 제공되는 텍스쳐 데이터를 역 양자화한다. 이러한 역 양자화 과정은 양자화 과정에서 사용되었던 양자화 테이블을 이용하여 양자화 과정에서 생성된 인덱스로부터 그에 매칭되는 값을 복원하는 과정이다.
역 변환부(63)는 상기 역 양자화된 결과에 대하여 역 변환을 수행한다. 이러한 역 변환의 구체적 방법으로는 역 DCT 변환, 역 웨이브렛 변환 등이 있다. 상기 역 변환된 결과, 즉 복원된 고주파 영상은 가산기(66)에 제공된다.
모션 보상부(65)는 심볼 디코더(61)로부터 제공되는 현재 매크로블록에 대한 모션 벡터를 이용하여, 적어도 하나 이상의 참조 프레임(기 복원되어 버퍼(64)에 저장되어 있음)을 모션 보상함으로써 예측 영상을 생성한다. 이러한 모션 보상이 1/2 픽셀 또는 1/4 픽셀 단위로 이루어지는 경우에는 상기 예측 영상을 생성하기 위한 보간 과정에서 매우 많은 연산량이 소요된다. 또한, 두 개의 참조 프레임을 사용하여 모션 보상하는 경우에는 각각 모션 보상된 매크로블록들 평균을 계산하게 되는데, 이 때에는 상기 매크로블록들 간에는 의존성이 존재하게 된다. 즉, 이들 매크로블록들은 단일의 코어에서 처리되도록 할 필요가 있다.
가산기(66)는 역 변환부(63)로부터 제공되는 고주파 영상과 상기 생성된 예측 영상을 가산하여 현재 매크로블록에 관한 영상을 복원한다. 디블록부(67)는 상기 복원된 영상에 디블록 필터를 적용하여 상기 복원된 영상의 블록 인위성(block artifact)를 제거한다. 일반적으로, 상기 복원된 영상은 매크로블록 단위로 처리되기 때문에 매크로블록 경계 부분에서 노이즈가 발생하게 되는데 이를 블록 인위성이라고 한다. 이러한 블록 인위성은 비디오 데이터의 압축률이 높을수록 커지는 경향이 있다. 상기 디블록 필터를 거친 복원된 영상은 버퍼(64)에 일시 저장되었다가 다른 영상의 복원을 위하여 이용되기도 한다.
한편, 모든 매크로블록이 모션 보상을 통하여 복원되는 것은 아니다. 매크로블록에 따라서는 인트라 예측(IP)을 통하여 코딩되는 경우도 있다(이를 인트라 매크로블록이라고 함). 인트라 예측은 현재 매크로블록을 복원함에 있어서, 동일한 프레임 내에서 인접한 다른 매크로블록의 영상을 이용하는 기법이다. 이 경우에는 상기 현재 매크로블록은 상기 다른 매크로블록과 의존성을 가지게 되므로 단일의 코어에서 처리되도록 할 필요가 있다.
도 7은 본 발명의 일 실시예에 따른 전체 시스템의 구성도이다. 상기 시스템은 TV, 셋탑박스, 데스크 탑, 랩 탑 컴퓨터, 팜 탑(palmtop) 컴퓨터, PDA(personal digital assistant), 비디오 또는 이미지 저장 장치(예컨대, VCR(video cassette recorder), DVR(digital video recorder) 등)를 나타내는 것일 수 있다. 뿐만 아니라, 상기 시스템은 상기한 장치들을 조합한 것, 또는 상기 장치가 다른 장치의 일부분으로 포함된 것을 나타내는 것일 수도 있다. 상기 시스템은 적어도 하나 이상의 비디오 소스(71), 하나 이상의 입출력 장치(72), 멀티 코어 프로세서(110), 메모리(120), 그리고 디스플레이 장치(73)를 포함하여 구성될 수 있다.
비디오 소스(71)는 TV 리시버(TV receiver), VCR, 또는 다른 비디오 저장 장치를 나타내는 것일 수 있다. 또한, 상기 소스(71)는 인터넷, WAN(wide area network), LAN(local area network), 지상파 방송 시스템(terrestrial broadcast system), 케이블 네트워크, 위성 통신 네트워크, 무선 네트워크, 전화 네트워크 등을 이용하여 서버로부터 비디오를 수신하기 위한 하나 이상의 네트워크 연결을 나타내는 것일 수도 있다. 뿐만 아니라, 상기 소스는 상기한 네트워크들을 조합한 것, 또는 상기 네트워크가 다른 네트워크의 일부분으로 포함된 것을 나타내는 것일 수도 있다. 비디오 소스(71)는 이와 같이 비디오 데이터를 얻는 경로를 의미하기도 하지만, 소정의 비디오 압축 알고리즘에 의하여 압축된 비트스트림 자체를 의미하기도 한다.
입출력 장치(72), 멀티 코어 프로세서(110), 그리고 메모리(120)는 통신 매체(76)를 통하여 통신한다. 상기 통신 매체(76)는 통신 버스, 통신 네트워크, 또는 하나 이상의 내부 연결 회로를 나타내는 것일 수 있다. 상기 소스(71)로부터 수신되는 입력 비디오 데이터는 메모리(120)에 저장된 하나 이상의 소프트웨어 프로그램에 따라 멀티 코어 프로세서(110)에 의하여 처리될 수 있다. 멀티 코어 프로세서(110)는 보다 강력한 성능과 소비 전력 절감, 그리고 여러 개의 작업을 보다 효율적으로 한 번에 처리하기 위해 두 개 이상의 코어가 결합되어 있는 집적회로를 의미한다.
디스플레이 장치(73)에 제공되는 출력 비디오를 생성하기 위하여 멀티 코어 프로세서(110)에 의하여 실행될 수 있다. 디스플레이 장치(73)는 LCD(Liquid Crystal Display), LED(Light-Emitting Diode), OLED(Organic Light-Emitting Diode), PDP(Plasma Display Panel), 또는 기타 해당 분야에서 알려져 있는 임의의 다른 형태의 영상 표시 수단으로 구현될 수 있다.
메모리(120)에 저장된 소프트웨어 프로그램은 도 6에 도시된 디코딩 과정을 수행하기 위한 비디오 디코더 모듈을 포함한다. 상기 비디오 디코더는 메모리(120)에 저장되어 있을 수도 있고, CD-ROM이나 플로피 디스크와 같은 저장 매체에서 읽 어 들이거나, 각종 네트워크를 통하여 소정의 서버로부터 다운로드 한 것일 수도 있다. 상기 소프트웨어에 의하여 하드웨어 회로에 의하여 대체되거나, 소프트웨어와 하드웨어 회로의 조합에 의하여 대체될 수 있다. 또한, 메모리(120)는 처리되기 전의 데이터를 일시 저장하는 버퍼(buffer) 내지 큐(que)를 포함한다.
도 8은 본 발명의 일 실시예에 따른, 동적 부하 밸런싱을 제공하는 멀티 코어 프로세서 장치(100)의 구성을 도시하는 블록도이다.
멀티 코어 프로세서 장치(100)는 멀티 코어 프로세서(110)와, 메모리(120)와, 버퍼(130)와, 비디오 디코더 모듈(140)을 포함하여 구성될 수 있다. 멀티 코어 프로세서 장치(100)는 기본적으로는 도 1에서와 같은 기능적 분할 방식을 사용한다. 즉, 복수의 코어들은 1차적으로는 각각 정해진 기능만을 담당하도록 되어 있다. 그러나, 유휴 시간을 제거 내지 감소시키기 위하여, 각각의 코어들은 담당하던 작업이 완료되면 그 완료된 사실을 다른 코어들에게 통지하고, 다른 코어들은 진행중인 작업 중 일부의 작업을 작업을 완료한 코어에게 분할 할당하게 된다.
비디오 디코더 모듈(140)은 도 6과 같은 비디오 디코딩 과정을 수행하기 위한 비디오 디코딩 소프트웨어이다. 비디오 디코더 모듈(140)은 심볼 디코더, 역 양자화부, 역 변환부, 모션 보상부 등의 기능 모듈로 이루어질 수 있다. 비디오 디코더 모듈은, MPEG-2, MPEG-4, H.264 등 미리 정의된 비디오 코딩/디코딩 표준 규격에 따른 비디오 디코딩 소프트웨어일 수 있다.
메모리(120)는 입력된 비트스트림을 저장하고, 비디오 디코더 모듈(140)의 기능 모듈들을 로드한다. 상기 비트스트림은 비디오 인코더(미도시됨) 단에서 압축 된 비디오 데이터이다. 메모리(120)는 롬(ROM), 피롬(PROM), 이피롬(EPROM), 이이피롬(EEPROM), 플래시 메모리와 같은 비휘발성 메모리 소자 또는 램(RAM)과 같은 휘발성 메모리 소자, 하드 디스크, 광 디스크와 같은 저장 매체, 또는 기타 해당 분야에서 알려져 있는 임의의 다른 형태로 구현될 수 있다.
버퍼(130)는 멀티 코어 프로세서(110)가 처리해야 하는 작업 내지 영상 블록의 데이터를 일시적으로 저장하는 저장소이다. 버퍼(130)는 메모리(120)의 일부로서 구현될 수도 있고 메모리(120)와는 별도의 저장 수단으로 구현될 수도 있다.
멀티 코어 프로세서(110)는 적어도 2이상의 코어들로 구성되어 있다. 도 8의 실시예에서는 멀티 코어 프로세서(110)가 3개의 코어로 이루어져 있지만 2개 또는 4개 이상의 코어들로 구현될 수도 있음은 물론이다. 전체의 비디오 디코딩 과정이 심볼 디코딩과, 역 영자화 및 역 변환과, 모션 보상의 3가지 기능으로 분류된다고 할 때, 제1 코어(111)는 심볼 디코딩을 담당하고, 제2 코어(112)는 모션 보상(MC)을 담당하며, 제3 코어(113)는 역 양자화 및 역 변환(IQ/IT)을 담당하는 것으로 가정하여 설명한다.
제1 코어(111)는 메모리(120)에 로딩된 기능 모듈과 비트스트림을 읽어서 버퍼(130)에 작업을 큐잉한다. 버퍼(130)에 큐잉되는 작업의 최소 단위는 매크로블록을 구성하며 모션 벡터가 할당되는 서브블록이다. 코어(111, 112, 113)는 일단, 상기 기능적 분할 방식에 따라 버퍼(130)에 큐잉된 작업 중에서 각각 담당하는 기능에 해당하는 작업을 수행하게 된다. 그러나, 어떤 코어가 유휴 상태가 되면 작업을 진행 중인 코어의 작업 중 일부를 상기 유휴 상태가 된 코어에 할당할 필요가 있 다.
다음의 도 9는 코어 간에 동적 부하 밸런싱을 구현하는 구체적인 예를 보여주는 시퀀스 다이어그램(sequence diagram)이다.
제1 코어(111)는 제2 코어(112)에게 모션 보상 작업을 수행할 것을 명령하는 제어 메시지(Do_MC(N))을 제2 코어(112)에 전송한다(S2). 상기 N은 버퍼(130) 에 저장되어 있는 처리되어야 할 영상 블록(본 발명에서는 적어도 하나 이상의 매크로블록 또는 서브블록을 의미한다)의 수를 나타낸다. 그리고, 제1 코어(111)는 제3 코어(113)에게 역 양자화 및 역 변환을 수행할 것을 명령하는 제어 메시지(Do_IQ/IT)를 전송한다(S4).
이후부터는, 각각의 코어가 담당하는 작업을 각각 수행한다. 즉, 제1 코어(111)는 심볼 디코딩을 수행하고(S6), 제2 코어(112)는 모션 보상을 수행하며(S8), 제3 코어(113)는 역 양자화 및 역 변환을 수행한다(S10). 단, 역 양자화 및 역 변환은 심볼 디코딩이 완료되어야 수행될 수 있지만, S6의 심볼 디코딩이 현재 영상 블록의 다음 영상 블록에 대한 심볼 디코딩 과정이라면, 현재 영상 블록에 대한 심볼 디코딩은 이미 완료되어 있을 수 있다. 제1 코어(111)는 심볼 디코딩이 완료되면 다른 코어들이 수행하여야 할 작업들을 버퍼(130)에 큐잉하게 된다. 이 때, 제1 코어(111)는 모든 작업을 단일의 버퍼에 큐잉할 수도 있지만, 각 코어 별로 별도의 버퍼를 생성하여 기능별로 각각의 코어에 필요한 작업을 분리하여 큐잉할 수도 있다.
상기 기능적 분할 방식에 따라 각각의 코어가 작업을 진행하던 중에, 제3 코 어(113)에서의 역 양자화 및 역 변환 작업이 완료되면, 제3 코어(113)는 제1 코어(111)에 해당 작업이 완료되었음을 나타내는 제어 메시지(IQ/IT_Done)를 제1 코어(111)에 전송한다(S12). 이로써, 제3 코어(113)는 유휴 상태가 된다.
한편, 제3 코어(113)는 상기 역 양자화 및 역 변환 작업이 완료되었음을 제2 코어에 알리는 신호(SendSignal(IQ/IT_Done))를 제2 코어(112)에 전달한다(S14).
제2 코어(112)는 현재 잔여 작업 중 일부 작업(p)를 분할하고(S16), 그 일부의 작업을 수행할 것을 제3 코어(113)에 알리는 신호(SendSignal(Do_MC(p))를 제3 코어에 전달한다(S18). 제2 코어(112)가 잔여 작업 중에서 어느 정도의 작업을 다른 코어에 할당한 것인가는 임의로 정할 수 있지만, 간단히 잔여 작업 량을 (유휴 코어의 수 + 1)로 나눈 값을 기준으로 할 수 있을 것이다. 왜냐하면 코어 간의 성능이 동일하다면 상기와 같이 할당하였을 때 유휴 시간을 최소화할 수 있기 때문이다. 예를 들어, 전체 수행되어야 할 모션 보상에 관한 작업 량이 N이고, 현재까지 제2 코어(112)가 완료한 작업량이 m이라고 하면, 제2 코어(112)는 제3 코어(113)에 잔여 작업량인 N-m의 1/2을 할당할 수 있다.
그 후, 제2 코어(112) 및 제3 코어(113)는 각각 할당된 모션 보상 작업을 수행하게 된다(S20, S22). 이 때 각각의 코어(112, 113)는 버퍼(130)에 큐잉된 작업 중에서 자신에게 할당된 작업을 추출하여 수행한다. 이를 위하여 코어는 상기 큐잉된 작업들 중에서 자신이 작업할 작업들에게 미리 체크 비트를 설정할 수도 있다.
제3 코어(113)가 할당된 모션 보상 작업을 완료하게 되면 제2 코어(112)에 이를 알리는 신호(SendSignal(MC_Done))을 전달한다(S24).
그러면, 제2 코어(112)는 자신에게 할당된 모션 보상 작업이 완료될 때, 제1 코어(111)에게 전체 모션 보상 작업이 완료되었음을 알리는 제어 메시지(MC_Done)을 전송한다(S26).
이상에서는, 기존의 기능적 분할 방식에 본 발명의 일 실시예에 따른 동적 부하 밸런싱을 적용하는 예를 설명하였다. 그런데, 버퍼(130)에 큐잉된 모든 작업들이 서로 의존성을 갖지 않는 독립적인 작업들이라면 별 문제가 없다. 그러나, 버퍼(130)에 큐잉된 작업들 중에서 의존성을 갖는 작업이 있다면 도 9의 과정이 약간 수정될 필요가 있다.
먼저, 제1 코어(111)는 버퍼(130)에 작업을 큐잉할 때 의존성이 있는 작업을 추출하여 별도의 체크 비트를 표시하거나, 상호 의존성이 있는 작업과 의존성이 없는 작업을 별도의 버퍼에 큐잉한다. 예를 들어, 제3 코어(113)가 유휴 상태에 있고, 제2 코어(112)가 담당해야 할 큐잉된 작업들이 도 10과 같다고 가정한다. 이 때 작업 3 내지 5는 상호 의존성이 있는 작업이므로 하나의 코어에서 처리되는 것이 바람직하다. 따라서, 제2 코어(112)는 총 12개의 잔여 작업 중에서 상호 의존성이 있는 작업 6 내지 9와 작업 1 및 2를 자신에게 할당하고, 나머지 6개의 작업들은 제3 코어(113)에 할당할 수 있다. 또는, 반대로 전자를 제3 코어(113)에게 할당하고, 후자를 자신에게 할당할 수도 있다.
이와 같이, 상호 의존성이 있는 작업들을 하나의 코어에 할당하더라도 나머지 독립적인 작업들을 적절히 배분함으로써 전체적으로 부하 밸런스를 맞출 수가 있다.
이상에서와 같이, 본 발명에 따른 멀티 코어 프로세서 장치(100)는 기능적 분할 및 동적 부하 밸런싱을 적용하여 일부 코어에서 발생되는 유휴 시간을 최소화한다. 그렇지만, 모든 코어가 동일한 시각에 동일한 영상 블록에 대한 작업을 동시 수행하는 것은 아닐 수도 있다. 도 11은 본 발명의 일 실시예를 파이프라인(pipeline) 개념으로 설명하는 도면이다.
도 11에서, 동일한 영상 블록에 대하여 수행되는 작업들을 음영으로 표시하였다. 즉, 코어 #1이 구간 1에서 현재 영상 블록에 대한 심볼 디코딩을 완료하면 코어 #2는 구간 2에서 상기 디코딩된 심볼을 바탕으로 복수의 작업을 버퍼에 큐잉한다. 코어 #3은 구간 3에서 상기 현재 영상 블록에 대한 모션 보상 작업을 수행하다가 코어 #2에서 유휴 시간이 발생한 것을 확인하고 일부의 모션 보상 작업을 코어 #2에 할당한다.
구간 3이 경과하여 모션 보상이 완료되면, 코어 #1은 구간 4의 특정 시간에 상기 현재 영상 블록에 대한 역 양자화(IQ), 역 변화(IT) 및 인트라 예측(IP) 등의 과정을 수행한다. 마지막으로 코어 #4는 구간 5에서 상기 현재 영상 블록에 대한 디블록 과정을 수행하여 현재 영상 블록의 블록 인위성을 제거함으로써 하나의 영상 블록(제1 영상 블록)을 복원한다. 이와 마찬가지의 파이프라인 구조에 의하여 구간 6이 경과하면 또 다른 영상 블록(제2 영상 블록)이 복원된다.
멀티 코어 프로세서를 이용하여 기존의 기능적 분할 방식에 따라 비디오 디코딩을 수행한 실험 결과와, 본 발명에 따른 동적 부하 할당 방식에 따라 비디오 디코딩을 수행한 실험 결과는 다음의 표 1에 정리되어 있다.
코어 #1 | 코어 #2 | |
종래기술 | 13.45 ms/프레임 | 39.95 ms/프레임 |
본 발명 | 26.40 ms/프레임 | 27.01 ms/프레임 |
상기 실험에서는, 코어 #2은 모션 보상에 관한 작업만을 수행하고, 코어 #1는 모션 보상 이외의 작업을 수행하는 것으로 하였다. 상기 모션 보상에는 Quarter Pixel 모션 보상과 같이 연산량의 부하가 매우 큰 모션 보상 기법을 사용하였다. 표 1에서, 종래 기술에 따르면 코어 #2가 작업을 완료하는 시점에서 코어 #1에는 26.5ms 만큼의 유휴시간이 발생하지만, 본 발명에 따르면 코어 #1에는 0.61ms 만큼의 유휴시간만이 발생한다는 것을 알 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야 한다.
도 1은 종래의 기능적 분할 방식에 따른 작업 흐름을 설명하는 도면이다.
도 2는 종래의 기능적 분할 방식에서 발생되는 로드 불균형을 보여주는 도면이다.
도 3은 종래의 데이터 분할 방식을 설명하기 위한 도면이다.
도 4는 종래에 멀티 코어 프로세서가 비디오 디코딩을 수행하는 과정을 보여주는 도면이다.
도 5는 도 4의 환경에서 본 발명에 따른 부하의 동적 부하 밸런싱을 적용한 예를 보여주는 도면이다.
도 6은 본 발명의 일 실시예에 따른 비디오 디코딩 과정을 보여주는 도면이다.
도 7은 본 발명의 일 실시예에 따른 전체 시스템의 구성도이다.
도 8은 본 발명의 일 실시예에 따른, 동적 부하 밸런싱을 제공하는 멀티 코어 프로세서 장치의 구성을 도시하는 블록도이다.
도 9는 코어 간에 동적 부하 밸런싱을 구현하는 구체적인 예를 보여주는 시퀀스 다이어그램이다.
도 10은 버퍼에 큐잉된 작업들이 의존성이 있는 작업과 독립적인 작업을 포함하는 예를 보여주는 도면이다.
도 11은 본 발명의 일 실시예를 파이프라인 개념으로 설명하는 도면
(도면의 주요부분에 대한 부호 설명)
61: 심볼 디코더 62: 역 양자화부
63: 역 변환부 65: 모션 보상부
66: 가산기 67: 디블록부
71: 비디오 소스 72: 입출력 장치
73: 디스플레이 장치 100: 멀티 코어 프로세서 장치
110: 멀티 코어 프로세서 120: 메모리
130: 버퍼 140: 비디오 디코더 모듈
Claims (19)
- 비디오 디코딩을 수행하기 위한 기능 모듈들로 구성되는 비디오 디코더 모듈;입력된 비트스트림을 저장하고 상기 기능 모듈들을 로드하는 메모리; 및상기 기능 모듈들을 이용하여 상기 입력된 비트스트림에 대한 비디오 디코딩을 수행하는 복수의 코어들로 구성되는 멀티 코어 프로세서를 포함하며,상기 비디오 디코딩을 수행하는 중에 상기 코어들 중에서 제1 코어에 유휴 시간이 발생한 경우에는, 상기 제1 코어가 제2 코어에 상기 유휴 시간이 발생하였음을 알리는 신호를 전달하고, 비디오 디코딩에 관한 잔여 작업을 가지는 상기 제2 코어가 상기 잔여 작업 전체를 유휴 시간이 발생한 코어의 수보다 1만큼 큰 수로 나눈 작업 량을 상기 제2 코어 및 상기 유휴 시간이 발생한 코어에 할당하여 상기 유휴 시간을 감소시키는 멀티 코어 프로세서 장치.
- 제1항에 있어서,상기 기능 모듈은 H.264 표준 규격의 기능 모듈인 멀티 코어 프로세서 장치.
- 제1항에 있어서, 상기 기능 모듈들은심볼 디코딩 모듈, 역 양자화 모듈, 역 변환 모듈 및 모션 보상 모듈을 포함하는 멀티 코어 프로세서 장치.
- 제1항에 있어서, 상기 멀티 코어 프로세서는상기 입력된 비트스트림 및 기능 모듈들을 이용하여 작업들을 생성하고, 상기 작업을 해당하는 기능에 따라 상기 코어들에 분배하기 위하여 상기 생성된 작업들을 버퍼에 큐잉하는 제3 코어를 더 포함하는 멀티 코어 프로세서 장치.
- 제4항에 있어서, 상기 제3 코어는상기 작업들 중에서 의존성이 있는 작업들을 구분하여 상기 버퍼 또는 별도의 버퍼에 큐잉하는 멀티 코어 프로세서 장치.
- 삭제
- 삭제
- 제1항에 있어서, 상기 제1 코어는상기 할당된 작업이 완료된 경우에, 상기 제2 코어에 상기 작업이 완료되었음을 알리는 신호를 전달하는 멀티 코어 프로세서 장치.
- 제1항에 있어서,상기 잔여 작업 중에서 상호 의존성이 있는 작업은 일체로 하나의 코어에 할당되는 멀티 코어 프로세서 장치.
- 제1항에 있어서,상기 잔여 작업은 모션 보상 작업에 속하는 멀티 코어 프로세서 장치.
- 입력된 비트스트림을 저장하고 비디오 디코딩을 수행하기 위한 기능 모듈들을 로드하는 단계;상기 입력된 비트스트림 및 기능 모듈들을 이용하여 작업들을 생성하고, 상기 작업을 해당하는 기능에 따라 코어들에 분배하기 위하여 상기 생성된 작업들을 버퍼에 큐잉하는 단계;상기 기능 모듈들을 이용하여 상기 입력된 비트스트림에 대한 비디오 디코딩을 수행하는 단계로서, 상기 비디오 디코딩은 복수의 코어들을 갖는 멀티 코어 프로세서에 의하여 수행되는 상기 단계; 및상기 비디오 디코딩을 수행하는 중에 상기 코어들 중에서 제1 코어에 유휴 시간이 발생한 경우에는, 제2 코어에 상기 유휴 시간이 발생하였음을 알리는 신호를 전달하는 단계; 및비디오 디코딩에 관한 잔여 작업을 가지는 제2 코어가 상기 잔여 작업 전체를 유휴 시간이 발생한 코어의 수보다 1만큼 큰 수로 나눈 작업 량을 상기 제2 코어 및 상기 유휴 시간이 발생한 코어에 할당하는 단계를 포함하는 멀티 코어 프로세서 기반의 비디오 디코딩 방법.
- 제11항에 있어서,상기 기능 모듈은 H.264 표준 규격의 기능 모듈인 멀티 코어 프로세서 기반의 비디오 디코딩 방법.
- 제11항에 있어서, 상기 기능 모듈들은심볼 디코딩 모듈, 역 양자화 모듈, 역 변환 모듈 및 모션 보상 모듈을 포함하는 멀티 코어 프로세서 기반의 비디오 디코딩 방법.
- 제13항에 있어서, 상기 큐잉하는 단계는상기 작업들 중에서 의존성이 있는 작업들을 구분하여 상기 버퍼 또는 별도의 버퍼에 큐잉하는 단계를 포함하는 멀티 코어 프로세서 기반의 비디오 디코딩 방법.
- 삭제
- 삭제
- 제11항에 있어서,상기 할당된 작업이 완료된 경우에, 상기 제2 코어에 상기 작업이 완료되었음을 알리는 신호를 전달하는 단계를 더 포함하는 멀티 코어 프로세서 기반의 비디오 디코딩 방법.
- 제11항에 있어서,상기 잔여 작업 중에서 상호 의존성이 있는 작업은 일체로 하나의 코어에 할당되는 멀티 코어 프로세서 기반의 비디오 디코딩 방법.
- 제11항에 있어서,상기 잔여 작업은 모션 보상 작업에 속하는 멀티 코어 프로세서 기반의 비디오 디코딩 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/336,772 US8675739B2 (en) | 2007-12-17 | 2008-12-17 | Method and apparatus for video decoding based on a multi-core processor |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US1414907P | 2007-12-17 | 2007-12-17 | |
US61/014,149 | 2007-12-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090065398A KR20090065398A (ko) | 2009-06-22 |
KR101425620B1 true KR101425620B1 (ko) | 2014-07-31 |
Family
ID=40993752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080004533A KR101425620B1 (ko) | 2007-12-17 | 2008-01-15 | 멀티 코어 프로세서 기반의 비디오 디코딩 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101425620B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11275525B2 (en) | 2019-11-27 | 2022-03-15 | SK Hynix Inc. | Apparatus and method for improving write throughput of memory system |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101656881B1 (ko) | 2010-02-01 | 2016-09-12 | 삼성전자주식회사 | 데이터 처리 장치 및 방법 |
KR20120017294A (ko) | 2010-08-18 | 2012-02-28 | 삼성전자주식회사 | 어플리케이션을 효율적으로 처리하는 스케쥴링 시스템 및 스케쥴링 방법 |
KR101703328B1 (ko) | 2010-11-23 | 2017-02-07 | 삼성전자 주식회사 | 이종 멀티 프로세서 환경에서의 데이터 처리 최적화 장치 및 방법 |
CN102184125B (zh) * | 2011-06-02 | 2013-11-13 | 首都师范大学 | 异构多核环境下基于程序行为在线分析的负载均衡方法 |
KR101945830B1 (ko) * | 2012-05-24 | 2019-06-11 | 삼성전자 주식회사 | 다중 동영상 재생 방법 및 장치 |
KR102002510B1 (ko) * | 2013-04-16 | 2019-07-22 | 삼성전자 주식회사 | 디코딩 장치 및 디코딩 방법 |
KR102312681B1 (ko) * | 2015-03-17 | 2021-10-13 | 한화테크윈 주식회사 | 영상 처리 시스템 및 방법 |
US11790590B2 (en) | 2021-03-31 | 2023-10-17 | Advanced Micro Devices, Inc. | Multi-accelerator compute dispatch |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007037006A1 (ja) * | 2005-09-29 | 2007-04-05 | Fujitsu Limited | マルチコアプロセッサ |
US20070143759A1 (en) * | 2005-12-15 | 2007-06-21 | Aysel Ozgur | Scheduling and partitioning tasks via architecture-aware feedback information |
US20080187053A1 (en) | 2007-02-06 | 2008-08-07 | Microsoft Corporation | Scalable multi-thread video decoding |
-
2008
- 2008-01-15 KR KR1020080004533A patent/KR101425620B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007037006A1 (ja) * | 2005-09-29 | 2007-04-05 | Fujitsu Limited | マルチコアプロセッサ |
US20070143759A1 (en) * | 2005-12-15 | 2007-06-21 | Aysel Ozgur | Scheduling and partitioning tasks via architecture-aware feedback information |
US20080187053A1 (en) | 2007-02-06 | 2008-08-07 | Microsoft Corporation | Scalable multi-thread video decoding |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11275525B2 (en) | 2019-11-27 | 2022-03-15 | SK Hynix Inc. | Apparatus and method for improving write throughput of memory system |
Also Published As
Publication number | Publication date |
---|---|
KR20090065398A (ko) | 2009-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101425620B1 (ko) | 멀티 코어 프로세서 기반의 비디오 디코딩 방법 및 장치 | |
US8675739B2 (en) | Method and apparatus for video decoding based on a multi-core processor | |
US11388405B2 (en) | Content aware scheduling in a HEVC decoder operating on a multi-core processor platform | |
US8218641B2 (en) | Picture encoding using same-picture reference for pixel reconstruction | |
JP5467141B2 (ja) | 下層のフィルタリングを備えたスケーラブルビデオ符号化 | |
US8861591B2 (en) | Software video encoder with GPU acceleration | |
US9131240B2 (en) | Video decoding method and apparatus which uses double buffering | |
JP4699685B2 (ja) | 信号処理装置及びそれを用いた電子機器 | |
US20080123750A1 (en) | Parallel deblocking filter for H.264 video codec | |
US9344742B2 (en) | Transform-domain intra prediction | |
JP2019500766A (ja) | 直前のフレームの動きベクトルパーティショニング | |
US10390026B2 (en) | Smart reordering in recursive block partitioning for advanced intra prediction in video coding | |
JP2007251865A (ja) | 画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体 | |
KR20120117613A (ko) | 동영상 부호화 장치 및 방법 | |
KR101392349B1 (ko) | 비디오 디코딩 방법 및 장치 | |
JP2004516760A (ja) | スケーラブルな計算複雑性のビデオ画像及び静止画像復号化のための近似逆離散コサイン変換 | |
JP2007325024A (ja) | 画像符号化装置及び画像符号化方法 | |
KR101419689B1 (ko) | H.264/avc 복호기에서 역양자화 및 역변환을 수행하는 복호화 장치 및 이를 이용한 복호화 방법 | |
Lee et al. | High speed intra prediction scheme for H. 264/AVC | |
Bahri et al. | Real-time H264/AVC high definition video encoder on a multicore DSP TMS320C6678 | |
KR20110122412A (ko) | 멀티 스레드 기반의 비디오 디코더 및 디코딩 방법 | |
Asif et al. | Exploiting MB level parallelism in H. 264/AVC encoder for multi-core platform | |
EP3149943B1 (en) | Content aware scheduling in a hevc decoder operating on a multi-core processor platform | |
US20100074545A1 (en) | Image compressing apparatus, image compressing method, image decompressing apparatus, and storage medium | |
Aboalmaaly et al. | Data-Level Parallel Approaches for the H. 264 Coding: A Review |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170619 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180620 Year of fee payment: 5 |