KR101615466B1 - 비디오 분석 및 인코딩을 위한 복수의 비디오 채널의 캡쳐 - Google Patents

비디오 분석 및 인코딩을 위한 복수의 비디오 채널의 캡쳐 Download PDF

Info

Publication number
KR101615466B1
KR101615466B1 KR1020147015892A KR20147015892A KR101615466B1 KR 101615466 B1 KR101615466 B1 KR 101615466B1 KR 1020147015892 A KR1020147015892 A KR 1020147015892A KR 20147015892 A KR20147015892 A KR 20147015892A KR 101615466 B1 KR101615466 B1 KR 101615466B1
Authority
KR
South Korea
Prior art keywords
video
input
channels
encoding
standard definition
Prior art date
Application number
KR1020147015892A
Other languages
English (en)
Other versions
KR20140091058A (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 KR20140091058A publication Critical patent/KR20140091058A/ko
Application granted granted Critical
Publication of KR101615466B1 publication Critical patent/KR101615466B1/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
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • 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/423Methods 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 characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/18Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast

Landscapes

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

Abstract

프레임의 일부분들만을 선택적으로 인코딩하고, 대신에 이전에 인코딩된 부분들을 이용함으로써 비디오 인코딩을 보조하기 위해 비디오 분석이 이용될 수 있다. 후속 프레임들이 임계치보다 낮은 움직임 레벨을 가질 때, 이전에 인코딩된 부분들이 이용될 수 있다. 그러한 경우에서, 후속 프레임들의 전부 또는 일부가 인코딩되지 않을 수 있어서, 일부 실시예들에서는 대역폭 및 속도가 증가된다.

Description

비디오 분석 및 인코딩을 위한 복수의 비디오 채널의 캡쳐{CAPTURING MULTIPLE VIDEO CHANNELS FOR VIDEO ANALYTICS AND ENCODING}
본 발명은 일반적으로 컴퓨터에 관한 것이고, 구체적으로는 비디오 처리에 관한 것이다.
비디오가 반드시 처리 및/또는 저장되어야 하는 다수의 응용이 존재한다. 일례는 비디오 감시(video surveillance)인데, 여기에서는 보안 또는 다른 목적을 위하여 하나 이상의 비디오 자료(feed)가 수신, 분석 및 처리될 수 있다. 다른 종래의 응용은 화상 회의를 위한 것이다.
전형적으로, 중앙 처리 유닛과 같은 범용 프로세서가 비디오 처리를 위해 이용된다. 일부 경우들에서는, 그래픽 프로세서라고 지칭되는 전문 프로세서가 중앙 처리 유닛을 도울 수 있다.
비디오 분석은 비디오 정보의 내용에 관한 정보를 획득하는 것을 수반한다. 예를 들어, 비디오 처리는 컨텐츠 분석을 포함할 수 있는데, 여기에서 특정 이벤트들 또는 사건들(occurrences)을 검출하거나, 관심 있는 정보를 찾기 위해 컨텐츠 비디오가 분석된다.
도 1은 본 발명의 일 실시예에 따른 시스템 아키텍쳐이다.
도 2는 일 실시예에 따라 도 1에 도시된 비디오 분석 엔진을 위한 회로도이다.
도 3은 본 발명의 일 실시예에 따른 비디오 캡쳐에 대한 흐름도이다.
도 4는 일 실시예에 따른 2차원 매트릭스 메모리에 대한 흐름도이다.
도 5는 일 실시예에 따른 분석 보조 인코딩(analytics assisted encoding)에 대한 흐름도이다.
도 6은 다른 실시예에 대한 흐름도이다.
도 7은 일 실시예에 따라 도 2에 도시된 메모리 제어기의 도면이다.
도 8은 일 실시예에 따른 메모리 제어기에 대한 흐름도이다.
도 9는 일 실시예에 대한 비디오 캡쳐 인터페이스의 개략도이다.
일부 실시예들에 따르면, 비디오 분석 엔진을 위한 메모리 제어기는 주 메모리 내의 전체 매트릭스 또는 주 메모리 내의 임의의 저장 위치에 자동으로 액세스함으로써 메모리 동작들을 용이하게 할 수 있다. 일부 실시예들에서, 주 메모리는 메모리 제어기가 메모리 매트릭스 내의 임의의 위치(1 픽셀을 포함)를 무작위로 액세스할 수 있게 하는 2차원(2D) 표현(representation)을 저장할 수 있다.
일부 실시예들에서, 내부 메모리는 2D 메모리 매트릭스로서 표현될 수 있고, 외부 메모리는 종래의 선형 메모리일 수 있다. 그러면, 선형 메모리 내에 저장된 데이터는 비디오 분석 엔진 내에서의 사용을 위해 2차원 포맷으로 변환될 수 있다.
도 1을 참조하면, 컴퓨터 시스템(10)은 비디오 감시 및 화상 회의 응용과 같은 비디오 분석을 이용하는 것들은 물론, 비디오 분석을 이용하지 않는 실시예들을 포함하는 다양한 컴퓨터 시스템 중 임의의 것일 수 있다. 시스템(10)은 몇몇 예를 들자면, 데스크탑 컴퓨터, 서버, 랩탑 컴퓨터, 모바일 인터넷 디바이스 또는 셀룰러 전화일 수 있다.
시스템(10)은 시스템 버스(14)에 연결된 하나 이상의 호스트 중앙 처리 유닛(12)을 가질 수 있다. 시스템 메모리(22)는 시스템 버스(14)에 연결될 수 있다. 호스트 시스템 아키텍쳐의 예가 제공되었지만, 본 발명은 결코 임의의 특정한 시스템 아키텍쳐에 한정되지 않는다.
시스템 버스(14)는 버스 인터페이스(16)에 연결될 수 있고, 그것은 결국 종래의 버스(18)에 연결된다. 일 실시예에서, PCIe(Peripheral Component Interconnect Express) 버스가 이용될 수 있지만, 본 발명은 결코 임의의 특정한 버스에 한정되지 않는다.
비디오 분석 엔진(20)은 버스(18)를 통해 호스트에 연결될 수 있다. 일 실시예에서, 비디오 분석 엔진은 인코딩 및 비디오 분석 둘 다를 제공하는 단일 집적 회로일 수 있다. 일 실시예에서, 집적 회로는 EDRAM(embedded Dynamic Random Access Memory) 기술을 이용할 수 있다. 그러나, 일부 실시예들에서, 인코딩 또는 비디오 분석 중 어느 하나가 생략될 수 있다. 추가로, 일부 실시예들에서, 엔진(20)은 온-보드 통합된 2차원 매트릭스 메모리를 제어하며 외부 메모리와의 통신을 제공하는 메모리 제어기를 포함할 수 있다.
따라서, 도 1에 도시된 실시예에서, 비디오 분석 엔진(20)은 로컬 DRAM(dynamic random access memory)(19)과 통신한다. 구체적으로, 비디오 분석 엔진(20)은 메모리(19)에 액세스하기 위한 메모리 제어기를 포함할 수 있다. 대안적으로, 엔진(20)은 시스템 메모리(22)를 이용할 수 있고, 시스템 메모리에의 직접 접속을 포함할 수 있다.
또한, 하나 이상의 카메라(24)도 비디오 분석 엔진(20)에 연결될 수 있다. 일부 실시예들에서, 4개까지의 동시적인 비디오 입력이 표준 선명도 포맷으로 수신될 수 있다. 일부 실시예들에서, 하나의 고선명도 입력이 3개의 입력에서 제공될 수 있고, 하나의 표준 선명도가 4번째 입력에서 제공될 수 있다. 다른 실시예들에서, 더 많거나 더 적은 고선명도 입력이 제공될 수 있고, 더 많거나 더 적은 표준 선명도 입력이 제공될 수 있다. 일례로서, 3개의 입력 각각은 R, G 및 B 입력 또는 Y, U 및 V 입력과 같은 10비트의 고선명도 입력 데이터를 수신할 수 있으며, 각각 별개의 10비트 입력 라인에서 수신할 수 있다.
도 2에 도시된 비디오 분석 엔진(20)의 일 실시예가 페이지의 최상부에서 4개의 카메라 채널 입력을 갖는 실시예로 도시되어 있다. 4개의 입력은 비디오 캡쳐 인터페이스(26)에 의해 수신될 수 있다. 비디오 캡쳐 인터페이스(26)는 몇몇 예를 들자면 텔레비전, 디지털 비디오 레코더 또는 미디어 플레이어 입력을 포함하는 카메라 입력 또는 다른 비디오 정보의 형태로 복수의 동시적인 비디오 입력을 수신할 수 있다.
비디오 캡쳐 인터페이스는 각각의 입력 프레임을 자동으로 캡쳐하고 복사한다. 입력 프레임의 하나의 사본은 VAFF 유닛(66)에 제공되고, 다른 사본은 VEFF 유닛(68)에 제공될 수 있다. VEFF 유닛(68)은 도 1에 도시된 메모리(22)와 같은 외부 메모리에 비디오를 저장하는 것을 담당한다. 외부 메모리는 일 실시예에서 온-칩 시스템 메모리 제어기/중재기(50)에 연결될 수 있다. 일부 실시예들에서, 외부 메모리 상의 저장소는 비디오 인코딩을 목적으로 하는 것일 수 있다. 구체적으로, 하나의 사본이 외부 메모리에 저장되는 경우, 그것은 원하는 포맷으로 정보를 인코딩하기 위해 비디오 인코더들(32)에 의해 액세스될 수 있다. 일부 실시예들에서, 복수의 포맷이 이용가능하며, 시스템은 가장 바람직한 특정 인코딩 포맷을 선택할 수 있다.
위에서 설명된 바와 같이, 일부 경우들에서, 비디오 분석은 비디오 인코더들(32)에 의해 구현되는 인코딩 프로세스의 효율을 개선하기 위해 이용될 수 있다. 프레임들이 인코딩되고 나면, 그 프레임들은 PCI Express 버스(36)를 통해 호스트 시스템에 제공될 수 있다.
동시에, 입력 비디오 프레임들의 다른 사본들이 2차원 매트릭스 또는 주 메모리(28)에 저장된다. VAFF는 4개의 입력 비디오 채널 전부를 동시에 처리하고 전송할 수 있다. VAFF는 비디오를 처리하고 전송하기 위해 4개의 중복된 유닛(replicated unit)을 포함할 수 있다. 메모리(28)를 위한 비디오의 전송은 다중화를 이용할 수 있다. 비디오 리트레이스 시간(video retrace time)에 내재하는 지연으로 인해, 일부 실시예들에서는 복수의 채널의 전달이 실시간으로 행해질 수 있다.
주 메모리 상의 저장소는 선택적으로, 비선형적으로 또는 선형적으로 구현될 수 있다. 종래에는, 메모리 위치들에 액세스하기 위해, 교차하는 어드레싱된 라인들 상의 하나 이상의 위치를 선형 어드레싱하는 것이 규정된다. 일부 경우들에서, 워드 또는 비트라인과 같은 어드레싱된 라인이 규정될 수 있고, 어드레싱된 메모리 라인의 일부분이 자동화된 방식으로 연속적으로 저장될 수 있도록, 그 워드 또는 비트라인을 따른 범위(extent)가 나타내어질 수 있다.
반대로, 2차원 또는 비선형 어드레싱에서, 로우 라인 및 컬럼 라인 둘 다가 하나의 동작에서 액세스될 수 있다. 동작은 예를 들어 로우 또는 컬럼 라인들과 같은 2개의 어드레싱된 라인의 교점에서, 메모리 매트릭스 내의 초기 포인트(initial point)를 규정할 수 있다. 다음으로, 매트릭스의 범위를 예를 들어 로우 및 컬럼 라인을 따라 2차원으로 나타내기 위해, 메모리 크기 또는 다른 구획자(delimiter)가 제공된다. 초기 포인트가 규정되고 나면, 어드레스가능한 위치들의 자동 증분에 의해 전체 매트릭스가 자동으로 저장될 수 있다. 즉, 초기 포인트 이후에 메모리 매트릭스의 후속 부분들을 저장하기 위한 어드레스들을 결정하기 위해 호스트 또는 다른 디바이스들에 되돌아갈 필요가 없다. 2차원 메모리는 어드레스들을 생성하는 태스크를 오프로드(offload)하거나, 그것을 실질적으로 완전하게 제거한다. 결과적으로, 일부 실시예들에서, 요구되는 대역폭 및 액세스 시간 둘 다가 감소될 수 있다.
기본적으로, 2차원 메모리 매트릭스를 판독하기 위해, 동일한 동작이 역으로 행해질 수 있다. 대안적으로, 2차원 메모리 매트릭스는 종래의 선형 어드레싱을 이용해서도 액세스될 수 있다.
메모리 매트릭스의 크기가 규정되는 예가 주어졌지만, 2차원 각각에서의(즉, 워드 및 비트라인을 따르는) 범위를 포함하는 다른 구획자들도 제공될 수 있다. 2차원 메모리는 정지 화상 및 동영상, 그래프, 및 2차원 데이터를 갖는 다른 응용들에서 유리하다.
정보는 메모리(28) 내에 2차원으로 또는 1차원으로 저장될 수 있다. 일 실시예에서, 1차원과 2차원 간의 변환은 하드웨어 내에서 온-더-플라이(on the fly)로 자동 발생할 수 있다.
일부 실시예들에서, 복수의 스트림의 비디오 인코딩이 비디오 인코더 내에서 착수될 수 있고, 동시에 그 복수의 스트림은 또한 비디오 분석 기능 유닛(42) 내에서의 분석을 거치고 있다. 이것은 비디오 캡쳐 인터페이스(26) 내에 스트림들 각각의 사본을 만들고, 스트림들 각각의 한 세트의 사본을 비디오 인코더들(32)에 송신하는 한편, 다른 사본은 비디오 분석 기능 유닛(42)으로 가게 하는 것에 의해 구현될 수 있다.
일 실시예에서, 복수의 스트림 각각의 시간 다중화가 비디오 분석 기능 유닛(42) 및 비디오 인코더들(32) 각각에서 착수될 수 있다. 예를 들어, 사용자 입력에 기초하여, 제1 스트림으로부터의 하나 이상의 프레임이 인코딩될 수 있고, 제2 스트림으로부터의 하나 이상의 프레임이 후속하고, 다음 스트림으로부터의 하나 이상의 스트림이 후속하는 등이다. 마찬가지로, 시간 다중화는 동일한 방식으로 비디오 분석 기능 유닛(42) 내에서 이용될 수 있으며, 사용자 입력에 기초하여, 하나의 스트림으로부터의 하나 이상의 프레임은 비디오 분석을 거치고, 다음으로 다음 스트림으로부터의 하나 이상의 프레임이 그렇게 되는 등이다. 따라서, 일련의 스트림이 인코더들 및 비디오 분석 기능 유닛 내에서 실질적으로 동시에, 즉 한번에(in one shot) 처리될 수 있다.
일부 실시예들에서, 사용자는 먼저 스트림이 처리되는 순서, 및 임의의 특정 시간에 각각의 스트림의 얼마나 많은 프레임이 처리되는지를 설정할 수 있다. 비디오 인코더들 및 비디오 분석 엔진의 경우에서, 프레임들이 처리됨에 따라, 그들은 버스(36)를 통해 출력될 수 있다.
인코더 내의 각각의 스트림의 컨텍스트(context)는 스트림들 각각을 위한 레지스터들을 포함할 수 있는 레지스터 세트(122) 내에서, 그 스트림에 전용인 레지스터 내에 보유될 수 있다. 레지스터 세트(122)는 사용자 입력을 포함하는, 다양한 방식들 중 하나로 규정되어 있는 인코딩의 특성들을 기록할 수 있다. 예를 들어, 각각의 스트림에 대해 요구되는 해상도, 압축률 및 인코딩의 유형이 기록될 수 있다. 다음으로, 시간 다중화 인코딩(time multiplexed encoding)이 발생할 때, 비디오 인코더는 올바른 스트림에 대하여, 레지스터(116)로부터 처리되고 있는 현재 스트림의 올바른 특성들에 액세스할 수 있다.
마찬가지로, 레지스터 세트(124)를 이용하여 비디오 분석 기능 유닛(46) 내에서 동일한 것이 행해질 수 있다. 즉, 스트림마다의 비디오 분석 처리 또는 인코딩의 특성이 레지스터들(124 및 122) 내에 기록될 수 있으며, 각각의 레지스터 세트 내에서 각각의 스트림에 대해 하나의 레지스터가 확보(reserve)된다.
추가로, 사용자 또는 일부 다른 소스는 특성들이 온-더-플라이로 변경될 것을 지시할 수 있다. "온-더-플라이"는, 비디오 분석 기능 유닛(42)의 경우에서는 분석 처리 동안, 또는 비디오 인코더들(32)의 경우에서는 인코딩의 경우에서 발생하는 변경을 지칭하도록 의도된다.
프레임이 처리되고 있을 때 변경이 오면, 그 변경은 처음에 비디오 인코더들을 위해서는 쉐도우 레지스터들(shadow registers)(116) 내에, 그리고 비디오 분석 기능 유닛(42)을 위해서는 쉐도우 레지스터들(114) 내에 기록될 수 있다. 다음으로 프레임(또는 지정된 개수의 프레임들)이 완료되자마자, 비디오 인코더(32)는 임의의 변경들이 레지스터들(116) 내에 저장되었는지를 알아내기 위해 체크를 한다. 저장되었다면, 비디오 인코더는 그러한 변경들을 경로(120)를 통해 레지스터들(122)에 전달하여, 인코딩 특성이 온-더-플라이로 변경된 각각의 스트림에 대해 적절한 레지스터들 내에서 새로운 특성을 갱신한다.
마찬가지로, 일 실시예에서, 동일한 온-더-플라이 변경들이 비디오 분석 기능 유닛(42) 내에서 행해질 수 있다. 온-더-플라이 변경이 검출될 때, 기존의 프레임들(또는 기존의 작업 세트)은 이전의(old) 특성들을 이용하여 완료될 수 있는 한편, 그 변경들은 쉐도우 레지스터들(114) 내에 저장된다. 작업부하 또는 프레임이 처리를 완료하고 난 후, 적당한 시간에, 변경들은 레지스터들(124)에의 저장을 위해 레지스터들(114)로부터 버스(118)를 통해 비디오 분석 기능 유닛(42)에 전달되어, 통상적으로는 레지스터들(124) 중의 개별 레지스터들 내의 임의의 특정 스트림에 대해 저장된 특성들을 대체할 수 있다. 다음으로, 갱신이 완료되고 나면, 다음의 처리 부하는 새로운 특성들을 이용한다.
따라서, 도 6을 참조하면, 시퀀스(130)는 소프트웨어, 펌웨어 및/또는 하드웨어로 구현될 수 있다. 소프트웨어 또는 펌웨어 기반 실시예에서, 시퀀스는 광학, 자기 또는 반도체 메모리와 같은 비일시적인(non-transitory) 컴퓨터 판독가능한 매체 내에 저장된 컴퓨터 실행 명령어들에 의해 구현될 수 있다. 예를 들어, 일 실시예에서, 인코더(32)의 경우에서는 시퀀스가 인코더 내의 메모리에 저장될 수 있고, 분석 기능 유닛의 경우에서는 예를 들어 픽셀 파이프라인 유닛(44)에 저장될 수 있다.
처음에, 시퀀스는 인코딩 또는 분석을 위한 컨텍스트 명령어들의 사용자 입력을 기다린다. 일부 실시예들에서는, 분석 및 인코딩에 대해 흐름이 동일할 수 있다. 다이아몬드 블록(132)에서 결정된 대로 사용자 입력이 수신되고 나면, 블록(134)에 나타난 바와 같이, 컨텍스트는 각각의 스트림에 대해 적절한 레지스터(122 또는 124)에 저장된다. 다음으로, 블록(136)에 나타난 바와 같이, 시간 다중화 처리가 시작한다. 그 처리 동안, 다이아몬드 블록(138)에서의 체크는 임의의 처리 변경 명령어들이 있는지를 판정한다. 없다면, 다이아몬드 블록(142)에서의 체크는 처리가 완료되었는지를 판정한다. 완료되지 않았다면, 시간 다중화 처리가 계속된다.
처리 변경이 수신되었다면, 그것은 블록(140)에 나타난 바와 같이 적절한 쉐도우 레지스터들(114 또는 116) 내에 저장될 수 있다. 다음으로, 현재의 처리 태스크가 완료될 때, 변경은 다음 세트의 동작들에 대해 자동으로 구현될 수 있으며, 그러한 동작들은 비디오 인코더들(32)의 경우에서는 인코딩이거나, 기능 유닛(42)의 경우에서는 분석이다.
일부 실시예들에서, 인코딩의 빈도(frequency)는 인코더 상에서의 부하의 크기에 따라 달라질 수 있다. 일반적으로, 인코더는 다음 프레임이 메모리로부터 판독되기 전에 하나의 프레임의 인코딩을 완료할 수 있을 정도로 충분히 빠르게 동작한다. 많은 경우에서, 인코딩 엔진은 다음 프레임 또는 프레임 세트가 메모리로부터 완전히 소모되기 전에 하나의 프레임 또는 프레임 세트를 인코딩하는 데에 필요한 것보다 더 빠른 속도로 동작할 수 있다.
컨텍스트 레지스터들은 인코더의 경우에서 해상도, 인코딩 유형 및 압축률을 포함하여, 인코딩 또는 분석을 하기 위한 임의의 필요한 기준을 저장할 수 있다. 일반적으로, 처리는 하나의 스트림 또는 채널로부터 다음으로 진행하는 라운드 로빈 방식(round robin fashion)으로 행해질 수 있다. 그러면, 일 실시예에서, 인코딩된 데이터는 PCI(Peripheral Components Interconnect) Express 버스(18)에 출력된다. 일부 경우들에서, PCI Express 버스에 연관된 버퍼들은 각각의 채널로부터 인코딩을 수신할 수 있다. 즉, 일부 실시예들에서, PCI Express 버스와 연관하여 각각의 비디오 채널에 대해 버퍼가 제공될 수 있다. 각각의 채널 버퍼는 PCI Express 버스에 연관된 중재기(arbiter)에 의해 제어되는 버스로 비워질 수 있다. 일부 실시예들에서, 중재기가 각각의 채널을 버스로 비워내는(empty) 방식은 사용자 입력에 따를 수 있다.
따라서, 도 3을 참조하면, 비디오 캡쳐(20)를 위한 시스템은 하드웨어, 소프트웨어 및/또는 펌웨어로 구현될 수 있다. 하드웨어 실시예들은 더 높은 속도가 가능할 수 있으므로, 일부 경우들에서는 하드웨어 실시예들이 유리할 수 있다.
블록(72)에 나타나 있는 바와 같이, 하나 이상의 채널로부터 비디오 프레임들이 수신될 수 있다. 다음으로, 블록(74)에 나타난 바와 같이, 비디오 프레임들이 복사된다. 다음으로, 블록(76)에 나타난 바와 같이, 비디오 프레임들의 하나의 사본이 인코딩을 위해 외부 메모리에 저장된다. 블록(78)에 나타난 바와 같이, 다른 사본은 분석을 목적으로 내부 또는 주 메모리(28)에 저장된다.
다음으로, 도 4에 도시된 2차원 매트릭스 시퀀스(80)를 참조하면, 시퀀스는 소프트웨어, 펌웨어 또는 하드웨어로 구현될 수 있다. 마찬가지로, 하드웨어 실시예를 이용하는 것에 속도 이점이 있을 수 있다.
처음에, 다이아몬드 블록(82)에서의 체크는 저장 커맨드가 수신되었는지를 판정한다. 종래에, 그러한 커맨드들은 호스트 시스템으로부터, 특히 중앙 처리 유닛(12)으로부터 수신될 수 있다. 이러한 커맨드들은 디스패치 유닛(34)에 의해 수신될 수 있고, 다음으로 디스패치 유닛은 커맨드들을 커맨드 구현에 이용되는 엔진(20)의 적절한 유닛들에 제공한다. 일부 실시예들에서 커맨드가 구현된 때, 디스패치 유닛은 호스트 시스템에 다시 보고를 한다.
다이아몬드 블록(82)에서 판정된 대로, 저장 커맨드가 수반되어 있는 경우, 블록(84)에 나타난 바와 같이, 최초 메모리 위치 및 2차원 크기 정보가 수신될 수 있다. 다음으로, 블록(86)에 나타난 바와 같이, 정보는 적절한 2차원 매트릭스에 저장된다. 최초 위치는 예를 들어 매트릭스의 상부 좌측 코너를 정의할 수 있다. 저장 동작은 동작을 구현하기 위해, 필요한 크기의 메모리(20) 내의 매트릭스를 자동으로 발견할 수 있다. 일부 실시예들에서, 메모리 내의 최초 포인트가 제공되고 나면, 동작은 추가의 어드레스 계산을 요구하지 않고서, 매트릭스의 후속 부분들을 자동으로 저장할 수 있다.
반대로, 다이아몬드 블록(88)에서 판정된 대로, 판독 액세스가 수반되는 경우, 블록(90)에 나타난 바와 같이, 최초 위치 및 2차원 크기 정보가 수신된다. 다음으로, 블록(92)에 나타난 바와 같이, 지정된 매트릭스가 판독된다. 다시, 액세스가 자동화된 방식으로 행해질 수 있고, 여기에서 종래의 선형 어드레싱에서 행해지던 바와 같이 최초 포인트가 액세스될 수 있고, 다음으로, 나머지 어드레스들은 종래 방식대로 되돌아가서 어드레스들을 계산할 필요 없이 자동으로 결정된다.
마지막으로, 블록(94)에서 판정된 대로, 이동 커맨드가 호스트로부터 수신된 경우, 블록(96)에 나타난 바와 같이, 최초 위치 및 2차원 크기 정보가 수신되고, 블록(98)에 나타난 바와 같이 이동 커맨드가 자동으로 구현된다. 다시, 정보의 매트릭스는 단순하게 시작 위치를 지정하고 크기 정보를 제공하는 것에 의해, 하나의 위치로부터 다른 위치로 자동 이동될 수 있다.
다시 도 2를 참조하면, 비디오 분석 유닛(42)은 픽셀 파이프라인 유닛(44)을 통해 시스템의 나머지에 연결될 수 있다. 유닛(44)은 디스패치 유닛(34)으로부터의 커맨드들을 실행하는 상태 머신(state machine)을 포함할 수 있다. 전형적으로, 이 커맨드들은 호스트에서 발원되며, 디스패치 유닛에 의해 구현된다. 응용에 기초하여, 다양한 상이한 분석 유닛들이 포함될 수 있다. 일 실시예에서, 컨볼루션(convolutions)의 자동 제공을 위해 컨볼루션 유닛(convolve unit)(46)이 포함될 수 있다.
컨볼루션 커맨드(convolve command)는 커맨드, 및 마스크, 기준 또는 커널을 규정하는 인수들(arguments) 둘 다를 포함할 수 있어서, 하나의 캡쳐된 이미지 내의 피쳐가 메모리(28) 내의 기준 2차원 이미지와 비교될 수 있게 된다. 커맨드는 컨볼루션 결과를 어디에 저장할지를 규정하는 목적지(destination)를 포함할 수 있다.
일부 경우들에서, 비디오 분석 유닛들 각각은 하드웨어 가속기일 수 있다. "하드웨어 가속기"는 중앙 처리 유닛에서 실행되는 소프트웨어보다 더 빠르게 기능을 수행하는 하드웨어 디바이스를 지칭하도록 의도된다.
일 실시예에서, 비디오 분석 유닛들 각각은 그 유닛의 특정 기능에 전용인 특수화된 하드웨어에 의해 실행되는 상태 머신일 수 있다. 결과적으로, 유닛들은 비교적 빠른 방식으로 실행할 수 있다. 더욱이, 비디오 분석 유닛에 의해 구현되는 각각의 동작에 대해 단 하나의 클럭 사이클만이 필요할 수 있는데, 왜냐하면 하드웨어 가속기에게 태스크를 수행하라고 알려주고 태스크를 위한 인수들을 제공하는 것만이 필요하고, 그러면 동작들의 시퀀스는 호스트 프로세서를 포함하는 임의의 프로세서로부터의 추가의 제어 없이 구현될 수 있기 때문이다.
일부 실시예들에서, 다른 비디오 분석 유닛들은 자동화된 방식으로 중심(centroid)을 계산하는 중심 유닛(centroid unit)(48), 자동화된 방식으로 히스토그램을 결정하는 히스토그램 유닛(50), 및 팽창/축소 유닛(dilate/erode unit)(52)을 포함할 수 있다.
팽창/축소 유닛(52)은 주어진 이미지의 해상도를 자동화된 방식으로 증가시키거나 감소시키는 것을 담당할 수 있다. 물론, 사전에 정보가 이용가능하지 않다면 해상도를 증가시키는 것이 가능하지 않지만, 일부 경우들에서, 더 높은 해상도에서 수신된 프레임이 더 낮은 해상도에서 처리될 수 있다. 결과로서, 프레임은 더 높은 해상도에서 이용가능할 수 있고, 팽창/축소 유닛(52)에 의해 더 높은 해상도로 변환될 수 있다.
앞에서 설명된 바와 같이, MTOM(Memory Transfer of Matrix) 유닛(54)은 이동 명령어들을 구현하는 것을 담당한다. 일부 실시예들에서, 산술 유닛(56) 및 부울린 유닛(58)이 제공될 수 있다. 이러한 동일 유닛들이 중앙 처리 유닛 또는 기존 코프로세서와 관련하여 이용될 수 있긴 하지만, 그들을 엔진(20)에 탑재하는 것이 유리할 수 있는데, 왜냐하면 그들이 온-칩으로 존재하면 엔진(20)으로부터 호스트로의, 그리고 반대로의 다수의 데이터 전달 동작이 덜 필요해질 수 있기 때문이다. 더욱이, 일부 실시예들에서는, 그들을 엔진(20)에 탑재하는 것에 의해, 2차원 또는 매트릭스 주 메모리가 이용될 수 있다.
이미지로부터 벡터들을 취하기 위해, 추출 유닛(60)이 제공될 수 있다. 룩업 유닛(lookup unit)(62)은 특정 유형의 정보가 이미 저장되어 있는지를 알아내기 위해 그것을 찾아보는 데에 이용될 수 있다. 예를 들어, 룩업 유닛은 이미 저장된 히스토그램을 찾기 위해 이용될 수 있다. 마지막으로, 이미지가 특정 태스크에 대하여 지나치게 높은 해상도를 가질 때에는 서브샘플링 유닛(subsample unit)(64)이 이용된다. 이미지는 해상도를 낮추기 위해 서브샘플링될 수 있다.
일부 실시예들에서, 카메라 구성 커맨드들과 인터페이스하기 위한 I2C 인터페이스(38), 및 일반적인 입력 및 출력을 수신하고 일부 실시예들에서 디버깅과 관련하여 사용되기 위해 대응 모듈들 전부에 접속된 범용 입력/출력 디바이스(40)를 포함하는 다른 컴포넌트들도 제공될 수 있다.
마지막으로, 도 5를 참조하면, 일부 실시예들에서, 분석 보조 인코딩 스킴(analytics assisted encoding scheme)(100)이 구현될 수 있다. 그러한 스킴은 소프트웨어, 펌웨어 및/또는 하드웨어로 구현될 수 있다. 그러나, 하드웨어 실시예들이 더 빠를 수 있다. 분석 보조 인코딩은 만일 있다면 비디오 정보의 주어진 프레임의 어느 부분들이 인코딩되어야 하는지를 결정하기 위해 분석 능력을 이용할 수 있다. 결과적으로, 일부 실시예들에서는 일부 부분들 또는 프레임들이 인코딩될 필요가 없을 수 있으며, 하나의 결과로서, 속도 및 대역폭이 증가될 수 있다.
일부 실시예들에서, 무엇이 인코딩되는지 또는 무엇이 인코딩되지 않는지는 경우에 따라 다를 수 있으며(case specific), 몇몇 예를 들자면, 예를 들어 이용가능한 배터리 전력, 사용자 선택 및 이용가능한 대역폭에 기초하여 온-더-플라이로 결정될 수 있다. 더 구체적으로, 전체 프레임이 인코딩될 필요가 있는지 여부, 또는 프레임의 일부분만이 인코딩될 필요가 있는지를 판정하기 위해, 현재 프레임들 대 후속 프레임들(existing frames versus ensuing frames)에 대해 이미지 또는 프레임 분석이 행해질 수 있다. 이러한 분석 보조 인코딩은 움직임 벡터를 포함할지의 여부만을 판단하는 종래의 움직임 추정 기반 인코딩에 대조적이면서도, 여전히 각각의 모든 프레임을 인코딩한다.
본 발명의 일부 실시예들에서, 연속적인 프레임들은 선택에 기초하여 인코딩되거나 인코딩되지 않으며, 프레임 내의 선택된 영역들은 그러한 영역들 내에서의 움직임의 범위에 기초하여 인코딩되거나 전혀 인코딩되지 않을 수 있다. 다음으로, 디코딩 시스템은 얼마나 많은 프레임이 인코딩되었는지 또는 인코딩되지 않았는지를 알게 되고, 필요에 따라 단순히 프레임들을 복사할 수 있다.
도 5를 참조하면, 블록(102)에 나타난 바와 같이, 베이스 또는 기준을 결정하기 위해, 시작 시에 제1 프레임 또는 프레임들이 완전하게 인코딩될 수 있다. 다음으로, 다이아몬드 블록(104)에서의 체크는 분석 보조 인코딩이 제공되어야 하는지를 판정한다. 분석 보조 인코딩이 이용되지 않을 것인 경우, 인코딩은 종래에 행해지던 대로 진행한다.
다이아몬드 블록(104)에서 판정된 대로, 분석 보조 인코딩이 제공되는 경우, 블록(106)에 나타난 바와 같이 임계값이 결정된다. 임계값은 고정적일 수 있거나, 몇몇 예를 들자면, 이용가능한 배터리 전력, 이용가능한 대역폭 또는 사용자 선택과 같은 비-움직임 인자들(non-motion factors)에 따라 적응적일 수도 있다. 다음으로, 블록(108)에서, 현재 프레임 및 후속 프레임들이 분석되어 임계값을 초과하는 움직임이 존재하는지, 그리고 존재한다면 특정 영역들로 고립될 수 있는지가 판정된다. 이를 위해, 컨볼루션 유닛, 팽창/축소 유닛, 서브샘플링 유닛 및 룩업 유닛을 포함하지만 그에 한정되지는 않는 다양한 분석 유닛이 이용될 수 있다. 구체적으로, 이미지 또는 프레임은 이전 및/또는 후속 프레임들에 대하여 분석된, 임계값을 초과하는 움직임에 대하여 분석될 수 있다.
다음으로, 블록(110)에 나타난 바와 같이, 임계값을 초과하는 움직임을 갖는 영역들이 찾아질 수 있다. 일 실시예에서는, 블록(112)에 나타난 바와 같이, 그러한 영역들만이 인코딩될 수 있다. 일부 경우들에서, 주어진 프레임의 어느 영역도 전혀 인코딩되지 않을 수 있고, 이러한 결과는 디코딩 동안 프레임이 단순히 복사될 수 있도록 단순하게 기록될 수 있다. 일반적으로, 인코더는 어떤 프레임들이 인코딩되었는지, 및 프레임들이 인코딩된 부분들만을 갖는지의 여부에 관한 정보를 헤더 또는 다른 위치에 제공한다. 일부 실시예들에서, 인코딩된 부분의 어드레스는 최초 포인트 및 매트릭스 크기의 형태로 제공될 수 있다.
일부 실시예들에 따르면, 메모리 제어기(50)는 주 메모리(28) 내에서 전체 매트릭스의 위치를 자동으로 찾을 수 있거나, 주 메모리 매트릭스 내에 저장된 2D 표현 내의 임의의 픽셀에 액세스할 수 있다. 일부 실시예들에서, 메모리 제어기는 구체적으로, 일반 저장소와 대조적으로, 비디오 저장소와 함께 작동하도록 설계된다. 일부 실시예들에서, 메모리 제어기는 완전한(full) 프레임 또는 하나의 픽셀에 액세스할 수 있다. 완전한 프레임에 액세스하기 위해서 필요한 전부는, 프레임의 시작 포인트 및 프레임 크기이다. 다음으로, 모든 어드레스가 메모리 제어기(50) 내에서 내부적으로 계산된다.
다음으로, 매트릭스는 예를 들어 8×8 또는 16×16 크기일 수 있는 매크로블록들로 분할될 수 있다. 제어기에 의해 정의되는 매트릭스 자체는 임의의 요구되는 크기를 가질 수 있다.
일부 실시예들에서, 이러한 2차원 구성, 및 주 메모리 내의 매트릭스들에 액세스하기 위한 메모리 제어기의 이용은 많은 이점을 가질 수 있다. 이점의 일례로서, 스크린은 완전히 하나의 컬러일 수 있다. 전체 스크린을 처리하는 대신에, 한 번에 하나의 8×8 매크로블록이 처리될 수 있고, 각각의 8×8 매크로블록이 모두 동일 컬러인지를 판정하기 위해 히스토그램이 전개될 수 있다. 동일 컬러라면, 임의의 하나의 8×8 매크로블록을 분석하는 것만이 필요하고, 전체 프레임이 효과적으로 분석된다.
따라서, 일부 실시예들에서, 매트릭스는 임의의 크기일 수 있고, 픽셀은 8, 16, 24, 32비트를 포함하는 임의의 크기를 가질 수 있고, 매트릭스들은 2차원 매트릭스일 수 있다. 메모리들이 항상 선형이긴 하지만, 선형 어드레스는 메모리 제어기에 의해 2차원 어드레스로 변환된다.
도 7을 참조하면, 메모리 제어기(50)의 더 상세한 도시가 제공된다. 외부 메모리들(156)은 DDR(double data rate) 랜덤 액세스 메모리들(156)일 수 있고, 일부 실시예들에서는 2차원 메모리가 아니라, 대신에 종래의 선형 메모리이다.
따라서, 2차원 데이터는 외부 메모리들(156) 내의 저장을 위해 선형 데이터로 변환될 수 있고, 반대로, 외부 메모리들(156)로부터의 선형 데이터는 메모리 제어기(50) 내에서의 사용을 위해 2차원 데이터로 변환될 수 있다.
외부 랜덤 액세스 메모리들(156)은 아날로그 물리 또는 PHY(154)에 의해 외부 메모리 제어기(152)에 접속된다. 외부 메모리 제어기(152)는 외부 메모리 중재기(150)에 접속한다.
중재기(150)는 판독 기입 직접 메모리 액세스(DMA; direct memory access) 엔진(142)에 접속한다. 엔진(142)은 PCI Express 버스(36)(도 2)로부터 내부 메모리(28)(도 2) 또는 외부 메모리(156)에의 직접 경로를 제공한다. 직접 메모리 액세스 엔진(144)은 2D 대 선형 변환을 제공한다는 것을 의미하는 주 메모리 대 외부 메모리(MTOE: main memory to external memory) 변환을 가능하게 하고, 또한 외부 메모리 대 주 메모리(ETOM: external memory to main memory) 변환을 가능하게 한다. 피드백 DMA(direct memory access) 엔진(146)은 DMA 엔진(144)과 함께 작동한다. 엔진(144)은 엔진(146)의 제어 및 요청을 생성하고, 엔진(144)으로부터의 데이터를 살펴보고, 요구되는 데이터가 전달된 정확한 시간에 시그널링하며, 다음으로 엔진(144)에게 계류 중인 요청을 취소할 것을 요청한다. 엔진들(142, 144 및 146)은 주 메모리 명령어 중재기(148)에 접속하고, 그것은 도 2에 도시된 주 메모리(28)에 접속한다.
복수의 인코더(158, 160, 162 및 164)는 주 메모리 인코더 중재기(166) 및 외부 메모리 중재기(150)와 함께 작동할 수 있다. VCI 비디오 큐(158)는 비디오를 내부 또는 주 메모리(28)에 기입하는 에이전트이다. 일 실시예에서의 H.264 비디오 압축 포맷 비디오 큐(160)는 압축을 위한 에이전트이며, 어느 한 메모리로부터의 비디오 데이터를 페치하고, 인코더 스크래치 패드 큐(encoder scratch pad queue)(164)를 이용하여 그 데이터를 판독 및 기입한다. 2011년 6월의 ITU(International Telecommunications Union)로부터 입수가능한 H.264(MPEG-4) 어드밴스드 비디오 코딩 규격(Advanced Video Coding Specification)을 참조한다. 큐(164)는 H.264 비디오 큐가 판독 및 기입 둘 다를 할 수 있게 한다. 그러나, JPEG 이미지 압축 포맷 비디오 큐(162)는 어느 한 메모리로부터 페치하지만 데이터를 판독하기만 하고 기입은 절대 하지 않는 에이전트이다. 1992년 9월의 ITU(International Telecommunications Union)로부터 입수가능한 JPEG 표준 T.81을 참조한다. 일부 실시예들에서, 상이한 압축 표준들이 이용될 수 있다.
결과적으로, VCI 및 인코더들 둘 다가 주 메모리 또는 외부 메모리 중 어느 하나로부터 동작할 수 있다. 인코딩 동안, 2차원 주 메모리로부터 실행될 때, 주 메모리 인코더 중재기(166)는 모든 변환을 엔진들(144 및 146)을 이용하지 않고서 행한다. 따라서, 비디오 인코딩 동안 중재기(166)에 의해 더 많은 직접 변환이 구현될 수 있다. 일 실시예에서, 중재기(166)는 데이터를 페치하고, 그것을 선형 형태로 변환하여 큐(160)에 제공한다.
도 8을 참조하면, 메모리 제어기(150) 내의 메모리 매트릭스 액세스들을 위한 시퀀스(168)는 소프트웨어, 하드웨어 및/또는 펌웨어로 구현될 수 있다. 소프트웨어 및 펌웨어 실시예들에서, 그것은 자기, 광학 또는 반도체 메모리와 같은 비일시적인 컴퓨터 판독가능한 매체 내에 저장된 컴퓨터 실행 명령어들에 의해 구현될 수 있다.
다이아몬드 블록(170)에서 랜덤 액세스 메모리 요청이 수반되어 있는지를 판정하는 것에 의해 시퀀스가 시작한다. 그렇다면, X 및 Y 어드레스는 블록(172)에 나타난 바와 같이 2차원 매트릭스 표현에 저장된 임의의 픽셀들에 액세스하기 위해 이용된다. 다음으로, 메모리 제어기 자체는 블록(174)에 나타난 것과 같이 액세스 위치들에 대한 어드레스들을 내부적으로 계산한다.
한편, 랜덤 액세스가 수반되지 않은 경우, 시작 어드레스 및 프레임 사이트(site)가 메모리 제어기(50)에 의해 획득되고(블록(176)), 이 정보는 주 메모리 내의 매트릭스를 규정하는 데에 충분하다. 그리고, 어드레스들은 블록(174)에 나타난 바와 같이 내부적으로 계산된다.
도 3, 4, 5 및 8은 하드웨어로 구현될 수 있는 흐름도들이다. 이들은 소프트웨어 또는 펌웨어로도 구현될 수 있는데, 그러한 경우에서 그들은 광학, 자기 또는 반도체 메모리와 같은 비일시적인 컴퓨터 판독가능한 매체 상에 구현될 수 있다. 비일시적인 매체는 프로세서에 의한 실행을 위해 명령어들을 저장한다. 그러한 프로세서 또는 제어기의 예들은 분석 엔진(20)을 포함할 수 있고, 2가지 예를 들자면, 적합한 비일시적인 매체는 주 메모리(28) 및 외부 메모리(22)를 포함할 수 있다.
도 9를 참조하면, 일 실시예에 따르면, 비디오 캡쳐 인터페이스(26)는 실시간 비디오 분석을 위해 고선명 해상도 또는 복수의 표준 선명도 비디오 채널을 캡쳐할 수 있다. 일 실시예에서, 인터페이스는 하나의 고선명 해상도 비디오 채널 또는 4개의 표준 선명도 비디오 채널을 지원하도록 구성될 수 있다. 그것은 ITU(International Telecommunication Union)-권고안 BT.656(12/07) 및 BT.1120, 및 SMPTE(Society of Motion Picture and Television Engineers) 274M-2005/296M-2001을 포함하는 임의의 비디오 인터페이스 표준을 지원할 수 있다.
일 실시예에서, 비디오 파이프라인은 수직 방향으로는 비디오 치수에 대하여 어떠한 제약도 가하지 않는다. 비록 수평 치수는 이용가능한 라인 버퍼 크기에 의해 한정되지만, 수직 제약을 없애면 몇 가지의 이용 사례(use case)를 가능하게 할 수 있다.
일 실시예에서, 인터페이스(26)는 비디오 케이블이 물리적으로 분리되어 있을 때조차도 기능을 계속할 수 있다. 추가로, 일부 실시예들에서, 이러한 인터페이스는 메모리 서브시스템들 내의, 또는 PCI 인터페이스(36)(도 2) 상의 자원 충돌들로 인해 프레임들이 누락(drop)되어야 할 때조차도 기능을 계속할 수 있다. 일 실시예에서, 룩업 테이블 접근 방식을 이용하여 감마 정정 기능(gamma correction function)이 구현될 수 있다. 그러한 접근 방식은 펌웨어에게 픽셀 변환을 위한 곡선을 선택하는 데에 있어서의 더 큰 유연성을 허용한다.
일 실시예에서, 인코딩 및 분석 경로들 각각에서 제2 윈도우잉 기능(windowing function)이 제공될 수 있다. 이것은 인코딩 기능과 분석 기능을 위한 비디오 크기의 독립적인 설정을 가능하게 할 수 있다. 펌웨어는 온-더-플라이로 변경될 수 있다. 내부적으로, 구성 변경들은 프레임 경계에 동기화되고, 일부 실시예들에서 이것은 집적 회로의 나머지와의 무결절성(seamless) 인터페이스를 허용한다.
일 실시예에서, 내부의 100 MHz 클럭은 27 MHz 내지 74.25 MHz에서 입력 비디오 채널들과 함께 작동할 수 있다. 추가로, 일 실시예에서, 코어 프로세서는 300 MHz 내지 500 MHz에서 동작할 수 있다.
도 9를 참조하면, 0 내지 3으로 라벨이 붙여진 4개의 입력 비디오 채널이 존재한다. 채널 0 내지 2 중 임의의 것에서 고선명도 비디오가 제공될 수 있고, 일 실시예에서, 채널 1 및 2에서 고선명도 비디오가 제공될 때, 그것은 비디오 채널 0에 연관된 프레임 캡쳐(176)에 이식(ported)될 수 있다. 일반적으로, 비디오 채널 1 내지 3은 고선명도 비디오가 수신되는 경우를 제외한 모든 경우에서 표준 선명도 비디오를 다룰 수 있다.
프레임 캡쳐 유닛들(176)은 고선명도 또는 표준 선명도 비디오 중 어느 하나를 감마 룩업 테이블(GLUT: gamma look-up table)(178)에 제공한다. 감마 룩업 테이블은 입력 표준 선명도 YCrCb 또는 고선명도 YCrCb 또는 RGB 비디오 스페이스들을, 다운스케일러들(downscalers)(180 또는 182)에 제공되는 휘도(luminance) 및 색차(chrominance) 값들로 변환한다. 다운스케일러들(180)은 인코더에 연관되고, 다운스케일러들(182)은 비디오 분석 엔진에 연관된다.
다운스케일러들은 다운스케일링된 휘도 및 색차 데이터를 프레임 포맷터(184)에 제공한다. 다음으로, 프레임 포맷터(184)는 인코더 핸드쉐이크 신호, 이용가능/완료/에러 신호, 및 외부 메모리의 기입 포트로 가는 기입 값 어드레스 데이터 신호 및 메모리 매트릭스로 가는 기입 값 어드레스를 포함하는 다양한 출력 신호를 제공한다. 추가로, 프레임 포맷터(184)는 인코더로부터의 준비 신호, 및 디스패치 유닛(34)(도 2)으로부터의 포트 로드 요청(port load request)을 수신한다.
일부 실시예들에서, 비디오 캡쳐 인터페이스 제어 및 상태 레지스터(CSR: Control and Status Register) 로직(186)은 프레임 캡쳐, 감마 룩업 테이블, 다운스케일러 및 프레임 포맷터와 인터페이스하고, PCI Express 버스(36)(도 2)에의 양방향 액세스를 제공한다.
여기에 설명된 그래픽 처리 기법들은 다양한 하드웨어 아키텍쳐로 구현될 수 있다. 예를 들어, 그래픽 기능은 칩셋 내에 통합될 수 있다. 대안적으로, 이산 그래픽 프로세서(discrete graphics processor)가 이용될 수 있다. 또 다른 실시예로서, 그래픽 기능은 멀티코어 프로세서를 포함하는 범용 프로세서에 의해 구현될 수 있다.
본 명세서 전반에서 "일 실시예" 또는 "실시예"에 대한 언급은 그 실시예와 관련하여 기술되는 특정한 피쳐, 구조 또는 특성이 본 발명 내에 포함되는 적어도 하나의 구현에 포함됨을 의미한다. 따라서, "일 실시예" 또는 "실시예에서"라는 문구가 나온다고 해서, 반드시 동일한 실시예를 지칭하는 것은 아니다. 또한, 특정한 피쳐, 구조 또는 특성은 예시된 특정 실시예 외의 다른 적절한 형태로 설정될 수 있으며, 그러한 형태 모두가 본 출원의 청구항 내에 포괄될 수 있다.
본 발명이 제한된 수의 실시예에 관련하여 설명되었지만, 본 기술분야의 숙련된 자들은 그로부터의 다수의 수정 및 변형을 인식할 것이다. 첨부된 청구항들은 그러한 수정들 및 변형들 전부를 본 발명의 진정한 취지 및 범위 내에 드는 것으로서 포괄하도록 의도된다.

Claims (20)

  1. 컴퓨터 시스템에 의해 구현되는 비디오 처리 방법으로서,
    적어도 4개의 입력 비디오 채널을 제공하는 단계;
    고선명도 입력(high definition input)이 수신되는 경우, 4개의 채널 중 3개의 채널을 고선명도 입력에, 나머지 단일 채널을 표준 선명도 입력(standard definition input)에 할당하는 단계; 및
    표준 선명도 신호들만이 수신되는 경우, 4개의 채널 모두를 4개의 표준 선명도 신호들에 할당하는 단계
    를 포함하는 비디오 처리 방법.
  2. 제1항에 있어서, 비디오 수직 크기를 변경하는 것이 허용되는, 비디오 처리 방법.
  3. 제1항에 있어서, 상기 제공된 적어도 4개의 입력 비디오 채널에 대해, 룩업 테이블(look-up table)을 이용하여 감마 정정 기능(gamma correction function)을 제공하는 단계를 포함하는 비디오 처리 방법.
  4. 제1항에 있어서, 상기 제공된 적어도 4개의 입력 비디오 채널에 대해, 인코딩 및 비디오 분석을 위해 별개의 다운스케일러들(downscalers)을 제공하는 단계를 포함하는 비디오 처리 방법.
  5. 제1항에 있어서, 상기 제공된 적어도 4개의 입력 비디오 채널에 대해, 다운스케일러 휘도(luminance) 및 색차(chrominance) 데이터를 프레임 포맷터(frame formatter)에 제공하는 단계를 포함하는 비디오 처리 방법.
  6. 명령어들을 저장하고 있는 비일시적인 컴퓨터 판독가능한 매체(non-transitory computer readable medium)로서, 상기 명령어들은 컴퓨터 시스템으로 하여금,
    적어도 4개의 입력 비디오 채널을 제공하고;
    고선명도 입력이 수신되는 경우, 4개의 채널 중 3개의 채널을 고선명도 입력에, 나머지 단일 채널을 표준 선명도 입력에 할당하고;
    표준 선명도 신호들만이 수신되는 경우, 4개의 채널 모두를 4개의 표준 선명도 신호들에 할당하도록 하는 컴퓨터 판독가능한 매체.
  7. 제6항에 있어서, 비디오 수직 크기를 변경하는 것이 허용되는, 컴퓨터 판독가능한 매체.
  8. 제6항에 있어서, 상기 컴퓨터 시스템으로 하여금, 상기 제공된 적어도 4개의 입력 비디오 채널에 대해, 룩업 테이블을 이용한 감마 정정 기능을 제공하도록 하는 명령어들을 더 저장하고 있는 컴퓨터 판독가능한 매체.
  9. 제6항에 있어서, 상기 컴퓨터 시스템으로 하여금, 상기 제공된 적어도 4개의 입력 비디오 채널에 대해, 인코딩 및 비디오 분석을 위한 별개의 다운스케일러들을 제공하도록 하는 명령어들을 더 저장하고 있는 컴퓨터 판독가능한 매체.
  10. 제6항에 있어서, 상기 컴퓨터 시스템으로 하여금, 상기 제공된 적어도 4개의 입력 비디오 채널에 대해, 다운스케일러 휘도 및 색차 데이터를 프레임 포맷터에 제공하도록 하는 명령어들을 더 저장하고 있는 컴퓨터 판독가능한 매체.
  11. 비디오 처리 장치로서,
    적어도 4개의 입력 비디오 채널 프레임 캡쳐 유닛(input video channel frame capture units)을 포함하고,
    고선명도 입력이 수신되는 경우, 4개의 캡쳐 유닛 중 3개의 캡쳐 유닛이 고선명도 입력에, 나머지 단일 캡쳐 유닛이 표준 선명도 입력에 할당되고;
    표준 선명도 신호들만이 수신되는 경우, 4개의 캡쳐 유닛 모두가 4개의 표준 선명도 신호들에 할당되는, 비디오 처리 장치.
  12. 제11항에 있어서, 상기 캡쳐 유닛들은 비디오 수직 크기가 변경되는 것을 허용하기 위한 것인, 비디오 처리 장치.
  13. 제11항에 있어서, 룩업 테이블들을 이용한 감마 정정 기능을 제공하기 위해 상기 유닛들에 연결된 상기 룩업 테이블들을 포함하는 비디오 처리 장치.
  14. 제11항에 있어서, 상기 장치는 인코딩 및 비디오 분석을 위해 별개의 다운스케일러들을 포함하는 비디오 처리 장치.
  15. 제14항에 있어서, 상기 다운스케일러들 중 하나로부터 다운스케일러 휘도 및 색차 데이터를 수신하기 위한 프레임 포맷터를 포함하는 비디오 처리 장치.
  16. 비디오 처리 시스템으로서,
    적어도 4개의 입력 비디오 채널 프레임 캡쳐 유닛을 포함하는 비디오 캡쳐 인터페이스;
    상기 인터페이스에 연결된 비디오 인코더; 및
    상기 인터페이스에 연결되고, 고선명도 입력이 수신되는 경우, 4개의 캡쳐 유닛 중 3개의 캡쳐 유닛을 고선명도 입력에, 나머지 단일 캡쳐 유닛을 표준 선명도 입력에 할당하고, 표준 선명도 신호들만이 수신되는 경우, 4개의 캡쳐 유닛 모두를 4개의 표준 선명도 신호들에 할당하는 비디오 분석 장치
    를 포함하는 비디오 처리 시스템.
  17. 제16항에 있어서, 상기 캡쳐 유닛들은 비디오 수직 크기가 변경되는 것을 허용하기 위한 것인, 비디오 처리 시스템.
  18. 제16항에 있어서, 룩업 테이블들을 이용한 감마 정정 기능을 제공하기 위해 상기 유닛들에 연결된 상기 룩업 테이블들을 포함하는 비디오 처리 시스템.
  19. 제16항에 있어서, 인코딩 및 비디오 분석을 위해 별개의 다운스케일러들을 포함하는 비디오 처리 시스템.
  20. 제19항에 있어서, 상기 다운스케일러들 중 하나로부터 다운스케일러 휘도 및 색차 데이터를 수신하기 위한 프레임 포맷터를 포함하는 비디오 처리 시스템.
KR1020147015892A 2011-12-12 2011-12-12 비디오 분석 및 인코딩을 위한 복수의 비디오 채널의 캡쳐 KR101615466B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/064344 WO2013089664A1 (en) 2011-12-12 2011-12-12 Capturing multiple video channels for video analytics and encoding

Publications (2)

Publication Number Publication Date
KR20140091058A KR20140091058A (ko) 2014-07-18
KR101615466B1 true KR101615466B1 (ko) 2016-04-25

Family

ID=48612966

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147015892A KR101615466B1 (ko) 2011-12-12 2011-12-12 비디오 분석 및 인코딩을 위한 복수의 비디오 채널의 캡쳐

Country Status (6)

Country Link
US (1) US20130322552A1 (ko)
EP (1) EP2792143A4 (ko)
KR (1) KR101615466B1 (ko)
CN (1) CN103975583A (ko)
TW (2) TWI583178B (ko)
WO (1) WO2013089664A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2754291A4 (en) 2011-09-06 2015-04-29 Intel Corp ASSISTED CODING BY ANALYSIS
US11463739B2 (en) 2020-06-29 2022-10-04 Seagate Technology Llc Parameter based load balancing in a distributed surveillance system
US11503381B2 (en) 2020-06-29 2022-11-15 Seagate Technology Llc Distributed surveillance system with abstracted functional layers
US11343544B2 (en) 2020-06-29 2022-05-24 Seagate Technology Llc Selective use of cameras in a distributed surveillance system
CN114245129A (zh) * 2022-02-22 2022-03-25 湖北芯擎科技有限公司 图像处理方法、装置、计算机设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006129437A (ja) 2004-09-30 2006-05-18 Nec Corp ガンマ補正、画像処理方法及びプログラム、並びにガンマ補正回路、画像処理装置、表示装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5196924A (en) * 1991-07-22 1993-03-23 International Business Machines, Corporation Look-up table based gamma and inverse gamma correction for high-resolution frame buffers
US5381145A (en) * 1993-02-10 1995-01-10 Ricoh Corporation Method and apparatus for parallel decoding and encoding of data
US5896176A (en) * 1995-10-27 1999-04-20 Texas Instruments Incorporated Content-based video compression
US6141447A (en) * 1996-11-21 2000-10-31 C-Cube Microsystems, Inc. Compressed video transcoder
US6549577B2 (en) * 1997-09-26 2003-04-15 Sarnoff Corporation Computational resource allocation in an information stream decoder
WO2001061999A1 (en) * 2000-02-15 2001-08-23 4Nsys Co., Ltd. Multi-channel image encoding method and system
CA2321015A1 (en) * 2000-09-27 2002-03-27 Jing Yang Chen Method and apparatus for determining a bit rate need parameter in a statistical multiplexer
US7817716B2 (en) * 2003-05-29 2010-10-19 Lsi Corporation Method and/or apparatus for analyzing the content of a surveillance image
JP2005151485A (ja) * 2003-11-20 2005-06-09 Hitachi Ltd 映像信号符号化装置および映像信号記録装置
WO2005104551A2 (en) * 2004-04-16 2005-11-03 Modulus Video, Inc. High definition scalable array encoding system and method
US8214859B2 (en) * 2005-02-14 2012-07-03 At&T Intellectual Property I, L.P. Automatic switching between high definition and standard definition IP television signals
US7434146B1 (en) * 2005-05-06 2008-10-07 Helwett-Packard Development Company, L.P. Denoising and error correction for finite input, general output channel
US9258519B2 (en) * 2005-09-27 2016-02-09 Qualcomm Incorporated Encoder assisted frame rate up conversion using various motion models
US20080129844A1 (en) * 2006-10-27 2008-06-05 Cusack Francis J Apparatus for image capture with automatic and manual field of interest processing with a multi-resolution camera
US9584710B2 (en) * 2008-02-28 2017-02-28 Avigilon Analytics Corporation Intelligent high resolution video system
US9325951B2 (en) * 2008-03-03 2016-04-26 Avigilon Patent Holding 2 Corporation Content-aware computer networking devices with video analytics for reducing video storage and video communication bandwidth requirements of a video surveillance network camera system
US20090290645A1 (en) * 2008-05-21 2009-11-26 Broadcast International, Inc. System and Method for Using Coded Data From a Video Source to Compress a Media Signal
CN101998111A (zh) * 2009-08-28 2011-03-30 杨占坤 高清摄像机视频采集模式自动转换的系统和方法
US9788017B2 (en) * 2009-10-07 2017-10-10 Robert Laganiere Video analytics with pre-processing at the source end
CN101706675B (zh) * 2009-11-17 2013-04-17 北京中科大洋科技发展股份有限公司 一种具有内部切换功能的高标清视音频io卡
US9325929B2 (en) * 2010-04-29 2016-04-26 Ati Technologies Ulc Power management in multi-stream audio/video devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006129437A (ja) 2004-09-30 2006-05-18 Nec Corp ガンマ補正、画像処理方法及びプログラム、並びにガンマ補正回路、画像処理装置、表示装置

Also Published As

Publication number Publication date
TWI526050B (zh) 2016-03-11
WO2013089664A1 (en) 2013-06-20
KR20140091058A (ko) 2014-07-18
CN103975583A (zh) 2014-08-06
TW201332366A (zh) 2013-08-01
US20130322552A1 (en) 2013-12-05
TW201635787A (zh) 2016-10-01
TWI583178B (zh) 2017-05-11
EP2792143A4 (en) 2015-12-02
EP2792143A1 (en) 2014-10-22

Similar Documents

Publication Publication Date Title
KR101615466B1 (ko) 비디오 분석 및 인코딩을 위한 복수의 비디오 채널의 캡쳐
US10070134B2 (en) Analytics assisted encoding
EP1992162B1 (en) Memory organizational scheme and controller architecture for image and video processing
US10146679B2 (en) On die/off die memory management
US20130329137A1 (en) Video Encoding in Video Analytics
US20130278775A1 (en) Multiple Stream Processing for Video Analytics and Encoding
US9179156B2 (en) Memory controller for video analytics and encoding
US20130322551A1 (en) Memory Look Ahead Engine for Video Analytics

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