KR100937616B1 - 계산적으로 제약된 비디오 인코딩 - Google Patents

계산적으로 제약된 비디오 인코딩 Download PDF

Info

Publication number
KR100937616B1
KR100937616B1 KR1020047020092A KR20047020092A KR100937616B1 KR 100937616 B1 KR100937616 B1 KR 100937616B1 KR 1020047020092 A KR1020047020092 A KR 1020047020092A KR 20047020092 A KR20047020092 A KR 20047020092A KR 100937616 B1 KR100937616 B1 KR 100937616B1
Authority
KR
South Korea
Prior art keywords
processing cycles
encoding
threshold
video frame
video
Prior art date
Application number
KR1020047020092A
Other languages
English (en)
Other versions
KR20050012785A (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 KR20050012785A publication Critical patent/KR20050012785A/ko
Application granted granted Critical
Publication of KR100937616B1 publication Critical patent/KR100937616B1/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/103Selection of coding mode or of prediction mode
    • H04N19/114Adapting the group of pictures [GOP] structure, e.g. number of B-frames between two anchor frames
    • 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/103Selection of coding mode or of prediction mode
    • 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
    • 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/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/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)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

비디오 프레임의 인코딩 동안에 사용하는 프로세싱 사이클수를 결정하는 것과, 인코딩 동안에 사용하는 프로세싱 사이클수가 임계값을 초과하면 모션 추정 기술들을 사용하지 않고 비디오 프레임을 인코딩하는 것과 관련된 비디오 인코딩 기술들이 설명된다. 예를 들면, 임계값은 주어진 비디오 프레임의 인코딩을 위해 사용가능한 프로세싱 사이클수를 정할 수 있고, 결정된 프로세싱 사이클수는 주어진 비디오 프레임의 인코딩 프로세스 동안에 사용하는 카운팅된 사이클수일 수 있다. 인코딩 동안에 사용하는 프로세싱 사이클수가 임계값을 초과하면, 모션 추정 기술은, 텍스쳐 인코딩과 같은 덜 계산 집중적인 인코딩 기술들을 이용할 수 있도록 중단될 수도 있다.
비디오 프레임, 프로세싱 사이클수, 모션 추정 기술

Description

계산적으로 제약된 비디오 인코딩{COMPUTATIONALLY CONSTRAINED VIDEO ENCODING}
기술 분야
본 발명은 디지털 비디오 프로세싱에 관한 것으로서, 특히, 비디오 시퀀스의 인코딩에 관한 것이다.
배경
디지털 비디오 기능은 디지털 TV, 디지털 직접 방송 시스템, 무선통신 장치, 개인휴대 정보단말기 (PDA), 랩탑 컴퓨터, 데스크탑 컴퓨터, 디지털 카메라, 디지털 리코딩 장치, 셀룰러 또는 위성 무선 전화 등을 포함하는 넓은 범위의 장치들에 내장될 수 있다. 이들 및 다른 디지털 비디오 장치들은 풀 모션 (full motion) 비디오 시퀀스를 생성, 수정, 송신, 저장, 리코딩 및 재생하는데 있어서 종래의 아날로그 비디오 시스템에 비해 현저한 개선을 제공한다.
디지털 비디오 시퀀스를 통신하기 위한 많은 상이한 비디오 인코딩 표준들이 제정되었다. 예를 들면, MPEG (Moving Picture Experts Group) 은 MPEG-1, MPEG-2 및 MPEG-4 를 포함하는 많은 표준들을 개발해 왔다. 다른 표준들으로는 ITU H.263, California Cupertino 의 Apple Computer 에 의해 개발된 QuickTimeTM 기술, Washington, Redmond 의 Microsoft 사에 의해 개발된 Video for WindowsTM, Intel 사에 의해 개발된 IndeoTM, Washington, Seattle 의 RealNetworks 사의 RealVideoTM, 및 SuperMac 사에 의해 개발된 CinepakTM 을 포함한다. 이들 및 다른 표준들은, 아직 개발되지 않은 표준들을 포함하여 계속 발전할 것이다.
많은 비디오 인코딩 표준들은 데이터를 압축 방식으로 인코딩함으로써, 송신 레이트의 증대를 달성한다. 압축은 효과적인 이미지 프레임 송신을 위해, 송신할 필요가 있는 데이터 총량을 저감할 수 있다. 예를 들면, MPEG 표준은, 압축없이 달성될 수 있는 것보다 더 좁은 대역을 통해 비디오 및 이미지 송신을 용이하게 하도록 설계된 그래픽 및 비디오 압축 기술을 이용한다. 특히, MPEG 표준은 시간 또는 프레임간 상관 (interframe correlation) 이라 지칭되는, 연속되는 이미지 프레임들간의 유사성을 이용하는 비디오 인코딩 기술을 지원함으로써 프레임간 압축을 제공한다. 이 프레임간 압축 기술은, 이미지 프레임들의 픽셀-기반 표현을 모션 (motion) 표현으로 변환함으로써, 프레임들에 걸친 데이터 리던던시 (redundancy) 를 활용한다. 또한, 비디오 인코딩 기술은, 하나의 이미지 프레임내의 모션 표현을 더욱 압축시킬 수 있는 프레임내 압축 (intra-frame compression) 을 달성하기 위하여, 공간 (spatial) 또는 프레임내 상관 (intraframe correlation) 이라 지칭하는, 이미지 프레임들내에서의 유사성을 이용할 수도 있다. 일반적으로, 프레임내 압축은, 이산 코사인 변환 (Discrete Cosine Transform; DCT) 인코딩과 같은, 정지 이미지를 압축하기 위한 텍스쳐 (texture) 인코딩 프로세스에 기초한다.
압축 기술을 지원하기 위해, 많은 디지털 비디오 장치들이 디지털 비디오 시퀀스 압축용 인코더 (encoder) 및, 디지털 비디오 시퀀스 압축해제용 디코더 (decoder) 를 구비하고 있다. 많은 경우에, 인코더 및 디코더는, 비디오 이미지의 시퀀스를 정의하는 프레임들내의 픽셀 블록에 대해 동작하는 통합 인코더/디코더 (CODEC) 를 구비한다. 예를 들면, MPEG-4 표준에서, 일반적으로 전송 장치의 인코더는 송신될 비디오 이미지 프레임을, 16 ×16 픽셀 어레이로 이루어지는 매크로블록 (macroblock) 으로 분할한다. 이미지 프레임내의 각각의 매크로블록에 대해, 인코더는, 바로 앞의 비디오 프레임의 매크로블록들을 탐색하여 가장 유사한 매크로블록을 식별하고, 이전 프레임에서 어떤 매크로블록이 인코딩에 사용되었는지 표시하는 모션 벡터에 따라서, 송신을 위한 매크로블록들 간의 차이들을 인코딩한다. 수신장치의 디코더는 모션 벡터 및 인코딩된 차이들을 수신하고, 모션 보상을 수행하여 비디오 시퀀스를 발생시킨다.
비디오 인코딩 프로세스는, 특히 모션 추정 (motion estimation) 기술을 사용할 때, 계산 집중적 (computationally intensive) 이다. 예를 들면, 비디오 블록들을 이전에 송신된 프레임의 비디오 블록들과 비교하는 프로세스는 무수한 계산을 요구한다. 특히, 계산 자원이 보다 제한적이고 전력 소모가 관심사인 무선 장치 또는 다른 휴대용 비디오 장치용으로서, 개선된 인코딩 기술이 매우 요청되고 있다. 또한, 이러한 무선 장치들에서 실시간 인코딩을 용이하게 하는 기술들이 요청되고 있다.
요약
본 명세서는 비디오 인코딩 기술을 설명한다. 비디오 인코딩 기술은 비디오 프레임의 인코딩 동안에 사용되는 프로세싱 사이클수를 결정하는 것과, 그 결정된 프로세싱 사이클수에 기초하여 상이한 인코딩 모드들을 이용하여 비디오 프레임을 선택적으로 인코딩하는 것을 포함할 수 있다. 결정된 프로세싱 사이클수가 임계값을 초과하지 않으면, 비디오 프레임의 인코딩은 모션 추정 기술을 이용하는 제 1 인코딩 모드에서 수행할 수 있다. 그러나, 결정된 프로세싱 사이클수가 임계값을 초과하면, 모션 추정 기술을 사용하지 않는, 비디오 프레임 인코딩의 제 2 모드를 이용할 수 있다.
이 임계값은 주어진 비디오 프레임의 인코딩에 사용가능한 프로세싱 사이클수를 정의할 수 있으며, 결정된 프로세싱 사이클수는 주어진 비디오 프레임의 인코딩 프로세스 동안에 사용되는 카운팅된 사이클수일 수도 있다. 결정된 프로세싱 사이클수가 임계값을 초과하면, 모션 추정 기술은, 프레임의 후속 비디오 블록들 또는 하나 이상의 후속 프레임들에 대한 텍스쳐 인코딩과 같은 덜 계산 집중적인 인코딩 기술들을 이용할 수 있도록, 중단될 수 있다. 따라서, 계산 성능을 증진하기 위해, 선택 기반으로 상이한 인코딩 모드들을 사용할 수 있다. 이러한 방식으로, 비디오 인코딩을 가속시킴으로써, 비교적 제한적인 프로세싱 기능을 갖는 장치에서 실시간 인코딩을 실현할 수 있다.
이 기술들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 어떠한 조합으로도 구현할 수 있다. 만약 소프트웨어로 구현할 경우, 이 기술들은, 처리시에 여기에 설명된 하나 이상의 인코딩 기술들을 실행하는 프로그램 코드를 구비하는 컴퓨 터 판독가능 매체와 관련될 수 있다. 여러 실시형태들의 추가 세부사항을 첨부 도면 및 이하 상세한 설명에서 설명한다. 다른 특징, 목적 및 이점은 상세한 설명, 도면, 및 청구범위로부터 알 수 있다.
도면의 간단한 설명
도 1 은 발신장치가, 인코딩된 비디오 데이터 시퀀스를 수신장치로 송신하는 시스템의 일 예를 나타낸 블록도이다.
도 2 는 디지털 비디오 시퀀스를 압축하는 비디오 인코더를 구비하는 디지털 비디오 장치의 일 예를 나타낸 블록도이다.
도 3 은 비디오 데이터의 매크로블록의 일 예를 나타낸 개념도이다.
도 4 는 탐색공간의 일 예를 나타낸 개념도이다.
도 5 내지 도 7 은 디지털 비디오 장치에서 구현될 수 있는 비디오 인코딩 기술을 나타낸 흐름도이다.
상세한 설명
일반적으로, 본 명세서는, 압축비율에 있어서의 트레이드오프 (tradeoff) 에 따라, 비디오 인코딩 기법을 자원 제한적인 플랫폼에 적응시키는데 사용될 수 있는 인코딩 기술들과 관련한 것이다. 이 기술들은, 소정의 시나리오에서의 계산을 저감하고, 프로세싱 시간을 가속시키고, 비디오 인코딩 동안에 전력 소모를 저감할 수 있도록, 디지털 비디오 장치의 인코더에 의해 수행될 수 있다. 이러한 방식으로, 인코딩 기술은 MPEG-4 와 같은 표준에 따라서 비디오 인코딩을 개선시킬 수 있으며, 계산 자원이 더 제한되고 전력 소모가 관심사인 무선 장치내에서 비디오 인코딩의 구현을 더 용이하게 할 수 있다. 또한, 이 기술들은 MPEG-4 디코딩 표준과 같은 디코딩 표준들과의 상호운용성 (interoperability) 성능을 유지하도록 구성할 수 있다.
여기에 설명하는 비디오 인코딩 기술은, 주어진 비디오 프레임의 인코딩내에서 계산 메트릭 (metric) 에 응답하는 선택적인 인코딩 기술을 적용한다. 이 기술들은 계산 메트릭이 임계값을 초과할 때까지 제 1 인코딩 모드를 적용하고, 그후, 제 2 인코딩 모드를 적용할 수도 있다. 이러한 방식으로, 비디오 인코딩 기술들은 특정 프레임의 인코딩에 전적으로 이용되는 계산 자원을 제약할 수 있다.
보다 구체적으로, 비디오 인코딩 기술은 비디오 프레임의 인코딩에 대한 계산 버짓 (computational budget) 을 수립할 수 있다. 계산 집중적인 모션 추정 기술 (또는, 비디오 인코딩에서 어떤 다른 계산 고비용인 모듈들) 은 계산 버짓이 소진되지 않는 한 사용될 수 있다. 그러나, 주어진 비디오 프레임의 인코딩 동안에 계산 버짓이 소진되면, 계산 집중 기술은, 프레임내 텍스쳐 인코딩 또는 더 작은 탐색범위를 통한 모션 추정 인코딩과 같은 덜 계산 집중적인 인코딩 기술들을 이용할 수 있도록 중단될 수도 있다. 텍스쳐 인코딩 또는 저감된 탐색 범위의 모션 추정은, 더 적은 압축이기는 하지만, 훨씬 더 빠르게 수행할 수 있다. 이러한 방식으로, 어떤 주어진 프레임에 대한 인코딩 프로세스가 과도한 시간량을 점유하지 않도록 보장할 수 있으며, 그렇지 않으면 비디오 시퀀스의 실시간 송신을 약화시킬 수 있다. 또한, 주어진 비디오 프레임의 인코딩을 동적으로 정의함으로써, 계산 자원이 충분할 때 모션 추정과 관련된 데이터 압축을 활용할 수 있으므로, 계산 자원을 보다 효과적으로 이용할 수 있다.
MPEG-4 표준과 같은 표준에 따라서 디지털 비디오 데이터를 인코딩하는 디지털 비디오 장치는, 디지털 신호 프로세서 (DSP) 와 같은 프로세서로 인코딩 알고리즘을 수행하도록 구현할 수 있다. 이 인코딩 알고리즘은 모션 추정 기술로 비디오 프레임을 이루는 개별적인 비디오 블록들을 인코딩하도록 구현할 수 있다. 전술된 바와 같이, 모션 추정 기술들은 매우 계산 집중적이다. 특히, 일반적으로, 모션 추정 기술은, 모션 벡터를 정의하는데 사용하기 위한 허용가능한 정합 (match) 을 식별하기 위해, 인코딩될 비디오 블록과 이전에 송신된 프레임 (또는 후속 프레임) 의 비디오 블록들의 일부 또는 모두와의 비교를 포함한다. 또한, 하나의 블록과 또 다른 블록과의 각각의 개별적인 비교는 픽셀 단위 (pixel-wise) 비교를 수행하는데 많은 계산을 요한다. 그러나, 이 알고리즘을 수행하는 DSP 의 프로세싱 속도는 일반적으로 고정되어 있다. 즉, 일반적으로, DSP 는 초당 사이클 (Hz) 로 환산한, 정의된 주파수로 동작한다. 예를 들면, 일반적으로 50 메가헤르츠 클럭 속도에서 동작하는 DSP 는 초당 대략 5 천만개의 명령을 실행한다.
허용가능한 모션 추정 인코딩에 필요한 계산수는 어떤 주어진 비디오 프레임에 대해 미지일 수 있다. 예를 들면, 모션 추정 기술을 이용하여 어떤 주어진 비디오 프레임을 인코딩하는데 필요한 계산수는 비디오 프레임 및 관련된 탐색 알고리즘의 내용에 따라 변할 수 있다. 그러나, 원하는 해상도로 비디오 시퀀스의 실시간 송신을 증진하기 위해서는, 주어진 시간량내에서 이미지 프레임들을 인 코딩할 필요가 있다. 특히, 비디오 시퀀스의 원하는 해상도를 보장하기 위해서는 대략적으로 초당 15 프레임 또는 그 이상이 일반적으로 필요하다.
어떤 프레임들은 모션 추정 기술들을 사용하여, 인코딩하는데 다른 프레임들보다 시간이 더 걸리기 때문에, DSP 가 허용가능한 인코딩을 지원할 수 있도록 보장하는 한 방법은 DSP 의 클럭 속도를 증가시킴으로써 DSP 가 항상 "최악의 경우" 를 인코딩할 수 있도록 보장하는 것이다. 즉, 만약 DSP 가, 초당 15 프레임을 인코딩하는 것을 보장하는데 필요한 시간내에 최대 계산을 요구하는 비디오 프레임들을 인코딩할 수 있을 정도로 충분히 빠르면, 실시간 비디오 시퀀스를 지원할 수 있다. 그러나, DSP 의 클럭 속도를 증가하는 것은, 구현 및 동작 양자의 관점에서 매우 고비용일 수 있다. 특히, 증가된 클럭 속도는 추가적인 설계 복잡도뿐만 아니라 DSP 에 의한 추가적인 전력소모를 요구할 수 있다. 따라서, 실시간 비디오 인코딩이, 비디오 시퀀스의 실시간 송신에 의해 부과되는 시간 제약조건내에서 반드시 "최악의 경우" 를 인코딩하도록 충분히 빠를 필요는 없는 클럭 속도에서 동작하는 DSP 들에 의해, 지원되도록 하는 것이 매우 바람직하다.
주어진 비디오 프레임의 인코딩에 대한 계산 버짓을 정의함으로써, 주어진 인코딩 시나리오에 대해 요구되는 DSP 속도를 저감시킬 수 있다. 일부의 경우, 계산 버짓은 적어도 부분적으로 이전 비디오 프레임들을 인코딩하는데 이용한 평균 사이클수로 정의할 수도 있다. 즉, 이전의 비디오 프레임을 매우 빠르게 인코딩할 경우, 그 계산 절약분을 후속 프레임에 대한 계산 버짓에 포함시킬 수 있어, 후속 비디오 프레임을 인코딩하는데 증대된 계산수로 실행되도록 할 수 있다. 이하 더 상세하게 약술되는 일 예에서, 후속 비디오 프레임들을 인코딩하기 위한 계산 버짓을 정의하기 위해, 이전에 인코딩된 비디오 프레임수와 관련된 프로세싱 사이클을 정의하는 이동 평균 (moving average) 이, 부분적으로, 사용될 수도 있다. 따라서, 이전에 송신된 비디오 프레임들의 인코딩 동안의 계산 절약분이, 필요에 따라, 후속 비디오 프레임의 인코딩이 이전의 계산 절약분을 사용할 수 있도록, 재활용될 수 있다. 즉, 초기 프레임들의 인코딩이 계산 절약분을 발생시키면, 즉, 초기 프레임들의 인코딩을 기존의 임계값보다 적은 프로세싱 사이클로 수행할 경우, 임계값은 후속 프레임들에 대해 증가될 수 있다. 한편, 이전 프레임들에서의 계산 버짓의 남용을 또한 식별할 수 있으며, 그 경우에, 그에 따라서, 후속 프레임들에 대한 임계값을 저감시킬 수 있다. 그밖의 경우, 계산 버짓은, 각각의 프레임에 대해 적용되고 시간에 따라서 변하지 않는 고정된 임계값으로 정의할 수 있다.
여기에 설명된 기술들은 소정의 이점들을 제공할 수 있다. 예를 들면, 이 기술들은 비디오 인코딩 동안에 전력 소모의 감소를 용이하게 할 수 있으며, 실시간 인코딩에 요구되는 시간 제약조건내에서 반드시 "최악의 경우" 를 인코딩하도록 충분히 빠를 필요는 없는 클럭 속도에서 동작하는 DSP 를 이용하여 효과적인 실시간 비디오 인코딩을 용이하게 할 수도 있다. 이 기술들은 계산 자원이 보다 제한적이며 전력소모가 관심사인 무선 디지털 비디오 장치들 또는 다른 휴대용 비디오 장치들에서 특히 유용할 수 있다.
DSP 기술에서의 미래의 진보에 따라, DSP 클럭 속도는 변함없이 증가할 것이 며, 전력 소모가 주어진 클럭 속도에 대해 줄어들 것이다. 여전히, 더 빠르고 보다 전력 효율적인 DSP 와 함께, 여기에 설명된 기술들은 매우 유용할 수 있다. 예를 들면, 더 빠른 클럭 속도에 의해, 초당 더 많은 프레임들의 인코딩을 지원하거나, 또는 3차원 형상 (imagery) 과 같은 보다 복잡한 형상을 지원함으로써, 실시간 해상도를 향상시킬 수 있다. 이와 유사하게, 더 빠른 클럭 속도에 의해 더 많은 비디오 프레임들을 실시간으로 인코딩할 수 있다. 요약하면, 여기에 설명되는 기술들은 어떤 주어진 클럭 속도에서 동작하는 DSP 와의 사용에만 한하지 않으며, 신호 프로세싱 기술이 계속 진보함에 따라, 훨씬 빠른 DSP 와의 사용시에도 동일하게 유용할 수 있다. 이와 유사하게, 하드웨어에서 구현하면, 그에 따라서 하드웨어 속도를 저감시킬 수 있다.
도 1 은 발신장치 (4) 가 인코딩된 비디오 데이터 시퀀스를 통신링크 (6) 를 통해 수신장치 (8) 로 송신하는 시스템 (2) 의 일 예를 나타낸 블록도이다. 발신장치 (4) 및 수신장치 (8) 는 모두 디지털 비디오 장치이다. 특히, 발신장치 (4) 는 MPEG 에 의해 개발된 MPEG-4 와 같은 다양한 비디오 압축 표준들중 하나를 이용하여 비디오 데이터를 인코딩하고 송신한다. 다른 표준들로는 MPEG-1, MPEG-2, 또는 MPEG 에 의해 개발된 다른 MPEG 표준들, ITU H.263, Motion JPEG 2000, California, Cupertino 의 Apple Computer 에 의해 개발된 QuickTimeTM 기술, Washington, Redmond 의 Microsoft 사에 의해 개발된 Video for WindowsTM, Intel 사에 의해 개발된 IndeoTM, 및 SuperMac 사에 의해 개발된 CinepakTM 을 포함한다.
통신링크 (6) 는 무선링크, 물리적 송신 라인, 인터넷, 공중교환전화망 (PSTN), 또는 근거리 통신망, 광역 통신망, 또는 인터넷 등의 세계 정보망 (global network) 과 같은 패킷기반 네트워크, 공중교환전화망 (PSTN), 또는 다양한 링크 및 네트워크의 조합을 포함할 수 있다. 즉, 통신링크 (6) 는, 비디오 데이터를 발신장치 (4) 로부터 수신 장치 (8) 로 송신하기 위한, 적절한 통신 매체, 또는 다른 네트워크들 및 링크들의 집합체를 나타낸다.
발신장치 (source device; 4) 는 비디오 데이터를 인코딩하고 송신할 수 있는 임의의 디지털 비디오 장치일 수 있다. 예를 들면, 발신장치 (4) 는 비디오 시퀀스를 저장하기 위한 메모리 (22), 시퀀스를 인코딩하기 위한 비디오 인코더 (20), 및 인코딩된 시퀀스를 통신링크 (6) 를 통해 송신하기 위한 송신기 (14) 를 포함할 수 있다. 예를 들면, 비디오 인코더 (20) 는 DSP 및/또는, 인코딩 기술들을 정의하는 프로그램가능 소프트웨어 모듈들을 실행하는 마이크로프로세서를 구비할 수 있다.
또한, 발신장치 (4) 는 비디오 시퀀스를 캡쳐하고 그 캡쳐된 시퀀스를 메모리 (22) 에 저장하기 위한 비디오 카메라와 같은 이미지 센서 (23) 를 구비할 수도 있다. 어떤 경우에는, 발신장치 (4) 는 실시간 비디오 시퀀스를 통신링크 (6) 를 통해서 송신할 수 있다. 그러한 경우에는, 수신장치 (8) 가 실시간 비디오 시퀀스를 수신하고 그 비디오 시퀀스를 사용자에게 표시할 수 있다.
수신장치 (8) 는 비디오 데이터를 수신하고 디코딩할 수 있는 임의의 디지털 비디오 장치일 수 있다. 예를 들면, 수신장치 (8) 는 인코딩된 디지털 비디오 시퀀스를 수신하기 위한 수신기 (15), 시퀀스를 디코딩하기 위한 디코더 (16), 및 시퀀스를 사용자에게 표시하는 표시부 (18) 를 구비할 수 있다.
발신장치 (4) 및 수신장치 (8) 에 대한 장치의 예로는, 컴퓨터 네트워크상에 위치하는 서버, 워크스테이션 또는 다른 데스크탑 컴퓨팅 장치, 및 랩탑 컴퓨터와 같은 이동 컴퓨팅 장치를 포함한다. 다른 예로는, 디지털 TV 방송 위성 및 디지털 TV 와 같은 수신 장치, 디지털 카메라, 디지털 비디오 카메라 또는 다른 디지털 리코딩 장치, 셀룰러 무선전화 및 비디오 기능을 갖는 위성 무선전화와 같은 디지털 비디오 전화, 다른 무선 비디오 장치 등을 포함한다.
어떤 경우, 발신장치 (4) 및 수신장치 (8) 는 디지털 비디오 데이터를 인코딩하고 디코딩하기 위한 인코더/디코더 (CODEC) (미도시) 를 각각 포함한다. 그 경우에는, 발신장치 (4) 및 수신장치 (8) 양자는 메모리 및 표시부들뿐만 아니라 송신기 및 수신기를 포함할 수 있다. 이하 약술된 많은 인코딩 기술들은 인코더를 구비하는 디지털 비디오 장치와 관련하여 설명한다. 그러나, 인코더가 CODEC 의 부분을 형성할 수도 있다. 그 경우에는, CODEC 은 DSP, 마이크로프로세서, 주문형 반도체 (ASIC), 개별적 하드웨어 컴포넌트, 또는 이들의 다양한 조합들로 구현할 수도 있다.
예를 들면, 발신장치 (4) 는, 비디오 데이터를 인코딩하기 위해, 비디오 이미지의 시퀀스내의 픽셀들의 블록들에 대해 동작한다. 예를 들면, 발신장치 (4) 의 인코더 (20) 는, 송신할 비디오 이미지를 다수의 더 작은 이미지 블록들로 이루어진 매크로블록들로 분할하는 모션 추정 인코딩 기술을 수행할 수 있다. 이미지 프레임 내의 각각의 매크로블록에 대하여, 발신장치 (4) 의 비디오 인코더 (20) 는 메모리 (22) 에 저장된 매크로블록들에서 이미 송신된 이전 비디오 프레임 (또는 후속 비디오 프레임) 을 탐색하며, 유사한 매크로블록을 식별하고 인코딩에 사용한 이전 프레임의 매크로블록을 식별하는 모션 벡터에 따라서, 매크로블록들간의 차이를 인코딩한다. 어떤 경우에는, 발신장치 (4) 는, 계산수를 저감하고 전력을 유지하기 위해, 인코딩 프로세스 동안에 여러 태스크 (task) 또는 반복 (iteration) 을 종료시킬 수 있는 프로그램가능한 임계값을 지원할 수 있다.
모션 추정에서, "태스크" 라는 용어는, 탐색공간내에서 현재의 비디오 블록을 다른 비디오 블록과 비교하는데 사용되는 공통 계산 세트를 지칭한다. 즉, 태스크는 탐색공간내에서 현재 비디오 블록과 다른 비디오 블록간의 단일 비교를 지칭한다. 예를 들면, 태스크는 현재 비디오 블록의 픽셀수를 다른 비디오 블록들의 픽셀수와 비교하기 위해 다수의 계산을 수행하는 것을 포함할 수 있다. 예를 들면, 64 개의 계산 (이미지 블록의 경우) 또는 256 개의 계산 (매크로블록의 경우) 은 하나의 태스크를 형성할 수 있다. 각 태스크 동안에, 태스크에 대한 진행중인 차이값 (종종 차이 메트릭이라 함) 을 정의하기 위해, 계산이 누적될 수 있다. 임의의 주어진 태스크를 종료할지의 결정은, 각 계산 후에 이루어지거나 또 다른 방법으로는, 계산들의 서브세트 (subset), 즉, 그 태스크의 서브세트를 정의하는 계산들의 정수 (integer number) 이후에 이루어질 수 있다. 후자의 경우, 계산들의 정수는 프로그램가능하여 인코딩 루틴 (routine) 에 추가적인 유연성을 제공할 수 있다.
모션 추정에서, "반복" 이라는 용어는 비디오 인코딩중에 수행되는 공통의 태스크 세트를 지칭한다. 현재 비디오 블록과 관련된 완전한 태스크들의 시리즈가 하나의 반복이다. 즉, 하나의 반복은, 탐색공간에서 현재 비디오 블록을 이전 비디오 블록들의 세트 (또는 후속 비디오 블록들) 와 비교하는 하나의 비교 세트이다. 각 개별적인 비교는 다수의 계산을 수반하는 태스크이다. 따라서, 탐색공간은 하나의 반복 동안에 현재 비디오 블록에 비교되는 비디오 블록들의 한 세트를 정의한다. 하나의 반복의 각각의 비교는 태스크라 하며, 각각의 태스크, 즉, 각각의 비교는 다수의 계산을 포함할 수 있다. 반복은, 예를 들면, 반복의 코스중에 허용가능한 정합이 식별되면, 조기에 종료될 수 있다.
이미지 프레임을 인코딩하기 위해 모션 추정을 수행하는데 있어서, 각각의 비디오 블록, 예컨대, 프레임의 매크로블록 또는 이미지 블록에 대해 하나의 반복을 수행할 수 있다. 각각의 반복에 대해 다수의 태스크가 수행되며, 각각의 태스크는 다수의 계산을 포함한다. 따라서, 모션 추정 기술을 사용하여 이미지 프레임을 인코딩하는데에, 다수의 계산이 필요할 수도 있다. 이하 매우 상세히 설명하는 바와 같이, 이미지 프레임을 인코딩하기 위한 계산 버짓의 설정은, 모션 추정이 효과적인 실시간 비디오 송신을 쇠퇴시킬 수 있을 정도로 계산 버짓이 소진되지 않게 한다는 것을 보장할 수 있다.
수신장치 (8) 의 수신기 (15) 는 인코딩된 비디오 데이터를 모션 벡터 및 인코딩된 차이의 형태로 수신할 수 있다. 그 경우에, 디코더 (16) 는 텍스쳐 디코딩 및 모션 보상 (compensation) 기술을 수행하여 표시부 (18) 를 통해 사용자에게 표시하기 위한 비디오 시퀀스를 생성한다. 또한, 수신장치 (8) 의 디코더 (16) 는 인코더/디코더 (CODEC) 로서 구현될 수 있다. 그 경우에, 발신장치 및 수신장치 양자는 디지털 비디오 시퀀스를 인코딩, 송신, 수신 및 디코딩할 수 있다.
임의의 주어진 비디오 프레임의 인코딩 동안에, 모션 추정기술이 덜 계산 집중적인 인코딩 기술을 이용할 수 있도록 중단될지의 여부가 결정될 수 있다. 즉, 초기에 모션 추정을 이용하는 인코딩의 제 1 모드가 사용될 수 있으나, 사용하는 프로세싱 사이클수가 임계값을 초과하면 동적으로 종료될 수 있다. 그 경우에, 프레임의 인코딩을 완료하는데 요구되는 계산수를 저감하기 위해, 그 제 1 모드 대신에, 모션 추정을 사용하지 않는 인코딩의 제 2 모드를 사용할 수 있다. 전술한 바와 같이, 임의의 주어진 경우에 모션 추정이 중단되는지의 여부를 결정하기 위해, 계산 버짓이 설정되고 모니터링될 수 있다. 그렇다면, 모션 추정 대신에 정지 이미지를 압축하는데 널리 사용되는 프레임내 압축 기술을 사용할 수도 있다.
덜 계산 집중적인 인코딩 기술의 일 예는 당해 기술에서 공지된 이산 코사인 변환 (DCT) 을 이용하는 텍스쳐 인코딩이다. 텍스쳐 인코딩은 모션 추정 인코딩보다 훨씬 빠르게 그리고 적은 계산으로 수행될 수 있다. 그러나, 텍스쳐 인코딩은 데이터 압축의 관점에서 동일한 이점을 제공하지 않을 수 있다. 모션 추정이 사용되는 경우, 그 모션 추정 기술에 더하여, 텍스쳐 인코딩이 또한 사용될 수 있다. 그러나, 모션 추정이 회피되는 경우, 모션 추정에 대신하여 텍스쳐 인코딩이나 또 다른 덜 계산 집중적인 인코딩 기술이 사용될 수 있으며, 계산이 절약될 수 있다.
도 2 는, 여기에 설명되는 기술에 따라, 디지털 비디오 시퀀스를 압축하는 비디오 인코더 (20) 를 포함한 발신장치 (4) 와 같은 디지털 비디오 장치 (10) 의 일 예를 나타낸 블록도이다. 예시적인 디지털 비디오 장치 (10) 는 이동 컴퓨팅 장치, 개인휴대 정보단말기 (PDA), 무선 통신 장치, 무선 전화 등과 같은 무선 장치로서 도시된다. 그러나, 본 명세서의 기술은 무선 장치에 제한되지 않으며, 비무선 장치를 포함하는 다른 디지털 비디오 장치에도 쉽게 적용할 수 있다.
도 2 의 예에서, 디지털 비디오 장치 (10) 는 압축된 디지털 비디오 시퀀스를 송신기 (14) 및 안테나 (12) 를 통해 송신한다. 비디오 인코더 (20) 는 송신에 앞서 비디오 시퀀스를 인코딩하고 그 인코딩된 디지털 비디오 시퀀스를 비디오 메모리 (22) 내에 버퍼링한다. 예를 들면, 비디오 인코더 (20) 는 프로그램 가능한 디지털 신호 프로세서 (DSP), 마이크로프로세서, 하나 이상의 주문형 반도체 (ASIC), 특수 하드웨어 컴포넌트, 또는 이들 장치들 및 컴포넌트들의 여러 조합을 포함할 수 있다. 메모리 (22) 는 인코딩 프로세싱 동안에 비디오 인코더 (20) 에 의한 사용을 위해 컴퓨터 판독가능 명령들 및 데이터를 저장할 수 있다. 예를 들면, 메모리 (22) 는 SDRAM (Synchronous Dynamic Random Access Memory), 플래시 메모리, EEPROM (Electrically Erasable Programmable Read Only Memory) 등을 포함할 수 있다.
어떤 경우에는, 디지털 비디오 장치 (10) 는 비디오 시퀀스를 캡쳐하기 위한 이미지 센서 (23) 를 포함한다. 예를 들면, 이미지 센서 (23) 는 비디오 시퀀스를 캡쳐하고 캡쳐한 것을 인코딩을 위해 메모리 (22) 에 저장할 수 있다. 또한, 이미지 센서 (23) 는 실시간으로 비디오 인코딩을 개선하기 위해 직접 비디오 인코더 (20) 에 연결될 수 있다. 각 프레임에 대한 계산 버짓을 이용하는 인코딩 기술은, 비록 비디오 인코더 (20) 가 상대적으로 느린 클럭속도에서 동작하더라도, 비디오 시퀀스의 실시간 송신을 실현할 수 있는 시간내에 인코딩이 발생하는 것을 보장할 수 있다.
예로써, 이미지 센서 (23) 는 카메라를 포함할 수 있다. 특히, 이미지 센서 (23) 는 전하 결합 소자 (charge coupled device; CCD), 전하 주입 장치, 포토다이오드의 어레이, 상보성 금속 산화물 반도체 (complimentary metal oxide semiconductor; CMOS), 또는 비디오 이미지 또는 디지털 비디오 시퀀스를 캡쳐할 수 있는 어떤 다른 감광 (photosensitive) 장치를 포함할 수 있다.
예로써, 비디오 인코더 (20) 는 DSP 를 포함할 수 있다. 비디오 인코더 (20) 는 모션 인코더 (26) 및 텍스쳐 인코더 (28) 를 선택적으로 제어하기 위해 인코딩 콘트롤러 (24) 를 포함할 수 있다. 즉, 이들 각각의 컴포넌트들은 DSP 상에서 수행되는 소프트웨어 모듈들을 포함할 수 있다. 또 다른 방법으로는, 하나 이상의 비디오 인코더 (20) 의 컴포넌트들은, 여기에 설명되는 기술들의 하나 이상의 양태들을 수행하는, 구체적으로 설계된 하드웨어 컴포넌트들 또는 하나 이상의 ASIC 을 포함할 수 있다. 어떤 경우라도, 인코딩 콘트롤러 (24) 는 모션 인코더 (26) 및 텍스쳐 인코더 (28) 를 선택적으로 호출함으로써 비디오 프레임들의 인코딩을 제어한다. 여러 경우에, 모션 인코더 (26) 및 텍스쳐 인코더 (28) 양자가 비디오 프레임에 관련된 인코딩 프로세스 동안에 사용된다.
모션 인코더 (26) 는, 이하 매우 상세히 설명되는 바와 같은, 계산 집중적인 모션 추정 인코딩 기술들을 수행한다. 한편, 텍스쳐 인코더 (28) 는 정지 이미지를 압축하는데 널리 사용되는 프레임내 압축과 같은, 덜 계산 집중적인 인코딩 기술을 수행한다. 예를 들면, 텍스쳐 인코더 (28) 는 당해 기술에 공지된 이산 코사인 변환 (DCT) 인코딩을 수행할 수 있다. 텍스쳐 인코더 (28) 는, 모션 추정 기술이 사용되는 제 1 모드에서 모션 인코더 (26) 에 부가하여, 또는 모션 추정 기술이 회피되는 제 2 모드에서 모션 인코더 (26) 를 대신하여 호출될 수 있다.
인코딩 콘트롤러 (24) 는 주어진 비디오 프레임의 인코딩에 대한 계산 버짓을 정하기 위해 임계값을 확립할 수 있다. 인코딩 콘트롤러 (24) 는 메모리 (22) 에 그 임계값을 저장할 수 있고, 계산 버짓이 소진되었는지 여부를 평가하기 위해 인코딩 루틴 동안에 그 임계값에 액세스할 수 있다. 인코딩 콘트롤러 (24) 는 계산 버짓이 소진되지 않는 한 모션 인코더 (26) 를 인에이블시켜 모션 추정 기술을 수행할 수 있다. 그러나, 계산 버짓이 소진되었으면, 인코딩 콘트롤러 (24) 는 모션 디코더 (26) 를 디스에이블 (disable) 할 수 있다. 그 경우에, 비디오 프레임의 임의의 남아있는 인코딩은, 훨씬 더 적은 계산, 따라서 더욱 적은 프로세싱 사이클을 요구하는 텍스쳐 인코더 (28) 를 이용하여, 간단히 수행될 수 있다. 이러한 방식으로, 인코딩 콘트롤러 (24) 는 비디오 프레임의 인코딩을 할당된 시간내에서 수행함을 보장함으로써 실시간 비디오 시퀀스를 송신할 수 있음을 보장할 수 있다.
인코딩 콘트롤러 (24) 는 비디오 인코더 (20) 와 관련된 기지의 주파수에 부분적으로 기초하여 임계값을 확립할 수 있다. 전술한 바와 같이, 비디오 인코더 (20) 는 인코딩 콘트롤러 (24), 텍스쳐 인코더 (28) 및 모션 콘트롤러 (26) 에 대응하는 여러 소프트웨어 모듈들을 실행시키는 디지털 신호 프로세서 (DSP) 를 포함할 수 있다. 일반적으로, 비디오 인코더 (20) 의 속도는 고정된다. 즉, 일반적으로 비디오 인코더 (20) 는 초당 사이클 (Hz) 로 환산하여, 한정된 주파수에서 동작한다. 일 예에서, 비디오 인코더 (20) 는 초당 약 5 천만개의 명령을 수행할 수 있도록 50 메가헤르츠에서 동작할 수 있다. 또한, 더 빠르거나 더 느린 클럭 속도를 사용할 수도 있다. 어떤 경우에도, 임계값은 기지의 비디오 인코더 (20) 의 클럭 속도에 부분적으로 기초하여 설정될 수 있다. 어떤 경우에는, 임계값은 인코딩 콘트롤러 (24) 로 프로그래밍된 고정값일 수 있으며, 다른 경우에는, 임계값은 하나 이상의 이전 비디오 프레임들을 인코딩하는데 이용되는 프로세싱 사이클수에 기초하여 조절되어지는 동적인 값일 수 있다.
예를 들면, 인코딩 콘트롤러 (24) 는 하나 이상의 이전 비디오 프레임들을 인코딩하는데 사용되는 프로세싱 사이클수에 기초하여, 프레임 단위로 임계값을 확립할 수 있다. 어떤 프레임들은 모션 추정 기술들을 이용하는 다른 프레임들보다 인코딩하는데 더 많은 시간이 걸릴 수 있다. 따라서, 계산 버짓은, 적어도 부분으로, 이전 비디오 프레임들을 인코딩하는데 사용한 평균 사이클들수로 정의될 수 있다. 즉, 이전의 비디오 프레임이 매우 빠르게 인코딩되면, 계산 절약분은 후속 프레임에 대한 계산 버짓에 포함될 수 있으며, 후속 비디오 프레임을 인코딩하는데 증대된 계산수로 수행되도록 할 수 있다. 일 예에서, 이전에 인코딩된 비디오 프레임수와 관련된 프로세싱 사이클을 정의하는 이동 평균은 후속 비디오 프레임들을 인코딩하기 위한 계산 버짓을 정하는데 이용할 수 있다. 이러한 방식으로, 이전에 송신된 비디오 프레임들의 인코딩 동안의 계산 절약분은, 후속 비디오 프레임의 인코딩이 필요하다면 이전 계산 절약분을 이용할 수 있도록 재활용될 수 있다.
인코딩 콘트롤러 (24) 는, 사용되는 클럭 사이클수를 구체적으로 카운팅함으로써, 또는 비디오 프레임의 인코딩과 관련된 타이밍을 추적함으로써, 주어진 비디오 프레임의 인코딩 동안에 사용되는 프로세싱 사이클수를 결정할 수 있다. 어떤 경우에도, 인코딩 콘트롤러 (24) 는 주어진 비디오 프레임의 인코딩 동안에 사용되는 프로세싱 사이클수를 모니터링하고 이용된 사이클수와 임계값을 비교하여 계산 버짓이 소진되었는지 결정한다. 만약 그렇다면, 인코딩 콘트롤러 (24) 는 모션 인코더 (26) 를 디스에이블하고 텍스쳐 인코더 (28) 만을 사용하여 프레임의 나머지 인코딩을 수행할 수 있다. 그러나, 계산 버짓이 소진된 동안에, 모션 추정 기술은 일반적으로 비디오 시퀀스의 송신 동안에 증가된 압축 및 이에 따라서 저감된 대역폭 소모를 허용하므로, 모션 인코더 (26) 가 사용될 수도 있다.
모션 추정 인코딩 동안에, 모션 인코더 (26) 는 인코딩되는 현재 비디오 프레임과 관련된 현재 비디오 블록과 이전 이미지 프레임의 여러 비디오 블록들 또는 그것의 서브세트 (또는 후속 이미지 프레임 또는 그것의 서브세트) 를 비교한다. 유사한 비디오 블록을 식별하면, 모션 인코더 (26) 는 현재 비디오 블록과 유사한 비디오 블록간의 차이를 결정한다. 인코딩 콘트롤러 (24) 는 모션 인코더 (26) 로부터 이 정보를 수신할 수 있으며 이 정보를 송신기 (14) 로 포워드할 수 있다. 그후, 송신기는 모션 인코더 (26) 에 의해 식별된 차이뿐만 아니라 유사한 비디오 블록을 식별하는 모션 벡터를 송신할 수 있다. 송신기 (14) 는 각 이미지 블록에 대한 인코딩된 정보를 송신할 수 있으며, 또는 일단 그 프레임이 인코딩된 경우, 완전한 하나의 프레임에 대한 정보를 송신할 수 있다. 모션 벡터를 이용하여 이미지 블록들을 인코딩함으로써, 비디오 데이터 스트림의 송신에 대한 요구 대역폭을 크게 저감할 수 있다. 그러나, 소정의 경우에는, 모션 추정의 사용을 회피함으로써 실시간 송신을 보장할 수 있다.
도 3 은 메모리 (22) 내에 저장될 수 있는 매크로블록 (31) 의 일 예를 나타낸다. MPEG 표준 및 다른 비디오 인코딩 기법은 모션 추정 비디오 인코딩 동안에 매크로블록을 이용한다. MPEG 표준에서, 매크로블록이라는 용어는 비디오 이미지 프레임의 서브세트를 이루는 픽셀값들의 16 ×16 집합체를 지칭한다. 원하는 이미지 품질을 달성하기 위해 각 픽셀을 정의하는데 또한 더 많거나 더 적은 비트수를 이용할 수 있지만, 각 픽셀값은 일 바이트의 데이터에 의해 표현될 수 있다. 매크로블록은 많은 작은 8 ×8 픽셀 이미지 블록 (32) 으로 구성되어 있다. 그러나, 일반적으로, 여기에 설명되는 인코딩 기술들은 16 바이트 ×16 바이트 매크로블록들, 8 바이트 ×8 바이트 이미지 블록들, 또는, 원하면, 다른 크기의 비디오 블록들과 같은, 어떤 정의된 크기의 블록들을 이용하여 처리할 수 있다.
도 4 는 메모리내에 저장될 수 있는 탐색공간 (41) 의 일 예를 나타낸다. 탐색공간 (41) 은 이전에 송신된 이미지 프레임 (또는 프레임 시퀀스의 후속 이미지 프레임) 에 대응하는 비디오 블록들의 버퍼링된 집합체이다. 탐색공간은 이전 또는 후속 이미지 프레임을, 또는 필요하면 이미지 프레임의 서브세트를 완전한 형태로 포함할 수 있다. 일반적으로, 더 넓은 탐색공간은 인코딩되는 현재 블록에 비교될 수 있는 더 많은 블록들, 즉, 반복당 더 많은 태스크들을 규정하기 때문에 더 넓은 탐색공간은 모션 추정 인코딩 동안에 더 많은 계산을 초래한다. 또, 현재 블록과 이전 프레임에서의 유사한 이미지 블록간의 차이를 이전 프레임의 유사한 이미지 블록을 식별하는 모션 벡터에 따라서 송신할 수 있도록, 현재 이미지 프레임을 탐색공간에서 블록들과 비교하여 적절한 정합을 식별한다.
보다 구체적으로, 모션 추정 비디오 인코딩 동안에, 모션 인코더 (26) 는 인코딩되는 현재 비디오 블록들을, 비디오 인코딩의 당해 기술에서 공지된 절대 차이의 합 (Sum of Absolute Difference; SAD) 기술 또는 제곱 차이의 합 (Sum of Squared Difference; SSD) 기술과 같은 비교 기술들을 이용하여, 이전 비디오 블록들과 비교할 수 있다. 또한, 다른 비교 기술들을 사용할 수 있다.
SAD 기술은, 현재 블록과 비교하고 있는 이전 블록의 픽셀값들과 인코딩할 현재 블록의 픽셀값들 간의 절대 차이 계산을 수행하는 태스크를 수반한다. 이들 절대 차이 계산의 결과를 합산, 즉, 누적하여, 현재 비디오 블록과 그 현재 비디오 블록과 비교하고 있는 이전 비디오 블록간의 차이를 나타내는 차이값을 정의한다. 8 ×8 픽셀 이미지 블록에 대해, 64 개의 차이들을 계산하여 합산할 수 있으며, 16 ×16 픽셀 매크로블록에 대해, 256 개의 차이들을 계산하여 합산할 수 있다. 어떤 경우에는, 누적된 차이값이 태스크 임계값을 초과하면, 태스크 계산은 종료될 수 있다. 그 경우에, 추가적인 계산이 불필요할 수 있다.
또한, SSD 기술은, 현재 블록과 비교하고 있는 이전 블록의 픽셀값과 인코딩하는 현재 블록의 픽셀값들 사이에 차이 계산을 수행하는 태스크를 수반한다. SSD 기술에서, 절대 차이 계산의 결과값을 제곱하고, 그후, 그 제곱된 값들을 합산, 즉, 누적하여 현재 비디오 블록과 그 현재 비디오 블록과 비교하고 있는 이전 비디오 블록간의 차이를 나타내는 차이값을 정한다.
또 다른 방법으로는, 평균자승오차 (Mean Square Error; MSE), 정규화된 교차 상관 함수 (Normalized Cross Correlation Function; NCCF), 또는 다른 적절한 비교 알고리즘과 같은 비교 기술들을 수행할 수 있다. 그러나, 어떤 경우라도, 모션 추정 기술은 모션 벡터를 이용하는 비디오 인코딩에 허용가능한 정합을 식별하는데 매우 많은 계산수가 필요하다. 따라서, 모션 추정 기술을 할당 시간내에 수행하는데 계산 버짓이 충분하지 않은 것으로 결정되는 소정의 시나리오에서는, 모션 추정 기술을 회피할 수 있다.
도 5 는 본 명세서의 원리에 따른 비디오 인코딩 기술을 나타낸 흐름도이다. 도시한 바와 같이, 비디오 프레임을 인코딩하는 동안에, 인코딩 콘트롤러 (24) 는, 프로세싱 사이클이 발생됨에 따라 프로세싱 사이클수를 카운팅하고 합산함으로써 또는 인코딩 프로세스 시간을 기록함으로써 계산량을 모니터링한다 (51). 계산 버짓이 초과되면 (52의 '예' 분기), 예를 들면, 카운팅된 프로세싱 사이클수가 확립된 임계값을 초과하면, 인코딩 프로세스는 모션 추정 기술을 사용하지 않고 진행한다 (54). 예를 들면, 계산 버짓을 초과하면, 텍스쳐 인코딩, 또는 다른 덜 계산 집중적인 인코딩 기술들을 사용할 수 있다 (52의 '예' 분기). 그러나, 계산 버짓을 초과하지 않는 동안 (52의 '아니오' 분기) 에는, 인코딩에 모션 추정 기술을 이용한다 (53). 비디오 시퀀스의 송신 동안에 모션 추정 인코딩에 의해, 데이터 압축의 증대 및 이에 따라서 대역폭 소모의 저감을 유도할 수 있기 때문에, 계산 자원이 충분하다면, 모션추정이 바람직할 수 있다.
또 다른 방법으로, 모션 추정 기술은 남아 있는 계산 자원의 한도에 기초하여 수정할 수 있다. 즉, 사용된 프로세싱 사이클수가 임계값에 접근함에 따라서 어떤 주어진 반복에 대한 탐색공간의 크기를 저감함으로써, 인코딩 콘트롤러는 모션 인코더 (26) 에 의해 수행되는 모션 추정 기술을 동적으로 변경할 수 있다. 이러한 방식으로, 모션 추정은 계산 제약조건내에서 보다 쉽게 활용될 수 있다.
도 6 은 본 명세서의 원리에 따른 비디오 인코딩 기술의 상세 흐름도이다. 도 6 에 도시된 바와 같이, 디지털 비디오 장치 (10) 의 인코딩 콘트롤러 (24) 는 프레임당 사이클들의 이동평균을 계산함으로써 비디오 프레임의 인코딩을 시작한다 (61). 즉, 인코딩 콘트롤러 (24) 는 많은 이전 비디오 프레임들을 인코딩하는데 이용되었던 평균 프레임당 사이클수를 결정한다. 그후, 인코딩 콘트롤러 (24) 는 현재 비디오 프레임을 인코딩하기 위한 계산 버짓을 설정한다. 특히, 인코딩 콘트롤러 (24) 는 임계값을 정하여 모션 추정에 사용될 수 있는 프로세싱 사이클수를 정할 수 있다. 이 임계값은 비디오 인코더 (20) 의 클럭 속도에 의해 정할 수 있으며, 부분적으로, 계산된 이동평균에 의해 더 정할 수 있다. 예를 들면, 다수의 이전 비디오 프레임들을 인코딩하는데 요구되는 프레임당 평균 사이클수가 예상보다 매우 적으면, 계산 절약분을 임계값에 포함하여, 추가적인 계산이 수행될 수 있도록 한다. 이와 유사하게, 다수의 이전 비디오 프레임들을 인코딩하기 위해 요구되는 프레임당 평균 사이클수가 예상보다 매우 많으면, 계산 초과분을 임계값에 포함시켜 이후 프레임들에 대해 더 적은 계산을 수행할 수 있다. 인코딩 콘트롤러 (24) 는, 인코딩 루틴 동안에 임계값이 액세스될 수 있도록, 임계값을 메모리 (22) 에 저장할 수 있다.
인코딩 콘트롤러 (24) 는, 전술한 바와 같이, 모션 인코더 (26) 로 하여금 모션 추정 기술을 이용하여 이미지 블록들을 인코딩하도록 인에이블한다 (63). 인코딩 동안에, 인코딩 콘트롤러 (24) 는 비디오 인코더 (20) 에 의해 사용되는 사이클수를 카운팅하거나, 또는 현재 비디오 블록의 인코딩 동안에 경과된 시간량을 추적함으로써, 사용된 프로세싱 사이클수를 모니터링하고 결정한다. 또한, 사용된 사이클수를 결정하기 위해 다른 추정 기술들을 사용할 수 있다. 그후, 인코딩 콘트롤러 (24) 는, 예를 들면 현재 비디오 프레임의 인코딩 동안에 사용된 프로세싱 사이클수와 메모리 (22) 에 저장된 임계값을 비교함으로써, 계산 버짓이 초과되었는지 여부를 결정한다 (64). 계산 버짓이 초과되지 않았으면 (64의 '아니오' 분기), 비디오 블록들을 인코딩하는데 모션 추정을 사용한다 (65). 어떤 경우에는, 모션 추정을 사용하면, 모션 추정 인코딩 기술에 더하여, 텍스쳐 인코딩 기술들을 사용할 수도 있다. 프레임의 추가적인 비디오 블록들을 여전히 인코딩할 필요가 있으면 (66의 '예' 분기), 계산 버짓을 모니터링하는 프로세스 (64) 를 반복한다.
인코딩 콘트롤러 (24) 가 현재 비디오 프레임의 인코딩 동안에 사용되는 프로세싱 사이클수가 메모리 (22) 에 저장된 임계값을 초과한다고 결정함으로써, 계산 버짓이 초과되었다고 결정하면 (64의 '예' 분기), 인코딩 콘트롤러는 모션 인코더 (26) 를 디스에이블한다 (67). 그 경우에, 비디오 인코더 (20) 는 모션 추정 기술을 사용하지 않고 남아있는 비디오 블록들을 인코딩한다 (68). 예를 들면, 인코딩 콘트롤러 (24) 는, 모션 인코더 (26) 를 디스에이블하고 텍스쳐 인코더 (28) 만을 인에이블함으로써, 남아있는 비디오 블록들을 텍스쳐 인코딩 기술을 이용하여 인코딩할 수 있다. 텍스쳐 인코더 (28) 를 대신하여, 다른 인코딩 기술들을 구현하는 추가적인 인코더들을 부가적으로 추가할 수도 있다. 어떤 경우에는, 모션 추정이 디스에이블되면, 계산한 모션 벡터들을 폐기하고, 텍스쳐 인코딩 기술만을 사용하여 풀 비디오 프레임을 인코딩할 수 있다. 그러나, 대부분의 경우, 모션 인코더 (26) 가 인에이블되었던 동안에 계산된 모션 벡터들이 사용될 수 있다. 후자의 경우는, 모션 추정 기술들을 이용하여 인코딩되지 않은 잔존 비디오 블록들만이 텍스쳐 인코딩 기술만을 이용하여 인코딩될 필요가 있다.
도 7 은 도 6 의 비디오 인코딩 기술의 변형예를 나타낸 흐름도이다. 이 경우에, 인코딩 콘트롤러 (24) 는 현재 비디오 프레임을 인코딩하기 위한 계산 버짓을 설정한다 (71). 예를 들면, 인코딩 콘트롤러는 프레임당 사이클들의 이동평균을 계산하고 임계값을 정하여 인코딩에 사용할 수 있는 프로세싱 사이클수를 정할 수 있다. 이 임계값은 비디오 인코더 (20) 의 클럭속도에 의해 정의될 수 있으며, 부분적으로, 계산된 이동평균에 의해서, 더 정의될 수 있다.
그후, 인코딩 콘트롤러 (24) 는, 현재 비디오 프레임의 인코딩 동안에 사용된 프로세싱 사이클수와 메모리 (22) 에 저장된 임계값을 비교함으로써, 계산 버짓이 초과되었는지 여부를 결정한다 (72). 계산 버짓을 초과하지 않았으면 (72의 '아니오' 분기), 임계값은 이전 프레임들의 적은 사용을 고려하여 증가될 수 있으며 (74), 비디오 블록들을 인코딩하는데 모션 추정을 이용할 수 있다 (75). 한편, 계산 버짓을 초과하였으면 (72의 '예' 분기), 후속 비디오 블록들의 모션 추정에 사용되는 탐색크기를 저감할 수 있으며, 모션 추정을 사용할 수 있다 (75). 즉, 계산 버짓을 초과한 것으로 결정할 때에, (도 6 에 도시된 바와 같이) 동시에 모션 추정을 종료하기 보다는, 도 7 에서, 이 기술은 수행되는 모션 추정의 범위를 동적으로 변경한다. 이러한 방식으로, 이 기술은 수행되는 계산수를 동적으로 조절할 수 있다. 설정된 계산 버짓에 관련된, 측정된 또는 추정된 계산 사용은 주기적 또는 일정한 기반으로 검사되어 인코딩 알고리즘을 동적으로 조절할 수 있다. 이러한 기술들은, 압축 비율에 있어서의 트레이드오프에 따라, 특히 자원 제한적인 플랫폼에서의 실시간 인코딩을 개선시킬 수 있다.
일단 프레임을 인코딩하면, 인코딩 콘트롤러 (24) 는 그 인코딩된 프레임을 메모리 (22) 에서 송신기 (14) 로 포워드한다. 그후, 송신기 (14) 는 인코딩된 프레임을 송신할 수 있다 (77). 그 다음으로, 도 7 에 도시된 기술은 추가적인 비디오 프레임들을 인코딩하는 것을 반복할 수도 있다 (71). 다른 예에서, 도 7 에 도시된 기술은 둘 이상의 비디오 프레임들의 인코딩에 확장할 수 있다. 즉, 하나의 프레임에 관계된 계산 절약분 또는 초과분은, 후속 프레임들에 대한 버짓 임계값 (budgeted threshold) 의 확립 및/또는 수정에 있어서, 또는 임의의 주어진 프레임 또는 프레임의 임의의 개별적인 비디오 블록에 대해 수행되는 정의된 탐색의 크기에 있어서, 고려될 수 있다.
어떤 경우에는, 여기에 설명된 기술들에 따라 인코딩된 프레임들은 MPEG-4 와 같은 하나 이상의 MPEG 표준들에 따르는 고유한 포맷을 가진다. 예를 들면, 비디오 프레임이 (N 개의) 비디오 블록들을 정의하면, 블록들의 시퀀스 (1 내지 M) 를 정의하는 제 1 비디오 블록들의 세트는 모션 벡터들을 사용하여 실질적으로 인코딩될 수 있다. 어떤 경우에는, 예를 들면, 만약 하나 이상의 블록에 대해 허용가능한 모션 벡터가 식별되지 않으면, 제 1 시퀀스에서의 수개의 비디오 블록들은 모션 벡터들을 사용하지 않고 인코딩될 수 있으며, 다른 경우들에서는 제 1 시퀀스에서의 모든 비디오 블록들을 모션 벡터를 이용하여 인코딩할 수 있다. 블록들의 시퀀스 (M+1 내지 N) 를 정의하는 제 2 비디오 블록들의 세트는 모션 벡터들을 사용하지 않고 인코딩될 수 있다. 예를 들면, 전술한 바와 같이 모션 인코더 (26) 가 디스에이블되면, 오직 테스쳐 인코더 (28) 만을 사용하여 남아있는 비디오 블록들을 인코딩할 수 있다. 이 포맷에 따라 정의되는 프레임은 장치 (10) 의 메모리 (22) 와 같은 컴퓨터 판독가능 매체에 저장할 수도 있다. 또한, 이 포맷에 따라 정의되는 프레임은 인코딩된 데이터로 변조된 반송파 (carrier wave) 의 형태로 컴퓨터 판독가능 매체에 저장될 수도 있다. 예를 들면, 변조된 반송파는 장치 (10) 로부터 송신기 (14) 및 안테나 (12) 를 통해 프레임을 송신하는데 사용되는 매체일 수 있다. 어떤 경우라도, 컴퓨터 판독가능 매체는 저장된 이미지 프레임을 포함할 수 있다.
이상, 많은 다른 실시형태들을 설명하였다. 예를 들면, 비디오 프레임들의 인코딩에 대한 계산 버짓을 설정하는 비디오 인코딩 기술들을 설명하였다. 설명한 기술들은 소정의 시나리오에서 계산을 회피함으로써 비디오 인코딩을 개선할 수 있으며, 인코딩 프로세스를 가속시킬 수 있으며, 비디오 인코딩 동안에 전력 소모를 저감할 수 있다. 이러한 방식으로, 이 기술들은 MPEG-4 와 같은 표준들에 따른 비디오 인코딩을 개선할 수 있으며, 계산 자원이 보다 제한적이고 전력 소모가 관심사인 무선 장치들 내에서 비디오 인코딩을 더 용이하게 구현할 수 있다. 또한, 이 기술들은 MPEG-4 디코딩 표준과 같은 디코딩 표준들과의 상호운용성에 영향을 주지 않을 수 있다.
그럼에도 불구하고, 청구범위의 사상 및 범위를 벗어나지 않고 여러 변경이 이루어질 수 있다. 예를 들면, 어떤 경우에는, 현재 사용가능한 계산 자원에 기초하여 모션 추정 기술을 변경할 수 있다. 예를 들면, 어떤 주어진 비디오 프레임의 인코딩 중에 사용가능한 계산 자원에 기초하여 탐색 기술을 변경할 수 있다. 즉, 어떤 경우에는, 계산 버짓을 보다 면밀하게 모니터링하여, 사용되는 모션 추정 기술의 범위를 동적으로 정할 수 있다. 특히, 모션 추정 동안에 사용되는 비교 및 탐색의 수는, 임계값에 관련하여, 사용된 계산수에 의해 결정되는 사용가능한 계산량에 기초하여 동적으로 조절되거나 규정될 수 있다. 예를 들면, 보다 많은 계산 자원을 사용할 수 있으면, 모션 추정 동안에 보다 포괄적인 탐색을 사용할 수 있다. 그러나, 임의의 주어진 비디오 프레임의 인코딩 동안에 계산 자원이 보다 제한되면, 덜 포괄적인 탐색이 사용될 수 있다. 어떤 점에서는, 모션 추정을 약술한 바와 같이 완전히 회피할 수 있다. 모션 추정 기술들을 수정, 조절, 또는 종료해야 하는 시점을 정하기 위해, 많은 다른 임계값들을 확립할 수도 있다. 전술한 기술들에 대한 이들 또는 다른 수정 및 확장을 행함으로써 인코딩 프로세스를 개선할 수 있다.
이 기술들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 어떤 조합으로 구현할 수 있다. 소프트웨어에서 구현하면, 이 기술들은, MPEG-4 표준에 따른 비디오 스트림들을 인코딩하는 장치에서 수행될 때에 전술한 하나 이상의 방법을 수행하는 프로그램 코드를 포함하는 컴퓨터 판독가능 매체와 관련될 수 있다. 그 경우에, 컴퓨터 판독가능 매체는, SDRAM 과 같은 RAM, ROM, NVRAM, EEPROM, 플래시 메모리 등을 포함할 수 있다.
프로그램 코드는 메모리상에 컴퓨터 판독가능 명령들의 형태로 저장할 수도 있다. 그 경우에, 여기에 설명한 하나 이상의 기술들을 수행하기 위해, DSP 와 같은 프로세서가 메모리에 저장된 명령들을 수행할 수 있다. 어떤 경우에는, 인코딩 프로세스를 가속시키기 위해 여러 하드웨어 컴포넌트들을 호출하는 DSP 에 의해 수행할 수도 있다. 다른 경우에, 비디오 인코더는, 마이크로프로세서, 하나 이상의 주문형 반도체 (ASIC), 하나 이상의 필드 프로그램가능 게이트 어레이 (FPGA), 또는 그 밖의 하드웨어-소프트웨어의 조합으로서 구현할 수 있다. 이들 또는 다른 실시형태들은 다음 청구항들의 범위내에 있다.

Claims (57)

  1. 주어진 비디오 프레임이 인코딩될 때 사용되는 프로세싱 사이클수를 결정하고 그 결정된 프로세싱 사이클수에 기초하여 인코딩 모드를 선택함으로써 비디오 프레임들을 인코딩하는 인코더; 및
    상기 인코딩된 비디오 프레임들을 송신하는 송신기를 구비하고,
    상기 인코더는, 인코딩 동안에 사용되는 프로세싱 사이클수가 임계값을 초과하는 경우, 모션 추정 기술들을 사용하지 않고 상기 주어진 비디오 프레임을 인코딩하는 인코딩 모드를 선택하고,
    상기 인코더는, 다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하고 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절함으로써, 상기 임계값을 정하는, 장치.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 인코더는, 인코딩 동안에 사용되는 상기 프로세싱 사이클수가 상기 임계값 이하인 경우, 모션 추정 기술들을 사용하여 상기 주어진 비디오 프레임을 인코딩하는 인코딩 모드를 선택하는, 장치.
  4. 제 1 항에 있어서,
    상기 인코더는 상기 주어진 비디오 프레임의 인코딩에 대한 계산 버짓 (computational budget) 을 정의하기 위해 상기 임계값을 정하는, 장치.
  5. 삭제
  6. 제 1 항에 있어서,
    상기 프로세싱 사이클수를 결정하는 것은 상기 주어진 비디오 프레임의 인코딩 동안에 사용되는 상기 프로세싱 사이클수를 카운팅하는 것을 포함하는, 장치.
  7. 제 1 항에 있어서,
    비디오 프레임들을 실시간으로 캡쳐하는 이미지 센서를 더 구비하고,
    상기 인코더는 상기 비디오 프레임들을 실시간으로 인코딩하고,
    상기 송신기는 상기 인코딩된 비디오 프레임들을 실시간으로 송신하는, 장치.
  8. 제 1 항에 있어서,
    상기 비디오 프레임들은 MPEG-4 표준에 따라 인코딩되는, 장치.
  9. 제 1 항에 있어서,
    상기 장치는 무선 장치인, 장치.
  10. 제 1 항에 있어서,
    상기 장치는 전지급전식 장치인, 장치.
  11. 제 1 항에 있어서,
    상기 인코더는 기계 판독가능 명령들을 실행하는 디지털 신호 프로세서를 구비하는, 장치.
  12. 비디오 프레임의 인코딩 동안에 사용되는 프로세싱 사이클수를 결정하는 단계;
    상기 결정된 프로세싱 사이클수에 기초하여 상기 비디오 프레임을 선택적으로 인코딩하는 단계; 및
    인코딩 동안에 사용되는 상기 프로세싱 사이클수가 임계값을 초과하는 경우, 모션 추정 기술들을 사용하지 않는, 상기 비디오 프레임에 대한 인코딩 모드를 선택하는 단계를 포함하고,
    상기 임계값은, 다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하고 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절함으로써 정해지는, 방법.
  13. 삭제
  14. 제 12 항에 있어서,
    인코딩 동안에 사용되는 상기 프로세싱 사이클수가 상기 임계값 이하인 경우, 모션 추정 기술들을 사용하는, 상기 비디오 프레임에 대한 인코딩 모드를 선택하는 단계를 더 포함하는, 방법.
  15. 제 12 항에 있어서,
    상기 비디오 프레임의 인코딩에 대한 계산 버짓을 정의하기 위해 상기 임계값을 정하는 단계를 더 포함하는, 방법.
  16. 삭제
  17. 제 12 항에 있어서,
    상기 프로세싱 사이클수를 결정하는 단계는 상기 비디오 프레임의 인코딩 동안에 사용되는 상기 프로세싱 사이클수를 카운팅하는 단계를 포함하는, 방법.
  18. 제 12 항에 있어서,
    상기 비디오 프레임을 선택적으로 인코딩하는 단계는 상기 비디오 프레임을 선택적으로 인코딩하는 동안에 사용되는 프로세싱 사이클수를 조절하는 단계를 포함하는, 방법.
  19. 비디오 프레임을 인코딩하는데 사용가능한 프로세싱 사이클수를 정하는 임계값을 정하는 단계;
    상기 비디오 프레임의 인코딩 동안에 사용되는 프로세싱 사이클수를 결정하는 단계;
    인코딩 동안에 사용되는 프로세싱 사이클수가 상기 임계값 이하인 경우, 모션 추정 기술들을 사용하여 상기 비디오 프레임을 인코딩하는 단계; 및
    인코딩 동안에 사용되는 상기 프로세싱 사이클수가 상기 임계값을 초과하는 경우, 모션 추정 기술들을 사용하지 않고 상기 비디오 프레임을 인코딩하는 단계를 포함하고,
    상기 임계값을 정하는 단계는, 다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하는 단계, 및 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절하는 단계를 포함하는, 방법.
  20. 제 19 항에 있어서,
    상기 프로세싱 사이클수를 결정하는 단계는 상기 비디오 프레임의 인코딩 동안에 사용되는 상기 프로세싱 사이클수를 카운팅하는 단계를 포함하는, 방법.
  21. 삭제
  22. 주어진 비디오 프레임을 인코딩하기 위한 계산 버짓을 정의하기 위해 임계값을 정하고, 상기 주어진 비디오 프레임의 인코딩 동안에 사용되는 프로세싱 사이클수를 결정하고, 인코딩 동안에 사용되는 프로세싱 사이클수가 상기 임계값 이하인 경우 모션 추정 기술들을 사용하여 상기 주어진 비디오 프레임을 인코딩하고, 인코딩 동안에 사용되는 상기 프로세싱 사이클수가 상기 임계값을 초과하는 경우 모션 추정 기술들을 사용하지 않고 상기 주어진 비디오 프레임을 인코딩함으로써, 비디오 프레임들을 인코딩하는 인코더; 및
    상기 인코딩된 비디오 프레임들을 송신하는 송신기를 구비하고,
    상기 인코더는, 다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하고 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절함으로써, 상기 임계값을 정하는, 장치.
  23. 제 22 항에 있어서,
    상기 장치는 디지털 TV, 무선 통신 장치, 개인휴대 정보단말기 (PDA), 랩탑 컴퓨터, 데스크탑 컴퓨터, 디지털 카메라, 디지털 레코딩 장치, 비디오 기능을 구비한 셀룰러 무선전화, 및 비디오 기능을 구비한 위성 무선전화로 이루어진 그룹중에서 선택되는, 장치.
  24. 컴퓨터 실행가능한 명령들을 저장하는 메모리; 및
    주어진 비디오 프레임의 인코딩 동안에 사용되는 프로세싱 사이클수를 결정하고 상기 결정된 프로세싱 사이클수에 기초하여 상기 주어진 비디오 프레임을 인코딩하기 위한 인코딩 모드를 선택하는 명령들을 실행하는 프로세서를 구비하고,
    상기 프로세서는 인코딩 동안에 사용되는 프로세싱 사이클수가 상기 임계값을 초과하는 경우 모션 추정 기술들을 사용하지 않고 상기 주어진 비디오 프레임을 인코딩하는 인코딩 모드를 선택하고, 다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하고 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절함으로써, 상기 임계값을 정하는 명령들을 실행하는, 장치.
  25. 제 24 항에 있어서,
    상기 메모리는 비디오 인코딩 루틴에 대한 계산 버짓을 정의하는 상기 임계값을 저장하는, 장치.
  26. 제 25 항에 있어서,
    상기 프로세서는 인코딩 동안에 사용되는 상기 프로세싱 사이클수가 상기 임계값 이하인 경우 모션 추정 기술들을 이용하여 상기 주어진 비디오 프레임을 인코딩하는 인코딩 모드를 선택하는 명령들을 더 실행하는, 장치.
  27. 제 25 항에 있어서,
    상기 프로세서는 상기 주어진 비디오 프레임의 인코딩을 위한 계산 버짓을 정의하기 위해 상기 임계값을 정하는 명령들을 더 실행하는, 장치.
  28. 삭제
  29. 제 24 항에 있어서,
    상기 프로세서는, 상기 주어진 비디오 프레임의 인코딩 동안에 사용되는 상기 프로세싱 사이클수를 카운팅하는 명령들을 실행함으로써, 상기 프로세싱 사이클수를 결정하는 명령들을 실행하는, 장치.
  30. 컴퓨터 실행가능한 명령들 및 비디오 인코딩 루틴에 대한 계산 버짓을 정의하는 임계값을 저장하는 메모리; 및
    메모리에 저장되는 상기 임계값을 정하고, 주어진 비디오 프레임의 인코딩 동안에 사용되는 프로세싱 사이클수를 결정하고, 인코딩 동안에 사용되는 프로세싱 사이클수가 상기 임계값 이하인 경우 모션 추정 기술들을 사용하여 상기 주어진 비디오 프레임을 인코딩하고, 인코딩 동안에 사용되는 상기 프로세싱 사이클수가 상기 임계값을 초과하는 경우 모션 추정 기술들을 사용하지 않고 상기 주어진 비디오 프레임을 인코딩하는 명령들을 실행하는 프로세서를 구비하고,
    상기 프로세서는 다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하고 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절하는 명령들을 실행함으로써 상기 임계값을 정하는 명령들을 실행하는, 장치.
  31. 제 30 항에 있어서,
    상기 프로세서는 상기 주어진 비디오 프레임의 인코딩 동안에 사용되는 상기 프로세싱 사이클수를 카운팅하는 명령들을 수행함으로써, 상기 프로세싱 사이클수를 결정하는 명령들을 실행하는, 장치.
  32. 삭제
  33. MPEG-4 표준에 따라 비디오 블록들을 인코딩하는 장치로서,
    비디오 프레임의 인코딩 동안에 사용되는 프로세싱 사이클수를 결정하고;
    상기 결정된 프로세싱 사이클수에 기초하여 서로 다른 인코딩 모드들을 이용하여 상기 비디오 프레임을 선택적으로 인코딩하고,
    상기 장치는, 인코딩 동안에 사용되는 프로세싱 사이클수가 임계값을 초과하는 경우 모션 추정 기술들을 사용하지 않고 상기 비디오 프레임을 인코딩하고,
    상기 임계값은, 다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하고 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절함으로써 정해지는, 장치.
  34. 삭제
  35. 제 33 항에 있어서,
    상기 프로세싱 사이클수를 결정하는 것은 상기 비디오 프레임의 인코딩 동안에 사용되는 상기 프로세싱 사이클수를 카운팅하는 것을 포함하는, 장치.
  36. MPEG-4 표준에 따라 비디오 블록들을 인코딩하는 장치로서,
    임계값을 프로세싱 사이클수로서 정하고;
    상기 비디오 프레임의 인코딩 동안에 사용되는 프로세싱 사이클수를 결정하고;
    인코딩 동안에 사용되는 프로세싱 사이클수가 상기 임계값 이하인 경우, 모션 추정 기술들을 사용하여 상기 비디오 프레임을 인코딩하고;
    인코딩 동안에 사용되는 상기 프로세싱 사이클수가 상기 임계값을 초과하는 경우, 모션 추정 기술들을 사용하지 않고 상기 비디오 프레임을 인코딩하고,
    상기 임계값을 정하는 것은 다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하고, 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절하는 것을 포함하는, 장치.
  37. 제 36 항에 있어서,
    상기 프로세싱 사이클수를 결정하는 것은 상기 비디오 프레임의 인코딩 동안에 사용되는 상기 프로세싱 사이클수를 카운팅하는 것을 포함하는, 장치.
  38. 삭제
  39. MPEG-4 표준에 따르는 비디오 스트림을 인코딩하는 장치에서 실행시,
    비디오 프레임의 인코딩 동안에 사용하는 프로세싱 사이클수를 결정하고;
    상기 결정된 프로세싱 사이클수에 기초하여 서로 다른 인코딩 모드들을 사용하여 상기 비디오 프레임을 선택적으로 인코딩하고;
    인코딩 동안에 사용되는 프로세싱 사이클수가 임계값을 초과하는 경우 모션 추정 기술들을 사용하지 않고 상기 비디오 프레임을 인코딩하고;
    다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하고 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절하는 것에 의해 상기 임계값을 정하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  40. 삭제
  41. 제 39 항에 있어서,
    실행시 상기 명령들은, 인코딩 동안에 사용되는 상기 프로세싱 사이클수가 상기 임계값 이하인 경우 모션 추정 기술들을 사용하여 상기 비디오 프레임을 인코딩하는, 컴퓨터 판독가능 매체.
  42. 제 39 항에 있어서,
    실행시 상기 명령들은 상기 비디오 프레임의 인코딩에 대한 계산 버짓을 정의하기 위해 상기 임계값을 정하는, 컴퓨터 판독가능 매체.
  43. 삭제
  44. 제 39 항에 있어서,
    실행시 상기 명령들은 상기 비디오 프레임의 인코딩 동안에 사용되는 상기 프로세싱 사이클수를 카운팅함으로써 상기 프로세싱 사이클수를 결정하는, 컴퓨터 판독가능 매체.
  45. MPEG-4 표준에 따르는 비디오 스트림을 인코딩하는 장치에서 실행시,
    비디오 프레임을 인코딩하기 위한 계산 버짓을 정의하기 위해 임계값을 정하고;
    상기 비디오 프레임의 인코딩 동안에 사용되는 프로세싱 사이클수를 결정하고;
    인코딩 동안에 사용되는 상기 프로세싱 사이클수가 상기 임계값 이하인 경우, 모션 추정 기술들을 사용하여 상기 비디오 프레임을 인코딩하고;
    인코딩 동안에 사용되는 상기 프로세싱 사이클수가 상기 임계값을 초과하는 경우, 모션 추정 기술들을 사용하지 않고 상기 비디오 프레임을 인코딩하고;
    다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하고 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절함으로써, 상기 임계값을 정하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  46. 제 45 항에 있어서,
    실행시 상기 명령들은 상기 비디오 프레임의 인코딩 동안에 사용되는 상기 프로세싱 사이클수를 카운팅함으로써 상기 프로세싱 사이클수를 결정하는, 컴퓨터 판독가능 매체.
  47. 삭제
  48. 비디오 프레임의 인코딩 동안에 사용되는 프로세싱 사이클수를 결정하는 수단; 및
    인코딩 동안에 사용되는 프로세싱 사이클수가 임계값을 초과하는 경우, 모션 추정 기술들을 사용하지 않고 상기 비디오 프레임을 인코딩하는 수단을 구비하고,
    상기 임계값은, 다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하고 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절함으로써 정해지는, 장치.
  49. 비디오 프레임을 인코딩하기 위한 계산 버짓을 정의하기 위해 임계값을 정하는 수단;
    상기 비디오 프레임의 인코딩 동안에 사용되는 프로세싱 사이클수를 결정하는 수단;
    인코딩 동안에 사용되는 프로세싱 사이클수가 상기 임계값 이하인 경우, 모션 추정 기술들을 사용하여 상기 비디오 프레임을 인코딩하는 수단; 및
    인코딩 동안에 사용되는 프로세싱 사이클수가 상기 임계값을 초과하는 경우, 모션 추정 기술들을 사용하지 않고 상기 비디오 프레임을 인코딩하는 수단을 구비하고,
    상기 임계값을 정하는 수단은, 다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하는 수단, 및 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절하는 수단을 포함하는, 장치.
  50. 비디오 프레임을 인코딩하기 위한 계산 버짓을 정의하기 위해 임계값을 정하는 단계;
    상기 비디오 프레임이 인코딩될 때 사용되는 프로세싱 사이클수를 결정하는 단계; 및
    상기 임계값에 관련하여 상기 결정된 프로세싱 사이클수에 기초하여 인코딩 루틴을 조절하는 단계를 포함하고,
    상기 임계값을 정하는 단계는, 다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하는 단계, 및 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절하는 단계를 포함하는, 방법.
  51. MPEG-4 표준에 따르는 비디오 스트림을 인코딩하는 장치에서 실행시,
    비디오 프레임을 인코딩하기 위한 계산 버짓을 정의하기 위해 임계값을 정하고;
    상기 비디오 프레임이 인코딩될 때 사용되는 프로세싱 사이클수를 결정하고;
    상기 임계값에 관련하여 상기 결정된 프로세싱 사이클수에 기초하여 인코딩 루틴을 조절하는 명령들을 포함하고,
    상기 임계값은, 다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하고 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절함으로써 정해지는, 컴퓨터 판독가능 매체.
  52. 컴퓨터 실행가능 명령들 및 비디오 인코딩 루틴을 위한 계산 버짓을 정의하는 임계값을 저장하는 메모리; 및
    상기 임계값을 정하고, 상기 비디오 프레임이 인코딩될 때 사용되는 프로세싱 사이클수를 결정하고, 상기 임계값에 관련하여 상기 결정된 프로세싱 사이클수에 기초하여 상기 인코딩 루틴을 조절하는 명령들을 실행하는 프로세서를 구비하고,
    상기 임계값은, 다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하고 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절함으로써 정해지는, 장치.
  53. 삭제
  54. 삭제
  55. 비디오 프레임의 인코딩 동안에 사용되는 프로세싱 사이클수가 임계값 이하이면, 제 1 인코딩 모드에 따라 비디오 프레임의 제 1 비디오 블록들 세트를 인코딩하는 단계; 및
    상기 프로세싱 사이클수가 상기 임계값을 초과하는 경우, 제 2 인코딩 모드에 따라 상기 비디오 프레임의 제 2 비디오 블록들 세트를 인코딩하는 단계를 포함하고,
    상기 임계값은, 다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하고 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절함으로써 정해지는, 방법.
  56. 제 55 항에 있어서,
    상기 제 1 인코딩 모드는 모션-기반 인코딩을 포함하고 상기 제 2 인코딩 모드는 모션-기반 인코딩을 포함하지 않는, 방법.
  57. MPEG-4 표준에 따라 인코딩되는 비디오 프레임을 구비하는 컴퓨터 판독가능 매체로서,
    상기 비디오 프레임은 N 개의 비디오 블록들을 포함하고,
    인코딩 동안에 사용되는 프로세싱 사이클수가 임계값 이하인 경우, 비디오 블록들의 제 1 시퀀스 (1 내지 M 번째 비디오 프레임, M 은 1<M<N 을 만족하는 정수) 는 모션 벡터들을 사용하여 인코딩되며,
    상기 프로세싱 사이클수가 상기 임계값을 초과하는 경우, 비디오 블록들의 제 2 시퀀스 (M+1 내지 N 번째 비디오 프레임) 는 모션 벡터들을 사용하지 않고 인코딩되고,
    상기 임계값은, 다수의 이전에 인코딩된 비디오 프레임들과 관련된 평균 프로세싱 사이클수를 계산하고 상기 계산된 평균 프로세싱 사이클수를 이용하여 상기 임계값을 조절함으로써 정해지는, 컴퓨터 판독가능 매체.
KR1020047020092A 2002-06-28 2003-06-18 계산적으로 제약된 비디오 인코딩 KR100937616B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/187,091 US7515634B2 (en) 2002-06-28 2002-06-28 Computationally constrained video encoding
US10/187,091 2002-06-28
PCT/US2003/019399 WO2004004356A2 (en) 2002-06-28 2003-06-18 Computationally constrained video encoding

Publications (2)

Publication Number Publication Date
KR20050012785A KR20050012785A (ko) 2005-02-02
KR100937616B1 true KR100937616B1 (ko) 2010-01-22

Family

ID=29779989

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047020092A KR100937616B1 (ko) 2002-06-28 2003-06-18 계산적으로 제약된 비디오 인코딩

Country Status (7)

Country Link
US (1) US7515634B2 (ko)
EP (1) EP1518416A2 (ko)
JP (1) JP4594087B2 (ko)
KR (1) KR100937616B1 (ko)
CN (1) CN1666529B (ko)
AU (1) AU2003280486A1 (ko)
WO (1) WO2004004356A2 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100506864B1 (ko) * 2002-10-04 2005-08-05 엘지전자 주식회사 모션벡터 결정방법
US9351013B2 (en) 2003-11-13 2016-05-24 Qualcomm Incorporated Selective and/or scalable complexity control for video codecs
US7639743B2 (en) * 2004-03-25 2009-12-29 Sony Corporation Image decoder and image decoding method and program
DE102004036975A1 (de) * 2004-07-30 2006-03-23 Siemens Ag Verfahren zum Beobachten einer Vorrichtung und zugehöriges Computerprogramm
JP5058823B2 (ja) * 2005-01-28 2012-10-24 トムソン ライセンシング 実時間フレーム符号化方法及び装置
US8031766B2 (en) * 2005-08-02 2011-10-04 Lsi Corporation Performance adaptive video encoding with concurrent decoding
US8755440B2 (en) * 2005-09-27 2014-06-17 Qualcomm Incorporated Interpolation techniques in wavelet transform multimedia coding
US7852940B2 (en) * 2005-10-20 2010-12-14 Qualcomm Incorporated Scalable motion estimation for video encoding
US9479794B2 (en) 2005-11-10 2016-10-25 Freescale Semiconductor, Inc. Resource efficient video processing via prediction error computational adjustments
GB2432985A (en) * 2005-12-05 2007-06-06 Univ Robert Gordon Encoder control system based on a target encoding value
US8160144B1 (en) * 2006-05-10 2012-04-17 Texas Instruments Incorporated Video motion estimation
JP5080132B2 (ja) * 2006-06-12 2012-11-21 三星電子株式会社 データ補償回路及びこれを有する表示装置
US9883202B2 (en) 2006-10-06 2018-01-30 Nxp Usa, Inc. Scaling video processing complexity based on power savings factor
WO2008147565A2 (en) * 2007-05-25 2008-12-04 Arc International, Plc Adaptive video encoding apparatus and methods
WO2012089671A1 (en) 2010-12-29 2012-07-05 Skype Dynamical adaptation of data encoding dependent on cpu load
US9277230B2 (en) * 2011-11-23 2016-03-01 Qualcomm Incorporated Display mode-based video encoding in wireless display devices
US9008177B2 (en) 2011-12-12 2015-04-14 Qualcomm Incorporated Selective mirroring of media output
JPWO2014054325A1 (ja) * 2012-10-05 2016-08-25 ソニー株式会社 符号化制御装置および符号化制御方法
CN103402086B (zh) * 2013-07-22 2017-02-15 华为技术有限公司 一种用于视频编码系统的性能控制方法及编码器
US20150181208A1 (en) * 2013-12-20 2015-06-25 Qualcomm Incorporated Thermal and power management with video coding
US20160202228A1 (en) * 2015-01-08 2016-07-14 International Business Machines Corporation Water quality monitoring and early event detection
CN105141872B (zh) * 2015-08-20 2019-02-05 成都鹰眼视觉科技有限公司 一种缩时处理视频图像的方法
US10148983B2 (en) * 2015-09-25 2018-12-04 Qualcomm Incorporated Methods and systems of improved video stream switching and random access

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010053814A (ko) * 1999-12-01 2001-07-02 윤종용 영상 부호화 시스템의 부호화방식 선택장치 및 방법
WO2002025950A2 (en) * 2000-09-20 2002-03-28 General Instrument Corporation Load balancing and mode selection in a multi-processor video transcoder

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5748789A (en) * 1996-10-31 1998-05-05 Microsoft Corporation Transparent block skipping in object-based video coding systems
EP0919952A1 (en) 1997-11-28 1999-06-02 Ecole Polytechnique Federale De Lausanne Method for coding/decoding of a digital signal
US6195389B1 (en) * 1998-04-16 2001-02-27 Scientific-Atlanta, Inc. Motion estimation system and methods
FR2796778B1 (fr) 1999-07-20 2001-10-19 Canon Kk Procede et dispositif de compression par bloc de donnees numeriques
JP2002064802A (ja) 2000-08-21 2002-02-28 Sony Corp データ伝送システム、データ伝送装置及び方法、シーン記述処理装置及び方法
JP3670566B2 (ja) * 2000-10-03 2005-07-13 日本電信電話株式会社 処理時間適応画像符号化方法およびそのプログラムの記録媒体
US6535238B1 (en) * 2001-10-23 2003-03-18 International Business Machines Corporation Method and apparatus for automatically scaling processor resource usage during video conferencing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010053814A (ko) * 1999-12-01 2001-07-02 윤종용 영상 부호화 시스템의 부호화방식 선택장치 및 방법
WO2002025950A2 (en) * 2000-09-20 2002-03-28 General Instrument Corporation Load balancing and mode selection in a multi-processor video transcoder
KR20030090598A (ko) * 2000-09-20 2003-11-28 제너럴 인스트루먼트 코포레이션 비디오 멀티-프로세서 시스템에서의 채널의 처리모드 선택

Also Published As

Publication number Publication date
AU2003280486A8 (en) 2004-01-19
AU2003280486A1 (en) 2004-01-19
EP1518416A2 (en) 2005-03-30
CN1666529B (zh) 2012-03-28
JP2005531979A (ja) 2005-10-20
WO2004004356A3 (en) 2004-03-25
CN1666529A (zh) 2005-09-07
US20040001545A1 (en) 2004-01-01
KR20050012785A (ko) 2005-02-02
WO2004004356A2 (en) 2004-01-08
JP4594087B2 (ja) 2010-12-08
US7515634B2 (en) 2009-04-07

Similar Documents

Publication Publication Date Title
KR100937616B1 (ko) 계산적으로 제약된 비디오 인코딩
US7359559B2 (en) Video encoding techniques
RU2498523C2 (ru) Быстрое принятие решения о дельте параметра квантования макроблока
EP1958448B1 (en) Multi-dimensional neighboring block prediction for video encoding
US20060018552A1 (en) Efficient rate control techniques for video encoding
EP1829381A2 (en) Motion estimation techniques for video encoding
EP1653744A1 (en) Non-integer pixel sharing for video encoding
KR100960847B1 (ko) 비디오 인코딩을 위한 모션 추정 기술
EP1862011A1 (en) Adaptive frame skipping techniques for rate controlled video encoding
CN101516028B (zh) 一种针对移动网视频通话应用的高效视频编码技术
FI110744B (fi) Menetelmä liike-estimoinnin suorittamiseksi videokoodauksessa, videokoodausjärjestelmä sekä videokoodauslaite
JP2006261950A (ja) 周波数領域中のブロックマッチングの動き推定方法

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