다음의 본 발명의 상세한 설명에서는, 본 발명의, 다양한 상세한 사항, 예, 및 실시예가 설명되고 기술된다. 그러나, 본 발명은 설명된 실시예로 한정되지 않으며 본 발명은 몇몇의 특정 상세한 사항 및 기술된 예 없이도 실행될 수 있음이 본 기술 분야에서 숙련된 기술을 가진 자에게 자명하고 명백할 것이다.
Ⅰ. 정의
이 섹션은 본 명세서에서 이용되는 몇몇의 기호에 대한 정의를 제공한다.
는 프레임 시퀀스를 인코딩하는 데에 바람직한 비트레이트인 목표 비트레이트를 나타낸다. 통상적으로, 이러한 비트레이트는 bit/sec(초 당 비트) 단위로 표현되며, 바람직한 최종 파일 사이즈, 시퀀스에서의 프레임 개수, 및 프레임레이트로부터 계산된다.
는 패스 p의 끝에서의 인코딩된 비트 스트림의 비트레이트를 나타낸다.
는 패스 p의 끝에서의 비트레이트의 오차 퍼센트를 나타낸다. 몇몇의 경우, 이러한 퍼센트는 100 x
로서 계산된다.
ε는 최종 비트레이트에서의 오차 허용치를 나타낸다.
는 제1 QP 검색 단계에 대한 비트레이트의 오차 허용치를 나타낸다.
QP는 양자화 파라미터를 나타낸다.
는 프레임 시퀀스에 대한 패스 p 인코딩에 이용되는 명목상의 양자화 파라미터를 나타낸다.
의 값은 제1 QP 조정 단계에서 본 발명의 멀티-패스 인코더에 의해 목표 비트레이트에 도달하도록 조정된다.
는 패스 p에서의 프레임 k에 대한 양자화 파라미터(QP)인 마스킹된 프레임 QP를 나타낸다. 몇몇의 실시예에는 이 값을 명목상의 QP 및 프레임-레벨 시각적 마스킹에 의해 계산한다.
는 프레임 k 및 패스 p의 (매크로블록 인덱스 m을 가지는) 개별적인 매크로블록에 대한 양자화 파라미터(QP)인 마스킹된 매크로블록 QP를 나타낸다. 몇몇의 실시예는
를
및 매크로블록 레벨 시각적 마스킹을 이용하여 계산한다.
는 프레임 k에 대한 마스킹 강도라 칭하는 값을 나타낸다. 마스킹 강도
는 프레임에 대한 복잡도의 측정치이며, 몇몇의 실시예에서, 이 값은 어떻게 시각적인 코딩 아티팩트(artifact)/잡음이 나타날지를 결정하고 프레임 k의
를 계산하는 데에 이용된다.
는 패스 p의 기준 마스킹 강도를 나타낸다. 기준 마스킹 강도는 프레 임 k의
를 계산하는 데에 이용되고, 제2 단계에서 본 발명의 멀티-패스 인코더에 의해 목표 비트레이트에 도달하도록 조정된다.
는 프레임 k의 인덱스 m을 가지는 매크로블록에 대한 마스킹 강도를 나타낸다. 마스킹 강도
는 매크로블록에 대한 복잡도의 측정치이고, 몇몇의 실시예에서 이 값은 시각적인 코딩 아티팩트/잡음이 어떻게 나타날지를 결정하고
를 계산하는 데에 이용된다. AMQP
p는 패스 p의 프레임들에 대한 평균 마스킹된 QP를 나타낸다. 몇몇의 실시예에서, 이 값은 패스 p의 모든 프레임들에 대한 평균
로서 계산된다.
Ⅱ. 개관
본 발명의 몇몇의 실시예는 소정의 비트레이트로 프레임 시퀀스를 인코딩하는데에 있어 최상의 시각적인 품질을 이루는 인코딩 방법을 제공한다. 몇몇의 실시예에서, 이 방법은 양자화 파라미터 QP를 모든 매크로블록에 할당하는 시각적인 마스킹 프로세스를 이용한다. 이 할당은 이미지 또는 비디오 프레임의 보다 밝거나 공간적으로 복잡한 구역에서의 코딩 아티팩트/잡음이 보다 어둡거나 평탄한 구역에서의 코딩 아티팩트/잡음에 비하여 잘 보이지 않는다는 사실에 기초한다.
몇몇의 실시예에서, 이러한 시각적인 마스킹 프로세스는 본 발명의 멀티-패스 인코딩 프로세스의 일부로서 수행된다. 이러한 인코딩 프로세스는, 최종 인코딩된 비트 스트림이 목표 비트레이트에 도달하게 하기 위하여, 명목상의 양자화 파 라미터를 조정하고 기준 마스킹 강도 파라미터
을 통하여 시각적인 마스킹 프로세스를 제어한다. 이하에 더 기술될 바와 같이, 명목상의 양자화 파라미터를 조정하는 것과 마스킹 알고리즘을 제어하는 것은 각각의 화상(즉, 통상적인 비디오 인코딩 스킴에서의 각 프레임) 및 각각의 화상 내의 각각의 매크로블록에 대한 QP 값을 조정한다.
몇몇의 실시예에서, 멀티-패스 인코딩 프로세스는 전체 시퀀스에 대한 명목상의 QP 및
을 전역적으로 조정한다. 다른 실시예에서, 이 프로세스는 비디오 시퀀스를 세그먼트들로 나누고 각 세그먼트에 대하여 명목상의 QP 및
이 조정된다. 이하의 설명은 멀티-패스 인코딩 프로세스가 채용된 프레임의 시퀀스를 언급한다. 본 기술 분야에서 통상의 기술을 가진 자라면 이러한 시퀀스는 몇몇의 실시예에서는 전체 시퀀스를 포함하지만, 다른 실시예에서는 시퀀스 중 어느 한 세그먼트만을 포함함을 인식할 것이다.
몇몇의 실시예에서, 방법은 3가지 인코딩 단계를 가진다. 이들 3 단계는 (1) 패스 0에서 수행되는 초기 분석 단계, (2) 패스 1 내지 패스
에서 수행되는 제1 검색 단계, 및 (3) 패스
내지 패스
에서 수행되는 제2 검색 단계이다.
초기 분석 단계(즉, 패스 0)에서, 방법은 명목상의 QP에 대한 초기 값(인코딩의 패스 1에 이용될 QP
Nom(1))을 식별한다. 초기 분석 단계 중에, 방법은 제1 검 색 단계의 모든 패스에서 이용되는 기준 마스킹 강도
의 값 또한 식별한다.
제1 검색 단계에서, 방법은 인코딩 프로세스의
번의 반복(즉,
패스들)을 수행한다. 각 패스 p 중 각각의 프레임 k에 대하여, 프로세스는 프레임 k 내의 개별적인 매크로블록 m에 대한 특정 양자화 파라미터
및 특정 양자화 파라미터
를 이용함으로써 프레임을 인코딩하며, 여기서
는
를 이용하여 계산된다.
제1 검색 단계에서, 양자화 파라미터
는 패스들마다 변화하는 명목상의 양자화 파라미터
로부터 유도되기 때문에 패스들마다 변한다. 다시 말하면, 제1 검색 단계 중에 각각의 패스 p의 끝에서, 프로세스는 패스
에 대한 명목상의
을 계산한다. 몇몇의 실시예에서, 명목상의
는 이전의 패스(들)로부터의 명목상의 QP 값(들) 및 비트레이트 오차(들)에 기초한다. 다른 실시예에서, 명목상의
값은 제2 검색 단계에서 각각의 패스의 끝에서 서로 다르게 계산된다.
제2 검색 단계에서, 방법은 인코딩 프로세스의
번의 반복(즉,
개의 패스들)을 수행한다. 제1 검색 단계에서와 같이, 프로세스는 프레임 k 내의 개별적인 매크로블록 m에 대한 특정 양자화 파라미터
및 특정 양자화 파라미터
를 이용함으로써 각각의 패스 p 중에 각각의 프레임 k를 인코딩하 는데, 여기서
는
로부터 유도된다.
또한, 제1 검색 단계에서와 같이, 양자화 파라미터
는 패스들마다 변한다. 그러나, 제2 검색 단계 중에, 이러한 파라미터는 패스들마다 변하는 기준 마스킹 강도
를 이용하여 계산되기 때문에 변화하는 것이다. 몇몇의 실시예에서, 기준 마스킹 강도
는 이전 패스(들)로부터의 값(들) 및 비트레이트(들)에서의 오차에 기초하여 계산된다. 다른 실시예에서, 이러한 기준 마스킹 강도는 제2 검색 단계에서의 각각의 패스 끝에서 다른 값이 되도록 계산된다.
멀티-패스 인코딩 프로세스가 시각적인 마스킹 프로세스와 함께 기술되었지만, 본 기술 분야에서 통상의 기술을 가진 자라면 인코더는 이들 프로세스 둘다를 함께 이용할 필요는 없음을 인식할 것이다. 예를 들면, 몇몇의 실시예에서, 멀티-패스 인코딩 프로세스는
을 무시하고 상술한 제2 검색 단계를 생략함으로써 시각적인 마스킹 없이 소정의 목표 비트레이트에 근접하게 비트스트림을 인코딩하는 데에 이용된다.
시각적인 마스킹 및 멀티-패스 인코딩 프로세스는 본 명세서의 섹션 Ⅲ 및 Ⅳ에 더 기술된다.
Ⅲ. 시각적인 마스킹
명목상의 양자화 파라미터가 주어지면, 시각적인 마스킹 프로세스는 먼저 기준 마스킹 강도 (
) 및 프레임 마스킹 강도
를 이용하여 각각의 프레임에 대 한 마스킹된 프레임 양자화 파라미터(MQP)를 계산한다. 그 다음 이 프로세스는 각각의 매크로블록에 대한 마스킹된 매크로블록 양자화 파라미터
를, 프레임 및 매크로블록-레벨 마스킹 강도(φ
F 및 φ
MB)에 기초하여, 계산한다. 시각적인 마스킹 프로세스가 멀티-패스 인코딩 프로세스에 채용된다면, 몇몇의 실시예에서의 기준 마스킹 강도(
)는 상술하였고 후술될 바와 같이 제1 인코딩 패스 중에 식별된다.
A. 프레임-레벨 마스킹 강도 계산
1. 제1 접근법
프레임-레벨 마스킹 강도 φF(k) 를 계산하기 위하여, 몇몇의 실시예는 다음의 수학식 1을 이용한다:
여기에서,
ㆍ
는 bxb 영역을 이용하여 계산된 프레임 k에서의 평균 픽셀 강도이며, b는 1 이상의 정수이다(예를 들면, b=1 또는 b=4).
ㆍ
는 프레임 k의 모든 매크로블록에 대한
의 평균이다.
ㆍ
는 인덱스 m을 가지는 매크로블록의 모든 4x4 블록에 대한 함수
에 의해 주어진 값들의 합이다.
ㆍ
, C, D 및 E는 상수이고/거나 지역적 통계에 적응된다.
2. 제2 접근법
다른 실시예는 프레임-레벨 마스킹 강도를 다르게 계산한다. 예를 들면, 상술한 수학식 1은 본질적으로 다음과 같이 프레임 마스킹 강도를 계산한다:
수학식 1에서, 프레임의
는
와 같고,
는 프레임의 모든 매크로블록에 대한 평균 매크로블록 SAD(
) 값인
와 같으며, 여기서 평균 매크로블록 SAD는 매 크로블록의 모든 4x4 블록에 대한 (
에 의해 주어진) 평균 제거된 4x4 픽셀 편차의 절대값의 합과 같다. 이
는 코딩되고 있는 프레임 내의 픽셀의 영역의 공간적 전개의 총계를 측정한다.
다른 실시예는 복수의 연속되는 프레임에 걸친 픽셀 영역에서의 시간적 전개의 양을 포함하도록 활성 측정치를 확장한다. 상세히는, 이들 실시예는 다음과 같이 프레임 마스킹 강도를 계산한다.
이 수학식에서,
는 다음의 수학식 3에 의해 주어진다.
몇몇의 실시예에서,
는 프레임들 간의 움직임에 의한, 허용될 수 있는(즉, 마스킹될 수 있는) 왜곡의 양을 정량화한다. 몇몇의 이들 실시예에서, 프레임의
는 프레임 내에 정의된 픽셀 영역의 움직임 보상된 오차 신호의 절대값 합의 정수배와 같다. 다른 실시예에서,
는 아래의 수학식 4에 의해 제공된다.
수학식 4에서, "
"는 (상술한 바와 같이) 프레임의 평균 매크로블록 SAD(
) 값을 나타내고,
(0)은 현재 프레임에 대한
이며, 음수 j는 현재 프레임 이전의 순시(time instant)를 인덱싱하고 양수 j는 현재 프레임 이후의 순시를 인덱싱한다. 그러므로,
는 현재 프레임 이전의 2개의 프레임의 평균 프레임 SAD를 나타내고,
는 현재 프레임 이후의 3개의 프레임의 평균 프레임 SAD를 나타낸다.
또한, 수학식 4에서, 변수 N 및 M은 각각 현재 프레임 이전의 프레임 개수 및 현재 프레임 이후의 프레임 개수를 나타낸다. 단순히 특정 개수의 프레임에 기초하여 값 N 및 M을 선택하는 대신에, 몇몇의 실시예는 현재 프레임 시간의 이전 및 이후 특정 시간 간격에 기초하여 값 N 및 M을 계산한다. 움직임 마스킹을 시간적인 기간에 상호 연관시키는 것은 움직임 마스킹을 설정된 수의 프레임에 상호 연관시키는 것보다 유리하다. 이는 움직임 마스킹을 시간적인 간격과의 상호 연관시 키는 것이 관찰자의 시간 기반의 시각적인 인식에 직접적으로 순응하기 때문이다. 반면에, 이러한 마스킹을 프레임 수에 상호 연관시키면 서로 다른 디스플레이가 서로 다른 프레임레이트로 비디오를 표시하기 때문에 디스플레이 간격이 변화되는 문제가 있다.
수학식 4에서, "W"는 몇몇의 실시예에서 프레임 j가 현재 프레임으로부터 진행됨에 따라 감소하는 가중치 계수를 나타낸다. 또한, 이 수학식에서, 첫번째 합산은 현재 프레임 이전에 마스킹될 수 있는 움직임의 양을 나타내고, 두번째 합산은 현재 프레임 이후에 마스킹될 수 있는 움직임의 양을 나타내며, 마지막 표현식(
)은 현재 프레임의 프레임 SAD를 나타낸다.
몇몇의 실시예에서, 가중치 계수는 장면 전환을 설명하도록 조정된다. 예를 들면, 몇몇의 실시예는 예견 범위 내의(즉, M 프레임 내의) 다가오는 장면 전환을 설명하지만, 장면 전환 이후의 임의의 프레임을 설명하지는 않는다. 예를 들면, 이들 실시예는 장면 전환 이후의 예견 범위 내의 프레임에 대하여 가중치 계수를 0으로 설정할 수 있다. 또한, 몇몇의 실시예는 회고 범위 내의(즉, M 프레임 내의) 장면 전환 이전 또는 장면 전환 중의 프레임을 설명하지 않는다. 예를 들면, 이들 실시예는 이전 장면과 관련되거나 이전 장면 전환 전에 있었던 회고 범위 내의 프레임에 대하여 가중치 계수를 0으로 설정할 수 있다.
3. 제2 접근법에 대한 변형
a) 과거 또는 미래의 프레임이
에 미치는 영향을 제 한하기
상기 수학식 4는 본질적으로 다음의 식으로
를 표현한다:
여기서
는
와 같고,
는
와 같으며,
는
와 같다.
몇몇의 실시예는
의 계산을 수정하여
와
중 어느 것도 부적절하게
의 값을 제어하지 않도록 한다. 예를 들면, 몇몇의 실시예는 초기에 PFA가
와 같고, FFA가
와 같도록 정의한다.
그 다음 이들 실시예는 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 값의 잠재적인 이후의 조정은 이들 값 중 하나가 부적절하게
를 제어하는 것을 방지한다.
상기 수학식 3은 본질적으로 다음의 식으로
를 표현한다.
여기서
는 scalar
*(scalar
* )
β와 같고,
는
와 같다.
몇몇의 실시예는
의 계산을 수정하여
및
중 어느 것도
의 값을 부적절하게 제어하지 않도록 한다. 예를 들면, 몇몇의 실시예는 초기에
를 scalar
*(scalar
* )
β와 같도록 정의하고,
를
와 같도록 정의한다.
그 다음 이들 실시예는 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 값의 잠재적 인 이후의 조정은 이들 값 중 하나가 부적절하게
를 제어하는 것을 방지한다.
B. 매크로블록-레벨 마스킹 강도의 계산
1. 제1 접근법
몇몇의 실시예에서, 매크로블록-레벨 마스킹 강도
는 다음과 같이 계산된다:
여기서,
ㆍ
는 프레임 k, 매크로블록 m의 평균 픽셀 강도이다.
ㆍ
및 C는 상수이고/거나 지역적 통계에 적응된다.
2. 제2 접근법
상술한 수학식 5는 본질적으로 다음과 같이 매크로블록 마스킹 강도를 계산한다:
수학식 5에서, 매크로블록의
는
와 같고,
는
와 같다. 이
는 코딩되고 있는 매크로블록 내의 픽셀 영억에서의 공간적인 전개의 양을 측정한다.
프레임 마스킹 강도의 경우에서와 같이, 몇몇의 실시예는 복수의 연속되는 프레임에 걸친 픽셀 영역에서의 시간적 전개의 양을 포함하도록 매크로블록 마스킹 강도의 활성 측정치를 확장할 수 있다. 상세히는, 이들 실시예는 다음과 같이 매크로블록 마스킹 강도를 계산할 것이다:
여기서, Mb_Activity_Attribute는 다음의 수학식 7에 의해 주어진다:
매크로블록에 대한 Mb_Temporal_Activity_Attribute의 계산은 상술한 프레임에 대한 Mb_Temporal_Activity_Attribute의 계산과 유사할 수 있다. 예를 들면, 몇몇의 이들 실시예에서, Mb_Temporal_Activity_Attribute는 다음의 수학식 8에 의해 제공된다:
수학식 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이 제공한 프레임
의 (상기 섹션 Ⅲ.A.3)에 기술된 수정과 유사한 방식으로 수정될 수 있다. 상세히는, 수학식 7이 제공한 Mb_Activity_Attribute는 Mb_Spatial_Activity_Attribute 및 Mb_Temporal_Activity_Attribute의 부적절한 영향을 제한하도록 수정될 수 있다.
C. 마스킹된 QP 값의 계산
마스킹 강도의 값(
및
) 및 기준 마스킹 강도의 값
에 기초하여, 시각적인 마스킹 프로세스는 2개의 함수
및
를 이용함으로써 프레임 레벨 및 매크로블록 레벨에서 마스킹된 QP 값을 계산할 수 있다. 이들 2 함수의 의사 코드는 다음과 같다:
상기 함수에서,
및
는 소정의 상수이거나 지역적 통계에 적응될 수 있다.
Ⅳ. 멀티 패스 인코딩
도 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 값의 통상적인 범위의 중간 값)일 수 있다. 시퀀스의 분석 중에, 마스킹 강도
(k)가 각 프레임에 대하여 계산된 다음, 기준 마스킹 강도, φ
R(1), 는 패스 0의 끝에서 avg(
(k))와 같도록 설정된다. 기준 마스킹 강도 φ
R에 대한 다른 결정 또한 가능하다. 예를 들면, 값
(k)의 중앙치 또는 다른 산술 함수, 예를 들면 값
(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에 대한 특정 양자화 파라미터
및 프레임 k 내의 각각의 개별적인 매크로블록 m에 대한 특정 양자화 파라미터
를 계산한다(107). 소정의 명목상의 양자화 파라미터
및 기준 마스킹 강도
에 대한 파라미터
및
의 계산은 섹션 Ⅲ에 기술되었다(여기서,
및
는 섹션 Ⅲ에서 기술하였던 함수
및
를 이용함으로써 계산된다.). 제1 패스(즉, 패스 1) 내지 참조번호(107)에서, 명목상의 양자화 파라미터 및 제1 단계 기준 마스킹 강도는 초기 분석 단계(105) 중에 계산되었던 파라미터 QP
Nom(1) 및 기준 마스킹 강도 φ
R(1)이다.
참조번호(107) 다음에, 프로세스는 참조번호(107)에서 계산한 양자화 파라미터 값에 기초하여 시퀀스를 인코딩한다(110). 그 다음, 인코딩 프로세스(100)는 종료되어야 하는지 여부를 판정한다(115). 서로 다른 실시예들이 전체 인코딩 프로세스를 종료하기 위한 서로 다른 기준을 가진다. 멀티-패스 인코딩 프로세스를 완전히 종료하는 탈출 조건의 예는 다음을 포함한다:
ㆍ
<ε, 여기서 ε는 최종 비트레이트에서의 오차 허용치이다.
ㆍ
가 QP 값의 유효 범위의 상한 또는 하한 경계에 있다.
ㆍ 패스의 개수가 허용가능한 패스의 최대 개수 PMAX를 초과하였다.
몇몇의 실시예는 이들 탈출 조건 모두를 사용할 수 있는 한편, 다른 실시예는 이들 중 몇 가지만을 사용할 수 있다. 그러나 다른 실시예들이 인코딩 프로세스를 종료하기 위한 다른 탈출 조건을 사용할 수 있다.
멀티-패스 인코딩 프로세스가 종료된다고 판정한다면(115), 프로세스(100)는 제2 검색 단계를 생략하고 참조번호(145)로 이동한다. 참조번호(145)에서, 프로세스는 마지막 패스 p로부터의 비트스트림을 최종 결과로서 저장한 다음 종료한다.
반면에, 프로세스가 종료되지 않아야 한다고 판정하면(115), 제1 검색 단계를 종료해야 하는지를 판정한다(120). 마찬가지로, 서로 다른 실시예들이 제1 검색 단계를 종료하기 위한 서로 다른 기준을 가진다. 멀티-패스 인코딩 프로세스의 제1 검색 단계를 종료하는 탈출 조건의 예는 다음을 포함한다:
ㆍ
이
와 동일하고
이다(이 경우, 비트레이트에서의 오차는 명목상의 QP를 수정함으로써 임의로 더 낮추어질 수 없다).
ㆍ
ε, 여기서 ε
C는 제1 검색 단계에서의 비트레이트에서의 오차 허용치이다.
ㆍ패스의 개수가 P1을 초과한다, 여기서 P1은 PMAX보다 작다.
ㆍ패스의 개수가 P
2를 초과한다, 여기서 P
2는 P
1 보다 작고,
이다.
몇몇의 실시예는 이들 탈출 조건 모두를 사용할 수 있는 한편, 다른 실시예는 이들 중 몇 가지만을 사용할 수 있다. 그러나 다른 실시예들이 제1 검색 단계를 종료하기 위한 다른 탈출 조건을 사용할 수 있다.
멀티-패스 인코딩 프로세스가 제1 검색 단계를 종료한다고 판정한다면(120), 프로세스(100)는 다음 서브-섹션에서 기술될 제2 검색 단계로 진행한다. 반면에, 프로세스가 제1 검색 단계를 종료하지 않아야 한다고 판정하면(120), 제1 검색 단계의 다음 패스에 대한 명목상의 QP를 갱신한다(125)(즉,
을 정의한다). 몇몇의 실시예에서, 명목상의
는 다음과 같이 갱신된다. 패스 1의 끝에서, 이들 실시예는
를 정의하며, 여기서
는 상수이다. 그 다음 패스 2 내지 패스
에서의 패스의 각각의 끝에서, 이들 실시예는
를 정의하며, 여기서
는 이하 더 기술될 함수이다. 또한, 상기 수학식에서, q1 및 q2는 패스 p까지의 모든 패스들 중에서 가장 낮은 대응하는 비트레이트 오차를 가지는 패스 번호이고, q1, q2, 및 p는 다음과 같은 관계를 가진다:
다음은 InterpExtrap 함수에 대한 의사 코드이다. x가 x1과 x2 사이에 있지 않은 경우, 이 함수는 외삽법 함수임을 유의한다. 그렇지 않다면, 이 함수는 내삽법 함수이다.
명목상의 QP값은 통상적으로 정수 값으로 반올림되며 QP 값의 유효 범위 내에 주어지도록 무수리를 갖다 버린다. 본 기술 분야에서 통상의 기술을 가진 자라면 다른 실시예들은 상술한 접근법들과는 다르게 명목상의
값을 계산할 수 있음을 인식할 것이다.
참조번호(125)에서, 프로세스는 참조번호(107)로 다시 이동하여 다음 패스(즉, p :=p+1)를 시작하는데, 이 패스에서, 현재 패스 p에 대하여 각 프레임 k에 대한 특정 양자화 파라미터
및 프레임 k 내의 개별적인 매크로 블럭 각각에 대한 특정 양자화 파라미터
를 계산한다(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개의 대안적인 접근법이 후술될다.
몇몇의 실시예는 이전 패스(들)로부터의
의 비트레이트(들) 및 값(들)의 오차에 기초하여 기준 마스킹 강도
를 계산한다. 예를 들면, 패스 N
1의 끝에서, 몇몇의 실시예는
를 정의한다.
패스 N1+m(m은 1보다 큰 정수)의 끝에서, 몇몇의 실시예는
를 정의한다. 대안으로 몇몇의 실시예는
를 정의하는데, 여기에서 q1 및 q2는 최상의 오차를 제공하였던 이전의 패스들이다.
다른 실시예들은 섹션 Ⅰ에서 정의하였던 AMQP를 이용함으로써 제2 검색 단계의 각 패스들의 끝에서 기준 마스킹 강도를 계산한다. 소정의 명목상의 QP에 대한 AMQP 및
에 대한 몇몇의 값을 계산하기 위한 한가지 방식은 함수
의 의사코드를 참조하여 다음에 기술된다.
AMQP를 이용하는 몇몇의 실시예는 이전 패스(들)로부터의 AMQP의 비트레이트(들) 및 값(들)에서의 오차에 기초하여 패스 p+1에 대한 소정의 AMQP를 계산한다. 그 다음 이 AMQP에 대응하는
은 의사코드가 이 서브섹션의 끝에 주어지는 함수
에 의해 주어진 검색 프로세저를 통해 구한다.
예를 들면, 몇몇의 실시예는 패스 N
1의 끝에서
를 계산하는데, 여기에서
일 때,
이고,
일때,
이다.
그 다음 이들 실시예는
를 정의한다. 패스 N
1+m의 끝에서(여기서 m은 1보다 큰 정수), 몇몇의 실시예는
및
을 정의한다.
소정의 AMQP 및
의 몇몇의 디폴트 값이 주어지면, 소정의 AMQP에 대응하는
은 몇몇의 실시예에서 다음의 의사 코드를 가지는 Search 함수를 이용하여 구할 수 있다.
상기 의사 코드에서, 숫자 10, 12 및 0.05는 적절하게 선택된 임계값으로 교체될 수 있다.
프레임 시퀀스의 인코딩을 통하여 다음 패스(패스 p+1)에 대한 기준 마스킹 강도를 계산한 후에, 프로세스(100)는 참조번호(132)로 이동하여 다음 패스(즉, p:=p+1)를 시작한다. 각각의 인코딩 패스 p 중에 각각의 프레임 k 및 각각의 매크 로블록 m에 대하여, 프로세스는 각각의 프레임 k에 대한 특정 양자화 파라미터
및 프레임 k 내의 개별적인 매크로블록에 대한 특정 양자화 파라미터
을 계산한다(132). 소정의 명목상의 양자화 파라미터
및 기준 마스킹 강도
에 대한 파라미터
및
의 계산은 섹션 Ⅲ에 기술되었다(여기서
및
은 상기 섹션 Ⅲ에 기술에 기술되었던 함수
및
를 이용함으로써 계산된다). 제1 패스 내지 참조번호(132) 중에, 기준 마스킹 강도는 바로 이전의 참조번호(130)에서 계산되었던 것이다. 또한, 제2 검색 단계 중에, 명목상의 QP는 제2 검색 단계 전반에 걸쳐 상수를 유지하고 있다. 몇몇의 실시예에서, 제2 검색 단계 전반에 걸친 명목상의 QP는 제1 검색 단계 중에 최상의 인코딩 솔루션(즉, 가장 낮은 비트레이트 오차를 가지는 인코딩 솔루션)을 생성하는 명목상의 QP이다.
참조번호(132) 이후에, 프로세스는 참조번호(130)에서 계산된 양자화 파라미터를 이용하여 프레임 시퀀스를 인코딩한다(135). 참조번호(135) 이후에, 프로세스는 제2 검색 단계를 종료해야 하는지를 판정한다(140). 다른 실시예에서는 패스 p의 끝에서 제2 검색 단계를 종료하기 위한 서로 다른 기준을 사용한다.
이러한 기준의 예들은 다음과 같다.
ㆍ
<ε, 여기서 ε는 최종 비트레이트의 오차 허용치이다.
ㆍ 패스의 개수가 허용되는 패스의 최대 수를 초과한다.
몇몇의 실시예는 이들 탈출 조건 모두를 사용할 수 있는 한편, 다른 실시예 는 이들 중 몇 가지만을 사용할 수 있다. 그러나 다른 실시예들이 제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로부터의 이미지의 명목상의 제거 시점은
로 기술된다.
이미지 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를 생성한다. 몇몇의 실시예에서, 예측된 값은 매크로블록의 픽셀의 값 뿐만 아니라 하나 이상의 이웃한 매크로블록의 픽셀 값에도 기초한다.
또한, 상술한 실시예는 유도된 공간 및 시간전 마스킹 값을 직접 이용한다. 다른 실시예는 연속되는 공간 마스킹 값에 대하여 및/또는 연속되는 시간 마스킹 값에, 비디오 이미지 전반에 걸친 이들 값의 일반적인 성향을 찾아내기 위하여 이들을 이용하기 전에 평활화 필터링을 적용할 것이다. 그러므로, 본 기술 분야에서 통상의 기술을 가지는 자라면 본 발명은 상술한 예시적인 상세에 의해 제한되지 않는다고 이해할 것이다.