KR20230034789A - 디코딩 장치 및 그의 동작 방법 - Google Patents

디코딩 장치 및 그의 동작 방법 Download PDF

Info

Publication number
KR20230034789A
KR20230034789A KR1020210117949A KR20210117949A KR20230034789A KR 20230034789 A KR20230034789 A KR 20230034789A KR 1020210117949 A KR1020210117949 A KR 1020210117949A KR 20210117949 A KR20210117949 A KR 20210117949A KR 20230034789 A KR20230034789 A KR 20230034789A
Authority
KR
South Korea
Prior art keywords
inter
prediction
intra
coding units
coding
Prior art date
Application number
KR1020210117949A
Other languages
English (en)
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 KR1020210117949A priority Critical patent/KR20230034789A/ko
Priority to US17/895,345 priority patent/US20230073108A1/en
Publication of KR20230034789A publication Critical patent/KR20230034789A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/184Methods 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 bits, e.g. of the compressed video stream
    • 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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • 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/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

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

Abstract

본 개시의 기술적 사상에 따른 디코딩 장치는, 비트스트림을 디코딩하고 복수 개의 코딩 유닛들 각각의 예측 정보 및 순서 정보를 생성하는 엔트로피 디코더, 예측 정보에 기초하여 복수 개의 코딩 유닛들 중 인터 코딩 유닛 각각에 대해 인터 예측을 수행하는 인터 예측기, 예측 정보에 기초하여 상기 복수 개의 코딩 유닛들 중 인트라 코딩 유닛 각각에 대해 인트라 예측을 수행하고, 인트라 코딩 유닛 각각의 인트라 예측 데이터를 생성하는 인트라 예측기, 인터 코딩 유닛 각각의 인터 예측 데이터를 저장하는 메모리, 메모리에 저장된 인터 예측 데이터에 기초하여 인터 코딩 유닛 각각을 복원하고, 인트라 예측 데이터에 기초하여 상기 인트라 코딩 유닛 각각을 복원하는 재구성기를 포함할 수 있다.

Description

디코딩 장치 및 그의 동작 방법{DECODING DEVICE AND OPERATING METHOD THEREOF}
본 개시의 기술적 사상은 전자 장치에 관한 것으로서, 더욱 상세하게는, 디코딩 장치 및 그의 동작 방법에 관한 것이다.
디지털 비디오를 효과적으로 전송 및 수신하기 위해 비디오의 크기를 줄이는 비디오 압축 방식이 사용된다. 디지털 비디오는 다양한 크기의 코딩 유닛들로 분할되어 압축된다. 압축된 비디오 스트림을 디코딩하기 위한 디코딩 장치가 필요하다.
인트라(intra) 예측은 참조 코딩 유닛의 재구성된 픽셀 데이터를 이용하므로 코딩 유닛들의 디코딩 순서대로 인트라 예측이 수행된다. 디코딩 순서대로 인트라 예측을 수행하기 위해 인트라 예측기가 코딩 유닛에 대해 인터 예측을 시작하는 시점을 제어하였다. 인트라 예측기가 인터 예측을 시작하는 시점을 제어하는 경우, 디지털 비디오가 다양한 크기의 코딩 유닛들로 분할됨에 따라 디코딩 속도가 느려질 수 있다.
본 개시의 기술적 사상이 해결하고자 하는 과제는, 인터 코딩 유닛의 인터예측 데이터를 메모리에 저장하고, 저장된 인터 예측 데이터를 이용하여 비디오를 디코딩할 수 있고, 디코딩을 수행하는 속도를 향상시키는 디코딩 장치 및 그의 동작 방법을 제공하는 것이다.
본 개시의 제1 측면에 따른 디코딩 장치는, 복수 개의 코딩 유닛들로 분할된 라지 코딩 유닛들을 포함하는 비디오 데이터가 인코딩된 비트스트림을 수신하고, 상기 비트스트림을 디코딩하고 복수 개의 코딩 유닛들 각각의 예측 모드를 나타내는 예측 정보 및 복수 개의 코딩 유닛들 각각의 디코딩 순서를 나타내는 순서 정보를 생성하는 엔트로피 디코더, 상기 예측 정보에 기초하여 상기 복수 개의 코딩 유닛들 중 인터 예측을 수행할 코딩 유닛인 인터 코딩 유닛 각각에 대해 인터 예측을 수행하는 인터 예측기, 상기 예측 정보에 기초하여 상기 복수 개의 코딩 유닛들 중 인트라 예측을 수행할 코딩 유닛인 인트라 코딩 유닛 각각에 대해 인트라 예측을 수행하고, 상기 인트라 코딩 유닛 각각에 대해 인트라 예측이 수행된 인트라 예측 데이터를 생성하는 인트라 예측기, 상기 인터 코딩 유닛 각각에 대해 인터 예측이 수행된 인터 예측 데이터를 저장하는 메모리, 및 상기 메모리에 저장된 인터 예측 데이터에 기초하여 상기 인터 코딩 유닛 각각을 복원하고, 상기 인트라 예측 데이터에 기초하여 상기 인트라 코딩 유닛 각각을 복원하는 재구성기를 포함할 수 있다.
본 개시의 제2 측면에 따른 디코딩 장치는, 복수 개의 코딩 유닛들로 분할된 라지 코딩 유닛들을 포함하는 비디오 데이터가 인코딩된 비트스트림을 수신하고, 상기 비트스트림을 디코딩하고 복수 개의 코딩 유닛들 각각의 예측 모드를 나타내는 예측 정보 및 복수 개의 코딩 유닛들 각각의 디코딩 순서를 나타내는 순서 정보를 생성하는 엔트로피 디코더, 상기 예측 정보에 기초하여 상기 복수 개의 코딩 유닛들 인터(inter) 예측을 수행할 코딩 유닛인 인터 코딩 유닛 각각에 대해 인터 예측을 수행하는 복수 개의 인터 예측기, 상기 복수 개의 인터 예측기 각각이 서로 다른 인터 코딩 유닛에 대해 인터 예측을 수행하도록 제어하는 인터 컨트롤러, 상기 예측 정보에 기초하여 상기 복수 개의 코딩 유닛들 중 인트라(intra) 예측을 수행할 코딩 유닛인 인트라 코딩 유닛 각각에 대해 인트라 예측을 수행하고, 상기 인트라 코딩 유닛 각각에 대해 인트라 예측이 수행된 인트라 예측 데이터를 생성하는 인트라 예측기, 상기 인터 코딩 유닛 각각에 대해 인터 예측이 수행된 인터 예측 데이터를 저장하는 메모리, 및 상기 메모리에 저장된 인터 예측 데이터에 기초하여 상기 인터 코딩 유닛 각각을 복원하고, 상기 인트라 예측 데이터에 기초하여 상기 인트라 코딩 유닛 각각을 복원하는 재구성기를 포함할 수 있다.
본 개시의 제3 측면에 따른 디코딩 방법은, 복수 개의 코딩 유닛들로 분할된 라지 코딩 유닛들을 포함하는 비디오 데이터가 인코딩된 비트스트림을 수신하는 단계, 상기 비트스트림을 디코딩하고 복수 개의 코딩 유닛들 각각의 예측 모드를 나타내는 예측 정보 및 복수 개의 코딩 유닛들 각각의 디코딩 순서를 나타내는 순서 정보를 생성하는 단계, 상기 예측 정보 및 순서 정보에 기초하여 현재 디코딩하고자 하는 현재 코딩 유닛에 대해 인터 예측을 수행할지 여부를 결정하는 단계, 상기 현재 코딩 유닛에 대해 인터 예측을 수행하는 경우, 상기 현재 코딩 유닛에 대해 인터 예측이 수행된 인터 예측 데이터를 생성하고 상기 인터 예측 데이터를 메모리에 저장하고, 상기 현재 코딩 유닛에 대해 인트라 예측을 수행하는 경우, 상기 현재 코딩 유닛에 대해 인트라 예측이 수행된 인트라 예측 데이터를 생성하는 단계, 및 상기 메모리에 저장된 인터 예측 데이터 및 상기 인트라 예측 데이터 중 하나에 기초하여 상기 현재 코딩 유닛을 복원하는 단계를 포함할 수 있다.
본 개시의 기술적 사상에 따른 디코딩 장치는, 인터 코딩 유닛에 대해 인터 예측을 수행하는 인터 예측기, 인터 예측 데이터를 저장하는 메모리, 메모리에 저장된 인터 예측 데이터를 리드아웃하여 코딩 유닛을 복원하는 재구성기를 포함함으로써, 디코딩 동작이 빠르게 수행될 수 있다.
또한, 디코딩 장치는, 인트라 코딩 유닛에 대해 인트라 예측을 수행하는 인트라 예측기와 독립적으로 인터 코딩 유닛에 대해 인터 예측을 수행함으로써 디코딩 동작이 빠르게 수행될 수 있다.
도 1은 본 개시의 일 실시예에 따른 비디오 시스템을 설명하기 위한 도면이다.
도 2는 본 개시의 일 실시예에 따른 디코딩 장치를 설명하기 위한 블록도이다.
도 3은 본 개시의 일 실시예에 따른 코딩 유닛을 나타내기 위한 도면이다.
도 4는 본 개시의 일 실시예에 따른 코딩 유닛의 동작 순서를 설명하기 위한 도면이다.
도 5는 본 개시의 실시예에 따른 라지 코딩 유닛 및 코딩 유닛을 설명하기 위한 블록도이다.
도 6은 도 5에 따른 코딩 유닛의 동작 순서를 설명하기 위한 도면이다.
도 7은 본 개시의 일 실시예에 따른 복수 개의 인터 예측기를 포함하는 디코딩 장치를 설명하기 위한 블록도이다.
도 8은 본 개시의 일 실시예에 따른 코딩 유닛들에 대해 디코딩이 수행되는 것을 설명하기 위한 도면이다.
도 9는 본 개시의 일 실시예에 따른 디코딩 장치의 동작 방법을 설명하기 위한 흐름도이다.
이하, 첨부한 도면을 참조하여 본 개시의 실시예에 대해 상세히 설명한다. 본 개시의 실시예는 당 업계에서 평균적인 지식을 가진 자에게 본 개시를 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 개시는 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 개시를 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 개시의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
도 1은 본 개시의 일 실시예에 따른 비디오 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 비디오 시스템(100)은 소스(source) 장치(110) 및 싱크(sink) 장치(120)를 포함할 수 있다. 실시예에 따라, 비디오 시스템(100)은 도 1에 도시된 구성 요소들 외에 다른 범용적인 구성 요소들을 더 포함할 수 있다.
소스 장치(110)는 인코딩 장치(111) 및 송신기(112)를 포함할 수 있다. 소스 장치(110)는 자체적으로 비디오 데이터를 생성하거나 또는 비디오 데이터를 제공받는 전자 장치일 수 있다. 소스 장치(110)는 예를 들면, DVD나 블루레이와 같은 광학미디어 재생장치, UHD 플레이어, 셋탑박스, TV, 컴퓨터 본체, 모바일 장치, 홈 씨어터(home theater), 게임기 장치, 컨텐츠 서버 등 다양한 형태로 구현될 수 있다.
인코딩 장치(111)는 비디오 데이터를 수신할 수 있다. 예시적으로, 인코딩 장치(111)는 비디오 카메라, 미리 캡처된 비디오를 포함하는 비디오 아치브(archive)와 같은 비디오 캡처 장치로부터 비디오 데이터를 수신할 수 있다.
비디오 데이터는 비디오 프레임들의 시리즈들일 수 있다. 비디오 데이터는라지 코딩 유닛들을 포함할 수 있고, 각각의 라지 코딩 유닛들은 복수 개의 코딩 유닛들을 포함할 수 있다. 라지 코딩 유닛들은 고정 또는 가변 크기들을 가질 수 있고, 특정 인코딩 표준에 따른 크기로 달라질 수 있다. 예시적으로, 라지 코딩 유닛의 크기는 32x32 픽셀, 64x64 픽셀, 및 128x128 픽셀일 수 있으나, 나열한 크기에 반드시 제한되는 것은 아니다. 라지 코딩 유닛에 포함된 복수 개의 코딩 유닛들 각각은 서로 다른 크기를 가질 수도 있고, 서로 동일한 크기를 가질 수도 있다. 코딩 유닛은 루마(Luma) 코딩 유닛 및 크로마(Chroma) 코딩 유닛을 포함할 수 있다.
인코딩 장치(111)는 비디오 데이터를 인코딩할 수 있다. 인코딩된 비디오 데이터는 비트스트림(bitstream) 형태로 출력될 수 있다. 인코딩된 비디오 데이터의 프레임(frame)들이 비트스트림 형태로 출력될 수 있다. 비디오 코딩 유닛들의 인트라(intra) 또는 인터(inter) 기반 예측에 따라, 인코딩 장치(111)는 양자화 동작들 및 엔트로피 코딩 동작들을 수행하여 비디오 데이터를 인코딩할 수 있다. 인코딩 장치(111)는 AVC(Advanced Video Coding), VP8, VP9, HEVC(High Efficiency Video Coding), AV1(AOMedia Video 1), AVS3 등과 같은 비디오 압축 방식에 따라 동작할 수 있다.
송신기(112)는 인코딩 장치(111)로부터 출력된 비트스트림을 파일 또는 스트리밍 형태로 싱크 장치(120)의 수신기(121)로 전달할 수 있다. 구체적으로, 송신기(112)는 인코딩 장치(111)로부터 출력된 비트스트림을 통신 채널(130)을 통해 수신기(121)로 전달할 수 있다.
통신 채널(130)은 소스 장치(110)를 통해 인코딩된 비디오 스트림을 수신기(121)에 전송할 수 있다.
통신 채널(130)은 무선 주파수(RF) 스펙트럼 또는 하나 이상의 물리 전송 라인들 또는 무선 및 유선 매체의 임의의 조합과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수 있다. 통신 채널(130)은 로컬 영역 네트워크, 광역 네트워크 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷-기반 네트워크의 부분을 형성할 수 있다. 통신 채널(130)은 일반적으로 소스 장치(110)로부터 수신기(121)로 인코딩된 비디오 데이터를 전송하기 위한 임의의 적합한 통신 매체 또는 상이한 통신 매체의 집합을 나타낸다.
싱크 장치(120)는 수신기(121), 디코딩 장치(122), 및 디스플레이(123)를 포함할 수 있다. 싱크 장치(120)는 소스 장치(110)로부터 전송된 비디오 데이터(예를 들어, 인코딩된 비디오 데이터)를 처리하여 재생하는 전자 장치일 수 있다. 여기서, "재생"이라는 용어는, 처리된 비디오 데이터에 따른 영상을 표시하거나 처리된 오디오 데이터에 따른 오디오를 출력하거나 처리된 비디오 데이터 및 오디오 데이터에 따른 영상과 오디오를 나타내는 것을 의미할 수 있다. 싱크 장치(120)는 TV, 모니터, 휴대용 멀티미디어 재생기, 모바일 폰, 태블릿, 전자액자, 전자칠판, 전자 광고판 등 다양한 형태로 구현될 수 있다. 도 1에는 인코딩 장치(111)가 소스 장치(110)에 포함되고, 디코딩 장치(122)가 싱크 장치(120)에 포함된 것으로 도시되어 있으나, 이에 반드시 제한되지는 않고, 인코딩 장치(111) 및 디코딩 장치(122)는 소스 장치(110) 및/또는 싱크 장치(120)에 포함될 수 있다. 또한, 인코딩 장치(111) 및 디코딩 장치(122)는 코덱(codec)을 형성할 수 있다.
수신기(121)는 통신 채널(130)을 통해 소스 장치(110)로부터 비디오 데이터가 인코딩된 비트스트림을 수신할 수 있다.
송신기(112), 통신 채널(130) 및 수신기(121)는 하나 이상의 이더넷, 전화, 케이블, 파워-라인 및 광섬유 시스템들 및/또는 하나 이상의 코드 분할 다중 액세스(CDMA 또는 CDMA2000) 통신 시스템, 주파수 분할 다중 액세스(FDMA) 시스템, 직교 주파수 분할 다중(OFDM) 액세스 시스템, 글로벌 모바일 통신 시스템(GSM)과 같은 시분할 다중 액세스(TDMA), GPRS(일반 패킷 무선 서비스) 또는 EDGE(향상된 데이터 GSM 환경), TETRA(지상 트렁크드 무선) 모바일 전화 시스템, 광대역 코드 분할 다중 액세스(WCDMA) 시스템, 고속 데이터 레이트 1xEV-DO(1세대 이볼루션 데이터 전용) 또는 1xEV-DO 골드 멀티캐스트 시스템, IEEE 802.18 시스템, 미디어FLOTM시스템, DMB 시스템, DVB-H 시스템 또는 둘 이상의 장치들 사이에서의 데이터 통신을 위한 다른 방식을 포함하는 무선 시스템을 포함하는 임의의 유선 또는 무선 통신 시스템에 따른 통신을 위해 구성될 수 있다.
디코딩 장치(122)는 소스 장치(110)로부터 비트스트림을 수신하고, 비트스트림을 디코딩할 수 있다. 디코딩 장치(122)는 복수 개의 코딩 유닛들로 분할된 라지 코딩 유닛들을 포함하는 비디오 데이터가 인코딩된 비트스트림을 수신할 수 있다. 디코딩 장치(122)는 비트스트림을 디코딩하고 복수 개의 코딩 유닛들 각각의 예측 모드를 나타내는 예측 정보 및 복수 개의 코딩 유닛들 각각의 디코딩 순서를 나타내는 순서 정보를 생성할 수 있다.
디코딩 장치(122)는 예측 정보에 기초하여 라지 코딩 유닛에 포함된 복수 개의 코딩 유닛들 중 인터 예측을 수행할 코딩 유닛인 인터 코딩 유닛 각각에 대해 인터 예측을 수행할 수 있다.
디코딩 장치(122)는 예측 정보에 기초하여 라지 코딩 유닛에 포함된 복수 개의 코딩 유닛들 중 인트라 예측을 수행할 코딩 유닛인 인트라 코딩 유닛 각각에 대해 인트라 예측을 수행할 수 있다.
디코딩 장치(122)는 인터 코딩 유닛 각각에 대해 인터 예측이 수행된 인터 예측 데이터를 저장하는 메모리를 포함할 수 있다. 디코딩 장치(122)는 메모리에 저장된 인터 예측 데이터에 기초하여 인터 코딩 유닛 각각을 복원하고, 인터 코딩 유닛 각각의 재구성된 픽셀 데이터를 생성할 수 있다. 디코딩 장치(122)는 재구성된 픽셀 데이터를 필터링하여 디코딩된 픽셀 데이터를 생성할 수 있다. 디코딩 장치(122)는 도 2를 참조하여 상세히 후술한다.
디코딩 장치(122)는 AVC, VP8, VP9, HEVC, AV1, AVS3 등과 같은 비디오 압축 방식에 따라 동작할 수 있다. 예시적으로, 디코딩 장치(122)는 AVS3에 따라 인코딩된 비디오 데이터를 수신하여 디코딩할 수 있다.
싱크 장치(120)는 디스플레이(123)를 통해 사용자에게 디코딩된 픽셀 데이터를 디스플레이할 수 있다. 디스플레이(123)는 음극선관(CRT), 액정 디스플레이(LCD), 플라즈마 디스플레이, 발광 다이오드(LED) 디스플레이, 유기 LED 디스플레이 또는 다른 타입의 디스플레이 유닛과 같은 임의의 다양한 디스플레이 장치들을 포함할 수 있다.
인코딩 장치(111) 및 디코딩 장치(122) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들(DSPs), 주문형 집적 회로들(ASICs), 필드 프로그램어블 게이트 어레이들(FPGAs), 분산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합으로서 구현될 수 있다. 인코딩 장치(111) 및 디코딩 장치(122) 각각은 각 모바일 장치, 가입자 장치, 브로드캐스팅 장치 등의 결합된 인코더/디코더(CODEC)의 부분으로서 통합되는 하나 이상의 인코더들 또는 디코더들에 포함될 수 있다.
소스 장치(110) 및 싱크 장치(120) 각각은 무선 통신을 지원하기 위해 충분한 무선 주파수(RF) 무선 컴포넌트들 및 안테나들을 포함하는 인코딩된 비디오의 전송 및 수신을 위한 적절한 변조, 복조, 주파수 변환, 필터링 및 증폭기 컴포넌트들을 포함할 수 있다. 예시적으로, 컴포넌트들은 송신기(112) 및 수신기(121)로서 사용될 수 있다.
도 2는 본 개시의 일 실시예에 따른 디코딩 장치를 설명하기 위한 블록도이다.
도 2를 참조하면, 디코딩 장치(200)는 엔트로피 디코더(210), 인터 예측기(220), 인트라 예측기(230), 메모리(240), 역 양자화 유닛(250), 역 변환 유닛(260), 재구성기(270), 및 필터링 유닛(280)을 포함할 수 있다. 도 2의 디코딩 장치(200)는 도 1의 디코딩 장치(122)에 대응되므로, 중복되는 내용은 생략한다. 실시예에 따라 디코딩 장치(200)는 도 2에 도시된 구성 요소들 외에 다른 범용적인 구성 요소들을 더 포함할 수 있다.
엔트로피 디코더(210), 인터 예측기(220), 인트라 예측기(230), 역 양자화 유닛(250), 역 변환 유닛(260), 재구성기(270), 및 필터링 유닛(280)은 실시예에 따라 하나의 하드웨어 컴포넌트(예를 들어, 디코더 또는 프로세서)에 의하여 구성될 수 있다.
엔트로피 디코더(210)는 인코딩 장치(예를 들어, 도 1의 인코딩 장치(111))로부터 출력된 신호를 비트스트림(BS) 형태로 수신할 수 있다. 비트스트림(BS)은 엔트로피 디코더(210)를 통해 디코딩될 수 있다. 엔트로피 디코더(210)는 비트스트림을 파싱하여 디코딩에 필요한 정보를 도출할 수 있다. 엔트로피 디코더(210)는 지수 골롬 부호화, CAVLC 또는 CABAC 등의 코딩 방법을 기초로 비트스트림(BS) 내 정보를 디코딩할 수 있다.
엔트로피 디코더(210)는 비트스트림(BS)을 디코딩하고, 필터링 정보, 양자화된 변환 계수들 및 관련 파라미터 정보를 생성할 수 있다. 엔트로피 디코더(210)는 필터링 정보를 필터링 유닛(280)으로 제공하고, 양자화된 변환 계수들 및 관련 파라미터 정보를 역 양자화 유닛(250)으로 제공할 수 있다.
엔트로피 디코더(210)는 비트스트림을 디코딩하고, 복수 개의 코딩 유닛들각각의 예측 모드를 나타내는 예측 정보(PD) 및 복수 개의 코딩 유닛들 각각의 디코딩 순서를 나타내는 순서 정보(SD)를 생성할 수 있다. 디코딩에 필요한 정보는 예측 정보(PD) 및 순서 정보(SD)를 포함할 수 있다. 예측 정보(PD)는 복수 개의 코딩 유닛들 각각이 인터(inter) 예측 모드인지 인트라(intra) 예측 모드인지를 나타내는 정보를 의미할 수 있다. 예측 정보(PD)는 인트라 예측의 모드 또는 인터 예측의 모드를 지시하는 정보를 포함할 수 있다. 순서 정보(SD)는 라지 코딩 유닛에 포함된 복수 개의 코딩 유닛들이 디코딩 장치(200)에서 재구성되는 순서를 의미할 수 있다. 엔트로피 디코더(210)는 인터 예측기(220) 및 인트라 예측기(230) 각각으로 예측 정보(PD) 및 순서 정보(SD)를 제공할 수 있다.
인터 예측기(220)는 예측 정보(PD)에 기초하여 복수 개의 코딩 유닛들 중 인터 예측을 수행할 코딩 유닛인 인터 코딩 유닛 각각에 대해 인터 예측을 수행할 수 있다. 인터 코딩 유닛은 인터 예측 모드를 나타내는 예측 정보(PD)를 가지는 코딩 유닛을 의미할 수 잇다. 도 2에는 인터 예측기(220)가 하나인 것으로 도시되어 있으나, 이에 반드시 제한되지는 않고, 인터 예측기(220)는 복수 개일 수도 있다. 복수 개의 인터 예측기(220)를 포함하는 디코딩 장치(200)는 도 7을 참조하여 상세히 후술한다.
인터 예측기(220)는 인터 코딩 유닛 중 현재 인터 코딩 유닛에 대한 예측을 수행하고, 현재 인터 코딩 유닛에 대해 인터 예측이 수행된 인터 예측 데이터(IPD)를 생성할 수 있다. 인터 예측기(220)는 인터 코딩 유닛 각각에 대해 인터 예측을 수행하고, 인터 코딩 유닛 각각의 인터 예측 데이터(IPD)를 생성할 수 있다. 현재 인터 코딩 유닛은 인터 예측기(220)가 현재 인터 예측을 수행하는 인터 코딩 유닛을 의미할 수 있다. 현재 인터 코딩 유닛에 대해 인터 예측 시, 현재 인터 코딩 유닛이 포함된 라지 코딩 유닛의 다른 코딩 유닛을 이용하지 않고 인터 예측을 수행할 수 있다.
인터 예측은 참조 프레임 상에서 움직임 벡터에 의해 특정되는 참조 코딩 유닛을 기반으로, 현재 디코딩하는 코딩 유닛에 대한 예측된 코딩 유닛을 유도할 수 있다. 인터 예측 모드에서 전송되는 움직임 정보의 양을 줄이기 위해 주변 코딩 유닛과 현재 디코딩하는 코딩 유닛 간의 움직임 정보의 상관성에 기초하여 움직임 정보를 코딩 유닛 단위로 예측할 수 있다. 움직임 정보는 움직임 벡터 및 참조 프레임 인덱스를 포함할 수 있다.
인트라 예측기(230)는 예측 정보(PD)에 기초하여 복수 개의 코딩 유닛들 중 인트라 예측을 수행할 코딩 유닛인 인트라 코딩 유닛 각각에 대해 인트라 예측을 수행할 수 있다. 인트라 코딩 유닛은 인트라 예측 모드를 나타내는 예측 정보(PD)를 가지는 코딩 유닛을 의미할 수 잇다.
인트라 예측기(230)는 인트라 코딩 유닛 중 현재 인트라 코딩 유닛에 대한 예측을 수행하고, 현재 인트라 코딩 유닛에 대해 인트라 예측이 수행된 인트라 예측 데이터(ITPD)를 생성할 수 있다. 인트라 예측기(230)는 인트라 코딩 유닛 각각에 대해 인트라 예측을 수행하고, 인트라 코딩 유닛 각각의 인트라 예측 데이터(ITPD)를 생성할 수 있다. 현재 인트라 코딩 유닛은 인트라 예측기(230)가 현재 인트라 예측을 수행하는 인트라 코딩 유닛을 의미할 수 있다.
인트라 예측은 현재 인트라 코딩 유닛이 포함된 라지 코딩 유닛의 다른 코딩 유닛 또는 인접한 라지 코딩 유닛의 다른 코딩 유닛들을 참조하여 현재 인트라 코딩 유닛을 예측할 수 있다. 즉, 인트라 예측은 참조 코딩 유닛을 참조하여 현재 인트라 코딩 유닛을 예측할 수 있다. 현재 인트라 코딩 유닛 주변의 코딩 유닛들을 참조하여 현재 인트라 코딩 유닛이 예측되므로, 디코딩 순서에 따라 인트라 코딩 유닛에 대해 인트라 예측이 수행될 수 있다.
참조 코딩 유닛은 예측 모드에 따라 현재 인트라 코딩 유닛의 주변에 위치할 수 있다. 예시적으로, 참조 코딩 유닛은, 현재 인트라 코딩 유닛의 상측 및 좌측에 위치한 코딩 유닛들 중 적어도 하나를 의미할 수 있다. 코딩 유닛에 대해 도 3을 참조하여 상세히 후술한다. 이하에서는, 도 2 및 도 3을 함께 참조한다.
도 3은 본 개시의 일 실시예에 따른 코딩 유닛을 나타내기 위한 도면이다.
라지 코딩 유닛은 루마(luma) 컴포넌트인 루마 라지 코딩 블록(이하, YLCB)(310) 및 크로마(chroma) 컴포넌트인 크로마 라지 코딩 블록(이하, CLCB)(320)을 포함할 수 있다.
도 3을 참조하면, YLCB(310)는 복수 개의 코딩 유닛들을 포함할 수 있다. YLCB(310)는 복수 개의 루마 코딩 블록들을 포함할 수 있고, 복수 개의 루마 코딩 블록들 각각은 인터 코딩 유닛 및 인트라 코딩 유닛 중 하나에 해당할 수 있다. 예시적으로, YLCB(310)는 인터 코딩 유닛인 제1 루마 코딩 블록(YCB 0), 제3 루마 코딩 블록(YCB 2), 제6 루마 코딩 블록(YCB 5), 제8 루마 코딩 블록(YCB 7), 제10 루마 코딩 블록(YCB 9), 제11 루마 코딩 블록(YCB 10), 및 제12 루마 코딩 블록(YCB 11)을 포함할 수 있다. YLCB(310)는 인트라 코딩 유닛인 제2 루마 코딩 블록(YCB 1), 제4 루마 코딩 블록(YCB 3), 제5 루마 코딩 블록(YCB 4), 제7 루마 코딩 블록(YCB 6), 제9 루마 코딩 블록(YCB 8)을 포함할 수 있다. YLCB(310)에 포함된 복수 개의 코딩 유닛들의 크기는 서로 상이할 수 있다.
CLCB(320)는 복수 개의 코딩 유닛들을 포함할 수 있다. CLCB(320)는 복수 개의 크로마 코딩 블록들을 포함할 수 있고, 복수 개의 크로마 코딩 블록들 각각은 인터 코딩 유닛 및 인트라 코딩 유닛 중 하나에 해당할 수 있다. 예시적으로, CLCB(320)는 인터 코딩 유닛인 제1 크로마 코딩 블록(CCB 0), 제5 크로마 코딩 블록(CCB 4), 제7 크로마 코딩 블록(CCB 6), 및 제8 크로마 코딩 블록(CCB 7)을 포함할 수 있다. CLCB(320)는 인트라 코딩 유닛인 제2 크로마 코딩 블록(CCB 1), 제3 크로마 코딩 블록(CCB 2), 제4 크로마 코딩 블록(CCB 3), 제6 크로마 코딩 블록(CCB 5)을 포함할 수 있다. CLCB(320)에 포함된 복수 개의 코딩 유닛들의 크기는 서로 상이할 수 있다.
YLCB(310)가 복수 개의 코딩 유닛들로 분할된 모양은 CLCB(320)가 복수 개의 코딩 유닛들로 분할된 모양과 상이할 수 있다. 예시적으로, CLCB(320)는 YLCB(310)보다 크게 분할될 수 있다. 다만, 이에 반드시 제한되는 것은 아니며, YLCB(310)가 복수 개의 코딩 유닛들로 분할된 모양은 CLCB(320)가 복수 개의 코딩 유닛들로 분할된 모양과 동일할 수 있다.
YLCB(310) 및 CLCB(320)는 디코딩 장치(200)에서 동시에 디코딩될 수 있다. 예시적으로, 인터 예측기(220)는 제1 루마 코딩 블록(YCB 0)에 대해 인터 예측을 수행하는 동안 제1 크로마 코딩 블록(CCB 0)에 대해 인터 예측을 수행할 수 있다. 현재 인터 코딩 유닛은 제1 루마 코딩 블록(YCB 0) 및 제1 크로마 코딩 블록(CCB 0)일 수 있다.
순서 정보(SD)는 복수 개의 코딩 유닛들의 디코딩 순서를 나타낼 수 있다. 비디오 데이터가 인코딩될 때, 라지 코딩 유닛 및 코딩 유닛들이 스플릿(split)되는 방법에 따라 디코딩 순서가 정해질 수 있다. YLCB(310)의 경우, 제1 루마 코딩 블록(YCB 0), 제2 루마 코딩 블록(YCB 1), 제3 루마 코딩 블록(YCB 2), 제4 루마 코딩 블록(YCB 3), 제5 루마 코딩 블록(YCB 4), 제6 루마 코딩 블록(YCB 5), 제7 루마 코딩 블록(YCB 6), 제8 루마 코딩 블록(YCB 7), 제9 루마 코딩 블록(YCB 8), 제10 루마 코딩 블록(YCB 9), 제11 루마 코딩 블록(YCB 10), 및 제12 루마 코딩 블록(YCB 11)은 나열한 순서대로 디코딩이 수행되는 것을 가정한다. CLCB(320)의 경우, 제1 크로마 코딩 블록(CCB 0), 제2 크로마 코딩 블록(CCB 1), 제3 크로마 코딩 블록(CCB 2), 제4 크로마 코딩 블록(CCB 3), 제5 크로마 코딩 블록(CCB 4), 제6 크로마 코딩 블록(CCB 5), 제7 크로마 코딩 블록(CCB 6), 및 제8 크로마 코딩 블록(CCB 7)은 나열한 순서대로 디코딩이 수행되는 것을 가정한다.
도 2 및 도 3을 참조하면, 인터 예측기(220)는 순서 정보(SD)에 기초하여 디코딩 순서에 따라 인터 코딩 유닛에 대해 인터 예측을 수행할 수 있다. 인터 예측기(220)는 순서 정보(SD)에 기초하여 인터 코딩 유닛 중 디코딩 순서가 빠른 순으로 인터 예측을 수행할 수 있다. 예시적으로, 인터 예측기(220)는 제1 루마 코딩 블록(YCB 0)에 대해 인터 예측을 수행한 후, 제3 루마 코딩 블록(YCB 2)에 대해 인터 예측을 수행할 수 있다. 다른 예로, 인터 예측기(220)는 제1 크로마 코딩 블록(CCB 0)에 대해 인터 예측을 수행한 후, 제5 크로마 코딩 블록(CCB 4)에 대해 인터 예측을 수행할 수 있다.
인터 예측기(220)는 예측 정보(PD)에 기초하여 인터 코딩 유닛인지 여부를 확인하고, 인터 코딩 유닛에 대해 인터 예측을 수행할 수 있다. 예를 들어, 인터 예측기(220)는 제1 루마 코딩 블록(YCB 0)의 예측 정보(PD)가 인터 예측 모드를 나타내는 것을 확인하고, 제1 루마 코딩 블록(YCB 0)에 대해 인터 예측을 수행할 수 있다.
인트라 예측기(230)는 순서 정보(SD)에 기초하여 디코딩 순서에 따라 인트라 코딩 유닛에 대해 인트라 예측을 수행할 수 있다. 인트라 예측기(230)는 순서 정보(SD)에 기초하여 인트라 코딩 유닛 중 디코딩 순서가 빠른 순으로 인트라 예측을 수행할 수 있다. 예시적으로, 인트라 예측기(230)는 제2 루마 코딩 블록(YCB 1)에 대해 인트라 예측을 수행한 후, 제4 루마 코딩 블록(YCB 3)에 대해 인트라 예측을 수행할 수 있다. 제2 루마 코딩 블록(YCB 1)에 대해 인트라 예측이 수행되고, 제3 루마 코딩 블록(YCB 1)에 대해 인터 예측이 수행되고, 제4 루마 코딩 블록(YCB 3)에 대해 인트라 예측이 수행될 수 있다. 다른 예로, 인트라 예측기(230)는 제2 크로마 코딩 블록(CCB 1)에 대해 인트라 예측을 수행한 후, 제3 크로마 코딩 블록(CCB 2)에 대해 인트라 예측을 수행할 수 있다.
인터 예측기(220)는 인트라 예측기(230)와 독립적으로 인터 코딩 유닛 각각에 대해 인터 예측을 수행할 수 있다. 인터 예측기(220)는 인트라 예측기(230)로부터 인터 코딩 유닛에 대해 인터 예측을 수행하라는 지시를 받지 않고, 엔트로피 디코더(210)로부터 예측 정보(PD) 및 순서 정보(SD)를 제공받아 인터 코딩 유닛에 대해 인터 예측을 수행할 수 있다. 인트라 예측기(230)와 독립적으로 인터 코딩 유닛 각각에 대해 인터 예측이 수행되므로, 디코딩 속도가 향상될 수 있다.
인터 예측기(220)는 인터 예측 데이터(IPD)를 메모리(240)에 저장할 수 있다. 인터 예측기(220)는 인터 코딩 유닛 각각에 대해 인터 예측을 수행하고, 인터 코딩 유닛 각각의 인터 예측 데이터(IPD)를 메모리(240)에 저장할 수 있다. 예시적으로, 인터 예측기(220)는 제1 루마 코딩 블록(YCB 0)에 대해 인터 예측을 수행한 후 제1 루마 코딩 블록(YCB 0)의 인터 예측 데이터(IPD)를 메모리(240)에 저장하고, 제3 루마 코딩 블록(YCB 2)에 대해 인터 예측을 수행한 후 제3 루마 코딩 블록(YCB 2)의 인터 예측 데이터(IPD)를 메모리(240)에 저장할 수 있다.
메모리(240)는 DRAM (Dynamic RAM), SDRAM (Synchronous RAM) 등과 같은 휘발성 메모리, 및/또는 PRAM (Phase-change RAM), MRAM (Magneto-resistive RAM), ReRAM (Resistive RAM), FRAM (Ferro-electric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
역 양자화 유닛(250)은 양자화된 변환 계수들을 역 양자화하여 변환 계수(transform coefficient)들을 출력할 수 있다. 역 양자화 유닛(250)은 양자화된 변환 계수들을 2차원의 블록 형태로 재정렬할 수 있다. 역 양자화 유닛(250)은 양자화 파라미터인 양자화 스텝 크기 정보를 이용하여 양자화된 변환 계수들에 대한 역양자화를 수행하고, 변환 계수들을 획득할 수 있다.
역 변환 유닛(260)은 역 양자화 유닛(250)으로부터 출력된 변환 계수들을 역변환하고, 잔여(residual) 데이터(RD)를 생성할 수 있다.
재구성기(270)는 현재 디코딩 블록을 복원하여 재구성된 픽셀 데이터(RPD)를 생성할 수 있다. 재구성기(270)는 메모리(240)에 저장된 인터 예측 데이터(IPD)에 기초하여 인터 코딩 유닛을 복원하고, 인트라 예측 데이터(ITPD)에 기초하여 인트라 코딩 유닛을 복원할 수 있다. 재구성기(270)는 코딩 유닛 각각의 예측 데이터에 기초하여 코딩 유닛 각각을 복원할 수 있다. 예를 들어, 재구성기(270)는 제1 루마 코딩 블록(YCB 0)의 인터 예측 데이터(IPD)에 기초하여 제1 루마 코딩 블록(YCB 0)을 복원하고, 제2 루마 코딩 블록(YCB 1)의 인트라 예측 데이터(ITPD)에 기초하여 제2 루마 코딩 블록(YCB 1)을 복원할 수 있다.
재구성기(270)는 인터 코딩 유닛 각각의 잔여 데이터(RD)에 인터 코딩 유닛 각각의 인터 예측 데이터(IPD)를 가산하고, 인터 코딩 유닛 각각의 재구성된 픽셀 데이터(RPD)를 생성할 수 있다. 예시적으로, 재구성기(270)는 제1 루마 코딩 블록(YCB 0)의 잔여 데이터(RD)에 제1 루마 코딩 블록(YCB 0)의 인터 예측 데이터(IPD)를 가산하여 제1 루마 코딩 블록(YCB 0)의 재구성된 픽셀 데이터(RPD)를 생성할 수 있다.
재구성기(270)는 인트라 코딩 유닛 각각의 잔여 데이터(RD)에 인트라 코딩 유닛 각각의 인트라 예측 데이터(ITPD)를 가산하고, 인트라 코딩 유닛 각각의 재구성된 픽셀 데이터(RPD)를 생성할 수 있다. 예시적으로, 재구성기(270)는 제2 루마 코딩 블록(YCB 1)의 잔여 데이터(RD)에 제2 루마 코딩 블록(YCB 1)의 인트라 예측 데이터(ITPD)를 가산하여 제2 루마 코딩 블록(YCB 1)의 재구성된 픽셀 데이터(RPD)를 생성할 수 있다. 재구성된 픽셀 데이터(PRD)는 현재 프레임 내 다른 코딩 유닛의 인트라 예측을 위해 사용될 수도 있고, 필터링 유닛(280)을 통해 필터링을 거쳐 다음 프레임의 인터 예측을 위해 사용될 수도 있다.
인터 예측기(220)는 인터 예측 데이터(IPD)가 메모리(240)에 저장되었는지 여부를 나타내는 쓰기 플래그(wf)를 재구성기(270)로 전달할 수 있다. 예시적으로, 인터 예측기(220)는 인터 예측 데이터(IPD)가 메모리(240)에 저장되면 쓰기 플래그(wf) '1'을 재구성기(270)로 전달할 수 있다. 인터 예측 데이터(IPD)가 메모리(240)에 저장되지 않은 경우, 쓰기 플래그(wf) '0'을 재구성기(270)로 전달할 수 있으나, 상술한 방법에 제한되는 것은 아니다. 쓰기 플래그(wf)는 인터 코딩 유닛의 정보 및 인터 코딩 유닛의 인터 예측 데이터(IPD)가 메모리(240)에 저장되었는지 여부에 대한 정보를 포함할 수 있다.
인터 예측기(220)는 인터 코딩 유닛 각각에 대한 인터 예측 데이터(IPD)가 생성될 때마다 쓰기 플래그(wf)를 재구성기(270)로 전달할 수 있다. 인터 예측기(220)는 인터 코딩 유닛에 대해 인터 예측을 수행하고, 생성된 인터 예측 데이터(IPD)를 메모리(240)에 저장할 때마다 쓰기 플래그(wf)를 재구성기(270)로 전달할 수 있다. 예시적으로, 인터 예측기(220)는 제1 루마 코딩 블록(YCB 0)에 대해 인터 예측을 수행하고, 제1 루마 코딩 블록(YCB 0)의 인터 예측 데이터(IPD)가 메모리(240)에 저장되면 제1 루마 코딩 블록(YCB 0)에 대응되는 쓰기 플래그(wf) '1'을 재구성기(270)로 전달할 수 있다. 인터 예측기(220)는 제3 루마 코딩 블록(YCB 2)에 대해 인터 예측을 수행하고, 제3 루마 코딩 블록(YCB 2)의 인터 예측 데이터(IPD)가 메모리(240)에 저장되지 않은 경우 제3 루마 코딩 블록(YCB 2)에 대응되는 쓰기 플래그(wf) '0'을 재구성기(270)로 전달할 수 있다.
재구성기(270)는 쓰기 플래그(wf)에 기초하여 메모리(240)로부터 쓰기 플래그(wf)에 대응되는 인터 예측 데이터(IPD)를 리드아웃(readout)할 수 있다. 재구성기(270)는 현재 코딩 유닛이 인터 코딩 유닛인 경우, 현재 코딩 유닛에 대응되는 쓰기 플래그(wf)를 확인하여 메모리(240)로부터 쓰기 플래그(wf)에 대응되는 인터 예측 데이터(IPD)를 리드아웃할 수 있다. 쓰기 플래그(wf)에 대응되는 인터 예측 데이터(IPD)는 쓰기 플래그(wf)를 이용하여 메모리(240)로부터 리드아웃하려는 인터 코딩 유닛의 인터 예측 데이터(IPD)를 의미할 수 있다.
일 실시예에서, 재구성기(270)는 쓰기 플래그(wf) '1'이면 메모리(240)로부터 쓰기 플래그(wf)에 대응되는 인터 예측 데이터(IPD)를 리드아웃할 수 있다. 재구성기(270)는 쓰기 플래그(wf) '0'이면 인터 예측기(220)로부터 인터 예측 데이터(IPD)를 제공받을 수 있다.
재구성기(270)는 리드아웃된 인터 예측 데이터(IPD)에 기초하여 쓰기 플래그(wf)에 대응되는 인터 코딩 유닛을 복원할 수 있다. 예시적으로, 재구성기(270)는 제1 루마 코딩 블록(YCB 0)에 대응되는 쓰기 플래그(wf)가 '1'이면 메모리(240)로부터 제1 루마 코딩 블록(YCB 0)의 인터 예측 데이터(IPD)를 리드아웃할 수 있다. 재구성기(270)는 제1 루마 코딩 블록(YCB 0)의 잔여 데이터(RD)에 제1 루마 코딩 블록(YCB 0)의 인터 예측 데이터(IPD)를 가산하여, 제1 루마 코딩 블록(YCB 0)의 재구성된 픽셀 데이터(RPD)를 생성할 수 있다. 다른 예로, 재구성기(270)는 제1 크로마 코딩 블록(CCB 0)에 대응되는 쓰기 플래그(wf)가 '1'이면 메모리(240)로부터 제1 크로마 코딩 블록(CCB 0)의 인터 예측 데이터(IPD)를 리드아웃할 수 있다. 재구성기(270)는 제1 크로마 코딩 블록(CCB 0)의 잔여 데이터(RD)에 제1 크로마 코딩 블록(CCB 0)의 인터 예측 데이터(IPD)를 가산하여, 제1 크로마 코딩 블록(CCB 0)의 재구성된 픽셀 데이터(RPD)를 생성할 수 있다.
재구성기(270)는 메모리(240)에 미리 저장된 인터 예측 데이터(IPD)에 기초하여 인터 코딩 유닛을 복원함으로써, 인터 코딩 유닛 복원 시 인터 코딩 유닛의 인터 예측 데이터(IPD)가 생성되는 것을 기다리는 시간이 감소될 수 있고, 디코딩 속도가 향상될 수 있다.
재구성기(270)는 순서 정보(SD)에 기초하여 인터 코딩 유닛 각각 및 인트라 코딩 유닛 각각을 복원하고, 재구성된 픽셀 데이터(RPD)를 생성할 수 있다. 재구성기(270)는 순서 정보(SD)에 기초하여 디코딩 순서에 따라 인터 코딩 유닛 각각 및 인트라 코딩 유닛 각각을 복원할 수 있다. 재구성기(270)는 제1 루마 코딩 블록(YCB 0)을 복원하고 제1 루마 코딩 블록(YCB 0)의 재구성된 픽셀 데이터(RPD)를 생성할 수 있다. 다음으로, 재구성기(270)는 제2 루마 코딩 블록(YCB 1)을 복원하고 제2 루마 코딩 블록(YCB 1)의 재구성된 픽셀 데이터(RPD)를 생성할 수 있다. 다음으로, 재구성기(270)는 제3 루마 코딩 블록(YCB 2)을 복원하고 제3 루마 코딩 블록(YCB 2)의 재구성된 픽셀 데이터(RPD)를 생성할 수 있다.
필터링 유닛(280)은 재구성된 픽셀 데이터(RPD)에 필터링을 적용하여 화질을 향상시킬 수 있다. 필터링 유닛(280)은 재구성된 픽셀 데이터(RPD)에 필터링 방법을 적용하여 디코딩된 픽셀 데이터(DPD)를 생성할 수 있다. 필터링 방법은 디블록킹(deblocking) 필터링, 샘플 적응적 오프셋(sample adaptive offset), 적응적 루프 필터(adaptive loop filter), 및 양방향 필터(bilateral filter) 등을 포함할 수 있으나, 나열된 필터링 방법에 반드시 제한되는 것은 아니다.
디코딩된 픽셀 데이터(DPD)는 디코딩 장치(200) 외부로 출력될 수 있다. 디코딩된 픽셀 데이터(DPD)는 디스플레이(예를 들어, 도 1의 디스플레이(123))로 전달되어 사용자에게 디스플레이될 수 있다.
도 4는 본 개시의 일 실시예에 따른 코딩 유닛의 동작 순서를 설명하기 위한 도면이다. 이하에서는, 도 2 내지 도 4를 함께 참조한다.
도 2 내지 도 4를 참조하면, 인터 예측기(220)는 루마 라지 코딩 블록 및 크로마 라지 코딩 블록에 대해 인터 예측을 수행할 수 있다. 인트라 예측기(230)는 루마 라지 코딩 블록 및 크로마 라지 코딩 블록에 대해 인트라 예측을 수행할 수 있다. 재구성기(270)는 루마 라지 코딩 블록 및 크로마 라지 코딩 블록을 복원할 수 있다. 인터 예측기(220), 인트라 예측기(230), 및 재구성기(270)는 루마 라지 코딩 블록 및 크로마 라지 코딩 블록에 대해 동시에 동작을 수행할 수 있다.
인터 예측기(220)는 제1 루마 코딩 블록(YCB 0), 제3 루마 코딩 블록(YCB 2), 제6 루마 코딩 블록(YCB 5), 제8 루마 코딩 블록(YCB 7), 제10 루마 코딩 블록(YCB 9), 제11 루마 코딩 블록(YCB 10), 및 제12 루마 코딩 블록(YCB 11) 순으로 인터 예측을 수행할 수 있다. 인터 예측기(220)는 제1 크로마 코딩 블록(CCB 0), 제5 크로마 코딩 블록(CCB 4), 제7 크로마 코딩 블록(CCB 6), 및 제8 크로마 코딩 블록(CCB 7) 순으로 인터 예측을 수행할 수 있다.
인트라 예측기(230)는 제2 루마 코딩 블록(YCB 1), 제4 루마 코딩 블록(YCB 3), 제5 루마 코딩 블록(YCB 4), 제7 루마 코딩 블록(YCB 6), 제9 루마 코딩 블록(YCB 8)순으로 인트라 예측을 수행할 수 있다. 인트라 예측기(230)는 제2 크로마 코딩 블록(CCB 1), 제3 크로마 코딩 블록(CCB 2), 제4 크로마 코딩 블록(CCB 3), 및 제6 크로마 코딩 블록(CCB 5) 순으로 인트라 예측을 수행할 수 있다.
재구성기(270)는 제1 루마 코딩 블록(YCB 0), 제2 루마 코딩 블록(YCB 1), 제3 루마 코딩 블록(YCB 2), 제4 루마 코딩 블록(YCB 3), 제5 루마 코딩 블록(YCB 4), 제6 루마 코딩 블록(YCB 5), 제7 루마 코딩 블록(YCB 6), 제8 루마 코딩 블록(YCB 7) 제9 루마 코딩 블록(YCB 8), 제10 루마 코딩 블록(YCB 9), 제11 루마 코딩 블록(YCB 10), 및 제12 루마 코딩 블록(YCB 11) 순으로 복원할 수 있다. 재구성기(270)는 제1 크로마 코딩 블록(CCB 0), 제2 크로마 코딩 블록(CCB 1), 제3 크로마 코딩 블록(CCB 2), 제4 크로마 코딩 블록(CCB 3), 제5 크로마 코딩 블록(CCB 4), 제6 크로마 코딩 블록(CCB 5), 제7 크로마 코딩 블록(CCB 6), 및 제8 크로마 코딩 블록(CCB 7) 순으로 복원할 수 있다.
인트라 예측기(230)는 재구성된 픽셀 데이터(RPD)에 기초하여 인트라 코딩 유닛 각각에 대해 인트라 예측을 수행할 수 있다. 인트라 예측기(230)는 인트라 코딩 유닛 각각에 대응되는 참조 코딩 유닛의 재구성된 픽셀 데이터(PRD)에 기초하여 인트라 코딩 유닛 각각에 대해 인트라 예측을 수행할 수 있다. 참조 코딩 유닛은 현재 인트라 코딩 유닛에 대해 인트라 예측을 수행하기 위해 필요한 현재 인트라 코딩 유닛 주변의 코딩 유닛을 의미할 수 있다.
참조 코딩 유닛은 인트라 코딩 유닛 각각의 상측 및 좌측에 위치한 코딩 유닛들 중 적어도 하나일 수 있다. 예를 들어, 제2 루마 코딩 블록(YCB 1)의 참조 코딩 유닛은 제2 루마 코딩 블록(YCB 1)의 좌측에 위치한 제1 루마 코딩 블록(YCB 0)일 수 있다. 다른 예로, 제4 루마 코딩 블록(YCB 3)의 참조 코딩 유닛은 제4 루마 코딩 블록(YCB 3)의 좌측에 위치한 제1 루마 코딩 블록(YCB 0), 제4 루마 코딩 블록(YCB 3)의 상측에 위치한 제3 루마 코딩 블록(YCB 2)일 수 있다.
인트라 예측기(230)는 현재 인트라 코딩 유닛 각각의 참조 코딩 유닛의 재구성된 픽셀 데이터(PRD)에 기초하여 현재 인트라 코딩 유닛에 대해 인트라 예측을 수행할 수 있다. 인트라 예측기(230)는 참조 코딩 유닛인 제1 루마 코딩 블록(YCB 0)의 재구성된 픽셀 데이터(RPD)에 기초하여 제2 루마 코딩 블록(YCB 1)에 대해 인트라 예측을 수행할 수 있다.
인터 예측기(220)는 제1 루마 코딩 블록(YCB 0)에 대해 인터 예측을 수행할 수 있다. 인터 예측기(220)는 제1 루마 코딩 블록(YCB 0)의 인터 예측 데이터(IPD)를 메모리(240)에 저장할 수 있다. 재구성기(270)는 제1 루마 코딩 블록(YCB 0)의 쓰기 플래그(wf)에 기초하여 메모리(240)로부터 제1 루마 코딩 블록(YCB 0)의 인터 예측 데이터(IPD)를 리드아웃할 수 있다. 재구성기(270)는 리드아웃한 인터 예측 데이터(IPD)에 기초하여 제1 루마 코딩 블록(YCB 0)의 재구성된 픽셀 데이터(RPD)를 생성할 수 있다. 제1 루마 코딩 블록(YCB 0)이 제2 루마 코딩 블록(YCB 1)의 참조 코딩 유닛에 해당하므로, 인트라 예측기(230)는 제1 루마 코딩 블록(YCB 0)에 대해 인터 예측이 수행되면 제2 루마 코딩 블록(YCB 1)에 대해 인트라 예측을 수행할 수 있다. 인트라 예측기(230)는 참조 코딩 유닛인 제1 루마 코딩 블록(YCB 0)의 재구성된 픽셀 데이터(RPD)에 기초하여 제2 루마 코딩 블록(YCB 1)에 대해 인트라 예측을 수행할 수 있다.
도 3 및 도 4에는 제1 루마 코딩 블록(YCB 0)이 인터 코딩 유닛이고, 제2 루마 코딩 블록(YCB 1)이 인트라 코딩 유닛인 것으로 도시되어 있으나, 제1 루마 코딩 블록(YCB 0)이 인트라 코딩 유닛이고, 제2 루마 코딩 블록(YCB 1)이 인터 코딩 유닛인 경우, 인트라 예측기(230)는 제1 루마 코딩 블록(YCB 0)에 대해 인트라 예측을 수행할 수 있다. 제1 루마 코딩 블록(YCB 0)의 참조 코딩 유닛이 없으므로, 인트라 예측기(230)는 제1 루마 코딩 유닛(YCB 0)에 대해 바로 인트라 예측을 수행할 수 있다. 인터 예측기(220)는 인트라 예측기(230)가 제1 루마 코딩 유닛(YCB 0)에 대해 인트라 예측을 수행하는 동안 제2 루마 코딩 유닛(YCB 1)에 대해 인터 예측을 수행할 수 있다.
인터 예측기(220)는 제1 크로마 코딩 블록(CCB 0)에 대해 인터 예측을 수행할 수 있다. 인터 예측기(220)는 제1 크로마 코딩 블록(CCB 0)의 인터 예측 데이터(IPD)를 메모리(240)에 저장할 수 있다. 재구성기(270)는 제1 크로마 코딩 블록(CCB 0)의 쓰기 플래그(wf)에 기초하여 메모리(240)로부터 제1 크로마 코딩 블록(CCB 0)의 인터 예측 데이터(IPD)를 리드아웃할 수 있다. 재구성기(270)는 리드아웃한 인터 예측 데이터(IPD)에 기초하여 제1 크로마 코딩 블록(CCB 0)의 재구성된 픽셀 데이터(RPD)를 생성할 수 있다. 제1 크로마 코딩 블록(CCB 0)이 제2 크로마 코딩 블록(CCB 1)의 참조 코딩 유닛에 해당하므로, 인트라 예측기(230)는 제1 크로마 코딩 블록(CCB 0)에 대해 인터 예측이 수행되면 제2 크로마 코딩 블록(CCB 1)에 대해 인트라 예측을 수행할 수 있다. 인트라 예측기(230)는 참조 코딩 유닛인 제1 크로마 코딩 블록(CCB 0)의 재구성된 픽셀 데이터(RPD)에 기초하여 제2 크로마 코딩 블록(CCB 1)에 대해 인트라 예측을 수행할 수 있다.
도 5는 본 개시의 실시예에 따른 라지 코딩 유닛 및 코딩 유닛을 설명하기 위한 블록도이다.
도 5를 참조하면, 라지 코딩 유닛은 루마 코딩 블록 및 크로마 코딩 블록을 포함할 수 있다. 복수 개의 루마 코딩 블록들로 분할된 YLCB(510) 및 복수 개의 크로마 코딩 블록들로 분할된 CLCB(520)의 모양은 동일할 수 있다. 도 5의 YLCB(510) 및 CLCB(520)은 각각 도 3의 YLCB(310) 및 CLCB(320)에 대응되므로, 중복되는 내용은 생략한다.
YLCB(510)는 인터 코딩 유닛인 제1 루마 코딩 블록(YCB 0), 제5 루마 코딩 블록(YCB 4), 제7 루마 코딩 블록(YCB 6), 및 제8 루마 코딩 블록(YCB 7)을 포함할 수 있다. CLCB(320)는 인트라 코딩 유닛인 제2 루마 코딩 블록(YCB 1), 제3 루마 코딩 블록(YCB 2), 제4 루마 코딩 블록(YCB 3), 제6 루마 코딩 블록(YCB 5)을 포함할 수 있다. YLCB(510)에 포함된 복수 개의 코딩 유닛들의 크기는 서로 상이할 수 있다.
YLCB(510)의 경우, 제1 루마 코딩 블록(YCB 0), 제2 루마 코딩 블록(YCB 1), 제3 루마 코딩 블록(YCB 2), 제4 루마 코딩 블록(YCB 3), 제5 루마 코딩 블록(YCB 4), 제6 루마 코딩 블록(YCB 5), 제7 루마 코딩 블록(YCB 6), 및 제8 루마 코딩 블록(YCB 7)은 나열한 순서대로 디코딩이 수행되는 것을 가정한다.
도 6은 도 5에 따른 코딩 유닛의 동작 순서를 설명하기 위한 도면이다. 이하에서는, 도 2, 도 5, 및 도 6을 함께 참조한다.
복수 개의 루마 코딩 블록들로 분할된 YLCB(510) 및 복수 개의 크로마 코딩 블록들로 분할된 CLCB(520)의 모양이 동일하므로, 위치가 동일한 루마 코딩 블록 및 크로마 코딩 블록에 대해 인터 예측이 수행되는 시간이 동일할 수 있다. 인터 예측기(220)는 동일한 시점에 루마 코딩 블록 및 크로마 코딩 블록에 대해 인터 예측을 수행할 수 있다. 예를 들어, 제1 루마 코딩 블록(YCB 0) 및 제1 크로마 코딩 블록(CCB 0)에 대해 인터 예측이 수행되는 시간이 동일할 수 있다.
위치가 동일한 루마 코딩 블록 및 크로마 코딩 블록에 대해 인트라 예측이 수행되는 시간이 동일할 수 있다. 인트라 예측기(230)는 동일한 시점에 루마 코딩 블록 및 크로마 코딩 블록에 대해 인트라 예측을 수행할 수 있다.
위치가 동일한 루마 코딩 블록 및 크로마 코딩 블록이 복원되는 시간이 동일할 수 있다.
도 7은 본 개시의 일 실시예에 따른 복수 개의 인터 예측기를 포함하는 디코딩 장치를 설명하기 위한 블록도이다.
도 7을 참조하면, 디코딩 장치(200)는 엔트로피 디코더(210), 제1 인터 예측기(221), 제2 인터 예측기(222), 인트라 예측기(230), 메모리(240), 역 양자화 유닛(250), 역 변환 유닛(260), 재구성기(270), 필터링 유닛(280), 및 인터 컨트롤러(290)를 포함할 수 있다. 도 2의 엔트로피 디코더(210), 인트라 예측기(230), 메모리(240), 역 양자화 유닛(250), 역 변환 유닛(260), 재구성기(270), 및 필터링 유닛(280)은 도 7의 엔트로피 디코더(210), 인트라 예측기(230), 메모리(240), 역 양자화 유닛(250), 역 변환 유닛(260), 재구성기(270), 및 필터링 유닛(280)에 대응되므로 중복되는 내용은 생략한다. 도 2의 인터 예측기(220)는 도 7의 제1 인터 예측기(221) 및 제2 인터 예측기(222)에 대응되므로 중복되는 내용은 생략한다.
디코딩 장치(200)는 복수 개의 인터 예측기를 포함할 수 있다. 도 7에는 2개의 인터 예측기가 도시되어 있으나, 인터 예측기의 개수는 이에 반드시 한정되는 것은 아니다. 이하에서는, 도 7 및 도 3을 함께 참조한다.
인터 컨트롤러(290)는 복수 개의 인터 예측기 각각이 서로 다른 인터 코딩 유닛에 대해 인터 예측을 수행하도록 제어할 수 있다. 인터 컨트롤러(290)는 엔트로피 디코더(210)로부터 예측 정보(PD) 및 순서 정보(SD)를 수신할 수 있다. 인터 컨트롤러(290)는 예측 정보(PD) 및 순서 정보(SD)에 기초하여 복수 개의 코딩 유닛들을 분류할 수 있다. 인터 컨트롤러(290)는 분류 결과에 따라 복수 개의 인터 예측기 각각이 인터 예측을 수행하도록 제어하는 제어 신호(CS)를 생성할 수 있다.
인터 컨트롤러(290)는 제1 인터 예측기(221) 및 제2 인터 예측기(222) 각각이 서로 다른 인터 코딩 유닛에 대해 인터 예측을 수행하도록 제어할 수 있다. 예를 들어, 인터 컨트롤러(290)는 제1 인터 예측기(221)가 제1 루마 코딩 블록(YCB 0)에 대해 인터 예측을 수행하고, 제2 인터 예측기(222)가 제3 루마 코딩 블록(YCB 2)에 대해 인터 예측을 수행하도록 제어하는 제어 신호(CS)를 생성할 수 있다.
인터 컨트롤러(290)는 순서 정보(SD)에 기초하여 제1 인터 예측기(221)가 디코딩 순서가 홀수 번째인 인터 코딩 유닛에 대해 인터 예측을 수행하도록 제어할 수 있다. YLCB(310)에서 디코딩 순서가 홀수 번째인 인터 코딩 유닛은 제1 루마 코딩 블록(YCB 0), 제3 루마 코딩 블록(YCB 2), 및 제11 루마 코딩 블록(YCB 10)일 수 있다. 인터 컨트롤러(290)는 제1 인터 예측기(221)가 디코딩 순서가 홀수 번째인 루마 코딩 블록 및 크로마 코딩 블록에 대해 인터 예측을 수행하도록 제어할 수 있다.
인터 컨트롤러(290)는 순서 정보(SD)에 기초하여 제2 인터 예측기(222)가 디코딩 순서가 짝수 번째인 인터 코딩 유닛에 대해 인터 예측을 수행하도록 제어할 수 있다. YLCB(310)에서 디코딩 순서가 짝수 번째인 인터 코딩 유닛은 제6 루마 코딩 블록(YCB 5), 제8 루마 코딩 블록(YCB 7), 제10 루마 코딩 블록(YCB 9), 및 제12 루마 코딩 블록(YCB 11)일 수 있다. 인터 컨트롤러(290)는 제2 인터 예측기(222)가 디코딩 순서가 짝수 번째인 루마 코딩 블록 및 크로마 코딩 블록에 대해 인터 예측을 수행하도록 제어할 수 있다.
다만, 이에 반드시 제한되는 것은 아니며, 인터 컨트롤러(290)는 제1 인터 예측기(221)가 디코딩 순서가 짝수 번째인 인터 코딩 유닛에 대해 인터 예측을 수행하도록 제어하고, 제2 인터 예측기(222)가 디코딩 순서가 홀수 번째인 인터 코딩 유닛에 대해 인터 예측을 수행하도록 제어할 수도 있다.
제1 인터 예측기(221)는 디코딩 순서가 홀수 번째인 인터 코딩 유닛에 대해 인터 예측을 수행하고, 인터 예측이 수행된 제1 인터 예측 데이터(IPD1)를 생성할 수 있다. 예시적으로, 제1 인터 예측기(221)는 제1 루마 코딩 블록(YCB 0)에 대해 인터 예측을 수행하고, 제1 루마 코딩 블록(YCB 0)의 제1 인터 예측 데이터(IPD1)를 생성할 수 있다.
제1 인터 예측기(221)는 제1 인터 예측 데이터(IPD1)를 메모리(240)에 저장할 수 있다. 제1 인터 예측기(221)는 제1 인터 예측 데이터(IPD1)가 메모리(240)에 저장되었는지 여부를 나타내는 제1 쓰기 플래그(wf1)를 재구성기(270)로 전달할 수 있다. 제1 인터 예측기(221)는 디코딩 순서가 홀수 번째인 인터 코딩 유닛에 대해 인터 예측을 수행하고, 생성된 제1 인터 예측 데이터(IPD1)를 메모리(240)에 저장할 때마다 제1 쓰기 플래그(wf1)를 재구성기(270)로 전달할 수 있다.
재구성기(270)는 제1 쓰기 플래그(wf1)에 기초하여 메모리(240)로부터 제1 쓰기 플래그(wf1)에 대응되는 제1 인터 예측 데이터(IPD1)를 리드아웃할 수 있다. 재구성기(270)는 리드아웃된 제1 인터 예측 데이터(IPD1)에 기초하여 제1 쓰기 플래그(wf1)에 대응되는 인터 코딩 유닛을 복원할 수 있다. 예시적으로, 재구성기(270)는 제1 루마 코딩 블록(YCB 0)에 대응되는 제1 쓰기 플래그(wf1)가 '1'이면 메모리(240)로부터 제1 루마 코딩 블록(YCB 0)의 제1 인터 예측 데이터(IPD1)를 리드아웃할 수 있다. 재구성기(270)는 제1 루마 코딩 블록(YCB 0)의 잔여 데이터(RD)에 제1 루마 코딩 블록(YCB 0)의 제1 인터 예측 데이터(IPD1)를 가산하여, 제1 루마 코딩 블록(YCB 0)의 재구성된 픽셀 데이터(RPD)를 생성할 수 있다.
제2 인터 예측기(222)는 디코딩 순서가 짝수 번째인 인터 코딩 유닛에 대해 인터 예측을 수행하고, 인터 예측이 수행된 제2 인터 예측 데이터(IPD2)를 생성할 수 있다. 예시적으로, 제2 인터 예측기(222)는 제6 루마 코딩 블록(YCB 5)에 대해 인터 예측을 수행하고, 제6 루마 코딩 블록(YCB 5)의 제2 인터 예측 데이터(IPD2)를 생성할 수 있다.
제2 인터 예측기(222)는 제2 인터 예측 데이터(IPD2)를 메모리(240)에 저장할 수 있다. 제2 인터 예측기(222)는 제2 인터 예측 데이터(IPD2)가 메모리(240)에 저장되었는지 여부를 나타내는 제2 쓰기 플래그(wf2)를 재구성기(270)로 전달할 수 있다. 제2 인터 예측기(222)는 디코딩 순서가 짝수 번째인 인터 코딩 유닛에 대해 인터 예측을 수행하고, 생성된 제2 인터 예측 데이터(IPD2)를 메모리(240)에 저장할 때마다 제2 쓰기 플래그(wf2)를 재구성기(270)로 전달할 수 있다.
재구성기(270)는 제2 쓰기 플래그(wf2)에 기초하여 메모리(240)로부터 제2 쓰기 플래그(wf2)에 대응되는 제2 인터 예측 데이터(IPD2)를 리드아웃할 수 있다. 재구성기(270)는 리드아웃된 제2 인터 예측 데이터(IPD2)에 기초하여 제2 쓰기 플래그(wf2)에 대응되는 인터 코딩 유닛을 복원할 수 있다. 예시적으로, 재구성기(270)는 제6 루마 코딩 블록(YCB 5)에 대응되는 제2 쓰기 플래그(wf2)가 '1'이면 메모리(240)로부터 제6 루마 코딩 블록(YCB 5)의 제2 인터 예측 데이터(IPD2)를 리드아웃할 수 있다. 재구성기(270)는 제6 루마 코딩 블록(YCB 5)의 잔여 데이터(RD)에 제6 루마 코딩 블록(YCB 5)의 제2 인터 예측 데이터(IPD2)를 가산하여, 제6 루마 코딩 블록(YCB 5)의 재구성된 픽셀 데이터(RPD)를 생성할 수 있다.
도 8은 본 개시의 일 실시예에 따른 코딩 유닛들에 대해 디코딩이 수행되는 것을 설명하기 위한 도면이다. 도 8은 도 3의 루마 라지 코딩 블록(310)의 루마 코딩 블록들에 대해 디코딩이 수행되는 것을 나타낸다. 이하에서는, 도3, 도 7, 및 도 8을 함께 참조한다.
제1 인터 예측기(221)는 제1 루마 코딩 블록(YCB 0), 제3 루마 코딩 블록(YCB 2), 및 제11 루마 코딩 블록(YCB 10) 순으로 인터 예측을 수행할 수 있다. 제2 인터 예측기(222)는 제6 루마 코딩 블록(YCB 5), 제8 루마 코딩 블록(YCB 7), 제10 루마 코딩 블록(YCB 9), 및 제12 루마 코딩 블록(YCB 11) 순으로 인터 예측을 수행할 수 있다.
제1 인터 예측기(221)가 디코딩 순서가 홀수 번째인 인터 코딩 유닛에 대해인터 예측을 수행하는 동안 제2 인터 예측기(222)는 디코딩 순서가 짝수 번째인 인터 코딩 유닛에 대해 인터 예측을 수행할 수 있다. 예시적으로, 제1 인터 예측기(221)가 제1 루마 코딩 블록(YCB 0)에 대해 인터 예측을 수행하는 동안, 제2 인터 예측기(222)는 제6 루마 코딩 블록(YCB 5)에 대해 인터 예측을 수행할 수 있다. 제2 인터 예측기(222)가 제6 루마 코딩 블록(YCB 5)에 대해 인터 예측을 빨리 수행한 경우, 제2 인터 예측기(222)는 제1 인터 예측기(221)가 제1 루마 코딩 블록(YCB 0)에 대해 인터 예측을 수행하는 동안 제8 루마 코딩 블록(YCB 7)에 대해 인터 예측을 수행할 수 있다.
제1 루마 코딩 블록(YCB 0)이 제2 루마 코딩 블록(YCB 1)의 참조 코딩 유닛에 해당하므로, 인트라 예측기(230)는 제1 루마 코딩 블록(YCB 0)에 대해 인터 예측이 수행되면 제2 루마 코딩 블록(YCB 1)에 대해 인트라 예측을 수행할 수 있다. 인트라 예측기(230)가 제1 루마 코딩 블록(YCB 0)에 대해 인터 예측이 수행되는 것을 기다리는 동안, 제2 인터 예측기(222)는 제6 루마 코딩 블록(YCB 5)에 대해 인터 예측을 수행할 수 있다. 인트라 예측기(230)는 참조 코딩 유닛인 제1 루마 코딩 블록(YCB 0)의 재구성된 픽셀 데이터(RPD)에 기초하여 제2 루마 코딩 블록(YCB 1)에 대해 인트라 예측을 수행할 수 있다.
복수 개의 인터 예측기 각각이 서로 다른 인터 코딩 유닛에 대해 인터 예측을 수행함으로써, 모든 인터 코딩 유닛에 대해 인터 예측이 완료되는 시간이 감소할 수 있다. 이에 따라, 인터 예측 데이터를 이용하여 재구성기(270)가 코딩 유닛을 복원하는 시간 및 인트라 예측기(230)가 재구성된 픽셀 데이터(RPD)를 이용하여 인트라 코딩 유닛에 대해 인트라 예측을 수행하는 시간이 감소될 수 있고, 디코딩 장치(200)의 디코딩 속도가 향상될 수 있다.
도 9는 본 개시의 일 실시예에 따른 디코딩 장치의 동작 방법을 설명하기 위한 흐름도이다.
단계 S910에서, 디코딩 장치는 복수 개의 코딩 유닛들로 분할된 라지 코딩 유닛들을 포함하는 비디오 데이터가 인코딩된 비트스트림을 수신할 수 있다.
단계 S920에서, 디코딩 장치는 비트스트림을 디코딩하고, 예측 정보 및 순서 정보를 생성할 수 있다. 예측 정보는 복수 개의 코딩 유닛들 각각의 예측 모드를 나타내는 것으로, 복수 개의 코딩 유닛들 각각이 인터 예측 모드인지 인트라 예측 모드인지를 나타내는 정보를 의미할 수 있다. 순서 정보는 복수 개의 코딩 유닛들이 디코딩 장치에서 재구성되는 순서를 의미할 수 있다.
단계 S930에서, 디코딩 장치는 예측 정보 및 순서 정보에 기초하여 현재 디코딩하고자 하는 현재 코딩 유닛에 대해 인터 예측을 수행할지 여부를 결정할 수 있다. 구체적으로, 디코딩 장치는 예측 정보에 기초하여 현재 코딩 유닛이 인터 코딩 유닛인지 판단할 수 있다. 디코딩 장치는 순서 정보에 기초하여 현재 코딩 유닛의 디코딩 순서에 따라 인터 예측을 수행할 수 있다.
디코딩 장치는 현재 코딩 유닛이 인터 코딩 유닛에 해당하고, 인터 예측을 수행하는 것으로 결정한 경우(S940, 네), 현재 코딩 유닛에 대해 인터 예측을 수행할 수 있다. 디코딩 장치는 현재 코딩 유닛이 인트라 코딩 유닛에 해당하고, 인터 예측을 수행하지 않는 것으로 결정한 경우(S970, 아니오), 현재 코딩 유닛에 대해 인트라 예측을 수행할 수 있다.
단계 S940에서, 디코딩 장치는, 현재 코딩 유닛에 대해 인터 예측을 수행하고, 인터 예측 데이터를 생성할 수 있다. 디코딩 장치는 인터 코딩 유닛 각각에 대해 인터 예측을 수행하고, 인터 코딩 유닛 각각의 인터 예측 데이터를 생성할 수 있다.
단계 S950에서, 디코딩 장치는 생성된 인터 예측 데이터를 메모리에 저장할 수 있다. 디코딩 장치는 인터 코딩 유닛 각각에 대해 인터 예측이 수행된 인터 예측 데이터를 메모리에 저장할 수 있다.
디코딩 장치는 인터 예측 데이터가 메모리에 저장되었는지 여부를 나타내는 쓰기 플래그를 생성할 수 있다. 디코딩 장치는 쓰기 플래그에 기초하여 메모리로부터 쓰기 플래그에 대응되는 인터 예측 데이터를 리드아웃할 수 있다.
단계 S960에서, 디코딩 장치는 인터 예측 데이터에 기초하여 현재 코딩 유닛을 복원할 수 있다. 디코딩 장치는 현재 코딩 유닛의 잔여 데이터에 메모리로부터 리드아웃된 현재 코딩 유닛의 인터 예측 데이터를 가산하여 현재 코딩 유닛의 재구성된 픽셀 데이터를 생성할 수 있다.
단계 S970에서, 디코딩 장치는 현재 코딩 유닛에 대해 인트라 예측을 수행하고, 인트라 예측 데이터를 생성할 수 있다. 디코딩 장치는 인트라 코딩 유닛 각각에 대해 인트라 예측을 수행하고, 인터 코딩 유닛 각각의 인트라 예측 데이터를 생성할 수 있다.
단계 S980에서, 디코딩 장치는 인트라 예측 데이터에 기초하여 현재 코딩 유닛을 복원할 수 있다. 디코딩 장치는 현재 코딩 유닛의 잔여 데이터에 현재 코딩 유닛의 인트라 예측 데이터를 가산하여 현재 코딩 유닛의 재구성된 픽셀 데이터를 생성할 수 있다.
본 개시는 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.

Claims (10)

  1. 복수 개의 코딩 유닛들로 분할된 라지 코딩 유닛들을 포함하는 비디오 데이터가 인코딩된 비트스트림을 수신하고, 상기 비트스트림을 디코딩하고 복수 개의 코딩 유닛들 각각의 예측 모드를 나타내는 예측 정보 및 복수 개의 코딩 유닛들 각각의 디코딩 순서를 나타내는 순서 정보를 생성하는 엔트로피 디코더;
    상기 예측 정보에 기초하여 상기 복수 개의 코딩 유닛들 중 인터(inter) 예측을 수행할 코딩 유닛인 인터 코딩 유닛 각각에 대해 인터 예측을 수행하는 인터 예측기;
    상기 예측 정보에 기초하여 상기 복수 개의 코딩 유닛들 중 인트라(intra) 예측을 수행할 코딩 유닛인 인트라 코딩 유닛 각각에 대해 인트라 예측을 수행하고, 상기 인트라 코딩 유닛 각각에 대해 인트라 예측이 수행된 인트라 예측 데이터를 생성하는 인트라 예측기;
    상기 인터 코딩 유닛 각각에 대해 인터 예측이 수행된 인터 예측 데이터를 저장하는 메모리; 및
    상기 메모리에 저장된 인터 예측 데이터에 기초하여 상기 인터 코딩 유닛 각각을 복원하고, 상기 인트라 예측 데이터에 기초하여 상기 인트라 코딩 유닛 각각을 복원하는 재구성기를 포함하는, 디코딩 장치.
  2. 제1 항에 있어서,
    상기 인터 예측기는,
    상기 인터 예측 데이터가 상기 메모리에 저장되었는지 여부를 나타내는 쓰기 플래그를 상기 재구성기로 전달하는 것을 특징으로 하는, 디코딩 장치.
  3. 제2 항에 있어서,
    상기 인터 예측기는,
    상기 인터 코딩 유닛 각각에 대한 인터 예측 데이터가 생성될 때마다, 상기 쓰기 플래그를 상기 재구성기로 전달하는 것을 특징으로 하는, 디코딩 장치.
  4. 제3 항에 있어서,
    상기 재구성기는,
    상기 쓰기 플래그에 기초하여 상기 메모리로부터 상기 쓰기 플래그에 대응되는 인터 예측 데이터를 리드아웃하고, 리드아웃된 인터 예측 데이터에 기초하여 상기 쓰기 플래그에 대응되는 인터 코딩 유닛을 복원하는 것을 특징으로 하는, 디코딩 장치.
  5. 제4 항에 있어서,
    상기 재구성기는,
    상기 순서 정보에 기초하여 상기 인터 코딩 유닛 각각 및 상기 인트라 코딩 유닛 각각을 복원하고, 상기 인터 코딩 유닛 각각 및 상기 인트라 코딩 유닛 각각의 재구성된 픽셀 데이터를 생성하는 것을 특징으로 하는, 디코딩 장치.
  6. 제5 항에 있어서,
    상기 인트라 예측기는,
    상기 재구성된 픽셀 데이터에 기초하여 상기 인트라 코딩 유닛 각각에 대해 인트라 예측을 수행하는 것을 특징으로 하는, 디코딩 장치.
  7. 제6 항에 있어서,
    상기 인트라 예측기는,
    상기 인트라 코딩 유닛 각각에 대응되는 참조 코딩 유닛의 재구성된 픽셀 데이터에 기초하여 상기 인트라 코딩 유닛 각각에 대해 인트라 예측을 수행하는 것을 특징으로 하는, 디코딩 장치.
  8. 복수 개의 코딩 유닛들로 분할된 라지 코딩 유닛들을 포함하는 비디오 데이터가 인코딩된 비트스트림을 수신하고, 상기 비트스트림을 디코딩하고 복수 개의 코딩 유닛들 각각의 예측 모드를 나타내는 예측 정보 및 복수 개의 코딩 유닛들 각각의 디코딩 순서를 나타내는 순서 정보를 생성하는 엔트로피 디코더;
    상기 예측 정보에 기초하여 상기 복수 개의 코딩 유닛들 중 인터(inter) 예측을 수행할 코딩 유닛인 인터 코딩 유닛 각각에 대해 인터 예측을 수행하는 복수 개의 인터 예측기;
    상기 복수 개의 인터 예측기 각각이 서로 다른 인터 코딩 유닛에 대해 인터 예측을 수행하도록 제어하는 인터 컨트롤러;
    상기 예측 정보에 기초하여 상기 복수 개의 코딩 유닛들 중 인트라(intra) 예측을 수행할 코딩 유닛인 인트라 코딩 유닛 각각에 대해 인트라 예측을 수행하고, 상기 인트라 코딩 유닛 각각에 대해 인트라 예측이 수행된 인트라 예측 데이터를 생성하는 인트라 예측기;
    상기 인터 코딩 유닛 각각에 대해 인터 예측이 수행된 인터 예측 데이터를 저장하는 메모리; 및
    상기 메모리에 저장된 인터 예측 데이터에 기초하여 상기 인터 코딩 유닛 각각을 복원하고, 상기 인트라 예측 데이터에 기초하여 상기 인트라 코딩 유닛 각각을 복원하는 재구성기를 포함하는, 디코딩 장치.
  9. 제8 항에 있어서,
    상기 복수 개의 인터 예측기는, 제1 인터 예측기 및 제2 인터 예측기를 포함하고,
    상기 인터 컨트롤러는,
    상기 순서 정보에 기초하여 상기 제1 인터 예측기가 상기 디코딩 순서가 홀수 번째인 인터 코딩 유닛에 대해 인터 예측을 수행하도록 제어하고, 상기 제2 인터 예측기가 상기 디코딩 순서가 짝수 번째인 인터 코딩 유닛에 대해 인터 예측을 수행하도록 제어하는 것을 특징으로 하는, 디코딩 장치.
  10. 복수 개의 코딩 유닛들로 분할된 라지 코딩 유닛들을 포함하는 비디오 데이터가 인코딩된 비트스트림을 수신하는 단계;
    상기 비트스트림을 디코딩하고 복수 개의 코딩 유닛들 각각의 예측 모드를 나타내는 예측 정보 및 복수 개의 코딩 유닛들 각각의 디코딩 순서를 나타내는 순서 정보를 생성하는 단계;
    상기 예측 정보 및 순서 정보에 기초하여 현재 디코딩하고자 하는 현재 코딩 유닛에 대해 인터 예측을 수행할지 여부를 결정하는 단계;
    상기 현재 코딩 유닛에 대해 인터 예측을 수행하는 경우, 상기 현재 코딩 유닛에 대해 인터 예측이 수행된 인터 예측 데이터를 생성하고 상기 인터 예측 데이터를 메모리에 저장하고, 상기 현재 코딩 유닛에 대해 인트라 예측을 수행하는 경우, 상기 현재 코딩 유닛에 대해 인트라 예측이 수행된 인트라 예측 데이터를 생성하는 단계; 및
    상기 메모리에 저장된 인터 예측 데이터 및 상기 인트라 예측 데이터 중 하나에 기초하여 상기 현재 코딩 유닛을 복원하는 단계를 포함하는 디코딩 방법.
KR1020210117949A 2021-09-03 2021-09-03 디코딩 장치 및 그의 동작 방법 KR20230034789A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210117949A KR20230034789A (ko) 2021-09-03 2021-09-03 디코딩 장치 및 그의 동작 방법
US17/895,345 US20230073108A1 (en) 2021-09-03 2022-08-25 Decoding device and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210117949A KR20230034789A (ko) 2021-09-03 2021-09-03 디코딩 장치 및 그의 동작 방법

Publications (1)

Publication Number Publication Date
KR20230034789A true KR20230034789A (ko) 2023-03-10

Family

ID=85385626

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210117949A KR20230034789A (ko) 2021-09-03 2021-09-03 디코딩 장치 및 그의 동작 방법

Country Status (2)

Country Link
US (1) US20230073108A1 (ko)
KR (1) KR20230034789A (ko)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010081498A (ja) * 2008-09-29 2010-04-08 Hitachi Kokusai Electric Inc 画像圧縮符号化方法、及び装置
EP3606074B1 (en) * 2013-03-29 2020-12-30 JVC KENWOOD Corporation Image decoding device, image decoding method, and image decoding program

Also Published As

Publication number Publication date
US20230073108A1 (en) 2023-03-09

Similar Documents

Publication Publication Date Title
US11477484B2 (en) Video intra prediction using hybrid recursive filters
US9414059B2 (en) Image processing device, image coding method, and image processing method
US20220053194A1 (en) Intra prediction method and apparatus for video sequence
BR112013013513B1 (pt) Dispositivo e método de processamento de imagem
TW201315242A (zh) 用於操作通訊裝置的視訊編碼器的裝置和方法
US11778188B2 (en) Scalar quantizer decision scheme for dependent scalar quantization
JP2022521809A (ja) ビデオコーディングにおける係数領域ブロック差分パルスコード変調
US20150103912A1 (en) Method and apparatus for video encoding/decoding based on multi-layer
CN110754085A (zh) 用于非4:4:4格式视频内容的颜色重映射
JP2021515461A (ja) ビデオ符号化のための位置依存の空間変化変換
KR20230034789A (ko) 디코딩 장치 및 그의 동작 방법
CN114402602A (zh) 用于视频编解码的算术编解码器字节填料信令
US20230239479A1 (en) Method and apparatus for deriving motion vector
US11758178B2 (en) Method for compressing motion vector and apparatus therefor
US20230319304A1 (en) Process and apparatus for controlling compressed motion vectors
US20230085006A1 (en) Intra Prediction
US20240080480A1 (en) Entropy coding method and device in video/image coding system
KR20230022061A (ko) 디코딩 장치 및 그의 동작 방법
KR20220161427A (ko) 픽처 분할 정보 및 서브픽처 정보에 기반하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장하는 기록 매체
CN117136544A (zh) 视频流式传输中的参数集指示的方法
CN116248901A (zh) 用于图像编解码方法的编解码设备和发送图像数据的设备