KR20220020959A - 비디오 데이터를 코딩하기 위한 디바이스 및 방법 - Google Patents

비디오 데이터를 코딩하기 위한 디바이스 및 방법 Download PDF

Info

Publication number
KR20220020959A
KR20220020959A KR1020227001511A KR20227001511A KR20220020959A KR 20220020959 A KR20220020959 A KR 20220020959A KR 1020227001511 A KR1020227001511 A KR 1020227001511A KR 20227001511 A KR20227001511 A KR 20227001511A KR 20220020959 A KR20220020959 A KR 20220020959A
Authority
KR
South Korea
Prior art keywords
block
motion information
sub
list
flag
Prior art date
Application number
KR1020227001511A
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 에프쥐 이노베이션 컴퍼니 리미티드
Publication of KR20220020959A publication Critical patent/KR20220020959A/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/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
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for 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/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/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
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/543Motion estimation other than block-based using regions
    • 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

Landscapes

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

Abstract

전자 디바이스에 의해 비트스트림을 디코딩하는 방법이 제공된다. 블록 유닛은 비트스트림으로부터 수신된 이미지 프레임으로부터 결정된다. 제1 참조 프레임을 선택하기 위한 제1 리스트 플래그를 갖는 제1 움직임 정보, 및 제2 참조 프레임을 선택하기 위한 제2 리스트 플래그를 갖는 제2 움직임 정보가 후보 리스트로부터 수신되어 블록 유닛을 재구성한다. 제1 리스트 플래그가 제2 리스트 플래그와 동일할 때, 제1 및 제2 참조 프레임들이 2개의 리스트 플래그와는 상이한 플래그 값에 의해 표시되는 참조 리스트에 포함되는지를 확인하지 않고서, 제1 및 제2 움직임 정보 중의 미리 정의된 것이 블록 유닛 내의 결정된 서브-블록에 대해 저장된다. 후속 블록이 서브-블록에 기초하여 재구성될 때, 저장된 움직임 정보에 기초하여 후속 블록이 재구성된다.

Description

비디오 데이터를 코딩하기 위한 디바이스 및 방법
관련 출원(들)에 대한 상호 참조
본 개시내용은 2019년 6월 24일자로 출원되고 발명의 명칭이 "삼각형 파티션 예측을 위한 움직임 저장 프로세스 및 선형 모델을 위한 참조 샘플링 프로세스(Motion Storing Process for Triangle Partition Prediction and Reference Sampling Process for Linear Model)"인 미국 가특허 출원 일련번호 제62/865443호(이하, "'443 가출원"으로 지칭됨), 및 미국 2019년 8월 8일자로 출원되고 발명의 명칭이 "선형 모델의 아핀 관련 모드 및 샘플 선택의 하이레벨 신택스(High Level Syntax of Affine Related Mode and Sample Selection of Linear Model)"인 미국 가특허 출원 일련번호 제62/884335호(이하, "'335 가출원"으로 지칭됨)의 이익 및 우선권을 주장한다. '443 가출원 및 '335 가출원의 개시내용은 이로써 본 개시내용에 참조로 완전히 통합된다.
기술분야
본 개시내용은 일반적으로 비디오 코딩에 관한 것으로, 더 구체적으로 복수의 후속 블록을 예측하기 위해 이미지 프레임 내에 블록 유닛의 움직임 정보를 저장하기 위한 기술에 관한 것이다.
삼각형 파티셔닝 모드(triangle partitioning mode)와 기하학적 파티셔닝 모드(geometric partitioning mode)는 비디오 코딩 방법 내의 코딩 도구들이다. 삼각형 파티셔닝 모드 및 기하학적 파티셔닝 모드에서, 인코더는 블록 유닛을 예측하기 위해 복수의 병합 후보 중 2개를 선택하고, 디코더가 선택된 병합 후보들을 인식할 수 있도록 하기 위해 2개의 병합 인덱스를 비트스트림으로 제공할 수 있다.
인코더 및 디코더는 이미지 프레임 내의 블록 유닛을 분할하여 복수의 서브-블록을 생성하고, 서브-블록들 각각에 대한 2개의 병합 후보 중 적어도 하나를 그들의 버퍼에 저장하여 복수의 후속 블록을 예측할 수 있다. 그러나, 삼각형 파티셔닝 모드 및 기하학적 파티셔닝 모드에서, 블록 유닛 내의 복수의 블록 컴포넌트 중 일부는 2개의 병합 후보 중 단 하나에만 기초하여 예측될 수 있고, 나머지는 2개의 병합 후보 둘 다에 기초하여 예측될 수 있다. 2개의 병합 후보 둘 다에 기초하여 예측된 서브-블록들 각각에 대해 2개의 병합 후보가 저장되는 경우, 저장된 움직임 후보들은 후속 예측들에 대해 지나치게 복잡할 수 있다.
본 개시내용은 적어도 하나의 컴포넌트 벡터를 임계값과 비교함으로써 초기 예측 결과에 대한 조절을 비활성화하기 위한 디바이스 및 방법에 관한 것이다.
본 개시내용의 제1 양태에서, 비트스트림을 디코딩하기 위한 방법 및 그 방법을 수행하기 위한 전자 디바이스가 제공된다. 방법은 비트스트림의 이미지 프레임을 수신하는 단계; 수신된 이미지 프레임으로부터 블록 유닛을 결정하는 단계; 후보 리스트로부터 제1 움직임 정보 및 제2 움직임 정보를 수신하여 블록 유닛을 재구성(reconstruct)하는 단계 - 제1 움직임 정보는 제1 참조 프레임을 선택하기 위한 제1 리스트 플래그를 포함하고, 제2 움직임 정보는 제2 참조 프레임을 선택하기 위한 제2 리스트 플래그를 포함함 -; 블록 유닛 내의 서브-블록을 결정하는 단계; 제1 리스트 플래그를 제2 리스트 플래그와 비교하는 단계; 제1 리스트 플래그가 제2 리스트 플래그와 동일할 때, 제1 참조 프레임 및 제2 참조 프레임이 제1 리스트 플래그 및 제2 리스트 플래그와는 상이한 복수의 플래그 값 중의 특정 플래그 값에 의해 표시되는 복수의 참조 리스트 중의 특정 참조 리스트에 포함되는지를 확인하지 않고서, 제1 움직임 정보 및 제2 움직임 정보 중의 미리 정의된 것을 서브-블록에 대한 저장된 움직임 정보로서 저장하는 단계; 및 후속 블록이 서브-블록에 기초하여 재구성될 때, 저장된 움직임 정보에 기초하여 후속 블록을 재구성하는 단계를 포함한다.
본 개시내용의 제2 양태에서, 비트스트림을 디코딩하기 위한 방법 및 이 방법을 수행하기 위한 전자 디바이스가 제공된다. 방법은 비트스트림의 이미지 프레임을 수신하는 단계; 수신된 이미지 프레임으로부터 블록 유닛을 결정하는 단계; 블록 유닛의 분할 라인을 결정하는 단계; 후보 리스트로부터 제1 움직임 정보 및 제2 움직임 정보를 수신하여 블록 유닛을 재구성하는 단계 - 제1 움직임 정보는 제1 리스트 플래그를 포함하고, 제2 움직임 정보는 제2 리스트 플래그를 포함함 -; 블록 유닛 내의 서브-블록을 결정하는 단계; 서브-블록이 분할 라인에 기초하여 분리되는 복수의 블록 영역 중의 특정 블록 영역에 포함되는지를 결정하는 단계 - 복수의 블록 영역 중의 특정 블록 영역은 분할 라인을 커버함 -; 서브-블록이 복수의 블록 영역 중의 특정 블록 영역에 포함될 때, 제1 리스트 플래그와 제2 리스트 플래그 간의 비교 결과에만 기초하여, 제1 움직임 정보 및 제2 움직임 정보가 서브-블록에 대한 저장된 움직임 정보로서 함께 저장되는지를 결정하는 단계; 및 후속 블록이 서브-블록에 기초하여 재구성될 때, 저장된 움직임 정보에 기초하여 후속 블록을 재구성하는 단계를 포함한다.
본 개시내용의 양태들은 첨부 도면들과 함께 읽을 때 이하의 상세한 설명으로부터 가장 잘 이해된다. 다양한 특징들은 축척으로 그려지지 않으며, 다양한 특징들의 치수들은 논의의 명확성을 위해 임의로 증가 또는 축소될 수 있다.
도 1은 본 개시내용의 예시적인 구현에 따라 비디오 데이터를 인코딩 및 디코딩하도록 구성되는 예시적인 시스템의 블록도를 도시한다.
도 2는 본 출원의 예시적인 구현에 따른 도 1의 제2 전자 디바이스의 예시적인 디코더 모듈의 블록도를 도시한다.
도 3은 본 개시내용의 예시적인 구현에 따라 블록 유닛을 재구성하기 위한 예시적인 재구성 방법의 흐름도를 도시한다.
도 4a 내지 도 4d는 본 출원의 예시적인 구현들에 따른, 분할 라인에 기초하여 분리된 상이한 예측 영역들을 갖는 블록 유닛의 개략도들이다.
도 5a 내지 도 5c는 본 출원의 예시적인 구현에 따른, 상이한 블록 영역들로 분류된 복수의 서브-블록을 갖는 블록 유닛의 개략도들이다.
도 6은 본 개시내용의 예시적인 구현에 따라 블록 유닛을 재구성하기 위한 다른 예시적인 재구성 방법의 흐름도를 도시한다.
도 7은 본 출원의 예시적인 구현들에 따른, 블록 유닛 및 복수의 참조 샘플의 개략도이다.
도 8은 본 출원의 예시적인 구현에 따른 도 1의 제1 전자 디바이스의 예시적인 인코더 모듈의 블록도를 도시한다.
이하의 설명은 본 개시내용의 예시적인 구현들에 관한 특정 정보를 포함한다. 본 개시내용에서의 도면들 및 그 동반된 상세한 설명은 단지 예시적인 구현들에 관한 것이다. 그러나, 본 개시내용은 이러한 예시적인 구현들에만 제한되지 않는다. 본 개시내용의 다른 변형들 및 구현들이 본 기술분야의 통상의 기술자에게 생길 수 있다.
달리 언급되지 않으면, 도면들 중에서 유사하거나 대응하는 요소들은 유사하거나 대응하는 참조 번호들에 의해 표시될 수 있다. 본 개시내용에서의 도면 및 예시는 일반적으로 비례에 맞게 되어 있지 않고, 실제의 상대적 치수들에 대응하도록 의도되지 않는다.
일관성 및 이해의 용이함을 목적으로, 유사한 특징들은 (일부 예들에서는, 도시되지 않았지만) 예시적인 도면들에서 번호들에 의해 식별될 수 있다. 그러나, 상이한 구현들에서의 특징들은 다른 면들에서 상이할 수 있고, 도면들에서 도시되는 것으로만 좁게 국한되지 않을 것이다.
설명은 동일하거나 상이한 구현들 중의 하나 이상을 지칭할 수 있는 문구들 "하나의 구현에서" 또는 "일부 구현들에서"를 이용한다. 용어 "결합된"은 직접적으로 또는 중간 컴포넌트들을 통해 간접적으로 접속되는 것으로 정의되고, 반드시 물리적 접속들에만 제한되지 않는다. 용어 "포함하는(comprising)"은 "포함하지만, 반드시 그에 제한되지는 않음"을 의미하고; 구체적으로 이렇게 설명된 조합, 그룹, 시리즈 및 등가물에서의 개방형 포함 또는 멤버쉽을 나타낸다.
설명 및 비제한 목적을 위하여, 기능적인 엔티티들, 기법들, 프로토콜들, 및 표준들과 같은 특정 세부사항들이 개시된 기술의 이해를 제공하기 위하여 제시된다. 다른 예들에서, 널리 공지된 방법들, 기술들, 시스템들, 및 아키텍처들의 상세한 설명은 불필요한 세부사항들로 설명을 모호하게 하지 않기 위하여 생략된다.
본 기술분야의 통상의 기술자들은 본 개시내용에서 설명된 임의의 개시된 코딩 기능(들) 또는 알고리즘(들)이 하드웨어, 소프트웨어, 또는 소프트웨어 및 하드웨어의 조합에 의해 구현될 수 있다는 것을 즉시 인식할 것이다. 설명된 기능들은 소프트웨어, 하드웨어, 펌웨어, 또는 그 임의의 조합일 수 있는 모듈들에 대응할 수 있다.
소프트웨어 구현은 메모리 또는 다른 유형의 저장 디바이스들과 같은 컴퓨터 판독가능한 매체 상에 저장된 컴퓨터 실행가능 명령어들을 포함할 수 있다. 예를 들어, 통신 처리 능력을 갖는 하나 이상의 마이크로프로세서 또는 범용 컴퓨터들은 실행가능 명령어들로 프로그래밍될 수 있고, 개시된 기능(들) 또는 알고리즘(들)을 수행할 수 있다.
마이크로프로세서들 또는 범용 컴퓨터들은 ASIC(applications specific integrated circuitry), 프로그래머블 로직 어레이들, 및/또는 하나 이상의 디지털 신호 프로세서(DSP)를 이용하여 형성될 수 있다. 개시된 구현들의 일부가 컴퓨터 하드웨어 상에 설치되고 실행되는 소프트웨어를 지향하지만, 펌웨어로서 또는 하드웨어 또는 하드웨어와 소프트웨어의 조합으로서 구현된 대안적인 구현들도 본 개시내용의 범위 내에 있는 것이다. 컴퓨터 판독가능한 매체는 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거가능하고 프로그래밍가능한 판독 전용 메모리(EPROM), 전기적으로 소거가능하고 프로그래밍가능한 판독 전용 메모리(EEPROM), 플래시 메모리(flash memory), 컴팩트 디스크 판독 전용 메모리(CD ROM), 자기 카세트들(magnetic cassettes), 자기 테이프(magnetic tape), 자기 디스크 스토리지(magnetic disk storage), 또는 컴퓨터 판독가능한 명령어들을 저장할 수 있는 임의의 다른 동등한 매체를 포함하지만, 이것으로만 제한되지는 않는다.
도 1은 본 개시내용의 예시적인 구현에 따라 비디오 데이터를 인코딩 및 디코딩하도록 구성된 시스템(100)의 블록도를 도시한다. 시스템(100)은 제1 전자 디바이스(110), 제2 전자 디바이스(120) 및 통신 매체(130)를 포함한다. 제1 전자 디바이스(110)는 비디오 데이터를 인코딩하고 인코딩된 비디오 데이터를 통신 매체(130)에 전송하도록 구성되는 임의의 디바이스를 포함하는 소스 디바이스일 수 있다. 제2 전자 디바이스(120)는 통신 매체(130)를 통해 인코딩된 비디오 데이터를 수신하고 인코딩된 비디오 데이터를 디코딩하도록 구성되는 임의의 디바이스를 포함하는 목적지 디바이스일 수 있다.
적어도 하나의 구현에서, 제1 전자 디바이스(110)는 통신 매체(130)를 통해 제2 전자 디바이스(120)와 유선 또는 무선으로 통신할 수 있다. 제1 전자 디바이스(110)는 소스 모듈(112), 인코더 모듈(114), 및 제1 인터페이스(116)를 포함할 수 있다. 제2 전자 디바이스(120)는 디스플레이 모듈(122), 디코더 모듈(124) 및 제2 인터페이스(126)를 포함할 수 있다. 제1 전자 디바이스(110)는 비디오 인코더일 수 있고, 제2 전자 디바이스(120)는 비디오 디코더일 수 있다.
적어도 하나의 구현에서, 제1 전자 디바이스(110) 및/또는 제2 전자 디바이스(120)는 모바일 폰, 태블릿, 데스크탑, 노트북 또는 다른 전자 디바이스들일 수 있다. 도 1은 단지 제1 전자 디바이스(110) 및 제2 전자 디바이스(120)의 일례를 도시한 것이다. 다른 구현들에서의 제1 전자 디바이스(110) 및 제2 전자 디바이스(120)는 도시된 것보다 많거나 적은 컴포넌트를 포함할 수 있거나 다양한 컴포넌트들의 상이한 구성을 가질 수 있다.
적어도 하나의 구현에서, 소스 모듈(112)은 새로운 비디오를 캡처하기 위한 비디오 캡처 디바이스, 이전에 캡처된 비디오를 저장하기 위한 비디오 아카이브, 및/또는 비디오 콘텐츠 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스를 포함할 수 있다. 소스 모듈(112)은 소스 비디오로서 컴퓨터 그래픽 기반 데이터를 생성하거나, 소스 비디오로서 라이브 비디오, 아카이브 비디오 및 컴퓨터 생성 비디오의 조합을 생성할 수 있다. 비디오 캡처 디바이스는 전하 결합 디바이스(charge-coupled device)(CCD) 이미지 센서, 상보적 금속 산화물 반도체(complementary metal-oxide-semiconductor)(CMOS) 이미지 센서, 또는 카메라일 수 있다.
적어도 하나의 구현에서, 인코더 모듈(114) 및 디코더 모듈(124)은 각각 하나 이상의 마이크로프로세서, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 시스템 온 칩(SoC), 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래밍가능한 게이트 어레이(FPGA), 이산 로직, 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 임의의 조합들과 같은 다양한 적절한 인코더/디코더 회로 중 임의의 것으로서 구현될 수 있다. 소프트웨어로 부분적으로 구현될 때, 디바이스는 소프트웨어에 대한 명령어들을 적절한 비일시적 컴퓨터 판독가능한 매체에 저장할 수 있고, 개시된 방법들을 수행하기 위해 하나 이상의 프로세서를 사용하여 하드웨어에서 명령어들을 실행할 수 있다. 적어도 하나의 구현에서, 인코더 모듈(114) 및 디코더 모듈(124) 각각은 하나 이상의 인코더 또는 디코더에 포함될 수 있고, 이들 중 임의의 것은 디바이스에서 결합된 인코더/디코더(CODEC)의 일부로서 통합될 수 있다.
적어도 하나의 구현에서, 제1 인터페이스(116) 및 제2 인터페이스(126)는 맞춤형 프로토콜들을 이용할 수 있거나, 이더넷, IEEE 802.11 또는 IEEE 802.15 계열, 무선 USB, 또는 GSM, CDMA2000, TD-SCDMA, WiMAX, 3GPP-LTE 또는 TD-LTE를 포함하지만 그에 제한되지는 않는 통신 표준들을 포함하지만 그에 제한되지는 않는 기존 표준들 또는 사실상의 표준들을 따를 수 있다. 적어도 하나의 구현에서, 제1 인터페이스(116) 및 제2 인터페이스(126)는 각각 통신 매체(130)를 통해 컴플라이언트 비디오 비트스트림을 전송 및/또는 저장하고, 통신 매체(130)를 통해 컴플라이언트 비디오 비트스트림을 수신하도록 구성된 임의의 디바이스를 포함할 수 있다.
적어도 하나의 구현에서, 제1 인터페이스(116) 및 제2 인터페이스(126)는 컴플라이언트 비디오 비트스트림이 저장 디바이스에 저장되거나 저장 디바이스로부터 수신될 수 있게 하는 컴퓨터 시스템 인터페이스를 포함할 수 있다. 예를 들어, 제1 인터페이스(116) 및 제2 인터페이스(126)는 주변 컴포넌트 상호접속부(Peripheral Component Interconnect)(PCI) 및 고속 주변 컴포넌트 상호접속부(Peripheral Component Interconnect Express)(PCIe) 버스 프로토콜, 독점 버스 프로토콜, USB(Universal Serial Bus) 프로토콜, I2C, 또는 피어 디바이스들을 상호접속하는 데 사용할 수 있는 임의의 다른 논리적 및 물리적 구조를 지원하는 칩셋을 포함할 수 있다.
적어도 하나의 구현에서, 디스플레이 모듈(122)은 다른 구현들에서 사용되는 다른 디스플레이 기술들과 함께, 액정 디스플레이(LCD) 기술, 플라즈마 디스플레이 기술, 유기 발광 다이오드(OLED) 디스플레이 기술, 또는 발광 폴리머 디스플레이(LPD) 기술을 사용하는 디스플레이를 포함할 수 있다. 디스플레이 모듈(122)은 고화질 디스플레이 또는 초고화질 디스플레이를 포함할 수 있다.
도 2는 본 출원의 예시적인 구현에 따른 도 1의 제2 전자 디바이스(120)의 디코더 모듈(124)의 구현을 나타내는 블록도를 도시한다. 디코더 모듈(124)은 엔트로피 디코더(예를 들어, 엔트로피 디코딩 유닛(2241)), 예측 프로세서(예를 들어, 예측 프로세스 유닛(2242)), 역양자화/역변환 프로세서(예를 들어, 역양자화/역변환 유닛(2243)), 합산기(예를 들어, 합산기(2244)), 필터(예를 들어, 필터링 유닛(2245)), 및 디코딩된 픽처 버퍼(예를 들어, 디코딩된 픽처 버퍼(2246))를 포함한다. 예측 프로세스 유닛(2242)은 인트라 예측 프로세서(예를 들어, 인트라 예측 유닛(22421)) 및 인터 예측 프로세서(예를 들어, 인터 예측 유닛(22422))를 더 포함한다. 디코더 모듈(124)은 비트스트림을 수신하고, 비트스트림을 디코딩하여 디코딩된 비디오를 출력한다.
엔트로피 디코딩 유닛(2241)은 도 1의 제2 인터페이스(126)로부터 복수의 신택스 요소를 포함하는 비트스트림을 수신할 수 있고, 비트스트림으로부터 신택스 요소들을 추출하기 위해 비트스트림에 대해 구문분석 동작을 수행할 수 있다. 구문분석 동작의 일부로서, 엔트로피 디코딩 유닛(2241)은 양자화된 변환 계수들, 양자화 파라미터들, 변환 데이터, 움직임 벡터들, 인트라 모드들, 파티션 정보, 및 다른 신택스 정보를 생성하기 위해 비트스트림을 엔트로피 디코딩할 수 있다.
적어도 하나의 구현에서, 엔트로피 디코딩 유닛(2241)은 양자화된 변환 계수들을 생성하기 위해, 컨텍스트 적응형 가변 길이 코딩(context adaptive variable length coding)(CAVLC), 컨텍스트 적응형 이진 산술 코딩(context adaptive binary arithmetic coding)(CABAC), 신택스-기반 컨텍스트-적응형 이진 산술 코딩(syntax-based context-adaptive binary arithmetic coding)(SBAC), 확률 간격 파티셔닝 엔트로피(probability interval partitioning entropy)(PIPE) 코딩, 또는 다른 엔트로피 코딩 기법을 수행할 수 있다. 적어도 하나의 구현에서, 엔트로피 디코딩 유닛(2241)은 양자화된 변환 계수들, 양자화 파라미터들, 및 변환 데이터를 역양자화/역변환 유닛(2243)에 제공할 수 있고, 움직임 벡터들, 인트라 모드들, 파티션 정보 및 다른 신택스 정보를 예측 프로세스 유닛(2242)에 제공할 수 있다.
적어도 하나의 구현에서, 예측 프로세스 유닛(2242)은 엔트로피 디코딩 유닛(2241)으로부터 움직임 벡터들, 인트라 모드들, 파티션 정보, 및 다른 신택스 정보와 같은 신택스 요소들을 수신할 수 있다. 예측 프로세스 유닛(2242)은 파티션 정보를 포함하는 신택스 요소들을 수신할 수 있고, 파티션 정보에 따라 이미지 프레임들을 분할할 수 있다.
적어도 하나의 구현에서, 이미지 프레임들 각각은 파티션 정보에 따라 적어도 하나의 이미지 블록으로 분할될 수 있다. 적어도 하나의 이미지 블록은 복수의 휘도 샘플을 재구성하기 위한 휘도 블록, 및 복수의 색차 샘플을 재구성하기 위한 적어도 하나의 색차 블록을 포함할 수 있다. 휘도 블록 및 적어도 하나의 색차 블록은 매크로블록들, 코딩 트리 유닛들(CTU), 코딩 블록들(CB), 이들의 세부분할들, 및/또는 다른 등가 코딩 유닛을 생성하도록 더 분할될 수 있다.
적어도 하나의 구현에서, 디코딩 프로세스 동안, 예측 프로세스 유닛(2242)은 이미지 프레임들 중 특정 이미지 프레임의 현재 이미지 블록에 대한 인트라 모드 또는 움직임 벡터를 포함하는 예측된 데이터를 수신한다. 현재 이미지 블록은 특정 이미지 프레임 내의 휘도 블록, 또는 색차 블록들 중 하나일 수 있다.
적어도 하나의 구현에서, 인트라 예측 유닛(22421)은 예측된 블록을 생성하기 위해, 인트라 모드에 관련된 신택스 요소들에 기초하여 현재 블록 유닛과 동일한 프레임 내의 하나 이상의 이웃 블록에 대한 현재 블록 유닛의 인트라 예측 코딩을 수행할 수 있다. 인트라 모드는 현재 프레임 내의 이웃 블록들로부터 선택된 참조 샘플들의 위치를 지정할 수 있다. 적어도 하나의 구현에서, 인트라 예측 유닛(22421)은, 크로마 컴포넌트들이 예측 프로세스 유닛(2242)에 의해 재구성될 때 현재 블록 유닛의 복수의 루마 컴포넌트에 기초하여 현재 블록 유닛의 복수의 크로마 컴포넌트를 재구성할 수 있다.
적어도 하나의 구현에서, 인트라 예측 유닛(22421)은, 현재 블록의 루마 컴포넌트들이 예측 프로세스 유닛(2242)에 의해 재구성될 때 현재 블록 유닛의 복수의 루마 컴포넌트에 기초하여 현재 블록 유닛의 복수의 크로마 컴포넌트를 재구성할 수 있다.
적어도 하나의 구현에서, 인터 예측 유닛(22422)은 예측된 블록을 생성하기 위해 움직임 벡터에 관련된 신택스 요소들에 기초하여 하나 이상의 참조 이미지 블록 내의 하나 이상의 블록에 대한 현재 블록 유닛의 인터 예측 코딩을 수행할 수 있다.
적어도 하나의 구현에서, 움직임 벡터는 참조 이미지 블록 내의 참조 블록 유닛에 대한 현재 이미지 블록 내의 현재 블록 유닛의 변위를 나타낼 수 있다. 참조 블록 유닛은 현재 블록 유닛과 거의 일치하도록 결정된 블록이다.
적어도 하나의 구현에서, 인터 예측 유닛(22422)은 디코딩된 픽처 버퍼(2246)에 저장된 참조 이미지 블록을 수신하고, 수신된 참조 이미지 블록들에 기초하여 현재 블록 유닛을 재구성한다.
적어도 하나의 구현에서, 역양자화/역변환 유닛(2243)은 픽셀 도메인에서 잔차 블록을 재구성하기 위해 역양자화 및 역변환을 적용할 수 있다. 역양자화/역변환 유닛(2243)은 잔차 양자화된 변환 계수에 역양자화를 적용하여 잔차 변환 계수를 생성한 후, 잔차 변환 계수에 역변환을 적용하여 픽셀 도메인에서 잔차 블록을 생성할 수 있다.
적어도 하나의 구현에서, 역변환은 이산 코사인 변환(discrete cosine transform)(DCT), 이산 사인 변환(discrete sine transform)(DST), 적응형 다중 변환(adaptive multiple transform)(AMT), 모드-종속 비분리 2차 변환(mode-dependent non-separable secondary transform)(MDNSST), 하이퍼큐브-기븐스 변환(hypercube-givens transform)(HyGT), 신호 종속 변환(signal dependent transform), Karhunen-
Figure pct00001
변환(KLT), 웨이블릿 변환(wavelet transform), 정수 변환(integer transform), 부대역 변환(sub-band transform), 또는 개념적으로 유사한 변환과 같은 변환 프로세스에 의해 역으로 적용될 수 있다.
적어도 하나의 구현에서, 역변환은 주파수 도메인과 같은 변환 도메인으로부터의 잔차 정보를 픽셀 도메인으로 다시 변환할 수 있다. 적어도 하나의 구현에서, 역양자화의 정도는 양자화 파라미터를 조절함으로써 수정될 수 있다. 합산기(2244)는 재구성된 블록을 생성하기 위해, 예측 프로세스 유닛(2242)으로부터의 예측된 블록에 잔차 블록을 더한다.
적어도 하나의 구현에서, 합산기(2244)는 재구성된 블록을 생성하기 위해, 예측 프로세스 유닛(2242)으로부터 제공된 예측된 블록에 재구성된 잔차 블록을 더한다.
적어도 하나의 구현에서, 필터링 유닛(2245)은 재구성된 블록으로부터 블로킹 아티팩트들을 제거하기 위해, 디블로킹 필터, 샘플 적응형 오프셋(sample adaptive offset)(SAO) 필터, 양방향 필터, 및/또는 적응형 루프 필터(adaptive loop filter)(ALF)를 포함할 수 있다. 디블로킹 필터, SAO 필터, 양방향 필터 및 ALF 외에, (루프 내의 또는 루프 이후의) 추가 필터들이 또한 사용될 수 있다. 이러한 필터들은 간결함을 위해 명시적으로 도시되지 않지만, 합산기(2244)의 출력을 필터링할 수 있다.
필터링 유닛(2245)이 특정 이미지 프레임의 재구성된 블록들에 대한 필터링 프로세스를 수행한 후, 필터링 유닛(2245)은 디코딩된 비디오를 디스플레이 모듈(122) 또는 다른 비디오 수신 유닛에 출력할 수 있다.
적어도 하나의 구현에서, 디코딩된 픽처 버퍼(2246)는 (인터 코딩 모드들에서) 비트스트림을 디코딩할 때 예측 프로세스 유닛(2242)에 의해 사용할 참조 블록을 저장하는 참조 픽처 메모리일 수 있다. 디코딩된 픽처 버퍼(2246)는 동기 DRAM(SDRAM), 자기 저항 RAM(MRAM), 저항성 RAM(RRAM), 또는 다른 유형의 메모리 디바이스들을 포함하는 동적 랜덤 액세스 메모리(DRAM)와 같은 다양한 메모리 디바이스들 중 임의의 것에 의해 형성될 수 있다.
적어도 하나의 구현에서, 디코딩된 픽처 버퍼(2246)는 디코더 모듈(124)의 다른 컴포넌트들과 함께 온칩일 수 있거나, 그러한 컴포넌트들에 대해 오프칩일 수도 있다.
도 3은 본 개시내용의 예시적인 구현에 따라 블록 유닛을 재구성하기 위한 예시적인 재구성 방법(300)의 흐름도를 도시한다. 방법을 수행하는 다양한 방식들이 있으므로, 방법(300)은 예시일 뿐이다.
방법(300)은 도 1 및 도 2에 도시된 구성들을 사용하여 수행될 수 있고, 이러한 도면들의 다양한 요소들은 방법(300)을 설명하는 데 참조된다. 도 3에 도시된 각각의 블록은 수행된 하나 이상의 프로세스, 방법 또는 서브루틴을 나타낼 수 있다.
또한, 블록들의 순서는 예시일 뿐이며 변경될 수 있다. 본 개시내용을 벗어나지 않으면서 추가적인 블록들이 추가되거나 더 적은 블록들이 이용될 수 있다.
블록(310)에서, 디코더 모듈(124)은 비디오 데이터의 이미지 프레임을 수신하고, 수신된 비디오 데이터에 따라 이미지 프레임으로부터 블록 유닛을 결정한다. 비디오 데이터는 비트스트림일 수 있다.
도 1 및 도 2를 참조하면, 제2 전자 디바이스(120)는 제2 인터페이스(126)를 통해 제1 전자 디바이스(110)와 같은 인코더, 또는 다른 비디오 제공자들로부터 비트스트림을 수신할 수 있다. 제2 인터페이스(126)는 디코더 모듈(124)에 비트스트림을 제공할 수 있다.
디코더 모듈(124)은 비트스트림에 기초하여 이미지 프레임을 결정하고 이미지 프레임을 분할하여, 비트스트림 내의 복수의 파티션 표시에 따라 블록 유닛을 결정할 수 있다. 예를 들어, 디코더 모듈(124)은 이미지 프레임들을 분할하여 복수의 코딩 트리 유닛을 생성할 수 있고, 코딩 트리 유닛들 중 하나를 더 분할하여 (예를 들어, 비디오 코딩 표준에 기초하여) 파티션 표시들에 따라 블록 유닛을 결정할 수 있다.
적어도 하나의 구현에서, 엔트로피 디코딩 유닛(2241)은 비트스트림을 디코딩하여 블록 유닛에 대한 복수의 예측 표시를 결정할 수 있고, 디코더 모듈(124)은 예측 표시들에 기초하여 블록 유닛을 더 재구성할 수 있다. 예측 표시들은 복수의 플래그 및 복수의 인덱스를 포함할 수 있다.
블록(320)에서, 디코더 모듈(124)은 후보 리스트로부터 제1 움직임 정보 및 제2 움직임 정보를 결정하고 블록 유닛의 분할 라인을 결정하여 블록 유닛을 재구성한다.
적어도 하나의 구현에서, 도 2를 참조하면, 디코더 모듈(124)은 블록 유닛을 복수의 예측 영역으로 분할하고, 제1 움직임 정보 및 제2 움직임 정보에 기초하여 블록 유닛의 예측 영역들을 재구성할 수 있다.
적어도 하나의 구현에서, 예측 표시들은 블록 유닛의 파티션 인덱스를 포함할 수 있다. 파티션 인덱스는 블록 유닛의 분할 라인을 나타낼 수 있다. 적어도 하나의 구현에서, 파티션 인덱스가 삼각형 파티션 인덱스일 때, 분할 라인은 대각선 분할 라인 및 반-대각선 방향 중 하나일 수 있다. 적어도 하나의 구현에서, 파티션 인덱스가 기하학적 파티션 인덱스일 때, 파티션 인덱스는 파티션 각도 인덱스 및 파티션 거리 인덱스를 나타낼 수 있다. 파티션 각도 인덱스는 분할 라인의 경사각을 나타낼 수 있고, 파티션 거리 인덱스는 분할 라인과 블록 유닛의 중심 지점 사이의 라인 오프셋을 나타낼 수 있다. 따라서, 디코더 모듈(124)은 파티션 인덱스에 의해 나타나는 경사각 및 라인 오프셋에 기초하여 분할 라인을 결정할 수 있다.
적어도 하나의 구현에서, 예측 표시들은 제1 움직임 후보 인덱스 및 제2 움직임 후보 인덱스를 포함할 수 있다. 적어도 하나의 구현에서, 제1 움직임 후보 인덱스는 병합 후보 리스트에서 제1 움직임 정보를 나타낼 수 있고, 제2 움직임 후보 인덱스는 병합 후보 리스트에서 제2 움직임 정보를 나타낼 수 있다. 적어도 하나의 구현에서, 병합 후보 리스트 내의 복수의 병합 후보 모드는 블록 유닛에 이웃하는 복수의 이웃 블록의 복수의 공간적 움직임 예측 모드, 복수의 공동위치된 블록의 복수의 시간적 움직임 예측 모드, 선입선출(FIFO) 테이블에 저장된 히스토리 기반 움직임 예측 모드들, 복수의 쌍별 평균 움직임 예측 모드, 및 제로 움직임 모드로부터 선택될 수 있다. 적어도 하나의 구현에서, 제1 움직임 정보는 제1 참조 프레임 및 제1 참조 벡터를 나타낼 수 있고, 제2 움직임 정보는 제2 참조 프레임 및 제2 참조 벡터를 나타낼 수 있다. 제1 참조 프레임 및 제2 참조 프레임은 블록 유닛의 복수의 참조 리스트로부터 선택될 수 있다. 일 구현에서, 제1 참조 프레임 및 제2 참조 프레임은 참조 리스트들 중 동일한 것으로부터 선택될 수 있다. 다른 구현들에서, 제1 참조 프레임 및 제2 참조 프레임은 상이한 참조 리스트들로부터 선택될 수 있다. 적어도 하나의 구현에서, 참조 리스트들의 수는 2와 동일할 수 있다.
도 4a 내지 도 4b는 본 출원의 예시적인 구현들에 따른, 상이한 분할 라인들을 갖는 블록 유닛의 개략도들이다. 적어도 하나의 구현에서, 블록 유닛(400)의 파티션 표시들은 분할 라인(420), 제1 참조 벡터 V0, 제2 참조 벡터 V1, 제1 참조 프레임 및 제2 참조 프레임을 나타낼 수 있다. 도 4c 내지 도 4d는 본 출원의 예시적인 구현들에 따른, 분할 라인에 기초하여 분리된 상이한 예측 영역들을 갖는 블록 유닛의 개략도들이다. 본 구현에서, 디코더 모듈(124)은 분할 라인(420)에 기초하여 블록 유닛(400)을 분할하여 예측 영역들(441-443)을 결정할 수 있다. 적어도 하나의 구현에서, 블록 유닛은 복수의 블록 컴포넌트를 포함할 수 있다. 적어도 하나의 구현에서, 제1 예측 영역(441) 내의 블록 컴포넌트들은 제1 참조 벡터 및 제1 참조 프레임에 기초하여 재구성될 수 있고, 제2 예측 영역(442) 내의 블록 컴포넌트들은 제2 참조 벡터 및 제2 참조 프레임에 기초하여 재구성될 수 있다. 추가로, 제3 예측 영역(443) 내의 블록 컴포넌트들은 제1 참조 벡터, 제2 참조 벡터, 제1 참조 프레임 및 제2 참조 프레임에 기초하여 재구성될 수 있다. 제3 예측 영역(443) 내의 블록 컴포넌트들은 제1 참조 벡터 및 제1 참조 프레임에 기초하여 결정된 복수의 제1 참조 샘플, 및 제2 참조 벡터 및 제2 참조 프레임에 기초하여 결정된 복수의 제2 참조 샘플을 도출하고 복수의 블렌딩 가중치에 기초하여 제1 참조 샘플들 및 제2 참조 샘플들을 병합함으로써 재구성될 수 있다. 적어도 하나의 구현에서, 블렌딩 가중치들은 분할 라인(420)과 제3 예측 영역(443) 내의 블록 컴포넌트들 사이의 복수의 컴포넌트 거리에 기초하여 도출될 수 있다.
블록(330)에서, 디코더 모듈(124)은 블록 유닛 내의 서브-블록을 결정한다.
적어도 하나의 구현에서, 도 2를 참조하면, 디코더 모듈(124)은 블록 유닛을 분할하여 복수의 서브-블록을 생성할 수 있다. 도 5a는 본 출원의 예시적인 구현들에 따른, 서브-블록 인덱스(xSbIdx, ySbInx)에 각각 대응하는 복수의 서브-블록(561-576)을 갖는 블록 유닛의 개략도이다. 적어도 하나의 구현에서, 디코더 모듈(124)은 서브-블록들 중 특정 서브-블록을 결정할 수 있다. 일 구현에서, 제1 위치 인덱스 xSbIdx에 대한 복수의 제1 후보 인덱스의 수 numSbX는 4와 동일할 수 있고, 제2 위치 인덱스 ySbIdx에 대한 복수의 제2 후보 인덱스의 수 numSbY는 4와 동일할 수 있다. 따라서, 제1 위치 인덱스 xSbIdx는 0과 numSbX 사이의 수일 수 있고, 제2 위치 인덱스 ySbIdx는 0과 numSBY 사이의 수일 수 있다.
블록(340)에서, 디코더 모듈(124)은 서브-블록이 분할 라인을 커버하는 복수의 블록 영역 중 특정 블록 영역에 포함되는지를 결정한다. 적어도 하나의 구현에서, 디코더 모듈(124)이 서브-블록이 분할 라인을 커버하는 특정 블록 영역에 포함된다고 결정할 때, 방법(300)은 블록(350)으로 진행할 수 있다. 방법은 디코더 모듈(124)이 서브-블록이 특정 블록 영역에 포함되지 않는다고 결정할 때 종료될 수 있다.
적어도 하나의 구현에서, 도 2를 참조하면, 디코더 모듈(124)은 복수의 블록 영역을 생성하기 위해 블록 유닛을 분할할 수 있다. 도 5b 내지 도 5c는 본 출원의 예시적인 구현들에 따른, 분할 라인에 기초하여 분리된 상이한 블록 영역들을 갖는 블록 유닛의 개략도들이다.
적어도 하나의 구현에서, 디코더 모듈(124)은 서브-블록 인덱스들에 기초하여 서브-블록들(561-576)을 블록 영역들로 분류할 수 있다. 적어도 하나의 구현에서, 제3 블록 영역(583)은 분할 라인(420)을 커버할 수 있고, 제1 블록 영역(581) 및 제2 블록 영역은 분할 라인(420)을 커버하지 않을 수 있다. 제1 블록 영역(581) 내의 서브-블록들의 블록 컴포넌트들 대부분은 제1 움직임 정보에 기초하여 재구성될 수 있고, 제2 블록 영역(582) 내의 서브-블록들의 블록 컴포넌트들 대부분은 제2 움직임 정보에 기초하여 재구성될 수 있다. 따라서, 서브-블록이 제1 예측 영역(441)에 대응하는 제1 블록 영역(581)에 포함될 때, 디코더 모듈(124)은 서브-블록에 대한 제1 움직임 정보를 저장할 수 있다. 예를 들어, 서브-블록들(562-564, 567-568, 572)이 제1 블록 영역(581)에 포함되기 때문에, 디코더 모듈(124)은 서브-블록들(562-564, 567-568, 572)에 대한 제1 움직임 정보를 저장할 수 있다. 추가로, 서브-블록이 제2 예측 영역(442)에 대응하는 제2 블록 영역(582)에 포함될 때, 디코더 모듈(124)은 서브-블록에 대한 제2 움직임 정보를 저장할 수 있다. 예를 들어, 서브-블록들(562-564, 567-568 및 572)이 제2 블록 영역(582)에 포함되므로, 디코더 모듈(124)은 서브-블록들(565, 569-570 및 573-575)에 대한 제2 움직임 정보를 저장할 수 있다. 디코더 모듈(124)은 분할 라인을 커버하는 특정 블록 영역(583)과는 상이한 다른 블록 영역들에 포함되는 서브-블록들에 대한 제1 움직임 정보 및 제2 움직임 정보 중 대응하는 것을 직접 저장할 수 있고, 방법(300)은 다른 절차 없이 종료될 수 있다.
적어도 하나의 구현에서, 제3 블록 영역(583) 내의 서브-블록들의 블록 컴포넌트들 대부분은 제1 움직임 정보 및 제2 움직임 정보에 기초하여 재구성될 수 있다. 따라서, 서브-블록이 제3 예측 영역(443)에 대응하는 제3 블록 영역(583)에 포함될 때, 디코더 모듈(124)이 서브-블록에 대한 제1 움직임 정보 및 제2 움직임 정보 중 적어도 하나를 저장하는 방법을 결정하기 위해, 방법(300)은 블록(350)으로 진행할 수 있다.
블록(350)에서, 디코더 모듈(124)은 제1 움직임 정보의 제1 리스트 플래그가 제2 움직임 정보의 제2 리스트 플래그와 동일한지를 결정한다. 적어도 하나의 구현에서, 방법(300)은 제1 리스트 플래그가 제2 리스트 플래그와 동일할 때 블록(360)으로 진행할 수 있다. 방법(300)은 제1 리스트 플래그가 제2 리스트 플래그와 상이할 때 블록(370)으로 진행할 수 있다.
적어도 하나의 구현에서, 도 2 및 도 5b를 참조하면, 서브-블록이 특정 블록 영역(583)에 포함될 때, 디코더 모듈(124)은 제1 리스트 플래그와 제2 리스트 플래그를 비교할 수 있다. 서브-블록이 특정 블록 영역(583)에 포함될 때, 서브-블록 내의 블록 컴포넌트들 대부분이 제1 움직임 정보 및 제2 움직임 정보에 기초하여 재구성될 수 있다. 따라서, 제1 리스트 플래그가 제2 리스트 플래그와 상이할 때, 특정 블록 영역(583) 내의 블록 컴포넌트들은 2개의 상이한 참조 리스트 내의 참조 프레임들에 기초하여 재구성될 수 있다. 추가로, 제1 리스트 플래그가 제2 리스트 플래그와 동일할 때, 특정 블록 영역(583) 내의 블록 컴포넌트들은 동일한 참조 리스트 내의 참조 프레임들에 기초하여 재구성될 수 있다.
블록(360)에서, 제1 리스트 플래그가 제2 리스트 플래그와 동일할 때, 디코더 모듈(124)은 서브블록에 대한 제1 움직임 정보 및 제2 움직임 정보 중 미리 정의된 것을 저장한다.
적어도 하나의 구현에서, 도 2 및 도 5b를 참조하면, 블록 유닛(400)의 제1 리스트 플래그가 블록 유닛(400)의 제2 리스트 플래그와 동일하고, 서브-블록이 특정 블록 영역(583)에 포함될 때, 서브-블록 내의 블록 컴포넌트들 대부분은 참조 리스트들 중 하나로부터 제1 참조 샘플들 및 제2 참조 샘플들을 도출함으로써 재구성될 수 있다.
저장된 움직임 정보에 기초하여 재구성될 복수의 후속 블록에 대한 움직임 정보가 저장되므로, 저장된 움직임 정보는 제1 참조 샘플들과 제2 참조 샘플들의 블렌딩 결과들에 기초하여 생성되는 복수의 잔차 컴포넌트에 영향을 미치지 않을 수 있다. 따라서, 도 1을 참조하면, 인코더 모듈(114) 및 디코더 모듈(124)이 제1 움직임 정보 및 제2 움직임 정보 중 미리 정의된 것을 저장하는 방법(300)을 수행할 때, 인코더 모듈(114) 및 디코더 모듈(124)은 서브-블록에 대한 동일한 움직임 정보를 저장할 수 있다. 적어도 하나의 구현에서, 제1 참조 프레임 및 제2 참조 프레임이 동일한 참조 리스트에 포함될 때, 디코더 모듈(124)은 버퍼의 사용을 줄이기 위해 제1 움직임 정보 및 제2 움직임 정보 중 미리 정의된 것을 직접 저장할 수 있다. 따라서, 디코더 모듈(124)은 서브-블록에 대한 제1 움직임 정보 및 제2 움직임 정보 중 미리 정의된 것을 저장한다.
적어도 하나의 구현에서, 디코더 모듈(124)은 2개의 참조 프레임과 다른 참조 리스트들 간의 관계를 더 검사하지 않고서, 제1 움직임 정보 및 제2 움직임 정보 중 미리 정의된 것을 서브-블록에 대한 저장된 움직임 정보로서 직접 저장할 수 있다. 디코더 모듈(124)은, 제1 리스트 플래그가 제2 리스트 플래그와 동일할 때 제1 참조 프레임 및 제2 참조 프레임 중 적어도 하나가 제1 리스트 플래그 및 제2 리스트 플래그와는 상이한 복수의 플래그 값 중의 특정 플래그 값에 의해 표시되는 참조 리스트들 중 특정 참조 리스트에 포함되는지를 확인하지 않고서, 미리 정의된 움직임 정보를 직접 저장할 수 있다. 예를 들어, 참조 리스트들의 수가 2와 동일하므로, 플래그 값들은 0 및 1을 포함할 수 있다. 일 구현에서, 제1 리스트 플래그 및 제2 리스트 플래그가 0과 같을 때, 특정 플래그 값은 1과 동일하다. 제1 리스트 플래그 및 제2 리스트 플래그는 제1 참조 리스트 L0를 표시할 수 있고, 특정 플래그 값은 제2 참조 리스트 L1을 표시할 수 있다. 따라서, 디코더 모듈(124)은, 제1 리스트 플래그 및 제2 리스트 플래그가 0과 동일할 때, 제1 참조 프레임 및 제2 참조 프레임 중 적어도 하나가 1과 동일한 특정 플래그 값에 의해 표시되는 제2 참조 리스트 L1에 포함되는지를 확인하지 않고서, 미리 정의된 움직임 정보를 직접 저장할 수 있다.
적어도 하나의 구현에서, 제1 움직임 정보 및 제2 움직임 정보 중 미리 정의된 것은 제2 움직임 정보일 수 있다. 따라서, 디코더 모듈(124)은 서브-블록에 대한 제2 움직임 정보를 직접 저장한다. 제2 움직임 정보는 비트스트림 내의 블록 유닛의 제2 후보 인덱스로부터 도출되므로, 저장된 움직임 정보는 비트스트림 내의 제2 후보 인덱스로부터 도출될 수 있다.
블록(370)에서, 디코더 모듈(124)은 서브-블록에 대한 제1 움직임 정보 및 제2 움직임 정보 둘 다를 저장한다.
적어도 하나의 구현에서, 도 2 및 도 5b를 참조하면, 블록 유닛(400)의 제1 리스트 플래그가 블록 유닛(400)의 제2 리스트 플래그와 상이하고 서브-블록이 특정 블록 영역(583)에 포함될 때, 상이한 참조 리스트들로부터 제1 참조 샘플들 및 제2 참조 샘플들을 도출함으로써 서브-블록 내의 블록 컴포넌트들 대부분이 재구성될 수 있다.
적어도 하나의 구현에서, 블록 유닛(400)의 제1 리스트 플래그가 블록 유닛(400)의 제2 리스트 플래그와 상이하고 서브-블록이 특정 블록 영역(583)에 포함될 때, 서브-블록 내의 블록 컴포넌트들 대부분은 제1 참조 리스트로부터 제1 참조 샘플들을 도출하고 제2 참조 리스트로부터 제2 참조 샘플들을 도출함으로써 재구성될 수 있다. 따라서, 디코더 모듈(124)은 추가 결정 없이 서브-블록에 대한 제1 움직임 정보 및 제2 움직임 정보를 직접 저장할 수 있다.
적어도 하나의 구현에서, 디코더 모듈(124)은 동일한 참조 리스트를 갖는 서브-블록에 대한 제1 움직임 정보 및 제2 움직임 정보 중 미리 정의된 것을 직접 저장할 수 있고, 상이한 참조 리스트들을 갖는 서브-블록에 대한 제1 움직임 정보 및 제2 움직임 정보 둘 다를 직접 저장할 수 있다. 따라서, 서브-블록이 특정 블록 영역(583)에 포함될 때, 디코더 모듈(124)은 제1 리스트 플래그와 제2 리스트 플래그 간의 비교에만 기초하여, 제1 움직임 정보 및 제2 움직임 정보가 서브-블록에 대한 저장된 움직임 정보로서 함께 저장되는지를 결정할 수 있다.
블록(380)에서, 후속 블록이 서브-블록에 기초하여 예측될 때, 디코더 모듈(124)은 저장된 움직임 정보에 기초하여 후속 블록을 재구성한다.
적어도 하나의 구현에서, 도 2를 참조하면, 디코더 모듈(124)은 블록 유닛이 재구성된 후 이미지 프레임 및 복수의 후속 프레임의 재구성을 계속할 수 있다. 따라서, 블록 유닛의 저장된 정보는 이미지 프레임 및 후속 프레임들에서 후속 블록들을 재구성하기 위해 사용될 수 있다. 적어도 하나의 구현에서, 후속 프레임들은 이미지 프레임의 재구성 후에 재구성되는 복수의 재구성되지 않은 프레임을 포함할 수 있다. 추가로, 후속 블록들은 이미지 프레임 및 후속 프레임들에서 복수의 재구성되지 않은 블록을 포함할 수 있다. 재구성되지 않은 블록들은 블록 유닛의 재구성 이후에 재구성될 수 있다.
도 6은 본 개시내용의 예시적인 구현에 따른 블록 유닛을 재구성하기 위한 예시적인 방법(600)의 흐름도를 도시한다. 방법을 수행하는 다양한 방식이 있으므로, 방법(600)은 예시일 뿐이다.
방법(600)은 도 1 및 도 2에 도시된 구성들을 사용하여 수행될 수 있고, 이러한 도면들의 다양한 요소들은 방법(600)을 설명하는 데 참조된다. 도 6에 도시된 각각의 블록은 수행되는 하나 이상의 프로세스, 방법 또는 서브루틴을 나타낼 수 있다.
또한, 블록들의 순서는 예시일 뿐이며 변경될 수 있다. 본 개시내용을 벗어나지 않으면서 추가 블록들이 더해지거나 더 적은 블록들이 이용될 수 있다.
블록(610)에서, 디코더 모듈(124)은 비디오 데이터의 이미지 프레임을 수신하고, 수신된 비디오 데이터에 따라 이미지 프레임으로부터 블록 유닛을 결정한다. 비디오 데이터는 비트스트림일 수 있다.
도 1 및 도 2를 참조하면, 제2 전자 디바이스(120)는 제2 인터페이스(126)를 통해 제1 전자 디바이스(110)와 같은 인코더, 또는 다른 비디오 제공자들로부터 비트스트림을 수신할 수 있다. 제2 인터페이스(126)는 디코더 모듈(124)에 비트스트림을 제공할 수 있다.
디코더 모듈(124)은 비트스트림에 기초하여 이미지 프레임을 결정할 수 있고, 이미지 프레임을 분할하여 비트스트림 내의 복수의 파티션 표시에 따라 블록 유닛을 결정할 수 있다. 예를 들어, 디코더 모듈(124)은 이미지 프레임을 분할하여 복수의 코딩 트리 유닛을 생성할 수 있고, 코딩 트리 유닛들 중 하나를 더 분할하여 (예를 들어, 비디오 코딩 표준에 기초하여) 파티션 표시에 따라 블록 유닛을 결정할 수 있다.
적어도 하나의 구현에서, 엔트로피 디코딩 유닛(2241)은 비트스트림을 디코딩하여 블록 유닛에 대한 복수의 예측 표시를 결정할 수 있고, 디코더 모듈(124)은 예측 표시들에 기초하여 블록 유닛을 더 재구성할 수 있다. 예측 표시들은 복수의 플래그 및 복수의 인덱스를 포함할 수 있다.
블록(620)에서, 디코더 모듈(124)은 비디오 데이터로부터 결정된 제1 예측 모드에 의해 블록 유닛의 복수의 재구성된 컴포넌트를 결정한다.
적어도 하나의 구현에서, 블록 유닛은 복수의 제1 블록 컴포넌트 및 복수의 제2 블록 컴포넌트를 포함할 수 있다. 구현에서, 제1 블록 컴포넌트들은 복수의 루마 블록 컴포넌트일 수 있고, 제2 블록 컴포넌트들은 복수의 크로마 블록 컴포넌트일 수 있다. 적어도 하나의 구현에서, 예측 표시들은 블록 유닛의 제1 블록 컴포넌트들을 재구성하는 방법을 표시하기 위해 적어도 하나의 제1 예측 플래그를 포함할 수 있다. 예를 들어, 예측 표시들은 인트라 예측 모드 및 인터 예측으로부터 제1 예측 모드를 선택하기 위한 예측 모드 플래그를 포함할 수 있다.
적어도 하나의 구현에서, 도 2를 참조하면, 디코더 모듈(124)은 비트스트림 내의 적어도 하나의 제1 예측 플래그에 기초하여 제1 예측 모드를 결정할 수 있고, 제1 예측 모드에 기초하여 블록 유닛을 재구성할 수 있다. 적어도 하나의 구현에서, 제1 예측 모드가 인트라 예측 모드일 때, 디코더 모듈(124)은 블록 유닛에 이웃하는 복수의 이웃 블록을 결정하고 블록 유닛의 제1 블록 컴포넌트들을 재구성하여 이웃 블록들에 기초하여 재구성된 컴포넌트들을 결정할 수 있다. 적어도 하나의 구현에서, 제1 예측 모드가 인터 예측 모드일 때, 디코더 모듈(124)은 이미지 프레임을 재구성하기 전에 재구성된 복수의 참조 프레임을 결정하고 블록 유닛의 제1 블록 컴포넌트들을 재구성하여, 참조 프레임들에 기초하여 재구성된 컴포넌트들을 결정할 수 있다. 따라서, 블록 유닛의 루마 블록 컴포넌트들에 대해, 재구성된 컴포넌트들이 도출된다.
블록(630)에서, 디코더 모듈(124)은 적어도 하나의 샘플링 파라미터에 기초하여 제2 예측 모드에 대해 블록 유닛에 이웃하는 복수의 이웃 블록으로부터 복수의 참조 샘플을 선택한다.
적어도 하나의 구현에서, 예측 표시들은 블록 유닛의 제2 블록 컴포넌트들을 재구성하는 방법을 표시하기 위해 적어도 하나의 제2 예측 플래그를 포함할 수 있다. 예를 들어, 예측 표시들은 제2 블록 컴포넌트들이 선형 모델 모드에 기초하여 예측되는지를 결정하기 위한 선형 모델 플래그를 포함할 수 있다. 적어도 하나의 구현에서, 선형 모델 플래그가 1과 동일할 때, 예측 표시들은 복수의 후보 모델 모드로부터 예측 모델 모드를 선택하기 위한 선형 모델 인덱스를 포함할 수 있다.
적어도 하나의 구현에서, 적어도 하나의 샘플링 파라미터는 시작 파라미터, 간격 파라미터 및 수량 파라미터 중 적어도 하나를 포함할 수 있다. 도 7은 본 출원의 예시적인 구현들에 따른, 블록 유닛 및 복수의 참조 샘플의 개략도이다. 적어도 하나의 구현에서, 블록 유닛(700)의 시작 파라미터는 복수의 시작 후보로부터 결정될 수 있고, 블록 유닛(700)의 간격 파라미터는 복수의 간격 후보로부터 결정될 수 있고, 블록 유닛(700)의 수량 파라미터는 복수의 수량 후보로부터 결정될 수 있다.
적어도 하나의 구현에서, 블록 유닛(700)의 시작 파라미터는 비트스트림으로부터 결정된 시작 후보들 중 특정 시작 후보와 동일할 수 있다. 적어도 하나의 구현에서, 블록 유닛(700)의 적어도 하나의 시작 지점은 블록 유닛(700)에 대해 결정된 특정 시작 후보에 기초하여 직접 설정될 수 있다. 시작 후보들 각각은 정수 후보 Ci일 수 있다. 예를 들어, 특정 정수 후보 Ci가 시작 정수 Si와 동일할 때, 적어도 하나의 시작 지점은 2개의 시작 지점 (Si, -1) 및 (-1, Si)를 포함할 수 있다. 도 7을 참조하면, 시작 정수 Si는 2와 동일할 수 있으므로, 제1 참조 라인(710) 및 제2 참조 라인(720) 내의 2개의 시작 지점(712, 722)은 (2, -1) 및 (-1, 2)에 위치된다. 적어도 하나의 구현에서, 블록 유닛(700)의 적어도 하나의 시작 지점은 블록 크기 W×H 및 블록 유닛(700)의 특정 시작 후보에 기초하여 계산될 수 있다. 구현에서, 시작 후보들 각각은 분수 후보 Cf일 수 있다. 예를 들어, 특정 분수 후보 Cf가 시작 분수 Sf와 동일할 때, 두 개의 시작 지점은 (Sf×W, -1) 및 (-1, Sf×H)에 위치될 수 있다. 도 7을 참조하면, 시작 분수 Sf는 1/2과 동일할 수 있다. 다른 구현에서, 시작 후보들 각각은 정수 후보 Si 및 분수 후보 Sf를 포함할 수 있다. 예를 들어, 특정 정수 후보 Ci가 시작 정수 Si와 동일하고, 특정 분수 후보 Cf가 시작 분수 Sf와 동일할 때, 2개의 시작 지점은 (Si+Sf×W, -1) 및 (-1, Si+Sf×H)에 위치될 수 있다. 적어도 하나의 구현에서, 블록 유닛(700)의 적어도 하나의 시작 지점은 시작 베이스 Sb 및 블록 유닛(700)의 특정 시작 후보에 기초하여 계산될 수 있다. 구현에서, 시작 후보들 각각은 정수 후보 Ci일 수 있다. 예를 들어, 특정 정수 후보 Ci가 시작 정수 Si와 동일할 때, 2개의 시작 지점은 (Sb×Si, -1) 및 (-1, Sb×Si)에 위치될 수 있다. 다른 구현에서, 특정 정수 후보 Ci가 시작 정수 Si와 동일할 때, 2개의 시작 지점은 (Sb+Si, -1) 및 (-1, Sb+Si)에 위치될 수 있다. 적어도 하나의 구현에서, 블록 유닛(700)의 적어도 하나의 시작 지점은 시작 베이스 Sb, 구간 베이스 Ib 및 블록 유닛(700)의 특정 시작 후보에 기초하여 계산될 수 있다. 구현에서, 시작 후보들 각각은 정수 후보 Ci일 수 있다. 예를 들어, 특정 정수 후보 Ci가 시작 정수 Si와 동일할 때, 2개의 시작 지점은 (Sb+Ib×Si, -1) 및 (-1, Sb+Ib×Si)에 위치될 수 있다. 적어도 하나의 구현에서, 시작 베이스 Sb 및 간격 베이스 Ib는 다음과 같이 도출될 수 있다:
Figure pct00002
Figure pct00003
여기서, numSampN은 상부 및 상부 우측의 이용가능한 이웃 크로마 샘플들의 수 numSampT, 또는 좌측 및 하부 좌측의 이용가능한 이웃 크로마 샘플들의 수 numSampL을 나타내고, availT 및 availL은 이웃 블록들의 이용가능성을 나타내고, predModeIntra는 블록 유닛의 인트라 예측 모드를 나타내고, INTRA_LT_CCLM은 크로스 컴포넌트 선형 모델 모드 후보들 중 하나이다.
적어도 하나의 구현에서, 간격 후보들 각각은 정수 후보 Ii일 수 있다. 2개의 이웃하는 참조 샘플 사이의 거리는 정수 후보들 Ii로부터 선택된 간격 파라미터와 동일하게 설정될 수 있다. 도 7을 참조하면, 간격 파라미터는 4와 동일할 수 있으므로, 제1 참조 라인(710) 및 제2 참조 라인(720) 내의 2개의 제2 참조 샘플(714 및 724)은 (6, -1) 및 (-1, 6)에 위치된다. 적어도 하나의 구현에서, 2개의 이웃하는 참조 샘플 사이의 거리는 간격 베이스 Ib 및 블록 유닛(700)의 간격 파라미터에 기초하여 계산될 수 있다. 구현에서, 간격 후보들 각각은 양의 정수와 동일할 수 있다. 예를 들어, 간격 파라미터가 간격 정수 Ii와 동일할 때, 2개의 이웃하는 참조 샘플 사이의 거리는 Ib×Ii와 동일할 수 있다. 추가로, 간격 파라미터가 간격 정수 Ii와 동일할 때, 2개의 이웃하는 참조 샘플 사이의 거리는 Ib + Ii와 동일할 수 있다. 적어도 하나의 구현에서, 2개의 이웃하는 참조 샘플 사이의 거리는 간격 베이스 Ib, 도출된 시작 베이스 Sd, 및 블록 유닛(700)의 간격 파라미터에 기초하여 계산될 수 있다. 구현에서, 간격 후보들 각각은 양의 정수와 동일할 수 있다. 예를 들어, 간격 파라미터가 간격 정수 Ii와 동일할 때, 2개의 이웃하는 참조 샘플 사이의 거리는 Ib+Sd×Ii와 동일할 수 있다. 적어도 하나의 구현에서, 수량 후보들은 복수의 상부 수량 후보 및 복수의 좌측 수량 후보를 포함할 수 있다. 블록 유닛(700) 위의 참조 샘플들의 수는 상부 수량 후보들로부터 선택된 수량 파라미터와 동일할 수 있고, 블록 유닛(700)의 좌측에 있는 참조 샘플들의 수는 좌측 수량 후보들로부터 선택된 수량 파라미터와 동일할 수 있다. 도 7을 참조하면, 블록 유닛(700) 위의 참조 샘플들의 수가 2와 동일하고 블록 유닛(700)의 좌측에 있는 참조 샘플들의 수가 2와 동일함을 나타내기 위해, 수량 파라미터는 2와 동일할 수 있다. 따라서, 블록 유닛(700)에 대해 4개의 참조 샘플(712, 714, 722 및 724)만이 존재한다.
적어도 하나의 구현에서, 적어도 하나의 샘플링 파라미터는 시작 파라미터일 수 있다. 일 구현에서, 시작 파라미터는 복수의 후보 모델 모드에서 설정될 수 있다. 따라서, 디코더 모듈(124)이 후보 모델 모드들로부터 예측 모델 모드를 선택할 때, 시작 파라미터는 예측 모델 모드로부터 결정될 수 있다. 다른 구현들에서, 시작 파라미터는 비트스트림으로부터 결정된 시작 인덱스에 기초하여 결정될 수 있다. 따라서, 디코더 모듈(124)은 시작 인덱스의 값에 기초하여 시작 파라미터를 결정한다.
적어도 하나의 구현에서, 적어도 하나의 샘플링 파라미터는 시작 파라미터, 간격 파라미터 및 수량 파라미터를 포함할 수 있다. 적어도 하나의 구현에서, 시작 파라미터, 간격 파라미터 및 수량 파라미터는 복수의 후보 모델 모드에서 설정될 수 있다. 예를 들어, 제1 후보 모델 모드는 제1 시작 후보 S1, 제1 간격 후보 I1 및 제1 수량 후보 Q1을 포함할 수 있고, 제N 후보 모델 모드는 제N 시작 후보 Sn, 제N 간격 후보 In 및 제N 수량 후보 Qn을 포함할 수 있다. 일 구현에서, 시작 후보들 S1-Sn은 서로 동일하거나 상이할 수 있고, 간격 후보들 I1-In은 서로 동일하거나 상이할 수 있으며, 수량 후보들 Q1-Qn은 서로 동일하거나 상이할 수 있다. 예를 들어, 후보 모델 모드들의 수가 4와 동일할 때, 시작 후보들 S1-S2는 서로 동일할 수 있고, 시작 후보들 S3-S4는 서로 동일하고 시작 후보들 S1-S2와 상이할 수 있으며, 간격 후보들 I1-I4 각각은 서로 동일할 수 있고, 수량 후보들 Q1 및 Q3은 서로 동일할 수 있고, 수량 후보들 Q2 및 Q4는 서로 동일하고 수량 후보들 Q1 및 Q3과 상이할 수 있다.
블록(640)에서, 디코더 모듈(124)은 참조 샘플들에 기초하여 제2 예측 모드의 복수의 모델 파라미터를 도출한다.
적어도 하나의 실시예에서, 도 2 및 도 7을 참조하면, 디코더 모듈(124)은 참조 샘플들에서 복수의 제1 참조 컴포넌트 및 복수의 제2 참조 컴포넌트를 결정할 수 있다. 적어도 하나의 구현에서, 제1 참조 컴포넌트들은 복수의 루마 참조 컴포넌트일 수 있고, 제2 참조 컴포넌트들은 복수의 크로마 참조 컴포넌트일 수 있다. 적어도 하나의 구현에서, 디코더 모듈(124)은 제1 참조 컴포넌트들을 다운샘플링하여, 복수의 다운샘플링된 참조 컴포넌트를 생성할 수 있다. 적어도 하나의 구현에서, 다운샘플링된 참조 컴포넌트들 각각은 N개의 제1 참조 컴포넌트들에 기초하여 생성된다. 일 구현에서, 수 N은 2×K와 동일할 수 있고, 수 K는 정수일 수 있다. 예를 들어, 수 K는 2와 동일할 수 있고, 수 N은 4와 동일할 수 있다.
적어도 하나의 구현에서, 디코더 모듈(124)은 참조 샘플들에 기초하여 모델 방정식의 모델 파라미터들을 도출할 수 있다. 일 구현에서, 디코더 모듈(124)은 제1 참조 컴포넌트들 및 제2 참조 컴포넌트들에 기초하여 모델 방정식을 도출할 수 있다. 다른 구현들에서, 디코더 모듈(124)은 다운샘플링된 참조 컴포넌트들 및 제2 참조 컴포넌트들에 기초하여 모델 방정식을 도출할 수 있다. 적어도 하나의 구현에서, 블록 유닛의 모델 방정식은 다음과 같이 도출될 수 있다:
Figure pct00004
여기서 PredC(x,y)는 블록 유닛의 복수의 예측된 컴포넌트를 나타내고, RecL '(x,y)는 동일한 블록 유닛의 복수의 다운샘플링된 재구성된 컴포넌트를 나타낸다. 적어도 하나의 구현에서, 모델 파라미터들 α 및 β는 참조 샘플들에 기초하여 도출된다.
적어도 하나의 구현에서, 디코더 모듈(124)은 다운샘플링된 참조 컴포넌트들 중 2개의 더 작은 값 X a0 및 X a1 및 2개의 더 큰 값 X b0 및 X b1을 선택할 수 있고, 4개의 선택된 다운샘플링된 참조 컴포넌트에 대응하는 4개의 제2 참조 컴포넌트 Y a0, Y a1, Y b0 및 Y b1를 결정할 수 있다. 다음으로, 디코더 모듈(124)은 X a0 및 X a1의 제1 평균 XA, X b0 및 X b1의 제2 평균 XB, Ya0 및 Y a1의 제3 평균 YA, 및 Y b0 및 Y b1의 제4 평균 YB를 결정한다. 모델 파라미터 α는 (Ya-Yb)/(Xa-Xb)와 동일할 수 있고, 모델 파라미터 β는 Yb -α×Xb와 동일할 수 있다. 적어도 하나의 구현에서, 모델 파라미터들 α 및 β는 임의의 다른 도출된 방법에 의해 참조 샘플들에 기초하여 도출될 수 있다.
블록(650)에서, 디코더 모듈(124)은 제2 예측 모드에 따라, 재구성된 컴포넌트들에 기초하여 블록 유닛의 복수의 예측된 컴포넌트를 생성한다.
적어도 하나의 구현에서, 도 2를 참조하면, 디코더 모듈(124)은 재구성된 컴포넌트들을 다운샘플링하여, 다운샘플링된 재구성된 컴포넌트들을 생성할 수 있다. 적어도 하나의 구현에서, 다운샘플링된 재구성된 컴포넌트들 각각은 M개의 제1 참조 컴포넌트에 기초하여 생성된다. 일 구현에서, 수 M은 2×L과 동일할 수 있고, 수 L은 정수일 수 있다. 예를 들어, 수 L은 2와 동일할 수 있고, 수 M은 4와 동일할 수 있다. 적어도 하나의 구현에서, 수 K는 수 L과 동일할 수 있고, 수 N은 수 M과 동일할 수 있다.
적어도 하나의 구현에서, 디코더 모듈(124)은 다운샘플링된 재구성된 컴포넌트들을 모델 방정식으로 대체하여, 예측된 컴포넌트들을 생성할 수 있다. 따라서, 블록 유닛의 크로마 블록 컴포넌트들에 대해 예측된 컴포넌트들이 생성될 수 있다. 블록 유닛의 크로마 블록 컴포넌트들은 예측된 컴포넌트들을 비트스트림으로부터 결정된 블록 유닛의 복수의 잔차 컴포넌트에 더함으로써 재구성될 수 있다. 적어도 하나의 구현에서, 블록 유닛의 잔차 컴포넌트들은 복수의 크로마 잔차 컴포넌트일 수도 있다. 적어도 하나의 구현에서, 디코더 모듈(124)은 이미지 프레임 및 비디오를 재구성하기 위해 이미지 프레임 내의 모든 다른 블록 유닛들을 재구성할 수 있다.
도 8은 도 1의 인코더 모듈(114)을 도시한다. 인코더 모듈(114)은 예측 프로세서(예를 들어, 예측 프로세스 유닛(8141)), 적어도 제1 합산기(예를 들어, 제1 합산기(8142)) 및 제2 합산기(예를 들어, 제2 합산기(8145)), 변환/양자화 프로세서(예를 들어, 변환/양자화 유닛(8143)), 역양자화/역변환 프로세서(예를 들어, 역양자화/역변환 유닛(8144)), 필터(예를 들어, 필터링 유닛(8146)), 디코딩된 픽처 버퍼(예를 들어, 디코딩된 픽처 버퍼(8147), 및 엔트로피 인코더(예를 들어, 엔트로피 인코딩 유닛(8148))을 포함할 수 있다. 인코더 모듈(114)의 예측 프로세스 유닛(8141)은 파티션 프로세서(예를 들어, 파티션 유닛(81411)), 인트라 예측 프로세서(예를 들어, 인트라 예측 유닛(81412)) 및 인터 예측 프로세서(예를 들어, 인터 예측 유닛(81413))를 더 포함할 수 있다. 인코더 모듈(114)은 소스 비디오를 수신할 수 있고, 소스 비디오를 인코딩하여 비트스트림을 출력할 수 있다.
인코더 모듈(114)은 복수의 이미지 프레임을 포함하는 소스 비디오를 수신한 후, 코딩 구조에 따라 이미지 프레임들을 분할할 수 있다. 이미지 프레임들 각각은 적어도 하나의 이미지 블록으로 분할될 수 있다.
적어도 하나의 이미지 블록은 복수의 휘도 샘플을 갖는 휘도 블록, 및 복수의 색차 샘플을 갖는 적어도 하나의 색차 블록을 포함할 수 있다. 휘도 블록 및 적어도 하나의 색차 블록은 매크로블록들, 코딩 트리 유닛들(CTU), 코딩 블록들(CB), 이들의 세부 분할들, 및/또는 다른 등가 코딩 유닛을 생성하기 위해 더 분할될 수 있다.
적어도 하나의 구현에서, 인코더 모듈(114)은 소스 비디오의 추가적인 세부 분할을 수행할 수 있다. 구현들은 일반적으로 인코딩 이전에 및/또는 인코딩 동안에 소스 비디오가 어떻게 파티셔닝되는지에 관계없이 비디오 코딩에 적용하다는 점에 유의해야 한다.
적어도 하나의 구현에서, 인코딩 프로세스 동안, 예측 프로세스 유닛(8141)은 인코딩 프로세스 동안 이미지 프레임들 중 특정 이미지 프레임의 현재 이미지 블록을 수신할 수 있다. 현재 이미지 블록은 특정 이미지 프레임 내의 휘도 블록, 또는 색차 블록들 중 하나일 수 있다.
파티션 유닛(81411)은 현재 이미지 블록을 복수의 블록 유닛으로 분할할 수 있다. 인트라 예측 유닛(81412)은 공간 예측을 제공하기 위해 현재 블록 유닛과 동일한 프레임 내의 하나 이상의 이웃 블록에 대해 현재 블록 유닛의 인트라 예측 코딩을 수행할 수 있다. 인터 예측 유닛(81413)은 시간적 예측을 제공하기 위해, 하나 이상의 참조 이미지 블록 내의 하나 이상의 블록에 대해 현재 블록 유닛의 인터 예측 코딩을 수행할 수 있다.
적어도 하나의 구현에서, 예측 프로세스 유닛(8141)은 비용 함수와 같은 모드 선택 방법에 기초하여 인트라 예측 유닛(81412) 및 인터 예측 유닛(81413)에 의해 생성된 코딩 결과들 중 하나를 선택할 수 있다. 모드 선택 방법은 레이트-왜곡 최적화(rate-distortion optimization)(RDO) 프로세스일 수 있다.
예측 프로세스 유닛(8141)은 선택된 코딩 결과를 결정할 수 있고, 선택된 코딩 결과에 대응하는 예측된 블록을, 잔차 블록의 생성을 위한 제1 합산기(8142) 및 인코딩된 블록 유닛의 재구성을 위한 제2 합산기(8145)에 제공할 수 있다. 예측 프로세스 유닛(8141)은 움직임 벡터들, 인트라 모드 표시자들, 파티션 정보, 및 다른 신택스 정보와 같은 신택스 요소들을 엔트로피 인코딩 유닛(8148)에 더 제공할 수 있다.
적어도 하나의 구현에서, 인트라 예측 유닛(81412)은 현재 블록 유닛을 인트라 예측할 수 있다. 인트라 예측 유닛(81412)은 현재 블록 유닛을 인코딩하기 위해 현재 블록 유닛에 이웃하는 재구성된 샘플에 관한 인트라 예측 모드를 결정할 수 있다.
적어도 하나의 구현에서, 인트라 예측 유닛(81412)은 다양한 인트라 예측 모드들을 사용하여 현재 블록 유닛을 인코딩할 수 있고, 인트라 예측 유닛(81412) 또는 예측 프로세스 유닛(8141)은 선택된 모드들로부터 적절한 인트라 예측 모드를 선택할 수 있다. 인트라 예측 유닛(81412)은 크로스 컴포넌트 예측 모드를 이용하여 현재 블록 유닛을 인코딩하여, 현재 블록 유닛의 루마 컴포넌트들에 기초하여 현재 블록 유닛의 2개의 크로마 컴포넌트 중 하나를 예측할 수 있다. 인트라 예측 유닛(81412)은 현재 블록 유닛의 2개의 크로마 컴포넌트 중 제2 크로마 컴포넌트에 기초하여 현재 블록 유닛의 2개의 크로마 컴포넌트 중 제1 크로마 컴포넌트를 예측할 수 있다.
적어도 하나의 구현에서, 인터 예측 유닛(81413)은 인트라 예측 유닛(81412)에 의해 수행되는 인트라 예측의 대안으로서 현재 블록 유닛을 인터 예측할 수 있다. 인터 예측 유닛(81413)은 움직임 벡터를 생성하기 위해, 움직임 추정을 수행하여 현재 블록 유닛의 움직임을 추정할 수 있다.
움직임 벡터는 참조 이미지 블록 내의 참조 블록 유닛에 대한 현재 이미지 블록 내의 현재 블록 유닛의 변위를 나타낼 수 있다. 인터 예측 유닛(81413)은 디코딩된 픽처 버퍼(8147)에 저장된 적어도 하나의 참조 이미지 블록을 수신할 수 있고, 수신된 참조 이미지 블록들에 기초하여 움직임을 추정하여 움직임 벡터를 생성할 수 있다.
적어도 하나의 구현에서, 제1 합산기(8142)는 원래의 현재 블록 유닛으로부터 예측 프로세스 유닛(8141)에 의해 결정된 예측 블록을 감산함으로써 잔차 블록을 생성할 수 있다. 제1 합산기(8142)는 이러한 감산 연산을 수행하는 컴포넌트 또는 컴포넌트들을 나타낼 수 있다.
적어도 하나의 구현에서, 변환/양자화 유닛(8143)은 잔차 변환 계수를 생성하기 위해 잔차 블록에 변환을 적용한 다음, 잔차 변환 계수들을 양자화하여 비트 레이트를 더 감소시킬 수 있다. 변환은 DCT, DST, AMT, MDNSST, HyGT, 신호 종속 변환, KLT, 웨이블릿 변환, 정수 변환, 부대역 변환, 또는 개념적으로 유사한 변환 중 하나일 수 있다.
적어도 하나의 구현에서, 변환은 잔차 정보를 픽셀 값 도메인으로부터 주파수 도메인과 같은 변환 도메인으로 변환할 수 있다. 양자화의 정도는 양자화 파라미터를 조절함으로써 수정될 수 있다.
적어도 하나의 구현에서, 변환/양자화 유닛(8143)은 양자화된 변환 계수들을 포함하는 행렬의 스캔을 수행할 수 있다. 대안적으로, 엔트로피 인코딩 유닛(8148)이 스캔을 수행할 수 있다.
적어도 하나의 구현에서, 엔트로피 인코딩 유닛(8148)은 예측 프로세스 유닛(8141) 및 변환/양자화 유닛(8143)으로부터 양자화 파라미터, 변환 데이터, 움직임 벡터들, 인트라 모드들, 파티션 정보, 및 다른 신택스 정보를 포함하는 복수의 신택스 요소를 수신할 수 있다. 엔트로피 인코딩 유닛(8148)은 신택스 요소들을 비트스트림으로 인코딩할 수 있다.
적어도 하나의 구현에서, 엔트로피 인코딩 유닛(8148)은 인코딩된 비트스트림을 생성하기 위해 CAVLC, CABAC, SBAC, PIPE 코딩 또는 다른 엔트로피 코딩 기법들을 수행함으로써, 양자화된 변환 계수들을 엔트로피 인코딩할 수 있다. 인코딩된 비트스트림은 다른 디바이스(즉, 도 1의 제2 전자 디바이스(120))에 전송되거나 나중의 전송 또는 검색을 위해 아카이빙될 수 있다.
적어도 하나의 구현에서, 역양자화/역변환 유닛(8144)은 역양자화 및 역변환을 적용하여, 참조 블록으로서 나중에 사용하기 위해 픽셀 도메인에서 잔차 블록을 재구성할 수 있다. 제2 합산기(8145)는 디코딩된 픽처 버퍼(8147)에 저장하기 위한 재구성된 블록을 생성하기 위해, 예측 프로세스 유닛(8141)으로부터 제공된 예측 블록에 재구성된 잔차 블록을 더할 수 있다.
적어도 하나의 구현에서, 필터링 유닛(8146)은 재구성된 블록으로부터 블로킹 아티팩트들을 제거하기 위해 디블로킹 필터, SAO 필터, 양방향 필터, 및/또는 ALF를 포함할 수 있다. 디블로킹 필터, SAO 필터, 양방향 필터 및 ALF 외에, (루프 내의 또는 루프 이후의) 추가 필터들이 사용될 수 있다. 이러한 필터들은 간결함을 위해 도시되지 않으며, 제2 합산기(8145)의 출력을 필터링할 수 있다.
적어도 하나의 구현에서, 디코딩된 픽처 버퍼(8147)는 예컨대 인트라 또는 인터 코딩 모드에서 비디오를 인코딩하기 위해 인코더 모듈(114)에 의해 사용하기 위한 참조 블록을 저장하는 참조 픽처 메모리일 수 있다. 디코딩된 픽처 버퍼(8147)는 SDRAM, MRAM, RRAM을 포함하는 DRAM, 또는 다른 유형의 메모리 디바이스들과 같은 다양한 메모리 디바이스들을 포함할 수 있다. 디코딩된 픽처 버퍼(8147)는 인코더 모듈(114)의 다른 컴포넌트들과 함께 온칩일 수도 있고, 그러한 컴포넌트들에 대해 오프칩일 수도 있다.
적어도 하나의 구현에서, 인코더 모듈(114)은 도 3에 도시된 바와 같이 블록 유닛을 재구성하기 위한 예시적인 재구성 방법(300)을 수행할 수 있다. 방법(300)은 도 1 및 도 8에 도시된 구성들을 사용하여 수행될 수 있고, 이러한 도면들의 다양한 요소들은 방법(300)을 설명하는 데 참조된다. 도 3에 도시된 각각의 블록은 수행된 하나 이상의 프로세스, 방법 또는 서브루틴을 나타낼 수 있다. 또한, 블록들의 순서는 예시일 뿐이며 변경될 수 있다. 본 개시내용을 벗어나지 않으면서 추가 블록들이 더해지거나 더 적은 블록들이 이용될 수 있다.
블록(310)에서, 인코더 모듈(114)은 비디오 데이터의 이미지 프레임을 수신하고, 수신된 비디오 데이터에 따라 이미지 프레임으로부터 블록 유닛을 결정한다. 비디오 데이터는 비디오일 수 있다.
적어도 하나의 구현에서, 도 1 및 도 8을 참조하면, 제1 전자 디바이스(110)는 소스 모듈(112)을 통해 비디오를 수신할 수 있다. 인코더 모듈(114)은 비디오로부터 이미지 프레임을 결정할 수 있고 이미지 프레임을 분할하여 블록 유닛을 결정할 수 있다.
적어도 하나의 구현에서, 제1 전자 디바이스(110)의 예측 프로세스 유닛(8141)은 파티션 유닛(81411)을 통해 비디오로부터 블록 유닛을 결정할 수 있고, 인코더 모듈(114)은 파티션 유닛(81411)의 파티션 결과에 기초하여 복수의 파티션 표시를 비트스트림으로 제공할 수 있다.
블록(320)에서, 인코더 모듈(114)은 후보 리스트로부터 제1 움직임 정보 및 제2 움직임 정보를 결정하고 블록 유닛의 분할 라인을 결정하여 블록 유닛을 재구성한다.
적어도 하나의 구현에서, 도 8을 참조하면, 인코더 모듈(114)은 인트라 예측 유닛(81412) 및 인터 예측 유닛(81413)에 의해 생성된 복수의 코딩 결과를 생성할 수 있다. 다음으로, 인코더 모듈(114)은 비용 함수와 같은 모드 선택 방법에 기초하여 코딩 결과들 중 하나를 선택할 수 있다. 모드 선택 방법은 레이트-왜곡 최적화(RDO) 프로세스일 수 있다. 적어도 하나의 구현에서, 선택된 코딩 결과가 분할 라인, 제1 움직임 정보 및 제2 움직임 정보에 기초하여 생성될 때, 인코더 모듈(114)은 블록 유닛을 복수의 예측 영역으로 분할하고, 제1 움직임 정보 및 제2 움직임 정보에 기초하여 블록 유닛의 예측 영역들을 예측할 수 있다.
적어도 하나의 구현에서, 분할 라인이 삼각형 파티션 모드에 기초하여 생성될 때, 분할 라인은 대각선 분할 라인 및 반-대각선 방향 중 하나일 수 있다. 적어도 하나의 구현에서, 분할 라인이 기하학적 파티션 모드에 기초하여 생성될 때, 분할 라인은 분할 라인의 경사각 및 분할 라인과 블록 유닛의 중심 지점 사이의 라인 오프셋에 의해 결정될 수 있다. 따라서, 인코더 모듈(114)은 경사각 및 라인 오프셋을 나타내는 분할 라인의 파티션 인덱스를 비트스트림으로 제공할 수 있다.
적어도 하나의 구현에서, 제1 움직임 정보 및 제2 움직임 정보는 블록 유닛의 병합 후보 리스트에 포함될 수 있다. 적어도 하나의 구현에서, 제1 움직임 정보는 제1 참조 프레임 및 제1 참조 벡터를 나타낼 수 있고, 제2 움직임 정보는 제2 참조 프레임 및 제2 참조 벡터를 나타낼 수 있다. 제1 참조 프레임 및 제2 참조 프레임은 블록 유닛의 복수의 참조 리스트 중에서 선택될 수 있다.
적어도 하나의 구현에서, 도 8을 참조하면, 제1 전자 디바이스(110) 내의 인코더 모듈(114)의 제1 합산기(8142)는 선택된 코딩 결과에 기초하여 잔차 블록을 생성할 수 있고, 잔차 블록 내의 복수의 잔차 컴포넌트에 대응하는 복수의 계수를 포함하는 비트스트림을 제2 전자 디바이스(120)에 제공할 수 있다.
적어도 하나의 구현에서, 인코더 모듈(114)은 이미지 프레임 내의 다른 블록 유닛들을 예측하기 위해, 선택된 코딩 결과에 기초하여 블록 유닛을 다시 재구성할 수 있다. 선택된 코딩 결과를 서브-블록의 잔차 블록에 더함으로써 블록 유닛이 재구성될 수 있다.
블록(330)에서, 인코더 모듈(114)은 블록 유닛 내의 서브-블록을 결정한다.
적어도 하나의 구현에서, 도 5a 및 도 8을 참조하면, 인코더 모듈(114)은 블록 유닛(400)을 분할하여 복수의 서브-블록(561-576)을 생성할 수 있다.
블록(340)에서, 인코더 모듈(114)은 서브-블록이 분할 라인을 커버하는 복수의 블록 영역 중 특정 영역에 포함되는지를 결정한다. 적어도 하나의 구현에서, 인코더 모듈(114)이 서브-블록이 분할 라인을 커버하는 특정 블록 영역에 포함된다고 결정할 때, 방법(300)은 블록(350)으로 진행할 수 있다. 인코더 모듈(114)이 서브-블록이 특정 블록 영역에 포함되지 않는다고 결정할 때, 방법은 종료될 수 있다.
적어도 하나의 구현에서, 도 5b 내지 도 5c 및 도 8을 참조하면, 인코더 모듈(114)은 블록 유닛을 분할하여 복수의 블록 영역(581-583)을 생성할 수 있다. 적어도 하나의 구현에서, 인코더 모듈(114)은 서브-블록들(561-576)을 블록 영역들(581-583)로 분류할 수 있다. 적어도 하나의 구현에서, 제3 블록 영역(583)은 분할 라인(420)을 커버할 수 있고, 제1 블록 영역(581) 및 제2 블록 영역은 분할 라인(420)을 커버하지 않을 수 있다. 제1 블록 영역(581) 내의 서브-블록들의 블록 컴포넌트들 대부분은 제1 움직임 정보에만 기초하여 예측될 수 있고, 제2 블록 영역(582) 내의 서브-블록들의 블록 컴포넌트들 대부분은 제2 움직임 정보에만 기초하여 예측될 수 있다. 따라서, 서브-블록이 제1 예측 영역(441)에 대응하는 제1 블록 영역(581)에 포함될 때, 인코더 모듈(114)은 서브-블록에 대한 제1 움직임 정보를 저장할 수 있다. 추가로, 서브-블록이 제2 예측 영역(442)에 대응하는 제2 블록 영역(582)에 포함될 때, 인코더 모듈(114)은 서브-블록에 대한 제2 움직임 정보를 저장할 수 있다.
적어도 하나의 구현에서, 제3 블록 영역(583) 내의 서브-블록들의 블록 컴포넌트들 대부분은 제1 움직임 정보 및 제2 움직임 정보에 기초하여 예측될 수 있다. 따라서, 서브-블록이 제3 예측 영역(443)에 대응하는 제3 블록 영역(583)에 포함될 때 인코더 모듈(114)이 서브-블록에 대한 제1 움직임 정보 및 제2 움직임 정보 중 적어도 하나를 저장하는 방법을 결정하기 위해, 방법(300)은 블록(350)으로 진행할 수 있다.
블록(350)에서, 인코더 모듈(114)은 제1 움직임 정보의 제1 리스트 플래그가 제2 움직임 정보의 제2 리스트 플래그와 동일한지를 결정한다. 적어도 하나의 구현에서, 제1 리스트 플래그가 제2 리스트 플래그와 동일할 때, 방법(300)은 블록(360)으로 진행할 수 있다. 제1 리스트 플래그가 제2 리스트 플래그와 상이할 때, 방법(300)은 블록(370)으로 진행할 수 있다.
적어도 하나의 구현에서, 도 5b 내지 도 5c 및 도 8을 참조하면, 서브-블록이 특정 블록 영역(583)에 포함될 때, 인코더 모듈(114)은 제1 리스트 플래그와 제2 리스트 플래그를 비교할 수 있다. 제1 리스트 플래그가 제2 리스트 플래그와 상이할 때, 특정 블록 영역(583) 내의 블록 컴포넌트들은 2개의 상이한 참조 리스트 내의 참조 프레임들에 기초하여 예측될 수 있다. 추가로, 제1 리스트 플래그가 제2 리스트 플래그와 동일할 때, 특정 블록 영역(583) 내의 블록 컴포넌트들은 동일한 참조 리스트 내의 참조 프레임들에 기초하여 예측될 수 있다.
블록(360)에서, 제1 리스트 플래그가 제2 리스트 플래그와 동일할 때, 인코더 모듈(114)은 서브-블록에 대한 제1 움직임 정보 및 제2 움직임 정보 중 미리 정의된 것을 저장한다.
적어도 하나의 구현에서, 도 5b 내지 도 5c 및 도 8을 참조하면, 블록 유닛(400)의 제1 리스트 플래그가 블록 유닛(400)의 제2 리스트 플래그와 동일하고, 서브-블록이 특정 블록 영역(583) 내에 포함될 때, 서브-블록 내의 블록 컴포넌트들 대부분은 참조 리스트들 중 하나로부터 제1 참조 샘플들 및 제2 참조 샘플들을 도출함으로써 예측될 수 있다.
움직임 정보는 저장된 움직임 정보에 기초하여 예측될 복수의 후속 블록에 대해 저장되므로, 저장된 움직임 정보는 제1 참조 샘플들 및 제2 참조 샘플들의 블렌딩 결과들에 기초하여 생성되는 블록 유닛의 복수의 잔차 컴포넌트에 영향을 미치지 않을 수 있다. 따라서, 도 1을 참조하면, 인코더 모듈(114) 및 디코더 모듈(124)이 제1 움직임 정보 및 제2 움직임 정보 중 미리 정의된 것을 저장하기 위해 방법(300)을 수행할 때, 인코더 모듈(114) 및 디코더 모듈(124)은 서브-블록에 대해 동일한 움직임 정보를 저장할 수 있다. 적어도 하나의 구현에서, 제1 참조 프레임 및 제2 참조 프레임이 동일한 참조 리스트에 포함될 때, 인코더 모듈(114)은 버퍼 사용량을 줄이기 위해 제1 움직임 정보 및 제2 움직임 정보 중 미리 정의된 것을 직접 저장할 수 있다. 따라서, 인코더 모듈(114)은 서브-블록에 대한 제1 움직임 정보 및 제2 움직임 정보 중 미리 정의된 것을 저장한다.
적어도 하나의 구현에서, 제1 움직임 정보 및 제2 움직임 정보 중 미리 정의된 것은 제2 움직임 정보일 수 있다. 따라서, 인코더 모듈(114)은 서브-블록에 대한 제2 움직임 정보를 직접 저장한다. 적어도 하나의 구현에서, 비트스트림은 제1 움직임 정보를 나타내는 제1 후보 인덱스 및 제2 움직임 정보를 나타내는 제2 후보 인덱스를 포함할 수 있다. 따라서, 디코더 모듈(124)은 비트스트림 내의 블록 유닛의 제2 후보 인덱스로부터 제1 움직임 정보 및 제2 움직임 정보 중 미리 정의된 것을 결정할 수 있다.
블록(370)에서, 인코더 모듈(114)은 서브-블록에 대한 제1 움직임 정보 및 제2 움직임 정보 둘 다를 저장한다.
적어도 하나의 구현에서, 도 5b 내지 도 5c 및 도 8을 참조하면, 블록 유닛(400)의 제1 리스트 플래그가 블록 유닛(400)의 제2 리스트 플래그와 상이하고, 서브-블록이 특정 블록 영역(583)에 포함될 때, 상이한 참조 리스트들로부터 제1 참조 샘플들 및 제2 참조 샘플들을 도출함으로써 서브-블록 내의 블록 컴포넌트들 대부분이 예측될 수 있다. 따라서, 인코더 모듈(114)은 추가 결정 없이 서브-블록에 대한 제1 움직임 정보 및 제2 움직임 정보를 직접 저장한다.
적어도 하나의 구현에서, 인코더 모듈(114)은 동일한 참조 리스트를 갖는 서브-블록에 대한 제1 움직임 정보 및 제2 움직임 정보 중 미리 정의된 것을 직접 저장할 수 있고, 상이한 참조 리스트를 갖는 서브-블록에 대한 제1 움직임 정보 및 제2 움직임 정보 둘 다를 직접 저장할 수 있다. 따라서, 서브-블록이 특정 블록 영역(583) 내에 포함될 때, 인코더 모듈(114)은 제1 리스트 플래그와 제2 리스트 플래그 간의 비교에만 기초하여, 제1 움직임 정보 및 제2 움직임 정보가 서브-블록에 대한 저장된 움직임 정보로서 함께 저장되는지를 결정할 수 있다.
블록(380)에서, 후속 블록이 서브-블록에 기초하여 예측될 때, 인코더 모듈(114)은 저장된 움직임 정보에 대해 후속 블록을 재구성한다.
적어도 하나의 구현에서, 도 8을 참조하면, 인코더 모듈(114)은 블록 유닛이 재구성된 후에도 이미지 프레임 및 복수의 후속 프레임을 계속해서 예측할 수 있다. 따라서, 블록 유닛의 저장된 정보는 이미지 프레임들 및 후속 프레임들에서 후속 블록들을 예측하기 위해 사용될 수 있다. 적어도 하나의 구현에서, 후속 프레임들은 이미지 프레임의 재구성 후에 예측된 복수의 예측되지 않은 프레임을 포함할 수 있다. 추가로, 후속 블록들은 이미지 프레임 및 후속 프레임들에서 복수의 예측되지 않은 블록을 포함할 수 있다. 예측되지 않은 블록들은 블록 유닛의 재구성 이후에 예측될 수 있다.
적어도 하나의 구현에서, 인코더 모듈(114)은 도 6에 도시된 바와 같이 블록 유닛을 재구성하기 위한 예시적인 재구성 방법(600)을 수행할 수 있다. 방법(600)은 도 1 및 도 8에 도시된 구성들을 사용하여 수행될 수 있고, 이러한 도면들의 다양한 요소들은 방법(600)을 설명하는 데 참조된다. 도 6에 도시된 각각의 블록은 수행되는 하나 이상의 프로세스, 방법 또는 서브루틴을 나타낼 수 있다. 또한, 블록들의 순서는 예시일 뿐이며 변경될 수 있다. 본 개시내용을 벗어나지 않으면서 추가 블록들이 더해지거나 더 적은 블록들이 이용될 수 있다.
블록(610)에서, 인코더 모듈(114)은 비디오 데이터의 이미지 프레임을 수신하고, 수신된 비디오 데이터에 따라 이미지 프레임으로부터 블록 유닛을 결정한다. 비디오 데이터는 비디오일 수 있다.
적어도 하나의 구현에서, 도 1 및 도 8을 참조하면, 제1 전자 디바이스(110)는 소스 모듈(112)을 통해 비디오를 수신할 수 있다. 인코더 모듈(114)은 비디오로부터 이미지 프레임을 결정하고 이미지 프레임을 분할하여 블록 유닛을 결정할 수 있다.
적어도 하나의 구현에서, 제1 전자 디바이스(110)의 예측 프로세스 유닛(8141)은 파티션 유닛(81411)을 통해 비디오로부터 블록 유닛을 결정할 수 있고, 인코더 모듈(114)은 파티션 유닛(81411)의 파티션 결과에 기초하여 복수의 파티션 표시를 비트스트림 내로 제공할 수 있다.
블록(620)에서, 인코더 모듈(114)은 비디오 데이터로부터 결정된 제1 예측 모드에 의해 블록 유닛의 복수의 재구성된 컴포넌트를 결정한다.
적어도 하나의 구현에서, 블록 유닛은 복수의 제1 블록 컴포넌트 및 복수의 제2 블록 컴포넌트를 포함할 수 있다. 제1 블록 컴포넌트들은 복수의 루마 블록 컴포넌트일 수 있고, 제2 블록 컴포넌트들은 복수의 크로마 블록 컴포넌트일 수 있다. 적어도 하나의 구현에서, 도 8을 참조하면, 인코더 모듈(114)은 인트라 예측 유닛(81412) 및 인터 예측 유닛(81413)에 의해 생성된 복수의 코딩 결과를 생성할 수 있다. 다음으로, 인코더 모듈(114)은 비용 함수와 같은 모드 선택 방법에 기초하여 코딩 결과들 중 하나를 선택할 수 있다. 모드 선택 방법은 레이트 왜곡 최적화(RDO) 프로세스일 수 있다. 선택된 코딩 결과에 대한 루마 예측 모드가 제1 예측 모드로서 설정될 수 있다. 적어도 하나의 구현에서, 제1 합산기(8142)는 제1 블록 컴포넌트들로부터 코딩 결과를 감산함으로써 잔차 블록을 생성할 수 있다. 적어도 하나의 구현에서, 잔차 블록은 변환/양자화 유닛(8143)에 의해 변환 및 양자화될 수 있다. 적어도 하나의 구현에서, 역양자화/역변환 유닛(8144)은 나중에 참조 블록으로서 사용하기 위해 픽셀 도메인에서 잔차 블록을 재구성하기 위해 역양자화 및 역변환을 적용할 수 있다. 제2 합산기(8145)는 디코딩된 픽처 버퍼(8147)에 저장하기 위한 재구성된 컴포넌트들을 생성하기 위해 예측 프로세스 유닛(8141)으로부터 제공된 코딩 결과에 재구성된 잔차 블록을 더할 수 있다. 적어도 하나의 구현에서, 재구성된 컴포넌트들은 블록 유닛의 루마 블록 컴포넌트들에 대해 도출된다.
블록(630)에서, 인코더 모듈(114)은 적어도 하나의 샘플링 파라미터에 기초하여 제2 예측 모드에 대한 블록 유닛에 이웃하는 복수의 이웃 블록으로부터 복수의 참조 샘플을 선택한다.
적어도 하나의 구현에서, 도 8을 참조하면, 인코더 모듈(114)은 제2 블록 컴포넌트에 대해 모드 선택 방법에 기초하여 코딩 결과들 중 하나를 선택할 수 있다. 선택된 코딩 결과에 대한 크로마 예측 모드가 제2 예측 모드로서 설정될 수 있다. 적어도 하나의 구현에서, 제2 예측 모드는 복수의 후보 모델 모드로부터 선택될 수 있다.
적어도 하나의 구현에서, 적어도 하나의 샘플링 파라미터는 시작 파라미터, 간격 파라미터 및 수량 파라미터 중 적어도 하나를 포함할 수 있다. 적어도 하나의 구현에서, 블록 유닛(700)의 시작 파라미터는 복수의 시작 후보로부터 결정될 수 있고, 블록 유닛(700)의 간격 파라미터는 복수의 간격 후보로부터 결정될 수 있고, 블록 유닛(700)의 수량 파라미터는 복수의 수량 후보로부터 결정될 수 있다.
적어도 하나의 구현에서, 블록 유닛(700)의 시작 파라미터는 비트스트림으로부터 결정된 시작 후보들 중 특정 시작 후보와 동일할 수 있다. 일 구현에서, 블록 유닛(700)의 적어도 하나의 시작 지점은 블록 유닛(700)에 대해 결정된 특정 시작 후보에 기초하여 직접 설정될 수 있다. 구현에서, 시작 후보들 각각은 정수 후보 Ci일 수 있다. 일 구현에서, 블록 유닛(700)의 적어도 하나의 시작 지점은 블록 크기 W×H 및 블록 유닛(700)의 특정 시작 후보에 기초하여 계산될 수 있다. 구현에서, 시작 후보들 각각은 분수 후보 Cf일 수 있거나, 정수 후보 Ci 및 분수 후보 Cf를 포함할 수 있다. 하나의 구현에서, 블록 유닛(700)의 적어도 하나의 시작 지점은 시작 베이스 Sb를 특정 시작 후보에 더하거나 시작 베이스 Sb에 특정 시작 후보를 곱함으로써 블록 유닛(700)의 특정 시작 후보 및 시작 베이스 Sb에 기초하여 계산될 수 있다. 구현에서, 시작 후보들 각각은 정수 후보 Ci일 수 있다. 일 구현에서, 블록 유닛(700)의 적어도 하나의 시작 지점은 시작 베이스 Sb, 간격 베이스 Ib, 및 블록 유닛(700)의 특정 시작 후보에 기초하여 계산될 수 있다. 구현에서, 시작 후보들 각각은 정수 후보 Ci일 수 있다. 적어도 하나의 구현에서, 간격 후보들 각각은 정수 후보 Ii일 수 있다. 2개의 이웃하는 참조 샘플 사이의 거리는 정수 후보들 Ii로부터 선택된 간격 파라미터와 동일하게 설정될 수 있다. 일 구현에서, 2개의 이웃하는 참조 샘플 사이의 거리는 간격 베이스 Ib를 간격 파라미터에 더하거나 간격 베이스 Ib에 간격 파라미터를 곱함으로써 블록 유닛(700)의 간격 파라미터 및 간격 베이스 Ib에 기초하여 계산될 수 있다. 하나의 구현에서, 2개의 이웃하는 참조 샘플 사이의 거리는 간격 베이스 Ib, 도출된 시작 베이스 Sd 및 블록 유닛(700)의 간격 파라미터에 기초하여 계산될 수 있다. 적어도 하나의 구현에서, 수량 후보들은 복수의 상부 수량 후보 및 복수의 좌측 수량 후보를 포함할 수 있다. 블록 유닛(700) 위의 참조 샘플들의 수는 상부 수량 후보들로부터 선택된 수량 파라미터와 동일할 수 있고, 블록 유닛(700)의 좌측에 있는 참조 샘플들의 수는 좌측 수량 후보들로부터 선택된 수량 파라미터와 동일할 수 있다.
적어도 하나의 구현에서, 적어도 하나의 샘플링 파라미터는 시작 파라미터일 수 있다. 일 구현에서, 시작 파라미터는 복수의 후보 모델 모드에서 설정될 수 있다.
적어도 하나의 구현에서, 적어도 하나의 샘플링 파라미터는 시작 파라미터, 간격 파라미터 및 수량 파라미터를 포함할 수 있다. 적어도 하나의 구현에서, 시작 파라미터, 간격 파라미터 및 수량 파라미터는 후보 모델 모드들 각각에서 설정될 수 있다.
블록(640)에서, 인코더 모듈(114)은 참조 샘플들에 기초하여 제2 예측 모드의 복수의 모델 파라미터를 도출한다.
적어도 하나의 실시예에서, 도 8을 참조하면, 인코더 모듈(114)은 참조 샘플들에서 복수의 제1 참조 컴포넌트 및 복수의 제2 참조 컴포넌트를 결정할 수 있다. 적어도 하나의 구현에서, 제1 참조 컴포넌트들은 복수의 루마 참조 컴포넌트일 수 있고, 제2 참조 컴포넌트들은 복수의 크로마 참조 컴포넌트일 수 있다. 적어도 하나의 구현에서, 인코더 모듈(114)은 제1 참조 컴포넌트들을 다운샘플링하여 복수의 다운샘플링된 참조 컴포넌트를 생성할 수 있다.
적어도 하나의 구현에서, 인코더 모듈(114)은 참조 샘플들에 기초하여 모델 방정식의 모델 파라미터들을 도출할 수 있다. 적어도 하나의 구현에서, 블록 유닛의 모델 방정식은 다음과 같이 도출될 수 있다:
Figure pct00005
여기서, PredC(x,y)는 블록 유닛 내의 복수의 예측된 컴포넌트를 나타내고, RecL '(x,y)는 동일한 블록 유닛의 복수의 다운샘플링된 재구성된 컴포넌트를 나타낸다. 적어도 하나의 구현에서, 모델 파라미터들 α 및 β는 참조 샘플에 기초하여 도출된다.
블록(650)에서, 인코더 모듈(114)은 제2 예측 모드에 따라, 재구성된 컴포넌트들에 기초하여 블록 유닛의 복수의 예측된 컴포넌트를 생성한다.
적어도 하나의 구현에서, 도 8을 참조하면, 인코더 모듈(114)은 재구성된 컴포넌트들을 다운샘플링하여, 다운샘플링된 재구성된 컴포넌트들을 생성할 수 있다. 적어도 하나의 구현에서, 인코더 모듈(114)은 다운샘플링된 재구성된 컴포넌트들을 모델 방정식으로 대체하여 예측된 컴포넌트들을 생성할 수 있다. 따라서, 블록 유닛의 크로마 블록 컴포넌트들에 대한 예측된 컴포넌트들이 생성될 수 있다. 적어도 하나의 구현에서, 크로마 잔차 블록은 제1 합산기(8142)에서 비디오의 원래의 제2 블록 컴포넌트들로부터 예측된 컴포넌트들을 감산함으로써 생성될 수 있고, 제2 합산기(8145)에서 복수의 크로마 재구성된 컴포넌트를 생성하기 위해 예측된 컴포넌트들에 다시 더해질 수 있다. 적어도 하나의 구현에서, 인코더 모듈(114)은 이미지 프레임 내의 모든 다른 블록 유닛들을 예측하고, 비디오를 예측하기 위해 코딩된 블록 유닛들을 다시 재구성할 수 있다.
개시된 구현들은 모든 면에서 제한이 아니라 예시적인 것으로 간주되어야 한다. 또한, 본 개시내용은 위에서 설명된 특정 구현들로 제한되지 않고, 본 개시내용의 범위를 벗어나지 않고서 많은 재배열, 수정 및 대체가 가능하다는 것을 이해해야 한다.

Claims (17)

  1. 전자 디바이스에 의해 비트스트림을 디코딩하는 방법으로서,
    상기 비트스트림의 이미지 프레임을 수신하는 단계;
    수신된 이미지 프레임으로부터 블록 유닛을 결정하는 단계;
    후보 리스트로부터 제1 움직임 정보 및 제2 움직임 정보를 수신하여 상기 블록 유닛을 재구성(reconstruct)하는 단계 - 상기 제1 움직임 정보는 제1 참조 프레임을 선택하기 위한 제1 리스트 플래그를 포함하고, 상기 제2 움직임 정보는 제2 참조 프레임을 선택하기 위한 제2 리스트 플래그를 포함함 -;
    상기 블록 유닛 내의 서브-블록을 결정하는 단계;
    상기 제1 리스트 플래그를 상기 제2 리스트 플래그와 비교하는 단계;
    상기 제1 리스트 플래그가 상기 제2 리스트 플래그와 동일할 때, 상기 제1 참조 프레임 및 상기 제2 참조 프레임이 상기 제1 리스트 플래그 및 상기 제2 리스트 플래그와는 상이한 복수의 플래그 값 중의 특정 플래그 값에 의해 표시되는 복수의 참조 리스트 중의 특정 참조 리스트에 포함되는지를 확인하지 않고서, 상기 제1 움직임 정보 및 상기 제2 움직임 정보 중의 미리 정의된 것을 상기 서브-블록에 대한 저장된 움직임 정보로서 저장하는 단계; 및
    후속 블록이 상기 서브-블록에 기초하여 재구성될 때, 상기 저장된 움직임 정보에 기초하여 상기 후속 블록을 재구성하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 블록 유닛의 분할 라인을 결정하는 단계; 및
    상기 서브-블록이 상기 분할 라인에 기초하여 분리되는 복수의 블록 영역 중의 특정 블록 영역에 포함되는지를 결정하는 단계
    를 더 포함하고,
    상기 복수의 블록 영역 중의 상기 특정 블록 영역은 상기 분할 라인을 커버하고,
    상기 서브-블록이 상기 복수의 블록 영역 중의 상기 특정 블록 영역에 포함될 때, 상기 제1 리스트 플래그가 상기 제2 리스트 플래그와 비교되는, 방법.
  3. 제2항에 있어서,
    상기 서브-블록이 상기 제1 움직임 정보에 대응하는 상기 복수의 블록 영역 중의 제1 블록 영역에 포함될 때, 상기 제1 움직임 정보를 상기 서브-블록에 대한 저장된 움직임 정보로서 저장하는 단계; 및
    상기 서브-블록이 상기 제2 움직임 정보에 대응하는 상기 복수의 블록 영역 중의 제2 블록 영역에 포함될 때, 상기 제2 움직임 정보를 상기 서브-블록에 대한 저장된 움직임 정보로서 저장하는 단계
    를 더 포함하고, 상기 복수의 블록 영역 중의 상기 제1 블록 영역 및 상기 복수의 블록 영역 중의 상기 제2 블록 영역 각각은 상기 복수의 블록 영역 중의 상기 특정 블록 영역과 상이한, 방법.
  4. 제3항에 있어서, 상기 제1 움직임 정보 및 상기 제2 움직임 정보 중의 상기 미리 정의된 것은 상기 제2 움직임 정보인, 방법.
  5. 제2항에 있어서,
    상기 제1 리스트 플래그가 상기 제2 리스트 플래그와 동일하고 상기 서브-블록이 상기 복수의 블록 영역 중의 상기 특정 블록 영역에 포함될 때, 상기 2개의 참조 프레임이 상기 2개의 리스트 플래그와는 상이한 상기 복수의 플래그 값 중의 상기 특정 플래그 값에 의해 표시되는 상기 복수의 참조 리스트 중의 상기 특정 참조 리스트에 포함되는지를 확인하지 않고서, 상기 제1 움직임 정보 및 상기 제2 움직임 정보 중의 상기 미리 정의된 것을 상기 서브-블록에 대한 저장된 움직임 정보로서 저장하는 단계; 및
    상기 제1 리스트 플래그가 상기 제2 리스트 플래그와 상이하고 상기 서브-블록이 상기 복수의 블록 영역 중의 상기 특정 블록 영역에 포함될 때, 상기 제1 움직임 정보 및 상기 제2 움직임 정보를 상기 서브-블록에 대한 저장된 움직임 정보로서 함께 저장하는 단계
    를 더 포함하는 방법.
  6. 제1항에 있어서, 상기 복수의 참조 리스트의 수가 2와 동일하고 상기 제1 리스트 플래그가 상기 제2 리스트 플래그와 동일할 때, 상기 복수의 플래그 값 중의 상기 특정 플래그 값에 의해 표시되는 상기 복수의 참조 리스트 중의 상기 특정 참조 리스트는 상기 제1 리스트 플래그에 의해 표시되는 상기 복수의 참조 리스트 중의 다른 참조 리스트와 상이한, 방법.
  7. 비트스트림을 디코딩하기 위한 전자 디바이스로서,
    적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서에 결합되고, 복수의 명령어를 저장하는 저장 디바이스
    를 포함하고, 상기 복수의 명령어는 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서로 하여금:
    상기 비트스트림의 이미지 프레임을 수신하게 하고;
    수신된 이미지 프레임으로부터 블록 유닛을 결정하게 하고;
    후보 리스트로부터 제1 움직임 정보 및 제2 움직임 정보를 수신하여 상기 블록 유닛을 재구성하게 하고 - 상기 제1 움직임 정보는 제1 참조 프레임을 선택하기 위한 제1 리스트 플래그를 포함하고, 상기 제2 움직임 정보는 제2 참조 프레임을 선택하기 위한 제2 리스트 플래그를 포함함 -;
    상기 블록 유닛 내의 서브-블록을 결정하게 하고;
    상기 제1 리스트 플래그를 상기 제2 리스트 플래그와 비교하게 하고;
    상기 제1 리스트 플래그가 상기 제2 리스트 플래그와 동일할 때, 상기 제1 참조 프레임 및 상기 제2 참조 프레임이 상기 제1 리스트 플래그 및 상기 제2 리스트 플래그와는 상이한 복수의 플래그 값 중의 특정 플래그 값에 의해 표시되는 복수의 참조 리스트 중의 특정 참조 리스트에 포함되는지를 확인하지 않고서, 상기 제1 움직임 정보 및 상기 제2 움직임 정보 중의 미리 정의된 것을 상기 서브-블록에 대한 저장된 움직임 정보로서 저장하게 하고;
    후속 블록이 상기 서브-블록에 기초하여 재구성될 때, 상기 저장된 움직임 정보에 기초하여 상기 후속 블록을 재구성하게 하는, 전자 디바이스.
  8. 제7항에 있어서,
    상기 복수의 명령어는 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서로 하여금 추가로:
    상기 블록 유닛의 분할 라인을 결정하게 하고;
    상기 서브-블록이 상기 분할 라인에 기초하여 분리되는 복수의 블록 영역 중의 특정 블록 영역에 포함되는지를 결정하게 하고,
    상기 복수의 블록 영역 중의 상기 특정 블록 영역은 상기 분할 라인을 커버하고,
    상기 서브-블록이 상기 복수의 블록 영역 중의 상기 특정 블록 영역에 포함될 때, 상기 제1 리스트 플래그가 상기 제2 리스트 플래그와 비교되는, 전자 디바이스.
  9. 제8항에 있어서,
    상기 복수의 명령어는 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서로 하여금 추가로:
    상기 서브-블록이 상기 제1 움직임 정보에 대응하는 상기 복수의 블록 영역 중의 제1 블록 영역에 포함될 때, 상기 제1 움직임 정보를 상기 서브-블록에 대한 저장된 움직임 정보로서 저장하게 하고;
    상기 서브-블록이 상기 제2 움직임 정보에 대응하는 상기 복수의 블록 영역 중의 제2 블록 영역에 포함될 때, 상기 제2 움직임 정보를 상기 서브-블록에 대한 저장된 움직임 정보로서 저장하게 하고,
    상기 복수의 블록 영역 중의 상기 제1 블록 영역 및 상기 복수의 블록 영역 중의 상기 제2 블록 영역 각각은 상기 복수의 블록 영역 중의 상기 특정 블록 영역과 상이한, 전자 디바이스.
  10. 제9항에 있어서, 상기 제1 움직임 정보 및 상기 제2 움직임 정보 중의 상기 미리 정의된 것은 상기 제2 움직임 정보인, 전자 디바이스.
  11. 제8항에 있어서,
    상기 복수의 명령어는 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서로 하여금 추가로:
    상기 제1 리스트 플래그가 상기 제2 리스트 플래그와 동일하고 상기 서브-블록이 상기 복수의 블록 영역 중의 상기 특정 블록 영역에 포함될 때, 상기 2개의 참조 프레임이 상기 2개의 리스트 플래그와는 상이한 복수의 플래그 값 중의 상기 특정 플래그 값에 의해 표시되는 상기 복수의 참조 리스트 중의 상기 특정 참조 리스트에 포함되는지를 확인하지 않고서, 상기 제1 움직임 정보 및 상기 제2 움직임 정보 중의 상기 미리 정의된 것을 상기 서브-블록에 대한 저장된 움직임 정보로서 저장하게 하고;
    상기 제1 리스트 플래그가 상기 제2 리스트 플래그와 상이하고 상기 서브-블록이 상기 복수의 블록 영역 중의 상기 특정 블록 영역에 포함될 때, 상기 제1 움직임 정보 및 상기 제2 움직임 정보를 상기 서브-블록에 대한 저장된 움직임 정보로서 함께 저장하게 하는, 전자 디바이스.
  12. 전자 디바이스에 의해 비트스트림을 디코딩하는 방법으로서,
    상기 비트스트림의 이미지 프레임을 수신하는 단계;
    수신된 이미지 프레임으로부터 블록 유닛을 결정하는 단계;
    상기 블록 유닛의 분할 라인을 결정하는 단계;
    후보 리스트로부터 제1 움직임 정보 및 제2 움직임 정보를 수신하여 상기 블록 유닛을 재구성하는 단계 - 상기 제1 움직임 정보는 제1 리스트 플래그를 포함하고, 상기 제2 움직임 정보는 제2 리스트 플래그를 포함함 -;
    상기 블록 유닛 내의 서브-블록을 결정하는 단계;
    상기 서브-블록이 상기 분할 라인에 기초하여 분리되는 복수의 블록 영역 중의 특정 블록 영역에 포함되는지를 결정하는 단계 - 상기 복수의 블록 영역 중의 상기 특정 블록 영역은 상기 분할 라인을 커버함 -;
    상기 서브-블록이 상기 복수의 블록 영역 중의 상기 특정 블록 영역에 포함될 때, 상기 제1 리스트 플래그와 상기 제2 리스트 플래그 간의 비교 결과에만 기초하여, 상기 제1 움직임 정보 및 상기 제2 움직임 정보가 상기 서브-블록에 대한 저장된 움직임 정보로서 함께 저장되는지를 결정하는 단계; 및
    후속 블록이 상기 서브-블록에 기초하여 재구성될 때, 상기 저장된 움직임 정보에 기초하여 상기 후속 블록을 재구성하는 단계
    를 포함하는, 방법.
  13. 제12항에 있어서,
    상기 서브-블록이 상기 제1 움직임 정보에 대응하는 상기 복수의 블록 영역 중의 제1 블록 영역에 포함될 때, 상기 제1 움직임 정보를 상기 서브-블록에 대한 저장된 움직임 정보로서 저장하는 단계; 및
    상기 서브-블록이 상기 제2 움직임 정보에 대응하는 상기 복수의 블록 영역 중의 제2 블록 영역에 포함될 때, 상기 제2 움직임 정보를 상기 서브-블록에 대한 저장된 움직임 정보로서 저장하는 단계
    를 더 포함하고, 상기 복수의 블록 영역 중의 상기 제1 블록 영역 및 상기 복수의 블록 영역 중의 상기 제2 블록 영역 각각은 상기 복수의 블록 영역 중의 상기 특정 블록 영역과 상이한, 방법.
  14. 제13항에 있어서, 상기 제1 리스트 플래그가 상기 제2 리스트 플래그와 동일하고 상기 서브-블록이 상기 복수의 블록 영역 중의 상기 특정 블록 영역에 포함될 때, 상기 제2 움직임 정보를 상기 서브-블록에 대한 저장된 움직임 정보로서 저장하는 단계를 더 포함하는, 방법.
  15. 제12항에 있어서, 상기 블록 유닛은 상기 후속 블록을 재구성하기 전에 재구성되는, 방법.
  16. 제12항에 있어서,
    상기 제1 리스트 플래그가 상기 제2 리스트 플래그와 상이할 때, 상기 제1 움직임 정보 및 상기 제2 움직임 정보를 상기 서브-블록에 대한 저장된 움직임 정보로서 함께 저장하는 단계를 더 포함하는, 방법.
  17. 제12항에 있어서,
    상기 제1 리스트 플래그가 상기 제2 리스트 플래그와 동일할 때, 상기 제1 리스트 플래그에 기초하여 선택된 제1 참조 프레임 및 상기 제2 리스트 플래그에 기초하여 선택된 제2 참조 프레임이 상기 제1 리스트 플래그와는 상이한 복수의 플래그 값 중의 특정 플래그 값에 의해 표시되는 복수의 참조 리스트 중의 특정 참조 리스트에 포함되는지를 확인하지 않고서, 상기 제1 움직임 정보 및 상기 제2 움직임 정보 중 미리 정의된 것이 상기 서브-블록에 대한 저장된 움직임 정보로서 저장되는, 방법.
KR1020227001511A 2019-06-24 2020-06-19 비디오 데이터를 코딩하기 위한 디바이스 및 방법 KR20220020959A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962865443P 2019-06-24 2019-06-24
US62/865,443 2019-06-24
US201962884335P 2019-08-08 2019-08-08
US62/884,335 2019-08-08
PCT/CN2020/097121 WO2020259411A1 (en) 2019-06-24 2020-06-19 Device and method for coding video data

Publications (1)

Publication Number Publication Date
KR20220020959A true KR20220020959A (ko) 2022-02-21

Family

ID=74039005

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227001511A KR20220020959A (ko) 2019-06-24 2020-06-19 비디오 데이터를 코딩하기 위한 디바이스 및 방법

Country Status (6)

Country Link
US (3) US11272199B2 (ko)
EP (1) EP3987797A4 (ko)
JP (1) JP7345573B2 (ko)
KR (1) KR20220020959A (ko)
CN (1) CN114026871A (ko)
WO (1) WO2020259411A1 (ko)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015137783A1 (ko) 2014-03-14 2015-09-17 삼성전자 주식회사 인터 레이어 비디오의 복호화 및 부호화를 위한 머지 후보 리스트 구성 방법 및 장치
US11477477B2 (en) * 2015-01-26 2022-10-18 Qualcomm Incorporated Sub-prediction unit based advanced temporal motion vector prediction
US10271064B2 (en) * 2015-06-11 2019-04-23 Qualcomm Incorporated Sub-prediction unit motion vector prediction using spatial and/or temporal motion information
US9883183B2 (en) 2015-11-23 2018-01-30 Qualcomm Incorporated Determining neighborhood video attribute values for video data
US10609423B2 (en) * 2016-09-07 2020-03-31 Qualcomm Incorporated Tree-type coding for video coding
CN110169067B (zh) * 2016-12-16 2021-12-31 夏普株式会社 图像解码装置以及图像编码装置
US10778977B2 (en) * 2018-12-05 2020-09-15 Qualcomm Incorporated Triangle motion information for video coding
US11032574B2 (en) * 2018-12-31 2021-06-08 Tencent America LLC Method and apparatus for video coding
EP3932073A1 (en) * 2019-03-01 2022-01-05 FRAUNHOFER-GESELLSCHAFT zur Förderung der angewandten Forschung e.V. Advanced independent region boundary handling

Also Published As

Publication number Publication date
WO2020259411A1 (en) 2020-12-30
EP3987797A1 (en) 2022-04-27
JP2022539704A (ja) 2022-09-13
JP7345573B2 (ja) 2023-09-15
US11930199B2 (en) 2024-03-12
EP3987797A4 (en) 2023-03-22
CN114026871A (zh) 2022-02-08
US20220150520A1 (en) 2022-05-12
US20240179334A1 (en) 2024-05-30
US11272199B2 (en) 2022-03-08
US20200404304A1 (en) 2020-12-24

Similar Documents

Publication Publication Date Title
US11272197B2 (en) Device and method for coding video data
WO2019210840A1 (en) Device and method for coding video data based on different reference sets in linear model prediction
US12075095B2 (en) Device and method for coding video data
KR102391834B1 (ko) 조정된 인트라 모드 목록에 기초한 비디오 데이터를 코딩하기 위한 디바이스 및 방법
US10924733B2 (en) Device and method for coding video data based on mode list including different mode groups
US20240089432A1 (en) Device and method for coding video data for geometric partitioning mode
US11272179B2 (en) Device and method for coding video data
US11051029B2 (en) Device and method for coding video data
US11930199B2 (en) Motion storing process for partition prediction mode