KR20130130695A - 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하는 방법 및 시스템 - Google Patents

복수의 프로세서를 사용하여 비디오 프레임을 인코딩하는 방법 및 시스템 Download PDF

Info

Publication number
KR20130130695A
KR20130130695A KR1020137004902A KR20137004902A KR20130130695A KR 20130130695 A KR20130130695 A KR 20130130695A KR 1020137004902 A KR1020137004902 A KR 1020137004902A KR 20137004902 A KR20137004902 A KR 20137004902A KR 20130130695 A KR20130130695 A KR 20130130695A
Authority
KR
South Korea
Prior art keywords
processor
pixels
current frame
pixel
frame
Prior art date
Application number
KR1020137004902A
Other languages
English (en)
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 KR20130130695A publication Critical patent/KR20130130695A/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/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
    • 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/182Methods 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 pixel
    • 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

Landscapes

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

Abstract

본 방법과 시스템은 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하는 것을 제공한다. 일례에서, 제1프로세서는 제2프로세서에 의해 사용하기 위해 현재 프레임에 있는 픽셀 데이터를 이전의 프레임에 있는 대응하는 픽셀 데이터와 비교하는 것에 의해 상기 현재 프레임에 있는 복수의 비 고정 픽셀의 위치를 제공한다. 상기 제1프로세서는 상기 제2프로세서에 의해 사용하기 위해 상기 현재 프레임에 있는 실질적으로 비 고정 픽셀만을 기술하는 픽셀 데이터를 더 제공한다. 제2프로세서는 상기 비 고정 픽셀 위치 정보와 실질적으로 비 고정 픽셀만을 기술하는 픽셀 데이터에 기초하여 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터를 계산한다. 제1프로세서는 제2프로세서로부터 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터를 사용하여 현재 프레임을 인코딩한다.

Description

복수의 프로세서를 사용하여 비디오 프레임을 인코딩하는 방법 및 시스템{METHOD AND SYSTEM FOR ENCODING VIDEO FRAMES USING A PLURALITY OF PROCESSORS}
본 발명은 비디오 프레임을 인코딩하는 방법 및 시스템에 관한 것이다.
종래의 비디오 인코딩 시스템은 이용 가능한 대역폭을 사용하여 통신 채널을 통해 전송되어야 하는 정보의 양을 감소시키기 위해 다수의 기술을 이용한다. 이들 기술은 디코딩되고 디스플레이된 비디오에 허용가능하지 않은 열화를 생성함이 없이 이용 가능한 대역폭을 사용하여 통신 채널을 통해 전송되는 정보의 양을 감소시키려는 것이다. 출력 비디오를 허용가능하지 않은 레벨로 열화시킴이 없이 이용 가능한 대역폭을 사용하여 통신 채널을 통해 전송되는 정보의 양을 감소시키기 위하여, 이들 기술은 연속하는 비디오 프레임들 사이에 시간 중복(temporal redundancy)을 이용한다.
이용 가능한 대역폭을 사용하여 통신 채널을 통해 전송되어야 하는 정보의 양을 감소시키기 위해 사용되는 하나의 예시적인 기술은 블록 매칭(block-matching)이라고 언급된다. 종래의 블록 매칭 알고리즘은 입력되는 (즉, 현재) 비디오 프레임에 있는 픽셀 블록을 이전에 저장된 참조 비디오 프레임에 있는 (즉, 매칭하는) 픽셀 블록에 대응하는 것으로 식별하려고 시도한다. 블록은 예를 들어 픽셀, 픽셀 집합, (고정 또는 가변 사이즈의) 픽셀 영역, 또는 비디오 프레임의 실질적으로 임의의 부분일 수 있는 것으로 이해된다. 블록 매칭을 수행하는데 사용되는 알고리즘은 이 기술 분야에 통상의 지식을 가진 자라면 이해할 수 있는 것으로 특히 예를 들어, MSE(mean square error), MAD(mean absolute difference), 및 SAD(sum absolute difference)를 포함한다. 연속하는 비디오 프레임들 사이에 매칭 블록을 식별하는 것은 움직임 추정으로 알려진 추가적인 대역폭-보존 기술의 적용을 가능하게 한다.
움직임 추정은 현재 프레임에 있는 픽셀 블록이 참조 비디오 프레임에 있는 위치로부터 얼마나 멀리 이동되었는지를 결정하기 위해 현재 비디오 프레임에 있는 픽셀 블록을 이전에 저장된 참조 비디오 프레임에 있는 대응하는 픽셀 블록과 비교하는 기술이다. 움직임 추정은 움직임 벡터 세트의 계산을 수반한다. 움직임 벡터 세트에서 각 움직임 벡터는 저장된 참조 비디오 프레임에 있는 대응하는 픽셀 블록으로부터 현재 비디오 프레임에 있는 특정 픽셀 블록의 변위량을 나타낸다. 픽셀 블록에 있는 각 픽셀에 대한 전체 픽셀 데이터를 전송하는 대신에 주어진 픽셀 블록에 대한 움직임 벡터 데이터를 전송하는 것에 의해 대역폭이 보존될 수 있다. 이것은 움직임 벡터 데이터가 주어진 픽셀 블록에 대한 픽셀 데이터보다 상당히 더 작은 것으로 인한 것이다.
대역폭과 인코딩 속도에 영향을 미치는 관련된 문제는 인코딩 시스템의 물리적 아키텍처이다. 예를 들어, 많은 종래의 인코딩 시스템에서, 블록 매칭 및 움직임 추정은 중앙 처리 유닛(CPU)과 같은 동일한 프로세서에서 수행된다. 그러나, 움직임 추정은 비디오 인코딩에서 수행되는 대부분의 연산 집약적인 동작(compute-intensive operation)인 것으로 인식된다. 예를 들어, H.264/AVC(advanced video encoding) 표준과 일치하는 비디오 인코딩을 수행할 때, 움직임 추정 연산은 총 인코딩 시간의 70%만큼 많이 차지한다. 그리하여, 단일 프로세서에서 모든 인코딩 압축 기술을 수행하는 것은 종종 바람직하지 않는데 이는 그렇게 하는 것이 비디오 인코딩과 관련 없는 다른 동작을 동시에 수행하는 프로세서의 능력을 제한하기 때문이다. 따라서, 기존의 기술은 다른 프로세서에 특정 인코딩 연산을 오프로드(off-loaded)한다.
예를 들어, 일부 기존의 인코딩 시스템은 CPU에 대해가 아니라 GPU(graphics processing unit)에 대해 움직임 추정을 수행한다. GPU와 같은 다른 프로세서에 움직임 추정을 오프로드하는 것에 의해 기본 프로세서(예를 들어, CPU)는 다른 동작을 수행하는데 자유롭다. 이 설계가 기본 프로세서를 자유롭게 하지만, 그럼에도 불구하고 이것은 다수의 단점을 나타낸다.
예를 들어, 프로세서들 사이에 인코딩 연산을 분할하는 것은 제1프로세서(예를 들어, CPU)와 제2프로세서(예를 들어, GPU) 사이에 통신 채널(예를 들어, 데이터 버스)을 통한 데이터 병목을 야기할 수 있다. 이 데이터 병목은 데이터가 입력되는 만큼 제2프로세서가 빠르게 이 입력 데이터를 처리할 수 없는 것으로 인해 야기된다. 따라서, 처리를 위해 제2프로세서에 송신된 데이터는 제2프로세서가 이를 처리할 수 있을 때까지 큐(queue)에 대기하여야 한다. 이 문제는 기존의 인코딩 시스템이 모든 픽셀 블록에 대한 픽셀 데이터를 GPU에 송신하는 것으로 인해 더 악화된다. 비디오 프레임을 인코딩하는 이 기술은 연산의 복잡성과 처리 속도와 관련하여 비효율적으로 된다.
다른 인코딩 방법은 서브샘플링된 픽셀 데이터를 제1프로세서로부터 제2프로세서로 송신하는 것에 의해 2개의 프로세서들 사이에 메모리 트래픽을 감소시키려고 시도한다. 예를 들어, 색차 서브샘플링으로 알려진 하나의 인코딩 방법은 휘도 정보에 대한 것보다는 색차 정보에 대해 더 적은 해상도를 구현(즉, 색차 정보를 "서브 샘플링")하는 것에 의해 프로세서들 사이에 메모리 트래픽을 감소시키려고 시도한다. 그러나, 이 기술은 예를 들어 제2프로세서에 의해 수행되는 움직임 추정의 정밀도를 감소시키는 경향이 있다. 이것은 인코딩된 데이터가 서브 샘플링될 때 움직임 추정을 결정하는데 고려할 정보가 더 적기(예를 들어, 색차 정보가 더 적기) 때문이다.
따라서, 비디오 인코딩 연산의 복잡성을 감소시키는 동시에 비디오 인코딩을 수행하는데 걸리는 시간을 감소시키는, 비디오 프레임을 인코딩하는 개선된 방법 및 시스템에 대한 요구가 존재한다.
본 발명은 동일한 참조 부호가 동일한 요소를 나타내는 첨부 도면과 함께 이하 상세한 설명을 참조하여 더 잘 이해될 것이다.
도 1은 본 발명에 제시된 일례에 따라 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하고 디코딩하는 시스템을 일반적으로 도시한 블록도;
도 2는 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하는 방법의 일례를 도시한 흐름도;
도 3은 본 발명에 제시된 일례에 따라 비디오 프레임을 인코딩하는 인코더를 일반적으로 도시한 블록도;
도 4는 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하는 방법의 다른 예를 도시한 흐름도.
본 발명은 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하는 방법 및 시스템을 제공한다. 일례에서, 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하는 방법이 개시된다. 이 예에서, 본 방법은 제1프로세서에 의해 현재 프레임에 있는 복수의 비 고정 픽셀(non-stationary pixels)의 위치를 제공하는 단계를 포함한다. 현재 프레임에 있는 복수의 비 고정 픽셀의 위치는 제2프로세서에 의해 사용하기 위해 현재 프레임에 있는 픽셀 데이터를 이전의 프레임에 있는 대응하는 픽셀 데이터와 비교하는 것에 의해 제공된다. 제1프로세서는 제2프로세서에 의해 사용하기 위해 현재 프레임에 있는 실질적으로 비 고정 픽셀만을 기술하는 픽셀 데이터를 더 제공한다. 제2프로세서는 비 고정 픽셀 위치 정보와 실질적으로 비 고정 픽셀만을 기술하는 픽셀 데이터에 기초하여 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터를 계산한다. 제1프로세서는 제2프로세서로부터 제공된 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터를 사용하여 현재 프레임을 인코딩한다.
상기 방법의 일례에서, 제1프로세서는 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터가 미리 결정된 값을 초과한다고 결정한 것에 응답하여 에러 검출 데이터를 생성한다. 다른 예에서, 제1프로세서는 생성된 에러 검출 데이터에 응답하여 움직임 벡터 데이터를 계산하는데 사용하기 위해 새로운 참조 프레임이 이용가능한 것을 표시한다. 일례에서, 움직임 벡터 데이터는 참조 프레임과 현재 프레임 사이에 복수의 비 고정 픽셀의 병진 이동을 결정하는 것에 의해 계산된다. 또 다른 예에서, 참조 프레임은 현재 프레임에 있는 비 고정 픽셀을 기술하는 픽셀 데이터와 현재 프레임에 있는 고정 픽셀을 기술하는 픽셀 데이터를 포함한다. 다른 예에서, 이전 프레임은 참조 프레임이다. 또 다른 예에서, 현재 프레임에 있는 실질적으로 비 고정 픽셀만을 기술하는 픽셀 데이터는 현재 프레임에 있는 비 고정 픽셀만을 기술하는 픽셀 데이터를 포함한다.
본 발명은 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하고 디코딩하는 시스템을 더 제공한다. 일례에서, 본 시스템은 복수의 프로세서를 구비하는 비디오 인코더를 포함한다. 이 예에서, 인코더는 제2프로세서에 의해 사용하기 위해 현재 프레임에 있는 픽셀 데이터를 이전 프레임에 있는 대응하는 픽셀 데이터와 비교하는 것에 의해 현재 프레임에 있는 복수의 비 고정 픽셀의 위치를 제공하도록 작동하는 제1프로세서를 구비한다. 제1프로세서는 제2프로세서에 의해 사용하기 위해 현재 프레임에 있는 실질적으로 비 고정 픽셀만을 기술하는 픽셀 데이터를 제공하도록 더 작동한다. 제2프로세서는 제1프로세서에 작동적으로(operatively) 연결되고, 비 고정 픽셀 위치 정보와 실질적으로 비 고정 픽셀만을 기술하는 픽셀 데이터에 기초하여 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터를 계산하도록 작동한다. 제1프로세서는 제2프로세서로부터 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터를 사용하여 현재 프레임을 인코딩하도록 추가적으로 작동한다. 이 예에서, 본 시스템은 제1프로세서에 작동적으로 연결되어 인코딩된 현재 프레임을 디코딩하여 디코딩된 현재 프레임을 제공하도록 작동하는 디코더를 더 포함한다.
일례에서, 제1프로세서는 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터가 미리 결정된 값을 초과하였다고 결정한 것에 응답하여 에러 검출 데이터를 생성하도록 작동하는 에러 검출 모듈을 포함한다. 다른 예에서, 제1프로세서는 에러 검출 데이터를 수신한 것에 응답하여 움직임 벡터 데이터를 계산하는데 사용하기 위해 새로운 참조 프레임이 이용가능한 것을 표시하도록 작동하는 프레임 생성 모듈을 포함한다. 더 다른 예에서, 제2프로세서는 움직임 벡터 데이터를 계산하기 위해 참조 프레임과 현재 프레임 사이에 복수의 비 고정 픽셀의 병진 이동을 결정하도록 작동하는 움직임 추정 모듈을 포함한다. 다른 예에서, 제1프로세서는, 현재 프레임에 있는 복수의 비 고정 픽셀의 위치를 결정하고, 제2프로세서에 의해 사용하기 위해 현재 프레임에 대응하는 비 고정 픽셀 위치 정보와 상기 제2프로세서에 의해 사용하기 위해 현재 프레임에 있는 실질적으로 비 고정 픽셀만을 기술하는 픽셀 데이터를 제공하도록 작동하는 비 고정 픽셀 검출 모듈을 포함한다.
다른 이점 중에서 개시된 방법과 시스템은 움직임 추정을 포함하는 가속된 비디오 인코딩을 제공한다. 가속은 복수의 프로세서 사이에 인코딩 처리를 분할하고 프로세서들 간에 송신되는 픽셀 데이터의 양을 감소시키는 것에 의해 달성된다. 이를 위해 개시된 방법과 시스템은 또한 프로세서들 간에 인코딩 처리 동작을 전달하는 것에 의해 야기되는 지연에 개선한다. 다른 이점은 이 기술 분야에 통상의 지식을 가진 자에게는 인식될 수 있다.
실시예의 이하 상세한 설명은 단지 예시를 위한 것일 뿐 개시 내용, 그 응용 또는 용도를 제한하려는 것이 전혀 아니다. 도 1은 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하고 디코딩하는 시스템(100)의 일례를 도시한다. 이 시스템(100)은 하나 이상의 전자 디바이스에 존재할 수 있다. 예를 들어, 시스템(100)의 비디오 인코더(102) 부분은 하나의 전자 디바이스에 존재할 수 있는 반면, 비디오 디코더(120)는 다른 전자 디바이스에 존재할 수 있다. 대안적으로, 비디오 인코더(102)와 디코더(120)는 동일한 전자 디바이스에 존재할 수 있다. 비디오 인코더(102)와 디코더(120)는 예를 들어 하나 이상의 통신 네트워크(예를 들어, 인터넷, 셀룰러 네트워크, 등)를 통해 직접 물리적 연결(예를 들어, 버스), 또는 무선 연결을 통해 서로 작동적으로 연결될 필요가 있다. 예를 들어, 비디오 인코더/디코더(102, 120)는 이미지 캡처 디바이스(예를 들어, 통합된 디스플레이 디바이스를 통해 레코딩된 비디오 재생을 하거나 하지 않는 카메라 또는 캠코더), 퍼스널 컴퓨터(예를 들어, 데스크탑 또는 랩탑 컴퓨터), 네트워크 연결된 연산 디바이스(예를 들어, 서버 컴퓨터 등, 여기서 각 개별 연산 디바이스는 시스템(100)의 하나 이상의 기능을 구현함), PDA(personal digital assistants), 셀룰러 전화, 태블릿(예를 들어, Apple(등록상표), iPad(등록상표), 또는 비디오 인코딩 및/또는 디코딩을 수행하는데 사용되는 임의의 다른 적절한 전자 디바이스와 같은 전자 디바이스에 존재할 수 있다.
본 시스템(100)은 인코딩되지 않은 현재(즉, 입력) 비디오 프레임(108)을 인코딩하기 위한 비디오 인코더(102)를 포함한다. 인코딩되지 않은 비디오 프레임(108)은 예를 들어, 프레임에 있는 각 픽셀을 기술하는 픽셀 데이터를 포함하는 원래(즉, 비압축된) 비디오 프레임이다. 픽셀 데이터는 이 기술 분야에 알려진 바와 같이 프레임(예를 들어, YCbCr값, YUV값, YPbPr값, Y1UV 등)에 있는 각 픽셀에 대해 예를 들어, 하나의 휘도와 2개의 색차 값을 포함할 수 있다. 추가적으로, 픽셀 데이터는 프레임 내 각 픽셀의 위치를 나타내는 예를 들어, x, y 및 z 좌표값과 같은 프레임 내 각 픽셀에 대한 좌표값을 포함할 수 있다. 또한, 본 명세서에 사용된 바와 같이, 프레임은 임의의 개수의 필드를 포함할 수 있다. 예를 들어, 단일 프레임은 이 기술 분야에 통상의 지식을 가진 자라면 인식할 수 있는 바와 같이 프레임 이미지에서 홀수번째 수평 라인을 기술하는 "상부 필드(top field)"와, 프레임 이미지에서 짝수번째 수평 라인을 기술하는 "하부 필드(bottom field)"를 포함할 수 있다.
인코더(102)는 제2프로세서(106)에 작동적으로 연결된 제1프로세서(104)를 포함한다. 프로세서(104, 106)는 저장 부품에 저장된 실행가능한 명령의 제어 하에서 작동하는 마이크로프로세서, 마이크로제어기, 디지털 신호 프로세서, 또는 이들의 조합을 포함할 수 있다. 일례에서, 제1프로세서(104)는 중앙 처리 유닛(CPU)이다. 일례에서, 제2프로세서는 그래픽 처리 유닛(GPU)이다. 다른 예에서, 제2프로세서는 범용 목적 GPU(GPGPU)이다. 제1 및 제2프로세서(104, 106)는 단일 다이 상의 별개의 코어 또는 별개의 다이 상의 별개의 코어로 존재할 수 있다. 특정 구현예에 상관없이, 본 개시 내용은 이들 특정 예로 제한되는 것은 아니며, 기술된 기능을 수행할 수 있는 임의의 프로세서(104, 106)를 사용할 것을 고려할 수 있다. 시스템(100)은 제1프로세서(104)에 작동적으로 연결된 디코더(120)를 더 포함한다. 전술된 바와 같이, 디코더(120)와 제1프로세서(104)는 임의의 적절한 물리적 또는 무선 연결을 통해 작동적으로 연결될 수 있다.
도 2는 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하는 방법의 일례를 도시한 흐름도이다. 도 2에 개시된 방법은 예를 들어 도 1에 도시된 시스템(100)에 의해 수행될 수 있다. 따라서, 본 방법은 시스템(100)에 있는 요소들을 참조하여 설명된다. 단계(200)에서, 제1프로세서(104)는 제2프로세서(106)에 의해 사용하기 위해 현재 프레임(108)에 있는 픽셀 데이터를 이전의 프레임에 있는 대응하는 픽셀 데이터와 비교하는 것에 의해 현재 프레임(108)에 있는 복수의 비 고정 픽셀의 위치를 제공한다. 일례에서, 제1프로세서(104)는 제2프로세서(106)에 위치 정보를 제공하기 전에 현재 프레임(108)에 있는 복수의 비 고정 픽셀의 위치를 결정하도록 작동한다. 그러나, 이 결정은 다른 적절한 논리회로에 의해 동등하게 잘 이루어질 수 있는 것으로 이해된다.
현재 비디오 프레임에 있는 복수의 비 고정 픽셀의 위치를 결정하는 것은 예를 들어 SAD(sum absolute difference)와 같은 블록 매칭 알고리즘에 의해 달성될 수 있다. SAD와 같은 블랙 매칭 알고리즘은 일반적으로 현재 비디오 프레임(108)을 매크로블록으로 분할한다. 각 매크로블록은 임의의 개수의 픽셀을 포함할 수 있다. 예를 들어, 16×16 매크로블록은 256개의 픽셀(즉, 16개의 행에 대해 행당 16개 픽셀)을 포함할 수 있다. 각 매크로 블록은 예를 들어 4개의 8×8 서브 블록과 같은 서브 블록으로 더 분할될 수 있다.
현재 비디오 프레임(108)에 있는 복수의 비 고정 픽셀의 위치를 결정하기 위하여, 블록 매칭 알고리즘은 현재 비디오 프레임(108)에 있는 픽셀 데이터를 이전의 비디오 프레임에 있는 대응하는 픽셀 데이터와 비교한다. 이 비교는 복수의 픽셀(예를 들어, 매크로블록)에 기초하여 달성될 수 있다. 즉, 현재 비디오 프레임(108)에 있는 단일 픽셀을 기술하는 픽셀 데이터를 이전의 비디오 프레임에 있는 대응하는 픽셀을 기술하는 픽셀 데이터와 비교하는 것이 아니라, 이 알고리즘은 현재 비디오 프레임(108)에 있는 픽셀 매크로블록을 이전의 비디오 프레임에 있는 대응하는 픽셀 매크로블록과 비교할 수 있다. 픽셀 기반이 아니라 매크로블록 기반으로 비교를 수행하는 것은 정밀도에 상당한 영향 없이 연산 비용을 크게 감소시킨다.
현재 비디오 프레임(108)으로부터의 매크로블록을 이전의 비디오 프레임으로부터의 대응하는 매크로블록과 비교할 때, 2개의 매크로블록이 동일한 것으로 결정되면, 현재 비디오 프레임(108)에 있는 매크로블록은 고정 매크로블록(즉, 복수의 고정 픽셀을 포함하는 매크로블록)인 것으로 결정된다. 그러나, 현재 비디오 프레임(108)에 있는 매크로블록이 이전의 비디오 프레임에 있는 대응하는 매크로블록과 상이하다면, 현재 비디오 프레임(108)에 있는 매크로블록은 비 고정 매크로블록(즉, 복수의 비 고정 픽셀을 포함하는 매크로블록)인 것으로 결정된다.
이 비교는 이전의 비디오 프레임에 있는 대응하는 매크로블록에 할당된 값으로부터 현재 비디오 프레임(108)에 있는 매크로블록에 할당된 값을 감산하는 것에 의해 수행된다. 이 값은 예를 들어 현재 비디오 프레임(108)에 있는 매크로블록을 구성하는 픽셀의 휘도값과, 이전의 비디오 프레임에 있는 매크로블록을 구성하는 픽셀의 휘도값을 나타낼 수 있다. 추가적으로, 양자화값("Q")을 이 비교에 도입하는 것이 가능하다. 양자화 값은 현재 비디오 프레임(108)에 있는 매크로블록이 고정 매크로블록으로 인식될지 또는 비 고정 매크로블록으로 인식될지의 가능성에 영향을 미친다.
예를 들어, 비 고정 매크로블록을 식별하기 위하여, 본 발명은 고정 매크로블록을 한정하기 위해 모두 제로(0)인 양자화 계수 블록을 검출하는 기존의 개념을 채용할 것을 고려한다. 이 공정은 예를 들어 16×16 매크로블록의 8×8 서브 블록에 있는 계수들이 양자화 공정 후에 제로가 되는지 여부를 체크하는 것에 의해 시작한다. 예를 들어, 이하 수식이 주어진 8×8 서브 블록을 구성하는 픽셀에 적용될 수 있다:
SAD((x, y) 위치에서 절대값의 차이의 합) =
Figure pct00001
일례에서, SAD < 8Q 라면, 8×8 서브 블록은 제로 블록으로 한정될 수 있다. 전술된 바와 같이, Q는 양자화값을 나타낸다. 사실, Q값이 높으면 높을수록, 8×8 서브 블록이 제로 블록으로 한정될 가능성이 더 높아진다. Q값이 낮으면 낮을수록, 8×8 서브 블록이 제로 블록으로 한정될 가능성이 낮아진다. 따라서, Q값은 제로 블록이 주어진 비디오 프레임에서 얼마나 많이 검출될 수 있는지에 영향을 미친다. Q값은 제1 및 제2프로세서(104, 106) 사이에 예를 들어 이용가능한 대역폭에 기초하여 자동으로 설정될 수 있다. 예를 들어, 이용 가능한 대역폭이 많으면 많을수록, 설정된 Q값이 더 낮아진다. 이것은 Q값이 낮으면 비 고정 매크로블록 각각을 기술하는 픽셀 데이터가 프로세서들 간에 전송되어야 하는 것을 의미하는 비 고정 매크로블록이 더 많이 검출되는 결과를 초래하기 때문이다. 그 결과, Q값이 더 크면 클수록, 프로세서들 간에 송신되어야 하는 픽셀 데이터가 더 작아진다. 서브 블록이 제로 블록인지 여부를 결정하는 것에 대한 이전 설명에 비춰, 일례에서, 16×16 매크로블록은 모두 4개의 8×8 서브 블록이 SAD 수식을 적용한 후에 서브 블록인 것으로 결정된 경우에만 제로 블록인 것으로 한정될 수 있다.
단계(200)에서 계속하여, 현재 비디오 프레임(108)에 있는 복수의 비 고정 픽셀의 위치가 결정된 후에, 비 고정 픽셀 위치 정보(110)가 제2프로세서(106)에 의해 사용하기 위해 제공된다. 일례에서, 비 고정 픽셀 위치 정보(110)가 맵 형태로 제공된다. 이 맵은 현재 비디오 프레임(108)에 있는 고정 및 비 고정 매크로블록 전부의 위치를 나타낸다. 이 맵은 현재 비디오 프레임에 있는 각 매크로블록이 전술된 절차에 따라 이루어진 결정에 기초하여 고정 또는 비고정된 것인지 여부를 표시하는 데이터로 구성된다. 예를 들어, 현재 비디오 프레임(108)의 좌상부 코너(upper left-hand corner)에 위치된 매크로블록에 대응하는 맵 부분에 제로값(예를 들어, 제로로 설정된 비트값)은 현재 비디오 프레임(108)의 좌상부 코너에 있는 매크로블록이 고정된 것이라는 것을 표시할 수 있다. 역으로, 현재 비디오 프레임(108)의 좌상부 코너에 위치된 매크로블록에 대응하는 맵 부분에서 1의 값(예를 들어, 1로 설정된 비트값)은 현재 비디오 프레임(108)의 좌상부 코너에 있는 매크로블록이 비 고정된 것이라는 것을 표시할 수 있다.
단계(202)에서, 제1프로세서(104)는 제2프로세서(106)에 의해 사용하기 위해 현재 비디오 프레임(108)에 있는 실질적으로 비 고정 픽셀(112)만을 기술하는 픽셀 데이터를 제공한다. 실질적으로 비 고정 픽셀(112)만을 기술하는 픽셀 데이터는 예를 들어 프레임(예를 들어, YCbCr값, YUV값, YPbPr값, Y1UV 등)에 있는 각 비 고정 픽셀에 대해 예를 들어 하나의 휘도와 2개의 색차 값을 포함할 수 있다. 추가적으로, 픽셀 데이터는 예를 들어 x, y 및 z 좌표값과 같은 프레임에 있는 실질적으로 비 고정 픽셀(112)만에 대한 좌표값을 포함할 수 있다. 바람직한 실시예에서, 비 고정 픽셀만을 기술하는 픽셀 데이터는 제2프로세서(106)에 의해 사용하기 위해 제공된다. 그러나, 고정 픽셀을 기술하는 일부 픽셀 데이터는 제2프로세서(106)에 의해 사용하기 위해서도 제공될 수 있는 것으로 인식된다. 본 명세서에 사용된 바와 같이, 용어"실질적으로 비 고정 픽셀만을 기술하는 픽셀 데이터"는 비디오 인코딩 응용에 따라 좌우된다. 예를 들어, 낮은 비트율 전송(예를 들어, 비디오 화상회의)에서, 기술된 방법은 총 픽셀 데이터의 20% 이하가 고정 픽셀을 기술하는 것을 고려한다. 높은 비트율 전송에서는 일례에서, 기술된 방법은 총 픽셀 데이터의 8 내지 15% 이하가 고정 픽셀을 기술하는 것을 고려한다. 제1프로세서(104)와 제2프로세서(106) 간에 송신되는 픽셀 데이터의 양을 제한하는 것에 의해 메모리 처리량이 개선되고 이에 의해 기존의 인코딩 시스템에 영향을 미치는 병목 문제를 완화할 수 있다.
단계(204)에서, 제2프로세서(106)는 비 고정 픽셀 위치 정보(110)와 실질적으로 비 고정 픽셀(112)만을 기술하는 픽셀 데이터에 기초하여 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터(116)를 계산한다. 움직임 벡터 데이터(116)는 각 복수의 비 고정 픽셀(예를 들어, 픽셀의 각 비 고정 매크로블록)에 대해 계산된다. 다시 말해, 상이한 움직임 벡터가 각 비 고정 복수의 픽셀에 대해 계산된다. 전술된 바와 같이, 각 움직임 벡터는 참조 비디오 프레임(114)과 현재 비디오 프레임(108) 사이 복수의 비 고정 픽셀(예를 들어, 픽셀의 매크로블록)의 변위를 기술한다. 참조 비디오 프레임(114)은 고정 픽셀과 비 고정 픽셀을 기술하는 픽셀 데이터를 포함한다. 비 고정 복수의 픽셀에 대해서만(고정 픽셀에 대해서는 아님) 움직임 벡터를 계산하는 것에 의해 움직임 추정 연산 시간이 감소된다. 이것은 기존의 인코딩 시스템이 직면한 병목 문제를 감소시키거나 완전히 완화하기 위하여 제1프로세서(104)와 제2프로세서(106) 사이에 전송되는 데이터의 축적(backlog)을 감소시키는 것을 돕는다. 또한, 움직임 추정 연산이 제1프로세서(104)와는 다른 프로세서에서 수행되므로, 제1프로세서(104)는 움직임 추정과 관련 없는 다른 유형의 처리를 자유로이 수행할 수 있다.
단계(206)에서, 제1프로세서(104)는 제2프로세서(106)로부터의 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터(116)를 사용하여 현재 비디오 프레임(108)을 인코딩한다. 인코딩된 비디오 프레임(118)은 디코딩된 비디오 프레임(122)을 생성하기 위해 비디오 디코더(120)에 제공될 수 있다. 인코딩된 비디오 프레임(118)은 이 기술 분야에 알려져 있는 바와 같이 GOP(group of pictures) 인코딩 구조에 예를 들어, I-프레임, P-프fp임 및/또는 B-프레임을 포함할 수 있다. 그러나, 본 발명은 임의의 특정 인코딩 구조로 제한되지 않고 인코딩된 비디오 프레임(118)을 생성하기 위해 임의의 이용가능한 인코딩 구조를 사용하는 것을 고려한다. 예를 들어, 본 발명은 MPEG(moving picture expert group) 구조(예를 들어, MPEG-1, MPEG-2, MPEG-4, 등), DivX5, H.264와 같은 인코딩 구조 또는 임의의 다른 적절한 비디오 인코딩 구조와 사용하는 것을 고려한다. 즉, 개시된 방법은 움직임 추정을 요구하는 임의의 비디오 인코딩 기술에 동등하게 잘 적용되는 것으로 고려된다.
도 3은 본 발명에 제시된 일례에 따라 비디오 프레임을 인코딩하기 위한 인코더(102)를 일반적으로 도시한 블록도이다. 특히, 도 3은 예를 들어 도 2에 대해 설명된 기능을 달성하는데 사용된 제1 및 제2프로세서(104, 106)의 하위 구성을 도시한다. 예를 들어, 제1프로세서(104)는 비 고정 픽셀 검출 모듈(312)을 포함한다. 본 명세서에 사용된 바와 같이, "모듈"이라는 용어는 전술된 기능을 제공하는 하나 이상의 소프트웨어 또는 펌웨어 프로그램, 조합 논리 회로, 애플리케이션 특정 집적 회로(ASIC) 및/또는 다른 적절한 부품을 실행하는 전자 회로, 하나 이상의 프로세서(예를 들어, 마이크로프로세서, 디지털 신호 프로세서 또는 중앙 처리 유닛을 포함하나 이로 제한되지 않는 공유 프로세서, 전용 프로세서, 또는 프로세서 그룹) 및 메모리를 포함할 수 있다. 일례에서, 이 모듈은 프로세서(104, 106) 중 하나 또는 둘 모두에서 실행되는 메모리(예를 들어, 메모리(316), 메모리(318) 또는 다른 적절한 메모리)에 저장된 소프트웨어 및/또는 펌웨어를 포함할 수 있다.
비 고정 픽셀 검출 모듈(312)은 메모리(316)와 제2프로세서(106)에 위치된 움직임 추정 모듈(310)에 작동적으로 연결된다. 바람직한 실시예에서, 제1프로세서(104)는 로컬 메모리(316)를 구비하고 제2프로세서(106)는 로컬 메모리(318)를 구비한다. 그러나, 제1프로세서의 메모리(316)와 제2프로세서의 메모리(318)는 동일한 메모리일 수 있는 것으로 고려된다. 예를 들어, 제1 및 제2프로세서는 제1프로세서(104) 또는 제2프로세서(106) 상에 위치되거나 또는 두 프로세서(104, 106)에서 먼 곳에 위치된 (예를 들어 두 프로세서(104, 106)에서 먼 시스템 메모리에 있는) 공유 메모리(미도시)에 액세스할 수 있다. 그러나, 로컬 메모리(316, 318)를 두 프로세서(104, 106)에 제공하는 것은 지연을 감소시키는 것에 의해 인코딩 시간의 감소를 야기한다. 추가적으로, 메모리(316, 318)는 예를 들어, ROM(read-only memory), RAM(random access memory), EE-PROM(electrically erasable programmable read-only memory) 또는 임의의 다른 적절한 디지털 저장 매체와 같은 휘발성/비휘발성 메모리 부품의 임의의 조합일 수 있다.
비 고정 픽셀 검출 모듈(312)은 메모리(316)로부터 입력으로서 현재 비디오 프레임(300)(즉, Fn)에 있는 픽셀을 기술하는 픽셀 데이터와, 이전의 비디오 프레임(302)(즉, Fn-1)에 있는 픽셀을 기술하는 픽셀 데이터를 수용한다. 픽셀 데이터(300, 302)는 프레임(예를 들어, YCbCr값, YUV값, YPbPr값, Y1UV 등)에 있는 각 픽셀에 대해 예를 들어 하나의 휘도 및 2개의 색차값을 포함할 수 있다. 추가적으로, 픽셀 데이터는 프레임에 있는 각 픽셀 위치를 나타내는 예를 들어 x, y 및 z 좌표값과 같은 프레임에 있는 각 픽셀에 대한 좌표값을 포함할 수 있다. 비 고정 픽셀 검출 모듈(312)은 비 고정 픽셀 위치 정보(110)(예를 들어, 전술된 바와 같이 맵)를 제공하기 위해 현재 비디오 프레임(300)에 있는 픽셀 데이터를 이전의 비디오 프레임(302)에 있는 대응하는 픽셀 데이터와 비교하도록 작동한다. 현재 비디오 프레임(108)에 있는 어느 픽셀이 비 고정 픽셀인지를 결정한 후에, 비 고정 픽셀 검출 모듈(312)은 제2프로세서(106)에 의해 사용하기 위해 현재 비디오 프레임(112)에 있는 실질적으로 비 고정 픽셀만을 기술하는 픽셀 데이터를 제공하도록 작동한다.
비 고정 픽셀 검출 모듈(312)은 제2프로세서(106)에 있는 움직임 추정 모듈(310)에 작동적으로 더 연결된다. 움직임 추정 모듈(310)은 움직임 추정을 수행하기 위하여 비 고정 픽셀 검출 모듈(312)로부터 입력으로 비 고정 픽셀 위치 정보(110)와 실질적으로 비 고정 픽셀(112)만을 기술하는 픽셀 데이터를 수용한다. 구체적으로, 움직임 추정 모듈(310)은 움직임 벡터 데이터(116)를 계산하기 위하여 참조 비디오 프레임(114)과 현재 비디오 프레임(108) 사이에 복수의 비 고정 픽셀(예를 들어, 비 고정 매크로블록)의 병진 이동을 결정하도록 작동한다. 움직임 추정 모듈(310)은 참조 비디오 프레임(114)을 저장하는 제2프로세서(106)의 로컬 메모리(318)와 같은 메모리에 항상 액세스한다. 그리하여, 움직임 추정 모듈(310)은 참조 비디오 프레임(114)과 현재 비디오 프레임(108) 사이에 각 복수의 비 고정 픽셀(예를 들어, 비 고정 픽셀의 각 매크로블록)의 변위를 결정하는 것에 의해 움직임 벡터 데이터(116)를 계산하며, 여기서 참조 비디오 프레임(114)은 고정 픽셀과 비 고정 픽셀을 기술하는 픽셀 데이터를 포함한다. 이것은 예를 들어 현재 비디오 프레임(108)에 있는 복수의 비 고정 픽셀의 Y값(즉, 휘도값)을 참조 비디오 프레임(114)에 있는 대응하는 복수의 픽셀의 Y값과 비교하는 것에 의해 달성될 수 있다. 현재 비디오 프레임(108)에 있는 각 복수의 비 고정 픽셀에 대한 움직임 벡터를 결정한 후에 움직임 추정 모듈(310)은 제1프로세서(104)에 있는 에러 검출 모듈(308)에 움직임 벡터 데이터(116)를 제공한다.
움직임 추정 모듈(310)에 작동적으로 연결된 에러 검출 모듈(308)은 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터(116)가 미리 결정된 값을 초과한다고 결정한 것에 응답하여 에러 검출 데이터(306)를 생성하도록 작동한다. 넓게 말하면, 에러 검출 모듈(304)은 새로운 참조 프레임(114)이 움직임 벡터 데이터(116)를 계산할 때 사용하기 위해 제공되어야 하는 때를 식별한다. 에러 검출 모듈(304)은 입력되는 움직임 벡터 데이터(116)를 분석하고 움직임 벡터 데이터(116)가 미리 결정된 값을 초과하는지를 결정하는 것에 의해 이 식별을 한다. 예를 들어, 미리 결정된 값은 10으로 설정될 수 있다(특정값은 설계적 선택 사항의 문제인 것으로 인식된다). 이 예에서, 움직임 벡터 데이터(116)가 참조 비디오 프레임(114)과 현재 비디오 프레임(108) 사이에 특정 복수의 비 고정 픽셀(예를 들어, 매크로블록)이 10개 이상의 픽셀로 이동된 것을 표시하는 경우, 에러 검출 모듈(304)은 미리 결정된 값이 초과되었다는 것을 표시하는 에러 검출 데이터(306)를 생성할 수 있다.
에러 검출 데이터(306)는 에러 검출 모듈(304)에 작동적으로 연결된 프레임 생성 모듈(308)에 제공된다. 프레임 생성 모듈(308)은 에러 검출 데이터(306)를 수신한 것에 응답하여 움직임 벡터 데이터(116)를 계산하는데 사용하기 위해 새로운 참조 비디오 프레임(114)이 이용가능하다는 것을 표시하도록 작동한다. 일례에서, 프레임 생성 모듈(308)은 메모리(316)로부터 새로운 참조 비디오 프레임(114)을 판독하고 새로운 참조 비디오 프레임(114)을 제2프로세서(106)에 있는 메모리(318)에 제공하는 것에 의해 움직임 벡터 데이터(116)를 계산하는데 사용하기 위해 새로운 참조 비디오 프레임(114)이 이용가능하다는 것을 표시한다. 이 예에서, 움직임 추정 모듈(310)은 움직임 벡터 데이터(116)를 계산할 때 새로운 참조 비디오 프레임(114)을 사용한다. 의미있는(즉, 비 제로) 움직임 벡터 데이터(116)를 계산하기 위하여, 참조 비디오 프레임(114)은 이상적으로는 주어진 비디오 스트림 내 현재 비디오 프레임(108) 앞에 전송된 비디오 프레임이다(예를 들어, 참조 비디오 프레임(114)과 현재 비디오 프레임(108)이 동일하다면, 프레임들 사이에 픽셀의 이동이 없다). 그러나, 움직임 추정 모듈(310)이 또한 대안적인 수단을 통해 새로운 참조 비디오 프레임(114)을 수신할 수 있는 것으로 고려된다. 예를 들어, 움직임 추정 모듈(310)은 대안적으로 두 프로세서(104, 106)에 의해 액세스된 공유 메모리(미도시)로부터 새로운 참조 프레임(114)을 요청하거나 또는 이 기술 분야에 알려진 다른 적절한 메모리 액세스 기술을 통해 새로운 참조 비디오 프레임을 획득할 수 있다.
프레임 생성 모듈(308)은 디코딩된 비디오 프레임(122)을 생성하기 위해 인코딩된 비디오 프레임(118)을 비디오 디코더(120)에 제공하도록 더 작동한다. 비디오 디코더(120)는 예를 들어 MPEG(moving picture expert group) 구조(예를 들어, MPEG-1, MPEG-2, MPEG-4, 등), DivX5, H.264 또는 임의의 다른 적절한 비디오 인코딩 구조로 인코딩된 비디오 프레임을 디코딩할 수 있는 예를 들어 이 기술 분야에 알려진 임의의 적절한 디코더를 포함할 수 있다.
도 4는 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하는 방법의 다른 예를 도시한 흐름도이다. 도 4에 개시된 방법은 예를 들어 도 3에 도시된 인코더(102)에 의해 수행될 수 있다. 따라서, 본 방법은 인코더(102)에 있는 요소들을 참조하여 설명된다. 단계(200 내지 204)는 도 2에 대해 제공된 단계의 설명에 따라 수행된다. 단계(400)에서, 움직임 벡터 데이터가 미리 결정된 값을 초과하는지 여부에 대한 결정이 이루어진다. 이 단계는 전술된 기능에 따라 예를 들어 에러 검출 모듈(304)에 의해 달성될 수 있다. 움직임 벡터 데이터가 미리 결정된 값을 초과하는 경우 제1프로세서(104)는 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터(116)가 미리 결정된 값을 초과한다는 결정에 응답하여 에러 검출 데이터(306)를 생성한다. 이 단계는 또한 전술된 기능에 따라 예를 들어 에러 검출 모듈(304)에 의해 달성될 수 있다. 단계(404)에서, 제1프로세서(104)는 생성된 에러 검출 데이터(306)에 응답하여 움직임 벡터 데이터(116)를 계산하는데 사용하기 위해 새로운 참조 비디오 프레임(114)이 이용가능한 것을 표시한다. 이 단계는 전술된 기능에 따라 예를 들어 프레임 생성 모듈(308)에 의하여 달성될 수 있다. 그러나, 단계(400)에서 움직임 벡터 데이터(116)가 미리 결정된 값을 초과하지 않는 것으로 결정된 경우, 본 방법은 단계(206)로 진행하고 이는 도 2에 대해 제공된 단계의 설명에 따라 수행된다.
다른 이점 중에서, 개시된 방법과 시스템은 움직임 추정을 포함하는 가속된 비디오 인코딩을 제공한다. 이 가속은 복수의 프로세서 사이에 인코딩 처리를 분할하고 프로세서들 간에 송신되는 픽셀 데이터의 양을 감소시키는 것에 의해 달성된다. 이를 위해 개시된 방법과 시스템은 또한 프로세서들 간에 인코딩 처리 동작을 전달하는 것에 의해 야기된 지연을 개선시킨다. 다른 이점은 이 기술 분야에 통상의 지식을 가진 자라면 인식할 수 있을 것이다.
또한, 집적 회로 설계 시스템(예를 들어, 워크스테이션)은 CD-ROM, RAM, 다른 형태의 ROM, 하드 드라이브, 분배된 메모리 등을 포함하나 이로 제한되지 않는 컴퓨터 판독가능한 메모리에 저장된 실행가능한 명령에 기초하여 집적 회로를 형성한 것이 알려져 있다. 이 명령은 하드웨어 디스크립터 언어 또는 다른 적절한 언어를 포함하나 이로 제한되지 않는 임의의 적절한 언어로 표시될 수 있다. 그리하여, 본 명세서에 설명된 비디오 인코더는 또한 이 시스템에 의해 집적 회로로 형성될 수 있다. 예를 들어, 집적 회로는 컴퓨터 판독가능한 매체에 저장된 명령을 사용하여 형성될 수 있고, 상기 명령은 실행될 때 집적 회로 설계 시스템으로 하여금, 제1프로세서에 의해, 제2프로세서에 의해 사용하기 위해 현재 프레임에 있는 픽셀 데이터를 이전의 프레임에 있는 대응하는 픽셀 데이터와 비교하는 것에 의해 현재 프레임에 있는 복수의 비 고정 픽셀의 위치를 제공하고; 상기 제1프로세서에 의해, 상기 제2프로세서에 의해 사용하기 위해 현재 프레임에 있는 실질적으로 비 고정 픽셀만을 기술하는 픽셀 데이터를 제공하며; 상기 제2프로세서에 의해, 비 고정 픽셀 위치 정보와 실질적으로 비 고정 픽셀만을 기술하는 픽셀 데이터에 기초하여 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터를 계산하고; 상기 제1프로세서에 의해, 상기 제2프로세서로부터 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터를 사용하여 상기 현재 프레임을 인코딩하도록 작동하는 집적 회로를 형성하게 한다. 본 명세서에 설명된 다른 동작을 수행하는 논리회로를 구비하는 집적 회로가 또한 적절히 생성될 수 있다.
본 명세서에 설명된 상기 상세한 설명과 예는 단지 예시와 설명을 위하여 제공된 것일 뿐 발명을 제한하고자 하는 것이 전혀 아니다. 그러므로, 본 발명은 전술된 기본 원리와 청구범위의 사상과 범위 내에 있는 임의의 그리고 모든 변형, 변경 또는 균등물을 커버하는 것으로 고려된다.

Claims (21)

  1. 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하는 방법으로서,
    제1프로세서에 의해, 제2프로세서에 의해 사용하기 위해 현재 프레임에 있는 픽셀 데이터를 이전의 프레임에 있는 대응하는 픽셀 데이터와 비교하는 것에 의해 상기 현재 프레임에 있는 복수의 비 고정 픽셀(non-stationary pixel)의 위치를 제공하는 단계;
    상기 제1프로세서에 의해, 상기 제2프로세서에 의해 사용하기 위해 상기 현재 프레임에 있는 실질적으로 비 고정 픽셀만을 기술하는 픽셀 데이터를 제공하는 단계;
    상기 제2프로세서에 의해, 상기 비 고정 픽셀 위치 정보와 실질적으로 비 고정 픽셀만을 기술하는 상기 픽셀 데이터에 기초하여 상기 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터를 계산하는 단계; 및
    상기 제1프로세서에 의해, 상기 제2프로세서로부터 상기 복수의 비 고정 픽셀에 대한 상기 움직임 벡터 데이터를 사용하여 상기 현재 프레임을 인코딩하는 단계를 포함하는 것인 비디오 프레임 인코딩 방법.
  2. 제1항에 있어서, 상기 제1프로세서에 의해, 상기 복수의 비 고정 픽셀에 대한 상기 움직임 벡터 데이터가 미리 결정된 값을 초과한다고 결정한 것에 응답하여 에러 검출 데이터를 생성하는 단계를 더 포함하는 비디오 프레임 인코딩 방법.
  3. 제2항에 있어서, 상기 제1프로세서에 의해, 생성된 에러 검출 데이터에 응답하여 상기 움직임 벡터 데이터를 계산하는데 사용하기 위해 새로운 참조 프레임이 이용가능한 것을 표시하는 단계를 더 포함하는 비디오 프레임 인코딩 방법.
  4. 제1항에 있어서, 움직임 벡터 데이터를 계산하는 단계는 참조 프레임과 상기 현재 프레임 사이에 상기 복수의 비 고정 픽셀의 병진 이동을 결정하는 단계를 포함하는 것인 비디오 프레임 인코딩 방법.
  5. 제4항에 있어서, 상기 참조 프레임은 상기 현재 프레임에 있는 비 고정 픽셀을 기술하는 픽셀 데이터와 상기 현재 프레임에 있는 고정 픽셀을 기술하는 픽셀 데이터를 포함하는 것인 비디오 프레임 인코딩 방법.
  6. 제5항에 있어서, 상기 이전의 프레임은 상기 참조 프레임을 포함하는 것인 비디오 프레임 인코딩 방법.
  7. 제1항에 있어서, 상기 현재 프레임에 있는 실질적으로 비 고정 픽셀만을 기술하는 상기 픽셀 데이터는 상기 현재 프레임에 있는 비 고정 픽셀만을 기술하는 픽셀 데이터를 포함하는 것인 비디오 프레임 인코딩 방법.
  8. 비디오 프레임을 인코딩하기 위한 비디오 인코더로서,
    제1프로세서와 제2프로세서를 포함하되,
    상기 제1프로세서는,
    상기 제2프로세서에 의해 사용하기 위해 현재 프레임에 있는 픽셀 데이터를 이전의 프레임에 있는 대응하는 픽셀 데이터와 비교하는 것에 의해 상기 현재 프레임에 있는 복수의 비 고정 픽셀의 위치를 제공하고,
    상기 제2프로세서에 의해 사용하기 위해 상기 현재 프레임에 있는 실질적으로 비 고정 픽셀을 기술하는 픽셀 데이터를 제공하도록 작동하며,
    상기 제2프로세서는 상기 제1프로세서에 작동적으로 연결되고, 상기 제2프로세서는 상기 비 고정 픽셀 위치 정보와 실질적으로 비 고정 픽셀만을 기술하는 상기 픽셀 데이터에 기초하여 상기 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터를 계산하도록 작동하며,
    상기 제1프로세서는 상기 제2프로세서로부터 상기 복수의 비 고정 픽셀에 대한 상기 움직임 벡터 데이터를 사용하여 상기 현재 프레임을 인코딩하도록 더 작동하는 것인 비디오 인코더.
  9. 제8항에 있어서, 상기 제1프로세서는,
    상기 복수의 비 고정 픽셀에 대한 상기 움직임 벡터 데이터가 미리 결정된 값을 초과하였다고 결정한 것에 응답하여 에러 검출 데이터를 생성하도록 작동하는 에러 검출 모듈을 포함하는 것인 비디오 인코더.
  10. 제9항에 있어서, 상기 제1프로세서는,
    에러 검출 데이터를 수신한 것에 응답하여 상기 움직임 벡터 데이터를 계산하는데 사용하기 위해 새로운 참조 프레임이 이용가능한 것을 표시하도록 작동하는 프레임 생성 모듈을 포함하는 것인 비디오 인코더.
  11. 제8항에 있어서, 상기 제2프로세서는,
    움직임 벡터 데이터를 계산하기 위하여 상기 현재 프레임과 참조 프레임 사이에 상기 복수의 비 고정 픽셀의 병진 이동을 결정하도록 작동하는 움직임 추정 모듈을 포함하는 것인 비디오 인코더.
  12. 제11항에 있어서, 상기 참조 프레임은 상기 현재 프레임에 있는 비 고정 픽셀을 기술하는 픽셀 데이터와 상기 현재 프레임에 있는 고정 픽셀을 기술하는 픽셀 데이터를 포함하는 것인 비디오 인코더.
  13. 제12항에 있어서, 상기 이전의 프레임은 상기 참조 프레임을 포함하는 것인 비디오 인코더.
  14. 제8항에 있어서, 상기 제1프로세서는,
    상기 현재 프레임에 있는 상기 복수의 비 고정 픽셀의 위치를 결정하고, 상기 제2프로세서에 의해 사용하기 위해 상기 현재 프레임에 대응하는 비 고정 픽셀 위치 정보와 상기 제2프로세서에 의해 사용하기 위해 상기 현재 프레임에 있는 실질적으로 비 고정 픽셀만을 기술하는 픽셀 데이터를 제공하도록 작동하는 비 고정 픽셀 검출 모듈을 포함하는 것인 비디오 인코더.
  15. 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하고 디코딩하는 시스템으로서,
    제1프로세서와 제2프로세서와 디코더를 포함하되,
    상기 제1프로세서는,
    상기 제2프로세서에 의해 사용하기 위해 현재 프레임에 있는 픽셀 데이터를 이전의 프레임에 있는 대응하는 픽셀 데이터와 비교하는 것에 의해 상기 현재 프레임에 있는 복수의 비 고정 픽셀의 위치를 제공하고,
    상기 제2프로세서에 의해 사용하기 위해 상기 현재 프레임에 있는 실질적으로 비 고정 픽셀만을 기술하는 픽셀 데이터를 제공하도록 작동하며,
    상기 제2프로세서는 상기 제1프로세서에 작동적으로 연결되고, 상기 제2프로세서는 상기 비 고정 픽셀 위치 정보와 실질적으로 비 고정 픽셀만을 기술하는 상기 픽셀 데이터에 기초하여 상기 복수의 비 고정 픽셀에 대한 움직임 벡터 데이터를 계산하도록 작동하며,
    상기 제1프로세서는 상기 제2프로세서로부터 상기 복수의 비 고정 픽셀에 대한 상기 움직임 벡터 데이터를 사용하여 상기 현재 프레임을 인코딩하도록 더 작동하고,
    상기 디코더는 상기 제1프로세서에 작동적으로 연결되고, 상기 디코더는 인코딩된 현재 프레임을 디코딩하여 디코딩된 현재 프레임을 제공하도록 작동하는 것인 시스템.
  16. 제15항에 있어서, 상기 제1프로세서는,
    상기 복수의 비 고정 픽셀에 대한 상기 움직임 벡터 데이터가 미리 결정된 값을 초과하였다고 결정한 것에 응답하여 에러 검출 데이터를 생성하도록 작동하는 에러 검출 모듈을 포함하는 것인 시스템.
  17. 제16항에 있어서, 상기 제1프로세서는,
    에러 검출 데이터를 수신한 것에 응답하여 상기 움직임 벡터 데이터를 계산하는데 사용하기 위해 새로운 참조 프레임이 이용가능한 것을 표시하도록 작동하는 프레임 생성 모듈을 포함하는 것인 시스템.
  18. 제15항에 있어서, 상기 제2프로세서는,
    움직임 벡터 데이터를 계산하기 위하여 상기 현재 프레임과 참조 프레임 사이에 상기 복수의 비 고정 픽셀의 병진 이동을 결정하도록 작동하는 움직임 추정 모듈을 포함하는 것인 시스템.
  19. 제18항에 있어서, 상기 참조 프레임은 상기 현재 프레임에 있는 비 고정 픽셀을 기술하는 픽셀 데이터와 상기 현재 프레임에 있는 고정 픽셀을 기술하는 픽셀 데이터를 포함하는 것인 시스템.
  20. 제19항에 있어서, 상기 이전의 프레임은 상기 참조 프레임을 포함하는 것인 시스템.
  21. 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하는 프로세서로서,
    제2프로세서에 의해 사용하기 위해 현재 프레임에 있는 픽셀 데이터를 이전의 프레임에 있는 대응하는 픽셀 데이터와 비교하는 것에 의해 상기 현재 프레임에 있는 복수의 비 고정 픽셀의 위치를 제공하고;
    상기 제2프로세서에 의해 사용하기 위해 상기 현재 프레임에 있는 실질적으로 비 고정 픽셀만을 기술하는 픽셀 데이터를 제공하며;
    상기 비 고정 픽셀 위치 정보와 실질적으로 비 고정 픽셀을 기술하는 상기 픽셀 데이터에 기초하여 상기 복수의 비 고정 픽셀에 대해 상기 제2프로세서에 의해 계산된 움직임 벡터 데이터를 사용하여 상기 현재 프레임을 인코딩하도록 작동하는 것인 프로세서.
KR1020137004902A 2010-07-28 2011-07-21 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하는 방법 및 시스템 KR20130130695A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/845,293 US20120027091A1 (en) 2010-07-28 2010-07-28 Method and System for Encoding Video Frames Using a Plurality of Processors
US12/845,293 2010-07-28
PCT/US2011/044778 WO2012015654A1 (en) 2010-07-28 2011-07-21 Method and system for encoding video frames using a plurality of processors

Publications (1)

Publication Number Publication Date
KR20130130695A true KR20130130695A (ko) 2013-12-02

Family

ID=44453893

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137004902A KR20130130695A (ko) 2010-07-28 2011-07-21 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하는 방법 및 시스템

Country Status (6)

Country Link
US (1) US20120027091A1 (ko)
EP (1) EP2599314A1 (ko)
JP (1) JP2013532926A (ko)
KR (1) KR20130130695A (ko)
CN (1) CN103081466A (ko)
WO (1) WO2012015654A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210018182A (ko) * 2019-08-07 2021-02-17 구글 엘엘씨 비디오 콜을 위한 얼굴 기반 프레임 레이트 업샘플링

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8831101B2 (en) * 2008-08-02 2014-09-09 Ecole De Technologie Superieure Method and system for determining a metric for comparing image blocks in motion compensated video coding
US9100656B2 (en) 2009-05-21 2015-08-04 Ecole De Technologie Superieure Method and system for efficient video transcoding using coding modes, motion vectors and residual information
US8755438B2 (en) * 2010-11-29 2014-06-17 Ecole De Technologie Superieure Method and system for selectively performing multiple video transcoding operations
ITTO20110414A1 (it) * 2011-05-11 2012-11-12 St Microelectronics Pvt Ltd Procedimento ed apparecchiatura per elaborare segnali video, prodotto informatico e segnale codificato relativi
US10785498B2 (en) * 2012-11-27 2020-09-22 Squid Design Systems Pvt Ltd System and method of mapping multiple reference frame motion estimation on multi-core DSP architecture
JP2014200075A (ja) * 2013-03-15 2014-10-23 株式会社リコー コンピュータシステム、配信制御システム、配信制御方法、及びプログラム
US10284875B2 (en) * 2016-08-08 2019-05-07 Qualcomm Incorporated Systems and methods for determining feature point motion
US10803604B1 (en) * 2019-07-01 2020-10-13 Everseen Limited Layered motion representation and extraction in monocular still camera videos

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6952211B1 (en) * 2002-11-08 2005-10-04 Matrox Graphics Inc. Motion compensation using shared resources of a graphics processor unit
CN1809161B (zh) * 2004-06-27 2010-11-17 苹果公司 对编码视频数据选择编码类型和预测模式
US8111752B2 (en) * 2004-06-27 2012-02-07 Apple Inc. Encoding mode pruning during video encoding
KR20080096768A (ko) * 2006-02-06 2008-11-03 톰슨 라이센싱 사용 가능한 움직임 정보를 비디오 인코딩을 위한 움직임추정 예측자로서 재사용하는 방법 및 장치
US8121197B2 (en) * 2007-11-13 2012-02-21 Elemental Technologies, Inc. Video encoding and decoding using parallel processors
US9332264B2 (en) * 2007-12-30 2016-05-03 Intel Corporation Configurable performance motion estimation for video encoding

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210018182A (ko) * 2019-08-07 2021-02-17 구글 엘엘씨 비디오 콜을 위한 얼굴 기반 프레임 레이트 업샘플링
US11321555B2 (en) 2019-08-07 2022-05-03 Google Llc Face-based frame rate upsampling for video calls
US11869274B2 (en) 2019-08-07 2024-01-09 Google Llc Face-based frame rate upsampling for video calls

Also Published As

Publication number Publication date
CN103081466A (zh) 2013-05-01
EP2599314A1 (en) 2013-06-05
US20120027091A1 (en) 2012-02-02
WO2012015654A1 (en) 2012-02-02
JP2013532926A (ja) 2013-08-19

Similar Documents

Publication Publication Date Title
KR20130130695A (ko) 복수의 프로세서를 사용하여 비디오 프레임을 인코딩하는 방법 및 시스템
US9451255B2 (en) Image encoding apparatus, image encoding method, image decoding apparatus, and image decoding method
KR20200078609A (ko) 비디오 코딩을 위한 방법 및 장치
US8000393B2 (en) Video encoding apparatus and video encoding method
WO2016008284A1 (zh) 帧内像素预测方法、编码方法、解码方法及其装置
US9369706B1 (en) Method and apparatus for encoding video using granular downsampling of frame resolution
JP2013504256A (ja) シーン切替検出
US11190766B2 (en) Method and apparatus for determining division of coding unit, computing device, and readable storage medium
JP6149707B2 (ja) 動画像符号化装置、動画像符号化方法、動画像符号化プログラム、及び動画像撮影装置
TWI511531B (zh) 影像編碼裝置、影像編碼方法及影像編碼程式
US11044477B2 (en) Motion adaptive encoding of video
US20120195364A1 (en) Dynamic mode search order control for a video encoder
US20140354771A1 (en) Efficient motion estimation for 3d stereo video encoding
US20080212719A1 (en) Motion vector detection apparatus, and image coding apparatus and image pickup apparatus using the same
JP5748225B2 (ja) 動画像符号化方法,動画像符号化装置および動画像符号化プログラム
JP5178616B2 (ja) シーンチェンジ検出装置および映像記録装置
US9071823B2 (en) Method and apparatus for predictive reference data transfer scheme for motion estimation
WO2016179261A1 (en) Methods and apparatus for optical blur modeling for improved video encoding
US8126277B2 (en) Image processing method, image processing apparatus and image pickup apparatus using the same
EP3754983A1 (en) Early intra coding decision
US20110228851A1 (en) Adaptive search area in motion estimation processes
WO2016176849A1 (zh) 一种自适应运动估计方法和模块
JP5171675B2 (ja) 画像処理装置、およびそれを搭載した撮像装置
JP2003061099A (ja) 符号化装置における動き検出方法
JP2015019319A (ja) 符号化装置、符号化方法及びプログラム

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid