KR20160064419A - 움직임 보상 정보를 수정하는 데이터 처리 시스템과 데이터 처리 방법 - Google Patents

움직임 보상 정보를 수정하는 데이터 처리 시스템과 데이터 처리 방법 Download PDF

Info

Publication number
KR20160064419A
KR20160064419A KR1020140168004A KR20140168004A KR20160064419A KR 20160064419 A KR20160064419 A KR 20160064419A KR 1020140168004 A KR1020140168004 A KR 1020140168004A KR 20140168004 A KR20140168004 A KR 20140168004A KR 20160064419 A KR20160064419 A KR 20160064419A
Authority
KR
South Korea
Prior art keywords
picture
motion compensation
compensation information
decoding
core
Prior art date
Application number
KR1020140168004A
Other languages
English (en)
Other versions
KR102273670B1 (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 KR1020140168004A priority Critical patent/KR102273670B1/ko
Priority to DE102015117561.4A priority patent/DE102015117561A1/de
Priority to TW104134452A priority patent/TWI736525B/zh
Priority to CN201510854636.7A priority patent/CN105657430B/zh
Priority to US14/953,971 priority patent/US10080025B2/en
Publication of KR20160064419A publication Critical patent/KR20160064419A/ko
Application granted granted Critical
Publication of KR102273670B1 publication Critical patent/KR102273670B1/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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • 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/423Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation

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픽쳐를 디코딩하고 제1픽쳐의 디코딩 이력정보를 생성하는 제1코어와, 수신된 제2픽쳐에 포함된 제2움직임 보상 정보와 상기 제1픽쳐의 디코딩 이력 정보를 참조하여, 상기 제2움직임 보상 정보를 변경하고 상기 변경된 제2움직임 보상 정보와 상기 제1픽쳐를 참조하여 상기 제2픽쳐를 디코딩하는 제2코어를 이용하여 수신된 픽쳐들을 동시에 병렬 처리한다.

Description

움직임 보상 정보를 수정하는 데이터 처리 시스템과 데이터 처리 방법{DATA PROCESSING SYSTEM MODIFYING MOTION COMPENSATION INFORMATION, AND DATA PROCESSING METHOD THEREOF}
본 발명의 개념에 따른 실시 예는 반도체 장치에 관한 것으로, 특히 멀티 코어를 기반으로 움직임 보상 정보를 수정하여 데이터의 병렬 처리 속도를 증가시키는 데이터 처리 시스템과 이의 데이터 처리 방법에 관한 것이다.
픽쳐 내의 슬라이스(slice) 또는 타일(tile)은 엔트로피 인코딩 또는 엔트로피 디코딩에서의 종속성을 제거할 수 있다.
하나의 픽쳐(picture)에 포함된 복수의 슬라이스들 또는 타일들 각각을 복수의 프로세서들 각각을 이용하여 디코딩하면, 슬라이스들 또는 타일들 사이의 경계에 존재하는 복수의 블록들에 대한 복원이 완료될 때까지 상기 슬라이스들 또는 상기 타일들에 대한 디블록킹은 수행될 수 없다.
또한, 슬라이스들 또는 타일들 사이의 경계에 존재하는 복수의 블록들에 대한 디블록킹을 위해 복수의 프로세서들은 상기 디블록킹에 필요한 정보를 주고받아야 한다. 즉, 하나의 픽쳐에 포함된 복수의 슬라이스들 또는 타일들 각각을 복수의 프로세서들 각각을 이용하여 디코딩할 때, 디블록킹을 위한 추가적인 시간이 필요하다.
또한, 하나의 픽쳐가 하나의 슬라이스 또는 타일로 구성되어 있는 경우, 하나의 픽쳐는 하나의 프로세서에 할당되어야 한다. 이 경우, 디코딩되는 픽쳐 내의 일부 영역이 아직 디코딩되지 않은 픽쳐의 일부 영역을 참조할 경우 디코딩 순서에 종속성이 발생하여 종속성이 해결될 때까지 다음 디코딩 작업이 지연될 수 있다. 이러한 문제는 하나의 픽쳐가 복수의 슬라이스들 또는 타일들로 구성되어 있는 경우에도 동일하게 발생한다. 즉, 여러 픽쳐들이 여러 프로세서들에 나누어져 동시에 디코딩될 때, 디코딩되는 픽쳐 내의 슬라이스나 타일이 아직 디코딩되지 않은 픽쳐의 슬라이스나 타일을 참조할 경우 디코딩 순서에 종속성이 발생하여 종속성이 해결될 때까지 다음 디코딩 작업이 지연될 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 디코딩될 픽쳐들에 포함된 복수의 슬라이스나 복수의 타일들이 복수의 프로세서 또는 복수의 디코더에서 동시에 디코딩될 때 발생하는 종속성을 해결하여 병렬 처리 속도를 증가시키는 데이터 처리 시스템 및 데이터 처리 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 수신된 제1픽쳐를 디코딩하고 상기 디코드된 제1픽쳐의 디코딩 이력 정보를 생성하는 제1코어와, 수신된 제2 픽쳐에 포함된 제1움직임 보상 정보 및 상기 디코드된 제1 픽쳐의 디코딩 이력 정보를 참조하여, 상기 제1 움직임 보상 정보를 변경하고, 상기 변경된 제1 움직임 보상 정보 및 상기 디코드된 제1 픽쳐를 참조하여 상기 제2 픽쳐를 디코딩하는 제2 코어를 포함할 수 있다.
실시 예에 따라, 상기 제1 코어는, 수신된 제3 픽쳐에 포함된 제2 움직임 보상 정보 및 상기 디코드된 제1 픽쳐의 디코딩 이력 정보를 참조하여, 상기 제2 움직임 보상 정보를 변경하고 상기 변경된 제2 움직임 보상 정보 및 상기 제1 픽쳐와 상기 제2 픽쳐 중 적어도 하나를 참조하여 상기 제3 픽쳐를 디코딩할 수 있다.
실시 예에 따라, 상기 제1 코어는 상기 제2 움직임 보상 정보를 변경하는 제1 움직임 보상 정보 수정기를 포함하고, 상기 제2 코어는 상기 변경된 제1 움직임 보상 정보를 변경하는 제2 움직임 보상 정보 수정기를 포함할 수 있다.
실시 예에 따라, 상기 제1 코어는 상기 제1 움직임 보상 정보 수정기에 연결된 제1인-루프(in-loop) 필터를 더 포함하고, 상기 제2 코어는 상기 제2 움직임 보상정보 수정기에 연결된 제2 인-루프(in-loop) 필터를 더 포함할 수 있다.
실시 예에 따라, 상기 제1 인-루프 필터는 상기 제1 움직임 보상정보 수정기로부터 수신된 제1 제어 신호에 기초하여, 상기 변경된 제1 움직임 보상정보와 연관된 블록의 내부에서만 디-블록킹(de-blocking)을 수행하는 부분적인 인-루프(partial in-loop) 필터링을 수행하고, 상기 제2 인-루프 필터는 상기 제2 움직임 보상정보 수정기로부터 수신된 제2 제어 신호에 기초하여, 상기 변경된 제2 움직임 보상정보와 연관된 블록의 내부에서만 디-블록킹(de-blocking)을 수행하는 부분적인 인-루프(partial in-loop) 필터링을 수행할 수 있다.
실시 예에 따라, 상기 제1 픽쳐 내지 상기 제3 픽쳐 각각은 적어도 하나의 분할영역을 포함할 수 있다.
실시 예에 따라, 상기 제1 픽쳐는 제1 분할영역을 포함하고, 상기 제1 픽쳐의 디코딩 이력정보는 상기 제1 분할영역의 디코딩 이력정보를 포함하며, 상기 제2 코어는 상기 제1 분할영역의 디코딩 이력정보에 기초하여 상기 제1 움직임 보상정보를 변경할 수 있다.
실시 예에 따라, 상기 변경된 제1 움직임 보상정보는 상기 제1 움직임 보상정보에 포함된 참조픽쳐의 참조좌표가 변경된 움직임 보상정보일 수 있다.
실시 예에 따라, 상기 제2 픽쳐는 제2 분할영역을 포함하고, 상기 제2 픽쳐의 디코딩 이력정보는 상기 제2 분할영역의 디코딩 이력정보를 포함하며, 상기 제1 코어는 상기 제2 분할영역의 디코딩 이력정보에 기초하여 상기 제2 움직임 보상정보를 변경할 수 있다.
실시 예에 따라, 상기 변경된 제2 움직임 보상정보는 상기 제2 움직임 보상정보에 포함된 참조픽쳐 인덱스가 변경된 움직인 보상정보일 수 있다.
본 발명의 실시 예에 따른 동영상 디코딩 방법은 제1 분할영역을 포함하는 제1 픽쳐를 수신하는 단계, 제2 분할영역을 포함하는 제2 픽쳐를 수신하는 단계, 상기 제2 픽쳐에 포함된 제1 움직임 보상정보를 추출하는 단계, 상기 추출된 제1 움직임 보상정보를 변경하는 단계, 및 상기 변경된 제1 움직임 보상정보 및 상기 제1 분할 영역을 참조하여 상기 제2 픽쳐를 디코딩하는 단계를 포함할 수 있다.
실시 예에 따라, 상기 제1 움직임 보상정보를 변경하는 단계는, 상기 제1 움직임 보상정보와 연관된 참조픽쳐의 디코딩 이력정보를 참조하여, 상기 참조픽쳐내의 참조좌표를 변경하는 단계를 포함할 수 있다.
실시 예에 따라, 상기 제1 픽쳐는 상기 제1 분할영역과 다른 제3 분할영역을 포함하고, 상기 참조픽쳐내의 참조좌표를 변경하는 단계는, 상기 참조픽쳐내의 참조좌표를 포함하는 영역이 상기 제3 분할영역에서 상기 제1 분할영역으로 변경되도록, 상기 제1 움직임 보상정보를 변경할 수 있다.
실시 예에 따라, 상기 제1 픽쳐 및 상기 변경된 제1 움직임 보상정보에 기초하여 상기 제2 분할영역에 포함된 블록에 대한 디코딩을 수행하는 단계, 및 상기 디코딩된 블록에 대한 부분적인 인-루프 필터링을 수행하는 단계를 더 포함할 수 있다.
실시 예에 따라, 상기 동영상 디코딩 방법은 제3 분할영역을 포함하는 제3 픽쳐를 수신하는 단계, 상기 제3 픽쳐에 포함된 제2 움직임 보상정보를 추출하는 단계, 상기 추출된 제2 움직임 보상정보를 변경하는 단계, 및 상기 변경된 제2 움직임 보상정보에 기초하여 상기 제3 픽쳐를 디코딩하는 단계를 더 포함할 수 있다.
실시 예에 따라, 상기 제2 움직임 보상정보를 변경하는 단계는, 상기 제2 움직임 보상정보에 포함된 참조픽쳐 인덱스와 연관된 참조픽쳐의 디코딩 이력정보를 참조하여 상기 참조픽쳐 인덱스를 변경하는 단계를 포함할 수 있다.
실시 예에 따라, 상기 참조픽쳐 인덱스를 변경하는 단계는, 상기 참조 픽쳐 인덱스가 상기 제2 픽쳐를 가리키는 인덱스에서 상기 제1 픽쳐를 가리키는 인덱스로 변경될 수 있다.
실시 예에 따라, 상기 동영상 디코딩 방법은 상기 제 2픽쳐 및 상기 변경된 제2 움직임 보상정보에 기초하여 상기 제3 분할영역에 포함된 블록에 대한 디코딩을 수행하는 단계, 및 상기 디코딩된 블럭에 대한 부분적인 인-루프 필터링을 수행하는 단계를 더 포함할 수 있다.
실시 예에 따라, 제2 움직임 보상정보를 변경하는 단계는, 상기 제2 움직임 보상정보에 포함된 참조픽쳐 인덱스와 참조픽쳐내의 참조좌표와 연관된 상기 제1 분할영역 또는 상기 제2 분할영역의 디코딩 이력정보를 참조하여, 상기 참조픽쳐 인덱스 및 상기 참조픽쳐내의 참조좌표를 변경하는 단계를 포함할 수 있다.
실시 예에 따라, 상기 제1 픽쳐는 상기 제1 분할영역과 다른 제4 분할영역을 포함하고, 상기 제2 움직임 보상정보를 변경하는 단계는, 상기 참조픽쳐 인덱스는 상기 제2 픽쳐를 가르키는 제2 인덱스에서 상기 제1 픽쳐를 가르키는 제1 인덱스로 변경하는 단계, 및 상기 참조 픽쳐내의 참조좌표를 포함하는 영역은 상기 제4 분할영역에서 상기 제1 분할 영역으로 변경되는 단계를 포함할 수 있다.
실시 예에 따라, 상기 동영상 디코딩 방법은, 상기 제 1픽쳐 및 상기 변경된 제2 움직임 보상정보에 기초하여 상기 제3 분할영역에 포함된 블록에 대한 디코딩을 수행하는 단계, 및 상기 디코딩된 블록에 대한 부분적인 인-루프 필터링을 수행하는 단계를 더 포함할 수 있다.
실시 예에 따라, 상기 제1 움직임 보상정보를 변경하는 단계는, 상기 제2분할영역에 대한 디코딩시, 상기 제1 움직임 보상정보에 포함된 참조픽쳐의 수에 기초하여 상기 제1 움직임 보상정보를 변경할 수 있다.
실시 예에 따라, 상기 제1 움직임 보상정보를 변경하는 단계는, 상기 제1 움직임 보상정보에 포함된 움직임 보상벡터의 크기에 기초하여 상기 제1 움직임 보상정보를 변경할 수 있다.
실시 예에 따라, 상기 제1 움직임 보상정보를 변경하는 단계는, 상기 변경된 제1 움직임 보상정보에 따라 디코딩된 블록과 상기 디코딩된 블록의 주변 블록과의 경계선에서의 픽셀값들의 차이값의 크기를 기초하여 상기 제1 움직임 보상정보를 변경할 수 있다.
본 발명의 실시 예에 따른 데이터 처리 시스템은, 제1 픽쳐를 디코딩하여 상기 제1 픽쳐에 포함된 제1 움직임 보상정보 및 제1 디코딩 이력정보를 생성하는 제1 디코더, 제2 픽쳐를 디코딩하여 상기 제2 픽쳐에 포함된 제2 움직임 보상정보 및 제2 디코딩 이력정보를 생성하는 제2 디코더, 상기 제1 디코더 및 상기 제2 디코더에 연결되어 상기 제1 디코딩 이력정보 및 상기 제2 디코딩 이력정보를 저장하는 디코딩 이력 저장부, 및 상기 디코딩 이력 저장부에 연결되어, 상기 제1 움직임 보상정보, 상기 제2 움직임 보상정보, 상기 제1 디코딩 이력정보 또는 상기 제2 디코딩 이력정보를 참조하여, 상기 제1 움직임 보상정보 및 상기 제2 움직임 보상정보를 변경하는 움직임 보상정보 수정기를 포함하되, 상기 제2 디코더는 상기 변경된 제2 움직임 보상정보를 참조하여 상기 제2 픽쳐를 디코딩할 수 있다.
실시 예에 따라, 상기 제1 디코더는 제3 픽쳐를 디코딩하여 상기 제3 픽쳐에 포함된 제3 움직임 보상정보를 생성하고, 상기 디코딩 이력 저장부는 상기 제3 픽쳐의 디코딩 결과를 참조하여 상기 제1 디코딩 이력정보를 갱신하고, 상기 움직임 보상정보 수정기는 상기 제3 움직임 보상정보 및 상기 제2 디코딩 이력정보를 참조하여, 상기 제3 움직임 보상정보를 변경할 수 있다.
실시 예에 따라, 상기 제1 픽쳐 내지 상기 제3 픽쳐는 각각 적어도 하나의 분할영역을 포함할 수 있다.
실시 예에 따라, 상기 움직임 보상정보 수정기는 상기 제2 움직임 보상정보에 포함된 참조픽쳐의 참조좌표를 변경하여 상기 변경된 제2 움직임 보상정보를 생성할 수 있다.
실시 예에 따라, 상기 움직임 보상정보 수정기는 상기 제3 움직임 보상정보에 포함된 참조픽쳐 인덱스를 변경하여 상기 변경된 제3 움직임 보상정보를 생성할 수 있다.
실시 예에 따라, 상기 움직임 보상정보 수정기는 상기 제3 움직임 보상정보에 포함된 참조픽쳐 인덱스 및 참조픽쳐의 참조좌표를 변경하여 상기 변경된 제3 움직임 보상정보를 생성할 수 있다.
본 발명의 실시 예에 따른 복수의 코어들을 포함하는 데이터 처리 시스템은 슬라이스 또는 타일의 분할 여부에 관계없이 하나의 픽쳐를 복수의 코어들 중에서 어느 하나에 할당하고, 상기 픽쳐에 할당된 하나의 코어를 이용하여 디코딩함으로써, 디코딩시 발생하는 종속성을 해결하여 병렬처리 속도를 증가시키는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 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 내지 도 22은 본 발명의 일 실시 예에 따른 움직임 보상 정보 수정을 포함하는 동영상 디코딩 방법을 설명하는 개념도이다.
도 23a내지 도 23b는 본 발명의 실시예에 따른 부분적인 인-루프(partial in-loop) 필터링을 설명하기 위한 개념도이다.
도 24는 도 15에 도시된 디코더의 다른 실시 예를 나타내는 블록도이다.
도 25는 본 발명의 실시 예에 따른 데이터 처리 시스템이다.
도 26는 본 발명의 실시예에 따른 인코딩된 비트스트림내의 움직임 보상정보의 포맷이다.
도 27은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 28은 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 29는 도 1, 도 27, 또는 도 28에 도시된 데이터 처리 시스템의 작동을 설명하는 플로우 차트이다.
도 30은 도 1, 도 25, 도 27, 또는 도 28에 도시된 데이터 처리 시스템의 동작을 설명하는 플로우 차트이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
본 명세서에서 인코드된 유닛(encoded unit)은 하나 또는 그 이상의 슬라이스들(slices)을 포함할 수 있다. 또한, 인코드된 유닛은 하나 또는 그 이상의 타일들(tiles)을 포함할 수 있다.
본 명세서에서 데이터 처리 시스템(100A, 100B, 또는 100C)은 풀-HD(High-definition) 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)는 인코드된 비트스트림(EB)을 수신하여 디코드할 수 있고, 복수의 메모리들(301, 303, 및 305) 각각에 대한 메모리 액세스 작동(예컨대, 라이트 작동 또는 리드 작동)을 제어할 수 있고, 디스플레이 데이터(또는 비디오 데이터)를 디스플레이(400)로 전송할 수 있다. 또한, 카메라(500)로부터 출력된 이미지 데이터(또는 비디오 데이터)를 처리하고, 처리된 이미지 데이터를 복수의 메모리들 (301, 303, 및 305) 중에서 적어도 하나에 저장하거나 상기 처리된 이미지 데이터를 디스플레이(400)로 전송할 수 있다.
컨트롤러(200A)는 CPU(210A), GPU(220), 복수의 하드웨어 코덱들(230-1~230-N; N은 2 이상의 자연수), 메모리 인터페이스(240), 디스플레이 인터페이스 (260), 및 수신 인터페이스(270)를 포함한다. 데이터 처리 시스템(100A)이 카메라 (500)를 더 포함할 때, 컨트롤러(200A)는 카메라 인터페이스(250)를 더 포함할 수 있다.
CPU(210A), GPU(220), 복수의 하드웨어 코덱들(230-1~230-N), 메모리 인터페이스(240), 디스플레이 인터페이스(260), 및 수신 인터페이스(270)는 버스 (201)를 통해 서로 데이터를 주거나 받을 수 있다. 카메라 인터페이스(250)는 버스 (201)에 접속되고 다른 구성 요소들(예컨대, 210A, 및/또는 220)과 데이터를 주거나 받을 수 있다.
CPU(210A)는 하나 또는 그 이상의 코어들을 포함할 수 있다. CPU(210A)는 컨트롤러(200A)의 작동을 전반적으로 제어할 수 있다. 예컨대, CPU(210A)는 GPU(220), 복수의 하드웨어 코덱들(230-1~230-N), 메모리 인터페이스(240), 카메라 인터페이스(250), 디스플레이 인터페이스(260), 및/또는 수신 인터페이스 (270)의 작동에 필요한 프로그램들(또는 애플리케이션들)을 실행시킬 수 있다.
GPU(220)는 2D 또는 3D 그래픽스(graphics) 데이터를 처리할 수 있다. GPU (220)에 의해 처리된 그래픽스 데이터는 복수의 메모리들(301, 303, 및 305) 중에서 적어도 하나에 저장되거나 디스플레이(400)를 통해 디스플레이될 수 있다.
복수의 하드웨어 코덱들(230-1~230-N) 각각의 구조와 작동은 실질적으로 동일 또는 유사하다. 실시 예들에 따라, 복수의 하드웨어 코덱들(230-1~230-N) 각각은 단순히 코어(core)로 불릴 수 있다. 각 하드웨어 코덱(230-1~230-N)의 작동은 도 2부터 도 17을 참조하여 상세히 설명될 것이다. 복수의 하드웨어 코덱들(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)을 도시하나 이에 한정되는 것은 아니다.
디스플레이 인터페이스(260)는, CPU(210A), GPU(220), 또는 각 하드웨어 코덱(230-1~230-N)의 제어에 따라, 디스플레이 데이터(예컨대, 비디오 데이터)를 디스플레이(400)로 전송할 수 있다. 실시 예들에 따라, 디스플레이 인터페이스(260)는 mipi(R) 디스플레이 시리얼 인터페이스(display serial interface(DSI)), eDP(Embedded DisplayPort) 인터페이스, 또는 HDMI(High-Definition Multimedia Interface)로 구현될 수 있으나 이에 한정되는 것은 아니다.
수신 인터페이스(270)는 인코드된 비트스트림(EB)을 유선 통신망 또는 무선 통신망을 통해 수신할 수 있다. 실시 예들에 따라, 수신 인터페이스(270)는 USB (universal serial bus) 인터페이스, 이더넷(ethernet) 인터페이스, 블루투스 인터페이스, Wi-Fi 인터페이스, 또는 LTETM 인터페이스로 구현될 수 있다.
카메라 인터페이스(250)는 카메라(500)로부터 출력된 이미지 데이터를 수신할 수 있다. 실시 예에 따라, 카메라 인터페이스(250)은 MIPI(R) 카메라 시리얼 인터페이스(camera serial interface(CSI))로 구현될 될 수 있다. 카메라(500)는 CMOS 이미지 센서를 포함하는 카메라 모듈을 의미할 수 있다.
도 2는 복수의 슬라이스들을 포함하는 픽쳐의 실시 예를 나타낸다.
도 2를 참조하면, 픽쳐(10)는 복수의 슬라이스들(SLICE1~SLICE3)을 포함하고, 복수의 슬라이스들(SLICE1~SLICE3) 각각은 복수의 블록들을 포함한다. 복수의 슬라이스들(SLICE1~SLICE3) 각각에 포함된 블록의 갯수는 서로 다를 수 있다. 픽쳐 (10)는 프레임 또는 인코드된 프레임을 의미할 수 있다.
H.264 비디오 코딩 표준에서, 블록(block)은 매크로블록(macroblock)을 의미할 수 있다. HEVC(High Efficiency Video Coding) 비디오 코딩 표준에서, 블록은 코딩 트리 유닛(coding tree unit(CTU))을 의미할 수 있다. 실시 예에 따라, 픽쳐 (10)는 인코드된 픽쳐 또는 인코드된 비트스트림에 해당하는 픽쳐를 의미할 수 있다.
디코더는 블록(0)부터 블록(63)을 순차적으로 디코딩한다고 가정한다.
슬라이스( SLICE1)의 첫 번째 인코드된 블록(0)에 대한 디코딩이 종료된 후, 이전 디코드된 블록이 존재하지 않으므로 디코더는 현재 디코드된 블록(0)에 대한 인-루프 필터링(in-loop filtering)을 수행하지 않는다. 그러나, 슬라이스 (SLICE1)의 현재 인코드된 블록(1)에 대한 디코딩이 종료된 후, 상기 디코더는 이전 디코드된 블록(0)에 대한 비디오 데이터와 현재 디코드된 블록(1)에 대한 비디오 데이터를 이용하여 인-루프 필터링을 수행한다. 즉, 디코더는 블록 경계(block boundary)에 대한 인-루프 필터링을 수행한다.
슬라이스(SLICE2)의 첫 번째 인코드된 블록(22)에 대한 디코딩이 종료된 후, 디코더는 이전 디코드된 블록들(14과 21)에 대한 비디오 데이터와 현재 디코드된 블록(22)에 대한 비디오 데이터를 이용하여 인-루프 필터링을 수행한다. 즉, 디코더는 슬라이스 경계에 대한 인-루프 필터링을 수행한다.
슬라이스(SLICE3)의 첫 번째 인코드된 블록(40)에 대한 디코딩이 종료된 후, 디코더는 이전 디코드된 블록(32)에 대한 비디오 데이터와 현재 디코드된 블록(40)에 대한 비디오 데이터를 이용하여 인-루프 필터링을 수행한다. 예를 들면, 디코더는 HEVC 표준에 따라 현재 처리될 블록에 인접하는 하나 또는 그 이상의 블록들 사이의 경계(boundary)에 대해 디블록킹(de-blocking) 필터링을 수행하거나 SAO (sample adaptive offset) 필터링과 같이 블록 전체에 대한 디블록킹 필터링을 수행할 수 있다.
예컨대, H.264 비디오 코딩 표준에 의해 정의된 인-루프 필터링은, 움직임 벡터, 예측 모드(prediction mode) 정보, 및 양자화 파라미터(quantization parameter) 등에 기초하여, 수행될 수 있다.
또한, HEVC 비디오 코딩 표준에 의해 정의된 인-루프 필터링은, 움직임 벡터, 예측 모드 정보, 양자화 파라미터, 및 SAO (sample adaptive offset) 필터 파라미터 등에 기초하여, 수행될 수 있다. 상기 예측 모드 정보는 인트라 예측 모드 (intra-prediction mode) 정보 또는 인터 예측 모드(inter-prediction mode) 정보를 포함한다.
실시 예들에 따라, H.264 비디오 코딩 표준에 의해 정의된 인-루프 필터(in-loop filter)를 포함하는 디코더는 블록 단위로 인-루프 필터링을 수행할 수 있다. 다른 실시 예들에 따라, HEVC 비디오 코딩 표준에 의해 정의된 인-루프 필터를 포함하는 디코더는 블록 단위로 인-루프 필터링을 수행할 수 있다. 즉, 디코더는 HEVC 표준에 따라 현재 처리될 블록에 인접하는 하나 또는 그 이상의 블록들 사이의 경계(boundary)에 대해 디블록킹(de-blocking) 필터링을 수행하거나 SAO 표준에 따라 블록 전체에 대한 디블록킹 필터링을 수행할 수 있다.
도 3은 각각이 2개의 슬라이스들을 포함하는 픽쳐들(pictures)의 시퀀스 (sequence)를 나타내고, 도 4는 2개의 코어들을 이용하여 도 3에 도시된 픽쳐들의 시퀀스를 처리하는 과정을 개념적으로 나타낸다.
도 1의 컨트롤러(200A)는 2개의 하드웨어 코덱들(230-1과 230-2)을 포함하고, 제1코어(CORE0)는 제1하드웨어 코덱(230-1)을 의미하고, 제2코어(CORE1)는 제2하드웨어 코덱(230-2)을 의미한다고 가정한다. 도 2를 참조하여 설명된 디코더는 각 코어(CORE0과 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)는 인코드된 픽쳐를 의미할 수 있고, 수신 인터페이스(270)를 통해 수신된 인코드된 비트스트림(EB)을 의미할 수 있다.
실시 예에 따라, CPU(210A)는, 홀수 번째 픽쳐가 제1코어(CORE0)로 전송되고 짝수 번째 픽쳐가 제2코어(CORE1)로 전송될 수 있도록, 수신 인터페이스(270)를 제어할 수 있다.
다른 실시 예에 따라 CPU(210A)는, 홀수 번째 픽쳐가 제1코어(CORE0)로 전송되고 짝수 번째 픽쳐가 제2코어(CORE1)로 전송될 수 있도록, 제1코어(CORE0)와 제2코어(CORE1)의 작동을 제어할 수 있다.
제1시간(T1) 동안, 제1코어(CORE0)는 제1픽쳐(610)의 제1슬라이스(610-1)를 디코드한다.
제2픽쳐(612)의 제1슬라이스(612-1)에 대한 디코딩은, 제1슬라이스 (610-1)에 대한 디코딩 시간만큼 지연된 후, 제2코어(CORE1)에 의해 수행될 수 있다.
제2시간(T2) 동안, 제1코어(CORE0)는 제1픽쳐(610)의 제2슬라이스(610-2)를 디코드하고, 제2코어(CORE1)는 제2픽쳐(612)의 제1슬라이스(612-1)를 디코드한다. 제2시간(T2) 동안, 제1픽쳐(610)의 제2슬라이스(610-2)에 대한 디코딩과 제2픽쳐 (612)의 제1슬라이스(612-1)에 대한 디코딩은 병렬적으로 수행된다.
또한, 제2시간(T2) 동안, 제1코어(CORE0)는 제1픽쳐(610)의 제1슬라이스 (610-1)에 대한 디코드 결과를 참조하여 제2슬라이스(610-2)에 대한 인-루프 필터링을 블록 단위로 수행한다. 도 2를 참조하여 설명한 바와 같이, 제1코어(CORE0)는, 현재 디코드된 블록의 바로 위쪽 블록과 바로 왼쪽 블록 중에서 적어도 하나를 이용하여, 상기 현재 디코드된 블록에 대한 인-루프 필터링을 수행할 수 있다. 즉, 제2시간(T2) 동안, 제1코어(CORE0)에 의해 디코딩과 인-루프 필터링이 수행되므로, 상기 인-루프 필터링을 위한 추가적인 시간은 필요하지 않다.
제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)에 대한 디코드 결과를 참조하여 제2슬라이스(612-2)에 대한 인-루프 필터링을 블록 단위로 수행한다. 제3시간(T3) 동안, 제2코어(CORE1)에 의해 디코딩과 인-루프 필터링이 수행되므로, 상기 인-루프 필터링을 위한 추가적인 시간은 필요하지 않다. 하나의 슬라이스 지연이 제2코어(CORE1)에 적용된다.
도 5는 각각이 2개의 슬라이스 그룹들을 포함하는 픽쳐들의 시퀀스를 나타내고, 도 6은 2개의 코어들을 이용하여 도 5에 도시된 픽쳐들의 시퀀스를 처리하는 과정을 개념적으로 나타낸다.
도 1의 컨트롤러(200A)는 2개의 하드웨어 코덱들(230-1과 230-2)을 포함하고, 제1코어(CORE0)는 제1하드웨어 코덱(230-1)을 의미하고, 제2코어(CORE1)는 제2하드웨어 코덱(230-2)을 의미한다고 가정한다.
도 6의 제1코어(CORE0)는, 인코드된 픽쳐(620)의 처리 복잡도(processing complexity)에 기초하여, 인코드된 픽쳐 (620)를 제1인코드된 유닛과 제2인코드된 유닛으로 분할한다고 가정한다. 도 5와 도 6에서는 제1인코드된 유닛은 2개의 슬라이드들(SLICE1-1과 SLICE1-2)을 포함하고 제2인코드된 유닛은 3개의 슬라이스들(SLICE1-3~SLICE1-5)을 포함한다.
도 6의 제2코어(CORE1)는, 인코드된 픽쳐(622)의 처리 복잡도에 기초하여, 인코드된 픽쳐 (622)를 제1인코드된 유닛과 제2인코드된 유닛으로 분할한다고 가정한다. 도 5와 도 6에서는 제1인코드된 유닛은 2개의 슬라이드들(SLICE2-1과 SLICE2-2)을 포함하고 제2인코드된 유닛은 3개의 슬라이스들(SLICE2-3~SLICE2-5)을 포함한다.
예를 들면, 인코드된 픽쳐들(620, 622, 624 및 626)이 슬라이스나 타일로 분할되어 있지 않거나, 또는 인코드된 픽쳐들(620, 622, 624 및 626) 간의 분할된 영역(예를 들면, 슬라이스 또는 타일)이 서로 처리 복잡도가 달라서 제1코어(CORE0) 및 제2코어(CORE1)가 병렬처리할 경우, 인코드된 픽쳐들(620, 622, 624 및 626)을 병렬처리에 알맞게 상기 분할된 영역을 재분할할 필요가 있을 수 있다. 이때, 제1코어(CORE0) 및 제2코어(CORE1)은 인코드된 픽쳐들(620, 622, 624 및 626)을 복수의 인코드된 유닛들로 분할하여 병렬처리할 수 있다. 여기서, 처리 복잡도(complexity)는 디코딩 시간에 관련될 수 있다.
도 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)는 각 픽쳐(620, 622, 624, ..., 626)를 처리하는 처리 시간에 관련될 수 있다.
제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)에 대한 디코딩과 인-루프 필터링이 수행되므로, 인-루프 필터링을 위한 추가적인 시간은 필요하지 않다.
제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)에 대한 디코딩과 인-루프 필터링이 수행되므로, 인-루프 필터링을 위한 추가적인 시간은 필요하지 않다.
도 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인코드된 유닛을 포함한다. 예컨대, 각 픽쳐(630, 632, 634, 636, 638, ...)는 인코드된 픽쳐를 의미할 수 있고, 수신 인터페이스(270)를 통해 수신된 인코드된 비트스트림(EB)을 의미할 수 있다. 각 인코드된 유닛은 하나의 슬라이스를 포함한다.
제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)에 대한 디코드 결과를 참조하여 제2슬라이스(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)에 대한 디코드 결과를 참조하여 제3슬라이스(SLICE1-3)에 대한 인-루프 필터링을 블록 단위로 수행한다. 또한, 제2코어(CORE1)는 제2픽쳐(632)의 제1슬라이스(SLICE2-1)에 대한 디코드 결과를 참조하여 제2슬라이스(SLICE2-2)에 대한 인-루프 필터링을 블록 단위로 수행한다.
제4시간(T24) 또는 제5시간(T25) 동안의 각 코어(CORE0, CORE1, 및 CORE2)의 작동은 제3시간(T23) 동안의 각 코어(CORE0, CORE1, 및 CORE2)의 작동과 실질적으로 동일 또는 유사하다.
도 9는 본 발명의 실시 예에 따른 모션 벡터 서치를 설명하기 위한 개념도이다. 도 3, 도 4, 및 도 9를 참조하면, 현재 처리 슬라이스가 제3픽쳐(614)의 제1슬라이스(614-1)일 때, 모션 벡터를 서치(또는 참조)하기 위해, 제1코어(CORE1)는 이미 디코드된 슬라이스들(610-1, 610-2, 및 612-1)을 서치할 수 있다. 즉, 서로 다른 코어들(CORE0과 CORE1) 각각에서 슬라이스들(612-2와 614-1) 각각이 병렬적으로 디코드되므로, 제1코어(CORE1)는, 모션 벡터를 서치 (또는 참조)하기 위해, 제2코어 (CORE1)에서 디코드되고 있는 제2픽쳐 (612)의 제2슬라이스(612-2)를 참조할 수 없다.
데이터 처리 시스템(100A)는 슬라이스들(612-2 및 614-1) 간의 종속성을 감소시키기 위하여 제3픽쳐(614)가 인코딩될 때, 제3픽쳐(614)의 참조픽쳐 및 참조픽쳐내의 참조좌표를 병렬처리시 종속성이 발생하지 않도록 인코딩할 수 있다. 예를 들면, 제1슬라이스(614-1)가 인코딩될 때, 제1슬라이스(614-1)가 제2슬라이스 (612-2) 대신 슬라이스들(610-1, 610-2 및 612-1) 중 하나를 참조하도록 하여 종속성을 피하도록 제1슬라이스(614-1)내의 매크로블럭의 모션 벡터가 결정될 수 있다. 따라서, 디코딩시 병렬처리시 종속성이 감소된다.
데이터 처리 시스템(100A)은 병렬 처리되는 슬라이스들 간의 종속성을 감소시키기 위하여 인코딩 시에 모션 제한 슬라이스 그룹(motion constraint slice group)을 생성하고 생성된 모센 제한 슬라이스 그룹을 참조할 수 있다.
상기 모션 제한 슬라이스 그룹은 현재 인코딩되는 슬라이스의 하나 또는 그 이상의 이전 슬라이스 또는 픽쳐 들 내에서 참조영역을 제한하는 정보 또는 참조 가능한 정보를 포함할 수 있다. 상기 모션 제한 슬라이스 그룹은 데이터 처리 시스템(100A)내의 메모리(301, 303, 305) 혹은 각 코어(230-1 내지 230-N) 내부의 메모리(MEM1~MEMN)에 저장될 수 있다.
도 10은 본 발명의 일 실시 예에 따른 각각이 2개의 타일들을 포함하는 픽쳐들의 시퀀스를 나타내고, 도 11은, 2개의 코어들을 이용하여, 도 10에 도시된 픽쳐들의 시퀀스를 처리하는 과정을 개념적으로 나타낸다.
도 10에 도시된 각 픽쳐(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, 642, 644, 646, ...)는 인코드된 픽쳐를 의미할 수 있고, 수신 인터페이스(270)를 통해 수신된 인코드된 비트스트림(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)에 대한 디코딩은 병렬적으로 수행된다.
또한, 제2시간(T32) 동안, 제1코어(CORE0)는 제1픽쳐(640)의 제1타일(TILE1-1)에 대한 디코드 결과를 참조하여 제2타일(TILE1-2)에 대한 인-루프 필터링을 블록 단위로 수행한다. 즉, 제2시간(T32) 동안, 제1코어(CORE0)에 의해 디코딩과 인-루프 필터링이 수행되므로, 상기 인-루프 필터링을 위한 추가적인 시간은 필요하지 않다.
제3시간(T33) 동안, 제1코어(CORE0)는 제3픽쳐(644)의 제1타일(TILE3-1)을 디코드하고, 제2코어(CORE1)는 제2픽쳐(642)의 제2타일(TILE2-2)을 디코드한다. 제2시간(T32) 동안, 제2픽쳐(642)의 제2타일(TILE2-2)에 대한 디코딩과 제3픽쳐 (644)의 제1타일(TILE3-1)에 대한 디코딩은 병렬적으로 수행된다.
또한, 제3시간(T33) 동안, 제2코어(CORE1)는 제2픽쳐(642)의 제1타일(TILE2-1)에 대한 디코드 결과를 참조하여 제2타일(TILE2-2)에 대한 인-루프 필터링을 블록 단위로 수행한다. 즉, 제3시간(T33) 동안, 제2코어(CORE1)에 의해 디코딩과 인-루프 필터링이 수행되므로, 상기 인-루프 필터링을 위한 추가적인 시간은 필요하지 않다.
제4시간(T34) 동안의 각 코어(CORE0과 CORE1)의 작동은 제2시간(T32) 동안의 각 코어(CORE0과 CORE1)의 작동과 실질적으로 동일 또는 유사하다.
도 12는 본 발명의 다른 실시 예에 따른 각각이 2개의 타일들을 포함하는 픽쳐들의 시퀀스를 나타낸다.
도 12에 도시된 각 픽쳐(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, ...)는 인코드된 픽쳐를 의미할 수 있고, 수신 인터페이스(270)를 통해 수신된 인코드된 비트스트림(EB)을 의미할 수 있다.
제1시간(T31) 동안, 제1코어(CORE0)는 제1픽쳐(650)의 제1타일(TILE1-1)를 디코드한다.
제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)에 대한 디코드 결과를 참조하여 제2타일(TILE1-2)에 대한 인-루프 필터링을 블록 단위로 수행한다. 즉, 제2시간(T32) 동안, 제1코어(CORE0)에 의해 디코딩과 인-루프 필터링이 수행되므로, 상기 인-루프 필터링을 위한 추가적인 시간은 필요하지 않다.
제3시간(T33) 또는 제4시간(T34) 동안의 각 코어(CORE0과 CORE1)의 작동은 제2시간(T32) 동안의 각 코어(CORE0과 CORE1)의 작동과 실질적으로 동일 또는 유사하다.
도 13은 본 발명의 실시 예에 따른 각각이 4개의 타일들을 포함하는 픽쳐들의 시퀀스를 나타내고, 도 14는, 2개의 코어들을 이용하여, 도 13에 도시된 픽쳐들의 시퀀스를 처리하는 과정을 개념적으로 나타낸다.
제1코어(CORE0)와 제2코어(CORE1)의 작동들은 도 1, 도 2, 도 13, 및 도 14를 참조하여 설명된다.
도 1의 컨트롤러(200A)는 2개의 하드웨어 코덱들(230-1과 230-2)을 포함하고, 제1코어(CORE0)는 제1하드웨어 코덱(230-1)을 의미하고, 제2코어(CORE1)는 제2하드웨어 코덱(230-2)을 의미한다고 가정한다.
제1인코드된 유닛은 2개의 타일들을 포함하고, 제2인코드된 유닛은 2개의 타일들을 포함한다.
도 13에 도시된 바와 같이, 각 픽쳐(660, 662, 및 664)는 4개씩의 타일들 (TILE1-1~TILE1-4, TILE2-1~TILE2-4, 및 TILE3-1~TILE3-4)를 포함한다. 예컨대, 각 픽쳐(660, 662, 및 664)는 인코드된 픽쳐를 의미할 수 있고, 수신 인터페이스(270)를 통해 수신된 인코드된 비트스트림(EB)을 의미할 수 있다.
제1시간(T51) 동안, 제1코어(CORE0)는 제1픽쳐(660)의 제1타일(TILE1-1)와 제2타일(TILE1-2)를 디코드한다. 제1시간(T51) 동안, 제1코어(CORE0)는, 제1픽쳐 (660)의 제1타일(TILE1-1)에 대한 디코드 결과를 참조하여, 타일들(TILE1-1과 TILE1-2) 사이의 경계에 대한 인-루프 필터링을 블록 단위로 수행한다.
제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)에 대한 디코딩은 병렬적으로 수행된다.
또한, 제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-2) 사이의 경계에 대한 인-루프 필터링을 블록 단위로 수행한다.
즉, 제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)로부터 출력된 인코드된 비트스트림을 디코드하고, 재구성된 비디오 데이터를 생성할 수 있다. 상기 재구성된 비디오 데이터는 디스플레이 인터페이스 (260)를 통해 디스플레이(400)에서 디스플레이될 수 있다.
실시 예에 따라, 디코더(800)는 재구성된 비디오 데이터를 메모리(MEM1)에 저장할 수 있다. 디코더(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)는, 현재 블록에 대한 블록 모드(또는, 미리 설정된 블록 모드)에 상응하는 블록 단위로, 적어도 하나의 기준 픽쳐를 참조하여 현재 블록의 움직임 벡터를 추정하고, 추정의 결과에 따라 현재 블록의 움직임 벡터를 결정할 수 있다. 상기 블록 단위는 16*16 블록, 16*8 블록, 8*16 블록, 8*8 블록, 8*4 블록, 4*8 블록, 또는 4*4 블록일 수 있으나 이에 한정되는 것은 아니다.
움직임 보상기(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을 참조하면, 도 15의 디코더(800)의 일 실시 예에 따른 디코더(800A)는 엔트로피 디코더(810A), 역 양자화기(820), 역 변환기(830), 움직임 보상기(840A), 가산기(850), 및 인-루프 필터 (860A)를 포함한다.
엔트로피 디코더(810A)는 수신된 인코드된 비트스트림(EBS) 또는 인코더 (700)로부터 출력된 인코드된 비트스트림을 수신하여 디코드하고, 양자화된 잔여 블록을 생성한다.
역 양자화기(820)는 엔트로피 디코더(810A)로부터 출력된 양자화된 잔여 블록을 역 양자화하고, 역 양자화된 잔여 블록을 생성한다.
역 변환기(830)는 역 양자화된 잔여 블록을 역변환하고, 복원된 (reconstructed) 잔여 블록을 생성한다.
움직임 보상기(840A)는 인-루프 필터(860A)로부터 출력된 복원된 블록에 포함된 현재 움직임 벡터를 이용하여 현재 블록을 예측하고, 예측 블록을 출력한다.
가산기(850)는 역 변환기(830)로부터 출력된 복원된 잔여 블록과 움직임 보상기(840A)로부터 출력된 예측 블록을 가산하여 현재 블록을 복원하고, 복원된 현재 블록을 출력한다.
인-루프 필터(860A)는 가산기(850)로부터 출력된 복원된 현재 블록을 인-루프 필터링하고, 인-루프 필터된 복원된 현재 블록(RV)을 출력한다. 즉, 인-루프 필터 (860A)는 복원된 비디오 데이터(RV)를 블록 단위로 출력할 수 있다.
실시 예들에 따라 각 인-루프 필터(790과 860A)는 디블로킹 필터를 포함할 수 있다. 다른 실시 예에 따라, 각 인-루프 필터(790과 860A)는 디블로킹 필터와 SAO(sample adaptive offset) 필터를 포함할 수 있다.
도 18 내지 도 22은 본 발명의 실시 예들에 따른 움직임 보상 정보 수정을 포함하는 동영상 디코딩 방법들을 설명하는 개념도들이다.
도 3, 도 4, 도 7, 도 8, 도 18 내지 도 22을 참조하면, 각 픽쳐(610, 612, 614, 또는 도 7의 630, 632 및 634)는 독립적으로 인코딩 또는 디코딩 가능한 분할 영역을 포함할 수 있다. 상기 분할 영역은 적어도 하나의 슬라이스(slice) 또는 타일 (tile)을 포함할 수 있다.
제1픽쳐(610 또는 630)는 제1슬라이스(SLICE1-1) 및 제2슬라이스 (SLICE1-2)를 포함하고, 제2픽쳐(612 또는 632)는 제3슬라이스(SLICE2-1) 및 제4슬라이스(SLICE2-2)를 포함하고, 제3픽쳐(614 또는 634)는 제5슬라이스 (SLICE3-1) 및 제6슬라이스(SLICE3-2)를 포함할 수 있다.
도 18에 예시적으로 도시된 바와 같이, 제5슬라이스(SLICE3-1), 제3슬라이스(SLICE2-1) 및 제4슬라이스(SLICE2-2) 각각은 제5매크로블록(M5), 제3매크로블록(M3) 및 제4매크로블록 (M4) 각각을 포함할 수 있다.
제3픽쳐(614 또는 634)가 제1코어(도 4의 CORE0) 또는 제3코어(도 8의 CORE2)에서 디코딩될 때, 디코더(800 또는 800A)는 제5매크로블록(M5)에 상응하는 인코딩된 비트스트림(bit stream)에서 제1 움직임 보상 정보를 추출할 수 있다. 제1 움직임 보상 정보는 참조 픽쳐의 인덱스 및 참조 픽쳐 내의 참조 좌표를 포함할 수 있다. 제1 움직임 보상 정보는 동영상 처리 표준 스펙(standard specification)에 따라 참조 인덱스(reference index) 또는 모션 벡터(motion vector)와 같은 참조 정보를 포함할 수 있다.
도 18을 참조하면, 제1 움직임 보상정보가 제5슬라이스(SLICE3-1)와 동시에 또는 병렬로 디코딩되는 제2픽쳐(612)의 제4슬라이스(SLICE2-2) 내의 좌표 (예컨대, 2차원)를 참조 좌표로 지시할 때, 아직 제4슬라이스(SLICE2-2)에 대한 디코딩이 끝나지 않았으므로, 제4매크로블록(M4)과 제5매크로블록(M5) 사이의 디코딩 종속성을 피하기 위하여 데이터 처리 시스템(100A) 은 제5슬라이스 (SLICE3-1)에 대한 디코딩 시에 제1 움직임 보상 정보에 관련된 좌표, 예컨대 참조 좌표를 변경할 수 있다.
예를 들면, 데이터 처리 시스템(100A)은 제1 움직임 보상 정보에 관련된 참조 좌표의 X축 좌표는 그대로 유지한 채 상기 참조 좌표의 Y축 좌표를 변경할 수 있다. 따라서, 데이터 처리 시스템(100A)은 제3슬라이스(SLICE2-1)의 하단 경계 면에 위치한 제3매크로블록(M3)을 참조하도록 참조 좌표를 변경할 수 있다. 따라서, 데이터 처리 시스템(100A)은 제4매크로블록(M4) 대신에 제3매크로블록(M3)을 참조하여 제5슬라이스(SLICE3-1)를 디코딩할 수 있다.
도 19를 참조하면, 도 18과 마찬가지로 제5슬라이스(SLICE3-1) 내의 제5매크로블록(M5)의 제1 움직임 보상 정보가 제5슬라이스(SLICE3-1)와 동시에 또는 병렬적으로 디코딩되는 제2픽쳐(612)의 제4슬라이스(SLICE2-2) 내의 좌표를 참조 좌표로 지시할 때, 아직 제4슬라이스(SLICE2-2)에 대한 디코딩이 끝나지 않았으므로, 제4매크로블록(M4)과 제5매크로블록(M5) 사이의 디코딩 종속성을 피하기 위하여 데이터 처리 시스템(100A)은 제1 움직임 보상 정보에 관련된 좌표를 포함하는 픽쳐, 예컨대, 참조 픽쳐를 변경할 수 있다.
예를 들면, 데이터 처리 시스템(100A)은 제1 움직임 보상 정보에 포함된 참조 좌표는 유지한 채 참조 픽쳐의 인덱스를 변경할 수 있다. 따라서, 데이터 처리 시스템(100A)은 제4매크로블록(M4)의 좌표와 같은 좌표를 갖는 제2슬라이스 (SLICE1-2) 내의 제2매크로블록(M2)을 참조하도록 참조 픽쳐를 변경할 수 있다.
따라서, 데이터 처리 시스템(100A)은 제4매크로블록(M4) 대신에 제2매크로블록(M2)을 참조하여 제5슬라이스(SLICE3-1)를 처리(예컨대, 디코딩)할 수 있다.
도 20을 참조하면, 제3픽쳐(614)는 제2픽쳐(612)보다 먼저 디스플레이 되는 픽쳐이나 제2 픽쳐(612)보다 늦게 디코딩되는 픽쳐일 수 있다. 도 20을 참조하면, 제5슬라이스(SLICE3-1) 내의 제5매크로블록(M5)의 제1 움직임 보상 정보가 양방향으로 픽쳐들(610과 312)을 참조 픽쳐로 포함할 때, 도 20은 제1슬라이스(SLICE1-1) 내의 제1매크로블록(M1)의 위치 및 제4슬라이스(SLICE2-2) 내의 제4매크로블록(M4)의 위치를 나타낸다. 이때, 제5매크로블록(M5)의 제1 움직임 보상 정보가 제5슬라이스(SLICE3-1)와 동시에 또는 병렬적으로 디코딩되는 제2픽쳐(612 또는 632)의 제4슬라이스(SLICE2-2)내의 좌표를 참조 좌표로 포함할 때, 아직 제4슬라이스(SLICE2-2)의 디코딩이 끝나지 않았으므로, 제4매크로블록(M4)과 제5매크로블록(M5) 사이의 디코딩 종속성을 피하기 위하여 데이터 처리 시스템(100A)은 제1 움직임 보상 정보에 관련된 참조 픽쳐의 인덱스를 변경할 수 있다.
예를 들면, 데이터 처리 시스템(100A)은 제1픽쳐(610)만 참조하고 제2픽쳐 (612)를 참조하지 않도록 제1 움직임 보상 정보를 변경할 수 있다. 즉, 데이터 처리 시스템(100A)은 양방향 참조로부터 단방향 참조로 제1 움직임 보상 정보를 변경할 수 있다.
도 21을 참조하면, 도 20과 마찬가지로 제3픽쳐(614)는 제2픽쳐(612)보다 먼저 디스플레이 되는 픽쳐이나 제2 픽쳐(612)보다 늦게 디코딩되는 픽쳐일 수 있다.
도 21를 참조하면, 제5슬라이스(SLICE3-1) 내의 제5매크로블록(M5)의 제1 움직임 보상 정보가 제1슬라이스(SLICE1-1)내의 제1매크로블록(M1)의 좌표 및 제4슬라이스(SLICE2-2) 내의 제4매크로블록(M4)의 좌표를 참조 좌표로 포함할 때, 데이터 처리 시스템(100A)은 각 매크로블록(M2, M4, 또는 M5)을 참조하도록 다음과 같은 작동을 수행할 수 있다.
제5매크로블록(M5)의 제1 움직임 보상 정보가 제5슬라이스(SLICE3-1)와 동시에 또는 병렬적으로 디코딩되는 제2픽쳐(612)의 제4슬라이스(SLICE2-2) 내의 좌표를 참조 좌표로 포함할 때, 아직 제4슬라이스(SLICE2-2)의 디코딩이 끝나지 않았으므로, 제4매크로블록(M4)과 제5매크로블록(M5) 사이의 디코딩 종속성을 피하기 위하여, 데이터 처리 시스템(100A)은 제1 움직임 보상 정보에 관련된 참조 픽쳐의 인덱스 또는 참조 픽쳐 내의 참조 좌표를 변경할 수 있다.
예를 들면, 데이터 처리 시스템(100A)은 제4매크로블록(M4)의 참조 좌표의 X좌표는 그대로 유지한 채 상기 참조 좌표의 Y좌표를 변경할 수 있다. 즉, 데이터 처리 시스템(100A)은 제3슬라이스(SLICE2-1) 내의 제3매크로블록(M3)을 참조하도록 참조 좌표를 변경할 수 있다(1). 데이터 처리 시스템(100A)은 제1 움직임 보상 정보에 관련된 참조 좌표, 즉 제4매크로블록(M4)의 참조 좌표를 그대로 유지한 채, 참조 픽쳐의 인덱스를 제2픽쳐(612)로부터 제1픽쳐(610)로 변경할 수 있다(2). 따라서, 데이터 처리 시스템(100A)은 제1 움직임 보상 정보가 제2매크로블록(M2)의 좌표를 참조 좌표로 포함하도록 제1 움직임 보상 정보를 변경할 수 있다.
결과적으로, 데이터 처리 시스템(100A)은 제1매크로블록(M1), 제2매크로블록(M2), 또는 제3매크로블록(M3)을 참조하여 제5매크로블록(M5)을 디코딩할 수 있다.
따라서, 도 21을 참조하여 설명한 바와 같이, 데이터 처리 시스템 (100A)은 변경된 제1 움직임 보상 정보에 기초하여 양방향 참조를 수행하여 제5슬라이스 (SLICE3-1)에 대한 디코딩을 수행할 수 있다.
도 22를 참조하면, 제5슬라이스(SLICE3-1)가 디코딩될 때, 제5매크로블록 (M5)이 제5슬라이스(SLICE3-1)와 동시에 또는 병렬적으로 디코딩되는 제2픽쳐 (612)의 제4슬라이스(SLICE2-2)내의 제4매크로블록(M4)의 좌표를 참조할 때, 아직 제4슬라이스(SLICE2-2)의 디코딩이 끝나지 않았으므로, 제4매크로블록(M4)과 제5매크로블록(M5) 사이의 디코딩 종속성을 피하기 위하여, 데이터 처리 시스템 (100A)은 제5슬라이스(SLICE3-1)의 제1 움직임 보상 정보의 참조 타입(type)을 단방향 참조에서 양방향 참조로 변경할 수 있다.
예를 들면, 데이터 처리 시스템(100A)은 제4매크로블록(M4)의 참조 좌표의 X좌표는 그대로 유지한 채 상기 참조 좌표의 Y좌표를 변경하여 제3슬라이스 (SLICE2-1)내의 제3매크로블록(M3)을 참조하도록 참조 좌표를 변경할 수 있다. 또한, 데이터 처리 시스템(100A)은 추가로 제2슬라이스(SLICE1-2) 내의 제2매크로블록(M2)을 더 참조하도록 제1 움직임 보상 정보를 변경할 수 있다. 이때, 제2매크로블록(M2)의 참조 좌표와 제4매크로블록(M4)의 참조 좌표는 동일할 수 있다.
설명의 편의를 위해, 도 18 내지 도 22에서, 제5매크로블록(M5)이 다른 슬라이스의 매크로블록(예컨대 제2매크로블록(M2), 제3매크로블록(M3), 또는 제1매크로블록(M1))을 참조하는 것으로 도시되었으나. 다양한 비디오 부호화 표준에 따라 제5매크로블록(M5)이 참조하는 블록은 반드시 매크로블록이 아닐 수 있으며 제5매크로블록(M5)이 참조하는 블록의 크기와 상기 참조블록의 크기는 제5매크로블록(M5)와 동일하거나 서로 다를 수 있다.
예를 들면, 제5매크로블록(M5)의 크기가 16x16일 때, 제5매크로블록 (M5)이 참조하는 블록의 크기는 4x4일 수 있다. 따라서, 제5매크로블록(M5)이 참조하는 블록은 반드시 매크로블록이 아닐 수 있으며 상기 매크로블록보다 작은 크기의 하나 또는 그 이상의 서브블록들(sub-blocks)의 조합일 수 있다.
또한, 움직임 보상 정보는 매크로블록단위로 존재하거나 또는 매크로블록보다 작은 단위의 서브블록들 단위로 존재할 수 있다. 따라서, 하나의 매크로블록의 움직임 보상 정보는 상기 매크로블록에 포함된 복수의 서브블록과 상기 복수의 서브블록에 각각 상응하는 복수의 움직임 보상 정보를 포함할 수 있다.
도 18 내지 도 22에서 설명된 움직임 보상 정보 변경방법에서, 각 픽쳐(610, 612, 614, 또는 도 7의 630, 632 및 634)의 분할 영역은 하나 또는 그 이상의 슬라이스들을 포함하는 것으로 설명되었으나 이에 한정되지 않고, 상기 분할 영역은 하나 또는 그 이상의 타일들을 포함할 수 있다.
상기 분할 영역이 타일을 포함할 경우, 상기 타일의 분할 형태에 따라 참조 픽쳐 내의 참조 좌표를 변경할 때, 데이터 처리 시스템(100A)은 상기 참조 좌표의 X-좌표 및 Y-좌표 중 적어도 하나를 변경하여 움직임 보상 정보를 변경할 수 있다.
도 18 내지 도22을 참조하여 설명된 데이터 처리 시스템(100A)에서 수행되는 움직임 보상 정보 변경 방법은 움직임 보상 정보에 포함된 참조 가능한 참조 픽쳐의 개수, 움직임 보상 벡터(motion compensation vector)의 크기 및/또는 디코딩된 매크로블록의 주변 매크로블록과의 경계선에서의 픽셀 값들의 차이 값의 크기 등에 기초하여 움직임 보상 정보를 변경할 수 있다.
예를 들면, 데이터 처리 시스템(100A)은, 현재 보상 블록(디코딩을 통해 복원되기 위하여 선택된 매크로블록)의 참조 가능한 참조 픽쳐들의 개수가 많을 경우, 상기 참조 픽셀들 중에서 시간적으로 가장 가까운 참조 픽쳐를 선택하도록 움직임 보상 정보를 변경할 수 있다. 한편, 데이터 처리 시스템(100A)이 참조 좌표를 변경할 때, 데이터 처리 시스템(100A)은 움직임 보상 벡터의 크기가 작아지는 방향으로 상기 참조 좌표를 변경할 수 있다. 또한, 참조 가능한 후보 매크로블록들이 복수 개일 경우, 데이터 처리 시스템 (100A)은 디코딩후 복원된 매크로블록과 적어도 하나의 주변 매크로블록과의 경계에 있는 픽셀들 간의 픽셀 값의 차이가 작아지도록 참조 픽쳐 또는 참조 좌표를 선택하도록 상기 움직임 보상 정보를 변경할 수 있다. 여기서, 픽셀은 픽셀 데이터를 의미할 수 있고, 실시 예들에 따라 상기 픽셀은 RGB 데이터 포맷, YUV 데이터 포맷, 또는 YCbCr 데이터 포맷을 가질 수 있다.
도 18 내지 도22에서 설명된 움직임 보상 정보 변경 방법은, 변경된 참조 픽쳐 또는 참조 좌표로 인해, 디코딩된 매크로블록의 픽셀 값에서 오차를 발생시킬 수 있다. 즉, 상기 움직임 보상 정보를 변경하는 것은 변경된 움직임 보상 정보(예컨대, 참조 픽쳐 또는 참조 좌표)가 가르키는 매크로블록과 변경 전 움직임 보상 정보(예컨대, 참조 픽쳐 또는 참조 좌표)가 가르키는 매크로블록이 다르기 때문에 디코딩 결과는 복원된 매크로블록내의 픽셀 값들에서 오차를 발생할 수 있다.
상기 오차는 복원된 매크로블록의 경계면에서 부자연스러운 경계선이 화면에 표시되도록 할 수 있다. 이때, 기존과 같은 방식의 인-루프 필터링을 수행하면 상기 오차가 상기 오차가 발생한 현재 보상블록의 경계면에 인접한 매크로블록으로 확산될 수 있다.
이때 발생하는 오차는 부분적인 인-루프 필터링에 의해 주변 매크로블록으로 확산되는 것이 방지될 수 있다. 부분적인 인-루프 필터링은 도 23a 및 도 23b을 참조하여 상세히 설명될 것이다.
도 18 내지 도22에서 설명된 움직임 보상 정보 변경 방법은 하나의 픽쳐 내에 분할 영역이 복수의 슬라이스인 경우를 예로 설명하였으나, 상기 픽쳐가 하나의 분할 영역으로 이루어진 경우, 특히 하나의 슬라이스로만 이루어진 경우에도 마찬가지로 적용 가능하다.
예를 들면, 데이터 처리 시스템(100A)은, 현재 보상 블록의 참조 픽쳐가 디코딩 중이더라도, 상기 현재 보상 블록의 움직임 보상 정보를 상기 참조 픽쳐에서 디코딩이 끝난 영역을 참조하도록 변경하거나 디코딩이 끝난 다른 픽쳐를 참조하도록 변경할 수 있다.
도 23a과 도 23b는 본 발명의 실시예에 따른 부분적인 인-루프(partial in-loop) 필터링을 설명하기 위한 개념도이다.
도 23a는 인접한 블록들 간에서 수행되는 인-루프 필터링을 설명하기 위한 개념도이다. 매크로블록(M1)은 인접한 다른 매크로블록들의 픽셀 값들을 참조하여 인-루프 필터링을 수행한다.
도 23b을 참조하면, 본 발명의 실시 예에 따른 오차 보상 방법은 오차가 발생할 수 있는 매크로블록(M1, 보상블록)에 대한 디코딩 시 인접한 매크로블록들에 대한 인-루프 필터링을 생략하고 상기 오차가 발생할 수 있는 매크로블록(M1)의 내부에 대해서만 인-루프 필터링을 수행한다. 상기 제한된 인-루프 필터링 방법을, 이후 설명에서 부분적인 인-루프 필터링으로 지칭하기로 한다. 상기 부분적인 인-루프 필터링은 매크로블록(M1)의 경계면에서 일부방향으로만 인-루프 필터링을 의미할 수 있다.
즉, 데이터 처리 시스템(100A), 수신된 픽쳐 내에 포함된 매크로블록(M1)을 디코딩할 때 매크로블록(M1)의 움직임 보상 정보의 변경으로 인하여 발생하는 매크로블록(M1)내의 픽셀 값의 오차가 매크로블록(M1)의 주변으로 확산되는 것을 방지하기 위하여, 매크로블록(M1)의 주변 매크로블록들의 경계 픽셀 값들만을 참조하여 매크로블록(M1)에 대한 부분적인 인-루프 필터링을 수행함으로서 디블록킹 (de-blocking) 효과를 얻을 수 있다.
도 23b에 도시된 부분적인 인-루프 필터링은 도 23a에 도시된 인-루프 필터링 동작중의 일부에 해당될 수 있으므로, 본 발명의 부분적인 인-루프 필터링을 수행하는 부분적인 인-루프 필터링을 수행하는 인-루프 필터는 수신된 제어 신호에 응답하여 수신된 제1제어 신호가 활성화 되었을 때는 부분적인 인-루프 필터링을 수행하고 상기 제1제어 신호가 비활성화되었을 때는 도 23a의 일반적인 인-루프 필터링 동작을 수행하도록 구성될 수 있다.
도 24는 도 15에 도시된 디코더의 다른 실시 예를 나타내는 블록도이다. 도 24를 참조하면, 도 15의 디코더(800)의 다른 실시 예에 따른 디코더(800B)는 엔트로피 디코더(810B), 역 양자화기(820), 역 변환기(830), 움직임 보상기(840B), 가산기(850), 및 부분적인 인-루프를 수행하는 인-루프 필터(860B)를 포함할 수 있다. 또한, 디코더(800B)는 도 1의 하드웨어 코덱들(230-1~230-N) 중에서 적어도 하나에 내장될 수 있다.
도 18 내지 도 23b를 참조하여 설명한 바와 같이, 디코더(800B)는 추출된 움직임 보상 정보를 변경하는 경우 부분적인 인-루프 필터링을 수행하기 위하여 제1제어 신호를 인-루프 필터(860B)로 제공할 수 있다. 제1제어 신호는 엔트로피 디코더(810B) 또는 움직임 보상기(840B)에 의하여 제공될 수 있다. 이때, 엔트로피 디코더(810B) 또는 움직임 보상기(840B)는 움직임 보상 정보 수정하는 움직임 보상 정보 수정기(870)를 포함할 수 있다.
예를 들면, 인코딩된 비트스트림이 수신되면, 엔트로피 디코더(810B)는 수신된 비트스트림에서 디코딩될 매크로블록에 대한 움직임 보상 정보를 추출할 수 있다. 상기 추출된 움직임 보상 정보는 상기 디코딩될 매크로블록 또는 상기 디코딩될 매크로블록에 포함된 서브블록의 참조 픽쳐의 인덱스 및 참조 픽쳐 내의 참조 좌표를 포함할 수 있다.
엔트로피 디코더(810B)는 상기 인코딩된 비트스트림 내에 포함된 픽쳐, 슬라이스 또는 타일의 디코딩 완료 여부를 표시하는 디코딩 이력 정보를 생성할 수 있다. 상기 디코딩 이력 정보는 엔트로피 디코더(810B) 또는 디코더(800B) 내에 존재하는 버퍼 또는 캐쉬(cache)에 저장될 수 있다.
엔트로피 디코더(810B)는, 상기 추출된 움직임 보상 정보와 상기 디코딩 이력 정보를 참조하여, 인코딩된 비트스트림을 병렬 처리하기 위하여, 상기 추출된 움직임 보상 정보의 변경이 필요한지를 판단하고, 판단의 결과에 따라 움직임 보상 정보가 변경되면 제1제어 신호(IIL)를 인-루프 필터(860B)로 전송한다. 인-루프 필터(860B)는 제1제어 신호(IIL)에 응답하여 부분적인 인-루프 필터링을 수행한다.
변경된 움직임 보상 정보 및 제1제어 신호(IIL)는 엔트로피 디코더(810B) 대신에 움직임 보상기(840B)에서 발생될 수도 있다. 디코더(800B)의 구조 및 동작은 도 17의 디코더(800A)의 구조와 동작과 실질적으로 동일 또는 유사하므로, 디코더(800B)의 구조와 동작에 대한 상세한 설명은 생략한다.
디코딩 이력 정보는 도 1의 각 메모리(MEM1~MEMN)에 저장되어 하드웨어 코덱들(230-1~230-N) 간에 공유되거나 데이터 처리 시스템(100A)의 별도의 메모리(미도시)에 저장되어 하드웨어 코덱들(230-1~230-N) 간에 공유될 수 있다.
도 25는 본 발명의 실시 예에 따른 데이터 처리 시스템이다. 도 25를 참조하면, 데이터 처리 시스템(900)은 제1코어(230-1), 제2코어(230-2), 디코딩 이력 저장소(decoding history storage; 910), 및 움직임 보상 정보 수정기(motion compensation information modifier; 920)를 포함할 수 있다.
도 24에서 설명된 디코더(800B)가 각 코어 내부에 별도의 디코딩 이력 정보 저장소(미도시) 및 부분적인 인-루프를 수행하는 인-루프 필터를 포함하는 것과 달리, 도 25에 도시된 데이터 처리 시스템(900)은 각 코어(230-1 및 230-2) 사이에 공유되는 디코딩 이력 저장소(910) 및 움직임 보상 정보 수정기(920)를 포함할 수 있다.
디코딩 이력 저장소(910)는 각 코어(230-1 및 230-2)에 의해 디코딩된 픽쳐들 및/또는 슬라이스들에 대한 디코딩 완료 여부를 표시하는 디코딩 이력 정보를 수신하여 저장할 수 있다.
움직임 보상 정보 수정기(920)는 각 코어(230-1 및 230-2)로부터 현재 디코딩될 매크로블록(예컨대, 보상 블록)에 관한 움직임 보상 정보를 수신하고, 디코딩 이력 저장소(910)에 저장된 디코딩 이력 정보 및 수신된 움직임 보상 정보를 참조하여 변경된 움직임 보상 정보 및 부분적인 인-루프 필터링 제어 신호인 제1 제어 신호(IIL)를 각 코어(230-1 및 230-2)에 제공할 수 있다.
도 25에서는 2개의 코어들(230-1과 230-2)만이 예시적으로 도시되어 있으나 이에 한정되지 않고, 디코딩 이력 저장소(910)와 움직임 보상 정보 수정기(920)은 3개 이상의 코어들에 의해 공유될 수도 있다.
실시 예에 따라, 데이터 처리 시스템(900)은 2개의 코어들(230-1과 230-2)에 의해 공유될 수 있는 인-루프 필터(930)을 더 포함할 수 있다. 제1코어(230-1)와 제2코어(230-2)가 인-루프 필터링이 필요한 매크로블록의 데이터를 인-루프 필터(930)로 전송하면, 인-루프 필터(930)는 수신된 매크로블록의 데이터를 인-루프 필터링하여, 인-루프 필터링된 매크로블록의 데이터를 제1코어(230-1) 및 제2코어(230-2)로 전송한다.
이때, 인-루프 필터(930)는 움직임 보상 정보 수정기(920)로부터 전송된 제1제어 신호(IIL)에 응답하여 현재 보상 블록에 대해 부분적인 인-루프 필터링을 수행할 수 있다. 제1제어 신호(IIL)가 활성화되면 인-루프 필터(930)은 현재 보상 블록에 대해 부분적인 인-루프 필터링을 수행하고 부분적인 인-루프 필터링된 보상 블록에 상응하는 데이터를 제1코어(230-1) 또는 제2코어(230-2)로 전송한다.
도 26는 도 18 내지 도 25에서 설명된 인코딩된 비트스트림 내에 포함된 움직임 보상 정보의 포맷이다.
도 26를 참조하면, 인코딩된 비트스트림(1000)내에 일부 영역은 디코딩될 매크로블록 또는 서브블록이 속하는 참조 픽쳐의 인덱스(1010-2) 및 참조 좌표, 즉, 참조 블록의 X-좌표(1010-3) 및 Y-좌표(1010-4)을 포함하는 움직임 보상 정보(1010)로 할당될 수 있다.
도 20 내지 도 22에서 설명한 바와 같이 상기 디코딩될 매크로블록이 양방향으로 픽쳐들을 참조할 경우, 움직임 보상 정보(1010)는 매크로블록 타입 (1010-1), 매크로블록 타입(1010-1)에 따른 추가적인 참조 픽쳐의 인덱스(1010-2), 추가적인 X-좌표(1010-3), 및 추가적인 Y-좌표(1010-4)를 포함할 수 있으나 이에 한정되는 것은 아니다.
표준 스펙에 의한 신택스(Syntax)에서 참조 픽쳐 및 참조 좌표는 다양하게 정의될 수 있다. 예를 들면, H.264 표준 스펙에서 움직임 보상 정보 관련 신택스는 현재 움직임 보상 블록이 어느 픽쳐를 참조하는지를 나타내는 참조 픽쳐의 ID (ref_idx_lx)를 포함하고, 상기 현재 움직임 보상 블록의 차분(difference)의 차분 움직임 벡터(differential motion vector; mvd_lx)를 포함할 수 있다.
또한, 상기 신택스는 단방향 참조 또는 양방향 참조를 표시하는 매크로블록의 타입(macroblock type: mb_type)을 포함할 수 있다. 도 18 내지 도 22에서 상기 참조픽쳐의 ID(ref_idx_lx) 및 차분 움직임 벡터(mvd_lx)는 선택적으로 변경될 수 있고, 도 26에서는 매크로블록의 타입(mb_type)이 변경될 수 있다. 상기 매크로블록의 타입(mb_type)은 도 26의 매크로블록 타입(1010-1)에 상응하고, 상기 참조 픽쳐의 ID(ref_idx_lx)는 도 26의 참조 픽쳐의 인덱스(1010-2)에 상응하고, 상기 차분 움직임 벡터(mvd_lx)는 도 26의 참조좌표(1010-3 및 1010-4)에 상응할 수 있다.
도 27은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다. 도 27을 참조하면, 데이터 처리 시스템(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)의 구조와 작동은 도 27에 도시된 컨트롤러(200B)의 구조와 작동과 실질적으로 동일 또는 유사하다.
각 코어(231-1~231-N)의 작동은 각 하드웨어 코덱(230-1~230-N)의 작동과 실질적으로 동일 또는 유사하다. 또한, 각 코어(231-1~231-N)는 각 메모리 (MEM1~MEMN)에 상응하는 각 메모리를 포함할 수 있다..
각 코어(231-1~231-N)는 도 15부터 도 17(또는 도 15, 도 16, 및 도 24)을 참조하여 설명된 구성 요소들 (701, 700, 및 800)을 포함한다. 도 4부터 도 14를 참조하여 설명된 제1코어(CORE0)는 제1코어(231-1)이고, 제2코어(CORE1)는 제2코어(231-2)이고, N이 3일 때 제3코어(CORE2)는 제3코어(231-3)이다.
도 28는 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다. 도 28를 참조하면, 데이터 처리 시스템(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)의 구조와 작동은 도 28에 도시된 컨트롤러(200C)의 구조와 작동과 실질적으로 동일 또는 유사하다.
각 코어(CORE1~COREN))의 작동은 각 하드웨어 코덱(230-1~230-N)의 작동과 실질적으로 동일 또는 유사하다. 또한, 각 코어(231-1~231-N)는 각 메모리 (MEM1~MEMN)에 상응하는 각 메모리(예컨대, 캐시)를 포함할 수 있다.
각 코어(CORE1~COREN)는 소프트웨어 코덱(software codec)을 실행할 수 있다. 도 4부터 도 14를 참조하여 설명된 제1코어(CORE0)는 제1코어(CORE1)이고, 제2코어(CORE1)는 제2코어(CORE2)이고, N이 3일 때 제3코어(CORE2)는 제3코어 (CORE3)이다.
각 코어(CORE1~COREN)에서 실행되는 소프트웨어 코덱은 도 4부터 도 14를 참조하여 설명된 디코딩, 또는 디코딩과 인-루프 필터링을 수행할 수 있다.
도 29은 도 1, 도 27, 또는 도 28에 도시된 데이터 처리 시스템의 작동을 설명하는 플로우 차트이다.
도 1부터 도 29을 참조하면, 비디오 데이터에 포함된 제1픽쳐 내지 제3픽쳐 각각은 제1 코어 내지 제3코어 각각에 디코딩되도록 할당된다(S100). 제1픽쳐 내지 제3픽쳐 각각은 제1슬라이스(또는 제1타일) 및 제2슬라이스 (또는 제2타일)을 포함할 수 있다.
상기 제1코어를 이용하여 제1픽쳐의 제1슬라이스(또는 제1타일)가 인코딩된다(S110). 상기 제1코어를 이용한 상기 제1픽쳐의 제2슬라이스(또는 제2타일)에 대한 디코딩과 병렬적으로, 상기 제2코어를 이용한 제2픽쳐의 제1슬라이스(또는 제1타일)에 대한 인코딩이 수행된다(S120). 상기 제1코어는 상기 제1픽쳐의 제1슬라이스의 디코딩 결과를 참조하여, 상기 제1픽쳐의 제1슬라이스 및 제2슬라이스의 인루프 필터링을 더 수행할 수 있다(S120).
상기 제1코어를 이용한 제3픽쳐의 제1슬라이스(또는 제1타일)에 대한 인코딩과 병렬적으로 제2코어를 이용한 상기 제2픽쳐의 제2슬라이스(또는 제2타일)에 대한 인코딩이 수행된다(S130). 상기 제2코어는 상기 제2픽쳐의 제1슬라이스의 디코딩 결과를 참조하여, 상기 제2픽쳐의 제1슬라이스 및 제2슬라이스의 인루프 필터링을 더 수행할 수 있다(S130).
도 1부터 도 14, 도 27부터 도 29을 참조하여 설명된 디코딩 방법은 인코딩 방법에 그대로 적용될 수 있다.
도 30은 도 1, 도 25, 도 27, 또는 도 28에 도시된 데이터 처리 시스템의 동작을 설명하는 플로우 차트이다.
도 1부터 도 30을 참조하면, 각 코어는 수신된 픽쳐 내의 분할 영역을 디코딩하여 디코딩 결과에 상응하는 디코딩 이력 정보를 생성하고 저장한다(S210).
각 코어의 분할 영역은 적어도 하나의 슬라이스 또는 타일을 포함할 수 있다. 각 코어는 디코딩되는 매크로블록의 움직임 보상 정보를 생성할 수 있다(S220). 본 명세서에서 생성의 의미는 추출의 의미를 포함한다. 예를 들면, 인코드된 비트스트림에서 참조픽쳐 및 참조좌표 값을 생성하는 과정은 상기 인코드된 비트스트림 내에 저장된 참조픽쳐 및 참조좌표를 검색하여 추출하는 과정을 포함한다.
상기 생성된 움직임 보상 정보는 각 코어내의 엔트로피 인코더(810B) 또는 움직임 보상기(840B)로부터 생성될 수 있다. 데이터 처리 시스템(100A, 100B, 또는 100C)은 상기 디코딩 이력 정보와 상기 생성된 움직임 보상 정보를 참조하여 코어들간의 종속성을 판단하고, 판단의 결과에 따라 상기 종속성이 있다고 판단될 경우, 데이터 처리 시스템(100A, 100B, 또는 100C)은 상기 종속성을 제거하기 위하여 상기 움직임 보상 정보를 변경할 수 있다(S230).
데이터 처리 시스템(100A, 100B, 또는 100C)이 상기 움직임 보상 정보를 변경할 때, 데이터 처리 시스템(100A, 100B, 또는 100C)은 참조 픽쳐의 인덱스 또는 참조 픽쳐 내의 참조 좌표를 변경할 수 있다.
움직임 보상 정보가 변경되면, 데이터 처리 시스템(100A, 100B, 또는 100C)은 변경된 움직임 보상 정보에 기초하여 매크로블록에 대한 디코딩을 수행할 수 있다(S240). 상기 디코딩된 매크로블록이 분할 영역의 경계에 있는 매크로 블록일 경우, 데이터 처리 시스템(100A, 100B, 또는 100C)은 부분적인 인-루프 필터링을 수행한다(S250).
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100A, 900, 100B, 100C; 데이터 처리 시스템
200A, 200B, 200C; 컨트롤러
230-1~230-N; 하드웨어 코덱
231-1~231-N; 코어
CORE0; 제1코어
CORE1; 제2코어
CORE2: 제3코어

Claims (20)

  1. 수신된 제1픽쳐를 디코딩하고 디코드된 제1픽쳐의 디코딩 이력 정보를 생성하는 제1코어; 및
    수신된 제2픽쳐에 포함된 제1움직임 보상 정보와 상기 디코드된 제1픽쳐의 디코딩 이력 정보를 참조하여, 상기 제1움직임 보상 정보를 변경하고, 변경된 제1움직임 보상 정보와 상기 디코드된 제1픽쳐를 참조하여 상기 제2픽쳐를 디코딩하는 제2코어를 포함하는 데이터 처리 시스템.
  2. 제1항에 있어서, 상기 제1코어는,
    수신된 제3픽쳐에 포함된 제2움직임 보상 정보와 상기 디코드된 제1픽쳐의 디코딩 이력 정보를 참조하여, 상기 제2움직임 보상 정보를 변경하고, 상기 제1픽쳐와 상기 제2픽쳐 중 적어도 하나와 상기 변경된 제2움직임 보상 정보를 참조하여 상기 제3픽쳐를 디코딩하는 데이터 처리 시스템.
  3. 제2항에 있어서,
    상기 제1코어는 상기 제2움직임 보상 정보를 변경하는 제1움직임 보상 정보 수정기를 포함하고,
    상기 제2코어는 상기 변경된 제1움직임 보상 정보를 변경하는 제2움직임 보상 정보 수정기를 포함하는 데이터 처리 시스템.
  4. 제3항에 있어서,
    상기 제1코어는 상기 제1움직임 보상 정보 수정기에 연결된 제1인-루프(in-loop) 필터를 더 포함하고,
    상기 제2코어는 상기 제2움직임 보상 정보 수정기에 연결된 제2인-루프 필터를 더 포함하는 데이터 처리 시스템.
  5. 제4항에 있어서,
    상기 제1인-루프 필터는, 상기 제1움직임 보상 정보 수정기로부터 수신된 제1 제어 신호에 기초하여, 상기 변경된 제1움직임 보상 정보와 연관된 블록의 내부에서만 디-블록킹(de-blocking)을 수행하는 부분적인 인-루프(partial in-loop) 필터링을 수행하고,
    상기 제2인-루프 필터는, 상기 제2움직임 보상 정보 수정기로부터 수신된 제2 제어 신호에 기초하여, 상기 변경된 제2움직임 보상 정보와 연관된 블록의 내부에서만 디-블록킹을 수행하는 부분적인 인-루프 필터링을 수행하는 데이터 처리 시스템.
  6. 제2항에 있어서,
    상기 제1픽쳐 내지 상기 제3픽쳐 각각은 적어도 하나의 분할 영역을 포함하는 데이터 처리 시스템.
  7. 제1항에 있어서,
    상기 제1픽쳐는 제1분할 영역을 포함하고,
    상기 제1픽쳐의 디코딩 이력 정보는 상기 제1분할 영역의 디코딩 이력 정보를 포함하며,
    상기 제2코어는 상기 제1분할 영역의 디코딩 이력 정보에 기초하여 상기 제1움직임 보상 정보를 변경하는 데이터 처리 시스템.
  8. 제7항에 있어서,
    상기 변경된 제1움직임 보상 정보는 상기 제1움직임 보상 정보에 포함된 참조 픽쳐의 참조 좌표가 변경된 움직임 보상 정보인 데이터 처리 시스템
  9. 제7항에 있어서,
    상기 제2픽쳐는 제2분할 영역을 포함하고,
    상기 제2픽쳐의 디코딩 이력 정보는 상기 제2분할 영역의 디코딩 이력 정보를 포함하며,
    상기 제1코어는 상기 제2분할 영역의 디코딩 이력 정보에 기초하여 상기 제2움직임 보상 정보를 변경하는 데이터 처리 시스템.
  10. 제9항에 있어서,
    상기 변경된 제2움직임 보상 정보는 상기 제2움직임 보상 정보에 포함된 참조 픽쳐 인덱스가 변경된 움직인 보상 정보인 데이터 처리 시스템
  11. 제1분할 영역을 포함하는 제1픽쳐를 수신하는 단계;
    제2분할 영역을 포함하는 제2픽쳐를 수신하는 단계;
    상기 제2픽쳐에 포함된 제1움직임 보상 정보를 추출하는 단계;
    상기 추출된 제1움직임 보상 정보를 변경하는 단계; 및
    상기 변경된 제1움직임 보상 정보와 상기 제1분할 영역을 참조하여 상기 제2픽쳐를 디코딩하는 단계를 포함하는 동영상 디코딩 방법.
  12. 제11항에 있어서, 상기 제1움직임 보상 정보를 변경하는 단계는,
    상기 제1움직임 보상 정보와 연관된 참조 픽쳐의 디코딩 이력 정보를 참조하여, 상기 참조 픽쳐 내의 참조 좌표를 변경하는 단계를 포함하는 동영상 디코딩 방법
  13. 제12항에 있어서,
    상기 제1픽쳐는 상기 제1분할 영역과 다른 제3분할 영역을 포함하고,
    상기 참조 픽쳐 내의 참조 좌표를 변경하는 단계는, 상기 참조 픽쳐 내의 참조 좌표를 포함하는 영역이 상기 제3분할 영역에서 상기 제1분할 영역으로 변경되도록, 상기 제1움직임 보상 정보를 변경하는 단계인 동영상 디코딩 방법.
  14. 제13항에 있어서,
    상기 제1픽쳐와 상기 변경된 제1움직임 보상 정보에 기초하여 상기 제2분할 영역에 포함된 블록에 대한 디코딩을 수행하는 단계; 및
    상기 디코딩된 블록에 대한 부분적인 인-루프 필터링을 수행하는 단계를 더 포함하는 동영상 디코딩 방법.
  15. 제11항에 있어서,
    제3분할 영역을 포함하는 제3픽쳐를 수신하는 단계;
    상기 제3픽쳐에 포함된 제2움직임 보상 정보를 추출하는 단계;
    상기 추출된 제2움직임 보상 정보를 변경하는 단계; 및
    상기 변경된 제2움직임 보상 정보에 기초하여 상기 제3픽쳐를 디코딩하는 단계를 더 포함하는 동영상 디코딩 방법.
  16. 제15항에 있어서, 상기 제2움직임 보상 정보를 변경하는 단계는,
    상기 제2움직임 보상 정보에 포함된 참조 픽쳐 인덱스와 연관된 참조 픽쳐의 디코딩 이력 정보를 참조하여 상기 참조 픽쳐 인덱스를 변경하는 단계를 포함하는 동영상 디코딩 방법.
  17. 제16항에 있어서, 상기 참조 픽쳐 인덱스를 변경하는 단계는 상기 참조 픽쳐 인덱스가 상기 제2픽쳐를 가리키는 인덱스에서 상기 제1픽쳐를 가리키는 인덱스로 변경되는 단계이고,
    상기 동영상 디코딩 방법은,
    상기 제2픽쳐와 상기 변경된 제2움직임 보상 정보에 기초하여 상기 제3분할 영역에 포함된 블록에 대한 디코딩을 수행하는 단계; 및
    상기 디코딩된 블럭에 대한 부분적인 인-루프 필터링을 수행하는 단계를 더 포함하는 동영상 디코딩 방법.
  18. 제15항에 있어서, 상기 제2움직임 보상 정보를 변경하는 단계는,
    상기 제2움직임 보상 정보에 포함된 참조 픽쳐 인덱스와 참조 픽쳐 내의 참조 좌표와 연관된 상기 제1분할 영역 또는 상기 제2분할 영역의 디코딩 이력 정보를 참조하여, 상기 참조 픽쳐 인덱스와 상기 참조 픽쳐 내의 참조 좌표를 변경하는 단계를 포함하는 동영상 디코딩 방법.
  19. 제18항에 있어서,
    상기 제1픽쳐는 상기 제1분할 영역과 다른 제4분할 영역을 포함하고,
    상기 제2움직임 보상 정보를 변경하는 단계는,
    상기 참조 픽쳐 인덱스는 상기 제2픽쳐를 가르키는 제2인덱스에서 상기 제1 픽쳐를 가르키는 제1인덱스로 변경하는 단계; 및
    상기 참조 픽쳐 내의 참조 좌표를 포함하는 영역은 상기 제4분할 영역에서 상기 제1분할 영역으로 변경되는 단계를 포함하는 동영상 디코딩 방법.
  20. 제19항에 있어서,
    상기 제1픽쳐와 상기 변경된 제2움직임 보상 정보에 기초하여 상기 제3분할영역에 포함된 블록에 대한 디코딩을 수행하는 단계; 및
    상기 디코딩된 블록에 대한 부분적인 인-루프 필터링을 수행하는 단계를 더 포함하는 동영상 디코딩 방법.
KR1020140168004A 2014-11-28 2014-11-28 움직임 보상 정보를 수정하는 데이터 처리 시스템과 데이터 처리 방법 KR102273670B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020140168004A KR102273670B1 (ko) 2014-11-28 2014-11-28 움직임 보상 정보를 수정하는 데이터 처리 시스템과 데이터 처리 방법
DE102015117561.4A DE102015117561A1 (de) 2014-11-28 2015-10-15 Datenverarbeitungssystem, das Bewegungskompensationsinformation modifiziert, und Verfahren zum Decodieren von Videodaten mit demselben
TW104134452A TWI736525B (zh) 2014-11-28 2015-10-21 修正運動補償資訊的資料處理系統及包含運動補償資訊的視訊資料的解碼方法
CN201510854636.7A CN105657430B (zh) 2014-11-28 2015-11-30 修改运动补偿信息的数据处理系统和解码视频数据的方法
US14/953,971 US10080025B2 (en) 2014-11-28 2015-11-30 Data processing system modifying motion compensation information, and method for decoding video data including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140168004A KR102273670B1 (ko) 2014-11-28 2014-11-28 움직임 보상 정보를 수정하는 데이터 처리 시스템과 데이터 처리 방법

Publications (2)

Publication Number Publication Date
KR20160064419A true KR20160064419A (ko) 2016-06-08
KR102273670B1 KR102273670B1 (ko) 2021-07-05

Family

ID=55967924

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140168004A KR102273670B1 (ko) 2014-11-28 2014-11-28 움직임 보상 정보를 수정하는 데이터 처리 시스템과 데이터 처리 방법

Country Status (5)

Country Link
US (1) US10080025B2 (ko)
KR (1) KR102273670B1 (ko)
CN (1) CN105657430B (ko)
DE (1) DE102015117561A1 (ko)
TW (1) TWI736525B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180139464A1 (en) * 2016-11-17 2018-05-17 Mediatek Inc. Decoding system for tile-based videos
SG11202105604UA (en) * 2018-11-27 2021-06-29 Op Solutions Llc Block-based spatial activity measures for pictures cross-reference to related applications
KR20210094030A (ko) 2018-11-27 2021-07-28 오피 솔루션즈, 엘엘씨 컨텍스트 세그먼트화 및 처리를 위한 블록-기반 픽처 융합
EP3664451B1 (en) 2018-12-06 2020-10-21 Axis AB Method and device for encoding a plurality of image frames
CN114697675B (zh) * 2020-12-25 2024-04-05 扬智科技股份有限公司 解码显示系统与其存储器访问方法
KR20230022061A (ko) * 2021-08-06 2023-02-14 삼성전자주식회사 디코딩 장치 및 그의 동작 방법

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110001990A (ko) * 2009-06-30 2011-01-06 삼성전자주식회사 영상 데이터의 인 루프 필터링 장치 및 방법과 이를 이용한 영상 부호화/복호화 장치
KR20110044486A (ko) * 2009-10-23 2011-04-29 삼성전자주식회사 데이터 단위 레벨의 독립적 파싱 또는 복호화에 따른 비디오 복호화 방법 및 그 장치, 그리고 데이터 단위 레벨의 독립적 파싱 또는 복호화를 위한 비디오 부호화 방법 및 그 장치
KR101101965B1 (ko) * 2006-10-16 2012-01-02 노키아 코포레이션 멀티뷰 비디오 코딩에 대한 병렬 디코딩가능 슬라이스들을 이용하기 위한 시스템 및 방법
KR20120117613A (ko) * 2011-04-15 2012-10-24 주식회사 미디어엑셀코리아 동영상 부호화 장치 및 방법
US20140169481A1 (en) * 2012-12-19 2014-06-19 Ati Technologies Ulc Scalable high throughput video encoder
KR20140129624A (ko) * 2013-04-30 2014-11-07 주식회사 칩스앤미디어 동영상 처리 방법 및 장치
KR101676788B1 (ko) * 2014-10-17 2016-11-16 삼성전자주식회사 멀티코어 시스템 기반 비디오 병렬 복호화 방법 및 그 장치

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1882093B (zh) * 1998-03-10 2011-01-12 索尼公司 利用编码历史信息的编码转换系统
JP2000295616A (ja) 1999-04-08 2000-10-20 Matsushita Electric Ind Co Ltd 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法及びプログラム記録媒体
US8401084B2 (en) 2002-04-01 2013-03-19 Broadcom Corporation System and method for multi-row decoding of video with dependent rows
US8406301B2 (en) * 2002-07-15 2013-03-26 Thomson Licensing Adaptive weighting of reference pictures in video encoding
JP2005175997A (ja) * 2003-12-12 2005-06-30 Sony Corp 復号化装置、電子機器、コンピュータ、復号化方法、プログラム及び記録媒体
JP4374548B2 (ja) * 2005-04-15 2009-12-02 ソニー株式会社 復号装置および方法、記録媒体、並びに、プログラム
JP4789200B2 (ja) 2006-08-07 2011-10-12 ルネサスエレクトロニクス株式会社 動画符号化と動画復号とのいずれかを実行する機能モジュールおよびそれを含む半導体集積回路
US8861603B2 (en) * 2007-08-28 2014-10-14 Samsung Electronics Co., Ltd. System and method for motion vector collection based on K-means clustering for motion compensated interpolation of digital video
BRPI0915000A2 (pt) * 2008-06-12 2015-10-27 Thomson Licensing métodos e aparelho para filtragem localmente adaptativa para filtragem de interpolação de compensação de movimento e filtragem de imagem de referência
JP2010034802A (ja) 2008-07-28 2010-02-12 Canon Inc 動画像符号化装置およびその制御方法
WO2010021700A1 (en) * 2008-08-19 2010-02-25 Thomson Licensing A propagation map
KR20100071865A (ko) 2008-12-19 2010-06-29 삼성전자주식회사 멀티 코어 프로세스 방식의 영상 신호 처리장치에서 영상 프레임 구성 및 복호화 방법과 그 영상 신호 처리장치
JP5253312B2 (ja) 2009-07-16 2013-07-31 ルネサスエレクトロニクス株式会社 動画像処理装置およびその動作方法
CN101710986B (zh) * 2009-11-18 2012-05-23 中兴通讯股份有限公司 基于同构多核处理器的h.264并行解码方法和系统
US8879632B2 (en) * 2010-02-18 2014-11-04 Qualcomm Incorporated Fixed point implementation for geometric motion partitioning
EP2405661B1 (en) * 2010-07-06 2017-03-22 Google, Inc. Loss-robust video transmission using two decoders
RU2010135495A (ru) * 2010-08-24 2012-02-27 ЭлЭсАй Корпорейшн (US) Видеотранскодер с гибким управлением качеством и сложностью
KR101219220B1 (ko) 2010-10-20 2013-01-08 성균관대학교산학협력단 병렬 부호화를 위한 데이터 파티션 방법 및 이를 수행하는 프로그램을 기록한 기록매체
US9066102B2 (en) * 2010-11-17 2015-06-23 Qualcomm Incorporated Reference picture list construction for generalized P/B frames in video coding
CA2722993A1 (fr) 2010-12-01 2012-06-01 Ecole De Technologie Superieure Systeme d'ecodage video parallele multitrames et multitranches avec encodage simultane de trames predites
US9621905B2 (en) 2012-06-29 2017-04-11 Qualcomm Incorporated Tiles and wavefront parallel processing

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101101965B1 (ko) * 2006-10-16 2012-01-02 노키아 코포레이션 멀티뷰 비디오 코딩에 대한 병렬 디코딩가능 슬라이스들을 이용하기 위한 시스템 및 방법
KR20110001990A (ko) * 2009-06-30 2011-01-06 삼성전자주식회사 영상 데이터의 인 루프 필터링 장치 및 방법과 이를 이용한 영상 부호화/복호화 장치
KR20110044486A (ko) * 2009-10-23 2011-04-29 삼성전자주식회사 데이터 단위 레벨의 독립적 파싱 또는 복호화에 따른 비디오 복호화 방법 및 그 장치, 그리고 데이터 단위 레벨의 독립적 파싱 또는 복호화를 위한 비디오 부호화 방법 및 그 장치
KR20120117613A (ko) * 2011-04-15 2012-10-24 주식회사 미디어엑셀코리아 동영상 부호화 장치 및 방법
US20140169481A1 (en) * 2012-12-19 2014-06-19 Ati Technologies Ulc Scalable high throughput video encoder
KR20140129624A (ko) * 2013-04-30 2014-11-07 주식회사 칩스앤미디어 동영상 처리 방법 및 장치
KR101676788B1 (ko) * 2014-10-17 2016-11-16 삼성전자주식회사 멀티코어 시스템 기반 비디오 병렬 복호화 방법 및 그 장치

Also Published As

Publication number Publication date
US20160156937A1 (en) 2016-06-02
TWI736525B (zh) 2021-08-21
CN105657430B (zh) 2020-09-01
TW201631976A (zh) 2016-09-01
DE102015117561A1 (de) 2016-06-02
US10080025B2 (en) 2018-09-18
KR102273670B1 (ko) 2021-07-05
CN105657430A (zh) 2016-06-08

Similar Documents

Publication Publication Date Title
US10057590B2 (en) Method and apparatus using software engine and hardware engine collaborated with each other to achieve hybrid video encoding
US11044473B2 (en) Adaptive loop filtering classification in video coding
US11930159B2 (en) Method and system of video coding with intra block copying
CN106797464B (zh) 用于视频编码和解码中的矢量编码的方法和装置
KR102273670B1 (ko) 움직임 보상 정보를 수정하는 데이터 처리 시스템과 데이터 처리 방법
AU2013210274B2 (en) Video decoder, video encoder, video decoding method, and video encoding method
US10291925B2 (en) Techniques for hardware video encoding
US10827186B2 (en) Method and system of video coding with context decoding and reconstruction bypass
CN105554505B (zh) 应用处理器及其方法以及包括该应用处理器的系统
TW201943272A (zh) 以角度模式延伸之位置相關框內預測組合
US10440366B2 (en) Method and system of video coding using content based metadata
KR20170083455A (ko) 참조 이미지 프로세싱을 위한 방법, 애플리케이션 프로세서 및 모바일 기기
CN112534808A (zh) 视频处理方法、视频处理装置、编码器、解码器、介质和计算机程序
JPWO2015145504A1 (ja) 画像復号装置、画像復号方法、及び集積回路
KR20150047379A (ko) 비디오 인코딩 장치 그리고 이의 구동 방법
US10869041B2 (en) Video cluster encoding for multiple resolutions and bitrates with performance and quality enhancements
KR102299573B1 (ko) 실시간으로 인-루프 필터링을 수행할 수 있는 애플리케이션 프로세서, 이의 작동 방법, 및 이를 포함하는 시스템
JP2022540982A (ja) 情報処理方法及び装置、設備、記憶媒体
JP6519185B2 (ja) 動画像符号化装置
KR20160067580A (ko) 영상 데이터의 인코딩 방법, 상기 방법을 이용한 인코더, 및 상기 인코더를 포함하는 애플리케이션 프로세서
KR20170053031A (ko) 복수개의 블록 기반의 파이프라인을 이용한 데이터 처리 속도 개선 장치 및 그 동작 방법
JP2022540659A (ja) ルマツークロマ量子化パラメータテーブルシグナリング
CN116233469A (zh) 低频不可分离变换和多重变换选择死锁预防

Legal Events

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