KR20230084025A - 저주파 비분리 변환 및 다중 변환 선택 교착 방지 - Google Patents

저주파 비분리 변환 및 다중 변환 선택 교착 방지 Download PDF

Info

Publication number
KR20230084025A
KR20230084025A KR1020220143451A KR20220143451A KR20230084025A KR 20230084025 A KR20230084025 A KR 20230084025A KR 1020220143451 A KR1020220143451 A KR 1020220143451A KR 20220143451 A KR20220143451 A KR 20220143451A KR 20230084025 A KR20230084025 A KR 20230084025A
Authority
KR
South Korea
Prior art keywords
transform
decoding
type
determining
transform coefficients
Prior art date
Application number
KR1020220143451A
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 KR20230084025A publication Critical patent/KR20230084025A/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/48Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/18Methods 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 a set of transform coefficients
    • 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/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/186Methods 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 a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/65Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
    • 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)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 개시내용은 저주파 비분리 변환 및 다중 변환 선택 교착 방지를 설명한다. 시스템들 및 방법들은 비디오 인코딩 및 디코딩 시스템의 인코딩 측에서 수행되는 변환 유형들이, 디코더 측에서 변환 파라미터들이 디코딩되기 전에 결정되는 것을 허용할 수 있다. 이것은 비트스트림에서 수신된 일부 또는 모든 변환 유닛(TU)의 역변환이 더 빠르게 수행되는 것을 허용할 수 있으며, 이는 비트스트림 버퍼에 대한 스트레스를 감소시킬 수 있다.

Description

저주파 비분리 변환 및 다중 변환 선택 교착 방지{LOW FREQUENCY NON-SEPARABLE TRANSFORM AND MULTIPLE TRANSFORM SELECTION DEADLOCK PREVENTION}
본 개시내용은 일반적으로 비디오 인코딩을 위한 시스템들, 디바이스들 및 방법들에 관한 것이고, 더 구체적으로는 저주파 비분리 변환 및 다중 변환 선택 교착 방지에 관한 것이다.
VVC(Versatile Video Coding)(H.266이라고도 알려짐)는 JVET(Joint Video Experts Team)에 의해 2020년 7월에 최종 확정된 비디오 압축 표준이다. 이 표준은 비디오 인코딩 및 디코딩에 대한 지침들을 제공한다. 전형적으로, 디코딩 측에서, 비트스트림으로 수신된 임의의 데이터의 역변환을 수행하기 위해, 인코딩 측에서 사용된 변환 유형을 결정해야 할 수 있다. 변환의 두 가지 예시적인 유형은 저주파 비분리 변환(Low Frequency Non-Separable Transform)(LFNST) 및 다중 변환 선택(Multiple Transform Selection)(MTS)을 포함할 수 있다. 그러나, 전형적으로, 특정 변환 유닛(transform unit)(TU)에 대해 어느 변환 유형이 사용되었는지를 결정하기 위해, 복수의 스테이지의 디코딩이 먼저 수행되어야 한다(코딩 유닛(coding unit)(CU) 디코딩, TU 디코딩, 및 다음으로 변환 파라미터 디코딩). 이것은 주어진 CU에 연관된 모든 TU가 TU들 중 하나에 대해 역변환 프로세스가 시작될 수 있기 전에 디코딩될 필요가 있을 수 있다는 점에서 문제가 될 수 있다. 이것은 수신된 인코딩된 비디오 데이터를 수용하는 비트스트림 버퍼에 병목 현상을 유발할 수 있다.
상세한 설명은 첨부 도면들을 참조하여 제시된다. 동일한 참조 번호들의 사용은 유사하거나 동일한 컴포넌트들 또는 요소들을 나타내지만, 유사하거나 동일할 수 있는 컴포넌트들 또는 요소들을 나타내기 위해 상이한 참조 번호들이 사용될 수도 있다. 본 개시내용의 다양한 실시예들은 도면들에 도시된 것들과는 다른 요소들 및/또는 컴포넌트들을 활용할 수 있으며, 일부 요소들 및/또는 컴포넌트들은 다양한 실시예들에 존재하지 않을 수 있다. 문맥에 따라, 요소 또는 컴포넌트를 설명하기 위해 사용되는 단수형의 용어는 복수의 그러한 요소들 또는 컴포넌트들을 포함할 수 있으며 그 반대의 경우도 마찬가지이다.
도 1은 본 개시내용의 하나 이상의 실시예에 따른 예시적인 시스템을 도시한다.
도 2a는 본 개시내용의 하나 이상의 실시예에 따른 예시적인 흐름도를 도시한다.
도 2b는 본 개시내용의 하나 이상의 실시예에 따른 예시적인 흐름도를 도시한다.
도 3a는 본 개시내용의 하나 이상의 실시예에 따른 예시적인 흐름도를 도시한다.
도 3b는 본 개시내용의 하나 이상의 실시예에 따른 예시적인 흐름도를 도시한다.
도 4는 본 개시내용의 하나 이상의 실시예에 따른 예시적인 방법을 도시한다.
도 5는 본 개시내용의 하나 이상의 실시예에 따른 컴퓨팅 시스템의 예를 도시한다.
본 개시내용은 개선된 비디오 코딩 효율에 관한 것으로, 더 구체적으로는, 비디오 코딩의 역변환 프로세스를 개선하기 위해 저주파 비분리 변환 및 다중 변환 선택 인덱스의 존재를 예측하는 것에 관한 것이다. 예를 들어, 예측은 교착을 방지할 수 있다. 구체적으로, 시스템들 및 방법들은 디코딩 성능(예를 들어, 처리량 및 타이밍)을 개선하기 위해, 일부 상황들에서는 디코딩 프로세스의 역변환 부분이, 달리 개시할 수 있던 것보다 더 빨리 개시할 수 있게 할 수 있다. 이러한 증가된 성능은 결국 디코더 측에서 변환 유닛(TU) 계수들의 프로세싱을 시작하는 데 요구되는 버퍼 공간의 양을 감소시킬 수 있고, 버퍼에서 "교착" 시나리오들을 완화하거나 방지할 수 있다. 교착은 비디오 프레임이 디코딩될 때까지 버퍼에 유지되고, 동시에 다른 프레임들이 수신되고 있는 시나리오를 포함할 수 있다. 이는 버퍼가 가득 차서 비디오 스트림에 병목 현상이 발생할 수 있는 상황들로 이어질 수 있다. 이 교착은 컨텍스트-적응형 이진 산술 코딩(context-adaptive binary arithmetic coding)(cabac) 엔진(아래에서 설명되는 압축 프로세스의 엔트로피 부분의 일부)이 프레임에 대해 생성된 모든 TU에 대한 계수 디코딩을 완료할 것을 요구하지 않고서, 그리고 TU 신택스에 후속하는 디코딩 신택스를 요구하지 않고서, 주어진 비디오 프레임에 연관된 일부 TU의 역변환을 수행함으로써 완화되거나 제거될 수 있다. 즉, 여기에 설명된 시스템들 및 방법들은 일부 상황들에서 cabac 엔진이 이미 디코딩된 TU들에 대한 역변환 프로세스와 병렬로 임의의 잔여 TU 계수들을 디코딩하는 것을 허용함으로써 디코딩 프로세스의 성능을 증가시킨다.
전형적인 비디오 인코딩 및 디코딩 시스템은 소스 비디오를 수신하고 수신 디바이스로의 송신을 위해 소스 비디오의 비디오 데이터를 압축(예를 들어, 인코딩)하도록 구성된 송신 디바이스를 포함할 수 있다. 이러한 압축된 데이터는 "비트스트림"으로서 수신 디바이스에 전송될 수 있다. 수신 디바이스는 송신 디바이스로부터 수신된 압축된 비디오 데이터를 디코딩하도록 구성될 수 있다. 예를 들어, 송신 디바이스는 비디오 콘텐츠의 소스일 수 있고, 수신 디바이스는 시청자가 비디오 콘텐츠를 보고 있는 디바이스일 수 있다(및/또는 수신 디바이스는 비디오를 디코딩하고, 시청자가 비디오 콘텐츠를 보고 있는 디바이스에 디코딩된 비디오를 제공할 수 있는 제3 디바이스일 수 있음). 소스에서의 비디오 콘텐츠는 수신 디바이스에서의 더 빠른 전송 및 프로세싱을 제공하기 위해 많은 수의 픽셀을 포함하는 비디오 프레임이 더 적은 양의 데이터로 압축되는 것을 허용함으로써 비디오 품질 및 처리량을 최대화하도록 압축될 수 있다.
하이 레벨에서, 인코딩 프로세스는 적어도 이하의 동작들을 포함할 수 있다. 먼저, 비디오 프레임은 다수의 픽셀 형태로 수신될 수 있다. 비디오 프레임은 상이한 코딩 트리 유닛들(CTU)로 분리될 수 있고, 각각은 하나 이상의 코딩 트리 블록(CTB)으로 분리되고, 각각의 CTB는 하나 이상의 코딩 유닛(CU)으로 분리될 수 있으며, 이는 프레임 내에 포함된 픽셀 그룹들, 및/또는 루마 및 크로마 정보와 같은 픽셀들에 연관된 정보를 포함할 수 있다. CU는 픽셀 블록인 하나 이상의 TU로 분리될 수 있다. TU에 대해 픽셀들의 예측된 블록이 생성될 수 있고, 이는 현재 프레임에 연관된 픽셀 데이터를, 비디오 콘텐츠 내의 이전에 코딩된 프레임을 나타낼 수 있는(예를 들어, 인터-코딩), 및/또는 동일한 프레임의 이전에 코딩된 픽셀 데이터를 나타낼 수 있는(예를 들어, 인트라 코딩) 참조 이미지와 비교하는 것을 수반할 수 있다. 다음으로, 예측된 블록은 원래 이미지 데이터의 현재 블록으로부터 (예를 들어, 감산기에서) 감산될 수 있고, 결과적인 잔차 픽셀 값들(예를 들어, 예측된 블록과 원래 이미지 데이터 사이의 차이를 나타냄)은 TU에 포함된 잔차 픽셀 데이터가 변환 계수들의 도메인으로 변환되는 순방향 변환 스테이지에 제공될 수 있다. 잔차 픽셀 데이터를 변환 계수들의 도메인으로 변환하는 데 사용될 수 있는 복수의 변환 유형이 있으며, 변환 유형들 중 일부가 여기에서 논의된다. 변환의 적용 후, 변환된 TU는 양자화기 스테이지에 제공된다. 순방향 변환 및 양자화기 스테이지는 예를 들어 이산 코사인 변환(discrete cosine transform)(DCT)을 사용하여, 분할된 잔차 데이터를 변환 계수들로 변환할 수 있다. 다음으로, 시스템에 의해 설정된 양자화 파라미터(quantization parameter)(QP)를 사용하여, 변환 및 양자화기는 계수들에 대해 손실 리샘플링 또는 양자화를 사용한다. 프레임들 및 잔차들은 지원 또는 컨텍스트 데이터 블록 크기 등과 함께, 코더에 의해 엔트로피 인코딩되어 수신 디바이스에 전송될 수 있다.
여기에 설명된 시스템들 및 방법들은 VVC(Versatile Video Coding) 비디오 압축 표준에 적용가능할 수 있다(그러나, 시스템들 및 방법들은 다른 표준들에도 적용가능할 수 있음). VVC 표준은 다수의 상이한 변환 유형에 연관될 수 있다. 이러한 상이한 변환들은 픽셀 데이터가 프로세스의 (예를 들어, 프로세스의 순방향 변환 스테이지에서) 인코딩 측에서 다른 도메인으로 변환될 수 있게 하는 상이한 메커니즘들을 제공할 수 있다. 이러한 변환의 두 가지 예시적인 옵션은 다른 옵션들 중에서도 저주파 비분리 변환(LFNST) 및 다중 변환 선택(MTS)을 포함할 수 있다. 즉, LFNST 및 MTS는 초기 픽셀 데이터가 인코딩 프로세스의 일부로서 변환될 때 발생하는 주파수 데이터를 지시할 수 있는 두 가지 상이한 변환 유형을 제공할 수 있다. 어느 변환이 사용되는지에 따라, 결과적인 TU 잔차 계수들이 상이할 수 있다. 이를 감안할 때, TU 잔차 계수들을 수신 디바이스에서 픽셀 도메인(예를 들어, 컬러 도메인)으로 다시 변환하기 위해(예를 들어, 재구성된 잔차 픽셀 값들을 생성), 수신 디바이스가 재구성된 잔차 픽셀 값을 생성하기 위해 TU 잔차 계수에 대한 역변환을 수행하기 전에 어느 변환 유형이 사용되었는지를 알 필요가 있을 수 있다.
수신 디바이스에서, 압축된 비디오 프레임들이 수신되고 디코딩될 수 있고, 그에 의해 비디오 콘텐츠가 시청자에게 제시될 수 있다. 일부 경우들에서, 전형적인 디코딩 프로세스는 적어도 이하의 동작들을 수반할 수 있다. 먼저, 수신 디바이스는 비디오 스트림의 특정 프레임에 관련된 압축된 데이터를 수신할 수 있다. 압축된 데이터는 하나 이상의 CU로 디코딩될 수 있다. CU 디코딩이 수행되고 나면, TU 잔차 계수들은 디코딩된 CU(들)로부터 디코딩될 수 있다. 모든 TU 잔차 계수들이 디코딩되고 나면, 다음으로, 임의의 LFNST 및 MTS 데이터가 디코딩될 수 있다. VVC 표준은 비트스트림의 개별 비디오 프레임에 LFNST 또는 MTS가 사용되었는지를 수신(예를 들어, 디코딩) 디바이스에 통신하기 위한 기술을 제공한다. 예를 들어, 하나 이상의 플래그(예를 들어, 인덱스)가 비트스트림을 통해 디코더에 전송될 수 있다. 플래그는 특정 변환 유형이 사용되었는지(예를 들어, 존재하는지)를 나타내는 비트를 포함할 수 있다. 예를 들어, LFNST가 인코더 측에서 사용된 경우, LFNST에 대한 플래그는 "1" 값으로 설정될 수 있다. LFNST 및 MTS 데이터가 디코딩되고 나면, 프레임에 대한 원래의 픽셀 정보를 생성하기 위해, 수신된 비디오 프레임 데이터의 역변환이 수행될 수 있다. LFNST 또는 MTS 인덱스를 식별하기 위해 데이터를 실제로 디코딩하기 전에 LFNST 또는 MTS가 사용되었는지를 예측함으로써, 역변환 프로세스가 더 빨리 발생할 수 있어, 디코딩 효율을 향상시킬 수 있다.
전형적으로, 인코딩 프로세스에 의해 어느 변환 유형이 사용되었는지를 수신 디바이스에서 결정하기 위해, (예를 들어, 프레임의 모든 TU의) 모든 TU 잔차 계수가 먼저 디코딩될 필요가 있고, 다음으로, 역변환을 수행하기 전에 추가 신택스가 디코딩될 필요가 있을 수 있다(예를 들어, 인코더에 의해 어느 변환이 사용되었는지를 나타내는 추가 신택스). 모든 TU 잔차 계수가 디코딩된 후, 변환 데이터를 포함하는 추가 신택스 데이터는 어느 변환 유형(들)이 사용되었는지를 해독하기 위해 디코딩될 수 있다. 이것이 달성되면, 미가공 픽셀 데이터를 획득하기 위해 TU 잔차 계수들에 대해 역변환이 수행될 수 있다. LFNST 및 MST 데이터를 디코딩하기 전에 모든 TU 잔차 계수가 디코딩될 때까지 기다리는 이러한 프로세스는 디코딩 프로세스에 병목 현상을 일으킬 수 있다는 점에서 문제가 될 수 있다. 모든 TU 잔차 계수가 디코딩될 때까지 기다리는 것의 다른 단점은 적어도 하나의 프레임이 디코딩되는 동안 버퍼에 유지되고, 동시에 버퍼에서 다른 프레임들이 수신되고 있는 비트스트림 버퍼 교착 시나리오를 포함할 수 있다. 이는 버퍼가 가득 차게 되는 상황을 초래할 수 있다.
비트스트림 버퍼에서 이러한 유형의 교착을 완화하거나 제거하기 위해, 본 명세서에 설명된 시스템들 및 방법들은 모든 TU 잔차 계수가 디코더 측에서 디코딩되기 전에, 인코더 측에서 어느 변환 유형이 사용되었는지를 예측하는 것을 수반할 수 있다. 이것은 TU들 중 임의의 것에 대해 역변환 수행을 시작하기 위해 모든 TU 및 추가 신택스가 디코딩되기를 기다리는 것보다, 다른 TU들이 디코딩되는 동안 일부 TU들에 대해 역변환이 수행되는 것을 허용할 수 있다.
일부 실시예들에서, 예측은 또한 디코딩 프로세스의 상이한 부분들에서 수행될 수 있는 복수의 예측 스테이지를 포함할 수 있다. 예를 들어, 제1 예측 스테이지는 CU 디코딩 스테이지에서 발생할 수 있고(예를 들어, TU의 역변환은 CU의 모든 TU의 변환 계수들을 디코딩하기 전에 시작할 수 있음), 제2 예측 스테이지는 TU 잔차 계수 디코딩 스테이지 동안 발생할 수 있다. 즉, 제1 예측 스테이지는 CU의 각각의 TU의 변환 계수들이 디코딩되기 전에 발생할 수 있고, 제2 예측 스테이지는 CU의 각각의 TU의 변환 계수들의 디코딩 동안 및/또는 디코딩 이후에 발생할 수 있다. 이러한 방식으로, 예측은 변환 계수들을 디코딩할 필요 없이 역변환에 사용할 변환 계수들을 결정하는 것을 허용할 수 있다. CU 디코딩 스테이지에서의 예측은 TU 디코딩 프로세스가 시작되기 전에 사용된 변환의 조기 식별을 허용할 수 있다. 그러나, 시스템이 CU 디코딩 스테이지 동안 변환 유형을 식별하기 위한 필수 조건들을 식별할 수 없는 경우, 제2 예측 스테이지는 제1 예측 스테이지에 대한 백업 역할을 할 수 있다. 즉, 제2 예측 스테이지는 TU 계수 디코딩 스테이지에서 발생하지만, 제2 예측 스테이지는 모든 TU가 디코딩되기 전에 일부 TU에 대한 역변환 프로세스가 수행될 수 있다는 이점을 여전히 제공한다. 이러한 복수의 예측 스테이지의 도시 및 디코딩 프로세스에서 그들이 발생할 수 있는 위치가 도 3b에 제공된다.
즉, 현재 CU에 대한 제1 TU 프로세스(예를 들어, TU의 디코딩)의 시작 전에 TU당 한 번씩 제1 스테이지 예측 조건들이 검사되고, CU 내부의 각각의 TU를 디코딩하는 프로세스 동안 제2 스테이지 예측 조건들이 검사된다. 제1 예측 스테이지 또는 제2 예측 스테이지의 조건들이 검출된 직후, 바이패스 신호가 역변환 유닛에 송신되어 LNFST 및 MTS idx(예를 들어, 플래그)가 0인 프로세싱을 시작하고, 그에 의해 나머지 TU 계수들에 대한 역변환 유닛을 개시하기 전의 대기 시간을 제거한다.
일부 실시예들에서, TU가 제1 예측 스테이지 동안 LFNST를 사용하여 변환을 겪었음을 결정하기 위한 필수 조건들은 다음을 포함할 수 있다. 첫째, treeType이 DUAL_TREE_CHROMA가 아니다. 둘째, IntraMipFlag[x0][y0]은 TRUE이다. 셋째, lfnstWidth 또는 lfnstHeight가 16보다 작다. 일부 경우들에서, 이러한 결정을 내리기 위해, 복수의 조건 또는 모든 조건이 충족되어야 할 수 있다. TU가 LFNST 및 MTS를 사용하여(또는 둘 중 어느 것도 사용하지 않고서) 변환을 겪었음을 결정하기 위해 일부 또는 모든 조건이 충족되어야 할 수 있다. 일부 경우들에서, 모든 조건이 충족되어야 할 수 있다. 즉, 조건들 중 하나가 충족되지만 제2 조건이 충족되지 않는 경우, LFNST 또는 MTS가 사용되었는지를 결정하기 위한 정보가 충분하지 않을 수 있다. 이러한 조건들에 대한 변수들은 VVC 코딩 표준에 의해 정의되며 본 명세서에 더 설명된다.
일부 실시예들에서, TU가 제1 예측 스테이지 동안 MTS를 사용하여 변환을 겪었음을 결정하기 위한 필수 조건들은 다음을 포함할 수 있다. 일부 실시예들에서, MTS 변환이 사용되었음을 결정하기 위한 조건들은 다음 중 일부 또는 전부를 포함할 수 있다. 첫째, treeType이 DUAL_TREE_CHROMA이다. 둘째, cbWidth 또는 cbHeight가 32보다 크다. 셋째, IntraSubPartitionsSplitType이 ISP_NO_SPLIT가 아니다. 넷째, cu_sbt_flag는 TRUE이다. 위에서 언급된 변수들과 관련하여, 1과 동일한 cu_sbt_flag는 현재 코딩 유닛에 대해 서브블록 변환이 사용됨을 지정한다. 0과 동일한 cu_sbt_flag는 현재 코딩 유닛에 대해 서브블록 변환이 사용되지 않음을 지정한다. TU가 LFNST 및 MTS를 사용하여(또는 둘 중 어느 것도 사용하지 않고서) 변환을 겪었음을 결정하기 위해 일부 또는 모든 조건이 충족되어야 할 수 있다. 일부 경우들에서, 모든 조건이 충족되어야 할 수 있다. 즉, 조건들 중 하나가 충족되지만 제2 조건이 충족되지 않는 경우, LFNST 또는 MTS가 사용되었는지를 결정하기 위한 정보가 충분하지 않을 수 있다. 이러한 조건들에 대한 변수들은 VVC 코딩 표준에 의해 정의되며 본 명세서에 더 설명된다.
일부 실시예들에서, 제2 예측 스테이지 동안 TU가 LFNST 및 MTS를 사용하여(또는 둘 중 어느 것도 사용하지 않고서) 변환을 겪었음을 결정하기 위한 필수 조건들은 적어도 다음을 수반할 수 있다. 첫째, LFNST는 인트라 전용 모드에서만 적용될 수 있다. 둘째, 코딩 블록(CB) 크기는 64x64 이하이어야 한다. 셋째, 최대 6개의 TU(예를 들어, 4개의 루마 및 2개의 크로마)가 있어야 하고, 각각의 TU는 16개 이하의 계수를 가져야 한다. 마지막으로, TU의 제1 플래그("tu_coded_flag")는 "1"의 값으로 설정되어야 하고, TU의 제2 플래그("transform_skip_flag")는 "0"의 값으로 설정되어야 한다. 이러한 모든 조건이 충족되는 경우, 디코딩되는 TU에 대해 LFNST가 사용되었다고 결정될 수 있다. TU가 LFNST 및 MTS를 사용하여(또는 둘 중 어느 것도 사용하지 않고서) 변환을 겪었음을 결정하기 위해 일부 또는 모든 조건이 충족되어야 할 수 있다. 일부 경우들에서, 모든 조건이 충족되어야 할 수 있다. 즉, 조건들 중 하나가 충족되지만 제2 조건이 충족되지 않는 경우, LFNST 또는 MTS가 사용되었는지를 결정하기 위한 정보가 충분하지 않을 수 있다. 마찬가지로, MTS가 사용되었음을 결정하기 위해서는 다음 조건들이 충족되어야 할 수 있다. 첫째, CB 크기는 32x32 이하이어야 한다. 둘째, 최대 3개의 TU(1개의 루마 및 2개의 크로마)가 있어야 한다. 셋째, TU당 최대 16x16 계수가 있을 수 있으며, 총 계수는 최대 768개이다. 이러한 조건들에 대한 변수들은 VVC 코딩 표준에 의해 정의되며 본 명세서에 더 설명된다.
제1 및/또는 제2 예측 스테이지들에 수반되는 조건들 중 임의의 것에 관한 추가 세부사항들은 도 3b와 관련하여 추가로 상세히 설명될 수 있다.
도 1은 본 개시내용의 일부 예시적인 실시예들에 따른 인코딩 및 디코딩 디바이스의 컴포넌트들을 도시하는 예시적인 시스템(100)이다.
도 1을 참조하면, 시스템(100)은 인코더 및/또는 디코더 컴포넌트들을 갖는 디바이스들(102)을 포함할 수 있다. 보여진 바와 같이, 디바이스들(102)은 비디오 및/또는 오디오 콘텐츠를 제공하는 콘텐츠 소스(103)를 포함할 수 있다(예를 들어, 카메라 또는 다른 이미지 캡처 디바이스, 저장된 이미지/비디오 등). 콘텐츠 소스(103)는 인코딩을 위해 콘텐츠의 프레임들을 준비할 수 있는 파티셔너(partitioner)(104)에 미디어(예를 들어, 비디오 및/또는 오디오)를 제공할 수 있다. 감산기(106)는 본 명세서에서 추가로 설명되는 바와 같이 잔차를 생성할 수 있다. 변환 및 양자화기(108)는 코더(110)(예를 들어, 엔트로피 코더)에 의한 인코딩을 용이하게 하기 위해 변환 유닛들을 생성 및 양자화할 수 있다. 변환 및 양자화된 데이터는 역변환 및 양자화기(112)에 의해 역변환 및 역양자화될 수 있다. 가산기(114)는 역변환 및 역양자화된 데이터를 예측 유닛(116)에 의해 생성된 예측 블록과 비교하여, 재구성된 프레임들을 생성할 수 있다. 필터(118)(예를 들어, 인루프 필터)는 가산기(114)로부터의 재구성된 프레임들을 수정할 수 있고, 예측 유닛(116)에 의한 사용을 위해 재구성된 프레임들을 이미지 버퍼(120)에 저장할 수 있다. 제어(121)는 예를 들어, 예측 유닛(116)으로부터의 데이터에 적어도 부분적으로 기초하여, 적어도 양자화 파라미터(QP)의 설정을 포함하지만 비트레이트, 레이트 왜곡 또는 장면 특성들, 예측 및/또는 변환 파티션 또는 블록 크기들, 이용가능한 예측 모드 유형들 및 최상의 모드 선택 파라미터들을 설정하는 것을 또한 포함할 수 있는 다수의 인코딩 양태(예를 들어, 파라미터)을 관리할 수 있다. 인코딩 양태들을 이용하여, 변환 및 양자화기(108)는 전송될 수 있는 코딩된 데이터(122)(예를 들어, 인코딩된 비트스트림)를 생성할 수 있는 코더(110)에 의한 인코딩을 용이하게 하기 위해 변환 유닛들을 생성 및 양자화할 수 있다.
여전히 도 1을 참조하면, 디바이스들(102)은 코딩된 데이터(예를 들어, 코딩된 데이터(122))를 비트스트림으로 수신할 수 있고, 디코더(130)는 코딩된 데이터를 디코딩하여, 양자화된 잔차 계수들 및 컨텍스트 데이터를 추출할 수 있다. 역변환 및 양자화기(132)는 양자화된 잔차 계수들 및 컨텍스트 데이터에 기초하여 픽셀 데이터를 재구성할 수 있다. 가산기(134)는 예측 유닛(136)에 의해 생성된 예측된 블록에 잔차 픽셀 데이터를 가산할 수 있다. 필터(138)는 가산기(134)로부터의 결과 데이터를 필터링할 수 있다. 필터링된 데이터는 미디어 출력(140)에 의해 출력될 수 있고, 또한 예측 유닛(136)에 의한 사용을 위해 이미지 버퍼(142) 내에 재구성된 프레임들로서 저장될 수 있다.
도 1을 참조하면, 시스템(100)은 본 명세서에 개시된 인트라 예측의 방법들을 수행하고, 인트라 블록 복사를 포함하여 본 명세서에 설명된 구현들 중 적어도 하나 이상을 수행하도록 배열된다. 다양한 구현들에서, 시스템(100)은 하나 이상의 표준에 따라 비디오 코딩을 수행하고 및/또는 비디오 코덱을 구현하도록 구성될 수 있다. 또한, 다양한 형태들에서, 비디오 코딩 시스템(100)은 이미지 프로세서, 비디오 프로세서, 및/또는 미디어 프로세서의 일부로서 구현될 수 있고, 인터 예측, 인트라 예측, 예측 코딩 및 잔차 예측을 수행한다. 다양한 구현들에서, 시스템(100)은 예를 들어 H.264(고급 비디오 코딩(Advanced Video Coding) 또는 AVC), VP8, H.265(고효율 비디오 코딩(High Efficiency Video Coding) 또는 HEVC) 및 그것의 SCC 확장들, VP9, 얼라이언스 오픈 미디어 버전 1(Alliance Open Media Version)(AV1), H.266(다목적 비디오 코딩(Versatile Video Coding) 또는 VVC), HTTP를 통한 동적 적응형 스트리밍(Dynamic Adaptive Streaming over HTTP)(DASH) 등과 같은 하나 이상의 표준 또는 사양에 따라 비디오 압축 및 압축해제를 수행하고 비디오 코덱들을 구현할 수 있다. 시스템(100) 및/또는 다른 시스템들, 방식들 또는 프로세스들이 본 명세서에서 설명될 수 있지만, 본 개시내용은 본 명세서에서 언급된 경우의 IBC 예측 모드 동작들을 제외하고는 임의의 특정 비디오 코딩 표준 또는 그것의 사양들 또는 확장들로 항상 제한되어야 하는 것은 아니다.
본 명세서에서 사용될 때, "코더"라는 용어는 인코더 및/또는 디코더를 지칭할 수 있다. 마찬가지로, 본 명세서에서 사용될 때, "코딩"이라는 용어는 인코더를 통한 인코딩 및/또는 디코더를 통한 디코딩을 지칭할 수 있다. 코더, 인코더 또는 디코더는 인코더 및 디코더 둘 다의 컴포넌트들을 가질 수 있다. 인코더는 아래에 설명되는 디코더 루프를 가질 수 있다.
예를 들어, 시스템(100)은 비디오 프레임들의 시퀀스에 관련된 데이터 형태의 현재 비디오 정보가 압축되도록 수신될 수 있는 인코더일 수 있다. 하나의 형태에 의해, (예를 들어, 콘텐츠 소스(103)로부터의) 비디오 시퀀스는 예를 들어 워드 프로세서, 파워 포인트 또는 스프레드 시트와 같은 비즈니스 애플리케이션, 컴퓨터, 비디오 게임, 가상 현실 이미지 등으로부터의 또는 이를 위한 합성 스크린 콘텐츠의 입력 프레임들로 형성된다. 다른 형태들에 의해, 이미지들은 합성 스크린 콘텐츠 및 자연 카메라 캡처 이미지들의 조합으로 형성될 수 있다. 또 다른 형태에 의해, 비디오 시퀀스는 오직 자연 카메라 캡처 비디오일 수 있다. 파티셔너(104)는 각각의 프레임을 더 관리가능한 더 작은 유닛들로 구획화한 다음, 프레임들을 비교하여 예측을 계산할 수 있다. 원래의 블록과 예측 간에 차이 또는 잔차가 결정되는 경우, 그 결과적인 잔차가 변환 및 양자화된 다음, 엔트로피 인코딩되어, 재구성된 프레임들과 함께 비트스트림에서 디코더들 또는 저장소에 전송된다. 이러한 동작들을 수행하기 위해, 시스템(100)은 콘텐츠 소스(103)로부터 입력 프레임을 수신할 수 있다. 입력 프레임들은 인코딩을 위해 충분히 사전-프로세싱된 프레임들일 수 있다.
시스템(100)은 또한 적어도 양자화 파라미터(QP)의 설정을 포함하지만 몇몇 예를 들자면 비트레이트, 레이트 왜곡 또는 장면 특성들, 예측 및/또는 변환 파티션 또는 블록 크기들, 이용가능한 예측 모드 유형들 및 최상의 모드 선택 파라미터들을 설정하는 것을 또한 포함할 수 있는 다수의 인코딩 양태를 관리할 수 있다.
변환 및 양자화기(108)의 출력은 디코더(130)와 같은 디코더에서 생성될 동일한 참조 또는 재구성된 블록들, 프레임들, 또는 다른 유닛들을 생성하기 위해 역변환 및 양자화기(112)에 제공될 수 있다. 따라서, 예측 유닛(116)은 프레임들을 재구성하기 위해, 역변환 및 양자화기(112), 가산기(114), 및 필터(118)를 사용할 수 있다.
예측 유닛(116)은 움직임 추정 및 움직임 보상을 포함하는 인터 예측, 본 명세서의 설명에 따른 인트라 예측, 및/또는 결합된 인터-인트라 예측을 수행할 수 있다. 예측 유닛(116)은 전형적으로 비트-비용 및 다른 인자들에 기초하여, 특정 블록에 대한 최상의 예측 모드(인트라 모드들을 포함함)를 선택할 수 있다. 예측 유닛(116)은 각각의 복수의 그러한 모드가 이용가능할 수 있을 때 인트라 예측 및/또는 인터 예측 모드를 선택할 수 있다. 예측 블록 형태의 예측 유닛(116)의 예측 출력은 잔차를 생성하기 위해 감산기(106)에 제공될 수 있고, 또한 디코딩 루프에서, 역변환으로부터 재구성된 잔차에 예측을 가산하여 프레임을 재구성하기 위해 가산기(114)에 제공될 수 있다.
파티셔너(104) 또는 도시되지 않은 다른 초기 유닛들은 인코딩을 위해 프레임들을 배치할 수 있고, I-프레임, B-프레임, P-프레임 등과 같이, 프레임들에 분류들을 할당할 수 있으며, 여기서 I-프레임들은 인트라 예측된다. 그렇지 않으면, 프레임들은 슬라이스들(예를 들어, I-슬라이스)로 분할될 수 있고, 여기서 각각의 슬라이스는 상이하게 예측될 수 있다. 따라서, 전체 I-프레임 또는 I-슬라이스의 HEVC 또는 AV1 코딩을 위해, 공간 또는 인트라 예측이 사용되며, 한 형태에서는 프레임 자체의 데이터로부터만 사용된다.
다양한 구현들에서, 예측 유닛(116)은 인트라 블록 복사(IBC) 예측 모드를 수행할 수 있고, 비-IBC 모드는 이웃 수평, 대각 또는 직접 코딩(DC) 예측 모드, 팔레트 모드, 방향 또는 각도 모드, 및 임의의 다른 이용가능한 인트라 예측 모드와 같은, 임의의 다른 이용가능한 인트라 예측 모드를 운영한다. HEVC 또는 VP9와 같은 다른 비디오 코딩 표준들은 상이한 서브블록 차원들을 가질 수 있지만, 여전히 본 명세서에 개시된 IBC 검색을 사용할 수 있다. 그러나, 전술한 것은 예시적인 파티션 크기들 및 형상들일 뿐이며, 본 개시내용은 그러한 제한이 언급되거나, 언급된 임의적인 최대 효율 크기와 함께 문맥이 그러한 제한을 시사하지 않는 한, 임의의 특정 파티션 및 파티션 형상들 및/또는 크기들로 제한되지 않는다는 점에 유의해야 한다. 복수의 대안적 파티션이 아래에 설명되는 바와 같이 동일한 이미지 영역에 대한 예측 후보들로서 제공될 수 있다는 점에 유의해야 한다.
예측 유닛(116)은 이전에 디코딩된 참조 블록들을 선택할 수 있다. 그 다음, 참조 블록들 중 임의의 것이 재구성 중인 현재 블록과 매칭하는지를 결정하기 위해 비교가 수행될 수 있다. 이는 해시 매칭, SAD 검색, 또는 다른 이미지 데이터 비교 등을 포함할 수 있다. 참조 블록과의 매치가 발견되고 나면, 예측 유닛(116)은 예측 모드를 선택하기 위해 하나 이상의 매칭하는 참조 블록의 이미지 데이터를 사용할 수 있다. 한 형태에 의해, 참조 블록의 이전에 재구성된 이미지 데이터가 예측으로서 제공되지만, 대안적으로 참조 블록의 원래 픽셀 이미지 데이터가 예측으로서 대신 제공될 수 있다. 블록들을 매칭하는 데 사용된 이미지 데이터의 유형에 관계없이 어느 선택이든 사용될 수 있다.
다음으로, 예측된 블록은 감산기(106)에서 원래 이미지 데이터의 현재 블록으로부터 감산될 수 있고, 결과적인 잔차는 하나 이상의 변환 블록(TU)으로 구획화될 수 있고, 그에 의해, 변환 및 양자화기(108)는 예를 들어 이산 코사인 변환(DCT)을 사용하여, 분할된 잔차 데이터를 변환 계수들로 변환할 수 있게 된다. 다음으로, 시스템(100)에 의해 설정된 양자화 파라미터(QP)를 사용하여, 변환 및 양자화기(108)는 계수들에 대한 손실 리샘플링 또는 양자화를 사용한다. 프레임들 및 잔차들은 지원 또는 컨텍스트 데이터 블록 크기 및 인트라 변위 벡터들 등과 함께 코더(110)에 의해 엔트로피 인코딩되어 디코더들에 전송될 수 있다.
하나 이상의 실시예에서, 시스템(100)은 디코더를 가질 수 있거나 디코더일 수 있고, 코딩된 비디오 데이터를 비트스트림의 형태로 수신할 수 있으며, 그것은 이미지 데이터(크로마 및 루마 픽셀 값들)은 물론, 예를 들어 양자화된 변환 계수들의 형태의 잔차들 및 적어도 참조 블록들의 크기를 포함하는 참조 블록들의 아이덴티티를 포함하는 컨텍스트 데이터를 갖는다. 컨텍스트는 또한 개별 블록들, 슬라이스들과 같은 다른 파티션들, 인터 예측 움직임 벡터들, 파티션들, 양자화 파라미터들, 필터 정보 등에 대한 예측 모드들을 포함할 수 있다. 시스템(100)은 엔트로피 디코더(130)로 비트스트림을 프로세싱하여, 양자화된 잔차 계수들은 물론, 컨텍스트 데이터를 추출할 수 있다. 다음으로, 시스템(100)은 역변환 및 양자화기(132)를 사용하여 잔차 픽셀 데이터를 재구성할 수 있다.
다음으로, 시스템(100)은 (도시되지 않은 어셈블러들과 함께) 가산기(134)를 사용하여, 예측된 블록에 잔차를 가산할 수 있다. 시스템(100)은 또한 비트스트림 의 신택스에 나타난 코딩 모드, 및 예측 유닛(136)을 포함하는 제1 경로 또는 필터(138)를 포함하는 제2 경로에 의존하여 사용되는 디코딩 기술을 사용하여 결과 데이터를 디코딩할 수 있다. 예측 유닛(136)은 참조 블록 크기들, 및 비트스트림으로부터 추출되고 인코더에서 이전에 확립된 인트라 변위 또는 움직임 벡터들을 사용하여 인트라 예측을 수행한다. 예측 유닛(136)은 예측된 블록을 재구성하기 위해 비트스트림으로부터의 인터 예측 움직임 벡터들뿐만 아니라 재구성된 프레임들을 이용할 수 있다. 예측 유닛(136)은 각각의 블록에 대한 올바른 예측 모드를 설정할 수 있고, 여기서 예측 모드는 압축된 비트스트림으로부터 추출 및 압축해제될 수 있다.
하나 이상의 실시예에서, 코딩된 데이터(122)는 비디오 및 오디오 데이터 둘 다를 포함할 수 있다. 이러한 방식으로, 시스템(100)은 오디오 및 비디오 둘 다를 인코딩 및 디코딩할 수 있다.
도 2a 내지 도 2b는 본 개시내용의 하나 이상의 실시예에 따른 예시적인 흐름도들을 도시한다. 도 2a 및 도 2b는 본 명세서에 설명된 시스템들 및 방법들에 의해 제공되는 이점들의 하이 레벨 도시를 제공한다. 특히, 도 2a는 디코더 측에서 취해질 수 있는 제1 접근법을 도시하고, 도 2b는 디코더 측에서 취해질 수 있는 제2 접근법을 도시하며, 여기서 제2 접근법은 본 명세서에 설명된 개선된 접근법을 나타낼 수 있다.
도 2a로 시작하면, 흐름도(200)는 (예를 들어, 동작(202)에 보여진 바와 같은) 역변환이 주어진 CU에 대해 수행되기 위해, CU는 물론, CU의 모든 TU, 및 TU 데이터에 후속하는 추가 신택스(예를 들어, TU에 대한 변환 계수들)가 (예를 들어, 동작(204)에 보여진 바와 같이) CU의 TU들에 대해 역변환이 수행되기 전에 디코딩될 필요가 있을 수 있음을 도시할 수 있다. 모든 TU가 디코딩되고 나면, CU 내의 개별 TU들에 대해 어느 변환이 사용되었는지를 결정하기 위해, 해당 TU들에 연관된 변환 파라미터들(예를 들어, H.266 표준에 정의된 lfnst_idx 및 mts_idx)과 같은 추가 신택스가 디코딩될 수 있다. 개별 TU들에 대해 어느 변환 또는 변환들이 사용되었는지가 결정되고 나면, TU들에 대해 역변환이 수행될 수 있다. 이러한 방식으로, 역변환의 수행은 역변환 프로세스에서 사용할 변환 계수들 및 변환들을 식별하기 위해 CU 데이터, TU 데이터 및 추가 신택스를 디코딩하는 것을 요구할 수 있다. 그러나, 이러한 접근법은 동작(202)에서 디코딩되고 있는 비트스트림 데이터를 보유하는 버퍼 내의 "교착" 시나리오들에서 단점들을 가질 수 있다. 교착은 수신된 비디오 프레임들이 보유되는 버퍼에서 비트스트림의 더 많은 인입 비디오 프레임이 저장되는 것을 허용할 만큼 충분히 빠르게 디코딩되지 않는 시나리오를 포함할 수 있다. 이는 버퍼가 가득 차서 비트스트림의 추가 프레임들을 저장할 수 없는 상황들로 이어질 수 있고, 이는 비디오 스트림에 병목 현상을 발생시킬 수 있다.
도 2b를 보면, 흐름도(250)는 역변환을 수행하기 전에 CU의 모든 TU 및 추가 신택스가 디코딩되기를 기다리는 것이 아니라(즉, lfnst_idx 및 mts_idx의 값들이 결정되기 전에), CU의 나머지 TU들이 디코딩되기 전에 CU의 TU들 중 일부에 대해 역변환이 수행될 수 있는 제2 접근법을 나타낼 수 있다. 즉, 디코더 측에서(도면에 도시되어 있음) CU의 모든 TU 및 추가 신택스를 완전히 디코딩할 필요 없이, 주어진 CU 또는 CU 내에 포함된 TU들에 대해 인코더 측에서 사용된 변환 유형을 예측하는 것이 가능할 수 있다. 일부 경우들에서, 예측은 CU 디코딩을 수행한 후 CU 내의 임의의 개별 TU가 디코딩되기 전에 수행될 수 있다(본 명세서에 설명된 바와 같은 "제1 예측 스테이지"). 그러나, 제1 예측 스테이지 내의 CU 데이터가 변환 유형을 예측하기에 충분한 데이터를 갖지 않더라도, 도 2b에 도시된 바와 같이 각각의 개별 TU가 디코딩됨에 따라 또한 예측들이 수행될 수 있다("제2 예측 스테이지"). 이러한 방식으로, 제1 및 제2 예측 스테이지 둘 다는 TU들에 후속하는 신택스를 디코딩할 필요성을 피할 수 있고, 모든 TU의 신택스를 디코딩할 필요성을 피할 수 있다. 예를 들어, CU가 3개의 TU를 포함하는 경우, 제1 TU를 디코딩한 후, 제2 및 제3 TU를 디코딩하기 전에, 그리고 TU 신택스 이후의 후속 신택스를 디코딩하기 전에, 제1 TU에 대한 변환 유형이 예측되는 것이 가능할 수 있다. 이 경우, TU는 다른 2개의 TU가 디코딩되기 전에, 그리고 추가적인 포스트-TU 신택스가 디코딩되기 전에 역변환(동작(256))으로 진행할 수 있다. 이는 TU들의 더 빠른 프로세싱을 허용한다(일부 TU들은 다른 것들이 디코딩되고 있는 동안 역변환을 통해 진행할 수 있음). 도 2b에 도시된 이러한 접근법은 도 3b에 대하여 더 상세하게 설명된다.
도 3a 내지 도 3b는 본 개시내용의 하나 이상의 실시예에 따른 예시적인 흐름도들을 도시한다. 도 3a 내지 도 3b는 도 2a 내지 도 2b에 제시된 비교의 더 상세한 도시를 제공할 수 있다.
도 3a로 시작하면, 흐름도(300)는 디바이스(예를 들어, 또는 도 5의 그래픽 카드(565)와 같은 시스템)가 수신된 비디오 데이터의 CU-레벨 디코딩(예를 들어, LFNST 폭, LFNST 높이, LFNST 인에이블 플래그, 인트라 또는 인터 코딩 모드 등과 같은 CU 신택스의 디코딩)을 수행할 수 있는 동작(302)으로 시작한다. 구체적으로, 코딩된 비디오 프레임은 (예를 들어, 도 1의 파티셔너(104)를 사용하여) CU들로 인코딩하기 전에 구획화되었을 수 있고, 임의의 CU는 다수의 TU를 포함한다. 추가로, 동작(302)에 후속하여, 흐름도(300)는 디바이스가 디코딩된 CU의 임의의 TU들을 디코딩할 수 있는 동작(304)으로 진행한다. TU들은 인코딩될 변환 유닛(예를 들어, 잔차 계수들의 매트릭스)을 적용함으로써 인코더에 대해 생성될 수 있다. 디코딩 프로세스는 코딩된 데이터(예를 들어, 코딩 블록 크기, 변환 계수들의 수, 변환 스킵 플래그 등)를 디코딩하고, 양자화된 잔차 계수들 및 컨텍스트 데이터를 추출하는 것을 수반할 수 있다(예를 들어, 도 1에 도시된 디코더(130)와 유사함). 즉, 인코더 측에서, 엔트로피 코더(예를 들어, 코더(110)와 유사함)는 전송될 수 있는 코딩된 데이터(예를 들어, 인코딩된 비트스트림)를 생성할 수 있다. 데이터는 비트스트림을 통해 전송되는 데이터의 양을 최소화하기 위해, 전송을 위한 데이터를 압축하기 위해 인코더 측에서 코딩될 수 있다. 이를 감안할 때, 데이터가 비트스트림으로부터 수신되고 나면, 다음으로, 데이터가 디코딩될 필요가 있을 것이다.
동작(304)에 후속하여, 흐름도(300)는 디바이스가 디코딩된 TU들에 대한 변환 파라미터들(예를 들어, 동작(304)의 TU-레벨 신택스에 후속하는 추가 신택스)를 디코딩할 수 있는 동작(306)으로 진행하며, 변환 파라미터들은 개별 TU들에 대해 LFNST 또는 MTS 변환이 사용되었는지의 표시들을 포함한다. 이러한 방식으로, 동작(306)에서 변환 파라미터들을 디코딩하기 전에, 동작(304)에서 모든 TU가 디코딩될 수 있다. 이러한 디코딩 프로세스는 시스템의 인코더 측에서 사용된 변환 유형의 표시를 제공할 수 있는 데이터를 디코딩하는 것을 수반할 수 있다. 예를 들어, 본 명세서에 언급된 바와 같이, VVC 표준(H.266 또는 다른 것들)은 이용될 수 있는 여러 상이한 변환 유형들을 이용한다. 각각의 상이한 변환 유형은 상이한 결과 데이터를 생성할 수 있고, 따라서 디코더 측에서, 원래 데이터를 생성하도록 역변환을 수행하기 위해 어느 변환이 사용되었는지를 아는 것이 중요하다. 이러한 변환 유형들의 예들은 특히 LFNST 및 MTS를 포함한다. 이 데이터가 디코딩되고 나면, 시스템은 주어진 TU에 대해 어느 변환이 사용되었는지에 대한 지식을 얻을 수 있고, 그런 다음 해당 TU에 대해 역변환을 수행할 수 있다. 개별 TU들은 인코더 측에서 상이한 변환 유형들을 사용하여 변환되었을 수 있고, 따라서 다른 TU들에 대해 사용되는 변환 유형을 결정하기 위해 하나의 개별 TU에 대한 변환 파라미터들을 디코딩하는 것만으로 반드시 충분하지는 않다. 구체적으로, H.266 표준은 변수들 lfnst_idx 및 mts_idx를 정의한다. 특정 값들로 설정되는 이러한 변수들은 궁극적으로 어느 변환 유형이 사용되었는지(LFNST 또는 MTS 중 어느 하나가 사용되었는지)를 나타낼 수 있다.
동작(306)에 후속하여, 흐름도(300)는 디바이스가 디코딩된 TU들 모두에 대해 역변환을 수행하는 동작(308)으로 진행한다(예를 들어, 변환 및 잔차 계수들을 디코딩된 데이터에 적용함). 이 흐름도(300)를 통해 도시된 바와 같이, 이 접근법은 lfnst_idx 및 mts_idx 값들이 결정될 수 있기 전에 CU(또는 복수의 CU)에 연관된 모든 TU 및 추가 TU 변환 파라미터 신택스가 디코딩될 필요가 있다는 단점을 가질 수 있는데, 왜냐하면 역변환은 적용할 계수들 및 변환들을 식별하지 않고는 완료될 수 없기 때문이다. 이는 데이터에 대한 역변환이 수행될 수 있고 버퍼 내의 추가 데이터가 디코딩 프로세스를 시작할 수 있기 전에, 주어진 데이터 세트에 대해 전체 CU 및 TU 디코딩 프로세스가 완료될 필요가 있을 수 있기 때문에, 비트스트림 버퍼에 병목 현상을 야기할 수 있다. 도 3b에서 도시된 접근법은 도 3a에서 취해진 접근법의 이러한 문제들 중 일부를 해결하며, 이하에서 더 상세하게 설명된다.
도 3b를 보면, 흐름도(350)는 디바이스(예를 들어, 도 5의 그래픽 카드(565))가 도 3a의 동작(302)에 대하여 설명된 동일하거나 유사한 CU 디코딩 프로세스를 수행할 수 있는 동작(352)으로 시작한다. 동작(352)에 후속하여, 흐름도(350)는 조건(354)으로 진행한다. 조건(354)은 본 명세서에 설명된 바와 같은 제1 예측 스테이지를 포함할 수 있다. 즉, 일부 경우들에서, 디바이스가 CU 내의 TU들을 디코딩할 필요 없이 디코딩된 CU 내에 포함된 하나 이상의 TU에 대해 사용된 변환 유형을 예측하는 것이 가능할 수 있다.
일부 실시예들에서, 모든 TU를 디코딩할 필요 없이 디코딩된 CU 내에 포함된 하나 이상의 TU에 대해 사용되는 변환 유형을 예측하고, 다음으로 변환 파라미터 신택스를 디코딩하기 위해, 디코딩된 CU 데이터에 기초하여 하나 이상의 조건이 충족될 필요가 있을 수 있다. 조건들은 변환 유형에 기초하여 상이할 수 있다. 즉, LFNST에 대한 조건들은 임의의 다른 변환 유형에 대한 조건들과 상이할 수 있는 MTS에 대한 조건들과 상이할 수 있다. 예를 들어, LFNST는 이하의 일반적인 요건들 중 일부 또는 전부를 충족할 필요가 있을 수 있다. 첫째, LFNST는 인코더에 의해 사용되는 (인터 예측이 아닌) 인트라 예측 모드에서만 사용될 수 있다. 둘째, CU 크기는 64x64 이하이어야 한다. 셋째, CU는 최대 6개의 변환 유닛(예를 들어, 4개의 루마 및 2개의 크로마)을 가질 수 있다. 넷째, 각각의 변환 유닛은 16개 이하의 계수를 가져야 한다. 즉, CU는 최대 96개의 계수만을 저장할 수 있다. 마찬가지로, MTS는 이하의 일반적인 요건들 중 일부 또는 전부를 충족할 필요가 있을 수 있기 때문에 일반적으로 MTS가 사용된 것으로 예측될 수 있다. 루마 단독. 인트라 서브-파티션(intra sub-partitions)(ISP) 코딩 모드에서는 유효하지 않음. MTS는 서브블록 기반 시간 모드(subblock-based temporal mode)(SBT)에서 인에이블될 수 있다. 넷째, CU 크기는 32x32 이하이어야 한다. 다섯째, CU는 최대 3개의 변환 유닛(예를 들어, 1개의 루마 및 2개의 크로마)를 가질 수 있다. 여섯째, 각각의 TU는 최대 16x16 계수를 가질 수 있다. 즉, CU는 최대 768개의 계수만을 저장할 수 있다. LFNST 및 MTS의 사용을 예측하기 위해 이러한 조건들이 어떻게 사용될 수 있는지에 관한 더 구체적인 세부사항은 아래에 설명된다. 아래에 언급된 변수들의 일부 또는 전부는 ITU(International Telecommunication Union)에 의해 생성된 H.266 표준에 정의될 수 있다.
일부 실시예들에서, LFNST 변환이 사용되었음을 결정하기 위한 조건들은 다음 중 하나 이상을 포함할 수 있다. 첫째, treeType(예를 들어, 코딩 트리 노드를 구획화하기 위해 단일 또는 이중 트리가 사용되는지를 지정함)은 DUAL_TREE_CHROMA가 아니다. 둘째, IntraMipFlag[x0][y0](예를 들어, 매트릭스 인트라 예측 기반 이미지 코딩이 사용되는지를 나타내는 플래그)가 TRUE이다. 셋째, lfnstWidth 또는 lfnstHeight(예를 들어, LFNST 변환의 폭 또는 높이)가 16보다 작다. 일부 경우들에서, 이러한 결정을 내리기 위해 복수의 조건 또는 모든 조건이 충족될 것이 요구될 수 있다.
마찬가지로, 이하의 조건들 중 일부 또는 전부가 충족되는 경우, 제1 예측 스테이지에서 LFNST가 사용되었는지를 결정하는 것은 가능하지 않을 수 있다. 그러한 경우들에서, 아래에 설명된 제2 예측 스테이지는 변환 유형을 결정하는 데에 또한 사용될 수 있다. 첫째, lfnstWidth 또는 lfnstHeight의 값이 4보다 작다(lfnstWidth 및 lfnstHeight를 결정하는 방법에 대한 세부사항은 아래에 제공됨). 둘째, sps_lfnst_enabled_flag는 FALSE이다(예를 들어, LFNST_idx가 존재할 수 있는지를 나타내는 플래그이며, 플래그는 인트라 코딩 유닛 신택스에서 식별될 수 있음). 셋째, CuPredMode[chType][x0][y0]은 MODE_INTRA가 아니다(예를 들어, 인트라 코딩 모드가 아님). 마지막으로 lfnstWidth 또는 lfnstHeight가 MaxTbSizeY보다 크다. 일부 경우들에서, 이러한 결정을 내리기 위해, 복수의 또는 모든 조건이 충족될 것이 요구될 수 있다. 위에서 언급된 변수들에 관련하여, sps_lfnst_enabled_flag는 비트를 포함하는 플래그일 수 있다. 1과 동일한 비트는 lfnst_idx가 인트라 코딩 유닛 신택스에 존재할 수 있음을 지정하고, 0과 동일한 sps_lfnst_enabled_flag는 lfnst_idx가 인트라 코딩 유닛 신택스에 존재하지 않음을 지정한다. MODE_INTRA는 인트라 또는 인터 예측이 사용되었는지를 지정한다. 앞에서 언급된 바와 같이, 본 명세서에 설명된 이들 및 다른 변수들은 또한 H.266 표준(또는 다른 VVC 표준들)에서 정의될 수 있다.
파라미터 lfnstWidth는 이하에 기초하여 도출될 수 있다. treeType이 DUAL_TREE_CHROMA와 동일한 경우, lfnstWidth는 cbWidth/SubWidthC와 동일하게 설정된다. IntraSubPartitionsSplitType이 ISP_VER_SPLIT와 동일할 때, lfnstWidth 는 cbWidth/NumIntraSubPartitions와 동일하게 설정된다. 그렇지 않으면, lfnstWidth는 cbWidth와 동일하게 설정된다. 변수 treeType은 코딩 트리 노드를 구획화하기 위해 단일 트리(SINGLE_TREE) 또는 이중 트리(DUAL_TREE_CHROMA)가 사용되었는지를 지정할 수 있다. cbWidth는 주어진 코딩 블록의 폭을 나타낼 수 있다. SubWidthC는 사용되는 크로마 포맷 샘플링 구조에 의존하며 H.266에 정의된다. IntraSubPartitionsSplitType은 인트라 서브파티션 분할 유형이 수평 또는 수직인지를 지정한다.
추가적으로, 파라미터 lfnstHeight는 이하에 기초하여 도출될 수 있다. treeType이 DUAL_TREE_CHROMA인 경우, lfnstHeight는 cbHeight/SubHeightC와 동일하게 설정된다. IntraSubPartitionsSplitType이 ISP_HOR_SPLIT와 동일할 때, lfnstHeight는 cbHeight/NumIntraSubPartitions와 동일하게 설정된다. 그렇지 않으면, lfnstHeight가 cbHeight와 동일하게 설정된다.
일부 실시예들에서, MTS 변환이 사용되었음을 결정하기 위한 조건들은 다음 중 일부 또는 전부를 포함할 수 있다. 첫째, treeType은 DUAL_TREE_CHROMA이다. 둘째, cbWidth 또는 cbHeight가 32보다 크다. 셋째, IntraSubPartitionsSplitType이 ISP_NO_SPLIT이 아니다. 넷째, cu_sbt_flag는 TRUE이다. 위에서 언급된 변수들과 관련하여, 1과 동일한 cu_sbt_flag는 현재 코딩 유닛에 대해 서브블록 변환이 사용됨을 지정한다. 0과 동일한 cu_sbt_flag는 현재 코딩 유닛에 대해 서브블록 변환이 사용되지 않음을 지정한다.
조건(354)에 후속하여, 흐름도(350)는 CU 내의 TU들에 대해 어느 변환 유형이 사용되었는지가 결정되는지에 의존하여 동작(356) 또는 동작(362)으로 진행할 수 있다. 변환 유형이 디코딩된 CU 데이터를 사용하여 예측되었다면, 흐름도(350)는 동작(362)으로 진행할 수 있고, 역변환은 디바이스에 의해 CU의 TU들에 대해 수행될 수 있고, 이는 (예를 들어, 도 1의 변환 및 양자화기(108)에 의해 생성되는) 재구성된 잔차 픽셀 값들의 생성을 초래한다. 그러나, 변환 유형이 디코딩된 CU 데이터를 사용하여 예측될 수 없는 경우, 흐름도(350)는 동작(356)으로 진행할 수 있다. 동작(356)은 디바이스가 동작(352)에서 디코딩된 CU 내에 포함된 개별 TU들을 디코딩하는 것을 수반할 수 있다. 일부 실시예들에서, 동작(356)은 도 3a의 동작(304)과 연관하여 수행된 TU 디코딩과 동일하거나 유사할 수 있다. 즉, 디코딩된 CU 데이터만을 사용해서는 변환 유형이 결정될 수 없는 경우, 개별 TU들은 디코딩 프로세스를 통해 진행할 수 있다.
동작(356)에 후속하여, 흐름도(350)는 조건(358)으로 진행한다. 조건(358)은 디바이스가 본 명세서에 설명된 바와 같은 제2 예측 스테이지를 수행하는 것을 포함할 수 있다. 즉, 변환 유형이 동작(352)(CU 디코딩) 이후에 확인가능하지 않더라도, 일부 경우들에서, 개별 TU들에 사용되는 변환 유형을 결정하는 것은 여전히 가능할 수 있다. 즉, 개별 TU들이 디코딩됨에 따라, 나머지 TU들이 디코딩되기 전에 해당 특정 TU에 사용된 변환 유형을 예측하는 것이 가능할 수 있다. 이것은 여전히 도 3a에 설명된 로직에 비해 추가적인 이점을 제공하는데, 왜냐하면 역변환에 앞서 변환 파라미터들(예를 들어, lfnst_idx 및 mts_idx)을 디코딩하기 전에 모든 TU가 디코딩되기를 기다리는 것이 아니라, 모든 TU가 디코딩되기 전에 TU들 중 일부에 대해 역변환(예를 들어, 동작(362))이 수행될 수 있기 때문이다.
일부 실시예들에서, LFNST 변환이 사용되었음을 결정하기 위한 제2 예측 스테이지에서의 조건들은 다음 중 일부 또는 전부를 포함할 수 있다(주어진 TU에 대해 LFNST 변환이 사용되었음을 예측하기 위해, 이러한 조건들 중 일부 또는 전부가 충족될 것이 요구될 수 있음). 첫째, 인트라 예측만이 사용되었을 수 있다. 둘째, CU는 최대 64x64 크기일 수 있다. 셋째, CU는 최대 6개의 TU(4개의 루마, 2개의 크로마)를 가질 수 있고, 각각의 TU는 16개 이하의 계수를 갖는다. 넷째, TU에 대해, TU 컴포넌트당 코딩 플래그는 tu_coded_flag=1 및 transform_skip_flag=0이다. transform_skip_flag[x0][y0][cIdx]는 변환이 연관된 변환 블록에 적용되는지 여부를 지정한다. 어레이 인덱스 x0, y0은 픽처의 좌측 상단 루마 샘플에 대해, 고려되는 변환 블록의 좌측 상단 루마 샘플의 위치(x0, y0)를 지정한다. 어레이 인덱스 cIdx는 색상 컴포넌트에 대한 표시자를 지정하며, Y에 대해서는 0, Cb에 대해서는 1, Cr에 대해서는 2와 동일하다. 1과 동일한 transform_skip_flag[x0][y0][cIdx]는 연관된 변환 블록에 변환이 적용되지 않음을 지정한다. 0과 동일한 transform_skip_flag[x0][y0][cIdx]는 변환이 연관된 변환 블록에 적용되는지 여부의 결정이 다른 신택스 요소들에 의존함을 지정한다.
일부 실시예들에서, MTS 변환이 사용되었음을 결정하기 위한 제2 예측 스테이지에서의 조건들은 다음 중 일부 또는 전부를 포함할 수 있다(주어진 TU에 대해 MTS 변환이 사용되었음을 예측하기 위해, 이러한 조건들 중 일부 또는 전부가 충족될 것이 요구될 수 있음). 첫째, CU는 단지 32x32의 최대 크기를 가질 수 있다. 둘째, 최대 3개의 TU(1개의 루마 및 2개의 크로마)가 CU에 포함될 수 있다. 셋째, TU당 최대 16x16 계수가 포함될 수 있으므로, 최악의 경우 총 768개의 계수가 된다.
특정 TU에 대한 변환 유형이 조건(358)과 연관하여 설명된 바와 같이 제2 예측 스테이지를 사용하여 확인가능하지 않은 경우, TU 신택스에 후속하는 변환 파라미터들은 여전히 디코딩될 필요가 있을 수 있고, 흐름도(350)는 동작(360)으로 진행할 수 있다. 동작(360)의 결과는 lfnst_idx 및 mts_idx의 값들을 결정하기 위한 값일 수 있으며, 이는 LFNST 또는 MTS가 사용되었는지(또는 둘 다 사용되지 않았는지)를 확인할 수 있다. 그러나, 제2 예측 스테이지가 주어진 TU에 대한 변환 유형을 결정할 수 있다면, (해당 특정 TU에 대한) 흐름도(350)는 동작(360)을 우회하고 동작(362)에서 역변환으로 진행할 수 있다. 그 때, 동작(360)에서 LFNST 및 MTS 디코딩이 수행될 수 있고, 다음으로, 나머지 TU들은 동작(362) 및 역변환으로 진행할 수 있다. 모든 TU가 디코딩되기 전에 일부 TU에 대해 역변환을 수행하는 능력은 도 3b(아래에 설명됨)에도 추가로 도시될 수 있다.
도 4는 본 개시내용의 하나 이상의 실시예에 따른 예시적인 방법(400)을 도시한다. 방법(400)은 디바이스(예를 들어, 도 5의 그래픽 카드(565))가 비트스트림의 제1 인코딩된 비디오 데이터를 수신하는 것을 포함할 수 있는 블록(402)으로 시작할 수 있다. 방법(400)의 블록(404)은 디바이스가 제1 인코딩된 비디오 데이터의 제1 비디오 프레임의 제1 코딩 유닛(CU)을 디코딩하는 것을 포함할 수 있고, 제1 CU는 제1 변환 유닛(TU) 및 제2 TU를 포함한다. 방법(400)의 블록(406)은 디바이스가 제1 CU를 디코딩하는 것에 연관된 제1 디코딩된 데이터에 기초하여, 그리고 제1 TU 및 제2 TU를 디코딩하기 전에, 제1 TU 및 제2 TU에 대한 개별 변환 계수들을 생성하기 위해 사용되는 제1 변환 유형을 결정하는 것을 포함할 수 있다. 방법(400)의 블록(408)은 디바이스가 제1 TU를 디코딩하는 것을 포함할 수 있고, 여기서 제1 TU를 디코딩하는 것은 제1 변환 계수들을 식별하는 것을 포함한다. 방법(400)의 블록(410)은 제2 TU를 디코딩하는 것을 포함할 수 있고, 여기서 제2 TU를 디코딩하는 것은 제2 변환 계수들을 식별하는 것을 포함한다. 방법(400)의 블록(412)은 제1 변환 유형 및 제1 변환 계수들에 기초하여, 제1 TU의 제1 재구성된 픽셀 값들을 생성하는 것을 포함할 수 있다. 방법(400)의 블록(414)은 제1 변환 유형 및 제2 변환 계수들에 기초하여, 제2 TU의 제2 재구성된 픽셀 값들을 생성하는 것을 포함할 수 있다.
도 5는 본 개시내용의 하나 이상의 예시적인 실시예에 따른 예시적인 시스템(500)의 실시예를 도시한다.
다양한 실시예들에서, 시스템(500)은 전자 디바이스를 포함하거나 전자 디바이스의 일부로서 구현될 수 있다.
일부 실시예들에서, 시스템(500)은 예를 들어 도 1의 하나 이상의 컴포넌트를 구현하는 컴퓨터 시스템을 나타낼 수 있다.
실시예들은 이러한 맥락에서 제한되지 않는다. 보다 일반적으로, 시스템(500)은 도면들을 참조하여 본 명세서에 설명된 모든 로직, 시스템, 프로세스, 로직 흐름, 방법, 수학식, 장치 및 기능을 구현하도록 구성된다.
시스템(500)은 분산 컴퓨팅 시스템, 슈퍼컴퓨터, 고성능 컴퓨팅 시스템, 컴퓨팅 클러스터, 메인프레임 컴퓨터, 미니 컴퓨터, 클라이언트-서버 시스템, 개인용 컴퓨터(PC), 워크스테이션, 서버, 휴대용 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 개인 휴대 정보 단말기(PDA)와 같은 핸드핼드 디바이스, 또는 정보를 프로세싱, 디스플레이 또는 전송하기 위한 다른 디바이스들과 같은 복수의 프로세서 코어를 갖는 컴퓨터 시스템일 수 있다. 유사한 실시예들은, 예를 들어, 휴대용 음악 플레이어 또는 휴대용 비디오 플레이어와 같은 엔터테인먼트 디바이스, 스마트폰 또는 다른 셀룰러폰, 전화기, 디지털 비디오 카메라, 디지털 스틸 카메라, 외부 저장 디바이스 또는 그와 유사한 것을 포함할 수 있다. 추가 실시예는 대규모 서버 구성들을 구현한다. 다른 실시예들에서, 시스템(500)은 하나의 코어 또는 하나 초과의 프로세서를 갖는 단일 프로세서를 가질 수 있다. "프로세서"라는 용어는 단일 코어를 갖는 프로세서 또는 복수의 프로세서 코어를 갖는 프로세서 패키지를 지칭한다는 점에 유의해야 한다.
적어도 하나의 실시예에서, 컴퓨팅 시스템(500)은 도 1의 하나 이상의 컴포넌트를 나타낸다. 보다 일반적으로, 컴퓨팅 시스템(500)은 위의 도면을 참조하여 본 명세서에 설명된 모든 로직, 시스템, 프로세스, 로직 흐름, 방법, 장치 및 기능을 구현하도록 구성된다.
본 출원에서 사용될 때, "시스템" 및 "컴포넌트" 및 "모듈"이라는 용어는 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어 또는 실행 중인 소프트웨어인 컴퓨터 관련 개체를 지칭하는 것으로 의도되며, 그것의 예들은 예시적인 시스템(500)에 의해 제공된다. 예를 들어, 컴포넌트는 프로세서에서 실행되는 프로세스, 프로세서, 하드 디스크 드라이브, (광학 및/또는 자기 저장 매체의) 복수의 저장 드라이브, 객체, 실행 파일, 실행 스레드, 프로그램 및/또는 컴퓨터일 수 있지만 이에 제한되지 않는다.
예를 들어, 서버에서 실행되는 애플리케이션과 서버 둘 다는 컴포넌트일 수 있다. 하나 이상의 컴포넌트는 프로세스 및/또는 실행 스레드 내에 상주할 수 있고, 컴포넌트는 하나의 컴퓨터에 국한되고/거나 두 개 이상의 컴퓨터 간에 분산될 수 있다. 또한, 컴포넌트들은 동작들을 조정하기 위해 다양한 유형의 통신 매체에 의해 서로 통신가능하게 결합될 수 있다. 조정은 정보의 단방향 또는 양방향 교환을 수반할 수 있다. 예를 들어, 컴포넌트들은 통신 매체를 통해 통신되는 신호의 형태로 정보를 통신할 수 있다. 정보는 다양한 신호 라인들에 할당된 신호들로서 구현될 수 있다. 이러한 할당들에서, 각각의 메시지는 신호이다. 그러나, 다른 실시예들은 대안적으로 데이터 메시지들을 사용할 수 있다. 이러한 데이터 메시지들은 다양한 연결들을 통해 전송될 수 있다. 예시적인 연결들은 병렬 인터페이스들, 직렬 인터페이스들 및 버스 인터페이스들을 포함한다.
이 도면에 보여진 바와 같이, 시스템(500)은 플랫폼 컴포넌트들을 장착하기 위한 마더보드(505)를 포함한다. 마더보드(505)는 프로세서(510), 울트라 패스 인터커넥트(Ultra Path Interconnect)(UPI)로서 P-P 인터커넥트/인터페이스를 통해 결합된 프로세서(530), 및 디바이스(519)를 포함하는 포인트-투-포인트(P-P) 상호접속 플랫폼이다. 다른 실시예들에서, 시스템(500)은 멀티-드롭 버스와 같은 다른 버스 아키텍처일 수 있다. 또한, 프로세서들(510 및 530) 각각은 복수의 프로세서 코어를 갖는 프로세서 패키지들일 수 있다. 예로서, 프로세서들(510 및 530)은 각각 프로세서 코어(들)(520 및 540)를 포함하는 것으로 도시되어 있다. 시스템(500)이 2-소켓(2S) 플랫폼의 예이지만, 다른 실시예들은 2개 초과의 소켓 또는 하나의 소켓을 포함할 수 있다. 예를 들어, 일부 실시예들은 4-소켓(4S) 플랫폼 또는 8-소켓(8S) 플랫폼을 포함할 수 있다. 각각의 소켓은 프로세서를 위한 마운트이며 소켓 식별자를 가질 수 있다. 플랫폼이라는 용어는 프로세서들(510) 및 칩셋(560)과 같은 특정 컴포넌트들이 장착된 마더보드를 지칭한다는 점에 유의해야 한다. 일부 플랫폼들은 추가 컴포넌트들을 포함할 수 있고, 일부 플랫폼들은 프로세서 및/또는 칩셋을 장착하기 위한 소켓만을 포함할 수 있다.
프로세서들(510 및 530)은 Intel® Celeron®, Core®, Core(2) Duo®, Itanium®, Pentium®, Xeon®, 및 XScale® 프로세서; AMD® Athlon®, Duron® 및 Opteron® 프로세서; ARM® 애플리케이션, 임베디드 및 보안 프로세서; IBM® 및 Motorola® DragonBall® 및 PowerPC® 프로세서; IBM 및 Sony® Cell 프로세서; 및 유사한 프로세서를 포함하지만 이에 제한되지 않는 다양한 상업적으로 이용가능한 프로세서들 중 임의의 것일 수 있다. 듀얼 마이크로프로세서, 멀티 코어 프로세서, 및 다른 멀티 프로세서 아키텍처도 프로세서들(510 및 530)로서 이용될 수 있다.
프로세서(510)는 통합 메모리 컨트롤러(integrated memory controller)(IMC)(514) 및 P-P 인터커넥트들/인터페이스들(518 및 552)을 포함한다. 마찬가지로, 프로세서(530)는 IMC(534) 및 P-P 인터커넥트들/인터페이스들(538 및 554)을 포함한다. IMC들(514 및 534)은 프로세서들(510 및 530)을 개별 메모리들, 즉 메모리(512) 및 메모리(532)에 각각 결합한다. 메모리들(512 및 532)은 더블 데이터 레이트 타입 3(DDR3) 또는 타입 4(DDR4) 동기식 DRAM(SDRAM)과 같은 플랫폼을 위한 메인 메모리(예를 들어, 동적 랜덤 액세스 메모리(DRAM))의 부분들일 수 있다. 본 실시예에서, 메모리들(512, 532)은 개별 프로세서들(510 및 530)에 국부적으로 부착된다.
프로세서들(510 및 530)에 추가하여, 시스템(500)은 디바이스(519)를 포함할 수 있다. 디바이스(519)는 P-P 인터커넥트들/인터페이스들(529 및 569)에 의해 칩셋(560)에 연결될 수 있다. 디바이스(519)는 또한 메모리(539)에 연결될 수 있다. 일부 실시예들에서, 디바이스(519)는 프로세서들(510 및 530) 중 적어도 하나에 연결될 수 있다. 다른 실시예에서, 메모리들(512, 532, 및 539)은 버스 및 공유 메모리 허브를 통해 프로세서(510 및 530) 및 디바이스(519)와 결합될 수 있다.
시스템(500)은 프로세서들(510 및 530)에 결합된 칩셋(560)을 포함한다. 또한, 칩셋(560)은 예를 들어 인터페이스(I/F)(566)를 통해 저장 매체(503)에 결합될 수 있다. I/F(566)는 예를 들어 향상된 주변 컴포넌트 인터커넥트(Peripheral Component Interconnect-enhanced)(PCI-e)일 수 있다. 프로세서들(510, 530) 및 디바이스(519)는 칩셋(560)을 통해 저장 매체(503)에 액세스할 수 있다.
저장 매체(503)는 광학, 자기, 또는 반도체 저장 매체와 같은 임의의 비일시적 컴퓨터 판독가능 저장 매체 또는 기계 판독가능 저장 매체를 포함할 수 있다. 다양한 실시예들에서, 저장 매체(503)는 제조 물품을 포함할 수 있다. 일부 실시예들에서, 저장 매체(503)는 본 명세서에 설명된 프로세스들 또는 동작들(예를 들어, 도 4의 프로세스 400) 중 하나 이상을 구현하기 위한 컴퓨터 실행가능 명령어들(502)과 같은 컴퓨터 실행가능 명령어들을 저장할 수 있다. 저장 매체(503)는 위에 도시된 임의의 수학식들에 대한 컴퓨터 실행가능 명령어들을 저장할 수 있다. 저장 매체(503)는 신경망 또는 그와 유사한 것과 같은, 본 명세서에 설명된 모델들 및/또는 네트워크들에 대한 컴퓨터 실행가능 명령어들을 더 저장할 수 있다. 컴퓨터 판독가능 저장 매체 또는 기계 판독가능 저장 매체의 예들은 휘발성 메모리 또는 비휘발성 메모리, 이동식 또는 고정식 메모리, 소거가능 또는 비-소거가능 메모리, 삭제가능 또는 비-삭제가능 메모리, 기입가능 또는 재기입가능 메모리 등을 포함하여, 전자 데이터를 저장할 수 있는 임의의 실체있는(tangible) 매체를 포함할 수 있다. 컴퓨터 실행가능 명령어들의 예들은 소스 코드, 컴파일된 코드, 해석된 코드, 실행가능한 코드, 정적 코드, 동적 코드, 객체 지향 코드, 시각적 코드 및 그와 유사한 것과 같은 임의의 적절한 유형의 코드를 포함할 수 있다. 실시예들은 이러한 맥락에서 제한되지 않는다는 것을 이해해야 한다.
프로세서(510)는 P-P 인터커넥트들/인터페이스들(552 및 562)을 통해 칩셋(560)에 결합되고, 프로세서(530)는 P-P 인터커넥트들/인터페이스들(554 및 564)을 통해 칩셋(560)에 결합된다. 다이렉트 미디어 인터페이스들(Direct Media Interfaces)(DMI)은 P-P 인터커넥트들/인터페이스들(552 및 562) 및 P-P 인터커넥트들/인터페이스들(554 및 564)을 각각 결합할 수 있다. DMI는 예를 들어 DMI 3.0과 같은 초당 8 기가 전송(GT/s)을 용이하게 하는 고속 인터커넥트일 수 있다. 다른 실시예들에서, 프로세서들(510 및 530)은 버스를 통해 상호접속될 수 있다.
칩셋(560)은 플랫폼 컨트롤러 허브(platform controller hub)(PCH)와 같은 컨트롤러 허브를 포함할 수 있다. 칩셋(560)은 클로킹 기능들(clocking functions)을 수행하기 위한 시스템 클록을 포함할 수 있으며, 플랫폼 상의 주변 디바이스들의 연결을 용이하게 하기 위해, 유니버설 시리얼 버스(universal serial bus)(USB), 주변 컴포넌트 인터커넥트들(peripheral component interconnects)(PCI), 직렬 주변 인터커넥트들(serial peripheral interconnects)(SPI), 통합 인터커넥트들(integrated interconnects)(I2Cs) 및 그와 유사한 것과 같은 I/O 버스를 위한 인터페이스들을 포함할 수 있다. 다른 실시예들에서, 칩셋(560)은 메모리 컨트롤러 허브, 그래픽 컨트롤러 허브, 및 입력/출력(I/O) 컨트롤러 허브를 갖는 칩셋과 같은 하나 초과의 컨트롤러 허브를 포함할 수 있다.
본 실시예에서, 칩셋(560)은 인터페이스(I/F)(570)를 통해 신뢰 플랫폼 모듈(trusted platform module)(TPM)(572) 및 UEFI, BIOS, 플래시 컴포넌트(574)와 결합된다. TPM(572)은 디바이스들에 암호화 키들을 통합함으로써 하드웨어를 보호하도록 설계된 전용 마이크로컨트롤러이다. UEFI, BIOS, 플래시 컴포넌트(574)는 사전 부팅 코드를 제공할 수 있다.
또한, 칩셋(560)은 칩셋(560)을 고성능 그래픽 엔진인 그래픽 카드(565)와 결합하기 위한 I/F(566)를 포함한다. 그래픽 카드(565)는 본 명세서에 설명된 프로세스들 또는 동작들(예를 들어, 도 2 내지 도 4의 동작들) 중 하나 이상을 구현할 수 있고, 도 1의 컴포넌트들(예를 들어, 도 1의 파티셔너(104), 도 1의 감산기(106), 도 1의 변환 및 양자화기(108), 도 1의 코더(110), 도 1의 디코더(130), 도 1의 역변환 및 양자화기(112), 도 1의 가산기(114), 도 1의 예측 유닛(116), 도 1의 제어부(121)을 포함할 수 있다. 다른 실시예들에서, 시스템(500)은 프로세서들(510 및 530)과 칩셋(560) 사이의 플렉서블 디스플레이 인터페이스(flexible display interface)(FDI)를 포함할 수 있다. FDI는 프로세서 내의 그래픽 프로세서 코어를 칩셋(560)과 상호연결한다.
다양한 I/O 디바이스들(592)은 버스를 제2 버스에 결합하는 버스 브리지(580) 및 버스를 칩셋(560)과 연결하는 I/F(568)와 함께, 버스에 결합된다. 일 실시예에서, 제2 버스는 로우 핀 카운트(low pin count)(LPC) 버스일 수 있다. 예를 들어, 키보드(582), 마우스(584), 통신 디바이스들(586), 저장 매체(501), 및 오디오 I/O(590)를 포함하는 다양한 디바이스들이 제2 버스에 결합될 수 있다.
인공 지능(AI) 가속기(567)는 AI에 관련된 계산을 수행하도록 배열된 회로부일 수 있다. AI 가속기(567)는 저장 매체(501) 및 칩셋(560)에 연결될 수 있다. AI 가속기(567)는 풍부한 데이터 컴퓨팅을 가능하게 하는 데 필요한 프로세싱 능력 및 에너지 효율을 산출해낼 수 있다. AI 가속기(567)는 인공 신경망 및 머신 비전을 포함한 인공 지능 및 기계 학습 애플리케이션들을 가속화하도록 설계된 특수 하드웨어 가속기들 또는 컴퓨터 시스템들의 클래스이다. AI 가속기(567)는 로보틱스, 사물 인터넷, 다른 데이터 집약적 및/또는 센서 중심 태스크들을 위한 알고리즘들에 적용가능할 수 있다.
I/O 디바이스들(592), 통신 디바이스들(586), 및 저장 매체(501) 중 다수는 마더보드(505)에 상주할 수 있는 반면, 키보드(582) 및 마우스(584)는 애드온(add-on) 주변장치들일 수 있다. 다른 실시예에서, 일부 또는 모든 I/O 디바이스들(592), 통신 디바이스들(586), 및 저장 매체(501)는 애드온 주변장치들이고 마더보드(505)에 상주하지 않는다.
일부 예들은 "일례에서" 또는 "예에서"라는 표현과 그들의 파생어들을 함께 사용하여 설명될 수 있다. 이러한 용어들은 예와 관련하여 설명된 특정 특징, 구조 또는 특성이 적어도 하나의 예에 포함됨을 의미한다. 명세서의 여러 곳에서 "일례에서"라는 문구의 출현은 반드시 모두 동일한 예를 지칭하는 것은 아니다.
일부 예들은 "결합된" 및 "연결된"이라는 표현과 그들의 파생어들을 함께 사용하여 설명될 수 있다. 이러한 용어들이 반드시 서로에 대해 동의어로서 의도되는 것은 아니다. 예를 들어, "연결된" 및/또는 "결합된"이라는 용어들을 사용한 설명은 둘 이상의 요소가 서로 물리적 또는 전기적인 직접 접촉을 하고 있음을 나타낼 수 있다. 그러나, "결합된"이라는 용어는 또한 둘 이상의 요소가 서로 직접 접촉하지 않지만 여전히 서로 협력하거나 상호작용한다는 것을 의미할 수 있다.
추가로, 전술한 상세한 설명에서, 개시를 간소화하기 위해 다양한 특징들이 단일 예에서 함께 그룹화된다. 이러한 개시 방법은 청구된 예들이 각각의 청구항에서 명시적으로 기재된 것보다 더 많은 특징을 요구한다는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 이하의 청구항들이 반영하는 바와 같이, 본 발명의 주제는 단일의 개시된 예의 모든 특징보다 적은 범위에 있다. 따라서, 이하의 청구항들은 이에 의해 상세한 설명에 통합되며, 각각의 청구항은 그 자체로 별도의 예이다. 첨부된 청구항들에서, "포함하는(including)" 및 "여기서(in which)"라는 용어들은 각각 "포함하는(comprising)" 및 "여기서(wherein)"라는 각각의 용어들의 일반 영어 등가물들로서 사용된다. 또한, "제1", "제2", "제3" 등의 용어는 단지 레이블들로서 사용되며, 그들의 대상에 수치적 요건들을 부과하도록 의도되지 않는다.
주제가 구조적 특징들 및/또는 방법론적 행위들에 특정한 언어로 설명되었지만, 첨부된 청구항들에 정의된 주제가 반드시 위에서 설명된 특정 특징들 또는 행위들로 제한되지 않는다는 것을 이해해야 한다. 오히려, 위에서 설명된 특정 특징들 및 행위들은 청구항들을 구현하는 예시적인 형태로서 개시된다.
프로그램 코드를 저장 및/또는 실행하기에 적합한 데이터 프로세싱 시스템은 시스템 버스를 통해 메모리 요소들에 직접적으로 또는 간접적으로 결합된 적어도 하나의 프로세서를 포함할 것이다. 메모리 요소들은 프로그램 코드의 실제 실행 동안 사용되는 로컬 메모리, 벌크 저장소, 및 실행 동안 벌크 저장소로부터 코드가 검색되어야 하는 횟수를 줄이기 위해 적어도 일부 프로그램 코드의 임시 저장소를 제공하는 캐시 메모리들을 포함할 수 있다. "코드"라는 용어는 애플리케이션, 드라이버, 프로세스, 루틴, 방법, 메소드, 펌웨어, 마이크로코드 및 서브프로그램을 포함한 광범위한 소프트웨어 컴포넌트들 및 구성들을 포괄한다. 따라서, "코드"라는 용어는 프로세싱 시스템에 의해 실행될 때 원하는 동작 또는 동작들을 수행하는 명령어들의 임의의 모음을 지칭하기 위해 사용될 수 있다.
본 명세서에 설명된 로직 회로부들, 디바이스들 및 인터페이스들은 하드웨어로 구현되고 하나 이상의 프로세서에서 실행되는 코드로 구현되는 기능들을 수행할 수 있다. 로직 회로부는 하나 이상의 논리 기능을 구현하는 하드웨어, 또는 하드웨어 및 코드를 지칭한다. 회로부는 하드웨어이며, 하나 이상의 회로를 지칭할 수 있다. 각각의 회로는 특정 기능을 수행할 수 있다. 회로부의 회로는 하나 이상의 전도체, 집적 회로, 칩 패키지, 칩셋, 메모리 또는 그와 유사한 것과 상호접속된 이산 전기 컴포넌트들을 포함할 수 있다. 집적 회로들은 실리콘 웨이퍼와 같은 기판 상에 생성된 회로들을 포함하고 컴포넌트들을 포함할 수 있다. 집적 회로, 프로세서 패키지, 칩 패키지 및 칩셋은 하나 이상의 프로세서를 포함할 수 있다.
프로세서들은 입력(들)에서 명령어들 및/또는 데이터와 같은 신호들을 수신하고, 신호들을 프로세싱하여 적어도 하나의 출력을 생성할 수 있다. 코드를 실행하는 동안, 코드는 프로세서 파이프라인을 구성하는 트랜지스터들의 물리적 상태들 및 특성들을 변경한다. 트랜지스터들의 물리적 상태들은 프로세서 내의 레지스터들에 저장된 1들 및 0들의 논리적 비트들로 변환된다. 프로세서는 트랜지스터들의 물리적 상태들을 레지스터들에 전달하고, 트랜지스터들의 물리적 상태들을 다른 저장 매체에 전달할 수 있다.
프로세서는 프로세서의 전체 기능을 수행하도록 구현된 하나 이상의 하위 기능을 수행하는 회로들을 포함할 수 있다. 프로세서의 일례는 적어도 하나의 입력 및 적어도 하나의 출력을 포함하는 상태 머신 또는 주문형 집적 회로(ASIC)(application-specific integrated circuit)이다. 상태 머신은 적어도 하나의 입력에 대해 미리 결정된 일련의 직렬 및/또는 병렬 조작들 또는 변환들을 수행함으로써 적어도 하나의 출력을 생성하기 위해 적어도 하나의 입력을 조작할 수 있다.
위에 설명된 로직은 집적 회로 칩을 위한 설계의 일부일 수 있다. 칩 설계는 그래픽 컴퓨터 프로그래밍 언어로 생성되고, 컴퓨터 저장 매체 또는 데이터 저장 매체(예를 들어, 디스크, 테이프, 물리적 하드 드라이브, 또는 스토리지 액세스 네트워크와 같은 가상 하드 드라이브)에 저장된다. 설계자가 칩들을 제작하거나 칩들의 제조에 사용되는 포토리소그래피 마스크들을 제작하지 않는 경우, 설계자는 결과적인 설계를 물리적 수단에 의해(예를 들어, 설계를 저장하는 저장 매체의 사본을 제공함으로써) 또는 전자적으로(예를 들어, 인터넷을 통해)을 통해 그러한 개체들에 직접적으로 또는 간접적으로 전송한다. 다음으로, 저장된 설계는 제작에 적합한 포맷(예를 들어, GDSII)으로 변환된다.
결과적인 집적 회로 칩들은 미가공 웨이퍼 형태로(즉, 복수의 포장되지 않은 칩을 갖는 단일 웨이퍼로서), 베어 다이로서, 또는 패키징된 형태로 제작자에 의해 배포될 수 있다. 후자의 경우, 칩은 단일 칩 패키지(예를 들어, 마더보드 또는 다른 상위 레벨 캐리어에 부착된 리드들을 갖는 플라스틱 캐리어) 또는 멀티칩 패키지(예를 들어, 또는 표면 상호접속부들 또는 매립 상호접속부들 중 어느 하나 또는 둘 다를 갖는 세라믹 캐리어)에 장착된다. 어느 경우에서든, 칩은 다음으로 (a) 프로세서 보드, 서버 플랫폼 또는 마더보드와 같은 중간 제품 또는 (b) 최종 제품의 일부로서 다른 칩들, 이산 회로 요소들 및/또는 다른 신호 프로세싱 디바이스들과 통합된다.
"예시적인"이라는 단어는 본 명세서에서 "예, 사례 또는 예시의 역할을 하나"을 의미하기 위해 사용된다. 본 명세서에서 "예시적인" 것으로 설명된 임의의 실시예는 반드시 다른 실시예들에 비해 선호되거나 유리한 것으로 해석되어서는 안 된다. 여기에서 사용된 "컴퓨팅 디바이스", "사용자 디바이스", "통신 스테이션", "스테이션", "휴대용 디바이스", "모바일 디바이스", "무선 디바이스" 및 "사용자 장비(UE)"는 셀룰러 전화기와 같은 무선 통신 디바이스, 스마트폰, 태블릿, 넷북, 무선 단말, 랩톱 컴퓨터, 펨토셀, 고속 데이터 레이트(high data rate)(HDR) 가입자 스테이션, 액세스 포인트, 프린터, POS(point of sale) 디바이스, 액세스 단말, 또는 다른 개인 통신 시스템(personal communication system)(PCS) 디바이스를 지칭한다. 디바이스는 이동식이거나 고정식일 수 있다.
이 문서에서 사용될 때, "통신하다"라는 용어는 전송, 또는 수신, 또는 전송 및 수신 둘 다를 포함하도록 의도된다. 이것은 하나의 디바이스에 의해 전송되고 다른 디바이스에 의해 수신되고 있는 데이터의 구성을 설명할 때 청구항들에서 특히 유용할 수 있지만, 청구항을 침해하는 데에는 그러한 디바이스들 중 하나의 기능만이 필요한다. 마찬가지로, 두 개의 디바이스 사이의 양방향 데이터 교환(교환 동안 전송 및 수신하는 디바이스들 둘 다)은 그러한 디바이스들 중 하나의 기능만이 청구되고 있는 경우 "통신하는" 것으로서 설명될 수 있다. 무선 통신 신호와 관련하여 본 명세서에서 사용되는 "통신하는"이라는 용어는 무선 통신 신호를 전송하는 것 및/또는 무선 통신 신호를 수신하는 것을 포함한다. 예를 들어, 무선 통신 신호를 통신할 수 있는 무선 통신 유닛은 무선 통신 신호를 적어도 하나의 다른 무선 통신 유닛에 전송하는 무선 송신기, 및/또는 적어도 하나의 다른 무선 통신 유닛으로부터 무선 통신 신호를 수신하는 무선 통신 수신기를 포함할 수 있다.
본 명세서에 사용될 때, 달리 명시되지 않는 한, 공통 대상을 설명하기 위해 서수 형용사 "제1", "제2", "제3" 등을 사용하는 것은 단지 유사한 대상들의 상이한 인스턴스들이 지칭되고 있음을 나타낼 뿐이고, 그렇게 설명된 대상들이 시간적으로, 공간적으로, 순위에서, 또는 임의의 다른 방식으로 주어진 순서대로 있어야 함을 암시하도록 의도되지 않는다.
일부 실시예들은 다양한 디바이스들 및 시스템들, 예를 들어 개인용 컴퓨터(PC), 데스크탑 컴퓨터, 모바일 컴퓨터, 랩톱 컴퓨터, 노트북 컴퓨터, 태블릿 컴퓨터, 서버 컴퓨터, 휴대용 컴퓨터,휴대용 디바이스, 개인 휴대 정보 단말기(PDA) 디바이스, 휴대용 PDA 디바이스, 온보드 디바이스, 오프보드 디바이스, 하이브리드 디바이스, 차량 디바이스, 비-차량 디바이스, 모바일 또는 휴대용 디바이스, 소비자 디바이스, 비-모바일 또는 비-휴대용 디바이스, 무선 통신 스테이션, 무선 통신 디바이스, 무선 액세스 포인트(AP), 유선 또는 무선 라우터, 유선 또는 무선 모뎀, 비디오 디바이스, 오디오 디바이스, 오디오-비디오(A/V) 디바이스, 유선 또는 무선 네트워크, 무선 영역 네트워크, 무선 비디오 영역 네트워크(wireless video area network)(WVAN), 근거리 영역 네트워크(LAN), 무선 LAN(WLAN), 개인 영역 네트워크(PAN), 무선 PAN(WPAN), 및 그와 유사한 것과 함께 사용될 수 있다.
본 개시내용에 따른 실시예들은 특히 방법, 저장 매체, 디바이스, 및 컴퓨터 프로그램 제품에 관한 첨부된 청구항들에 개시되며, 여기서 하나의 청구항 범주, 예를 들어 방법에서 언급된 임의의 특징은 다른 청구항 범주, 예를 들어 시스템에서도 청구될 수 있다. 첨부된 청구항들에서의 종속성들 또는 인용들은 형식적인 이유로만 선택된다. 그러나, (특히 다중 종속성들에서의) 임의의 선행 청구항들에 대한 의도적인 인용으로 인해 발생하는 임의의 주제가 또한 청구될 수 있고, 그에 의해, 청구항들 및 그 특징들의 임의의 조합이 개시되고, 첨부된 청구항들에서 선택된 종속성들에 관계없이 청구될 수 있다. 청구될 수 있는 주제는 첨부된 청구항들에 제시된 특징들의 조합들뿐만 아니라 청구항들에 있는 특징들의 임의의 다른 조합을 포함하며, 여기서 청구항들에 언급된 각각의 특징은 청구항들 내의 임의의 다른 특징들 또는 다른 특징들의 조합과 결합될 수 있다. 또한, 본 명세서에 설명되거나 묘사된 실시예들 및 특징들 중 임의의 것은 별개의 청구항에서, 및/또는 본 명세서에 설명되거나 묘사된 임의의 실시예 또는 특징 또는 첨부된 청구항들의 특징들 중 임의의 것과의 임의의 조합으로 청구될 수 있다.
하나 이상의 구현에 대한 전술한 설명은 예시 및 설명을 제공하지만, 실시예들의 범위를 개시된 형태 그대로 제한하거나 철저하도록 의도되지 않는다. 수정들 및 변형들은 상기 교시에 비추어 가능하거나 다양한 실시예들의 실시로부터 취득될 수 있다.
본 개시내용에 따른 실시예들은 특히 방법, 저장 매체, 디바이스, 및 컴퓨터 프로그램 제품에 관한 첨부된 청구항들에 개시되며, 여기서 하나의 청구항 범주, 예를 들어 방법에서 언급된 임의의 특징은 다른 청구항 범주, 예를 들어 시스템에서도 청구될 수 있다. 첨부된 청구항들에서의 종속성들 또는 인용들은 형식적인 이유로만 선택된다. 그러나, (특히 다중 종속성들에서의) 임의의 선행 청구항들에 대한 의도적인 인용으로 인해 발생하는 임의의 주제가 또한 청구될 수 있고, 그에 의해, 청구항들 및 그 특징들의 임의의 조합이 개시되고, 첨부된 청구항들에서 선택된 종속성들에 관계없이 청구될 수 있다. 청구될 수 있는 주제는 첨부된 청구항들에 제시된 특징들의 조합들뿐만 아니라 청구항들에 있는 특징들의 임의의 다른 조합을 포함하며, 여기서 청구항들에 언급된 각각의 특징은 청구항들 내의 임의의 다른 특징들 또는 다른 특징들의 조합과 결합될 수 있다. 또한, 본 명세서에 설명되거나 묘사된 실시예들 및 특징들 중 임의의 것은 별개의 청구항에서, 및/또는 본 명세서에 설명되거나 묘사된 임의의 실시예 또는 특징 또는 첨부된 청구항들의 특징들 중 임의의 것과의 임의의 조합으로 청구될 수 있다.
하나 이상의 구현에 대한 전술한 설명은 예시 및 설명을 제공하지만, 실시예들의 범위를 개시된 형태 그대로 제한하거나 철저하도록 의도되지 않는다. 수정들 및 변형들은 상기 교시에 비추어 가능하거나 다양한 실시예들의 실시로부터 취득될 수 있다.
본 개시내용의 특정 양태들은 다양한 구현들에 따른 시스템들, 방법들, 장치들, 및/또는 컴퓨터 프로그램 제품들의 블록도들 및 흐름도들을 참조하여 위에서 설명된다. 블록도들 및 흐름도들의 하나 이상의 블록, 및 블록도들 및 흐름도들 내의 블록들의 조합들은 각각 컴퓨터 실행가능 프로그램 명령어들에 의해 구현될 수 있음을 이해할 것이다. 마찬가지로, 블록도들 및 흐름도들의 일부 블록들은 일부 구현들에 따라 반드시 제시된 순서대로 수행될 필요가 없을 수 있거나 전혀 반드시 수행될 필요가 없을 수 있다.
이러한 컴퓨터 실행가능 프로그램 명령어들은 특수 목적 컴퓨터 또는 다른 특정 기계, 프로세서 또는 다른 프로그래밍가능한 데이터 프로세싱 장치에 로드되어 특정 기계를 생성할 수 있고, 그에 의해 컴퓨터, 프로세서 또는 다른 프로그래밍가능한 데이터 프로세싱 장치에서 실행되는 명령어들은 흐름도 블록 또는 블록들에 지정된 하나 이상의 기능을 구현하기 위한 수단을 생성한다. 이러한 컴퓨터 프로그램 명령어들은 또한 컴퓨터 판독가능 저장 매체 또는 메모리에 저장될 수 있고, 이는 컴퓨터 또는 다른 프로그래밍가능한 데이터 프로세싱 장치로 하여금 특정 방식으로 기능하도록 지시할 수 있으며, 그에 의해 컴퓨터 판독가능 저장 매체에 저장된 명령어들은 흐름도 블록 또는 블록들에 지정된 하나 이상의 기능을 구현하는 명령어 수단을 포함하는 제조 물품을 생성한다. 예로서, 특정 구현들은 컴퓨터 판독가능 프로그램 코드 또는 프로그램 명령어들이 그 안에 구현된 컴퓨터 판독가능 저장 매체를 포함하는 컴퓨터 프로그램 제품을 제공할 수 있으며, 상기 컴퓨터 판독가능 프로그램 코드는 흐름도 블록 또는 블록들에 지정된 하나 이상의 기능을 구현하도록 실행되게끔 적응된다. 컴퓨터 프로그램 명령어들은 또한 컴퓨터 또는 다른 프로그래밍가능한 데이터 프로세싱 장치에 로드되어, 일련의 동작 요소들 또는 단계들이 컴퓨터 또는 다른 프로그래밍가능한 장치에서 수행되어 컴퓨터 구현 프로세스를 생성하게 할 수 있고, 그에 의해 컴퓨터 또는 다른 프로그래밍가능한 장치에서 실행되는 명령어들은 흐름도 블록 또는 블록들에 지정된 기능들을 구현하기 위한 요소들 또는 단계들을 제공한다.
따라서, 블록도들 및 흐름도들의 블록들은 지정된 기능들을 수행하기 위한 수단의 조합들, 지정된 기능들을 수행하기 위한 요소들 또는 단계들의 조합들, 및 지정된 기능들을 수행하기 위한 프로그램 명령 수단의 조합들을 뒷받침한다. 또한, 블록도들 및 흐름도들의 각각의 블록, 블록도들 및 흐름도들의 블록들의 조합들은 지정된 기능들, 요소들 또는 단계들을 수행하는 특수 목적의 하드웨어 기반 컴퓨터 시스템들, 또는 특수 목적 하드웨어와 컴퓨터 명령어들의 조합들에 의해 구현될 수 있다는 것이 이해될 것이다.
특별히 달리 명시되지 않거나 사용된 문맥 내에서 달리 이해되지 않는 한, 특히 "~ 수 있다(can, could, might, 또는 may)"와 같은 조건부 언어는 일반적으로 특정 구현들이 특정 특징들, 요소들 및/또는 동작들을 포함하지만 다른 구현들은 그것들을 포함하지 않을 수 있음을 전달하도록 의도된 것이다. 따라서, 이러한 조건부 언어는 일반적으로 특징들, 요소들 및/또는 동작들이 하나 이상의 구현에서 어떤 식으로든 요구된다는 것, 또는 하나 이상의 구현이 사용자 입력 또는 프롬프트 유무에 관계없이 이러한 특징들, 요소들 및/또는 동작들이 임의의 특정 구현에 포함되거나 그에서 수행되어야 하는지를 정하기 위한 로직을 반드시 포함한다는 것을 암시하도록 의도되지 않는다.
본 명세서에 제시된 개시내용의 많은 수정들 및 다른 구현들은 전술한 설명들 및 연관된 도면들에 제시된 교시의 이점을 갖는 것이 명백할 것이다. 따라서, 본 개시내용은 개시된 특정 구현들로 제한되지 않고, 수정들 및 다른 구현들이 첨부된 청구항들의 범위 내에 포함되도록 의도됨을 이해해야 한다. 본 명세서에서는 특정 용어들이 사용되지만, 이들은 일반적이고 설명적인 의미로만 사용되며 제한을 목적으로 하는 것은 아니다.

Claims (20)

  1. 방법으로서,
    비트스트림의 제1 인코딩된 비디오 데이터를 수신하는 단계;
    상기 제1 인코딩된 비디오 데이터의 제1 비디오 프레임의 제1 코딩 유닛(coding unit)(CU)을 디코딩하는 단계 - 상기 제1 CU는 제1 변환 유닛(transform unit)(TU) 및 제2 TU를 포함함 -;
    상기 제1 CU를 디코딩하는 것에 연관된 제1 디코딩된 데이터에 기초하여, 그리고 상기 제1 TU 및 상기 제2 TU를 디코딩하기 전에, 상기 제1 TU 및 상기 제2 TU에 대한 개별 변환 계수들을 생성하는 데 사용되는 제1 변환 유형을 결정하는 단계;
    상기 제1 TU를 디코딩하는 단계 - 상기 제1 TU를 디코딩하는 단계는 제1 변환 계수들을 식별하는 단계를 포함함 -;
    상기 제2 TU를 디코딩하는 단계 - 상기 제2 TU를 디코딩하는 단계는 제2 변환 계수들을 식별하는 단계를 포함함 -;
    상기 제1 변환 유형 및 상기 제1 변환 계수들에 기초하여, 상기 제1 TU의 제1 재구성된 픽셀 값들을 생성하는 단계; 및
    상기 제1 변환 유형 및 상기 제2 변환 계수들에 기초하여, 상기 제2 TU의 제2 재구성된 픽셀 값들을 생성하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 제1 변환 유형은 저주파 비분리 변환(Low Frequency Non-Separable Transform)(LFNST)이고, 상기 제1 변환 유형을 결정하는 단계는 상기 제1 디코딩된 데이터에 기초하여, 파티셔닝 트리 유형이 듀얼 크로마 트리가 아닌 것, 매트릭스 인트라 예측 기반 이미지 코딩의 사용을 나타내는 제1 플래그가 참의 값으로 설정되는 것, 또는 상기 LFNST의 제1 폭 또는 상기 LFNST의 제1 높이가 16 미만인 것 중 적어도 하나를 결정하는 단계를 더 포함하는, 방법.
  3. 제1항에 있어서, 상기 제1 변환 유형은 다중 변환 선택(Multi Transform Selection)(MTS)이고, 상기 제1 변환 유형을 결정하는 단계는 상기 제1 디코딩된 데이터에 기초하여, 파티셔닝 트리 유형이 듀얼 크로마 트리인 것, 인트라 서브 파티션 분할 유형이 분할 없음의 값으로 설정되지 않은 것, 서브블록 변환의 사용을 나타내는 제2 플래그가 참의 값으로 설정된 것, 또는 상기 MTS의 폭 또는 상기 MTS의 높이가 32 초과인 것 중 적어도 하나를 결정하는 단계를 더 포함하는, 방법.
  4. 제1항에 있어서,
    상기 비트스트림의 제2 인코딩된 비디오 데이터를 수신하는 단계;
    상기 제2 인코딩된 비디오 데이터의 제2 CU를 디코딩하는 단계 - 상기 제2 CU는 제3 TU 및 제4 TU를 포함함 -;
    상기 제3 TU를 디코딩하는 단계 - 상기 제3 TU를 디코딩하는 단계는 제3 변환 계수들을 식별하는 단계를 포함함 -;
    상기 제3 TU를 디코딩하는 것에 연관된 제2 디코딩된 데이터에 기초하여, 그리고 상기 제4 TU를 디코딩하기 전에, 상기 제3 TU에 대한 상기 제3 변환 계수들을 생성하는 데 사용되는 제2 변환 유형을 결정하는 단계; 및
    상기 제2 변환 유형 및 상기 제3 변환 계수들에 기초하여, 상기 제3 TU의 제3 재구성된 픽셀 값들을 생성하는 단계
    를 더 포함하는, 방법.
  5. 제4항에 있어서,
    상기 제2 CU를 디코딩하는 것에 기초하여, 그리고 상기 제3 TU를 디코딩하기 전에, 상기 제2 변환 유형의 제1 폭 또는 제1 높이가 4 미만이거나 임계값 초과인 것, LFNST 인덱스의 존재를 나타내는 제3 플래그가 거짓의 값으로 설정되는 것, 또는 인터 예측 인코딩 모드가 사용된 것 중 적어도 하나를 결정하는 단계
    를 더 포함하고, 상기 제2 CU의 디코딩에 기초하여 결정하는 단계는 상기 제2 변환 유형이 LFNST가 아님을 나타내는, 방법.
  6. 제4항에 있어서,
    상기 제1 변환 유형은 LFNST이고, 상기 제2 변환 유형을 결정하는 단계는 인트라 예측 인코딩 모드가 사용되는 것, 상기 제2 CU의 크기가 64 x 64 이하인 것, 상기 CU가 6개 이하의 TU를 포함하는 것, 제4 플래그의 값이 1과 동일한 것, 및 상기 제2 변환 유형이 LFNST임을 나타내는 제5 플래그의 값이 0과 동일한 것 중 적어도 하나를 결정하는 단계를 더 포함하는, 방법.
  7. 제4항에 있어서,
    상기 제1 변환 유형은 MTS이고, 상기 제2 변환 유형을 결정하는 단계는 인트라 예측 인코딩 모드가 사용되는 것, 상기 제2 CU의 크기가 32 x 32 이하인 것, 상기 CU가 3개 이하의 TU를 포함하는 것, 또는 상기 제3 TU 및 상기 제4 TU 둘 다가 16 x 16 미만의 변환 계수를 포함하는 것 중 적어도 하나를 결정하는 단계를 더 포함하는, 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 비트스트림의 제3 인코딩된 비디오 데이터를 수신하는 단계;
    상기 제3 인코딩된 비디오 데이터의 제3 CU를 디코딩하는 단계 - 상기 제3 CU는 제5 TU 및 제6 TU를 포함함 -;
    상기 제5 TU를 디코딩하는 단계 - 상기 제5 TU를 디코딩하는 단계는 제4 변환 계수들을 식별하는 단계를 포함함 -;
    상기 제6 TU를 디코딩하는 단계 - 상기 제6 TU를 디코딩하는 단계는 제5 변환 계수들을 식별하는 단계를 포함함 -;
    상기 제3 인코딩된 비디오 데이터의 디코딩 신택스에 기초하여, 상기 제3 CU의 모든 TU를 디코딩한 후, 상기 제4 변환 계수들 및 상기 제5 변환 계수들을 생성하는 데 사용되는 제3 변환 유형을 결정하는 단계;
    상기 제3 변환 유형 및 상기 제4 변환 계수들에 기초하여, 상기 제5 TU의 제4 재구성된 픽셀 값들을 생성하는 단계; 및
    상기 제3 변환 유형 및 상기 제5 변환 계수들에 기초하여, 상기 제6 TU에 대한 제5 재구성된 픽셀 값들을 생성하는 단계
    를 더 포함하는, 방법.
  9. 시스템으로서,
    프로세서; 및
    컴퓨터 실행가능 명령어들을 저장한 메모리
    를 포함하고, 상기 컴퓨터 실행가능 명령어들은 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    비트스트림의 제1 인코딩된 비디오 데이터를 수신하게 하고;
    상기 제1 인코딩된 비디오 데이터의 제1 비디오 프레임의 제1 코딩 유닛(CU)을 디코딩하게 하고 - 상기 제1 CU는 제1 변환 유닛(TU) 및 제2 TU를 포함함 -;
    상기 제1 CU를 디코딩하는 것에 연관된 제1 디코딩된 데이터에 기초하여, 그리고 상기 제1 TU 및 상기 제2 TU를 디코딩하기 전에, 상기 제1 TU 및 상기 제2 TU에 대한 개별 변환 계수들을 생성하는 데 사용되는 제1 변환 유형을 결정하게 하고;
    상기 제1 TU를 디코딩하게 하고 - 상기 제1 TU를 디코딩하는 것은 제1 변환 계수들을 식별하는 것을 포함함 -;
    상기 제2 TU를 디코딩하게 하고 - 상기 제2 TU를 디코딩하는 것은 제2 변환 계수들을 식별하는 것을 포함함 -;
    상기 제1 변환 유형 및 상기 제1 변환 계수들에 기초하여, 상기 제1 TU의 제1 재구성된 픽셀 값들을 생성하게 하고;
    상기 제1 변환 유형 및 상기 제2 변환 계수들에 기초하여, 상기 제2 TU의 제2 재구성된 픽셀 값들을 생성하게 하는,
    시스템.
  10. 제9항에 있어서, 상기 제1 변환 유형은 저주파 비분리 변환(LFNST)이고, 상기 제1 변환 유형을 결정하는 것은 상기 제1 디코딩된 데이터에 기초하여, 파티셔닝 트리 유형이 듀얼 크로마 트리가 아닌 것, 매트릭스 인트라 예측 기반 이미지 코딩의 사용을 나타내는 제1 플래그가 참의 값으로 설정되는 것, 또는 상기 LFNST의 제1 폭 또는 상기 LFNST의 제1 높이가 16 미만인 것 중 적어도 하나를 결정하는 것을 더 포함하는, 시스템.
  11. 제9항에 있어서, 상기 제1 변환 유형은 다중 변환 선택(MTS)이고, 상기 제1 변환 유형을 결정하는 것은 상기 제1 디코딩된 데이터에 기초하여, 파티셔닝 트리 유형이 듀얼 크로마 트리인 것, 인트라 서브 파티션 분할 유형이 분할 없음의 값으로 설정되지 않은 것, 서브블록 변환의 사용을 나타내는 제2 플래그가 참의 값으로 설정된 것, 또는 상기 MTS의 폭 또는 상기 MTS의 높이가 32 초과인 것 중 적어도 하나를 결정하는 것을 더 포함하는, 시스템.
  12. 제9항에 있어서, 상기 컴퓨터 실행가능 명령어들은 상기 프로세서로 하여금:
    상기 비트스트림의 제2 인코딩된 비디오 데이터를 수신하게 하고;
    상기 제2 인코딩된 비디오 데이터의 제2 CU를 디코딩하게 하고 - 상기 제2 CU는 제3 TU 및 제4 TU를 포함함 -;
    상기 제3 TU를 디코딩하게 하고 - 상기 제3 TU를 디코딩하는 것은 제3 변환 계수들을 식별하는 것을 포함함 -;
    상기 제3 TU를 디코딩하는 것에 연관된 제2 디코딩된 데이터에 기초하여, 그리고 상기 제4 TU를 디코딩하기 전에, 상기 제3 TU에 대한 상기 제3 변환 계수들을 생성하는 데 사용되는 제2 변환 유형을 결정하게 하고;
    상기 제2 변환 유형 및 상기 제3 변환 계수들에 기초하여, 상기 제3 TU의 제3 재구성된 픽셀 값들을 생성하게 하는,
    시스템.
  13. 제12항에 있어서, 상기 컴퓨터 실행가능 명령어들은 상기 프로세서로 하여금 또한:
    상기 제2 CU를 디코딩하는 것에 기초하여, 그리고 상기 제3 TU를 디코딩하기 전에, 상기 제2 변환 유형의 제1 폭 또는 제1 높이가 4 미만이거나 임계값 초과인 것, LFNST 인덱스의 존재를 나타내는 제3 플래그가 거짓의 값으로 설정되는 것, 또는 인터 예측 인코딩 모드가 사용된 것 중 적어도 하나를 결정하게 하고,
    상기 제2 CU를 디코딩하는 것에 기초하여 결정하는 것은 상기 제2 변환 유형이 LFNST가 아님을 나타내는, 시스템.
  14. 제12항에 있어서,
    상기 제1 변환 유형은 LFNST이고, 상기 제2 변환 유형을 결정하는 것은 인트라 예측 인코딩 모드가 사용되는 것, 상기 제2 CU의 크기가 64 x 64 이하인 것, 상기 CU가 6개 이하의 TU를 포함하는 것, 제4 플래그의 값이 1과 동일한 것, 및 상기 제2 변환 유형이 LFNST임을 나타내는 제5 플래그의 값이 0과 동일한 것 중 적어도 하나를 결정하는 것을 더 포함하는, 시스템.
  15. 제12항에 있어서,
    상기 제1 변환 유형은 MTS이고, 상기 제2 변환 유형을 결정하는 것은 인트라 예측 인코딩 모드가 사용되는 것, 상기 제2 CU의 크기가 32 x 32 이하인 것, 상기 CU가 3개 이하의 TU를 포함하는 것, 또는 상기 제3 TU 및 상기 제4 TU 둘 다가 16 x 16 미만의 변환 계수를 포함하는 것 중 적어도 하나를 결정하는 것을 더 포함하는, 시스템.
  16. 제9항 내지 제15항 중 어느 한 항에 있어서, 상기 컴퓨터 실행가능 명령어들은 상기 프로세서로 하여금 또한:
    상기 비트스트림의 제3 인코딩된 비디오 데이터를 수신하게 하고;
    상기 제3 인코딩된 비디오 데이터의 제3 CU를 디코딩하게 하고 - 상기 제3 CU는 제5 TU 및 제6 TU를 포함함 -;
    상기 제5 TU를 디코딩하게 하고 - 상기 제5 TU를 디코딩하는 것은 제4 변환 계수들을 식별하는 것을 포함함 -;
    상기 제6 TU를 디코딩하게 하고 - 상기 제6 TU를 디코딩하는 것은 제5 변환 계수들을 식별하는 것을 포함함 -;
    상기 제3 인코딩된 비디오 데이터의 디코딩 신택스에 기초하여, 상기 제3 CU의 모든 TU를 디코딩한 후, 상기 제4 변환 계수들 및 상기 제5 변환 계수들을 생성하는 데 사용되는 제3 변환 유형을 결정하게 하고;
    상기 제3 변환 유형 및 상기 제4 변환 계수들에 기초하여, 상기 제5 TU의 제4 재구성된 픽셀 값들을 생성하게 하고;
    상기 제3 변환 유형 및 상기 제5 변환 계수들에 기초하여, 상기 제6 TU에 대한 제5 재구성된 픽셀 값들을 생성하게 하는,
    시스템.
  17. 컴퓨터 실행가능 명령어들을 저장한 컴퓨터 판독가능 매체로서,
    상기 컴퓨터 실행가능 명령어들은 하나 이상의 프로세서에 의해 실행될 때,
    비트스트림의 제1 인코딩된 비디오 데이터를 수신하는 동작;
    상기 제1 인코딩된 비디오 데이터의 제1 비디오 프레임의 제1 코딩 유닛(CU)을 디코딩하는 동작 - 상기 제1 CU는 제1 변환 유닛(TU) 및 제2 TU를 포함함 -;
    상기 제1 CU를 디코딩하는 것에 연관된 제1 디코딩된 데이터에 기초하여, 그리고 상기 제1 TU 및 상기 제2 TU를 디코딩하기 전에, 상기 제1 TU 및 상기 제2 TU에 대한 개별 변환 계수들을 생성하는 데 사용되는 제1 변환 유형을 결정하는 동작;
    상기 제1 TU를 디코딩하는 동작 - 상기 제1 TU를 디코딩하는 동작은 제1 변환 계수들을 식별하는 동작을 포함함 -;
    상기 제2 TU를 디코딩하는 동작 - 상기 제2 TU를 디코딩하는 동작은 제2 변환 계수들을 식별하는 동작을 포함함 -;
    상기 제1 변환 유형 및 상기 제1 변환 계수들에 기초하여, 상기 제1 TU의 제1 재구성된 픽셀 값들을 생성하는 동작; 및
    상기 제1 변환 유형 및 상기 제2 변환 계수들에 기초하여, 상기 제2 TU의 제2 재구성된 픽셀 값들을 생성하는 동작
    을 포함하는 동작들을 수행하는 결과를 초래하는, 컴퓨터 판독가능 매체.
  18. 제17항에 있어서, 상기 제1 변환 유형은 저주파 비분리 변환(LFNST)이고, 상기 제1 변환 유형을 결정하는 동작은 상기 제1 디코딩된 데이터에 기초하여, 파티셔닝 트리 유형이 듀얼 크로마 트리가 아닌 것, 매트릭스 인트라 예측 기반 이미지 코딩의 사용을 나타내는 제1 플래그가 참의 값으로 설정되는 것, 또는 상기 LFNST의 제1 폭 또는 상기 LFNST의 제1 높이가 16 미만인 것 중 적어도 하나를 결정하는 동작을 더 포함하는, 컴퓨터 판독가능 매체.
  19. 제17항에 있어서, 상기 제1 변환 유형은 다중 변환 선택(MTS)이고, 상기 제1 변환 유형을 결정하는 동작은 상기 제1 디코딩된 데이터에 기초하여, 파티셔닝 트리 유형이 듀얼 크로마 트리인 것, 인트라 서브 파티션 분할 유형이 분할 없음의 값으로 설정되지 않은 것, 서브블록 변환의 사용을 나타내는 제2 플래그가 참의 값으로 설정된 것, 또는 상기 MTS의 폭 또는 상기 MTS의 높이가 32 초과인 것 중 적어도 하나를 결정하는 동작을 더 포함하는, 컴퓨터 판독가능 매체.
  20. 제17항에 있어서, 상기 컴퓨터 실행가능 명령어들은 상기 프로세서로 하여금 또한:
    상기 비트스트림의 제2 인코딩된 비디오 데이터를 수신하게 하고;
    상기 제2 인코딩된 비디오 데이터의 제2 CU를 디코딩하게 하고 - 상기 제2 CU는 제3 TU 및 제4 TU를 포함함 -;
    상기 제3 TU를 디코딩하게 하고 - 상기 제3 TU를 디코딩하는 것은 제3 변환 계수들을 식별하는 것을 포함함 -;
    상기 제3 TU를 디코딩하는 것에 연관된 제2 디코딩된 데이터에 기초하여, 그리고 상기 제4 TU를 디코딩하기 전에, 상기 제3 TU에 대한 상기 제3 변환 계수들을 생성하는 데 사용되는 제2 변환 유형을 결정하게 하고;
    상기 제2 변환 유형 및 상기 제3 변환 계수들에 기초하여, 상기 제3 TU의 제3 재구성된 픽셀 값들을 생성하게 하고;
    상기 제1 변환 유형에 기초하여, 상기 제3 TU의 역변환을 결정하게 하는,
    컴퓨터 판독가능 매체.
KR1020220143451A 2021-12-03 2022-11-01 저주파 비분리 변환 및 다중 변환 선택 교착 방지 KR20230084025A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/457,643 2021-12-03
US17/457,643 US20220094931A1 (en) 2021-12-03 2021-12-03 Low frequency non-separable transform and multiple transform selection deadlock prevention

Publications (1)

Publication Number Publication Date
KR20230084025A true KR20230084025A (ko) 2023-06-12

Family

ID=80741027

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220143451A KR20230084025A (ko) 2021-12-03 2022-11-01 저주파 비분리 변환 및 다중 변환 선택 교착 방지

Country Status (4)

Country Link
US (1) US20220094931A1 (ko)
KR (1) KR20230084025A (ko)
CN (1) CN116233469A (ko)
DE (1) DE102022126701A1 (ko)

Also Published As

Publication number Publication date
CN116233469A (zh) 2023-06-06
DE102022126701A1 (de) 2023-06-07
US20220094931A1 (en) 2022-03-24

Similar Documents

Publication Publication Date Title
CN106797464B (zh) 用于视频编码和解码中的矢量编码的方法和装置
US20160050431A1 (en) Method and system for organizing pixel information in memory
US9756346B2 (en) Edge-selective intra coding
WO2020143585A1 (zh) 视频编码器、视频解码器及相应方法
CN110679151A (zh) 使用参数化运动模型的视频代码化
CN112352434B (zh) 用于帧内预测的基于宽高比滤波的方法和装置
CN112118447B (zh) 融合候选运动信息列表的构建方法、装置及编解码器
US20160165230A9 (en) Color Component Checksum Computation in Video Coding
US20220116611A1 (en) Enhanced video coding using region-based adaptive quality tuning
US20220109825A1 (en) Validation framework for media encode systems
KR20230084025A (ko) 저주파 비분리 변환 및 다중 변환 선택 교착 방지
CN112135149B (zh) 语法元素的熵编码/解码方法、装置以及编解码器
US20220094984A1 (en) Unrestricted intra content to improve video quality of real-time encoding
WO2023184206A1 (en) Enhanced presentation of tiles of residual sub-layers in low complexity enhancement video coding encoded bitstream
US20220116595A1 (en) Enhanced video coding using a single mode decision engine for multiple codecs
US20220182600A1 (en) Enhanced validation of video codecs
US20230010681A1 (en) Bit-rate-based hybrid encoding on video hardware assisted central processing units
WO2024016106A1 (en) Low-complexity enhancement video coding using multiple reference frames
WO2024060213A1 (en) Viewport switch latency reduction in live streaming
US20170257632A1 (en) Encoding method of image encoding device
US20230012862A1 (en) Bit-rate-based variable accuracy level of encoding
WO2023102868A1 (en) Enhanced architecture for deep learning-based video processing
US20220174213A1 (en) Camera fusion architecture to enhance image quality in the region of interest
RU2803063C2 (ru) Кодер, декодер и соответствующие способы, которые используются для процесса преобразования
WO2022217442A1 (zh) 系数编解码方法、编码器、解码器以及计算机存储介质