KR102299573B1 - 실시간으로 인-루프 필터링을 수행할 수 있는 애플리케이션 프로세서, 이의 작동 방법, 및 이를 포함하는 시스템 - Google Patents

실시간으로 인-루프 필터링을 수행할 수 있는 애플리케이션 프로세서, 이의 작동 방법, 및 이를 포함하는 시스템 Download PDF

Info

Publication number
KR102299573B1
KR102299573B1 KR1020150025676A KR20150025676A KR102299573B1 KR 102299573 B1 KR102299573 B1 KR 102299573B1 KR 1020150025676 A KR1020150025676 A KR 1020150025676A KR 20150025676 A KR20150025676 A KR 20150025676A KR 102299573 B1 KR102299573 B1 KR 102299573B1
Authority
KR
South Korea
Prior art keywords
processing unit
core
processing
picture
slice
Prior art date
Application number
KR1020150025676A
Other languages
English (en)
Other versions
KR20160047375A (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 US14/689,169 priority Critical patent/US10277913B2/en
Priority to DE102015116544.9A priority patent/DE102015116544A1/de
Priority to TW104133529A priority patent/TWI691850B/zh
Priority to CN201510689230.8A priority patent/CN105554505B/zh
Publication of KR20160047375A publication Critical patent/KR20160047375A/ko
Application granted granted Critical
Publication of KR102299573B1 publication Critical patent/KR102299573B1/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/436Methods 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
    • 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/117Filters, e.g. for pre-processing or post-processing
    • 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/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

Abstract

본 발명의 실시 예에 따른 애플리케이션 프로세서는 제1처리 유닛과 제2처리 유닛을 포함하는 제1픽처(picture)를 처리하는 제1코어와, 제3처리 유닛과 제4처리 유닛을 포함하는 제2픽처를 처리하는 제2코어를 포함하고, 상기 제1코어와 상기 제2코어 각각은 상기 제2처리 유닛의 처리와 상기 제3처리 유닛의 처리 각각을 병렬적으로 수행한다.

Description

실시간으로 인-루프 필터링을 수행할 수 있는 애플리케이션 프로세서, 이의 작동 방법, 및 이를 포함하는 시스템{APPLICATION PROCESSOR FOR PERFORMING REAL TIME IN-LOOP FILTERING, METHOD THEREOF, AND SYSTEM INCLUDING THE SAME}
본 발명의 개념에 따른 실시 예는 반도체 장치에 관한 것으로, 특히 실시간으로 인-루프 필터링을 수행할 수 있는 멀티 코어를 포함하는 애플리케이션 프로세서, 이의 작동 방법, 및 이를 포함하는 시스템에 관한 것이다.
하나의 픽처(picture) 내에서 슬라이스(slice) 또는 타일(tile)은 엔트로피 인코딩 또는 엔트로피 디코딩에서의 종속성을 감소시킬 수 있다.
하나의 픽처에 포함된 복수의 슬라이스들 또는 타일들을 복수의 프로세서들을 이용하여 인코딩 또는 디코딩하면, 슬라이스들 또는 타일들 사이의 경계에 존재하는 복수의 블록들에 대한 인코딩 또는 디코딩이 완료될 때까지 상기 슬라이스들 또는 상기 타일들에 대한 디블록킹은 수행될 수 없다. 또한, 슬라이스들 또는 타일들 사이의 경계에 존재하는 복수의 블록들에 대한 디블록킹을 위해 복수의 프로세서들은 상기 디블록킹에 필요한 정보를 주고받아야 한다.
즉, 하나의 픽처에 포함된 복수의 분할 영역들(예컨대, 슬라이스들 또는 타일들) 각각을 복수의 프로세서들 각각을 이용하여 인코딩 또는 디코딩할 때, 상기 분할 영역들 사이의 종속성 또는 분산으로 인해 디블록킹을 위한 추가적인 처리 시간이 필요하다.
본 발명이 이루고자 하는 기술적인 과제는 동일한 픽처에 포함된 모든 슬라이스들 또는 타일들은 상기 픽처에 할당된 하나의 코어를 이용하여 인코딩 또는 디코딩하고, 실시간으로 인-루프 필터링을 수행할 수 있는 멀티 코어를 포함하는 애플리케이션 프로세서, 이의 작동 방법, 및 이를 포함하는 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 애플리케이션 프로세서는 제1처리 유닛과 제2처리 유닛을 포함하는 제1픽처(picture)를 처리하는 제1코어와, 제3처리 유닛과 제4처리 유닛을 포함하는 제2픽처를 처리하는 제2코어를 포함하고, 상기 제1코어와 상기 제2코어 각각은 상기 제2처리 유닛의 처리와 상기 제3처리 유닛의 처리 각각을 병렬적으로 수행한다.
상기 제1코어는, 상기 제1픽처의 처리 복잡도에 기초하여, 상기 제1픽처를 상기 제1처리 유닛과 상기 제2처리 유닛으로 분할하고, 상기 제2코어는, 상기 제2픽처의 처리 복잡도에 기초하여, 상기 제2픽처를 상기 제3처리 유닛과 상기 제4처리 유닛으로 분할하고, 상기 제2처리 유닛에 포함된 슬라이스들(slices)의 개수와 상기 제3처리 유닛에 포함된 슬라이스들의 개수가 서로 다를 때, 상기 제1코어는 제1시간 구간 내에 상기 제2처리 유닛의 상기 처리를 완료하고, 상기 제2코어는 상기 제1시간 구간 내에 상기 제3처리 유닛의 상기 처리를 완료한다.
상기 제1코어는, 상기 제1픽처의 처리 복잡도에 기초하여, 상기 제1픽처를 상기 제1처리 유닛과 상기 제2처리 유닛으로 분할하고, 상기 제2코어는, 상기 제2픽처의 처리 복잡도에 기초하여, 상기 제2픽처를 상기 제3처리 유닛과 상기 제4처리 유닛으로 분할하고, 상기 제2처리 유닛에 포함된 타일들(tiles)의 개수와 상기 제3처리 유닛에 포함된 타일들의 개수가 서로 다를 때, 상기 제1코어는 제1시간 구간 내에 상기 제2처리 유닛의 상기 처리를 완료하고, 상기 제2코어는 상기 제1시간 구간 내에 상기 제3처리 유닛의 상기 처리를 완료한다.
상기 제1코어는 H.264 비디오 코딩 표준에 의해 정의된 인-루프 필터(in-loop filter)를 포함하고, 상기 제1코어가 상기 제2처리 유닛을 처리하고 상기 인-루프 필터를 이용하여 상기 제2처리 유닛 내에서 처리된 블록에 인-루프 필터링을 수행하는 동안 상기 제2코어는 상기 제3처리 유닛을 처리한다.
상기 제1코어는 HEVC(High Efficiency Video Coding) 비디오 코딩 표준에서 정의된 인-루프 필터를 포함하고, 상기 제1코어가 상기 제2처리 유닛을 처리하고 상기 인-루프 필터를 이용하여 상기 제2처리 유닛 내에서 처리된 블록에 인-루프 필터링을 수행하는 동안 상기 제2코어는 상기 제3처리 유닛을 처리한다.
상기 제1처리 유닛, 상기 제2처리 유닛, 상기 제3처리 유닛, 및 상기 제4처리 유닛 각각은 적어도 하나의 슬라이스(slice)를 포함한다. 상기 제1처리 유닛, 상기 제2처리 유닛, 상기 제3처리 유닛, 및 상기 제4처리 유닛 각각은 적어도 하나의 타일(tile)을 포함한다.
상기 제1코어는 제1하드웨어 코덱 내에 구현되고, 상기 제2코어는 제2하드웨어 코덱 내에 구현될 수 있다. 상기 제1코어와 상기 제2코어는 하나의 하드웨어 코덱 내에 구현될 수 있다. 상기 제1코어는 CPU(central processing unit)의 제1코어이고 상기 제2코어는 상기 CPU의 제2코어일 수 있다.
상기 제1코어에 의해 상기 제1처리 유닛의 처리로부터 처리 시간 지연 후, 상기 제2코어는 상기 제3처리 유닛의 상기 처리를 수행한다. 상기 제2처리 유닛의 상기 처리의 시작은 상기 제3처리 유닛의 상기 처리의 시작과 동시에 일어난다. 상기 제2처리 유닛의 상기 처리의 처리 시간의 일부는 상기 제3처리 유닛의 상기 처리의 처리 시간의 일부는 오버랩된다.
본 발명의 실시 예에 따른 시스템 온 칩은 제1처리 유닛과 제2처리 유닛을 포함하는 제1픽처와, 제3처리 유닛과 제4처리 유닛을 포함하는 제2픽처를 수신하는 수신 인터페이스와, 상기 제1픽처를 처리하는 제1코어와, 상기 제2픽처를 처리하는 제2코어를 포함하고, 상기 제1코어와 상기 제2코어 각각은 상기 제2처리 유닛의 처리와 상기 제3처리 유닛의 처리 각각을 병렬적으로 수행한다.
상기 제2처리 유닛에 포함된 슬라이스(slice)의 개수와 상기 제3처리 유닛에 포함된 슬라이스의 개수가 서로 다를 때, 상기 제1코어는 제1시간 구간 내에 상기 제2처리 유닛의 상기 처리를 완료하고, 상기 제2코어는 상기 제1시간 구간 내에 상기 제3처리 유닛의 상기 처리를 완료한다.
상기 제2처리 유닛에 포함된 타일들(tiles)의 개수와 상기 제3처리 유닛에 포함된 타일들의 개수가 서로 다를 때, 상기 제1코어는 제1시간 구간 내에 상기 제2처리 유닛의 상기 처리를 완료하고, 상기 제2코어는 상기 제1시간 구간 내에 상기 제3처리 유닛의 상기 처리를 완료한다.
상기 제1코어는 H.264 비디오 코딩 표준에 의해 정의된 인-루프 필터(in-loop filter)를 포함하고, 상기 제1코어가 상기 제2처리 유닛을 처리하고 상기 인-루프 필터를 이용하여 상기 제2처리 유닛 내에서 처리된 블록에 인-루프 필터링을 수행하는 동안 상기 제2코어는 상기 제3처리 유닛을 처리한다.
상기 제1코어는 HEVC(High Efficiency Video Coding) 비디오 코딩 표준에서 정의된 인-루프 필터를 포함하고, 상기 제1코어가 상기 제2처리 유닛을 처리하고 상기 인-루프 필터를 이용하여 상기 제2처리 유닛 내에서 처리된 블록에 인-루프 필터링을 수행하는 동안 상기 제2코어는 상기 제3처리 유닛을 처리한다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 제1처리 유닛과 제2처리 유닛을 포함하는 제1픽처와, 제3처리 유닛과 제4처리 유닛을 포함하는 제2픽처를 수신하는 수신 인터페이스와, 상기 제1픽처를 처리하는 제1코어와, 상기 제2픽처를 처리하는 제2코어를 포함하고, 상기 제1코어와 상기 제2코어 각각은 상기 제2처리 유닛의 처리와 상기 제3처리 유닛의 처리 각각을 병렬적으로 수행한다.
본 발명의 실시 예에 따른 비디오 데이터 처리를 위한 방법은 상기 비디오 데이터의 제1픽처를 제1코어에 할당하고 상기 비디오 데이터의 제2픽처를 제2코어에 할당하는 단계와, 상기 제1코어를 이용하여 상기 제1픽처의 제1처리 유닛을 처리하는 단계와, 상기 제1코어를 이용하여 상기 제1픽처의 제2처리 유닛을 처리하는 단계와, 상기 제1코어를 이용하여 상기 제2처리 유닛의 상기 처리와 병렬로 상기 제2코어를 이용하여 상기 제2픽처의 제2처리 유닛을 처리하는 단계와, 상기 제1처리 유닛의 처리 결과에 기초하여, 처리된 제1처리 유닛과 처리된 제2처리 유닛에 대한 인-루프 필터링을 수행하는 단계를 포함한다.
상기 제1처리 유닛, 상기 제2처리 유닛, 상기 제3처리 유닛, 및 상기 제4처리 유닛 각각은 적어도 하나의 슬라이스 또는 적어도 하나의 타일을 포함한다.
상기 비디오 데이터는 홀수 번째 픽처들과 짝수 번째 픽처들을 포함하고, 상기 비디오 데이터의 처리가 완료될 때까지 상기 비디오 데이터의 상기 홀수 번째 픽처들 모두는 상기 제1코어에 할당되고 상기 비디오 데이터의 상기 짝수 번째 픽처들 모두는 상기 제2코어에 할당된다.
상기 비디오 데이터 처리를 위한 방법은 상기 비디오 데이터의 제3픽처를 제3코어에 할당하는 단계와, 상기 제2픽처의 상기 제3처리 유닛의 처리와 병렬로 상기 제3코어를 이용하여 상기 제3픽처의 제4처리 유닛을 처리하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 복수의 코어들을 포함하는 애플리케이션 프로세서는 동일한 픽처에 포함된 모든 슬라이스들 또는 타일들을 상기 복수의 코어들 중에서 어느 하나에 할당하고, 상기 픽처에 할당된 하나의 코어를 이용하여 인코딩 또는 디코딩하고 실시간으로 인-루프 필터링을 수행할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 2는 복수의 슬라이스들을 포함하는 픽처의 실시 예를 나타낸다.
도 3은 각각이 2개의 슬라이스들을 포함하는 픽처들의 시퀀스를 나타낸다.
도 4는, 2개의 코어들을 이용하여, 도 3에 도시된 픽처들의 시퀀스를 처리하는 과정을 개념적으로 나타낸다.
도 5는 각각이 2개의 슬라이스 그룹들을 포함하는 픽처들의 시퀀스를 나타낸다.
도 6은, 2개의 코어들을 이용하여, 도 5에 도시된 픽처들의 시퀀스를 처리하는 과정을 개념적으로 나타낸다.
도 7은 각각이 3개의 슬라이스들을 포함하는 픽처들의 시퀀스를 나타낸다.
도 8은, 3개의 코어들을 이용하여, 도 7에 도시된 픽처들의 시퀀스를 처리하는 과정을 개념적으로 나타낸다.
도 9는 본 발명의 실시 예에 따른 모션 벡터 서치를 설명하기 위한 개념도이다.
도 10은 본 발명의 일 실시 예에 따른 각각이 2개의 타일들을 포함하는 픽처들의 시퀀스를 나타낸다.
도 11은, 2개의 코어들을 이용하여, 도 10에 도시된 픽처들의 시퀀스를 처리하는 과정을 개념적으로 나타낸다.
도 12는 본 발명의 다른 실시 예에 따른 각각이 2개의 타일들을 포함하는 픽처들의 시퀀스를 나타낸다.
도 13은 본 발명의 실시 예에 따른 각각이 4개의 타일들을 포함하는 픽처들의 시퀀스를 나타낸다.
도 14는, 2개의 코어들을 이용하여, 도 13에 도시된 픽처들의 시퀀스를 처리하는 과정을 개념적으로 나타낸다.
도 15는 도 1에 도시된 하드웨어 코덱의 블록도이다.
도 16은 도 15에 도시된 인코더의 블록도이다.
도 17은 도 15에 도시된 디코더의 블록도이다.
도 18은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 19는 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 20은 도 1, 도 18, 또는 도 19에 도시된 데이터 처리 시스템의 작동을 설명하는 플로우차트이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
실시 예들에 따라 픽처(picture) 또는 처리 유닛(예컨대, 처리될 유닛)은 하나 또는 그 이상의 분할된 영역들, 예컨대 슬라이스들(slices) 또는 타일들(tiles)을 포함할 수 있다. 실시 예들에 따라, 픽처는 코어(core)에 의해 처리될 수 있다. 즉, 픽처 내에서 모든 분할된 영역들, 예컨대, 모든 슬라이스들 또는 모든 타일들은 하나의 코어에 의해 처리될 수 있다. 여기서, 처리는 인코드(encode), 디코드 (decode), 인-루프 필터링(in-loop filtering)을 포함하는 인코드 또는 인-루프 필터링을 포함하는 디코드를 의미할 수 있다.
실시 예들에 따라, 픽처는 슬라이스들로 분할될 수 있다. 슬라이스는 AVC( Advanced Video Coding)를 위한 정수개의 매크로블록들(macroblocks(MBs))의 시퀀스 또는 HEVC를 위한 HEVC(High Efficiency Video Coding)를 위한 정수개의 코딩 트리 유닛들(Coding Tree Units(CUTs))의 시퀀스로 정의될 수 있다. HEVC를 위한 실시 예들에서, 픽처는 타일들로 분할될 수 있다. 타일은 정수개의 CTU들의 직사각형 영역으로 정의될 수 있고, 하나 또는 그 이상의 슬라이스들을 포함하는 CTU들을 포함할 수 있다.
실시 예들에 따라, 데이터 처리 시스템(100A, 100B, 또는 100C)은 풀 HD (Full High definition(FHD)) TV 또는 UHD(Ultra high definition) TV로 구현될 수 있다. 또한, 데이터 처리 시스템(100A, 100B, 또는 100C)은 H.264 또는 HEVC(High Efficiency Video Coding)과 같은 비디오 코딩 표준에 적합할 수 있다.
실시 예들에 따라, 데이터 처리 시스템(100A, 100B, 또는 100C)은 PC (personal computer), 스마트폰, 태블릿 PC, 모바일 인터넷 장치(mobile internet device(MID)), 랩탑 컴퓨터(laptop computer), 모바일 디지털 미디어 플레이어 (mobile digital media player(M-DMP)), 또는 포터블 미디어 플레이어(portable media player(PMP))로 구현될 수 있다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다. 도 1을 참조하면, 데이터 처리 시스템(100A)은 컨트롤러(200A), 복수의 메모리들(301, 303, 및 305), 및 디스플레이(400)를 포함할 수 있다. 실시 예들에 따라, 데이터 처리 시스템(100A)은 카메라(500)를 더 포함할 수 있다.
컨트롤러(200A)는 집적 회로(IC), 시스템 온 칩(system on chip(SoC)), 마더보드(mother board), 애플리케이션 프로세서(application processor(AP)), 또는 모바일 AP로 구현될 수 있다.
컨트롤러(200A)는 압축되지 않는 YUV 데이터(또는 RGB 데이터)를 수신하여 인코드하고, 인코드된 비트스트림을 디코드할 수 있고, 복수의 메모리들(301, 303, 및 305) 각각에 대한 메모리 액세스 작동(예컨대, 라이트 작동 또는 리드 작동)을 제어할 수 있고, 디스플레이 데이터(또는 비디오 데이터)를 디스플레이(400)로 전송할 수 있다. 또한, 컨트롤러(200A)는 카메라(500)로부터 출력된 이미지 데이터(또는 비디오 데이터)를 처리하고, 처리된 이미지 데이터를 복수의 메모리들(301, 303, 및 305) 중에서 적어도 하나에 저장하거나 상기 처리된 이미지 데이터를 디스플레이(400)로 전송할 수 있다.
컨트롤러(200A)는 CPU(central processing unit; 210A), GPU(graphics processing unit; 220), 적어도 2개의 하드웨어 코덱들(230-1~230-N; N은 2 이상의 자연수), 메모리 인터페이스(240), 디스플레이 인터페이스 (260), 및 수신 인터페이스(270)를 포함할 수 있다. 데이터 처리 시스템(100A)이 카메라(500)를 더 포함할 때, 컨트롤러(200A)는 카메라 인터페이스(250)를 더 포함할 수 있다.
CPU(210A), GPU(220), 적어도 2개의 하드웨어 코덱들(230-1~230-N), 메모리 인터페이스(240), 디스플레이 인터페이스(260), 및 수신 인터페이스(270)는 버스 (201)를 통해 서로 데이터를 주거나 받을 수 있다. 카메라 인터페이스(250)는 버스 (201)에 접속되고 다른 구성 요소들(예컨대, 210A, 및/또는 220)과 데이터를 주거나 받을 수 있다.
CPU(210A)는 컨트롤러(200A)의 작동을 전반적으로 제어할 수 있다. CPU (210A)는 하나 또는 그 이상의 코어들을 포함할 수 있다. 예컨대, CPU(210A)는 GPU(220), 적어도 2개의 하드웨어 코덱들(230-1~230-N), 메모리 인터페이스(240), 카메라 인터페이스(250), 디스플레이 인터페이스(260), 및/또는 수신 인터페이스 (270)의 작동에 필요한 프로그램 코드들 또는 애플리케이션들을 실행시킬 수 있다.
GPU(220)는 2D 또는 3D 그래픽스(graphics) 데이터를 처리할 수 있다. GPU (220)에 의해 처리된 그래픽스 데이터는 복수의 메모리들(301, 303, 및 305) 중에서 적어도 하나에 저장되거나 디스플레이(400)를 통해 디스플레이될 수 있다.
적어도 2개의 하드웨어 코덱들(230-1~230-N) 각각의 구조와 작동은 실질적으로 동일 또는 유사하다. 실시 예들에 따라, 적어도 2개의 하드웨어 코덱들(230-1~230-N) 각각은 단순히 코어(core)로 불릴 수 있다. 각 하드웨어 코덱(230-1~230-N)의 작동은 도 2부터 도 17을 참조하여 상세히 설명될 것이다. 적어도 2개의 하드웨어 코덱들(230-1~230-N) 각각은 메모리(MEM1~MEMN)를 포함한다. 각 메모리 (MEM1~MEMN)는 하나 또는 그 이상의 인코드된 픽처들, 하나 또는 그 이상의 디코드된 픽처들, 및/또는 하나 또는 그 이상의 인코드된(또는 디코드된) 픽처들의 인-루프 필터링에 필요한 정보를 저장할 수 있다.
메모리 인터페이스(240)는 제1메모리 인터페이스(241), 제2메모리 인터페이스(243), 및 제3메모리 인터페이스(245)를 포함할 수 있다. 예컨대, 제1메모리 (301)가 DRAM(dynamic random access memory)으로 구현될 때, 제1메모리 인터페이스(241)는 DRAM 인터페이스일 수 있다. 제2메모리(303)가 NAND 플래시 메모리로 구현될 때, 제2메모리 인터페이스(243)는 NAND 플래시 인터페이스일 수 있다. 제3메모리(305)가 eMMC(embedded multimedia card)로 구현될 때, 제3메모리 인터페이스 (245)는 eMMC 인터페이스일 수 있다. 도 1에서는 설명의 편의를 위해, 3개의 메모리 인터페이스들(241, 243, 및 245)과 3개의 메모리들(301, 303, 및 305)이 도시되나 이는 하나의 예시일뿐이고 특히 메모리들(301, 303, 및 305)의 개수가 이에 한정되는 것은 아니다. 따라서, 본 발명의 기술적 사상이 메모리 인터페이스들의 개수와 메모리들의 개수에 한정되는 것은 아니다.
디스플레이 인터페이스(260)는, CPU(210A), GPU(220), 또는 각 하드웨어 코덱(230-1~230-N)의 제어에 따라, 디스플레이 데이터(예컨대, 비디오 데이터)를 디스플레이(400)로 전송할 수 있다. 실시 예들에 따라, 디스플레이 인터페이스(260)는 MIPI® 디스플레이 시리얼 인터페이스(display serial interface(DSI)), eDP (Embedded DisplayPort) 인터페이스, 또는 HDMI(High-Definition Multimedia Interface)로 구현될 수 있으나 이러한 인터페이스들은 단지 예시적인 것으로서 디스플레이 인터페이스(260)가 이에 한정되는 것은 아니다.
수신 인터페이스(270)는 압축되지 않은 픽처 데이터(예컨대, RGB 데이터 또는 YUV 데이터) 및/또는 인코드된 비트스트림(EB)을 유선 통신망 또는 무선 통신망을 통해 수신할 수 있다. 실시 예들에 따라, 수신 인터페이스(270)는 USB (universal serial bus) 인터페이스, 이더넷(ethernet) 인터페이스, 블루투스 인터페이스, Wi-Fi 인터페이스, 또는 LTETM 인터페이스로 구현될 수 있다. 그러나, 이러한 인터페이스들은 단지 예시적인 것으로서 수신 인터페이스(270)가 이에 한정되는 것은 아니다.
카메라 인터페이스(250)는 카메라(500)로부터 출력된 이미지 데이터를 수신할 수 있다. 실시 예에 따라, 상기 이미지 데이터는 MIPI® 카메라 시리얼 인터페이스(camera serial interface(CSI))를 통해 카메라 인터페이스(250)로 전송될 수 있다. 이러한 인터페이스는 단지 예시적인 것으로서 카메라 인터페이스(250)가 이에 한정되는 것은 아니다. 카메라(500)는 CMOS 이미지 센서를 포함하는 카메라 모듈을 의미할 수 있다.
도 2는 복수의 슬라이스들을 포함하는 픽처의 실시 예를 나타낸다.
도 2를 참조하면, 픽처(10)는 복수의 슬라이스들(SLICE1~SLICE3)을 포함할 수 있고, 복수의 슬라이스들(SLICE1~SLICE3) 각각은 복수의 블록들을 포함할 수 있다. 예컨대, 도 2에 예시적 도시된 바와 같이, 제1슬라이스(SLICE1)는 블록들 (0~21)을 포함할 수 있고, 제2슬라이스(SLICE2)는 블록들(22-39)을 포함할 수 있고, 제3슬라이스(SLICE3)는 블록들(40-63)을 포함할 수 있다.
실시 예들에 따라, 복수의 슬라이스들(SLICE1~SLICE3) 각각에 포함된 블록의 개수는 서로 다를 수 있다. 실시 예들에 따라, 복수의 슬라이스들(SLICE1~SLICE3) 각각에 포함된 블록의 개수는 각 슬라이스에 대한 동일할 수 있다. 픽처(10)는 인코드될 프레임, 원래의(original) 픽처, 인코드될 픽처의 로우 비트스트림(raw bitstream; 예컨대, 코딩되지 않은 비트스트림), 디코드될 프레임, 인코드된 픽처, 또는 인코드된 비트스트림(EB)을 의미할 수 있다. 도 2는 64개의 블록들, 예컨대, 블록들(0~63)을 포함하는 픽처를 도시한다. 그러나, 이것은 단지 예시적인 것으로서, 블록들의 개수는 64개보다 적을 수도 있고 많을 수도 있다.
H. 264 비디오 코딩 표준에서, 블록(block)은 매크로블록(macroblock)을 의미할 수 있다. HEVC(High Efficiency Video Coding) 비디오 코딩 표준에서, 블록은 코딩 트리 유닛(coding tree unit(CTU))을 의미할 수 있다. 실시 예에 따라, 픽처 (10)는 인코드될 프레임, 원래의 픽처, 인코드될 픽처의 로우 비트스트림(raw bitstream), 디코드될 프레임, 인코드된 픽처, 또는 인코드된 비트스트림(EB), 등을 의미할 수 있다.
인코더는 픽처의 블록들을 인코드할 수 있고, 디코더는 픽처의 블록(0)부터 블록(63)을 순차적으로 디코드할 수 있다.
제1슬라이스(SLICE1) 내의 제1블록(0)이 처리된 후, 인코더 또는 디코더는 처리된 제1블록(0) 이전에 블록이 존재하지 않으므로 처리된 제1블록(0)의 에지들에 대한 인-루프 필터링(in-loop filtering)을 수행하지 않는다. 그러나, 제1슬라이스(SLICE1) 내의 제2블록(1)이 처리된 후, 상기 인코더 또는 상기 디코더는 처리된 제1블록(0)의 제1비디오 데이터와 처리된 제2블록(1)의 제2비디오 데이터에 기초하여 제1블록(0)의 에지와 제2블록(1)에 대한 인-루프 필터링을 수행한다. 즉, 상기 인코더 또는 상기 디코더는 블록 경계(block boundary)에 대한 인-루프 필터링을 수행할 수 있다. 여기서 블록 경계는 두 블록들 사이의 경계를 의미할 수 있다.
제2슬라이스(SLICE2) 내의 23번째 블록(22)이 처리된 후, 인코더 또는 디코더는 블록들(14, 21, 및 23)의 비디오 데이터에 기초하여 제2슬라이스(SLICE2) 내의 23번째 처리된 블록(22)의 에지와 제1슬라이스(SLICE1) 내의 이전 블록들(14와 21)에 대한 인-루프 필터링을 수행한다. 즉, 상기 인코더 또는 상기 디코더는 슬라이스 경계에 대한 인-루프 필터링을 수행한다.
제3슬라이스(SLICE3) 내의 41번째 블록(40)이 처리된 후, 인코더 또는 디코더는 33번째 블록(32)의 비디오 데이터에 기초하여 제3슬라이스(SLICE3) 내의 41번째 처리 블록(40)의 에지와 제2슬라이스(SLICE2) 내의 이전 블록(32)에 대한 인-루프 필터링을 수행한다. 즉, 상기 인코더 또는 상기 디코더는 슬라이스 경계에 대한 인-루프 필터링을 수행한다. 즉, 현재 처리된 블록의 인-루프 필터링은 현재 블록에 인접한 왼쪽 처리된(left processed) 블록과 위쪽의 처리된(upper processed) 블록 중에서 적어도 하나를 이용하여 수행될 수 있다.
실시 예들에 따라, H.264 비디오 코딩 표준에 의해 정의된 인-루프 필터(in-loop filter)를 포함하는 디코더는 블록 단위로 인-루프 필터링을 수행할 수 있다.
다른 실시 예들에 따라, HEVC 비디오 코딩 표준에 의해 정의된 인-루프 필터를 포함하는 디코더는 블록 단위로 인-루프 필터링을 수행할 수 있다. 예컨대, 디코더는 현재 디코드된 블록에 인접하는 블록들 사이의 블록 경계에 인-루프 필터링을 수행하거나 SAO(sample adaptive offset)의 비디오 코딩 표준에 따라 현재 디코드된 블록 내의 모든 픽셀에 대한 인-루프 필터링을 수행할 수 있다.
예컨대, H.264 비디오 코딩 표준에 따른 인-루프 필터링은, 움직임 벡터, 예측 모드(prediction mode) 정보, 및/또는 양자화 파라미터(quantization parameter) 등에 기초하여, 수행될 수 있다.
또한, HEVC 비디오 코딩 표준에 따른 인-루프 필터링은, 움직임 벡터, 예측 모드 정보, 양자화 파라미터, 및/또는 SAO(sample adaptive offset) 필터의 파라미터들 등에 기초하여, 수행될 수 있다. 상기 예측 모드 정보는 인트라 예측 모드 (intra-prediction mode) 정보 또는 인터 예측 모드(inter-prediction mode) 정보를 포함할 수 있다.
도 3은 각각이 2개의 슬라이스들을 포함하는 픽처들(pictures)의 시퀀스 (sequence)를 나타내고, 도 4는 2개의 코어들을 이용하여 도 3에 도시된 픽처들의 시퀀스를 처리하는 과정을 개념적으로 나타낸다.
도 1, 도 3, 및 도 4를 참조하면, 컨트롤러(200A)는 2개의 하드웨어 코덱들 (230-1과 230-2)을 포함한다. 제1코어(CORE0)는 제1하드웨어 코덱(230-1)을 의미하고, 제2코어(CORE1)는 제2하드웨어 코덱(230-2)을 의미한다고 가정한다. 도 2를 참조하여 설명된 인코더 또는 디코더는 제1코어(CORE0)와 제2코어(CORE1)에 포함될 수 있다.
도 3을 참조하면, 각 픽처(610, 612, 614, ..., 616)는 두 개씩의 슬라이스들(610-1과 610-2, 612-1과 612-2, 614-1과 614-2, ..., 616-1과 616-2)을 포함할 수 있다. 각 픽처(610, 612, 614, ..., 616)는 제1처리 유닛(610-1, 612-1, 614-1, ..., 616-1)과 제2처리 유닛(610-2, 612-2, 614-2, ..., 616-2)을 포함할 수 있다. 본 명세서에서, 처리 유닛은 처리될 데이터의 유닛을 의미할 수 있다.
예컨대, 각 픽처(610, 612, 614, ..., 616)는 인코드될 프레임, 원래의 픽처, 인코드될 픽처의 로우 비트스트림(raw bitstream), 디코드될 프레임, 인코드된 픽처, 또는 수신 인터페이스(270)로부터 수신된 인코드된 비트스트림(EB), 등을 의미할 수 있다.
실시 예들에 따라, CPU(210A)는, 홀수 번째 픽처가 제1코어(CORE0)로 할당되고 짝수 번째 픽처가 제2코어(CORE1)로 할당될 수 있도록, 수신 인터페이스(270)를 제어할 수 있다.
다른 실시 예들에 따라, CPU(210A)는, 홀수 번째 픽처들이 제1코어(CORE0)로 할당되고 짝수 번째 픽처들이 제2코어(CORE1)로 할당될 수 있도록, 제1코어(CORE0)와 제2코어(CORE1)의 작동을 제어할 수 있다.
도 4를 참조하면, 제1시간(T1) 동안, 제1코어(CORE0)는 제1픽처(610)의 제1슬라이스(610-1)를 처리할 수 있다. 제2픽처(612)의 제1슬라이스(612-1)는, 제1시간(T1) 동안 제1픽처(610)의 제1슬라이스(610-1)의 처리가 제1코어(CORE0)에 의해 완료된 후, 제2시간(T2) 동안 제2코어(CORE1)에 의해 처리될 수 있다.
제2시간(T2) 동안, 제1코어(CORE0)는 제1픽처(610)의 제2슬라이스(610-2)를 처리할 수 있고, 제2코어(CORE1)는 제2픽처(612)의 제1슬라이스(612-1)를 처리할 수 있다. 제2시간(T2) 동안, 제2슬라이스(610-2)의 처리와 제1슬라이스(612-1)의 처리는 병렬로 수행될 수 있다.
본 명세서에서 사용된 "처리 ... 병렬로 수행"은 처리에서 약간의 오버랩이 있음을 의미할 수 있다. 병렬은 제1슬라이스(612-1)의 처리와 제2슬라이스(610-2)의 처리에서 오버랩이 있음을 의미할 수 있다. 즉, 도 4, 도 6, 도 8, 도 11, 및 도 14에서 점선들이 사용되고, 이러한 점선들은 단지 설명의 편의를 위해 제공되고 처리를 위한 시작 시간들(start times) 또는 종료 시간들(end times)이 정확하게 동시에 일어나는 것을 제안하려는 의도는 아니다. 예컨대, 도 4의 점선들은 제1슬라이스 (612-1)와 제2슬라이스(610-2)를 처리하기 위한 시작 시간들 또는 종료 시간들이 정확하게 동시에 일어나는 것을 제안하려는 의도는 아니다. 그러나, 실시 예들에 따라, 시작 시간들은 정확하게 동시에 일어날 수 있고 종료 시간들은 정확하게 동시에 일어날 수 있다.
또한, 제2시간(T2) 동안, 제1코어(CORE0)는 제1픽처(610)의 제1슬라이스 (610-1)의 처리 결과에 기초하여 제1픽처(610)의 제1슬라이스(610-1)와 제2슬라이스(610-2)의 경계에 대해 인-루프 필터링을 블록 단위로 수행할 수 있다. 도 2를 참조하여 설명한 바와 같이, 제1코어(CORE0)는, 현재 블록의 바로 위쪽 처리 블록과 바로 왼쪽 처리 블록 중에서 적어도 하나를 이용하여, 상기 현재 처리 블록에 대한 인-루프 필터링을 수행할 수 있다. 즉, 제2시간(T2) 동안, 제1코어(CORE0)는 제2슬라이스(610-2)의 처리와 제1슬라이스(610-1)와 제2슬라이스(610-2)에 대한 인-루프 필터링을 수행할 수 있으므로, 상기 인-루프 필터링을 위해 사용되는 추가적인 시간은 필요 없다.
제3시간(T3) 동안, 제1코어(CORE0)는 제3픽처(614)의 제1슬라이스(614-1)를 처리할 수 있고, 제2코어(CORE1)는 제2픽처(612)의 제2슬라이스(612-2)를 처리할 수 있다.
제3시간(T3) 동안, 제3픽처(614)의 제1슬라이스(614-1)의 처리와 제2픽처 (612)의 제2슬라이스(612-2)의 처리는 병렬로 수행될 수 있다.
또한, 제3시간(T3) 동안, 제2코어(CORE1)는 제2픽처(612)의 제1슬라이스 (612-1)의 처리 결과에 기초하여 제1슬라이스(612-1)와 제2슬라이스(612-2)의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다. 즉, 제3시간(T3) 동안, 제2코어(CORE1)는 제2슬라이스(612-2)의 처리와 제2픽처(612)의 제1슬라이스(612-1)와 제2슬라이스(612-2)의 에지에 대한 인-루프 필터링을 수행할 수 있으므로, 상기 인-루프 필터링을 위해 사용되는 추가적인 시간은 필요 없다. 도 4에 도시된 바와 같이, 제2코어(CORE1)는 1-슬라이스 지연을 가질 수 있다. 즉, 제1코어(CORE0)가 제1픽처(610)의 제1슬라이스(610-1)에 대한 처리를 완료한 후, 제2코어(CORE1)는 제2픽처(612)의 제1슬라이스(612-1)의 처리를 시작할 수 있다.
도 5는 각각이 2개의 슬라이스 그룹들을 포함하는 픽처들의 시퀀스를 나타내고, 도 6은 2개의 코어들을 이용하여 도 5에 도시된 픽처들의 시퀀스를 처리하는 과정을 개념적으로 나타낸다.
도 1의 컨트롤러(200A)는 2개의 하드웨어 코덱들(230-1과 230-2)을 포함하고, 제1코어(CORE0)는 제1하드웨어 코덱(230-1)을 의미하고, 제2코어(CORE1)는 제2하드웨어 코덱(230-2)을 의미한다. 픽처들의 시퀀스는 예컨대, 픽처들(620, 622, 624, 및 626)을 포함할 수 있다.
제1코어(CORE0)는, 픽처(620)의 처리 복잡도 또는 픽처(620) 내에서 분할된 영역들의 크기에 기초하여, 픽처(620)를 제1처리 유닛과 제2처리 유닛으로 분할할 수 있다. 도 5와 도 6에서, 제1처리 유닛은 2개의 슬라이드들(SLICE1-1과 SLICE1-2)을 포함할 수 있고 제2처리 유닛은 3개의 슬라이스들(SLICE1-3~SLICE1-5)을 포함할 수 있다.
제1처리 유닛은 도 5에서 굵은 선(bold line)의 위쪽에 도시되고, 제2처리 유닛은 도 5에서 굵은 선의 아래 쪽에 도시된다. 도 5에서 제1처리 유닛은 제1픽처(620)에 포함된 2개의 슬라이드들(SLICE1-1과 SLICE1-2)을 포함할 수 있다. 그러나, 이것은 단지 실시 예일 뿐이고, 제1처리 유닛은, 분할된 영역들의 처리 복잡도 또는 크기(size)에 종속적으로, 2개보다 작은 슬라이스 또는 2개보다 많은 슬라이스들을 포함할 수 있다.
제2코어(CORE1)는, 픽처(622)의 처리 복잡도에 기초하여, 픽처(622)를 제1처리 유닛과 제2처리 유닛으로 분할할 수 있다. 도 5와 도 6에서, 제1처리 유닛은 2개의 슬라이드들(SLICE2-1과 SLICE2-2)을 포함할 수 있고 제2처리 유닛은 3개의 슬라이스들(SLICE2-3~SLICE2-5)을 포함할 수 있다.
예컨대, 픽처들(620, 622, 624, 및 626)이 슬라이스들 또는 타일들로 나누어지지 않거나, 또는 나누어진 영역들(예컨대, 슬라이스들 또는 타일들)이 서로 다른 처리 복잡도를 가질 때, 처리 복잡도에 기초하여 코어들(CORE0과 CORE1)의 병렬 처리를 위해 나누어진 영역들을 정의할 수 있는 이점이 있다. 여기서, 제1코어 (CORE0)와 제2코어(CORE1)는 나누어질 수 있고 픽처들(620, 622, 624, 및 626)의 분할된 영역들을 병렬로 처리할 수 있다. 처리 복잡도(processing unit)는 디코딩 시간, 인코딩 시간, 및/또는 픽처의 블록들에 관하여 슬라이스들의 크기에 의해 정의될 수 있다.
도 5에서 m이 4와 같거나 큰 짝수일 때, 제1코어(CORE0)는, 픽처(624)의 처리 복잡도에 기초하여, 픽처(624)를 제1처리 유닛과 제2처리 유닛으로 분할할 수 있다. 도 5와 도 6에서, 제1처리 유닛은 2개의 슬라이드들(SLICE3-1과 SLICE3-2)을 포함할 수 있고 제2처리 유닛은 3개의 슬라이스들(SLICE3-3~SLICE3-5)을 포함할 수 있다.
제2코어(CORE1)는, 픽처(626)의 처리 복잡도에 기초하여, 픽처(626)를 제1처리 유닛과 제2처리 유닛으로 분할할 수 있다. 도 5와 도 6에서, 제1처리 유닛은 2개의 슬라이드들(SLICEm-1과 SLICEm-2)을 포함할 수 있고 제2처리 유닛은 3개의 슬라이스들(SLICEm-3~SLICEm-5)을 포함할 수 있다.
도 5와 도 6에서는 설명의 편의를 위해, 2개의 코어들(CORE0과 CORE1)을 위해 각 픽처(620, 622, 624, ..., 626)는 2개의 처리 유닛들로 분할되는 실시 예가 도시되어 있으나, 코어들의 개수에 따라 분할되는 처리 유닛들의 개수가 결정될 수 있다. 여기서, 복잡도(complexity)는 처리 시간에 관련될 수 있다.
예컨대, 제1코어(CORE0)에 의해 3개의 슬라이스들(SLICE1-3~SLICE1-5)이 처리되는 시간과 제2코어(CORE1)에 의해 2개의 슬라이드들(SLICE2-1과 SLICE2-2)이 처리되는 시간은 실질적으로 동일하다. 여기서 "실질적으로 동일하다" 함은 동일, 거의 동일, 또는 오차 범위 내에서 동일함을 의미할 수 있다.
하나의 픽처에 포함된 모든 슬라이스들은 하나의 코어에서 처리된다. 여기서 처리는 디코딩, 또는 디코딩과 인-루프 필터링을 의미할 수 있다.
도 5에 도시된 바와 같이, 각 픽처(620, 622, 624, ..., 626)는 5개씩의 슬라이스들(SLICE1-1~SLICE1-5, SLICE2-1~SLICE2-5, SLICE3-1~SLICE3-5, ..., SLICEm-1~SLICEm-5)를 포함할 수 있다. 예컨대, 각 픽처(620, 622, 624, ..., 626)는 인코드될 프레임, 원래의 픽처, 인코드될 픽처의 로우 비트스트림, 디코드될 프레임, 인코드된 픽처, 수신 인터페이스(270)를 통해 수신된 인코드된 비트스트림 (EB), 등을 의미할 수 있다.
제1시간(T11) 동안, 제1코어(CORE0)는 제1픽처(620)의 제1슬라이스(SLICE1-1)와 제2슬라이스(SLICE1-2)를 처리할 수 있다. 제1시간(T11) 동안, 제1코어 (CORE0)는, 제1픽처(620)의 제1슬라이스(SLICE1)에 대한 처리 결과에 기초하여, 슬라이스들(SLICE1과 SLICE2) 사이의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다.
제2시간(T12) 동안, 제1코어(CORE0)는 제1픽처(620)의 제3슬라이스(SLICE1-3)부터 제5슬라이스(SLICE1-3~SLICE1-5)를 처리하고, 제2코어(CORE1)는 제2픽처 (622)의 제1슬라이스(SLICE2-1)와 제2슬라이스(SLICE2-2)를 처리할 수 있다. 제2시간(T12) 동안, 제1픽처(620)의 3개의 슬라이스들(SLICE1-3~SLICE1-5)에 대한 처리와 제2픽처(622)의 2개의 슬라이스들(SLICE2-1과 SLICE2-2)에 대한 처리는 병렬로 수행될 수 있다.
또한, 제2시간(T12) 동안, 제1코어(CORE0)는 제1픽처(620)의 제2슬라이스 (SLICE1-2)에 대한 처리 결과에 기초하여 슬라이스들(SLICE1-2와 SLICE1-3) 사이의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다. 또한, 제2시간(T12) 동안, 제1코어(CORE0)는 제1픽처(620)의 제3슬라이스(SLICE1-3)의 처리 결과에 기초하여 슬라이스들(SLICE1-3와 SLICE1-4) 사이의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다. 제2시간(T12) 동안, 제1코어(CORE0)는 제1픽처(620)의 제4슬라이스(SLICE1-4)의 처리 결과에 기초하여 슬라이스들(SLICE1-4와 SLICE1-5) 사이의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다.
제2시간(T12) 동안, 제2코어(CORE1)는 제2픽처(622)의 제1슬라이스(SLICE2-1)의 처리 결과에 기초하여 슬라이스들(SLICE2-1과 SLICE2-2) 사이의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다.
즉, 제2시간(T12) 동안, 제1코어(CORE0)는 3개의 슬라이스들(SLICE1-3~SLICE1-5)에 대한 인-루프 필터링을 수행하고, 제2코어(CORE1)는 2개의 슬라이스들(SLICE2-1과 SLICE2-2)에 대한 인-루프 필터링을 수행하므로, 인-루프 필터링을 위해 사용되는 추가 시간은 필요하지 않고, 제1코어(CORE0)와 제2코어(CORE1)에 분산된 슬라이스들을 모으기 위한 추가 시간도 필요 없다.
제3시간(T13) 동안, 제1코어(CORE0)는 제3픽처(624)의 제1슬라이스(SLICE3-1)와 제2슬라이스(SLICE3-2)를 처리하고, 제2코어(CORE1)는 제2픽처(622)의 제3슬라이스(SLICE2-3)부터 제5슬라이스(SLICE2-5)를 처리한다. 제3시간(T13) 동안, 제3픽처(624)의 2개의 슬라이스들(SLICE3-1과 SLICE3-2)에 대한 처리와 제2픽처(622)의 3개의 슬라이스들(SLICE2-3~SLICE2-5)에 대한 처리는 병렬로 수행된다.
또한, 제3시간(T13) 동안, 제1코어(CORE0)는 제3픽처(620)의 제1슬라이스 (SLICE3-1)의 처리 결과에 기초하여 슬라이스들(SLICE3-1과 SLICE3-2) 사이의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다. 또한, 제3시간(T13) 동안, 제2코어(CORE1)는 제2픽처(622)의 제2슬라이스(SLICE2-2)의 처리 결과에 기초하여 슬라이스들(SLICE2-2와 SLICE2-3) 사이의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다. 제3시간(T13) 동안, 제2코어(CORE1)는 제2픽처(622)의 제3슬라이스(SLICE2-3)의 처리 결과에 기초하여 슬라이스들(SLICE2-3과 SLICE2-4) 사이의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다.
제3시간(T13) 동안, 제2코어(CORE1)는 제2픽처(622)의 제4슬라이스(SLICE2-4)의 처리 결과에 기초하여 슬라이스들(SLICE2-4와 SLICE2-5) 사이의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다.
하나의 슬라이스 그룹 지연이 제2코어(CORE1)에 적용된다. 여기서, 슬라이스 그룹은 슬라이스들(SLICE1-1과 SLICE1-2)을 포함한다.
즉, 제3시간(T13) 동안, 제1코어(CORE0)는 2개의 슬라이스들(SLICE3-1과 SLICE3-2)에 대한 인-루프 필터링을 수행하고, 제2코어(CORE1)는 3개의 슬라이스들 (SLICE2-3~SLICE2-5)에 대한 인-루프 필터링을 수행하므로, 인-루프 필터링을 위해 사용되는 추가 시간은 필요하지 않고, 제1코어(CORE0)와 제2코어(CORE1)에 분산된 슬라이스들을 모으기 위한 추가 시간도 필요 없다.
도 7은 각각이 3개의 슬라이스들을 포함하는 픽처들의 시퀀스를 나타내고, 도 8은 3개의 코어들을 이용하여 도 7에 도시된 픽처들의 시퀀스를 처리하는 과정을 개념적으로 나타낸다.
도 1의 컨트롤러(200A)는 3개의 하드웨어 코덱들(230-1, 230-2, 및 230-3)을 포함하고, 제1코어(CORE0)는 제1하드웨어 코덱(230-1)에 대응되고, 제2코어(CORE1)는 제2하드웨어 코덱(230-2)에 대응되고, 제3코어(CORE3)는 제3하드웨어 코덱(230-3)에 대응된다. 도 2에 도시된 인코더 및/또는 디코더는 코어(CORE0, CORE1, 및 CORE2)에 포함될 수 있다.
도 7에 도시된 바와 같이, 각 픽처(630, 632, 634, 636, 및 638)는 3개씩의 슬라이스들을 포함할 수 있다. 각 픽처(630, 632, 634, 636, 및 638)는 제1처리 유닛, 제2처리 유닛, 및 제3처리 유닛을 포함할 수 있다. 즉, 제1처리 유닛, 제2처리 유닛, 및 제3처리 유닛 각각은 3개의 슬라이스들 각각에 대응될 수 있다.
각 픽처(630, 632, 634, 636, 및 638)는 인코드될 프레임, 원래의 픽처, 인코드될 픽처의 로우 비트스트림(raw bitstream), 디코드될 프레임, 인코드된 픽처, 또는 수신 인터페이스(270)를 통해 수신된 인코드된 비트스트림(EB)일 수 있다.
도 8을 참조하면, 제1시간(T21) 동안, 제1코어(CORE0)는 제1픽처(630)의 제1슬라이스(SLICE1-1)를 처리할 수 있다.
제2시간(T22) 동안, 제1코어(CORE0)는 제1픽처(630)의 제2슬라이스(SLICE1-2)를 처리할 수 있고, 제2코어(CORE1)는 제2픽처(632)의 제1슬라이스(SLICE2-1)를 처리할 수 있다. 제2시간(T22) 동안, 제1픽처(630)의 제2슬라이스(SLICE1-2)의 처리와 제2픽처(632)의 제1슬라이스(SLICE2-1)의 처리는 병렬로 수행될 수 있다.
제2시간(T2) 동안, 제1코어(CORE0)는 제1픽처(630)의 제1슬라이스(SLICE1-1)에 대한 처리 결과에 기초하여 슬라이스들(SLICE1-1과 SLICE1-2)의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다.
병렬 처리를 위해, 하나의 슬라이스 지연이 제2코어(CORE1)에 할당(또는 적용)되고, 2개의 슬라이스 지연이 제3코어(CORE2)에 할당(또는 적용)될 수 있다.
제3시간(T23) 동안, 제1코어(CORE0)는 제1픽처(630)의 제3슬라이스(SLICE1-3)를 처리할 수 있고, 제2코어(CORE1)는 제2픽처(632)의 제2슬라이스(SLICE2-2)를 처리할 수 있고, 제3코어(CORE2)는 제3픽처(634)의 제1슬라이스(SLICE3-1)를 처리할 수 있다.
제3시간(T23) 동안, 제1픽처(630)의 제3슬라이스(SLICE1-3)의 처리, 제2픽처 (632)의 제2슬라이스(SLICE2-2)의 처리, 및 제3픽처(634)의 제1슬라이스(SLICE3-1)의 처리는 병렬로 수행될 수 있다.
제3시간(T23) 동안, 제1코어(CORE0)는 제1픽처(630)의 제2슬라이스(SLICE1-2)의 처리 결과에 기초하여 슬라이스들(SLICE1-2와 SLICE1-3)의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다. 또한, 제2코어(CORE1)는 제2픽처(632)의 제1슬라이스(SLICE2-1)의 처리 결과에 기초하여 슬라이스들(SLICE2-1과 SLICE2-2)에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다.
제4시간(T24) 동안, 제1코어(CORE0)는 제4픽처(636)의 제1슬라이스(SLICE4-1)를 처리할 수 있고, 제2코어(CORE1)는 제2픽처(632)의 제3슬라이스(SLICE2-3)를 처리할 수 있고, 제3코어(CORE2)는 제3픽처(634)의 제2슬라이스(SLICE3-2)를 처리할 수 있다. 즉, 제1코어(CORE0)가 제1픽처(630)의 슬라이스들의 처리를 종료하면, 제1코어(CORE0)는 픽처들의 시퀀스의 다음 픽처, 예컨대 제4픽처(636)를 처리할 수 있다.
제4시간(T24) 동안, 제1슬라이스(SLICE4-1)의 처리, 제3슬라이스(SLICE2-3)의 처리, 및 제2슬라이스(SLICE3-2)의 처리는 병렬로 수행될 수 있다.
제4시간(T24) 동안, 제2코어(CORE1)는 슬라이스(SLICE2-2)의 처리 결과에 기초하여 슬라이스들(SLICE2-2와 SLICE2-3)의 경계에 대해 인-루프 필터링을 블록 단위로 수행할 수 있다. 제2코어(CORE1)는 슬라이스(SLICE3-1)의 처리 결과에 기초하여 슬라이스들(SLICE3-1과 SLICE3-2)의 경계에 대해 인-루프 필터링을 블록 단위로 수행할 수 있다.
제5시간(T25) 동안, 각 코어(CORE0, CORE1, 및 CORE2)의 작동은 각 시간 (T23과 T24) 동안의 각 코어(CORE0, CORE1, 및 CORE2)의 작동과 유사하게 각 슬라이스를 처리할 수 있다.
도 9는 본 발명의 실시 예에 따른 모션 벡터 서치를 설명하기 위한 개념도이다. 도 3, 도 4, 및 도 9를 참조하면, 현재 처리 슬라이스가 제3픽처(614)의 제1슬라이스(614-1)일 때, 가장 좋은 모션 벡터를 서치(또는 참조)하기 위해, 제1코어 (CORE1)는 처리된 슬라이스들(610-1, 610-2, 및 612-1)을 서치할 수 있다.
예컨대, 슬라이스들(612-2와 614-1) 각각이 서로 다른 코어들(CORE0과 CORE1) 각각에서 병렬로 처리되므로, 제1코어(CORE1)는 현재 처리되고 있는 제2픽처(612)의 제2슬라이스(612-2)를 참조할 수 없다.
슬라이스들 사이의 종속성을 감소시키기 위해, 제2픽쳐(614)에 대한 처리 시에, 참조 픽쳐와 상기 참조 픽쳐 내의 매칭 블럭의 좌표를 병렬로 처리하면, 종속성이 발생하지 않도록 처리될 수 있다. 예컨대, 제1슬라이스(614-1)를 처리할 때, 병렬 처리를 감안하여 종속성이 발생하는 슬라이스(612-2) 대신에 종속성이 발생하는 않는 슬라이스들(610-1, 610-2 및 612-1) 중에서 어느 하나를 참조하도록 제1슬라이스(614-1) 내의 매크로블록들의 모션 벡터들이 생성될 수 있다. 따라서, 병렬 처리시 종속성은 감소할 수 있다.
데이터 처리 시스템(100A)은 슬라이스들이 인코드될 때 병렬로 처리되는 슬라이스들 사이의 종속성을 감소시키기 위해 모션 제한 슬라이스 그룹(motion constraint slice group)을 생성하여 참조할 수 있다. 상기 모션 제한 슬라이스 그룹은 현재 처리되는 슬라이스의 이전 픽쳐들 내에서 참조 영역을 제한하는 정보 또는 기존에 처리된 픽쳐 내에서 참조가능한 정보를 포함할 수 있다. 상기 모션 제한 슬라이스 그룹은 데이터 처리 시스템(100A) 내의 메모리(301, 303, 또는 305) 또는 각 코어(230-1 내지 230-N) 내부의 메모리에 저장될 수 있다.
도 10은 본 발명의 일 실시 예에 따른 각각이 2개의 타일들을 포함하는 픽처들의 시퀀스를 나타내고, 도 11은, 2개의 코어들을 이용하여, 도 10에 도시된 픽처들의 시퀀스를 처리하는 과정을 개념적으로 나타낸다.
도 10에 도시된 각 픽처(640, 642, 644, 및 646)에 표시된 화살표는 각 픽처(640, 642, 644, 및 646) 내에서 타일들의 처리 방향 또는 처리 순서를 나타낸다.
도 1의 컨트롤러(200A)는 2개의 하드웨어 코덱들(230-1과 230-2)을 포함할 수 있다. 제1코어(CORE0)는 제1하드웨어 코덱(230-1)일 수 있고, 제2코어(CORE1)는 제2하드웨어 코덱(230-2)일 수 있다. 실시 예들에 따라, 하나의 픽처에 포함된 모든 타일들은 하나의 코어에서 처리된다.
도 10에 도시된 바와 같이, 각 픽처(640, 642, 644, 및 646)는 두 개씩의 타일들(TILE1-1과 TILE1-2, TILE2-1과 TILE2-2, TILE3-1과 TILE3-2, TILE4-1과 TILE4-2, ...)을 포함할 수 있다. 각 타일은 하나 또는 그 이상의 블록들을 포함할 수 있다.
각 픽처(640, 642, 644, 및 646)는 제1처리 유닛(TILE1-1, TILE2-1, TILE3-1, 및 TILE4-1)과 제2처리 유닛(TILE1-2, TILE2-2, TILE3-2, 및 TILE4-2)을 포함할 수 있다. 픽처(640)의 제1처리 유닛은 타일(TILE1-1)을 포함하고, 픽처(640)의 제처리 유닛은 타일(TILE1-2)을 포함한다. 여기서, 각 픽처(640, 642, 644, 및 646)는 인코드될 프레임, 원래의 픽처, 인코드될 픽처의 로우 비트스트림(raw bitstream), 디코드될 프레임, 인코드된 픽처, 또는 인코드된 비트스트림(EB), 등을 의미할 수 있다.
제1코어(CORE0)와 제2코어(CORE1)의 작동들은 도 1, 도 2, 도 10, 및 도 11을 참조하여 설명된다.
제1시간(T31) 동안, 제1코어(CORE0)는 제1픽처(640)의 제1타일(TILE1-1)를 처리한다. 병렬 처리를 위해, 하나의 타일 지연은 제2코어(CORE1)에 할당될 수 있다.
제2시간(T32) 동안, 제1코어(CORE0)는 제1픽처(640)의 제2타일(TILE1-2)를 처리하고, 제2코어(CORE1)는 제2픽처(642)의 제1타일(TILE2-1)를 처리한다. 제2시간 (T32) 동안, 제1픽처(640)의 제2타일(TILE1-2)의 처리와 제2픽처(642)의 제1타일 (TILE2-1)의 처리는 병렬로 수행될 수 있다.
앞에서 설명한 바와 같이, "병렬"은 제1타일(TILE2-1)의 처리와 제2타일 (TILE1-2)의 처리에서 오버랩이 있음을 의미할 수 있다. 즉, 도 4, 도 6, 도 8, 도 I11, 및 도 14에서 점선들이 사용되고, 이러한 점선들은 단지 설명의 편의를 위해 제공되고 처리를 위한 시작 시간들(start times) 또는 종료 시간들(end times)이 정확하게 동시에 일어나는 것을 제안하려는 의도는 아니다.
예컨대, 도 11의 점선들은 제1타일(TILE2-1)와 제2타일(TILE1-2)를 처리하기 위한 시작 시간들 또는 종료 시간들이 정확하게 동시에 일어나는 것을 제안하려는 의도는 아니다. 그러나, 실시 예들에 따라, 시작 시간들은 정확하게 동시에 일어날 수 있고 종료 시간들은 정확하게 동시에 일어날 수 있다.
또한, 제2시간(T32) 동안, 제1코어(CORE0)는 제1픽처(640)의 제1타일(TILE1-1)의 처리 결과에 기초하여 타일들(TILE1-1과 TILE1-2)의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다. 즉, 제2시간(T32) 동안, 제1코어(CORE0)는 제2타일(TILE1-2)의 처리와 타일들(TILE1-1과 TILE1-2)에 대한 인-루프 필터링을 수행할 수 있으므로, 상기 인-루프 필터링을 위한 사용되는 추가 시간은 필요하지 않다.
제3시간(T33) 동안, 제1코어(CORE0)는 제3픽처(644)의 제1타일(TILE3-1)을 처리할 수 있고, 제2코어(CORE1)는 제2픽처(642)의 제2타일(TILE2-2)을 처리할 수 있다. 제3시간(T33) 동안, 제1타일(TILE3-1)의 처리와 제2타일(TILE2-2)의 처리는 병렬로 수행될 수 있다.
제3시간(T33) 동안, 제2코어(CORE1)는 제2픽처(642)의 제1타일(TILE2-1)의 처리 결과에 기초하여 타일들(TILE2-1과 TILE2-2)의 경계에 대해 인-루프 필터링을 블록 단위로 수행할 수 있다. 즉, 제3시간(T33) 동안, 제2코어(CORE1)는 제2타일 (TILE2-2)의 처리와 타일들(TILE2-1과 TILE2-2)에 대한 인-루프 필터링을 수행할 수 있으므로, 상기 인-루프 필터링을 위한 사용되는 추가 시간은 필요하지 않다.
제4시간(T34) 동안, 각 코어(CORE0과 CORE1)는 제3시간(T33) 동안의 작동과 유사하게 각 타일을 계속해서 처리할 수 있다.
도 12는 본 발명의 다른 실시 예에 따른 각각이 2개의 타일들을 포함하는 픽처들의 시퀀스를 나타낸다. 도 12에 도시된 각 픽처(650, 652, 654, 및 656)에 표시된 화살표는 각 픽처(650, 652, 654, 및 656)에 포함된 타일들의 처리 방향 또는 처리 순서를 나타낸다.
도 1의 컨트롤러(200A)는 2개의 하드웨어 코덱들(230-1과 230-2)을 포함할 수 있다. 제1코어(CORE0)는 제1하드웨어 코덱(230-1)일 수 있고, 제2코어(CORE1)는 제2하드웨어 코덱(230-2)일 수 있다. 제1코어(CORE0)와 제2코어(CORE1)의 작동들은 도 1, 도 2, 도 11, 및 도 12를 참조하여 설명된다.
도 12에 도시된 바와 같이, 각 픽처(650, 652, 654, 및 656)는 두 개씩의 타일들(TILE1-1과 TILE1-2, TILE2-1과 TILE2-2, TILE3-1과 TILE3-2, 및 TILE4-1과 TILE4-2)을 포함할 수 있다. 각 타일은 하나 또는 그 이상의 블록들을 포함할 수 있다.
각 픽처(650, 652, 654, 및 656)는 제1처리 유닛(TILE1-1, TILE2-1, TILE3-1, 및 TILE4-1)과 제2처리 유닛(TILE1-2, TILE2-2, TILE3-2, 및 TILE4-2)을 포함한다. 예컨대, 각 픽처(650, 652, 654, 및 656)는 인코드될 프레임, 원래의 픽처, 인코드될 픽처의 로우 비트스트림(raw bitstream), 디코드될 프레임, 인코드된 픽처, 또는 인코드된 비트스트림(EB), 등을 의미할 수 있다.
제1시간(T31) 동안, 제1코어(CORE0)는 제1픽처(650)의 제1타일(TILE1-1)를 처리한다. 병렬 처리를 위해, 하나의 타일 지연은 제2코어(CORE1)에 할당될 수 있다.
제2시간(T32) 동안, 제1코어(CORE0)는 제1픽처(650)의 제2타일(TILE1-2)를 처리하고, 제2코어(CORE1)는 제2픽처(652)의 제1타일(TILE2-1)를 처리한다. 제2시간(T32) 동안, 제1픽처(650)의 제2타일(TILE1-2)의 처리와 제2픽처(652)의 제1타일 (TILE2-1)의 처리는 병렬로 수행될 수 있다.
제2시간(T32) 동안, 제1코어(CORE0)는 제1픽처(650)의 제1타일(TILE1-1)의 처리 결과에 기초하여 타일들(TILE1-1과 TILE1-2)의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다. 즉, 제2시간(T32) 동안, 제1코어(CORE0)는 제2타일 (TILE1-2)의 처리와 타일들(TILE1-1과 TILE1-2)에 대한 인-루프 필터링을 수행할 수 있으므로, 상기 인-루프 필터링을 위한 사용되는 추가 시간은 필요하지 않다.
제3시간(T33) 동안, 제1코어(CORE0)는 제3픽처(654)의 제1타일(TILE3-1)을 처리할 수 있고, 제2코어(CORE1)는 제2픽처(652)의 제2타일(TILE2-2)을 처리할 수 있다. 제3시간(T33) 동안, 제1타일(TILE3-1)의 처리와 제2타일(TILE2-2)의 처리는 병렬로 수행될 수 있다.
제3시간(T33) 동안, 제2코어(CORE1)는 제2픽처(652)의 제1타일(TILE2-1)의 처리 결과에 기초하여 타일들(TILE2-1과 TILE2-2)의 경계에 대해 인-루프 필터링을 블록 단위로 수행할 수 있다. 즉, 제3시간(T33) 동안, 제2코어(CORE1)는 제2타일 (TILE2-2)의 처리와 타일들(TILE2-1과 TILE2-2)에 대한 인-루프 필터링을 수행할 수 있으므로, 상기 인-루프 필터링을 위한 사용되는 추가 시간은 필요하지 않다.
제4시간(T34) 동안, 각 코어(CORE0과 CORE1)는 제3시간(T33) 동안의 작동과 유사하게 각 타일을 계속해서 처리할 수 있다.
도 13은 본 발명의 실시 예에 따른 각각이 4개의 타일들을 포함하는 픽처들의 시퀀스를 나타내고, 도 14는, 2개의 코어들을 이용하여, 도 13에 도시된 픽처들의 시퀀스를 처리하는 과정을 개념적으로 나타낸다. 제1코어(CORE0)와 제2코어 (CORE1)의 작동들은 도 1, 도 2, 도 13, 및 도 14를 참조하여 설명된다.
도 13에 도시된 각 픽처(660, 662, 및 664)에 표시된 화살표는 각 픽처(660, 662, 및 664)에 포함된 타일들의 처리 방향 또는 처리 순서를 나타낸다.
도 1의 컨트롤러(200A)는 2개의 하드웨어 코덱들(230-1과 230-2)을 포함하고, 제1코어(CORE0)는 제1하드웨어 코덱(230-1)일 수 있고, 제2코어(CORE1)는 제2하드웨어 코덱(230-2)일 수 있다.
도 13에 도시된 바와 같이, 각 픽처(660, 662, 및 664)는 4개씩의 타일들 (TILE1-1~TILE1-4, TILE2-1~TILE2-4, 및 TILE3-1~TILE3-4)를 포함한다. 타일들 (TILE1-1~TILE1-4, TILE2-1~TILE2-4, 및 TILE3-1~TILE3-4) 각각은 하나 또는 그 이상의 블록들을 포함할 수 있다.
각 픽처(660, 662, 및 664)는 2개씩의 타일들(TILE1-1과 TILE1-2, TILE2-1과 TILE2-2, 및 TILE3-1과 TILE3-2)을 포함하는 제1처리 유닛과 2개씩의 타일들 (TILE1-3과 TILE1-4, TILE2-3과 TILE2-4, 및 TILE3-3과 TILE3-4)을 포함하는 제2처리 유닛을 포함할 수 있다. 여기서, 각 픽처(660, 662, 및 664)는 인코드될 프레임, 원래의 픽처, 인코드될 픽처의 로우 비트스트림(raw bitstream), 디코드될 프레임, 인코드된 픽처, 또는 인코드된 비트스트림(EB), 등일 수 있다.
제1시간(T51) 동안, 제1코어(CORE0)는 제1픽처(660)의 제1타일(TILE1-1)와 제2타일(TILE1-2)를 처리할 수 있다. 제1시간(T11) 동안, 제1코어(CORE0)는, 제1픽처(660)의 제1타일(TILE1-1)의 처리 결과에 기초하여, 타일들(TILE1-1과 TILE1-2) 사이의 경계에 대한 인-루프 필터링을 블록 단위로 수행한다. 병렬 처리를 위해, 2개의 타일 지연은 제2코어(CORE1)에 적용될 수 있다.
제2시간(T52) 동안, 제1코어(CORE0)는 제1픽처(660)의 제3타일(TILE1-3)과 제5타일(TILE1-4)를 처리할 수 있다. 제2코어(CORE1)는 제2픽처(662)의 제1타일 (TILE2-1)과 제2타일(TILE2-2)를 처리할 수 있다. 즉, 제2시간(T52) 동안, 제1픽처 (660)의 2개의 타일들(TILE1-3과 TILE1-4)에 대한 처리와 제2픽처(662)의 2개의 타일(TILE2-1과 TILE2-2)에 대한 처리는 병렬로 수행될 수 있다.
앞에서 설명한 바와 같이, "병렬"은 타일들의 처리에서 오버랩이 있음을 의미할 수 있다. 즉, 도 4, 도 6, 도 8, 도 I11, 및 도 14에서 점선들이 사용되고, 이러한 점선들은 단지 설명의 편의를 위해 제공되고 처리를 위한 시작 시간들 또는 종료 시간들이 정확하게 동시에 일어나는 것을 제안하려는 의도는 아니다. 실시 예들에 따라, 시작 시간들은 정확하게 동시에 일어날 수 있고 종료 시간들은 정확하게 동시에 일어날 수 있다.
또한, 제2시간(T52) 동안, 제1코어(CORE0)는 제1픽처(660)의 제1타일(TILE1-1)의 처리 결과에 기초하여 타일들(TILE1-1과 TILE1-3) 사이의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다.
제2시간(T52) 동안, 제1코어(CORE0)는 제1픽처(660)의 제2타일(TILE1-2)의 처리 결과에 기초하여 타일들(TILE1-2와 TILE1-4) 사이의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다.
제2시간(T52) 동안, 제1코어(CORE0)는 제1픽처(660)의 제3타일(TILE1-3)의 처리 결과에 기초하여 타일들(TILE1-3와 TILE1-4) 사이의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다.
제2시간(T52) 동안, 제2코어(CORE1)는 제2픽처(662)의 제1타일(TILE2-1)의 처리 결과에 기초하여 타일들(TILE2-1과 TILE2-1) 사이의 경계에 대한 인-루프 필터링을 블록 단위로 수행할 수 있다.
즉, 제2시간(T52) 동안, 처리된 타일들 사이의 경계에 대해 인-루프 필터링이 수행되므로, 상기 인-루프 필터링을 위해 필요한 추가 시간은 필요 없다.
제3시간(T53) 동안, 각 코어(CORE0과 CORE1)는 제2시간(T52) 동안 각 코어 (CORE0과 CORE1)의 작동과 유사하게 각 타일을 처리할 수 있다.
도 15는 도 1에 도시된 하드웨어 코덱의 블록도이다. 도 1과 도 15를 참조하면, 하드웨어 코덱(230-1)은 선택 회로(701), 인코더(700), 디코더(800), 및 메모리(MEM1)를 포함한다.
선택 회로(701)는, 제1레벨(예컨대, 로우 레벨)을 갖는 선택 신호(SEL)에 응답하여, 이미지 데이터(또는 비디오 데이터; INV)를 인코더(700)로 출력할 수 있다. 선택 회로(701)는, 제2레벨(예컨대, 하이 레벨)을 갖는 선택 신호(SEL)에 응답하여, 인코드된 비트스트림(EBS)을 디코더(800)로 출력할 수 있다.
예컨대, 선택 신호(SEL)는 CPU(210A)로부터 출력될 수 있다. 이미지 데이터(또는 비디오 데이터; INV)는 카메라 인터페이스(250)를 통해 입력될 수 있고, 인코드된 비트스트림(EBS)은 수신 인터페이스(270) 또는 메모리 인터페이스(240)를 통해 입력될 수 있다.
인코더(700)는 선택 회로(701)로부터 출력된 이미지 데이터(또는 비디오 데이터; INV)를 인코드하고, 인코드된 비트스트림으로서 인코드된 이미지 데이터(또는 인코드된 비디오 데이터)를 디코더(800)로 출력할 수 있다.
디코더(800)는 선택 회로(701)로부터 출력된 인코드된 비트스트림(EBS) 또는 디코더(800)로부터 출력된 인코드된 비트스트림을 디코드하고, 재구성된 이미지 데이터 (또는 재구성된 비디오 데이터; RV)를 생성할 수 있다. 상기 재구성된 이미지 데이터(또는 재구성된 비디오 데이터; RV)는 디스플레이 인터페이스(260)를 통해 디스플레이(400)로 전송될 수 있다.
실시 예들에 따라, 인코더(700) 또는 디코더(800)는 재구성된 이미지 데이터(또는 재구성된 비디오 데이터; RV)를 메모리(MEM1)에 저장할 수 있다. 인코더 (700) 또는 디코더(800)는 메모리(MEM1)에 저장된 재구성된 이미지 데이터 또는 재구성된 비디오 데이터에 대한 인-루프 필터링을 수행할 수 있다.
실시 예들에 따라, 인코더(700)와 디코더(800) 각각은 H.264 비디오 코딩 표준에 의해 정의된 인-루프 필터(in-loop filter)를 포함할 수 있다. 다른 실시 예들에 따라, 인코더(700)와 디코더(800) 각각은 HEVC 비디오 코딩 표준에 의해 정의된 인-루프 필터를 포함할 수 있다.
도 16은 도 15에 도시된 인코더의 블록도이다. 도 15와 도 16을 참조하면, 인코더(700)는 예측기(predictor; 710), 감산기(720), 변환기(730), 양자화기 (740), 엔트로피 코더(750), 역양자화기(760), 역 변환기(770), 가산기(780), 및 인-루프 필터(790)를 포함할 수 있다. 예측기(710)는 움직임 추정기(motion estimator; 712)와 움직임 보상기(motion compensator; 714)를 포함할 수 있다.
예측기(710)는 현재 블록을 예측하고, 예측 블록을 생성하고, 생성된 예측 블록을 출력할 수 있다. 특히, 예측기(710)는 현재 블록의 픽셀들 각각의 픽셀 값을 예측하고, 예측된 픽셀 값들을 포함하는 예측된 블록을 생성할 수 있다. 인터 프리딕션(inter prediction)이 수행될 때, 예측기(710)는 움직임 추정기(712)와 움직임 보상기(714)를 포함할 수 있다. 움직임 추정기(712)는 움직임 벡터 추정기로 불릴 수 있다.
움직임 추정기(712) 또는 움직임 벡터 추정기(712)는, 현재 블록에 대한 블록 모드(또는, 미리 설정된 블록 모드)에 상응하는 블록 단위로, 적어도 하나의 기준 픽처를 참조하여 현재 블록의 움직임 벡터를 추정하고, 추정의 결과에 따라 현재 움직임 벡터를 결정할 수 있다. 상기 블록 단위는 16x16 블록, 16x8 블록, 8x16 블록, 8x8 블록, 8x4 블록, 4x8 블록, 또는 4x4 블록일 수 있다.
움직임 보상기(714)는, 움직임 벡터 추정기(712)로부터 출력된 현재 블록의 움직임 예측 벡터를 이용하여, 현재 블록에 대한 예측 블록을 생성하고, 상기 예측 블록을 출력할 수 있다. 즉, 움직임 보상기(714)는 기준 픽처에서 현재 블록에 의해 지시된 블록을 예측 블록으로서 출력할 수 있다.
감산기(720)는 이미지 데이터(INV)의 현재 블록으로부터 예측 블록을 감산하고, 잔여 블록(residual block)을 생성한다. 감산기(720)는 상기 현재 블록의 픽셀들 각각이 픽셀 값과 움직임 벡터 추정기(712)로부터 출력된 예측 블록의 픽셀들 각각의 예측된 값의 차이를 계산하고, 잔여 신호들을 갖는 잔여 블록을 생성한다.
변환기(730)는 상기 잔여 블록의 상기 잔여 신호들을 주파수 영역으로 변환하고, 양자화기(740)는 변환기(730)의 출력 신호를 양자화하고 양자화된 잔여 블록을 출력한다. 변환기(730)는 이산 코사인 변환(discrete cosine transform(DCT))을 이용하여 잔여 신호들을 주파수 영역으로 변환할 수 있다. 주파수 영역으로 변환된 잔여 신호들은 변환 계수가 될 수 있다.
엔트로피 코더(750)는 양자화기(740)로부터 출력된 양자화된 잔여 블록을 인코드하고 인코드된 비트스트림을 출력한다. 역양자화기(760)는 양자화기(740)로부터 출력된 양자화된 잔여 블록을 역 양자화하고, 역 양자화된 잔여 블록을 생성한다. 역 변환기(770)는 역 양자화된 잔여 블록을 역변환하고, 복원된 (reconstructed) 잔여 블록을 생성한다.
가산기(780)는 예측기(710)로부터 출력된 예측 블록과 역 변환기(770)로부터 출력된 복원된 잔여 블록을 가산하고, 현재 블록을 복원한다. 인-루프 필터(790)는 가산기(780)로부터 출력된 복원된 현재 블록을 인-루프 필터링하고, 필터링 결과를 예측기(710)로 출력한다.
도 17은 도 15에 도시된 디코더의 블록도이다. 도 15부터 도 17을 참조하면, 디코더(800)는 엔트로피 디코더(810), 역 양자화기(820), 역 변환기(830), 움직임 보상기(840), 가산기(850), 및 인-루프 필터 (860)를 포함할 수 있다.
엔트로피 디코더(810)는 인코드된 비트스트림(EBS) 또는 디코더(700)로부터 출력된 인코드된 비트스트림을 처리하고, 양자화된 잔여 블록을 생성할 수 있다.
역 양자화기(820)는 엔트로피 디코더(810)로부터 출력된 양자화된 잔여 블록을 역 양자화하고, 역 양자화된 잔여 블록을 생성할 수 있다. 역 변환기(830)는 역 양자화된 잔여 블록을 역변환하고, 복원된(reconstructed) 잔여 블록을 생성할 수 있다.
움직임 보상기(840)는 인-루프 필터(860)로부터 출력된 복원된 블록에 포함된 현재 움직임 벡터를 이용하여 현재 블록을 예측하고, 예측 블록을 출력할 수 있다. 가산기(850)는 역 변환기(830)로부터 출력된 복원된 잔여 블록과 움직임 보상기(840)로부터 출력된 예측 블록을 가산하여 현재 블록을 복원하고, 복원된 현재 블록을 출력할 수 있다.
인-루프 필터(860)는 가산기(850)로부터 출력된 복원된 현재 블록을 인-루프 필터링하고, 인-루프 필터된 복원된 현재 블록(RV)을 출력할 수 있다. 즉, 인-루프 필터 (860)는 복원된 비디오 데이터를 블록 단위로 출력할 수 있다.
실시 예들에 따라 인-루프 필터(790과 860)는 디블로킹 필터를 포함할 수 있다. 다른 실시 예에 따라, 인-루프 필터(790과 860)는 디블로킹 필터와 SAO(sample adaptive offset) 필터를 포함할 수 있다.
도 18은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다. 도 18을 참조하면, 데이터 처리 시스템(100B)은 컨트롤러(200B), 복수의 메모리들(301, 303, 및 305), 및 디스플레이(400)를 포함할 수 있다. 실시 예들에 따라, 데이터 처리 시스템(100B)은 카메라(500)를 더 포함할 수 있다.
컨트롤러(200B)는 집적 회로(IC), SoC, 마더보드, AP, 또는 모바일 AP로 구현될 수 있다. 컨트롤러(200B)는 CPU(210A), GPU(220), 하드웨어 코덱(230), 메모리 인터페이스(240), 디스플레이 인터페이스(260), 및 수신 인터페이스(270)를 포함한다. 데이터 처리 시스템(100B)이 카메라(500)를 더 포함할 때, 컨트롤러(200B)는 카메라 인터페이스(250)를 더 포함할 수 있다.
하나의 하드웨어 코덱(230)이 복수의 코어들(231-1~231-N)을 포함하는 것을 제외하면, 도 1에 도시된 컨트롤러(200A)의 구조와 작동은 도 18에 도시된 컨트롤러(200B)의 구조와 작동과 실질적으로 동일 또는 유사하다.
각 코어(231-1~231-N)의 작동은 각 하드웨어 코덱(230-1~230-N)의 작동과 실질적으로 동일 또는 유사하다. 또한, 각 코어(231-1~231-N)는 각 메모리 (MEM1~MEMN)에 상응하는 각 메모리를 포함한다.
각 코어(231-1~231-N)는 도 15부터 도 17을 참조하여 설명된 구성 요소들 (701, 700, 및 800)을 포함한다. 도 4부터 도 14를 참조하여 설명된 제1코어 (CORE0)는 제1코어(231-1)이고, 제2코어(CORE1)는 제2코어(231-2)이고, N이 3일 때 제3코어(CORE2)는 제3코어(231-3)이다.
도 19는 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다. 도 19를 참조하면, 데이터 처리 시스템(100C)은 컨트롤러(200C), 복수의 메모리들(301, 303, 및 305), 및 디스플레이(400)를 포함할 수 있다. 실시 예들에 따라, 데이터 처리 시스템(100C)은 카메라(500)를 더 포함할 수 있다.
컨트롤러(200C)는 집적 회로(IC), SoC, 마더보드, AP, 또는 모바일 AP로 구현될 수 있다. 컨트롤러(200C)는 CPU(210B), GPU(220), 메모리 인터페이스(240), 디스플레이 인터페이스(260), 및 수신 인터페이스(270)를 포함한다. 데이터 처리 시스템 (100C)이 카메라(500)를 더 포함할 때, 컨트롤러(200C)는 카메라 인터페이스(250)를 더 포함할 수 있다.
CPU(210B)가 복수의 코어들(CORE1~COREN)을 포함하는 것을 제외하면, 도 1에 도시된 컨트롤러(200A)의 구조와 작동은 도 19에 도시된 컨트롤러(200C)의 구조와 작동과 실질적으로 동일 또는 유사하다.
각 코어(CORE1~COREN))의 작동은 각 하드웨어 코덱(230-1~230-N)의 작동과 실질적으로 동일 또는 유사하다. 또한, 각 코어(231-1~231-N)는 각 메모리 (MEM1~MEMN)에 상응하는 각 메모리(예컨대, 캐시)를 포함할 수 있다.
각 코어(CORE1~COREN)는 도 4부터 도 14를 참조하여 설명된 인코딩, 디코딩, 인-루프 필터링을 포함하는 인코딩, 또는 인-루프 필터링을 포함하는 디코딩을 수행할 수 있는 소프트웨어 코덱(software codec)을 실행할 수 있다. 도 4부터 도 14를 참조하여 설명된 제1코어(CORE0)는 제1코어(CORE1)이고, 제2코어(CORE1)는 제2코어(CORE2)이고, N이 3일 때 제3코어(CORE2)는 제3코어(CORE3)이다.
각 코어(CORE1~COREN)에서 실행되는 소프트웨어 코덱은 도 4부터 도 14를 참조하여 설명된 디코딩, 또는 디코딩과 인-루프 필터링을 수행할 수 있다.
도 20은 도 1, 도 18, 또는 도 19에 도시된 데이터 처리 시스템의 작동을 설명하는 플로우차트이다. 도 1부터 도 20을 참조하면, 제1코어를 이용하여 제1픽처의 제1슬라이스(또는 제1타일)가 처리될 수 있다(S110). 상기 제1코어를 이용하여 상기 제1픽처의 제2슬라이스(또는 제2타일)에 대한 처리와 병렬적으로 제2코어를 이용하여 제2픽처의 제1슬라이스(또는 제1타일)에 대한 처리가 수행될 수 있다 (S120).
상기 제1코어를 이용하여 제3픽처의 제1슬라이스(또는 제1타일)에 대한 처리와 병렬적으로 제2코어를 이용하여 상기 제2픽처의 제2슬라이스(또는 제2타일)에 대한 처리가 수행될 수 있다(S130).
도 1부터 도 14, 도 18부터 도 20을 참조하여 설명된 디코딩 방법은 인코딩 방법에 그대로 적용될 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100A, 100B, 100C; 데이터 처리 시스템
200A, 200B, 200C; 컨트롤러
230-1~230-N; 하드웨어 코덱
231-1~231-N; 코어
CORE0; 제1코어
CORE1; 제2코어
CORE2: 제3코어

Claims (20)

  1. 제1처리 유닛과 제2처리 유닛을 포함하는 제1픽처(picture)를 처리하는 제1코어; 및
    제3처리 유닛과 제4처리 유닛을 포함하는 제2픽처를 처리하는 제2코어를 포함하고,
    상기 제1코어와 상기 제2코어 각각은 상기 제2처리 유닛의 처리와 상기 제3처리 유닛의 처리 각각을 모션 제한 슬라이스 그룹을 참조하여 병렬적으로 수행하며,
    상기 제1 처리 유닛 내지 상기 제4 처리 유닛 각각은 복수의 서브 처리 유닛들을 포함하고,
    상기 모션 제한 슬라이스 그룹은 현재 처리되는 서브 처리 유닛의 이전 픽처들 내에서 참조 영역을 제한하는 정보 또는 기존에 처리된 픽처 내에서 참조가능한 정보를 포함하는 애플리케이션 프로세서.
  2. 제1항에 있어서,
    상기 제1코어는, 상기 제1픽처의 처리 복잡도에 기초하여, 상기 제1픽처를 상기 제1처리 유닛과 상기 제2처리 유닛으로 분할하고,
    상기 제2코어는, 상기 제2픽처의 처리 복잡도에 기초하여, 상기 제2픽처를 상기 제3처리 유닛과 상기 제4처리 유닛으로 분할하고,
    상기 서브 처리 유닛은 슬라이스(slice)이고,
    상기 제2처리 유닛에 포함된 슬라이스들(slices)의 개수와 상기 제3처리 유닛에 포함된 슬라이스들의 개수가 서로 다를 때, 상기 제1코어는 제1시간 구간 내에 상기 제2처리 유닛의 상기 처리를 완료하고, 상기 제2코어는 상기 제1시간 구간 내에 상기 제3처리 유닛의 상기 처리를 완료하는 애플리케이션 프로세서.
  3. 제1항에 있어서,
    상기 제1코어는, 상기 제1픽처의 처리 복잡도에 기초하여, 상기 제1픽처를 상기 제1처리 유닛과 상기 제2처리 유닛으로 분할하고,
    상기 제2코어는, 상기 제2픽처의 처리 복잡도에 기초하여, 상기 제2픽처를 상기 제3처리 유닛과 상기 제4처리 유닛으로 분할하고,
    상기 서브 처리 유닛은 타일(tile)이고,
    상기 제2처리 유닛에 포함된 타일들(tiles)의 개수와 상기 제3처리 유닛에 포함된 타일들의 개수가 서로 다를 때, 상기 제1코어는 제1시간 구간 내에 상기 제2처리 유닛의 상기 처리를 완료하고, 상기 제2코어는 상기 제1시간 구간 내에 상기 제3처리 유닛의 상기 처리를 완료하는 애플리케이션 프로세서.
  4. 제1항에 있어서,
    상기 제1코어는 H.264 비디오 코딩 표준에 의해 정의된 인-루프 필터(in-loop filter)를 포함하고,
    상기 제1코어가 상기 제2처리 유닛을 처리하고 상기 인-루프 필터를 이용하여 상기 제2처리 유닛 내에서 처리된 블록에 인-루프 필터링을 수행하는 동안 상기 제2코어는 상기 제3처리 유닛을 처리하는 애플리케이션 프로세서.
  5. 제1항에 있어서,
    상기 제1코어는 HEVC(High Efficiency Video Coding) 비디오 코딩 표준에서 정의된 인-루프 필터를 포함하고,
    상기 제1코어가 상기 제2처리 유닛을 처리하고 상기 인-루프 필터를 이용하여 상기 제2처리 유닛 내에서 처리된 블록에 인-루프 필터링을 수행하는 동안 상기 제2코어는 상기 제3처리 유닛을 처리하는 애플리케이션 프로세서.
  6. 제1항에 있어서, 상기 애플리케이션 프로세서는
    메모리에 연결된 메모리 인터페이스를 포함하고,
    상기 메모리는 상기 모션 제한 슬라이스 그룹을 저장하는, 애플리케이션 프로세서.
  7. 제1항에 있어서, 상기 제1 및 제2 코어 각각은
    상기 모션 제한 슬라이스 그룹을 저장하는 내부 메모리를 포함하는, 애플리케이션 프로세서.
  8. 제1항에 있어서,
    상기 제1코어는 제1하드웨어 코덱 내에 구현되고, 상기 제2코어는 제2하드웨어 코덱 내에 구현되는 애플리케이션 프로세서.
  9. 제1항에 있어서,
    상기 제1코어는 CPU(central processing unit)의 제1코어이고 상기 제2코어는 상기 CPU의 제2코어인 애플리케이션 프로세서.
  10. 제1항에 있어서,
    상기 제1코어에 의해 상기 제1처리 유닛의 처리로부터 처리 시간 지연 후, 상기 제2코어는 상기 제3처리 유닛의 상기 처리를 수행하는 애플리케이션 프로세서.
  11. 제1항에 있어서,
    상기 제2처리 유닛의 상기 처리의 처리 시간의 일부는 상기 제3처리 유닛의 상기 처리의 처리 시간의 일부는 오버랩되는 애플리케이션 프로세서.
  12. 제1처리 유닛과 제2처리 유닛을 포함하는 제1픽처와, 제3처리 유닛과 제4처리 유닛을 포함하는 제2픽처를 수신하는 수신 인터페이스;
    상기 제1픽처를 처리하는 제1코어; 및
    상기 제2픽처를 처리하는 제2코어를 포함하고,
    상기 제1코어와 상기 제2코어 각각은 상기 제2처리 유닛의 처리와 상기 제3처리 유닛의 처리 각각을 모션 제한 슬라이스 그룹을 참조하여 병렬적으로 수행하고,
    상기 제1 처리 유닛 내지 상기 제4 처리 유닛 각각은 복수의 서브 처리 유닛들을 포함하고,
    상기 모션 제한 슬라이스 그룹은 현재 처리되는 서브 처리 유닛의 이전 픽처들 내에서 참조 영역을 제한하는 정보 또는 기존에 처리된 픽처 내에서 참조가능한 정보를 포함하는 시스템 온 칩.
  13. 제12항에 있어서,
    상기 서브 처리 유닛은 슬라이스이고,
    상기 제2처리 유닛에 포함된 슬라이스들의 개수와 상기 제3처리 유닛에 포함된 슬라이스들의 개수가 서로 다를 때,
    상기 제1코어는 제1시간 구간 내에 상기 제2처리 유닛의 상기 처리를 완료하고, 상기 제2코어는 상기 제1시간 구간 내에 상기 제3처리 유닛의 상기 처리를 완료하는 시스템 온 칩.
  14. 제12항에 있어서,
    상기 서브 처리 유닛은 타일(tile)이고,
    상기 제2처리 유닛에 포함된 타일들의 개수와 상기 제3처리 유닛에 포함된 타일들의 개수가 서로 다를 때,
    상기 제1코어는 제1시간 구간 내에 상기 제2처리 유닛의 상기 처리를 완료하고, 상기 제2코어는 상기 제1시간 구간 내에 상기 제3처리 유닛의 상기 처리를 완료하는 시스템 온 칩.
  15. 제12항에 있어서,
    상기 제1코어는 H.264 비디오 코딩 표준에 의해 정의된 인-루프 필터(in-loop filter)를 포함하고,
    상기 제1코어가 상기 제2처리 유닛을 처리하고 상기 인-루프 필터를 이용하여 상기 제2처리 유닛 내에서 처리된 블록에 인-루프 필터링을 수행하는 동안 상기 제2코어는 상기 제3처리 유닛을 처리하는 시스템 온 칩.
  16. 제12항에 있어서,
    상기 제1코어는 HEVC(High Efficiency Video Coding) 비디오 코딩 표준에서 정의된 인-루프 필터를 포함하고,
    상기 제1코어가 상기 제2처리 유닛을 처리하고 상기 인-루프 필터를 이용하여 상기 제2처리 유닛 내에서 처리된 블록에 인-루프 필터링을 수행하는 동안 상기 제2코어는 상기 제3처리 유닛을 처리하는 시스템 온 칩.
  17. 비디오 데이터 처리를 위한 방법에 있어서,
    상기 비디오 데이터는 각각이 복수의 처리 유닛을 포함하는 복수의 픽처를 포함하고,
    제1픽처를 제1코어에 할당하고 제2픽처를 제2코어에 할당하는 단계;
    상기 제1코어를 이용하여 상기 제1픽처의 제1-1처리 유닛을 처리하는 단계;
    상기 제1코어를 이용하여 상기 제1픽처의 제1-2처리 유닛을 처리하는 단계;
    상기 제2 코어를 이용하여, 상기 제1 코어에서의 상기 제1-2 처리 유닛과 병렬적으로 모션 제한 슬라이스 그룹을 참조하여 상기 제2 픽처의 제2-1 처리 유닛을 처리하는 단계; 및
    상기 제1-1처리 유닛의 처리 결과에 기초하여, 처리된 제1-2처리 유닛과 처리된 제2-1처리 유닛에 대한 인-루프 필터링을 수행하는 단계를 포함하고,
    상기 처리 유닛 각각은 복수의 서브 처리 유닛들을 포함하고,
    상기 모션 제한 슬라이스 그룹은 현재 처리되는 서브 처리 유닛의 이전 픽처들 내에서 참조 영역을 제한하는 정보 또는 기존에 처리된 픽처 내에서 참조가능한 정보를 포함하는 비디오 데이터 처리를 위한 방법.
  18. 제17항에 있어서,
    상기 서브 처리 유닛은 슬라이스(slice) 또는 타일(tile)인, 비디오 데이터 처리를 위한 방법.
  19. 제17항에 있어서, 상기 비디오 데이터는 홀수 번째 픽처들과 짝수 번째 픽처들을 포함하고, 상기 비디오 데이터의 처리가 완료될 때까지 상기 비디오 데이터의 상기 홀수 번째 픽처들 모두는 상기 제1코어에 할당되고 상기 비디오 데이터의 상기 짝수 번째 픽처들 모두는 상기 제2코어에 할당되는 비디오 데이터 처리를 위한 방법.
  20. 제17항에 있어서,
    상기 비디오 데이터의 제3픽처를 제3코어에 할당하는 단계; 및
    상기 제2픽처의 제2-2처리 유닛의 처리와 병렬로 상기 제3코어를 이용하여 상기 제3픽처의 제3-1처리 유닛을 처리하는 단계를 더 포함하는 비디오 데이터 처리를 위한 방법.
KR1020150025676A 2014-10-22 2015-02-24 실시간으로 인-루프 필터링을 수행할 수 있는 애플리케이션 프로세서, 이의 작동 방법, 및 이를 포함하는 시스템 KR102299573B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US14/689,169 US10277913B2 (en) 2014-10-22 2015-04-17 Application processor for performing real time in-loop filtering, method thereof and system including the same
DE102015116544.9A DE102015116544A1 (de) 2014-10-22 2015-09-30 Anwendungs-Prozessor zum Durchführen von In-Loop-Filterung, Verfahren davon und System mit demselben
TW104133529A TWI691850B (zh) 2014-10-22 2015-10-13 用於進行即時迴路內濾波的應用處理器、用於該應用處理器之方法以及包括該應用處理器的系統
CN201510689230.8A CN105554505B (zh) 2014-10-22 2015-10-21 应用处理器及其方法以及包括该应用处理器的系统

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN5269CH2014 2014-10-22
IN5269/CHE/2014 2014-10-22

Publications (2)

Publication Number Publication Date
KR20160047375A KR20160047375A (ko) 2016-05-02
KR102299573B1 true KR102299573B1 (ko) 2021-09-07

Family

ID=56021632

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150025676A KR102299573B1 (ko) 2014-10-22 2015-02-24 실시간으로 인-루프 필터링을 수행할 수 있는 애플리케이션 프로세서, 이의 작동 방법, 및 이를 포함하는 시스템

Country Status (2)

Country Link
KR (1) KR102299573B1 (ko)
TW (1) TWI691850B (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140029671A1 (en) * 2012-07-26 2014-01-30 Canon Kabushiki Kaisha Image encoding or decoding apparatus, system, method, and storage medium for encoding or decoding a plurality of images in parallel
KR101388413B1 (ko) * 2006-09-15 2014-04-23 프리스케일 세미컨덕터, 인크. 선택적인 크로마 디블록 필터링 기능을 가진 비디오 정보 처리 시스템
WO2014087861A1 (ja) 2012-12-06 2014-06-12 ソニー株式会社 画像処理装置、画像処理方法、およびプログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6963613B2 (en) * 2002-04-01 2005-11-08 Broadcom Corporation Method of communicating between modules in a decoding system
US20080123750A1 (en) * 2006-11-29 2008-05-29 Michael Bronstein Parallel deblocking filter for H.264 video codec
US9648325B2 (en) * 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
CN102075766B (zh) * 2009-11-23 2013-01-09 华为技术有限公司 视频编码、解码方法、装置及视频编解码系统
US9049452B2 (en) * 2011-01-25 2015-06-02 Mediatek Singapore Pte. Ltd. Method and apparatus for compressing coding unit in high efficiency video coding
WO2013053324A1 (en) * 2011-10-14 2013-04-18 Mediatek Inc. Method and apparatus for loop filtering
US9967563B2 (en) * 2012-02-03 2018-05-08 Hfi Innovation Inc. Method and apparatus for loop filtering cross tile or slice boundaries
KR101877867B1 (ko) * 2012-02-21 2018-07-12 삼성전자주식회사 비디오 파라미터를 이용한 복잡도 측정 기반의 병렬 인-루프 화소 보정에 대한 부호화/복호화 장치 및 방법
KR20140030473A (ko) * 2012-08-30 2014-03-12 삼성전자주식회사 멀티 뷰 영상 처리 방법 및 이를 수행하는 장치
MX358606B (es) * 2012-10-09 2018-08-24 Sony Corp Dispositivo y metodo de procesamiento de imagenes.
US10097825B2 (en) * 2012-11-21 2018-10-09 Qualcomm Incorporated Restricting inter-layer prediction based on a maximum number of motion-compensated layers in high efficiency video coding (HEVC) extensions
CN103248889B (zh) * 2013-03-22 2016-05-25 海信集团有限公司 一种图像处理方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101388413B1 (ko) * 2006-09-15 2014-04-23 프리스케일 세미컨덕터, 인크. 선택적인 크로마 디블록 필터링 기능을 가진 비디오 정보 처리 시스템
US20140029671A1 (en) * 2012-07-26 2014-01-30 Canon Kabushiki Kaisha Image encoding or decoding apparatus, system, method, and storage medium for encoding or decoding a plurality of images in parallel
WO2014087861A1 (ja) 2012-12-06 2014-06-12 ソニー株式会社 画像処理装置、画像処理方法、およびプログラム

Also Published As

Publication number Publication date
KR20160047375A (ko) 2016-05-02
TWI691850B (zh) 2020-04-21
TW201621691A (zh) 2016-06-16

Similar Documents

Publication Publication Date Title
JP7106744B2 (ja) ルーマおよびクロマ成分についてibc専用バッファおよびデフォルト値リフレッシュを使用するエンコーダ、デコーダおよび対応する方法
US11051037B2 (en) Method and apparatus for vector encoding in video coding and decoding
US9628825B2 (en) Video decoder, video encoder, video decoding method, and video encoding method
CN105554505B (zh) 应用处理器及其方法以及包括该应用处理器的系统
KR102273670B1 (ko) 움직임 보상 정보를 수정하는 데이터 처리 시스템과 데이터 처리 방법
CN109565587B (zh) 具有上下文解码和重构旁路的视频编码的方法和系统
US20130182759A1 (en) Method and Apparatus for Sample Adaptive Offset Parameter Estimation in Video Coding
CA3122137C (en) An encoder, a decoder and corresponding methods of boundary strength derivation of deblocking filter
JP7314281B2 (ja) イントラ・サブパーティション・コーディング・ツールによって引き起こされるサブパーティション境界のためのデブロッキングフィルタ
US11889088B2 (en) Intra-prediction estimation using approximate reconstructed samples
JP2022505470A (ja) ブロックの面に基づくビデオの符号化又は復号のための量子化
KR20120117613A (ko) 동영상 부호화 장치 및 방법
BR112021014502A2 (pt) Codificador, decodificador e métodos correspondentes de adaptação de filtro de desblocagem
WO2015145504A1 (ja) 画像復号装置、画像復号方法、及び集積回路
WO2021196035A1 (zh) 视频编码的方法和装置
KR20220127314A (ko) 적응적 루프 필터링을 위한 인코더, 디코더, 및 대응하는 방법
KR102299573B1 (ko) 실시간으로 인-루프 필터링을 수행할 수 있는 애플리케이션 프로세서, 이의 작동 방법, 및 이를 포함하는 시스템
JP2022548203A (ja) サブブロック変換情報を信号化するための方法及び装置
US10951900B2 (en) Speeding up small block intra-prediction in video coding
RU2777967C1 (ru) Деблокирующий фильтр для границ подразделов, возникающих под действием инструмента кодирования интра-подразделов
KR20160067580A (ko) 영상 데이터의 인코딩 방법, 상기 방법을 이용한 인코더, 및 상기 인코더를 포함하는 애플리케이션 프로세서
CN116233469A (zh) 低频不可分离变换和多重变换选择死锁预防
JP2015130604A (ja) 動画像復号装置、動画像復号方法、およびプログラム
US20160150245A1 (en) System and a method for video encoding

Legal Events

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