KR20180032570A - 디스플레이 스트림 압축에서의 변환 모드를 위한 블록 크기에 대한 수정 - Google Patents

디스플레이 스트림 압축에서의 변환 모드를 위한 블록 크기에 대한 수정 Download PDF

Info

Publication number
KR20180032570A
KR20180032570A KR1020187001888A KR20187001888A KR20180032570A KR 20180032570 A KR20180032570 A KR 20180032570A KR 1020187001888 A KR1020187001888 A KR 1020187001888A KR 20187001888 A KR20187001888 A KR 20187001888A KR 20180032570 A KR20180032570 A KR 20180032570A
Authority
KR
South Korea
Prior art keywords
block
cost
coding
mode
costs
Prior art date
Application number
KR1020187001888A
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 KR20180032570A publication Critical patent/KR20180032570A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • 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/167Position within a video image, e.g. region of interest [ROI]
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform 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

디스플레이 스트림 압축에서 변환 모드를 위한 블록 크기에 대한 수정을 위한 방법 및 장치가 개시된다. 일 양태에서, 본 방법은 상기 비디오 데이터의 현재 블록 및 다음 블록을 선택하는 단계, 더 큰 블록 크기 변환 (LBT) 모드로 현재 블록 및 다음 블록을 코딩하기 위한 제 1 레이트-왜곡 (RD) 비용을 계산하는 단계, 및 상기 LBT 모드와 상이한 또 다른 코딩 모드로 상기 현재 블록 및 다음 블록의 각각을 코딩하기 위한 제 2 RD 비용을 계산하는 단계를 수반한다. 그 방법은 상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정하는 단계; 및 상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 현재 블록 및 다음 블록을 상기 LBT 모드로 코딩하는 단계를 더 수반할 수도 있다.

Description

디스플레이 스트림 압축에서의 변환 모드를 위한 블록 크기에 대한 수정{MODIFICATION TO BLOCK SIZE FOR TRANSFORM MODE IN DISPLAY STREAM COMPRESSION}
본 개시는 비디오 코딩 및 압축의 분야에 관한 것이고, 보다 구체적으로는 디스플레이 스트림 압축과 같은 디스플레이 링크들 상의 송신을 위한 비디오 압축에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전들, 개인 휴대정보 단말기 (PDA) 들, 랩탑 컴퓨터, 데스크탑 모니터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 휴대 또는 위성 무선 전화기들, 원격 화상회의 디바이스들 등을 포함한, 광범위한 디스플레이들에 포함될 수 있다. 디스플레이 링크들은 디스플레이들을 적절한 소스 디바이스들에 접속시키는데 사용된다. 디스플레이 링크들의 대역폭 요건들은 디스플레이의 해상도에 비례하고, 따라서, 고해상도 디스플레이는 큰 대역폭 디스플레이 링크들을 요구한다. 일부 디스플레이 링크들은 고 해상도 디스플레이들을 지원하기 위한 대역폭을 갖지 않는다. 비디오 압축은, 고 해상도 디스플레이들에 디지털 비디오를 제공하기 위해 보다 낮은 대역폭 디스플레이 링크들이 사용될 수 있도록 대역폭 요건들을 감소시키는데 사용될 수 있다.
다른 것들은 픽셀 데이터에 대한 이미지 압축을 이용하는 것을 시도하였다. 하지만, 그러한 스킴들은 때때로 시각적으로 무손실이 아니거나 또는 종래 디스플레이 디바이스들에서 구현하기 곤란하고 비쌀 수 있다.
비디오 전자 표준 위원회 (VESA) 는 디스플레이 링크 비디오 압축을 위한 표준으로서 디스플레이 스트림 압축 (DSC) 을 개발하였다. DSC 와 같은 디스플레이 링크 비디오 압축 기법은, 특히, 시각적으로 무손실인 (즉, 사용자들이 압축이 작동하는지 알 수 없도록 하는 레벨의 품질을 갖는 화상들) 화상 품질을 제공해야 한다. 디스플레이 링크 비디오 압축 기법은 또한, 종래 하드웨어로 실시간으로 구현하기 용이하고 저렴한 스킴을 제공해야 한다.
개요
본 개시의 시스템, 방법 및 디바이스는 각각 여러 혁신적인 양태들을 갖고, 그들 중 단 하나만이 오로지 본원에 개시된 바람직한 속성들의 원인이 되지는 않는다.
일 양태에서, 방법은 비디오 데이터를 코딩하기 위해 복수의 코딩 모드들로부터 코딩 모드를 선택하기 위한 비디오 코딩 회로에 의해 동작 가능하고, 상기 비디오 데이터의 현재 블록 및 다음 블록을 선택하는 단계; 더 큰 블록 크기 변환 (LBT) 모드로 현재 블록 및 다음 블록을 코딩하기 위한 제 1 레이트-왜곡 (RD) 비용을 계산하는 단계; 상기 LBT 모드와 상이한 또 다른 코딩 모드로 상기 현재 블록 및 다음 블록의 각각을 코딩하기 위한 제 2 RD 비용을 계산하는 단계; 상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정하는 단계; 및 상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 현재 블록 및 다음 블록을 상기 LBT 모드로 코딩하는 단계를 포함한다.
또 다른 양태에서, 비디오 데이터를 코딩하기 위해 복수의 코딩 모드들로부터 코딩 모드를 선택하기 위한 디바이스는 이전 블록 및 현재 블록을 포함하는 비디오 데이터를 저장하도록 구성된 메모리; 및 상기 메모리에 연결된 적어도 하나의 프로세서 회로를 포함하고, 상기 적어도 하나의 프로세서 회로는 상기 비디오 데이터의 현재 블록 및 다음 블록을 선택하고; 더 큰 블록 크기 변환 (LBT) 모드로 현재 블록 및 다음 블록을 코딩하기 위한 제 1 레이트-왜곡 (RD) 비용을 계산하고; 상기 LBT 모드와 상이한 또 다른 코딩 모드로 상기 현재 블록 및 다음 블록의 각각을 코딩하기 위한 제 2 RD 비용을 계산하고; 상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정하고; 그리고 상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 현재 블록 및 다음 블록을 상기 LBT 모드로 코딩하도록 구성된다.
또 다른 양태에서, 장치는 상기 비디오 데이터의 현재 블록 및 다음 블록을 선택하는 수단; 더 큰 블록 크기 변환 (LBT) 모드로 현재 블록 및 다음 블록을 코딩하기 위한 제 1 레이트-왜곡 (RD) 비용을 계산하는 수단; 상기 LBT 모드와 상이한 또 다른 코딩 모드로 상기 현재 블록 및 다음 블록의 각각을 코딩하기 위한 제 2 RD 비용을 계산하는 수단; 상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정하는 수단; 및 상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 현재 블록 및 다음 블록을 상기 LBT 모드로 코딩하는 수단을 포함한다.
또 다른 양태에서, 비일시적 컴퓨터 판독가능 저장 매체는 명령들을 저장하고 상기 명령들은 실행될 때, 디바이스의 프로세서로 하여금, 비디오 데이터로부터 현재 블록 및 다음 블록을 선택하게 하고; 더 큰 블록 크기 변환 (LBT) 모드로 현재 블록 및 다음 블록을 코딩하기 위한 제 1 레이트-왜곡 (RD) 비용을 계산하게 하고; 상기 LBT 모드와 상이한 또 다른 코딩 모드로 상기 현재 블록 및 다음 블록의 각각을 코딩하기 위한 제 2 RD 비용을 계산하게 하고; 상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정하게 하고; 그리고 상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 현재 블록 및 다음 블록을 상기 LBT 모드로 코딩하게 한다.
도 1a 는 본 개시에 기재된 양태들에 따른 기법들을 이용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템을 예시하는 블록도이다.
도 1b 는 본 개시에 기재된 양태들에 따른 기법들을 수행할 수도 있는 또 다른 예시적인 비디오 인코딩 및 디코딩 시스템을 예시하는 블록도이다.
도 2b 는 본 개시에 기재된 양태들에 따른 기법들을 구현할 수도 있는 비디오 인코더의 일 예를 예시하는 블록도이다.
도 2b는 본 개시에 기재된 양태들에 따른 기법들을 구현할 수도 있는 비디오 디코더의 일 예를 예시하는 블록도이다.
도 3은 본 개시에 기재된 양태들에 따른 기법들을 구현할 수도 있는 비디오 인코더의 또 다른 예를 예시하는 블록도이다.
도 4a는 본 개시에 기재된 양태들에 따른 기법들을 구현할 수도 있는 더 큰 블록 크기 변환 (LBT) 모드의 일 예를 예시하는 블록도이다.
도 4b는 본 개시에 기재된 양태들에 따른 기법들을 구현할 수도 있는 LBT 모드의 일 예를 예시하는 블록도이다.
도 5는 본 개시에 기재된 양태들에 따라 LBT 모드를 포함할 수도 있는 코딩 모드의 예시적인 방법을 예시하는 플로우 차트이다.
도 6은 본 개시에 기재된 양태들에 따른 LBT 모드를 구현하기 위한 방법을 예시하는 플로우차트이다.
상세한 설명
일반적으로, 본 개시는, 예를 들어, 디스플레이 스트림 압축 (DSC) 과 같은 비디오 압축 기술을 개선하는 방법에 관한 것이다. 보다 상세하게는, 본 개시는 QP 조정 값을 계산하기 위한 적절한 기술의 선택을 통해 양자화 파라미터 (QP) 의 업데이트를 개선하기 위한 시스템 및 방법에 관한 것이다.
특정 실시형태들은 DSC 표준의 맥락에서 여기에 설명되었지만, 당업자는, 여기에 개시된 시스템 및 방법들이 임의의 적합한 비디오 코딩 표준에 적용가능할 수도 있다는 것을 인식할 것이다. 예를 들면, 여기에 개시된 실시형태들은 다음의 표준들 중의 하나 이상에 적용가능할 수도 있다: 국제 전기통신 연합 (ITU) 전기통신 표준화 섹터 (ITU-T) H.261, ISO/IEC (International Organization for Standardization/International Electrotechnical Commission) MPEG 1 (Moving Picture Experts Group-1) Visual, ITU-T H.262 또는 ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG 4 Visual, ITU-T H.264 (ISO/IEC MPEG-4 AVC 로도 알려짐), HEVC (High Efficiency Video Coding), 및 그러한 표준들에 대한 임의의 확장들. 본원에 설명된 기술들은 고정 비트 레이트 (CBR) 버퍼 모델을 포함하는 표준들에 특히 적용가능할 수도 있다. 또한, 본 개시에 설명된 기법들은 향후 개발되는 표준들의 부분이 될 수도 있다. 즉, 본 개시에 설명된 기법들은 이전에 개발된 비디오 코딩 표준들, 현재 개발중인 비디오 코딩 표준들, 및 다가오는 비디오 코딩 표준들에 적용가능할 수도 있다.
비디오 코딩 방법은 이전에 계산된 QP 값을 QP 조정 값으로 업데이트함으로써 QP 값을 계산할 수도 있다. QP 조정 값은 이전 블록과 현재 블록 사이의 차이, 예를 들어 이전 블록을 코딩하는데 필요한 비트들과 현재 블록을 코딩하기 위한 목표 비트 수 사이의 차이에 기초하여 계산될 수도 있다.
그러나, 종래의 기술에 의해 결정되는 QP 조정 값은 코딩 비효율을 초래할 수도 있거나 또는 특정 환경 하에서 현저한 아티팩트를 유발할 수도 있다. 예를 들어, QP 조정 값을 결정하기 위한 종래의 기술은 이미지의 평탄한 영역으로부터 복잡한 영역으로의 천이에 대해 충분히 공격적 (aggressive) 이지 못할 수도 있다 (예를 들어, QP 조정 값은 현저한 아티팩트 없이 더 나은 코딩 효율을 낳는 더 바람직한 QP 조정 값보다 작을 수도 있다). 평탄한 영역 및 복잡한 영역의 개념은 이하에서 보다 상세하게 설명될 것이다.
또한, 버퍼의 충만도 (fullness) 가 비어 있거나 또는 가득 찬 임계 값 내에 있을 때, QP 조정 값을 계산하기 위한 종래의 기술은 너무 공격적이어서, 디코더에 의해 재구성된 이미지에 아티팩트를 초래할 수도 있다. 예를 들어, 종래 기술에 의해 계산된 QP 조정 값은 재구성된 이미지에서 아티팩트가 현저하지 않게 마스크하는 보다 바람직한 QP 조정 값보다 클 수도 있다.
따라서, 본 개시의 양태들은 적어도 위에 나타낸 문제들을 해결하는 것에 관한 것이다. 특정 양태들에서, 이것은 위에 표시된 문제들과 연관될 수도 있는 조건들의 검출 또는 결정, 그리고 검출된 조건들 하에서 QP 조정 값을 계산하기 위한 하나 이상의 대안의 기술들을 적용하는 것을 통해 달성될 수도 있다.
비디오 코딩 표준들
비디오 이미지, TV 이미지, 스틸 이미지 또는 비디오 리코더 또는 컴퓨터에 의해 생성된 이미지와 같은 디지털 이미지는 수평 및 수직 라인들로 배열된 픽셀들 또는 샘플들을 포함할 수도 있다. 단일 이미지에서 픽셀들의 수는 통상적으로 수만개이다. 각 픽셀은 통상적으로 루미넌스 및 크로미넌스 정보를 포함한다. 압축이 없으면, 이미지 인코더로부터 이미지 디코더로 전달될 엄청난 양 (sheer quantity) 의 정보는 실시간 이미지 송신을 비현실적으로 만든다. 송신될 정보의 양을 감소시키기 위하여, 많은 상이한 압축 방법들, 이를테면 JPEG, MPEG 및 H.263 표준들이 개발되었다.
비디오 코딩 표준들은 ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 또는 ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual, ITU-T H.264 (ISO/IEC MPEG-4 AVC 으로도 알려짐), 및 HEVC 를 포함하며 그러한 표준들의 확장들을 포함한다.
또한, 비디오 코딩 표준, 즉 DSC 는 VESA 에 의해 개발되었다. DSC 표준은, 디스플레이 링크들 상의 송신을 위해 비디오를 압축할 수 있는 비디오 압축 표준이다. 디스플레이의 해상도가 증가함에 따라, 이에 대응하여 디스플레이들을 구동하는데 필요한 비디오 데이터의 대역폭이 증가한다. 일부 디스플레이 링크들은 그러한 해상도들을 위해 디스플레이에 비디오 데이터 전부를 송신하기 위한 대역폭을 갖지 못할 수도 있다. 따라서, DSC 표준은, 디스플레이 링크들 상에서 연동가능한, 시각적으로 무손실 압축을 위한 압축 표준을 명시한다.
DSC 표준은 H.264 및 HEVC 와 같은 다른 비디오 코딩 표준들과는 상이하다. DSC 는 인트라 프레임 압축을 포함하지만, 인터 프레임 압축을 포함하지 않는데, 이는 비디오 데이터를 코딩함에 있어서 시간적 정보 (temporal information) 가 DSC 표준에 의해 사용되지 못할 수도 있다는 것을 의미한다. 대조적으로, 다른 비디오 코딩 표준들은 그들의 비디오 코딩 기법들에서 인터 프레임 압축을 채용할 수도 있다.
비디오 코딩 시스템
신규한 시스템, 장치 및 방법들의 다양한 양태들이 첨부 도면들을 참조하여 이하에서 더 충분히 설명된다. 하지만, 본 개시는 많은 상이한 형태들에서 구체화될 수 있고 본 개시 전체에 걸쳐 제시된 임의의 특정 구조 또는 기능에 한정되는 것으로 해석되서는 안된다. 오히려, 이들 양태들은 본 개시가 철저하고 완전해지게 하기 위하여 그리고 본 개시의 범위를 당업자에게 완전히 전달하기 위해서 제공된다. 여기의 교시들에 기초하여 당업자는, 본 개시의 범위가, 여기에 개시된 신규한 시스템, 장치 및 방법들의 임의의 양태를, 본 개시의 임의의 다른 양태와 독립적으로 또는 조합되든지 간에, 커버하도록 의도된다는 것을 이해해야 한다. 예를 들어, 본원에 제시된 임의의 수의 양태들을 이용하여 장치가 구현될 수도 있거나 또는 방법이 실시될 수도 있다. 또한, 본 개시의 범위는 여기에 제시된 본 개시의 다양한 양태들 외에 또는 추가하여 다른 구조, 기능, 또는 구조 및 기능을 이용하여 실시되는 그러한 장치 또는 방법을 커버하도록 의도된다. 여기에 개시된 임의의 양태는 청구항의 하나 이상의 구성 요소들에 의해 구체화될 수도 있다는 것이 이해되야 한다.
특정 양태들이 여기에서 설명되었지만, 이들 양태들의 많은 변형 및 치환들이 본 개시의 범위내에 속한다. 바람직한 양태들의 일부 혜택 및 이점들이 언급되었지만, 본 개시의 범위는 특정 혜택, 용도 또는 목적에 한정되도록 의도되지 않았다. 오히려, 본 개시의 양태들은 상이한 무선 기술들, 시스템 구성들, 네트워크들 및 송신 프로토콜들에 폭넓게 적용가능하도록 의도되고, 이들 중 일부는 예로써 도면에 그리고 다음의 바람직한 양태들의 설명에 예시되어 있다. 상세한 설명 및 도면들은 본 개시를 제한하는 것이 아니라 예시할뿐이고, 본 개시의 범위는 첨부된 청구항들 및 이의 균등물에 의해 정의된다.
첨부된 도면들은 예들을 도시한다. 첨부된 도면들에서 도면 부호로 표시된 요소들은 다음 설명에서 같은 도면 부호들로 표시된 요소들에 대응한다. 본 개시에서, 서수 용어들 (예를 들어, "제 1", "제 2", "제 3" 등) 로 시작하는 명칭들을 갖는 요소들은 그 요소들이 특정 순서를 가져야 한다는 것을 반드시 의미하는 것은 아니다. 오히려, 그러한 서수 용어들은 단지 동일 또는 유사한 유형의 상이한 요소들을 지칭하는데 사용된다.
도 1a 는 본 개시에 기재된 양태들에 따른 기법들을 구현할 수도 있는 일 예의 비디오 코딩 시스템 (10) 을 예시하는 블록도이다. 여기에 기재 사용된, 용어 "비디오 코더" 또는 "코더" 는 비디오 인코더 및 비디오 디코더 양자 모두를 총칭적으로 지칭한다. 본 개시에서, 용어 "비디오 코딩" 또는 "코딩" 은 비디오 인코딩 및 비디오 디코딩을 총칭적으로 지칭할 수도 있다. 비디오 인코더 및 비디오 디코더에 더하여, 본원에 설명된 양태들은 다른 관련된 디바이스들 이를테면 트랜스코더들 (예를 들어, 비트스트림을 디코딩할 수 있고 또 다른 비트스트림을 리인코딩할 수 있는 디바이스들) 및 미들박스 (예를 들어, 비트스트림을 수정, 변환 및/또는 그렇지 않으면 조작할 수 있는 디바이스들) 에 확장될 수도 있다.
도 1a에 도시된 바처럼, 비디오 코딩 시스템 (10) 은, 목적지 디바이스 (14) 에 의해 나중에 디코딩될 인코딩된 비디오 데이터를 생성하는 소스 디바이스 (12) 를 포함한다. 도 1a의 예에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 분리된 디바이스들을 구성한다. 하지만, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 도 1b 의 예에 나타낸 바처럼, 동일한 디바이스 상에 있거나 또는 그의 부분일 수도 있다는 것에 유의한다.
다시 한번 도 1a 를 참조하면, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 각각, 데스크톱 컴퓨터, 노트북 (예 : 랩톱) 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 전화기 핸드셋 이를테면 소위 "스마트" 폰, 소위 "스마트" 패드, 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게이밍 콘솔, 차채 컴퓨터, 비디오 스트리밍 디바이스, 안경 및/또는 웨어러블 컴퓨터와 같은 엔티티 (예를 들어, 인간, 동물 및/또는 또 다른 제어된 디바이스) 에 의해 (에) 착용가능한 (또는 착탈식으로 부착가능한) 디바이스들, 엔티티 내에서 소비, 섭취 또는 배치될 수 있는 디바이스들 또는 장치를 포함하는, 넓은 범위의 디바이스들 중 임의의 것을 포함할 수도 있다. 다양한 실시형태들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신을 위해 갖추어질 수도 있다.
목적지 디바이스 (14) 는, 링크 (16) 를 통하여, 디코딩될 인코딩된 비디오 데이터를 수신할 수도 있다. 링크 (16) 는, 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 이동시킬 수 있는 임의의 타입의 매체 또는 디바이스를 포함할 수도 있다. 도 1a 의 예에서, 링크 (16) 는, 소스 디바이스 (12) 로 하여금 인코딩된 비디오 데이터를 실시간으로 목적지 디바이스 (14) 로 송신할 수 있게 하기 위한 통신 매체를 포함할 수도 있다. 인코딩된 비디오 데이터는, 무선 통신 프로토콜 등의 통신 표준에 따라 변조되고, 목적지 디바이스 (14) 로 송신될 수도 있다. 통신 매체는 라디오 주파수 (radio frequency; RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수도 있다. 통신 매체는 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷-기반 네트워크의 일부를 형성할 수도 있다. 통신 매체는 라우터, 스위치, 기지국, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 통신을 가능하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
도 1a의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20) 및 출력 인터페이스 (22) 를 포함한다. 일부 경우들에서, 출력 인터페이스 (22) 는 변조기/복조기 (모뎀) 및/또는 송신기를 포함할 수도 있다. 소스 디바이스 (12) 에서, 비디오 소스 (18) 는 소스, 이를테면 비디오 캡처 디바이스, 예를 들어, 비디오 카메라, 이전에 캡처된 비디오를 포함하는 비디오 아카이브, 비디오 콘텐츠 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스, 및/또는 소스 비디오로서 컴퓨터 그래픽스 데이터를 생성하기 위한 컴퓨터 그래픽스 시스템, 또는 그러한 소스들의 조합을 포함할 수도 있다. 일 예로서, 비디오 소스 (18) 가 비디오 카메라이면, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 도 1b 의 예에 예시된 바처럼, 소위 "카메라 폰들" 또는 "비디오 폰들" 을 형성할 수도 있다. 하지만, 본 개시에 설명된 기법들은, 일반적으로 비디오 코딩에 적용가능할 수도 있고, 무선 및/또는 유선 응용들에 적용될 수도 있다.
캡처되거나, 미리 캡처되거나 또는 컴퓨터 생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다. 인코딩된 비디오 데이터는 소스 디바이스 (12) 의 출력 인터페이스 (22) 를 통해 목적지 디바이스 (14) 로 송신될 수도 있다. 인코딩된 비디오 데이터는 또한 (또는 대안적으로), 디코딩 및/또는 플레이백을 위해, 목적지 디바이스 (14) 또는 다른 디바이스들에 의한 나중 액세스를 위해 저장 디바이스 (31) 에 저장될 수도 있다. 도 1a 및 도 1b 에 예시된 비디오 인코더 (20) 는 도 2a에 예시된 비디오 인코더 (20), 또는 본원에 설명된 임의의 다른 비디오 인코더를 포함할 수도 있다.
도 1a의 예에서, 목적지 디바이스 (14) 는 입력 인터페이스 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 포함한다. 일부 경우들에서, 입력 인터페이스 (28) 는 수신기 및/또는 모뎀을 포함할 수도 있다. 목적지 디바이스 (14) 의 입력 인터페이스 (28) 는 링크 (16) 상에서 및/또는 저장 디바이스 (31) 로부터 인코딩된 비디오 데이터를 수신할 수도 있다. 링크 (16) 를 통해 통신되거나, 또는 저장 디바이스 (31) 상에 제공된 인코딩된 비디오 데이터는, 비디오 데이터를 디코딩함에 있어서, 비디오 디코더 (30) 와 같은 비디오 디코더에 의한 사용을 위해 비디오 인코더 (20) 에 의해 생성된 다양한 신택스 엘리먼트들을 포함할 수도 있다. 그러한 신택스 엘리먼트들은, 통신 매체 상에서 송신되거나, 저장 매체 상에 저장되거나, 또는 파일 서버에 저장되는 인코딩된 비디오 데이터와 함께 포함될 수도 있다. 도 1a 및 도 1b 에 예시된 비디오 디코더 (30) 는 도 2a에 예시된 비디오 디코더 (30), 또는 본원에 설명된 임의의 다른 비디오 디코더를 포함할 수도 있다.
디스플레이 디바이스 (32) 는, 목적지 디바이스 (14) 와 통합되거나 또는 그 외부에 있을 수도 있다. 일부 예들에서, 목적지 디바이스 (14) 는, 통합된 디스플레이 디바이스를 포함할 수도 있고 또한 외부 디스플레이 디바이스와 인터페이스 접속하도록 구성될 수도 있다. 다른 예들에서, 목적지 디바이스 (14) 는 디스플레이 디바이스일 수도 있다. 일반적으로, 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 사용자에게 표시하고, 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 어느 것을 포함할 수도 있다
관련된 양태들에서, 도 1b 는 예시적인 비디오 코딩 시스템 (10') 을 도시하고, 여기서 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 디바이스 (11) 상에 있거나 또는 그 부분이다. 디바이스 (11) 는, 전화기 핸드셋, 이를테면 "스마트" 폰 등일 수도 있다. 디바이스 (11) 는 소스 디바이스 (12) 및 목적지 디바이스 (14) 와 동작적으로 통신하는 (선택적으로 존재하는) 프로세서/제어기 디바이스 (13) 를 포함할 수도 있다. 도 1b 의 비디오 코딩 시스템 (10') 및 이의 컴포넌트들은, 그렇지 않으면 도 1a 의 비디오 코딩 시스템 (10) 및 이의 컴포넌트들과 유사하다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 DSC 와 같은 비디오 압축 표준에 따라 동작할 수도 있다. 다르게는, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 다르게는 MPEG4, Part 10, AVC 로도 지칭되는, ITU-T H.264 표준, HEVC 과 같은 다른 사유 (proprietary) 또는 산업 표준들 또는 그러한 표준들의 확장들에 따라 동작할 수도 있다. 하지만, 본 개시의 기법들은 임의의 특정 코딩 표준에 한정되지 않는다. 비디오 압축 표준들의 다른 예들은 MPEG-2 및 ITU-T H.263 를 포함한다.
비록 도 1a 및 도 1b 의 예들에 도시되지는 않았지만, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 각각 오디오 인코더 및 디코더와 통합될 수도 있고, 공통 데이터 스트림 또는 분리된 데이터 스트림들에서 오디오 및 비디오 양자 모두의 인코딩을 핸들링 (handling) 하기 위하여, 적절한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 포함할 수도 있다. 적용가능하다면, 일부 예들에서, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜 또는 다른 프로토콜들 이를테면 사용자 데이터그램 프로토콜 (UDP) 을 따를 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서 (DSP) 들, 주문형 집적 회로 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합과 같은 다양한 적합한 인코더 회로 중 어느 것으로서 구현될 수도 있다. 그 기법들이 부분적으로 소프트웨어로 구현될 때, 디바이스는 적합한 비일시적 컴퓨터 판독가능 매체에 그 소프트웨어를 위한 명령들을 저장하고 본 개시의 기법들을 수행하기 위하여 하나 이상의 프로세서들을 이용하여 하드웨어에서 그 명령들을 실행할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있는데, 이들 중 어느 쪽이 각각의 디바이스에서 결합된 인코더/디코더의 부분으로서 통합될 수도 있다.
비디오 코딩 프로세스
간략히 전술된 바처럼, 비디오 인코더 (20) 는 비디오 데이터를 인코딩한다. 비디오 데이터는 하나 이상의 화상들을 포함할 수도 있다. 화상들의 각각은 비디오의 부분을 형성하는 정지 이미지이다. 일부 사례들에서, 화상은 비디오 "프레임" 으로 지칭될 수도 있다. 비디오 인코더 (20) 가 비디오 데이터를 인코딩할 때, 비디오 인코더 (20) 는 비트스트림을 생성할 수도 있다. 비트스트림은 비디오 데이터의 코딩된 표현을 형성하는 비트들의 시퀀스를 포함할 수도 있다. 비트스트림은 코딩된 화상들 및 연관된 데이터를 포함할 수도 있다. 코딩된 화상은 화상의 코딩된 표현이다.
비트스트림을 생성하기 위하여, 비디오 인코더 (20) 는 비디오 데이터에서 각 화상에 대해 인코딩 동작들을 수행할 수도 있다. 비디오 인코더 (20) 가 화상들에 대해 인코딩 동작들을 수행할 때, 비디오 인코더 (20) 는 일련의 코딩된 화상들 및 연관된 데이터를 생성할 수도 있다. 연관된 데이터는 QP 와 같은 코딩 파라미터들의 세트를 포함할 수도 있다. 코딩 화상을 생성하기 위하여, 비디오 인코더 (20) 는 동일한 크기의 비디오 블록들로 화상을 파티셔닝할 수도 있다. 비디오 블록은 샘플들의 2차원 어레이일 수도 있다. 코딩 파라미터들은 비디오 데이터의 모든 블록에 대해 코딩 옵션 (예를 들어, 코딩 모드) 를 정의할 수도 있다. 코딩 옵션은 원하는 레이트 왜곡 성능을 달성하기 위하여 선택될 수도 있다.
일부 예들에서, 비디오 인코더 (20) 는 복수의 슬라이스들로 화상을 파티셔닝할 수도 있다. 슬라이스들의 각각은 이미지 또는 프레임에 있는 영역들의 나머지로부터의 정보 없이 독립적으로 디코딩될 수 있는 (예를 들어, 프레임인) 이미지에서 공간적으로 구별되는 영역을 포함할 수도 있다. 각각의 이미지 또는 비디오 프레임은 단일 슬라이스에서 인코딩될 수도 있거나, 또는 각각의 이미지 또는 비디오 프레임은 여러 슬라이스들에서 인코딩될 수도 있다. DSC 에서, 각각의 슬라이스를 인코딩하기 위해 할당된 타겟 비트들은 실질적으로 일정할 수도 있다. 화상에 대해 인코딩 동작을 수행하는 부분으로서, 비디오 인코더 (20) 는 화상의 각각의 슬라이스에 대해 인코딩 동작들을 수행할 수도 있다. 비디오 인코더 (20) 가 슬라이스에 대해 인코딩 동작을 수행할 때, 비디오 인코더 (20) 는 슬라이스와 연관된 인코딩된 데이터를 생성할 수도 있다. 슬라이스와 연관된 인코딩된 데이터는 “코딩된 슬라이스”로 지칭될 수도 있다.
DSC 비디오 인코더
도 2b는 본 개시에 기재된 양태들에 따른 기법들을 구현할 수도 있는 비디오 인코더 (20) 의 일 예를 예시하는 블록도이다. 비디오 인코더 (20) 는 본 개시의 일부 또는 모든 기법들을 수행하도록 구성될 수도 있다. 일부 예들에서, 본 개시에 기재된 기법들은 비디오 인코더 (20) 의 다양한 컴포넌트들 중에서 공유될 수도 있다. 일부 예들에서, 추가적으로 또는 대안적으로, 프로세서 (미도시) 는 본 개시에 기재된 기법들 중 일부 또는 전부를 수행하도록 구성될 수도 있다.
설명의 목적을 위하여, 본 개시는 DSC 코딩의 맥락에서 비디오 인코더 (20) 를 설명한다. 하지만, 본 개시의 기법들은 다른 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
도 2a의 예에서, 비디오 인코더 (20) 는 복수의 기능 컴포넌트들을 포함한다. 비디오 인코더 (20) 의 기능 컴포넌트들은 색공간 컨버터 (105), 버퍼 (110), 평탄도 검출기 (flatness detector; 115), 레이트 제어기 (120), 예측기, 양자화기, 및 재구성기 컴포넌트 (125), 라인 버퍼 (130), 인덱싱된 색 이력 (color history; 135), 엔트로피 인코더 (140), 서브스트림 멀티플렉서 (145), 및 레이트 버퍼 (150) 를 포함한다. 다른 예들에서, 비디오 인코더 (20) 는, 더 많거나, 더 적거나, 또는 상이한 기능 컴포넌트들을 포함할 수도 있다.
색공간 컨버터 (105) 는 코딩 구현에서 사용되는 색공간으로 입력 색공간을 컨버팅할 수도 있다. 예를 들어, 일 예시적 실시형태에서, 입력 비디오 데이터의 색공간은 적, 녹, 및 청 (RGB) 색공간에 있고, 코딩은 루미넌스 Y, 크로미넌스 그린 Cg, 및 크로미넌스 오렌지 Co (YCgCo) 색공간에서 구현된다. 색공간 컨버젼은 비디오 데이터에 대한 시프트 및 추가를 포함하는 방법(들) 에 의해 수행될 수도 있다. 다른 색공간에서의 입력 비디오 데이터가 처리될 수도 있고 다른 색공간으로의 컨버젼이 또한 수행될 수도 있음에 유의한다.
관련된 양태들에서, 비디오 인코더 (20) 는 버퍼 (110), 라인 버퍼 (130), 및/또는 레이트 버퍼 (150) 를 포함할 수도 있다. 예를 들어, 버퍼 (110) 는 비디오 인코더 (20) 의 다른 부분들에 의한 사용 전에 색공간 컨버팅된 비디오 데이터를 유지할 수도 있다. 다른 예에서, 비디오 데이터는 RGB 색공간에 저장될 수도 있고 색공간 컨버젼은 필요에 따라 수행될 수도 있는데, 왜냐하면 색공간 컨버팅된 데이터는 더 많은 비트들을 필요로 할 수도 있기 때문이다.
레이트 버퍼 (150) 는 비디오 인코더 (20) 에서 레이트 제어 메카니즘의 부분으로서 기능할 수도 있는데, 이는 레이트 제어기 (120) 와 관련하여 아래에서 더 자세하게 설명될 것이다. 각각의 블록을 인코딩하는데 쓰여진 비트들은 블록의 성질에 기초하여 매우 상당히 달라질 수 있다. 레이트 버퍼 (150) 는 압축된 비디오에서 레이트 변동들을 평활화 (smooth) 할 수 있다. 일부 실시형태들에서, 일정한 비트 레이트에서 버퍼로부터 비트들이 취출되는 CBR 버퍼 모델이 채용된다. CBR 버퍼 모델에서, 비디오 인코더 (20) 가 너무 많은 비트들을 비트스트림에 추가하는 경우, 레이트 버퍼 (150) 는 오버플로우할 수도 있다. 다른 한편, 비디오 인코더 (20) 는 레이트 버퍼 (150) 의 언더플로우를 방지하기 위하여 충분한 비트들을 추가해야 한다.
비디오 디코더 측에서, 비트들이 일정한 비트 레이트로 비디오 디코더 (30) 의 레이트 버퍼 (155) 에 추가될 수도 있고 (아래에서 더 자세하게 설명되는 도 2b 를 참조), 비디오 디코더 (30) 는 각각의 블록에 대해 변화가능한 수들의 비트들을 제거할 수도 있다. 적절한 디코딩을 보장하기 위하여, 비디오 디코더 (30) 의 레이트 버퍼 (155) 는 압축된 비트 스트림의 디코딩 동안 "언더플로우" (underflow) 또는 "오버플로우" (overflow) 하지 않아야 한다.
일부 실시형태들에서, 버퍼 충만도 (BF) 는 현재 버퍼에 있는 비트들의 수를 나타내는 BufferCurrentSize 및 레이트 버퍼 (150) 의 크기, 즉 임의의 시점에 레이트 버퍼 (150) 에서 저장될 수 있는 비트들의 최대 수를 나타내는 BufferMaxSize 값들에 기초하여 정의될 수 있다. BF 는 다음과 같이 계산될 수도 있다:
Figure pct00001
BF 를 계산하는 것에 대한 위의 접근법은 단지 예시적인 것이며, BF는 특정 구현 또는 맥락에 따라 임의의 수의 상이한 방식으로 계산될 수도 있음에 유의해야 한다.
평탄도 검출기 (115) 는 비디오 데이터에서의 복잡 (즉, 비평탄) 영역들로부터 비디오 데이터에서의 평탄 (즉, 단순 또는 균일) 영역들로의 및/또는 그 반대의 변화들을 검출할 수 있다. 용어들 "복잡" (complex) 및 "평탄" (flat) 은 본원에서, 비디오 인코더 (20) 가 비디오 데이터의 각각의 영역들을 인코딩하는 곤란성을 일반적으로 나타내는데 사용될 것이다. 따라서, 본원에서 사용된 용어 복잡은 일반적으로, 비디오 인코더 (20) 가 인코딩하기 복잡한 것으로서 비디오 데이터의 영역을 기술하고, 예를 들어, 텍스쳐화된 비디오 데이터, 높은 공간 주파수, 및/또는 인코딩하기 복잡한 다른 특징들을 포함할 수도 있다. 본원에서 사용된 용어 평탄은 일반적으로, 비디오 인코더 (20) 가 인코딩하기 간단한 것으로서 비디오 데이터의 영역을 기술하고, 예를 들어, 비디오 데이터에서의 매끄러운 그래디언트, 낮은 공간 주파수, 및/또는 인코딩하기 간단한 다른 특징들을 포함할 수도 있다. 복잡 영역으로부터 평탄 영역으로의 천이는 인코딩된 비디오 데이터에서 양자화 아티팩트들을 감소시키기 위하여 비디오 인코더 (20) 에 의해 사용될 수도 있다. 특히, 레이트 제어기 (120) 및 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 는, 복잡으로부터 평탄 영역들로의 천이가 식별될 때 그러한 양자화 아티팩트들을 감소시킬 수 있다. 마찬가지로, 평탄 영역으로부터 복잡 영역으로의 천이는 현재 블록을 코딩하는데 요구되는 예상 레이트를 감소시키기 위해 QP를 증가시키기 위해 비디오 인코더 (20) 에 의해 사용될 수도 있다.
레이트 제어기 (120) 는, 코딩 파라미터들, 예를 들어, QP 의 세트를 결정한다. QP 는, 레이트 버퍼 (150) 가 오버플로우 또는 언더플로우하지 않도록 보장하는 타겟 비트레이트를 위한 화상 품질을 극대화하기 위하여 비디오 데이터의 이미지 활동도 (image activity) (예를 들어, 복잡 영역으로부터 평탄 영역으로의 천이 또는 그 반대의 천이) 및 레이트 버퍼 (150) 의 버퍼 충만도에 기초하여 레이트 제어기 (120) 에 의해 조정될 수도 있다. 레이트 제어기 (120) 는 또한, 최적 레이트 왜곡 성능을 달성하기 위하여 비디오 데이터의 각각의 블록에 대해 특정 코딩 옵션 (예를 들어, 특정 모드) 를 선택한다. 레이트 제어기 (120) 는, 비트 레이트 제약을 만족하도록, 즉 전체적인 실제 코딩 레이트가 타겟 비트 레이트 안에 들어가도록 재구성된 이미지들의 왜곡을 최소화한다. 따라서, 레이트 제어기 (120) 의 한가지 목적은 레이트-왜곡 성능을 최대화하면서 레이트에 대한 순시 및 평균 제약들을 만족시키기 위한 QP (들), 코딩 모드(들) 등과 같은 코딩 파라미터들의 세트를 결정하는 것이다.
예측기, 양자화기 및 재구성기 컴포넌트 (125) 는 비디오 인코더 (20) 의 적어도 3개의 인코딩 동작들을 수행할 수도 있다. 예측기, 양자화기 및 재구성기 컴포넌트 (125) 는 많은 상이한 모드들에서 예측을 수행할 수도 있다. 하나의 예시적인 예측 모드는 메디안 적응 예측 (median-adaptive prediction) 의 수정된 버전이다. 메디안 적응 예측은 무손실 JPEG 표준 (JPEG-LS) 에 의해 구현될 수도 있다. 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 에 의해 수행될 수도 있는 메디안 적응 예측의 수정된 버전은 3개의 연속적인 샘플 값들의 병렬 예측을 허용할 수도 있다. 다른 예시적인 예측 모드는 블록 예측이다. 블록 예측에서, 샘플들은 동일한 라인에서 위 또는 좌측 라인에서 이전에 재구성된 픽셀들로부터 예측된다. 일부 실시형태들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 양자 모두는 블록 예측 사용을 결정하기 위하여 재구성된 픽셀들에 대해 동일한 검색을 수행할 수도 있고, 따라서 블록 예측 모드에서 비트들이 전송될 필요가 없다. 다른 실시 형태들에서, 비디오 인코더 (20) 는 검색을 수행하고 비트스트림에서 블록 예측 벡터들을 시그널링하여, 비디오 디코더 (30) 가 별도의 검색을 수행할 필요가 없을 수도 있다. 또한, 컴포넌트 범위의 중간점을 이용하여 샘플들이 예측되는 중간점 예측 모드 (midpoint prediction mode) 가 구현될 수도 있다. 중간점 예측 모드는, 심지어 최악 경우의 샘플에서 압축된 비디오를 위해 요구되는 비트들의 수의 바운딩 (bounding) 을 가능하게 할 수도 있다.
예측기, 양자화기, 및 재구성기 컴포넌트 (125) 는 또한 양자화를 수행한다. 예를 들어, 양자화는 시프터를 이용하여 구현될 수도 있는 2의 거듭제곱 (power-of-2) 양자화기를 통하여 수행될 수도 있다. 다른 양자화 기법들은 2의 거듭제곱 양자화기 대신에 구현될 수도 있다. 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 에 의해 수행되는 양자화는 레이트 제어기 (120) 에 의해 결정되는 QP 에 기초할 수도 있다. 최종적으로, 예측기, 양자화기 및 재구성기 컴포넌트 (125) 는 또한, 예측된 값에 역 양자화된 잔차를 추가하는 것 및 결과가 샘플 값들의 유효 범위를 벗어나지 않도록 보장하는 것을 포함하는 재구성을 수행한다.
예측기, 양자화기, 및 재구성기 컴포넌트 (125) 에 의해 수행되는 예측, 양자화 및 재구성에 대한 위에 설명된 예시적인 접근법들은 예시일 뿐이고 다른 접근법들이 구현될 수도 있다는 것에 유의한다. 또한, 예측기, 양자화기 및 재구성기 컴포넌트 (125) 는 예측, 양자화 및/또는 재구성을 수행하기 위한 서브컴포넌트(들) 을 포함할 수도 있다는 것에 유의한다. 또한, 예측, 양자화 및/또는 재구성은 예측기, 양자화기 및 재구성기 컴포넌트 (125) 대신에 여러 별개의 인코더 컴포넌트들에 의해 수행될 수도 있다는 것에 유의한다.
라인 버퍼 (130) 는 예측기, 양자화기 및 재구성기 컴포넌트 (125) 및 인덱싱된 색 이력 (135) 이 버퍼링된 비디오 데이터를 사용할 수 있도록 예측기, 양자화기 및 재구성기 컴포넌트 (125) 로부터의 출력을 유지한다. 인덱싱된 색 이력 (135) 은 최근 사용된 픽셀 값들을 저장한다. 이들 최근 사용된 픽셀 값들은 전용 신택스를 통해 비디오 인코더 (20) 에 의해 직접 참조될 수 있다.
엔트로피 인코더 (140) 는 인덱싱된 색 이력 (135) 및 평탄도 검출기 (115) 에 의해 식별되는 평탄도 천이들에 기초하여 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 로부터 수신된 예측 잔차들 및 임의의 다른 데이터 (예를 들어, 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 에 의해 식별된 인덱스들) 을 인코딩한다. 일부 예들에서, 엔트로피 인코더 (140) 는 서브스트림 인코더에 대하여 클록당 3개 샘플들을 인코딩할 수도 있다. 서브스트림 멀티플렉서 (145) 는 헤더리스 패킷 멀티플렉싱 스킴에 기초하여 비트스트림을 멀티플렉싱할 수도 있다. 이것은 비디오 디코더 (30) 가 3개의 엔트로피 디코더들을 병렬로 실행하는 것을 허용하며, 클록마다 3개의 픽셀들의 디코딩을 가능하게 한다. 서브스트림 멀티플렉서 (145) 는 패킷들이 비디오 디코더 (30) 에 의해 효율적으로 디코딩될 수 있도록 패킷 순서를 최적화할 수도 있다. 클록마다 2의 거듭제곱 픽셀들 (예를 들어, 2 pixels/clock 또는 4pixels/clock) 의 디코딩을 가능하게 할 수도 있는, 엔트로피 코딩에 대한 상이한 접근법들이 구현될 수도 있다는 것에 유의한다.
DSC 비디오 디코더
도 2b는 본 개시에 기재된 양태들에 따른 기법들을 구현할 수도 있는 비디오 디코더 (30) 의 일 예를 예시하는 블록도이다. 비디오 디코더 (30) 는 본 개시의 일부 또는 모든 기법들을 수행하도록 구성될 수도 있다. 일부 예들에서, 본 개시에 기재된 기법들은 비디오 디코더 (30) 의 다양한 컴포넌트들 중에서 공유될 수도 있다. 일부 예들에서, 추가적으로 또는 대안적으로, 프로세서 (미도시) 는 본 개시에 기재된 기법들 중 일부 또는 전부를 수행하도록 구성될 수도 있다.
설명의 목적을 위하여, 본 개시는 DSC 코딩의 맥락에서 비디오 디코더 (30) 를 설명한다. 하지만, 본 개시의 기법들은 다른 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
도 2b의 예에서, 비디오 디코더 (30) 는 복수의 기능 컴포넌트들을 포함한다. 비디오 디코더 (30) 의 기능 컴포넌트들은 레이트 버퍼 (155), 서브스트림 디멀티플렉서 (160), 엔트로피 디코더 (165), 레이트 제어기 (170), 예측기, 양자화기, 및 재구성기 컴포넌트 (175), 인덱싱된 색 이력 (180), 라인 버퍼 (185) 및 색공간 컨버터 (190) 를 포함한다. 비디오 디코더 (30) 의 예시된 컴포넌트들은 도 2a 에서 비디오 인코더 (20) 와 관련하여 위에서 설명된 대응하는 컴포넌트들에 유사하다. 그래서, 비디오 디코더 (30) 의 컴포넌트들의 각각은 위에서 설명된 바처럼 비디오 인코더 (20) 의 대응하는 컴포넌트들에 유사한 방식으로 동작할 수도 있다.
DSC 비디오 인코더의 추가 예
도 3은 본원에 기재된 양태들에 따른 기법들을 구현할 비디오 인코더 (20) 의 또 다른 예를 예시하는 블록도이다. 비디오 인코더 (20) 또는 이의 컴포넌트(들) 은 본 개시의 일부 또는 모든 기법들을 수행하도록 구성될 수도 있다. 일부 예들에서, 본원에 기재된 기법들은 비디오 인코더 (20) 의 다양한 컴포넌트들 중에서 공유 또는 분산될 수도 있다. 일부 예들에서, 추가적으로 또는 대안적으로, 프로세서 (미도시) 는 본원에 기재된 기법들 중 일부 또는 전부를 수행하도록 구성될 수도 있다.
도 3의 예에서, 비디오 인코더 (20) 는 복수의 기능 컴포넌트들을 포함한다. 비디오 인코더 (20) 의 기능 컴포넌트들은 예를 들어, 평탄도 검출기 (115), 레이트 제어기 (120), 엔트로피 인코더 (140), 서브스트림 멀티플렉서 (145), 레이트 버퍼 (150), 라인 버퍼(들) (305), 래스터 대 블록 컨버터 (310), 모드 평가기 (315), 모드 선택기 (320), 재구성기 (325), 업데이트 재구성 버퍼 컴포넌트 (330) 및 업데이터 패턴 데이터베이스 컴포넌트 (335) 를 포함할 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는, 더 많거나, 더 적거나, 또는 상이한 기능 컴포넌트들을 포함할 수도 있다. 평탄도 검출기 (115), 레이트 제어기 (120), 엔트로피 인코더 (140), 서브스트림 멀티플렉서 (145) 및 레이트 버퍼 (150) 는 도 2a와 관련하여 상술한 비디오 인코더 (20) 의 대응하는 컴포넌트들과 유사하게 기능할 수도 있으며, 따라서 이러한 컴포넌트들에 대한 추가 상세한 논의는 반복되지 않을 것이다.
라인 버퍼(들) (305) 은 예를 들어 비디오 데이터의 2 내지 4 라인들을 저장하는 버퍼 또는 복수의 버퍼들일 수도 있다. 라인 버퍼(들) (305) 에 의해 저장된 비디오 데이터의 라인은 래스터 대 블록 컨버터 (310) 에 제공될 수도 있다. 라인 버퍼(들) (305) 에 의해 저장된 라인들의 수는 픽셀 블록 (예를 들어, Kx2 또는 Kx4 블록들) 을 생성하는데 사용된 픽셀들의 행들의 수에 대응할 수도 있다. 래스터 대 블록 컨버터 (310) 는 비디오 데이터의 라인들을 인코더 (20) 가 동작하도록 설계된 비디오 데이터의 블록으로 컨버팅할 수도 있다.
래스터 대 블록 컨버터 (310) 는 블록들을 평탄도 검출기 (115) 및/또는 모드 평가기 (315) 에 제공하도록 구성될 수도 있다. 평탄도 검출기 (115) 는 비디오 데이터에서 평탄 영역을 검출하고, 도 2a의 평탄도 검출기 (115) 와 유사한 방식으로 동작할 수도 있다. 유사하게, 평탄도 검출기 (115) 로부터의 출력을 수신하는 레이트 제어기 (120) 는 도 2a의 레이트 제어기 (120) 와 유사한 방식으로 동작할 수도 있다.
모드 평가기 (315) 는 복수의 코딩 모드에서 래스터 대 블록 컨버터 (310) 로부터 수신된 블록들의 코딩과 연관된 하나 이상의 파라미터를 평가하도록 구성될 수도 있다. 예를 들어, 모드 평가기 (315) 는 복수의 코딩 모드들 각각에 대해 현재 블록을 인코딩하기 위한 레이트-왜곡 비용을 결정할 수도 있다. 코딩 모드들의 예들은 변환 코딩 모드 (예를 들어, DCT, Hadamard 등 ), 블록 예측 코딩 모드, DPCM (differential pulse-code modulation) 코딩 모드, 패턴 코딩 모드, 중간점 예측 (MPP) 코딩 모드, 및 MPP 폴백 (MPPF) 코딩 모드를 포함할 수도 있다. 모드 선택기 (320) 는 비디오 데이터의 현재 블록을 인코딩하기 위해 복수의 코딩 모드들 중 하나를 선택할 수도 있다. 일 구현에서, 모드 선택기 (320) 는 모드 평가기 (315) 에 의해 결정된 바와 같이 최저 레이트-왜곡 비용을 갖는 코딩 모드를 선택하도록 구성될 수도 있다. 모드 선택기 (320) 의 출력은 재구성기 (325) 및/또는 엔트로피 인코더 (140) 에 제공될 수도 있다. 엔트로피 인코더 (140), 서브스트림 멀티플렉서 (145) 및 레이트 버퍼 (150) 각각은 도 2a와 관련하여 기술된 예시적인 인코더의 대응하는 컴포넌트와 유사하게 동작할 수도 있다.
도 2a의 인코더의 예측기, 양자화기 및 재구성기 컴포넌트 (125) 와 유사하게, 재구성기 (325) 는 예측된 값에 역 양자화된 잔차를 추가하고 그 결과가 샘플 값의 허용 범위 또는 유효 범위를 벗어나지 않도록 보장하는 것을 포함할 수도 있는 원래 수신된 비디오 데이터의 재구성을 수행할 수도 있다. 업데이트 재구성 버퍼 (330) 는 재구성기 (325) 로부터의 비디오 데이터의 재구성에 관련된 정보를 저장하도록 구성될 수도 있다. 예를 들어, 업데이트 재구성 버퍼 (330) 는 현재 블록 및 이전의 재구성된 라인과 동일한 라인에 재구성된 픽셀 값을 저장할 수도 있다. 특정 구현에서, 이러한 재구성된 픽셀 값은 특정 코딩 모드에서의 예측에 사용될 수도 있다.
업데이트 패턴 데이터베이스 (335) 는 비디오 데이터에 반복적으로 또는 공통적으로 나타나는 픽셀 값을 저장하도록 구성될 수도 있다. 이러한 저장된 픽셀 값은 인덱스를 참조하는 코딩 모드 (예를 들어, 패턴 코딩 모드) 와 같은 특정 코딩 모드에 의해 사용될 수도 있다. 저장된 픽셀 값을 참조하기 위해 업데이트된 패턴 데이터베이스 (335) 에서 하나 이상의 인덱스를 사용하는 것은 그래픽 콘텐츠와 같은 특정 콘텐츠 유형에 대한 레이트-왜곡을 개선할 수도 있고, 여기서 큰 영역은 별개의 픽셀 값의 작은 세트를 포함할 수도 있다.
설명되지 않거나 또는 상세히 예시되지는 않았지만, 당업자는 대응 비디오 디코더가 도 3에 예시된 비디오 인코더 (20) 에 기초하여 구성될 수도 있음을 알 것이다. 이러한 비디오 디코더는 인코딩된 비디오 비트스트림을 디코딩하여 비디오 인코더 (20) 에 의해 수신된 비디오 데이터에 대응하는 시각적으로 무손실 이미지를 재생하도록 구성될 수도 있다.
비디오 인코더 및/또는 비디오 디코더의 특정 실시형태들은 DSC 표준의 맥락에서 여기에 설명되었지만, 당업자는, 여기에 개시된 시스템 및 방법들이 임의의 적합한 비디오 코더 또는 코딩 표준에 적용가능할 수도 있다는 것을 인식할 것이다.
도 1a 내지 도 1b, 도 2a 내지 도 2b 및/또는 도 3에 예시된 비디오 인코더 (20), 비디오 디코더 (30), 및/또는 이들의 컴포넌트(들)은 본원에 기재된 코딩 기술들의 특징들 중 하나 이상을 수행하도록 구성될 수도 있다.
비디오 인코더, 비디오 디코더 및/또는 이들의 컴포넌트(들)은 버퍼를 포함하는 복수의 프로그램 가능 컴퓨팅 유닛에 의해 공유되는 통합된 전역 메모리를 포함하는 디바이스 상에 구현될 수도 있으며, 버퍼는 선입선출 (FIFO) 버퍼를 포함할 수도 있다. 디바이스는 적어도 하나의 프로세서 또는 프로세서 회로 (예를 들어, 중앙 처리 장치 (CPU)) 및/또는 그래픽 처리 장치 (GPU) 를 포함할 수도 있는 집적 회로 (IC) 를 더 포함할 수도 있으며, GPU 는 하나 이상의 프로그램 가능한 컴퓨팅 유닛을 포함할 수도 있다. 디바이스는 적어도 하나의 RISC (reduced instruction set computing) 명령 세트를 사용하는 CPU를 포함할 수도 있는 SoC 의 일부일 수도 있다. SoC에는 다수의 CPU 코어와 GPU가 포함될 수도 있다.
블록 기반 비디오 코딩
디스플레이 기술, 예를 들어 4K와 같은 고해상도 디스플레이를 개발하는 것은 디스플레이 링크를 통해 전달되어야하는 데이터 전송량 증가를 필요로 할 수도 있다. 미래의 요구에 대처하기 위해, 4 : 1 이상의 압축 목표 비와 같이 시각적으로 무손실 요건을 충족시키는 증가된 압축률이 바람직할 수도 있다.
위에서 간략하게 언급한 바와 같이, 비디오 코딩은 블록 기반 접근법을 통해 수행될 수도 있다. 예를 들어, 코딩될 각각의 이미지는 각각이 P × Q 픽셀의 크기를 갖는 복수의 픽셀 블록으로 분할될 수도 있다. 블록-기반 비디오 코딩 표준의 일례는 코딩 모드가 코딩될 각 블록에 대해 개별적으로 선택될 수도 있는 DSC이다. 각각의 블록에 대해 DSC 표준에서 이용가능한 (코딩 옵션들로도 지칭되는) 코딩 모드들의 예들은 변환 코딩 모드 (예를 들어, DCT, Hadamard 등), 블록 예측 코딩 모드, DPCM (differential pulse-code modulation) 코딩 모드, 패턴 코딩 모드, 중간점 예측 (MPP) 코딩 모드, 및 중간점 예측 폴백 (MPPF) 코딩 모드를 포함한다. 예를 들어, 최저 레이트-왜곡 비용을 갖는 코딩 모드를 선택함으로써 상이한 타입의 콘텐츠 또는 이미지를 효과적으로 압축하기 위해, 복수의 코딩 모드가 코더에 의해 사용될 수도 있다. 레이트-왜곡 비용을 계산하기 위한 예시적인 기술들은 아래에서 보다 상세히 설명될 것이다. 블록 기반 코딩의 일 구현에서, 텍스트 이미지는 패턴 코딩 모드를 사용함으로써 보다 효율적으로 압축될 수도 있는 한편, 자연 이미지들은 변환 코딩 모드를 사용하여 보다 효율적으로 압축될 수도 있다.
코더는 레이트 제어 메커니즘에 기초하여 복수의 코딩 모드들로부터 코딩 모드들 중 하나를 선택할 수도 있다. 레이트 제어 메커니즘은 모드의 왜곡 및 레이트 양자 모두를 고려하여 각 블록에 대해 "최상" 모드를 선택하도록 구성될 수도 있다. 예를 들어, "최상" 모드는 블록에 대한 레이트 왜곡 비용을 최소화하는 모드로서 정의될 수도 있다. 레이트 제어 메커니즘은 버퍼 모델에 의해 지원될 수도 있다. 또한, 특정 구현들에서, 주어진 코덱에 대한 설계 요건은 버퍼가 결코 언더플로우 (예를 들어, 버퍼 내에 제로보다 더 적은 비트들이 있는 것) 또는 오버플로우 (예를 들어, 버퍼 내의 비트 수가 버퍼의 설정된 최대 크기를 초과하여 증가한 것) 의 상태에 있지 않은 것을 포함할 수도 있다. 예를 들어, 버퍼가 언더플로우 또는 오버플로우 상태에 있을 때, 비디오 데이터의 인코딩/디코딩이 가능하지 않을 수도 있다. 일 구현에서, 레이트 및 왜곡에 더하여, "최상" 블록을 선택할때 버퍼 충만도가 또한 고려될 수도 있다.
변환 코딩 모드
일부 실시형태에서, (비디오 인코더 (20) 와 같은) 비디오 인코더는 더 나은 압축을 달성하기 위해 하나 이상의 변환을 픽셀 값 또는 잔차 값에 적용함으로써 비디오 데이터를 변환 코딩 모드에서 인코딩할 수도 있다. 예를 들어, 인코더는 비디오 데이터 블록 (예를 들어, 픽셀 값 또는 잔차 값) 에 대해 하나 이상의 변환을 적용하고, 변환 계수 블록 (예를 들어, 비디오 데이터 블록에 대응하는 변환 계수의 블록) 을 얻을 수도 있다. 각각의 변환 계수는 연관된 주파수를 가질 수도 있다. 전술한 바와 같이, 변환 계수 블록을 생성한 후에, 인코더는 변환 계수 블록에 양자화 프로세스를 수행할 수도 있으며, 여기서 변환 계수는 변환 계수를 나타내기 위해 사용되는 데이터의 양을 잠재적으로 감소시키도록 양자화되어, 추가 압축을 제공한다.
유사하게, (비디오 디코더 (30) 와 같은) 비디오 디코더는 인코더에 의해 생성된 비트스트림을 수신할 수도 있으며, 비트스트림은 인코더에 의해 인코딩된 비디오 데이터의 코딩된 표현을 포함한다. 디코더가 비트스트림을 수신할 때, 디코더는 비트스트림을 파싱하고 비트스트림으로부터 신택스 엘리먼트들을 추출하고, 비트스트림으로부터 추출된 신택스 엘리먼트들에 기초하여 비디오 데이터의 화상들을 재구성할 수도 있다. 신택스 엘리먼트들에 기초하여 비디오 데이터를 재구성하기 위한 프로세스는 일반적으로, 신택스 엘리먼트들을 생성하기 위하여 인코더에 의해 수행되는 프로세스에 상호적일 수도 있다. 예를 들어, 비디오 데이터의 블록이 변환 모드를 사용하여 비트스트림으로 인코딩되었을 때, 디코더는 비트스트림 내의 변환 계수 블록(들)을 역양자화하고 변환 계수 블록(들)에 대해 역 변환을 수행하여 비트스트림에서 코딩된 비디오 데이터의 블록(들) 을 재구성할 수도 있다.
일부 구현들에서, 인코더는 상이한 크기의 다수의 변환들 (예를 들어, 2개의 상이한 세트의 변환들) 을 수행하고 이미지 또는 비디오 데이터의 특정 블록 또는 부분에 대해 최상의 성능 (예를 들어, 상이한 변환 세트 중에서 가장 작은 레이트-왜곡 성능) 을 산출하는 변환을 선택하도록 구성될 수도 있다. 예를 들어, PxQ = 2x8 블록에 대해, 인코더는 (i) 단일 2x8 변환 (수평 방향을 따라 8 포인트 변환 그리고 수직 방향을 따라 2 포인트 변환), (ii) 2개의 2x4 변환 (수평 방향을 따라 4 포인트 변환 그리고 수직 방향을 따라 2 포인트 변환) 을 수행할 수도 있고, 여기서 각각의 옵션은 동일한 수의 입력 (예 : 픽셀 데이터의 블록) 을 이용한다.
다양한 변환 세트를 수행한 후에, 인코더는 각각의 옵션과 연관된 왜곡 및 비트 레이트를 분석하고, 원하는 성능에 기초하여 옵션들 중 하나를 선택할 수도 있다. 인코더는 코딩된 비트스트림에 플래그 또는 신택스 엘리먼트를 시그널링함으로써 디코더에 선택된 옵션을 나타낼 수도 있다.
버퍼 모델
이미지의 각각의 블록을 인코딩하는데 쓰여진 비트들의 수는 블록의 성질에 기초하여 실질적으로 달라질 수도 있다. 따라서, 버퍼 (예를 들어, 레이트 버퍼 (150)) 는 출력 비트스트림에서의 레이트 변동을 평활화하기 위해 레이트 제어 메커니즘의 일부로 사용될 수도 있다. 고정 비트 레이트 (CBR) 버퍼 모델에서, 송신 링크는 일정한 비트 레이트로 레이트 버퍼 (150) 로부터 비트를 취한다. 이 버퍼 모델에서, 인코더 (20) 가 버퍼로부터 취출한 비트보다 더 많은 수의 비트를 빈번히 추가할 때, 버퍼는 오버플로우할 것이다. 반면, 인코더는 언더플로우를 방지하기 위해 충분한 수의 비트를 추가해야 한다. 디코더 측에서, 비트는 일정한 비트 레이트로 버퍼에 추가되고, 디코더는 각 블록을 디코딩하기 위해 가변 개수의 비트를 취출한다. 적절한 디코딩을 보장하기 위해, 버퍼는 압축된 비트스트림의 디코딩 중의 임의의 시점에서 "언더플로우" 또는 "오버플로우" 하지 않아야 한다.
레이트-왜곡 (RD) 비용
상술한 바와 같이, 주어진 블록에 대한 코딩 모드는 상기 블록을 인코딩하는데 사용될 수 있는 코딩 모드들 각각에 대한 레이트 왜곡 비용에 기초하여 선택될 수도 있다. 일 실시 형태에서, D 는 블록에 대한 특정 코딩 모드와 연관된 왜곡을 나타낼 수도 있고, R은 특정 코딩 모드로 블록을 코딩하기 위한 대응 비트 레이트일 수도 있다. 등식에 따라 레이트와 왜곡 양자 모두 고려하여 각 모드에 대한 비용 (Cost) 을 계산할 수도 있다:
Figure pct00002
여기서, λ는 왜곡과 레이트의 균형을 맞추는 라그랑지 승수 (라그랑지 파라미터라고도 함) 를 나타낸다. 특정 실시 형태에서, 블록에 대한 복수의 코딩 모드들에 대해 비용이 계산될 수도 있고, 계산된 레이트-왜곡 비용 중에서 최저 비용을 갖는 코딩 모드가 블록을 코딩하기 위해 선택될 수도 있다.
변환 코딩 모드를 위한 블록 크기의 수정
위에 설명된 바와 같이 복수의 코딩 모드를 포함하는 코덱은 시각적으로 무손실 성능으로 콘텐츠를 압축 가능할 수도 있다. 그러나, 비교적 큰 압축 비, 예를 들어, 4 : 1 이상의 압축 비의 경우, 시각적으로 무손실 성능은 고주파수 또는 고도로 텍스처링된 콘텐츠를 포함하는 비디오 데이터의 패턴에 대해 달성하기 어려울 수도 있다. 비디오 데이터의 주파수 (frequency) 또는 텍스처 (texture) 의 일 측정은 비디오 데이터의 "복잡성" 척도이다. 일부 실시 형태에서, 복잡성은 주어진 품질 수준에서 비디오 데이터의 영역을 인코딩하기 위해 필요한 비트 수의 척도이다. 따라서, 보다 복잡한 (예를 들어, 보다 높은 주파수 또는 텍스처링된 콘텐츠) 비디오 데이터는 덜 복잡한 비디오 데이터보다 더 많은 비트의 코딩을 요구할 수도 있다. 이러한 맥락에서, 4 : 1 이상의 압축 비에 대해 더 나은 성능을 초래할 수도 있는 변환 계수에서 더 많은 희소성 (sparsity) 을 허용하기 위해 변환 코딩 모드에 대한 증가된 지원을 제공하는 것이 바람직하다.
본 발명의 하나 이상의 양태들에 따르면, 이하 더 큰 블록 크기 변환 (LBT) 코딩 모드 (또는 간단히 LBT 모드) 로 지칭될 추가적인 코딩 모드가 도입될 수도 있다. LBT 모드는 이미지에서 고주파수 및 고도로 텍스처링된 콘텐츠를 압축하기 위해 고정 레이트 코더에 의해 이용될 수도 있다. 위에서 설명한 코덱에서 예를 들어 P × Q의 크기를 갖는 변환 모드와 비교하여, LBT 모드는 예를 들어 블록 크기 P × M의 더 큰 영역에서 동작하는 것을 수반할 수도 있고, 여기서 M > Q 이다.
일반적으로, 비디오 데이터에 변환을 적용하는 것은 입력 값의 수 (예를 들어, 픽셀 값 또는 잔차 값) 에 비례하는 다수의 변환 계수를 생성할 것이다. 따라서, LBT 모드를 적용하는 것은 단일 블록의 더 작은 전통적인 변환보다 더 많은 수의 출력 변환 계수를 초래할 수도 있다. 이들 추가적인 변환 계수는 단일 블록 변환보다 더 높은 연관된 주파수를 갖는 변환 계수를 포함할 수도 있다. 더 높은 복잡성 (예를 들어, 더 높은 공간 주파수) 를 갖는 블록들을 인코딩할 때, 이러한 추가적인 고주파수 변환 계수들은 복잡 비디오 데이터를 보다 효율적으로 나타내는 것이 가능할 수도 있고, 따라서 다른 코딩 모드에 비해 LBT 모드와 연관된 전체 레이트 왜곡 비용을 낮출 수도 있다.
이제 LBT 모드의 실시 형태가 도 4a 및 도 4b와 관련하여 설명될 것이다. 도 4b는 본 개시에 기재된 양태들에 따른 기법들을 구현할 수도 있는 LBT 모드의 일 예를 예시하는 블록도이다. 도 4a는 복수의 블록들 (405 내지 425) 을 예시하며, 각각은 P × Q의 크기를 갖는다. LBT 모드에서, 변환은 크기 P × M의 더 큰 블록에서의 샘플들에 적용될 수도 있고, 다음으로 계수들은 양자화되고 엔트로피 코딩될 수도 있다. 적용될 수도 있는 변환의 예들은 웨이블릿, DCT, Hadamard 등을 포함한다. 일 예에서, 더 큰 블록 크기는 복수의 블록들 (405 내지 425) 로 형성될 수도 있다.
LBT 모드에 대한 다른 예시적인 접근법에서, O × M (여기서 O > P) 과 같은 또는 O × Q 와 같은 더 큰 블록 크기가 이용될 수도 있다. 일 구현에서, M 및 O 는 각각 Q 및 P의 정수배일 수도 있다.
LBT 모드는 기존의 변환 모드 (블록 크기 P × Q 에 대해 동작함) 및/또는 다른 코딩 모드에 추가하여 코딩 모드 옵션으로서 이용될 수도 있다. LBT 모드 및 (크기 P × Q 의) 기존의 변환 모드에서 사용되는 변환은 맥락 또는 구현 (예를 들어, 각각, 웨이블릿 및 DCT) 에 따라 달라질 수도 있다. 일 예에서, (크기 P × Q의) 기존의 변환 모드는 LBT 모드로 대체될 수도 있다.
또 다른 예시적인 접근법에서, LBT 모드에 대한 블록 크기는 고정될 수도 있다. LBT의 블록 크기가 고정될 때, 대응하는 RD 비용이 큰 블록에 포함된 크기 P × Q의 모든 블록의 최적 코딩 모드에 대응하는 RD 비용의 누적 합계보다 엄밀하게 작으면 (또는 작거나 같으면) LBT 모드가 선택되거나 또는 이용될 수도 있다.
또 다른 예시적인 접근법에서, LBT 모드에 대한 블록 크기는 이미지들 내의 콘텐트에 기초하여 코더에 의해 적응적으로 선택될 수도 있다. 환언하면, 다수의 연속 블록들 (크기 P × Q 의 각 블록) 에 LBT 모드를 적용하는 결정은 "온 더 플라이" (on the fly) 로 (예를 들어, 이미지들 내의 콘텐츠의 처리 동안) 인코더에 의해 결정될 수도 있다. 도 4a를 참조하면, 변환 코딩 모드가 현재 블록 (405) 에 대한 최적 코딩 옵션인 것으로 밝혀질 (예를 들어, 결정되는) 때 또는 블록 (405) 이 변환 코딩 모드를 사용하여 효과적으로 압축될 수 있는 것으로 밝혀질 때 (결정은 위에서 설명된 바와 같이 모든 모드의 RD 비용을 비교하는 것에 기초하여 이루어질 수도 있다), 또는 이 결정 (예를 들어, 변환 모드가 최적 코딩 옵션이라는 결정) 이 기타 기준에 기초하여 도달될 때, 블록 (405) 을 별도로 코딩하는 대신 다음 블록 (410) 에 샘플들을 포함시킴으로써 더 큰 영역에 대해 변환이 평가될 수도 있다.
즉, 블록 (405) 및 블록 (410) 에서의 샘플들에 대해 함께 LBT 모드에서 더 큰 변환이 적용될 수도 있다. 조합하여 함께 처리된 블록 (405 및 410) 에서의 샘플들이 LBT 모드에 의해 효과적으로 압축될 수 있는 것으로 밝혀질 때, 변환은 다음 블록 (415) 에서 샘플들을 추가로 고려함으로써 재계산될 수도 있다, 예를 들어, LBT 코딩 모드는 블록 (405, 410 및 415) 에서의 샘플들에 함께 적용될 수도 있다. 코딩 모드를 선택하기 위한 이 프로세스는 변환 모드가 블록에 대해 최적인지 여부를 평가하고, 그렇다면, 더 큰 블록(들) 에 대해 변환을 재계산하는 것을 수반한다. 이 프로세스는, 예를 들어, 반복적 방식으로 수행될 수도 있는데, 예를 들어, 변환 모드가 제 1 블록 (405) 에 대해 최적인지 여부를 평가하고, 더 큰 블록 (예를 들어, 제 1 블록 (405) 과 함께 제 2 블록 (410)) 에서의 샘플들에 대한 변환을 재계산하고, 제 1 및 제 2 블록들 (405 및 410) 에서의 샘플들이 LBT 모드에 의해 효과적으로 압축될 수도 있는 것으로 밝혀지면, 훨씬 더 큰 블록 (예를 들어, 제 1 및 제 2 블록들 (405 및 410) 과 조합한 제 3 블록 (415)) 에서의 샘플들에 대한 변환을 재계산하는 등등이다. 변환 모드가 최적인지 여부를 평가하고 더 큰 블록에 대한 변환을 재계산하기 위한 이 프로세스는 최대 허용가능 변환 크기에 도달할 때까지 계속될 수도 있거나, 또는 그 프로세스는 더 큰 영역 또는 추가 블록으로 계속 진행하는 것이 유리하지 않은 것으로 밝혀질 때 종료될 수도 있다. 그 후, 식별된 더 큰 블록/영역은 LBT 모드를 사용하여 코딩될 수도 있다. 또 다른 접근법에서, 현재 블록 (405) (크기 P × Q) 은 LBT 모드를 통해 코딩될 수도 있는 식별된 큰 블록으로부터 제외될 수도 있다. LBT 모드를 통해 현재 블록 (405) 을 코딩하는 대신에, 현재 블록 (405) 은 위에서 논의된 다른 모드들 중 하나를 통해 코딩될 수도 있다. 또한, 상술된 바와 같이, 주어진 코딩 모드는 코딩 모드가 최저 RD 비용을 가질 때 "최적" 인 것으로 결정될 수도 있다.
변환을 다음, 추가 블록으로 확장하거나, 또는 현재 더 큰 블록에 대해 LBT 모드를 선택하는 기준은 RD 비용에 기초하여 결정될 수도 있다. 모든 모드와 연관된 RD 비용은 변환을 다음 블록으로 확장할지 여부를 결정하기 위해 LBT 모드와 연관된 RD 비용과 비교될 수 있다. 예를 들어, 다음 블록을 추가로 포함하는 훨씬 더 큰 블록에 LBT 모드를 적용하는 것과 연관된 결과적인 RD 비용이 현재 더 큰 블록에 포함된 크기 P × Q의 모든 블록의 최적 코딩 모드에 대응하는 RD 비용의 누적 합계보다 작은 경우 (또는 작거나 같은 경우) 변환 모드는 다음 블록으로 확장될 수도 있다 (다음 블록을 추가로 포함하도록 확장될 수도 있다). 다른 예에서, LBT 모드 RD 비용이 큰 블록에 포함된 크기 P × Q 의 모든 블록의 최적 코딩 모드에 대응하는 RD 비용의 누적 합계의 임계 값 또는 범위내에 있는 (또는 대략적으로 동일한) 경우, 변환은 다음 블록으로 확장될 수도 있다.
LBT 모드에서 더 큰 크기의 블록들을 인코딩하는데 사용될 수도 있는 결정 프로세스의 일례가 도 5와 관련하여 설명될 것이다. 도 5는 본 개시에서 설명되는 양태들에 따라 LBT 모드를 포함할 수도 있는 코딩 모드의 예시적인 방법을 예시하는 흐름도이다. 방법 (500) 은 비디오 인코더 (예를 들어, 비디오 인코더 (20)), 비디오 디코더 (예를 들어, 비디오 디코더 (30)), 또는 이들의 컴포넌트(들) 에 의해 수행될 수도 있다. 편의상, 방법 (500) 은, 비디오 인코더 (20) 및/또는 비디오 디코더 (30), 또는 이들의 컴포넌트일 수도 있는 비디오 코더 (간단히 코더라고도 한다) 에 의해 수행되는 것으로 설명된다.
방법 (500) 은 블록 (501) 에서 시작된다. 블록 (505) 에서, 코더는 현재 블록에 대한 복수의 코딩 모드를 위한 RD 비용을 결정한다. 복수의 코딩 모드는 변환 코딩 모드 및 적어도 하나의 다른 코딩 모드를 포함한다. 블록 (510) 에서, 코더는 변환 모드를 위한 RD 비용이 다른 (예를 들어, 나머지) 코딩 모드들을 위한 RD 비용(들) 보다 작은지 여부를 결정한다. 이 결정은 보다 작거나 같거나 확실히 작은 비교에 기초하여 이루어질 수도 있다. 다른 구현들에서, 코더는 RD 비용이 나머지 코딩 모드보다 낮지 않다고 결정할 수도 있지만, 변환 모드를 위한 RD 비용이 최저 RD 비용 코딩 모드와의 임계 차이 이내일 때 여전히 블록 (520) 으로 진행할 수도 있다.
변환 모드가 RD 비용이 계산된 모드들 중에서 최저 RD 비용을 갖지 않을 때, 방법 (500) 은 블록 (515) 에서 계속된다. 블록 (515) 에서, 코더는 블록 (505) 에서 결정된 바와 같이 최저 RD 비용을 갖는 코딩 모드를 사용하여 현재 블록을 코딩한다.
변환 모드가 최저 RD 비용을 가질 때, 방법은 블록 (520) 에서 계속된다. 블록 (520) 에서, 코더는 현재 블록 및 다음 블록을 포함하는 LBT 모드를 위한 RD 비용을 결정한다. 블록 (525) 으로부터 블록 (520) 으로 돌아갈 때, 코더는 이전에 결정된 블록들 및 다음 블록을 포함하는 LBT 모드를 위한 RD 비용을 결정한다 (예를 들어, 코더는 LBT가 이전에 결정되었던 블록의 수에 새로운 다음 블록을 추가한다). 코더는 또한 다음 블록을 위한 복수의 모드들을 위한 RD 비용을 결정한다. 누적 RD 비용은 대응하는 코딩 모드들에 대해 현재 고려중인 블록들의 각각을 위한 최저 RD 비용을 합산하여 결정된다.
블록 (525) 에서, 코더는 LBT 모드를 위한 RD 비용이 다른 코딩 모드들의 조합에 대한 누적 RD 비용보다 작은지 여부를 결정한다. LBT 모드를 위한 RD 비용이 다른 코딩 모드들의 각각에 대한 누적 RD 비용보다 작으면 (또는 다른 실시 형태에서, 비교가 그보다 작거나 같거나, 확실히 작거나 또는 그의 임계치 차이 이내에 있을 수도 있다), 방법 (500) 은 새로운 다음 블록을 포함하는 LBT 모드가 다른 코딩 모드에 대한 업데이트된 누적 RD 비용보다 작은 RD 비용을 갖을 것인지 여부를 결정하기 위해 블록 (520) 으로 돌아간다. LBT 모드를 위한 비용이 다른 코딩 모드들의 각각에 대한 누적 RD 비용보다 적지 않을 때, 방법 (500) 은 블록 (530) 에서 계속된다.
블록 (530) 에서, 코더는 변환 모드 또는 LBT 모드에서 가장 최근에 추가된 다음 블록을 제외한 블록(들)을 코딩한다. 예를 들어, 현재 블록만이 다른 코딩 모드보다 적은 RD 비용을 가질 때 (예를 들어, 현재 블록 및 다음 블록 (총 2개 블록) 이 다른 코딩 모드들 중 적어도 하나보다 더 큰 RD 비용을 가질 때), 현재 블록은 변환 모드에서 코딩된다. (가장 최근에 추가된 다음 블록을 제외한) 복수의 블록이 다른 코딩 모드들에 대한 누적 RD 비용보다 작은 LBT 모드에서의 RD 비용을 갖는 경우, 이들 블록은 LBT 모드에서 코딩된다. 방법 (500) 은 블록 (535) 에서 종료된다.
방법 (500) 에서, 도 5에 도시된 블록들 중의 하나 이상이 제거될 (예를 들어, 수행되지 않을) 수도 있거나 및/또는 방법이 수행되는 순서는 스위칭될 수도 있다. 일부 실시형태들에서, 추가 블록들이 방법 (500) 에 추가될 수도 있다. 본 개시의 실시형태들은 도 5에 도시된 예에 의해 또는 이것으로 한정되지 않고, 다른 변형들이 본 개시에 따라 구현될 수도 있다.
도 4b로 돌아가면, LBT 코딩의 또 다른 예시적인 접근법이 예시되어 있다. 도 4b는 본 개시에 기재된 양태들에 따른 기법들을 구현할 수도 있는 LBT 모드의 일 예를 예시하는 블록도이다. 도 4a는 복수의 블록들 (435 내지 455) 을 예시하며, 각각은 P × Q의 크기를 갖는다. 도 4b의 접근법에서, LBT 모드는 다음의 프로세스를 사용하여 최적의 코딩 모드로서 선택될 수도 있다. P × Mmin 및 P × Mmax 는 각각 최소 및 최대 허용 LBT 변환 크기를 나타낸다. LBT 모드가 없는 DSC 방식은 총 블록 크기가 (예를 들어, 블록 435 내지 450을 포함하여) P × Mmin에 도달할 때까지 크기 P × Q의 각 블록에 대한 최적의 코딩 모드를 결정하기 위해 먼저 사용된다. 도 4b를 참조하면, DSC 방식에 대한 P × Q 기본 블록 (435 내지 455) 이 도시되어 있고, P × Mmin은 LBT 모드에 대한 최소 변환 크기이다. P × Mmin 블록들을 코딩하는데 사용된 총 비트들의 수는 RDSC로서 계산되고 대응하는 왜곡은 DDSC로서 계산된다고 가정한다. DSC 방식에서의 모드들을 사용하여 코딩 성능을 평가한 후에, LBT 모드가 요구하는 비트들의 수가 RDSC 보다 작거나 같다는 제약을 조건으로, 이전의 P × Mmin 블록들 (435 내지 450) 에 대해 LBT 모드의 코딩 성능이 평가된다. LBM 모드를 사용하여 표현된 P × Mmin 블록 (435 내지 450) 의 왜곡이 계산되고 DLBT로 지칭될 수도 있다. 양자 모두의 모드들에 대한 비트 수가 같거나 또는 대략 같으므로, 예를 들어, DSC (예 : LBT 모드 외의 코딩 모드) 가 더 좋거나 또는 LBT 모드가 더 큰 블록 크기로 확장될 수 있는 경우, 2개 모드들의 왜곡을 비교하여 결정을 내릴 수도 있다.
DDSC가 DLBT보다 훨씬 작으면 (예 : 임계 값을 초과한 만큼 DLBT보다 작음), LBT 모드는 크기 P × Mmin 의 이 영역 (예 : 블록 (435 내지 450)) 에 매우 도움이 되지 않을 수도 있고, 따라서 기존 DSC 코딩 모드가 이 영역을 코딩하기 위해 사용될 수도 있다. 이후, 위의 단계들이 반복될 수도 있는데, 여기서 P × Mmin 블록들 (435 내지 450) 이후의 다음 블록 (455) 의 코딩 성능은 기존 DSC 방식에서의 모드들을 사용하여 그리고 LBT 모드를 사용하여 평가되고 왜곡을 비교하여 결정을 내린다. 이것은 전술한 도 5의 블록들 (520 및 525) 에 대한 간단한 변경을 통해 수행될 수도 있다.
DDSC가 DLBT와 대략 동일하거나 DLBT가 DDSC보다 확실히 작은 경우, LBT 모드를 더 확장시키는 것이, 예를 들어 다음 블록 (455) 을 포함하도록 LBT 모드를 확장하는 것이 유리하다고 결정될 수도 있다. 이 결정을 내리기 위해, 크기 P × Q의 다음 블록의 최적 코딩 모드가 먼저 기존 DSC에서의 코딩 모드들의 세트로부터 결정된다. 크기 블록 P × (Mmin + Q) 의 전체 블록의 총 레이트 및 대응하는 왜곡이 업데이트되며, 이들은 각각 RDSC와 DDSC로 표기된다. 그런 다음, LBT 모드의 코딩 성능은 LBT가 요구하는 비트 수가 RDSC보다 작거나 같아야 한다는 제약을 조건으로 P × (Mmin + Q)의 전체 영역에 대해 결정된다. P × (Mmin + Q) 의 더 큰 블록 크기에 대한 LBT 모드 왜곡 DLBT가 DDSC와 대략 같거나 또는 DLBT가 DDSC보다 확실히 작은 (strictly less than) 경우, 크기 P × Q의 다음 블록이 크기 P × (Mmin + Q) 의 현재 더 큰 블록과 함께 포함되며 P × (Mmin + 2Q) 의 블록 크기의 왜곡이, LBT 모드의 코딩 레이트가 RDSC보다 작거나 같다는 가정하에, 비교된다. 추가 블록을 포함하고 LBT와 DSC의 성능을 비교하는 프로세스는 중지 기준 (stopping criterion) 이 충족될 때까지 계속된다. 중지 기준은 더 큰 블록의 총 블록 크기가 최대 허용가능 LBT 블록 크기인 P × Mmax 에 도달할 때 또는 동일한 라인에서의 슬라이스에서 마지막 블록이 히트될 때 또는 LBT 모드를 계속하는 것이 매우 유용하지 않은 것으로 밝혀질 때일 수도 있다. 후자의 경우는 예를 들어, LBT 모드의 왜곡이 DDSC와 대략 동일할 때 또는 LBT 모드 왜곡이 DDSC 를 향해 수렴할 때 결정될 수도 있다.
중지 기준이 충족되는 경우 또는 LBT 모드가 다른 DSC 코딩 모드들보다 더 낮은 레이트-왜곡 비용을 갖는 것으로 결정될 때, (LBT가 유용하다고 밝혀진) 이전 블록의 재구성된 픽셀 값이 LBT 모드 재구성된 값으로 대체된다. 일 구현에서, 비트스트림 파일을 LBT 모드를 사용하여 생성된 비트로 대체할 필요가 있을 수도 있다. 예를 들어 QP를 업데이트하거나 또는 재계산해야할 필요가 있을 수도 있다. 필요한 변경을 수행한 후, 위의 단계가 반복될 수도 있으며, 여기서 P × Mmin의 다음 더 큰 블록의 코딩 성능은 먼저 기존의 DSC 방식에서의 모드를 사용하여 평가된 후 LBT 모드를 사용하여 평가되고, 그리고 나중에 왜곡을 비교하여 LBT 모드로 계속할지 여부를 결정한다.
일 구현 예에서, LBT 모드 코딩 성능은 P × Mmin의 블록 내의 P × Q 블록들 중 어느 하나에 대해 다음 조건들 중 하나 이상이 충족될 때 크기 P × Mmin의 블록에 대해 평가되지 않는다: (i) 패턴 모드가 최적 코딩 모드인 것으로 결정되는 것; (ii) 평탄한 블록이 검출되는 것; (iii) 복잡한 영역으로부터 평탄한 영역으로의 천이가 검출되는 것; 및 (iv) 평탄한 영역으로부터 복잡한 영역으로의 천이가 검출되는 것 (그러면 그러한 블록은 LBT 모드를 사용하여 평가되지 않는다).
LBT 모드에서의 코딩을 위한 예시적인 플로우차트
도 6을 참조하여, LBT 모드에서 비디오 데이터를 코딩하기 위한 예시적인 절차가 설명될 것이다. 도 6은 본 개시의 실시형태에 따른 비디오 데이터를 코딩하는 방법 (600) 을 예시하는 플로우차트이다. 도 6에 나타낸 단계들은 비디오 인코더 (예컨대,도 2a 또는 도 3 에서의 비디오 인코더 (20)) 또는 그의 컴포넌트(들)에 의해 수행될 수도 있다. 편의상, 방법 (600) 은, 비디오 인코더 (20) 또는 또 다른 컴포넌트일 수도 있는 비디오 코더 (간단히 코더라고도 한다) 에 의해 수행되는 것으로 설명된다.
방법 (600) 은 블록 (601) 에서 시작된다. 블록 (605) 에서, 코더는 복수의 코딩 모드들 중 하나 이상으로 코딩될 비디오 데이터의 현재 블록 및 다음 블록을 선택한다. 블록 (610) 에서, 코더는 LBT 모드로 현재 블록 및 다음 블록을 코딩하기 위한 제 1 RD 비용을 계산한다. 블록 (615) 에서, 코더는 LBT 모드와 상이한 또 다른 코딩 모드로 현재 블록 및 다음 블록의 각각을 코딩하기 위한 제 2 RD 비용을 계산한다. 블록 (620) 에서, 코더는 제 1 RD 비용이 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정한다. 블록 (625) 에서, 코더는 제 1 RD 비용이 현재 블록 및 다음 블록을 위한 제 2 RD 비용들의 합보다 작은 것에 응답하여 현재 블록 및 다음 블록을 LBT 모드로 코딩한다.
나타내지는 않았지만, 하나의 대안적인 구현에서, 코더는 제 1 RD 비용이 현재 블록 및 다음 블록을 위한 제 2 RD 비용들의 합보다 적은 것에 응답하여 블록 (620) 으로부터 블록 (610) 으로 복귀할 수도 있다. 이 구현에서, 다음으로 코더는 LBT 모드를 갖는 추가 블록과 함께 현재 블록 및 다음 블록을 코딩하기 위한 업데이트된 제 1 RD 비용을 계산할 수도 있다. 블록 (610 내지 620) 은 업데이트된 제 1 RD 비용이 현재 블록, 다음 블록 및 추가 블록을 위한 제 2 RD 비용들의 합보다 작지 않을 때까지 이러한 방식으로 반복될 수도 있다. 방법 (600) 은 블록 (630) 에서 종료된다.
방법 (600) 에서, 도 6에 도시된 블록들 중의 하나 이상이 제거될 (예를 들어, 수행되지 않을) 수도 있거나 및/또는 방법이 수행되는 순서는 스위칭될 수도 있다. 일부 실시형태들에서, 추가 블록들이 방법 (600) 에 추가될 수도 있다. 본 개시의 실시형태들은 도 6에 도시된 예에 의해 또는 이것으로 한정되지 않고, 다른 변형들이 본 개시의 사상으로부터 벗어남이 없이 구현될 수도 있다.
기타 고려사항들
여기에 개시된 정보 및 신호들은 임의의 다양한 상이한 기술 및 기법을 이용하여 표현될 수도 있다. 예를 들어, 위의 설명 전체에 걸쳐 언급될 수도 있는 데이터, 명령, 커맨드, 정보, 신호, 비트, 심볼, 및 칩은 전압, 전류, 전자기파, 자기장 또는 자기입자, 광학장 (optical field) 또는 광학 입자, 또는 이들의 임의의 조합에 의해 표현될 수도 있다.
여기에 개시된 실시형태들과 관련하여 설명된 다양한 예시적인 논리 블록, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 양자의 조합으로 구현될 수도 있다. 하드웨어와 소프트웨어의 이러한 상호교환가능성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트, 블록, 및 단계가 일반적으로 그들의 기능성의 측면에서 위에서 설명되었다. 그러한 기능이 하드웨어 또는 소프트웨어로 구현될지 여부는, 전체 시스템에 부과된 특정 애플리케이션 및 설계 제약에 달려 있다. 당업자는 설명된 기능성을 각각의 특정 응용에 대해 다른 방식으로 구현할 수도 있지만, 이러한 구현 결정이 본 개시의 범위를 벗어나게 하는 것으로 해석되지 않아야 한다.
여기에 기술된 기법들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수도 있다. 그러한 기법들은 범용 컴퓨터, 무선 통신 디바이스 핸드세트, 또는 무선 통신 디바이스 핸드세트 및 다른 디바이스들에서의 응용을 포함하는 다수의 사용들을 갖는 집적 회로 디바이스들과 같은 다양한 디바이스들 중의 임의의 것에서 구현될 수도 있다. 디바이스들, 또는 컴포넌트들로서 설명된 임의의 특징들은 집적 로직 디바이스 (integrated logic device) 에서 함께 구현되거나 또는 이산이지만 연동적인 (interoperable) 로직 디바이스들로서 따로 구현될 수도 있다. 소프트웨어로 구현되면, 기법들은, 실행될 때, 위에서 설명된 방법들 중 하나 이상을 수행하는 명령들을 포함하는 프로그램 코드를 포함하는 컴퓨터 판독가능 데이터 저장 매체에 의해 적어도 부분적으로 실현될 수도 있다. 컴퓨터 판독가능 데이터 저장 매체는 패키징 재료들을 포함할 수도 있는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있다. 컴퓨터 판독가능 매체는 메모리 또는 데이터 저장 매체, 이를테면 RAM (random access memory) 이를테면, SDRAM (synchronous dynamic random access memory), ROM (read-only memory), NVRAM (non-volatile random access memory), EEPROM (electrically erasable programmable read-only memory), FLASH 메모리, 자기 또는 광학 데이터 저장 매체 등을 포함할 수도 있다. 추가로 또는 대안적으로 기법들은, 전파된 신호들 또는 파들과 같은, 명령들 또는 데이터 구조들의 형태의 프로그램 코드를 나르거나 또는 통신하고, 컴퓨터에 의해 액세스, 판독 및/또는 실행될 수 있는 컴퓨터 판독가능 통신 매체에 의해 적어도 부분적으로 실현될 수도 있다.
컴퓨터 판독 가능 매체 (예를 들어, 메모리 또는 다른 데이터 저장 디바이스) 와 통신하는 (예를 들어, 협력하여 동작하는) 프로세서(들) 은 프로그램 코드의 명령을 실행할 수도 있으며, 하나 이상의 프로세서들, 이를테면 하나 이상의 디지털 신호 프로세서 (DSP), 범용 마이크로프로세서, 주문형 집적 회로 (ASIC), ??드 프로그램가능 로직 어레이 (FPGA) 또는 기타 동등한 집적 또는 이산 논리 회로를 포함할 수도 있다. 그러한 프로세서는 본 개시에 기재된 기법들 중의 어느 것을 수행하도록 구성될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 다르게는, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 또한, 프로세서는 계산 디바이스들의 조합, 예를 들어, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서, DSP 코어와 결합한 하나 이상의 마이크로프로세서, 또는 임의의 다른 이러한 구성으로서 구현될 수도 있다. 따라서, 본원에 사용된 용어 "프로세서" 는 임의의 전술한 구조, 전술한 구조의 임의의 조합, 또는 본원에 설명된 기술들의 구현에 적합한 임의의 다른 구조 또는 장치를 지칭할 수도 있다. 추가로, 일부 양태들에서, 여기서 설명된 기능은 인코딩 및 디코딩을 위해 구성된 전용 소프트웨어 또는 하드웨어 내에 제공되거나 또는 결합된 비디오 인코더-디코더 (코덱) 에 포함될 수도 있다. 또한, 그 기법들은 하나 이상의 회로 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
본 개시의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC 들의 세트 (예를 들면, 칩 세트) 를 포함하여, 광범위하게 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들,또는 유닛들이, 개시된 기술들을 수행하도록 구성된 디바이스들의 기능적인 양태들을 강조하기 위하여 본 개시에 설명되었지만, 다른 하드웨어 유닛들에 의한 실현을 반드시 필요로 하는 것은 아니다. 오히려, 상술된 바처럼, 다양한 유닛들이 코덱 하드웨어 유닛에 결합될 수도 있거나, 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상술된 하나 이상의 프로세서들을 포함하는 연동적인 (inter-operative) 하드웨어 유닛들의 집합에 의해 제공될 수도 있다.
이상에서 다양한 상이한 실시형태들과 관련하여 설명되었지만, 하나의 실시형태로부터 특징들 또는 엘리먼트들은 본 개시의 교시로부터 벗어나지 않으면서 다른 실시형태들과 조합될 수도 있다. 하지만, 각각의 실시형태들 사이의 특징들의 조합들이 그에 반드시 한정되는 것은 아니다. 본 개시의 다양한 실시형태들이 설명되었다. 이들 및 다른 실시형태들은 다음의 청구항들의 범위 내에 있다.

Claims (30)

  1. 비디오 데이터를 코딩하기 위한 복수의 코딩 모드들로부터 코딩 모드를 선택하기 위한 비디오 코딩 회로에 의해 동작 가능한 방법으로서,
    상기 비디오 데이터의 현재 블록 및 다음 블록을 선택하는 단계;
    더 큰 블록 크기 변환 (LBT) 모드로 상기 현재 블록 및 다음 블록을 코딩하기 위한 제 1 레이트-왜곡 (RD) 비용을 계산하는 단계;
    상기 LBT 모드와 상이한 또 다른 코딩 모드로 상기 현재 블록 및 다음 블록의 각각을 코딩하기 위한 제 2 RD 비용을 계산하는 단계;
    상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정하는 단계; 및
    상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 현재 블록 및 다음 블록을 상기 LBT 모드로 코딩하는 단계
    를 포함하는, 코딩 모드를 선택하기 위한 비디오 코딩 회로에 의해 동작 가능한 방법.
  2. 제 1 항에 있어서,
    상기 제 1 RD 비용이 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 비디오 데이터의 추가 블록을 선택하는 단계;
    상기 LBT 모드로 상기 현재 블록, 다음 블록, 및 추가 블록을 코딩하기 위한 업데이트된 제 1 RD 비용을 계산하는 단계;
    상기 다른 코딩 모드로 상기 추가 블록을 코딩하기 위한 제 2 RD 비용을 계산하는 단계;
    업데이트된 상기 제 1 RD 비용이 상기 현재 블록, 다음 블록 및 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정하는 단계; 및
    업데이트된 상기 제 1 RD 비용이 상기 현재 블록, 다음 블록 및 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 현재 블록, 다음 블록 및 추가 블록을 상기 LBT 모드로 코딩하는 단계
    를 더 포함하는, 코딩 모드를 선택하기 위한 비디오 코딩 회로에 의해 동작 가능한 방법.
  3. 제 2 항에 있어서,
    i) 상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것 및 ii) 업데이트된 상기 제 1 RD 비용이 상기 현재 블록, 다음 블록 및 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작지 않은 것에 응답하여 상기 LBT 모드로 상기 현재 블록 및 다음 블록을 코딩하는 단계를 더 포함하는, 코딩 모드를 선택하기 위한 비디오 코딩 회로에 의해 동작 가능한 방법.
  4. 제 1 항에 있어서,
    상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작지 않은 것에 응답하여 상기 현재 블록을 상기 다른 코딩 모드로 코딩하는 단계를 더 포함하는, 코딩 모드를 선택하기 위한 비디오 코딩 회로에 의해 동작 가능한 방법.
  5. 제 1 항에 있어서,
    상기 LBT 모드와 상이한 또 다른 코딩 모드로 상기 현재 블록 및 다음 블록의 각각을 코딩하기 위한 제 2 RD 비용을 계산하는 단계는
    상기 LBT 모드 외의 상기 복수의 코딩 모드들의 각각으로 상기 현재 블록을 코딩하기 위한 복수의 제 3 RD 비용들을 계산하는 단계;
    계산된 상기 제 3 RD 비용들로부터 최저 제 3 RF 비용을 결정하는 단계;
    상기 LBT 모드 외의 상기 복수의 코딩 모드들의 각각으로 상기 다음 블록을 코딩하기 위한 복수의 제 4 RD 비용들을 계산하는 단계; 및
    계산된 상기 제 4 RD 비용들로부터 최저 제 4 RD 비용을 결정하는 단계를 포함하고,
    상기 제 2 RD 비용은 상기 최저 제 3 RD 비용과 상기 최저 제 4 RD 비용의 합인, 코딩 모드를 선택하기 위한 비디오 코딩 회로에 의해 동작 가능한 방법.
  6. 제 1 항에 있어서,
    다음 조건들: (i) 패턴 모드가 최적 코딩 모드인 것으로 결정되는 것, (ii) 평탄한 블록이 검출되는 것, (iii) 복잡한 영역으로부터 평탄한 영역으로의 천이가 검출되는 것, 및 (iv) 평탄한 영역으로부터 복잡한 영역으로의 천이가 검출되는 것 중 하나 이상이 상기 현재 블록 또는 다음 블록 중 어느 하나에 대해 만족되는 것에 응답하여 상기 제 1 RD 비용을 계산하는 것을 억제하는 단계를 더 포함하는, 코딩 모드를 선택하기 위한 비디오 코딩 회로에 의해 동작 가능한 방법.
  7. 제 1 항에 있어서,
    상기 LBT 모드로 상기 현재 블록으로부터 시작하여 Mmin 블록들을 코딩하기 위한 제 3 RD 비용을 계산하는 단계;
    상기 LBT 모드와 상이한 또 다른 코딩 모드로 상기 Mmin 블록들의 각각을 코딩하기 위한 제 4 RD 비용을 계산하는 단계;
    상기 제 3 RD 비용이 상기 Mmin 블록들을 위한 상기 제 4 RD 비용들의 합보다 작은지 여부를 결정하는 단계; 및
    상기 제 3 RD 비용이 상기 Mmin 블록들을 위한 상기 제 4 RD 비용들의 합보다 작은 것에 응답하여 상기 Mmin 블록들을 상기 LBT 모드로 코딩하는 단계
    를 더 포함하는, 코딩 모드를 선택하기 위한 비디오 코딩 회로에 의해 동작 가능한 방법.
  8. 제 7 항에 있어서,
    상기 제 3 RD 비용이 상기 제 4 RD 비용들의 합보다 작은 것에 응답하여 상기 비디오 데이터의 추가 블록을 선택하는 단계;
    상기 LBT 모드로 상기 Mmin 블록들 및 상기 추가 블록을 코딩하기 위한 업데이트된 제 1 RD 비용을 계산하는 단계;
    상기 다른 코딩 모드로 상기 추가 블록을 코딩하기 위한 제 2 RD 비용을 계산하는 단계;
    업데이트된 상기 제 1 RD 비용이 상기 Mmin 블록들 및 상기 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정하는 단계; 및
    업데이트된 상기 제 1 RD 비용이 상기 Mmin 블록들 및 상기 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 Mmin 블록들 및 상기 추가 블록을 상기 LBT 모드로 코딩하는 단계
    를 더 포함하는, 코딩 모드를 선택하기 위한 비디오 코딩 회로에 의해 동작 가능한 방법.
  9. 제 8 항에 있어서,
    상기 Mmin 블록들 및 상기 추가 블록에 또 다른 추가 블록을 추가하는 것이 Mmax보다 큰 LBT 블록 크기에 도달하는지 여부를 결정하는 단계; 및
    상기 Mmin 블록들 및 상기 추가 블록에 또 다른 추가 블록을 추가하는 것이 Mmax보다 큰 LBT 블록 크기에 도달한다고 결정하는 것에 응답하여, 상기 또 다른 추가 블록을 상기 Mmin 블록들 및 상기 추가 블록에 추가하는 것을 억제하는 단계를 더 포함하는, 코딩 모드를 선택하기 위한 비디오 코딩 회로에 의해 동작 가능한 방법.
  10. 비디오 데이터를 코딩하기 위해 복수의 코딩 모드들로부터 코딩 모드를 선택하기 위한 디바이스로서,
    이전 블록 및 현재 블록을 포함하는 비디오 데이터를 저장하도록 구성된 메모리; 및
    상기 메모리에 연결된 적어도 하나의 프로세서 회로를 포함하고,
    상기 적어도 하나의 프로세서 회로는
    상기 비디오 데이터의 현재 블록 및 다음 블록을 선택하고;
    더 큰 블록 크기 변환 (LBT) 모드로 상기 현재 블록 및 다음 블록을 코딩하기 위한 제 1 레이트-왜곡 (RD) 비용을 계산하고;
    상기 LBT 모드와 상이한 또 다른 코딩 모드로 상기 현재 블록 및 다음 블록의 각각을 코딩하기 위한 제 2 RD 비용을 계산하고;
    상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정하고; 그리고
    상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 현재 블록 및 다음 블록을 상기 LBT 모드로 코딩하도록 구성된, 코딩 모드를 선택하기 위한 디바이스.
  11. 제 10 항에 있어서,
    상기 프로세서 회로는 또한
    상기 제 1 RD 비용이 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 비디오 데이터의 추가 블록을 선택하고;
    상기 LBT 모드로 상기 현재 블록, 다음 블록, 및 추가 블록을 코딩하기 위한 업데이트된 제 1 RD 비용을 계산하고;
    상기 다른 코딩 모드로 상기 추가 블록을 코딩하기 위한 제 2 RD 비용을 계산하고;
    업데이트된 상기 제 1 RD 비용이 상기 현재 블록, 다음 블록 및 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정하고; 그리고
    업데이트된 상기 제 1 RD 비용이 상기 현재 블록, 다음 블록 및 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 현재 블록, 다음 블록 및 추가 블록을 상기 LBT 모드로 코딩하도록 구성된, 코딩 모드를 선택하기 위한 디바이스.
  12. 제 11 항에 있어서,
    상기 프로세서 회로는 또한, i) 상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것 및 ii) 업데이트된 상기 제 1 RD 비용이 상기 현재 블록, 다음 블록 및 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작지 않은 것에 응답하여 상기 LBT 모드로 상기 현재 블록 및 다음 블록을 코딩하도록 구성된, 코딩 모드를 선택하기 위한 디바이스.
  13. 제 10 항에 있어서,
    상기 프로세서 회로는 또한, 상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작지 않은 것에 응답하여 상기 현재 블록을 상기 다른 코딩 모드로 코딩하도록 구성된, 코딩 모드를 선택하기 위한 디바이스.
  14. 제 10 항에 있어서,
    상기 프로세서 회로는 또한,
    상기 LBT 모드 외의 상기 복수의 코딩 모드들의 각각으로 상기 현재 블록을 코딩하기 위한 복수의 제 3 RD 비용들을 계산하고;
    계산된 상기 제 3 RD 비용들로부터 최저 제 3 RF 비용을 결정하고;
    상기 LBT 모드 외의 상기 복수의 코딩 모드들의 각각으로 상기 다음 블록을 코딩하기 위한 복수의 제 4 RD 비용들을 계산하고; 그리고
    계산된 상기 제 4 RD 비용들로부터 최저 제 4 RD 비용을 결정하도록 구성되고,
    상기 제 2 RD 비용은 상기 최저 제 3 RD 비용과 상기 최저 제 4 RD 비용의 합인, 코딩 모드를 선택하기 위한 디바이스.
  15. 제 10 항에 있어서,
    상기 프로세서 회로는 또한, 다음 조건들: (i) 패턴 모드가 최적 코딩 모드인 것으로 결정되는 것, (ii) 평탄한 블록이 검출되는 것, (iii) 복잡한 영역으로부터 평탄한 영역으로의 천이가 검출되는 것, 및 (iv) 평탄한 영역으로부터 복잡한 영역으로의 천이가 검출되는 것 중 하나 이상이 상기 현재 블록 또는 다음 블록 중 어느 하나에 대해 만족되는 것에 응답하여 상기 제 1 RD 비용을 계산하는 것을 억제하도록 구성된, 코딩 모드를 선택하기 위한 디바이스.
  16. 제 10 항에 있어서,
    상기 프로세서 회로는 또한,
    상기 LBT 모드로 상기 현재 블록으로부터 시작하여 Mmin 블록들을 코딩하기 위한 제 3 RD 비용을 계산하고;
    상기 LBT 모드와 상이한 또 다른 코딩 모드로 상기 Mmin 블록들의 각각을 코딩하기 위한 제 4 RD 비용을 계산하고;
    상기 제 3 RD 비용이 상기 Mmin 블록들을 위한 상기 제 4 RD 비용들의 합보다 작은지 여부를 결정하고; 그리고
    상기 제 3 RD 비용이 상기 Mmin 블록들을 위한 상기 제 4 RD 비용들의 합보다 작은 것에 응답하여 상기 Mmin 블록들을 상기 LBT 모드로 코딩하도록 구성된, 코딩 모드를 선택하기 위한 디바이스.
  17. 제 16 항에 있어서,
    상기 프로세서 회로는 또한
    상기 제 3 RD 비용이 상기 제 4 RD 비용들의 합보다 작은 것에 응답하여 상기 비디오 데이터의 추가 블록을 선택하고;
    상기 LBT 모드로 상기 Mmin 블록들 및 상기 추가 블록을 코딩하기 위한 업데이트된 제 1 RD 비용을 계산하고;
    상기 다른 코딩 모드로 상기 추가 블록을 코딩하기 위한 제 2 RD 비용을 계산하고;
    업데이트된 상기 제 1 RD 비용이 상기 Mmin 블록들 및 상기 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정하고; 그리고
    업데이트된 상기 제 1 RD 비용이 상기 Mmin 블록들 및 상기 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 Mmin 블록들 및 상기 추가 블록을 상기 LBT 모드로 코딩하도록 구성된, 코딩 모드를 선택하기 위한 디바이스.
  18. 비디오 데이터의 현재 블록 및 다음 블록을 선택하는 수단;
    더 큰 블록 크기 변환 (LBT) 모드로 상기 현재 블록 및 다음 블록을 코딩하기 위한 제 1 레이트-왜곡 (RD) 비용을 계산하는 수단;
    상기 LBT 모드와 상이한 또 다른 코딩 모드로 상기 현재 블록 및 다음 블록의 각각을 코딩하기 위한 제 2 RD 비용을 계산하는 수단;
    상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정하는 수단; 및
    상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 현재 블록 및 다음 블록을 상기 LBT 모드로 코딩하는 수단
    을 포함하는, 장치.
  19. 제 18 항에 있어서,
    상기 제 1 RD 비용이 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 비디오 데이터의 추가 블록을 선택하는 수단;
    상기 LBT 모드로 상기 현재 블록, 다음 블록, 및 추가 블록을 코딩하기 위한 업데이트된 제 1 RD 비용을 계산하는 수단;
    상기 다른 코딩 모드로 상기 추가 블록을 코딩하기 위한 제 2 RD 비용을 계산하는 수단;
    업데이트된 상기 제 1 RD 비용이 상기 현재 블록, 다음 블록 및 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정하는 수단; 및
    업데이트된 상기 제 1 RD 비용이 상기 현재 블록, 다음 블록 및 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 현재 블록, 다음 블록 및 추가 블록을 상기 LBT 모드로 코딩하는 수단을 더 포함하는, 장치.
  20. 제 19 항에 있어서,
    i) 상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것 및 ii) 업데이트된 상기 제 1 RD 비용이 상기 현재 블록, 다음 블록 및 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작지 않은 것에 응답하여 상기 LBT 모드로 상기 현재 블록 및 다음 블록을 코딩하는 수단을 더 포함하는, 장치.
  21. 제 18 항에 있어서,
    상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작지 않은 것에 응답하여 상기 현재 블록을 상기 다른 코딩 모드로 코딩하는 수단을 더 포함하는, 장치.
  22. 제 18 항에 있어서,
    상기 LBT 모드 외의 복수의 코딩 모드들의 각각으로 상기 현재 블록을 코딩하기 위한 복수의 제 3 RD 비용들을 계산하는 수단;
    계산된 상기 제 3 RD 비용들로부터 최저 제 3 RF 비용을 결정하는 수단;
    상기 LBT 모드 외의 상기 복수의 코딩 모드들의 각각으로 상기 다음 블록을 코딩하기 위한 복수의 제 4 RD 비용들을 계산하는 수단; 및
    계산된 상기 제 4 RD 비용들로부터 최저 제 4 RD 비용을 결정하는 수단을 더 포함하고,
    상기 제 2 RD 비용은 상기 최저 제 3 RD 비용과 상기 최저 제 4 RD 비용의 합인, 장치.
  23. 제 18 항에 있어서,
    다음 조건들: (i) 패턴 모드가 최적 코딩 모드인 것으로 결정되는 것, (ii) 평탄한 블록이 검출되는 것, (iii) 복잡한 영역으로부터 평탄한 영역으로의 천이가 검출되는 것, 및 (iv) 평탄한 영역으로부터 복잡한 영역으로의 천이가 검출되는 것 중 하나 이상이 상기 현재 블록 또는 다음 블록 중 어느 하나에 대해 만족되는 것에 응답하여 상기 제 1 RD 비용을 계산하는 것을 억제하는 수단을 더 포함하는, 장치.
  24. 제 18 항에 있어서,
    상기 LBT 모드로 상기 현재 블록으로부터 시작하여 Mmin 블록들을 코딩하기 위한 제 3 RD 비용을 계산하는 수단;
    상기 LBT 모드와 상이한 또 다른 코딩 모드로 상기 Mmin 블록들의 각각을 코딩하기 위한 제 4 RD 비용을 계산하는 수단;
    상기 제 3 RD 비용이 상기 Mmin 블록들을 위한 상기 제 4 RD 비용들의 합보다 작은지 여부를 결정하는 수단; 및
    상기 제 3 RD 비용이 상기 Mmin 블록들을 위한 상기 제 4 RD 비용들의 합보다 작은 것에 응답하여 상기 Mmin 블록들을 상기 LBT 모드로 코딩하는 수단을 더 포함하는, 장치.
  25. 제 24 항에 있어서,
    상기 제 3 RD 비용이 상기 제 4 RD 비용들의 합보다 작은 것에 응답하여 상기 비디오 데이터의 추가 블록을 선택하는 수단;
    상기 LBT 모드로 상기 Mmin 블록들 및 상기 추가 블록을 코딩하기 위한 업데이트된 제 1 RD 비용을 계산하는 수단;
    상기 다른 코딩 모드로 상기 추가 블록을 코딩하기 위한 제 2 RD 비용을 계산하는 수단;
    업데이트된 상기 제 1 RD 비용이 상기 Mmin 블록들 및 상기 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정하는 수단; 및
    업데이트된 상기 제 1 RD 비용이 상기 Mmin 블록들 및 상기 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 Mmin 블록들 및 상기 추가 블록을 상기 LBT 모드로 코딩하는 수단을 더 포함하는, 장치.
  26. 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은 실행될 때, 디바이스의 프로세서로 하여금,
    비디오 데이터로부터 현재 블록 및 다음 블록을 선택하게 하고;
    더 큰 블록 크기 변환 (LBT) 모드로 상기 현재 블록 및 다음 블록을 코딩하기 위한 제 1 레이트-왜곡 (RD) 비용을 계산하게 하고;
    상기 LBT 모드와 상이한 또 다른 코딩 모드로 상기 현재 블록 및 다음 블록의 각각을 코딩하기 위한 제 2 RD 비용을 계산하게 하고;
    상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정하게 하고; 그리고
    상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 현재 블록 및 다음 블록을 상기 LBT 모드로 코딩하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  27. 제 26 항에 있어서,
    실행될 때, 상기 프로세서로 하여금,
    상기 제 1 RD 비용이 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 비디오 데이터의 추가 블록을 선택하게 하고;
    상기 LBT 모드로 상기 현재 블록, 다음 블록, 및 추가 블록을 코딩하기 위한 업데이트된 제 1 RD 비용을 계산하게 하고;
    상기 다른 코딩 모드로 상기 추가 블록을 코딩하기 위한 제 2 RD 비용을 계산하게 하고;
    업데이트된 상기 제 1 RD 비용이 상기 현재 블록, 다음 블록 및 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작은지 여부를 결정하게 하고; 그리고
    업데이트된 상기 제 1 RD 비용이 상기 현재 블록, 다음 블록 및 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것에 응답하여 상기 현재 블록, 다음 블록 및 추가 블록을 상기 LBT 모드로 코딩하게 하는 명령들을 더 저장한, 비일시적 컴퓨터 판독가능 저장 매체.
  28. 제 27 항에 있어서,
    실행될 때, 상기 프로세서로 하여금,
    i) 상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작은 것 및 ii) 업데이트된 상기 제 1 RD 비용이 상기 현재 블록, 다음 블록 및 추가 블록을 위한 상기 제 2 RD 비용들의 합보다 작지 않은 것에 응답하여 상기 LBT 모드로 상기 현재 및 다음 블록을 코딩하게 하는 명령들을 더 저장한, 비일시적 컴퓨터 판독가능 저장 매체.
  29. 제 26 항에 있어서,
    실행될 때, 상기 프로세서로 하여금, 상기 제 1 RD 비용이 상기 현재 블록 및 다음 블록을 위한 상기 제 2 RD 비용들의 합보다 작지 않은 것에 응답하여 상기 현재 블록을 상기 다른 코딩 모드로 코딩하게 하는 명령들을 더 저장한, 비일시적 컴퓨터 판독가능 저장 매체.
  30. 제 26 항에 있어서,
    실행될 때, 상기 프로세서로 하여금
    상기 LBT 모드 외의 복수의 코딩 모드들의 각각으로 상기 현재 블록을 코딩하기 위한 복수의 제 3 RD 비용들을 계산하게 하고;
    계산된 상기 제 3 RD 비용들로부터 최저 제 3 RF 비용을 결정하게 하고;
    상기 LBT 모드 외의 상기 복수의 코딩 모드들의 각각으로 상기 다음 블록을 코딩하기 위한 복수의 제 4 RD 비용들을 계산하게 하고; 그리고
    계산된 상기 제 4 RD 비용들로부터 최저 제 4 RD 비용을 결정하게 하는 명령들을 더 저장하고,
    상기 제 2 RD 비용은 상기 최저 제 3 RD 비용과 상기 최저 제 4 RD 비용의 합인, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020187001888A 2015-07-24 2016-07-20 디스플레이 스트림 압축에서의 변환 모드를 위한 블록 크기에 대한 수정 KR20180032570A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201562196742P 2015-07-24 2015-07-24
US62/196,742 2015-07-24
US201562220039P 2015-09-17 2015-09-17
US62/220,039 2015-09-17
US15/213,966 US10123045B2 (en) 2015-07-24 2016-07-19 Modification to block size for transform mode in display stream compression
US15/213,966 2016-07-19
PCT/US2016/043145 WO2017019407A1 (en) 2015-07-24 2016-07-20 Modification to block size for transform mode in display stream compression

Publications (1)

Publication Number Publication Date
KR20180032570A true KR20180032570A (ko) 2018-03-30

Family

ID=57836325

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187001888A KR20180032570A (ko) 2015-07-24 2016-07-20 디스플레이 스트림 압축에서의 변환 모드를 위한 블록 크기에 대한 수정

Country Status (7)

Country Link
US (1) US10123045B2 (ko)
EP (1) EP3326367A1 (ko)
JP (1) JP2018525901A (ko)
KR (1) KR20180032570A (ko)
CN (1) CN107852494A (ko)
BR (1) BR112018001544A2 (ko)
WO (1) WO2017019407A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102019203589A1 (de) 2018-03-21 2019-09-26 Hyundai Mobis Co., Ltd. Druckregelventil für ein Fahrzeug

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117579839B (zh) * 2024-01-15 2024-03-22 电子科技大学 一种基于率失真优化色彩空间转换矩阵的图像压缩方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7006699B2 (en) * 2002-03-27 2006-02-28 Microsoft Corporation System and method for progressively transforming and coding digital data
US7428342B2 (en) * 2004-12-17 2008-09-23 Microsoft Corporation Reversible overlap operator for efficient lossless data compression
US8369638B2 (en) * 2008-05-27 2013-02-05 Microsoft Corporation Reducing DC leakage in HD photo transform
KR101456498B1 (ko) * 2009-08-14 2014-10-31 삼성전자주식회사 계층적 부호화 단위의 스캔 순서를 고려한 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
KR101545382B1 (ko) * 2010-01-08 2015-08-18 노키아 코포레이션 비디오 코딩을 위한 장치, 방법 및 컴퓨터 프로그램
TWI416961B (zh) * 2010-04-02 2013-11-21 Univ Nat Chiao Tung 用於可調式視訊編碼系統之選擇性移動向量預測方法、移動估測方法及其裝置
KR20140010192A (ko) * 2010-04-09 2014-01-23 미쓰비시덴키 가부시키가이샤 화상 부호화 장치
CN106067973B (zh) * 2010-05-19 2019-06-18 Sk电信有限公司 视频解码设备
US9497472B2 (en) * 2010-11-16 2016-11-15 Qualcomm Incorporated Parallel context calculation in video coding
US8571092B2 (en) * 2011-10-14 2013-10-29 Texas Instruments Incorporated Interconnect coding method and apparatus
WO2013149307A1 (en) * 2012-04-05 2013-10-10 Newsouth Innovations Pty Limited Method and apparatus for coding of spatial data
SI2840789T1 (sl) * 2012-04-15 2018-10-30 Samsung Electronics Co., Ltd. Postopek posodabljanja parametrov za entropijsko dekodiranje stopnje koeficienta konverzije in naprava za entropijsko dekodiranje stopnje koeficienta konverzije z njeno uporabo
US20140219331A1 (en) * 2013-02-06 2014-08-07 Magnum Semiconductor, Inc. Apparatuses and methods for performing joint rate-distortion optimization of prediction mode
KR101436369B1 (ko) * 2013-06-25 2014-09-11 중앙대학교 산학협력단 적응적 블록 분할을 이용한 다중 객체 검출 장치 및 방법
US9572413B2 (en) * 2013-07-08 2017-02-21 Derik Zhang Movable belt mascara applicator
US9930346B2 (en) 2014-04-15 2018-03-27 Qualcomm Incorporated System and method for flatness detection for display stream compression (DSC)
US9843816B2 (en) * 2014-04-21 2017-12-12 Qualcomm Incorporated System and method for coding in pattern mode for display stream compression (DSC)
WO2015200822A1 (en) * 2014-06-26 2015-12-30 Huawei Technologies Co., Ltd Method and device for reducing a computational load in high efficiency video coding
KR102411911B1 (ko) * 2015-12-24 2022-06-22 삼성전자주식회사 프레임 레이트 변환 장치 및 그 프레임 레이트 변환 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102019203589A1 (de) 2018-03-21 2019-09-26 Hyundai Mobis Co., Ltd. Druckregelventil für ein Fahrzeug

Also Published As

Publication number Publication date
EP3326367A1 (en) 2018-05-30
BR112018001544A2 (pt) 2018-09-18
US20170026663A1 (en) 2017-01-26
CN107852494A (zh) 2018-03-27
US10123045B2 (en) 2018-11-06
WO2017019407A1 (en) 2017-02-02
JP2018525901A (ja) 2018-09-06

Similar Documents

Publication Publication Date Title
EP3284253B1 (en) Rate-constrained fallback mode for display stream compression
US9877048B2 (en) Entropy coding techniques for display stream compression (DSC)
CA3000020C (en) Entropy coding techniques for display stream compression (dsc) of non-4:4:4 chroma sub-sampling
US9866853B2 (en) System and method for lagrangian parameter calculation for display stream compression (DSC)
KR101993966B1 (ko) 디스플레이 스트림 압축 (dsc) 을 위한 평탄도 검출을 위한 시스템 및 방법
US10631005B2 (en) System and method for coding in block prediction mode for display stream compression (DSC)
US20160309149A1 (en) Quantization parameter (qp) calculation for display stream compression (dsc) based on complexity measure
JP2018531556A6 (ja) 非4:4:4クロマサブサンプリングのディスプレイストリーム圧縮(dsc)のためのエントロピーコーディング技法
JP2019522413A (ja) ディスプレイストリーム圧縮のためのサブストリーム多重化
KR20170136526A (ko) 디스플레이 스트림 압축을 위한 복잡한 영역 검출
KR20180102565A (ko) 디스플레이 스트림 압축 (dsc) 에서의 왜곡을 계산하기 위한 시스템 및 방법들
US9843816B2 (en) System and method for coding in pattern mode for display stream compression (DSC)
US10123045B2 (en) Modification to block size for transform mode in display stream compression