KR100988402B1 - 멀티-패스 비디오 인코딩 방법 - Google Patents

멀티-패스 비디오 인코딩 방법 Download PDF

Info

Publication number
KR100988402B1
KR100988402B1 KR1020097003421A KR20097003421A KR100988402B1 KR 100988402 B1 KR100988402 B1 KR 100988402B1 KR 1020097003421 A KR1020097003421 A KR 1020097003421A KR 20097003421 A KR20097003421 A KR 20097003421A KR 100988402 B1 KR100988402 B1 KR 100988402B1
Authority
KR
South Korea
Prior art keywords
encoding
underflow
images
input buffer
sequence
Prior art date
Application number
KR1020097003421A
Other languages
English (en)
Other versions
KR20090034992A (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
Priority claimed from US11/118,616 external-priority patent/US8406293B2/en
Priority claimed from US11/118,604 external-priority patent/US8005139B2/en
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20090034992A publication Critical patent/KR20090034992A/ko
Application granted granted Critical
Publication of KR100988402B1 publication Critical patent/KR100988402B1/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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/142Detection of scene cut or scene change
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/177Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]
    • 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/192Methods 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 the adaptation method, adaptation tool or adaptation type being iterative or recursive

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명의 몇몇의 실시예는 복수의 이미지(예를 들면, 복수의 비디오 시퀀스 프레임)를 인코딩하는 멀티-패스 인코딩 방법을 제공한다. 이 방법은 이들 이미지를 인코딩하는 인코딩 동작을 반복적으로 수행한다. 인코딩 동작은 이 방법이 이미지들에 대한 양자화 파라미터를 계산하는 데에 이용하는 명목상의 양자화 파라미터에 기초한다. 몇몇의 서로 다른 인코딩 동작의 반복 시에, 방법은 몇몇의 서로 다른 명목상의 양자화 파라미터를 이용한다. 방법은 종료 기준에 도달할 때(예를 들면, 이미지의 허용가능한 인코딩을 식별할 때) 이 반복들을 중지한다.
멀티-패스 인코딩, 디코딩, 정량화, 언더플로우

Description

멀티-패스 비디오 인코딩 방법{MULTI-PASS VIDEO ENCODING}
비디오 인코더는 다양한 인코딩 스킴을 이용함으로써 비디오 이미지들의 시퀀스(예를 들면, 비디오 프레임)를 인코딩한다. 비디오 인코딩 스킴은 통상적으로 비디오 프레임 또는 비디오 프레임의 일부(예를 들면, 비디오 프레임의 픽셀 집합)를 프레임 내(intraframe) 또는 프레임 간(interframe)의 점에서 인코딩한다. 인트라 프레임 인코딩된 프레임 또는 픽셀 집합은 다른 프레임 또는 다른 프레임의 픽셀 집합과는, 독립적으로 인코딩된 것이다. 인터 프레임 인코딩된 프레임 또는 픽셀 집합은 하나 이상의 다른 프레임 또는 다른 프레임의 픽셀 집합을 참조하여 인코딩된 것이다.
비디오 프레임을 압축할 때, 몇몇의 인코더는 인코딩되어야 할 비디오 프레임 또는 비디오 프레임의 집합에 대한 '비트 버짓(bit budget)'을 제공하는 '레이트 제어기(rate controller)'를 구현한다. 비트 버짓은 비디오 프레임 또는 비디오 프레임의 집합을 인코딩하는 데에 할당된 비트 개수를 기술한다. 비트 버짓을 효과적으로 할당함으로써, 레이트 제어기는 특정 제약사항(예를 들면, 목표 비트레이트, 등)의 관점으로 가장 품질이 좋게 압축된 비디오 스트림을 생성하는 것을 도모한다.
현재까지, 다양한 단일-패스 및 멀티-패스 레이트 제어기가 제안되어 왔다. 단일-패스 레이트 제어기는 1 패스로 연속의 비디오 이미지를 인코딩하는 인코딩 스킴에 대한 비트 버짓을 제공하는 한편, 멀티-패스 레이트 제어기는 복수의 패스로 연속의 비디오 이미지를 인코딩하는 인코딩 스킴에 대한 비트 버짓을 제공한다.
단일-패스 레이트 제어기는 실시간 인코딩 상황에 유용하다. 반면에, 멀티-패스 레이트 제어기는 제약사항 집합에 기초하여 특정 비트레이트의 인코딩을 최적화한다. 현재까지는 일부 레이트 제어기만이 자신의 인코딩의 비트레이트를 제어하는 데에 프레임 또는 프레임 내의 픽셀 집합의 공간적 또는 시간적인 복잡도를 고려한다. 또한, 대부분의 멀티-패스 레이트 제어기는 원하는 비트레이트 관점에서 프레임 및/또는 프레임 내의 픽셀 집합에 대한 최적의 양자화 파라미터를 이용하는 인코딩 솔루션(solution)을 찾기 위하여 솔루션 공간을 적절히 검색하지 않는다.
그러므로, 본 기술 분야에서는 비디오 이미지 및/또는 비디오 이미지의 일부의 공간 또는 시간 복잡도를 고려하면서 비디오 이미지의 집합을 인코딩하기 위한 비트레이트를 제어하는 새로운 기술을 이용하는 레이트 제어기가 필요하다. 또한 본 기술 분야에서는 인코딩 솔루션을 적절히 검토하여 비디오 이미지 및/또는 비디오 이미지의 일부에 대한 최적의 양자화 파라미터 집합을 이용하는 인코딩 솔루션을 식별하는 멀티-패스 제어기도 필요하다.
본 발명의 몇몇의 실시예는 복수의 이미지(예를 들면, 복수의 비디오 시퀀스 프레임)를 인코딩하는 멀티-패스 인코딩 방법을 제공한다. 이 방법은 이들 이미지를 인코딩하는 인코딩 동작을 반복적으로 수행한다. 이 인코딩 동작은 이 방법이 이미지들에 대한 양자화 파라미터를 계산하는 데에 이용하는 명목상의 양자화 파라미터에 기초한다. 몇몇의 서로 다른 인코딩 동작의 반복 시에, 방법은 몇몇의 서로 다른 명목상의 양자화 파라미터를 이용한다. 방법은 종료 기준에 도달할 때(예를 들면, 이미지들의 허용가능한 인코딩을 식별할 때) 이 반복들을 중지한다.
본 발명의 몇몇의 실시예는 비디오 시퀀스를 인코딩하기 위한 방법을 제공한다. 이 방법은 비디오의 제1 이미지의 복잡도를 정량화하는 제1 속성을 식별한다. 방법은 또한 식별된 제1 속성에 기초하여 제1 이미지를 인코딩하기 위한 양자화 파라미터를 식별한다. 그 다음, 방법은 식별된 양자화 파라미터에 기초하여 제1 이 미지를 인코딩한다. 몇몇의 실시예에서, 이 방법은 비디오의 몇몇의 이미지에 대하여 이러한 3가지 동작을 수행한다.
본 발명의 몇몇의 실시예는 비디오 이미지 및/또는 비디오 이미지의 일부의 "시각적 마스킹" 속성에 기초하여 비디오 이미지 시퀀스를 인코딩한다. 이미지 또는 이미지의 일부의 시각적 마스킹은 코딩 아티팩트가 이미지 또는 이미지 일부에서 얼마나 허용될 수 있는지에 대한 표시자이다. 이미지 또는 이미지 일부의 시각적인 마스킹 속성을 표현하기 위하여, 몇몇의 실시예는 이미지 또는 이미지 일부의 휘도 에너지를 정량화하는 시각적 마스킹 강도를 계산한다. 몇몇의 실시예에서, 휘도 에너지는 이미지 또는 이미지 일부의 평균 루마(luma) 또는 픽셀 에너지의 함수로서 측정된다.
휘도 에너지 대신에, 또는 휘도 에너지와 함께, 이미지 또는 이미지 일부의 시각적 마스킹 강도 또한 이미지 또는 이미지 일부의 활성 에너지를 정량화할 수 있다. 활성 에너지는 이미지 또는 이미지 일부의 복잡도를 표현한다. 몇몇의 실시예에서, 활성 에너지는 이미지 또는 이미지 일부의 공간적 복잡도를 정량화하는 공간 성분, 및/또는 이미지들 간의 움직임으로 인한 허용될 수 있거나 마스킹될 수 있는 왜곡 양을 정량화하는 움직임 성분을 포함한다.
본 발명의 몇몇의 실시예는 비디오 시퀀스를 인코딩하기 위한 방법을 제공한다. 이 방법은 비디오의 제1 이미지의 시각적인-마스킹 속성을 식별한다. 이 방법은 또한 식별된 시각적-마스킹 속성에 기초하여 제1 이미지를 인코딩하기 위한 양자화 파라미터를 식별한다. 그 다음, 방법은 식별된 양자화 파라미터에 기초하 여 제1 이미지를 인코딩한다.
본 발명의 새로운 특징은 첨부된 특허청구범위에 설명된다. 그러나, 설명을 위하여 본 발명의 몇몇의 실시예가 다음의 도면에 설명된다.
다음의 본 발명의 상세한 설명에서는, 본 발명의, 다양한 상세한 사항, 예, 및 실시예가 설명되고 기술된다. 그러나, 본 발명은 설명된 실시예로 한정되지 않으며 본 발명은 몇몇의 특정 상세한 사항 및 기술된 예 없이도 실행될 수 있음이 본 기술 분야에서 숙련된 기술을 가진 자에게 자명하고 명백할 것이다.
Ⅰ. 정의
이 섹션은 본 명세서에서 이용되는 몇몇의 기호에 대한 정의를 제공한다.
Figure 112009010355614-pat00001
는 프레임 시퀀스를 인코딩하는 데에 바람직한 비트레이트인 목표 비트레이트를 나타낸다. 통상적으로, 이러한 비트레이트는 bit/sec(초 당 비트) 단위로 표현되며, 바람직한 최종 파일 사이즈, 시퀀스에서의 프레임 개수, 및 프레임레이트로부터 계산된다.
Figure 112009010355614-pat00002
는 패스 p의 끝에서의 인코딩된 비트 스트림의 비트레이트를 나타낸다.
Figure 112009010355614-pat00003
는 패스 p의 끝에서의 비트레이트의 오차 퍼센트를 나타낸다. 몇몇의 경우, 이러한 퍼센트는 100 x
Figure 112009010355614-pat00004
로서 계산된다.
ε는 최종 비트레이트에서의 오차 허용치를 나타낸다.
Figure 112009010355614-pat00005
는 제1 QP 검색 단계에 대한 비트레이트의 오차 허용치를 나타낸다.
QP는 양자화 파라미터를 나타낸다.
Figure 112009010355614-pat00006
는 프레임 시퀀스에 대한 패스 p 인코딩에 이용되는 명목상의 양자화 파라미터를 나타낸다.
Figure 112009010355614-pat00007
의 값은 제1 QP 조정 단계에서 본 발명의 멀티-패스 인코더에 의해 목표 비트레이트에 도달하도록 조정된다.
Figure 112009010355614-pat00008
는 패스 p에서의 프레임 k에 대한 양자화 파라미터(QP)인 마스킹된 프레임 QP를 나타낸다. 몇몇의 실시예에는 이 값을 명목상의 QP 및 프레임-레벨 시각적 마스킹에 의해 계산한다.
Figure 112009010355614-pat00009
는 프레임 k 및 패스 p의 (매크로블록 인덱스 m을 가지는) 개별적인 매크로블록에 대한 양자화 파라미터(QP)인 마스킹된 매크로블록 QP를 나타낸다. 몇몇의 실시예는
Figure 112009010355614-pat00010
Figure 112009010355614-pat00011
및 매크로블록 레벨 시각적 마스킹을 이용하여 계산한다.
Figure 112009010355614-pat00012
는 프레임 k에 대한 마스킹 강도라 칭하는 값을 나타낸다. 마스킹 강도
Figure 112009010355614-pat00013
는 프레임에 대한 복잡도의 측정치이며, 몇몇의 실시예에서, 이 값은 어떻게 시각적인 코딩 아티팩트(artifact)/잡음이 나타날지를 결정하고 프레임 k의
Figure 112009010355614-pat00014
를 계산하는 데에 이용된다.
Figure 112009010355614-pat00015
는 패스 p의 기준 마스킹 강도를 나타낸다. 기준 마스킹 강도는 프레 임 k의
Figure 112009010355614-pat00016
를 계산하는 데에 이용되고, 제2 단계에서 본 발명의 멀티-패스 인코더에 의해 목표 비트레이트에 도달하도록 조정된다.
Figure 112009010355614-pat00017
는 프레임 k의 인덱스 m을 가지는 매크로블록에 대한 마스킹 강도를 나타낸다. 마스킹 강도
Figure 112009010355614-pat00018
는 매크로블록에 대한 복잡도의 측정치이고, 몇몇의 실시예에서 이 값은 시각적인 코딩 아티팩트/잡음이 어떻게 나타날지를 결정하고
Figure 112009010355614-pat00019
를 계산하는 데에 이용된다. AMQPp는 패스 p의 프레임들에 대한 평균 마스킹된 QP를 나타낸다. 몇몇의 실시예에서, 이 값은 패스 p의 모든 프레임들에 대한 평균
Figure 112009010355614-pat00020
로서 계산된다.
Ⅱ. 개관
본 발명의 몇몇의 실시예는 소정의 비트레이트로 프레임 시퀀스를 인코딩하는데에 있어 최상의 시각적인 품질을 이루는 인코딩 방법을 제공한다. 몇몇의 실시예에서, 이 방법은 양자화 파라미터 QP를 모든 매크로블록에 할당하는 시각적인 마스킹 프로세스를 이용한다. 이 할당은 이미지 또는 비디오 프레임의 보다 밝거나 공간적으로 복잡한 구역에서의 코딩 아티팩트/잡음이 보다 어둡거나 평탄한 구역에서의 코딩 아티팩트/잡음에 비하여 잘 보이지 않는다는 사실에 기초한다.
몇몇의 실시예에서, 이러한 시각적인 마스킹 프로세스는 본 발명의 멀티-패스 인코딩 프로세스의 일부로서 수행된다. 이러한 인코딩 프로세스는, 최종 인코딩된 비트 스트림이 목표 비트레이트에 도달하게 하기 위하여, 명목상의 양자화 파 라미터를 조정하고 기준 마스킹 강도 파라미터
Figure 112009010355614-pat00021
을 통하여 시각적인 마스킹 프로세스를 제어한다. 이하에 더 기술될 바와 같이, 명목상의 양자화 파라미터를 조정하는 것과 마스킹 알고리즘을 제어하는 것은 각각의 화상(즉, 통상적인 비디오 인코딩 스킴에서의 각 프레임) 및 각각의 화상 내의 각각의 매크로블록에 대한 QP 값을 조정한다.
몇몇의 실시예에서, 멀티-패스 인코딩 프로세스는 전체 시퀀스에 대한 명목상의 QP 및
Figure 112009010355614-pat00022
을 전역적으로 조정한다. 다른 실시예에서, 이 프로세스는 비디오 시퀀스를 세그먼트들로 나누고 각 세그먼트에 대하여 명목상의 QP 및
Figure 112009010355614-pat00023
이 조정된다. 이하의 설명은 멀티-패스 인코딩 프로세스가 채용된 프레임의 시퀀스를 언급한다. 본 기술 분야에서 통상의 기술을 가진 자라면 이러한 시퀀스는 몇몇의 실시예에서는 전체 시퀀스를 포함하지만, 다른 실시예에서는 시퀀스 중 어느 한 세그먼트만을 포함함을 인식할 것이다.
몇몇의 실시예에서, 방법은 3가지 인코딩 단계를 가진다. 이들 3 단계는 (1) 패스 0에서 수행되는 초기 분석 단계, (2) 패스 1 내지 패스
Figure 112009010355614-pat00024
에서 수행되는 제1 검색 단계, 및 (3) 패스
Figure 112009010355614-pat00025
내지 패스
Figure 112009010355614-pat00026
에서 수행되는 제2 검색 단계이다.
초기 분석 단계(즉, 패스 0)에서, 방법은 명목상의 QP에 대한 초기 값(인코딩의 패스 1에 이용될 QPNom(1))을 식별한다. 초기 분석 단계 중에, 방법은 제1 검 색 단계의 모든 패스에서 이용되는 기준 마스킹 강도
Figure 112009010355614-pat00027
의 값 또한 식별한다.
제1 검색 단계에서, 방법은 인코딩 프로세스의
Figure 112009010355614-pat00028
번의 반복(즉,
Figure 112009010355614-pat00029
패스들)을 수행한다. 각 패스 p 중 각각의 프레임 k에 대하여, 프로세스는 프레임 k 내의 개별적인 매크로블록 m에 대한 특정 양자화 파라미터
Figure 112009010355614-pat00030
및 특정 양자화 파라미터
Figure 112009010355614-pat00031
를 이용함으로써 프레임을 인코딩하며, 여기서
Figure 112009010355614-pat00032
Figure 112009010355614-pat00033
를 이용하여 계산된다.
제1 검색 단계에서, 양자화 파라미터
Figure 112009010355614-pat00034
는 패스들마다 변화하는 명목상의 양자화 파라미터
Figure 112009010355614-pat00035
로부터 유도되기 때문에 패스들마다 변한다. 다시 말하면, 제1 검색 단계 중에 각각의 패스 p의 끝에서, 프로세스는 패스
Figure 112009010355614-pat00036
에 대한 명목상의
Figure 112009010355614-pat00037
을 계산한다. 몇몇의 실시예에서, 명목상의
Figure 112009010355614-pat00038
는 이전의 패스(들)로부터의 명목상의 QP 값(들) 및 비트레이트 오차(들)에 기초한다. 다른 실시예에서, 명목상의
Figure 112009010355614-pat00039
값은 제2 검색 단계에서 각각의 패스의 끝에서 서로 다르게 계산된다.
제2 검색 단계에서, 방법은 인코딩 프로세스의
Figure 112009010355614-pat00040
번의 반복(즉,
Figure 112009010355614-pat00041
개의 패스들)을 수행한다. 제1 검색 단계에서와 같이, 프로세스는 프레임 k 내의 개별적인 매크로블록 m에 대한 특정 양자화 파라미터
Figure 112009010355614-pat00042
및 특정 양자화 파라미터
Figure 112009010355614-pat00043
를 이용함으로써 각각의 패스 p 중에 각각의 프레임 k를 인코딩하 는데, 여기서
Figure 112009010355614-pat00044
Figure 112009010355614-pat00045
로부터 유도된다.
또한, 제1 검색 단계에서와 같이, 양자화 파라미터
Figure 112009010355614-pat00046
는 패스들마다 변한다. 그러나, 제2 검색 단계 중에, 이러한 파라미터는 패스들마다 변하는 기준 마스킹 강도
Figure 112009010355614-pat00047
를 이용하여 계산되기 때문에 변화하는 것이다. 몇몇의 실시예에서, 기준 마스킹 강도
Figure 112009010355614-pat00048
는 이전 패스(들)로부터의 값(들) 및 비트레이트(들)에서의 오차에 기초하여 계산된다. 다른 실시예에서, 이러한 기준 마스킹 강도는 제2 검색 단계에서의 각각의 패스 끝에서 다른 값이 되도록 계산된다.
멀티-패스 인코딩 프로세스가 시각적인 마스킹 프로세스와 함께 기술되었지만, 본 기술 분야에서 통상의 기술을 가진 자라면 인코더는 이들 프로세스 둘다를 함께 이용할 필요는 없음을 인식할 것이다. 예를 들면, 몇몇의 실시예에서, 멀티-패스 인코딩 프로세스는
Figure 112009010355614-pat00049
을 무시하고 상술한 제2 검색 단계를 생략함으로써 시각적인 마스킹 없이 소정의 목표 비트레이트에 근접하게 비트스트림을 인코딩하는 데에 이용된다.
시각적인 마스킹 및 멀티-패스 인코딩 프로세스는 본 명세서의 섹션 Ⅲ 및 Ⅳ에 더 기술된다.
Ⅲ. 시각적인 마스킹
명목상의 양자화 파라미터가 주어지면, 시각적인 마스킹 프로세스는 먼저 기준 마스킹 강도 (
Figure 112009010355614-pat00050
) 및 프레임 마스킹 강도
Figure 112009010355614-pat00051
를 이용하여 각각의 프레임에 대 한 마스킹된 프레임 양자화 파라미터(MQP)를 계산한다. 그 다음 이 프로세스는 각각의 매크로블록에 대한 마스킹된 매크로블록 양자화 파라미터
Figure 112009010355614-pat00052
를, 프레임 및 매크로블록-레벨 마스킹 강도(φF 및 φMB)에 기초하여, 계산한다. 시각적인 마스킹 프로세스가 멀티-패스 인코딩 프로세스에 채용된다면, 몇몇의 실시예에서의 기준 마스킹 강도(
Figure 112009010355614-pat00053
)는 상술하였고 후술될 바와 같이 제1 인코딩 패스 중에 식별된다.
A. 프레임-레벨 마스킹 강도 계산
1. 제1 접근법
프레임-레벨 마스킹 강도 φF(k) 를 계산하기 위하여, 몇몇의 실시예는 다음의 수학식 1을 이용한다:
Figure 112009010355614-pat00054
여기에서,
Figure 112009010355614-pat00055
는 bxb 영역을 이용하여 계산된 프레임 k에서의 평균 픽셀 강도이며, b는 1 이상의 정수이다(예를 들면, b=1 또는 b=4).
Figure 112009010355614-pat00056
는 프레임 k의 모든 매크로블록에 대한
Figure 112009010355614-pat00057
의 평균이다.
Figure 112009010355614-pat00058
는 인덱스 m을 가지는 매크로블록의 모든 4x4 블록에 대한 함수
Figure 112009010355614-pat00059
에 의해 주어진 값들의 합이다.
Figure 112009010355614-pat00060
, C, D 및 E는 상수이고/거나 지역적 통계에 적응된다.
ㆍpower(a, b)는
Figure 112009010355614-pat00061
을 의미한다.
함수
Figure 112009010355614-pat00062
의 의사 코드는 다음과 같다:
Figure 112009010355614-pat00063
2. 제2 접근법
다른 실시예는 프레임-레벨 마스킹 강도를 다르게 계산한다. 예를 들면, 상술한 수학식 1은 본질적으로 다음과 같이 프레임 마스킹 강도를 계산한다:
Figure 112009010355614-pat00064
수학식 1에서, 프레임의
Figure 112009010355614-pat00065
Figure 112009010355614-pat00066
와 같고,
Figure 112009010355614-pat00067
는 프레임의 모든 매크로블록에 대한 평균 매크로블록 SAD(
Figure 112009010355614-pat00068
) 값인
Figure 112009010355614-pat00069
와 같으며, 여기서 평균 매크로블록 SAD는 매 크로블록의 모든 4x4 블록에 대한 (
Figure 112009010355614-pat00070
에 의해 주어진) 평균 제거된 4x4 픽셀 편차의 절대값의 합과 같다. 이
Figure 112009010355614-pat00071
는 코딩되고 있는 프레임 내의 픽셀의 영역의 공간적 전개의 총계를 측정한다.
다른 실시예는 복수의 연속되는 프레임에 걸친 픽셀 영역에서의 시간적 전개의 양을 포함하도록 활성 측정치를 확장한다. 상세히는, 이들 실시예는 다음과 같이 프레임 마스킹 강도를 계산한다.
Figure 112009010355614-pat00072
이 수학식에서,
Figure 112009010355614-pat00073
는 다음의 수학식 3에 의해 주어진다.
Figure 112009010355614-pat00074
Figure 112009010355614-pat00075
몇몇의 실시예에서,
Figure 112009010355614-pat00076
는 프레임들 간의 움직임에 의한, 허용될 수 있는(즉, 마스킹될 수 있는) 왜곡의 양을 정량화한다. 몇몇의 이들 실시예에서, 프레임의
Figure 112009010355614-pat00077
는 프레임 내에 정의된 픽셀 영역의 움직임 보상된 오차 신호의 절대값 합의 정수배와 같다. 다른 실시예에서,
Figure 112009010355614-pat00078
는 아래의 수학식 4에 의해 제공된다.
Figure 112009010355614-pat00079
수학식 4에서, "
Figure 112009010355614-pat00080
"는 (상술한 바와 같이) 프레임의 평균 매크로블록 SAD(
Figure 112009010355614-pat00081
) 값을 나타내고,
Figure 112009010355614-pat00082
(0)은 현재 프레임에 대한
Figure 112009010355614-pat00083
이며, 음수 j는 현재 프레임 이전의 순시(time instant)를 인덱싱하고 양수 j는 현재 프레임 이후의 순시를 인덱싱한다. 그러므로,
Figure 112009010355614-pat00084
는 현재 프레임 이전의 2개의 프레임의 평균 프레임 SAD를 나타내고,
Figure 112009010355614-pat00085
는 현재 프레임 이후의 3개의 프레임의 평균 프레임 SAD를 나타낸다.
또한, 수학식 4에서, 변수 N 및 M은 각각 현재 프레임 이전의 프레임 개수 및 현재 프레임 이후의 프레임 개수를 나타낸다. 단순히 특정 개수의 프레임에 기초하여 값 N 및 M을 선택하는 대신에, 몇몇의 실시예는 현재 프레임 시간의 이전 및 이후 특정 시간 간격에 기초하여 값 N 및 M을 계산한다. 움직임 마스킹을 시간적인 기간에 상호 연관시키는 것은 움직임 마스킹을 설정된 수의 프레임에 상호 연관시키는 것보다 유리하다. 이는 움직임 마스킹을 시간적인 간격과의 상호 연관시 키는 것이 관찰자의 시간 기반의 시각적인 인식에 직접적으로 순응하기 때문이다. 반면에, 이러한 마스킹을 프레임 수에 상호 연관시키면 서로 다른 디스플레이가 서로 다른 프레임레이트로 비디오를 표시하기 때문에 디스플레이 간격이 변화되는 문제가 있다.
수학식 4에서, "W"는 몇몇의 실시예에서 프레임 j가 현재 프레임으로부터 진행됨에 따라 감소하는 가중치 계수를 나타낸다. 또한, 이 수학식에서, 첫번째 합산은 현재 프레임 이전에 마스킹될 수 있는 움직임의 양을 나타내고, 두번째 합산은 현재 프레임 이후에 마스킹될 수 있는 움직임의 양을 나타내며, 마지막 표현식(
Figure 112009010355614-pat00086
)은 현재 프레임의 프레임 SAD를 나타낸다.
몇몇의 실시예에서, 가중치 계수는 장면 전환을 설명하도록 조정된다. 예를 들면, 몇몇의 실시예는 예견 범위 내의(즉, M 프레임 내의) 다가오는 장면 전환을 설명하지만, 장면 전환 이후의 임의의 프레임을 설명하지는 않는다. 예를 들면, 이들 실시예는 장면 전환 이후의 예견 범위 내의 프레임에 대하여 가중치 계수를 0으로 설정할 수 있다. 또한, 몇몇의 실시예는 회고 범위 내의(즉, M 프레임 내의) 장면 전환 이전 또는 장면 전환 중의 프레임을 설명하지 않는다. 예를 들면, 이들 실시예는 이전 장면과 관련되거나 이전 장면 전환 전에 있었던 회고 범위 내의 프레임에 대하여 가중치 계수를 0으로 설정할 수 있다.
3. 제2 접근법에 대한 변형
a) 과거 또는 미래의 프레임이
Figure 112009010355614-pat00087
에 미치는 영향을 제 한하기
상기 수학식 4는 본질적으로 다음의 식으로
Figure 112009010355614-pat00088
를 표현한다:
Figure 112009010355614-pat00089
,
여기서
Figure 112009010355614-pat00090
Figure 112009010355614-pat00091
와 같고,
Figure 112009010355614-pat00092
Figure 112009010355614-pat00093
와 같으며,
Figure 112009010355614-pat00094
Figure 112009010355614-pat00095
와 같다.
몇몇의 실시예는
Figure 112009010355614-pat00096
의 계산을 수정하여
Figure 112009010355614-pat00097
Figure 112009010355614-pat00098
중 어느 것도 부적절하게
Figure 112009010355614-pat00099
의 값을 제어하지 않도록 한다. 예를 들면, 몇몇의 실시예는 초기에 PFA가
Figure 112009010355614-pat00100
와 같고, FFA가
Figure 112009010355614-pat00101
와 같도록 정의한다.
그 다음 이들 실시예는 PFA가 FFA의 스칼라 곱보다 더 큰지를 판정한다. 그렇다면, 이들 실시예는 PFA를 상한 PFA 한계 값(예를 들면, FFA의 스칼라 곱)과 같도록 설정한다. PFA를 상한 PFA 한계 값과 같도록 설정하는 것 이외에도, 몇몇의 실시예는 FFA를 0으로 설정하고 CFA를 0으로 설정하는 것을 조합하여 수행할 수 있다. 다른 실시예는 PFA와 CFA 모두 또는 이 둘 중 하나를 PFA, CFA, 및 FFA의 가중된 조합으로 설정할 수 있다.
마찬가지로, 초기에는 가중된 합에 기초하여 PFA 및 FFA 값을 정의한 이후에, 몇몇의 실시예는 또한 FFA 값이 PFA의 스칼라 곱보다 큰지를 판정한다. 그렇다면, 이들 실시예는 FFA가 상한 FFA 한계 값(예를 들면, PFA의 스칼라 곱)과 같도록 설정한다. FFA를 상한 FFA 한계 값과 같도록 설정하는 것 이외에도, 몇몇의 실시예는 PFA를 0으로 설정하고 CFA를 0으로 설정하는 것을 조합하여 수행할 수 있다. 다른 실시예는 FFA와 CFA 모두 또는 이 둘 중 하나를 FFA, CFA, 및 PFA의 가중된 조합으로 설정할 수 있다.
(가중치 합에 기초하는 이들 값의 초기 계산 이후에) PFA 및 FFA 값의 잠재적인 이후의 조정은 이들 값 중 하나가 부적절하게
Figure 112009010355614-pat00102
를 제어하는 것을 방지한다.
b)
Figure 112009010355614-pat00103
Figure 112009010355614-pat00104
Figure 112009010355614-pat00105
에 미치는 영향을 제한하기
상기 수학식 3은 본질적으로 다음의 식으로
Figure 112009010355614-pat00106
를 표현한다.
Figure 112009010355614-pat00107
,
여기서
Figure 112009010355614-pat00108
는 scalar*(scalar*
Figure 112009010355614-pat00109
)β와 같고,
Figure 112009010355614-pat00110
Figure 112009010355614-pat00111
와 같다.
몇몇의 실시예는
Figure 112009010355614-pat00112
의 계산을 수정하여
Figure 112009010355614-pat00113
Figure 112009010355614-pat00114
중 어느 것도
Figure 112009010355614-pat00115
의 값을 부적절하게 제어하지 않도록 한다. 예를 들면, 몇몇의 실시예는 초기에
Figure 112009010355614-pat00116
를 scalar*(scalar*
Figure 112009010355614-pat00117
)β와 같도록 정의하고,
Figure 112009010355614-pat00118
Figure 112009010355614-pat00119
와 같도록 정의한다.
그 다음 이들 실시예는 SA가 TA의 스칼라 곱보다 큰지를 판정한다. 그렇다면, 이들 실시예는 SA가 상한 SA 한계 값(예를 들면, TA의 스칼라 곱)과 같도록 설정한다. SA를 상한 SA 한계와 같도록 설정하는 것 이외에도, 이 경우 몇몇의 실시예는 TA 값을 0 또는 TA와 SA의 가중된 조합으로 설정할 수도 있다.
마찬가지로, 초기에 지수방정식에 기초하여 SA 및 TA 값을 정의한 이후에, 몇몇의 실시예는 또한 TA 값이 SA의 스칼라 곱보다 큰지를 판정한다. 그렇다면, 이들 실시예는 TA가 상한 TA 한계 값(예를 들면, SA의 스칼라 곱)과 같도록 설정한다. TA를 상한 TA 한계와 같도록 설정하는 것 이외에도, 이 경우 몇몇의 실시예는 SA 값을 0으로 설정하거나 SA와 TA의 가중된 조합으로 설정할 수도 있다.
(지수방정식에 기초하는 이들 값의 초기 계산 이후에) SA 및 TA 값의 잠재적 인 이후의 조정은 이들 값 중 하나가 부적절하게
Figure 112009010355614-pat00120
를 제어하는 것을 방지한다.
B. 매크로블록-레벨 마스킹 강도의 계산
1. 제1 접근법
몇몇의 실시예에서, 매크로블록-레벨 마스킹 강도
Figure 112009010355614-pat00121
는 다음과 같이 계산된다:
Figure 112009010355614-pat00122
여기서,
Figure 112009010355614-pat00123
는 프레임 k, 매크로블록 m의 평균 픽셀 강도이다.
Figure 112009010355614-pat00124
및 C는 상수이고/거나 지역적 통계에 적응된다.
2. 제2 접근법
상술한 수학식 5는 본질적으로 다음과 같이 매크로블록 마스킹 강도를 계산한다:
Figure 112009010355614-pat00125
수학식 5에서, 매크로블록의
Figure 112009010355614-pat00126
Figure 112009010355614-pat00127
와 같고,
Figure 112009010355614-pat00128
Figure 112009010355614-pat00129
와 같다. 이
Figure 112009010355614-pat00130
는 코딩되고 있는 매크로블록 내의 픽셀 영억에서의 공간적인 전개의 양을 측정한다.
프레임 마스킹 강도의 경우에서와 같이, 몇몇의 실시예는 복수의 연속되는 프레임에 걸친 픽셀 영역에서의 시간적 전개의 양을 포함하도록 매크로블록 마스킹 강도의 활성 측정치를 확장할 수 있다. 상세히는, 이들 실시예는 다음과 같이 매크로블록 마스킹 강도를 계산할 것이다:
Figure 112009010355614-pat00131
여기서, Mb_Activity_Attribute는 다음의 수학식 7에 의해 주어진다:
Figure 112009010355614-pat00132
매크로블록에 대한 Mb_Temporal_Activity_Attribute의 계산은 상술한 프레임에 대한 Mb_Temporal_Activity_Attribute의 계산과 유사할 수 있다. 예를 들면, 몇몇의 이들 실시예에서, Mb_Temporal_Activity_Attribute는 다음의 수학식 8에 의해 제공된다:
Figure 112009010355614-pat00133
수학식 8의 변수들은 섹션 Ⅲ.A에 정의되었다. 수학식 5에서, 프레임 i 또는 j의 매크로블록 m은 현재 프레임의 매크로블록 m에서의 위치와 동일한 위치의 매크로블록일 수 있거나, 현재 프레임의 매크로블록 m에 대응하도록 초기에 예측된 프레임 i 또는 j에서의 매크로블록일 수 있다.
수학식 8이 제공한 Mb_Temporal_Activity_Attribute는 수학식 4가 제공한 프레임 Temporal_Activity_Attribute의 (상기 섹션 Ⅲ.A.3에 기술된) 수정과 유사한 방식으로 수정될 수 있다. 상세히는, 수학식 8이 제공한 Mb_Temporal_Activity_Attribute는 과거 또는 미래의 프레임의 매크로블록의 부적절한 영향을 제한하도록 수정될 수 있다.
마찬가지로, 수학식 7이 제공한 Mb_Activity_Attribute는 수학식 3이 제공한 프레임
Figure 112009010355614-pat00134
의 (상기 섹션 Ⅲ.A.3)에 기술된 수정과 유사한 방식으로 수정될 수 있다. 상세히는, 수학식 7이 제공한 Mb_Activity_Attribute는 Mb_Spatial_Activity_Attribute 및 Mb_Temporal_Activity_Attribute의 부적절한 영향을 제한하도록 수정될 수 있다.
C. 마스킹된 QP 값의 계산
마스킹 강도의 값(
Figure 112009010355614-pat00135
Figure 112009010355614-pat00136
) 및 기준 마스킹 강도의 값
Figure 112009010355614-pat00137
에 기초하여, 시각적인 마스킹 프로세스는 2개의 함수
Figure 112009010355614-pat00138
Figure 112009010355614-pat00139
를 이용함으로써 프레임 레벨 및 매크로블록 레벨에서 마스킹된 QP 값을 계산할 수 있다. 이들 2 함수의 의사 코드는 다음과 같다:
Figure 112009010355614-pat00140
상기 함수에서,
Figure 112009010355614-pat00141
Figure 112009010355614-pat00142
는 소정의 상수이거나 지역적 통계에 적응될 수 있다.
Ⅳ. 멀티 패스 인코딩
도 1은 본 발명의 몇몇의 실시예의 멀티-패스 인코딩 방법을 개념적으로 도시한 프로세스(100)를 나타낸다. 이 도면에 도시된 바와 같이, 프로세스(100)는 3 단계를 가지며, 이들 단계는 다음의 3개의 서브-섹션에서 기술된다.
A. 분석 및 초기 QP 선택
도 1에 도시된 바와 같이, 프로세스(100)는 먼저 멀티-패스 인코딩 프로세스의 초기 분석 단계 중에 (즉 패스 0 중에) 기준 마스킹 강도의 초기값(φR(1)) 및 명목상의 양자화 파라미터의 초기값(QPNom(1))을 계산한다(105). 초기 기준 마스킹 강도(φR(1))는 제1 검색 단계 중에 이용되는 한편, 초기 명목상의 양자화 파라미터(QPNom(1))는 제1 검색 단계의 제1 패스 중에(즉, 멀티-패스 인코딩 프로세스의 패스 1 중에) 이용된다.
패스 0의 시작 시에, φR(0)은 실험적 결과에 기초하여 선택된 몇몇의 임의의 값 또는 하나의 값(예를 들면, φR 값의 통상적인 범위의 중간 값)일 수 있다. 시퀀스의 분석 중에, 마스킹 강도
Figure 112009010355614-pat00143
(k)가 각 프레임에 대하여 계산된 다음, 기준 마스킹 강도, φR(1), 는 패스 0의 끝에서 avg(
Figure 112009010355614-pat00144
(k))와 같도록 설정된다. 기준 마스킹 강도 φR에 대한 다른 결정 또한 가능하다. 예를 들면, 값
Figure 112009010355614-pat00145
(k)의 중앙치 또는 다른 산술 함수, 예를 들면 값
Figure 112009010355614-pat00146
(k)의 가중된 평균으로서 계산될 수 있다.
복잡도가 변화되는 초기 QP 선택에 대한 몇 가지 접근법이 존재한다. 예를 들면, 초기 명목상의 QP가 임의의 값(예를 들면, 26)으로 선택될 수 있다. 대안으 로, 코딩 실험에 기초하여 목표 비트레이트에 대한 허용가능한 품질을 생성한다고 알려진 값이 선택될 수 있다.
초기 명목상의 QP 값은 또한 공간적 해상도, 프레임레이트, 공간/시간 복잡도, 및 목표 비트레이트에 기초하여 룩업 테이블로부터 선택될 수도 있다. 몇몇의 실시예에서, 이러한 초기 명목상의 QP 값은 이들 파라미터 각각에 의존하는 거리 측정치를 이용하는 테이블로부터 선택되거나, 이들 파라미터의 가중된 거리 측정치를 이용하여 선택될 수 있다.
이러한 초기 명목상의 QP 값은 또한 (마스킹을 하지 않고) 레이트 제어기를 이용하여 고속으로 인코딩하는 중에 선택되기 때문에 프레임 QP 값의 조정된 평균으로 설정될 수 있는데, 여기서 평균은 패스 0에 대한 비트레이트 퍼센트 비율 오차 E0에 기초하여 조정되었다. 마찬가지로, 초기 명목상의 QP는 또한 프레임 QP 값의 가중되고 조정된 평균으로 설정될 수 있는데, 여기서 각각의 프레임에 대한 가중치는 이 프레임에서, 생략된 매크로블록으로서 코딩되지 않는 매크로블록의 퍼센트에 의해 결정된다. 대안으로, 초기 명목상의 QP는 (마스킹을 하면서) 레이트 제어기를 이용하여 고속으로 인코딩하는 중에 선택되기 때문에, φR(0) 에서 φR(1) 로의 기준 마스킹 강도의 변화의 영향이 고려되는 한, 프레임 QP 값의 조정된 평균 또는 조정되고 가중된 평균으로 설정될 수 있다.
B. 제1 검색 단계: 명목상의 QP 조정
참조번호(105) 이후에, 멀티-패스 인코딩 프로세스(100)는 제1 검색 단계에 들어간다. 제1 검색 단계에서, 프로세스(100)는 시퀀스의 N1 번의 인코딩을 수행하는데, 여기에서 N1 은 제1 검색 단계 전반에 걸치는 패스들의 개수를 나타낸다. 각각의 제1 단계의 패스 중에, 프로세스는 상수 기준 마스킹 강도를 가지는 변경되는 명목상의 양자화 파라미터를 사용한다.
상세히는, 제1 검색 단계의 각각의 패스 p 중에, 프로세스(100)는 각 프레임 k에 대한 특정 양자화 파라미터
Figure 112009010355614-pat00147
및 프레임 k 내의 각각의 개별적인 매크로블록 m에 대한 특정 양자화 파라미터
Figure 112009010355614-pat00148
를 계산한다(107). 소정의 명목상의 양자화 파라미터
Figure 112009010355614-pat00149
및 기준 마스킹 강도
Figure 112009010355614-pat00150
에 대한 파라미터
Figure 112009010355614-pat00151
Figure 112009010355614-pat00152
의 계산은 섹션 Ⅲ에 기술되었다(여기서,
Figure 112009010355614-pat00153
Figure 112009010355614-pat00154
는 섹션 Ⅲ에서 기술하였던 함수
Figure 112009010355614-pat00155
Figure 112009010355614-pat00156
를 이용함으로써 계산된다.). 제1 패스(즉, 패스 1) 내지 참조번호(107)에서, 명목상의 양자화 파라미터 및 제1 단계 기준 마스킹 강도는 초기 분석 단계(105) 중에 계산되었던 파라미터 QPNom(1) 및 기준 마스킹 강도 φR(1)이다.
참조번호(107) 다음에, 프로세스는 참조번호(107)에서 계산한 양자화 파라미터 값에 기초하여 시퀀스를 인코딩한다(110). 그 다음, 인코딩 프로세스(100)는 종료되어야 하는지 여부를 판정한다(115). 서로 다른 실시예들이 전체 인코딩 프로세스를 종료하기 위한 서로 다른 기준을 가진다. 멀티-패스 인코딩 프로세스를 완전히 종료하는 탈출 조건의 예는 다음을 포함한다:
Figure 112009010355614-pat00157
<ε, 여기서 ε는 최종 비트레이트에서의 오차 허용치이다.
Figure 112009010355614-pat00158
가 QP 값의 유효 범위의 상한 또는 하한 경계에 있다.
ㆍ 패스의 개수가 허용가능한 패스의 최대 개수 PMAX를 초과하였다.
몇몇의 실시예는 이들 탈출 조건 모두를 사용할 수 있는 한편, 다른 실시예는 이들 중 몇 가지만을 사용할 수 있다. 그러나 다른 실시예들이 인코딩 프로세스를 종료하기 위한 다른 탈출 조건을 사용할 수 있다.
멀티-패스 인코딩 프로세스가 종료된다고 판정한다면(115), 프로세스(100)는 제2 검색 단계를 생략하고 참조번호(145)로 이동한다. 참조번호(145)에서, 프로세스는 마지막 패스 p로부터의 비트스트림을 최종 결과로서 저장한 다음 종료한다.
반면에, 프로세스가 종료되지 않아야 한다고 판정하면(115), 제1 검색 단계를 종료해야 하는지를 판정한다(120). 마찬가지로, 서로 다른 실시예들이 제1 검색 단계를 종료하기 위한 서로 다른 기준을 가진다. 멀티-패스 인코딩 프로세스의 제1 검색 단계를 종료하는 탈출 조건의 예는 다음을 포함한다:
Figure 112009010355614-pat00159
Figure 112009010355614-pat00160
와 동일하고
Figure 112009010355614-pat00161
이다(이 경우, 비트레이트에서의 오차는 명목상의 QP를 수정함으로써 임의로 더 낮추어질 수 없다).
Figure 112009010355614-pat00162
ε, 여기서 εC는 제1 검색 단계에서의 비트레이트에서의 오차 허용치이다.
ㆍ패스의 개수가 P1을 초과한다, 여기서 P1은 PMAX보다 작다.
ㆍ패스의 개수가 P2를 초과한다, 여기서 P2는 P1 보다 작고,
Figure 112009010355614-pat00163
이다.
몇몇의 실시예는 이들 탈출 조건 모두를 사용할 수 있는 한편, 다른 실시예는 이들 중 몇 가지만을 사용할 수 있다. 그러나 다른 실시예들이 제1 검색 단계를 종료하기 위한 다른 탈출 조건을 사용할 수 있다.
멀티-패스 인코딩 프로세스가 제1 검색 단계를 종료한다고 판정한다면(120), 프로세스(100)는 다음 서브-섹션에서 기술될 제2 검색 단계로 진행한다. 반면에, 프로세스가 제1 검색 단계를 종료하지 않아야 한다고 판정하면(120), 제1 검색 단계의 다음 패스에 대한 명목상의 QP를 갱신한다(125)(즉,
Figure 112009010355614-pat00164
을 정의한다). 몇몇의 실시예에서, 명목상의
Figure 112009010355614-pat00165
는 다음과 같이 갱신된다. 패스 1의 끝에서, 이들 실시예는
Figure 112009010355614-pat00166
를 정의하며, 여기서
Figure 112009010355614-pat00167
는 상수이다. 그 다음 패스 2 내지 패스
Figure 112009010355614-pat00168
에서의 패스의 각각의 끝에서, 이들 실시예는
Figure 112009010355614-pat00169
를 정의하며, 여기서
Figure 112009010355614-pat00170
는 이하 더 기술될 함수이다. 또한, 상기 수학식에서, q1 및 q2는 패스 p까지의 모든 패스들 중에서 가장 낮은 대응하는 비트레이트 오차를 가지는 패스 번호이고, q1, q2, 및 p는 다음과 같은 관계를 가진다:
Figure 112009010355614-pat00171
다음은 InterpExtrap 함수에 대한 의사 코드이다. x가 x1과 x2 사이에 있지 않은 경우, 이 함수는 외삽법 함수임을 유의한다. 그렇지 않다면, 이 함수는 내삽법 함수이다.
Figure 112009010355614-pat00172
명목상의 QP값은 통상적으로 정수 값으로 반올림되며 QP 값의 유효 범위 내에 주어지도록 무수리를 갖다 버린다. 본 기술 분야에서 통상의 기술을 가진 자라면 다른 실시예들은 상술한 접근법들과는 다르게 명목상의
Figure 112009010355614-pat00173
값을 계산할 수 있음을 인식할 것이다.
참조번호(125)에서, 프로세스는 참조번호(107)로 다시 이동하여 다음 패스(즉, p :=p+1)를 시작하는데, 이 패스에서, 현재 패스 p에 대하여 각 프레임 k에 대한 특정 양자화 파라미터
Figure 112009010355614-pat00174
및 프레임 k 내의 개별적인 매크로 블럭 각각에 대한 특정 양자화 파라미터
Figure 112009010355614-pat00175
를 계산한다(107). 그 다음, 프로세스는 이들 새롭게 계산된 양자화 파라미터에 기초하여 프레임의 시퀀스를 인코딩한다(110). 그 다음 참조번호(110)로부터, 프로세스는 상술하였던 참조번호(115)로 이동한다.
C. 제2 검색 단계: 기준 마스킹 강도 조정
프러세스(100)가 제1 검색 단계를 종료해야 한다고 판정한다면(120), 프로세스는 참조번호(130)로 이동한다. 제2 검색 단계에서, 프로세스(100)는 N2번의 시퀀스 인코딩을 수행하는데, 여기서 N2는 제2 검색 단계의 전반에 걸친 패스들의 개수를 나타낸다. 각각의 패스 중에, 프로세스는 동일한 명목상의 양자화 파라미터 및 변경되는 기준 마스킹 강도를 이용한다.
참조번호(130)에서, 프로세스(100)는 다음 패스, 즉 패스 N1+1인 패스 p+1에 대한 기준 마스킹 강도 φR(p+1)을 계산한다. 패스 N1+1에서, 프로세스(100)는 참조번호(315)에서 프레임의 시퀀스를 인코딩한다. 서로 다른 실시예들이 서로 다른 방식으로 패스 p의 끝에서 기준 마스킹 강도 φR(p+1)를 계산한다(130). 2개의 대안적인 접근법이 후술될다.
몇몇의 실시예는 이전 패스(들)로부터의
Figure 112009010355614-pat00176
의 비트레이트(들) 및 값(들)의 오차에 기초하여 기준 마스킹 강도
Figure 112009010355614-pat00177
를 계산한다. 예를 들면, 패스 N1의 끝에서, 몇몇의 실시예는
Figure 112009010355614-pat00178
를 정의한다.
패스 N1+m(m은 1보다 큰 정수)의 끝에서, 몇몇의 실시예는
Figure 112009010355614-pat00179
를 정의한다. 대안으로 몇몇의 실시예는
Figure 112009010355614-pat00180
를 정의하는데, 여기에서 q1 및 q2는 최상의 오차를 제공하였던 이전의 패스들이다.
다른 실시예들은 섹션 Ⅰ에서 정의하였던 AMQP를 이용함으로써 제2 검색 단계의 각 패스들의 끝에서 기준 마스킹 강도를 계산한다. 소정의 명목상의 QP에 대한 AMQP 및
Figure 112009010355614-pat00181
에 대한 몇몇의 값을 계산하기 위한 한가지 방식은 함수
Figure 112009010355614-pat00182
의 의사코드를 참조하여 다음에 기술된다.
Figure 112009010355614-pat00183
AMQP를 이용하는 몇몇의 실시예는 이전 패스(들)로부터의 AMQP의 비트레이트(들) 및 값(들)에서의 오차에 기초하여 패스 p+1에 대한 소정의 AMQP를 계산한다. 그 다음 이 AMQP에 대응하는
Figure 112009010355614-pat00184
은 의사코드가 이 서브섹션의 끝에 주어지는 함수
Figure 112009010355614-pat00185
에 의해 주어진 검색 프로세저를 통해 구한다.
예를 들면, 몇몇의 실시예는 패스 N1의 끝에서
Figure 112009010355614-pat00186
를 계산하는데, 여기에서
Figure 112009010355614-pat00187
일 때,
Figure 112009010355614-pat00188
이고,
Figure 112009010355614-pat00189
일때,
Figure 112009010355614-pat00190
이다.
그 다음 이들 실시예는
Figure 112009010355614-pat00191
를 정의한다. 패스 N1+m의 끝에서(여기서 m은 1보다 큰 정수), 몇몇의 실시예는
Figure 112009010355614-pat00192
Figure 112009010355614-pat00193
을 정의한다.
소정의 AMQP 및
Figure 112009010355614-pat00194
의 몇몇의 디폴트 값이 주어지면, 소정의 AMQP에 대응하는
Figure 112009010355614-pat00195
은 몇몇의 실시예에서 다음의 의사 코드를 가지는 Search 함수를 이용하여 구할 수 있다.
Figure 112009010355614-pat00196
Figure 112009010355614-pat00197
상기 의사 코드에서, 숫자 10, 12 및 0.05는 적절하게 선택된 임계값으로 교체될 수 있다.
프레임 시퀀스의 인코딩을 통하여 다음 패스(패스 p+1)에 대한 기준 마스킹 강도를 계산한 후에, 프로세스(100)는 참조번호(132)로 이동하여 다음 패스(즉, p:=p+1)를 시작한다. 각각의 인코딩 패스 p 중에 각각의 프레임 k 및 각각의 매크 로블록 m에 대하여, 프로세스는 각각의 프레임 k에 대한 특정 양자화 파라미터
Figure 112009010355614-pat00198
및 프레임 k 내의 개별적인 매크로블록에 대한 특정 양자화 파라미터
Figure 112009010355614-pat00199
을 계산한다(132). 소정의 명목상의 양자화 파라미터
Figure 112009010355614-pat00200
및 기준 마스킹 강도
Figure 112009010355614-pat00201
에 대한 파라미터
Figure 112009010355614-pat00202
Figure 112009010355614-pat00203
의 계산은 섹션 Ⅲ에 기술되었다(여기서
Figure 112009010355614-pat00204
Figure 112009010355614-pat00205
은 상기 섹션 Ⅲ에 기술에 기술되었던 함수
Figure 112009010355614-pat00206
Figure 112009010355614-pat00207
를 이용함으로써 계산된다). 제1 패스 내지 참조번호(132) 중에, 기준 마스킹 강도는 바로 이전의 참조번호(130)에서 계산되었던 것이다. 또한, 제2 검색 단계 중에, 명목상의 QP는 제2 검색 단계 전반에 걸쳐 상수를 유지하고 있다. 몇몇의 실시예에서, 제2 검색 단계 전반에 걸친 명목상의 QP는 제1 검색 단계 중에 최상의 인코딩 솔루션(즉, 가장 낮은 비트레이트 오차를 가지는 인코딩 솔루션)을 생성하는 명목상의 QP이다.
참조번호(132) 이후에, 프로세스는 참조번호(130)에서 계산된 양자화 파라미터를 이용하여 프레임 시퀀스를 인코딩한다(135). 참조번호(135) 이후에, 프로세스는 제2 검색 단계를 종료해야 하는지를 판정한다(140). 다른 실시예에서는 패스 p의 끝에서 제2 검색 단계를 종료하기 위한 서로 다른 기준을 사용한다.
이러한 기준의 예들은 다음과 같다.
Figure 112009010355614-pat00208
<ε, 여기서 ε는 최종 비트레이트의 오차 허용치이다.
ㆍ 패스의 개수가 허용되는 패스의 최대 수를 초과한다.
몇몇의 실시예는 이들 탈출 조건 모두를 사용할 수 있는 한편, 다른 실시예 는 이들 중 몇 가지만을 사용할 수 있다. 그러나 다른 실시예들이 제1 검색 단계를 종료하기 위한 다른 탈출 조건을 사용할 수 있다.
프로세스(100)가 제2 검색 단계를 종료하지 않아야 한다고 판정하면(140), 다음의 인코딩 패스를 위하여 기준 마스크 강도를 다시 계산하도록 참조번호(130)로 복귀한다. 참조번호(130)로부터, 프로세스는 참조번호(132)로 이동하여 양자화 파라미터를 계산한 다음 참조번호(135)로 이동하여 새로이 계산된 양자화 파라미터를 이용함으로써 비디오 시퀀스를 인코딩한다.
반면에, 프로세스가 제2 검색 단계를 종료한다고 판정하면(140), 참조번호(145)로 이동한다. 참조번호(145)에서, 프로세스(100)는 마지막 패스 p로부터의 비트스트림을 최종 결과로서 저장한 다음, 종료한다.
V. 디코더 입력 버퍼 언더플로우 제어
본 발명의 몇몇의 실시예는 디코더가 이용하는 입력 버퍼의 사용에 대한 최적의 인코딩 솔루션을 식별하기 위해, 목표 비트레이트를 찾기 위하여 비디오 시퀀스의 각종 인코딩을 검사하는 멀티-패스 인코딩 프로세스를 제공한다. 몇몇의 실시예에서, 이러한 멀티-패스 프로세스는 도 1의 멀티-패스 프로세스(100)를 따른다.
인코딩된 이미지의 사이즈, 디코더가 인코딩된 데이터를 수신하는 레이트, 디코더 버퍼의 사이즈, 디코딩 프로세스의 속도에서의 변동과 같은, 몇 가지 요소 때문에, 디코더 입력 버퍼("디코더 버퍼") 사용은 인코딩된 이미지 시퀀스(예를 들면, 프레임들)의 디코딩 중에 어느 정도 변동할 것이다.
디코더 버퍼 언더플로우는 해당 이미지가 디코더측에 완전히 도달하기 전에 디코더가 그 다음 이미지를 디코딩하기를 준비하는 상황을 의미한다. 몇몇의 실시예의 멀티-패스 인코더는 디코더 버퍼 언더플로우를 방지하기 위하여 디코더 버퍼를 시뮬레이션하고 시퀀스에서 선택된 세그먼트를 재-인코딩한다.
도 2는 본 발명의 몇몇의 실시예의 코덱 시스템(200)을 도시한다. 이 시스템은 디코더(205) 및 인코더(210)를 포함한다. 이 도면에서, 인코더(210)는 이 인코더가 디코더(205)의 동일 구성요소의 동작을 시뮬레이션할 수 있게 하는 몇몇의 구성요소를 가진다.
구체적으로, 디코더(205)는 입력 버퍼(215), 디코딩 프로세스(220), 및 출력 버퍼(225)를 포함한다. 인코더(210)는 시뮬레이션된 디코더 입력 버퍼(230), 시뮬레이션된 디코딩 프로세스(235), 및 시뮬레이션된 디코더 출력 버퍼(240)를 보유함으로써 이들 모듈을 시뮬레이션한다. 본 발명의 설명을 방해하지 않기 위해, 도 2는 디코딩 프로세스(220) 및 인코딩 프로세스(245)를 하나의 블록으로 나타내도록 단순화하였다. 또한, 몇몇의 실시예에서, 시뮬레이션된 디코딩 프로세스(235) 및 시뮬레이션된 디코더 출력 버퍼(240)는 버퍼 언더플로우 관리에 이용되지 않으므로 이 도면에서는 오직 예시용으로만 도시되었다.
디코더는 입력 버퍼(215)를 보유하여 들어오는 인코딩된 이미지의 레이트 및 도달 시점에 대한 변동을 제거시킨다. 디코더가 데이터를 다 소모했거나(언더플로우) 입력 버퍼를 가득 채울 경우(오버플로우), 화상 디코딩이 중지되거나 들어오는 데이터가 버려지기 때문에 디코딩이 끊기는 것이 보일 것이다. 이러한 경우들은 바람직하지 못하다.
언더플로우 상태를 제거하기 위하여, 몇몇의 실시예에서의 인코더(210)는 먼저 이미지들의 시퀀스를 인코딩하고 이 인코딩된 시퀀스를 저장 장치(255)에 저장한다. 예를 들면, 인코더(210)는 멀티-패스 인코딩 프로세스(100)를 이용하여 이미지들의 시퀀스의 제1 인코딩을 획득한다. 그 다음 디코더 입력 버퍼(215)를 시뮬레이션하고 버퍼 언더플로우를 일으켰을 이미지들을 재-인코딩한다. 모든 버퍼 언더플로우 상태가 제거된 이후에, 재-인코딩된 이미지가 네트워크 접속(인터넷, 케이블, PSTN선, 등), 비-네트워크 직접 접속, 미디어(DVD 등) 등일 수 있는 접속(255)을 통해 디코더(205)에 제공된다.
도 3은 몇몇의 실시예의 인코더의 인코딩 프로세스(300)를 도시한다. 이 프로세스는 디코더 버퍼가 언더플로우를 일으키지 않는 최적의 인코딩 솔루션을 찾기를 시도한다. 도 3에 도시된 바와 같이, 프로세스(300)은 바람직한 목표 비트레이트를 만족시키는(예를 들면, 시퀀스에서의 각각의 이미지에 대한 평균 비트레이트는 바람직한 평균 목표 비트레이트를 만족시키는) 이미지들의 시퀀스의 제1 인코딩을 식별한다(302). 예를 들면, 프로세스(300)는 멀티-패스 인코딩 프로세스(100)를 이용하여 이미지들의 시퀀스의 제1 인코딩을 획득할 수 있다(302).
참조번호(302) 이후에, 인코딩 프로세스(300)는 접속 속도(즉, 디코더가 인코딩된 데이터를 수신하는 속도), 디코더 입력 버퍼의 사이즈, 인코딩된 이미지의 사이즈, 디코딩 프로세스 속도, 등과 같은 다양한 요소를 고려함으로써 디코더 입력 버퍼(215)를 시뮬레이션한다(305). 참조번호(310)에서, 프로세스(300)는 인코 딩된 이미지의 임의의 세그먼트가 디코더 입력 버퍼를 언더플로우되게 할 것인지를 판정한다. 인코더가 언더플로우 상태를 판정하는(그리고 그 다음 제거하는) 데에 이용하는 기법은 이하 더 기술된다.
프로세스(300)가 인코딩된 이미지가 언더플로우 상태를 일으키지 않는다고 판정하면(310), 프로세스는 종료된다. 반면, 프로세스(300)가 인코딩된 이미지의 임의의 세그먼트에 버퍼 언더플로우 상태가 존재한다고 판정하면(310), 인코딩 파라미터를 이전의 인코딩 패스로부터의 이들 파라미터의 값에 기초하여 정련한다(315). 그 다음 프로세스는 언더플로우를 가지는 세그먼트를 재-인코딩하여 세그먼트 비트 사이즈를 줄인다(320). 세그먼트를 재-인코딩한 후에, 프로세스(300)는 세그먼트를 검사하여 언더플로우 상태가 제거되었는지 판정한다(325).
프로세스가 세그먼트는 여전히 언더플로우를 일으킨다고 판정한다면(325), 프로세스(300)는 참조번호(315)로 이동하여 언더플로우를 제거하도록 인코딩 파라미터를 더 정련한다. 이와는 다르게, 프로세스가 세그먼트는 임의의 언더플로우를 일으키지 않을 것이라 판정하면(325), 프로세스는 참조번호(320)에서의 마지막 반복에서 재-인코딩된 세그먼트의 끝 이후의 프레임으로서 비디오 시퀀스를 재검토하고 재-인코딩하기 위한 시작점을 지정한다(330). 그 다음, 참조번호(335)에서, 프로세스는 참조번호(330)에서 지정된 비디오 시퀀스의 일부를 참조번호(315 및 320)에서 지정된 언더플로우 세그먼트에 후속하는 제1 IDR 프레임까지(이 프레임은 포함되지 않음) 재-인코딩한다. 참조번호(335) 이후에, 프로세스는 참조번호(305)로 다시 이동하여 재인코딩 이후에 비디오 시퀀스의 나머지가 여전히 버퍼 언더플로우 를 일으키는지 판정하기 위해 디코더 버퍼를 시뮬레이션한다. 참조번호(305)로부터의 프로세스(300)의 흐름은 위에서 기술하였다.
A. 인코딩된 이미지의 시퀀스에서의 언더플로우 세그먼트 결정
상술한 바와 같이, 인코더는 인코딩되거나 재-인코딩된 이미지의 세그먼트 내의 임의의 세그먼트가 디코더 버퍼에서 언더플로우를 일으키는지 판정하기 위해 디코더 버퍼 상태를 시뮬레이션한다. 몇몇의 실시예에서, 인코더는 인코딩된 이미지의 사이즈, 대역폭과 같은 네트워크 상태, 디코더 요소(예를 들면, 입력 버퍼 사이즈, 이미지를 제거하는 초기 및 명목상의 시간, 디코딩 프로세스 시간, 각각의 이미지의 디스플레이 시간, 등)를 고려하는 시뮬레이션 모델을 이용한다.
몇몇의 실시예에서, MPEG-4 AVC 코딩된 화상 버퍼(CPB) 모델이 디코더 입력 버퍼 상태를 시뮬레이션하는 데에 이용된다. CPB는 HRD(Hypothetical Reference Decoder)의 시뮬레이션된 입력 버퍼를 칭하기 위해 MPEG-4 H. 264 표준에서 이용되는 용어이다. HRD는 인코딩 프로세스가 산출할 수 있는 스트림에 따르는 변화성에 대한 제약사항을 기술하는 가상의 디코더 모델이다. CPB 모델이 잘 알려져 있으며 이하 섹션 1에 편의를 위해 기술된다. CPB 및 HRD의 보다 상세한 설명은 "Draft ITU-T Recommendation and Final Draft International Standard of Joint Video Specification(ITU-T Rec. H. 264/ISO/IEC 14496-10 AVC)"에 기재되어 있다.
1. CPB 모델을 이용하여 디코더 버퍼를 시뮬레이션하기
다음의 단락은 몇몇의 실시예에서 디코더 입력 버퍼가 CPB 모델을 이용하여 시뮬레이션 되는 방식을 기술한다. 이미지 n의 제1 비트가 CPB에 들어가기 시작하 는 시간은 다음과 같이 도출되는, 초기 도달 시점 tai(n)라고 칭한다.
ㆍ 이미지가 제1 이미지라면(즉, 이미지 0), tai(0)=0
ㆍ 이미지가 인코딩되거나 재-인코딩되고 있는 시퀀스에서의 제1 이미지가 아니라면(즉, n>0), tai(n)=MAX(taf(n-1), tai,earliest(n)).
상기 식에서,
ㆍ tai,earliest(n)=tr,n(n)-initial_cpb_removal_delay,
여기서 tr,n(n)은 이하에 기술된 바와 같이 CPB로부터의 이미지 n의 명목상의 제거 시점이며 initial_cpb_removal_delay는 초기 버퍼링 기간이다.
이미지에 대한 최후 도달 시점은
taf(n)=tai(n)+b(n)/BitRate,
에 의해 유도된다.
여기서 b(n)은 이미지 n의 비트 사이즈이다.
몇몇의 실시예에서, 인코더는 명목상의 제거 시간의 계산을, H.264 사양에서와 같이 비트 스트림의 선택적인 부분으로부터 판독하는 대신에 후술될 바와 같이 직접 계산한다. 이미지 0의 경우, CPB로부터의 이미지의 명목상의 제거 시점은
Figure 112009010355614-pat00209
로 기술된다.
이미지 n(n>0)의 경우, CPB로부터의 이미지의 명목상의 제거 시점은
tr,n(n)=tr,n(0)+sumi=0 to n-1(ti)
로 기술되는데,
여기서 tr,n(n)은 이미지 n의 명목상의 제거 시점이며, ti는 화상 i에 대한 디스플레이 기간이다.
이미지 n의 제거 시점은 다음과 같이 기술된다.
ㆍ tr,n(n)>=taf(n)이면, tr(n)=tr,n(n),
ㆍ tr,n(n)<taf(n)이면, tr(n)=taf,n(n)
후자의 경우는 이미지 n의 사이즈, b(n)이 너무 커서 명목상의 제거 시점에서 제거를 못하는 것을 나타낸다.
2. 언더플로우 세그먼트의 탐지
이전 섹션에서 기술된 바와 같이, 인코더는 디코더 입력 버퍼 상태를 시뮬레이션하고 소정의 순시에서 버퍼의 비트 개수를 획득할 수 있다. 대안으로, 인코더는 어떻게 각각의 개별적인 이미지가 자신의 명목상의 제거 시점과 최후 도달 시점 간의 차(즉, tb(n)=tr,n(n)-taf(n))를 통해 디코더 입력 버퍼 상태를 변경하는지 추적할 수 있다. tb(n)가 0보다 작다면, 버퍼는 순시 tr,n(n)과 taf(n) 간에, 그리고 가능하다면 tr,n(n) 이전과 taf(n) 이후에 언더플로우를 겪고 있다.
언더플로우에 직접 관련된 이미지는 tb(n)이 0보다 작은지 검사함으로써 쉽 게 발견될 수 있다. 그러나, 0보다 작은 tb(n)을 가지는 이미지가 반드시 언더플로우를 일으키는 것은 아니며, 반대로 언더플로우를 일으키는 이미지가 0보다 작은 tb(n)을 가지지 않을 수 있다. 몇몇의 실시예는 언더플로우가 자신의 최악의 시점에 도달할 때까지 디코더 입력 버퍼를 계속적으로 비움으로써 언더플로우를 일으키는 연속적인 이미지 범위로서 언더플로우 세그먼트를 (디코딩 순서로) 정의한다.
도 4는 몇몇의 실시예에서 이미지의 최후 도달 시점과 명목상의 제거 시점 간의 차 tb(n) 대 이미지 번호의 도면이다. 이 도면은 1500개의 인코딩된 이미지의 시퀀스에 대하여 도시된다. 도 4a는 그 시작과 끝을 표시하는 화살표로 언더플로우 세그먼트를 도시한다. 도 4a에서는 간결함을 위하여 화살표로 명확하게 표시되지는 않았지만, 제1 언더플로우 세그먼트 이후에 일어나는 다른 언더플로우 세그먼트가 존재함에 유의한다.
도 5는 인코더가 참조번호(305)에서 언더플로우 탐지 동작을 수행하는데 이용하는 프로세스(500)를 도시한다. 프로세스(500)는 먼저 상술한 바와 같이 디코더 입력 버퍼 상태를 시뮬레이션함으로써 각각의 이미지의 최후 도달 시점 taf, 및 명목상의 제거 시점 tr,n을 결정한다(505). 이 프로세스는 버퍼 언더플로우 관리의 반복적인 프로세스 중에 여러 번 호출될 수 있기 때문에, 이미지 번호를 시작점으로서 수신하고 이러한 소정의 시작 이미지에서부터 이미지의 시퀀스를 검사함에 유의한다. 분명히, 제1 반복에서는, 시작점은 시퀀스의 제1 이미지이다.
참조번호(510)에서, 프로세스(500)는 디코더 입력 버퍼에서의 각각의 이미지의 최후 도달 시점을 디코더에 의한 그 이미지의 명목상의 제거 시점과 비교한다. 프로세스가 명목상의 제거 시점 이후에 최후 도달 시점을 가지는 이미지가 없다고(즉, 어떤 언더플로우 상태도 존재하지 않는다고) 판정한다면, 프로세스는 종료된다. 반면, 최후 도달 시점이 명목상의 제거 시점 이후에 있는 이미지가 발견된다면, 프로세스는 언더플로우가 존재한다고 판정하고 참조번호(515)로 이동하여 언더플로우 세그먼트를 식별한다.
참조번호(515)에서, 프로세스(500)는 언더플로우 상태가 증가하기를 시작하는(즉, tb(n)이 이미지 범위에 걸쳐서 음의 방향이 되지 않는) 그 다음 전역 최소값까지 디코더 버퍼를 계속적으로 비우기를 시작하는 이미지의 세그먼트로서 언더플로우 세그먼트를 식별한다. 그 다음 프로세스(500)는 종료한다. 몇몇의 실시예에서, 언더플로우 세그먼트의 시작은 관련된 인코딩 간 이미지의 집합의 시작을 나타내는 인코딩 내 이미지인 I-프레임으로 시작하도록 더 조정된다. 일단 언더플로우를 일으키고 있는 하나 이상의 세그먼트가 식별되면, 인코더는 언더플로우를 제거하는 것을 진행한다. 다음의 섹션 B는 단일-세그먼트인 경우(즉, 인코딩된 이미지의 전체 시퀀스가 단일 언더플로우 세그먼트 만을 포함할 때)의 언더플로우 제거를 기술한다. 그 다음 섹션 C는 복수의-세그먼트 언더플로우 경우에 대한 언더플로우 제거를 기술한다.
B. 단일-세그먼트 언더플로우 제거
도 4의 a를 참조해 보면, tb(n) 대 n 곡선이 감소하는 기울기를 가지고 n-축과 오직 한번만 교차한다면, 전체 시퀀스에서 오직 하나의 언더플로우 세그먼트가 존재한다. 언더플로우 세그먼트는 0과 만나는 점에 선행하는 가장 근접한 지역 극대값(local maximum)에서 시작하고, 0과 만나는 점과 시퀀스의 끝 사이의 다음의 전역 최소값(global minimum)에서 끝난다. 세그먼트의 끝점 다음에는 버퍼가 언더플로우를 극복한 경우에 기울기가 증가하는 곡선을 취하는 다른 0과 만나는 점이 올 수 있다.
도 6은 몇몇의 실시예에서 인코더가 단일한 이미지 세그먼트에서 언더플로우 상태를 제거하는 데에 이용하는(315, 320, 및 325에서) 프로세스(600)를 도시한다. 참조번호(605)에서, 프로세스(600)는 세그먼트의 끝에서 발견된 가장 긴 지연(예를 들면, 최소값 tb(n))과 버퍼로의 입력 비트레이트의 곱을 계산함으로써 언더플로우 세그먼트에서의 감소시키려는 총 비트수(ㅿB)를 추정한다.
그 다음, 참조번호(610)에서, 프로세스(600)는 최후 인코딩 패스(또는 패스들)로부터 현재 세그먼트의 총 비트 수 및 평균 마스킹된 프레임 QP(AMQP)를 이용하여 세그먼트에 대한 소정의 비트 수, BT=B-ㅿBP(여기에서 p는 세그먼트에 대한 프로세스(600)의 현재 반복 횟수이다)를 이루기 위한 소정의 AMQP를 추정한다. 이 반복이 특정 세그먼트에 대한 프로세스(600)의 첫 번째 반복이라면, AMQP 및 총 비트 수는 참조번호(302)에서 식별된 초기 인코딩 솔루션으로부터 유도된 이 세그먼트에 대한 AMQP 및 총 비트수이다. 반면에, 이 반복이 프로세스(600)의 첫 번째 반복이 아니라면, 이들 파라미터들은 프로세스(600)의 최후 패스 또는 최후 몇몇의 패스에서 획득한 인코딩 솔루션 또는 솔루션들로부터 유도될 수 있다.
그 다음, 참조번호(615)에서, 프로세스(600)는 소정의 AMQP를 이용하여 마스킹을 더 허용할 수 있는 이미지가 더 많은 비트 감소를 획득할 수 있도록 마스킹 강도 ΦF(n)에 기초하여, 평균 마스킹된 프레임 QP, MQP(n)을 수정한다. 그 다음 프로세스는 참조번호(315)에서 정의된 파라미터에 기초하여 비디오 세그먼트를 재-인코딩한다(610). 그 다음 프로세스는 세그먼트를 검사하여 언더플로우 상태가 제거되었는지 판정한다(625). 도 4의 b는 프로세스(600)가 언더플로우 세그먼트에 적용되어 이 세그먼트를 재-인코딩한 이후의 도 4의 a의 언더플로우 상태의 제거를 도시한다. 언더플로우 상태가 제거되면, 프로세스는 종료한다. 그렇지 않다면, 참조번호(605)로 이동하여 총 비트 사이즈를 줄이도록 인코딩 파라미터를 더 조정할 것이다.
C. 복수의 언더플로우 세그먼트에서의 언더플로우 제거
시퀀스에 복수의 언더플로우 세그먼트가 존재하면, 세그먼트의 재-인코딩은 모든 후속 프레임에 대하여, 버퍼가 차있는 시간 tb(n)을 변경한다. 수정된 버퍼 상태를 설명하기 위하여, 인코더는 감소하는 기울기로 처음으로 0과 만나는 점(즉, 가장 낮은 n)으로부터 시작하여, 한번에 하나의 언더플로우 세그먼트를 검색한다.
언더플로우 세그먼트는 이러한 0과 만나는 점 선행하는 가장 근접한 지역 극대값에서 시작하고, 0과 만나는 점과 다음의 0과 만나는 점(또는 더 이상 0과 만나 는 점이 없는 경우는 시퀀스의 끝) 간의 다음 전역 최소값에서 종료한다. 하나의 세그먼트를 찾은 이후에, 인코더는 그 세그먼트의 끝에서 tb(n)를 0으로 설정하고 모든 후속 프레임에 대한 버퍼 시뮬레이션을 재기함으로써 가상적으로 이 세그먼트에서의 언더플로우를 제거하고 업데이트된 버퍼 포화도(fullness)를 추정한다.
그 다음 인코더는 수정된 버퍼 포화도를 이용하여 다음 세그먼트를 검색하는 것을 계속한다. 상술한 바와 같이, 일단 모든 언더플로우 세그먼트가 식별되었다면, 인코더는 AMQP를 유도하고 단일-세그먼트 경우와 꼭 마찬가지로 다른 세그먼트와 독립적으로 각 세그먼트에 대한 마스킹된 프레임 QP를 수정한다.
본 기술 분야에서 통상의 기술을 가진 자라면 다른 실시예들이 서로 다르게 구현될 수 있음을 인식할 것이다. 예를 들면, 몇몇의 실시예는 디코더의 입력 버퍼의 언더플로우를 일으키는 복수의 세그먼트를 식별하지 않을 것이다. 그 대신, 몇몇의 실시예는 상술한 바와 같이 버퍼 시뮬레이션을 수행하여 언더플로우를 일으키는 첫번째 세그먼트를 식별할 것이다. 이렇게 세그먼트를 식별한 이후에, 이들 실시예는 그 세그먼트에서의 언더플로우 상태를 교정하도록 세그먼트를 수정한 다음 이어지는 수정된 영역을 인코딩하는 것을 재기한다. 시퀀스의 나머지를 인코딩한 이후에, 이들 실시예는 그 다음 언더플로우 세그먼트에 대하여 이러한 프로세스를 반복할 것이다.
D. 버퍼 언더플로우 관리의 적용
상술한 디코더 버퍼 언더플로우 기법은 다양한 인코딩 및 디코딩 시스템에 적용된다. 이러한 시스템의 몇몇의 예는 다음에 기술된다.
도 7은 비디오 스트리밍 서버(710)와 몇몇의 클라이언트 디코더(715-725)를 접속시키는 네트워크(705)를 도시한다. 클라이언트는 300Kb/sec 및 3Mb/sec 등의 서로 다른 대역폭을 가지는 링크를 통하여 네트워크(705)에 접속된다. 비디오 스트리밍 서버(710)는 인코더(730)로부터 인코딩된 비디오 이미지를 클라이언트 디코더(715-725)로 스트리밍하는 것을 제어하고 있다.
스트리밍 비디오 서버는 네트워크에서의 가장 느린 대역폭(즉, 300Kb/sec) 및 가장 작은 클라이언트 버퍼 사이즈를 이용하여 인코딩된 비디오 이미지를 스트리밍하기로 결정할 수 있다. 이러한 경우, 스트리밍 서버(710)는 300 Kb/sec의 목표 비트레이트에 대하여 최적화된 오직 하나의 인코딩된 이미지 집합이 필요하다. 반면, 서버는 서로 다른 대역폭 및 서로 다른 클라이언트 버퍼 상태에 대하여 최적화된 서로 다른 인코딩을 생성하고 저장할 수 있다.
도 8은 디코더 언더플로우 관리에 대한 적용의 다른 예를 도시한다. 이 예에서, HD-DVD 플레이어(805)는 비디오 인코더(810)로부터의 인코딩된 비디오 데이터를 저장한 HD-DVD(840)로부터 인코딩된 비디오 이미지를 수신하고 있다. HD-DVD 플레이어(805)는 입력 버퍼(815), 간결함을 위해 한 블록(820)으로 도시된 디코딩 모듈의 집합(820), 및 출력 버퍼(825)를 가진다.
플레이어(805)의 출력은 TV(830) 또는 컴퓨터 디스플레이 단말기(835)와 같은 디스플레이 장치로 송신된다. HD-DVD 플레이어는 매우 높은 대역폭, 예를 들면, 29.4 Mb/sec를 가질 수 있다. 디스플레이 장치에 고품질 이미지를 유지하기 위하여, 인코더는 이미지 시퀀스에서의 어떠한 세그먼트도 제시간에 디코더 입력 버퍼에 전달될 수 없을 정도로 커지지 않는 방식으로 인코딩되는 것을 보장한다.
Ⅵ. 컴퓨터 시스템
도 9는 본 발명의 실시예가 구현될 수 있는 컴퓨터 시스템을 나타낸다. 컴퓨터 시스템(900)은 버스(905), 프로세서(910), 시스템 메모리(915), 읽기 전용 메모리(920), 영구 저장 장치(925), 입력 장치(930) 및 출력 장치(935)를 포함한다. 버스(905)는 컴퓨터 시스템(900)의 다양한 내부 장치를 통신적으로 접속시키는 모든 시스템 버스, 주변 버스, 및 칩셋 버스들을 종합적으로 나타낸다. 예를 들면, 버스(905)는 프로세서(910)를 읽기 전용 메모리(920), 시스템 메모리(915), 및 영구 저장 장치(925)에 통신적으로 접속시킨다.
이들 다양한 메모리 장치(unit)로부터, 프로세서(910)는 본 발명의 프로세스를 실행하기 위하여, 실행할 명령어 및 처리될 데이터를 검색한다. 읽기 전용 메모리(ROM)(920)는 프로세서(910)와 컴퓨터 시스템의 다른 모듈이 필요로 하는 명령어와 정적인 데이터를 저장한다.
한편, 영구 저장 장치(925)는 판독-및-기록 메모리 장치이다. 이 장치는 컴퓨터 시스템(900)의 전원이 꺼졌을 때에도 명령어 및 데이터를 저장하는 비-휘발성 메모리 장치이다. 본 발명의 몇몇의 실시예는 영구 저장 장치(925)로서 (자기 디스크 또는 광 디스크 및 그 대응하는 디스크 드라이브와 같은) 대용량-저장 장치를 이용한다.
다른 실시예는 영구 저장 장치로서 (플로피 디스크 또는 zip® 디스크, 및 그 대응하는 디스크 드라이브와 같은) 이동식 저장 장치를 이용한다. 영구 저장 장치(925)와 마찬가지로, 시스템 메모리(915)는 판독-및-기록 메모리 장치이다. 그러나, 저장 장치(925)와는 다르게, 시스템 메모리는 RAM과 같은 휘발성 판독-및-기록 메모리이다. 시스템 메모리는 프로세스가 런타임시에 필요로 하는 명령어 및 데이터의 일부를 저장한다. 몇몇의 실시예에서, 본 발명의 프로세스들은 시스템 메모리(915), 영구 저장 장치(925), 및/또는 ROM(920)에 저장된다.
버스(905)는 또한 입력 장치(930) 및 출력 장치(935)에 접속된다. 입력 장치는 사용자가 컴퓨터 시스템에 정보를 전달하고 명령을 선택할 수 있게 한다. 입력 장치(930)는 문자 숫자식의 키보드 및 커서-제어기를 포함한다. 출력 장치(935)는 컴퓨터 시스템에 의해 생성된 이미지를 디스플레이한다. 출력 장치는 CRT 또는 LCD와 같은 프린터 및 디스플레이 장치를 포함한다.
마지막으로, 도 9에 도시된 바와 같이, 버스(905)는 또한 (도시되지 않은) 네트워크 어댑터를 통하여 컴퓨터(900)를 네트워크(965)에 연결한다. 이러한 방식으로, 컴퓨터는 (LAN, WAN, 또는 인터넷과 같은) 컴퓨터의 네트워크 또는 (인터넷과 같은) 네트워크의 네트워크의 일부일 수 있다. 컴퓨터 시스템(900)의 임의의 또는 모든 구성요소들이 본 발명에 관련하여 이용될 수 있다. 그러나, 본 기술 분야에서 통상의 기술을 가진 자라면 임의의 다른 시스템 구성 또한 본 발명에 관련하여 이용될 수 있음을 인식할 것이다.
본 발명은 다양한 특정 상세한 사항을 참조하여 기술되었지만, 본 기술 분야에서 통상의 기술을 가진 자라면 본 발명은 본 발명의 사상을 벗어나지 않고 다른 특정 형태로 실행될 수 있음을 인식할 것이다. 예를 들면, 디코더 입력 버퍼를 시뮬레이션하는 데에 H264 방법을 이용하는 대신 버퍼 사이즈, 버퍼에서의 이미지의 도달 및 제거 시점, 및 이미지의 디코딩 및 디스플레이 시간을 고려하는 다른 시뮬레이션 방법이 이용될 수 있다.
상술한 몇몇의 실시예는 평균 삭제된 SAD를 계산하여 매크로블록에서의 이미지 변화의 표시를 획득한다. 그러나 다른 실시예는 다르게 이미지 변화를 식별할 수 있다. 예를 들면, 몇몇의 실시예는 매크로블록의 픽셀에 대해 예상되는 이미지 값을 예측할 수 있다. 그 다음 이들 실시예는 매크로블록의 픽셀의 휘도값에서 이렇게 예측된 값을 빼고 이 뺄셈 값의 절대값을 합함으로써 매크로블록 SAD를 생성한다. 몇몇의 실시예에서, 예측된 값은 매크로블록의 픽셀의 값 뿐만 아니라 하나 이상의 이웃한 매크로블록의 픽셀 값에도 기초한다.
또한, 상술한 실시예는 유도된 공간 및 시간전 마스킹 값을 직접 이용한다. 다른 실시예는 연속되는 공간 마스킹 값에 대하여 및/또는 연속되는 시간 마스킹 값에, 비디오 이미지 전반에 걸친 이들 값의 일반적인 성향을 찾아내기 위하여 이들을 이용하기 전에 평활화 필터링을 적용할 것이다. 그러므로, 본 기술 분야에서 통상의 기술을 가지는 자라면 본 발명은 상술한 예시적인 상세에 의해 제한되지 않는다고 이해할 것이다.
도 1은 본 발명의 몇몇의 실시예의 인코딩 방법을 개념적으로 예시하는 프로세스를 도시하는 도면.
도 2는 몇몇의 실시예의 코덱 시스템을 개념적으로 도시하는 도면.
도 3은 몇몇의 실시예의 인코딩 프로세스를 도시하는 흐름도.
도 4의 a는 몇몇의 실시예에서 이미지의 명목상의 제거 시점과 최후 도달 시점 간의 차이 대 언더플로우 상태를 나타내는 이미지 번호를 도시하는 도면.
도 4의 b는 이미지의 명목상의 제거 시점과 최후 도달 시점 간의 차이 대 언더플로우 상태가 제거된 이후의 도 4의 a에 도시된 것과 동일한 이미지에 대한 이미지 번호를 도시하는 도면.
도 5는 몇몇의 실시예에서 인코더가 언더플로우 탐지를 수행하는데에 이용하는 프로세스를 도시하는 도면.
도 6은 몇몇의 실시예에서 인코더가 이미지의 단일 세그먼트에서 언더플로우 상태를 제거하는 데에 이용하는 프로세스를 도시하는 도면.
도 7은 비디오 스트리밍 응용에서의 버퍼 언더플로우 관리의 적용을 도시하는 도면.
도 8은 HD-DVD 시스템에서의 버퍼 언더플로우 관리의 적용을 도시하는 도면.
도 9는 본 발명의 일 실시예가 구현되는 컴퓨터 시스템을 도시하는 도면.

Claims (20)

  1. 비디오 이미지들의 시퀀스를 인코딩하는 방법으로서,
    현재 인코딩 솔루션을 생성하기 위해 상기 비디오 이미지들의 시퀀스를 인코딩하는 단계;
    상기 현재 인코딩 솔루션에서 상기 비디오 이미지들의 시퀀스의 복수의 비디오 이미지들이, 인코딩하는 동안 디코더 입력 버퍼를 시뮬레이션하기 위해 사용되는 기준 디코더의 입력 버퍼의 언더플로우(underflow)를 발생시키는지 판정하는 단계;
    상기 현재 인코딩 솔루션이 입력 버퍼 언더플로우를 발생시킬 때,
    인코딩 파라미터들의 세트를 조정하는 단계;
    상기 현재 인코딩 솔루션으로서 지정되는 새로운 인코딩 솔루션을 생성하기 위해 상기 조정된 인코딩 파라미터들의 세트를 사용하여 상기 언더플로우를 발생시키는 상기 복수의 비디오 이미지들을 인코딩하는 단계; 및
    상기 비디오 이미지들의 세트의 인코딩이 상기 기준 디코더의 입력 버퍼의 언더플로우를 발생시키지 않을 때까지, 상기 판정하는 단계, 상기 조정하는 단계 및 상기 새로운 인코딩 솔루션을 생성하기 위해 상기 인코딩하는 단계를 반복하는 단계
    를 포함하는 비디오 이미지들의 시퀀스 인코딩 방법.
  2. 제1항에 있어서,
    상기 새로운 인코딩 솔루션이 입력 버퍼 언더플로우를 발생시키지 않을 때, 상기 언더플로우를 발생시켰던 상기 복수의 비디오 이미지들 다음의 첫번째 이미지로 시작하는 상기 비디오 이미지들의 시퀀스의 나머지를 인코딩하는 단계를 더 포함하는 비디오 이미지들의 시퀀스 인코딩 방법.
  3. 제1항에 있어서,
    상기 비디오 이미지들의 시퀀스를 인코딩하는 단계는,
    상기 기준 디코더의 기준 디코더 입력 버퍼를 시뮬레이션하는 단계; 및
    상기 기준 디코더의 입력 버퍼의 상기 언더플로우를 방지하면서 상기 비디오 이미지들의 시퀀스를 인코딩하기 위해 상기 시뮬레이션을 사용하여 복수의 비트를 선택하는 단계
    를 포함하는, 비디오 이미지들의 시퀀스 인코딩 방법.
  4. 제3항에 있어서,
    상기 기준 디코더 입력 버퍼를 시뮬레이션하는 단계는 상기 기준 디코더가 인코딩된 데이터를 수신하는 레이트를 고려하는 단계를 더 포함하는, 비디오 이미지들의 시퀀스 인코딩 방법.
  5. 제3항에 있어서,
    상기 기준 디코더 입력 버퍼를 시뮬레이션하는 단계는 상기 기준 디코더 입력 버퍼의 사이즈를 고려하는 단계를 더 포함하는, 비디오 이미지들의 시퀀스 인코딩 방법.
  6. 제3항에 있어서,
    상기 기준 디코더 입력 버퍼를 시뮬레이션하는 단계는 상기 기준 디코더 입력 버퍼로부터 초기 제거 지연을 고려하는 단계를 더 포함하는, 비디오 이미지들의 시퀀스 인코딩 방법.
  7. 제1항에 있어서,
    상기 버퍼 언더플로우의 판정 이전에,
    상기 비디오 이미지들의 시퀀스를 인코딩하는 단계는 상기 버퍼 언더플로우에 관한 임의의 제한들에 기초하지 않는, 비디오 이미지들의 시퀀스 인코딩 방법.
  8. 제1항에 있어서,
    상기 복수의 비디오 이미지들의 인코딩의 각각을 위한 목표 비트레이트를 만족시키는 단계를 더 포함하고,
    상기 목표 비트레이트를 만족시키는 단계는 복수의 품질 기준(quality criteria) 중 하나이고, 각각의 생성된 인코딩 솔루션은 상기 품질 기준 모두를 만족시키는, 비디오 이미지들의 시퀀스 인코딩 방법.
  9. 인코딩된 복수의 이미지들을 디코딩하는 디코더의 입력 버퍼의 언더플로우를 방지하면서 상기 이미지들의 시퀀스를 인코딩하는 방법으로서,
    파라미터들의 세트를 사용하여 상기 이미지들의 시퀀스를 인코딩하는 단계;
    상기 디코더의 입력 버퍼를 시뮬레이션하는 단계;
    상기 이미지들의 시퀀스의 복수의 이미지들이 상기 디코더의 입력 버퍼의 언더플로우에 기여할 경우 상기 파라미터들의 세트를 조정하는 단계; 및
    상기 조정된 파라미터들의 세트를 사용하여 상기 언더플로우에 기여하는 상기 복수의 이미지들을 인코딩하는 단계를 포함하고,
    상기 파라미터들의 세트를 조정하는 단계 및 상기 복수의 이미지들을 인코딩하는 단계는 상기 복수의 이미지들에 의한 상기 입력 버퍼의 상기 언더플로우가 제거될 때까지 반복적으로 수행되는, 이미지들의 시퀀스 인코딩 방법.
  10. 삭제
  11. 제9항에 있어서,
    상기 입력 버퍼를 시뮬레이션하는 단계는 연결 속도 및 버퍼 사이즈 중 하나를 고려하는 단계를 포함하는, 이미지들의 시퀀스 인코딩 방법.
  12. 제9항에 있어서,
    상기 입력 버퍼를 시뮬레이션하는 단계는 상기 디코더에 의한 디코딩 프로세스의 속도를 고려하는 단계를 포함하는, 이미지들의 시퀀스 인코딩 방법.
  13. 삭제
  14. 삭제
  15. 제9항에 있어서,
    상기 언더플로우가 제거된 이후에, 상기 언더플로우에 기여하는 상기 복수의 이미지 다음의 상기 이미지들의 시퀀스의 이미지들의 다음 세트를 인코딩하는 단계를 더 포함하는, 이미지들의 시퀀스 인코딩 방법.
  16. 디코더에 대한 입력 버퍼의 언더플로우를 제거하기 위한 방법으로서,
    파라미터들의 세트를 사용하여 이미지들의 시퀀스를 인코딩하는 단계;
    상기 이미지들의 시퀀스의 각 이미지에 대하여,
    상기 입력 버퍼에서 이미지의 도달 시점을 식별하는 단계;
    상기 입력 버퍼로부터 상기 이미지의 제거 시점을 식별하는 단계;
    상기 이미지의 도달 시점과 제거 시점을 비교하는 단계;
    특정 이미지에 대한 상기 도달 시점이 상기 특정 이미지의 제거 시점 이후인 경우, 상기 특정 이미지가 상기 언더플로우에 기여하는 것으로서 식별하는 단계;
    상기 입력 버퍼의 언더플로우 조건이 향상될 때까지 (ⅰ) 상기 언더플로우에 기여하는 상기 특정 이미지를 포함하고 (ⅱ) 상기 입력 버퍼를 계속하여 비우는(depletes) 상기 이미지들의 시퀀스의 복수의 이미지들을 식별하는 단계; 및
    상기 입력 버퍼의 상기 언더플로우를 제거하기 위해 반복적으로 상기 파라미터들의 세트를 조정하고 상기 조정된 파라미터들의 세트를 사용하여 상기 식별된 복수의 이미지들을 인코딩하는 단계
    를 포함하는 언더플로우를 제거하기 위한 방법.
  17. 제16항에 있어서,
    I-프레임으로 시작하기 위해 상기 복수의 이미지들을 조정하는 단계를 더 포함하는 언더플로우를 제거하기 위한 방법
  18. 삭제
  19. 적어도 하나의 프로세서에 의해 실행가능한 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 프로그램은 제1항 내지 제9항, 제11항, 제12항 및 제15 내지 제17항 중 어느 한 항의 단계들을 구현하기 위한 명령어들의 집합들을 포함하는, 컴퓨터 판독가능 저장 매체.
  20. 제1항 내지 제9항, 제11항, 제12항 및 제15 내지 제17항 중 어느 한 항의 단계들을 구현하기 위한 하나 이상의 프로세싱 유닛을 포함하는 컴퓨터 시스템.
KR1020097003421A 2004-06-27 2005-06-24 멀티-패스 비디오 인코딩 방법 KR100988402B1 (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US58341804P 2004-06-27 2004-06-27
US60/583,418 2004-06-27
US64391805P 2005-01-09 2005-01-09
US60/643,918 2005-01-09
US11/118,604 2005-04-28
US11/118,616 2005-04-28
US11/118,616 US8406293B2 (en) 2004-06-27 2005-04-28 Multi-pass video encoding based on different quantization parameters
US11/118,604 US8005139B2 (en) 2004-06-27 2005-04-28 Encoding with visual masking

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020067017074A Division KR100909541B1 (ko) 2004-06-27 2005-06-24 멀티-패스 비디오 인코딩 방법

Publications (2)

Publication Number Publication Date
KR20090034992A KR20090034992A (ko) 2009-04-08
KR100988402B1 true KR100988402B1 (ko) 2010-10-18

Family

ID=35783274

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020067017074A KR100909541B1 (ko) 2004-06-27 2005-06-24 멀티-패스 비디오 인코딩 방법
KR1020097003420A KR100997298B1 (ko) 2004-06-27 2005-06-24 멀티-패스 비디오 인코딩 방법
KR1020097003421A KR100988402B1 (ko) 2004-06-27 2005-06-24 멀티-패스 비디오 인코딩 방법

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020067017074A KR100909541B1 (ko) 2004-06-27 2005-06-24 멀티-패스 비디오 인코딩 방법
KR1020097003420A KR100997298B1 (ko) 2004-06-27 2005-06-24 멀티-패스 비디오 인코딩 방법

Country Status (6)

Country Link
EP (1) EP1762093A4 (ko)
JP (2) JP4988567B2 (ko)
KR (3) KR100909541B1 (ko)
CN (3) CN102833539B (ko)
HK (1) HK1101052A1 (ko)
WO (1) WO2006004605A2 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7042943B2 (en) 2002-11-08 2006-05-09 Apple Computer, Inc. Method and apparatus for control of rate-distortion tradeoff by mode selection in video encoders
US8406293B2 (en) 2004-06-27 2013-03-26 Apple Inc. Multi-pass video encoding based on different quantization parameters
US8005139B2 (en) 2004-06-27 2011-08-23 Apple Inc. Encoding with visual masking
US8208536B2 (en) 2005-04-28 2012-06-26 Apple Inc. Method and apparatus for encoding using single pass rate controller
KR100918499B1 (ko) * 2007-09-21 2009-09-24 주식회사 케이티 멀티 패스 인코딩 장치 및 그 방법
WO2009045683A1 (en) * 2007-09-28 2009-04-09 Athanasios Leontaris Video compression and tranmission techniques
EP2101503A1 (en) * 2008-03-11 2009-09-16 British Telecommunications Public Limited Company Video coding
US8908758B2 (en) 2010-01-06 2014-12-09 Dolby Laboratories Licensing Corporation High performance rate control for multi-layered video coding applications
CA2798008C (en) 2010-05-06 2015-10-20 Nippon Telegraph And Telephone Corporation Method for controlling video encoding if a decoder underflow condition is detected
BR112012028184A2 (pt) 2010-05-07 2016-08-02 Nippon Telegraph & Telephone método de controle de codificação de vídeo, aparelho de codificação de vídeo e programa de codificação de vídeo
RU2527740C2 (ru) 2010-05-12 2014-09-10 Ниппон Телеграф Энд Телефон Корпорейшн Способ управления кодированием видео, устройство кодирования видео и программа кодирования видео
KR101702562B1 (ko) 2010-06-18 2017-02-03 삼성전자 주식회사 멀티미디어 스트림 파일의 저장 파일 포맷, 저장 방법 및 이를 이용한 클라이언트 장치
KR101651027B1 (ko) * 2011-12-23 2016-08-24 인텔 코포레이션 콘텐츠 적응적 고정밀 매크로블록 레이트 제어
US9402082B2 (en) * 2012-04-13 2016-07-26 Sharp Kabushiki Kaisha Electronic devices for sending a message and buffering a bitstream
CN102946542B (zh) * 2012-12-07 2015-12-23 杭州士兰微电子股份有限公司 已编著镜像视频区间码流重新编码及无缝接入方法和系统
EP2952003B1 (en) * 2013-01-30 2019-07-17 Intel Corporation Content adaptive partitioning for prediction and coding for next generation video
US20150071343A1 (en) * 2013-09-12 2015-03-12 Magnum Semiconductor, Inc. Methods and apparatuses including an encoding system with temporally adaptive quantization
US10313675B1 (en) 2015-01-30 2019-06-04 Google Llc Adaptive multi-pass video encoder control
US11153585B2 (en) 2017-02-23 2021-10-19 Netflix, Inc. Optimizing encoding operations when generating encoded versions of a media title
US10715814B2 (en) 2017-02-23 2020-07-14 Netflix, Inc. Techniques for optimizing encoding parameters for different shot sequences
US11166034B2 (en) 2017-02-23 2021-11-02 Netflix, Inc. Comparing video encoders/decoders using shot-based encoding and a perceptual visual quality metric
US10742708B2 (en) 2017-02-23 2020-08-11 Netflix, Inc. Iterative techniques for generating multiple encoded versions of a media title
US10666992B2 (en) 2017-07-18 2020-05-26 Netflix, Inc. Encoding techniques for optimizing distortion and bitrate
CN109756733B (zh) * 2017-11-06 2022-04-12 华为技术有限公司 视频数据解码方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010053002A (ko) * 1998-06-19 2001-06-25 매클린토크 샤운 엘 비디오 엔코더 및 버퍼제어를 갖춘 엔코딩방법
KR100305941B1 (ko) * 1998-03-19 2001-09-26 포만 제프리 엘 실시간 단일 패스 가변 비트 레이트 제어 방법 및 그 인코더

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05167998A (ja) * 1991-12-16 1993-07-02 Nippon Telegr & Teleph Corp <Ntt> 画像の符号化制御処理方法
JP3627279B2 (ja) * 1995-03-31 2005-03-09 ソニー株式会社 量子化装置および量子化方法
US5956674A (en) * 1995-12-01 1999-09-21 Digital Theater Systems, Inc. Multi-channel predictive subband audio coder using psychoacoustic adaptive bit allocation in frequency, time and over the multiple channels
FR2753330B1 (fr) * 1996-09-06 1998-11-27 Thomson Multimedia Sa Procede de quantification pour codage video
JPH10304311A (ja) * 1997-04-23 1998-11-13 Matsushita Electric Ind Co Ltd 映像符号化装置及び映像復号化装置
DE69830979T2 (de) * 1997-07-29 2006-05-24 Koninklijke Philips Electronics N.V. Verfahren und vorrichtung zur videocodierung mit variabler bitrate
US6192075B1 (en) * 1997-08-21 2001-02-20 Stream Machine Company Single-pass variable bit-rate control for digital video coding
JP2001520854A (ja) * 1998-02-20 2001-10-30 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ピクチャシーケンス符号化方法及び装置
DE69930216T2 (de) * 1998-10-13 2006-12-07 Matsushita Electric Industrial Co., Ltd., Kadoma Regelung des Rechen- und Speicheraufwands zur Datenfolgekompression in einem Videodekoder
US20020057739A1 (en) * 2000-10-19 2002-05-16 Takumi Hasebe Method and apparatus for encoding video
US6594316B2 (en) * 2000-12-12 2003-07-15 Scientific-Atlanta, Inc. Method and apparatus for adaptive bit rate control in an asynchronized encoding system
US6831947B2 (en) * 2001-03-23 2004-12-14 Sharp Laboratories Of America, Inc. Adaptive quantization based on bit rate prediction and prediction error energy
US7062429B2 (en) * 2001-09-07 2006-06-13 Agere Systems Inc. Distortion-based method and apparatus for buffer control in a communication system
JP3753371B2 (ja) * 2001-11-13 2006-03-08 Kddi株式会社 動画像圧縮符号化レート制御装置
US7027982B2 (en) * 2001-12-14 2006-04-11 Microsoft Corporation Quality and rate control strategy for digital audio
KR100468726B1 (ko) * 2002-04-18 2005-01-29 삼성전자주식회사 실시간 가변 비트율 제어를 수행하는 부호화 장치 및 방법
JP2004166128A (ja) * 2002-11-15 2004-06-10 Pioneer Electronic Corp 画像情報の符号化方法、符号化装置及び符号化プログラム
KR101017770B1 (ko) * 2003-06-26 2011-02-28 톰슨 라이센싱 슬라이딩 윈도 채널 제약에 부합하는 멀티패스 비디오레이트 제어

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100305941B1 (ko) * 1998-03-19 2001-09-26 포만 제프리 엘 실시간 단일 패스 가변 비트 레이트 제어 방법 및 그 인코더
KR20010053002A (ko) * 1998-06-19 2001-06-25 매클린토크 샤운 엘 비디오 엔코더 및 버퍼제어를 갖춘 엔코딩방법

Also Published As

Publication number Publication date
EP1762093A4 (en) 2011-06-29
WO2006004605A2 (en) 2006-01-12
JP5318134B2 (ja) 2013-10-16
KR100909541B1 (ko) 2009-07-27
EP1762093A2 (en) 2007-03-14
WO2006004605B1 (en) 2006-07-13
WO2006004605A3 (en) 2006-05-04
KR20090037475A (ko) 2009-04-15
KR20070011294A (ko) 2007-01-24
CN102833539A (zh) 2012-12-19
KR100997298B1 (ko) 2010-11-29
JP2011151838A (ja) 2011-08-04
CN102833539B (zh) 2015-03-25
CN1926863B (zh) 2012-09-19
CN102833538B (zh) 2015-04-22
CN102833538A (zh) 2012-12-19
CN1926863A (zh) 2007-03-07
HK1101052A1 (en) 2007-10-05
JP4988567B2 (ja) 2012-08-01
KR20090034992A (ko) 2009-04-08
JP2008504750A (ja) 2008-02-14

Similar Documents

Publication Publication Date Title
KR100988402B1 (ko) 멀티-패스 비디오 인코딩 방법
US8005139B2 (en) Encoding with visual masking
US8406293B2 (en) Multi-pass video encoding based on different quantization parameters
US20190297347A1 (en) Picture-level rate control for video encoding
EP1372113B1 (en) Variable bit rate video encoding method and device
US9071840B2 (en) Encoder with adaptive rate control for H.264
US20060233237A1 (en) Single pass constrained constant bit-rate encoding
WO2007143876A1 (en) Method and apparatus for adaptively determining a bit budget for encoding video pictures
KR101389919B1 (ko) 동화상 부호화 제어 방법, 동화상 부호화 장치 및 동화상 부호화 프로그램
JP2004274236A (ja) 符号化装置および符号化方法、プログラム、並びに記録媒体
Bagni et al. A constant-quality, single-pass VBR control for DVD recorders
JPH0865683A (ja) 動画像符号量制御方法と装置
Zhou et al. New rate-complexity-quantization modeling and efficient rate control for H. 264/AVC
Overmeire et al. Constant quality video coding using video content analysis
Kwon et al. Improved initial QP prediction method in H. 264/AVC
EP2373028A1 (en) Video coding estimation
Sun et al. A novel incremental rate control scheme for H. 264 video coding
JP4329452B2 (ja) 動画像符号化装置、動画像符号化方法、及び、プログラム
JP4379046B2 (ja) 動画像符号化装置及び符号量制御方法
EP2373029A1 (en) Video coding estimation

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130926

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140923

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150918

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180918

Year of fee payment: 9