KR20160145088A - 디스플레이 스트림 압축 (dsc) 에서 양자화 파라미터 (qp) 를 선택하기 위한 시스템 및 방법 - Google Patents

디스플레이 스트림 압축 (dsc) 에서 양자화 파라미터 (qp) 를 선택하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20160145088A
KR20160145088A KR1020167031303A KR20167031303A KR20160145088A KR 20160145088 A KR20160145088 A KR 20160145088A KR 1020167031303 A KR1020167031303 A KR 1020167031303A KR 20167031303 A KR20167031303 A KR 20167031303A KR 20160145088 A KR20160145088 A KR 20160145088A
Authority
KR
South Korea
Prior art keywords
current block
video data
content
bits
thresholds
Prior art date
Application number
KR1020167031303A
Other languages
English (en)
Other versions
KR101941760B1 (ko
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 KR20160145088A publication Critical patent/KR20160145088A/ko
Application granted granted Critical
Publication of KR101941760B1 publication Critical patent/KR101941760B1/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/124Quantisation
    • 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/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • 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/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • 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/174Methods 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 slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements

Landscapes

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

Abstract

특정 양태들에 따른 비디오 데이터를 코딩하기 위한 장치는 비디오 데이터를 저장하기 위한 메모리 및 프로세서를 포함한다. 메모리는 버퍼를 포함한다. 프로세서는 코딩될 비디오 데이터를 수신하도록 구성된다. 프로세서는 또한, 비디오 데이터의 콘텐츠의 유형 및 콘텐츠의 유형과 연관된 레이트-왜곡 모델을 고려하지 않고 비디오 데이터의 현재 블록의 양자화 파라미터 (QP) 를 결정하도록 구성된다. 프로세서는 또한, 결정된 QP 를 사용하여 비트스트림에서 현재 블록을 코딩하도록 구성된다.

Description

디스플레이 스트림 압축 (DSC) 에서 양자화 파라미터 (QP) 를 선택하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR SELECTING QUANTIZATION PARAMETER (QP) IN DISPLAY STREAM COMPRESSION (DSC)}
본 개시는 비디오 코딩 및 압축의 분야에 관한 것이고, 보다 구체적으로는 디스플레이 스트림 압축 (DSC) 과 같은 디스플레이 링크들을 통한 송신을 위한 비디오 압축에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전들, 개인 휴대정보 단말기 (PDA) 들, 랩탑 컴퓨터, 데스크탑 모니터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 휴대 또는 위성 무선 전화기들, 원격 화상회의 디바이스들 등을 포함한, 광범위한 디스플레이들에 포함될 수 있다. 디스플레이 링크들은 디스플레이들을 적절한 소스 디바이스들에 접속시키는데 사용된다. 디스플레이 링크들의 대역폭 요건들은 디스플레이의 해상도에 비례하고, 따라서, 고해상도 디스플레이는 큰 대역폭 디스플레이 링크들을 요구한다. 일부 디스플레이 링크들은 고 해상도 디스플레이들을 지원하기 위한 대역폭을 갖지 않는다. 비디오 압축은, 고 해상도 디스플레이들에 디지털 비디오를 제공하기 위해 보다 낮은 대역폭 디스플레이 링크들이 사용될 수 있도록 대역폭 요건들을 감소시키는데 사용될 수 있다.
다른 것들은 픽셀 데이터에 대한 이미지 압축을 이용하는 것을 시도하였다. 하지만, 그러한 스킴들은 때때로 시각적으로 무손실이 아니거나 또는 종래 디스플레이 디바이스들에서 구현하기 곤란하고 비쌀 수 있다.
비디오 전자 표준 위원회 (VESA) 는 디스플레이 링크 비디오 압축을 위한 표준으로서 디스플레이 스트림 압축 (DSC) 을 개발하였다. DSC 와 같은 디스플레이 링크 비디오 압축 기법은, 특히, 시각적으로 무손실인 (즉, 사용자들이 압축이 작동하는지 알 수 없을 만큼 충분히 양호한) 화상 품질을 제공해야 한다. 디스플레이 링크 비디오 압축 기법은 또한, 종래 하드웨어로 실시간으로 구현하기 용이하고 저렴한 스킴을 제공해야 한다.
개요
본 개시의 시스템, 방법 및 디바이스는 각각 여러 혁신적인 양태들을 가지며, 그들 중 단 하나만이 오로지 여기에 개시된 바람직한 속성들의 원인이 되지는 않는다.
일 양태에서, 비디오 데이터를 코딩하기 위한 장치는 비디오 데이터를 저장하기 위한 메모리 및 프로세서를 포함한다. 메모리는 버퍼를 포함한다. 프로세서는 코딩될 비디오 데이터를 수신하도록 구성된다. 프로세서는, 비디오 데이터의 콘텐츠 (content) 의 유형 및 콘텐츠의 유형과 연관된 레이트-왜곡 모델 (rate-distortion model) 을 고려함이 없이 비디오 데이터의 현재 블록의 양자화 파라미터 (quantization parameter; QP) 를 결정하도록 더 구성된다. 프로세서는 또한, 결정된 QP 를 사용하여 비트스트림에서 현재 블록을 코딩하도록 구성된다.
도 1a 는 본 개시에 기재된 양태들에 따른 기법들을 이용할 수도 있는 예의 비디오 인코딩 및 디코딩 시스템을 예시하는 블록도이다.
도 1b 는 본 개시에 기재된 양태들에 따른 기법들을 수행할 수도 있는 또 다른 예의 비디오 인코딩 및 디코딩 시스템을 예시하는 블록도이다.
도 2a 는 본 개시에 기재된 양태들에 따른 기법들을 구현할 수도 있는 비디오 인코더의 일 예를 예시하는 블록도이다.
도 2b 는 본 개시에 기재된 양태들에 따른 기법들을 구현할 수도 있는 비디오 디코더의 일 예를 예시하는 블록도이다.
도 3 은 본 개시에 설명된 양태들에 따른 QP 선택을 위한 방법을 예시하는 플로우차트이다.
일반적으로, 이 개시물은, 디스플레이 스트림 압축 (display stream compression; DSC) 과 같은 비디오 압축 기술들의 맥락에서 양자화 파라미터 (QP) 를 선택하기 위한 기술들에 관한 것이다. 보다 구체적으로, 본 개시물은, 레이트 왜곡 모델을 고려함이 없이 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), 및 그러한 표준들의 확장들. 또한, 본 개시에 설명된 기법들은 향후 개발되는 표준들의 부분이 될 수도 있다. 즉, 본 개시에 설명된 기법들은 이전에 개발된 비디오 코딩 표준들, 현재 개발중인 비디오 코딩 표준들, 및 다가오는 비디오 코딩 표준들에 적용가능할 수도 있다.
QP 를 계산하는 것은 레이트 제어 프로세스에서 바람직한 단계일 수 있고, 코딩 스킴 (scheme) 의 레이트-왜곡 (rate-distortion; RD) 수행에 대해 큰 영향을 가질 수 있다. 하나의 실시형태에서, 경험적 레이트-왜곡 모델을 필요로 하는 레이트-왜곡 관계를 최적화하기 위해 QP 가 선택된다. 예를 들어, QP 는 주어진 레이트-왜곡 경험적 모델에 가장 잘 맞도록 계산될 수도 있다. 이러한 접근법은 특정 콘텐츠, 예컨대 자연적 콘텐츠로 작업할 때 잘 작용할 수도 있다. 하지만, 자연적, 합성적, 컴퓨터 그래픽스, 프랙털 등을 포함하는 수개의 유형들의 콘텐츠와 작업할 때, 상이한 유형들의 콘텐츠에 대해 효율적으로 작용하는 레이트-왜곡 모델을 확립하는 것은 힘든 일일 수도 있다. 예를 들어, 레이트-왜곡 모델에 대해 단일의 폐쇄된 형태의 표현을 확립하는 것은 힘든 일일 수 있다. 이러한 문제를 극복하기 위해, 레이트-왜곡 모델의 지식을 필요로 하거나 레이트-왜곡 모델에 의존하지 않는, QP 를 계산하는 방법을 구현하는 것이 바람직할 수도 있다.
이들 및 다른 문제들을 해결하기 위해, 특정 양태들에 따른 기술들은 레이트-왜곡 모델을 고려함이 없이 최적의 QP 를 결정할 수 있다. 레이트-왜곡 모델은 DSC 에서의 하나 이상의 코딩 모드들 또는 하나 이상의 상이한 유형들의 콘텐츠와 연관될 수 있다. 레이트-왜곡 모델들은 경험적 데이터 (empirical data) 에 기초할 수도 있다. 하나의 실시형태에서, 본 기술들은, (1) 현재 블록에 대한 비트 버짓 (budget) (예컨대, 코딩을 위해 할당된 비트들의 수) 과 이전 블록을 인코딩하기 위한 비트들의 수 사이의 차이, 및 (2) 현재 블록에 대한 비트 버짓과 이전 블록을 인코딩하기 위한 비트들의 수 사이의 차이의 함수인 QP 조정 값에 기초하여 QP 를 결정할 수 있다. 현재 블록에 대한 결정된 QP 는 버퍼 충만도 (fullness), 현재 블록의 편평도 (flatness) 등에 기초하여 더 조정될 수도 있다.
이러한 방식으로, 본 기술들은 코딩 모드 또는 콘텐츠의 특정 유형과 연관된 구체적인 레이트-왜곡 모델에 의존함이 없이 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) 에 의해 생성된 다양한 신택스 엘리먼트들을 포함할 수도 있다. 그러한 신택스 엘리먼트들은, 통신 매체 상에서 송신되거나, 저장 매체 상에 저장되거나, 또는 파일 서버에 저장되는 인코딩된 비디오 데이터와 함께 포함될 수도 있다.
디스플레이 디바이스 (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 비디오 인코더
도 2a는 본 개시에 기재된 양태들에 따른 기법들을 구현할 수도 있는 비디오 인코더 (20) 의 일 예를 예시하는 블록도이다. 비디오 인코더 (20) 는 본 개시의 일부 또는 모든 기법들을 수행하도록 구성될 수도 있다. 일부 예들에서, 본 개시에 기재된 기법들은 비디오 인코더 (20) 의 다양한 컴포넌트들 중에서 공유될 수도 있다. 일부 예들에서, 추가적으로 또는 대안적으로, 프로세서 (미도시) 는 본 개시에 기재된 기법들 중 일부 또는 전부를 수행하도록 구성될 수도 있다.
설명의 목적을 위하여, 본 개시는 DSC 코딩의 맥락에서 비디오 인코더 (20) 를 설명한다. 하지만, 본 개시의 기법들은 다른 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
도 2a의 예에서, 비디오 인코더 (20) 는 복수의 기능 컴포넌트들을 포함한다. 비디오 인코더 (20) 의 기능 컴포넌트들은 컬러-공간 변환기 (105), 버퍼 (110), 편평도 검출기 (115), 레이트 제어기 (120), 예측기, 양자화기, 및 재구성기 컴포넌트 (125), 라인 버퍼 (130), 인덱싱된 컬러 이력 (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) 하지 않아야 한다.
일부 실시형태들에서, 버퍼 충만도 (buffer fullness; BF) 는 현재 버퍼에 있는 비트들의 수를 나타내는 BufferCurrentSize 및 레이트 버퍼 (150) 의 크기, 즉 임의의 시점에 레이트 버퍼 (150) 에서 저장될 수 있는 비트들의 최대 수를 나타내는 BufferMaxSize 값들에 기초하여 정의될 수 있다. BF 는 다음과 같이 계산될 수도 있다:
BF = ((BufferCurrentSize * 100) / BufferMaxSize)
편평도 검출기 (115) 는 비디오 데이터에서의 복잡 (즉, 비편평) 영역들로부터 비디오 데이터에서의 편평 (즉, 단순 또는 균일) 영역들로의 변화들을 검출할 수 있다. 용어들 "복잡 (complex)" 및 "편평 (flat)" 은 본원에서, 비디오 인코더 (20) 가 비디오 데이터의 각각의 영역들을 인코딩하는 곤란성을 일반적으로 나타내는데 사용될 것이다. 따라서, 본원에서 사용된 용어 "복잡" 은 일반적으로, 비디오 인코더 (20) 가 인코딩하기 복잡하거나 또는 곤란한 것으로서 비디오 데이터의 영역을 기술하고, 예를 들어, 텍스쳐화된 비디오 데이터, 높은 공간 주파수, 및/또는 인코딩하기 복잡한 다른 특징들을 포함할 수도 있다. 예를 들어, 비디오 데이터의 영역은 영역을 인코딩하는데 필요한 비트들의 수가 임계치보다 높을 때 복잡한 영역으로 결정될 수도 있다. 본원에서 사용된 용어 "편평" 은 일반적으로, 비디오 인코더 (20) 가 인코딩하기 간단한 것으로서 비디오 데이터의 영역을 기술하고, 예를 들어, 비디오 데이터에서의 매끄러운 그래디언트, 낮은 공간 주파수, 및/또는 인코딩하기 간단한 다른 특징들을 포함할 수도 있다. 예를 들어, 비디오 데이터의 영역은 영역을 인코딩하는데 필요한 비트들의 수가 임계치보다 낮을 때 편평한 영역으로 결정될 수도 있다.
하지만, 구현에 따라, 주어진 영역이 복잡한지 또는 편평한지의 결정은 또한, 사용된 인코딩 표준, 비디오 인코더 (20) 에 포함된 특정 하드웨어, 인코딩될 비디오 데이터의 타입 등에 기초하여 결정될 수도 있다. 또한, 비디오 데이터 영역들의 어떤 특징들은 영역을 인코딩하는데 얼마나 많은 수의 비트들이 필요한지에 영향을 미칠 수도 있다, 예를 들어, 높은 텍스쳐 및/또는 높은 공간 주파수 영역들은 보다 낮은 텍스쳐 및/또는 보다 낮은 공간 주파수 영역들보다 더 많은 비트들이 인코딩될 필요가 있다. 유사하게, 랜덤 노이즈를 포함하는 영역들은 비디오 데이터의 보다 구조화된 영역들과 비교하여 많은 수의 비트들이 인코딩될 필요가 있을 수도 있다. 따라서, 어떤 구현들에서, 비디오 데이터의 영역들은 텍스쳐 및/또는 공간 주파수 (예를 들어, 복잡성 값) 을 복잡성 임계치와 비교하는 것에 의해 복잡 및/또는 편평 영역들로서 식별될 수도 있다. 복잡과 편평 영역들 사이의 천이는 인코딩된 비디오 데이터에서 양자화 아티팩트들을 감소시키기 위하여 비디오 인코더 (20) 에 의해 사용될 수도 있다. 구체적으로, 레이트 제어기 (120) 및 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 는, 복잡으로부터 편평 영역들로의 천이가 식별될 때 그러한 양자화 아티팩트들을 감소시킬 수 있다.
레이트 제어기 (120) 는, 코딩 파라미터들, 예를 들어, QP 의 세트를 결정한다. QP 는, 레이트 버퍼 (150) 가 오버플로우 또는 언더플로우하지 않도록 보장하는 타겟 비트레이트를 위한 화상 품질을 극대화하기 위하여 비디오 데이터의 이미지 활동도 (image activity) 및 레이트 버퍼 (150) 의 버퍼 충만도에 기초하여 레이트 제어기 (120) 에 의해 조정될 수도 있다. 레이트 제어기 (120) 는 또한, 최적 레이트 왜곡 성능을 달성하기 위하여 비디오 데이터의 각각의 블록에 대해 특정 코딩 옵션 (예를 들어, 특정 모드) 을 선택한다. 레이트 제어기 (120) 는, 비트 레이트 제약을 만족하도록, 즉 전체적인 실제 코딩 레이트가 타겟 비트 레이트 안에 들어가도록 재구성된 이미지들의 왜곡을 최소화한다.
예측기, 양자화기 및 재구성기 컴포넌트 (125) 는 비디오 인코더 (20) 의 적어도 3개의 인코딩 동작들을 수행할 수도 있다. 예측기, 양자화기 및 재구성기 컴포넌트 (125) 는 많은 상이한 모드들에서 예측을 수행할 수도 있다. 하나의 예시적인 예측 모드는 메디안 적응 예측 (median-adaptive prediction) 의 수정된 버전이다. 메디안 적응 예측은 무손실 JPEG 표준 (JPEG-LS) 에 의해 구현될 수도 있다. 예측기, 양자화기, 및 재구성기 컴포넌트 (125) 에 의해 수행될 수도 있는 메디안 적응 예측의 수정된 버전은 3개의 연속적인 샘플 값들의 병렬 예측을 허용할 수도 있다. 다른 예시적인 예측 모드는 블록 예측이다. 블록 예측에서, 샘플들은 이전에 재구성된 픽셀들로부터 좌측으로 예측된다. 비디오 인코더 (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) 로부터 수신된 예측 잔차들을 인코딩한다. 일부 예들에서, 엔트로피 인코더 (140) 는 서브스트림 인코더에 대하여 클록당 3개 샘플들을 인코딩할 수도 있다. 서브스트림 멀티플렉서 (145) 는 헤더리스 패킷 멀티플렉싱 스킴에 기초하여 비트스트림을 멀티플렉싱할 수도 있다. 이것은 비디오 디코더 (30) 가 3개의 엔트로피 디코더들을 병렬로 실행하는 것을 허용하며, 클록마다 3개의 픽셀들의 디코딩을 가능하게 한다. 서브스트림 멀티플렉서 (145) 는 패킷들이 비디오 디코더 (30) 에 의해 효율적으로 디코딩될 수 있도록 패킷 순서를 최적화할 수도 있다. 클록마다 2의 거듭제곱 픽셀들 (예를 들어, 2 픽셀들/클록 또는 4 픽셀들/클록) 의 디코딩을 가능하게 할 수도 있는, 엔트로피 코딩에 대한 상이한 접근법들이 구현될 수도 있다는 것에 유의한다.
DSC 비디오 디코더
도 2b는 본 개시에 기재된 양태들에 따른 기법들을 구현할 수도 있는 비디오 디코더 (30) 의 일 예를 예시하는 블록도이다. 비디오 디코더 (30) 는 본 개시의 일부 또는 모든 기법들을 수행하도록 구성될 수도 있다. 일부 예들에서, 본 개시에 기재된 기법들은 비디오 인코더 (30) 의 다양한 컴포넌트들 중에서 공유될 수도 있다. 일부 예들에서, 추가적으로 또는 대안적으로, 프로세서 (미도시) 는 본 개시에 기재된 기법들 중 일부 또는 전부를 수행하도록 구성될 수도 있다.
설명의 목적을 위하여, 본 개시는 DSC 코딩의 맥락에서 비디오 디코더 (30) 를 설명한다. 하지만, 본 개시의 기법들은 다른 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
도 2b의 예에서, 비디오 디코더 (30) 는 복수의 기능 컴포넌트들을 포함한다. 비디오 디코더 (30) 의 기능 컴포넌트들은 레이트 버퍼 (155), 서브스트림 디멀티플렉서 (160), 엔트로피 디코더 (165), 레이트 제어기 (170), 예측기, 양자화기, 및 재구성기 컴포넌트 (175), 인덱싱된 컬러 이력 (180), 라인 버퍼 (185) 및 컬러-공간 변환기 (190) 를 포함한다. 비디오 디코더 (30) 의 예시된 컴포넌트들은 도 2a 에서 비디오 인코더 (20) 와 관련하여 위에서 설명된 대응하는 컴포넌트들에 유사하다. 이와 같이, 비디오 디코더 (30) 의 컴포넌트들의 각각은 위에서 설명된 바처럼 비디오 인코더 (20) 의 대응하는 컴포넌트들에 유사한 방식으로 동작할 수도 있다.
DSC 에서의 슬라이스들
위에서 언급된 바처럼, 슬라이스는 일반적으로, 이미지 또는 프레임에 있는 영역들의 나머지로부터의 정보를 사용함이 없이 독립적으로 디코딩될 수 있는 이미지 또는 프레임에서 공간적으로 구별되는 영역을 나타낸다. 각각의 이미지 또는 비디오 프레임은 단일 슬라이스에서 인코딩될 수도 있거나, 또는 그것은 여러 슬라이스들에서 인코딩될 수도 있다. DSC 에서, 각각의 슬라이스를 인코딩하기 위해 할당된 타겟 비트들은 실질적으로 일정할 수도 있다.
DSC 를 위한 QP 선택
QP 를 계산하는 것은 레이트 제어 프로세스에서 바람직한 단계일 수 있고, 코딩 스킴의 레이트-왜곡 (RD) 수행에 대해 큰 영향을 가질 수 있다. 하나의 실시형태에서, 경험적 레이트-왜곡 모델을 필요로 하는 레이트-왜곡 관계를 최적화하기 위해 QP 가 선택된다. 예를 들어, QP 는 주어진 레이트-왜곡 경험적 모델에 가장 잘 맞도록 계산될 수도 있다. 이러한 접근법은 특정 콘텐츠, 예컨대 자연적 콘텐츠로 작업할 때 잘 작용할 수도 있다. 하지만, 자연적, 합성적, 컴퓨터 그래픽스, 프랙털 등을 포함하는 수개의 유형들의 콘텐츠와 작업할 때, 상이한 유형들의 콘텐츠에 대해 효율적으로 작용하는 레이트-왜곡 모델을 확립하는 것은 힘든 일일 수도 있다. 예를 들어, 레이트-왜곡 모델에 대해 단일의 폐쇄된 형태의 표현을 확립하는 것은 힘든 일일 수 있다. 이러한 문제를 극복하기 위해, 레이트-왜곡 모델의 지식을 필요로 하거나 레이트-왜곡 모델에 의존하지 않는, QP 를 계산하기 위한 방법을 구현하는 것이 바람직할 수도 있다.
이들 및 다른 문제들을 해결하기 위해, 특정 양태들에 따른 기술들은 레이트-왜곡 모델을 고려함이 없이 최적의 QP 를 결정할 수 있다. 레이트-왜곡 모델은 DSC 에서의 하나 이상의 코딩 모드들 또는 하나 이상의 상이한 유형들의 콘텐츠와 연관될 수 있다. 레이트-왜곡 모델들은 경험적 데이터에 기초할 수도 있다. 하나의 실시형태에서, 본 기술들은, (1) 현재 블록에 대한 비트 버짓과 이전 블록을 인코딩하기 위한 비트들의 수 사이의 차이, 및 (2) 현재 블록에 대한 비트 버짓과 이전 블록을 인코딩하기 위한 비트들의 수 사이의 차이의 함수인 QP 조정 값에 기초하여 QP 를 결정할 수 있다. 현재 블록에 대한 결정된 QP 는 버퍼 충만도, 현재 블록의 편평도 등에 기초하여 더 조정될 수도 있다.
이러한 방식으로, 본 기술들은 코딩 모드 또는 콘텐츠의 특정 유형과 연관된 구체적인 레이트-왜곡 모델에 의존함이 없이 QP 값을 선택할 수 있다. 이것은, 레이트-왜곡을 확립하는 것이 시간 소모적이고 상당한 양의 수고를 수반할 수 있기 때문에, 비용 및/또는 자원을 절약할 수 있다. 또한, 본 기술들은 상이한 유형들의 콘텐츠와 잘 작용하는 QP 를 결정할 수 있다.
DSC 에서 QP 를 선택하는 것에 관한 특정 상세들은, 예를 들어, 예시적인 실시형태와 관련하여 이하 설명된다. 이 개시물 전체에 걸쳐 사용되는 다양한 용어들은 그들의 보통의 의미를 갖는 넓은 용어들이다. 일부 실시형태들에서, QP 는 양자화의 정도를 제어하기 위해 양자화 프로세스에서 사용되는 파라미터를 지칭할 수 있다. 예를 들어, 양자화 프로세스는 비트 레이트를 추가적으로 감소시키기 위해 잔차 (residual) 를 양자화한다. 양자화 프로세스는 잔차들의 일부 또는 전부와 연관된 비트 심도 (bit depth) 를 감소시킬 수도 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 수정될 수도 있다. 실례로, 양자화 파라미터는 잔차들의 양자화를 결정하기 위해 사용된다. QP 값이 낮을 때, 상세한 시각 정보의 대부분이 보유될 수 있다. 낮은 QP 값은 일반적으로 더 낮은 왜곡을 제공하지만, 더 높은 비트 레이트의 비용에서이다. QP 값이 증가함에 따라, 더 많은 비트 평면들이 폐기될 수도 있고, 이는 비트 레이트를 감소시키지만, 증가하는 왜곡의 비용에서이다. 특정 실시형태들에서, 본 기술들은 레이트-왜곡 모델과는 독립적으로 QP 를 결정할 수 있고, 레이트-왜곡 모델의 함수로서가 아닌 QP 를 결정할 수 있는 등이다. 특정 양태들에 따르면, 레이트-왜곡 모델을 고려함이 없이 QP 를 결정하는 것은 또한 레이트-왜곡 모델과는 독립적으로 QP 를 결정하는 것, 레이트-왜곡 모델의 함수가 아닌 QP 를 결정하는 것 등으로서 지칭될 수도 있다. 레이트-왜곡 모델은 코딩될 비디오 콘텐츠의 유형과 연관될 수도 있고, 특정 모드와 연관될 수도 있으며, 또는 양자 모두와 연관될 수도 있다. 콘텐츠의 유형은 콘텐츠의 실체와는 다를 수도 있다. 콘텐츠의 유형은 자연적 콘텐츠, 합성 콘텐츠, 컴퓨터 그래픽스, 프랙털 등을 포함할 수도 있다. 레이트-왜곡 모델은 실제 콘텐츠 그 자체가 아니라 콘텐츠의 특정 유형과 연관될 수 있다.
예시적인 실시형태
하나의 실시형태에서, 경험적 레이트-왜곡 모델을 알지 않고서 상이한 유형들의 콘텐츠에 대해 잘 작동하는 QP 를 계산하기 위한 장치 및 방법이 제공된다. 특정 코딩 모드 (또는 옵션) 에 대해, 현재 블록에 대한 대응하는 QP 값은 이하에서 설명되는 단계들로부터 계산될 수 있다. 이 기술은 코딩 모드 (또는 옵션) 와 연관된 QP 를 계산하기 위해 각각의 코딩 모드 (또는 옵션) 에 대해 독립적으로 사용될 수도 있다. 예를 들어, 현재 블록에 대해, QP 값은 이하에서 설명된 단계들을 이용하여 각각의 코딩 모드에 대해 계산되고 예를 들어 블록별로 추적될 수 있다. 특정 실시형태들에서, 각 코딩 모드에 대응하는 QP 를 계산하는 대신에, 본 기술들은 모든 코딩 모드들을 코딩하기 위해 사용될 수 있는 단일의 QP 값을 계산할 수 있다. 실례로, 현재 블록에 대한 단일 QP 값은 이하에서 설명되는 단계들로부터 계산될 수 있다.
1. 비트 버짓 계산
(여기서 bitBudget 으로서 표시된) 현재 블록에 대한 비트 버짓은 슬라이스에서 남은 비트들의 수 (numSliceBitsRemaining), 슬라이스에서 인코딩될 픽셀들의 수 (numSlicePixelsRemaining), 및 현재 블록에서의 픽셀들의 수 (numPixelsInBlock) 를 고려하여 계산된다. 또한, 버퍼에서의 비트들의 수 (예컨대, BF) 는 bitBudget 을 계산하면서 고려될 수도 있다.
Figure pct00001
하나의 예에서, 현재 블록에 대한 비트 레이트는 슬라이스에서 남은 비트들의 수를 인코딩될 필요가 있는 슬라이스에서의 픽셀들의 수에 의해 나눔으로써 계산된다. 따라서, bitBudget 은 다음과 같이 계산된다:
- bitBudget = (numSliceBitsRemaining / numSlicePixelsRemaining ) * numPixelsInBlock.
Figure pct00002
다른 예에서, bitBudget 은 슬라이스 내의 현재 블록의 위치에 의존하여 계산될 수도 있다. 예를 들어, bitBudget 은 레이트 decBitBudget 에 의해 선형적으로 감소될 수 있고, 여기서, decBitBudget 는 현재 슬라이스에서 인코딩되는 블록들의 수 및 현재 슬라이스에서의 블록들의 총 수에 의존하여 계산될 수도 있다.+
2. 이전 블록을 인코딩하기 위한 비트들의 수와 비트 버짓 사이의 차이 계산
특정 모드에 대해 (prevBlockBits 으로서 표시된) 이전 블록을 인코딩하기 위해 필요한 비트들의 수 및 bitBudget 사이의 차이가 계산된다. 이 차이는 diffBits 로서 표현될 수도 있고, diffBits = prevBlockBits - bitBudget 으로서 계산될 수도 있다. 또한, diffBits 는, 예를 들어, diffBits = diffBits / (numPixelsinBlock * targetBitRate ) 로서 정규화될 수도 있다.
일부 실시형태들에서, 단일 QP 가 도출되고 이전 블록을 코딩하기 위해 사용되었던 코딩 모드에 관계없이 모든 코딩 모드들에 대해 사용될 때, (prevBlockBits 로서 표시된) 이전 블록을 코딩하는데 소비된 비트들의 수가 diffBits 를 계산하기 위해 사용된다.
3. 차이의 함수로서 QP 조정 값 결정
QpAdj 는 단계 2 에서 계산된 diffBits 의 절대 값의 함수로서 계산되는 조정 값을 나타낸다. 이 함수는, diffBits 의 절대 값이 증가함에 따라, QpAdj 의 값을 선형적으로 또는 비선형적으로 증가시킬 수도 있다.
Figure pct00003
하나의 예에서, diffBits 의 절대 값은 K 개의 임계 값들을 사용하여 K+1 범위들로 분류될 수도 있다. 예를 들어, K 개의 임계 값들 (예컨대, 1 내지 K) 이 존재할 수 있고, 연속적인 2 개의 임계 값들이 범위의 시작과 끝을 정의할 수 있다. 예를 들어, 범위 1 은 0 과 임계치 1 사이일 수 있고, 범위 2 는 임계치 1 과 임계치 2 사이일 수 있는 등이다. K 개의 임계 값들에 대해, K+1 범위들이 존재할 수 있다. 각 범위에 대해, 특정 QpAdj 값이 존재하고, 여기서, 범위가 증가함에 따라 QpAdj 값은 증가한다.
Figure pct00004
일부 실시형태들에서, QpAdj 는 절대 값을 취함이 없이 diffBits 의 함수로서 계산될 수도 있다. K+1 범위들을 분류하기 위해 사용되는 K 개의 임계 값들 [Threshold1, Threshold 2, ... Threshold k] 및 각각의 QpAdj 값은 diffBits 의 단일 값에 따라 상이할 수도 있다.
- 하나의 예에서, diffBits > 0 일 때, diffBitsK 개의 임계 값들을 사용하여 K+1 범위들로 분류될 수도 있다. 각 범위에 대해, 특정 QpAdj 값이 존재하고, 여기서, 범위가 증가함에 따라 QpAdj 값은 증가한다. 그렇지 않고, diffBits <=0 인 경우에, diffBits 의 절대 값은 J 개의 임계 값들을 사용하여 J+1 범위들로 분류될 수 있다. 또한, 각각의 범위에 대해, 범위가 증가함에 따라 증가하는 특정 QpAdj 값이 존재한다.
- 하나의 예에서, diffBits >= 0 일 때, diffBitsK 개의 임계 값들을 사용하여 K+1 범위들로 분류될 수도 있다. 각 범위에 대해, 특정 QpAdj 값이 존재하고, 여기서, 범위가 증가함에 따라 QpAdj 값은 증가한다. 그렇지 않고, diffBits <0 인 경우에, diffBits 의 절대 값은 J 개의 임계 값들을 사용하여 J+1 범위들로 분류될 수 있다. 또한, 각각의 범위에 대해, 범위가 증가함에 따라 증가하는 특정 QpAdj 값이 존재할 수도 있다.
- 하나의 예에서, diffBits <= 0 또는 diffBits < 0 일 때, diffBits 는 J 개의 임계 값들을 사용하여 J+1 범위들로 분류될 수 있다. 또한, 각각의 범위에 대해, 범위가 감소함에 따라 감소하는 특정 QpAdj 값이 존재한다. 이 경우에, QpAdj 는 음의 값들을 취할 수도 있음에 유의한다.
- 하나의 예에서, diffBits > 0 및 diffBits < = 0 일 때, 임계 값들의 수는 동일 (K=J) 하지만, 개별 값들은 동일할 수도 있고 또는 동일하지 않을 수도 있다.
- 하나의 예에서, diffBits >= 0 및 diffBits < 0 일 때, 임계 값들의 수는 동일 (K=J) 하지만, 개별 값들은 동일할 수도 있고 또는 동일하지 않을 수도 있다.
- 하나의 예에서, K 개의 임계 값들이 diffBits > 0 및 diffBits < = 0 양 경우들에 대해 동일할 때에도, 각 범위에 대한 연관된 QpAdj 값은 diffBits > 0 및 diffBits > = 0 에 대해 동일할 수도 있고 또는 동일하지 않을 수도 있다.
Figure pct00005
하나의 예에서, K 개의 임계 값들이 diffBits >= 0 및 diffBits < 0 양 경우들에 대해 동일할 때에도, 각 범위에 대한 연관된 QpAdj 값은 diffBits >= 0 및 diffBits > 0 에 대해 동일할 수도 있고 또는 동일하지 않을 수도 있다.
4. 현재 블록에 대한 QP 값 결정
현재 블록에 대한 QP 값 (currQP) 은 단계 2 에서의 diffBits, 단계 3 에서 계산된 QpAdj, 이전 블록을 코딩하기 위해 사용된 동일 모드에 대응하는 이전 블록을 인코딩하기 위해 사용된 QP 값 (prevQP) 에 기초하여 결정될 수도 있다. 보다 정확하게는, currQP 를 계산하기 위해 다음의 식이 사용된다:
currQP = prevQP + QPAdj * ( diffBits > 0 ? 1 : -1)
Figure pct00006
하나의 예에서, currQP = prevQP + QPAdj.
Figure pct00007
하나의 실시형태에서, 단일 QP 가 도출되고 이전 블록의 코딩 모드에 관계없이 모든 코딩 모드들에 대해 사용될 때, 이전 블록을 인코딩하기 위해 사용된 QP 값 (prevQP) 이 currQP 의 계산을 위해 사용된다.
5. 버퍼 충만도에 기초하여 현재 블록에 대한 QP 값 조정
BF 에 의존하여, 버퍼 에러를 회피하기 위해 currQP 가 추가적으로 조정될 수 있다. 보다 구체적으로, currQP 는, 추가적으로 BF 가 어떤 임계치를 초과할 때 증분될 수도 있고; 이것은 버퍼 오버플로우를 방지할 수도 있다. 유사하게, currQP 는, 추가적으로 BF 가 어떤 임계치 미만일 때 감분될 수도 있고; 이것은 버퍼 언더플로우를 방지할 수도 있다.
Figure pct00008
하나의 구현에서, 단일 임계 값을 사용하기 보다는, 다수의 임계 값들이 사용될 수도 있다. 각각의 임계 값에 대해, currQP 를 조정하는 연관된 값이 존재한다. 예를 들어, [P 1 , P 2 , ... P n ] 이 n 개의 임계 값들이고 [p1, p2, ... pn] 이 각각의 조정 값들이라고 하며, 양자가 단조적으로 감소하는 순서로 표현된다고 가정하자. currQP 는 다음과 같이 조정될 수도 있다:
If(버퍼 충만도 >= P 1 )
currQP += p1;
else if(버퍼 충만도 >= P 2 )
currQP += p2;
...
else if(버퍼 충만도 >= P n )
currQP += pn;
- 하나의 실시형태에서, 2 개의 임계치들 P1 및 P2, 및 각각의 조정 값들 p1 및 p2 이 사용될 수 있다.
- 하나의 구현에서, 상기 조건들에서 크거나 동일 (>=) 은 더 큰 (>) 으로 대체될 수도 있다.
Figure pct00009
유사하게, [Q 1 , Q 2 ,... Q m ] 는 m 개의 임계 값들이고 [q1, q2, ... qm] 는 각각의 조정 값들이다. 양자가 단조적으로 증가하는 순서에 있다고 가정한다.
currQP 는 다음과 같이 조정될 수도 있다:
If(버퍼 충만도 <= Q 1 )
currQP -= q1;
else if(버퍼 충만도 <= Q 2 )
currQP -= q2;
...
else if(버퍼 충만도 <= Q m )
currQP -= qm;
- 하나의 실시형태에서, 2 개의 임계치들 Q1 및 Q2, 및 각각의 조정 값들 q1 및 q2 이 사용될 수 있다.
- 하나의 구현에서, 상기 조건들에서 보다 적거나 동일 (<=) 은 보다 적은 (<) 으로 대체될 수도 있다.
Figure pct00010
하나의 예에서, m 은 n 과 동일하다.
Figure pct00011
하나의 예에서, m = n 일 때, [Q 1 , Q 2 , ... Q m ] = [100-P 1 , 100-P 2 , ... 100-P n ]
Figure pct00012
하나의 예에서, m=n 일 때, qi 는, 1 에서부터 n 까지의 값들을 취하는 모든 i 에 대해, pi 와 동일할 수도 있고 또는 동일하지 않을 수도 있다.
BF 계산에 대한 선택된 접근법은 상황 및 용도에 따라 변화할 수도 있음에 유의한다.
편평도 검출 및 QP 결정
하나의 실시형태에서, 상기 단계들 1-4 는, 편평도 검출 알고리즘이 비디오 데이터의 "복잡한 (complex)" 영역으로부터 비디오 데이터의 "편평한 (flat)" 영역으로의 천이를 검출하는 경우에, 생략될 수도 있다. 이러한 경우들에서, currQP 는 낮은 값으로 설정될 수도 있다.
BF 에 의존하여, currQP 는, 예를 들어, 단계 5 에 대해 상기 설명된 바와 같이 조정될 수도 있다. 보다 정확하게는, 버퍼 충만도가 일부 임계치를 초과할 때, currQP 는 증가될 수도 있다.
6. 편평한 현재 블록의 QP 값 조정
현재 블록에서의 시각적 정보가 "매우 편평한" (예컨대, 높은 레벨 또는 정도의 편평도를 갖는) 경우에, currQP 는 더 조정될 수 있다. 현재 블록의 복잡도 (complexity) 값 (Ccur) 을 계산하기 위한 선택된 접근법은 상황 및 용도에 따라 변화할 수도 있다. Ccur 이 임계치보다 더 작거나 그 이하인 경우에, currQP 는 편평한 블록들에 대한 미리결정된 QP 값, 예컨대, flatQp 와 동일하게 설정될 수도 있다.
Figure pct00013
하나의 예에서, 단일 임계치 대신에, 다수 (예컨대, L) 임계 값들, 예컨대, 단조 증가 순서로 배열되는 [T1, T2, ... TL] 이 사용될 수도 있다. 또한, 각각의 임계치에 대해, 연관된 QP 값, 단조 증가 순서로 배열될 수도 있는 [flatQp1, flatQp2, ..., flatQpL] 이 존재할 수도 있다. 예를 들어, 이하의 단계들은 Ccur 에 기초하여 flatQp 의 값을 결정하기 위해 사용될 수도 있다:
If(Ccur <= T1 )
flatQp = flatQP1;
else if (If(Ccur <= T2 )
flatQp = flatQP2;
...
else if (If(Ccur <= TL )
flatQp = flatQPL;
- 하나의 실시형태에서, 2 개의 임계치들 T1 및 T2, 및 각각의 연관된 QP 값들 flatQP1 및 flatQP2 이 사용될 수 있다.
Figure pct00014
하나의 예에서, 상기 조건적 체크들에서 보다 적거나 동일 (<=) 대신에, 보다 적은 (<) 이 사용될 수도 있다.
Figure pct00015
currQPflatQp 와 동일하도록 설정될 수도 있음에 유의한다. 하나의 대안에서, currQP 는 다음에 따라 결정될 수도 있다: currQP = ( currQP > flatQp) ? flatQp: currQP.
Figure pct00016
하나의 예에서, flatQp 및/또는 [flatQp1, flatQp2, ..., flatQpL] 는 슬라이스에서의 라인들의 나머지에 대해 비교될 때 슬라이스에서의 제 1 라인에 대해 다를 수도 있다. 이것은 주로 슬라이스에서의 제 1 라인의 품질을 향상시키기 위한 것이다. 또한, 주어진 임계치에 대해, 슬라이스에서의 제 1 라인에 대한 flatQp 및/또는 [flatQp1, flatQp2, ..., flatQpL] 는 슬라이스의 라인들의 나머지보다 더 작을 수도 있다.
Figure pct00017
하나의 예에서, [T1, T2, ... TL] 은 슬라이스에서의 라인들의 나머지에 대해 비교될 때 슬라이스에서의 제 1 라인에 대해 다를 수도 있다.
이용가능한 비트 버짓이 낮을 때 OP 결정
매우 적은 비트들이 남겨질 때, QP 는 높은 값, 예를 들어, 미리결정된 높은 값으로 설정될 수 있다. 하나의 구현에서, 조건 (numSliceBitsRemaining < thresholdBits && bppRemaining < targetBpp) 이 참일 때, 상기 단계들 1-4 는 생략될 수도 있고, QP 는 매우 높은 값으로 설정될 수도 있다. 여기서, thresholdBits 는 구성가능한 (configurable) 파라미터일 수도 있는 변수이고, targetBpp 는 픽셀 당 타겟 비트들이고 bppRemainingbppRemaining = numSliceBitsRemaining / numSlicePixelsRemaining 로서 계산된다.
Figure pct00018
하나의 예에서, QP 는 최대 허용된 값과 동일하게 설정될 수도 있다.
DSC 에서 QP 를 결정하는 방법
도 3 은 본 개시의 실시형태에 따른 비디오 데이터를 코딩하는 프로세스 (300) 을 예시하는 플로우차트이다. 방법은 QP 를 선택하는 것에 관한 것이다. 프로세스 (300) 의 블록들은 비디오 인코더 (예를 들어, 도 2a 에서의 비디오 인코더 (20)), 비디오 디코더 (예를 들어, 도 2b 에서의 비디오 디코더 (30)), 또는 이들의 조합(들) 에 의해 수행될 수도 있다. 예시의 목적을 위해, 프로세스 (300) 는, 비디오 인코더 (20), 비디오 디코더 (30), 또는 다른 컴포넌트일 수도 있는 비디오 코더 (간단히 코더라고도 한다) 에 의해 수행되는 것으로 설명된다. 도 3 을 참조하여 설명된 모든 실시형태들은 따로, 또는 서로 조합하여 구현될 수도 있다. 프로세스 (300) 에 관한 어떤 상세들이 위에 설명되어 있다.
프로세스는 블록 (301) 에서 시작된다. 코더는 비디오 데이터를 저장하기 위한 메모리를 포함할 수 있다. 메모리는 버퍼를 포함할 수 있다. 블록 (302) 에서, 코더는, 예를 들어, DSC 를 통해서 코딩될 비디오 데이터를 수신한다.
블록 303 에서, 코더는, 비디오 데이터의 콘텐츠의 유형 및 콘텐츠의 유형과 연관된 레이트-왜곡 모델을 고려함이 없이 비디오 데이터의 현재 블록의 QP 를 결정한다. 비디오 데이터의 콘텐츠의 유형은 자연적 콘텐츠 (natural content), 합성 콘텐츠 (synthetic content), 컴퓨터 그래픽스 (computer graphics), 프랙털 (fractals) 등 중 하나 이상을 포함할 수도 있다.
하나의 실시형태에서, 코더는, (1) 현재 블록에 대한 비트 버짓과 이전 블록을 인코딩하기 위해 사용된 비트들의 수 사이의 차이, 및 (2) 현재 블록에 대한 비트 버짓과 이전 블록을 인코딩하기 위한 비트들의 수 사이의 차이의 함수인 QP 를 조정하기 위한 제 1 값에 적어도 부분적으로 기초하여 QP 를 결정한다. 예를 들어, 현재 블록에 대한 비트 버짓과 이전 블록을 인코딩하기 위한 비트들의 수 사이의 차이는 diffBits 를 지칭할 수 있고, (2) 현재 블록에 대한 비트 버짓과 이전 블록을 인코딩하기 위한 비트들의 수 사이의 차이의 함수인 QP 를 조정하기 위한 제 1 값은 QPAdj 를 지칭할 수 있다. 하나의 실시형태에서, 현재 블록은 슬라이스에 포함되고, 현재 블록에 대한 비트 버짓은 식: (슬라이스에 대한 남은 비트들의 수 / 슬라이스에서 코딩될 픽셀들의 수) * 현재 블록에서의 픽셀들의 수 에 따라 결정된다. 코더는, 식: 이전 블록의 QP + 제 1 값 * (현재 블록에 대한 비트 버짓과 이전 블록을 인코딩하기 위해 사용된 비트들의 수 사이의 차이 > 0 ? 1:-1) 에 따라 QP 를 결정할 수도 있다.
특정 실시형태들에서, 코더는 2 개 이상의 임계 값들에 의해 정의된 복수의 범위들을 정의한다. 복수의 범위들의 각각은 미리결정된 값과 연관된다. 코더는, 그 복수의 범위들 중 어느 것이 현재 블록에 대한 비트 버짓과 이전 블록을 인코딩하기 위한 비트들의 수 사이의 차이를 포함하는지를 결정한다. 코더는 결정된 범위와 연관된 미리결정된 값으로 제 1 값을 설정한다. 예를 들어, 2 개 이상의 임계 값들 및 복수의 범위들은 상기 K 개의 임계 값들 또는 K+1 범위들을 지칭할 수 있고, 각 범위는 QPAdj 와 연관될 수도 있다.
일부 실시형태들에서, 코더는 버퍼의 충만도 또는 버퍼 충만도를 결정한다. 버퍼 충만도는 BF 를 지칭할 수 있다. 하나의 실시형태에서, 버퍼의 충만도가 하나 이상의 임계 값들보다 더 크거나 동일하다는 결정에 응답하여, 코더는 그 하나 이상의 임계치들과 연관된 제 2 값에 의해 그 결정된 QP 를 조정한다. 다른 실시형태에서, 버퍼의 충만도가 하나 이상의 임계 값들보다 더 적거나 동일하다는 결정에 응답하여, 코더는 그 하나 이상의 임계치들과 연관된 제 2 값에 의해 그 결정된 QP 를 조정한다.
특정 실시형태들에서, 코더는 현재 블록의 편평도를 결정한다. 현재 블록의 편평도가 하나 이상의 임계 값들보다 더 크거나 동일하다는 결정에 응답하여, 하나 이상의 임계치들과 연관된 QP 값과 동일한 QP 를 설정한다. 하나 이상의 임계치들과 연관된 QP 값은 flatQP 를 지칭할 수도 있다.
블록 304 에서, 코더는 결정된 QP 를 사용하여 비트스트림에서 현재 블록을 코딩한다. 코더는 일정한 비트 레이트 (constant bit rate) 를 이용하여 비디오 데이터를 코딩할 수도 있다.
프로세스 (300) 는 블록 (305) 에서 종료된다. 블록들은, 실시형태들에 따라, 프로세스 (300) 에서 추가 및/또는 생략될 수도 있고, 프로세스 (300) 의 블록들은 실시형태들에 따라, 상이한 순서에서 수행될 수도 있다.
본 개시에서 설명된 임의의 특징 및/또는 실시형태들은 따로 또는 조합하여 구현될 수도 있다. 예를 들어, 도 1 내지 도 2 및 본 개시의 다른 부분들과 관련하여 설명된 임의의 특징 및/또는 실시형태는 도 3과 관련하여 설명된 임의의 특징 및/또는 실시형태와의 임의의 조합에서 구현될 수도 있고, 그 역 또한 마찬가지이다. 본 개시의 실시형태들은 도 3에 도시된 예에 의해 또는 이것으로 한정되지 않고, 다른 변형들이 본 개시의 사상으로부터 벗어남이 없이 구현될 수도 있다.
기타 고려사항들
여기에 개시된 정보 및 신호들은 임의의 다양한 상이한 기술 및 기법을 이용하여 표현될 수도 있다. 예를 들어, 위의 설명 전체에 걸쳐 언급될 수도 있는 데이터, 명령, 커맨드, 정보, 신호, 비트, 심볼, 및 칩은 전압, 전류, 전자기파, 자기장 또는 자기입자, 광학장 (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 (digital signal processor), 범용 마이크로프로세서, ASIC (application specific integrated circuit), FPGA (field programmable logic array), 또는 다른 등가 집적 또는 이산 로직 회로를 포함할 수도 있다. 그러한 프로세서는 본 개시에 기재된 기법들 중의 어느 것을 수행하도록 구성될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 다르게는, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 또한, 프로세서는 컴퓨팅 디바이스들의 조합, 예를 들어, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서, DSP 코어와 결합한 하나 이상의 마이크로프로세서, 또는 임의의 다른 이러한 구성으로서 구현될 수도 있다. 따라서, 본원에 사용된 용어 "프로세서" 는 임의의 전술한 구조, 전술한 구조의 임의의 조합, 또는 본원에 설명된 기술들의 구현에 적합한 임의의 다른 구조 또는 장치를 지칭할 수도 있다. 추가로, 일부 양태들에서, 여기서 설명된 기능은 인코딩 및 디코딩을 위해 구성된 전용 소프트웨어 또는 하드웨어 내에 제공되거나 또는 결합된 비디오 인코더-디코더 (코덱) 에 포함될 수도 있다. 또한, 그 기법들은 하나 이상의 회로 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
본 개시의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC 들의 세트 (예를 들면, 칩 세트) 를 포함하여, 광범위하게 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들,또는 유닛들이, 개시된 기술들을 수행하도록 구성된 디바이스들의 기능적인 양태들을 강조하기 위하여 본 개시에 설명되었지만, 다른 하드웨어 유닛들에 의한 실현을 반드시 필요로 하는 것은 아니다. 오히려, 상술된 바처럼, 다양한 유닛들이 코덱 하드웨어 유닛에 결합될 수도 있거나, 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상술된 하나 이상의 프로세서들을 포함하는 연동적인 (interoperative) 하드웨어 유닛들의 집합에 의해 제공될 수도 있다.
이상에서 다양한 상이한 실시형태들과 관련하여 설명되었지만, 하나의 실시형태로부터 특징들 또는 엘리먼트들은 본 개시의 교시로부터 벗어나지 않으면서 다른 실시형태들과 조합될 수도 있다. 하지만, 각각의 실시형태들 사이의 특징들의 조합들이 그에 반드시 한정되는 것은 아니다. 개시물의 다양한 실시형태들이 설명되었다. 이들 및 다른 실시형태들은 다음의 청구항들의 범위 내에 있다.

Claims (30)

  1. 비디오 데이터를 코딩하기 위한 장치로서,
    상기 비디오 데이터를 저장하기 위한 메모리로서, 상기 메모리는 버퍼를 포함하는, 상기 메모리; 및
    상기 메모리에 동작적으로 커플링된 하드웨어 프로세서를 포함하고,
    상기 하드웨어 프로세서는,
    코딩될 상기 비디오 데이터를 수신하고;
    상기 비디오 데이터의 콘텐츠의 유형 및 상기 콘텐츠의 유형과 연관된 레이트-왜곡 모델을 고려하지 않고 상기 비디오 데이터의 현재 블록의 양자화 파라미터 (QP) 를 결정하며; 그리고
    결정된 상기 QP 를 사용하여 비트스트림에서 상기 현재 블록을 코딩하도록 구성되는, 비디오 데이터를 코딩하기 위한 장치.
  2. 제 1 항에 있어서,
    상기 프로세서는 또한, (1) 상기 현재 블록에 대한 비트 버짓 (budget) 과 이전 블록을 인코딩하기 위해 사용된 비트들의 수 사이의 차이, 및 (2) 상기 현재 블록에 대한 상기 비트 버짓과 상기 이전 블록을 인코딩하기 위해 사용된 상기 비트들의 수 사이의 상기 차이의 함수인 상기 QP 를 조정하기 위한 제 1 값에 적어도 부분적으로 기초하여 상기 QP 를 결정하도록 구성되는, 비디오 데이터를 코딩하기 위한 장치.
  3. 제 2 항에 있어서,
    상기 현재 블록은 슬라이스에 포함되고, 상기 현재 블록에 대한 상기 비트 버짓은 식: (상기 슬라이스에 대한 남은 비트들의 수/상기 슬라이스에서 코딩될 픽셀들의 수) * 상기 현재 블록에서의 픽셀들의 수 에 따라 결정되는, 비디오 데이터를 코딩하기 위한 장치.
  4. 제 2 항에 있어서,
    상기 프로세서는, 식: 상기 이전 블록의 QP + 상기 제 1 값 * (상기 현재 블록에 대한 상기 비트 버짓과 상기 이전 블록을 인코딩하기 위한 상기 비트들의 수 사이의 상기 차이 > 0 ? 1:-1) 에 따라 상기 QP 를 결정하도록 구성되는, 비디오 데이터를 코딩하기 위한 장치.
  5. 제 2 항에 있어서,
    상기 프로세서는 또한,
    2 개 이상의 임계 값들에 의해 정의된 복수의 범위들을 정의하는 것으로서, 상기 복수의 범위들의 각각은 미리결정된 값과 연관되는, 상기 복수의 범위들을 정의하는 것을 행하고;
    상기 복수의 범위들 중 어느 것이 상기 현재 블록에 대한 상기 비트 버짓과 상기 이전 블록을 인코딩하기 위한 상기 비트들의 수 사이의 상기 차이를 포함하는지를 결정하며; 그리고
    결정된 상기 범위와 연관된 상기 미리결정된 값으로 상기 제 1 값을 설정하도록 구성되는, 비디오 데이터를 코딩하기 위한 장치.
  6. 제 1 항에 있어서,
    상기 프로세서는 또한,
    상기 버퍼의 충만도 (fullness) 를 결정하고; 그리고
    상기 버퍼의 충만도가 하나 이상의 임계 값들보다 더 크거나 동일하다는 결정에 응답하여, 상기 하나 이상의 임계치들과 연관된 제 2 값에 의해 상기 결정된 QP 를 조정하도록 구성되는, 비디오 데이터를 코딩하기 위한 장치.
  7. 제 1 항에 있어서,
    상기 프로세서는 또한,
    상기 버퍼의 충만도를 결정하고; 그리고
    상기 버퍼의 상기 충만도가 하나 이상의 임계 값들보다 더 적거나 동일하다는 결정에 응답하여, 상기 하나 이상의 임계치들과 연관된 제 2 값에 의해 상기 결정된 QP 를 조정하도록 구성되는, 비디오 데이터를 코딩하기 위한 장치.
  8. 제 1 항에 있어서,
    상기 프로세서는 또한,
    상기 현재 블록의 편평도를 결정하고; 그리고
    상기 현재 블록의 상기 편평도가 하나 이상의 임계 값들보다 더 크거나 동일하다는 결정에 응답하여, 상기 하나 이상의 임계치들과 연관된 QP 값과 동일하게 상기 QP 를 설정하도록 구성되는, 비디오 데이터를 코딩하기 위한 장치.
  9. 제 1 항에 있어서,
    상기 프로세서는 또한, 일정한 비트 레이트를 이용하여 상기 비디오 데이터를 코딩하도록 구성되는, 비디오 데이터를 코딩하기 위한 장치.
  10. 제 1 항에 있어서,
    상기 비디오 데이터의 상기 콘텐츠의 유형은 자연적 콘텐츠, 합성 콘텐츠, 컴퓨터 그래픽스, 또는 프랙털 (fractals) 중 하나를 포함하는, 비디오 데이터를 코딩하기 위한 장치.
  11. 비디오 데이터를 코딩하는 방법으로서,
    버퍼를 포함하는 메모리에 상기 비디오 데이터를 저장하는 단계;
    코딩될 상기 비디오 데이터를 수신하는 단계;
    상기 비디오 데이터의 콘텐츠의 유형 및 상기 콘텐츠의 유형과 연관된 레이트-왜곡 모델을 고려하지 않고 상기 비디오 데이터의 현재 블록의 양자화 파라미터 (QP) 를 결정하는 단계; 및
    결정된 상기 QP 를 사용하여 비트스트림에서 상기 현재 블록을 코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  12. 제 11 항에 있어서,
    상기 QP 는, (1) 상기 현재 블록에 대한 비트 버짓 (budget) 과 이전 블록을 인코딩하기 위해 사용된 비트들의 수 사이의 차이, 및 (2) 상기 현재 블록에 대한 상기 비트 버짓과 상기 이전 블록을 인코딩하기 위해 사용된 상기 비트들의 수 사이의 상기 차이의 함수인 상기 QP 를 조정하기 위한 제 1 값에 적어도 부분적으로 기초하여 결정되는, 비디오 데이터를 코딩하는 방법.
  13. 제 12 항에 있어서,
    상기 현재 블록은 슬라이스에 포함되고, 상기 현재 블록에 대한 상기 비트 버짓은 식: (상기 슬라이스에 대한 남은 비트들의 수/상기 슬라이스에서 코딩될 픽셀들의 수) * 상기 현재 블록에서의 픽셀들의 수 에 따라 결정되는, 비디오 데이터를 코딩하는 방법.
  14. 제 12 항에 있어서,
    상기 QP 는, 식: 상기 이전 블록의 QP + 상기 제 1 값 * (상기 현재 블록에 대한 상기 비트 버짓과 상기 이전 블록을 인코딩하기 위한 상기 비트들의 수 사이의 상기 차이 > 0 ? 1:-1) 에 따라 결정되는, 비디오 데이터를 코딩하는 방법.
  15. 제 12 항에 있어서,
    2 개 이상의 임계 값들에 의해 정의된 복수의 범위들을 정의하는 단계로서, 상기 복수의 범위들의 각각은 미리결정된 값과 연관되는, 상기 복수의 범위들을 정의하는 단계;
    상기 복수의 범위들 중 어느 것이 상기 현재 블록에 대한 상기 비트 버짓과 상기 이전 블록을 인코딩하기 위한 상기 비트들의 수 사이의 상기 차이를 포함하는지를 결정하는 단계; 및
    결정된 상기 범위와 연관된 상기 미리결정된 값으로 상기 제 1 값을 설정하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법.
  16. 제 11 항에 있어서,
    상기 버퍼의 충만도 (fullness) 를 결정하는 단계; 및
    상기 버퍼의 충만도가 하나 이상의 임계 값들보다 더 크거나 동일하다는 결정에 응답하여, 상기 하나 이상의 임계치들과 연관된 제 2 값에 의해 상기 결정된 QP 를 조정하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법.
  17. 제 11 항에 있어서,
    상기 버퍼의 충만도를 결정하는 단계; 및
    상기 버퍼의 상기 충만도가 하나 이상의 임계 값들보다 더 적거나 동일하다는 결정에 응답하여, 상기 하나 이상의 임계치들과 연관된 제 2 값에 의해 상기 결정된 QP 를 조정하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법.
  18. 제 11 항에 있어서,
    상기 현재 블록의 편평도를 결정하는 단계; 및
    상기 현재 블록의 상기 편평도가 하나 이상의 임계 값들보다 더 크거나 동일하다는 결정에 응답하여, 상기 하나 이상의 임계치들과 연관된 QP 값과 동일하게 상기 QP 를 설정하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법.
  19. 제 11 항에 있어서,
    일정한 비트 레이트를 이용하여 상기 비디오 데이터를 코딩하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법.
  20. 제 11 항에 있어서,
    상기 비디오 데이터의 상기 콘텐츠의 유형은 자연적 콘텐츠, 합성 콘텐츠, 컴퓨터 그래픽스, 또는 프랙털 (fractals) 중 하나를 포함하는, 비디오 데이터를 코딩하는 방법.
  21. 명령들을 포함하는 비일시적 컴퓨터 판독가능 매체로서,
    상기 명령들은, 컴퓨터 하드웨어를 포함하는 프로세서 상에서 실행될 때 상기 프로세서로 하여금,
    버퍼를 포함하는 메모리에 비디오 데이터를 저장하게 하고;
    코딩될 상기 비디오 데이터를 수신하게 하고;
    상기 비디오 데이터의 콘텐츠의 유형 및 상기 콘텐츠의 유형과 연관된 레이트-왜곡 모델을 고려하지 않고 상기 비디오 데이터의 현재 블록의 양자화 파라미터 (QP) 를 결정하게 하며; 그리고
    결정된 상기 QP 를 사용하여 비트스트림에서 상기 현재 블록을 코딩하게 하는, 비일시적 컴퓨터 판독가능 매체.
  22. 제 21 항에 있어서,
    상기 명령들은 또한 상기 프로세서로 하여금, (1) 상기 현재 블록에 대한 비트 버짓 (budget) 과 이전 블록을 인코딩하기 위해 사용된 비트들의 수 사이의 차이, 및 (2) 상기 현재 블록에 대한 상기 비트 버짓과 상기 이전 블록을 인코딩하기 위해 사용된 상기 비트들의 수 사이의 상기 차이의 함수인 상기 QP 를 조정하기 위한 제 1 값에 적어도 부분적으로 기초하여 상기 QP 를 결정하게 하는, 비일시적 컴퓨터 판독가능 매체.
  23. 제 22 항에 있어서,
    상기 명령들은 또한 상기 프로세서로 하여금, 식: 상기 이전 블록의 QP + 상기 제 1 값 * (상기 현재 블록에 대한 상기 비트 버짓과 상기 이전 블록을 인코딩하기 위한 상기 비트들의 수 사이의 상기 차이 > 0 ? 1:-1) 에 따라 상기 QP 를 결정하게 하는, 비일시적 컴퓨터 판독가능 매체.
  24. 제 22 항에 있어서,
    상기 명령들은 또한 상기 프로세서로 하여금,
    2 개 이상의 임계 값들에 의해 정의된 복수의 범위들을 정의하는 것으로서, 상기 복수의 범위들의 각각은 미리결정된 값과 연관되는, 상기 복수의 범위들을 정의하는 것을 행하게 하고;
    상기 복수의 범위들 중 어느 것이 상기 현재 블록에 대한 상기 비트 버짓과 상기 이전 블록을 인코딩하기 위한 상기 비트들의 수 사이의 상기 차이를 포함하는지를 결정하게 하며; 그리고
    결정된 상기 범위와 연관된 상기 미리결정된 값으로 상기 제 1 값을 설정하게 하는, 비일시적 컴퓨터 판독가능 매체.
  25. 제 21 항에 있어서,
    상기 비디오 데이터의 상기 콘텐츠의 유형은 자연적 콘텐츠, 합성 콘텐츠, 컴퓨터 그래픽스, 또는 프랙털 (fractals) 중 하나를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  26. 비디오 정보를 코딩하기 위한 장치로서,
    버퍼를 포함하는 메모리에 비디오 데이터를 저장하는 수단;
    코딩될 상기 비디오 데이터를 수신하는 수단;
    상기 비디오 데이터의 콘텐츠의 유형 및 상기 콘텐츠의 유형과 연관된 레이트-왜곡 모델을 고려하지 않고 상기 비디오 데이터의 현재 블록의 양자화 파라미터 (QP) 를 결정하는 수단; 및
    결정된 상기 QP 를 사용하여 비트스트림에서 상기 현재 블록을 코딩하는 수단을 포함하는, 비디오 정보를 코딩하기 위한 장치.
  27. 제 26 항에 있어서,
    상기 QP 를 결절하는 수단은,
    (1) 상기 현재 블록에 대한 비트 버짓 (budget) 과 이전 블록을 인코딩하기 위해 사용된 비트들의 수 사이의 차이, 및 (2) 상기 현재 블록에 대한 상기 비트 버짓과 상기 이전 블록을 인코딩하기 위해 사용된 상기 비트들의 수 사이의 상기 차이의 함수인 상기 QP 를 조정하기 위한 제 1 값에 적어도 부분적으로 기초하여 상기 QP 를 결정하도록 더 구성되는, 비디오 정보를 코딩하기 위한 장치.
  28. 제 27 항에 있어서,
    상기 QP 를 결절하는 수단은, 식: 상기 이전 블록의 QP + 상기 제 1 값 * (상기 현재 블록에 대한 상기 비트 버짓과 상기 이전 블록을 인코딩하기 위한 상기 비트들의 수 사이의 상기 차이 > 0 ? 1:-1) 에 따라 상기 QP 를 결정하도록 더 구성되는, 비디오 정보를 코딩하기 위한 장치.
  29. 제 27 항에 있어서,
    상기 QP 를 결절하는 수단은,
    2 개 이상의 임계 값들에 의해 정의된 복수의 범위들을 정의하는 것으로서, 상기 복수의 범위들의 각각은 미리결정된 값과 연관되는, 상기 복수의 범위들을 정의하는 것을 행하고;
    상기 복수의 범위들 중 어느 것이 상기 현재 블록에 대한 상기 비트 버짓과 상기 이전 블록을 인코딩하기 위한 상기 비트들의 수 사이의 상기 차이를 포함하는지를 결정하며; 그리고
    결정된 상기 범위와 연관된 상기 미리결정된 값으로 상기 제 1 값을 설정하도록 더 구성되는, 비디오 정보를 코딩하기 위한 장치.
  30. 제 26 항에 있어서,
    상기 비디오 데이터의 상기 콘텐츠의 유형은 자연적 콘텐츠, 합성 콘텐츠, 컴퓨터 그래픽스, 또는 프랙털 (fractals) 중 하나를 포함하는, 비디오 정보를 코딩하기 위한 장치.
KR1020167031303A 2014-04-15 2015-04-14 디스플레이 스트림 압축 (dsc) 에서 양자화 파라미터 (qp) 를 선택하기 위한 시스템 및 방법 KR101941760B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201461979868P 2014-04-15 2014-04-15
US61/979,868 2014-04-15
US201462034680P 2014-08-07 2014-08-07
US62/034,680 2014-08-07
US14/685,430 US9848193B2 (en) 2014-04-15 2015-04-13 System and method for selecting quantization parameter (QP) in display stream compression (DSC)
US14/685,430 2015-04-13
PCT/US2015/025742 WO2015160801A2 (en) 2014-04-15 2015-04-14 System and method for selecting quantization parameter (qp) in display stream compression (dsc)

Publications (2)

Publication Number Publication Date
KR20160145088A true KR20160145088A (ko) 2016-12-19
KR101941760B1 KR101941760B1 (ko) 2019-01-23

Family

ID=54266171

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167031303A KR101941760B1 (ko) 2014-04-15 2015-04-14 디스플레이 스트림 압축 (dsc) 에서 양자화 파라미터 (qp) 를 선택하기 위한 시스템 및 방법

Country Status (8)

Country Link
US (1) US9848193B2 (ko)
EP (1) EP3132602B1 (ko)
JP (1) JP6449329B2 (ko)
KR (1) KR101941760B1 (ko)
CN (1) CN106165418B (ko)
BR (1) BR112016024218A8 (ko)
MX (1) MX358538B (ko)
WO (1) WO2015160801A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210077771A (ko) * 2018-10-31 2021-06-25 에이티아이 테크놀로지스 유엘씨 콘텐츠 적응적 양자화 강도 및 비트 레이트 모델링

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10432952B2 (en) * 2015-11-19 2019-10-01 Qualcomm Incorporated System and methods for fixed-point approximations in display stream compression (DSC)
US10574988B2 (en) * 2015-11-19 2020-02-25 Qualcomm Incorporated System and methods for reducing slice boundary visual artifacts in display stream compression (DSC)
US10368073B2 (en) * 2015-12-07 2019-07-30 Qualcomm Incorporated Multi-region search range for block prediction mode for display stream compression (DSC)
US10555002B2 (en) * 2016-01-21 2020-02-04 Intel Corporation Long term reference picture coding
US20170280139A1 (en) 2016-03-22 2017-09-28 Qualcomm Incorporated Apparatus and methods for adaptive calculation of quantization parameters in display stream compression
US10432936B2 (en) 2016-04-14 2019-10-01 Qualcomm Incorporated Apparatus and methods for perceptual quantization parameter (QP) weighting for display stream compression
US10855989B2 (en) * 2016-06-09 2020-12-01 Qualcomm Incorporated Substream multiplexing for display stream compression
WO2018068239A1 (zh) * 2016-10-12 2018-04-19 深圳市大疆创新科技有限公司 码率控制的方法、计算机系统和装置
CN109429069B (zh) * 2017-08-23 2021-08-24 珠海全志科技股份有限公司 一种显示流压缩编码器以及显示引擎
US11546617B2 (en) 2020-06-30 2023-01-03 At&T Mobility Ii Llc Separation of graphics from natural video in streaming video content

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05328329A (ja) * 1992-05-21 1993-12-10 Sony Corp 画像符号器
JP2011071778A (ja) * 2009-09-25 2011-04-07 Mega Chips Corp 画像処理装置
US20140092957A1 (en) * 2012-10-03 2014-04-03 Broadcom Corporation 2D Block Image Encoding

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002051221A (ja) * 2000-08-01 2002-02-15 Canon Inc 画像符号化装置、画像復号化装置、システム、及びその方法並びに記憶媒体
US6831947B2 (en) * 2001-03-23 2004-12-14 Sharp Laboratories Of America, Inc. Adaptive quantization based on bit rate prediction and prediction error energy
WO2008070987A1 (en) 2006-12-12 2008-06-19 Vantrix Corporation An improved video rate control for video coding standards
WO2008111454A1 (ja) * 2007-03-14 2008-09-18 Nippon Telegraph And Telephone Corporation 量子化制御方法及び装置、そのプログラム並びにプログラムを記録した記録媒体
US8295344B2 (en) * 2007-10-22 2012-10-23 Broadcom Corporation Adaptive rate control for encoding of variable frame rate video sources
US8897365B2 (en) * 2008-11-19 2014-11-25 Nvidia Corporation Video rate control processor for a video encoding process
JP5197329B2 (ja) * 2008-11-28 2013-05-15 キヤノン株式会社 符号化装置及び符号化方法
JP5257215B2 (ja) * 2009-04-16 2013-08-07 ソニー株式会社 画像符号化装置と画像符号化方法
US9185424B2 (en) * 2011-07-05 2015-11-10 Qualcomm Incorporated Image data compression

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05328329A (ja) * 1992-05-21 1993-12-10 Sony Corp 画像符号器
JP2011071778A (ja) * 2009-09-25 2011-04-07 Mega Chips Corp 画像処理装置
US20140092957A1 (en) * 2012-10-03 2014-04-03 Broadcom Corporation 2D Block Image Encoding

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Walls Frederick et al., 'BDC-1: A robust algorithm for display stream compression', 2013 PCS, IEEE, 8 December 2013, pp 434-437 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210077771A (ko) * 2018-10-31 2021-06-25 에이티아이 테크놀로지스 유엘씨 콘텐츠 적응적 양자화 강도 및 비트 레이트 모델링

Also Published As

Publication number Publication date
CN106165418B (zh) 2019-07-05
CN106165418A (zh) 2016-11-23
BR112016024218A2 (pt) 2017-08-15
WO2015160801A2 (en) 2015-10-22
JP2017515378A (ja) 2017-06-08
US9848193B2 (en) 2017-12-19
EP3132602A2 (en) 2017-02-22
US20150296206A1 (en) 2015-10-15
WO2015160801A3 (en) 2016-02-25
EP3132602B1 (en) 2021-04-14
MX2016013225A (es) 2017-01-18
BR112016024218A8 (pt) 2021-07-13
JP6449329B2 (ja) 2019-01-09
MX358538B (es) 2018-08-24
KR101941760B1 (ko) 2019-01-23

Similar Documents

Publication Publication Date Title
KR101941760B1 (ko) 디스플레이 스트림 압축 (dsc) 에서 양자화 파라미터 (qp) 를 선택하기 위한 시스템 및 방법
EP3284253B1 (en) Rate-constrained fallback mode for display stream compression
KR101975093B1 (ko) 디스플레이 스트림 압축 (dsc) 을 위한 라그랑지안 파라미터 계산을 위한 시스템 및 방법
US10284849B2 (en) Quantization parameter (QP) calculation for display stream compression (DSC) based on complexity measure
US10631005B2 (en) System and method for coding in block prediction mode for display stream compression (DSC)
JP2018534875A (ja) ディスプレイストリーム圧縮(dsc)におけるスライス境界視覚アーティファクトを減らすためのシステムおよび方法
JP6464192B2 (ja) ディスプレイストリーム圧縮(dsc)のための平坦度検出のためのシステムおよび方法
US9936203B2 (en) Complex region detection for display stream compression
US20160301939A1 (en) Quantization parameter (qp) update classification for display stream compression (dsc)
US9843816B2 (en) System and method for coding in pattern mode for display stream compression (DSC)
US20170026663A1 (en) Modification to block size for transform mode in display stream compression

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant