KR20080030624A - 계층적 캐시를 사용하는 동작 추정 및 보상 - Google Patents

계층적 캐시를 사용하는 동작 추정 및 보상 Download PDF

Info

Publication number
KR20080030624A
KR20080030624A KR1020087001969A KR20087001969A KR20080030624A KR 20080030624 A KR20080030624 A KR 20080030624A KR 1020087001969 A KR1020087001969 A KR 1020087001969A KR 20087001969 A KR20087001969 A KR 20087001969A KR 20080030624 A KR20080030624 A KR 20080030624A
Authority
KR
South Korea
Prior art keywords
sample
hierarchical cache
cache
hierarchical
levels
Prior art date
Application number
KR1020087001969A
Other languages
English (en)
Other versions
KR101293078B1 (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 KR20080030624A publication Critical patent/KR20080030624A/ko
Application granted granted Critical
Publication of KR101293078B1 publication Critical patent/KR101293078B1/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/53Multi-resolution motion estimation; Hierarchical motion estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

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

Abstract

계층적 캐시를 사용하는 비디오 동작 프로세스 최적화를 위한 방법 및 장치가 제공된다. 비디오 동작 프로세스에 대한 저장 방법은 하나 이상의 레벨을 가지도록 계층적 캐시를 구성하는 단계(622)를 포함하고, 상기 계층적 캐시의 각 레벨은 비디오 동작 프로세스에 대한 샘플 값을 계산하는 것과 연관된 계산 계층의 복수의 레벨의 각 레벨에 대응한다. 이 방법은 또한 복수의 계산 계층 중 어느 것에 특정 값이 대응하는지에 기초하여 계층적 캐시의 대응하는 레벨에서 비디오 동작 프로세스에 관련된 샘플에 대한 특정 값을 저장하는 단계(655)를 포함하고, 이것은 상기 특정 값이 상기 계층적 캐시에 존재하지 않는 경우이다.

Description

계층적 캐시를 사용하는 동작 추정 및 보상{MOTION ESTIMATION AND COMPENSATION USING A HIERARCHICAL CACHE}
본 출원은 본 명세서에 그 전문이 참조로 통합되어 있고, 2005년 7월 28일 "METHOD AND APPARATUS FOR VIDEO MOTION COMPENSATION"이라는 제목으로 출원된 미국 가출원 일련 번호 60/703,204호의 이익을 주장한다.
본 발명은 일반적으로 비디오 인코딩 및 디코딩에 관한 것으로, 특히 계층적 샘플 캐시를 사용하는 비디오 동작 처리 최적화(video motion process optimization)를 위한 방법 및 장치에 관한 것이다.
많은 비디오 인코더/디코더 애플리케이션에서, 동작 추정 및 보상이 주된 성능 애로점(performance bottleneck)이다. 통계적으로, 최종 휘도 또는 채도 샘플을 생성하기 위해 사용된 계산은, 최종 샘플을 선택하기 위해 사용된 동작 보상/추정 알고리즘에서의 공간-시간 상관으로 인해 중복되는 것일 수 있다. 충분한 메모리 자원을 지닌 비디오 시스템에서는, 이들 샘플이 캐싱될 수 있어, 중복되는 계산을 피하고 실행 시간을 절약한다.
동작 보상/추정을 최적화하기 위한 노력의 대부분은 필수적인 샘플을 계산하는 코드의 최적화에 초점을 맞춘다. 이러한 실시는 프로그램 흐름으로부터 중복되 는 계산을 제거하지 않는다.
이제 휘도 샘플 보간 프로세스에서의 중복되는 몇 가지를 예시하기 위해, 표준화를 위한 국제 기구/국제 전자기술 위원회(ISO/IEC) 동화상 전문가 그룹-4(MPEG-4) 파트 10 개선된 비디오 코딩(AVC: Advanced Video Coding) 표준/국제 텔레커뮤니케이션 유니온, 텔레커뮤니케이션 섹터(ITU-T) H.264 표준(이후, "MPEG4/H.264 표준" 또는 간단히 "H.264 표준")의 휘도 샘플 보간 프로세스에 대한 설명이 주어진다.
H.264 표준은 1/4-화소(quarter-pel) 보간 방식을 이용한다. 도 1은 이들 샘플이 어떻게 배치되는지를 보여준다. 도 1을 참조하면, H.264 표준에 따라 1/4 샘플 휘도 보간에 대한 정수(integer) 샘플 위치와 소수(fractional) 샘플 위치를 보여주는 그림이 일반적으로 참조 번호 100으로 표시되어 있다. 정수 샘플 위치는 비어있거나 대문자를 포함하는 블록으로 표시되고, 소수 샘플 위치는 소문자를 포함하는 블록으로 표시된다.
서브-픽셀(sub-pel) 샘플은 다음과 같은 정수 좌표 위에 놓이는 샘플로부터 계산된다(H.264 표준의 섹션 8.4.2.2.1로부터 취해진). 즉,
'A'부터 'U'...까지의 휘도 샘플이 주어지면, 소수 샘플 위치에서의 휘도 샘플 'a' 내지 's'가 다음 규칙에 의해 유도된다. 절반 샘플 위치에서의 휘도 예측값은 탭 값(1, -5, -20, 20, -5, 1)으로 6-탭 필터를 적용함으로써 유도된다. 1/4 샘플 위치에서의 휘도 예측 값은 전체 및 절반 샘플 위치에서 샘플들의 평균을 구함으로써 유도된다. 각 소수 위치에 대한 프로세스는 아래에 같이 설명된다.
- b로 라벨이 붙여진 절반 샘플 위치에서의 샘플은 6-탭 필터를 수평 방향으로 가장 가까운 정수 위치 샘플에 적용함으로써, b1이라고 표시된 중간값을 먼저 계산함으로써 유도된다. h라고 라벨이 붙여진 절반 샘플 위치에서의 샘플은, 수직 방향으로 가장 가까운 정수 위치 샘플에 6-탭 필터를 적용함으로써 h1이라고 표시된 중간값을 먼저 계산함으로써 유도된다.
b1 = (E - 5*F + 20*G + 20*H - 5*I + J)
h1 = (A - 5*C + 20*G + 20*M - 5*R + T)
최종 예측값인 b와 h는
b = Clip1Y((b1 + 16)>>5)
h = Clip1Y((h1 + 16)>>5)
- j라고 라벨이 붙여진 절반 샘플 위치에서의 샘플은 6-탭 필터를 수평 또는 수직 방향으로 가장 가까운 절반 샘플 위치의 중간값에 적용함으로써, j1이라고 표시된 중간값을 먼저 계산함으로써 유도되는데, 이는 이들이 같은 결과를 만들어내기 때문이다.
j1 = cc - 5*dd + 20*h1 + 20*m1 - 5*ee + ff, 또는
j1 = aa - 5*bb + 20*b1 + 20*s1 - 5*gg + hh
여기서, aa, bb, gg, s1, hh라고 표시된 중간값은, b1의 유도와 동일한 방식 으로 수평으로 6-탭 필터를 적용함으로써 유도되고, cc, dd, ee, m1, ff와 같이 표시된 중간값은 h1의 유도와 동일한 방식으로 수직으로 6-탭 필터를 적용함으로써 유도된다. 최종 예측 값인 j는
j = clip1Y((j1 + 512)>>10)
를 사용하여 유도된다.
- 최종 예측 값인 s와 m은
s = clip1Y((s1 + 16)>>5)
m = clip1Y((m1 + 16)>>5)
에 의해 주어진 것처럼, b와 h의 유도와 동일한 방식으로 s1과 m1으로부터 유도된다.
- a, c, d, n, f, i, k, q로 라벨이 붙여진 1/4 샘플 위치에서의 샘플은,
a = (G + b + 1)>>1
c = (H + b + 1)>>1
d = (G + h + 1)>>1
n = (M + h + 1)>>1
f = (b + j + 1)>>1
i = (h + j + 1)>>1
k = (j + m + 1)>>1
q = (j + s + 1)>>1
를 사용하여 정수 및 절반 샘플 위치에서 2개의 가장 가까운 샘플의 상향 반올림(upward rounding)으로 평균을 구함으로써 유도된다.
- e, g, p, r이라고 라벨이 붙은, 1/4 샘플 위치에서의 샘플들은
e = (b + h + 1) >> 1
g = (b + m + 1) >> 1
p = (h + s + 1) >> 1
r = (m + s + 1) >> 1
를 사용하여 대각선 방향으로 절반 샘플 위치에서 2개의 가장 가까운 샘플의 반올림으로 평균을 구함으로써 유도된다.
Clip1Y는, 만약 0 미만이라면 0으로 숫자를 클램핑하고, 만약 255보다 크다면 255로 클램핑하며, 그 외에는 숫자가 변하지 않은 채로 넘겨지는 연산임을 주목하라.
종래 기술의 이들 및 다른 결점과 단점은 본 발명에 의해 다루어지고, 본 발명은 계층적 샘플 캐시를 사용하는 비디오 동작 프로세스 최적화를 위한 방법과 장치에 관한 것이다.
본 발명의 일 양상에 따르면, 비디오 동작 프로세스에 대한 저장 방법이 제공된다. 이 방법은 하나 이상의 레벨을 가지도록 계층적 캐시를 구성하는 단계를 포함하고, 이러한 계층적 캐시의 각 레벨은 비디오 동작 프로세스에 대한 샘플 값들을 계산하는 것과 연관된 계산 계층의 복수의 레벨의 각 레벨에 대응한다. 이 방법은 또한 복수의 계산 계층 중 어느 것에 특정 값이 대응하는지에 기초하여 계층적 캐시의 대응하는 레벨에서 비디오 동작 프로세스에 관련된 샘플에 대한 특정 값을 저장하는 단계를 포함하고, 이것은 상기 특정 값은 상기 계층적 캐시에 존재하지 않는 경우이다.
본 발명의 또다른 양상에 따르면, 비디오 동작 프로세스를 지원하기 위한 장치가 제공된다. 이 장치는 하나 이상의 레벨을 가지도록 구성된 계층적 캐시를 포함하고, 이러한 계층적 캐시의 각 레벨은 비디오 동작 프로세스에 대한 샘플 값들을 계산하는 것과 연관된 계산 계층의 복수의 레벨의 각 레벨에 대응한다. 이 계층적 캐시는 상기 복수의 계산 계층 레벨 중 어느 것에 특정 값이 대응하는지에 기초하여 계층적 캐시의 대응하는 레벨에서 비디오 동작 프로세스에 관련된 샘플에 대한 특정 값을 저장하고, 이것은 상기 특정 값은 상기 계층적 캐시에 존재하지 않는 경우이다.
본 발명의 이들 및 다른 양상, 특징 및 장점은 첨부 도면과 관련하여 읽혀질 다음에 나오는 예시적인 실시예의 상세한 설명으로부터 분명해진다.
본 발명은 다음에 나오는 예시적인 도면에 따라 더 잘 이해될 수 있다.
도 1은 H.264 표준에 따른, 1/4 샘플 휘도 보간에 대한 정수 샘플 위치 및 소수 샘플 위치를 도시하는 도면.
도 2는 본 발명의 일 실시예에 따라 본 발명의 원리가 적용될 수 있는 예시적인 비디오 인코더에 대한 블록도.
도 3은 본 발명의 일 실시예에 따라 본 발명의 원리가 적용될 수 있는 예시적인 비디오 인코더에 대한 블록도.
도 4는 본 발명의 일 실시예에 따라 1/4 화소 휘도 샘플 타입의 위치를 도시하는 1 ×1 블록에 대한 도면.
도 5는 도 4에 도시된 1 ×1 블록에 대한 샘플 타입 중 의존성 관계를 도시하는 블록도.
도 6은 본 발명의 일 실시예에 따른 비디오 동작 프로세스에 대한 샘플을 캐싱하기 위한 예시적인 방법에 대한 흐름도.
본 발명은 계층적 샘플 캐시를 사용하는 비디오 동작 프로세스 최적화를 위한 방법 및 장치에 관한 것이다. 유리하게, 본 발명의 원리에 따른 방법 및 장치는, 예컨대 블록-기반의 동작 보상 및/또는 블록-기반의 동작 추정 프로세스와 같은 비디오 동작 프로세스 동안 수행된 중복 계산을 제거한다.
본 발명은 임의의 특정 비디오 인코딩/디코딩 표준/기술에 제한되지 않고, 따라서 관련 분야의 당업자에 의해 이의 없이 결정되는 것처럼, 임의의 비디오 인코딩/디코딩 표준/기술이 본 발명의 범주를 유지하면서 본 발명의 원리에 따라 이용될 수 있다는 점을 알아야 한다. 본 발명의 원리에 따른 계층적 캐시는 하드웨어 및/또는 소프트웨어로 구현될 수 있다는 점을 또한 알아야 한다. 게다가, 본 발명 의 원리에 따른 계층적 캐시의 구현은 하나 이상의 계층적 캐시를 수반할 수 있다.
이 설명은 본 발명의 원리를 예시한다. 따라서 비록 본 명세서에서 명백히 기술되거나 도시되지 않을지라도, 당업자라면 본 발명의 원리를 구현하고 본 발명의 취지와 범주 내에 포함되는 다양한 배열을 고안할 수 있다는 점을 알게 된다.
본 명세서에서 인용된 모든 예와 조건부 언어는 본 발명의 원리와 더 나아가 관련 분야에 본 발명자에 의해 제공된 개념을 독자가 이해하는 데 도움을 줄 교육상 목적을 위해 의도된 것이고, 그러한 특별히 인용된 예와 상황에 제한되지 않는 것으로 해석된다.
게다가, 본 명세서에서 본 발명의 원리, 양상 및 실시예를 인용하는 모든 서술문은 그 특정 예와 함께, 이들의 구조상 및 기능상 등가물을 망라하는 것으로 의도된다. 추가적으로, 그러한 등가물은 나중에 개발될 등가물, 즉 구조에 관계없이, 동일한 기능을 수행하는 개발된 임의의 요소들과 함께 현재 알려진 등가물 모두를 포함하는 것으로 의도된다.
그러므로, 당업자는 예컨대 본 명세서에 나타난 블록도가 본 발명의 원리를 구현하는 예시적인 회로의 개념도를 나타낸다는 것을 알게 된다. 유사하게, 임의의 흐름 차트, 흐름도, 상태 전이도, 의사코드(pseudocode) 등이 컴퓨터 판독 가능 매체에서 실질적으로 나타날 수 있고 컴퓨터나 프로세서에 의해 실행될 수 있는 다양한 프로세스들을 나타낸다는 것을 알게 되며, 그러한 컴퓨터나 프로세서는 명백히 도시되거나 도시되어 있지 않다.
도면에 도시된 다양한 요소들의 기능은 적절한 소프트웨어와 연관되어 소프 트웨어를 실행할 수 있는 하드웨어와 마찬가지로 전용 하드웨어의 사용을 통해 제공될 수 있다. 프로세서에 의해 제공될 때, 그 기능은 단일 전용 프로세서, 단일의 공유된 프로세서 또는 복수의 개별 프로세서들에 의해 제공될 수 있으며, 그들 중 일부는 공유될 수 있다. 또한, "프로세서" 또는 "제어기"라는 용어의 명백한 사용은 소프트웨어를 실행할 수 있는 하드웨어를 배타적으로 가리키는 것으로 해석되어서는 안 되고, 제한 없이 암묵적으로 디지털 신호 프로세서("DSP") 하드웨어, 소프트웨어를 저장하기 위한 읽기 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 및 비휘발성 저장 장치(storage)를 포함할 수 있다.
종래의 및/또는 주문형 다른 하드웨어 또한 포함될 수 있다. 유사하게, 도면에 도시된 임의의 스위치는 단지 개념상의 것이다. 그것들의 기능은 프로그램 로직의 동작을 통해, 전용 로직을 통해, 프로그램 제어와 전용 로직의 상호작용을 통해 수행될 수 있거나 심지어 수동적으로는 수행될 수 있으며, 그 특정 기술이 상황으로부터 더 특별히 이해되는 것처럼 구현자에 의해 선택 가능하다.
청구항에서는 구체적으로 명시된 기능을 수행하기 위한 수단으로서 표현된 임의의 요소는, 예컨대 a) 그 기능을 수행하는 회로 요소의 조합, 또는 b) 그 기능을 수행하기 위해 소프트웨어를 실행하기 위한 적절한 회로와 결합된 펌웨어, 마이크로코드 등을 포함하는 임의의 형태로 된 소프트웨어를 포함하여 그 기능을 수행하는 임의의 방식을 망라하는 것으로 의도된다. 그러한 청구항에 의해 한정된 본 발명은 다양한 열거된 수단에 의해 제공된 기능성들이 청구항이 요구하는 방식으로 조합되고 결합된다는 사실에 존재한다. 그러므로 이들 기능성을 제공할 수 있는 임 의의 수단은 본 명세서에 도시된 것들과 등가인 것으로 간주된다.
도 2를 참조하면, 예시적인 비디오 인코더가 일반적으로 참조 번호 200으로 표시되어 있다. 비디오 인코더(200)로의 입력은 가산부(summing junction)(210)의 비반전 입력과의 신호 교환을 위해 연결된다. 가산부(210)의 출력은 트랜스포머/양자화기(quantizer)(220)와의 신호 교환을 위해 연결된다. 트랜스포머/양자화기(220)의 출력은 엔트로피 코더(entropy coder)(240)와의 신호 교환을 위해 연결된다. 엔트로피 코더(240)의 출력은 인코더(200)의 출력으로서 이용 가능하다.
트랜스포머/양자화기(220)의 출력은 또한 역 트랜스포머/양자화기(250)와 신호 교환을 위해 연결된다. 역 트랜스포머/양자화기(250)의 출력은 디블록(deblock) 필터(260)의 입력과 신호 교환을 위해 연결된다. 디블록 필터(260)의 출력은 참조 화상 저장 장치(reference picture stores)(270)와 신호 교환을 위해 연결된다. 참조 화상 저장 장치(270)의 제 1 출력은 동작 추정기(280)의 제 1 입력과 신호 교환을 위해 연결된다. 인코더(200)로의 입력은 또한 동작 추정기(280)의 제 2 입력과 신호 교환을 위해 연결된다. 동작 추정기(280)의 출력은 동작 보상기(290)의 제 1 입력과 신호 교환을 위해 연결된다. 참조 화상 저장 장치(270)의 제 2 출력은 동작 보상기(290)의 제 2 입력과 신호 교환을 위해 연결된다. 동작 보상기(290)의 출력은 가산부(210)의 반전 입력과 신호 교환을 위해 연결된다.
본 실시예와 연관된 원리에 따르면, 계층적 캐시(277A)가 동작 보상기(290)에 제공되고, 계층적 캐시(277b)가 동작 추정기(280)에 제공된다. 개별 캐시들이 동작 보상기(290)와 동작 추정기(280)에 포함되는 것으로 도시되는데 반해, 다른 실시예에서는, 단일 캐시가 동작 보상기(290)와 동작 추정기(280) 모두에 의해 이용될 수 있거나, 2개 이상의 캐시가 동작 보상기(290) 및/또는 동작 추정기(290)에서 사용될 수 있다는 점을 알아야 한다. 즉, 본 명세서에 제공된 본 발명의 가르침을 가정하면, 당업자가 본 발명의 범주를 유지하면서 블록-기반의 동작 추정 및/또는 동작 보상 프로세스들에 대해 사용하기 위한 계층적 캐시 시스템의 이들 및 다양한 다른 구성들을 예측하게 된다.
도 3을 참조하면, 예시적인 비디오 디코더가 일반적으로 참조 번호(300)로 표시되어 있다. 비디오 디코더(300)는 비디오 시퀀스를 수신하기 위한 엔트로피 디코더(310)를 포함한다. 엔트로피 디코더(310)의 제 1 출력은 역 양자화기/트랜스포머(320)의 입력과 신호 교환을 위해 연결된다. 역 양자화기/트랜스포머(320)의 출력은 가산부(340)의 제 1 입력과 신호 교환을 위해 연결된다.
가산부(340)의 출력은 디블록 필터(390)와 신호 교환을 위해 연결된다. 디블록 필터(390)의 출력은 참조 화상 저장 장치(350)와 신호 교환을 위해 연결된다. 참조 화상 저장 장치(350)는 동작 보상기(360)의 제 1 입력과 신호 교환을 위해 연결된다. 동작 보상기(360)의 출력은 가산부(340)의 제 2 입력과 신호 교환을 위해 연결된다. 엔트로피 디코더(310)의 제 2 출력은 동작 보상기(360)의 제 2 입력과 신호 교환을 위해 연결된다. 디블록 필터(390)의 출력은 비디오 디코더(300)의 출력으로서 이용 가능하다.
본 실시예와 연관된 원리에 따르면, 동작 보상기(360)에는 계층적 캐시(377A)가 제공된다. 단일 캐시가 동작 보상기(360)에 포함된 것으로 도시되는 데 반해, 다른 실시예에서는 2개 이상의 캐시가 동작 보상기(360)에 포함될 수 있다는 점을 알아야 한다. 즉, 본 명세서에 제공된 본 발명의 주어진 가르침을 가정하면 당업자가 본 발명의 범주를 유지하면서, 블록-기반의 동작 추정 및/또는 동작 보상 프로세스를 위해 사용하기 위한 계층적 캐시 시스템의 이들 및 다양한 다른 구성을 예측하게 된다.
위에서 주목된 것처럼, 계층적 샘플 캐시를 사용하는 블록 기반의 비디오 동작 추정/보상 최적화를 위한 방법 및 장치가 제공된다. 유리하게, 블록 기반의 비디오 동작 보상 및/또는 동작 추정 프로세스에 실행시간에서의 중복 계산의 개수는 본 발명의 원리의 가르침에 따라 감소될 수 있다.
전술한 바와 같이, 블록 기반의 동작 보상/추정에서, 보간된 샘플의 계산은 다른 소스 샘플에 의존한다. 이들 소스 샘플은 성질상 중간 단계의 것일 수 있고, 만약 그렇다면 최종 결과 샘플이 계산될 수 있기 전에 계산된다. 그러므로, 결과 샘플들 사이의 계층적 관계가 존재한다.
예컨대, H.264 비디오 표준에서, 결과 휘도 샘플은 6-탭(six tap)의 유한 임펄스 응답(FIR: Finite Impulse Response) 필터를 참조 프레임에 포함된 수평 또는 수직으로 인접한 휘도 샘플에 적용함으로써 계산될 수 있다. 1, -5, 20, 20, -5, 1인 계수들을 가지고, 이 FIR 필터는 4개의 곱셈 연산과 5개의 덧셈 연산을 사용한다. 이러한 설명은 그것들이 엄밀한 FIR 필터의 부분이 아니기 때문에, 반올림(rounding) 및 자리 옮김(shifting) 연산을 설명하지 않는다는 점이 주목되어야 한다. 그러므로, FIR 필터는 비교적 복잡한(값비싼) 보간 메커니즘이다. 따라서, 이러한 FIR 필터의 중복 사용의 제거는 성능을 개선시킨다. 추가적으로, 이 FIR 필터로의 입력들이 그들 자체가 중간 단계의 샘플인 경우가 존재하고, 이 FIR 필터로의 각 입력은 이 FIR 필터 또는 또다른 FIR 필터의 출력이 된다. 이는 한 자리수(an order of magnitude: 10배)만큼 크게 복잡도를 증가시키고, 샘플에 대한 (가능하게는) 6개의 상이한 필터 적용의 출력을 필터링한다. 이 최종 FIR 필터로 공급된 6개의 샘플 각각이 계산되어야 했다면, 총 28개의 곱셈 연산과 35개의 덧셈 연산이 있게 된다. 그러므로, 이러한 2중 필터링을 수반하는 중복 계산을 제거함으로써, 훨씬 더 큰 성능 이득이 실현된다.
그러므로, 도 1을 다시 참조하면, 보간된 휘도 샘플들 사이에는 계층적 관계가 존재하는 것을 볼 수 있다. b와 h로 표현된 샘플들(각각 s와 m을 포함한다)은 참조 프레임으로부터 오는 정수 위치에서 휘도 샘플에 의존한다. j로 표현된 샘플은 b 또는 h로 표현된 타입의 (6개의) 샘플에 의존한다. a와 c로 표현된 샘플은 b로 표현된 샘플과 정수 위치의 샘플에 의존한다. d와 n으로 표현된 샘플은 h로 표현된 샘플과 정수 위치의 샘플에 의존한다. f, i, k, q로 표현된 샘플은 각각 b, h, m, s로 표현된 샘플과 j로 표현된 샘플에 의존한다. 마지막으로, e, g, p, r로 표현된 샘플은 j로 표현된 샘플과, 각각 G, H, M, N으로 표현된 정수 위치의 샘플에 의존한다.
이들 관계는 계층의 층(tier)들이다. 참조 목적상, 이들 층들에는 이름이 주어진다. 도 4를 참조하면, 1/4 화소 휘도 샘플 타입의 위치를 보여주는 1 ×1 블록은 일반적으로 참조 번호 400으로 표시되어 있다. 알파(Alpha)라고 표시된 위치는 참조 프레임에서 발견된 정수 위치의 샘플이다. 위치 좌표의 소수 부분은 괄호안에 있다. 정수 위치의 샘플(참조 프레임으로부터 오는)은 알파 샘플이라고 부른다. b와 h로 표현된 샘플들은 베타(beta) 샘플이라고 부른다. a, c, d, n으로 표현된 샘플은 감마(gamma) 샘플이라고 부른다. e, g, p, r로 표현된 샘플은 델타(delta) 샘플이라고 부른다. j로 표현된 샘플들은 엡실론(epsilon) 샘플이라고 부른다. 마지막으로, f, i, k, q로 표현된 샘플들은 제타(zeta) 샘플이라고 부른다. 캐시 서브레벨(sublevel)은 보유하는 샘플의 타입에 의해 이름이 주어질 수 있는데, 즉 베타 서브-캐시(sub-cache)는 베타 샘플을 보유한다. 각 레벨의 상대적인 계산상 비용은 베타 샘플들로부터 제타 샘플들까지 증가한다. "서브-캐시"와 "레벨(level)"(계층적 캐시에서의 레벨에 있는)이라는 용어는 본 명세서에서 상호 교환 가능하게 사용된다는 점을 알아야 한다.
위에서 추론될 수 있는 것처럼, 베타 샘플은 2개의 알파 샘플들로부터 유도되고, 감마 샘플은 1개의 알파 샘플과 1개의 베타 샘플로부터 유도되며, 델타 샘플은 2개의 베타 샘플로부터 유도되고, 엡실론 샘플은 6개의 베타 샘플로부터 유도되며, 제타 샘플은 1개의 엡실론 샘플과 1개의 베타 샘플로부터 유도된다. 도 5를 참조하면, 도 4에 도시된 1 ×1 블록에 대한 샘플 타입들 사이의 의존 관계는 일반적으로 참조 번호 500으로 표시된다.
본 실시예와 연관된 방식(scheme) 내에 또다른 분석이 사용된다. 베타 서브-캐시(또는 베타 레벨)은 상이한 소수 좌표를 지닌 2개의 멤버를 가진다. 마찬가지로, 감마, 델타, 제타 레벨은 각각 4개의 샘플을 가진다. 동일한 타입의 샘플들을 구별하기 위해, 소수 좌표가 불러내 진다. 예컨대, 베타 샘플은 베타(.50,.00)와 베타(.00,.50)라고 부를 수 있다.
계층적 캐시는 특정 샘플에 대한 보간 프로세스로부터의 중간 결과를 저장하고, 필요할 때 이들 결과를 되돌려보내며, 그러한 샘플을 계산하기 위해 필수적인 계산들 중 일부를 다시 수행해야 하는 비용을 절감함으로써, 이들 관계를 이용할 수 있다. 예컨대(다시 도 1을 참조하면), 감마(.25,.00) 샘플인 샘플 a는 이용 가능한(참조 프레임으로부터의 픽셀과 마찬가지로) 베타 샘플(.50,.00)인 샘플 b에 의존한다. 샘플 a가 필요하고, 캐시의 감마(.25,.00) 레벨에 있지 않다면, 샘플 a가 계산되고 캐시에 더해져야 한다. a를 계산하는 부분으로서 b가 필요하다. b가 베타(.50,.00) 캐시에 있다면, 베타(.50,.00) 캐시는 b를 보내어, a의 계산 속도를 높인다. b가 베타(.50,.00) 캐시에 있지 않다면, b는 계산되고 그 캐시에 놓인 다음 보내져서 a가 계산될 수 있다. a가 계산될 때는 감마(.25,.00) 레벨에서 캐싱된다.
이제, 본 발명의 원리의 다양한 예시적인 실시예에 따른 정적 캐시와 동적 캐시에 관한 설명이 주어진다.
H.264 표준을 수반하는 본 발명의 원리의 일 실시예에서는, 그 캐시에 가능한 총 15개의 레벨(서브-캐시들)이 존재하는데, 이들은 2개의 베타, 4개의 델타, 4개의 감마, 1개의 엡실론, 4개의 제타 레벨이다. 계층적 샘플 캐시는 모두 15개의 레벨을 포함하거나 포함하지 않을 수 있다. 예컨대, 1개의 캐시는 그 안에 구현된 베타 및 엡실론 서브-캐시만을 가질 수 있다. 유사하게, 1개의 캐시는 주어진 층의 모든 레벨을 포함하지 않을 수 있는데, 즉 1개의 캐시는 제타(.25,.50) 및 제타(.50,.25) 서브 캐시만을 가질 수 있고 4개의 제타 서브타입 모두를 가지지는 않을 수 있다. 샘플 캐시를 이용하는데 있어서 메모리와 계산 오버헤드(overhead)가 존재하므로, 이는 메모리와 계산 자원의 이용이 특정 디코딩 환경에 대해 가장 효율적으로 이용되는 것을 허용한다. 다량의 이용 가능한 메모리가 더 많은 서브 캐시의 사용을 제공할 수 있다. 메모리가 값비싼 경우에는 아마도 1개 또는 2개의 서브 캐시만이 사용된다. 게다가, 15개의 레벨 중 하나 이상이 서브 캐시가 아닌 단독(stand-alone) 캐시로서 구현될 수 있다는 점을 알아야 한다. 본 명세서에 제공된 본 발명의 원리의 가르침이 주어지면, 당업자에 의해 본 발명의 원리의 이들 및 다양한 다른 구현예와 구성예가 예측된다.
본 발명의 원리에 따른 정적 캐시는 계층의 레벨이 고정되는 것이다. 샘플 캐싱에 이용 가능한 특정 인코딩 및/또는 디코딩 환경에서의 자원이 상당히 엄밀하게 남아 있다면, 그 정적 캐시는 그 시스템에 대해 어떠한 추가적인 서브-캐시 관리 오버헤드를 부과하지 않는다. 본 발명의 원리에 따른 동적 캐시는 서브-캐시가 추가되거나 제거될 수 있는 것이다. 서브-캐시의 추가 및/또는 제거는 그 캐시 외부에서 평가된 기준에 의해 결정될 수 있다. 동적 캐시는 자원의 변하는 이용 가능성을 사용하고 그것에 적응될 수 있다. 더 많은 메모리 및/또는 계산 능력이 이용 가능하게 됨에 따라, 서브 캐시가 더해질 수 있다. 반대로, 이들 자원이 축소됨에 따라, 서브 캐시가 제거될 수 있어 전체적으로 캐시의 수요를 감소시킨다. 자원은 서브-캐시 관리 결정이 이루어지는 유일한 기준이 아니다. 예컨대, 충분한 복잡도 를 지닌 인코더 및/또는 디코더는 모든 보간이 1/2 화소 좌표 위에서 수행된다는 것을 찾을 수(통지될 수) 있다. 이는 베타 샘플과 엡실론 샘플만이 사용되어, 베타 서브 캐시와 엡실론 서브 캐시를 사용하기에 실용적인 유일한 레벨로 만드는 것을 의미한다(도 4에서의 베타 샘플과 엡실론 샘플의 위치를 가리킨다).
이제 본 발명의 원리의 예시적인 일 실시예에 따른 캐시 콘텐츠에 관한 설명이 주어진다.
캐시는 특정 비디오 디코더 사양을 위한 블록-기반의 동작 보상 프로세스에 의해 규정된 메커니즘을 통해 참조 콘텐츠로부터 보간된 휘도 샘플의 배열이다. 이들 동작은 보통 상대적으로 고가이다. 캐시는 그것들의 중복 계산을 회피하기 위해 이들 값들을 보유한다. 샘플이 캐시에 저장되는 정밀도는 최종 결과의 정밀도가 아닐 수 있다. 예컨대, H.264 디코딩에서 샘플 캐시는 한 세트의 입력 샘플에 6-탭 필터를 적용함으로써 계산된 휘도 값을 보유한다. H.264에서의 휘도 샘플은 종종 8비트이다. 엡실론 샘플의 계산에서는, 7개의 6-탭 필터 적용이 이루어진다. 처음 6개는 베타 샘플의 열(또는 행)을 만들기 위해 참조 프레임으로부터 6개의 알파 샘플의 6개의 행(또는 열)에 대해 수행된다. 이들 6개의 입력 베타 샘플은 반올림 되지 않고, 8비트 정밀도로 클리핑되지만, 일곱 번째 6-탭 적용이 그것들에 대해 수행될 때에는 오히려 그것들의 본래 정밀도로 유지된다. 이후 이 최종 필터 적용의 결과는 반올림 되고 클리핑되어 엡실론 샘플을 만들어낸다. (이 프로세스는 위 H.264 규격 발췌문에 표시되어 있다). 이러한 더 높은 중간 정밀도에서 그것의 샘플을 보유한 베타 서브-캐시는 필수적인데, 이는 최종 정밀도로 반올림 되고 클리 핑된 샘플이 엡실론 샘플을 계산하기 위해 사용될 수 없기 때문이다. 하지만, 디코더가 엡실론 샘플이 결코 만들어질 수 없다(따라서 제타 샘플도 만들어질 수 없다)는 사실을 알 수 있게 된다면, 베타 서브-캐시가 중간 정밀도 샘플을 보유할 필요가 없게 되고, 베타 서브-캐시는 최종 (더 작은) 정밀도에서 샘플을 보유할 수 있게 되고, 아마도 메모리 요구 사항을 줄이게 된다.
이제 본 발명의 예시적인 실시예에 따른, 캐시 액세스에 관한 설명이 주어진다.
블록-기반의 동작 보상에서, 동작 벡터는 그 블록의 현재 위치에 관련되어 디코딩되는 블록의 이전 위치를 설명한다. 동작 벡터는 원하는 샘플에 대한 참조 위치를 만들어내기 위해 현재 블록의 위치에 더해진다. 캐시 액세스는 그 위치에 의해 이루어진다. (X.x, Y.y)(여기서 X와 Y는 좌표의 정수 위치를 표시하고, x와 y는 소수 부분을 표시한다)에서의 샘플은 샘플 캐시에서 별개의 위치를 가진다. 좌표의 소수 부분(x, y)은 어느 서브-캐시가 그 샘플을 보유하는지를 결정한다(도 4 참조). 참조 위치(10.50, 8.00)에서의 샘플은 타입 베타(.50,.00)의 샘플이고 이용 가능하다면 그 서브 캐시에 있게 된다. 좌표의 정수 부분(X, Y)은 그 서브 캐시 내의 샘플의 위치를 준다. 샘플이 요구될 때는 언제나 그것의 참조 위치가 그 캐시에 주어지고, 그 캐시는 결과를 되돌려 보내거나 그 샘플이 그 캐시에 있지 않음을 표시한다.
본 발명의 원리에 따라 캐시의 사용에 의해 영향을 받을 수 있는 가능한 파라미터들은, 메모리 자원(주 메모리 대역폭 사용, 주 메모리 크기 사용, 코드 크 기, 및 만약 있다면 프로세서 캐시에 대한 영향의 점에서)과 캐시를 구현하는 코드에 의해 소비된 계산상 대역폭(CPU 시간)을 포함/수반한다. 그러한 캐시를 이용하는 애플리케이션에 의해 요구된 메모리 사용이 실행-시간(run-time)(동적인)이나 구축-시간(build-time)(정적인)에서 조절될 수 있도록 성능 이득을 보기 위해, 계층의 모든 레벨이 구현될 필요는 없다는 것을 알아야 한다. 게다가, 증가된 자원 사용을 희생하여, 성능을 더 증가시키기 위해 애플리케이션에 의해 다수의 캐시가 사용될 수 있다. 당업자라면 본 명세서에 제공된 본 발명의 가르침을 가정하면 본 발명의 범주를 유지하면서, 블록 기반의 동작 보상/추정에 대한 계층적 캐시의 이들 및 다양한 다른 구현예와 구성예를 예측하게 된다.
도 6을 참조하면, 비디오 동작 프로세스에 대한 샘플을 캐싱하기 위한 방법이 일반적으로 참조 번호(600)로 표시되어 있다. 비디오 동작 프로세스는, 예컨대 블록-기반의 동작 보상 프로세스 및/또는 블록 기반의 동작 추정 프로세스일 수 있다.
방법(600)은 결정 블록(610)에 제어를 넘기는 시작 블록(605)을 포함한다. 결정 블록(610)은 동적인 계층 레벨 선택이 구현되었는지 여부를 결정한다. 만약 그렇다면, 제어는 기능 블록(615)으로 넘어간다. 그렇지 않으면, 제어는 기능 블록(625)으로 넘어간다.
기능 블록(615)은 캐시 계층의 어느 레벨을 인에이블할지를 선택하는 하나 이상의 입력을 수신하고, 제어를 기능 블록(620)으로 넘긴다. 기능 블록(620)은 기능 블록(615)에 의해 수신된 하나 이상의 입력에 의해 동적으로 한정된 레벨을 가 지는 계층적 캐시를 생성하고, 제어를 기능 블록(622)에 넘긴다.
기능 블록(625)은 정적으로 한정된 계층적 캐시를 생성하고, 제어를 기능 블록(622)에 넘긴다.
기능 블록(622)은 계층적 캐시가 각 레벨이 비디오 동작 프로세스에 대한 샘플 값을 계산하는 것과 연관된 계산 계층의 복수의 레벨의 각 레벨에 대응하는 하나 이상의 레벨을 가지도록 구성하고, 제어를 기능 블록(630)에 넘긴다. 즉, 계층적 캐시는 캐시의 레벨이 관련되거나 그렇지 않으면 비디오 동작 프로세스의 결과 샘플들 사이의 계층적 관계에서의 레벨과 상호 관련되도록 생성된다. 기능 블록(622)에 의해 수행된 구성 기능이 기능 블록(620, 625)의 생성 기능과는 별개인 것으로 도시되어 있는데 반해, 구성 기능은 생성 기능의 부분인 것으로 간주될 수 있다는 점을 알아야 한다.
기능 블록(630)은 캐시를 어떠한 샘플도 저장되지 않은 빈 상태로 초기화하고, 제어를 결정 블록(635)에 넘긴다.
결정 블록(635)은 특정 샘플이 비디오 동작 프로세스에서 필요한지를 결정한다. 만약 그렇다면, 제어는 결정 블록(640)으로 넘어간다. 그렇지 않으면, 제어는 기능 블록(635)으로 되돌아간다.
결정 블록(640)은 특정 샘플이 이전에 계산되고 캐싱되었는지를 결정하기 위해, 캐시의 적합한 레벨을 검사한다. 만약 그렇다면, 제어는 기능 블록(645)으로 넘어간다. 그렇지 않으면, 제어는 기능 블록(650)으로 넘어간다.
기능 블록(645)은 캐시로부터 특정 샘플을 검색하고, 제어를 결정 블록(660) 으로 넘긴다. 특정 샘플이 참조 프레임에 대응하는 위치의 정수 부분과 소수 부분에 기초하여 캐시로부터 검색될 수 있음을 알아야 한다.
기능 블록(650)은 특정 샘플(하나 이상의 중간 샘플을 계산하고 캐싱하는 것을 필요로 할 수 있는)을 계산하고 제어를 기능 블록(655)으로 넘긴다. 기능 블록(650)은 대응하는 최종 샘플보다 더 높은 정밀도로 중간 샘플을 캐싱할 수 있다는 것을 알아야 한다. 예컨대, 중간 샘플은 최종 샘플보다 더 높은 해상도, 더 높은 프레임 속도 및/또는 더 높은 비트 속도로 저장될 수 있다. 기능 블록(655)은 기능 블록(650)에 의해 계산된 특정 샘플을 캐시에 더하고, 제어를 결정 블록(660)에 넘긴다.
결정 블록(660)은 캐시가 (여전히) 필요한지 여부를 결정하고, 만약 필요하다면 제어를 기능 블록(635)에 되돌려 보낸다. 필요하지 않다면, 제어는 기능 블록(665)으로 넘어간다. 기능 블록(665)은 캐시를 파괴하고(예컨대, 캐시에 의해 소비된/이용된 메모리 자원을 해제하는 것 등) 제어를 종료 블록(670)에 넘긴다.
또한 블록 기반의 동작 보상/추정 프로세스의 결과 샘플들 사이의 계층적 관계를 지닌 계층적 캐시의 레벨들 사이의 상관에 관해, 일 예가 예시적인 목적으로 설명된다. 예컨대, H.264 표준에서는 소수 좌표가 0.5인 요구된 샘플은 소수 좌표가 0.0인 샘플로부터 보간되어야 한다. 소수 좌표가 0.25 또는 0.75인 요구된 샘플은 소수 좌표가 0.5인 적어도 하나의 샘플로부터 보간되어야 한다. H.264 표준의 섹션 8.4.2.2.1은 표준 관계를 설명한다. 당업자라면 본 명세서에 제공된 본 발명의 원리의 가르침을 가정하면, 본 발명의 범주를 유지하면서, 계층적 캐시의 레벨 이 관련되거나 그렇지 않으면 블록 기반의 동작 보상/추정 프로세스의 결과 샘플과 상관되는 이러한 방식 및 다른 방식을 예측하게 된다.
또한, 캐시의 구성에 관해서는 그러한 구성이 캐시의 계층을 구성하는 것, 블록 기반의 동작 보상 및/또는 추정 프로세스 자체를 구성하는 것, 동작 보상 및/또는 추정 프로세스의 적어도 일부 동작을 위해 캐시를 사용하도록 본 발명의 원리가 구현되는 시스템의 메모리 계층을 구성하는 것 등을 수반할 수 있다. 그 세부 내용은 당업자에 의해 즉시 결정되고, 따라서 간결하게 하기 위해 본 명세서에서는 생략된다.
이제 본 발명의 많은 부수적인 장점/특징의 일부에 대한 설명이 주어지고, 그들 중 일부는 위에서 언급되었다. 예컨대, 한 가지 장점/특징은 비디오 동작 프로세스에 대한 저장 방법으로서, 이 저장 방법은 계층적 캐시가 하나 이상의 레벨을 가지도록 구성하는 단계를 포함하고, 이 경우 계층적 캐시의 각 레벨은 비디오 동작 프로세스에 대한 샘플 값을 계산하는 것과 연관된 계산 계층의 복수의 레벨의 각 레벨에 대응한다. 이 저장 방법은 또한 복수의 계산 계층 레벨 중 어느 것에 특정 값이 대응하는지에 기초하여 계층적 캐시의 대응하는 레벨에서 비디오 동작 프로세스에 관련된 샘플에 대한 특정 값을 저장하고, 이것은 그 특정 값은 상기 계층적 캐시에 존재하지 않는 경우이다. 또다른 장점/특징은 전술한 바와 같은 저장 방법으로서, 이 경우 비디오 동작 프로세스는 블록 기반의 동작 보상 프로세스를 포함한다. 게다가, 또다른 장점/특징은 전술한 바와 같은 저장 방법이고, 이 경우 이 방법은 계층적 캐시의 대응하는 레벨로부터 그 샘플에 대한 특정 값을 검색하는 단 계를 포함하며, 이 경우 그 특정 샘플은 계층적 캐시에 존재한다. 또한 또다른 장점/특징은 전술한 바와 같은 저장 방법으로서, 이 방법은 또한 계산 계층의 복수의 레벨 중 어느 레벨에 중간값이 대응하는지에 기초하여 계층적 캐시의 대응하는 레벨에서 샘플에 대한 특정 값을 계산할 때 다음 사용을 위한 샘플에 대한 중간값을 저장하는 단계를 포함하고, 이 경우 상기 중간값은 계층적 캐시에서 존재하지 않는다. 또한, 또다른 장점/특징은 전술한 바와 같이 샘플에 대한 중간값을 저장하는 저장 방법으로서, 이 경우 특정 값은 그 샘플에 대한 최종 값이고, 중간값은 특정 값보다 높은 정밀도로 저장된다. 추가로, 또다른 장점/특징은 그 샘플에 대한 중간값을 저장하는 저장 방법이며, 여기서 그 특정 값이 전술한 바와 같은 샘플에 대한 최종 값이고, 더 높은 정밀도는 최종 샘플보다 더 높은 해상도, 더 높은 프레임 속도, 및 더 높은 비트 속도 중 적어도 하나에 관련된다. 게다가, 또다른 장점/특징은 전술한 바와 같은 저장 방법으로서, 이 경우 구성 단계는 계층적 캐시의 하나 이상의 레벨이 고정되도록, 계층적 캐시가 정적으로 한정된 계층을 가지도록 구성한다. 또한, 또다른 장점/특징은 전술한 바와 같은 저장 방법으로서, 이 경우 구성 단계는 이미 존재하는 하나 이상의 레벨 중 임의의 레벨이 제거될 수 있고 하나 이상의 새로운 레벨이 더해질 수 있도록 동적으로 한정된 계층을 계층적 캐시가 가지도록 구성한다. 또한, 또다른 장점/특징은 계층적 캐시가 전술한 바와 같은 동적으로 한정된 계층을 가지도록 구성하는 저장 방법으로서, 이 경우 특정 레벨의 동적으로 한정된 계층이 사용자 입력에 응답하여 동적으로 인에이블된다. 추가적으로, 또다른 장점/특징은 전술한 바와 같은 저장 방법으로서, 이 경우 그 방법은 비디오 동작 프로세스의 현재 실행을 위해 계층적 캐시의 하나 이상의 레벨 중 어느 레벨이 인에이블 될지에 관련하여 하나 이상의 사용자 입력을 수신하는 단계를 또한 포함한다. 게다가, 또다른 장점/특징은 전술한 바와 같은 저장 방법으로서, 이 경우 그 방법은 비디오 동작 프로세스용으로 사용된 참조 프레임에 대응하는 위치의 정수 부분과 소수 부분에 기초하여 계층적 캐시를 액세스하는 단계를 또한 포함한다. 또한, 또다른 장점/특징은 전술한 바와 같은 저장 방법으로서, 이 경우 그 계층적 캐시는 소프트웨어로 구현된다.
본 발명의 이들 및 다른 특징과 장점은, 당업자에 의해 본 명세서에서의 가르침에 기초하여 쉽게 확인될 수 있다. 본 발명의 가르침은 다양한 형태의 하드웨어, 소프트웨어, 펌웨어, 특별한 목적의 프로세서 또는 이들의 조합으로 구현될 수 있음이 이해되어야 한다.
가장 바람직하게는, 본 발명이 가르침이 하드웨어와 소프트웨어의 조합으로서 구현된다. 게다가, 그러한 소프트웨어는 프로그램 저장 유닛에 명백히 구현된 응용 프로그램으로서 구현될 수 있다. 그 응용 프로그램은, 임의의 적합한 아키텍처를 포함하는 기계로 업로드되고 그러한 기계에 의해 실행될 수 있다. 바람직하게, 그 기계는 하나 이상의 중앙 처리 유닛(CPU), 랜덤 액세스 메모리(RAM), 입력/출력(I/O) 인터페이스와 같은 하드웨어를 가지는 컴퓨터 플랫폼 위에 구현된다. 이 컴퓨터 플랫폼은 또한 운영 시스템과 마이크로인스트럭션 코드를 포함할 수 있다. 본 명세서에서 설명된 다양한 프로세스와 기능은, CPU에 의해 실행될 수 있는 마이크로인스트럭션 코드의 부분 또는 응용 프로그램의 부분, 또는 그것들의 임의의 조 합일 수 있다. 또한, 추가 데이터 저장 유닛과 프린팅 유닛과 같은 다양한 다른 주변 유닛이 컴퓨터 플랫폼에 연결될 수 있다.
첨부 도면에 도시된 시스템을 구성하는 성분과 방법의 일부는 바람직하게는 소프트웨어로 구현되기 때문에, 시스템 구성 성분 또는 프로세스 기능 블록 사이의 실제 연결은, 본 발명이 프로그래밍되는 방식에 따라 상이할 수 있다는 점이 또한 이해되어야 한다. 본 명세서에서의 가르침을 가정하면, 당업자는 본 발명의 이들 및 유사한 구성예 또는 구현예를 예측할 수 있다.
비록 예시적인 실시예가 본 명세서에서 첨부 도면을 참조하여 설명되었지만, 본 발명은 이들 정밀한 실시예에 제한되지 않고, 본 발명의 범주 또는 취지를 벗어나지 않으면서 당업자에 의해 다양한 변경예와 수정예가 실행될 수 있음이 이해되어야 한다. 모든 그러한 변경예와 수정예는 첨부된 청구항에 전개된 것처럼, 본 발명의 범주 내에 포함되는 것으로 의도된다.
전술한 바와 같이, 본 발명은 비디오 인코딩 및 디코딩, 특히 계층적 샘플 캐시를 사용하는 비디오 동작 처리 최적화를 위한 방법 및 장치에 이용 가능하다.

Claims (23)

  1. 비디오 동작 프로세스용 저장 방법으로서,
    하나 이상의 레벨을 가지도록 계층적 캐시를 구성하는 단계(622)로서, 상기 계층적 캐시의 레벨 각각은 상기 비디오 동작 프로세스에 대한 샘플 값을 계산하는 것과 연관된 계산 계층의 복수의 레벨 중의 각 레벨에 대응하는, 계층적 캐시 구성 단계와,
    계층적 캐시의 대응하는 레벨에서, 상기 비디오 동작 프로세스에 관련된 샘플에 대한 특정 값이 상기 계층적 캐시에 존재하지 않는 경우, 상기 특정 값이 상기 복수의 계산 계층 레벨 중 어느 것에 대응하는지에 기초하여 상기 특정 값을 저장하는 단계(655)를,
    포함하는, 비디오 동작 프로세스용 저장 방법.
  2. 제 1항에 있어서, 상기 비디오 동작 프로세스는 블록-기반의 동작 보상 프로세스를 포함하는, 비디오 동작 프로세스용 저장 방법.
  3. 제 1항에 있어서, 상기 특정 샘플이 상기 계층적 캐시에 존재할 때, 상기 계층적 캐시의 대응하는 레벨로부터 샘플에 대한 특정 값을 검색하는 단계(645)를 더 포함하는, 비디오 동작 프로세스용 저장 방법.
  4. 제 1항에 있어서, 샘플에 대한 중간값이 계층적 캐시에서 존재하지 않는 경우, 계산 계층의 복수의 레벨 중 어느 레벨에 중간값이 대응하는지에 기초하여 계층적 캐시의 대응하는 레벨에서 샘플에 대한 특정 값을 계산하는 데 있어, 다음 사용을 위한 샘플에 대한 중간값을 저장하는 단계(650)를 더 포함하는, 비디오 동작 프로세스용 저장 방법.
  5. 제 4항에 있어서, 상기 특정 값은 샘플에 대한 최종 값이고, 상기 중간값은 특정 값보다 높은 정밀도로 저장되는(650), 비디오 동작 프로세스용 저장 방법.
  6. 제 5항에 있어서, 상기 더 높은 정밀도는 최종 샘플보다 더 높은 해상도, 더 높은 프레임 속도, 및 더 높은 비트 속도 중 적어도 하나에 관련되는, 비디오 동작 프로세스용 저장 방법.
  7. 제 1항에 있어서, 상기 구성 단계는 계층적 캐시의 하나 이상의 레벨이 고정되도록 상기 계층적 캐시가 정적으로 한정된 계층을 가지도록 구성하는(625), 비디오 동작 프로세스용 저장 방법.
  8. 제 1항에 있어서, 상기 구성 단계는, 이미 존재하는 하나 이상의 레벨 중 임의의 레벨이 제거될 수 있고 하나 이상의 새로운 레벨이 더해질 수 있도록, 동적으로 한정된 계층을 계층적 캐시가 가지도록 구성하는(620), 비디오 동작 프로세스용 저장 방법.
  9. 제 8항에 있어서, 동적으로 한정된 계층의 특정 레벨은 사용자 입력에 응답하여 동적으로 인에이블되는(620), 비디오 동작 프로세스용 저장 방법.
  10. 제 1항에 있어서, 비디오 동작 프로세스의 현재 실행을 위해 계층적 캐시의 하나 이상의 레벨 중 어느 레벨이 인에이블 될지에 관련하여 하나 이상의 사용자 입력을 수신하는 단계(615)를 더 포함하는, 비디오 동작 프로세스용 저장 방법.
  11. 제 1항에 있어서, 비디오 동작 프로세스용으로 사용된 참조 프레임에 대응하는 위치의 정수 부분과 소수 부분에 기초하여 계층적 캐시를 액세스하는 단계(645)를 더 포함하는, 비디오 동작 프로세스용 저장 방법.
  12. 제 1항에 있어서, 상기 계층적 캐시는 소프트웨어로 구현되는, 비디오 동작 프로세스용 저장 방법.
  13. 비디오 동작 프로세스를 지원하기 위한 장치로서,
    하나 이상의 레벨을 가지도록 구성된 계층적 캐시(277A, 277B, 377)를 포함하고, 상기 계층적 캐시의 각 레벨은 비디오 동작 프로세스에 대한 샘플 값을 계산하는 것과 연관된 계산 계층의 복수의 레벨 중의 각 레벨에 대응하며, 상기 계층적 캐시는, 계층적 캐시의 대응하는 레벨에서 비디오 동작 프로세스에 관련된 샘플에 대한 특정 값이 상기 계층적 캐시에 존재하지 않는 경우, 계산 계층의 복수의 레벨 중 어느 것에 상기 특정 값이 대응하는지에 기초하여 상기 특정 값을 저장하기 위한 것인, 비디오 동작 프로세스를 지원하기 위한 장치.
  14. 제 13항에 있어서, 상기 비디오 동작 프로세스는 블록-기반의 동작 보상 프로세스를 포함하는, 비디오 동작 프로세스를 지원하기 위한 장치.
  15. 제 13항에 있어서, 상기 특정 샘플이 상기 계층적 캐시에 존재할 때, 상기 계층적 캐시(277A, 277B, 377)는 계층적 캐시의 대응하는 레벨로부터 샘플에 대한 특정 값을 검색하는, 비디오 동작 프로세스를 지원하기 위한 장치.
  16. 제 13항에 있어서, 샘플에 대한 중간값이 계층적 캐시에서 존재하지 않는 경우, 상기 계층적 캐시(277A, 277B, 377)는 계산 계층의 복수의 레벨 중 어느 레벨에 상기 중간값이 대응하는지에 기초하여 계층적 캐시의 대응하는 레벨에서 샘플에 대한 특정 값을 계산하는 데 있어 다음 사용을 위해 상기 중간값을 저장하는, 비디오 동작 프로세스를 지원하기 위한 장치.
  17. 제 16항에 있어서, 상기 특정 값은 샘플에 대한 최종 값이고, 상기 중간값은 특정 값보다 높은 정밀도로 저장되는(350), 비디오 동작 프로세스를 지원하기 위한 장치.
  18. 제 17항에 있어서, 상기 더 높은 정밀도는 최종 샘플보다 더 높은 해상도, 더 높은 프레임 속도, 및 더 높은 비트 속도 중 적어도 하나에 관련되는, 비디오 동작 프로세스를 지원하기 위한 장치.
  19. 제 13항에 있어서, 상기 계층적 캐시(277A, 277B, 377)는 계층적 캐시의 하나 이상의 레벨이 고정되도록, 정적으로 한정된 계층을 가지도록 구성되는, 비디오 동작 프로세스를 지원하기 위한 장치.
  20. 제 13항에 있어서, 상기 계층적 캐시(277A, 277B, 377)는, 이미 존재하는 하나 이상의 레벨 중 임의의 레벨이 제거될 수 있고 하나 이상의 새로운 레벨이 더해질 수 있도록, 동적으로 한정된 계층을 가지도록 구성되는, 비디오 동작 프로세스를 지원하기 위한 장치.
  21. 제 20항에 있어서, 동적으로 한정된 계층의 특정 레벨은 사용자 입력에 응답하여 동적으로 인에이블되는, 비디오 동작 프로세스를 지원하기 위한 장치.
  22. 제 13항에 있어서, 상기 계층적 캐시(277A, 277B, 377)는 비디오 동작 프로세스의 현재 실행을 위해 계층적 캐시의 하나 이상의 레벨 중 어느 레벨이 인에이 블 될지에 관련된 하나 이상의 사용자 입력에 기초하도록 구성되는, 비디오 동작 프로세스를 지원하기 위한 장치.
  23. 제 13항에 있어서, 상기 계층적 캐시(277A, 277B, 377)는 비디오 동작 프로세스용으로 사용된 참조 프레임에 대응하는 위치의 정수 부분과 소수 부분에 기초하여 액세스되는, 비디오 동작 프로세스를 지원하기 위한 장치.
KR1020087001969A 2005-07-28 2006-07-27 계층적 캐시를 사용하는 동작 추정 및 보상 KR101293078B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US70320405P 2005-07-28 2005-07-28
US60/703,204 2005-07-28
PCT/US2006/029719 WO2007014378A2 (en) 2005-07-28 2006-07-27 Motion estimation and compensation using a hierarchical cache

Publications (2)

Publication Number Publication Date
KR20080030624A true KR20080030624A (ko) 2008-04-04
KR101293078B1 KR101293078B1 (ko) 2013-08-16

Family

ID=37605745

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087001969A KR101293078B1 (ko) 2005-07-28 2006-07-27 계층적 캐시를 사용하는 동작 추정 및 보상

Country Status (8)

Country Link
US (1) US20090119454A1 (ko)
EP (1) EP1908295A2 (ko)
JP (1) JP5053275B2 (ko)
KR (1) KR101293078B1 (ko)
CN (1) CN101233758A (ko)
BR (1) BRPI0614662A2 (ko)
MX (1) MX2008001286A (ko)
WO (1) WO2007014378A2 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4917709B2 (ja) 2000-03-06 2012-04-18 ローム株式会社 半導体装置
US7272609B1 (en) * 2004-01-12 2007-09-18 Hyperion Solutions Corporation In a distributed hierarchical cache, using a dependency to determine if a version of the first member stored in a database matches the version of the first member returned
US8225043B1 (en) * 2010-01-15 2012-07-17 Ambarella, Inc. High performance caching for motion compensated video decoder
CN102663096B (zh) * 2012-04-11 2015-12-16 北京像素软件科技股份有限公司 一种基于数据缓存技术读取数据的方法
JP6232828B2 (ja) * 2013-08-13 2017-11-22 日本電気株式会社 静止画像提供装置
US10296458B2 (en) * 2017-05-31 2019-05-21 Dell Products L.P. Multi-level cache system in a software application

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5444489A (en) * 1993-02-11 1995-08-22 Georgia Tech Research Corporation Vector quantization video encoder using hierarchical cache memory scheme
JP3846642B2 (ja) * 1994-01-31 2006-11-15 ソニー株式会社 動き量検出方法及び動き量検出装置
US6549575B1 (en) * 1996-11-07 2003-04-15 International Business Machines Corporation. Efficient, flexible motion estimation architecture for real time MPEG2 compliant encoding
JP4131026B2 (ja) * 1998-01-07 2008-08-13 ソニー株式会社 画像処理装置および画像処理方法
US6434196B1 (en) * 1998-04-03 2002-08-13 Sarnoff Corporation Method and apparatus for encoding video information
US6757330B1 (en) * 2000-06-01 2004-06-29 Hewlett-Packard Development Company, L.P. Efficient implementation of half-pixel motion prediction
CA2390954C (en) * 2001-06-19 2010-05-18 Foedero Technologies, Inc. Dynamic multi-level cache manager
US6950469B2 (en) * 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
US7620109B2 (en) * 2002-04-10 2009-11-17 Microsoft Corporation Sub-pixel interpolation in motion estimation and compensation
US7305034B2 (en) * 2002-04-10 2007-12-04 Microsoft Corporation Rounding control for multi-stage interpolation
WO2005104564A1 (ja) * 2004-04-21 2005-11-03 Matsushita Electric Industrial Co., Ltd. 動き補償装置
US20050286777A1 (en) * 2004-06-27 2005-12-29 Roger Kumar Encoding and decoding images
US7873776B2 (en) * 2004-06-30 2011-01-18 Oracle America, Inc. Multiple-core processor with support for multiple virtual processors
US20060050976A1 (en) * 2004-09-09 2006-03-09 Stephen Molloy Caching method and apparatus for video motion compensation
US20060088104A1 (en) * 2004-10-27 2006-04-27 Stephen Molloy Non-integer pixel sharing for video encoding
US20070121728A1 (en) * 2005-05-12 2007-05-31 Kylintv, Inc. Codec for IPTV
US20060285597A1 (en) * 2005-06-20 2006-12-21 Flextronics International Usa, Inc. Reusing interpolated values in advanced video encoders
KR100842557B1 (ko) * 2006-10-20 2008-07-01 삼성전자주식회사 동영상 처리 장치에서 메모리 액세스 방법

Also Published As

Publication number Publication date
US20090119454A1 (en) 2009-05-07
EP1908295A2 (en) 2008-04-09
MX2008001286A (es) 2008-03-25
JP5053275B2 (ja) 2012-10-17
BRPI0614662A2 (pt) 2011-04-12
JP2009504035A (ja) 2009-01-29
WO2007014378A2 (en) 2007-02-01
WO2007014378A3 (en) 2007-05-24
CN101233758A (zh) 2008-07-30
KR101293078B1 (ko) 2013-08-16

Similar Documents

Publication Publication Date Title
KR101293078B1 (ko) 계층적 캐시를 사용하는 동작 추정 및 보상
CN103004210B (zh) 用于视频编码的低复杂度帧内预测
KR102502614B1 (ko) 광학 흐름을 사용한 예측 미세조정을 위한 방법 및 장치
KR102486982B1 (ko) 광학 흐름을 사용한 예측 미세조정을 위한 방법 및 장치
JP2003333603A (ja) コンピュータ実施される方法、システムおよびコンピュータ可読媒体
US9135717B2 (en) Image coding method, image decoding method, image coding apparatus, and image decoding apparatus
US20240037700A1 (en) Apparatus and method for efficient motion estimation
WO2020257629A1 (en) Methods and apparatus for prediction refinement with optical flow
WO2021007557A1 (en) Methods and apparatus on prediction refinement with optical flow
KR102533731B1 (ko) 광 흐름에 의한 예측 개선, 양방향 광 흐름 및 디코더 측 움직임 벡터 개선을 위한 방법들 및 장치들
KR20210078536A (ko) 픽처 인코딩/디코딩 방법, 인코더, 디코더 및 저장 매체
CN111343465A (zh) 电子电路和电子设备
JP6487002B2 (ja) 復号方法および復号装置
Lee Energy efficient processing of motion estimation for embedded multimedia systems

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
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee