KR101836027B1 - 일정 품질 비디오 코딩 - Google Patents

일정 품질 비디오 코딩 Download PDF

Info

Publication number
KR101836027B1
KR101836027B1 KR1020167027041A KR20167027041A KR101836027B1 KR 101836027 B1 KR101836027 B1 KR 101836027B1 KR 1020167027041 A KR1020167027041 A KR 1020167027041A KR 20167027041 A KR20167027041 A KR 20167027041A KR 101836027 B1 KR101836027 B1 KR 101836027B1
Authority
KR
South Korea
Prior art keywords
frame
quantization parameter
complexity
block
video
Prior art date
Application number
KR1020167027041A
Other languages
English (en)
Other versions
KR20160129045A (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 KR20160129045A publication Critical patent/KR20160129045A/ko
Application granted granted Critical
Publication of KR101836027B1 publication Critical patent/KR101836027B1/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/136Incoming video signal characteristics or properties
    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/172Methods 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 picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/197Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including determination of the initial value of an encoding parameter

Landscapes

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

Abstract

일정 품질 비디오 코딩에 관련된 기법이 논의된다. 그러한 기법은 비디오 시퀀스의 프레임을 위한 양자화 파라미터를 결정하는 것과, 비디오 프레임과 연관된 공간적 복잡도 또는 시간적 복잡도에 기반하여 양자화 파라미터를 수정하는 것과, 비디오 프레임의 블록을 위한 블록 레벨 양자화 파라미터를 수정된 프레임 레벨 양자화 파라미터와, 블록의 복잡도와, 비디오 프레임의 복잡도에 기반하여 생성하는 것을 포함할 수 있다.

Description

일정 품질 비디오 코딩{CONSTANT QUALITY VIDEO CODING}
우선권에 대한 주장
이 출원은, 이로써 참조에 의해 전체로서 포함되는, "CONSTANT QUALITY VIDEO CODING"라는 표제로 2014년 4월 30일 출원된 미국 특허 출원 제14/265,580호에 대한 우선권을 주장한다.
시각적 품질(visual quality)은 많은 미디어 애플리케이션에서 사용자 경험의 중요한 양상이다. 나아가, 압축(compression)/압축해제(decompression) (코덱(codec)) 시스템에서, 시각적 품질은 사용되는 압축 포맷에 주로 기반할 수 있다. 예컨대, 비디오 인코더(encoder)는 더 많은 정보가 주어진 대역폭 상에서 발신되거나 주어진 메모리 공간 내에 저장되거나 기타 등등일 수 있도록 비디오 정보를 압축한다. 압축된 신호 또는 데이터는 이후 사용자로의 디스플레이를 위해 그 신호 또는 데이터를 디코딩하거나 압축해제하는 디코더(decoder)를 통하여 이후 디코딩될 수 있다. 몇몇 구현에서, 일정한 시각적 품질이 바람직할 수 있다. 일정한 시각적 품질은, 그 이름이 암시하듯이, 비디오 프레임들 또는 비디오 프레임들의 시퀀스들에 걸쳐서 고정된 주관적 품질(fixed subjective quality)을 달성하는 것을 목표로 한다. 보통, 일정 시각적 품질 구현은 압축되고 있는 비디오의 복잡도(complexity)와 같은 인자에 따라 비트스트림(bitstream)의 다양한 부분의 크기 또는 파일 크기가 가변적일 수 있도록 가변적인 비트레이트(bitrate)를 이용할 수 있다.
하나의 접근법에서, 일정한 시각적 품질을 달성하는 데에 일정한 양자화 파라미터(Quantization Parameter: QP)가 사용된다. 예컨대, H.264/MPEG-4 고급 비디오 코딩(Advanced Video Coding: AVC) 표준 또는 고효율 비디오 코딩(High Efficiency Video Coding: HEVC) 표준 또는 유사한 것과 같은 인코딩(encoding) 기법을 통하여 획득된 변환 계수(transform coefficient)는 일정한 QP를 사용하여 양자화될 수 있다. 예컨대, 더 큰 QP 값은 덜한 품질을 대가로 더 뛰어난 압축을 제공하는 반면 더 작은 QP 값은 덜한 압축을 대가로 더 뛰어난 시각적 품질을 달성한다. 그러나, 그러한 일정 QP 접근법은 사용자에 의해 인지되는 바와 같은 일정한 시각적 품질을 온전히 제공하지 않을 수 있다. 나아가, 그러한 일정 QP 접근법은 (공간적으로 비디오 프레임들 내에서든 또는 시간적으로 비디오 프레임들에 걸쳐서든) 비디오 시퀀스의 어떤 부분을 압축하는 데에서 낭비적일 수 있다.
이와 같이, 기존의 기법은 효과적인 압축 및/또는 사용자를 위한 일정한 시각적 품질을 제공하지 않을 수 있다. 그러한 문제는 언제나 더 높은 품질로 비디오를 송신하는 것이 더 널리 퍼지게 됨에 따라 중대하게 될 수 있다.
본 문서 내에 기술된 소재는 첨부된 도면 내에서 한정으로서가 아니고 예로서 보여진다. 예시의 단순성 및 명료성을 위하여, 도면 내에 예시된 구성요소는 반드시 축척에 맞게 그려지지는 않는다. 예컨대, 몇몇 구성요소의 치수는 명료성을 위해 다른 구성요소에 비해 과장될 수 있다. 또한, 적절하다고 간주되는 경우, 참조 라벨은 대응하거나 비슷한 구성요소를 나타내기 위해 도면들 중에 반복되었다. 도면들 내에서,
도 1은 일정한 시각적 품질을 구비한 비디오 코딩(video coding)을 제공하기 위한 예시적 시스템의 설명도(illustrative diagram)이고,
도 2는 일정한 시각적 품질을 구비한 비디오 코딩을 제공하기 위한 예시적 프로세스를 보여주는 흐름도(flow diagram)이며,
도 3은 예시적 비트스트림을 보여주고,
도 4는 일정한 시각적 품질을 구비한 비디오 코딩을 제공하기 위한 예시적 프로세스를 보여주는 흐름도이며,
도 5는 일정한 시각적 품질을 구비한 비디오 코딩을 제공하기 위한 예시적 시스템의 설명도이고,
도 6은 예시적 시스템의 설명도이며,
도 7은 온통 본 개시의 적어도 몇몇 구현에 따라 배열된 예시적 디바이스를 보여준다.
첨부된 그림을 참조하여 하나 이상의 실시예 또는 구현이 이제 기술된다. 특정 구성 및 배열이 논의되나, 이것은 단지 예시적인 목적으로 행해짐이 이해되어야 한다. 관련 업계에서 숙련된 이들은 설명의 사상 및 범주로부터 벗어나지 않고서 다른 구성 및 배열이 이용될 수 있음을 인식할 것이다. 본 문서 내에 기술된 기법 및/또는 배열이 본 문서 내에 기술된 것이 아닌 다양한 다른 시스템 및 애플리케이션에서 또한 이용될 수 있음은 관련 업계에서 숙련된 자들에게 명백할 것이다.
이하의 설명은 예컨대 시스템 온 칩(System-on-a-Chip: SoC) 아키텍처와 같은 아키텍처 내에 나타내어질 수 있는 다양한 구현을 개진하나, 본 문서 내에 기술된 기법 및/또는 배열의 구현은 특정한 아키텍처 및/또는 컴퓨팅 시스템으로 제한되지 않으며 유사한 목적으로 임의의 아키텍처 및/또는 컴퓨팅 시스템에 의해 구현될 수 있다. 예를 들면, 예컨대, 여러 집적 회로(Integrated Circuit: IC) 칩 및/또는 패키지, 그리고/또는 셋톱 박스, 스마트폰 등등과 같은 다양한 컴퓨팅 디바이스 및/또는 가전(Consumer Electronic: CE) 디바이스를 이용하는 다양한 아키텍처는 본 문서 내에 기술된 기법 및/또는 배열을 구현할 수 있다. 또한, 이하의 설명은 로직(logic) 구현, 시스템 컴포넌트의 유형 및 상호관계, 로직 구분(partitioning)/통합(integration) 선택 등등과 같은 다수의 특정 세부사항을 개진할 수 있으나, 청구된 대상물(claimed subject matter)은 그러한 특정 세부사항 없이 실시될 수 있다. 다른 사례에서, 예컨대 제어 구조(control structure) 및 온전한 소프트웨어 명령어 시퀀스(full software instruction sequence)와 같은 어떤 소재는, 본 문서 내에 개시된 소재를 모호하게 하지 않기 위해서 상세히 보여지지 않을 수 있다.
본 문서 내에 개시된 소재는 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 본 문서 내에 개시된 소재는 하나 이상의 프로세서에 의해 판독되고 실행될 수 있는, 머신 판독가능 매체(machine-readable medium) 상에 저장된 명령어로서 또한 구현될 수 있다. 머신 판독가능 매체는 머신(machine)(가령, 컴퓨팅 디바이스)에 의해 판독가능한 형태로 정보를 저장하거나 송신하기 위한 임의의 매체 및/또는 메커니즘을 포함할 수 있다. 예컨대, 머신 판독가능 매체는 판독 전용 메모리(Read Only Memory: ROM); 랜덤 액세스 메모리(Random Access Memory); 자기 디스크 저장 매체; 광학 저장 매체; 플래시 메모리 디바이스; 전기적, 광학적, 음향적 또는 다른 형태의 전파 신호(propagated signal)(가령, 반송파, 적외선 신호, 디지털 신호 등등) 및 다른 것을 포함할 수 있다.
"하나의 구현", "일 구현", "예시적 구현" 등등에 대한 명세서 내에서의 언급은, 기술된 구현이 특정한 특징, 구조 또는 특성을 포함할 수 있음을 나타내나, 모든 실시예가 반드시 그 특정한 특징, 구조 또는 특성을 포함하지는 않을 수 있다. 더욱이, 그러한 문구는 반드시 동일한 구현을 나타내고 있는 것은 아니다. 또한, 특정한 특징, 구조 또는 특성이 일 실시예와 관련하여 기술된 경우, 본 문서 내에 명시적으로 기술되든 또는 그렇지 않든 다른 구현과 관련하여 그러한 특징, 구조 또는 특성을 가져오는 것은 당업자의 지식 내에 있다고 제론된다.
일정 품질 비디오 코딩(constant quality video coding)에 관련된 방법, 디바이스, 장치, 컴퓨팅 플랫폼 및 제품이 본 문서 내에 기술된다.
위에서 기술된 바와 같이, 많은 비디오 코딩 구현에서 실질적으로 일정한 시각적 품질을 제공하는 것은 유리할 수 있다. 또한 논의된 바와 같이, 일정 양자화 파라미터(Quantization Parameter: QP) 접근법은 일정한 시각적 품질을 온전히 제공하지 않을 수 있고 비디오 시퀀스의 어떤 부분을 압축하는 데에 낭비적일 수 있다. 그러한 접근법은 인간 시각 시스템(Human Visual System: HVS)의 특성을 고려하지 않을 수 있다. 예컨대, 인간 시각 시스템은 실질적으로 정지되어 있거나 느리게 움직이는 객체를 갖는 비디오 장면에 더 민감하고 빠르게 움직이거나 복잡한 비디오 장면에 덜 민감할 수 있다. 논의된 일정 QP 접근법에서, 빠르게 움직이거나 복잡한 비디오 장면 및 더 느린 움직임을 갖는 비디오 장면은 동일한 QP를 사용하여 양자화되는데, 이는 빠르게 움직이거나 복잡한 비디오 장면을 사용자에게 눈에 띄지 않게 추가로 압축할 수도 있으므로 (가령, 더 큰 QP로써), 낭비적일 수 있다. 유사하게, 사용자가 압축 아티팩트(compression artifact)에 더 민감할 수 있거나 더 뛰어난 품질의 비디오를 인식할 수 있거나 기타 등등인 느리게 움직이는 비디오 장면에 덜한 압축(less compression)을 제공함으로써 더 뛰어난 품질이 제공될 수 있다.
본 문서 내에 논의된 기법은 일정 QP 기법에 비해 더 나은 주관적 비디오 품질을 가능케 할 수 있고 유사하거나 더 낮은 비트레이트로써 더 나은 주관적 비디오 품질을 제공할 수 있다. 본 문서 내에 추가로 논의된 바와 같이, 프레임 레벨(frame level) QP를 조절하는 데에 프레임 레벨 공간적 복잡도(spatial complexity) 및/또는 시간적 복잡도(temporal complexity)가 사용된다. 프레임 레벨 QP는 HVS 기반 분석을 사용하여 블록 레벨(block level) QP(가령, 비디오 프레임의 블록을 위한 QP)를 생성하기 위해 추가로 수정되거나 사용될 수 있다. QP에 대한 프레임 레벨 및 블록 레벨 조절은 HVS에 민감한 영역 내에서 (가령, 덜한 압축 및 더 뛰어난 품질을 갖는) 더 작은 QP를 제공하고 HVS에 덜 민감한 영역에 (가령, 더 뛰어난 압축 및 더 낮은 품질을 갖는) 더 큰 QP를 제공할 수 있다.
몇몇 실시예에서, 비디오 코딩은 비디오 프레임을 위한 양자화 파라미터를 결정하는 것을 포함할 수 있다. 양자화 파라미터는 품질에 대한 사용자 선택(user selection)에 기반할 수 있고/있거나 양자화 파라미터는 프레임 유형(frame type)(가령, 인트라(intra), 예측(predicted), 또는 양방향(bi-directional))에 기반하여 수정될 수 있다. 양자화 파라미터는, 예컨대, 초기(initial) 또는 참조(reference) 양자화 파라미터일 수 있다. 몇몇 실시예에서, 양자화 파라미터는 이전 프레임의 수정된 양자화 파라미터(들)에 기반하여 수정되거나 조절될 수 있다. 비디오 프레임을 위한 양자화 파라미터는 비디오 프레임을 위한 수정된(또는 제2의) 양자화 파라미터를 생성하기 위해 비디오 프레임과 연관된 공간적 복잡도, 비디오 프레임과 연관된 시간적 복잡도, 또는 양자 모두에 기반하여 수정될 수 있다. 수정된 또는 제2의 양자화 파라미터는, 예컨대, 비디오 프레임을 위한 프레임 레벨 양자화 파라미터일 수 있다. 블록 레벨 양자화 파라미터가 비디오 프레임의 개별 블록에 대해 프레임 레벨 양자화 파라미터, 개별 블록의 복잡도 및 비디오 프레임의 복잡도에 기반하여 생성될 수 있다. 예컨대, 개별 블록의 복잡도는 개별 블록의 블록 예측 왜곡(block prediction distortion), 개별 블록의 블록 분산(block variance), 또는 이들의 조합일 수 있고 비디오 프레임의 복잡도는 비디오 프레임의 모든 블록에 대한 블록 분산의 평균, 비디오 프레임의 모든 블록에 대한 블록 예측 왜곡의 평균, 또는 이들의 조합일 수 있다. 그러한 프로세스는 복수의 블록 레벨 양자화 파라미터를 생성하기 위해 비디오 프레임의 모든 블록에 대해 반복될 수 있다.
블록 레벨 양자화 파라미터는 블록과 연관된 변환 계수를 양자화하는 데에 사용될 수 있고 양자화된 변환 계수 및 블록 레벨 양자화 파라미터는 디코더에서의 사용을 위해 비트스트림으로 인코딩될 수 있다. 디코더는 사용자로의 제시를 위한 재현된(reproduced) 프레임들을 생성하기 위해 비트스트림을 압축해제하고/하거나 디코딩할 수 있다. 나아가, 블록 레벨 양자화 파라미터는 인코딩에서의 사용을 위해 비디오 시퀀스와 연관된 모드 선택(mode selection)을 생성하는 데에 사용될 수 있다.
도 1은 본 개시의 적어도 몇몇 구현에 따라 배열된, 비디오 코딩을 제공하기 위한 예시적 시스템(100)의 설명도이다. 도 1에 도시된 바와 같이, 시스템(100)은 양자화 파라미터(Quantization Parameter: QP) 모듈(101)과, 양자화 모듈(112)과, 모드 선택 모듈(mode selection module)(113)과, 엔트로피 인코더 모듈(entropy encoder module)(114)을 포함할 수 있다. 또한 도시된 바와 같이, QP 모듈(101)은 공간적/시간적 복잡도 모듈(104)과, 초기 QP 추정 모듈(initial QP estimation module)(105)과, 이력적 복잡도 및 QP 모듈(historical complexity and QP module)(106)과, 인트라 프레임 QP 추정 모듈(intra frame QP estimation module)(107)과, 장면 변화 검출 및 예측(P) 프레임 QP 추정 모듈(scene change detection and predicted (P) frame QP estimation module)(108)과, 양방향(B) 프레임 QP 추정 모듈(bi-directional (B) frame QP estimation module)(109)과, 블록 기반 QP 조절 모듈(block based QP adjustment module)(110)을 포함할 수 있다.
또한 도시된 바와 같이, QP 모듈(101)은 비디오(102) 및 지능적 일정 품질(Intelligent Constant Quality: ICQ) 인자(103)를 수신할 수 있고 엔트로피 인코더 모듈(114)은 비트스트림(115)을 제공하거나 송신할 수 있다. 시스템(100)은 예컨대 비디오 압축을 제공할 수 있고 시스템(100)은 컴퓨터나 컴퓨팅 디바이스 또는 유사한 것을 통하여 구현된 비디오 인코더일 수 있다. 예컨대, 시스템(100)은 H.264/MPEG-4 고급 비디오 코딩(Advanced Video Coding: AVC) 표준 또는 고효율 비디오 코딩(High Efficiency Video Coding: HEVC) 표준 또는 유사한 것과 같은 비디오 압축-압축해제(코덱) 표준과 호환가능한 비트스트림(115)을 생성할 수 있다.
시스템(100)은 제시의 명료성을 위하여 도시되지 않은 다른 모듈을 포함할 수 있다. 예컨대, 시스템(100)은 변환 모듈(transform module), 인트라 예측 모듈(intra prediction module), 움직임 추정 모듈(motion estimation module), 움직임 보상 모듈(motion compensation module), 인루프 필터링 모듈(in-loop filtering module), 참조 프레임 버퍼(reference frame buffer), 스캐닝 모듈(scanning module), 또는 유사한 것을 포함할 수 있다. 몇몇 예에서, 시스템(100)은 인코딩 프로세스에서 사용되는 참조 프레임을 생성하기 위한 로컬 디코드 루프(local decode loop)를 포함할 수 있다. 그러한 모듈들은 당업자에게 알려져 있으며 기술된 기법을 제시하는 데에서 명료성을 위하여 본 문서 내에서 더 논의되지 않는다.
논의된 바와 같이, QP 모듈(101)은 비디오(102) 및 ICQ 인자(103)를 수신할 수 있다. 비디오(102)는 임의의 적합한 해상도(resolution)로 된 임의의 적합한 비디오 프레임, 비디오 프레임의 시퀀스, 비디오 데이터, 또는 유사한 것을 포함할 수 있다. 예컨대, 비디오(102)는 비디오 그래픽 어레이(Video Graphics Array: VGA), 고선명(High Definition: HD), 풀 HD(Full-HD)(가령, 1080p), 또는 4K 해상도 비디오, 또는 유사한 것일 수 있다. 나아가, 비디오(102)는 임의의 개수의 비디오 프레임, 비디오 프레임의 시퀀스, 또는 장면 또는 유사한 것을 포함할 수 있다. 비디오(102)의 비디오 프레임이 각각 프레임 유형과 함께 지정될 수 있도록 프레임 선택 및/또는 모드 선택(도시되지 않음)이 비디오(102)에 대해 행해질 수 있다. 프레임 유형은 임의의 적합한 프레임 유형 또는 유형들을 포함할 수 있는데, 이는 표준 또는 프로토콜 또는 유사한 것에 의해 정의될 수 있다. 예컨대, 프레임 유형은 다른 프레임 또는 프레임들에 대한 참조 없이 예측되는 인트라 프레임(intra frame)(I 프레임), 다른 프레임 또는 프레임들에 대한 참조로써 예측되고 다른 프레임의 예측에서의 사용을 위해 이용가능한 예측 프레임(predicted frame)(P 프레임), 다른 프레임 또는 프레임들에 대한 참조로써 예측되나 다른 프레임의 예측에서의 사용을 위해 이용가능하지 않은 양방향 프레임(bi-directional frame)(B 프레임), 그리고/또는 다른 프레임 또는 프레임에 대한 참조로써 예측되고 계층적 코딩 구조(hierarchical coding structure) 내의 예측에서의 사용을 위해 이용가능한 참조 양방향 프레임(reference bidirectional frame)(B 참조 프레임)을 포함할 수 있다. 몇몇 예에서, P 프레임, B 프레임 및 B 참조 프레임은 인터 프레임(inter frame)으로 간주될 수 있다. 예컨대, AVC 표준에서, I 프레임, P 프레임, B 프레임 및 B 참조 프레임이 이용가능할 수 있다. HEVC 표준에서, 프레임 유형은 계층적 코딩이 가능화된(enabled) 경우 참조 깊이 레벨(reference depth level)에 관련될 수 있다.
ICQ 인자(103)는 비디오 품질의 임의의 표시(indication)(가령, 원하는 또는 요청된 비디오 품질 또는 유사한 것)를 포함할 수 있다. 예컨대, ICQ 인자(103)는 사용자, 시스템(100)의 시스템 파라미터, 시스템(100)으로의 통신 연결의 품질, 또는 유사한 것에 의해 설정되거나 결정될 수 있다. 일 실시예에서, ICQ 인자(103)는 비디오(102)를 위한 사용자 선택된 일정 품질 인자(user selected constant quality factor)에 기반한다. 사용자 선택된 일정 품질 인자는 정수 값, 주관적 품질 선택(subjective quality selection), 사용자에게 제시된 품질 범위를 갖는 슬라이더(slider)에 기반한 선택, 또는 유사한 것과 같은 임의의 적합한 선택일 수 있다. 일 실시예에서, 주관적 선택이 행해질 수 있고(가령, 높거나, 중간이거나, 낮은 품질) 시스템(100)은 주관적 선택을 ICQ 인자(103)를 위해 정수 값으로 바꿀 수 있다. 예컨대, ICQ 인자(103)는 약 20 내지 26의 값이 중간 품질 비디오를 제공하고 약 27 내지 31의 값이 저품질 비디오를 제공하며 약 15 내지 19의 값이 고품질 비디오를 제공하면서 1부터 51까지 걸쳐 있을 수 있는데, 다만 임의의 값 및/또는 범위가 사용될 수 있다.
본 문서에서 사용되는 바와 같이, 낮은 ICQ 인자(103) 및 낮은 QP는 더 높은 비디오 품질 및 더 높은 비트레이트와 연관되고 높은 ICQ 인자(103) 및 높은 QP는 더 낮은 비디오 품질 및 더 낮은 비트레이트와 연관된다. 예컨대, 사용자나 시스템 또는 유사한 것은 더 높은 비트레이트(가령, 덜한 압축)라는 대가에도 불구하고 양호하거나 더 높은 품질의 비디오가 요망되는 경우 낮은 ICQ 인자(103)를 제공하고 더 낮은 비트레이트(가령, 더한 압축이 달성될 수 있도록) 더 낮은 품질의 비디오가 용인될 수 있는 경우 높은 ICQ 인자(103)를 제공할 수 있다. 또한 본 문서에서 사용되는 바와 같이, ICQ 인자(103)는 일정 품질 인자(constant quality factor)로서 기술될 수 있다.
도 1을 계속하면, 초기 QP 추정 모듈(105)은 비디오(102)의 프레임을 위한 초기 양자화 파라미터(Initial Quantization Parameter: IQP) 값(들)(116)을 결정하거나 생성할 수 있다. 예컨대, 초기 QP 값(116)은 비디오(102) 전체의 프레임을 위한 또는 비디오(102)의 시퀀스(가령, 비디오(102)의 일부분, 비디오(102)의 장면, 또는 유사한 것)를 위한 프레임 레벨 QP 값의 초기 추정을 포함할 수 있다. 일례에서, 비디오(102)의 비디오 프레임을 위한 초기 QP 값(116)은 ICQ 인자(103)에 기반할 수 있다. 일례에서, 비디오(102)의 비디오 프레임을 위한 초기 QP 값(116)은 ICQ 인자(103)와 같을 수 있다. 다른 예에서, 비디오(102)의 비디오 프레임을 위한 초기 QP 값(116)은 ICQ 인자(103) 및 프레임 유형 기반 오프셋(frame type based offset)에 기반할 수 있다. 예컨대, 프레임 유형(가령, I 프레임, P 프레임, B 프레임, 또는 B 참조 프레임)에 기반한 프레임 유형 오프셋이 식 (1) 내지 식 (3)에 보여진 바와 같이 ICQ 인자(103)에 대해 이루어질 수 있다.
Figure 112016094513182-pct00001
여기서 ICQ Factor는 ICQ 인자(103)일 수 있고, Initial_QP는 초기 QP 값(가령, 초기 QP 값(116))일 수 있으며, Initial_QP (I)는 I 프레임을 위한 초기 QP 값일 수 있고, Initial_QP (P)는 P 프레임을 위한 초기 QP 값일 수 있으며, Initial_QP (B)는 B 프레임(가령, B 프레임 또는 B 참조 프레임)을 위한 초기 QP 값일 수 있고, OffsetP는 P 프레임을 위한 프레임 유형 기반 오프셋일 수 있으며, OffsetB는 B 프레임을 위한 프레임 유형 기반 오프셋일 수 있다.
식 (2) 및 식 (3)에 보여진 바와 같이, OffsetP 및 OffsetB는 ICQ 인자의 함수일 수 있다. 함수는 ICQ 인자에 기반하여 오프셋을 제공하는 임의의 적합한 함수(가령, 선형(linear), 계단식(step), 논리적(logical) 또는 유사한 것)를 포함할 수 있다. 예컨대, OffsetP는 0 내지 4의 범위 내의 정수 값을 제공할 수 있는데 더 낮은 ICQ 인자 값에 더 높은 오프셋이 제공된다. 예컨대, OffsetB는 2 내지 8의 범위 내의 정수 값을 제공할 수 있는데 더 낮은 ICQ 인자 값에 더 높은 오프셋이 제공된다. 또한, 식 (1)에 보여진 바와 같이, 몇몇 예에서, Initial_QP (I)는 오프셋 없이 또는 0의 오프셋으로써 정해질 수 있다. 다른 예에서, Initial_QP (I)는 식 (2) 및 식 (3)에 보여진 것과 비슷한 오프셋 함수(가령, OffsetI(ICQ Factor) 또는 유사한 것)로써 정해질 수 있다.
도 1에 도시된 바와 같이, 공간적/시간적 복잡도 모듈(104)은 비디오(102)를 수신할 수 있고, 비디오(102)의 프레임에 대해, 그 프레임을 위한 공간적 및/또는 시간적 복잡도(Spatial and/or Temporal Complexity: S/T C) 값(117)을 생성할 수 있다. 공간적 복잡도는 비디오(102)의 비디오 프레임의 공간적 복잡도의 척도(measure)를 제공하는 임의의 적합한 기법을 사용하여 결정될 수 있다. 일 실시예에서, 공간적 복잡도는 비디오(102)의 비디오 프레임의 인트라 예측 왜곡(intra prediction distortion)에 기반하여 추정된다. 나아가, 비디오(102)의 비디오 프레임을 위한 시간적 복잡도는 비디오 프레임의 시간적 복잡도의 척도를 제공하는 임의의 적합한 기법을 사용하여 결정될 수 있다. 일 실시예에서, 시간적 복잡도는 비디오(102)의 비디오 프레임의 인터 예측 왜곡(inter prediction distortion)에 기반하여 추정된다. 다양한 예에서, 인트라 예측 왜곡, 인터 예측 왜곡, 또는 양자 모두의 척도는 절대차의 합(Sum of Absolute Differences: SAD), 왜곡의 합산, 또는 유사한 것과 같은 통계적 척도(statistical measure)에 기반할 수 있다. 몇몇 예에서, 인트라 예측 왜곡, 인터 예측 왜곡, 또는 양자 모두는 비디오(102)의 비디오 프레임의 다운샘플링된 버전(down-sampled version)에 기반하여 결정될 수 있다. 예컨대, 비디오(102)의 프레임은 비디오 프레임을 위한 인트라 예측 왜곡, 인터 예측 왜곡, 또는 양자 모두의 결정 전에 2, 4 또는 8의 인자, 또는 유사한 것에 의해 다운샘플링되거나 다운스케일링될(down-scaled) 수 있다.
인트라 프레임 QP 추정 모듈(107)은, 도시된 바와 같이, 공간적 및/또는 시간적 복잡도 값(117) 및 초기 양자화 파라미터 값(들)(116)을 수신할 수 있고 I 프레임 프레임 레벨 양자화 파라미터(Frame Level Quantization Parameter: FLQP)(118)를 생성할 수 있다. 몇몇 예에서, 인트라 프레임 QP 추정 모듈(107)은 비디오(102)의 모든 프레임을 위한 초기 양자화 파라미터 값(들)(116) 및 공간적 및/또는 시간적 복잡도 값(117)을 수신할 수 있고, 다른 예에서, 인트라 프레임 QP 추정 모듈(107)은 비디오(102)의 I 프레임과 연관된 초기 양자화 파라미터 값(들)(116) 및 공간적 및/또는 시간적 복잡도 값(117)만 수신할 수 있다. 일례에서, 인트라 프레임 QP 추정 모듈(107)은 I 프레임 FLQP(118)를 생성하기 위해 공간적 및/또는 시간적 복잡도 값(117) 중 하나 또는 양자 모두에 기반하여 I 프레임을 위한 초기 QP(가령, I 프레임을 위한 초기 QP 값(116))를 수정할 수 있다. 예컨대, (가령, 사용자가 품질의 감소를 알아채지 않을 수 있고 압축이 증가될 수 있는 경우) 상대적으로 큰 I 프레임 FLQP(118)가 높은 공간적 복잡도를 갖는 프레임을 위해 사용될 수 있고 (가령, 더 높은 품질이 사용자에게 유익할 수 있는 경우) 상대적으로 작은 I 프레임 FLQP(118)가 낮은 공간적 복잡도를 갖는 프레임을 위해 사용될 수 있도록 I 프레임의 공간적 복잡도가 높은 공간적 복잡도를 나타내는 경우 I 프레임 FLQP(118)는 I 프레임을 위한 초기 QP보다 더 클 수 있다. 몇몇 예에서, 높은 공간적 복잡도는 인트라 예측 왜곡 및 경험적으로(empirically) 정한 상수에 기반하여 결정될 수 있다.
논의된 바와 같이, 일례에서, I 프레임을 위한 초기 QP는 ICQ 인자(103)와 같을 수 있다(식 (1)을 참조하시오). 일 실시예에서, I 프레임 FLQP(118)는 I 프레임의 공간적 복잡도에 비례할 수 있다. 예컨대, I 프레임 FLQP(118)는 식 (4)에 보여진 바와 같이 정해질 수 있다:
Figure 112016094513182-pct00002
여기서 QPINTRA는 I 프레임 프레임 레벨 양자화 파라미터(가령, I 프레임 FLQP(118))일 수 있고, Initial_QP (I)는 (위에서 논의된 바와 같은) I 프레임을 위한 초기 QP 값일 수 있으며, Distortion(Intra)는 인트라 공간적 예측 왜곡(intra spatial prediction distortion)일 수 있고, C는 경험적으로 결정된 상수일 수 있으며, Threshold1은 경험적으로 결정된 상수 또는 임계(threshold) 값일 수 있다.
식 (4)에 보여진 바와 같이, I 프레임 프레임 레벨 양자화 파라미터는 값 C로 거듭제곱된 I 프레임의 공간적 복잡도에 비례할 수 있다. C는 임의의 적합한 값이나 상수, 예를 들어, 가령 1, 또는 임의의 정수가 아닌 값일 수 있다. 논의된 바와 같이, C는 경험적으로 결정될 수 있고 공간적 복잡도를 결정하는 데에 사용되는 방법(가령, SAD 또는 합산 왜곡 또는 유사한 것)에 기반할 수 있다. 몇몇 예에서, C가 비디오(102)에 기반하여 적응적(adaptive)이거나 가변적(variable)일 수 있도록 C는 비디오(102)의 콘텐트(content)에 기반할 수 있다.
도시된 바와 같이, I 프레임 FLQP(118)는 아래에서 논의되는 바와 같이, 추가 처리를 위해 인트라 프레임 QP 추정 모듈(107)로부터 블록 기반 QP조절 모듈로 송신될 수 있다. 또한 도시된 바와 같이, 커플링(coupling)(121)을 통하여, 인트라 프레임 QP 추정 모듈(107)은, 예컨대, I 프레임 FLQP(118), 임의의 결정된 공간적 복잡도, 상수 또는 임계치(가령, C 및/또는 Threshold1), 또는 유사한 것을 포함하는 다양한 데이터를, 이력적 복잡도 및 QP 모듈(106)로 송신할 수 있다. 예컨대, I 프레임 FLQP(118)를 결정한 후, 논의된 데이터 또는 이의 부분은 인트라 프레임 QP 추정 모듈(107)로부터 이력적 복잡도 및 QP 모듈(106)로 그리고 이력적 복잡도 및 QP 모듈(106)로부터 장면 변화 검출 및 P 프레임 QP 추정 모듈(108) 및/또는 B 프레임 QP 추정 모듈(109)로 전송될 수 있다.
장면 변화 검출 및 P 프레임 QP 추정 모듈(108)은 (모든 프레임을 위한 또는 단지 P 프레임을 위한) 초기 양자화 파라미터 값(들)(116) 및 공간적 및/또는 시간적 복잡도 값(117)을 또한 수신할 수 있고 P 프레임(들)을 위한 초기 QP 값(위의 식 (2)를 참조하시오), P 프레임(들)과 연관된 I 프레임 FLQP(118)(가령, P 프레임이 코딩을 위해 참조하는 I 프레임을 위한 FLQP), I 프레임을 위한 초기 QP, 그리고/또는 가중 인자(weighting factor)에 기반하여 참조 양자화 파라미터(reference quantization parameter)를 생성할 수 있다. 예컨대, 비디오(102)의 시퀀스를 코딩하는 중에, 단일 I 프레임을 참조하여 하나 이상의 P 프레임이 코딩될 수 있다. P 프레임 참조 양자화 파라미터(Quantization Parameter: QP)는 (가령, 식 (2)에 보여진 바와 같은) 인터 P 프레임 오프셋만큼 증가된 비디오 시퀀스를 위한 일정 품질 인자에 기반하고, 그것과 연관된 인트라 프레임 양자화 값에 기반하여 수정될 수 있다. 예컨대, P 프레임 참조 QP는 식 (5)에 보여진 바와 같이 정해질 수 있다:
Figure 112016094513182-pct00003
여기서 QPP _reference는 P 프레임 참조 QP일 수 있고, Initial_QP (P)는 (위에서 논의된 바와 같은) P 프레임을 위한 초기 QP 값일 수 있으며, QPINTRA는 P 프레임(들)과 연관된 I 프레임 프레임 레벨 양자화 파라미터(가령, I 프레임 FLQP(118))일 수 있고, Initial_QP (I)는 (위에서 논의된 바와 같은) I 프레임을 위한 초기 QP 값일 수 있으며, w1은 가중 인자일 수 있다. 예컨대, 가중 인자 w1은 QPP _reference에 대한 (QPINTRA - Initial_QP (I))의, 일정한 시각적 품질을 비디오 코딩에 제공하기 위한 기여(contribution)를 가중시키기 위한 임의의 적합한 값일 수 있다. 몇몇 예에서, 가중 인자 w1은 약 0.5 내지 1의 범위 내에 있을 수 있는데, 0.9의 값이 특히 유리하다.
유사하게, B 프레임 QP 추정 모듈(109)은 (모든 프레임을 위한 또는 단지 B 프레임을 위한) 초기 양자화 파라미터 값(들)(116) 및 공간적 및/또는 시간적 복잡도 값(117)을 수신할 수 있고 B 프레임(들)을 위한 초기 QP 값(위의 식 (3)을 참조하시오), B 프레임(들)과 연관된 I 프레임 FLQP(118), I 프레임을 위한 초기 QP, 그리고/또는 가중 인자에 기반하여 참조 양자화 파라미터를 생성할 수 있다. 예컨대, 비디오(102)의 시퀀스를 코딩하는 중에, 하나 이상의 B 프레임(가령, B 프레임 및/또는 B 참조 프레임)은 단일 I 프레임에 관해서(가령, I 프레임 그 자체를 참조하여 또는 I 프레임을 참조하는 다른 프레임을 참조하여) 코딩될 수 있다. B 프레임 참조 양자화 파라미터(Quantization Parameter: QP)는 (가령, 식 (3)에 보여진 바와 같은) 인터 B 프레임 오프셋만큼 증가된 비디오 시퀀스를 위한 일정 품질 인자에 기반하고, 그것과 연관된 인트라 프레임 양자화 파라미터에 기반하여 수정될 수 있다. 예컨대, B 프레임 참조 QP는 식 (6)에 보여진 바와 같이 정해질 수 있다:
Figure 112016094513182-pct00004
여기서 QPB _reference는 B 프레임 참조 QP일 수 있고, Initial_QP (B)는 (위에서 논의된 바와 같은) B 프레임을 위한 초기 QP 값일 수 있으며, QPINTRA는 B 프레임(들)과 연관된 I 프레임 프레임 레벨 양자화 파라미터(가령, I 프레임 FLQP(118))일 수 있고, Initial_QP (I)는 (위에서 논의된 바와 같은) I 프레임을 위한 초기 QP 값일 수 있으며, w2는 가중 인자일 수 있다. 예컨대, 가중 인자 w2는 QPB _reference에 대한 (QPINTRA - Initial_QP (I))의 기여를 가중시키기 위한 임의의 적합한 값일 수 있다. 몇몇 예에서, 가중 인자 w2는 약 0.5 내지 1의 범위 내에 있을 수 있는데, 0.9의 값이 특히 유리하다. 몇몇 예에서, 가중 인자 w1 및 w2는 동일할 수 있으나, 다른 예에서, 그것들은 상이할 수 있다.
장면 변화 검출 및 P 프레임 QP 추정 모듈(108)로 되돌아가면, 비디오(102)의 각각의 P 프레임에 대해, P 프레임이 장면 변화 프레임이도록 P 프레임이 비디오(102) 내의 장면 변화와 연관되는지를 결정하기 위해 장면 변화 검출이 적용될 수 있다. 예컨대, 장면 변화 검출 및 P 프레임 QP 추정 모듈(108)은 P 프레임이 장면 변화 프레임인지를 (가령, 공간적 및/또는 시간적 복잡도 값(117)을 통하여 수신된 바와 같은) 그 프레임의 시간적 복잡도에 기반하여 결정할 수 있다. 일 실시예에서, 과거의 프레임에 기반한 과거 평균 시간적 복잡도(past average temporal complexity)(가령, 하나 이상의 과거 프레임의 평균적인 시간적 복잡도) 및 타겟 P 프레임의 시간적 복잡도에 기반하여 비율이 결정될 수 있다. 과거 평균 시간적 복잡도는 장면 변화 검출 및 P 프레임 QP 추정 모듈(108)을 통하여 결정되거나, 본 문서 내에 논의된 바와 같이, 커플링(121, 122, 123)을 통하여 수신된 데이터에 기반하여 과거 평균 시간적 복잡도를 결정할 수 있는 이력적 복잡도 및 QP 모듈(106)을 통하여 수신될 수 있다. 과거 평균 시간적 복잡도는 임의의 다수의 과거 프레임에 기반하여 결정될 수 있다. 일 실시예에서, 과거 평균 시간적 복잡도는 가장 최근의 다섯 개의 이전 프레임(또는 만약 다섯 개의 프레임이 이용가능하지 않은 경우 그보다 더 적은 이전 프레임)에 기반한다.
과거 평균 시간적 복잡도에 대한 타겟 P 프레임의 시간적 복잡도의 비율은 타겟 P 프레임이 장면 변화 프레임인지를 결정하기 위해 임계치(가령, 사전결정된(predetermined) 또는 어림법으로 결정된(heuristically determined) 임계치)와 비교될 수 있다. 일 실시예에서, 만약 비율이 임계치보다 더 큰 경우, 타겟 P 프레임은 장면 변화 프레임이라고 결정된다.
만약 P 프레임이 장면 변화 프레임이라고 결정된 경우, I 프레임을 위한 초기 QP 및 타겟 P 프레임의 공간적 복잡도 및/또는 시간적 복잡도에 기반하여 장면 변화 P 프레임에 대해 P 프레임 프레임 레벨 양자화 파라미터(P 프레임 FLQP)가 결정될 수 있다. 일 실시예에서, P 프레임 FLQP는 타겟 P 프레임의 공간적 복잡도 및/또는 시간적 복잡도에 비례한다. 예컨대, P 프레임 FLQP는 식 (7)에 보여진 바와 같이 정해질 수 있다:
Figure 112016094513182-pct00005
여기서 QPP _scene_change_frame는 장면 변화 P 프레임 프레임 레벨 양자화 파라미터(가령, P 프레임 FLQP(119))일 수 있고, Initial_QP (I)는 (위에서 논의된 바와 같은) I 프레임을 위한 초기 QP 값일 수 있으며, Function1은 조건부 함수(conditional function)일 수 있고, Distortion(P)는 인트라 예측 왜곡 및/또는 인터 예측 왜곡에 기반하는 P 프레임 공간적 및/또는 시간적 복잡도일 수 있으며, C는 경험적으로 결정된 상수일 수 있고, Threshold2는 경험적으로 결정된 상수 또는 임계 값일 수 있다.
식 (7)에 보여진 바와 같이, 장면 변화 프레임을 위한 P 프레임 프레임 레벨 양자화 파라미터는 값 C로 거듭제곱된 P 프레임의 복잡도에 비례할 수 있다. C는 임의의 적합한 값이나 상수, 예를 들어, 가령 1, 또는 임의의 정수가 아닌 값일 수 있다. 논의된 바와 같이, C는 경험적으로 결정될 수 있고 복잡도를 결정하는 데에 사용되는 방법(가령, SAD 또는 합산 왜곡 또는 유사한 것)에 기반할 수 있다. 몇몇 예에서, C가 비디오(102)에 기반하여 적응적이거나 가변적일 수 있도록 C는 비디오(102)의 콘텐트에 기반할 수 있다. 식 (7)에서의 C의 값은 식 (4)에서의 C의 값과 동일할 수 있거나 그것들은 상이할 수 있다.
Function1은 QPP _frame을 결정하기 위해 Initial_QP (I)에 인자를 제공하기 위한 임의의 적합한 조건부 함수일 수 있는데, 예컨대, Function1은 범위, 범위의 세트, 임계치, 또는 임계치의 세트 또는 유사한 것에 기반하여 값을 제공할 수 있다. 예컨대, 만약 Distortion(P)C/Threshold2가 임계치 밑인 경우, 어떤 값이 제공될 수 있고, 만약 Distortion(P)C/Threshold2가 임계치 위인 경우 다른 값이 제공될 수 있거나, 기타 등등이다. Function1은 임의의 개수의 임계치 또는 범위 또는 유사한 것을 구현할 수 있다.
논의된 바와 같이, (가령 사용자가 품질의 감소를 알아채지 않을 수 있고 압축이 증가될 수 있는 경우) 상대적으로 큰 QP가 높은 시간적 복잡도를 갖는 프레임을 위해 사용될 수 있고 (가령, 더 높은 품질이 사용자에게 유익할 수 있는 경우) 상대적으로 작은 QP가 낮은 시간적 복잡도를 갖는 프레임을 위해 사용될 수 있도록 P 프레임의 시간적 복잡도가 높은 시간적 복잡도를 나타내는 경우 P 프레임 레벨 양자화 파라미터는 P 프레임을 위한 초기 QP보다 더 클 수 있다. 몇몇 예에서, 높은 시간적 복잡도는 인터 예측 왜곡 및 경험적으로 정한 상수에 기반하여 결정될 수 있다. 본 문서 내에 추가로 논의되는 바와 같이, 다른 인터 프레임(가령, 장면 변화 프레임이 아닌 P 프레임, B 프레임, 그리고 B 참조 프레임)에 대해 유사하게, 인터 프레임의 시간적 복잡도가 높은 시간적 복잡도를 나타내는 경우 프레임 레벨 양자화 파라미터는 인터 프레임을 위한 초기 또는 참조 QP보다 더 클 수 있다.
도 1에 도시된 바와 같이, 장면 변화를 위한 P 프레임 프레임 레벨 양자화 파라미터는 P 프레임 FLQP(119) 또는 이의 일부분으로서 제공될 수 있다. 나아가, 장면 변화를 위한 P 프레임 프레임 레벨 양자화 파라미터 및/또는 다른 결정된 데이터는 이력적 복잡도 및 QP 모듈(106)에 송신될 수 있다. 예컨대, 그러한 데이터 또는 이의 부분은 커플링(124)을 통하여 B 프레임 QP 추정 모듈(109)로 송신될 수 있다. 예컨대, 장면 변화 P 프레임에 기반하여, 위에서 논의된 B 프레임 참조 양자화 파라미터(Quantization Parameter: QP)는 B 프레임 QP 추정 모듈(109)에 의해 조절되거나 재결정될 수 있다. 일례에서, B 프레임 참조 QP는 (식 (3)에 보여진 바와 같은) 인터 B 프레임 오프셋만큼 증가된 비디오 시퀀스를 위한 일정 품질 인자에 기반하고, 그것과 연관된 P 프레임 프레임 레벨 QP에 기반하여 수정될 수 있다. 예컨대, B 프레임 참조 QP는 식 (8)에 보여진 바와 같이 정해질 수 있다:
Figure 112016094513182-pct00006
여기서 QPB _reference는 B 프레임 참조 QP일 수 있고, Initial_QP (B)는 (위에서 논의된 바와 같은) B 프레임을 위한 초기 QP 값일 수 있으며, QPP _scene_change_frame은, 장면 변화를 나타내고 B 프레임(들)과 연관된 P 프레임의 장면 변화 프레임을 위한 P 프레임 프레임 레벨 양자화 파라미터(가령, P 프레임 FLQP(119) 중 하나)일 수 있고, Initial_QP (I)는 (위에서 논의된 바와 같은) I 프레임을 위한 초기 QP 값일 수 있으며, w2는 가중 인자일 수 있다. 예컨대, 가중 인자 w1은 QPP _reference에 대한 (QPINTRA - Initial_QP (I))의 기여를 가중시키기 위한 임의의 적합한 값일 수 있다. 몇몇 예에서, 가중 인자 w2는 약 0.5 내지 1의 범위 내에 있을 수 있는데, 0.9의 값이 특히 유리하다. 몇몇 예에서, 가중 인자 w1 및 w2는 동일할 수 있고, 다른 예에서, 그것들은 상이할 수 있다. 몇몇 예에서, 식 (8)의 가중 인자 w2는 식 (6)의 가중 인자 w2와 동일할 수 있고, 다른 예에서, 그것들은 상이할 수 있다.
장면 변화 검출 및 P 프레임 QP 추정 모듈(108)로 되돌아가면, 비디오(102)의 각각의 프레임에 대해 또는 대상 P 프레임에 대해, 만약 타겟 프레임이 장면 변화 프레임이라고 결정되지 않는 경우, 시간적 비율(temporal ratio)은 식 (9)에 보여진 바와 같이 정해질 수 있다:
Figure 112016094513182-pct00007
여기서 T_ratio는 시간적 비율일 수 있고, Current_Distortion(P)는 현재의 P 프레임을 위한 인트라 예측 왜곡 및/또는 인터 예측 왜곡에 기반하는 P 프레임 공간적 및/또는 시간적 복잡도일 수 있으며, C는 경험적으로 결정된 상수일 수 있고, Past_Average(P)는 이전의 P 프레임을 위한 인트라 예측 왜곡 및/또는 인터 예측 왜곡에 기반하는 공간적 및/또는 시간적 복잡도일 수 있다. C는 임의의 적합한 상수, 예를 들어, 가령 1, 또는 임의의 정수가 아닌 값일 수 있다. 논의된 바와 같이, C는 경험적으로 결정될 수 있고 복잡도를 결정하는 데에 사용되는 방법(가령, SAD 또는 합산 왜곡 또는 유사한 것)에 기반할 수 있다. 몇몇 예에서, C가 비디오(102)에 기반하여 적응적이거나 가변적일 수 있도록 C는 비디오(102)의 콘텐트에 기반할 수 있다. 몇몇 예에서 식 (9)에서의 C의 값은 본 문서 내에 논의된 것들 중 하나 이상과 동일할 수 있고, 다른 예에서, 식 (9)에서의 C의 값은 상이할 수 있다.
일반적으로, 비 장면 변화 P 프레임(non-scene change P-frame)은 참조 프레임(가령, 참조 I 프레임 및/또는 P 프레임)에 기반하여 코딩될 수 있다. 장면 변화 검출 및 P 프레임 QP 추정 모듈(108)에서 또는 시스템(100) 내의 다른 데서, 비 장면 변화 P 프레임을 위한 참조 프레임이 인트라 프레임(가령, I 프레임) 또는 장면 변화 프레임(가령, 장면 변화 P 프레임)인지 결정될 수 있다. 만약 참조 프레임이 인트라 프레임이거나 장면 변화 프레임인 경우, P 프레임 FLQP는 위에서 기술된 바와 같은 시간적 비율 및 수정 파라미터에 기반하여 수정된 바와 같은 P 프레임 참조 QP에 기반하여 결정될 수 있다. 몇몇 예에서, 프레임 레벨 QP(가령, P 프레임 FLQP(119))는 식 (10)에 보여진 바와 같이 결정될 수 있다:
Figure 112016094513182-pct00008
여기서 QPP _frame은 인트라 또는 장면 변화 참조 프레임을 사용하여 코딩된 비 장면 변화 P 프레임을 위한 P 프레임 프레임 레벨 양자화 파라미터(가령, P 프레임 FLQP(119))일 수 있고, QPP _reference는 (식 (5)에 관해서 논의된 바와 같은) P 프레임 참조 QP 파라미터일 수 있으며, CLIP은 클리핑 함수(clipping function)일 수 있고, Function2는 조건부 함수일 수 있으며, T_ratio는 위의 식 (9)에 관해서 논의된 바와 같은 시간적 비율일 수 있고, -3과 3은 클리핑 함수 CLIP을 위한 수정 파라미터일 수 있다. 보여진 바와 같이, 몇몇 예에서, 수정 파라미터는 -3과 3일 수 있으나, 수정 파라미터는 -2와 2 또는 -1과 1 또는 유사한 것과 같은 임의의 적합한 값을 포함할 수 있다.
Function2는 T_ratio에 기반하는 임의의 적합한 조건부 함수일 수 있는데, 예컨대, Function1은 범위, 범위의 세트, 임계치, 또는 임계치의 세트 또는 유사한 것에 기반하여 값을 제공할 수 있다. 예컨대, 만약 기반하는 T_ratio가 임계치 밑인 경우, 어떤 값이 제공될 수 있고, 만약 기반하는 T_ratio가 임계치 위인 경우 다른 값이 제공될 수 있고, 기타 등등이다. Function1은 임의의 개수의 임계치 또는 범위 또는 유사한 것을 구현할 수 있다. CLIP은 임의의 적합한 클리핑 함수일 수 있다. 예컨대, 함수 CLIP(X, MIN, MAX)는 만약 X>MAX인 경우 MAX와 같고, CLIP(X, MIN, MAX)는 만약 X<MIN인 경우 MIN과 같으며, 그 밖의 경우, CLIP(X, MIN, MAX)는 X와 같다.
나아가, 장면 변화 검출 및 P 프레임 QP 추정 모듈(108)은 인트라 또는 장면 변화 참조 프레임을 구비한 P 프레임을 위한 결정된 P 프레임에 기반하여 P 프레임을 위한 참조 QP를 업데이트하거나 재결정할 수 있다. 일 실시예에서, 참조 QP는 인트라 또는 장면 변화 참조 프레임을 구비한 P 프레임을 위한 P 프레임 FLQP와 같도록 설정될 수 있다. 몇몇 예에서, 참조 QP는 다음과 같이 식 (11)에 기반할 수 있다:
Figure 112016094513182-pct00009
여기서 QPP _reference는 P 프레임을 위한 QP 참조일 수 있고 QPP _frame은 위에서 기술된 바와 같이 인트라 또는 장면 변화 참조 프레임을 구비한 P 프레임을 위한 프레임 레벨 QP일 수 있다.
만약 비 장면 변화 P 프레임을 위한 참조 프레임이 인트라 프레임도 아니고 장면 변화 프레임도 아닌 경우, P 프레임 FLQP는 위에서 기술된 바와 같은 시간적 비율 및 수정 파라미터에 기반하여 수정된 바와 같은 P 프레임 참조 QP에 기반하여 결정될 수 있다. 몇몇 예에서, 프레임 레벨 QP(가령, P 프레임 FLQP(119))는 식 (12)에 보여진 바와 같이 결정될 수 있다:
Figure 112016094513182-pct00010
여기서 QPP _frame은 인트라 프레임도 장면 변화 참조 프레임도 사용하지 않고 코딩된 비 장면 변화 P 프레임을 위한 P 프레임 프레임 레벨 양자화 파라미터(가령, P 프레임 FLQP(119))일 수 있고, QPP _reference는 (식 (5) 및 식 (11)에 관해서 논의된 바와 같은) P 프레임 참조 QP 파라미터일 수 있으며, CLIP은 식 (10)에 관해서 논의된 바와 같은 클리핑 함수일 수 있고, Function2는 조건부 함수일 수 있으며, T_ratio는 위의 식 (9)에 관해서 논의된 바와 같은 시간적 비율일 수 있고, -1과 1은 클리핑 함수 CLIP을 위한 수정 파라미터일 수 있다. 보여진 바와 같이, 몇몇 예에서, 수정 파라미터는 -1과 1일 수 있으나, 수정 파라미터는 -2와 2 또는 유사한 것과 같은 임의의 적합한 값을 포함할 수 있다.
나아가, B 프레임 QP 추정 모듈(109)은 (가령, 장면 변화 검출 및 P 프레임 QP 추정 모듈(108), 커플링(122), 이력적 복잡도 및 QP 모듈(106), 그리고 커플링(124) 또는 유사한 것을 통하여) 데이터를 수신할 수 있고 B 프레임 QP 추정 모듈(109)은 위에서 기술된 결정된 P 프레임 FLQP 값에 기반하여 B 프레임을 위한 참조 QP를 업데이트하거나 재결정할 수 있다. 몇몇 예에서, B 프레임을 위한 참조 QP는 다음과 같이 식 (13)에 기반하여 결정될 수 있다:
Figure 112016094513182-pct00011
여기서 QPB_reference는 B 프레임을 위한 QP 참조일 수 있고, QPP_frame은 식 (12)에 관해서 위에서 기술된 바와 같은 P 프레임을 위한 프레임 레벨 QP일 수 있으며, Initial_QP (P)는 (위에서 논의된 바와 같은) P 프레임을 위한 초기 QP 값일 수 있고, Initial_QP (B)는 (위에서 논의된 바와 같은) B 프레임을 위한 초기 QP 값일 수 있다.
장면 변화 검출 및 P 프레임 QP 추정 모듈(108)로 되돌아가면, (가령, 장면 변화 P 프레임을 위한, 코딩을 위해 인트라 또는 장면 변화 P 프레임을 참조하는 비 장면 변화 P 프레임을 위한, 그리고 코딩을 위해 비 인트라(non-intra) 및 비 장면 변화 P 프레임을 참조하는 비 장면 변화 P 프레임을 위한) 각각의 유형의 프레임 레벨 양자화 파라미터의 결정이 기술되었다. 그러한 P 프레임 프레임 레벨 양자화 파라미터(Frame Level Quantization Parameter: FLQP)(119)는 아래에 논의되는 바와 같은 추가 처리를 위해 블록 기반 QP 조절 모듈(110)에 제공될 수 있다.
도 1을 계속하면, B 프레임 QP 추정 모듈(109)는, 도시된 바와 같이, 공간적 및/또는 시간적 복잡도 값(117), 초기 양자화 파라미터 값(들)(116) 및 다른 데이터를 이력적 복잡도 및 QP 모듈(106)로부터 커플링(124)을 통하여 수신할 수 있고 B 프레임 프레임 레벨 양자화 파라미터(Frame Level Quantization Parameter: FLQP)(120)를 생성할 수 있다. 예컨대, B 프레임 QP 추정 모듈(109)는 I 프레임 및 P 프레임을 위한 이전에 결정된 프레임 레벨 양자화 파라미터에 기반하여 위에서 논의된 바와 같은 참조 B 프레임 QP 값(가령, QPB _reference)을 생성하고, 업데이트하며, 유지할 수 있다.
몇몇 예에서, B 프레임 QP 추정 모듈(107)은, 예컨대, 결정된, 재결정된 및/또는 유지된 참조 B 프레임 QP 값에 기반하여 B 프레임 FLQP(120)를 생성할 수 있다. 몇몇 예에서, B 프레임을 위한 B 프레임 FLQP(120)는 식 (14)에 보여진 바와 같이, 참조 B 프레임 QP 값과 같을 수 있다:
Figure 112016094513182-pct00012
여기서 QPB _frame은 B 프레임 프레임 레벨 양자화 파라미터(가령, B 프레임 FLQP(119) 중 하나)일 수 있고 QPB _reference는 위에서 논의된 바와 같은 참조 B 프레임 QP 값일 수 있다. 일 실시예에서, 프레임을 위한 B 프레임 FLQP(120)는 계층적 코딩 구조가 사용 또는 가능화되지 않은 구현에서 참조 B 프레임 QP 값과 같을 수 있다.
계층적 코딩 구조가 사용되거나 가능화된 구현에서, B 프레임을 위한 B 프레임 프레임 레벨 양자화 파라미터(Frame Level Quantization Parameter: FLQP)(119)는 식 (14)에 관해서 논의된 바와 같이 결정될 수 있고, B 참조 프레임을 위하여, B 프레임 프레임 레벨 양자화 파라미터(Frame Level Quantization Parameter: FLQP)(119)는 참조 B 프레임 QP 값 및 참조 P 프레임 QP 값(가령, B 참조 프레임과 연관된 P 프레임의 참조 양자화 파라미터)의 평균에 기반할 수 있다. 예컨대, B 참조 프레임에 대하여, B 프레임 프레임 레벨 양자화 파라미터(Frame Level Quantization Parameter: FLQP)(119)는 식 (15)에 보여진 바와 같이 결정될 수 있다:
Figure 112016094513182-pct00013
여기서 QPB _reference_frame은 B 참조 프레임 프레임 레벨 양자화 파라미터(가령, B 프레임 FLQP(119) 중 하나)일 수 있고, QPB _reference는 위에서 논의된 바와 같은 참조 B 프레임 QP 값일 수 있으며, QPP _reference는 위에서 논의된 바와 같은 참조 P 프레임 QP 값일 수 있다.
도 1에 도시된 바와 같이, B 프레임 FLQP(120)는 블록 기반 QP 조절 모듈(110)로 송신될 수 있다.
기술된 바와 같이, 블록 기반 QP 조절 모듈(110)은 I 프레임, P 프레임 및 B 프레임을 위한 프레임 레벨 양자화 파라미터(가령, 비디오 프레임을 위한 양자화 파라미터)(가령, I 프레임 FLQP(118), P 프레임 FLQP(119) 및 B 프레임 FLQP(120))를 모듈(107, 108 및 109)를 통하여 각각 수신할 수 있다. 블록 기반 QP 조절 모듈(110)은, 비디오 프레임의 개별 블록을 위하여(가령, 모든 프레임 유형을 위하여), 블록 레벨 양자화 파라미터(Block Level Quantization Parameter: BLQP)(125)를 생성할 수 있다. 몇몇 예에서, 블록 기반 QP 조절 모듈(110)은 블록을 기술하는 정보, 블록과 연관된 움직임 벡터(motion vector), 모드, 또는 유사한 것을 시스템(100)의 다른 모듈로부터 수신할 수 있다. 도시된 바와 같이, 블록 기반 QP 조절 모듈(110)은 아래에서 추가로 논의되는 바와 같이 양자화 모듈(112) 및/또는 모드 선택(113)으로 블록 레벨 양자화 파라미터(125)를 송신할 수 있다.
몇몇 예에서, BLQP(125)는 비디오 프레임(블록은 이의 일부분임)을 위한 프레임 레벨 양자화 파라미터에 기반하여 생성될 수 있다. 예컨대, 비디오 프레임의 각각의 블록을 위하여, 블록 레벨 양자화 파라미터는 비디오 프레임의 프레임 레벨 양자화 파라미터와, 블록의 복잡도와, 비디오 프레임의 복잡도에 기반하여 생성될 수 있다. 비디오 프레임의 블록은, 예컨대 매크로블록(macroblock)(가령, AVC에서의 MB), 코딩 유닛(coding unit)(가령, HEVC에서의 CU), 파티션(partition), 슬라이스(slice), 또는 유사한 것과 같은 임의의 적합한 블록일 수 있다. 논의되는 바와 같이, 프레임 레벨 QP는 높은 HVS 민감도를 갖는 블록을 위해 더 작은 값으로 그리고 낮은 HVS 민감도와 함께 더 큰 값으로 조절될 수 있다.
일례에서, 비디오 프레임의 평균 복잡도에 대한 블록의 복잡도의 비율이 결정될 수 있다. 예컨대, 블록의 복잡도는 블록 예측 왜곡, 블록 분산, 또는 이들의 조합에 기반할 수 있다. 비디오 프레임의 복잡도는 유사한 결정(가령, 블록 예측 왜곡의 평균, 블록 분산의 평균, 또는 이들의 조합)에 기반할 수 있다. 그러한 비율은, 예컨대, 왜곡 비율(distortion ratio)로서 기술될 수 있다. 몇몇 예에서, 더 낮은 왜곡 비율(가령, 1 미만)은 비디오 프레임의 높은 HVS 민감도 블록 또는 영역을 나타낼 수 있다. 몇몇 예에서, 왜곡 비율은 임계치 또는 임계치(들)와 비교될 수 있고, 그 비교에 기반하여, 프레임 레벨 양자화 파라미터는 블록 레벨 양자화 파라미터를 생성하기 위해 수정될 수 있다. 일 실시예에서, 비디오 프레임의 복잡도에 대한 개별 블록의 복잡도의 비율이 1보다 더 큰 경우 블록 레벨 양자화 파라미터는 프레임 레벨 양자화 파라미터보다 더 클 수 있다(가령, 프레임 레벨 양자화 파라미터는 블록 레벨 양자화 파라미터를 결정하기 위해 증가될 수 있음).
인트라 프레임(그리고 연관된 I 프레임 FLQP(118))에 대하여, 각각의 블록을 위한 왜곡 비율은 논의된 바와 같이 결정될 수 있다. 몇몇 예에서, 각각의 블록에 대하여, 블록 레벨 양자화 파라미터(Block Level Quantization Parameter: BLQP)는 왜곡 비율과 임계치와의 비교에 기반하여 그리고 I 프레임의 FLQP에 기반하여 결정될 수 있다. 예컨대, 만약 왜곡 비율이 임계치보다 더 큰 경우, 블록 레벨 양자화 파라미터(Block Level Quantization Parameter: BLQP)는 FLQP와 같다고 결정될 수 있다. 만약 왜곡 비율이 임계치보다 더 작은 경우, 왜곡 비율에 기반하여 오프셋이 결정될 수 있고 오프셋은 BLQP를 결정하기 위해 FLQP에 적용될 수 있다(가령, BLQP를 결정하기 위해 오프셋만큼 FLQP가 감소될 수 있음). 몇몇 예에서, 블록 레벨 QP는 임계치보다 더 큰 왜곡을 갖는 I 프레임의 블록에 대해 식 (16)에 보여진 바와 같이 결정될 수 있다:
Figure 112016094513182-pct00014
여기서 QPIntra _block은 임계치보다 더 큰 왜곡 비율을 갖는 인트라 블록을 위한 블록 레벨 양자화 파라미터일 수 있고, QPINTRA는 I 프레임 프레임 레벨 양자화 파라미터일 수 있으며, OffsetI는 오프셋을 결정하는 함수일 수 있고, Distortion_Ratio는 논의된 바와 같은 왜곡 비율일 수 있다. 몇몇 예에서, 낮은 복잡도 영역 내의 블록이 프레임 레벨 QP보다 최대 6 단위가 작은 블록 레벨 양자화 파라미터를 가질 수 있도록 오프셋은 약 -1 내지 -6의 범위 내에 있을 수 있다. OffsetI는 선형 함수, 선택 함수 또는 유사한 것과 같은 임의의 적합한 함수일 수 있다. 논의된 바와 같이, 몇몇 예에서, OffsetI는 -1 내지 -6의 범위 내의 오프셋을 제공할 수 있으나, -1부터 -4까지 또는 -2 내지 -3 또는 유사한 것의 범위와 같은 임의의 적합한 오프셋 또는 오프셋의 범위가 사용될 수 있다.
(위에서 논의된 바와 같은) 장면 변화 프레임인 P 프레임(그리고 연관된 P 프레임 FLQP(118))에 대하여, 장면 변화 P 프레임의 각각의 블록을 위한 왜곡 비율은 위에서 논의된 바와 같이 결정될 수 있고 BLQP는 왜곡 비율과 임계치와의 비교에 기반하여 그리고 장면 변화 P 프레임 FLQP에 기반하여 결정될 수 있다. 예컨대, 만약 왜곡 비율이 임계치보다 더 큰 경우, 블록 레벨 양자화 파라미터(Block Level Quantization Parameter: BLQP)는 FLQP와 같다고 결정될 수 있다. 만약 왜곡 비율이 임계치보다 더 작은 경우, 왜곡 비율에 기반하여 오프셋이 결정될 수 있고 오프셋은 식 (17)에 보여진 바와 같이 BLQP를 결정하기 위해 FLQP에 적용될 수 있다(가령, BLQP를 결정하기 위해 오프셋만큼 FLQP가 감소될 수 있음):
Figure 112016094513182-pct00015
여기서 QPP _scene_change_block은 임계치보다 더 큰 왜곡 비율을 갖는 장면 변화 P 프레임 블록을 위한 블록 레벨 양자화 파라미터일 수 있고, QPP _scene_change_frame은 장면 변화 P 프레임 프레임 레벨 양자화 파라미터일 수 있으며, OffsetP는 오프셋을 결정하는 함수일 수 있고, Distortion_Ratio는 논의된 바와 같은 왜곡 비율일 수 있다. 몇몇 예에서, 낮은 복잡도 영역 내의 블록이 프레임 레벨 QP보다 최대 6 단위가 작은 블록 레벨 양자화 파라미터를 가질 수 있도록 오프셋은 약 -1 내지 -6의 범위 내에 있을 수 있다. 함수 OffsetI에 관해서 논의된 바와 같이, OffsetP는 선형 함수, 선택 함수 또는 유사한 것과 같은 임의의 적합한 함수일 수 있고 OffsetP는 -1 내지 -6, -1 내지 -4, -2 내지 -3 또는 유사한 것의 범위 내의 오프셋과 같은 임의의 적합한 오프셋 또는 오프셋의 범위를 제공할 수 있다.
장면 변화 프레임이 아닌 P 프레임에 대하여(가령, P 프레임 FLQP(118)) 그리고 B 프레임에 대하여(가령, 인터 프레임에 대하여), 각각의 블록을 위한 왜곡 비율은 위에서 논의된 바와 같이 결정될 수 있고 BLQP는 왜곡 비율과 하나 이상의 임계치와의 비교에 기반하여 그리고 비 장면 변화 또는 B 프레임 FLQP에 기반하여 결정될 수 있다. 몇몇 예에서, BLQP는 또한 블록의 움직임 벡터에 기반할 수 있다. 예컨대, 만약 블록을 위한 왜곡 비율이 제1 임계치보다 더 큰 경우, BLQP를 결정하기 위해 FLQP에 양의 오프셋(positive offset)이 적용될 수 있다. 양의 오프셋은, 예컨대, 1 내지 3, 1 내지 4, 또는 유사한 것의 범위 내의 오프셋과 같이 왜곡 비율에 기반하는 임의의 적합한 오프셋 또는 오프셋의 범위일 수 있다. 일 실시예에서, 블록(가령, HVS 낮은 민감도 영역 내의 블록)이 프레임 레벨 양자화 파라미터보다 최대 3이 더 큰 양자화 파라미터를 사용할 수 있도록 양의 오프셋은 1 내지 3의 범위 내에 있다. 나아가, 만약 블록을 위한 왜곡 비율이 제2 임계치보다 더 작은 경우, BLQP를 결정하기 위해 FLQP에 음의 오프셋(negative offset)이 적용될 수 있다. 음의 오프셋은, 예컨대, -1 내지 -4, -1 내지 -2, 또는 유사한 것의 범위 내의 오프셋과 같이 왜곡 비율에 기반하는 임의의 적합한 오프셋 또는 오프셋의 범위일 수 있다. 일 실시예에서, 블록(가령, HVS 민감 영역 내의 블록)이 프레임 레벨 양자화 파라미터보다 최대 4가 더 작은 양자화 파라미터를 사용할 수 있도록 음의 오프셋은 -1 내지 -4의 범위 내에 있다.
논의된 바와 같이, 몇몇 예에서, 양의 오프셋 결정을 위해 제1 임계치가 사용될 수 있고 음의 오프셋 결정을 위해 제2 임계치가 사용될 수 있다. 몇몇 예에서, 제1 임계치는 제2 임계치보다 더 클 수 있다. 일 실시예에서, 제1 임계치는 제2 임계치보다 더 클 수 있고, 만약 블록을 위한 왜곡 비율이 제1 및 제2 임계치 사이에 있는 경우, 블록을 위한 블록 레벨 QP는 프레임 레벨 QP로 설정된다. 몇몇 예에서, 제1 임계치는 상이한 프레임 유형에 대해 동일하거나 상이할 수 있고 제2 임계치는 상이한 프레임 유형에 대해 동일하거나 상이할 수 있다.
나아가, 몇몇 예에서, 오프셋(양 또는 음 또는 변화 없음)을 결정하는 데에 또는 왜곡 비율 기반 오프셋을 수정하는 데에 블록과 연관된 움직임 벡터가 사용될 수 있다. 예컨대, 큰 움직임 벡터가 있는 블록에 대하여, 양의 오프셋이 적용될 수 있고/있거나 왜곡 비율에 기반하여 결정된 오프셋은 증가될 수 있다. 유사하게, 작거나 0인 움직임 벡터가 있는 블록에 대하여, 음의 오프셋이 적용될 수 있고/있거나 왜곡 비율에 기반하여 결정된 오프셋은 감소될 수 있다.
도 1에 도시된 바와 같이, 블록 기반 QP 조절 모듈(110)은 BLQP(125)를 양자화 모듈(112) 및/또는 모드 선택 모듈(113)에 송신할 수 있다. 양자화 모듈(112)은 BLQP(125) 및 변환 계수(111)를 수신할 수 있고 BLQP(125)에 기반하여 변환 계수(111)를 양자화할 수 있다. 변환 계수(111)는, 예컨대 루마(luma) 데이터, 크로마(chroma) 데이터, 차등(differential) 데이터(가령, 예측된 블록과 실제의 블록 간의 차이에 대한 것), 또는 유사한 것의 이산 코사인 변환(discrete cosine transform)에 기반한 변환 계수와 같은 임의의 적합한 변환 계수일 수 있다. 예컨대, 양자화 모듈(112)은 사용하여 변환 계수의 블록을, 본 문서 내에 논의된 바와 같이 그 블록을 위한 블록 기반 QP를 사용하여 양자화할 수 있다. HVS 민감 영역 또는 시퀀스 내에 있는 블록은 (더 높은 품질을 위해) 더 작은 QP를 사용하여 양자화될 수 있고 낮은 HVS 민감 영역 또는 시퀀스 내에 있는 블록은 (비트레이트 절감을 위해) 더 큰 QP를 사용하여 양자화될 수 있다. 모드 선택 모듈(113)은 BLQP(125)를 수신할 수 있고 모드 선택 및/또는 모드 판단을 위해 사용될 수 있다.
도시된 바와 같이, BLQP(125), 양자화된 변환 계수 및/또는 모드 선택 데이터는 엔트로피 인코더(114)에 송신될 수 있다. 엔트로피 인코더(114)는 BLQP(125), 양자화된 변환 계수, 모드(들) 데이터 및/또는 다른 데이터(가령, 움직임 벡터 및 유사한 것)를 비트스트림(115)으로 엔트로피 인코딩할 수 있다. 몇몇 예에서, 양자화된 변환 계수, 모드(들) 데이터 및/또는 다른 데이터는 인코딩 전에 스캐닝 모듈에 제공될 수 있다. 나아가, 엔트로피 인코딩에 관해서 본 문서 내에 논의되나, 임의의 적합한 인코딩 기법(들)이 사용될 수 있다. 비트스트림(115)은 디코딩을 위해 다른 디바이스에 송신되거나 메모리 디바이스 또는 유사한 것에 세이브될(saved) 수 있다. 몇몇 예에서, 비트스트림(115)은, 예컨대 AVC 또는 HEVC 또는 유사한 것을 준수하는 비트스트림과 같은 표준 준수 비트스트림일 수 있다.
도 1에 관해서 그리고 본 문서 내에 다른 곳에서 논의된 기법은 감소된 비트레이트의 이점과 함께 유사하거나 더 나은 대상 비디오 품질을 제공할 수 있다.
도 2는 본 개시의 적어도 몇몇 구현에 따라 배열된, 일정한 시각적 품질을 구비한 비디오 코딩을 제공하기 위한 예시적 프로세스(200)를 보여주는 흐름도이다. 프로세스(200)는 도 2에 예시된 바와 같은 하나 이상의 동작(201 내지 221)을 포함할 수 있다. 프로세스(200)는 비디오 코딩 프로세스의 적어도 일부를 형성할 수 있다. 비한정적인 예로서, 프로세스(200)는 본 문서 내에 논의된 시스템(100)에 의해 시행되는(undertaken) 비디오를 위한 비디오 코딩 프로세스의 적어도 일부를 형성할 수 있다.
프로세스(200)는 시작 동작(201), "시작"에서 시작할 수 있는데, 여기서 일정 시각적 품질 코딩이 가능화되거나 선택될 수 있다(가령, 일정 시각적 품질 모드가 설정되거나 선택될 수 있음). 나아가, ICQ 인자(103)와 같은 ICQ 인자가 본 문서 내에 논의된 바와 같이 사용자 또는 시스템(100) 또는 유사한 것에 의해 결정될 수 있고 비디오(102)와 같은 비디오 시퀀스 또는 유사한 것이 코딩을 위해 선택될 수 있다.
프로세스(200)는 동작(202), "비디오 시퀀스 및 일정 품질 인자(ICQ 인자)를 수신함"에서 계속될 수 있는데, 여기서 비디오 시퀀스 및 ICQ 인자가 수신될 수 있다. 예컨대, 비디오(102) 및 ICQ 인자(103)가 양자화 파라미터 모듈(101)을 통하여 수신될 수 있다.
프로세스(200)는 동작(203), "프레임 유형"에서 계속될 수 있는데, 여기서 비디오 시퀀스의 프레임의 프레임 유형이 결정될 수 있다. 예컨대, 임의의 프레임 유형(가령, I, P, B, B 참조 또는 유사한 것)이 결정될 수 있다. 프레임 유형에 따라, 처리가 동작(204, 205 또는 206)에서 계속될 수 있다. 프로세스(200)의 동작은 제시의 명료성을 위하여 선형 또는 순차적 방식으로 기술될 수 있으나, 실제로는, 임의의 순서로 그리고/또는 병렬로 프로세스(200)의 동작이 수행될 수 있다. 예컨대, 프로세스(200)를 사용하여 여러 프레임이 한 번에 처리될 수 있다.
만약 프레임 유형이 I 프레임이라고 결정되는 경우, 프로세스(200)는 동작(204), "초기 QP (I)"(Initial QP (I))에서 계속될 수 있는데, 여기서 I 프레임에 대해 초기 양자화 파라미터가 결정될 수 있다. 예컨대, 초기 QP (I)는 본 문서 내에 논의된 바와 같이 식 (1)에 기반하여 초기 QP 추정 모듈(105)에 의해 결정될 수 있다.
프로세스(200)는 동작(207), "QP I 프레임"(QP I-Frame)에서 계속될 수 있는데, 여기서 I 프레임에 대해 프레임 레벨 QP가 결정될 수 있다. 예컨대, 인트라 프레임 QP 추정 모듈(107)은 I 프레임을 위한 초기 양자화 파라미터 및 (가령, 공간적/시간적 복잡도 모듈(104)로부터 수신된 바와 같은) I 프레임의 공간적 및/또는 시간적 복잡도에 기반하여 I 프레임을 위한 프레임 레벨 QP를 결정할 수 있다. 일 실시예에서, 인트라 프레임 QP 추정 모듈(107)은 본 문서 내에 논의된 바와 같이 식 (4)에 기반하여 I 프레임을 위한 프레임 레벨 QP를 결정할 수 있다.
프로세스(200)는 동작(210), "I 프레임의 블록을 위한 QP"에서 계속될 수 있는데, 여기서 I 프레임의 블록에 대해 블록 레벨 양자화 파라미터가 결정될 수 있다. 예컨대, 블록 기반 QP 조절 모듈(110)은 블록을 위한 왜곡 비율 및 임계치와의 비교에 기반하여 I 프레임을 위한 블록 레벨 QP를 결정할 수 있다. 예컨대, 만약 블록의 왜곡 비율이 임계치보다 더 큰 경우, 블록을 위한 블록 레벨 QP는 프레임 레벨 QP일 수 있고, 만약 블록의 왜곡 비율이 임계치보다 더 작은 경우, 블록을 위한 블록 레벨 QP는 본 문서 내에 논의된 바와 같이 식 (16)에 기반하여 결정될 수 있다.
프로세스(200)는 동작(220), "양자화, 모드 선택, 인코딩"에서 계속될 수 있는데, 여기서 모드 선택(들)은 I 프레임 BLQP에 기반할 수 있고, 변환 계수는 I 프레임 BLQP에 기반하여 양자화될 수 있으며, 양자화된 변환 계수, I 프레임 BLQP, 모드(들) 데이터 및/또는 추가적인 데이터는 비트스트림으로 엔트로피 인코딩될 수 있다. 예컨대, 양자화 모듈(112)은 (논의된 바와 같이 다른 프레임 BLQP를 포함할 수 있는) I 프레임 BLQP(125)에 기반하여 변환 계수를 양자화할 수 있고, 모드 선택 모듈(113)은 I 프레임 BLQP(125)에 기반하여 모드 선택(들)을 행할 수 있으며, 엔트로피 인코더(114)는 양자화된 변환 계수, I 프레임 BLQP, 모드(들) 데이터 및/또는 추가적인 데이터를 비트스트림(115)으로 인코딩할 수 있다.
동작(203)으로 되돌아가서, 만약 프레임 유형이 P 프레임이라고 결정되는 경우, 프로세스(200)는 동작(205), "초기 QP (P)"(Initial QP (P))에서 계속될 수 있는데, P 프레임에 대해 초기 양자화 파라미터가 결정될 수 있다. 예컨대, 초기 QP (P)는 본 문서 내에 논의된 바와 같이 식 (2)에 기반하여 초기 QP 추정 모듈(105)에 의해 결정될 수 있다.
프로세스(200)는 동작(208), "참조 QP (P)"(Reference QP (P))에서 계속될 수 있는데, 여기서 P 프레임(그리고/또는 다른 P 프레임)을 위한 참조 QP가 결정되고/되거나 유지될 수 있다. 예컨대, 동작(207)으로부터 동작(208)으로 점선을 통하여 도시된 바와 같이 그리고 동작(207)에서 결정된 바와 같은 (가령, 현재의 P 프레임(들)의 I 프레임 참조를 위한) I 프레임의 프레임 레벨 QP에 기반하여 P 프레임을 위한 참조 QP가 결정될 수 있다. 일례에서, 장면 변화 검출 및 P 프레임 QP 추정 모듈(108)은 본 문서 내에 논의된 바와 같이 식 (5)에 기반하여 I 프레임 FLQP를 사용하여 참조 QP를 결정할 수 있다. 다른 예에서, 동작(217)으로부터 동작(208)으로 점선을 통하여 도시된 바와 같이 그리고 인트라 또는 장면 변화 참조 프레임을 갖는 이전의 P 프레임의 프레임 레벨 QP에 기반하여 P 프레임을 위한 참조 QP가 결정되거나 재결정되거나 수정될 수 있다. 다른 예에서, 장면 변화 검출 및 P 프레임 QP 추정 모듈(108)은 본 문서 내에 논의된 바와 같이 식 (11)에 기반하여 인트라 또는 장면 변화 참조 프레임을 갖는 이전의 P 프레임의 QP를 사용하여 참조 QP를 결정할 수 있다.
프로세스(200)는 판단 동작(211), "장면 변화?"에서 계속될 수 있는데, 여기서 P 프레임이 장면 변화 P 프레임인지가 결정될 수 있다. 예컨대, 장면 변화 검출 및 P 프레임 QP 추정 모듈(108)은 P 프레임의 시간적 복잡도에 기반하여 P 프레임이 장면 변화 P 프레임인지를 결정할 수 있다. 일 실시예에서, 비율이 임계치보다 더 큰 경우, 타겟 P 프레임이 장면 변화 프레임이라고 결정되도록, 과거의 프레임에 기반하는 과거 평균 시간적 복잡도 및 타겟 P 프레임의 시간적 복잡도에 기반하여 비율이 결정될 수 있다.
만약 P 프레임이 장면 변화 P 프레임이라고 결정되는 경우, 프로세스(200)는 동작(214), "QP, P 프레임, SC"(QP, P-Frame, SC)에서 계속될 수 있는데, 여기서 장면 변화 P 프레임에 대해 프레임 레벨 QP가 결정될 수 있다. 예컨대, 장면 변화 검출 및 P 프레임 QP 추정 모듈(108)은 I 프레임을 위한 초기 양자화 파라미터 및 (가령, 공간적/시간적 복잡도 모듈(104)로부터 수신된 바와 같은) 장면 변화 P 프레임의 공간적 및/또는 시간적 복잡도에 기반하여 장면 변화 P 프레임을 위한 프레임 레벨 QP를 결정할 수 있다. 일 실시예에서, 장면 변화 검출 및 P 프레임 QP 추정 모듈(108)은 본 문서 내에 논의된 바와 같이 식 (7)에 기반하여 장면 변화 P 프레임을 위한 프레임 레벨 QP를 결정할 수 있다.
프로세스(200)는 동작(219), "P 프레임의 블록을 위한 QP를 결정함"에서 계속될 수 있는데, 여기서 장면 변화 P 프레임의 블록에 대해 블록 레벨 양자화 파라미터가 결정될 수 있다. 예컨대, 블록 기반 QP 조절 모듈(110)은 블록을 위한 왜곡 비율(가령, 프레임의 복잡도에 대한 블록의 복잡도의 비율) 및 임계치와의 비교에 기반하여 장면 변화 P 프레임을 위한 블록 레벨 QP를 결정할 수 있다. 예컨대, 만약 블록의 왜곡 비율이 임계치보다 더 큰 경우, 블록을 위한 블록 레벨 QP는 프레임 레벨 QP일 수 있고, 만약 블록의 왜곡 비율이 임계치보다 더 작은 경우, 블록을 위한 블록 레벨 QP는 본 문서 내에 논의된 바와 같이 식 (17)에 기반하여 결정될 수 있다.
프로세스(200)는 동작(220), "양자화, 모드 선택, 인코딩"에서 계속될 수 있는데, 여기서 모드 선택(들)은 장면 변화 P 프레임 BLQP에 기반할 수 있고, 변환 계수는 장면 변화 P 프레임 BLQP에 기반하여 양자화될 수 있으며, 양자화된 변환 계수, 장면 변화 P 프레임 BLQP, 모드(들) 데이터 및/또는 추가적인 데이터는 비트스트림으로 엔트로피 인코딩될 수 있다. 예컨대, 양자화 모듈(112)은 (논의된 바와 같이 다른 프레임 BLQP를 포함할 수 있는) 장면 변화 P 프레임 BLQP(125)에 기반하여 변환 계수를 양자화할 수 있고, 모드 선택 모듈(113)은 장면 변화 P 프레임 BLQP에 기반하여 모드 선택(들)을 행할 수 있으며, 엔트로피 인코더(114)는 양자화된 변환 계수, I 프레임 BLQP, 모드(들) 데이터 및/또는 추가적인 데이터를 비트스트림(115)으로 인코딩할 수 있다.
동작(211)로 되돌아가서, 만약 P 프레임이 장면 변화 P 프레임이 아니라고 결정된 경우, 프로세스(200)는 동작(213), "시간적 비율"에서 계속될 수 있는데, 여기서 P 프레임(가령, 비 장면 변화 P 프레임)에 대해 시간적 비율이 결정될 수 있다. 예컨대, 시간적 비율은 본 문서 내에 논의된 바와 같이 식 (9)에 기반하여 장면 변화 검출 및 P 프레임 QP 추정 모듈(108)에 의해 결정될 수 있다.
프로세스(200)는 판단 동작(215), "이전 프레임 인트라 또는 장면 변화(Scene Change: SC)?"에서 계속될 수 있는데, 여기서 현재의 P 프레임(가령, 비 장면 변화 P 프레임)을 위한 코딩 참조 프레임이 인트라 프레임(가령, I 프레임) 또는 장면 변화 P 프레임인지가 결정될 수 있다. 예컨대, 장면 변화 검출 및 P 프레임 QP 추정 모듈(108) 또는 시스템(100)의 다른 모듈은 비 장면 변화 P 프레임을 위한 참조 프레임이 인트라 프레임 또는 장면 변화 프레임 P 프레임인지를 결정할 수 있다.
만약 현재의 P 프레임이 인트라 프레임 또는 장면 변화 P 프레임에 기반하는 경우, 프로세스(200)는 동작(217), "QP, P 프레임 (이전의 I 또는 SC)"에서 계속될 수 있는데, 여기서 인트라 또는 장면 변화 참조 프레임을 구비한 비 장면 변화 P 프레임에 대해 프레임 레벨 양자화 파라미터가 결정될 수 있다. 예컨대, 장면 변화 검출 및 P 프레임 QP 추정 모듈(108)은 본 문서 내에 논의된 바와 같이 식 (10)에 기반하여 P 프레임을 위한 프레임 레벨 QP를 결정할 수 있다.
프로세스(200)는 동작(219), "P 프레임의 블록을 위한 QP를 결정함"에서 계속될 수 있는데, 여기서 인트라 또는 장면 변화 참조 프레임을 갖는 비 장면 변화 P 프레임의 블록에 대해 블록 레벨 양자화 파라미터가 결정될 수 있다. 예컨대, 블록 기반 QP 조절 모듈(110)은 각각의 블록을 위한 왜곡 비율(가령, 프레임의 복잡도에 대한 블록의 복잡도의 비율) 및 왜곡 비율과 하나 이상의 임계치와의 비교에 기반하여 P 프레임을 위한 블록 레벨 QP를 결정할 수 있다. 예컨대, 만약 블록을 위한 왜곡 비율이 제1 임계치보다 더 큰 경우, 블록 레벨 QP를 결정하기 위해 프레임 레벨 QP에 양의 오프셋이 적용될 수 있고, 만약 블록을 위한 왜곡 비율이 제2 임계치보다 더 작은 경우, 본 문서 내에 논의된 바와 같이 블록 레벨 QP를 결정하기 위해 프레임 레벨 QP에 음의 오프셋이 적용될 수 있다.
프로세스(200)는 동작(220), "양자화, 모드 선택, 인코딩"에서 계속될 수 있는데, 여기서 모드 선택(들)은 인트라 또는 장면 변화 P 프레임 참조를 구비한 비 장면 변화 P 프레임 BLQP에 기반할 수 있고, 변환 계수는 그 BLQP에 기반하여 양자화될 수 있으며, 양자화된 변환 계수, 장면 변화 P 프레임 BLQP, 모드(들) 데이터 및/또는 추가적인 데이터는 비트스트림으로 엔트로피 인코딩될 수 있으니, I 프레임 BLQP 및/또는 장면 변화 P 프레임 BLQP에 관하여 논의된 바와 같다.
동작(215)으로 되돌아가서, 만약 현재의 P 프레임이 인트라 프레임에도 장면 변화 P 프레임에도 기반하지 않는 경우, 프로세스(200)는 동작(218), "QP, P 프레임"(QP, P-Frame)에서 계속될 수 있는데, 여기서 인트라 참조 프레임도 장면 변화 참조 프레임도 갖지 않는 비 장면 변화 P 프레임에 대해 프레임 레벨 양자화 파라미터가 결정될 수 있다. 예컨대, 장면 변화 검출 및 P 프레임 QP 추정 모듈(108)은 본 문서 내에 논의된 바와 같이 식 (12)에 기반하여 P 프레임을 위한 프레임 레벨 QP를 결정할 수 있다.
프로세스(200)는 동작(219), "P 프레임의 블록을 위한 QP를 결정함"에서 계속될 수 있는데, 여기서 인트라 참조 프레임도 장면 변화 참조 프레임도 갖지 않는 비 장면 변화 P 프레임의 블록에 대해 블록 레벨 양자화 파라미터가 결정될 수 있다. 예컨대, 블록 기반 QP 조절 모듈(110)은 각각의 블록을 위한 왜곡 비율(가령, 프레임의 복잡도에 대한 블록의 복잡도의 비율) 및 왜곡 비율과 하나 이상의 임계치와의 비교에 기반하여 P 프레임을 위한 블록 레벨 QP를 결정할 수 있다. 예컨대, 만약 블록을 위한 왜곡 비율이 제1 임계치보다 더 큰 경우, 블록 레벨 QP를 결정하기 위해 프레임 레벨 QP에 양의 오프셋이 적용될 수 있고, 만약 블록을 위한 왜곡 비율이 제2 임계치보다 더 작은 경우, 본 문서 내에 논의된 바와 같이 블록 레벨 QP를 결정하기 위해 프레임 레벨 QP에 음의 오프셋이 적용될 수 있다.
프로세스(200)는 동작(220), "양자화, 모드 선택, 인코딩"에서 계속될 수 있는데, 여기서 모드 선택(들)은 인트라 또는 장면 변화 P 프레임 참조 프레임을 갖지 않는 비 장면 변화 P 프레임 BLQP에 기반할 수 있고, 변환 계수는 그 BLQP에 기반하여 양자화될 수 있으며, 양자화된 변환 계수, 장면 변화 P 프레임 BLQP, 모드(들) 데이터 및/또는 추가적인 데이터는 비트스트림으로 엔트로피 인코딩될 수 있으니, 논의된 바와 같다.
동작(203)으로 되돌아가서, 만약 프레임 유형이 B 프레임이라고 결정된 경우, 프로세스(200)는 동작(206), "초기 QP (B)"(Initial QP (B))에서 계속될 수 있는데, 여기서 B 프레임에 대해 초기 양자화 파라미터가 결정될 수 있다. 예컨대, 초기 QP (B)는 본 문서 내에 논의된 바와 같이 식 (3)에 기반하여 초기 QP 추정 모듈(105)에 의해 결정될 수 있다.
프로세스(200)는 동작(209), "참조 QP (B)"(Reference QP (B))에서 계속될 수 있는데, 여기서 B 프레임(그리고/또는 다른 B 프레임)을 위한 참조 QP가 결정되고/되거나 유지될 수 있다. 예컨대, 프레임 레벨 QP에 기반하여, 동작(207)으로부터 동작(209)으로 점선을 통하여 도시된 바와 같이 그리고 동작(207)에서 결정된 바와 같은 I 프레임의 프레임 레벨 QP에 기반하여 B 프레임을 위한 참조 QP가 결정될 수 있다. 일례에서, B 프레임 QP 추정 모듈(109)은 본 문서 내에 논의된 바와 같이 식 (6)에 기반하여 I 프레임 FLQP를 사용하여 참조 QP를 결정할 수 있다. 다른 예에서, 동작(215)으로부터 동작(209)으로 점선을 통하여 도시된 바와 같이 그리고 이전의 장면 변화 P 프레임의 프레임 레벨 QP에 기반하여 B 프레임을 위한 참조 QP가 결정되거나 재결정되거나 수정될 수 있다. 일례에서, B 프레임 QP 추정 모듈(109)은 본 문서 내에 논의된 바와 같이 식 (8)에 기반하여 장면 변화 P 프레임 FLQP를 사용하여 참조 QP를 결정할 수 있다. 또 다른 예에서, 동작(218)으로부터 동작(209)으로 점선을 통하여 도시된 바와 같이 그리고 인트라 프레임 또는 장면 변화 프레임인 참조 프레임을 갖지 않는 이전의 비 장면 변화 P 프레임의 프레임 레벨 QP에 기반하여 B 프레임을 위한 참조 QP가 결정되거나 재결정되거나 수정될 수 있다. 일례에서, B 프레임 QP 추정 모듈(109)은 본 문서 내에 논의된 바와 같이 식 (13)에 기반하여 P 프레임 FLQP를 사용하여 참조 QP를 결정할 수 있다.
프로세스(200)는 동작(212), "QP, B 프레임"(QP, B-Frame)에서 계속될 수 있는데, 여기서 B 프레임에 대해 프레임 레벨 QP가 결정될 수 있다. 예컨대, B 프레임 QP 추정 모듈(109)은 B 프레임을 위한 참조 양자화 파라미터를 생성하기 위해 수정된 바와 같은 B 프레임을 위한 초기 양자화 파라미터에 기반하여 B 프레임을 위한 프레임 레벨 QP를 결정할 수 있다. 일 실시예에서, B 프레임 QP 추정 모듈(109)은 본 문서 내에 논의된 바와 같이 식 (14)에 기반하여 B 프레임을 위한 프레임 레벨 QP를 결정할 수 있다(가령, 프레임 레벨 QP는 유지된 B 프레임 참조 QP일 수 있음). 다른 실시예에서, B 프레임 QP 추정 모듈(109)은 본 문서 내에 논의된 바와 같이 식(15)에 기반하여 B 프레임을 위한(가령, B 참조 프레임을 위한) 프레임 레벨 QP를 결정할 수 있다.
프로세스(200)는 동작(216), "B 프레임의 블록을 위한 QP를 결정함"에서 계속될 수 있는데, 여기서 B 프레임의 블록에 대해 블록 레벨 양자화 파라미터가 결정될 수 있다. 예컨대, 블록 기반 QP 조절 모듈(110)은 각각의 블록을 위한 왜곡 비율(가령, 프레임의 복잡도에 대한 블록의 복잡도의 비율) 및 왜곡 비율과 하나 이상의 임계치와의 비교에 기반하여 B 프레임을 위한 블록 레벨 QP를 결정할 수 있다. 예컨대, 만약 블록을 위한 왜곡 비율이 제1 임계치보다 더 큰 경우, 블록 레벨 QP를 결정하기 위해 프레임 레벨 QP에 양의 오프셋이 적용될 수 있고, 만약 블록을 위한 왜곡 비율이 제2 임계치보다 더 작은 경우, 본 문서 내에 논의된 바와 같이 블록 레벨 QP를 결정하기 위해 프레임 레벨 QP에 음의 오프셋이 적용될 수 있다.
프로세스(200)는 동작(220), "양자화, 모드 선택, 인코딩"에서 계속될 수 있는데, 여기서 모드 선택(들)은 B 프레임 참조 BLQP에 기반할 수 있고, 변환 계수는 그 BLQP에 기반하여 양자화될 수 있으며, 양자화된 변환 계수, 장면 변화 P 프레임 BLQP, 모드(들) 데이터 및/또는 추가적인 데이터는 비트스트림으로 엔트로피 인코딩될 수 있으니, 논의된 바와 같다.
프로세스(200)는 동작(221), "비트스트림"에서 종료할 수 있는데, 여기서 위의 기법에 기반하여 생성되는 비트스트림이 생성될 수 있다. 생성된 비트스트림은 메모리 디바이스를 통하여 저장되고/되거나 압축해제, 비디오 프레임의 생성 및 사용자로의 비디오 프레임의 제시를 위해 디코더에 송신될 수 있다.
도 3은 본 개시의 적어도 몇몇 구현에 따라 배열된 예시적 비트스트림(300)을 보여준다. 몇몇 예에서, 비트스트림(300)은 도 1에 도시된 바와 같은 비트스트림(115)에 대응할 수 있다. 도 3에 도시되지는 않지만, 몇몇 예에서, 비트스트림(300)은 헤더(header) 부분 또는 부분들 및 데이터 부분 또는 부분들을 포함할 수 있다. 비트스트림(300)은 인코딩된 비디오 데이터와 연관된 임의의 적합한 데이터를 포함할 수 있다. 도 3에 도시된 바와 같이, 비트스트림(300)은 인코딩된 양자화된 변환 계수(301), 인코딩된 모드 데이터(302), 인코딩된 I 프레임 블록 레벨 양자화 파라미터(303), 인코딩된 P 프레임 블록 레벨 양자화 파라미터(304), 인코딩된 B 프레임 블록 레벨 양자화 파라미터(305), 그리고/또는 인코딩된 움직임 벡터 데이터(306)를 포함할 수 있다. 논의된 바와 같이, 비트스트림(300)은 시스템(100)의 엔트로피 인코더(114)를 통하여 생성될 수 있다.
예컨대, 비트스트림(300)은 (가령, 양자화 모듈(112)에 의해) 본 문서 내에 논의된 바와 같이 연관된 블록 레벨 양자화 파라미터에 기반하여 양자화된 변환 계수를 포함하는 인코딩된 양자화된 변환 계수(301)를 포함할 수 있다. 양자화된 변환 계수는 인코딩되고(가령, 엔트로피 인코더(114)를 통하여 엔트로피 인코딩되고) 비트스트림 내에 삽입될 수 있다. 나아가, 비트스트림(300)은 인코딩되어(가령, 엔트로피 인코더(114)를 통하여 엔트로피 인코딩되어) 비트스트림(300) 내에 삽입된 모드 선택 모듈(113)로부터의 모드(들) 선택 데이터를 포함할 수 있는 인코딩된 모드 데이터(302)를 포함할 수 있다. 또한 도시된 바와 같이, 비트스트림(300)은 인코딩된 I 프레임 블록 레벨 양자화 파라미터(303), 인코딩된 P 프레임 블록 레벨 양자화 파라미터(304), 인코딩된 B 프레임 블록 레벨 양자화 파라미터(305)를 포함할 수 있는데, 이는 인코딩되어(가령, 엔트로피 인코더(114)를 통하여 엔트로피 인코딩되어) 비트스트림(300) 내에 삽입된 블록 레벨 양자화 파라미터(가령, BLQP)를 포함할 수 있다.
논의된 바와 같이, 비트스트림(300)은 예컨대 시스템(100)과 같은 인코더 또는 인코더 시스템을 통하여 생성될 수 있고, 비트스트림(300)은 (가령, 시스템(100)의) 메모리에 저장, 메모리 저장 디바이스(가령, 디스크, 다운로드를 위한 서버, 또는 유사한 것)에 저장될 수 있다. 나아가, 비트스트림(300)은, 비트스트림을 디코딩하고 사용자로의 제시를 위해 비디오 프레임 또는 비디오 프레임의 시퀀스를 생성할 수 있는 디코더에 의해 (가령, 디스크를 판독하기, 스트리밍하기, 다운로드하기, 또는 유사한 것을 통하여) 액세스될 수 있다.
도 4는 본 개시의 적어도 몇몇 구현에 따라 배열된, 일정한 시각적 품질을 구비한 비디오 코딩을 제공하기 위한 예시적 프로세스(400)를 보여주는 흐름도이다. 프로세스(400)는 도 4에 예시된 바와 같은 하나 이상의 동작(401 내지 403)을 포함할 수 있다. 프로세스(400)는 비디오 인코딩 프로세스의 적어도 일부를 형성할 수 있다. 비한정적인 예로서, 프로세스(400)는 본 문서 내에 논의된 시스템(100)에 의해 시행되는 비디오를 위한 비디오 인코딩 프로세스의 적어도 일부를 형성할 수 있다. 또한, 프로세스(400)는 도 5의 시스템(500)을 참조하여 본 문서 내에 기술될 것이다.
도 5는 본 개시의 적어도 몇몇 구현에 따라 배열된, 일정한 시각적 품질을 구비한 비디오 코딩을 제공하기 위한 예시적 시스템(500)의 설명도이다. 도 5에 도시된 바와 같이, 시스템(500)은 그래픽 처리 유닛(Graphics Processing Unit: GPU)(501), 하나 이상의 중앙 처리 유닛(central processing unit)(502) 및 메모리 스토어(memory store)(503)를 포함할 수 있다. 또한 도시된 바와 같이, GPU(501)는 양자화 파라미터 모듈(101), 양자화 모듈(112), 모드 선택 모듈(113) 및/또는 엔트로피 인코더(114)를 포함할 수 있다. 시스템(500)의 예에서, 메모리 스토어(503)는 비디오 프레임 및/또는 비트스트림과 같은 비디오 콘텐트를 저장할 수 있다.
그래픽 처리 유닛(501)은 본 문서 내에 논의된 바와 같은 동작을 제공할 수 있는 임의의 개수 및 유형의 그래픽 처리 유닛을 포함할 수 있다. 그러한 동작은 소프트웨어 또는 하드웨어 또는 이들의 조합을 통하여 구현될 수 있다. 일 실시예에서, 그래픽 처리 유닛(501)의 예시된 모듈들은 회로 또는 유사한 것을 통하여 구현될 수 있다. 예컨대, 그래픽 처리 유닛(501)은 압축된 이미지 데이터를 생성하기 위해 비디오 데이터를 조작하도록 전용으로 된 회로를 포함할 수 있다. 중앙 처리 유닛(502)은 시스템(500)을 위해 제어 및 다른 고수준 기능을 제공할 수 있는 임의의 개수 및 유형의 처리 유닛 또는 모듈을 포함할 수 있다. 메모리 스토어(503)는 휘발성 메모리(가령, 정적 랜덤 액세스 메모리(Static Random Access Memory: SRAM), 동적 랜덤 액세스 메모리(Dynamic Random Access Memory: DRAM) 등등) 또는 비휘발성 메모리(가령, 플래시 메모리(flash memory) 등등) 및 기타 등등과 같은 임의의 유형의 메모리일 수 있다. 일 실시예에서, 메모리 스토어(503)는 비디오 데이터, 예를 들어 프레임 및/또는 블록 레벨 양자화 파라미터, 양자화된 변환 계수, 비트스트림, 또는 본 문서 내에 논의된 임의의 다른 비디오 데이터를 저장하도록 구성될 수 있다. 비한정적인 예에서, 메모리 스토어(503)는 캐시 메모리(cache memory)에 의해 구현될 수 있다. 일 실시예에서, 양자화 파라미터 모듈(101), 양자화 모듈(112), 모드 선택 모듈(113) 및/또는 엔트로피 인코더 모듈(114)은 그래픽 처리 유닛(501)의 실행 유닛(Execution Unit: EU)을 통하여 구현될 수 있다. EU는, 예컨대, 프로그램가능(programmable) 로직 기능의 광범위한 어레이(array)를 제공할 수 있는 로직 코어(core) 또는 코어들과 같은 프로그램가능 로직 또는 회로를 포함할 수 있다. 일 실시예에서, 양자화 파라미터 모듈(101), 양자화 모듈(112), 모드 선택 모듈(113) 및/또는 엔트로피 인코더 모듈(114)은 고정 기능 회로(fixed function circuitry) 또는 유사한 것과 같은 전용 하드웨어를 통하여 구현될 수 있다. 고정 기능 회로는 전용 로직 또는 회로를 포함할 수 있고 고정된 목적 또는 기능을 위해 전용 로직에 맵핑될 수 있는 고정 기능 진입 지점(fixed function entry point)들의 세트를 제공할 수 있다.
도 4의 논의로 되돌아가면, 프로세스(400)는 동작(401), "비디오 시퀀스의 비디오 프레임을 위한 양자화 파라미터를 결정함"에서 시작할 수 있는데, 여기서 비디오 시퀀스의 비디오 프레임에 대해 제1 양자화 파라미터가 결정될 수 있다. 예컨대, 초기 QP 추정 모듈, 장면 변화 검출 및 P 프레임 QP 추정 모듈(108), 그리고/또는 B 프레임 QP 추정 모듈(109) 중 하나 이상이 비디오 프레임을 위한 양자화 파라미터를 생성할 수 있다. 몇몇 예에서, 제1 양자화 파라미터는 본 문서 내에 논의된 바와 같은 지능적 일정 품질 인자, 초기 QP 값, 또는 참조 QP 값을 포함할 수 있다.
예컨대, 만약 비디오 프레임이 I 프레임 또는 장면 변화 P 프레임인 경우, 제1 양자화 파라미터는 본 문서 내에 논의된 바와 같은 ICQ Factor와 같은 일정 품질 인자, 또는 Initial_QP (I)와 같은 초기 QP 값일 수 있다. 예컨대, 양자화 파라미터는 사용자 선택된 일정 품질 인자, ICQ 인자에 기반할 수 있다.
만약 비디오 프레임이 장면 변화 프레임이 아닌 P 프레임인 경우, 제1 양자화 파라미터는 일정 품질 인자(가령, Initial_QP (I)) 또는 P 프레임 오프셋만큼 증가된 일정 품질 인자(가령, 식 (2)에 보여진 바와 같은 Initial_QP (P))에 기반하고, (가령, 인트라 프레임 양자화 값이 QPINTRA인 식 (5)에 보여진 바와 같은) P 프레임과 연관된 인트라 프레임 양자화 값에 기반하여 수정될 수 있다.
만약 비디오 프레임이 B 프레임인 경우, 제1 양자화 파라미터는 B 프레임 오프셋만큼 증가된 일정 품질 인자(가령, Initial_QP (B))에 기반하고, (가령, 인트라 프레임 양자화 값이 QPINTRA인 식 (6)에 보여진 바와 같은) B 프레임과 연관된 인트라 프레임 양자화 값에 기반하여 또는 (가령, P 프레임 양자화 값이 QPP_scene_change_frame인 식 (8)에 보여진 바와 같은) B 프레임과 연관된 P 프레임 양자화 값에 기반하여 수정될 수 있다.
프로세스(400)는 동작(402), "비디오 프레임의 복잡도에 기반하여 양자화 파라미터를 수정하여 비디오 프레임을 위한 제2 양자화 파라미터를 생성함"에서 계속될 수 있는데, 여기서 제1 양자화 파라미터는 비디오 프레임을 위한 제2 양자화 파라미터를 생성하기 위해 비디오 프레임과 연관된 공간적 복잡도 또는 시간적 복잡도 중 적어도 하나에 기반하여 수정될 수 있다. 예컨대, 지능적 일정 품질 인자, 초기 QP 값, 또는 참조 QP 값은 제2 양자화 파라미터를 생성하기 위해 비디오 프레임의 공간적 복잡도(가령, 인트라 예측 왜곡) 또는 시간적 복잡도(가령, 인터 예측 왜곡)에 기반하여 수정될 수 있다. 몇몇 예에서, 비디오 프레임과 연관된 공간적 복잡도 또는 시간적 복잡도가 각각 높은 공간적 복잡도 또는 높은 시간적 복잡도 중 적어도 하나를 나타내는 경우 제2 양자화 파라미터는 제1 양자화 파라미터보다 더 클 수 있다.
예컨대, 만약 비디오 프레임이 I 프레임 또는 장면 변화 P 프레임인 경우, 제2 양자화 파라미터는 제1 양자화 파라미터(가령, 일정 품질 인자)에 기반할 수 있고 인트라 프레임 또는 장면 변화 P 프레임의 공간적 복잡도에 비례할 수 있다. 예컨대, 제2 양자화 파라미터는 논의된 바와 같은 (가령, I 프레임에 대한) 식 (4) 또는 (가령, 장면 변화 P 프레임에 대한) 식 (7)에 기반하여 결정될 수 있다.
만약 비디오 프레임이 장면 변화 프레임이 아닌 P 프레임인 경우, 제1 양자화 파라미터는 논의된 바와 같은 QPP _reference와 같은 참조 QP 값일 수 있다. 제2 양자화 파라미터는 P 프레임의 시간적 복잡도 및 비디오 시퀀스의 과거 평균 시간적 복잡도의 시간적 비율에 기반하여 조절된 제1 양자화 파라미터에 기반할 수 있다. 예컨대, 제2 양자화 파라미터는 본 문서 내에 논의된 바와 같은 식 (9) 및 식 (10)에 기반하여 결정될 수 있다.
만약 비디오 프레임이 B 프레임인 경우, 제2 양자화 파라미터에 기반하여 제3 양자화 파라미터가 결정될 수 있다. 예컨대, B 프레임은 비디오 시퀀스의 제2 프레임일 수 있고 제2 양자화 파라미터는 프레임(가령, I 프레임 또는 P 프레임)을 위한 프레임 레벨 양자화 파라미터일 수 있다. 이 맥락(context)에서, 제3 양자화 파라미터는 식 (6), 식 (8), 또는 식 (13)에 기반하여 결정된 참조 B 프레임 양자화 파라미터일 수 있고, 식 (14)에 보여진 바와 같이, B 프레임을 위한 프레임 레벨 양자화 파라미터는 참조 B 프레임 양자화 파라미터(가령, 논의된 바와 같은 제3 양자화 파라미터)와 같을 수 있다. 만약 비디오 프레임이 B 참조 프레임인 경우, 논의된 바와 같이, 제2 양자화 파라미터가 식 (11)에 기반하는 P 프레임 참조 양자화 파라미터 및 B 프레임 참조 양자화 파라미터를 포함하도록 제3 양자화 파라미터는 제2 양자화 파라미터의 평균에 기반할 수 있다. 예컨대, B 참조 프레임을 위한 프레임 레벨 양자화 파라미터는 식 (15)에 보여진 바와 같이 결정될 수 있다.
프로세스(400)는 동작(403), "비디오 프레임의 블록을 위한 블록 레벨 양자화 파라미터를 제2 양자화 파라미터, 블록의 복잡도 및 비디오 프레임의 복잡도에 기반하여 생성함"에서 계속될 수 있는데, 여기서 비디오 프레임의 개별 블록을 위한 블록 레벨 양자화 파라미터가 제2 양자화 파라미터와, 개별 블록의 복잡도와, 비디오 프레임의 복잡도에 기반하여 생성될 수 있다. 예컨대, 블록 기반 QP 조절 모듈(110)은 비디오 프레임의 개별 블록을 위한 양자화 파라미터를 생성할 수 있다. 동작(403)은 예컨대, 비디오 프레임의 각각의 블록에 대해 반복될 수 있다.
예컨대, 만약 비디오 프레임이 인트라 프레임(가령, I 프레임) 또는 장면 변화 P 프레임인 경우, 인트라 프레임 또는 장면 변화 P 프레임의 복잡도에 대한 개별 블록의 복잡도의 비율과 임계치와의 비교에 기반하여 블록 레벨 양자화 파라미터는 제2 양자화 파라미터와 같거나 아니면 제2 양자화 파라미터보다 작을 수 있다. 예컨대, 개별 블록에 대해 왜곡 비율이 결정될 수 있다. 만약 왜곡 비율이 임계치보다 더 큰 경우(또는 임계치 이상인 경우), 블록 레벨 양자화 파라미터는 프레임 레벨 양자화 파라미터와 같을 수 있다. 만약 왜곡 비율이 임계치보다 더 작은 경우(또는 임계치 이하인 경우), 블록을 위한 블록 레벨 양자화 파라미터는 본 문서 내에 논의된 바와 같은 (가령, I 프레임에 대한) 식 (16) 또는 (가령, 장면 변화 P 프레임에 대한) 식 (17)에 기반하여 결정될 수 있다.
만약 비디오 프레임이 인터 프레임(가령, 장면 변화 프레임이 아닌 P 프레임, B 프레임, 또는 B 참조 프레임)인 경우, 블록 레벨 양자화 파라미터는 인터 프레임의 복잡도에 대한 개별 블록의 복잡도의 비율과 제1 임계치와의 비교에 기반하여 제2 양자화 파라미터보다 더 크거나 인터 프레임의 복잡도에 대한 개별 블록의 복잡도의 비율과 제2 임계치와의 비교에 기반하여 제2 양자화 파라미터보다 더 작을 수 있다. 예컨대, 만약 블록을 위한 (위에서 논의된 바와 같은) 왜곡 비율이 제1 임계치보다 더 큰 경우, 블록 레벨 QP를 결정하기 위해 프레임 레벨 QP에 양의 오프셋이 적용될 수 있고, 만약 블록을 위한 왜곡 비율이 제2 임계치보다 더 작은 경우, 본 문서 내에 논의된 바와 같이 블록 레벨 QP를 결정하기 위해 프레임 레벨 QP에 음의 오프셋이 적용될 수 있다.
논의된 바와 같이, 개별 블록과 연관된 변환 계수를 양자화하는 데에 그리고/또는 비디오 시퀀스와 연관된 모드 선택 판단을 행하는 데에 블록 레벨 양자화 파라미터가 사용될 수 있다. 블록 레벨 양자화 파라미터, 양자화된 변환 계수, 그리고/또는 모드는 본 문서 내에 논의된 바와 같이 비트스트림으로 인코딩될 수 있다. 프로세스(400)는 임의의 개수의 비디오 프레임, 비디오 시퀀스, 또는 비디오의 세그먼트에 대해 직렬로든 또는 병렬로든 임의의 횟수로 반복될 수 있다.
본 문서 내에 기술된 시스템의 다양한 컴포넌트는 소프트웨어, 펌웨어 및/또는 하드웨어 및/또는 이들의 임의의 조합으로 구현될 수 있다. 예컨대, 적어도 부분적으로는, 예컨대 스마트폰과 같은 컴퓨팅 시스템 내에서 발견될 수 있는 것과 같은 컴퓨팅 시스템 온 칩(System-on-a-Chip: SoC)의 하드웨어에 의해, 시스템(100) 또는 시스템(500)의 다양한 컴포넌트가 제공될 수 있다. 본 문서 내에 기술된 시스템은 대응하는 도면 내에 묘사되지 않은 추가적인 컴포넌트를 포함할 수 있음을 당업자는 인식할 수 있다. 예컨대, 본 문서 내에 논의된 시스템은 명료성을 위하여 묘사되지 않은 비트 스트림 다중화기(multiplexer) 또는 역다중화기(demultiplexer) 모듈 및 유사한 것과 같은 추가적인 컴포넌트를 포함할 수 있다.
본 문서 내에 논의된 예시적 프로세스(가령, 프로세스(200) 및 프로세스(400))의 구현은 예시된 순서로 도시된 모든 동작의 시행을 포함할 수 있으나, 본 개시는 이 점에 관해 한정되지 않고, 다양한 예에서, 본 문서 내의 예시적 프로세스의 구현은 도시된 동작의 단지 서브세트, 예시된 것과는 상이한 순서로 수행되는 동작, 또는 추가적인 동작을 포함할 수 있다.
추가로, 하나 이상의 컴퓨터 프로그램 제품(computer program product)에 의해 제공되는 명령어에 응답하여 본 문서 내에 논의된 동작 중 임의의 하나 이상이 시행될 수 있다. 그러한 프로그램 제품은, 예컨대 프로세서에 의해 실행되는 경우, 본 문서 내에 기술된 기능을 제공할 수 있는 명령어를 제공하는 신호 함유 매체(signal bearing medium)를 포함할 수 있다. 컴퓨터 프로그램 제품은 하나 이상의 머신 판독가능 매체(machine-readable medium)의 임의의 형태로 제공될 수 있다. 그러므로, 예컨대, 하나 이상의 그래픽 처리 유닛(들) 또는 프로세서 코어(들)를 포함하는 프로세서는 하나 이상의 머신 판독가능 매체에 의해 프로세서에 전달되는 프로그램 코드 및/또는 명령어 또는 명령어 세트에 응답하여 본 문서 내의 예시적 프로세스의 블록 중 하나 이상을 시행할 수 있다. 일반적으로, 머신 판독가능 매체는 본 문서 내에 기술된 디바이스 및/또는 시스템 중 임의의 것으로 하여금 시스템(100 또는 500)의 적어도 일부분, 또는 본 문서 내에 논의된 바와 같은 임의의 다른 모듈 또는 컴포넌트를 구현하게 할 수 있는 프로그램 코드 및/또는 명령어 또는 명령어 세트의 형태로 소프트웨어를 전달할 수 있다.
본 문서 내에 기술된 임의의 구현에서 사용되는 바와 같이, 용어 "모듈"은 본 문서 내에 기술된 기능을 제공하도록 구성된 소프트웨어 로직, 펌웨어 로직, 하드웨어 로직 및/또는 회로의 임의의 조합을 나타낸다. 소프트웨어는 소프트웨어 패키지, 코드 및/또는 명령어 세트 또는 명령어로서 실체화될(embodied) 수 있고, "하드웨어"는, 본 문서 내에 기술된 임의의 구현에서 사용되는 바와 같이, 예컨대, 고정배선된 회로(hardwired circuitry), 프로그램가능 회로(programmable circuitry), 상태 머신 회로(state machine circuitry), 고정 기능 회로(fixed function circuitry), 실행 유닛 회로(execution unit circuitry), 그리고/또는 프로그램가능 회로에 의해 실행되는 명령어를 저장하는 펌웨어를, 단독으로 또는 임의의 조합으로, 포함할 수 있다. 모듈들은, 집합적으로 또는 개별적으로, 더 큰 시스템, 예컨대, 집적 회로(Integrated Circuit: IC), 시스템 온 칩(System on-Chip: SoC) 및 기타 등등의 일부를 형성하는 회로로서 실체화될 수 있다.
도 6은 본 개시의 적어도 몇몇 구현에 따라 배열된 예시적 시스템(600)의 설명도이다. 다양한 구현에서, 시스템(600)은 미디어 시스템(media system)일 수 있는데 다만 시스템(600)은 이 맥락에 한정되지 않는다. 예컨대, 시스템(600)은 개인용 컴퓨터(Personal Computer: PC), 랩톱 컴퓨터(laptop computer), 울트라 랩톱 컴퓨터(ultra-laptop computer), 태블릿(tablet), 터치 패드(touch pad), 휴대가능 컴퓨터(portable computer), 핸드헬드 컴퓨터(handheld computer), 팜톱 컴퓨터(palmtop computer), 개인용 디지털 보조기기(Personal Digital Assistant: PDA), 셀룰러 전화(cellular telephone), 셀룰러 전화/PDA 조합, 텔레비전, 스마트 디바이스(smart device)(가령, 스마트폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 디바이스(Mobile Internet Device: MID), 메시징 디바이스(messaging device), 데이터 통신 디바이스(data communication device), 카메라(가령, 보고 찍는 카메라(point-and-shoot camera), 수퍼 줌 카메라(super-zoom camera), 디지털 단일 렌즈 반사(Digital Single-Lens Reflex: DSLR) 카메라) 및 기타 등등 내에 포함될 수 있다.
다양한 구현에서, 시스템(600)은 디스플레이(620)에 커플링된 플랫폼(602)을 포함한다. 플랫폼(602)은 콘텐트 서비스 디바이스(들)(630) 또는 콘텐트 전달 디바이스(들)(640) 또는 다른 유사한 콘텐트 소스와 같은 콘텐트 디바이스로부터 콘텐트를 수신할 수 있다. 예컨대 플랫폼(602) 및/또는 디스플레이(620)와 상호작용하는 데에 하나 이상의 내비게이션 특징부(navigation feature)를 포함하는 내비게이션 제어기(650)가 사용될 수 있다. 이 컴포넌트들 각각은 아래에서 더욱 상세히 기술된다.
다양한 구현에서, 플랫폼(602)은 칩셋(chipset)(605), 프로세서(610), 메모리(612), 안테나(613), 스토리지(storage)(614), 그래픽 서브시스템(graphics subsystem)(615), 애플리케이션(616) 및/또는 무선기기(radio)(618)의 임의의 조합을 포함할 수 있다. 칩셋(605)은 프로세서(610), 메모리(612), 스토리지(614), 그래픽 서브시스템(615), 애플리케이션(616) 및/또는 무선기기(618) 사이의 상호통신(intercommunication)을 제공할 수 있다. 예컨대, 칩셋(605)은 스토리지(614)와의 상호통신을 제공할 수 있는 스토리지 어댑터(storage adapter)(묘사되지 않음)를 포함할 수 있다.
프로세서(610)는 복합 명령어 세트 컴퓨터(Complex Instruction Set Computer: CISC) 또는 축소 명령어 세트 컴퓨터(Reduced Instruction Set Computer: RISC) 프로세서, x86 명령어 세트 호환가능 프로세서, 다중 코어(multi-core), 또는 임의의 다른 마이크로프로세서 또는 중앙 처리 유닛(Central Processing Unit: CPU)으로서 구현될 수 있다. 다양한 구현에서, 프로세서(610)는 이중 코어(dual-core) 프로세서(들), 이중 코어 모바일 프로세서(들) 및 기타 등등일 수 있다.
메모리(612)는, 랜덤 액세스 메모리(Random Access Memory: RAM), 동적 랜덤 액세스 메모리(Dynamic Random Access Memory: DRAM), 또는 정적 RAM(Static RAM: SRAM)과 같으나 이에 한정되지 않는 휘발성 메모리 디바이스로서 구현될 수 있다.
스토리지(614)는, 자기 디스크 드라이브(magnetic disk drive), 광학 디스크 드라이브(optical disk drive), 테이프 드라이브(tape drive), 내부 저장 디바이스(internal storage device), 부속 저장 디바이스(attached storage device), 플래시 메모리(flash memory), 배터리 예비 동기식 DRAM(batter backed-up SDRAM(Synchronous DRAM)) 및/또는 네트워크 액세스가능 저장 디바이스(network accessible storage device)와 같으나 이에 한정되지 않는 비휘발성 저장 디바이스로서 구현될 수 있다. 다양한 구현에서, 예컨대, 스토리지(614)는 여러 하드 드라이브가 포함된 경우 가치 있는 디지털 매체를 위한 저장 성능 향상된 보호를 증가시키는 기술을 포함할 수 있다.
그래픽 서브시스템(615)은 디스플레이를 위한 이미지, 예를 들어 정지(still) 또는 비디오의 처리를 수행할 수 있다. 그래픽 서브시스템(615)은 예컨대 그래픽 처리 유닛(Graphics Processing Unit: GPU) 또는 시각적 처리 유닛(Visual Processing Unit: VPU)일 수 있다. 그래픽 서브시스템(615) 및 디스플레이(620)를 통신가능하게 커플링하는 데에 아날로그 또는 디지털 인터페이스가 사용될 수 있다. 예컨대, 인터페이스는 고선명 멀티미디어 인터페이스(High-Definition Multimedia Interface), 디스플레이포트(DisplayPort), 무선 HDMI 및/또는 무선 HD 준수 기법 중 임의의 것일 수 있다. 그래픽 서브시스템(615)은 프로세서(610) 또는 칩셋(605) 내로 통합될 수 있다. 몇몇 구현에서, 그래픽 서브시스템(615)은 칩셋(605)에 통신가능하게 커플링된 독립형(stand-alone) 디바이스일 수 있다.
본 문서 내에 기술된 그래픽 및/또는 비디오 처리 기법은 다양한 하드웨어 아키텍처 내에 구현될 수 있다. 예컨대, 그래픽 및/또는 비디오 기능은 칩셋 내에 통합될 수 있다. 대안적으로, 별도의 그래픽 및/또는 비디오 프로세서가 사용될 수 있다. 또 다른 구현으로서 그래픽 및/또는 비디오 기능들은 다중코어 프로세서를 포함하는 일반 목적 프로세서에 의해 제공될 수 있다. 추가의 실시예에서, 그 기능들은 가전 디바이스(consumer electronics device) 내에 구현될 수 있다.
무선기기(618)는 다양한 적합한 무선 통신 기법을 사용하여 신호를 송신하고 수신할 수 있는 하나 이상의 무선기기를 포함할 수 있다. 그러한 기법은 하나 이상의 무선 네트워크에 걸친 통신을 수반할 수 있다. 예시적 무선 네트워크는 무선 로컬 영역 네트워크(Wireless Local Area Network: WLAN), 무선 개인 영역 네트워크(Wireless Personal Area Network: WPAN), 무선 대도시 영역 네트워크(Wireless Metropolitan Area Network: WMAN), 셀룰러 네트워크 및 위성 네트워크를 포함한다(그러나 이에 한정되지 않음). 그러한 네트워크에 걸쳐 통신하는 중에, 무선기기(618)는 임의의 버전의 하나 이상의 적용가능한 표준에 따라 동작할 수 있다.
다양한 구현에서, 디스플레이(620)는 임의의 텔레비전 유형 모니터 또는 디스플레이를 포함할 수 있다. 디스플레이(620)는, 예컨대, 컴퓨터 디스플레이 스크린, 터치 스크린 디스플레이, 비디오 모니터, 텔레비전과 비슷한 디바이스 및/또는 텔레비전을 포함할 수 있다. 디스플레이(620)는 디지털 및/또는 아날로그일 수 있다. 다양한 구현에서, 디스플레이(620)는 홀로그램 디스플레이(holographic display)일 수 있다. 또한, 디스플레이(620)는 시각적 투영(visual projection)을 수신할 수 있는 투명한 표면(transparent surface)일 수 있다. 그러한 투영은 다양한 형태의 정보, 이미지 및/또는 객체를 전달할 수 있다. 예컨대, 그러한 투영은 모바일 증강 현실(Mobile Augmented Reality: MAR) 애플리케이션을 위한 시각적 오버레이(visual overlay)일 수 있다. 하나 이상의 소프트웨어 애플리케이션(616)의 제어 하에서, 플랫폼(602)은 디스플레이(620) 상에 사용자 인터페이스(user interface)(622)를 디스플레이할 수 있다.
다양한 구현에서, 예컨대, 콘텐트 서비스 디바이스(들)(630)는 임의의 전국적, 국제적 및/또는 독립적 서비스에 의해 호스팅되고(hosted) 따라서 플랫폼(602)에게 인터넷을 통하여 이용가능한 것일 수 있다. 콘텐트 서비스 디바이스(들)(630)는 플랫폼(602)에 그리고/또는 디스플레이(620)에 커플링될 수 있다. 플랫폼(602) 및/또는 콘텐트 서비스 디바이스(들)(630)는 미디어 정보(media information)를 네트워크(660)에 그리고 네트워크(660)로부터 통신(가령, 발신 및/또는 수신)하기 위해 네트워크(660)에 커플링될 수 있다. 콘텐트 전달 디바이스(들)(640)는 플랫폼(602)에 그리고/또는 디스플레이(620)에 또한 커플링될 수 있다.
다양한 구현에서, 콘텐트 서비스 디바이스(들)(630)는 케이블 텔레비전 박스(cable television box)와, 개인용 컴퓨터와, 네트워크와, 전화와, 디지털 정보 및/또는 콘텐트를 전달할 수 있는 인터넷 가능화된(Internet enabled) 디바이스 또는 기기와, 네트워크(660)를 통하여 또는 직접적으로 콘텐트 제공자 및 플랫폼(602) 및/또는 디스플레이(620) 간에 콘텐트를 단방향으로(uni-directionally) 또는 양방향으로(bi-directionally) 통신할 수 있는 임의의 다른 유사한 디바이스를 포함할 수 있다. 콘텐트는 네트워크(660)를 통하여 콘텐트 제공자 및 시스템(600) 내의 컴포넌트 중 임의의 하나로 그리고 이로부터 단방향으로 그리고/또는 양방향으로 통신될 수 있음이 인식될 것이다. 콘텐트의 예는, 예컨대, 비디오, 음악, 의료 및 게이밍(gaming) 정보, 그리고 기타 등등을 포함하는 임의의 미디어 정보를 포함할 수 있다.
콘텐트 서비스 디바이스(들)(630)는 미디어 정보, 디지털 정보 및/또는 다른 콘텐트를 포함하는 케이블 텔레비전 프로그램편성(cable television programming)과 같은 콘텐트를 수신할 수 있다. 콘텐트 제공자의 예는 임의의 케이블 또는 위성 텔레비전 또는 라디오 또는 인터넷 콘텐트 제공자를 포함할 수 있다. 제공된 예는 어떤 식으로든 본 개시에 따라 구현을 한정하도록 의도되지 않는다.
다양한 구현에서, 플랫폼(602)은 하나 이상의 내비게이션 특징부를 갖는 내비게이션 제어기(650)로부터 제어 신호를 수신할 수 있다. 제어기(650)의 내비게이션 특징부는 예컨대 사용자 인터페이스(622)와 상호작용하는 데에 사용될 수 있다. 다양한 실시예에서, 내비게이션 제어기(650)는 사용자로 하여금 공간적(가령, 연속적이고 다차원적인) 데이터를 컴퓨터 내에 입력할 수 있게 하는 컴퓨터 하드웨어 컴포넌트(특히, 인간 인터페이스 디바이스(human interface device))일 수 있는 포인팅 디바이스(pointing device)일 수 있다. 많은 시스템, 예를 들어 그래픽 사용자 인터페이스(Graphical User Interface: GUI)와, 텔레비전과 모니터는 사용자로 하여금 물리적 제스처를 사용하여 컴퓨터 또는 텔레비전을 제어하고 이에 데이터를 제공할 수 있게 한다.
제어기(650)의 내비게이션 특징부의 움직임은 디스플레이(가령, 디스플레이(620)) 상에 포인터(pointer), 커서(cursor), 포커스 링(focus ring), 또는 디스플레이 상에 디스플레이되는 다른 시각적 지시자(visual indicator)의 움직임에 의해 모사될(replicated) 수 있다. 예컨대, 소프트웨어 애플리케이션(616)의 제어 하에서, 내비게이션 제어기(650) 상에 위치된 내비게이션 특징부는 예컨대 사용자 인터페이스(622) 상에 디스플레이된 가상 내비게이션 특징부로 맵핑될(mapped) 수 있다. 다양한 실시예에서, 제어기(650)는 별개의 컴포넌트가 아닐 수 있으나 플랫폼(602) 및/또는 디스플레이(620) 내로 통합될 수 있다. 그러나, 본 개시는 본 문서 내에 도시되거나 기술된 구성요소로 또는 맥락 내에 한정되지 않는다.
다양한 구현에서, 드라이버(도시되지 않음)는 사용자로 하여금, 예컨대, 가능화된 경우, 초기 시동(boot-up) 후에 버튼의 터치로써 텔레비전과 같이 플랫폼(602)을 즉시 켜고 끌 수 있게 하기 위한 기술을 포함할 수 있다. 프로그램 로직은 플랫폼(602)으로 하여금 플랫폼이 "꺼진" 경우에도 콘텐트를 미디어 어댑터 또는 다른 콘텐트 서비스 디바이스(들)(630) 또는 콘텐트 전달 디바이스(들)(640)에 스트리밍할(stream) 수 있도록 할 수 있다. 추가로, 칩셋(605)은 예컨대 5.1 서라운드 사운드 오디오(5.1 surround sound audio) 및/또는 고선명 7.1 서라운드 사운드 오디오(high definition 7.1 surround sound audio)를 위한 하드웨어 및/또는 소프트웨어 지원을 포함할 수 있다. 드라이버는 통합된 그래픽 플랫폼을 위한 그래픽 드라이버(graphics driver)를 포함할 수 있다. 다양한 실시예에서, 그래픽 드라이버는 주변 컴포넌트 상호연결 익스프레스 그래픽 카드(peripheral component interconnect (PCI) Express graphics card)를 포함할 수 있다.
다양한 구현에서, 시스템(600) 내에 도시된 컴포넌트 중 임의의 하나 이상이 통합될 수 있다. 예컨대, 가령, 플랫폼(602) 및 콘텐트 서비스 디바이스(들)(630)가 통합될 수 있거나, 플랫폼(602) 및 콘텐트 전달 디바이스(들)(640)가 통합될 수 있거나, 플랫폼(602), 콘텐트 서비스 디바이스(들)(630) 및 콘텐트 전달 디바이스(들)(630)가 통합될 수 있다. 다양한 실시예에서, 플랫폼(602) 및 디스플레이(620)는 통합된 유닛(integrated unit)일 수 있다. 예컨대, 디스플레이(620) 및 콘텐트 서비스 디바이스(들)(630)는 통합될 수 있거나, 디스플레이(620) 및 콘텐트 전달 디바이스(들)(640)는 통합될 수 있다. 이 예들은 본 개시를 한정하도록 의도되지 않는다.
다양한 실시예에서, 시스템(600)은 무선 시스템, 유선 시스템, 또는 양자 모두의 조합으로서 구현될 수 있다. 무선 시스템으로서 구현되는 경우, 시스템(600)은, 하나 이상의 안테나, 송신기, 수신기, 송수신기, 증폭기, 필터, 제어 로직 및 기타 등등과 같은, 무선 공유 매체(wireless shared media) 상에서 통신하는 데에 적합한 컴포넌트 및 인터페이스를 포함할 수 있다. 무선 공유 매체의 일례는 무선 스펙트럼(wireless spectrum)의 부분, 예를 들어 RF 스펙트럼 및 기타 등등을 포함할 수 있다. 유선 시스템으로서 구현되는 경우, 시스템(600)은, 입력/출력(Input/Output: I/O) 어댑터, I/O 어댑터를 대응하는 유선 통신 매체와 연결하기 위한 물리적 커넥터(physical connector), 네트워크 인터페이스 카드(Network Interface Card: NIC), 디스크 제어기, 비디오 제어기, 오디오 제어기 및 유사한 것과 같은, 유선 통신 매체 상에서 통신하는 데에 적합한 컴포넌트 및 인터페이스를 포함할 수 있다. 유선 통신 매체의 예는 배선(wire), 케이블(cable), 금속 리드(metal lead), 인쇄 회로 보드(Printed Circuit Board: PCB), 백플레인(backplane), 스위치 패브릭(switch fabric), 반도체 재료(semiconductor material), 꼬임쌍선(twisted-pair wire), 동축 케이블(co-axial cable), 광섬유(fiber optics) 및 기타 등등을 포함할 수 있다.
플랫폼(602)은 정보를 통신하기 위해 하나 이상의 논리적 또는 물리적 채널을 수립할 수 있다. 정보는 미디어 정보 및 제어 정보를 포함할 수 있다. 미디어 정보는 사용자를 위해 의도된 콘텐트를 나타내는 임의의 데이터를 나타낼 수 있다. 콘텐트의 예는, 예컨대, 음성 대화(voice conversation), 비디오컨퍼런스(videoconference), 스트리밍 비디오(streaming video), 전자 메일("이메일"(email)) 메시지, 음성 메일 메시지, 문자숫자 심볼(alphanumeric symbol), 그래픽, 이미지, 비디오, 텍스트 및 기타 등등으로부터의 데이터를 포함할 수 있다. 음성 대화로부터의 데이터는, 예컨대, 발화 정보(speech information), 묵음 기간(silence period), 배경 잡음(background noise), 안정 잡음(comfort noise), 톤 및 기타 등등일 수 있다. 제어 정보는 자동화된 시스템을 위해 의도된 커맨드(command), 명령어 또는 제어 워드(control word)를 표현하는 임의의 데이터를 나타낼 수 있다. 예컨대, 제어 정보는 사전결정된 방식으로 미디어 정보를 처리하도록 노드(node)에 지시하거나, 시스템을 통해 미디어 정보를 라우팅하는(route) 데에 사용될 수 있다. 그러나, 실시예는 도 6에 도시되거나 기술된 맥락 내에 또는 구성요소로 한정되지 않는다.
위에서 기술된 바와 같이, 시스템(600)은 갖가지 물리적 스타일 또는 폼 팩터(form factor)로 실체화될 수 있다. 도 7은 시스템(700)이 실체화될 수 있는 소형 폼 팩터 디바이스(700)의 구현을 보여준다. 다양한 실시예에서, 예컨대, 디바이스(700)는 무선 능력을 갖는 모바일 컴퓨팅 디바이스로서 구현될 수 있다. 모바일 컴퓨팅 디바이스는 예컨대 처리 시스템 및 모바일 전원 또는 전력공급기기, 예를 들어 하나 이상의 배터리를 갖는 임의의 디바이스를 나타낼 수 있다.
위에서 기술된 바와 같이, 모바일 컴퓨팅 디바이스의 예는 개인용 컴퓨터(Personal Computer: PC), 랩톱 컴퓨터, 울트라 랩톱 컴퓨터, 태블릿, 터치 패드, 휴대가능 컴퓨터, 핸드헬드 컴퓨터, 팜톱 컴퓨터, 개인용 디지털 보조기기(Personal Digital Assistant: PDA), 셀룰러 전화, 셀룰러 전화/PDA 조합, 텔레비전, 스마트 디바이스(가령, 스마트폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 디바이스(Mobile Internet Device: MID), 메시징 디바이스, 데이터 통신 디바이스, 카메라(가령, 보고 찍는 카메라, 수퍼 줌 카메라, 디지털 단일 렌즈 반사(Digital Single-Lens Reflex: DSLR) 카메라) 및 기타 등등을 포함할 수 있다.
모바일 컴퓨팅 디바이스의 예는 또한 사람이 착용하도록 마련된 컴퓨터, 예를 들어 손목 컴퓨터(wrist computer), 손가락 컴퓨터(finger computer), 반지 컴퓨터(ring computer), 안경 컴퓨터(eyeglass computer), 벨트 클립 컴퓨터(belt-clip computer), 암 밴드 컴퓨터(arm-band computer), 신발 컴퓨터(shoe computer), 의복 컴퓨터(clothing computer) 및 다른 착용가능(wearable computer)를 포함할 수 있다. 다양한 실시예에서, 예컨대, 모바일 컴퓨팅 디바이스는 음성 통신 및/또는 데이터 통신뿐만 아니라, 컴퓨터 애플리케이션을 실행하는 것이 가능한 스마트폰으로서 구현될 수 있다. 몇몇 실시예는 예로서 스마트폰으로서 구현된 모바일 컴퓨팅 디바이스로써 기술될 수 있으나, 다른 무선 모바일 컴퓨팅 디바이스를 사용하여 다른 실시예가 구현될 수도 있음이 인식될 수 있다. 실시예는 이 맥락 내에 한정되지 않는다.
도 7에 도시된 바와 같이, 디바이스(700)는 하우징(702), 디스플레이(704), 입력/출력(Input/Output: I/O) 디바이스(706) 및 안테나(708)를 포함할 수 있다. 디바이스(700)는 또한 내비게이션 특징부(712)를 포함할 수 있다. 디스플레이(704)는 모바일 컴퓨팅 디바이스에 적절한 정보를 디스플레이하기 위한 임의의 적합한 디스플레이 유닛을 포함할 수 있다. I/O 디바이스(706)는 모바일 컴퓨팅 디바이스 내로 정보를 입력하기 위한 임의의 적합한 I/O 디바이스를 포함할 수 있다. I/O 디바이스(706)에 대한 예는 문자숫자 키보드(alphanumeric keyboard), 숫자 키보드(numeric keyboard), 터치 패드, 입력 키, 버튼, 스위치, 로커 스위치(rocker switch), 마이크, 스피커, 음성 인식 디바이스 및 소프트웨어, 그리고 기타 등등을 포함할 수 있다. 정보가 또한 마이크(도시되지 않음)에 의해서 디바이스(700) 내로 입력될 수 있다. 그러한 정보는 음성 인식 디바이스(도시되지 않음)에 의해 디지털화될 수 있다. 실시예는 이 맥락 내에 한정되지 않는다.
다양한 실시예는 하드웨어 구성요소, 소프트웨어 구성요소 또는 양자 모두의 조합을 사용하여 구현될 수 있다. 하드웨어 구성요소의 예는 프로세서, 마이크로프로세서, 회로, 회로 요소(가령, 트랜지스터(transistor), 저항기(resistor), 커패시터(capacitor), 인덕터(inductor) 및 기타 등등), 집적 회로, 애플리케이션 특정 집적 회로(Application Specific Integrated Circuit: ASIC), 프로그램가능 로직 디바이스(Programmable Logic Device: PLD), 디지털 신호 프로세서(Digital Signal Processor: DSP), 필드 프로그램가능 게이트 어레이(Field Programmable Gate Array: FPGA), 로직 게이트(logic gate), 레지스터(register), 반도체 디바이스, 칩, 마이크로칩, 칩셋 및 기타 등등을 포함할 수 있다. 소프트웨어의 예는 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어(middleware), 펌웨어, 소프트웨어 모듈, 루틴(routine), 서브루틴(subroutine), 함수(function), 메쏘드(method), 프로시저(procedure), 소프트웨어 인터페이스, 애플리케이션 프로그램 인터페이스(Application Program Interface: API), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트(code segment), 컴퓨터 코드 세그먼트, 워드(word), 값(value), 심볼(symbol), 또는 이들의 임의의 조합을 포함할 수 있다. 그러나, 하드웨어 구성요소 및/또는 소프트웨어 구성요소를 사용하여 일 실시예가 구현되는지를 정하는 것은 임의의 개수의 인자, 예를 들어 원하는 계산상의 속도(computational rate), 전력 레벨(power level), 내열성(heat tolerance), 처리 사이클 예산(processing cycle budget), 입력 데이터율(input data rate), 출력 데이터율(output data rate), 메모리 리소스(memory resource), 데이터 버스 속도(data bust speed) 및 다른 설계 또는 성능 제약에 따라 달라질 수 있다.
적어도 하나의 실시예의 하나 이상의 양상은, 머신에 의해 판독되는 경우 머신으로 하여금 본 문서 내에 기술된 기법을 수행하기 위한 로직을 지어내게 하는, 프로세서 내의 다양한 로직을 나타내는 머신 판독가능 매체 상에 저장된 표상적인 명령어에 의해 구현될 수 있다. "IP 코어"로 알려진 그러한 표상은 유형적인(tangible) 머신 판독가능 매체 상에 저장되고 다양한 고객 또는 제조 설비에 제공되어 실제로 로직 또는 프로세서를 만드는 제조 머신 내에 적재될(load) 수 있다.
본 문서 내에 개진된 어떤 특징은 다양한 구현을 참조하여 기술되었으나, 이 설명은 한정적인 의미로 해석되도록 의도된 것이 아니다. 따라서, 본 문서 내에 기술된 구현들뿐만 아니라 다른 구현들의 다양한 수정은, 본 개시가 관련된 업계에서 숙련된 자들에게 명백한 것으로서 본 개시의 사상 및 범주 내에 있는 것으로 간주된다.
이하의 예는 추가 실시예에 관련된다.
하나 이상의 제1 실시예에서, 비디오 코딩을 위한 컴퓨터로 구현된 방법(computer-implemented method)은, 비디오 시퀀스(video sequence)의 비디오 프레임(video frame)을 위한 제1 양자화 파라미터를 결정하는 단계와, 위 비디오 프레임과 연관된 공간적 복잡도(spatial complexity) 또는 시간적 복잡도(temporal complexity) 중 적어도 하나에 기반하여 위 제1 양자화 파라미터를 수정하여 위 비디오 프레임을 위한 제2 양자화 파라미터를 생성하는 단계와, 위 비디오 프레임의 개별 블록을 위한 블록 레벨 양자화 파라미터(block level quantization parameter)를 위 제2 양자화 파라미터와, 위 개별 블록의 복잡도와, 위 비디오 프레임의 복잡도에 기반하여 생성하는 단계를 포함한다.
제1 실시예에 덧붙여, 위 비디오 프레임의 복잡도에 대한 위 개별 블록의 복잡도의 비율이 1보다 더 큰 경우 위 블록 레벨 양자화 파라미터는 위 제2 양자화 파라미터보다 더 크다.
제1 실시예에 덧붙여, 위 제1 양자화 파라미터는 위 비디오 시퀀스를 위한 사용자 선택된 일정 품질 인자(user selected constant quality factor)에 기반한다.
제1 실시예에 덧붙여, 위 제1 양자화 파라미터는 위 비디오 시퀀스를 위한 일정 품질 인자(constant quality factor)와, 프레임 유형 기반 오프셋(frame type based offset)에 기반한다.
제1 실시예에 덧붙여, 위 제1 양자화 파라미터는 위 비디오 시퀀스를 위한 사용자 선택된 일정 품질 인자에 기반하거나 위 제1 양자화 파라미터는 위 비디오 시퀀스를 위한 일정 품질 인자와, 프레임 유형 기반 오프셋에 기반한다.
제1 실시예에 덧붙여, 위 공간적 복잡도는 위 비디오 프레임에 기반한 인트라 예측 왜곡(intra prediction distortion)을 포함한다.
제1 실시예에 덧붙여, 위 시간적 복잡도는 위 비디오 프레임에 기반한 인터 예측 왜곡(inter prediction distortion)을 포함한다.
제1 실시예에 덧붙여, 위 공간적 복잡도는 위 비디오 프레임에 기반한 인트라 예측 왜곡을 포함하고/하거나 위 시간적 복잡도는 위 비디오 프레임에 기반한 인터 예측 왜곡을 포함한다.
제1 실시예에 덧붙여, 위 비디오 프레임과 연관된 위 공간적 복잡도 또는 위 시간적 복잡도가 각각 높은 공간적 복잡도 또는 높은 시간적 복잡도 중 적어도 하나를 나타내는 경우 위 제2 양자화 파라미터는 위 제1 양자화 파라미터보다 더 크다.
제1 실시예에 덧붙여, 위 개별 블록의 복잡도는 위 개별 블록의 블록 예측 왜곡(block prediction distortion) 또는 위 개별 블록의 블록 분산(block variance) 중 적어도 하나를 포함한다.
제1 실시예에 덧붙여, 위 비디오 프레임은 인트라 프레임(intra frame) 또는 장면 변화 P 프레임(scene change P-frame)을 포함하되, 위 제1 양자화 파라미터는 위 비디오 시퀀스를 위한 일정 품질 인자와 같고, 위 제2 양자화 파라미터는 위 인트라 프레임 또는 위 장면 변화 P 프레임과 연관된 공간적 복잡도에 비례하며, 위 인트라 프레임 또는 위 장면 변화 P 프레임의 복잡도에 대한 위 개별 블록의 복잡도의 비율과 임계치(threshold)와의 비교에 기반하여 위 블록 레벨 양자화 파라미터는 위 제2 양자화 파라미터와 같거나 아니면 위 제2 양자화 파라미터보다 더 작다.
제1 실시예에 덧붙여, 위 비디오 프레임은 P 프레임을 포함하되, 위 제1 양자화 파라미터는 P 프레임 오프셋만큼 증가된 위 비디오 시퀀스를 위한 일정 품질 인자에 기반하고 인터 P 프레임과 연관된 I 프레임을 위한 인트라 프레임 양자화 값에 기반하여 수정되며, 위 제2 양자화 파라미터는 위 비디오 시퀀스의 과거 평균 시간적 복잡도 및 위 인터 P 프레임의 시간적 복잡도의 시간적 비율(temporal ratio)에 기반하여 조절된 위 제1 양자화 파라미터에 기반한다.
제1 실시예에 덧붙여, 위 비디오 프레임은 인터 프레임(inter frame)을 포함하되, 위 블록 레벨 양자화 파라미터는 위 인터 프레임의 복잡도에 대한 위 개별 블록의 복잡도의 비율과 제1 임계치와의 비교에 기반하여 위 제2 양자화 파라미터보다 더 큰 것 또는 위 인터 프레임의 복잡도에 대한 위 개별 블록의 복잡도의 비율과 제2 임계치와의 비교에 기반하여 위 제2 양자화 파라미터보다 더 작은 것 중 적어도 하나이다.
제1 실시예에 덧붙여, 위 방법은 위 비디오 시퀀스의 제2 비디오 프레임을 위한 제3 양자화 파라미터를 결정하는 단계를 더 포함하되, 위 제2 비디오 프레임은 B 프레임이고, 위 제3 양자화 파라미터는 위 제2 양자화 파라미터에 기반한다.
제1 실시예에 덧붙여, 위 방법은 위 비디오 시퀀스의 제2 비디오 프레임을 위한 제3 양자화 파라미터를 결정하는 단계를 더 포함하되, 위 제2 비디오 프레임은 B 프레임이고, 위 제3 양자화 파라미터는 위 제2 양자화 파라미터에 기반하며, 위 B 프레임은 B 참조 프레임(B-reference frame)이되, 위 제3 양자화 파라미터는 위 제2 양자화 파라미터의 평균에 기반하고, 위 제2 양자화 파라미터는 P 프레임 참조 양자화 파라미터와, B 프레임 참조 양자화 파라미터를 포함한다.
제1 실시예에 덧붙여, 위 방법은 위 비디오 시퀀스의 제2 비디오 프레임을 위한 제3 양자화 파라미터를 결정하는 단계를 더 포함하되, 위 제2 비디오 프레임은 B 프레임이고, 위 제3 양자화 파라미터는 위 제2 양자화 파라미터에 기반하고/하거나, 위 B 프레임은 B 참조 프레임이되, 위 제3 양자화 파라미터는 위 제2 양자화 파라미터의 평균에 기반하고, 위 제2 양자화 파라미터는 P 프레임 참조 양자화 파라미터와, B 프레임 참조 양자화 파라미터를 포함한다.
제1 실시예에 덧붙여, 위 방법은 위 블록 레벨 양자화 파라미터에 기반하여 위 개별 블록과 연관된 변환 계수를 양자화하는 단계와, 위 양자화된 변환 계수 및 위 블록 레벨 양자화 파라미터를 비트스트림(bitstream)으로 인코딩하는 단계를 더 포함한다.
제1 실시예에 덧붙여, 위 방법은 위 블록 레벨 양자화 파라미터에 적어도 부분적으로 기반하여 위 비디오 시퀀스와 연관된 모드 선택(mode selection)을 생성하는 단계를 더 포함한다.
하나 이상의 제2 실시예에서, 컴퓨팅 디바이스 상에서 비디오 코딩을 제공하는 시스템은, 비디오 데이터를 저장하도록 구성된 메모리와, 위 메모리에 커플링된 그래픽 처리 유닛(graphics processing unit)을 포함하되, 위 그래픽 처리 유닛은, 비디오 시퀀스의 비디오 프레임을 위한 제1 양자화 파라미터를 결정하고, 위 비디오 프레임과 연관된 공간적 복잡도 또는 시간적 복잡도 중 적어도 하나에 기반하여 위 제1 양자화 파라미터를 수정하여 위 비디오 프레임을 위한 제2 양자화 파라미터를 생성하며, 위 비디오 프레임의 개별 블록을 위한 블록 레벨 양자화 파라미터를 위 제2 양자화 파라미터와, 위 개별 블록의 복잡도와, 위 비디오 프레임의 복잡도에 기반하여 생성하도록 구성된 양자화 파라미터 회로와, 양자화된 변환 계수를 생성하기 위해 위 블록 레벨 양자화 파라미터에 기반하여 위 개별 블록과 연관된 변환 계수를 양자화하도록 구성된 양자화 회로를 포함한다.
제2 실시예에 덧붙여, 위 비디오 프레임의 복잡도에 대한 위 개별 블록의 복잡도의 비율이 1보다 더 큰 경우 위 블록 레벨 양자화 파라미터는 위 제2 양자화 파라미터보다 더 크다.
제2 실시예에 덧붙여, 위 비디오 프레임은 인트라 프레임 또는 장면 변화 P 프레임을 포함하되, 위 제1 양자화 파라미터는 위 비디오 시퀀스를 위한 일정 품질 인자와 같고, 위 제2 양자화 파라미터는 위 인트라 프레임 또는 위 장면 변화 P 프레임과 연관된 공간적 복잡도에 비례하며, 위 인트라 프레임 또는 위 장면 변화 P 프레임의 복잡도에 대한 위 개별 블록의 복잡도의 비율과 임계치와의 비교에 기반하여 위 블록 레벨 양자화 파라미터는 위 제2 양자화 파라미터와 같거나 아니면 위 제2 양자화 파라미터보다 더 작다.
제2 실시예에 덧붙여, 위 비디오 프레임은 P 프레임을 포함하되, 위 제1 양자화 파라미터는 P 프레임 오프셋만큼 증가된 위 비디오 시퀀스를 위한 일정 품질 인자에 기반하고 인터 P 프레임과 연관된 I 프레임을 위한 인트라 프레임 양자화 값에 기반하여 수정되며, 위 제2 양자화 파라미터는 위 비디오 시퀀스의 과거 평균 시간적 복잡도 및 위 인터 P 프레임의 시간적 복잡도의 시간적 비율에 기반하여 조절된 위 제1 양자화 파라미터에 기반한다.
제2 실시예에 덧붙여, 위 비디오 프레임은 인터 프레임을 포함하되, 위 블록 레벨 양자화 파라미터는 위 인터 프레임의 복잡도에 대한 위 개별 블록의 복잡도의 비율과 제1 임계치와의 비교에 기반하여 위 제2 양자화 파라미터보다 더 큰 것 또는 위 인터 프레임의 복잡도에 대한 위 개별 블록의 복잡도의 비율과 제2 임계치와의 비교에 기반하여 위 제2 양자화 파라미터보다 더 작은 것 중 적어도 하나이다.
제2 실시예에 덧붙여, 위 양자화 파라미터 회로는 위 비디오 시퀀스의 제2 비디오 프레임을 위한 제3 양자화 파라미터를 결정하도록 또한 구성되되, 위 제2 비디오 프레임은 B 프레임이고, 위 제3 양자화 파라미터는 위 제2 양자화 파라미터에 기반한다.
제2 실시예에 덧붙여, 위 B 프레임은 B 참조 프레임이되, 위 제3 양자화 파라미터는 위 제2 양자화 파라미터의 평균에 기반하고, 위 제2 양자화 파라미터는 P 프레임 참조 양자화 파라미터와, B 프레임 참조 양자화 파라미터를 포함한다.
하나 이상의 제3 실시예에서, 컴퓨팅 디바이스 상에서 비디오 코딩을 제공하는 시스템은, 비디오 데이터를 저장하도록 구성된 메모리와, 위 메모리에 커플링된 그래픽 처리 유닛을 포함하되, 위 그래픽 처리 유닛은, 비디오 시퀀스의 비디오 프레임을 위한 제1 양자화 파라미터를 결정하는 수단과, 위 비디오 프레임과 연관된 공간적 복잡도 또는 시간적 복잡도 중 적어도 하나에 기반하여 위 제1 양자화 파라미터를 수정하여 위 비디오 프레임을 위한 제2 양자화 파라미터를 생성하는 수단과, 위 비디오 프레임의 개별 블록을 위한 블록 레벨 양자화 파라미터를 위 제2 양자화 파라미터와, 위 개별 블록의 복잡도와, 위 비디오 프레임의 복잡도에 기반하여 생성하는 수단을 포함한다.
제3 실시예에 덧붙여, 위 비디오 프레임은 P 프레임을 포함하되, 위 제1 양자화 파라미터는 P 프레임 오프셋만큼 증가된 위 비디오 시퀀스를 위한 일정 품질 인자에 기반하고 인터 P 프레임과 연관된 I 프레임을 위한 인트라 프레임 양자화 값에 기반하여 수정되며, 위 제2 양자화 파라미터는 위 비디오 시퀀스의 과거 평균 시간적 복잡도 및 위 인터 P 프레임의 시간적 복잡도의 시간적 비율에 기반하여 조절된 위 제1 양자화 파라미터에 기반한다.
제3 실시예에 덧붙여, 위 비디오 프레임은 인터 프레임을 포함하되, 위 블록 레벨 양자화 파라미터는 위 인터 프레임의 복잡도에 대한 위 개별 블록의 복잡도의 비율과 제1 임계치와의 비교에 기반하여 위 제2 양자화 파라미터보다 더 큰 것 또는 위 인터 프레임의 복잡도에 대한 위 개별 블록의 복잡도의 비율과 제2 임계치와의 비교에 기반하여 위 제2 양자화 파라미터보다 더 작은 것 중 적어도 하나이다.
하나 이상의 제4 실시예에서, 적어도 하나의 머신 판독가능 매체는, 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 위 컴퓨팅 디바이스로 하여금, 비디오 시퀀스의 비디오 프레임을 위한 제1 양자화 파라미터를 결정하는 것과, 위 비디오 프레임과 연관된 공간적 복잡도 또는 시간적 복잡도 중 적어도 하나에 기반하여 위 제1 양자화 파라미터를 수정하여 위 비디오 프레임을 위한 제2 양자화 파라미터를 생성하는 것과, 위 비디오 프레임의 개별 블록을 위한 블록 레벨 양자화 파라미터를 위 제2 양자화 파라미터와, 위 개별 블록의 복잡도와, 위 비디오 프레임의 복잡도에 기반하여 생성하는 것에 의해 비디오 코딩을 수행하게 하는 복수의 명령어를 포함한다.
제4 실시예에 덧붙여, 위 비디오 프레임은 인트라 프레임 또는 장면 변화 P 프레임을 포함하되, 위 제1 양자화 파라미터는 위 비디오 시퀀스를 위한 일정 품질 인자와 같고, 위 제2 양자화 파라미터는 위 인트라 프레임 또는 위 장면 변화 P 프레임과 연관된 공간적 복잡도에 비례하며, 위 인트라 프레임 또는 위 장면 변화 P 프레임의 복잡도에 대한 위 개별 블록의 복잡도의 비율과 임계치와의 비교에 기반하여 위 블록 레벨 양자화 파라미터는 위 제2 양자화 파라미터와 같거나 아니면 위 제2 양자화 파라미터보다 더 작다.
제4 실시예에 덧붙여, 위 비디오 프레임은 P 프레임을 포함하되, 위 제1 양자화 파라미터는 P 프레임 오프셋만큼 증가된 위 비디오 시퀀스를 위한 일정 품질 인자에 기반하고 인터 P 프레임과 연관된 I 프레임을 위한 인트라 프레임 양자화 값에 기반하여 수정되며, 위 제2 양자화 파라미터는 위 비디오 시퀀스의 과거 평균 시간적 복잡도 및 위 인터 P 프레임의 시간적 복잡도의 시간적 비율에 기반하여 조절된 위 제1 양자화 파라미터에 기반한다.
제4 실시예에 덧붙여, 위 비디오 프레임은 인터 프레임을 포함하되, 위 블록 레벨 양자화 파라미터는 위 인터 프레임의 복잡도에 대한 위 개별 블록의 복잡도의 비율과 제1 임계치와의 비교에 기반하여 위 제2 양자화 파라미터보다 더 큰 것 또는 위 인터 프레임의 복잡도에 대한 위 개별 블록의 복잡도의 비율과 제2 임계치와의 비교에 기반하여 위 제2 양자화 파라미터보다 더 작은 것 중 적어도 하나이다.
제4 실시예에 덧붙여, 위 머신 판독가능 매체는, 위 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 위 컴퓨팅 디바이스로 하여금, 위 비디오 시퀀스의 제2 비디오 프레임을 위한 제3 양자화 파라미터를 결정하는 것에 의해 비디오 코딩을 수행하게 하는 명령어를 더 포함하되, 위 제2 비디오 프레임은 B 프레임이고, 위 제3 양자화 파라미터는 위 제2 양자화 파라미터에 기반한다.
하나 이상의 제5 실시예에서, 적어도 하나의 머신 판독가능 매체는, 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 위 컴퓨팅 디바이스로 하여금 위 실시예들 중 임의의 것에 따른 방법을 수행하게 하는 복수의 명령어를 포함할 수 있다.
하나 이상의 제6 실시예에서, 장치는 위 실시예들 중 임의의 것에 따른 방법을 수행하는 수단을 포함할 수 있다.
실시예는 이와 같이 기술된 실시예에 한정되지 않으나, 부기된 청구항의 범주로부터 벗어나지 않고서 수정 및 변경과 함께 실시될 수 있음이 인식될 것이다. 예컨대, 위의 실시예들은 특징들의 특정 조합을 포함할 수 있다. 그러나, 위의 실시예들은 이 점에 한정되지 않고, 다양한 구현에서, 위의 실시예들은 그러한 특징들의 서브세트만을 시행하는 것, 그러한 특징들의 다른 순서를 시행하는 것, 그러한 특징들의 상이한 조합을 시행하는 것, 그리고/또는 명시적으로 나열된 특징들 외의 추가적인 특징들을 시행하는 것을 포함할 수 있다. 따라서, 실시예들의 범주는, 부기된 청구항을 그러한 청구항에 주어질 만한 균등물의 전 범주와 더불어 참조하여 결정되어야 한다.

Claims (25)

  1. 비디오 코딩을 위한 컴퓨터로 구현된 방법(computer-implemented method)으로서,
    비디오 시퀀스(video sequence)의 P 프레임(P frame)을 위한 제1 양자화 파라미터를 결정하는 단계 - 상기 제1 양자화 파라미터는 P 프레임 오프셋만큼 증가된 상기 비디오 시퀀스를 위한 일정 품질 인자(constant quality factor)에 기반하고, 상기 P 프레임과 연관된 I 프레임을 위한 인트라 프레임 양자화 값에 기반하여 수정됨 - 와,
    상기 P 프레임과 연관된 시간적 복잡도(temporal complexity)에 기반하여 상기 제1 양자화 파라미터를 수정하여 상기 P 프레임을 위한 제2 양자화 파라미터를 생성하는 단계 - 상기 제2 양자화 파라미터는 상기 비디오 시퀀스의 과거 평균 시간적 복잡도와 상기 P 프레임의 시간적 복잡도 사이의 시간적 비율(temporal ratio)에 기반하여 조절된 상기 제1 양자화 파라미터에 기반함 - 와,
    상기 P 프레임의 개별 블록을 위한 블록 레벨 양자화 파라미터(block level quantization parameter)를 상기 제2 양자화 파라미터와, 상기 개별 블록의 복잡도와, 상기 P 프레임의 복잡도에 기반하여 생성하는 단계를 포함하는
    비디오 코딩을 위한 컴퓨터로 구현된 방법.
  2. 제1항에 있어서,
    상기 P 프레임의 복잡도에 대한 상기 개별 블록의 복잡도의 비율이 1보다 큰 경우 상기 블록 레벨 양자화 파라미터는 상기 제2 양자화 파라미터보다 큰
    비디오 코딩을 위한 컴퓨터로 구현된 방법.
  3. 제1항에 있어서,
    상기 일정 품질 인자는 상기 비디오 시퀀스를 위해 사용자가 선택한 일정 품질 인자(user selected constant quality factor)인
    비디오 코딩을 위한 컴퓨터로 구현된 방법.
  4. 제1항에 있어서,
    상기 시간적 복잡도는 상기 P 프레임에 기반한 인터 예측 왜곡(inter prediction distortion)을 포함하는
    비디오 코딩을 위한 컴퓨터로 구현된 방법.
  5. 제1항에 있어서,
    상기 P 프레임과 연관된 상기 시간적 복잡도가 높은 시간적 복잡도를 나타내는 경우 상기 제2 양자화 파라미터는 상기 제1 양자화 파라미터보다 큰
    비디오 코딩을 위한 컴퓨터로 구현된 방법.
  6. 제1항에 있어서,
    상기 개별 블록의 복잡도는 상기 개별 블록의 블록 예측 왜곡(block prediction distortion) 또는 상기 개별 블록의 블록 분산(block variance) 중 적어도 하나를 포함하는
    비디오 코딩을 위한 컴퓨터로 구현된 방법.
  7. 제1항에 있어서,
    상기 블록 레벨 양자화 파라미터는 상기 P 프레임의 복잡도에 대한 상기 개별 블록의 복잡도의 비율과 제1 임계치와의 비교 결과에 따라 상기 제2 양자화 파라미터보다 큰 것 또는 상기 P 프레임의 복잡도에 대한 상기 개별 블록의 복잡도의 비율과 제2 임계치와의 비교 결과에 따라 상기 제2 양자화 파라미터보다 작은 것 중 적어도 하나인
    비디오 코딩을 위한 컴퓨터로 구현된 방법.
  8. 제1항에 있어서,
    상기 제2 양자화 파라미터에 기반하여, 상기 비디오 시퀀스의 B 프레임을 위한 제3 양자화 파라미터를 결정하는 단계를 더 포함하는
    비디오 코딩을 위한 컴퓨터로 구현된 방법.
  9. 제8항에 있어서,
    상기 B 프레임은 B 참조 프레임(B-reference frame)이고,
    상기 제3 양자화 파라미터는 상기 제2 양자화 파라미터의 평균에 기반하고,
    상기 제2 양자화 파라미터는 P 프레임 참조 양자화 파라미터와 B 프레임 참조 양자화 파라미터를 포함하는
    비디오 코딩을 위한 컴퓨터로 구현된 방법.
  10. 제1항에 있어서,
    상기 블록 레벨 양자화 파라미터에 기반하여 상기 개별 블록과 연관된 변환 계수를 양자화하는 단계와,
    상기 양자화된 변환 계수 및 상기 블록 레벨 양자화 파라미터를 비트스트림(bitstream)으로 인코딩하는 단계를 더 포함하는
    비디오 코딩을 위한 컴퓨터로 구현된 방법.
  11. 제1항에 있어서,
    상기 블록 레벨 양자화 파라미터에 적어도 부분적으로 기반하여 상기 비디오 시퀀스와 연관된 모드 선택(mode selection)을 생성하는 단계를 더 포함하는
    비디오 코딩을 위한 컴퓨터로 구현된 방법.
  12. 컴퓨팅 디바이스 상에서 비디오 코딩을 제공하는 시스템으로서,
    비디오 데이터를 저장하도록 구성된 메모리와,
    상기 메모리에 연결된 프로세서를 포함하되,
    상기 프로세서는,
    비디오 시퀀스의 P 프레임을 위한 제1 양자화 파라미터를 결정하고 - 상기 제1 양자화 파라미터는 P 프레임 오프셋만큼 증가된 상기 비디오 시퀀스를 위한 일정 품질 인자에 기반하고, 상기 P 프레임과 연관된 I 프레임을 위한 인트라 프레임 양자화 값에 기반하여 수정됨 -,
    상기 P 프레임과 연관된 시간적 복잡도에 기반하여 상기 제1 양자화 파라미터를 수정하여 상기 P 프레임을 위한 제2 양자화 파라미터를 생성하며 - 상기 제2 양자화 파라미터는 상기 비디오 시퀀스의 과거 평균 시간적 복잡도와 상기 P 프레임의 시간적 복잡도 사이의 시간적 비율에 기반하여 조절된 상기 제1 양자화 파라미터에 기반함 -,
    상기 P 프레임의 개별 블록을 위한 블록 레벨 양자화 파라미터를 상기 제2 양자화 파라미터와, 상기 개별 블록의 복잡도와, 상기 P 프레임의 복잡도에 기반하여 생성하고,
    양자화된 변환 계수를 생성하기 위해 상기 블록 레벨 양자화 파라미터에 기반하여 상기 개별 블록과 연관된 변환 계수를 양자화하는
    컴퓨팅 디바이스 상에서 비디오 코딩을 제공하는 시스템.
  13. 제12항에 있어서,
    상기 P 프레임의 복잡도에 대한 상기 개별 블록의 복잡도의 비율이 1보다 큰 경우 상기 블록 레벨 양자화 파라미터는 상기 제2 양자화 파라미터보다 큰
    컴퓨팅 디바이스 상에서 비디오 코딩을 제공하는 시스템.
  14. 제12항에 있어서,
    상기 프로세서는 또한 상기 양자화된 변환 계수 및 상기 블록 레벨 양자화 파라미터를 비트스트림(bitstream)으로 인코딩하는
    컴퓨팅 디바이스 상에서 비디오 코딩을 제공하는 시스템.
  15. 제12항에 있어서,
    상기 시간적 복잡도는 상기 P 프레임에 기반한 인터 예측 왜곡(inter prediction distortion)을 포함하고, 상기 개별 블록의 복잡도는 상기 개별 블록의 블록 예측 왜곡(block prediction distortion) 또는 상기 개별 블록의 블록 분산(block variance) 중 적어도 하나를 포함하는
    컴퓨팅 디바이스 상에서 비디오 코딩을 제공하는 시스템.
  16. 제12항에 있어서,
    상기 블록 레벨 양자화 파라미터는 상기 P 프레임의 복잡도에 대한 상기 개별 블록의 복잡도의 비율과 제1 임계치와의 비교 결과에 따라 상기 제2 양자화 파라미터보다 큰 것 또는 상기 P 프레임의 복잡도에 대한 상기 개별 블록의 복잡도의 비율과 제2 임계치와의 비교 결과에 따라 상기 제2 양자화 파라미터보다 작은 것 중 적어도 하나인
    컴퓨팅 디바이스 상에서 비디오 코딩을 제공하는 시스템.
  17. 복수의 명령어를 포함하는 적어도 하나의 비일시적 머신 판독가능 매체로서,
    상기 복수의 명령어는, 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 상기 컴퓨팅 디바이스로 하여금,
    비디오 시퀀스의 P 프레임을 위한 제1 양자화 파라미터를 결정하는 것 - 상기 제1 양자화 파라미터는 P 프레임 오프셋만큼 증가된 상기 비디오 시퀀스를 위한 일정 품질 인자에 기반하고, 상기 P 프레임과 연관된 I 프레임을 위한 인트라 프레임 양자화 값에 기반하여 수정됨 - 과,
    상기 P 프레임과 연관된 시간적 복잡도에 기반하여 상기 제1 양자화 파라미터를 수정하여 상기 P 프레임을 위한 제2 양자화 파라미터를 생성하는 것 - 상기 제2 양자화 파라미터는 상기 비디오 시퀀스의 과거 평균 시간적 복잡도와 상기 P 프레임의 시간적 복잡도 사이의 시간적 비율에 기반하여 조절된 상기 제1 양자화 파라미터에 기반함 - 과,
    상기 P 프레임의 개별 블록을 위한 블록 레벨 양자화 파라미터를 상기 제2 양자화 파라미터와, 상기 개별 블록의 복잡도와, 상기 P 프레임의 복잡도에 기반하여 생성하는 것에 의해 비디오 코딩을 수행하게 하는
    머신 판독가능 매체.
  18. 제17항에 있어서,
    명령어들을 더 포함하되, 상기 명령어들은, 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 상기 컴퓨팅 디바이스로 하여금,
    상기 블록 레벨 양자화 파라미터에 기반하여 상기 개별 블록과 연관된 변환 계수를 양자화하는 것과,
    상기 양자화된 변환 계수 및 상기 블록 레벨 양자화 파라미터를 비트스트림(bitstream)으로 인코딩하는 것에 의해 비디오 코딩을 수행하게 하는
    머신 판독가능 매체.
  19. 제17항에 있어서,
    상기 시간적 복잡도는 상기 P 프레임에 기반한 인터 예측 왜곡(inter prediction distortion)을 포함하고, 상기 개별 블록의 복잡도는 상기 개별 블록의 블록 예측 왜곡(block prediction distortion) 또는 상기 개별 블록의 블록 분산(block variance) 중 적어도 하나를 포함하는
    머신 판독가능 매체.
  20. 제17항에 있어서,
    상기 블록 레벨 양자화 파라미터는 상기 P 프레임의 복잡도에 대한 상기 개별 블록의 복잡도의 비율과 제1 임계치와의 비교 결과에 따라 상기 제2 양자화 파라미터보다 큰 것 또는 상기 P 프레임의 복잡도에 대한 상기 개별 블록의 복잡도의 비율과 제2 임계치와의 비교 결과에 따라 상기 제2 양자화 파라미터보다 작은 것 중 적어도 하나인
    머신 판독가능 매체.
  21. 제17항에 있어서,
    명령어들을 더 포함하되, 상기 명령어들은, 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 상기 컴퓨팅 디바이스로 하여금,
    상기 제2 양자화 파라미터에 기반하여, 상기 비디오 시퀀스의 B 참조 프레임 (B-reference frame)을 위한 제3 양자화 파라미터를 결정하는 것 - 상기 제3 양자화 파라미터는 상기 제2 양자화 파라미터의 평균에 기반하고, 상기 제2 양자화 파라미터는 P 프레임 참조 양자화 파라미터와 B 프레임 참조 양자화 파라미터를 포함함 - 에 의해 비디오 코딩을 수행하게 하는
    머신 판독가능 매체.
  22. 컴퓨팅 디바이스 상에서 비디오 코딩을 제공하는 시스템으로서,
    비디오 데이터를 저장하도록 구성된 메모리와,
    상기 메모리에 연결된 프로세서를 포함하되,
    상기 프로세서는,
    비디오 시퀀스의 제1 비디오 프레임을 위한 제1 양자화 파라미터를 결정하고,
    상기 제1 비디오 프레임과 연관된 공간적 복잡도(spatial complexity) 또는 시간적 복잡도(temporal complexity) 중 적어도 하나에 기반하여 상기 제1 양자화 파라미터를 수정하여 상기 비디오 프레임을 위한 제2 양자화 파라미터를 생성하며, 상기 비디오 프레임의 개별 블록을 위한 블록 레벨 양자화 파라미터를 상기 제2 양자화 파라미터와, 상기 개별 블록의 복잡도와, 상기 비디오 프레임의 복잡도에 기반하여 생성하고,
    상기 제2 양자화 파라미터에 기반하여, 상기 비디오 시퀀스의 B 참조 프레임 (B-reference frame)을 위한 제3 양자화 파라미터를 결정하되,
    상기 제2 양자화 파라미터는 P 프레임 참조 양자화 파라미터이고, 상기 제3 양자화 파라미터는 상기 제2 양자화 파라미터와 B 프레임 참조 양자화 파라미터의 평균에 기반하는
    컴퓨팅 디바이스 상에서 비디오 코딩을 제공하는 시스템.
  23. 제22항에 있어서,
    상기 비디오 프레임의 복잡도에 대한 상기 개별 블록의 복잡도의 비율이 1보다 큰 경우 상기 블록 레벨 양자화 파라미터는 상기 제2 양자화 파라미터보다 큰
    컴퓨팅 디바이스 상에서 비디오 코딩을 제공하는 시스템.
  24. 제22항에 있어서,
    상기 공간적 복잡도는 상기 비디오 프레임에 기반한 인트라 예측 왜곡(intra prediction distortion)을 포함하거나, 또는 상기 시간적 복잡도는 상기 비디오 프레임에 기반한 인터 예측 왜곡(inter prediction distortion)을 포함하는
    컴퓨팅 디바이스 상에서 비디오 코딩을 제공하는 시스템.
  25. 제22항에 있어서,
    상기 프로세서는 또한,
    상기 블록 레벨 양자화 파라미터에 기반하여 상기 개별 블록과 연관된 변환 계수를 양자화하고,
    상기 양자화된 변환 계수 및 상기 블록 레벨 양자화 파라미터를 비트스트림 (bitstream)으로 인코딩하는
    컴퓨팅 디바이스 상에서 비디오 코딩을 제공하는 시스템.

KR1020167027041A 2014-04-30 2015-03-25 일정 품질 비디오 코딩 KR101836027B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/265,580 2014-04-30
US14/265,580 US9661329B2 (en) 2014-04-30 2014-04-30 Constant quality video coding
PCT/US2015/022545 WO2015167704A1 (en) 2014-04-30 2015-03-25 Constant quality video coding

Publications (2)

Publication Number Publication Date
KR20160129045A KR20160129045A (ko) 2016-11-08
KR101836027B1 true KR101836027B1 (ko) 2018-04-19

Family

ID=54356172

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167027041A KR101836027B1 (ko) 2014-04-30 2015-03-25 일정 품질 비디오 코딩

Country Status (5)

Country Link
US (1) US9661329B2 (ko)
EP (1) EP3138287A4 (ko)
KR (1) KR101836027B1 (ko)
CN (1) CN106170979B (ko)
WO (1) WO2015167704A1 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9253482B2 (en) 2011-11-08 2016-02-02 Texas Insturments Incorporated Method and apparatus for sample adaptive offset without sign coding
CN103634606B (zh) * 2012-08-21 2015-04-08 腾讯科技(深圳)有限公司 视频编码方法和装置
US9936203B2 (en) * 2015-04-13 2018-04-03 Qualcomm Incorporated Complex region detection for display stream compression
US10284849B2 (en) 2015-04-13 2019-05-07 Qualcomm Incorporated Quantization parameter (QP) calculation for display stream compression (DSC) based on complexity measure
US10356428B2 (en) 2015-04-13 2019-07-16 Qualcomm Incorporated Quantization parameter (QP) update classification for display stream compression (DSC)
US10244255B2 (en) 2015-04-13 2019-03-26 Qualcomm Incorporated Rate-constrained fallback mode for display stream compression
WO2017164297A1 (ja) * 2016-03-25 2017-09-28 パナソニックIpマネジメント株式会社 信号依存型適応量子化を用いて動画像を符号化及び復号するための方法及び装置
US10574989B2 (en) * 2016-10-17 2020-02-25 Arris Enterprises Llc Temporal local activity for quantization parameter (QP) offset for video coding
CN107027030B (zh) * 2017-03-07 2018-11-09 腾讯科技(深圳)有限公司 一种码率分配方法及其设备
CN109151470B (zh) * 2017-06-28 2021-03-16 腾讯科技(深圳)有限公司 编码分辨率控制方法及终端
CN109561310B (zh) * 2017-09-26 2022-09-16 腾讯科技(深圳)有限公司 视频编码处理方法、装置、设备和存储介质
CN109819253B (zh) * 2017-11-21 2022-04-22 腾讯科技(深圳)有限公司 视频编码方法、装置、计算机设备和存储介质
CN110324622B (zh) * 2018-03-28 2022-09-23 腾讯科技(深圳)有限公司 一种视频编码码率控制方法、装置、设备及存储介质
CN110519594B (zh) * 2018-05-21 2021-04-20 华为技术有限公司 视频编码方法及装置
CN110800297B (zh) * 2018-07-27 2022-10-04 深圳市大疆创新科技有限公司 视频编码方法及装置、计算机可读存储介质
CN110876082B (zh) * 2018-08-31 2020-12-29 网宿科技股份有限公司 一种视频帧的复杂度的确定方法及装置
CN111200734B (zh) * 2018-11-19 2022-03-11 浙江宇视科技有限公司 视频编码方法及装置
GB2623226B (en) * 2019-07-05 2024-06-26 V Nova Int Ltd Quantization of residuals in video coding
WO2021005349A1 (en) * 2019-07-05 2021-01-14 V-Nova International Ltd Quantization of residuals in video coding
KR20220032520A (ko) 2019-07-20 2022-03-15 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 팔레트 모드 사용 지시의 조건 종속적인 코딩
CN112312134B (zh) * 2019-08-01 2023-03-24 杭州海康威视数字技术股份有限公司 编码方法、装置、电子设备及可读存储介质
EP3868101B1 (en) * 2019-08-23 2024-04-10 Huawei Technologies Co., Ltd. An encoder, a decoder and corresponding methods for performing chroma deblocking for blocks which use joint chroma coding
CN112565755B (zh) * 2019-09-10 2023-05-16 广州虎牙科技有限公司 视频帧编码方法、装置、电子设备及可读存储介质
CN112752106B (zh) * 2019-10-29 2022-02-18 北京新唐思创教育科技有限公司 视频图像帧的编码控制方法、装置及计算机存储介质
CN111988611B (zh) * 2020-07-24 2024-03-05 北京达佳互联信息技术有限公司 量化偏移信息的确定方法、图像编码方法、装置及电子设备
CN112351278B (zh) * 2020-11-04 2023-07-07 北京金山云网络技术有限公司 一种视频的编码方法和装置,视频的解码方法和装置
CN112073723B (zh) * 2020-11-16 2021-02-02 北京世纪好未来教育科技有限公司 视频信息处理方法、装置、电子设备及存储介质
US20230059035A1 (en) * 2021-08-23 2023-02-23 Netflix, Inc. Efficient encoding of film grain noise
CN114222121B (zh) * 2021-12-21 2023-11-14 北京达佳互联信息技术有限公司 视频编码方法、装置、电子设备和计算机可读存储介质
CN114584834B (zh) * 2022-01-27 2024-02-13 百果园技术(新加坡)有限公司 视频质量优化方法、装置、设备和存储介质
JP7356549B1 (ja) 2022-07-22 2023-10-04 Nttイノベーティブデバイス株式会社 画像符号化装置及び画像符号化方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110310963A1 (en) * 2009-12-14 2011-12-22 Hua Yang Method and apparatus for bit allocation in offline video coding
US20120026394A1 (en) * 2010-07-30 2012-02-02 Emi Maruyama Video Decoder, Decoding Method, and Video Encoder
US20130128963A1 (en) * 2010-01-06 2013-05-23 Dolby Laboratories Licensing Corporation Multiple-Pass Rate Control for Video Coding Applications
US20130279567A1 (en) * 2012-04-23 2013-10-24 Ilya V. Brailovskiy Frame level rate control using motion estimated distortions

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6765962B1 (en) * 1999-12-02 2004-07-20 Sarnoff Corporation Adaptive selection of quantization scales for video encoding
US8149909B1 (en) 2005-10-13 2012-04-03 Maxim Integrated Products, Inc. Video encoding control using non-exclusive content categories
EP1809042A1 (en) * 2006-01-13 2007-07-18 THOMSON Licensing Method and apparatus for coding interlaced video data
WO2007104266A1 (en) 2006-03-16 2007-09-20 Huawei Technologies Co., Ltd. Method and apparatus for realizing adaptive quantization in encoding process
US8331438B2 (en) * 2007-06-05 2012-12-11 Microsoft Corporation Adaptive selection of picture-level quantization parameters for predicted video pictures
US8532169B2 (en) * 2009-12-23 2013-09-10 General Instrument Corporation Rate control for two-pass encoder using adaptive quantization parameters
US9031341B2 (en) 2011-02-28 2015-05-12 Megachips Corporation Image coding apparatus
JP5875236B2 (ja) 2011-03-09 2016-03-02 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
CN103533365B (zh) * 2012-07-04 2016-12-21 珠海扬智电子科技有限公司 比特率控制方法与比特率控制***
CN102932641B (zh) * 2012-11-13 2016-04-06 北京大学 一种恒定质量码率控制方法
CN103200404A (zh) * 2013-04-07 2013-07-10 成都博盛信息技术有限公司 基于宏块运动活跃度的编码模式快速预测方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110310963A1 (en) * 2009-12-14 2011-12-22 Hua Yang Method and apparatus for bit allocation in offline video coding
US20130128963A1 (en) * 2010-01-06 2013-05-23 Dolby Laboratories Licensing Corporation Multiple-Pass Rate Control for Video Coding Applications
US20120026394A1 (en) * 2010-07-30 2012-02-02 Emi Maruyama Video Decoder, Decoding Method, and Video Encoder
US20130279567A1 (en) * 2012-04-23 2013-10-24 Ilya V. Brailovskiy Frame level rate control using motion estimated distortions

Also Published As

Publication number Publication date
WO2015167704A1 (en) 2015-11-05
CN106170979B (zh) 2019-06-04
EP3138287A1 (en) 2017-03-08
CN106170979A (zh) 2016-11-30
EP3138287A4 (en) 2018-05-16
US20150319437A1 (en) 2015-11-05
US9661329B2 (en) 2017-05-23
KR20160129045A (ko) 2016-11-08

Similar Documents

Publication Publication Date Title
KR101836027B1 (ko) 일정 품질 비디오 코딩
US10200698B2 (en) Determining chroma quantization parameters for video coding
US10674151B2 (en) Adaptive in-loop filtering for video coding
US20210067785A1 (en) Video encoding rate control for intra and scene change frames using machine learning
US10616577B2 (en) Adaptive video deblocking
US10397574B2 (en) Video coding quantization parameter determination suitable for video conferencing
CN106664412B (zh) 包括目标比特率的视频编码速率控制和质量控制
US10645383B2 (en) Constrained directional enhancement filter selection for video coding
US9549188B2 (en) Golden frame selection in video coding
US11418789B2 (en) Content adaptive quantization for video coding
US20210144377A1 (en) Method and system of video coding with content adaptive quantization
CN108432246B (zh) 用于确定视频编码的变换单元大小的方法及***
CN107736026B (zh) 样本自适应偏移编码
CN112565761A (zh) 利用交叉通道引用进行多通道视频编码的方法和***
US11856205B2 (en) Subjective visual quality enhancement for high spatial and temporal complexity video encode
CN107743707B (zh) 低位率视频编解码
CN114630123A (zh) 用于低时延视频编码的自适应质量提升
CN115550662A (zh) 用于视频编码的细粒度前瞻增强

Legal Events

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