KR20220032623A - 복수의 컬러 성분들의 공동 변환 코딩 - Google Patents

복수의 컬러 성분들의 공동 변환 코딩 Download PDF

Info

Publication number
KR20220032623A
KR20220032623A KR1020227005283A KR20227005283A KR20220032623A KR 20220032623 A KR20220032623 A KR 20220032623A KR 1020227005283 A KR1020227005283 A KR 1020227005283A KR 20227005283 A KR20227005283 A KR 20227005283A KR 20220032623 A KR20220032623 A KR 20220032623A
Authority
KR
South Korea
Prior art keywords
transform
residual
blocks
chroma prediction
block
Prior art date
Application number
KR1020227005283A
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 KR20220032623A publication Critical patent/KR20220032623A/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive 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/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • 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/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • 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/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)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

프로세서 또는 프로세서들로 하여금 적어도 2개의 크로마 예측-잔차 신호 블록의 데이터를 포함하는 AV1(AOMedia Video 1) 포맷의 비디오 데이터의 수신, 크로마 예측-잔차 신호 블록들의 조합 이하의 크기를 갖는 적어도 하나의 신호 블록과 크로마 예측-잔차 신호 블록들 간의 변환, 및 크로마 예측-잔차 블록들의 조합 이하의 크기를 갖는 적어도 하나의 신호 블록을 포함하는 변환의 출력에 기초한 비디오 데이터의 디코딩을 수행하게 하도록 구성되는 컴퓨터 코드를 포함하는 방법 및 장치가 포함된다.

Description

복수의 컬러 성분들의 공동 변환 코딩
관련 출원에 대한 상호 참조/우선권 주장
본 출원은 2020년 3월 26일자로 출원된 미국 가출원 번호 제63/000,109호, 및 2020년 10월 29일자로 출원된 미국 출원 번호 제17/083,662호의 우선권을 주장하며, 그 전체내용은 참조에 의해 본 출원에 명시적으로 포함된다.
기술분야
본 개시내용은 일반적으로 데이터 프로세싱의 분야에 관한 것으로, 더 구체적으로는 비디오 인코딩 및/또는 디코딩에 관한 것이다.
AV1(AOMedia Video 1)은 인터넷을 통한 비디오 전송을 위해 설계된 오픈 비디오 코딩 포맷이다. 그것은 반도체 회사, 주문형 비디오 제공자, 비디오 콘텐츠 제작자, 소프트웨어 개발 회사 및 웹 브라우저 공급업체를 포함하는, 2015년에 설립된 컨소시엄인 오픈 미디어 얼라이언스(Alliance for Open Media)(AOMedia)에 의해 VP9의 후속편으로서 개발되었다. AV1에는 총 56개의 방향성 각도가 있으며, 그 중 8개는 공칭 각도이고 나머지는 공칭 각도로부터의 델타로서 지정된다.
AV1 프로젝트의 컴포넌트들 중 다수는 얼라이언스 회원들의 이전 연구 노력에서 제공되었다. 개별 기여자들은 몇 년 전에 실험적 기술 플랫폼들을 시작했다: Xiph's/Mozilla's Daala는 이미 2010년에 코드를 게시했고, Google의 실험적 VP9 진화 프로젝트 VP10은 2014년 9월 12일에 발표되었으며, Cisco의 Thor는 2015년 8월 11일에 게시되었다. VP9의 코드베이스 상에 구축하여, AV1은 추가 기술들을 통합하고, 이들 중 몇몇은 이러한 실험적 포맷들에서 개발되었다. AV1 참조 코덱의 첫 번째 버전 0.1.0은 2016년 4월 7일에 게시되었다. 얼라이언스는 2018년 3월 28일에, 기준 소프트웨어 기반 인코더 및 디코더와 함께 AV1 비트스트림 사양의 릴리스를 발표했다. 2018년 6월 25일에, 사양의 검증된 버전 1.0.0이 릴리스되었다. 2019년 1월 8일에, 사양의 Errata 1과 함께 검증된 버전 1.0.0이 릴리스되었다. AV1 비트스트림 사양은 기준 비디오 코덱을 포함한다.
ITU-T VCEG(Q6/16) 및 ISO/IEC MPEG(JTC 1/SC 29/WG 11)는 2013년(버전 1), 2014년(버전 2), 2015(버전 3) 및 2016(버전 4)에 H.265/HEVC(고효율 비디오 코딩(High Efficiency Video Coding)) 표준을 게시했다. 그 이후로 그들은 압축 능력에서 HEVC를 훨씬 능가할 수 있는 미래 비디오 코딩 기술의 표준화에 대한 잠재적인 필요성을 연구해 왔다. 2017년 10월에, 그들은 HEVC를 넘어서는 능력을 가진 비디오 압축에 대한 공동 제안(CfP)을 발표했다. 2018년 2월 15일까지, 표준 동적 범위(standard dynamic range)(SDR)에 대한 총 22개의 CfP 응답, 높은 동적 범위(high dynamic range)(HDR)에 대한 12개의 CfP 응답, 및 360개의 비디오 카테고리에 대한 12개의 CfP 응답이 각각 제출되었다. 2018년 4월에, 접수된 모든 CfP 응답은 122 MPEG/10차 JVET(Joint Video Exploration Team - Joint Video Expert Team) 회의에서 평가되었다. 신중한 평가와 함께, JVET는 HEVC를 넘어서는 차세대 비디오 코딩의 표준화, 즉 소위 다목적 비디오 코딩(Versatile Video Coding)(VVC)을 공식적으로 시작했다.
AV1에서, 예측 잔차 신호들은 크로마 채널들, 예를 들어 Cb 및 Cr에 대해 다양한 수단에 의해 생성되고, 각각 인트라 및 인터 코딩 시나리오에 적용된다. 대부분의 경우에서, Cb 및 Cr 채널들에 동일한 예측 방법 세트들이 적용되므로, 상이한 크로마 채널들로부터의 결과적인 잔차 신호들은 범주화될 수 있는 특정 방식으로 상관되는 경향이 있다. AV1은 더 나은 압축 효율성을 위해 이러한 중복성을 제거하는 코딩 도구들을 갖지 않는다는 점에 유의해야 한다. 한편, 현재의 VVC 설계는 그러한 경향들을 활용하는 한 가지 방식을 제공하지만, 2개의 공존하는(co-located) 크로마 샘플 간의 상관관계만을 이용한다는 점에서 제한적이다.
본 개시내용은 고급 비디오 코딩 기술들의 세트를 제시한다. 더 구체적으로, 복수의 컬러 성분으로부터의 잔차들, 예를 들어 2개의 크로마 성분으로부터의 잔차들의 공동 코딩(joint coding)을 위한 변환 방식이 개시된다.
컴퓨터 프로그램 코드를 저장하도록 구성되는 메모리, 및 컴퓨터 프로그램 코드에 액세스하고 컴퓨터 프로그램 코드에 의해 지시된 대로 동작하도록 구성되는 프로세서 또는 프로세서들을 포함하는 방법 및 장치가 포함된다. 컴퓨터 프로그램은 적어도 하나의 프로세서로 하여금, 적어도 2개의 크로마 예측-잔차 신호 블록의 데이터를 포함하는 AV1(AOMedia Video 1) 포맷의 비디오 데이터를 수신하게 하도록 구성되는 수신 코드; 적어도 하나의 프로세서로 하여금, 크로마 예측-잔차 신호 블록들의 조합 이하의 크기를 갖는 적어도 하나의 신호 블록과 크로마 예측-잔차 신호 블록들 간의 변환을 수행하게 하도록 구성되는 수행 코드; 및 적어도 하나의 프로세서로 하여금, 크로마 예측-잔차 블록들의 조합 이하의 크기를 갖는 적어도 하나의 신호 블록을 포함하는 변환의 출력에 기초하여 비디오 데이터를 디코딩하게 하도록 구성되는 디코딩 코드를 포함한다.
예시적인 실시예들에 따르면, 크로마 예측-잔차 신호 블록들은 N1xN2 Cb 잔차 블록 및 N1xN2 Cr 잔차 블록을 포함한다.
예시적인 실시예들에 따르면, 변환은 크로마 예측-잔차 신호 블록들의 조합 이하의 크기를 갖는 적어도 하나의 신호 블록의 계수들의 시그널링된 인덱스들을 역양자화하고, 역양자화된 시그널링된 인덱스들을 2xN1xN2 x LxM 행렬에 의해 변환하는 것을 포함하고, 2xN1xN2는 크로마 예측-잔차 블록들의 조합의 크기이고, LxM은 크로마 예측 잔차 블록들의 조합 이하의 크기이다.
예시적인 실시예들에 따르면, 역양자화된 시그널링된 인덱스들을 2xN1xN2 x LxM 행렬에 의해 변환한 결과는 재구성된 2xN1xN2 벡터를 포함하고, 비디오 데이터를 디코딩하는 단계는 재구성된 2xN1xN2 벡터로부터 N1xN2 Cb 잔차 블록 및 N1xN2 Cr 잔차 블록을 재구성하는 단계를 포함한다.
예시적인 실시예들에 따르면, 적어도 하나의 신호 블록은 적어도 2개의 크로마 예측-잔차 신호 블록의 인터리빙을 포함한다.
예시적인 실시예들에 따르면, 적어도 하나의 신호 블록은 2xN1xN2 3차원(3D) 입방체를 포함한다.
예시적인 실시예들에 따르면, 변환은 3D 입방체의 x축을 따른 N1x1 벡터들 각각에 대한 N1-포인트 1D 변환, 3D 입방체의 y축을 따른 N2x1 벡터들 각각에 대한 N2-포인트 1D 변환, 및 3D 입방체의 z축을 따른 2x1 벡터들 각각에 대한 2-포인트 변환을 포함한다.
예시적인 실시예들에 따르면, 변환은 3D 입방체의 z축을 따른 2x1 벡터들 각각에 대한 2-포인트 1D 변환, 및 3D 입방체의 xy 평면에 대한 N1xN2 변환을 포함한다.
예시적인 실시예들에 따르면, 변환을 수행하는 단계는 1차 변환 및 2차 변환을 수행하는 단계를 포함한다.
예시적인 실시예들에 따르면, 1차 변환 및 2차 변환 중 적어도 하나는 크로마 예측-잔차 신호 블록들 중 적어도 하나의 계수에 연관된 좌표의 값이 임계값 이상인 미리 결정된 조건을 결정하는 것에 응답하여 계수들을 제로로 설정하는 것을 포함한다.
이들 및 다른 목적들, 특징들 및 이점들은 첨부된 도면과 관련하여 읽혀질 예시적인 실시예들의 이하의 상세한 설명으로부터 명백해질 것이다. 도시들은 상세한 설명과 관련한 본 기술분야의 통상의 기술자의 이해를 용이하게 하는 데에 있어서의 명확성을 위한 것이므로, 도면의 다양한 특징들은 비례에 맞지 않는다.
도 1은 적어도 하나의 실시예에 따른 네트워크화된 컴퓨터 환경을 도시한다.
도 2는 적어도 하나의 실시예에 따른 AV1의 공칭 각도들의 도면이다.
도 3은 적어도 하나의 실시예에 따른 비디오 데이터를 코딩하는 프로그램에 의해 수행되는 단계들을 도시하는 동작 흐름도이다.
도 4는 적어도 하나의 실시예에 따른 도 1에 도시된 컴퓨터들 및 서버들의 내부 및 외부 컴포넌트들의 블록도이다.
도 5는 적어도 하나의 실시예에 따른 도 1에 도시된 컴퓨터 시스템을 포함하는 예시적인 클라우드 컴퓨팅 환경의 블록도이다.
도 6은 적어도 하나의 실시예에 따른 도 5의 예시적인 클라우드 컴퓨팅 환경의 기능 계층들의 블록도이다.
도 7은 예시적인 실시예들에 따른 AVI에서의 무방향성 평활 인트라 예측기들(non-directional smooth intra predictors)에 대한 특징들(features)의 블록도이다.
도 8은 예시적인 실시예들에 따른 재귀적 인트라 필터링 모드들에 대한 특징들의 블록도이다.
도 9는 예시적인 실시예들에 따른 다계층 참조 프레임 구조에 대한 특징들의 블록도이다.
도 10은 예시적인 실시예들에 따른 후보 움직임 벡터 목록 구축에 대한 특징들의 블록도이다.
도 11은 예시적인 실시예들에 따른 움직임 필드 추정에 대한 특징들의 라인도(line diagram)이다.
도 12는 예시적인 실시예들에 따른 중첩 블록 움직임 보상(overlapped block motion compensation)(OMBC)을 위한 중첩 영역들에 대한 특징들의 블록도이다.
도 13은 예시적인 실시예들에 따른 워핑 움직임 보상(warped motion compensation)에 대한 특징들의 블록도이다.
도 14는 예시적인 실시예들에 따른 고급 복합 예측(advanced compound prediction)에 대한 특징들의 블록도이다.
도 15는 예시적인 실시예들에 따른 특징들의 흐름도이다.
도 16은 예시적인 실시예들에 따른 3D 입방체로 합쳐진 잔차들에 대한 특징들의 공간도(spatial diagram)이다.
도 17은 예시적인 실시예들에 따른 시스템에 대한 특징들의 블록도이다.
도 18은 예시적인 실시예들에 따른 디코더에 대한 특징들의 블록도이다.
도 19는 예시적인 실시예들에 따른 인코더에 대한 특징들의 블록도이다.
청구된 구조들 및 방법들의 상세한 실시예들이 여기에 개시되지만; 개시된 실시예들은 단지 다양한 형태들로 구현될 수 있는 청구된 구조들 및 방법들을 예시 한 것임을 이해할 수 있다. 그러나, 이러한 구조들 및 방법들은 다수의 상이한 형태들로 구현될 수 있으며, 여기에 제시되는 예시적인 실시예들에 제한되는 것으로 해석되어서는 안 된다. 오히려, 이러한 예시적인 실시예들은 본 개시내용이 철저하고 완전하며, 본 기술분야의 통상의 기술자에게 범위를 완전히 전달할 수 있도록 제공된다. 설명에서, 잘 알려진 특징들 및 기술들의 세부사항들은 제시된 실시예들을 불필요하게 모호하게 하는 것을 피하기 위해 생략될 수 있다.
실시예들은 일반적으로 데이터 프로세싱의 분야에 관한 것으로, 더 구체적으로는 비디오 인코딩 및 디코딩에 관한 것이다. 이하에 설명된 예시적인 실시예들은 다른 것들 중에서도 공칭 각도 값들로부터 도출된 델타 각도 값들을 사용하여 비디오 데이터를 인코딩 및/또는 디코딩하기 위한 시스템, 방법 및 컴퓨터 프로그램을 제공한다. 그러므로, 일부 실시예들은 모든 델타 각도가 시그널링될 것을 요구하지 않고 델타 각도 값들의 즉석 계산들(on-the-fly calculations)을 허용함으로써 컴퓨팅 분야를 개선할 수 있는 능력을 갖는다.
앞에서 설명된 바와 같이, AV1(AOMedia Video 1)은 인터넷을 통한 비디오 전송을 위해 설계된 오픈 비디오 코딩 포맷이다. 그것은 반도체 회사, 주문형 비디오 제공자, 비디오 콘텐츠 제작자, 소프트웨어 개발 회사 및 웹 브라우저 공급업체를 포함하는, 2015년에 설립된 컨소시엄인 오픈 미디어 얼라이언스(Alliance for Open Media)(AOMedia)에 의해 VP9의 후속편으로서 개발되었다. AV1에는 총 56개의 방향성 각도가 있으며, 그 중 8개는 공칭 각도이고 나머지는 공칭 각도로부터의 델타로서 지정된다. 그러나, 모든 방향성 모드들의 공칭 각도들 및 델타 각도들 둘 다는 공존하는 루마 예측 모드들에 관계없이 크로마 성분에 대해 시그널링된다. 추가적으로, 델타 각도들은 루마 및 크로마 인트라 예측 모드 둘 다에 대해 허용되지만, 루마와 크로마 성분 사이의 델타 각도들의 상관관계는 사용되지 않는다. 그러므로, 모든 56개의 각도 값을 시그널링하는 대신에 루마 성분으로부터의 공칭 각도들에 기초하여 크로마 성분에 대한 델타 각도 값들을 도출하는 것이 유리할 수 있다.
여기에서는 다양한 실시예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 판독가능한 매체의 흐름도들 및/또는 블록도들을 참조하여 양태들이 설명된다. 흐름도들 및/또는 블록도들의 각각의 블록, 및 흐름도들 및/또는 블록도들 내의 블록들의 조합들은 컴퓨터 판독가능한 프로그램 명령어들에 의해 구현될 수 있음이 이해될 것이다.
이제 도 1을 참조하면, 네트워크 컴퓨터 환경의 기능 블록도는 공칭 각도들로부터 도출된 델타 각도들을 사용하여 비디오 데이터를 인코딩 및/또는 디코딩하기 위한 비디오 코딩 시스템(100)(이하 "시스템")을 도시한다. 도 1은 하나의 구현의 예시를 제공할 뿐이며, 상이한 실시예들이 구현될 수 있는 환경들에 대한 어떠한 제한도 암시하지 않음을 알아야 한다. 도시된 환경들에 대한 많은 수정들이 설계 및 구현 요건들에 기초하여 이루어질 수 있다.
시스템(100)은 컴퓨터(102) 및 서버 컴퓨터(114)를 포함할 수 있다. 컴퓨터(102)는 통신 네트워크(110)(이하 "네트워크")를 통해 서버 컴퓨터(114)와 통신할 수 있다. 컴퓨터(102)는 프로세서(104), 및 데이터 저장 디바이스(106)에 저장된 소프트웨어 프로그램(108)을 포함할 수 있고, 사용자와 인터페이스하고 서버 컴퓨터(114)와 통신할 수 있다. 도 4를 참조하여 이하에 논의되는 바와 같이, 컴퓨터(102)는 내부 컴포넌트들(800A) 및 외부 컴포넌트들(900A)을 각각 포함할 수 있고, 서버 컴퓨터(114)는 내부 컴포넌트들(800B) 및 외부 컴포넌트들(900B)을 각각 포함할 수 있다. 컴퓨터(102)는 예를 들어, 모바일 디바이스, 전화, 개인 정보 단말, 넷북, 랩톱 컴퓨터, 태블릿 컴퓨터, 데스크톱 컴퓨터, 또는 프로그램을 실행하고 네트워크에 액세스하고 데이터베이스에 액세스할 수 있는 임의의 타입의 컴퓨팅 디바이스들일 수 있다.
도 6 및 도 7에 대하여 이하에 논의되는 바와 같이, 서버 컴퓨터(114)는 또한 서비스로서의 소프트웨어(Software as a Service)(SaaS), 서비스로서의 플랫폼(Platform as a Service)(PaaS), 또는 서비스로서의 인프라스트럭처(Infrastructure as a Service)(IaaS)와 같은 클라우드 컴퓨팅 서비스 모델에서 동작할 수 있다. 서버 컴퓨터(114)는 또한 사설 클라우드, 커뮤니티 클라우드, 공용 클라우드, 또는 하이브리드 클라우드와 같은 클라우드 컴퓨팅 배치 모델 내에 위치될 수 있다.
비디오 데이터를 인코딩하기 위해 사용될 수 있는 서버 컴퓨터(114)는 데이터베이스(112)와 상호작용할 수 있는 비디오 인코딩 프로그램(116)(이하 "프로그램")을 실행할 수 있다. 비디오 인코딩 프로그램 방법은 도 3에 대하여 아래에서 더 상세하게 설명된다. 일 실시예에서, 컴퓨터(102)는 사용자 인터페이스를 포함하는 입력 디바이스로서 동작할 수 있는 한편, 프로그램(116)은 주로 서버 컴퓨터(114) 상에서 실행될 수 있다. 대안적인 실시예에서, 프로그램(116)은 주로 하나 이상의 컴퓨터(102)에서 실행될 수 있는 한편, 서버 컴퓨터(114)는 프로그램(116)에 의해 사용되는 데이터의 프로세싱 및 저장을 위해 사용될 수 있다. 프로그램(116)은 독립형 프로그램일 수 있거나 더 큰 비디오 인코딩 프로그램에 통합될 수 있다는 점에 유의해야 한다.
그러나, 프로그램(116)에 대한 프로세싱은 일부 경우들에서 컴퓨터들(102)과 서버 컴퓨터들(114) 사이에서 임의의 비로 공유될 수 있다는 점에 유의해야 한다. 다른 실시예에서, 프로그램(116)은 하나 초과의 컴퓨터, 서버 컴퓨터, 또는 컴퓨터들 및 서버 컴퓨터들의 소정의 조합, 예를 들어 네트워크(110)를 통해 단일 서버 컴퓨터(114)와 통신하는 복수의 컴퓨터(102)에서 동작할 수 있다. 다른 실시예에서, 예를 들어, 프로그램(116)은 네트워크(110)를 통해 복수의 클라이언트 컴퓨터와 통신하는 복수의 서버 컴퓨터(114)에서 동작할 수 있다. 대안적으로, 프로그램은 네트워크를 통해 서버 및 복수의 클라이언트 컴퓨터와 통신하는 네트워크 서버 상에서 동작할 수 있다.
네트워크(110)는 유선 연결들, 무선 연결들, 광섬유 연결들, 또는 이들의 소정의 조합을 포함할 수 있다. 일반적으로, 네트워크(110)는 컴퓨터(102)와 서버 컴퓨터(114) 사이의 통신을 지원할 연결들 및 프로토콜들의 임의의 조합일 수 있다. 네트워크(110)는 예를 들어 근거리 통신망(LAN), 인터넷과 같은 광역 통신망(WAN), 공중 교환 전화망(Public Switched Telephone Network)(PSTN)과 같은 통신 네트워크, 무선 네트워크, 공용 교환 네트워크, 위성 네트워크, 셀룰러 네트워크(예를 들어, 5세대(5G) 네트워크, 롱-텀 에볼루션(LTE) 네트워크, 3세대(3G) 네트워크, 코드 분할 다중 액세스(CDMA) 네트워크 등), 공용 지상 이동 네트워크(public land mobile network)(PLMN), 대도시 영역 네트워크(MAN), 사설 네트워크, 애드혹 네트워크, 인트라넷, 광섬유 기반 네트워크 또는 그와 유사한 것, 및/또는 이들 또는 다른 타입의 네트워크들의 조합과 같은 다양한 타입의 네트워크들을 포함할 수 있다.
도 1에 보여진 디바이스들 및 네트워크들의 수 및 배열은 예시로서 제공된다. 실제로, 추가 디바이스들 및/또는 네트워크들, 더 적은 수의 디바이스들 및/또는 네트워크들, 상이한 디바이스들 및/또는 네트워크들, 또는 도 1에 보여진 것들과는 다르게 배열된 디바이스들 및/또는 네트워크들이 있을 수 있다. 또한, 도 1에 보여진 둘 이상의 디바이스는 단일 디바이스 내에 구현될 수 있고, 또는 도 1에 보여진 단일 디바이스는 복수의 분산된 디바이스로서 구현될 수 있다. 추가적으로 또는 대안적으로, 시스템(100)의 디바이스 세트(예를 들어, 하나 이상의 디바이스)는 시스템(100)의 다른 디바이스 세트에 의해 수행되는 것으로서 설명된 하나 이상의 기능을 수행할 수 있다.
이제 도 2를 참조하면, AV1의 공칭 각도들을 도시하는 도면(200)이 도시되어 있다. VP9는 45도 내지 207도의 각도들에 대응하는 8가지 방향성 모드를 지원한다. 방향성 텍스처들에서 더 다양한 공간 중복성을 활용하기 위해, AV1에서는 방향성 인트라 모드들이 더 세밀한 입도(granularity)로 설정된 각도로 확장된다. AV1에서, V_PRED, H_PRED, D45_PRED, D135_PRED, D113_PRED, D157_PRED, D203_PRED 및 D67_PRED를 포함할 수 있는 45도 내지 207도의 8개의 공칭 각도가 있다. 각각의 공칭 각도에 대해 7개의 더 미세한 각도가 있을 수 있으므로, AV1은 총 56개의 방향성 각도를 가질 수 있다. 예측 각도는 공칭 인트라 각도와, 3도의 단계 크기의 -3 ~ 3배인 각도 델타를 더한 것에 의해 표현될 수 있다. 델타 각도들은 크로마 성분에 의해 시그널링될 필요가 있는 것이 아니라, 대신에 대응하는 루마 인트라 예측 모드들에 따라 도출될 수 있다.
AV1에서는, 5개의 비각도 평활 모드와 함께 8개의 공칭 모드가 먼저 시그널링되고, 현재 모드가 각도 모드인 경우, 대응하는 공칭 각도에 대한 각도 델타를 나타내기 위해 인덱스가 추가로 시그널링된다. 일반적인 방법을 통해 AV1에서 방향성 예측 모드들을 구현하기 위해, AV1 내의 모든 56개의 방향성 인트라 예측 모드는 각각의 픽셀을 참조 서브-픽셀 위치에 투영하고 2탭 쌍선형 필터(2-tap bilinear filter)에 의해 참조 픽셀을 보간하는 통합 방향성 예측기(unified directional predictor)로 구현된다.
하나 이상의 실시예에서, 현재의 크로마 인트라 예측 모드가 방향성 인트라 예측 모드이고, 크로마 인트라 예측 모드의 공칭 각도가 대응하는 루마 인트라 예측 모드의 것과 동일한 경우, 크로마 성분의 델타 각도는 루마 인트라 예측 모드의 델타 각도와 동일하게 설정될 수 있다. 그렇지 않으면, 크로마 성분의 델타 각도는 0과 동일하게 설정될 수 있다.
하나 이상의 실시예에서, 크로마 성분의 델타 각도는 루마와 크로마 사이의 공칭 모드가 동일한지 여부에 관계없이 루마 성분의 델타 각도와 동일하게 설정될 수 있다.
하나 이상의 실시예에서, 현재의 크로마 인트라 예측 모드가 방향성 인트라 예측 모드이고, 크로마 인트라 예측 모드의 공칭 각도가 대응하는 루마 인트라 예측 모드의 것과 동일한 경우, 크로마 성분의 델타 각도는 루마 인트라 예측 모드의 델타 각도와 동일하게 설정될 수 있다. 그렇지 않으면, 크로마 인트라 예측 모드의 공칭 각도가 대응하는 루마 블록의 좌측/상부 이웃 모드들과 동일할 때, 크로마 성분의 델타 각도는 대응하는 루마 블록의 좌측/상부 이웃 모드들의 것과 동일하게 설정될 수 있다. 그렇지 않으면, 크로마 성분의 델타 각도는 0과 동일하게 설정될 수 있다.
하나 이상의 실시예에서, 반-분리된 구획화(semi-decoupled partitioning)가 적용될 때, 하나의 크로마 블록에 연관된 복수의 루마 블록이 있을 수 있다. 따라서, 복수의 샘플 위치가 미리 정의될 수 있고, 공존하는 루마 블록을 예측하기 위해 이러한 위치들에 연관된 델타 각도들 및 공칭 각도들이 식별될 수 있다. 이러한 식별된 공칭 각도들 및 델타 각도들 중 하나 이상은 현재 크로마 블록의 델타 각도들을 도출하는 데 사용될 수 있다. 일례에서, 미리 정의된 샘플 위치들은 상단-좌측 및/또는 중앙/중간 샘플들을 포함할 수 있다. 다른 예에서, 미리 정의된 샘플 위치들은 4개의 코너 샘플 및 중앙/중간 샘플을 포함할 수 있다. 다른 예에서, 식별된 예측 모드들 중 가장 빈번하게 사용될 수 있는 델타 각도들은 크로마 성분의 델타 각도들을 도출하기 위해 사용될 수 있다. 다른 예에서, 미리 정의된 샘플 위치들은 4개의 코너 샘플 및 하나의 중앙/중간 샘플 중 2개의 선택된 위치를 포함할 수 있다. 다른 예에서, 미리 정의된 샘플 위치들은 4개의 코너 샘플 및 하나의 중앙/중간 샘플 중 3개의 선택된 위치를 포함할 수 있다.
하나 이상의 실시예에서, 현재 크로마 인트라 예측 모드가 방향성 인트라 예측 모드이고, 크로마 인트라 예측 모드의 공칭 각도가 대응하는 루마 인트라 예측 모드의 것과 동일한 경우, 크로마 성분의 델타 각도는 루마 인트라 예측 모드의 델타 각도와 동일하게 설정될 수 있다. 그렇지 않으면, 크로마 인트라 예측 모드의 공칭 각도가 현재 크로마 블록의 좌측/상부 이웃 모드들과 동일할 때, 크로마 성분의 델타 각도는 현재 크로마 블록의 좌측/상부 이웃 모드의 것과 동일하게 설정될 수 있다. 그렇지 않으면, 크로마 성분의 델타 각도는 0과 동일하게 설정될 수 있다.
대응하는 루마 블록의 델타 각도는 크로마 인트라 예측 모드들의 델타 각도들의 엔트로피 코딩에 사용될 수 있다. 하나 또는 실시예에서, 공존하는 루마 블록들의 델타 각도는 크로마 성분의 델타 각도들의 엔트로피 코딩을 위한 컨텍스트로서 사용될 수 있다. 하나 이상의 실시예에서, 이웃하는 크로마 블록들의 델타 각도는 크로마 성분의 델타 각도들의 엔트로피 코딩을 위한 컨텍스트로서 사용된다. 하나 또는 실시예에서, 현재 크로마 블록의 델타 각도들을 시그널링하는 대신에, 크로마 블록들의 델타 각도들과 대응하는 루마 블록들 간의 절대 차가 크로마 인트라 예측 모드들의 엔트로피 코딩을 위해 시그널링될 수 있다. 하나 이상의 실시예에서, 위의 실시예들은 루마와 크로마 사이의 공칭 모드가 동일할 수 있을 때, 또는 이들 두 모드 사이의 예측 각도들의 절대 차이가 주어진 임계값 내에 있을 때에만 적용된다.
하나 이상의 실시예에 따르면, 크로마 인트라 예측 모드들의 엔트로피 코딩을 위해, 현재 모드가 CfL(chroma-from-luma)인지 여부를 표시하기 위해 제1 플래그가 시그널링될 수 있다. 제1 플래그가 CfL이 사용되고 있지 않음을 표시하는 값으로서 시그널링되는 경우, 현재 모드가 대응하는 루마 블록의 공칭 모드와 동일할 수 있는지를 표시하기 위해 제2 플래그가 시그널링될 수 있다. 현재 모드가 대응하는 루마 블록의 공칭 모드와 동일하고, 현재 모드가 방향성 모드이며, 델타 각도들이 허용되는 경우, 델타 각도들의 인덱스를 표시하기 위해 제3 플래그가 시그널링될 수 있다. 그렇지 않으면, 현재 모드가 나머지 공칭 모드들 중 무엇인지를 표시하기 위해 제3 플래그가 시그널링된다. 제1 플래그가 CfL이 사용되고 있지 않음을 표시하는 값으로서 시그널링되는 경우, CfL 모드의 매개변수들이 추가로 시그널링될 수 있다.
하나 이상의 실시예에 따르면, 크로마 인트라 예측 모드들의 엔트로피 코딩을 위해, 현재 모드가 대응하는 루마 블록의 공칭 모드 또는 CfL 모드와 동일할 수 있는지를 표시하기 위해 제1 플래그가 시그널링될 수 있다. 제1 플래그가, 현재 모드가 대응하는 루마 블록의 공칭 모드 또는 CfL 모드와 동일함을 표시하는 값으로서 시그널링되는 경우, 제2 플래그는 2개의 모드 중 어느 것이 현재 모드일 수 있는지를 표시하기 위해 시그널링될 수 있다. 현재 모드가 대응하는 루마 블록의 공칭 모드와 동일하고, 현재 모드가 방향성 모드이며, 델타 각도들이 허용되는 경우, 델타 각도들의 인덱스가 추가로 시그널링될 수 있다. 현재 모드가 CfL 모드인 경우, CfL 모드의 매개변수들이 추가로 시그널링될 수 있다. 제1 플래그가 현재 모드가 대응하는 루마 블록의 공칭 모드 또는 CfL 모드와 동일하지 않음을 표시하는 값으로서 시그널링되는 경우, 제2 플래그는 나머지 공칭 모드들 중 어느 것이 현재 크로마 블록에 적용될 수 있는지를 표시하기 위해 시그널링될 수 있다.
하나 이상의 실시예에서, 제1 델타 각도 값들은 크로마 성분의 공칭 각도 및 루마 성분의 공칭 각도가 서로 동일하거나 가까운 것에 응답하여, 공존하는 루마 블록들의 델타 각도를 컨텍스트로서 사용하는 것에 기초하여 엔트로피 코딩될 수 있다. 공칭 각도들의 차이가 2도 이하인 경우, 공칭 각도들은 서로 가까울 수 있다. 델타 각도 값들은 공존하는 루마 블록들의 델타 각도를 컨텍스트로 사용하는 것에 기초하여, 또는 이웃하는 크로마 블록들의 델타 각도를 컨텍스트로서 사용하는 것에 기초하여 엔트로피 코딩될 수 있다.
하나 이상의 실시예에서, 루마 및 크로마 블록들의 델타 각도들은 루마 및 크로마 블록들의 델타 각도들 사이에서 동일한 컨텍스트를 공유하는 대신에 엔트로피 코딩을 위해 별도의 컨텍스트들을 사용할 수 있음이 이해될 수 있다.
이제 도 3을 참조하면, 비디오 데이터를 인코딩 및/또는 디코딩하기 위한 방법(300)의 단계들을 도시하는 동작 흐름도가 도시된다. 일부 구현들에서, 도 3의 하나 이상의 프로세스 블록은 컴퓨터(102)(도 1) 및 서버 컴퓨터(114)(도 1)에 의해 수행될 수 있다. 일부 구현들에서, 도 3의 하나 이상의 프로세스 블록은 컴퓨터(102) 및 서버 컴퓨터(114)와 분리되거나 이를 포함하는 다른 디바이스 또는 디바이스들의 그룹에 의해 수행될 수 있다.
302에서, 방법(300)은 (1) 제1 공칭 각도 및 제1 델타 각도들을 갖는 크로마 성분, 및 (2) 제2 공칭 각도 및 제2 델타 각도들을 갖는 루마 성분을 포함하는 비디오 데이터를 수신하는 단계를 포함한다. 제1 델타 각도들은 제2 델타 각도들에 의존한다.
304에서, 방법(300)은 루마 성분에 연관된 인트라 예측 모드에 적어도 기초하여 제1 델타 각도들에 대한 제1 델타 각도 값들을 시그널링하는 단계를 포함한다.
306에서, 방법(300)은 제1 델타 각도들에 대응하는 제1 델타 각도 값들에 기초하여 비디오 데이터를 인코딩 및/또는 디코딩하는 단계를 포함한다.
도 3은 하나의 구현의 예시를 제공할 뿐이며, 상이한 실시예들이 구현될 수 있는 방법에 관한 어떠한 제한도 암시하지 않음을 알아야 한다. 도시된 환경들에 대한 다수의 수정이 설계 및 구현 요건들에 기초하여 이루어질 수 있다.
도 4는 예시적인 실시예에 따른 도 1에 도시된 컴퓨터들의 내부 및 외부 컴포넌트의 블록도(400)이다. 도 4는 하나의 구현의 예시를 제공할 뿐이며, 상이한 실시예들이 구현될 수 있는 환경들에 관한 어떠한 제한도 암시하지 않음을 알아야 한다. 도시된 환경들에 대한 다수의 수정이 설계 및 구현 요건들에 기초하여 이루어질 수 있다.
컴퓨터(102)(도 1) 및 서버 컴퓨터(114)(도 1)는 도 4에 도시된 내부 컴포넌트들(800A, B) 및 외부 컴포넌트들(900A, B)의 각각의 세트를 포함할 수 있다. 내부 컴포넌트들(800)의 세트들 각각은 하나 이상의 프로세서(820), 하나 이상의 버스(826) 상의 하나 이상의 컴퓨터 판독가능한 RAM(822) 및 하나 이상의 컴퓨터 판독가능한 ROM(824), 하나 이상의 운영 체제(828), 및 하나 이상의 컴퓨터 판독가능한 유형의 저장 디바이스(830)를 포함한다.
프로세서(820)는 하드웨어, 펌웨어, 또는 하드웨어와 소프트웨어의 조합으로 구현된다. 프로세서(820)는 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 가속 프로세싱 유닛(APU), 마이크로프로세서, 마이크로컨트롤러, 디지털 신호 프로세서(DSP), 필드 프로그래밍가능한 게이트 어레이(FPGA), 주문형 집적 회로(ASIC), 또는 다른 타입의 프로세싱 컴포넌트이다. 일부 구현들에서, 프로세서(820)는 기능을 수행하도록 프로그래밍될 수 있는 하나 이상의 프로세서를 포함한다. 버스(826)는 내부 컴포넌트들(800A, B) 간의 통신을 허용하는 컴포넌트를 포함한다.
서버 컴퓨터(114)(도 1) 상의 하나 이상의 운영 체제(828), 소프트웨어 프로그램(108)(도 1), 및 비디오 인코딩 프로그램(116)(도 1)은 각각의 RAM(822)(전형적으로 캐시 메모리를 포함함) 중 하나 이상을 통한 각각의 프로세서들(820) 중 하나 이상에 의한 실행을 위해 각각의 컴퓨터 판독가능한 유형의(tangible) 저장 디바이스(830) 중 하나 이상에 저장된다. 도 4에 도시된 실시예에서, 컴퓨터 판독가능한 유형의 저장 디바이스들(830) 각각은 내부 하드 드라이브의 자기 디스크 저장 디바이스이다. 대안적으로, 컴퓨터 판독가능한 유형의 저장 디바이스들(830) 각각은 ROM(824), EPROM, 플래시 메모리, 광 디스크, 광 자기 디스크, 고체 상태 디스크, 컴팩트 디스크(CD), 디지털 다용도 디스크(DVD), 플로피 디스크, 카트리지, 자기 테이프, 및/또는 컴퓨터 프로그램 및 디지털 정보를 저장할 수 있는 다른 타입의 비-일시적 컴퓨터 판독가능한 유형의 저장 디바이스와 같은 반도체 저장 디바이스이다.
내부 컴포넌트들(800A, B)의 각각의 세트는 또한 CD-ROM, DVD, 메모리 스틱, 자기 테이프, 자기 디스크, 광 디스크, 또는 반도체 저장 디바이스와 같은 하나 이상의 휴대용의 컴퓨터 판독가능한 유형의 저장 디바이스(936)로부터의 판독 및 거기에의 기입을 위한 R/W 드라이브 또는 인터페이스(832)를 포함한다. 소프트웨어 프로그램(108)(도 1) 및 비디오 인코딩 프로그램(116)(도 1)과 같은 소프트웨어 프로그램은 각각의 휴대용의 컴퓨터 판독가능한 유형의 저장 디바이스(936) 중 하나 이상에 저장될 수 있으며, 각각의 R/W 드라이브 또는 인터페이스(832)를 통해 판독될 수 있고, 각각의 하드 드라이브(830)에 로드될 수 있다.
내부 컴포넌트들(800A, B)의 각각의 세트는 또한 TCP/IP 어댑터 카드들과 같은 네트워크 어댑터들 또는 인터페이스들(836); 무선 Wi-Fi 인터페이스 카드들; 또는 3G, 4G 또는 5G 무선 인터페이스 카드들, 또는 다른 유선 또는 무선 통신 링크들을 포함한다. 서버 컴퓨터(114)(도 1) 상의 소프트웨어 프로그램(108)(도 1) 및 비디오 인코딩 프로그램(116)(도 1)은 네트워크(예를 들어, 인터넷, 근거리 통신망 또는 기타 광역 통신망) 및 각각의 네트워크 어댑터들 또는 인터페이스들(836)을 통해 외부 컴퓨터로부터 컴퓨터(102)(도 1) 및 서버 컴퓨터(114)로 다운로드될 수 있다. 네트워크 어댑터들 또는 인터페이스들(836)로부터, 서버 컴퓨터(114) 상의 소프트웨어 프로그램(108) 및 비디오 인코딩 프로그램(116)이 각각의 하드 드라이브(830)에 로드된다. 네트워크는 구리 와이어들, 광섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들, 및/또는 에지 서버들을 포함할 수 있다.
외부 컴포넌트들(900A, B)의 세트들 각각은 컴퓨터 디스플레이 모니터(920), 키보드(930) 및 컴퓨터 마우스(934)를 포함할 수 있다. 외부 컴포넌트들(900A, B)은 또한 터치 스크린들, 가상 키보드들, 터치 패드들, 포인팅 디바이스들, 및 다른 휴먼 인터페이스 디바이스들을 포함할 수 있다. 내부 컴포넌트들(800A, B)의 세트들 각각은 또한 컴퓨터 디스플레이 모니터(920), 키보드(930) 및 컴퓨터 마우스(934)에 인터페이스하기 위한 디바이스 드라이버들(840)을 포함한다. 디바이스 드라이버들(840), R/W 드라이브 또는 인터페이스(832), 및 네트워크 어댑터 또는 인터페이스(836)는 하드웨어 및 소프트웨어(저장 디바이스(830) 및/또는 ROM(824)에 저장됨)를 포함한다.
본 개시내용은 클라우드 컴퓨팅에 대한 상세한 설명을 포함하지만, 여기에 기재된 교시들의 구현은 클라우드 컴퓨팅 환경에 제한되지 않는다는 것이 미리 이해된다. 오히려, 일부 실시예들은 현재 알려져 있거나 나중에 개발될 임의의 다른 타입의 컴퓨팅 환경과 함께 구현될 수 있다.
클라우드 컴퓨팅은 최소한의 관리 노력 또는 서비스 제공자와의 최소한의 상호작용으로 신속하게 프로비저닝되고 릴리스될 수 있는 구성가능한 컴퓨팅 자원들(예를 들어, 네트워크들, 네트워크 대역폭, 서버들, 프로세싱, 메모리, 저장소, 애플리케이션들, 가상 머신들, 및 서비스들)의 공유 풀에 대한 편리한 온-디맨드 네트워크 액세스를 가능하게 하는 서비스 제공 모델이다. 이러한 클라우드 모델은 적어도 5가지의 특성, 적어도 3가지의 서비스 모델, 및 적어도 4가지의 배포 모델을 포함할 수 있다.
특성들은 다음과 같다:
온-디맨드 셀프-서비스: 클라우드 소비자는 서비스 제공자와 사람의 상호작용을 요구하지 않고서 필요에 따라 자동으로, 서버 시간 및 네트워크 저장과 같은 컴퓨팅 능력들을 일방적으로 프로비저닝할 수 있다.
광범위한 네트워크 액세스: 능력들은 네트워크를 통해 이용가능하며 이기종 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일 폰들, 랩톱들 및 PDA들)의 사용을 장려하는 표준 메커니즘들을 통해 액세스된다.
자원 공동관리(resource pooling): 제공자의 컴퓨팅 자원들은 멀티-테넌트 모델을 사용하여 복수의 소비자를 서빙하도록 공동관리화되며, 상이한 물리적 및 가상 자원들은 수요에 따라 동적으로 할당 및 재할당된다. 소비자가 제공되는 자원들의 정확한 위치에 대한 제어 또는 지식은 일반적으로 갖지 않지만, 더 높은 수준의 추상화에서 위치(예를 들어, 국가, 주, 또는 데이터센터)를 지정할 수 있다는 점에서 위치 독립성의 의미가 있다.
빠른 탄력성: 능력들은 신속하게 확장(scale out)하도록 빠르게 탄력적으로, 일부 경우들에서는 자동으로 프로비저닝될 수 있고, 신속하게 축소(scale in)하도록 빠르게 릴리스될 수 있다. 소비자에게, 프로비저닝에 이용가능한 능력들은 종종 무제한이며, 언제든지 임의의 수량으로 구매될 수 있는 것으로 보인다.
측정된 서비스: 클라우드 시스템들은 서비스 타입(예를 들어, 저장, 프로세싱, 대역폭 및 활성 사용자 계정들)에 적절한 소정 수준의 추상화에서 계측 능력을 활용함으로써 자원 사용을 자동으로 제어하고 최적화한다. 자원 사용은 모니터링, 제어 및 보고될 수 있으며, 그에 의해, 이용되는 서비스의 제공자와 소비자 둘 다에게 투명성을 제공한다.
서비스 모델들은 다음과 같다:
서비스로서의 소프트웨어(SaaS): 소비자에게 제공되는 능력은 클라우드 인프라스트럭처에서 실행되는 제공자들의 애플리케이션들을 사용하는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹 기반 이메일)와 같은 씬 클라이언트 인터페이스를 통해 다양한 클라이언트 디바이스들로부터 액세스가능하다. 소비자는 제한된 사용자별 애플리케이션 구성 설정들을 가능하게 제외하고는, 네트워크, 서버들, 운영 체제들, 저장소, 또는 심지어는 개별 애플리케이션 능력들을 포함한 기저 클라우드 인프라스트럭처를 관리하거나 제어하지 않는다.
서비스로서의 플랫폼(PaaS): 소비자에게 제공되는 능력은 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 사용하여 생성된, 소비자에 의해 생성되거나 취득된 애플리케이션을 클라우드 인프라스트럭처에 배포하는 것이다. 소비자는 네트워크들, 서버들, 운영 체제들 또는 저장소를 포함한 기저 클라우드 인프라스트럭처를 관리하거나 제어하지 않지만, 배포된 애플리케이션들, 그리고 가능하게는 애플리케이션을 호스팅하는 환경 구성들을 제어할 수 있다.
서비스로서의 인프라스트럭처(IaaS): 소비자에게 제공되는 능력은 프로세싱, 저장소, 네트워크, 및 다른 기본 컴퓨팅 자원들을 프로비저닝하는 것이고, 여기서 소비자는 운영 체제들 및 애플리케이션들을 포함할 수 있는 임의의 소프트웨어를 배포하고 실행할 수 있다. 소비자는 기저 클라우드 인프라스트럭처를 관리하거나 제어하지 않지만, 운영 체제들, 저장소, 배포된 애플리케이션들을 제어할 수 있고, 가능하게는 선택 네트워킹 컴포넌트들(예를 들어, 호스트 방화벽들)을 제한적으로 제어할 수 있다.
배포 모델들은 다음과 같다:
사설 클라우드: 클라우드 인프라스트럭처는 조직(organization)을 위해서만 운영된다. 그것은 조직 또는 제3자에 의해 관리될 수 있으며, 온-프레미스(on-premises) 또는 오프-프레미스(off-premises)로 존재할 수 있다.
커뮤니티 클라우드: 클라우드 인프라스트럭처는 수 개의 조직에 의해 공유되고, 관심사(예를 들어, 미션, 보안 요건들, 정책, 및 규정 준수 고려사항들)를 공유하는 특정 커뮤니티를 지원한다. 그것은 조직들 또는 제3자에 의해 관리될 수 있으며, 온-프레미스 또는 오프-프레미스로 존재할 수 있다.
공용 클라우드: 클라우드 인프라스트럭처는 일반 대중 또는 대규모 산업 그룹이 이용할 수 있으며, 클라우드 서비스들을 판매하는 조직에 의해 소유된다.
하이브리드 클라우드: 클라우드 인프라스트럭처는 고유한 엔티티들로 남아있지만 데이터 및 애플리케이션 이식성을 가능하게 하는 표준화된 또는 독점적인 기술(예를 들어, 클라우드들 간의 로드 밸런싱을 위한 클라우드 버스팅(cloud bursting))에 의해 결합된 둘 이상의 클라우드들(사설, 커뮤니티 또는 공용)의 혼성이다.
클라우드 컴퓨팅 환경은 무상태성(statelessness), 낮은 결합성(low coupling), 모듈성(modularity), 및 의미론적 상호운용성(semantic interoperability)에 초점을 맞춘 서비스 지향적이다. 클라우드 컴퓨팅의 핵심에는 상호연결된 노드들의 네트워크를 포함하는 인프라스트럭처가 있다.
도 5를 참조하면, 예시적인 클라우드 컴퓨팅 환경(500)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(500)은 예를 들어 개인 정보 단말(PDA) 또는 셀룰러 전화(54A), 데스크톱 컴퓨터(54B), 랩톱 컴퓨터(54C), 및/또는 자동차 컴퓨터 시스템(54N)과 같이 클라우드 소비자들에 의해 사용되는 로컬 컴퓨팅 디바이스들이 그와 통신할 수 있는 하나 이상의 클라우드 컴퓨팅 노드(10)를 포함한다. 클라우드 컴퓨팅 노드들(10)은 서로 통신할 수 있다. 그들은 위에서 설명된 것과 같은 사설, 커뮤니티, 공용 또는 하이브리드 클라우드, 또는 이들의 조합과 같은 하나 이상의 네트워크에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이는 클라우드 컴퓨팅 환경(600)이 인프라스트럭처, 플랫폼 및/또는 소프트웨어를, 클라우드 소비자가 로컬 컴퓨팅 디바이스에서 자원들을 유지할 필요가 없는 서비스로서 제공하는 것을 허용한다. 도 5에 보여진 컴퓨팅 디바이스들(54A-N)의 타입들은 단지 예시로서만 의도된 것이며, 클라우드 컴퓨팅 노드들(10) 및 클라우드 컴퓨팅 환경(500)은 (예를 들어, 웹 브라우저를 사용하여) 임의의 타입의 네트워크 및/또는 네트워크 어드레싱가능한 연결을 통해 임의의 타입의 컴퓨터화된 디바이스와 통신할 수 있음이 이해된다.
도 6을 참조하면, 클라우드 컴퓨팅 환경(500)(도 5)에 의해 제공되는 기능적 추상화 계층들(600)의 세트가 보여진다. 도 6에 보여진 컴포넌트들, 계층들, 및 기능들은 단지 예시로서만 의도된 것이며 실시예들은 이에 제한되지 않음이 미리 이해되어야 한다. 도시된 바와 같이, 이하의 계층들 및 대응하는 기능들이 제공된다:
하드웨어 및 소프트웨어 계층(60)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들은: 메인 프레임들(61); RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들(62); 서버들(63); 블레이드 서버들(64); 저장 디바이스들(65); 및 네트워크들 및 네트워킹 컴포넌트들(66)을 포함한다. 일부 실시예들에서, 소프트웨어 컴포넌트들은 네트워크 애플리케이션 서버 소프트웨어(67) 및 데이터베이스 소프트웨어(68)를 포함한다.
가상화 계층(70)은 가상 엔티티의 추상화 계층을 제공하며, 그로부터 이하의 가상화 엔티티 예들이 제공될 수 있다: 가상 서버들(71); 가상 저장소(72); 가상 사설 네트워크를 포함하는 가상 네트워크들(73); 가상 애플리케이션들 및 운영 체제들(74); 및 가상 클라이언트들(75).
일례에서, 관리 계층(80)은 아래에 설명된 기능들을 제공할 수 있다. 자원 프로비저닝(81)은 클라우드 컴퓨팅 환경 내에서 작업들을 수행하는 데 이용되는 컴퓨팅 자원들 및 다른 자원들의 동적 조달을 제공한다. 계량 및 가격 책정(82)은 자원들이 클라우드 컴퓨팅 환경 내에서 이용될 때의 비용 추적, 및 이러한 자원들의 소비에 대한 청구서 발부 또는 송장 발부를 제공한다. 일례에서, 이러한 자원들은 애플리케이션 소프트웨어 라이선스를 포함할 수 있다. 보안은 클라우드 소비자들 및 작업들에 대한 신원 확인은 물론, 데이터 및 다른 자원들에 대한 보호를 제공한다. 사용자 포털(83)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(84)는 요구되는 서비스 수준들이 충족되도록 클라우드 컴퓨팅 자원 할당 및 관리를 제공한다. 서비스 수준 계약(Service Level Agreement)(SLA) 계획 및 이행(85)은 SLA에 따라 향후 요구가 예상되는 클라우드 컴퓨팅 자원들에 대한 사전 준비 및 조달을 제공한다.
워크로드 계층(90)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능의 예들을 제공한다. 이 계층으로부터 제공될 수 있는 워크로드들 및 기능들의 예들은 다음을 포함한다: 매핑 및 탐색(91); 소프트웨어 개발 및 라이프사이클 관리(92); 가상 교실 교육 제공(93); 데이터 분석 프로세싱(94); 트랜잭션 프로세싱(95); 및 비디오 인코딩/디코딩(96). 비디오 인코딩/디코딩(96)은 공칭 각도들로부터 도출된 델타 각도들을 사용하여 비디오 데이터를 인코딩/디코딩할 수 있다.
도 7은 예시적인 실시예들에 따른 AVI에서의 무방향성 평활 인트라 예측기들에 대한 특징들의 블록도(700)이다. 예를 들어, AV1에는 DC, PAETH, SMOOTH, SMOOTH_V 및 SMOOTH_H의 5가지 무방향성 평활 인트라 예측 모드가 있다. DC 예측에 대해, 좌측 및 상부 이웃 샘플들의 평균이 예측될 블록의 예측기(predictor)로서 사용된다. PAETH 예측기에 대해, 상단, 좌측 및 상단-좌측 참조 샘플들이 먼저 페치된 다음, (상단 + 좌측 - 상단-좌측)에 가장 가까운 값이 예측될 픽셀의 예측기로서 설정된다. 도 7은 현재 블록 내의 하나의 픽셀에 대한 상단, 좌측 및 상단-좌측 샘플들의 위치들을 도시한다. SMOOTH, SMOOTH_V 및 SMOOTH_H 모드들에 대해, 수직 또는 수평 방향의 2차 보간(quadratic interpolation), 또는 그러한 방향들 둘 다의 평균을 사용하여 블록을 예측한다.
도 8은 예시적인 실시예들에 따른 재귀적 인트라 필터링 모드들에 대한 특징들의 블록도(800)이다. 예를 들어, 에지들에 대한 참조와 함께 감쇠하는 공간 상관관계를 캡처하기 위해, FILTER INTRA 모드들이 루마 블록들에 대해 설계된다. 5개의 필터 인트라 모드가 AV1을 위해 미리 설계되며, 각각은 4x2 패치 내의 픽셀들과 그에 인접한 7개의 이웃 간의 상관관계를 반영하는 8개의 7탭 필터들의 세트에 의해 표현된다. 즉, 7탭 필터에 대한 가중 인자는 위치 의존적이다. 8x8 블록을 예로 들면, 그것은 8개의 4x2 패치로 분할되며, 이는 도 8에 도시되어 있다. 이러한 패치들은 도 8에서 B0, B1, B1, B3, B4, B5, B6 및 B7로 표시된다. 각각의 패치에 대해, R0 ~ R7로 표시된 그것의 7개의 이웃은 현재 패치 내의 픽셀들을 예측하기 위해 사용된다. 패치 B0에 대해, 모든 이웃이 이미 재구성되었다. 그러나, 다른 패치들에 대해, 이웃들 중 일부는 재구성되지 않고, 바로 이웃들의 예측 값들이 참조로서 사용된다. 예를 들어, 패치 B7의 모든 이웃은 재구성되지 않고, 따라서 이웃들의 예측 샘플들이 대신 사용된다.
CfL(Chroma from Luma)은 크로마 픽셀들을 일치하는 재구성된 루마 픽셀들의 선형 함수로서 모델링하는 크로마-전용 인트라 예측기이다. CfL 예측은 다음과 같이 표현된다(수학식 1("Eq. 1")):
Figure pct00001
여기서 LAC는 루마 성분의 AC 기여도를 나타내고, α는 선형 모델의 매개변수를 나타내며, DC는 크로마 성분의 DC 기여도를 나타낸다. 구체적으로, 재구성된 루마 픽셀들은 크로마 해상도로 서브샘플링되고, 다음으로, 평균값이 차감되어 AC 기여도를 형성한다. AC 기여도로부터 크로마 AC 성분을 근사화하기 위해, 디코더가 일부 종래 기술에서와 같이 스케일링 매개변수들을 계산하도록 요구하는 대신에, AV1 CfL은 원래 크로마 픽셀들에 기초하여 매개변수 α를 결정하고, 그것들을 비트스트림에서 시그널링한다. 이는 디코더 복잡성을 줄이고 더 정확한 예측들을 생성한다. 크로마 성분의 DC 기여도에 대해, 그것은 대부분의 크로마 콘텐츠에 충분하고 성숙한 빠른 구현들(mature fast implementations)을 갖는 인트라 DC 모드를 사용하여 계산된다.
도 9는 예시적인 실시예들에 따른 다계층 참조 프레임 구조에 대한 특징들의 블록도(900)이다. 예를 들어, VP9의 3개의 참조 프레임, 즉 LAST(가장 가까운 과거), GOLDEN(먼 과거), ALTREF(임시 필터링된 미래) 프레임에 더하여, 다음과 같이 4가지 추가 타입의 참조 프레임이 있도록 확장된 참조 프레임들이 있을 수 있다:
·LAST2 및 LAST3: 2개의 가까운 과거 프레임
·BWDREF, ALTREF2: 2개의 미래 프레임
·BWDREF는 시간 필터링 없이 코딩된 미리보기 프레임(look-ahead frame)이고, 비교적 짧은 거리에서 역방향 참조로서 더 유용하다.
·ALTREF2는 GOLDEN과 ALTREF 사이의 중간 필터링된 미래 참조이다.
도 10은 예시적인 실시예들에 따른 후보 움직임 벡터 목록 작성에 대한 특징들의 블록도(1000)이다. 예를 들어, 동적 공간 및 시간 움직임 벡터 참조를 통해, AV1은 움직임 벡터들을 효율적으로 코딩하기 위해 움직임-벡터 참조 선택 방식들을 통합한다. 그것은 이전 모델인 VP9보다 더 넓은 공간적 이웃들을 사용하는 것은 물론, 움직임 필드 추정 프로세스를 사용하여 시간적 움직임-벡터 참조 후보들을 찾는다.
도 11은 예시적인 실시예들에 따른 움직임-필드 추정에 대한 특징들의 라인도(1100)이다. 예를 들어, 움직임-필드 추정 프로세스는 각각의 64x64 프로세싱 유닛을 통과하는 8x8 블록 해상도의 모든 움직임 궤적에 대해 공존하는 128x128 영역을 탐색한다. 예를 들어, 도 11에서, 상기 프로세스에 따라 움직임 벡터 MVRef2가 탐색되고, MV0 및 MV1과 같은 투영된 움직임 벡터들이 도출된다. 모든 후보 움직임-벡터가 발견되고 나면, 그들은 최대 4개의 최종 후보를 만들기 위해 정렬되고 병합되고 순위가 매겨진다. 다음으로, AV1은 목록으로부터 선택된 참조 움직임 벡터의 인덱스를 시그널링하고, 임의로(optionally) 움직임 벡터 차이를 코딩한다.
도 12는 예시적인 실시예들에 따른 중첩 블록 움직임 보상(OMBC)을 위한 중첩 영역들에 대한 특징들의 블록도(1200)이다. 예를 들어, 인접한 움직임 벡터들로부터 획득된 예측들을 결합함으로써 블록 경계들 주위의 예측 오류들을 줄이기 위해, AV1은 수직 및 수평 방향들의 1D 필터들을 각각 적용함으로써 상단 및 좌측 에지들로부터 2차 예측기들과 블록 기반 예측을 점진적으로 결합한다. 예를 들어, 도 12에서, 예측 블록 0의 음영 영역은 1D 상승 코사인 필터(1-D raised cosine filter)를 통해 혼합 예측 샘플들(blended prediction samples)을 재귀적으로 생성함으로써 예측될 것이다. 도 12는 각각 상단-이웃 블록 2 및 좌측-이웃 블록 4를 사용하여 예측될 음영 영역들을 보여준다.
도 13은 예시적인 실시예들에 따른 워핑 움직임 보상에 대한 특징들의 블록도(1300)이다. 예를 들어, AV1은 2개의 아핀 예측 모델, 즉 글로벌 및 로컬 워핑 움직임 보상을 도입한다. 전자는 프레임과 그것의 참조 사이의 프레임-수준 아핀 모델을 시그널링하는 반면, 후자는 최소 오버헤드로 암시적으로 다양한 로컬 움직임들을 처리한다. 로컬 움직임 매개변수들은 원인 이웃들(causal neighbors)의 2D 움직임 벡터들을 사용하여 블록 수준에서 도출된다. 이러한 아핀 모델은 1/64 픽셀 정밀도의 8탭 보간 필터에 기초하는 연속적인 수평 및 수직 전단 동작(shearing operation)을 통해 실현된다. 도 13은 수평 전단 후 수직 전단의 2단계 워핑 프로세스를 보여준다.
도 14는 예시적인 실시예들에 따른 고급 복합 예측에 대한 특징들의 블록도(1400)이다. 예를 들어, 실시예들에 따르면, AV1은 다음과 같이 각각의 픽셀 위치(i,j)에서 보다 다양한 예측을 허용할 수 있다(정의 1("Def. 1")):
Figure pct00002
- 정의 1
여기서 p1 및 p2는 2개의 예측이며, m(i,j)는 미리 정의된 표들로부터 조회되는 [0, 1]에서의 가중 인자이다.
복합 웨지 예측(compound wedge prediction)에 대해, AV1에는 16개의 가능한 웨지 구획들의 미리 정의된 세트가 제공되며, 그것의 선택된 웨지 인덱스가 시그널링된다. 그것의 배향들은 정사각형 및 직사각형 블록들 둘 다에 대해 수평, 수직, 및 ±2 또는 ±0.5 기울기의 경사를 포함한다. 가짜 아티팩트들(spurious artifacts)을 완화하기 위해, 부드러운 절벽 형상의(soft-cliff-shaped) 2D 웨지 마스크들이 사용된다.
차이-변조된 마스킹된 예측(difference-modulated masked prediction)에 대해, 실시예들에 따르면, AV1은 예측의 일부 영역들이 다른 것보다 하나의 예측으로부터 더 많이 오는 것을 허용할 수 있다. 더 구체적으로, 다음과 같은 형태의 마스크가 사용된다("정의 2").
Figure pct00003
- 정의 2
여기서, b는 제1 예측기의 영향을 제어하고, α는 평활한 변조를 보장한다.
프레임 거리 기반 복합 예측(frame distance based compound prediction)에 대해, 실시예들에 따라, AV1은 2개의 프레임의 타임스탬프들 사이의 절대 차이로서 정의되는 프레임 거리를 고려하는 수정된 가중 방식을 포함할 수 있다. 시간적 거리뿐만 아니라 복수의 참조의 평균화 효과들을 통한 양자화 잡음의 감소를 고려하기 위해, AV1은 프레임 거리에 기초하는 방식을 사용하면서, 거리 예측기에 대해서는 다음과 같이 가중치를 약간 더 제공한다("정의 3" 및 "정의 4"):
Figure pct00004
- 정의 3
Figure pct00005
- 정의 4
여기서, p는 프레임 거리 기반 예측이고, p1 및 p2는 2개의 참조 프레임으로부터의 예측 값들이다. 가중치들 (w1, w2)는 위에서와 같이 결정되며, 여기서 d1 및 d2는 2개의 참조로부터 현재 프레임의 프레임 거리들을 나타낸다.
복합 인터-인트라 예측에 대해, 실시예들에 따르면, AV1은 인트라 및 인터 예측들을 결합할 수 있고, 4개의 빈번하게 사용되는 인트라 모드가 인트라-파트에 대해 지원된다. 이러한 모드에 연관된 마스크들은 (i) 인터-인터 모드들에 사용되는 것들과 유사한 평활한 웨지 마스크들, (ii) 인트라 모드의 기본 방향을 따라 감쇠하는 모드-종속 마스크들의 두 가지 타입이다.
예시적인 실시예들에 따르면, 각각의 변환 유닛에 대해, AV1 계수 코딩은 스킵 부호(skip sign)를 시그널링하는 것으로 시작하고, 스킵 부호가 0일 때 변환 커널 타입 및 블록-끝(end-of-block)(eob) 위치를 시그널링하는 것이 후속한다. 다음으로, 각각의 계수 값은 복수의 수준 맵과 부호에 매핑된다.
eob 위치가 코딩된 후, 하위-수준 맵과 중간-수준 맵은 역 스캔 순서로 코딩되며, 전자는 계수 크기가 0 내지 2인지를 나타내는 한편, 후자는 범위가 3 내지 14인지를 나타낸다. 다음 단계는 순방향 스캐닝 순서로, Exp-Golomb 코드에 의해 14보다 큰 계수의 잔차 값뿐만 아니라 효율의 부호를 코딩한다.
컨텍스트 모델링의 사용에 관하여, 하위 수준 맵 코딩은 변환 크기 및 방향들은 물론 최대 5개의 이웃 계수 정보를 통합한다. 한편, 중간-수준 맵 코딩은 이웃 계수들의 수가 2개로 줄어든다는 점을 제외하고는 하위-수준 amp 코딩과 유사한 접근법을 따른다. 잔차 수준에 대한 Exp-Golomb 코드는 물론, AC 계수의 부호는 어떠한 컨텍스트 모델도 없이 코딩되는 반면, DC 계수의 부호는 그것의 이웃 변환 유닛의 dc 부호를 사용하여 코딩된다.
VVC Draft 6은 크로마 잔차들이 공동으로 코딩되는 모드를 지원한다. 공동 크로마 코딩 모드의 사용(활성화)은 TU-수준 플래그 tu_joint_cbcr_residual_flag에 의해 표시되고, 선택된 모드는 크로마 CBF들에 의해 암시적으로 표시된다. 플래그 tu_joint_cbcr_residual_flag는 TU에 대한 크로마 CBF들 중 하나 또는 둘 다가 1과 동일한 경우에 존재한다. PPS 및 슬라이스 헤더에서, 크로마 QP 오프셋 값들은 일반 크로마 잔차 코딩 모드에 대해 시그널링된 크로마 QP 오프셋 값들로부터 구별하기 위해 공동 크로마 잔차 코딩 모드에 대해 시그널링된다. 이러한 크로마 QP 오프셋 값들은 공동 크로마 잔차 코딩 모드를 사용하여 코딩된 그러한 블록들에 대한 크로마 QP 값들을 도출하기 위해 사용된다. 대응하는 공동 크로마 코딩 모드(표 1의 모드 2)가 TU에서 활성일 때, 이 크로마 QP 오프셋은 해당 TU의 양자화 및 디코딩 동안 적용된 루마-도출 크로마 QP에 추가된다. 다른 모드들(표 1의 모드 1 및 3)에 대해, 크로마 QP들은 종래의 Cb 또는 Cr 블록들에 대해 동일한 방식으로 도출된다. 전송된 변환 블록들로부터의 크로마 잔차들(resCb 및 resCr)의 재구성 프로세스는 표 1에 묘사된다. 이 모드가 활성화되는 경우, 하나의 단일 공동 크로마 잔차 블록(표 1의 resJointC[x][y])이 시그널링되고, Cb에 대한 잔차 블록(resCb) 및 Cr에 대한 잔차 블록(resCr)은 슬라이스 헤더에 지정된 부호 값인 tu_cbf_cb, tu_cbf_cr, 및 CSign과 같은 정보를 고려하여 도출된다.
위에서 설명된 3개의 공동 크로마 코딩 모드는 인트라 코딩된 CU에서만 지원된다. 인터 코딩된 CU에서는 모드 2만 지원된다. 따라서, 인터 코딩된 CU에 대해, 신택스 요소 tu_joint_cbcr_residual_flag는 크로마 cbf들 둘 다가 1인 경우에만 존재한다. 아래의 표 1은 크로마 잔차들의 재구성을 나타내고, 값 CSign은 슬라이스 헤더 내에서 지정된 부호 값(+1 또는 -1)인 한편, resJointC[ ][ ]는 전송된 잔차이다.
Figure pct00006
위에서 설명된 3개의 공동 크로마 코딩 모드는 인트라 코딩된 CU에서만 지원된다. 인터 코딩된 CU에서는 모드 2만 지원된다. 따라서, 인터 코딩된 CU에 대해, 신택스 요소 tu_joint_cbcr_residual_flag는 크로마 cbf들 둘 다가 1인 경우에만 존재한다. 아래의 표 1은 크로마 잔차들의 재구성을 나타내고, 값 CSign은 슬라이스 헤더 내에서 지정된 부호 값(+1 또는 -1)이고, resJointC[ ][ ]는 전송된 잔차이다.
도 15는 예시적인 실시예들에 따른 특징들의 흐름도(1500)이다.
도 16은 예시적인 실시예들에 따른 3차원 입방체로서 합쳐진 잔차들에 대한 특징들의 공간도이다. 도 16 및 본 명세서의 다른 도면들과 관련하여 설명된 특징들은 개별적으로 사용되거나 임의의 순서로 조합될 수 있다. 또한, 방법들(또는 실시예들), 인코더 및 디코더 각각은 프로세싱 회로(예를 들어, 하나 이상의 프로세서 또는 하나 이상의 집적 회로)에 의해 구현될 수 있다. 일례에서, 하나 이상의 프로세서는 비-일시적 컴퓨터 판독가능 매체에 저장된 프로그램을 실행한다. 하나 이상의 N1xN2 Cb 예측 잔차 블록과 그것의 대응하는 Cr 예측 잔차 블록이 S151에서 입력으로 주어진다고 가정한다.
S151에서, 2개의 N1xN2 Cb 및 Cr 예측-잔차 신호 블록이 MxL 크기의 다른 하나 이상의 신호 블록으로 변환되며, 여기서 MxL은 2xN1xN2 이하이지만; S151에서 하나 이상의 수정사항이 대체되거나 추가될 수 있다.
예를 들어, 위에서 설명된 압축에 대한 기술적 문제의 개선들은 임의의 크로마 예측 잔차들과 유사한 신호들 사이의 중복성을 제거하는, 본 명세서에 설명된 변환들에 의해 달성될 수 있다.
예를 들어, 예시적인 실시예들에 따르면, N1xN2 Cb 잔차 블록과 그것의 대응하는 Cr 잔차 블록은 하나의 블록으로 합쳐지고, 이러한 하나의 블록에 대해 하나의 변환이 수행된다. LxM 크기의 변환 계수들을 달성하기 위해 다양한 스캐닝 순서들에 의해 개별적으로 각각의 입력 채널의 벡터화가 있는 2D 변환이 있을 수 있다(여기서, "타입-I"). 위에서 언급된 스캐닝 순서들에 추가하여, 인터리빙에 의해 2개의 입력 채널의 벡터화가 있는 2D 변환이 있을 수 있다(여기서, "타입-II").
타입-I 및 타입 II의 더 구체적인 실시예들로서, 다음 중 하나 이상에 대해 예시적인 실시예들에 따른 2개의 N1xN2 변환 계수 블록의 개별 코딩이 존재할 수 있다:
- (2xN1xN2)x(2xN1xN2) KLT(Karhunen-Lo
Figure pct00007
ve 변환),
- 축소된 차원 KLT(Reduced dimension KLT)(RD-KLT),
- RD-KLT의 분리가능한 근사,
- Givens/순열(Permutation) 행렬 분해, 및
- 삼각 변환들의 조합들.
일 실시예에서, S151에서 Cb 및 Cr을 하나의 블록으로 함께 합칠 때, Cb 및 Cr 잔차들은 지그재그, 래스터 또는 대각선 스캐닝 순서에 따라 개별적으로 벡터화된 다음 연쇄되어 (2xN1xN2) x 1 벡터를 형성한다. 그것은 (LxM) x (2xN1xN2) 행렬에 의해 변환되어 (LxM) x 1 크기의 신호 블록을 형성한다. 그것의 계수들은 양자화되고, 양자화 인덱스들이 시그널링된다. 디코딩 프로세스는 인덱스들을 역양자화하고, 그것들을 (2xN1xN2) x (LxM) 행렬에 의해 역변환하여, 재구성된 2xN1xN2 벡터를 획득하고, 이는 재구성된 Cb 및 Cr 잔차 블록들로 다시 역 스캔될 수 있다.
일 실시예에서, S151에서 Cb와 Cr을 하나의 블록으로 함께 합칠 때, Cb 잔차 블록과 그것의 대응하는 Cr 잔차 블록은 지그재그, 래스터 또는 대각선 스캐닝 순서에 따라 잔차 블록들로부터 각각의 샘플이 취해지는 인터리브 방식(즉, Cb로부터의 하나의 샘플과 Cr로부터의 다음 샘플)으로 벡터화되어, (2xN1xN2) x 1 벡터를 형성한다. 그것은 다음으로 (LxM) x (2xN1xN2) 행렬에 의해 변환되어, (LxM) x 1 크기의 변환된 신호 블록을 형성한다. 그것의 계수들은 양자화되고, 양자화 인덱스들이 시그널링된다. 디코딩 프로세스는 인덱스들을 역양자화하고, 그것들을 (2xN1xN2) x (LxM) 행렬에 의해 역변환하여, 재구성된 2xN1xN2 벡터를 획득하고, 그것은 재구성된 Cb 및 Cr 잔차 블록들로 다시 역 스캔될 수 있다.
일 실시예에서, S151에서, 또한 2xN1xN2와 동일한 LxM의 세팅이 있고, 변환의 출력은 2개의 N1xN2 블록으로 추가로 분할되며, 이는 개별적으로 추가로 양자화되고, S153에서 비트스트림으로 디코딩되거나 엔트로피 코딩된다.
일 실시예에서, S151에서, LxM이 2xN1xN2와 동일할 때, 위의 변환 행렬은 (2xN1xN2) x (2xN1xN2) 크기이고, KLT(Karhunen-Lo
Figure pct00008
ve 변환)로서 결정될 수 있다. 2xN1xN2 x 1 입력 벡터 신호 X(제로-평균을 갖도록 평균 제거되었다(mean-removed)고 가정)가 주어지면, (2xN1xN2) x (2xN1xN2) 공분산 행렬
Figure pct00009
는 이하의 수학식("수학식 2")을 만족시킨다:
Figure pct00010
여기서, λj 및 Ij는 RXX의 j번째 고유값 및 대응하는 고유 벡터이다.
KLT 행렬 H는 위의 고유 벡터를 그것의 행들로 가지며, 다음과 같이 X를 Y로 변환한다("수학식 3").
Figure pct00011
여기서,
Figure pct00012
이다.
Y의 요소들은 상관관계가 없으며, 그들의 분산들은 고유값들과 동일하다. 또한, H는 입력 신호 벡터 X가 다음과 같이 복구될 수 있게 하는 직교 변환이다("수학식 4").
Figure pct00013
일 실시예에서, S151에서, 상기 (LxM) x (2xN1xN2) 행렬은 KLT의 (2xN1xN2) 기저 벡터들로부터 LxM 최대 고유값들에 대응하는 LxM 고유 벡터들만을 선택함으로써 결정될 수 있다.
일 실시예에서, S151에서, 위에서 결정된 (LxM) x (2xN1xN2) KLT는 그것의 분리가능한 근사화들(separable approximations)에 의해 근사화될 수 있다. 예를 들어, 상기 KLT 행렬 H는 이하의 최적화 문제(문제 1("Prob. 1"))를 해결함으로써 근사화될 수 있다:
Figure pct00014
- 문제 1
여기서, S는 분리가능한 행/열 행렬이고, P1 및 P2는 결정될 순열 행렬들이다.
일 실시예에서, S151에서, 상기 (LxM) x (2xN1xN2) 행렬은 기븐스 회전 행렬 및/또는 순열 행렬의 복수의 스테이지로서 구성될 수 있다. 예를 들어, 상기 KLT 행렬 H는 이하의 최적화 문제("문제 2")를 해결함으로써 근사화될 수 있다.
Figure pct00015
- 문제 2
여기서
Figure pct00016
는 복수의 스테이지의 연쇄이며, 스테이지들 각각은 기븐스 회전 행렬과 순열 행렬 및 그것의 역행렬의 곱으로 구성된다.
일 실시예에서, S151에서 위의 (LxM) x (2xN1xN2) 행렬은 DCT/DST 변환들의 세트로부터 적응적으로 구성될 수 있다.
S154에서, N1xN2 Cb 잔차 블록과 그것의 대응하는 Cr 잔차 블록이 도 16에서 입방체(1600)로 도시된 바와 같이 하나의 2xN1xN2 3차원(3D) 입방체로 합쳐져야 하는지가 결정될 수 있고, 그렇다면, S155에서 이러한 하나의 입방체에 대해 3D 변환이 수행된다.
예시적인 실시예들에 따르면, 이러한 설명된 특징들과 함께 사용되는 완전히 분리가능한 3D 변환들 및 1D+2D 변환들 중 임의의 것이 있을 수 있다.
일 실시예에서, S155에서, 이 3차원(3D) 변환은 3개의 축을 따라 개별적으로 수행될 수 있다. 즉, x축을 따라 N1x1 벡터들 각각에 대한 N1-포인트 1D 변환이 수행되고, y축을 따라 N2x1 벡터들 각각에 대한 N2-포인트 1D 변환이 수행되고, z축을 따른 2x1 벡터들 각각에 대한 다른 2-포인트 변환이 수행된다. 이러한 변환들의 적용 순서는 임의적일 수 있다.
일 실시예에서, S155에서, 이 3차원(3D) 변환은 z축을 따라 개별적으로 수행될 수 있는 반면, 임의의 2D 변환은 xy 평면들에 대해 수행된다. 즉, z축을 따라 2x1 벡터들 각각에 대해 2-포인트 1D 변환이 수행되고, xy 평면들에 대해 (N1xN2) 변환이 수행된다.
S156에서, 입력이 크로마 예측 잔차들의 1차 변환 계수들인 2차 변환으로서 S152에 대해 설명된 변환들 중 하나 이상을 추가로 적용할지가 결정될 수 있다.
예를 들어, 각각의 N1xN2 크로마 잔차에 대해, K1 변환 계수들만이 취해지고, 이러한 2개의 K1 계수는 S152와 관련하여 설명된 바와 같이 2차 변환에 대한 입력을 형성하기 위해 연쇄되며, 구체적인 예시적인 실시예들은 다음 중 하나 이상을 포함할 수 있다:
- 2차 변환이 적용될 1차 변환의 타입에 대한 제약,
- 2차 변환에 대한 입력의 특정 계수들의 제로화(zeroing-out), 및
- 1차 변환 전용 계수들 및 나머지의 개별적 코딩.
S156으로부터 그렇다면, 일 실시예에서 S156으로부터의 S152에서, 순방향 2차 변환의 입력은 변환된 Cb 잔차 및 Cr 잔차 각각으로부터의 순방향 스캐닝 순서를 따른 제1 K1(K1<=N1xN2) 계수들의 2개의 세트의 연쇄이고, (2xK1) x K2 크기의 순방향 2차 변환의 출력은 K1 입력 계수들의 동일한 2개의 세트를 대체하는 K2 계수들의 세트이다. K2 계수들의 이러한 세트는 2차 변환이 적용되지 않은 (N1xN2 - K1) 계수들의 2개의 세트와 별도로 엔트로피 코딩된다. K2 x (2xK1) 크기의 역 2차 변환 입력은 크기 K2 x 1의 양자화된 계수 벡터이고, 역 2차 변환의 출력은 크기 (2xK1)의 계수 벡터이며, 그로부터의 각각의 K1 계수들은 개별적으로 엔트로피 코딩된 (N1xN2-K1) 계수들 각각과 다시 연쇄된다(concatenated back). 일 실시예에서, 계수들에 연관된 좌표 (x, y)가, x+y가 주어진 임계값 T 이상이라는 조건을 충족하는 경우, 계수들은 항상 0으로 설정된다. T의 예시적인 값들은 0 내지 32를 포함하지만, 정수로 제한되지는 않는다. 일 실시예에서, 1차 및 2차 변환 둘 다를 적용하는 계수들과 1차 변환만을 적용하는 계수는 개별적으로 코딩된다. 즉, 1차 및 2차 변환 둘 다를 적용하는 계수들이 먼저 코딩될 수 있고, 1차 변환만을 적용하는 계수가 두 번째로 코딩될 수 있으며, 그 반대도 마찬가지이다.
흐름도(1500)가 크로마와 관련하여 설명되었지만, 여기서는 흐름도(1500)가 다른 실시예들을 포함할 수 있다는 것도 개시된다. 일 실시예에서, 상기 방법들은 크로마 예측 잔차들 중 어느 하나를 갖는 루마 예측 잔차에 적용된다. 일 실시예에서, 상기 방법들은 적용가능한 경우 임의의 다중-성분 신호들의 선택된 2개의 성분 사이에 적용된다. 일 실시예에서, S152, 및 S156으로부터의 S152의 방법들 중 임의의 방법은 M개의 입력 블록을 연쇄시킴으로써 전체 M-성분 신호들에 대해 적용될 수 있다. 일 실시예에서, S155에 대한 방법들은 M-차원 변환을 수행함으로써 전체 M-성분 신호들에 대해 적용될 수 있다.
즉, 루마로부터의 잔차가 크로마의 잔차와 상관될 수 있도록 다른 타입들의 멀티-채널 신호에 대한 일반화가 있을 수 있으며, 일반 멀티채널 신호들도 혜택을 얻을 수 있으며, 2D 변환(S152), 및 2차-변환(S156으로부터의 S152)의 방법들은 M-채널 신호 경우들에서 입력을 형성하기 위해 M-입력 블록들을 연쇄시킴으로써 적용될 수 있고, M-차원 변환이 적용될 수 있다.
출력(153)은 본 명세서에 설명되고 도 17 - 도 19에 대하여 아래에서 더 논의되는 특징들에 의한 코딩 및 디코딩 중 임의의 하나 이상에 대한 출력일 수 있다.
도 17은 개시된 주제에 대한 응용을 위한 예로서, 스트리밍 환경에서의 비디오 인코더 및 디코더의 배치를 도시한다. 개시된 주제는 예를 들어 화상 회의, 디지털 TV, CD, DVD, 메모리 스틱 및 그와 유사한 것을 포함하는 디지털 매체에의 압축된 비디오의 저장 등을 포함하는 다른 비디오 가능 응용들에 동일하게 적용될 수 있다.
스트리밍 시스템은 예를 들어 비압축 비디오 샘플 스트림(1713)을 생성하는 비디오 소스(1701), 예를 들어 디지털 카메라를 포함할 수 있는 캡처 서브시스템(1703)을 포함할 수 있다. 그 샘플 스트림(1713)은 인코딩된 비디오 비트스트림들에 비해 큰 데이터 용량으로서 강조될 수 있고, 카메라(1701)에 결합된 인코더(1702)에 의해 프로세싱될 수 있다. 인코더(1702)는 하드웨어, 소프트웨어, 또는 이들의 조합을 포함하여 아래에서 더 상세히 설명되는 바와 같이 개시된 주제의 양태들을 가능하게 하거나 구현할 수 있다. 샘플 스트림과 비교할 때 더 낮은 데이터 용량으로서 강조될 수 있는 인코딩된 비디오 비트스트림(1704)은 미래의 사용을 위해 스트리밍 서버(1705)에 저장될 수 있다. 하나 이상의 스트리밍 클라이언트(1712 및 1707)는 스트리밍 서버(1705)에 액세스하여 인코딩된 비디오 비트스트림(1704)의 사본들(1708 및 1706)을 검색할 수 있다. 클라이언트(1712)는 인코딩된 비디오 비트스트림(1708)의 들어오는 사본을 디코딩하고 디스플레이(1709) 또는 다른 렌더링 디바이스(도시되지 않음) 상에서 렌더링될 수 있는 발신 비디오 샘플 스트림(1710)을 생성하는 비디오 디코더(1711)를 포함할 수 있다. 일부 스트리밍 시스템들에서, 비디오 비트스트림들(1704, 1706 및 1708)은 특정 비디오 코딩/압축 표준들에 따라 인코딩될 수 있다. 이러한 표준들의 예들은 위에 언급되어 있으며 여기에 추가로 설명되어 있다.
도 18은 본 발명의 실시예들에 따른 비디오 디코더(1800)의 기능 블록도일 수 있다.
수신기(1802)는 디코더(1800)에 의해 디코딩될 하나 이상의 코덱 비디오 시퀀스를 수신할 수 있고; 동일 또는 다른 실시예에서, 한 번에 하나의 코딩된 비디오 시퀀스로, 각각의 코딩된 비디오 시퀀스의 디코딩은 다른 코딩된 비디오 시퀀스로부터 독립적이다. 코딩된 비디오 시퀀스는 인코딩된 비디오 데이터를 저장하는 저장 디바이스에 대한 하드웨어/소프트웨어 링크일 수 있는 채널(1801)로부터 수신될 수 있다. 수신기(1802)는 다른 데이터, 예를 들어 코딩된 오디오 데이터 및/또는 그들 각각의 사용 엔티티들(도시되지 않음)에 포워딩될 수 있는 보조 데이터 스트림들과 함께 인코딩된 비디오 데이터를 수신할 수 있다. 수신기(1802)는 코딩된 비디오 시퀀스를 다른 데이터로부터 분리할 수 있다. 네트워크 지터를 방지하기 위해, 버퍼 메모리(1803)는 수신기(1802)와 엔트로피 디코더/파서(1804)(이하 "파서") 사이에 결합될 수 있다. 수신기(1802)가 충분한 대역폭 및 제어가능성의 저장/포워딩 디바이스로부터 또는 등시성 네트워크(isosychronous network)로부터 데이터를 수신하고 있을 때, 버퍼(1803)는 필요하지 않거나 작을 수 있다. 인터넷과 같은 최선형 패킷 네트워크들(best effort packet networks)에서 사용하기 위해 버퍼(1803)가 요구될 수 있고, 비교적 클 수 있고 유리하게는 적응적 크기를 가질 수 있다.
비디오 디코더(1800)는 엔트로피 코딩된 비디오 시퀀스로부터 심볼들(1813)을 재구성하기 위해 파서(1804)를 포함할 수 있다. 이러한 심볼들의 카테고리들은 디코더(1800)의 동작을 관리하는 데 사용되는 정보, 및 잠재적으로는, 디코더의 필수 부분은 아니지만 그에 결합될 수 있는 디스플레이(1812)와 같은 렌더링 디바이스(들)를 제어하기 위한 정보를 포함한다. 렌더링 디바이스(들)에 대한 제어 정보는 Supplementary Enhancement Information(SEI 메시지들) 또는 비디오 사용성 정보 매개변수 세트 단편들(도시되지 않음)의 형태일 수 있다. 파서(1804)는 수신된 코딩된 비디오 시퀀스를 파싱/엔트로피 디코딩할 수 있다. 코딩된 비디오 시퀀스의 코딩은 비디오 코딩 기술 또는 표준에 따를 수 있고, 가변 길이 코딩, 허프만 코딩, 컨텍스트 감도가 있거나 없는 산술 코딩 등을 포함하여 본 기술분야의 통상의 기술자에게 잘 알려진 원리들을 따를 수 있다. 파서(1804)는 그룹에 대응하는 적어도 하나의 매개변수에 기초하여, 비디오 디코더의 픽셀들의 서브그룹들 중 적어도 하나에 대한 서브그룹 매개변수들의 세트를 코딩된 비디오 시퀀스로부터 추출할 수 있다. 서브그룹들은 픽처 그룹들(Groups of Pictures)(GOP), 픽처들, 타일들, 슬라이스들, 매크로블록들, 코딩 유닛들(Coding Units)(CU), 블록들, 변환 유닛들(Transform Units)(TU), 예측 유닛들(Prediction Units)(PU) 등을 포함할 수 있다. 엔트로피 디코더/파서는 또한 코딩된 비디오 시퀀스로부터 변환 계수들, 양자화기 매개변수 값들, 움직임 벡터들 등과 같은 정보를 또한 추출할 수 있다.
파서(1804)는 버퍼(1803)로부터 수신된 비디오 시퀀스에 대해 엔트로피 디코딩/파싱 동작을 수행하여 심볼들(1813)을 생성할 수 있다. 파서(1804)는 인코딩된 데이터를 수신할 수 있고, 특정 심볼들(1813)을 선택적으로 디코딩할 수 있다. 또한, 파서(1804)는 특정 심볼들(1813)이 움직임 보상 예측 유닛(1806), 스케일러/역변환 유닛(1805), 인트라 예측 유닛(1807), 또는 루프 필터(1811)에 제공될지를 결정할 수 있다.
심볼들(1813)의 재구성은 코딩된 비디오 픽처 또는 그 일부의 타입(예를 들어, 인터 및 인트라 픽처, 인터 및 인트라 블록), 및 다른 인자들에 의존하여 복수의 상이한 유닛을 수반할 수 있다. 어느 유닛들이 수반되는지, 그리고 어떻게 수반되는지는 코딩된 비디오 시퀀스로부터 파서(1804)에 의해 파싱된 서브그룹 제어 정보에 의해 제어될 수 있다. 파서(1804)와 아래의 복수의 유닛 사이의 이러한 서브그룹 제어 정보의 흐름은 명확성을 위해 도시되지 않는다.
이미 언급된 기능 블록들을 넘어서, 디코더(1800)는 개념적으로 아래에서 설명되는 바와 같이 다수의 기능 유닛으로 세분될 수 있다. 상업적 제약들 하에서 동작하는 실제 구현에서, 이러한 유닛들 중 다수는 서로 밀접하게 상호작용하고, 적어도 부분적으로 서로 통합될 수 있다. 그러나, 개시된 주제를 설명하기 위해, 아래의 기능 유닛들로의 개념적 세분화가 적절하다.
제1 유닛은 스케일러/역변환 유닛(1805)이다. 스케일러/역변환 유닛(1805)은 사용할 변환, 블록 크기, 양자화 인자, 양자화 스케일링 행렬 등을 포함하는 제어 정보뿐만 아니라 양자화된 변환 계수를 심볼(들)(1813)로서 파서(1804)로부터 수신한다. 이것은 집계기(aggregator)(1810)에 입력될 수 있는 샘플 값들을 포함하는 블록들을 출력할 수 있다.
일부 경우들에서, 스케일러/역변환(1805)의 출력 샘플들은 인트라 코딩된 블록, 즉 이전에 재구성된 픽처들로부터의 예측 정보를 사용하는 것이 아니라 현재 픽처의 이전에 재구성된 부분들로부터의 예측 정보를 사용할 수 있는 블록에 속할 수 있다. 이러한 예측 정보는 인트라 픽처 예측 유닛(1807)에 의해 제공될 수 있다. 일부 경우들에서, 인트라 픽처 예측 유닛(1807)은 현재의 (부분적으로 재구성된) 픽처(1809)로부터 페치된 주변의 이미 재구성된 정보를 사용하여, 재구성 중인 블록의 동일 크기 및 형상의 블록을 생성한다. 일부 경우들에서, 집계기(1810)는 샘플 단위로 인트라 예측 유닛(1807)이 생성한 예측 정보를 스케일러/역변환 유닛(1805)에 의해 제공되는 출력 샘플 정보에 추가한다.
다른 경우들에서, 스케일러/역변환 유닛(1805)의 출력 샘플들은 인터 코딩되고 잠재적으로 움직임 보상된 블록에 속할 수 있다. 그러한 경우에서, 움직임 보상 예측 유닛(1806)은 예측에 사용되는 샘플들을 페치하기 위해 참조 픽처 메모리(1808)에 액세스할 수 있다. 블록에 속하는 심볼들(1813)에 따라 페치된 샘플들을 움직임 보상한 후, 이러한 샘플들은 집계기(1810)에 의해 스케일러/역변환 유닛(이 경우, 잔차 샘플들 또는 잔차 신호라고 지칭됨)의 출력에 추가되어 출력 샘플 정보를 생성할 수 있다. 움직임 보상 유닛이 그로부터 예측 샘플들을 페치하는 참조 픽처 메모리 내의 어드레스들은 예를 들어 X, Y 및 참조 픽처 성분들을 가질 수 있는 심볼들(1813)의 형태로 움직임 보상 유닛에 이용가능한 움직임 벡터들에 의해 제어될 수 있다. 움직임 보상은 또한 서브-샘플 정밀 움직임 벡터들(sub-sample exact motion vectors)이 사용 중일 때 참조 픽처 메모리로부터 페치된 샘플 값들의 보간, 움직임 벡터 예측 메커니즘들 등을 포함할 수 있다.
집계기(1810)의 출력 샘플들은 루프 필터 유닛(1811) 내의 다양한 루프 필터링 기술들에 종속될 수 있다. 비디오 압축 기술들은 코딩된 비디오 비트스트림에 포함된 매개변수들에 의해 제어되고 파서(1804)로부터의 심볼들(1813)로서 루프 필터 유닛(1811)에 이용가능하게 되지만, 또한 코딩된 픽처 또는 코딩된 비디오 시퀀스의 (디코딩 순서에서) 이전 부분들의 디코딩 동안 획득된 메타-정보에 응답할 수 있는 것은 물론, 이전에 재구성되고 루프-필터링된 샘플 값들에 응답할 수 있는 인루프 필터 기술들을 포함할 수 있다.
루프 필터 유닛(1811)의 출력은 렌더링 디바이스(1812)에 출력될 수 있는 것은 물론 미래의 인터-픽처 예측에 사용하기 위해 참조 픽처 메모리에 저장될 수 있는 샘플 스트림일 수 있다.
일단 완전히 재구성된 특정 코딩된 픽처들은 미래 예측을 위한 참조 픽처들로서 사용될 수 있다. 일단 코딩된 픽처가 완전히 재구성되고, 코딩된 픽처가 (예를 들어, 파서(1804)에 의해) 참조 픽처로서 식별되고 나면, 현재 참조 픽처(1809)는 참조 픽처 버퍼(1808)의 일부가 될 수 있고, 다음 코딩된 픽처의 재구성을 시작하기 전에 새로운(fresh) 현재 픽처 메모리가 재할당될 수 있다.
비디오 디코더(1800)는 미리 결정된 비디오 압축 기술에 따라 디코딩 동작들을 수행할 수 있다. 코딩된 비디오 시퀀스는 비디오 압축 기술 문서 또는 표준에, 구체적으로는 그 안의 프로필 문서에 지정된 대로, 비디오 압축 기술 또는 표준의 신택스를 고수한다는 점에서, 사용 중인 비디오 압축 기술 또는 표준에 의해 지정된 신택스를 준수할 수 있다. 또한, 준수를 위해 필요한 것은 코딩된 비디오 시퀀스의 복잡성이 비디오 압축 기술 또는 표준의 수준에 의해 정의된 한계들 내에 있어야 한다는 것이다. 일부 경우들에서, 수준들은 최대 픽처 크기, 최대 프레임 레이트, 최대 재구성 샘플 레이트(예를 들어, 초당 메가샘플 단위로 측정됨), 최대 참조 픽처 크기 등을 제약한다. 일부 경우들에서, 수준들에 의해 설정된 제한들은 코딩된 비디오 시퀀스에서 시그널링되는 HRD(Hypothetical Reference Decoder) 사양들 및 HRD 버퍼 관리를 위한 메타데이터를 통해 추가로 제약될 수 있다.
실시예에서, 수신기(1802)는 인코딩된 비디오와 함께 추가(중복) 데이터를 수신할 수 있다. 추가 데이터는 코딩된 비디오 시퀀스(들)의 일부로서 포함될 수 있다. 추가 데이터는 데이터를 적절하게 디코딩하고/하거나 원래의 비디오 데이터를 더 정확하게 재구성하기 위해 비디오 디코더(1800)에 의해 사용될 수 있다. 추가 데이터는 예를 들어 시간, 공간 또는 신호 대 잡음비(SNR) 향상 계층들, 중복 슬라이스들, 중복 픽처들, 순방향 오류 정정 코드들 등의 형태일 수 있다.
도 19는 본 개시내용의 실시예에 따른 비디오 인코더(1900)의 기능 블록도일 수 있다.
인코더(1900)는 인코더(1900)에 의해 코딩될 비디오 이미지(들)를 캡처할 수 있는 비디오 소스(1901)(인코더의 일부가 아님)로부터 비디오 샘플들을 수신할 수 있다.
비디오 소스(1901)는 임의의 적절한 비트 깊이(예를 들어, 8비트, 10비트, 12비트, ...), 임의의 컬러 공간(예를 들어, BT.601 Y CrCB, RGB, ...) 및 임의의 적절한 샘플링 구조(예를 들어, Y CrCb 4:2:0, Y CrCb 4:4:4)일 수 있는 디지털 비디오 샘플 스트림의 형태로 인코더(1703)에 의해 코딩될 소스 비디오 시퀀스를 제공할 수 있다. 미디어 서빙 시스템에서, 비디오 소스(1901)는 미리 준비된 비디오를 저장하는 저장 디바이스일 수 있다. 화상 회의 시스템에서, 비디오 소스(1901)는 비디오 시퀀스로서 로컬 이미지 정보를 캡처하는 카메라일 수 있다. 비디오 데이터는 시퀀스로 볼 때 움직임을 부여하는 복수의 개별 픽처로서 제공될 수 있다. 픽처들 자체는 픽셀들의 공간 어레이로서 조직될 수 있으며, 여기서 각각의 픽셀은 사용 중인 샘플링 구조, 컬러 공간 등에 따라 하나 이상의 샘플을 포함할 수 있다. 본 기술분야의 통상의 기술자는 픽셀들과 샘플들 사이의 관계를 쉽게 이해할 수 있다. 이하의 설명은 샘플들에 중점을 둔다.
실시예에 따르면, 인코더(1900)는 실시간으로, 또는 응용에 의해 요구되는 임의의 다른 시간 제약들 하에서 소스 비디오 시퀀스의 픽처들을 코딩된 비디오 시퀀스(1910)로 코딩 및 압축할 수 있다. 적절한 코딩 속도를 적용하는 것은 제어기(1902)의 기능 중 하나이다. 제어기는 아래에 설명된 바와 같이 다른 기능 유닛들을 제어하고 이러한 유닛들에 기능적으로 결합된다. 결합은 명확성을 위해 도시되지 않는다. 제어기에 의해 설정되는 매개변수들은 속도 제어 관련 매개변수들(픽처 건너뛰기, 양자화기, 레이트-왜곡 최적화 기술들의 람다 값 등), 픽처 크기, 픽처 그룹(GOP) 레이아웃, 최대 움직임 벡터 탐색 범위 등을 포함할 수 있다. 제어기(1902)의 다른 기능들은 특정 시스템 설계에 대해 최적화된 비디오 인코더(1900)에 관련될 수 있기 때문에, 본 기술분야의 통상의 기술자는 그것들을 쉽게 식별할 수 있다.
일부 비디오 인코더들은 본 기술분야의 통상의 기술자가 "코딩 루프"로서 쉽게 인식하는 것에서 동작한다. 지나치게 단순화된 설명으로서, 코딩 루프는 인코더(1902)의 인코딩 부분(이후 "소스 코더")(코딩될 입력 픽처 및 참조 픽처(들)에 기초하여 심볼을 생성하는 것을 담당함), 및 (개시된 주제에서 고려되는 비디오 압축 기술들에서 심볼들과 코딩된 비디오 비트스트림 간의 임의의 압축은 무손실이므로) (원격) 디코더가 또한 생성할 샘플 데이터를 생성하기 위해 심볼들을 재구성하는 인코더(1900)에 내장되는 (로컬) 디코더(1906)로 이루어질 수 있다. 그러한 재구성된 샘플 스트림은 참조 픽처 메모리(1905)에 입력된다. 심볼 스트림의 디코딩이 디코더 위치(로컬 또는 원격)에 관계없이 비트 정밀 결과들(bit-exact results)로 이어지므로, 참조 픽처 버퍼 콘텐츠도 로컬 인코더와 원격 인코더 사이에서 비트 정밀이다. 다시 말해서, 인코더의 예측 부분은 디코딩 동안 예측을 사용할 때 디코더가 "보는" 것과 정확히 동일한 샘플 값들을 참조 픽처 샘플들로 "보는" 것이다. 참조 픽처 동기성(및 예를 들어 채널 오류들로 인해 동기성이 유지될 수 없는 경우 결과적인 드리프트)의 이러한 기본 원리는 본 기술분야의 통상의 기술자에게 잘 알려져 있다.
"로컬" 디코더(1906)의 동작은 "원격" 디코더(1800)의 동작과 동일할 수 있으며, 이는 이미 도 18과 관련하여 위에서 상세히 설명되었다. 그러나, 도 19를 간단하게 다시 참조하면, 심볼들이 이용가능하고, 엔트로피 코더(1908) 및 파서(1904)에 의한 코딩된 비디오 시퀀스에 대한 심볼들의 인/디코딩은 무손실일 수 있으므로, 채널(1801), 수신기(1802), 버퍼(1803), 및 파서(1804)를 포함하는 디코더(1800)의 엔트로피 디코딩 부분들은 로컬 디코더(1906)에서 완전히 구현되지 않을 수 있다.
이 지점에서 이루어질 수 있는 관찰은, 디코더에 존재하는 파싱/엔트로피 디코딩을 제외한 임의의 디코더 기술이, 대응하는 인코더 내에 실질적으로 동일한 기능 형태로 반드시 존재할 필요가 있다는 것이다. 인코더 기술들에 대한 설명은 포괄적으로 설명된 디코더 기술의 역이기 때문에 생략될 수 있다. 특정 영역에서만 더 상세한 설명이 필요하며 아래에 제공된다.
그것의 동작의 일부로서, 소스 코더(1903)는 "참조 프레임들"로서 지정된 비디오 시퀀스로부터의 하나 이상의 이전에 코딩된 프레임들을 참조하여 입력 프레임을 예측적으로(predictively) 코딩하는 움직임 보상된 예측 코딩을 수행할 수 있다. 이러한 방식으로, 코딩 엔진(1907)은 입력 프레임에 대한 예측 참조(들)로서 선택될 수 있는 참조 프레임(들)의 픽셀 블록들과 입력 프레임의 픽셀 블록들 사이의 차이들을 코딩한다.
로컬 비디오 디코더(1906)는 소스 코더(1903)에 의해 생성된 심볼들에 기초하여 참조 프레임들로서 지정될 수 있는 프레임들의 코딩된 비디오 데이터를 디코딩할 수 있다. 코딩 엔진(1907)의 동작들은 유리하게는 손실 프로세스들일 수 있다. 코딩된 비디오 데이터가 비디오 디코더(도 19에 도시되지 않음)에서 디코딩될 수 있을 때, 재구성된 비디오 시퀀스는 전형적으로 일부 오류들을 갖는 소스 비디오 시퀀스의 복제본일 수 있다. 로컬 비디오 디코더(1906)는 참조 프레임들에 대해 비디오 디코더에 의해 수행될 수 있는 디코딩 프로세스들을 복제하고, 재구성된 참조 프레임들이 참조 픽처 캐시(1905)에 저장되게 할 수 있다. 이러한 방식으로, 인코더(1900)는 (전송 오류가 없을 때) 파-엔드 비디오 디코더(far-end video decoder)에 의해 획득될 재구성된 참조 프레임들로서 공통 콘텐츠를 갖는 재구성된 참조 프레임들의 사본들을 로컬로 저장할 수 있다.
예측기(1904)는 코딩 엔진(1907)에 대한 예측 탐색들을 수행할 수 있다. 즉, 코딩될 새로운 프레임에 대해, 예측기(404)는 (후보 참조 픽셀 블록으로서의) 샘플 데이터, 또는 새로운 픽처들에 대한 적절한 예측 참조의 역할을 할 수 있는 참조 픽처 움직임 벡터들, 블록 형상들 등과 같은 특정 메타데이터에 대해 참조 픽처 메모리(1905)를 탐색할 수 있다. 예측기(1904)는 적절한 예측 참조들을 찾기 위해 샘플 블록 x 픽셀 블록 단위로 동작할 수 있다. 일부 경우들에서, 예측기(1904)에 의해 획득된 탐색 결과들에 의해 결정된 바와 같이, 입력 픽처는 참조 픽처 메모리(1905)에 저장된 복수의 참조 픽처로부터 도출된 예측 참조들을 가질 수 있다.
제어기(1902)는 예를 들어, 비디오 데이터를 인코딩하기 위해 사용되는 매개변수들 및 서브그룹 매개변수들의 세팅을 포함하는 비디오 코더(1903)의 코딩 동작들을 관리할 수 있다.
위에서 언급된 모든 기능 유닛들의 출력은 엔트로피 코더(1908)에서의 엔트로피 코딩에 종속될 수 있다. 엔트로피 코더는 본 기술분야의 통상의 기술자에게 알려진 기술들, 예를 들어 Huffman 코딩, 가변 길이 코딩, 산술 코딩 등에 따라 심볼들을 무손실 압축함으로써, 다양한 기능 유닛들에 의해 생성된 심볼들을 코딩된 비디오 시퀀스로 변환한다.
송신기(1909)는 인코딩된 비디오 데이터를 저장할 저장 디바이스에 대한 하드웨어/소프트웨어 링크일 수 있는 통신 채널(1911)을 통한 전송을 위해 준비하기 위해 엔트로피 코더(1908)에 의해 생성된 코딩된 비디오 시퀀스(들)를 버퍼링할 수 있다. 송신기(1909)는 비디오 코더(1903)로부터의 코딩된 비디오 데이터를 전송될 다른 데이터, 예를 들어 코딩된 오디오 데이터 및/또는 보조 데이터 스트림들(소스들은 도시되지 않음)과 병합할 수 있다.
제어기(1902)는 인코더(1900)의 동작을 관리할 수 있다. 코딩 동안, 제어기(1905)는 각각의 픽처에 적용될 수 있는 코딩 기술들에 영향을 미칠 수 있는 특정 코딩된 픽처 타입을 각각의 코딩된 픽처에 할당할 수 있다. 예를 들어, 픽처들은 종종 이하의 프레임 타입들 중 하나로서 할당될 수 있다:
인트라 픽처(I 픽처)는 예측 소스로서 시퀀스 내의 임의의 다른 프레임을 사용하지 않고서 코딩 및 디코딩될 수 있는 것일 수 있다. 일부 비디오 코덱들은 예를 들어 독립 디코더 리프레시 픽처들(Independent Decoder Refresh Pictures)를 포함하여 다양한 타입들의 인트라 픽처들을 허용한다. 본 기술분야의 통상의 기술자는 I 픽처들의 이러한 변형들 및 그들 각각의 응용들 및 특징들을 알고 있다.
예측 픽처(P 픽처)는 각각의 블록의 샘플 값을 예측하기 위해 최대 하나의 움직임 벡터 및 참조 인덱스를 사용하는 인트라 예측 또는 인터 예측을 사용하여 코딩 및 디코딩될 수 있는 것일 수 있다.
양방향 예측 픽처(B 픽처)는 각각의 블록의 샘플 값들을 예측하기 위해 최대 2개의 움직임 벡터 및 참조 인덱스를 사용하는 인트라 예측 또는 인터 예측을 사용하여 코딩 및 디코딩될 수 있는 것일 수 있다. 마찬가지로, 다중-예측 픽처들은 단일 블록의 재구성을 위해 2개 초과의 참조 픽처 및 연관된 메타데이터를 사용할 수 있다.
소스 픽처들은 일반적으로 복수의 샘플 블록(예를 들어, 각각 4 x 4, 8 x 8, 4 x 8, 또는 16 x 16 샘플의 블록들)으로 공간적으로 세분되고 블록 단위로 코딩될 수 있다. 블록들은 블록들의 각각의 픽처들에 적용된 코딩 할당에 의해 결정된 대로 다른 (이미 코딩된) 블록들을 참조하여 예측적으로 코딩될 수 있다. 예를 들어, I 픽처들의 블록은 비예측적으로 코딩될 수 있거나 동일한 픽처의 이미 코딩된 블록들을 참조하여 예측적으로 코딩될 수 있다(공간 예측 또는 인트라 예측). P 픽처들의 픽셀 블록들은 하나의 이전에 코딩된 참조 픽처를 참조하여 공간적 예측을 통해 또는 시간적 예측을 통해 비예측적으로 코딩될 수 있다. B 픽처들의 블록들은 하나 또는 2개의 이전에 코딩된 참조 픽처를 참조하여 공간적 예측을 통해 또는 시간적 예측을 통해 비예측적으로 코딩될 수 있다.
비디오 코더(1900)는 미리 결정된 비디오 코딩 기술 또는 표준에 따라 코딩 동작들을 수행할 수 있다. 그것의 동작에서, 비디오 코더(1900)는 입력 비디오 시퀀스에서 시간적 및 공간적 중복성들을 활용하는 예측 코딩 동작들을 포함하는 다양한 압축 동작들을 수행할 수 있다. 따라서, 코딩된 비디오 데이터는 사용되는 비디오 코딩 기술 또는 표준에 의해 지정된 신택스를 준수할 수 있다.
실시예에서, 송신기(1909)는 인코딩된 비디오와 함께 추가 데이터를 전송할 수 있다. 소스 코더(1903)는 코딩된 비디오 시퀀스의 일부로서 이러한 데이터를 포함할 수 있다. 추가 데이터는 시간/공간/SNR 향상 계층들, 중복 픽처들 및 슬라이스들과 같은 다른 형태들의 중복 데이터, SEI(Supplementary Enhancement Information) 메시지들, VUI(Visual Usability Information) 매개변수 세트 단편들 등을 포함할 수 있다.
일부 실시예들은 임의의 가능한 기술적 상세 수준의 통합에서 시스템, 방법 및/또는 컴퓨터 판독가능한 매체에 관련될 수 있다. 컴퓨터 판독가능한 매체는 프로세서로 하여금 동작들을 수행하게 하기 위한 컴퓨터 판독가능한 프로그램 명령어들을 갖는 컴퓨터 판독가능한 비-일시적 저장 매체(또는 매체들)를 포함할 수 있다.
컴퓨터 판독가능한 저장 매체는 명령어 실행 디바이스에 의한 사용을 위해 명령어들을 보유하고 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 컴퓨터 판독가능한 저장 매체는 예를 들어, 전자 저장 디바이스, 자기 저장 디바이스, 광학 저장 디바이스, 전자기 저장 디바이스, 반도체 저장 디바이스, 또는 이들의 임의의 적절한 조합일 수 있지만 이에 제한되지 않는다. 컴퓨터 판독가능한 저장 매체의 더 구체적인 예들의 완전하지 않은 목록은 다음을 포함한다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거가능하고 프로그래밍가능한 판독 전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독 전용 메모리(CD-ROM), 디지털 다목적 디스크(DVD), 메모리 스틱, 플로피 디스크, 명령어들이 기록된 그루브 내의 융기 구조들 또는 펀치 카드들과 같은 기계적으로 인코딩된 디바이스, 및 상술한 것의 임의의 적절한 조합. 여기에 사용된 컴퓨터 판독가능한 저장 매체는 그 자체로 전파들 또는 다른 자유롭게 전파되는 전자기파들, 도파관 또는 다른 전송 매체를 통해 전파되는 전자기파들(예를 들어, 광섬유 케이블을 통과하는 광 펄스들), 또는 와이어를 통해 전송되는 전기 신호들과 같은 일시적인 신호로 해석되어서는 안 된다.
여기에 설명된 컴퓨터 판독가능한 프로그램 명령어들은 컴퓨터 판독가능한 저장 매체로부터 각각의 컴퓨팅/프로세싱 디바이스들로, 또는 네트워크, 예를 들어 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크를 통해 외부 컴퓨터 또는 외부 저장 디바이스로 다운로드될 수 있다. 네트워크는 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들, 및/또는 에지 서버들을 포함할 수 있다. 각각의 컴퓨팅/프로세싱 디바이스 내의 네트워크 어댑터 카드 또는 네트워크 인터페이스는 네트워크로부터 컴퓨터 판독가능한 프로그램 명령어들을 수신하고, 각각의 컴퓨팅/프로세싱 디바이스 내의 컴퓨터 판독가능한 저장 매체에 저장하기 위해 컴퓨터 판독가능한 프로그램 명령어들을 포워딩한다.
동작들을 수행하기 위한 컴퓨터 판독가능한 프로그램 코드/명령어들은 어셈블러 명령어들, 명령어 세트 아키텍처(ISA) 명령어들, 기계 명령어들, 기계 종속 명령어들, 마이크로코드, 펌웨어 명령어들, 상태 설정 데이터, 집적 회로를 위한 구성 데이터, 또는 Smalltalk, C++ 또는 그와 유사한 것과 같은 객체 지향 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어와, "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들과 같은 절차적 프로그래밍 언어들의 임의의 조합으로 작성된 소스 코드 또는 객체 코드일 수 있다. 컴퓨터 판독가능한 프로그램 명령어들은 전체적으로 사용자의 컴퓨터 상에서, 부분적으로 사용자의 컴퓨터 상에서, 독립형 소프트웨어 패키지로서, 부분적으로는 사용자의 컴퓨터 상에서 부분적으로는 원격 컴퓨터 상에서, 또는 전체적으로 원격 컴퓨터 또는 서버에서 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 임의의 타입의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있고, 또는 (예를 들어, 인터넷 서비스 제공자를 사용하여 인터넷을 통해) 외부 컴퓨터에의 연결이 이루어질 수 있다. 일부 실시예들에서, 예를 들어, 프로그래밍가능한 로직 회로, 필드 프로그래밍가능한 게이트 어레이들(FPGA), 또는 프로그래밍가능한 로직 어레이들(PLA)을 포함하는 전자 회로는 양태들 또는 동작들을 수행하기 위해, 컴퓨터 판독가능한 프로그램 명령어들의 상태 정보를 이용하여 전자 회로를 개인화함으로써 컴퓨터 판독가능한 프로그램 명령어들을 실행할 수 있다.
이러한 컴퓨터 판독가능한 프로그램 명령어들은 범용 컴퓨터, 특수 목적 컴퓨터, 또는 다른 프로그래밍가능한 데이터 프로세싱 장치의 프로세서에 제공되어 기계를 생성할 수 있고, 그에 의해, 컴퓨터 또는 다른 프로그래밍가능한 데이터 프로세싱 장치의 프로세서에 통해 실행되는 명령어들은 흐름도 내에 지정된 기능들/동작들 및/또는 블록도의 블록 또는 블록들을 구현하기 위한 수단을 생성한다. 이러한 컴퓨터 판독가능한 프로그램 명령어들은 또한 컴퓨터, 프로그래밍가능한 데이터 프로세싱 장치 및/또는 다른 디바이스들에게 특정 방식으로 기능할 것을 지시할 수 있는 컴퓨터 판독가능한 저장 매체에 저장될 수 있고, 그에 의해, 명령어들이 저장된 컴퓨터 판독가능한 저장 매체는 흐름도 내에 지정된 기능/동작 및/또는 블록도의 블록 또는 블록들의 양태들을 구현하는 명령어들을 포함하는 제조 물품을 포함한다.
컴퓨터 판독가능한 프로그램 명령어들은 또한 컴퓨터, 다른 프로그래밍가능한 데이터 프로세싱 장치, 또는 다른 디바이스에 로드되어, 일련의 동작 단계들이 컴퓨터, 다른 프로그래밍가능한 장치, 또는 다른 디바이스에서 수행되어 컴퓨터 구현 프로세스를 생성하게 할 수 있고, 그에 의해, 컴퓨터, 다른 프로그래밍가능한 장치, 또는 다른 디바이스에서 실행되는 명령어들은 흐름도 내에 지정된 기능들/동작들 및/또는 블록도의 블록 또는 블록들을 구현할 수 있다.
도면들의 흐름도 및 블록도들은 다양한 실시예들에 따른 시스템들, 방법들 및 컴퓨터 판독가능한 매체들의 가능한 구현들의 아키텍처, 기능 및 동작을 도시한다. 이와 관련하여, 흐름도 또는 블록도들 내의 각각의 블록은 모듈, 세그먼트 또는 명령어들의 일부를 나타낼 수 있으며, 이는 지정된 논리 기능(들)을 구현하기 위한 하나 이상의 실행가능한 명령어들을 포함한다. 방법, 컴퓨터 시스템 및 컴퓨터 판독가능한 매체는 도면들에 도시된 것들에 비해 추가 블록들, 더 적은 블록들, 상이한 블록들, 또는 다르게 배열된 블록들을 포함할 수 있다. 일부 대안적인 구현들에서, 블록들에 표시된 기능들은 도면들에 표시된 순서와 다르게 발생할 수 있다. 예를 들어, 연속적으로 보여진 2개의 블록은 실제로는 동시에 또는 실질적으로 동시에 실행될 수 있으며, 또는 블록들은 관련된 기능에 따라 때때로 역순으로 실행될 수 있다. 또한, 블록도들 및/또는 흐름도의 각각의 블록, 및 블록도들 및/또는 흐름도 내의 블록들의 조합들은 지정된 기능들 또는 동작들을 수행하거나 특수 목적 하드웨어 및 컴퓨터 명령어들의 조합들을 수행하는 특수 목적 하드웨어 기반 시스템들에 의해 구현될 수 있음에 유의해야 한다.
본 명세서에 설명된 시스템들 및/또는 방법들은 상이한 형태들의 하드웨어, 펌웨어, 또는 하드웨어와 소프트웨어의 조합들로 구현될 수 있음이 명백할 것이다. 이러한 시스템들 및/또는 방법들을 구현하는 데 사용되는 실제의 특수화된 제어 하드웨어 또는 소프트웨어 코드는 구현들을 제한하지 않는다. 따라서, 시스템들 및/또는 방법들의 동작 및 거동은 여기서 특정 소프트웨어 코드를 참조하지 않고서 설명되었는데, 소프트웨어 및 하드웨어는 여기서의 설명에 기초하여 시스템들 및/또는 방법들을 구현하도록 설계될 수 있음이 이해된다.
여기서 사용된 어떠한 요소, 동작 또는 명령어도 명시적으로 그와 같이 설명되지 않는 한 중요하거나 필수적인 것으로 해석되어서는 안 된다. 또한, 본 명세서에서 사용될 때, 단수 표현(관사 "a" 및 "an")은 하나 이상의 항목을 포함하는 것으로 의도되며, "하나 이상"과 상호교환적으로 사용될 수 있다. 또한, 본 명세서에서 사용될 때, 용어 "세트"는 하나 이상의 항목(예를 들어, 관련된 항목들, 관련되지 않은 항목들, 관련된 항목들 및 관련되지 않은 항목들의 조합 등)을 포함하도록 의도되며, "하나 이상"과 상호교환적으로 사용될 수 있다. 단 하나의 항목만이 의도되는 경우, 용어 "하나의" 또는 유사한 표현이 사용된다. 또한, 여기서 사용될 때, 용어 "갖는다(have, has)", "갖는", 또는 그와 유사한 것은 개방형 용어로 의도된다. 또한, 문구 "기초하는"은 달리 명시적으로 언급되지 않는 한, "적어도 부분적으로 기초하는"을 의미하는 것으로 의도된다.
다양한 양태들 및 실시예들의 설명들은 예시의 목적으로 제시되었지만, 개시된 실시예들에 제한되거나 완전한 것으로 의도되지 않는다. 특징들의 조합들이 청구항들에 기재되고/거나 명세서에 개시되어 있지만, 이러한 조합들은 가능한 구현들의 개시내용을 제한하도록 의도되지 않는다. 사실, 이러한 특징들 중 다수는 구체적으로 청구항들에 기재되고/거나 명세서에 개시되지 않은 방식들로 결합될 수 있다. 아래에 나열된 각각의 종속 청구항은 단 하나의 청구항에만 직접적으로 의존할 수 있지만, 가능한 구현들의 개시내용은 청구항 세트 내의 각각의 다른 청구항과 결합하여 각각의 종속 청구항을 포함한다. 설명된 실시예들의 범위를 벗어나지 않으면서, 본 기술분야의 통상의 기술자에게 많은 수정들 및 변형들이 명백할 것이다. 본 명세서에서 사용된 용어는 실시예들의 원리들, 실제 적용, 또는 시장에서 발견되는 기술들에 대한 기술적 개선을 가장 잘 설명하거나, 본 기술분야의 통상의 기술자들이 본 명세서에 개시된 실시예들을 이해할 수 있게 하도록 선택되었다.

Claims (20)

  1. 적어도 하나의 프로세서에 의해 수행되는 비디오 디코딩의 방법으로서,
    적어도 2개의 크로마 예측-잔차 신호 블록의 데이터를 포함하는 AV1(AOMedia Video 1) 포맷의 비디오 데이터를 수신하는 단계;
    상기 크로마 예측-잔차 신호 블록들의 조합 이하의 크기를 갖는 적어도 하나의 신호 블록과 상기 크로마 예측-잔차 신호 블록들 간의 변환을 수행하는 단계; 및
    상기 크로마 예측-잔차 블록들의 조합 이하의 크기를 갖는 적어도 하나의 신호 블록을 포함하는 변환의 출력에 기초하여 상기 비디오 데이터를 디코딩하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 크로마 예측-잔차 신호 블록들은 N1xN2 Cb 잔차 블록 및 N1xN2 Cr 잔차 블록을 포함하는, 방법.
  3. 제2항에 있어서,
    상기 변환은 상기 크로마 예측-잔차 신호 블록들의 조합 이하의 크기를 갖는 적어도 하나의 신호 블록의 계수들의 시그널링된 인덱스들을 역양자화하고, 역양자화된 시그널링된 인덱스들을 2xN1xN2 x LxM 행렬에 의해 변환하는 것을 포함하고,
    2xN1xN2는 상기 크로마 예측-잔차 블록들의 조합의 크기이고,
    LxM은 상기 크로마 예측 잔차 블록들의 조합 이하의 크기인, 방법.
  4. 제3항에 있어서,
    상기 역양자화된 시그널링된 인덱스들을 2xN1xN2 x LxM 행렬에 의해 변환한 결과는 재구성된 2xN1xN2 벡터를 포함하고,
    상기 비디오 데이터를 디코딩하는 단계는 상기 재구성된 2xN1xN2 벡터로부터 상기 N1xN2 Cb 잔차 블록 및 상기 N1xN2 Cr 잔차 블록을 재구성하는 단계를 포함하는, 방법.
  5. 제4항에 있어서,
    상기 적어도 하나의 신호 블록은 상기 적어도 2개의 크로마 예측-잔차 신호 블록의 인터리빙을 포함하는, 방법.
  6. 제2항에 있어서,
    상기 적어도 하나의 신호 블록은 2xN1xN2 3차원(3D) 입방체를 포함하는, 방법.
  7. 제6항에 있어서,
    상기 변환은 상기 3D 입방체의 x축을 따른 N1x1 벡터들 각각에 대한 N1-포인트 1D 변환, 상기 3D 입방체의 y축을 따른 N2x1 벡터들 각각에 대한 N2-포인트 1D 변환, 및 상기 3D 입방체의 z축을 따른 2x1 벡터들 각각에 대한 2-포인트 변환을 포함하는, 방법.
  8. 제6항에 있어서,
    상기 변환은 상기 3D 입방체의 z축을 따른 2x1 벡터들 각각에 대한 2-포인트 1D 변환, 및 상기 3D 입방체의 xy 평면에 대한 N1xN2 변환을 포함하는, 방법.
  9. 제2항에 있어서,
    상기 변환을 수행하는 단계는 1차 변환 및 2차 변환을 수행하는 단계를 포함하는, 방법.
  10. 제9항에 있어서,
    상기 1차 변환 및 상기 2차 변환 중 적어도 하나는 상기 크로마 예측-잔차 신호 블록들 중 적어도 하나의 계수에 연관된 좌표의 값이 임계값 이상인 미리 결정된 조건을 결정하는 것에 응답하여 계수들을 제로로 설정하는 것을 포함하는, 방법.
  11. 비디오 디코딩을 위한 장치로서,
    컴퓨터 프로그램 코드를 저장하도록 구성되는 적어도 하나의 메모리; 및
    상기 컴퓨터 프로그램 코드에 액세스하고 상기 컴퓨터 프로그램 코드에 의해 지시된 대로 동작하도록 구성되는 적어도 하나의 프로세서
    를 포함하고, 상기 컴퓨터 프로그램 코드는:
    상기 적어도 하나의 프로세서로 하여금, 적어도 2개의 크로마 예측-잔차 신호 블록의 데이터를 포함하는 AV1(AOMedia Video 1) 포맷의 비디오 데이터를 수신하게 하도록 구성되는 수신 코드;
    상기 적어도 하나의 프로세서로 하여금, 상기 크로마 예측-잔차 신호 블록들의 조합 이하의 크기를 갖는 적어도 하나의 신호 블록과 상기 크로마 예측-잔차 신호 블록들 간의 변환을 수행하게 하도록 구성되는 수행 코드; 및
    상기 적어도 하나의 프로세서로 하여금, 상기 크로마 예측-잔차 블록들의 조합 이하의 크기를 갖는 적어도 하나의 신호 블록을 포함하는 변환의 출력에 기초하여 상기 비디오 데이터를 디코딩하게 하도록 구성되는 디코딩 코드
    를 포함하는, 장치.
  12. 제11항에 있어서,
    상기 크로마 예측-잔차 신호 블록들은 N1xN2 Cb 잔차 블록 및 N1xN2 Cr 잔차 블록을 포함하는, 장치.
  13. 제12항에 있어서,
    상기 변환은 상기 크로마 예측-잔차 신호 블록들의 조합 이하의 크기를 갖는 적어도 하나의 신호 블록의 계수들의 시그널링된 인덱스들을 역양자화하고, 역양자화된 시그널링된 인덱스들을 2xN1xN2 x LxM 행렬에 의해 변환하는 것을 포함하고,
    2xN1xN2는 상기 크로마 예측-잔차 블록들의 조합의 크기이고,
    LxM은 상기 크로마 예측 잔차 블록들의 조합 이하의 크기인, 장치.
  14. 제13항에 있어서,
    상기 역양자화된 시그널링된 인덱스들을 2xN1xN2 x LxM 행렬에 의해 변환한 결과는 재구성된 2xN1xN2 벡터를 포함하고,
    상기 비디오 데이터를 디코딩하는 것은 상기 재구성된 2xN1xN2 벡터로부터 상기 N1xN2 Cb 잔차 블록 및 상기 N1xN2 Cr 잔차 블록을 재구성하는 것을 포함하는, 장치.
  15. 제14항에 있어서,
    상기 적어도 하나의 신호 블록은 상기 적어도 2개의 크로마 예측-잔차 신호 블록의 인터리빙을 포함하는, 장치.
  16. 제12항에 있어서,
    상기 적어도 하나의 신호 블록은 2xN1xN2 3차원(3D) 입방체를 포함하는, 장치.
  17. 제16항에 있어서,
    상기 변환은 상기 3D 입방체의 x축을 따른 N1x1 벡터들 각각에 대한 N1-포인트 1D 변환, 상기 3D 입방체의 y축을 따른 N2x1 벡터들 각각에 대한 N2-포인트 1D 변환, 및 상기 3D 입방체의 z축을 따른 2x1 벡터들 각각에 대한 2-포인트 변환을 포함하는, 장치.
  18. 제6항에 있어서,
    상기 변환은 상기 3D 입방체의 z축을 따른 2x1 벡터들 각각에 대한 2-포인트 1D 변환, 및 상기 3D 입방체의 xy 평면에 대한 N1xN2 변환을 포함하는, 장치.
  19. 제2항에 있어서,
    상기 변환을 수행하는 것은 1차 변환 및 2차 변환을 수행하는 것을 포함하는, 장치.
  20. 컴퓨터로 하여금 프로세스를 실행하게 하는 프로그램을 저장하는 비-일시적 컴퓨터 판독가능한 매체로서, 상기 프로세스는:
    적어도 2개의 크로마 예측-잔차 신호 블록의 데이터를 포함하는 AV1(AOMedia Video 1) 포맷의 비디오 데이터를 수신하는 단계;
    상기 크로마 예측-잔차 신호 블록들의 조합 이하의 크기를 갖는 적어도 하나의 신호 블록과 상기 크로마 예측-잔차 신호 블록들 간의 변환을 수행하는 단계; 및
    상기 크로마 예측-잔차 블록들의 조합 이하의 크기를 갖는 적어도 하나의 신호 블록을 포함하는 변환의 출력에 기초하여 상기 비디오 데이터를 디코딩하는 단계
    를 포함하는, 비-일시적 컴퓨터 판독가능한 매체.
KR1020227005283A 2020-03-26 2021-02-24 복수의 컬러 성분들의 공동 변환 코딩 KR20220032623A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063000109P 2020-03-26 2020-03-26
US63/000,109 2020-03-26
US17/083,662 2020-10-29
US17/083,662 US11405615B2 (en) 2020-03-26 2020-10-29 Joint transform coding of multiple color components
PCT/US2021/019371 WO2021194679A1 (en) 2020-03-26 2021-02-24 Joint transform coding of multiple color components

Publications (1)

Publication Number Publication Date
KR20220032623A true KR20220032623A (ko) 2022-03-15

Family

ID=77856672

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227005283A KR20220032623A (ko) 2020-03-26 2021-02-24 복수의 컬러 성분들의 공동 변환 코딩

Country Status (6)

Country Link
US (2) US11405615B2 (ko)
EP (1) EP4005207A4 (ko)
JP (2) JP2022548094A (ko)
KR (1) KR20220032623A (ko)
CN (1) CN114424562A (ko)
WO (1) WO2021194679A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230035118A1 (en) * 2021-07-23 2023-02-02 Tencent America LLC Cross component end of block flag coding
US11979596B2 (en) 2022-02-07 2024-05-07 Tencent America LLC Joint coding for adaptive motion vector difference resolution

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101138392B1 (ko) * 2004-12-30 2012-04-26 삼성전자주식회사 색차 성분의 상관관계를 이용한 컬러 영상의 부호화,복호화 방법 및 그 장치
US7970219B2 (en) * 2004-12-30 2011-06-28 Samsung Electronics Co., Ltd. Color image encoding and decoding method and apparatus using a correlation between chrominance components
EP3301920A1 (en) 2016-09-30 2018-04-04 Thomson Licensing Method and apparatus for coding/decoding omnidirectional video
US11647214B2 (en) 2018-03-30 2023-05-09 Qualcomm Incorporated Multiple transforms adjustment stages for video coding
BR112021018089A2 (pt) * 2019-03-12 2021-11-23 Fraunhofer Ges Forschung Transformada de intercomponente seletiva (ict) para conversão de imagem e vídeo em código

Also Published As

Publication number Publication date
US11711514B2 (en) 2023-07-25
US20210306634A1 (en) 2021-09-30
JP2024050762A (ja) 2024-04-10
US20220345707A1 (en) 2022-10-27
WO2021194679A1 (en) 2021-09-30
CN114424562A (zh) 2022-04-29
EP4005207A4 (en) 2022-10-26
EP4005207A1 (en) 2022-06-01
JP2022548094A (ja) 2022-11-16
US11405615B2 (en) 2022-08-02

Similar Documents

Publication Publication Date Title
KR20240037366A (ko) 비디오 코딩을 위한 방법 및 장치
JP2021518088A (ja) 小ブロックの予測と変換のための方法、装置、及びプログラム
CN111971965A (zh) 视频编解码的方法和装置
US11711514B2 (en) Joint transform coding of multiple color components
KR20230129586A (ko) 비디오 코딩을 위한 방법 및 장치
US20220201307A1 (en) Method and apparatus for video coding
CN113491118A (zh) 视频编解码方法及装置
KR102647645B1 (ko) 비디오 코딩을 위한 방법 및 장치
KR20220085836A (ko) 비디오 코딩 방법 및 장치
KR20220100726A (ko) 비디오 코딩을 위한 방법 및 장치
US20230108480A1 (en) Modification on fusion of intra prediction
KR20240050427A (ko) 루마 인트라 예측 모드로부터의 크로마에 대한 다운샘플링 필터들의 시그널링
US20220353547A1 (en) Entropy coding of sign map for transform coefficients
US11490122B2 (en) Method and apparatus for video coding
CN115486073A (zh) 多参考行帧内预测、变换分割和变换核当中的协调设计
US11856225B2 (en) Methods for efficient application of LGT
RU2787810C1 (ru) Способ и устройство для преобразования цвета при универсальном видеокодировании (VVC)
RU2777394C1 (ru) Способ и устройство для видеокодирования
US11700386B2 (en) Adaptive colour transform related signalling for both of CU level and TU level
US20230247209A1 (en) Signalling of eob for one dimensional transform skip
US20230031886A1 (en) Adaptive up-sampling filter for luma and chroma with reference picture resampling (rpr)
US20230388540A1 (en) Signaling of downsampling filters for chroma from luma intra prediction mode
JP2023553997A (ja) 複合インターイントラ予測モードのための適応変換
JP2023552415A (ja) ビデオ復号の方法、機器、及びコンピュータプログラム
JP2023549771A (ja) 適応カーネルオプションを用いた二次変換の方法および装置