KR101392349B1 - 비디오 디코딩 방법 및 장치 - Google Patents

비디오 디코딩 방법 및 장치 Download PDF

Info

Publication number
KR101392349B1
KR101392349B1 KR1020080017493A KR20080017493A KR101392349B1 KR 101392349 B1 KR101392349 B1 KR 101392349B1 KR 1020080017493 A KR1020080017493 A KR 1020080017493A KR 20080017493 A KR20080017493 A KR 20080017493A KR 101392349 B1 KR101392349 B1 KR 101392349B1
Authority
KR
South Korea
Prior art keywords
core
buffer
macroblocks
decoded
main memory
Prior art date
Application number
KR1020080017493A
Other languages
English (en)
Other versions
KR20090020460A (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 US12/196,675 priority Critical patent/US9131240B2/en
Publication of KR20090020460A publication Critical patent/KR20090020460A/ko
Application granted granted Critical
Publication of KR101392349B1 publication Critical patent/KR101392349B1/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/42Methods 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/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • 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/174Methods 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 slice, e.g. a line of blocks or a group of blocks
    • 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

Abstract

비디오 디코딩 방법 및 장치가 제공된다. 본 발명의 실시예에 따른 비디오 디코딩 장치는, 본 발명의 실시예에 따른 비디오 디코딩 장치는, 비디오 디코딩을 수행하기 위한 디코더부 및 디코더부를 이용하여 입력된 비트 스트림에 대한 비디오 디코딩을 수행하는 멀티 코어 프로세서를 포함하고, 멀티 코어 프로세서는, 입력된 비트 스트림을 파싱하여 복수의 슬라이스로 분할하여 할당하는 제1 코어 및 할당된 슬라이스를 디코딩하여 생성한 복수의 매크로블록을 보조 메모리에 포함된 제1 버퍼 및 제2 버퍼에 교대로 저장하였다가 주 메모리로 전송하여 복수의 매크로블록에 관한 영상을 복원하는 제2 코어를 포함하며, 제1 버퍼 및 제2 버퍼 중 어느 하나의 버퍼로부터 디코딩된 복수의 매크로블록이 전송되는 동안, 다른 버퍼에는 디코딩된 복수의 매크로블록이 저장된다.
비디오, 디코딩, MPEG2, Cell BE, DMA 전송

Description

비디오 디코딩 방법 및 장치 {Method and apparatus for video decoding}
본 발명은 비디오 디코딩 방법 및 장치에 관한 것으로, 보다 상세하게는 멀티 코어 프로세서 기반의 비디오 디코딩 장치에서 디코딩 성능을 향상시키는 비디오 디코딩 방법 및 장치에 관한 것이다.
일반적으로 인터넷을 포함한 정보 통신 기술이 발달함에 따라 문자, 음성뿐만 아니라 화상 통신이 증가하고 있다. 기존의 문자 위주의 통신 방식으로는 소비자의 다양한 욕구를 충족시키기에는 부족하며, 이에 따라 문자, 비디오, 음악 등 다양한 형태의 정보를 수용할 수 있는 멀티미디어 서비스가 증가하고 있다. 멀티미디어 데이터는 그 양이 방대하여 대용량의 저장 매체를 필요로 하며 전송시에 넓은 대역폭을 필요로 한다. 따라서 문자, 비디오, 오디오를 포함한 멀티미디어 데이터를 전송하기 위해서는 압축 코딩 기법을 사용하는 것이 필수적이다.
현재 사용되고 있는 비디오 코딩 방법으로는 MPEG-2, MPEG-4, H.263과 H.264 등이 있는데, 이러한 비디오 코딩 방법은 모션 보상 예측 코딩법에 기초하고 있는데, 시간적 중복은 모션 보상에 의해 제거하고 공간적 중복은 변환 코딩에 의해 제거한다.
이 중에서 ISO/IEC 13818-2 Video Standard에서 규정하는 MPEG-2(Moving Picture Experts Group-2)는 비디오 및 오디오를 압축하는 방식으로서, MPEG-1을 확장하여 현행 TV나 HDTV에 사용되는 비디오 데이터를 효율적으로 압축하는 것을 주된 목적으로 컴퓨터 네트워크를 통해서 전송 가능한 고화질의 비디오 인코딩 기법을 제공하기 위해 만들어 졌다.
MPEG-2 비디오 표준은 기본적으로 영상 내 공간적, 시간적 중복성을 제거하고 이를 약속된 비트열로 표시하여 훨씬 짧은 길이로 표시하여 방대한 비디오 데이터를 압축하게 된다.
공간적 중복성을 제거하는 기술로는 영상 내 DCT(Discrete Cosine Transform) 변환과 양자화를 통해 사람 눈이 민감하지 않으면서 많은 정보량을 차지하는 고주파 성분을 제거하는 방법이 있고, 시간적 중복성(영상 프레임간 유사성)을 제거하는 방법으로 프레임간 유사성을 탐지하여 비슷한 부분은 영상 데이터를 보내지 않고 그에 해당하는 움직임 벡터 정보와 움직임 벡터로 표시했을 때 발생하는 오차 성분을 대신 보내는 방법이 있다. 오차 성분 또한 DCT 변환과 양자화를 거친다. 또한 발생 빈도를 고려하여 자주 발생하는 비트열에는 훨씬 짧은 코드를 할당하는 방법으로 비트열을 무손실 압축하는 가변길이 코드(Variable Length Code; VLC)이 있다. 특히 DCT 계수는 실행 길이 코드(Run Length Code)를 통해 짧은 비트열로 표현할 수 있다.
종래에는 이러한 비디오 디코딩 작업이 단일 코어 프로세서(Single-Core Processor)에 의하여 이루어지는 것이 일반적이었다. 그러나, 최근 들어 강력한 성 능의 멀티 코어 프로세서(Multi-Core Processor)가 보급화되면서 비디오 디코딩과 같이 시스템 자원을 많이 소모하는 분야에서 멀티 코어 프로세서의 활용도가 높아지고 있다.
그러나, 하나의 프로세서를 구성하는 복수의 코어들이 각각 정해진 기능만을 담당하도록 정해져 있는 기능적 분할 방식의 경우, 그 구현이 용이하기는 하지만 분할된 기능을 각각의 코어가 처리하는 시간들이 동일하지 않기 때문에 병렬 처리가 어렵고, 프로세서의 전체적 성능을 모두 활용하지 못하는 단점이 있다.
또한, 하나의 픽쳐를 복수의 영역으로 나누고 이를 각각의 코어에 할당하는 데이터 분할 방식의 경우, 단순한 데이터 처리에 있어서는 높은 병렬성을 보장하나, 데이터 처리 프로세스간 의존성(Dependency)이 있으면 구현이 복잡해지고 이를 해결하기 위한 추가 작업(데이터의 분할 크기와 연산 부하 간의 관계 예측)이 필요하게 되므로 성능이 급격하게 저하되는 단점이 있다. 또한 멀티 코어 프로세서를 구성하는 각각의 코어가 비디오 디코딩을 위한 전체 기능을 가지고 있어야 하기 때문에 시스템 자원의 사용에 있어서도 비효율적이 된다.
따라서, 멀티 코어 프로세서의 성능을 제대로 발휘하여 비디오 디코딩의 성능을 높일 수 있는 비디오 디코딩 방법이 필요하다.
본 발명은 상기한 문제점을 개선하기 위해 고안된 것으로, 본 발명이 해결하고자 하는 과제는 멀티 코어 프로세서 기반의 비디오 디코딩 장치에 있어서 디코딩에 필요한 계산과 디코딩된 데이터의 전송을 인터리브(Interleave)함으로써 디코딩 성능을 향상시킬 수 있는 비디오 디코딩 방법 및 장치를 제공하는 것이다.
본 발명의 기술적 과제는 이상에서 언급한 것들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제는 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 달성하기 위하여, 본 발명의 실시예에 따른 비디오 디코딩 장치는, 비디오 디코딩을 수행하기 위한 디코더부 및 상기 디코더부를 이용하여 입력된 비트 스트림에 대한 상기 비디오 디코딩을 수행하는 멀티 코어 프로세서를 포함하고, 상기 멀티 코어 프로세서는, 입력된 비트 스트림을 파싱하여 복수의 슬라이스로 분할하여 할당하는 제1 코어 및 상기 할당된 슬라이스를 디코딩하여 생성한 복수의 매크로블록을 보조 메모리에 포함된 제1 버퍼 및 제2 버퍼에 교대로 저장하였다가 주 메모리로 전송하여 상기 복수의 매크로블록에 관한 영상을 복원하는 제2 코어를 포함하며, 상기 제1 버퍼 및 상기 제2 버퍼 중 어느 하나의 버퍼로부터 상기 디코딩된 복수의 매크로블록이 전송되는 동안, 다른 버퍼에는 상기 디코딩된 복수의 매크로블록이 저장된다.
상기 과제를 달성하기 위하여, 본 발명의 실시예에 따른 비디오 디코딩 방법은, 제1 코어 및 제2 코어로 구성되는 멀티 코어 프로세서 기반의 비디오 디코딩 장치에 있어서, 상기 제1 코어에서 입력된 비트 스트림을 파싱하여 복수의 슬라이스로 분할하고 상기 복수의 슬라이스 중 어느 하나를 상기 제2 코어에 할당하는 단계와, 상기 제2 코어에서 상기 할당된 슬라이스를 디코딩하여 복수의 매크로블록을 생성하는 단계와, 상기 디코딩된 복수의 매크로블록을 보조 메모리에 포함된 제1 버퍼 및 제2 버퍼에 교대로 저장하였다가 주 메모리로 전송하는 단계 및 상기 주 메모리로 전송된 복수의 매크로블록을 이용하여 상기 복수의 매크로블록에 관한 영상을 복원하는 단계를 포함하며, 상기 제1 버퍼 및 상기 제2 버퍼 중 어느 하나의 버퍼로부터 상기 디코딩된 복수의 매크로블록이 전송되는 동안, 다른 버퍼에는 상기 디코딩된 복수의 매크로블록이 저장된다.
상기 과제를 달성하기 위하여, 본 발명의 또 다른 실시예에 따른 비디오 디코딩 장치는, 비디오 디코딩을 수행하기 위한 디코더부 및 상기 디코더부를 이용하여 입력된 비트 스트림에 대한 상기 비디오 디코딩을 수행하는 멀티 코어 프로세서를 포함하고, 상기 멀티 코어 프로세서는, 입력된 비트 스트림을 파싱하여 복수의 슬라이스로 분할하여 할당하는 제1 코어 및 상기 할당된 슬라이스로부터 생성한 복수의 매크로블록 각각에 대한 움직임 보상을 수행하고, 상기 움직임 보상을 수행한 복수의 매크로블록을 주 메모리로 전송하여 상기 복수의 매크로블록에 관한 영상을 복원하는 제2 코어를 포함하며, 상기 제2 코어는 상기 움직임 보상을 수행하는 동안, 상기 움직임 보상의 결과에 영향을 받지 않는 다른 작업을 동시에 수행한다.
상기 과제를 달성하기 위하여, 본 발명의 또 다른 실시예에 따른 비디오 디코딩 방법은, 제1 코어 및 제2 코어로 구성되는 멀티 코어 프로세서 기반의 비디오 디코딩 장치에 있어서, 상기 제1 코어에서 입력된 비트 스트림을 파싱하여 복수의 슬라이스로 분할하고 상기 복수의 슬라이스 중 어느 하나를 상기 제2 코어에 할당하는 단계와, 상기 제2 코어에서 상기 할당된 슬라이스로부터 생성한 복수의 매크로블록 각각에 대한 움직임 보상을 수행하는 단계와, 상기 움직임 보상을 수행한 복수의 매크로블록을 주 메모리로 전송하여 상기 복수의 매크로블록에 관한 영상을 복원하는 단계를 포함하며, 상기 움직임 보상을 수행하는 동안, 상기 움직임 보상의 결과에 영향을 받지 않는 다른 작업을 동시에 수행한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 비디오 디코딩 방법 및 장치에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
첫째, 멀티 코어 프로세서 기반의 비디오 디코딩 장치에서 슬라이스를 디코딩하는 과정과 디코딩된 매크로 블록의 전송 과정을 인터리브함으로써 디코딩 성능을 향상시킬 수 있는 장점이 있다.
둘째, 멀티 코어 프로세서 기반의 비디오 디코딩 장치에서 움직임 보상을 위한 계산 과정과 다른 계산 과정을 인터리브함으로써 디코딩 성능을 향상시킬 수 있는 장점이 있다.
셋째, 멀티 코어 프로세서 기반의 비디오 디코딩 장치를 이용하여 MPEG2 표준 규격을 만족하면서도 디코딩 성능을 향상시킬 수 있는 장점이 있다.
넷째, 멀티 코어 프로세서 기반의 비디오 디코딩 장치의 디코딩 성능을 향상시킴으로서 하드웨어를 효율적으로 사용할 수 있으며 같은 성능을 구현하는데 있어 하드웨어 사양을 줄일 수 있는 장점이 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시예들에 의하여 비디오 디코딩 방법 및 장치를 설명하기 위한 도면들을 참고하여 본 발명에 대해 설명하도록 한다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴 퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때 로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
도 1은 본 발명의 일실시예에 따른 비디오 디코딩 장치의 구성을 나타내는 블록도이다.
본 발명의 일실시예에 따른 비디오 디코딩 장치는, 멀티 코어 프로세서(100), 메모리부(200) 및 디코더부(300)를 포함할 수 있다.
멀티 코어 프로세서(100)는 보다 강력한 성능과 소비 전력 절감, 그리고 여러 개의 작업을 보다 효율적으로 한 번에 처리하기 위해 복수의 코어를 포함하는 집적 회로를 의미한다.
바람직하게는, 본 발명의 일실시예에 따른 비디오 디코딩 장치에서는 멀티 코어 프로세서(100)로서 Cell BE 아키텍처(Cell Broadband Engine Architecture, CBEA)를 사용할 수 있다. Cell BE 아키텍처는 최근에 소니, 도시바, 아이비엠(Sony, Toshiba, IBM, 이를 합쳐 STI라고 한다.) 3사에서 개발한 아키텍처로서, 시스템 자원을 많이 소모하는 비디오 디코딩 장치에 사용될 수 있다.
도 2는 본 발명의 일실시예에 따른 Cell BE 아키텍처의 구조를 개략적으로 나타낸 블록도이다.
Cell BE 아키텍처(Cell Broadband Engine Architecture, CBEA)는 64-bit 파워 아키텍처 기반의 새로운 프로세서 구조를 정의하며, 분산 프로세싱과 미디어 중심의 애플리케이션에 초점을 맞추었다.
도 2에 도시된 바와 같이, Cell BE 아키텍처는 적어도 하나의 Power Processor Element(PPE(110))와 복수의 고성능 Synergistic Processor Element(SPE(120)), 이들간 통신을 담당하는 EIB(130)(Element Interconnect Bus) 및 메모리(140)로 구성된 싱글 칩 멀티 프로세서로 정의될 수 있다.
각각의 SPE(120)는 애플리케이션 프로그램을 실행할 수 있는 독립 프로세서로서, 공유된 메모리(140)와 직접 메모리 액세스(Direct Memory Access, DMA) 명령어로 모든 Cell 프로세싱 요소간에 완벽하고 효율적인 통신을 가능하게 한다. 또한, SPE(120)가 메인 메모리(140)의 계층(Hierarchy)에 포함되어 있지 않고, 독립적인 Local Store(LS)만 가지고 있기 때문에, 메인 메모리(140)에 접근할 때에는 DMA 방식을 사용할 수 있다.
PPE(110)는 64비트 파워 아키텍처의 프로세서로서, 각각의 SPE(120)가 해야 할 작업을 할당하는 마이크로프로세서 코어이다. Cell BE 아키텍처 기반의 시스템에서 PPE(110)는 운영 체제(Operating System, OS)와 대부분의 애플리케이션을 구동시키나, 운영 체제 및 애플리케이션의 집중적인 부분의 계산은 SPE(120)에 할당(Offload)하게 된다.
SPE(120)는 독립적인 프로세서처럼 행동하는 프로세서로서, 벡터 및 데이터 스트리밍 처리에 특화된 SIMD(Single Instruction, Multiple Data) 형태의 아키텍처로 구성되어 있다. SPE(120)는 256 KByte의 Local Store(LS)를 포함하고 있다. 도 2와 같이, SPE(120)는 8개가 구비될 수 있으나, 이에 한정되지는 않는다.
EIB(130)는 Cell BE 프로세서 상의 모든 프로세서 요소와 메모리(140) 컨트롤러와 IO간의 명령어 및 데이터들의 통신 경로를 의미한다. 따라서, EIB(130)는 PPE(110)와 SPE(120)들과 병행적으로 작동하여 데이터 전송과 계산을 동시에 할 수 있다.
Cell BE 아키텍처의 자세한 구조에 대해서는 공지되어 있으므로, 이에 관한 자세한 설명은 생략한다.
메모리부(200)는 애플리케이션 프로그램 및 데이터를 저장하는 곳으로서, 후술할 디코더부(300)를 로딩하여 멀티 코어 프로세서(100)가 입력된 비트 스트림에 대하여 디코딩 작업을 수행할 수 있도록 할 수 있다. 또한, 메모리부(200)는 처리되기 전의 데이터를 일시 저장하는 버퍼(Buffer) 내지 큐(Que)를 포함할 수 있다.
저장부는 하드 디스크, 플래시 메모리(140), CF 카드(Compact Flash Card), SD 카드(Secure Digital Card), SM 카드(Smart Media Card), MMC 카드(Multimedia Card) 또는 메모리(140) 스틱(Memory Stick) 등 정보의 입출력이 가능한 모듈로서 비디오 디코딩 장치의 내부에 구비되어 있을 수도 있고, 별도의 장치에 구비되어 있을 수도 있다. 여기서는, 멀티 코어 프로세서(100)와 독립적으로 구비된 메모리(140)를 예로 들었으나, 멀티 코어 프로세서(100) 내부의 메모리(140)를 사용할 수도 있다.
디코더부(300)는 입력된 비트 스트림에 대하여 비디오 디코딩을 수행하기 위한 다양한 기능 모듈들로 구성될 수 있다.
도 3은 본 발명의 일실시예에 따른 디코더부의 구성을 나타내는 블록도이다.
본 발명의 일실시예에 따른 디코더부(300)는, 심볼 디코더(310), 역 양자화부(320), 역 변환부(330), 움직임 보상부(340), 가산기(350), 디블록부(360) 및 버퍼(370) 등의 기능 모듈을 포함할 수 있다.
심볼 디코더(310)는 입력된 비트 스트림에 대하여 무손실 복호화를 수행하고, 움직임 벡터와 텍스쳐 데이터를 구한다. 무손실 복호화에는 허프만 블록 디코딩(huffman block decoding), 산술 복호화(arithmetic decoding), 가변 길이 복호화(variable length decoding) 등이 있다. 일반적으로 특정 매크로블록에 대한 움직임 벡터는 주변 매크로블록의 움직임 벡터에 의존성을 지닌다. 즉, 주변 매크로블록의 움직임 벡터를 구하지 않고서는 특정 매크로블록의 움직임 벡터도 구할 수 없다. 심볼 리코더(310)에서 구한 텍스쳐 데이터는 역 양자화부(320)에 제공되고, 움직임 벡터는 움직임 보상부(340)에 제공될 수 있다.
역 양자화부(320)는 심볼 디코더(310)로부터 제공되는 텍스쳐 데이터를 역 양자화(Inverse quantisation)한다. 이러한 역 양자화 과정은 양자화 과정에서 사용되었던 양자화 테이블을 이용하여 양자화 과정에서 생성된 인덱스로부터 그에 매칭되는 값을 복원하는 과정을 의미한다.
역 변환부(330)는 역 양자화된 결과에 대하여 역 변환을 수행한다. 이러한 역 변환의 구체적 방법으로는 역 DCT(Inverse Discrete Cosine Transform) 변환, 역 웨이브렛 변환 등이 있다. 역 변환된 결과, 즉 복원된 고주파 영상은 가산기(350)에 제공된다.
움직임 보상부(340)는 심볼 디코더(310)로부터 제공되는 현재 매크로블록에 대한 움직임 벡터(Motion Vector)를 이용하여, 적어도 하나 이상의 참조 프레임(이전에 복원되어 픽처 버퍼에 저장되어 있음)을 움직임 보상(Motion Compensation)함으로써 예측 영상을 생성한다. 이러한 움직임 보상이 1/2 픽셀 또는 1/4 픽셀 단위 로 이루어지는 경우에는 예측 영상을 생성하기 위한 보간 과정에서 많은 연산량이 소요된다. 또한, 두 개의 참조 프레임을 사용하여 움직임 보상하는 경우에는 각각 움직임 보상된 매크로블록들 평균을 계산하게 되는데, 이 때에는 매크로블록들 간에는 의존성이 존재하게 된다. 따라서, 이들 매크로블록들은 단일의 코어에서 처리되도록 할 필요가 있다.
가산기(350)는 역 변환부(330)로부터 제공되는 고주파 영상과 생성된 예측 영상을 가산하여 현재 매크로블록에 관한 영상을 복원한다.
디블록부(360)는 복원된 영상에 디블록 필터를 적용하여 복원된 영상의 블록 인위성(block artifact)를 제거한다. 일반적으로, 복원된 영상은 매크로블록 단위로 처리되기 때문에 매크로블록 경계 부분에서 노이즈가 발생하게 되는데 이를 블록 인위성이라고 한다. 이러한 블록 인위성은 비디오 데이터의 압축률이 높을수록 커지는 경향이 있다. 디블록 필터를 거친 복원된 영상은 버퍼(370)에 일시 저장되었다가 다른 영상의 복원을 위하여 이용되기도 한다.
한편, 모든 매크로블록이 움직임 보상을 통하여 복원되는 것은 아니다. 매크로블록에 따라서는 인트라 예측(Intra prediction, IP)을 통하여 코딩되는 경우도 있다. 이를 인트라 매크로블록(Intra macroblock)이라고 한다. 인트라 예측은 현재 매크로블록을 동일한 프레임 내에서 인접한 다른 매크로블록의 영상을 이용하여 복원하는 방법이다. 이러한 경우에도 현재 매크로블록은 다른 매크로블록과 의존성을 가지게 되므로 단일의 코어에서 처리되도록 할 필요가 있다.
도 4는 본 발명의 일실시예에 따른 비디오 디코딩 장치에서 멀티 코어 프로 세서를 이용하여 비디오를 디코딩하는 예를 나타내는 도면이다.
여기서는, 멀티 코어 프로세서(100)로서 Cell BE 아키텍처를 이용하는 방법을 예로 들어 설명할 것이나, 이에 국한되지는 않으며 당업자에 의해 변경 가능하다.
먼저, PPE(110)는 입력된 비트 스트림을 파싱(Parsing)하여 복수의 슬라이스(Slice)로 분할할 수 있다. 그리고, 분할된 각각의 슬라이스는 각각의 SPE(120)로 보내지게 되고, SPE(120)는 슬라이스를 디코딩하여 복수의 매크로블록(Macroblock)을 생성할 수 있다. 즉, Cell BE 아키텍처 내 각각의 SPE(120)는 디코더부(300)를 이용하여 슬라이스를 디코딩할 수 있으므로 슬라이스 수준의 동시성(Concurrency)을 구현할 수 있다. 매크로블록은 슬라이스를 디코딩한 결과이다. 슬라이스를 디코딩하는 과정은 공지되어 있으므로, 이에 관한 자세한 설명은 생략한다.
슬라이스를 디코딩하여 매크로블록을 생성하면 EIB(130)는 DMA 전송을 이용하여 디코딩된 매크로블록을 SPE(120)의 LS로부터 메모리(140) 상의 픽쳐 버퍼로 전송할 수 있다. 보다 정확하게는, 역 변환부에서 생성된 YUV 픽셀을 픽쳐 버퍼로 전송하게 된다. 또한, EIB(130)는 DMA 전송을 이용하여 픽쳐 버퍼에 저장된 픽쳐 데이터로부터 예측 데이터를 SPE(120)로 전송하여 움직임 보상을 할 수 있도록 한다.
상기와 같이 구성되는 본 발명의 일실시예에 따른 비디오 디코딩 장치의 제어 방법을 설명하면 다음과 같다.
도 5는 본 발명의 일실시예에 따른 비디오 디코딩 장치에서 디코딩된 매크로블록을 전송하는 과정을 나타내는 순서도이다.
도 4에서 설명한 바와 같이, 먼저 PPE(110)는 입력된 비트 스트림을 파싱하여 복수의 슬라이스로 분할하고 나면, SPE(120)는 각각의 슬라이스를 디코딩하여 복수의 매크로블록을 생성할 수 있다(S401).
한편, SPE(120)에 포함된 LS의 크기는 256 KB 정도의 작은 용량으로 픽쳐 버퍼를 포함할 수 있을 정도로 충분히 크지 않기 때문에, 디코딩된 매크로블록은 메모리(140) 상의 픽쳐 버퍼로 전송될 필요가 있다. 여기서는, 메모리(140) 상의 픽쳐 버퍼로 전송하는 예를 들고 있으나, 시스템을 구현함에 있어서 다른 SPE(120)로 전송하는 것도 가능하다.
이 때, 매크로 블록을 디코딩될 때마다 하나씩 따로 전송하기 위해 DMA 전송을 이용하는 것은 간단하지만 비효율적이므로, LS에 디코딩된 매크로블록을 일정 시간 저장하였다가 LS가 꽉 채워진 경우 복수의 디코딩된 매크로블록을 모아서 함께 전송하게 된다. LS에 모아지는 매크로블록들의 수는 SPE(120)의 사용할 수 있는 메모리(140)의 용량에 따라 달라질 수 있다.
도 6은 종래에 DMA 전송을 이용하여 매크로블록을 전송하는 예를 나타내는 도면이다.
도 6에 도시된 바와 같이, 디코딩된 매크로블록은 SPE(120)의 LS 내의 버퍼로 저장될 수 있다. 버퍼 내부가 매크로블록으로 가득 채워지게 되면 EIB(130)는 버퍼 내에 모아진 매크로블록을 메모리(140) 상의 픽쳐 버퍼로 전송을 시작하게 된 다.
이 때, 새롭게 디코딩된 매크로블록을 버퍼로 저장하게 되면 기존에 저장된 매크로블록, 즉 아직 픽쳐 버퍼로 전송되지 않은 매크로블록을 덮어 씌울 수 있기 때문에 매크로블록의 전송이 완료될 때까지 기다리는 대기 시간이 필요하게 된다. 이러한 대기 시간은 픽쳐 버퍼로 매크로블록을 전송할 때 마다 필요하며 매크로블록이 많을수록 여러 번의 대기 시간이 필요하게 된다. 이와 같이, 대기 시간에는 SPE(120)가 슬라이스를 디코딩하여 매크로블록을 생성할 수 없기 때문에, 디코딩 시간이 지연되는 문제가 있다.
따라서, 본 발명의 일실시예에 따른 비디오 디코딩 장치에서는 SPE(120)의 LS에 대해 이중 버퍼링(Double Buffering)을 이용하여 매크로블록을 저장 및 전송할 수 있다.
이중 버퍼링을 위해 SPE(120)의 LS는 두 개의 버퍼, 즉 제1 버퍼와 제2 버퍼로 구성될 수 있다. 최초에는 제1 버퍼를 활성화(Active) 상태로, 제2 버퍼는 비활성화(Passive) 상태로 설정할 수 있다. 또한, 제1 버퍼와 제2 버퍼의 용량은 동일하게 설정되는 것이 바람직하다.
다시 도 5를 참조하면, SPE(120)는 디코딩된 매크로블록을 먼저 활성화된 제1 버퍼에 저장하고(S402), 이는 제1 버퍼에 매크로블록이 가득 찰 때까지 계속될 수 있다(S403).
제1 버퍼가 가득 차게 되면(S403의 예), EIB(130)는 제1 버퍼 내에 모아진 매크로블록의 전송을 요청(초기화)하여 픽쳐 버퍼로 전송을 시작하고(S404), 이와 동시에 디코딩된 매크로블록을 LS의 제2 버퍼에 저장할 수 있다(S405). 이 때, 제1 버퍼 및 제2 버퍼의 상태는 서로 교환되어(Swap), 제1 버퍼는 비활성화 상태로, 제2 버퍼는 활성화 상태로 설정될 수 있다.
만약, 제2 버퍼가 가득 차게 되면(S406의 예), EIB(130)는 제2 버퍼 내에 모아진 매크로블록을 픽쳐 버퍼로 전송을 시작할 수 있다(S407). 이 때, 다시 제2 버퍼는 비활성화 상태로, 제1 버퍼는 활성화 상태로 설정될 수 있다. 그리고, 슬라이스의 모든 매크로블록에 대하여 디코딩이 완료되었는지 판단하여(S408), 판단 결과, 아직 남아 있는 매크로블록이 있는 경우에는 디코딩된 매크로블록을 LS의 제1 버퍼에 저장할 수 있다(S408의 아니오).
상기 단계 402 내지 단계 407을 모든 매크로블록에 대해 디코딩이 완료될 때까지 반복하고, 모든 매크로블록의 디코딩이 완료된 경우(S408의 예), 즉, 슬라이스의 마지막에 해당하는 매크로블록을 저장할 때에는 저장되는 버퍼에 대해서 매크로블록의 전송을 요청할 수 있다. 그리고, 모든 매크로블록이 픽쳐 버퍼로 전송될 때까지 대기하게 된다(S409).
이와 같이, 하나의 슬라이스에 대한 디코딩이 완료되면, 다른 슬라이스에 대하여 상기 단계 401 내지 단계 409를 반복할 수 있다.
도 7은 본 발명의 일실시예에 따른 비디오 디코딩 장치에서 DMA 전송을 이용하여 매크로블록을 전송하는 예를 나타내는 도면이다.
도 7에 도시된 바와 같이, 제1 버퍼 및 제2 버퍼에서는 매크로블록의 저장과 전송이 번갈아 반복적으로 이루어질 수 있다. 보다 정확하게는, 매크로블록을 전송 하는 단계에 매크로블록을 디코딩하고 저장하는 단계를 인터리브(Interleave)할 수 있다. 즉, 제1 버퍼에서 매크로블록의 전송이 이루어지는 동안 제2 버퍼에서는 디코딩된 매크로블록의 저장이 이루어지고, 반대로 제2 버퍼에서 매크로블록의 전송이 이루어지는 동안 제1 버퍼에서는 매크로블록의 저장이 이루어지므로, 도 6에서와 같이 매크로블록을 버퍼에 전송하는 동안에 대기 시간이 필요 없게 된다. 다만, 매크로블록을 디코딩하는 것이 다른 픽쳐의 매크로블록들에 의존될 수 있기 때문에, 하나의 슬라이스의 마지막 부분에서는 모든 전송이 완료될 때까지 기다리는 것이 필요하나, 이것은 하나의 슬라이스에 대해 단 한번 필요할 뿐이다.
이와 같이, 데이터를 전송하는 동안 SPE(120)의 스레드가 데이터 전송을 마칠 때까지 기다리지 않고 디코딩 작업을 계속할 수 있도록 함으로써 EIB(130)의 전체 작업 부하를 감소시킬 수 있어 전체 디코딩 장치의 성능을 향상시킬 수 있다.
또한, 매크로블록의 디코딩은 다른 매크로블록의 디코딩에 영향을 받지 않는다는 점에서 볼 때, 매크로블록의 디코딩이 끝날 때까지 기다리지 않고, 필요한 경우, 예를 들어 제1 버퍼 또는 제2 버퍼에 매크로블록이 가득 차는 경우 매크로블록의 전송을 요청(전송 초기화)하고 바로 SPE(120) 스레드로 제어를 전환하여 디코딩하는 것이 가능하므로 디코딩 성능을 향상시킬 수 있다.
한편, 제1 버퍼 또는 제2 버퍼 내 매크로블록의 전송을 요청한 후 전송이 완료될 때까지의 시간은 다른 버퍼에 매크로블록을 저장하는 시간보다 적게 걸리기 때문에 제1 버퍼 또는 제2 버퍼는 바로 저장이 가능한 상태로 될 수 있다. 따라서, 도 5 및 도 7에서는 제1 버퍼 또는 제2 버퍼 내에 매크로블록이 가득 찬 경우에 전 송이 이루어지는 예를 들고 있으나, 매크로블록의 저장 시간과 전송 시간을 고려하여 전송 요청을 할 수도 있다. 즉, 제1 버퍼에 매크로블록이 가득 차지 않는 경우에도 제1 버퍼에 매크로블록의 전송을 요청하고 제2 버퍼에 저장을 시작할 수도 있다.
상술한 바와 같이, 본 발명의 일실시예에 따르면 디코딩된 매크로블록의 저장과 전송 과정을 인터리브함으로써 ISO/IEC 13818-2 Video Standard에서 규정하는 MPEG-2 표준 규격을 만족하면서도 디코딩 성능을 향상시킬 수 있다. 따라서, 하드웨어를 보다 효율적으로 사용할 수 있으며 같은 성능을 구현하는데 있어 하드웨어 사양을 줄일 수 있다.
한편, 이하 설명할 본 발명의 또 다른 실시예에 따른 비디오 디코딩 방법은 디코딩 과정 중 움직임 보상 단계에 움직임 보상에 독립적인 다른 단계를 인터리브함으로써 디코딩 성능을 향상시킬 수 있음을 설명하기로 한다.
본 발명의 또 다른 실시예에 따른 비디오 디코딩 장치의 구성 및 동작은 도 1 내지 도 4에서 설명한 바와 동일하므로, 이에 대한 설명은 생략하도록 한다.
일반적으로, MPEG-2 디코딩 과정의 움직임 보상 단계에서는 연속되는 두 영상 프레임에 대해 현재 영상 프레임의 매크로블록에서 구한 움직임 벡터를 이용하여 이전 영상 프레임에 대해 움직임 예측을 수행할 수 있다. 이 때, 움직임 예측을 수행하기 위하여 이전 영상 프레임, 즉 이미 디코딩된 픽쳐(참조 프레임)로부터 예측 데이터(Prediction data)(또는, 예측 픽셀(Prediction pixel)이라고도 함)를 얻을 수 있다.
도 4에서 설명한 바와 같이, 디코딩한 매크로블록은 픽쳐 버퍼에 전송되어 픽쳐로 복원되기 때문에, 움직임 보상을 위해서는 이미 복원된 픽쳐로부터 예측 데이터를 SPE(120)로 전송하는 것이 필요하다.
도 8은 본 발명의 또 다른 실시예에 따른 비디오 디코딩 장치에서 움직임 보상을 하는 과정을 나타내는 순서도이다.
먼저, SPE(120)는 현재 영상 프레임의 매크로블록에서 움직임 벡터를 디코딩할 수 있다(S501). 그리고, EIB(130)는 메모리(140) 상의 픽쳐 버퍼로부터 이미 디코딩된 픽쳐(참조 프레임)로부터 예측 데이터를 얻기 위해 픽쳐 버퍼 내에서 오프셋(Offset)을 계산할 수 있다(S502). 그리고, EIB(130)는 예측 데이터를 SPE(120)의 LS로 전송하기 위해 DMA 전송을 초기화할 수 있다(S503). 상기 단계 S501 내지 S503의 과정을 움직임 보상에 있어서 준비 단계(Preparation Stage)라고 한다. 준비 단계를 마치고 나면, 예측 데이터에 대한 DMA 전송이 시작된다.
예측 데이터에 대한 DMA 전송이 시작되면, SPE(120)는 움직임 보상 단계에 독립적인, 즉 움직임 보상 단계에 영향을 받지 않는 다른 단계를 수행할 수 있다(S504).
도 9는 종래의 비디오 디코딩 장치에서 움직임 보상을 하는 예를 나타내는 도면이다.
도 9에 도시된 바와 같이, 종래에는 움직임 보상의 준비 단계를 마친 후에는, SPE(120)로 예측 데이터의 전송이 완료될 때까지 SPE(120)는 대기 상태에 있었다. 그리고, 예측 데이터의 전송이 완료된 후, 전송된 예측 데이터를 이용하여 움 직임 예측을 수행하였다. 이와 같이, SPE(120)가 예측 데이터의 전송 완료를 기다리는 대기 시간으로 인해 전체 디코딩 시간이 지연되는 문제가 있었다.
따라서, 본 발명의 또 다른 실시예에 따른 비디오 디코딩 장치에서는 예측 데이터를 전송하는 동안, SPE(120)가 다른 작업을 할 수 있도록 한다.
도 10은 본 발명의 또 다른 실시예에 따른 비디오 디코딩 장치에서 움직임 보상을 하는 예를 나타내는 도면이다.
도 10에 도시된 바와 같이, 움직임 보상의 준비 단계를 마친 후 예측 데이터의 전송이 시작되면, SPE(120)는 디코딩 과정 중 다른 단계를 수행할 수 있다. 바람직하게는, SPE(120)는 움직임 보상 단계에 영향을 받지 않는 단계, 즉 움직임 보상에 의한 결과에 독립적인 단계를 수행할 수 있는데, 예를 들어, 허프만 블록 디코딩(Huffman block decoding), 양자화 매트릭스 디코딩(Quantizer matrix decoding) 등의 단계를 수행할 수 있다.
다시 도 8을 참조하면, SPE(120)는 예측 데이터의 전송이 완료될 때까지 움직임 보상 단계와 독립적인 다른 단계를 수행하게 되고(S505의 아니오), 예측 데이터의 전송이 완료되면(S505의 예) SPE(120)는 전송된 예측 데이터와 현재 매크로블록에서 구한 움직임 벡터를 이용하여 움직임 예측을 수행할 수 있다(S506). 마지막으로, 움직임 예측을 통해 움직임 보상을 수행하여 예측 영상을 생성할 수 있다(S507).
한편, 본 발명의 또 다른 실시예에 따른 비디오 디코딩 방법은 모든 타입의 매크로블록, 즉 인트라 매크로블록(Intra macroblock), 넌인트라 매크로블록(Non- intra macroblock) 및 스킵트 매크로블록(skipped macroblock)에 적용할 수 있다.
도 11은 본 발명의 또 다른 실시예에 따른 비디오 디코딩 장치에서 넌인트라 매크로블록에 대한 움직임 보상을 구현한 예를 나타내는 도면이다.
도 11에 도시된 바와 같이, 넌인트라 매크로블록에 대해서 움직임 보상을 하기 위해서는 먼저 움직임 보상에 대한 준비 단계를 수행할 수 있다(S601). 그리고, 여러 조건에 따라 분기하여, 예측 데이터의 DMA 전송을 하는 동안 제로잉 DC 예측(Zeroing Dc prediction)(S602), 양자화 매트릭스 디코딩(Quantizer matrix decoding)(S603) 및 허프만 블록 디코딩(Huffman block decoding)(S604)을 수행할 수 있다. 도 11에서 보는 바와 같이, 예측 데이터의 DMA 전송을 하는 동안 SPE(120)는 적어도 제로잉 DC 예측 단계(S602)를 수행할 수 있음을 알 수 있다. 마지막으로, 예측 데이터 전송이 완료되면, 예측 데이터를 이용하여 움직임 예측을 수행할 수 있다(S605, S607 또는 S608). 여기서, StartMotionCompensation() 함수는 움직임 벡터를 디코딩하는 함수, 메모리(140)의 오프셋을 계산하는 함수 및 DMA 전송을 초기화하는 함수를 포함하고, FinishMotionCompensation() 함수는 움직임 예측을 수행하는 함수를 포함할 수 있다.
한편, 움직임 보상이 끝난 후 넌인트라 IDCT 단계(S606)를 수행함으로써, ISO/IEC 13818-2 Video Standard에서 규정하는 MPEG-2 표준 규격을 만족할 수 있다.
여기서는, 넌인트라 매크로블록에 대해서만 설명하였으나, 인트라 매크로블록과 스킵트 매크로블록에 대해서도 비슷한 방법으로 구현할 수 있다.
상술한 바와 같이, 본 발명의 또 다른 실시예에 따른 비디오 디코딩 장치의 경우, 움직임 보상 단계와 움직임 보상에 독립적인 다른 단계를 인터리브함으로써 ISO/IEC 13818-2 Video Standard에서 규정하는 MPEG-2 표준 규격을 만족하면서도 디코딩 성능을 향상시킬 수 있다. 따라서, 하드웨어를 보다 효율적으로 사용할 수 있으며 같은 성능을 구현하는데 있어 하드웨어 사양을 줄일 수 있다.
이 때, 본 실시예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다 는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
도 1은 본 발명의 일실시예에 따른 비디오 디코딩 장치의 구성을 나타내는 블록도이다.
도 2는 본 발명의 일실시예에 따른 Cell BE 아키텍처의 구조를 개략적으로 나타낸 블록도이다.
도 3은 본 발명의 일실시예에 따른 디코더부의 구성을 나타내는 블록도이다.
도 4는 본 발명의 일실시예에 따른 비디오 디코딩 장치에서 멀티 코어 프로세서를 이용하여 비디오를 디코딩하는 예를 나타내는 도면이다.
도 5는 본 발명의 일실시예에 따른 비디오 디코딩 장치에서 디코딩된 매크로블록을 전송하는 과정을 나타내는 순서도이다.
도 6은 종래에 DMA 전송을 이용하여 매크로블록을 전송하는 예를 나타내는 도면이다.
도 7은 본 발명의 일실시예에 따른 비디오 디코딩 장치에서 DMA 전송을 이용하여 매크로블록을 전송하는 예를 나타내는 도면이다.
도 8은 본 발명의 또 다른 실시예에 따른 비디오 디코딩 장치에서 움직임 보상을 하는 과정을 나타내는 순서도이다.
도 9는 종래의 비디오 디코딩 장치에서 움직임 보상을 하는 예를 나타내는 도면이다.
도 10은 본 발명의 또 다른 실시예에 따른 비디오 디코딩 장치에서 움직임 보상을 하는 예를 나타내는 도면이다.
도 11은 본 발명의 또 다른 실시예에 따른 비디오 디코딩 장치에서 넌인트라 매크로블록에 대한 움직임 보상을 구현한 예를 나타내는 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
100: 멀티 코어 프로세서
110: PPE 120: SPE
130: EIB 140: 메모리
200: 메모리부
300: 디코더부
310: 심볼 디코더 320: 역 양자화부
330: 역 변환부 340: 모션 보상부
350: 가산기 360: 디블록부
370: 버퍼

Claims (20)

  1. 비디오 디코딩을 수행하기 위한 디코더부; 및
    상기 디코더부를 이용하여 입력된 비트 스트림에 대한 상기 비디오 디코딩을 수행하는 멀티 코어 프로세서를 포함하고,
    상기 멀티 코어 프로세서는,
    상기 입력된 비트 스트림을 파싱하여 복수의 슬라이스로 분할하여 할당하는 제1 코어; 및
    상기 할당된 슬라이스를 디코딩하여 생성한 복수의 매크로블록을 보조 메모리에 포함된 제1 버퍼 및 제2 버퍼에 교대로 저장하였다가 주 메모리로 전송하여 상기 복수의 매크로블록에 관한 영상을 복원하는 제2 코어를 포함하며,
    상기 제1 버퍼 및 상기 제2 버퍼 중 어느 하나의 버퍼로부터 상기 디코딩된 복수의 매크로블록이 전송되는 동안, 다른 버퍼에는 상기 디코딩된 복수의 매크로블록이 저장되는 비디오 디코딩 장치.
  2. 제 1 항에 있어서,
    상기 보조 메모리는 상기 제2 코어 내부에 구비되고, 상기 주 메모리는 상기 멀티 코어 프로세서 내에서 상기 제2 코어와 별도로 구비되는 비디오 디코딩 장치.
  3. 제 1 항에 있어서,
    상기 제2 코어는,
    상기 디코딩된 복수의 매크로블록을 상기 제1 버퍼에 저장하고,
    상기 제1 버퍼가 가득찬 경우, 상기 제1 버퍼 내에 저장된 복수의 매크로블록을 상기 주 메모리로 전송함과 동시에, 상기 디코딩된 복수의 매크로블록을 상기 제2 버퍼에 저장하며,
    상기 제2 버퍼가 가득찬 경우, 상기 제2 버퍼 내에 저장된 복수의 매크로블록을 상기 주 메모리로 전송함과 동시에, 상기 디코딩된 복수의 매크로블록을 상기 제1 버퍼에 저장하는 과정을 상기 제2 코어에 할당된 슬라이스에 대한 모든 매크로블록을 전송할 때까지 반복하는 비디오 디코딩 장치.
  4. 제 1 항에 있어서,
    상기 디코딩된 복수의 매크로블록은 직접 메모리 액세스(Direct Memory Access, DMA) 방식으로 상기 주 메모리로 전송되는 비디오 디코딩 장치.
  5. 제 1 항에 있어서,
    상기 멀티 코어 프로세서는,
    적어도 하나의 PPE(Power Processor Element);
    복수의 SPE(Synergistic Processor Element); 및
    상기 적어도 하나의 PPE와 상기 복수의 SPE를 제어하는 EIB를 포함하는 Cell BE 아키텍처(Cell Broadband Engine Architecture)로서,
    상기 제1 코어는 상기 적어도 하나의 PPE이고, 상기 제2 코어는 상기 복수의 SPE 중 어느 하나인 비디오 디코딩 장치.
  6. 비디오 디코딩을 수행하기 위한 디코더부; 및
    상기 디코더부를 이용하여 입력된 비트 스트림에 대한 상기 비디오 디코딩을 수행하는 멀티 코어 프로세서를 포함하고,
    상기 멀티 코어 프로세서는,
    상기 입력된 비트 스트림을 파싱하여 복수의 슬라이스로 분할하여 할당하는 제1 코어; 및
    상기 할당된 슬라이스로부터 생성한 복수의 매크로블록 각각에 대한 움직임 보상을 수행하고, 상기 움직임 보상을 수행한 복수의 매크로블록을 주 메모리로 전송하여 상기 복수의 매크로블록에 관한 영상을 복원하는 제2 코어를 포함하며,
    상기 제2 코어는 상기 움직임 보상을 수행하는 동안, 상기 움직임 보상의 결과에 영향을 받지 않는 다른 작업을 동시에 수행하는 비디오 디코딩 장치.
  7. 제 6 항에 있어서,
    상기 제2 코어는, 상기 복수의 매크로블록 각각에 대한 움직임 벡터를 추출하고, 상기 주 메모리 내의 미리 복원된 영상으로부터 예측 데이터를 추출하여 상기 제2 코어로 전송하여, 상기 전송된 예측 데이터과 상기 움직임 벡터를 이용하여 움직임 예측을 수행하여 예측 영상을 생성하는 비디오 디코딩 장치.
  8. 제 7 항에 있어서,
    상기 다른 작업은 상기 예측 데이터가 상기 제2 코어로 전송되는 동안에 동시에 수행되는 비디오 디코딩 장치.
  9. 제 7 항에 있어서,
    상기 예측 데이터는 직접 메모리 액세스(Direct Memory Access, DMA) 방식으로 상기 제2 코어로 전송되는 비디오 디코딩 장치.
  10. 제 6 항에 있어서,
    상기 멀티 코어 프로세서는,
    적어도 하나의 PPE(Power Processor Element);
    복수의 SPE(Synergistic Processor Element); 및
    상기 적어도 하나의 PPE와 상기 복수의 SPE를 제어하는 EIB를 포함하는 Cell BE 아키텍처(Cell Broadband Engine Architecture)로서,
    상기 제1 코어는 상기 적어도 하나의 PPE이고, 상기 제2 코어는 상기 복수의 SPE 중 어느 하나인 비디오 디코딩 장치.
  11. 제1 코어 및 제2 코어로 구성되는 멀티 코어 프로세서 기반의 비디오 디코딩 방법에 있어서,
    상기 제1 코어에서 입력된 비트 스트림을 파싱하여 복수의 슬라이스로 분할하고 상기 복수의 슬라이스 중 어느 하나를 상기 제2 코어에 할당하는 단계;
    상기 제2 코어에서 상기 할당된 슬라이스를 디코딩하여 복수의 매크로블록을 생성하는 단계;
    상기 디코딩된 복수의 매크로블록을 보조 메모리에 포함된 제1 버퍼 및 제2 버퍼에 교대로 저장하였다가 주 메모리로 전송하는 단계; 및
    상기 주 메모리로 전송된 복수의 매크로블록을 이용하여 상기 복수의 매크로블록에 관한 영상을 복원하는 단계를 포함하며,
    상기 제1 버퍼 및 상기 제2 버퍼 중 어느 하나의 버퍼로부터 상기 디코딩된 복수의 매크로블록이 전송되는 동안, 다른 버퍼에는 상기 디코딩된 복수의 매크로블록이 저장되는 비디오 디코딩 방법.
  12. 제 11 항에 있어서,
    상기 보조 메모리는 상기 제2 코어 내부에 구비되고, 상기 주 메모리는 상기 멀티 코어 프로세서 내에서 상기 제2 코어와 별도로 구비되는 비디오 디코딩 방법.
  13. 제 11 항에 있어서,
    상기 제1 버퍼 및 제2 버퍼에 교대로 저장하였다가 주 메모리로 전송하는 단계는,
    상기 디코딩된 복수의 매크로블록을 상기 제1 버퍼에 저장하는 제1 단계;
    상기 제1 버퍼가 가득찬 경우, 상기 제1 버퍼 내에 저장된 복수의 매크로블록을 상기 주 메모리로 전송함과 동시에, 상기 디코딩된 복수의 매크로블록을 상기 제2 버퍼에 저장하는 제2 단계;
    상기 제2 버퍼가 가득찬 경우, 상기 제2 버퍼 내에 저장된 복수의 매크로블록을 상기 주 메모리로 전송함과 동시에, 상기 디코딩된 복수의 매크로블록을 상기 제1 버퍼에 저장하는 제3 단계; 및
    상기 제2 코어에 할당된 슬라이스에 대한 모든 매크로블록을 전송할 때까지 상기 제1 단계 내지 상기 제3 단계를 반복하는 제4 단계를 포함하는 비디오 디코딩 방법.
  14. 제 11 항에 있어서,
    상기 디코딩된 복수의 매크로블록은 직접 메모리 액세스(Direct Memory Access, DMA) 방식으로 상기 주 메모리로 전송되는 비디오 디코딩 방법.
  15. 제 11 항에 있어서,
    상기 멀티 코어 프로세서는,
    적어도 하나의 PPE(Power Processor Element);
    복수의 SPE(Synergistic Processor Element); 및
    상기 적어도 하나의 PPE와 상기 복수의 SPE를 제어하는 EIB를 포함하는 Cell BE 아키텍처(Cell Broadband Engine Architecture)로서,
    상기 제1 코어는 상기 적어도 하나의 PPE이고, 상기 제2 코어는 상기 복수의 SPE 중 어느 하나인 비디오 디코딩 방법.
  16. 제1 코어 및 제2 코어로 구성되는 멀티 코어 프로세서 기반의 비디오 디코딩 장치에 있어서,
    상기 제1 코어에서 입력된 비트 스트림을 파싱하여 복수의 슬라이스로 분할하고 상기 복수의 슬라이스 중 어느 하나를 상기 제2 코어에 할당하는 단계;
    상기 제2 코어에서 상기 할당된 슬라이스로부터 생성한 복수의 매크로블록 각각에 대한 움직임 보상을 수행하는 단계;
    상기 움직임 보상을 수행한 복수의 매크로블록을 주 메모리로 전송하여 상기 복수의 매크로블록에 관한 영상을 복원하는 단계를 포함하며,
    상기 움직임 보상을 수행하는 동안, 상기 움직임 보상의 결과에 영향을 받지 않는 다른 작업을 동시에 수행하는 비디오 디코딩 방법.
  17. 제 16 항에 있어서,
    상기 움직임 보상을 수행하는 단계는,
    상기 복수의 매크로블록 각각에 대한 움직임 벡터를 추출하는 단계;
    상기 주 메모리 내의 미리 복원된 영상으로부터 예측 데이터를 추출하여 상기 제2 코어로 전송하는 단계; 및
    상기 전송된 예측 데이터과 상기 움직임 벡터를 이용하여 움직임 예측을 수 행하여 예측 영상을 생성하는 단계를 포함하는 비디오 디코딩 방법.
  18. 제 17 항에 있어서,
    상기 다른 작업은 상기 예측 데이터가 상기 제2 코어로 전송되는 동안에 동시에 수행되는 비디오 디코딩 방법.
  19. 제 17 항에 있어서,
    상기 예측 데이터는 직접 메모리 액세스(Direct Memory Access, DMA) 방식으로 상기 제2 코어로 전송되는 비디오 디코딩 방법.
  20. 제 16 항에 있어서,
    상기 멀티 코어 프로세서는,
    적어도 하나의 PPE(Power Processor Element);
    복수의 SPE(Synergistic Processor Element); 및
    상기 적어도 하나의 PPE와 상기 복수의 SPE를 제어하는 EIB를 포함하는 Cell BE 아키텍처(Cell Broadband Engine Architecture)로서,
    상기 제1 코어는 상기 적어도 하나의 PPE이고, 상기 제2 코어는 상기 복수의 SPE 중 어느 하나인 비디오 디코딩 방법.
KR1020080017493A 2007-08-23 2008-02-26 비디오 디코딩 방법 및 장치 KR101392349B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/196,675 US9131240B2 (en) 2007-08-23 2008-08-22 Video decoding method and apparatus which uses double buffering

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US95756607P 2007-08-23 2007-08-23
US95761807P 2007-08-23 2007-08-23
US60/957,566 2007-08-23
US60/957,618 2007-08-23

Publications (2)

Publication Number Publication Date
KR20090020460A KR20090020460A (ko) 2009-02-26
KR101392349B1 true KR101392349B1 (ko) 2014-05-19

Family

ID=40687923

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080017493A KR101392349B1 (ko) 2007-08-23 2008-02-26 비디오 디코딩 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101392349B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101012304B1 (ko) * 2009-05-11 2011-02-08 주식회사 텔레칩스 압축 이미지 분할 디코딩 방법 및 분할 디코딩 디스플레이 장치
KR101656881B1 (ko) 2010-02-01 2016-09-12 삼성전자주식회사 데이터 처리 장치 및 방법
KR101641541B1 (ko) 2010-03-31 2016-07-22 삼성전자주식회사 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법
KR101945830B1 (ko) * 2012-05-24 2019-06-11 삼성전자 주식회사 다중 동영상 재생 방법 및 장치
US10757431B2 (en) 2014-02-12 2020-08-25 Chips & Media, Inc Method and apparatus for processing video
CN116489380A (zh) * 2023-04-20 2023-07-25 上海先楫半导体科技有限公司 一种微控制处理器及视频码流的解码方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000072875A (ko) * 1999-05-01 2000-12-05 윤종용 다중 비디오 디코딩 장치 및 그 방법
KR20050021233A (ko) * 2003-08-21 2005-03-07 마츠시타 덴끼 산교 가부시키가이샤 신호 처리 장치 및 그것을 이용한 전자 기기
KR20060053568A (ko) * 2004-11-17 2006-05-22 엘지전자 주식회사 이동 방송 수신기의 비디오 디코딩 시스템
KR100801630B1 (ko) 2007-06-15 2008-02-05 디비코 주식회사 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000072875A (ko) * 1999-05-01 2000-12-05 윤종용 다중 비디오 디코딩 장치 및 그 방법
KR20050021233A (ko) * 2003-08-21 2005-03-07 마츠시타 덴끼 산교 가부시키가이샤 신호 처리 장치 및 그것을 이용한 전자 기기
KR20060053568A (ko) * 2004-11-17 2006-05-22 엘지전자 주식회사 이동 방송 수신기의 비디오 디코딩 시스템
KR100801630B1 (ko) 2007-06-15 2008-02-05 디비코 주식회사 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법

Also Published As

Publication number Publication date
KR20090020460A (ko) 2009-02-26

Similar Documents

Publication Publication Date Title
US9131240B2 (en) Video decoding method and apparatus which uses double buffering
US8537895B2 (en) Method and apparatus for parallel processing of in-loop deblocking filter for H.264 video compression standard
US8000388B2 (en) Parallel processing apparatus for video compression
US8218640B2 (en) Picture decoding using same-picture reference for pixel reconstruction
US8218641B2 (en) Picture encoding using same-picture reference for pixel reconstruction
US8009740B2 (en) Method and system for a parametrized multi-standard deblocking filter for video compression systems
US8902966B2 (en) Video decoding device
US20110274178A1 (en) Method and device for parallel decoding of video data units
KR101158345B1 (ko) 디블록킹 필터링을 수행하는 방법 및 시스템
KR101425620B1 (ko) 멀티 코어 프로세서 기반의 비디오 디코딩 방법 및 장치
KR101392349B1 (ko) 비디오 디코딩 방법 및 장치
KR20040054776A (ko) 고레벨 화소-그리드 모션 보상을 사용하여 복잡성을감소시키기 위한 디코딩
JP6242139B2 (ja) 動画像復号処理装置およびその動作方法
JP2014096755A (ja) 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
KR20120117613A (ko) 동영상 부호화 장치 및 방법
JP2006157925A (ja) パイプラインデブロッキングフィルタ
CN102055970A (zh) 多重标准视频解码系统
KR20090076020A (ko) 멀티 코덱 디코더 및 디코딩 방법
KR100349058B1 (ko) 영상압축복원장치
KR102171119B1 (ko) 복수개의 블록 기반의 파이프라인을 이용한 데이터 처리 속도 개선 장치 및 그 동작 방법
US6418165B1 (en) System and method for performing inverse quantization of a video stream
KR100498445B1 (ko) 성능향상을 위한 동영상 압축방법 및 장치
Han et al. A real-time ultra-high definition video decoder of AVS3 on heterogeneous systems
WO1996036178A1 (en) Multiple sequence mpeg decoder and process for controlling same
Parakh et al. Optimization of MPEG 2 encoder on Cell BE Processor

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180321

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190319

Year of fee payment: 6