KR101702801B1 - 카메라 커맨드 세트 호스트 커맨드 변환 - Google Patents

카메라 커맨드 세트 호스트 커맨드 변환 Download PDF

Info

Publication number
KR101702801B1
KR101702801B1 KR1020157031290A KR20157031290A KR101702801B1 KR 101702801 B1 KR101702801 B1 KR 101702801B1 KR 1020157031290 A KR1020157031290 A KR 1020157031290A KR 20157031290 A KR20157031290 A KR 20157031290A KR 101702801 B1 KR101702801 B1 KR 101702801B1
Authority
KR
South Korea
Prior art keywords
imaging device
command
commands
conversion
camera
Prior art date
Application number
KR1020157031290A
Other languages
English (en)
Other versions
KR20150129049A (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 KR20150129049A publication Critical patent/KR20150129049A/ko
Application granted granted Critical
Publication of KR101702801B1 publication Critical patent/KR101702801B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00962Input arrangements for operating instructions or parameters, e.g. updating internal software
    • H04N1/00973Input arrangements for operating instructions or parameters, e.g. updating internal software from a remote device, e.g. receiving via the internet instructions input to a computer terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/617Upgrading or updating of programs or applications for camera control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/002Specific input/output arrangements not covered by G06F3/01 - G06F3/16
    • G06F3/005Input arrangements through a video camera
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/66Remote control of cameras or camera parts, e.g. by remote control devices
    • H04N23/661Transmitting camera control signals through networks, e.g. control via the Internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/80Camera processing pipelines; Components thereof
    • H04N5/23206
    • H04N5/23225
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0008Connection or combination of a still picture apparatus with another apparatus
    • H04N2201/0074Arrangements for the control of a still picture apparatus by the connected apparatus
    • H04N2201/0075Arrangements for the control of a still picture apparatus by the connected apparatus by a user operated remote control device, e.g. receiving instructions from a user via a computer terminal or mobile telephone handset
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0084Digital still camera

Abstract

본 개시물은 입력 카메라 커맨드를 디바이스 디바이스 특정 커맨드로 변환하기 위한 기법을 제공한다. 카메라 커맨드는 카메라와 별도로 위치된 변환 엔진에 의해 변환되고 그 이후 카메라에 전달될 수 있다. 변환된 커맨드는 입력 커맨드보다 덜 복잡할 수 있다. 커맨드를 변환함으로써, 오더 카메라는 기본적으로 지원되지 않는 새로운 커맨드를 지원할 수 있다.

Description

카메라 커맨드 세트 호스트 커맨드 변환{CAMERA COMMAND SET HOST COMMAND TRANSLATION}
본 기술은 전반적으로 카메라 커맨드 세트에 관한 것이다.
이미지 디바이스는 이미지 캡처를 위해 구성된 모듈 및 센서와 같은 컴포넌트를 포함한다. 각각의 이미지 디바이스 내 모듈 및 센서의 구성은 변화할 수 있다. 구성에 상관없이, 각각의 이미지 디바이스는, 호스트 프로세서와 인터페이싱할 것이다. 따라서, 호스트 프로세서는 상이하게 구성된 다양한 카메라와 인터페이싱할 수 있다.
특정 예시의 실시예들은 도면을 참조하여 다음의 상세한 설명에서 설명된다.
도 1은 실시예들에 따라 사용될 수 있는 호스트 디바이스에 관한 블록도이다.
도 2는 실시예들에 따른, 카메라에 관한 블록도이다.
도 3은 실시예들에 따라, 카메라 커맨드를 변환하기 위한 시스템에 관한 블록도이다.
도 4는 실시예들에 따라, 카메라 서브시스템을 개시하는 방법을 도시하는 프로세스 흐름도이다.
도 5는 실시예들에 따라, 카메라 커맨드를 변환하는 방법에 관한 프로세스 흐름도이다.
도 6은 실시예들에 따라, 전송 메커니즘으로 하여금 Get 및 Set 아키텍처에 기초하여 CCS 커맨드를 실행하게 하는 방법에 관한 프로세스 흐름도이다.
도 7은 실시예들에 따라, 센서 및 모듈 특정 메타데이터를 인출 및 저장하게 하는 메타데이터 저장소 서브시스템에 관한 블록도이다.
도 8은 실시예들에 따라, 메타데이터 저장소 서브시스템을 인에이블하는 방법에 관한 프로세스 흐름도이다.
도 9는 실시예들에 따라, 카메라 커맨드를 변환하기 위한 코드를 저장하는 유형의, 비일시적 컴퓨터 판독가능 매체를 도시하는 블록도이다.
도 10은 실시예들에 따라, 카메라 커맨드를 변환하기 위한 예시의 시스템에 관한 블록도이다.
도 11은 실시예들에 따라, 도 10의 시스템이 포함될 수 있는 소형 폼 팩터 디바이스에 관한 개략도이다.
본원에 개시된 실시예들은 다양한 이미지 디바이스 구성에 관한 지원(support) 및 검증(validation)을 위한 기술을 제공한다. 본 기술은 카메라를 사용하여 설명되지만, 임의의 이미지 디바이스가 사용될 수도 있다. 또한, 본원에서 사용되는 바와 같이, 이미지 디바이스는, 스틸 샷 카메라(still-shot camera), 비디오 카메라, 입체 카메라(stereoscopic camera), 적외선 센서, 또는 그 밖에 유사한 것, 또는 이들의 임의의 조합일 수 있다.
실시예들에서, 카메라 커맨드 세트(Camera Command Set; CCS)는, 카메라 센서 및 모듈을 포함하나 이로 제한되지 않는, 카메라 컴포넌트들을 탐색(discover) 및 제어하는 공통 메커니즘을 제공한다. 커맨드는 호스트 프로세서로 하여금 임의의 카메라 구성과 인터페이싱하거나, 임의의 카메라 구성을 지원, 및 검증하게 한다. 새로운 커맨드 세트 및 소프트웨어를 사용하는, 구형 카메라의 상위 호환성(forward compatibility)은 변환 수단(a translation facility)을 사용하여 구현될 수 있다. 변환 수단은 복잡한 CCS 커맨드로 하여금 카메라가 실행할 수 있는 커맨드 또는 CSI-3 속성 Get/Set 요청으로 변환되게 할 수 있다. CSI-3 속성은 카메라 또는 호스트 디바이스의 동작을 제어하는데 사용될 수 있는 정보의 기본 단위(an atomic unit)이다. 전송 메커니즘(a transport mechanism)은 CSI-3 속성 Get/Set 요청으로 변환되었던 커맨드를 실행하는데 사용되고, 센서 및 모듈 메타데이터는 메타데이터 서브시스템으로부터 인출(retrieve) 및 저장될 수 있다. 카메라 메타데이터는, 카메라 센서, 모듈, 및 카메라를 사용하여 캡처된 이미지들에 관한 정보를 포함하나 이로 제한되지 않는다. 더욱이, 데이터 저장 시스템은 또한 CSI-3에 대한 데이터 블록 저장소일 수 있다.
다음의 설명 및 특허청구항에서, 용어 "연결된" 및 "접속된"은 이들의 파생물과 함께 사용될 수 있다. 이러한 용어들은 서로의 동의어를 의미하지 않는다는 것이 이해되어야 한다. 오히려, 특정 실시예들에서, "접속된"은 두 개 이상의 요소들이 서로와 직접 물리적 접촉 또는 전기적 접촉 상태에 있다는 것을 나타내는데 사용될 수 있다. "연결된"은 두 개 이상의 요소들이 직접 물리적 접촉 또는 전기적 접촉 상태에 있다는 것을 의미할 수 있다. 그러나, "연결된"은 또한 두 개 이상의 요소들이 서로와 직접 접촉하고 있지 않지만, 여전히 서로 협력 또는 상호작용하는 것을 의미할 수 있다.
일부 실시예들은, 하드웨어, 펌웨어, 및 소프트웨어의 조합 또는 이들 중 하나로 구현될 수 있다. 일부 실시예들은 또한 본원에서 설명되는 동작들을 수행하도록 컴퓨팅 플랫폼에 의해 판독되고 실행될 수 있는, 머신 판독가능 매체 상에 저장된 명령어로서 구현될 수 있다. 머신 판독가능 매체는 머신, 예를 들어, 컴퓨터에 의해 판독가능한 형태로 정보를 저장 또는 전송하기 위한 임의의 메커니즘을 포함할 수 있다. 예를 들어, 머신 판독가능 매체는 판독 전용 메모리(ROM); 랜덤 액세스 메모리(RAM); 자기 디스크 저장 매체; 광학 저장 매체, 플래시 메모리 디바이스; 또는 전기 신호, 광 신호, 음향 신호 또는 다른 형태의 전파 신호, 예를 들어, 무엇보다도, 반송파(carrier waves), 적외선 신호, 디지털 신호, 또는 신호를 전송 및/또는 수신하는 인터페이스를 포함할 수 있다.
일 실시예는 구현예 또는 예시이다. 본 명세서에서 "일 실시예", "하나의 실시예", "일부 실시예들", "다양한 실시예들" 또는 "다른 실시예들"에 대한 언급은 실시예들에 관하여 설명된 특정한 특징, 구조, 또는 특성이 반드시 본 발명의 모든 실시예는 아닌 적어도 일부 실시예들에 포함된다는 것을 의미한다. "일 실시예", "하나의 실시예" 또는 "일부 실시예들"의 다양한 출현이 반드시 모두 동일한 실시예들을 언급하는 것은 아니다. 일 실시예로부터의 요소들 또는 양상들이 다른 실시예의 요소들 또는 양상들과 조합될 수 있다.
본원에서 설명되고 도시되는 컴포넌트들, 특징들, 구조들, 특성들 모두가 특정 실시예 또는 실시예들에 포함되어야 하는 것은 아니다. 본 명세서에서 컴포넌트, 특징, 구조, 또는 특성이 포함 "될 수도 있다(may 또는 might)" 또는 "될 수 있다(can 또는 could)"고 언급되는 경우, 그러한 특정 컴포넌트, 특징, 구조, 또는 특성을 포함하도록 요구되는 것은 아니다. 본 명세서 또는 특허 청구항이 "하나의 ("a" 또는 "an")" 요소를 언급하는 경우, 이는 요소 중 하나만이 존재하는 것을 의미하지 않는다. 본 명세서 또는 특허청구항이 "추가적인" 요소를 언급하는 경우, 이는 하나 이상의 추가적인 요소가 존재한다는 것을 배제하지 않는다.
일부 실시예들이 특정 구현예들을 참조하여 설명되지만, 다른 구현예들이 일부 실시예들에 따라 가능할 수 있다는 점을 유의한다. 추가적으로, 본원에서 설명되고/되거나 도면에 도시된 회로 요소들 또는 다른 피처들의 배치 및/또는 순서가 설명되고 도시된 특정 방법으로 배치될 필요는 없다. 일부 실시예들에 따라 많은 다른 배치들이 가능하다.
도면에 도시된 각각의 시스템에서, 일부 경우에서 요소들은 동일한 참조 번호 또는 상이한 참조 번호를 각각 가짐으로써 표현된 요소들이 상이하고/하거나 유사할 수 있음을 시사할 수 있다. 그러나, 요소는 상이한 구현예를 갖고 본원에서 설명되거나 도시된 시스템들 중 일부 또는 모두와 작동하기에 충분히 유연성이 있을 수 있다. 도면들에 도시된 다양한 요소들은 동일하거나 상이할 수 있다. 제 1 요소로 언급된 것 및 제 2 요소로 지칭된 것은 임의적이다.
도 1은 실시예들에 따라 사용될 수 있는 호스트 디바이스(100)에 관한 블록도이다. 호스트 디바이스(100)는, 예를 들어, 무엇보다도, 랩톱 컴퓨터, 데스크톱 컴퓨터, 태블릿 컴퓨터, 모바일 디바이스, 또는 서버일 수 있다. 더욱이, 호스트 디바이스(100)는 본원에서 설명되는 바와 같은 호스트 디바이스일 수 있다. 호스트 디바이스(100)는 저장된 명령어를 실행하도록 구성되는 중앙 처리 장치(CPU)(102), 뿐만 아니라 CPU(102)에 의해 실행가능한 명령어를 저장하는 메모리 디바이스(104)를 포함할 수 있다. CPU(102)는 버스(106)에 의해 메모리 디바이스(104)에 연결될 수 있다. 추가적으로, CPU(102)는 싱글 코어 프로세서, 멀티 코어 프로세서, 컴퓨팅 클러스터, 또는 임의의 개수의 다른 구성일 수 있다. 더욱이, 호스트 디바이스(100)는 하나 이상의 CPU(102)를 포함할 수 있다.
호스트 디바이스(100)는 또한 그래픽 프로세싱 유닛(graphics processing unit; GPU)(108)을 포함할 수 있다. 도시된 바와 같이, CPU(102)는 버스(106)를 통해 GPU(108)에 연결될 수 있다. GPU(108)는 호스트 디바이스(100) 내 임의의 개수의 그래픽 동작을 수행하도록 구성될 수 있다. 예를 들어, GPU(108)는, 호스트 디바이스(100)의 사용자에게 디스플레이될, 그래픽 이미지, 그래픽 프레임, 비디오 등을 렌더링하거나 조작하도록 구성될 수 있다. 일부 실시예들에서, GPU(108)는 많은 그래픽 엔진(미도시)을 포함하며, 여기서 각각의 그래픽 엔진은 특정 그래픽 작업을 수행하도록, 또는 특정 타입의 워크로드(workloads)를 실행하도록 구성된다.
메모리 디바이스(104)는 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 플래시 메모리, 또는 임의의 다른 적합한 메모리 시스템을 포함할 수 있다. 예를 들어, 메모리 디바이스(104)는 동적 랜덤 액세스 메모리(DRAM)를 포함할 수 있다. CPU(102)는 호스트 디바이스(100)를 디스플레이 디바이스(112)에 접속시키도록 구성되는 디스플레이 인터페이스(110)에 버스(106)를 통해 연결될(linked) 수 있다. 디스플레이 디바이스(112)는 호스트 디바이스(100)의 빌트인 컴포넌트인 디스플레이 스크린을 포함할 수 있다. 디스플레이 디바이스(112)는 또한 호스트 디바이스(100) 외부에 접속되는, 무엇보다도, 컴퓨터 모니터, 텔레비전, 또는 프로젝터를 포함할 수 있다.
CPU(102)는 또한 하나 이상의 I/O 디바이스(116)에 호스트 디바이스(100)를 접속시키도록 구성된 입력/출력(I/O) 디바이스 인터페이스(114)에 버스(106)를 통해 접속될 수 있다. I/O 디바이스(116)는, 예를 들어, 키보드 및 위치 결정 디바이스(a pointing device)를 포함할 수 있으며, 여기서 위치 결정 디바이스는 특히 터치패드 또는 터치스크린을 포함할 수 있다. I/O 디바이스(116)는 호스트 디바이스(100)의 빌트인 컴포넌트일 수 있고, 또는 호스트 디바이스(100) 외부에 접속되는 디바이스일 수 있다.
CPU(102)는 또한 버스(106)를 통해 이미지 캡처 인터페이스(an image capture interface)(108)에 접속될 수 있다. 이미지 디바이스 인터페이스(118)는 하나 이상의 이미지 디바이스(120)에 호스트 디바이스(100)를 접속시키도록 구성될 수 있다. 이미지 디바이스(120)는 스틸 샷 카메라, 비디오 카메라, 또는 스틸 샷 카메라와 비디오 카메라를 조합한 카메라일 수 있다. 또한, 이미지 디바이스(120)는 입체 카메라, 적외선 센서, SOC 카메라, 이미지 신호 프로세서(Image Signal Processor; ISP), 브리지 디바이스 등일 수 있다. 실시예들에서, 이미지 디바이스(120)는 호스트 디바이스(100)의 빌트인 컴포넌트이다. 추가적으로, 실시예들에서, 이미지 디바이스(120)는 호스트 디바이스(100) 외부에 접속되는 디바이스이다.
실시예들에서, 내장 프로세서 또는 시퀀서(sequencer)는 이미지 캡처 인터페이스(118)로 존재할 수 있다. 이미지 캡처 인터페이스(118) 내 내장 프로세서 또는 시퀀서는 호스트 커맨드 변환을 제공하는데 사용될 수 있다. 실시예들에서, 변환은 ISP 상에서, 또는 이미지 캡처 인터페이스(118) 내에 포함되거나 이미지 캡처 인터페이스(118)와 달리 연관되지 않은 별도의 프로세서 상에서 작동하는 코드를 사용하여 발생한다.
이미지 디바이스(120)는 이미지를 캡처하는데 사용되고, 하나 이상의 센서(122)를 포함한다. 예시들에서, 센서(122)는 이미지 텍스처 정보와 연관된 깊이 정보를 캡처하는데 사용되는 깊이 센서(a depth sensor)일 수 있다. 센서(122)는 또한 이미지 텍스처 정보를 캡처하는데 사용되는 이미지 센서일 수 있다. 더욱이, 이미지 센서는 전하 결합 소자(charge-coupled device; CCD) 이미지 센서, 상보성 금속 산화막 반도체(complementary metal-oxide-semiconductor; CMOS) 이미지 센서, 시스템 온 칩(SOC) 이미지 센서, 광감응성 박막 트랜지스터(photosensitive thin film transistors)를 가진 이미지 센서, 또는 이들의 임의의 조합일 수 있다. 이미지 디바이스(120)는 또한 하나 이상의 모듈(124)을 포함한다. 모듈(124)은 이미지 디바이스의 다양한 컴포넌트를 동작시키는데 사용될 수 있다. 예를 들어, 카메라는, 버퍼, 렌즈, 및 자동 초점(autofocus)을 포함할 수 있고, 이들의 각각은 모듈(124)에 의해 인에이블될 수 있다.
메모리 디바이스(104)는 디바이스 드라이버(126)를 포함한다. 디바이스 드라이버(126)는 CPU(102) 또는 GPU(108)에 의해 실행됨으로써 호스트 디바이스(100)는 이미지 디바이스(120)와 인터페이싱하거나, 이미지 디바이스(120)를 지원 및 검증할 수 있다. 디바이스 드라이버(126)는 본원에서 설명되는 바와 같이 호스트 소프트웨어일 수 있다. 또한, 디바이스 드라이버(126)는 카메라 메타데이터에 액세스할 수 있다. 메타데이터는 메모리 디바이스(104), 이미지 디바이스(120), 저장 디바이스(128), 또는 임의의 다른 데이터 저장소 위치에 저장될 수 있다.
저장 디바이스(128)는, 물리적 메모리, 예컨대, 하드 드라이브, 광 드라이브, 썸드라이브(a thumbdrive), 드라이브 어레이, 또는 이들의 임의의 조합일 수 있다. 저장 디바이스(128)는 또한 원격의 저장 드라이브를 포함할 수 있다. 저장 디바이스(128)는 호스트 디바이스(100)에서 작동하도록 구성되는 임의의 개수의 애플리케이션(130)을 포함한다. 호스트 디바이스(100)는 또한 버스(106)를 통해 호스트 디바이스(100)를 네트워크(134)에 접속시키도록 구성되는 네트워크 인터페이스 제어기(network interface controller; NIC)(132)를 포함할 수 있다. 네트워크(134)는 특히 광역 네트워크(WAN), 근거리 네트워크(LAN), 또는 인터넷일 수 있다.
실시예들에서, CPU(102)에 의해 실행되는 명령어는 호스트 커맨드 변환을 인에이블하는데 사용될 수 있다. 추가적으로, 실시예들에서, GPU(108)에 의해 실행되는 명령어는 호스트 커맨드 변환을 인에이블하는데 사용될 수 있다. 따라서, CPU(102) 또는 GPU(108)는 이미지 디바이스(120)와 인터페이싱하거나, 이미지 디바이스(120)를 지원하거나, 검증하는데 사용되는 호스트 프로세서일 수 있다. 더욱이, 디바이스 드라이버(126) 또는 애플리케이션(130)은 본원에서 설명되는 바와 같은 호스트 소프트웨어를 포함할 수 있다. 실시예들에서, CPU(102) 또는 GPU(108)는 본원에서 설명되는 바와 같이 전송 메커니즘으로 커맨드를 실행하는데 사용될 수 있다. 더욱이, 실시예들에서, CPU(102) 또는 GPU(108)은 메타데이터 저장소 서브시스템을 인에이블할 수 있다.
도 1의 블록도는 호스트 디바이스(100)가 도 1에 도시된 모든 컴포넌트들을 포함한다는 것을 의미하지 않는다. 또한, 호스트 디바이스(100)는, 특정 구현예의 세부사항에 따라, 도 1에 도시되지 않은 임의의 개수의 추가 컴포넌트들을 포함할 수 있다.
CCS를 사용함으로써, 다양한 카메라 구성에 관한 지원과 연관된 소프트웨어 및 통합 비용은 카메라 센서 및 모듈을 탐색 및 발견하기 위한 공통 메커니즘을 제공함으로써 감소될 수 있지만, 센서 또는 모듈의 구현은 제한되지 않는다. 오히려, 임의의 센서 및 카메라 구성을 설명하는 표준화된 기술이 제공된다. CCS는 센서, 모듈, 및 이미지 프로세서에 대한 필수 커맨드 및 선택 커맨드 모두를 포함한다. 카메라 커맨드를 변환하는 것은, 카메라가 기본적으로 CCS를 지원하지 않더라도, 일반 드라이버로 하여금 다양한 카메라 구성에 대한 지원을 제공할 수 있게 한다. 일반 드라이버의 사용은 상이한 카메라 구성과 연관된 구현 비용을 감소시킬 수 있다. 전송 메커니즘은 카메라 직렬 인터페이스 3(Camera Serial Interface 3; CSI-3) 속성 Get/Set 아키텍처 내에서 커맨드를 실행하는데 사용된다. 센서의 비용 및 복잡성을 감소시키기 위해 센터의 외부에 있는 일부 커맨드가 실행될 수 있다. 따라서, 센서의 외부에 있는 커맨드를 실행하는 것은 CSI-2 타입 센서와 같은, 레거시 센서(legacy sensors)에 기초하여 카메라에 대한 지원을 제공한다. 실시예들에서, 튜닝 파라미터(tuning parameters)를 포함하는, 센서 및 모듈 특정 메타데이터를 저장 및 인출하기 위한 기술이 제공된다.
CSI-2 및 CSI-3 표준은 MIPI(Mobile Industry Processor Interface) 얼라이언스에 의해 개발되었다. CSI-2 및 CSI-3 표준은, 이미지 디바이스와 같은 카메라 서브시스템을 애플리케이션 프로세서와 같은 호스트 디바이스에 부가(attach)시키는 표준 인터페이스를 제공한다. 본원에서 설명되는 기술은 임의의 MIPI 카메라 직렬 인터페이스(CSI) 표준에 따라 개발된 카메라 서브시스템을 사용하여 구현될 수 있다. 또한, 실시예들에서, MIPI 카메라 병렬 인터페이스(Camera Parallel Interface; CPI)에 따라 개발된 카메라 서브 시스템이 본 기술에서 사용될 수 있다.
도 2는 실시예들에 따른, 카메라(200)에 관한 블록도이다. 전술된 바와 같이, 카메라(200)는 이미지 디바이스(120)(도 1)와 같은, 이미지 디바이스 일 수 있다. 카메라(200)는 CSI-3 링크(202)에 부가(attached)된다. CSI-3 링크(202)는, CPU(102) 또는 GPU(108)(도 1)과 같은 호스트 프로세서와 카메라(200)의 통합을 위한 고속 직렬 인터페이스 프로토콜을 가능하게 한다. 실시예들에서, 호스트 프로세서는 모바일 단말 애플리케이션에서의 애플리케이션 프로세서일 수 있다.
카메라(200)는, 이미지 소스(206)로 표현된 바와 같은, CSI-3 가상 채널(204)보다 "위에" 있는 임의의 프로세싱 능력을 포함할 수 있다. 이미지 소스는 이미지 센서, 시스템 온 칩(SOC) 이미징 디바이스, 다중 칩 이미징 디바이스 모듈 또는 이미지 신호 프로세서(ISP)일 수 있다. 따라서, 카메라는 호스트 디바이스 상에 존재하는 추가적인 프로세싱 능력을 포함할 수 있다. 그러나, 잠재적인 프로세싱 능력은 CCS 동작에 대하여 요구되지 않는다.
CCS의 목적을 위해, 카메라는 도 3의 컴포넌트들과 유사한 것으로 구성되는 것으로 가정된다. 그러나, 도시된 모든 컴포넌트가 요구되는 것은 아니다. 특히, CCS는 센서(208) 및 하나 이상의 이미지 소스(206)를 사용할 수 있다. 실시예들에서, 센서(208)가 존재하지 않고, 다른 이미지 소스가 사용될 수도 있다. 예를 들어, CCS는 ISP가 이미지 소스인 서브시스템에 적용할 수 있다. 렌즈(210), 조리개(aperture)(212), 조명(214), 및 메타데이터 저장소(216)를 포함하는, 추가 서브시스템에 대한 지원은 선택적이다.
렌즈 서브시스템(210)은, 광학 줌 능력을 선택적으로 지원할 수 있는, 공시 시야범위(an indicated field of view)를 갖는 렌즈 그룹으로서 모델링된다. 조리개 서브시스템(212)은, 최소 또는 최대 F-넘버로 조리개를 변경하는 선택적 지원과 함께, 공시 F-넘버를 갖는 아이리스(iris)로서 모델링된다. F-넘버는, 렌즈의 초점 거리 대 렌즈 시스템의 전면부를 통해 보여지는 바와 같은 물리적 구경 조리개(physical aperture stop)의 광학 이미지의 직경의 비율이다.
실시예들에서, 센서 서브시스템(208)은 이상적인 센서를 모델링한다. 이상적인 센서는 선형으로 또는 측정에 관한 간단한 수학 함수에 대하여 선형으로 설계된다. 이로써, 특정 값에 대하여, 이상적인 센서는 값이 측정되는 각각의 시간에 동일한 출력을 생성한다. 타이밍, 이득(gains) 및 다른 캡처 관련 파라미터를 포함하는, 카메라에 의해 생성된 임의의 이미지에 영향을 주는 설정은 센서 서브시스템(208)의 일부이다. 더욱이, RAW 및 SOC 센서는 센서 서브시스템(208)에 또한 사용될 수 있다. 추가적으로, 실시예들에서, 센서 서브시스템(208)은 또한 HDR(High Dynamic Range) 및 다른 형태의 계산 이미징(computational imaging)(다중-초점-평면 이미징(multi-focal-plane imaging) 등)과 같은 센서 거동(behavior)을 포함할 수 있다.
이미지 소스(206)는 센서 서브시스템(208)의 출력을 얻고 CSI-3 가상 채널(204)을 통한 전송(transport)을 위해 출력을 패키징한다. 이 패키징은, 데이터가 포맷팅되고 전달될 수 있는 RAW 센서의 경우에서와 같이 간단할 수 있고, 또는 YUV 또는 JPEG 출력을 생성하는 것과 같은 프로세싱 기능을 포함하여 복잡할 수도 있다. 각각의 이미지 소스(206)의 출력은 CSI-3 가상 채널(204)에 의한 입력으로서 선택되어 호스트로의 이미지 데이터의 전송을 제공할 수 있다. CSI-3 가상 채널(204)은 속성의 시퀀스 및 동일한 데이터 소스에 의해 생성된 이미지 패킷을 표현한다. 실시예들에서, CCS 이미지 소스(206)는 하나의 타입의 픽셀 데이터뿐만 아니라 내장된 속성을 생성할 수 있다. CSI-3 가상 채널(204)은 이미지 데이터의 전달을 표현 및 관리하는데 사용되지만, 이미지 소스(206)는 이미지 데이터의 생성 및 프로세싱을 표현 및 관리한다. CSI-3 가상 채널(204)과 이미지 소스(206) 사이의 관계는 1 대 1 관계이다.
조명 서브시스템(214)은, 플래시, 비디오 램프(들), 적목 감소 램프(red-eye reduction lamp), 및 레코드 표시 등(record indicator light)을 포함하는, 카메라 조명 제어에 대한 제어를 제공한다. 카메라(200)는 조명 서브시스템(214) 능력의 임의의 조합을 선택적으로 지원할 수 있다. 추가적으로, 메타데이터 저장소 서브 시스템은 소프트웨어가 카메라 서브시스템(200)에 의해 저장된 비휘발성 데이터를 인출 및 선택적으로 기록하는 공통 메커니즘을 제공한다. 메타데이터 저장소는 모듈 식별 및 이미지 튜닝 파라미터를 저장할 수 있을 뿐만 아니라, 임의의 해석된 코드(interpreted code)를 저장할 수 있어 모듈에 의해 기본적으로 지원되는 것 이상의 CCS 기능을 가능하게 한다. 더욱이, 메타데이터 저장소 시스템은 또한 CSI-3을 위한 데이터 블록 저장소일 수 있다.
커맨드 전송 메커니즘(218)은 기본적으로 지원되는 CCS 커맨드를 CSI-3 인터페이스를 통합하는 카메라 서브시스템(200)에 전송되게 한다. CSI-2와 같은 다른 인터페이스는 커맨드 세트를 위한 대체 전송(alternate transports)을 정의하고 구현할 수 있다. 커맨드 전송 메커니즘(218)은, 카메라 애플리케이션을 구성하고 제어하는데 사용된 모든 커맨드 및 CSI-3 속성(222)을 커맨드 전송 메커니즘(218)에 전달할 수 있는 카메라 구성 프로토콜(configuration protocol for camera; CPC)(220)에 액세스할 수 있다. 또한, 카메라 제어 인터페이스(camera control interface; CCI)(224)는 CSI-2 상호접속을 지원하는 CSI-2 데이터를 위한 브리지 기능을 제공하는데 사용될 수 있다.
많은 CCS 커맨드는, CSI-3 가상 채널(204)과 CCS 이미지 소스(206) 사이의 특정 오버랩을 사용하여, CSI-3 속성(222)에 영향을 미치는 변화를 야기할 수 있다. 예를 들어, 세트 센서 표준 구성(Set_SensorStandardConfig()) 커맨드는 이미지 크기를 포함하는 센서 모드를 설정하는 것을 지원한다. CSI3_XSIZE, CSI3_XLEN, CSI3_YSIZE, CSI3_YLEN, 및 다른 그러한 CSI-3과 같은 가상 채널 속성은, 구현되는 경우, CCS 커맨드에 의해 설정된 바와 같은 현재 카메라 구성을 정확히 반영하는 값을 반환해야 한다.
따라서, CSI-3 가상 채널 속성은, CSI-3 준수 디바이스로부터 호스트로 이미지 및 관련 데이터를 전달하는데 사용된 파라미터를 제어하는데 사용된다. 이러한 속성은 이미지 크기, 데이터 포맷, 타이밍, 및 에러 핸들링뿐만 아니라, 각각의 프레임과 함께 송신된 내장 메타데이터에 대한 제어를 포함한다. CCS 커맨드는 또한 크기, 포맷, 타이밍과 같은, 동일한 이미지 품질들 중 많은 것을 제어한다. 센서에 발행된 CCS 커맨드의 영향은, 무엇보다도, CCS 가상 채널 속성을 수정하는 것을 포함할 수 있다. 예를 들어, CCS 커맨드는, 가설에 근거하여 1920x1080의 해상도, 30 초당 프레임 동작에 대해 센서를 구성할 수 있는, Set_StandardConfig(1)일 수 있다. 그 이후 CSI3_YSIZE 속성에 대한 CSI-3 Get은 1080을 반환할 것이다. 속성 세트가 그 이후 CSI3_YSIZE를 2000으로 변경하도록 발행되었다면, 현재 구성(2000의 YSIZE를 가짐)은 이전에 설정된 CCS 상태와 일치하지 않지만, Get_StandardConfig() CCS 커맨드는 여전히 "1"을 반환할 것이다.
센서 서브시스템(208) 및 이미지 소스 서브시스템(206)은 임의의 개수의 구성을 사용하여 구현될 수 있다. 따라서, 호스트 소프트웨어가 센서 서브시스템(208)을 적절히 구성하는 것이 어려울 수 있다. CCS는 센서 모드를 사용하여 센서 서브시스템(208)을 적절히 구성하는 것을 보조할 수 있다. 센서 모드는, 소프트웨어가 선택할 수 있는, 센서 벤더에 의해 정의된 동작 구성 세트이다. 일반적으로, 제한된 구성 세트가 존재하며 이는 카메라가 지원할 예상된 사용을 나타내는 소정의 카메라에 대하여 제시될 것이다. 예를 들어, 카메라는 8 메가픽셀 RAW 10 스틸-최적화 모드, 1080p/30 비디오-최적화 MJPEG 모드, 및 QVGA YUV 프리뷰 모드에 대한 지원을 표시할 수 있다.
CCS는 원하는 구성의 인덱스를 선택함으로써 원하는 동작 모드를 설정하는데 사용될 수 있는 센서 표준 구성(SensorStandardConfig()) 커맨드를 포함할 수 있다. 카메라는 그 이후 적절한 타이밍 및 연관된 설정으로 자가-구성(self-configure)할 것이다. 호스트 소프트웨어는 정보 센서 표준 구성 커맨드(Info_SensorStandardConfig()) 커맨드를 사용하여 센서 서브시스템(208)에 의해 지원되는 모드를 상세히 열거하는 테이블을 인출할 수 있다. 센서 서브시스템(208)은 테이블 내에 열거된 모드로 동작하는 것으로 제한되지 않는다. 카메라 서브시스템(200)에 관한 추가적인 지식을 갖는 호스트 소프트웨어는 세트 센서 타이밍(Set_SensorTimings()) 커맨드와 같은 추가적인 커맨드를 사용하여 추가적인 센서 능력을 드러내기 위해 세트 타이밍을 명시적으로 설정할 수 있다.
도 3은 실시예들에 따라, 카메라 커맨드를 변환하기 위한 시스템(300)에 관한 블록도이다. CCS는 표준 메커니즘이 센서를 제어하게 하는데 사용된다. 커맨드의 공통 세트는 CCS에 대하여 정의된다. CCS는 기본(native), 필수(required), 및 선택(optional) 커맨드로 나눠질 수 있다. 커맨드는 카메라 서브시스템(200)과 같이 정의된 카메라 모델 상에서 동작한다.
기본 커맨드는 요청되는 호스트 변환 지원 없이 센서 서브시스템에 의해 직접 실행될 수 있는 커맨드이다. 카메라 서브시스템은 카메라 서브시스템이 기본적으로 커맨드를 수락하고 프로세싱할 수 있음을 표시할 수 있다는 점에서, CCS 내 임의의 커맨드는 기본 커맨드일 수 있다. 따라서, CCS 지원을 요구하는 카메라 서브시스템은 모든 기본 필수 커맨드(native required commands)에 대한 기본 지원을 제공해야 한다.
CCS 지원을 요구하는 카메라 서브시스템은 또한 필수 커맨드를 지원해야 하지만, 지원은 본원에서 설명된 호스트 기반 변환 수단을 사용하여 제공될 수 있다. 카메라 서브시스템은 모든 선택적인 커맨드를 지원할 수 있다. 일반적으로, 기본 필수 커맨드는 CCS 능력을 식별하는데 필요한 간단한 커맨드이며, 필요한 경우, 커맨드 변환을 지원하는데 필요한 정보를 인출한다. 일단 변환 수단이 작동 중이면, 후속 커맨드는 그 이후 이 메커니즘을 통해 지원될 수 있다. 따라서, 호스트 변환된 커맨드는 전체 CCS 커맨드 세트를 기본적으로 지원하지 않는 카메라에 능력을 제공하여 CCS 커맨드에 기록된 호스트 소프트웨어와 여전히 작업한다. 대부분의 커맨드는 변환을 통해 지원될 수 있으나, 몇몇 기본 의무 커맨드(native mandatory commands)는 이들이 작동 중인 변환을 얻도록 요청받을 때 변환센서에 의해 지원되어야 한다. 변환 수단은, 실행 샌드박스(an execution sandbox)를 갖는 변환 엔진, 코드 저장소, 및 코드를 컴파일하는 방법을 포함하나 이로 제한되지 않는다. 실시예들에서, 샌드박스에서 작동하는 코드의 출력은 CSI-3 속성 Get/Set 트랜잭션이며, 이는 그 이후 센서에서 실행될 수 있다.
실시예들에서, 전송 메커니즘은 센서 서브시스템(208)(도 2)과 같은, 센서 상에서 커맨드의 실행을 제어하도록 정의된다. 전송 메커니즘은 도 2에 도시된 바와 같은 커맨드 전송 메커니즘(218)일 수 있다. 전송 메커니즘은 또한 일부 복잡한 커맨드가 호스트 디바이스 상에서 실행될 수 있고 센서 복잡성 및 비용을 감소시키도록 더 단순한 세트의 커맨드로 변환될 수 있는 메커니즘을 제공할 수 있다. 추가적으로, 실시예들에서, 메타데이터는 카메라 서브시스템으로부터 인출되어 소프트웨어 및 제조 요구사항을 보조할 수 있다.
CCS의 카메라 커맨드는 커맨드가 인보킹되는 방법을 요약하는 의사-코드 표현(pseudo-code representation)을 사용하는 것으로 언급된다. 커맨드는 CSI-3 카메라가 지원을 제공할 수 있는 기술을 사용하여 설명될 수 있지만, 다른 커맨드 전송 메커니즘 또는 소프트웨어 변환 지원을 사용하여, 동일한 커맨드가 CSI-2와 같은 다른 카메라 서브시스템에 적용될 수도 있다.
각각의 커맨드는 지원될 수 있거나 지원되지 않을 수 있는 다수의 변형(variants)을 갖는다. 'Get_' 변형은 어떤 파라미터도 얻지 않지만 데이터 세트를 반환하는 반면, 'Set_' 변형은 파라미터 세트를 얻고 상태 코드(a status code)를 반환한다. 'Info_' 변형은 소프트웨어가 이용가능한 특정 능력, 범위, 및 옵션을 이해하는 것을 도울 수 있는 정적 블록(a static block)을 반환한다.
예를 들어, 전술된 정보 센서 표준 구성 커맨드(Info_ SensorStandardConfig()) 커맨드는, 소프트웨어가 선택할 수 있는, 센서에 의해 지원된 구성 및 모드를 정의하는 데이터 테이블을 반환한다. 소프트웨어는 그 이후 세트 센서 표준 구성 커맨드(Set_SensorStandardConfig(Index)) 커맨드를 사용할 수 있으며, 이는 원하는 모드로 센서를 구성하도록 단일 파라미터 인텍스를 입력으로 얻고 응답으로 상태 코드를 반환한다. 현재 동작 모드는, 입력 파라미터를 얻지 않지만 응답으로서 현재 활성 인덱스를 반환하는, get 센서 표준 구성 커맨드(Get SensorStandardConfig()) 커맨드를 사용하여 판독될 수 있다.
Get_/Set_/Info_ 구조는 최상위의 CSI-3 속성 Get/Set 아키텍처에 적절하다. 추가적으로, 이는 작은 단위 표시(a fine grained indication)의 지원 커맨드 뿐만 아니라, 예를 들어, 카메라에 의해 기본적으로 지원되는 Get_/Set_ 변형을 갖기 위한 지원을 가능하게 하지만, Info_ 변형은 커맨드 변환을 통해서만 지원된다.
CCS는 카메라에 대한 완전한 제어 세트를 제공하고자 하지만, 다른 메커니즘은 벤더 특정 커맨드(vendor specific commands) 및 속성 Get/Set 메커니즘과 같은 CCS에 의해 노출되는 것 이상의 제어를 가능하게 하는데 사용될 수 있다. 벤더 특정 커맨드는 CCS 아키텍처 내에서 정의된 CCS 커맨드를 확장하는 기능을 제공하는데 사용될 수 있다. 이러한 벤더 특정 커맨드는 커맨드 전송 아키텍처를 사용한다.
벤더 특정 커맨드에 추가적으로, 소프트웨어는 CSI-3 사양에 의해 정의된 속성 Get/Set 메커니즘을 계속 사용하여, 본 문서에서 정의된 커맨드 전송 아키텍처를 사용하여 쉽게 표현되거나 구현될 수 없는 기능을 제공할 수 있다. 벤더 특정 또는 직접 속성 Get/Set 커맨드가 사용되는 경우, CCS에 의해 반환된 값은 손상될 수 있다. 따라서, 벤더 특정 커맨드 또는 속성 Get/Set 메커니즘이 구현될 때, CCS와의 잠재적 인터랙션이 승인(acknowledge)되어야 한다. 예를 들어, 벤더 특정 커맨드가 표준 커맨드 세트에 의해 지원되지 않는 렌즈 음영 보정(Lens Shading Correction) 메커니즘을 명시하는데 사용되는 경우, get 렌즈 음영(GetLensShading()) 커맨드는 오류가 생긴 데이터(corrupted data), 또는 CCS에 의한 예상 외의 데이터를 반환할 수 있다.
시스템(300)은 호스트 디바이스(302)를 포함할 수 있다. 호스트 디바이스(302)는 데스크톱, 랩톱, 터치패드, 퍼스널 컴퓨터, 이동 전화 디바이스 등일 수 있다. 또한, 전술된 바와 같은 호스트 디바이스(100)(도 1)는 호스트 디바이스(302)일 수 있다. 호스트 디바이스(302)는 카메라 서브시스템(304)에 연결될 수 있다. 카메라 서브시스템(304)은 이미지 디바이스(120)(도 1) 또는 카메라 서브시스템(200)(도 2)일 수 있다. 전술된 바와 같이, 카메라 서브시스템(304)은 CSI-3 링크를 통해 호스트 디바이스(302)에 연결된다. 카메라 서브시스템(304)은 메타데이터 저장소(306)를 더 포함할 수 있다. 메타데이터 저장소(306)는 카메라 서브시스템(304)에 의해 저장된 데이터로의 저장 및 그로부터의 인출을 위한 공통 메커니즘을 제공할 수 있다. 메타데이터 저장소(306)는 카메라 커맨드를 변환하는데 사용되는 변환 코드(308)를 저장할 수 있다. 또한, 메타데이터 저장소(306)는 식별 및 이미지 튜닝 파라미터도 저장할 수 있다. 카메라 서브시스템(304)은 CSI-3 속성을 더 포함할 수 있다. 실시예들에서, 속성은 카메라 서브시스템의 리소스에 액세스하는데 사용될 수 있다. 추가적으로, 실시예들에서, 속성은 이벤트를 검출하는데 사용될 수 있다. CSI-3 속성(310)은 변환된 커맨드를 변환 수단으로부터 수신한다. 변환 수단은 변환 엔진(312)일 수 있다.
변환 엔진(312)은 카메라 서브시스템(304)의 외부에 위치될 수 있다. 예를 들어, 변환 엔진(312)은 호스트 디바이스(302) 상에 위치될 수 있다. 다른 예시에서, 변환 엔진(312)은 호스트 디바이스(302)와 카메라 서브시스템(304) 모두의 외부에 있을 수 있다. 변환 엔진(312)은 카메라 서브시스템(304)에 연결될 수 있다.
변환 엔진(312)은 입력 커맨드(incoming commands)를 카메라 서브시스템(304)의 구성에 특정한 이미지 커맨드로 변환할 수 있다. 특히, 변환 엔진(312)은 입력 커맨드를 카메라 서브시스템(304)이 핸들링할 수 있는 액세스로 변환할 수 있다. 예를 들어, 변환 엔진(312)은 복잡한 입력 커맨드를 더 간단한 커맨드로 변환할 수 있다. 다른 예시에서, 변환 엔진(312)은 입력 커맨드를 CSI-3 속성 Get/Set 요청으로 변환할 수 있다.
커맨드를 변환하기 위해서, 변환 엔진(312)은 변환 코드(308)를 사용할 수 있다. 변환 엔진은 카메라 서브시스템(304)의 메타데이터 저장소(306)로부터 인출된 고급 변환 코드(high-level translation code)(308)를 사용한다. 변환 코드(308)는 또한 카메라 서브시스템(304)의 외부에 저장될 수 있다. 특히, 변환 코드(308)는 플랫폼 저장소(314) 내에 저장될 수 있다. 일 예시에서, 플랫폼 저장소(314)는 호스트 디바이스(302) 상에 포함될 수 있다. 다른 예시에서, 플랫폼 저장소(314)는 호스트 디바이스(302)와 카메라 서브시스템(304) 양자의 외부에 존재할 수 있다. 플랫폼 저장소(314)는 호스트 디바이스(302)에 연결될 수 있다. 플랫폼 저장소(314)는 임의의 타입의 저장 매체일 수 있다. 예를 들어, 플랫폼 저장소(314)는 RAM 메모리, BIOS, 또는 디스크 드라이브일 수 있다. 변환 코드(308)는 호스트에 유사한 방식으로 저장될 수 있으며, 이로써 변환 엔진은 변환 코드(308)의 위치를 찾고 액세스할 수 있다. 변환 코드(308)는 또한 다른 플랫폼 저장소 위치에 또는 그로부터 저장될 수 있다. 변환 코드가 저장된 위치는 변환 코드 스토어로서 알려진다. 플랫폼 필요에 따라, 호스트 소프트웨어는 적절한 코드 스토어로부터 코드를 인출하도록 설계될 것이다. 변환 엔진(308)은 코드를 실행하여, 제공된 CCS 커맨드를 카메라 서브시스템이 실행할 수 있는 액세스로 변환하며, 이는 CSI-3 속성 Get/Set PDU 패킷일 수 있다. CSI-3 속성 Get/Set PDU 패킷은 카메라 서브시스템에 송신되어 CCS 커맨드에 의해 요청되는 거동을 야기할 수 있다.
변환 엔진(312)은 변환된 커맨드를 카메라 서브시스템(304)에 송신하도록 구성될 수 있다. 예를 들어, 변환 엔진(312)은 변환된 커맨드를 CSI-3 속성(310)에 송신할 수 있다. 변환 엔진(312)은 카메라 서브시스템(304)에 의해 기본적으로 지원되지 않는 커맨드만을 변환하도록 구성될 수 있다. 따라서, 카메라에 대한 모든 커맨드가 변환될 필요는 없다. 어떤 커맨드가 변환되어야 하는지를 결정하기 위해, 변환 엔진(308)은 우선 get CCS 지원(Get-CCSSupport()) 커맨드를 카메라 서브시스템(304) 상에서 실행해야 한다. 실시예들에서, 유효 CCS 지원 테이블(a valid CCS support table)이 반환되는 경우, 그 이후 변환 엔진(308)은 기본적으로 핸들링될 수 있는 커맨드를 카메라 서브시스템(304)에 직접 보내도록 제공된 정보를 사용할 수 있다. 추가적으로, 실시예들에서, 호스트에 의해 요청된 모든 커맨드가 기본적으로 지원될 수 있는 경우, 그 이후 변환 엔진 또는 변환 코드 스토어에 대한 필요성은 존재하지 않는다. 이러한 방식으로, 호스트 디바이스(302)는 카메라 서브시스템(304)에 액세스하여, 커맨드의 변환을 개시하기 이전에 카메라 서브시스템(304)이 커맨드를 프로세싱할 수 있는지 여부를 결정한다. 카메라 서브시스템(304)이 커맨드를 프로세싱할 수 있는 경우, 호스트 디바이스(302)는 카메라 서브시스템(304)에 입력 커맨드를 직접 송신할 수 있다. 일 예시에서, 커맨드는 변환 엔진(312)에 직접 입력될 수 있다. 다른 예시에서, 커맨드는 호스트 디바이스(302)에 입력되고 그 이후 변환 엔진(312)에 전달될 수 있다.
변환 엔진(312)은, 디바이스 드라이버(126)(도 1)와 같은, 디바이스 드라이버 상에서 구현되는 런타임 해석 언어 샌드박스(a run-time interpreted language sandbox) 내에서 구현될 수 있다. 이러한 방법으로, 호스트 디바이스의 커널(kernel)은 변환 엔진(312)으로부터 거절될 수도 있는 임의적인 코드로부터 보호된다.
실시예들에서, CCS 내 일부 커맨드는 선택적이거나 특정 카메라 서브시스템 또는 센서 서브시스템 구성, 예컨대, RAW 센서 상의 이미지 프로세싱 커맨드에 적용가능하지 않다. 예상가능한 세트의 지원 커맨드를 호스트 소프트웨어에 제공하기 위해, 많은 프로파일이 다양한 사용을 위해 사전정의될 수 있다. 프로파일을 구현하기 위해, 카메라 서브시스템은, 기본 지원 또는 변환된 지원을 통해, 표시된 커맨드에 대한 지원을 제공한다. 카메라는 또한 임의의 다른 선택적인 커맨드에 대한 지원을 제공할 수 있다. 예를 들어, RAW 카메라로 식별되는 카메라는 RAW 카메라 CCS 프로파일을 구현할 수 있다. 이와 마찬가지로, SoC 카메라로서 식별되는 카메라 서브시스템은 SoC 카메라 CCS 프로파일을 구현할 수 있다.
도 4는 실시예들에 따라 카메라 서브시스템을 개시하는 방법(400)을 도시하는 프로세스 흐름도이다. 프로세스 흐름도는 호스트 디바이스(100)(도 1) 또는 호스트 디바이스(302)(도 3)와 같은 호스트 디바이스에 의해 이용될 수 있다.
블록 402에서, 이미지 디바이스가 식별된다. 실시예들에서, 카메라를 식별하기 위해, 호스트 소프트웨어는 디바이스 속성을 판독하여 디바이스 분류(device class), 제조자, 모델 번호, 시리얼 번호, 및 다른 정보를 식별할 수 있다. 예를 들어, 호스트 디바이스와 카메라가 통합 프로토콜(Unified Protocol; UniPro)에 따라 상호접속될 때, 호스트 디바이스는 카메라의 UniPro 디바이스 디스크립터 블록(device desciptor block; DDB) 물리 계층(L1) 속성들을 판독할 수 있다. UniPro 프로토콜은 시스템 내 디바이스들을 상호접속하기 위한 표준을 명시한다. UniPro DDB는 디바이스를 식별하는데 사용될 수 있는 정보를 포함한다. 또한, 이미지 디바이스의 UniPro DDB L1 속성은 이미지 디바이스와 호스트 디바이스 사이의 링크, 예컨대, 링크의 전력 가능 출력 및 대역폭을 정의하는데 사용될 수 있다. UniPro DDB L1 속성은 디바이스 종류, 제조자 식별, 및 제품 식별을 포함한다. 실시예들에서, CSI-3 속성은 디바이스 하위 분류와 같은 이미지 디바이스에 대한 정보를 결정하기 위해 판독될 수 있다.
실시예들에서, 카메라는 MIPI(Mobile Industry Processor Interface) CSI(Camera Serial Interface) 얼라이언스에 의한 사양서에 따라 개발된 인터페이스를 사용하여 호스트 인터페이스의 프로세서와 인터페이싱한다. 예를 들어, 카메라 직렬 인터페이스는 MIPI CSI-3 인터페이스일 수 있다. 실시예들에서, CSI는 데이터 및 클럭 신호를 갖는 단방향 차동 직렬 인터페이스인 데이터 전송 인터페이스를 포함한다. 호스트 디바이스는 CSI-3 속성을 사용하여 카메라의 하위 분류를 결정할 수 있다.
블록 404에서, 이미지 디바이스가 CCS를 지원하는지 여부가 결정된다. CCS가 지원되는 경우, 프로세스 흐름은 블록 406으로 계속된다. CCS가 지원되지 않는 경우, 프로세스 흐름은 블록 408로 계속된다. 이를 결정하기 위해, 호스트는 get CCS 지원(Get_CCSSupport()) 커맨드를 실행하려고 시도할 수 있다. get CCS 지원(Get_CCSSupport()) 커맨드는 아래에서 설명되는 전송 메커니즘을 사용하여 카메라에 의해 실행된다. 카메라로부터 반환된 값이 '0'인 경우, CCS는 지원되지 않는다.
실시예들에서, CCS가 지원되는 경우, 호스트 디바이스는 카메라가 기본적으로 CCS를 지원하는지 여부를 결정할 수 있다. 예를 들어, 호스트는 CSI-3 속성 또는 UniPro DDB L1 속성으로부터 획득된 데이터를 사용하여 정보 메타데이터 디렉토리(Info_MetadataDirectory()) 커맨드가 지원되는지 여부를 결정한다. 카메라가 기본적으로 CCS를 지원하는 경우, 카메라는 CCS 커맨드를 사용하여 시작할 수 있다.
카메라가 기본적으로 CCS를 지원하지 않는 경우, 호스트는 변환 코드 블랍(blob)이 이용가능한지 여부를 결정할 수 있다. 예를 들어, 호스트는 변환 코드 블랍이 메타데이터에서 이용가능한지 결정할 수 있다.
블록 406에서, 메타데이터 디렉토리가 존재하는지 여부가 결정된다. 메타데이터 디렉토리가 존재하는 경우, 프로세스 흐름은 블록 410으로 계속된다. 메타데이터 디렉토리가 존재하지 않는 경우, 프로세스 흐름은 블록 416으로 계속된다.
블록 408에서, 벤더 특정 소프트웨어는 카메라를 지원하고 검증하는데 사용된다. CCS가 지원되지 않는 경우, 흐름은 종료되고 벤더 특정 흐름이 사용되어야 한다.
블록 410에서, 변환 코드가 메타데이터 디렉토리를 사용하여 이용가능한지 여부가 결정된다. 변환 코드가 메타데이터 디렉토리를 사용하여 이용가능한 경우, 프로세스 흐름은 블록 414로 계속된다. 변환 코드가 메타데이터 디렉토리를 사용하여 이용가능하지 않은 경우, 프로세스 흐름은 블록 412로 계속된다.
블록 412에서, 변환 코드가 시스템 내 어디에서든 이용가능한지 여부가 결정된다. 실시예들에서, 변환 코드가 플랫폼 상의 어디에서든 이용가능한지 여부가 결정된다. 변환 코드가 시스템 내 어디에서든 이용가능하지 않는 경우, 프로세스 흐름은 블록 408로 계속된다. 변환 코드가 시스템 내 어디에서든 이용가능한 경우, 프로세스 흐름은 블록 414로 계속된다.
블록 414에서, 변환 코드는 로딩되고 실행된다. 따라서, 실시예들에서, 변환 코드 블랍이 이용가능한 경우, 호스트는 블랍을 로딩하고 변환 엔진을 개시할 수 있다. 변환 블랍이 로딩될 때, 블랍은 런타임 해석 언어 샌드 박스(a run-time interpreted language sandbox)에서 작동할 수 있다. 변환 엔진은 커맨드를 변환하기 시작할 수 있다. 변환 코드 블랍이 이용가능하지 않은 경우, 호스트는 플랫폼 특정 방식으로 플랫폼 외의 어디에서든 이용가능한 변환 코드 스토어가 존재하는지 여부를 결정할 수 있다. 이용가능한 변환 코드 스토어가 존재하는 경우, 호스트는 변환 코드 스토어를 로딩하고 변환 엔진을 개시할 수 있다. 그 이후 변환 엔진은 CCS로부터의 커맨드를 카메라가 실행할 수 있는 커맨드로 변환하기 시작할 수 있다. 실시예들에서, 변환된 커맨드 결과는 카메라 커맨드에 의해 요청된 거동을 야기하도록 카메라에 차례대로 송신되는 CSI-3 속성 Get/Set PDU 패킷이다. 블록 416에서, CCS 커맨드는 카메라를 지원, 제어, 및 검증하는데 사용된다.
도 5는 실시예들에 따라 카메라 커맨드를 변환하는 방법(500)에 관한 프로세스 흐름도이다. 전술된 바와 같이, 변환 엔진이 도 4의 블록 414에서 변환 코드를 실행함으로써 생성될 때, 커맨드는 변환될 수 있다.
블록 502에서, 변환 코드는 코드 스토어로부터 수신되어 변환 엔진을 형성한다. 전술된 바와 같이, 변환 코드 및 변환 엔진은 복합 CCS 커맨드로 하여금 카메라가 실행할 수 있는 커맨드 또는 CSI-3 속성 Get/Set 요청으로 변환되게 하는 변환 수단을 형성한다. 변환 코드는 후술되는 바와 같이 메타데이터 저장소 서브시스템을 사용하여 저장될 수 있다. 블록 504에서, 이미징 디바이스 커맨드가 변환 엔진에서 수신된다. 실시예들에서, 이미징 디바이스 커맨드는 디바이스 드라이버(126)(도 1) 또는 애플리케이션(130)(도 1)으로부터 송신된다.
블록 506에서, 이미징 디바이스 커맨드는 변환 엔진을 사용하여 변환될 수 있다. 이러한 방식으로, 호스트 디바이스는 CCS 커맨드를 이미징 디바이스가 프로세싱할 수 있는 포맷으로 변환 또는 컨버팅할 수 있다.
실시예들에서, 변환 엔진은 커맨드를 CSI-3 속성 Get/Set 요청으로 변환할 수 있다. 전송 메커니즘은 CSI-3 속성 Get/Set 요청으로 변환된 커맨드를 실행하는데 사용될 수 있다. 블록 508에서, 변환된 이미징 디바이스 커맨드는 이미징 디바이스로 전달되어 변환된 이미징 디바이스 커맨드에 의해 요청된 거동을 야기할 수 있다.
CCS는 CSI-3 기반 이미징 디바이스 상에서 구현될 수 있다. 전술된 바와 같이, 이미징 디바이스는 카메라 및 센서를 포함한다. 실시예들에서, CSI-3 이미징 디바이스는 CCS의 커맨드를 기본적으로 실행할 수 있고, 이로써 호스트 디바이스와의 통합 문제를 완화하고, 또한 소프트웨어 및 지원 비용을 감소시킨다. 또한, 실시예들에서, CCS 커맨드는 get 및 set 아키텍처에 기초한 전송 메커니즘을 사용하여 기본적으로 실행될 수 있다.
따라서, CSI-3 기반 카메라에서 기본적으로 실행될 커맨드에 대한 전송은 CSI-3 표준에 의해 정의되는 바와 같이 카메라 구성 프로토콜(Configuration Protocol for Camera; CPC)에 의해 정의된 CSI-3 GET, SET, RESPONSE, 및 NOTIFY 트랜잭션 거동에 기초한다. CCS 커맨드의 Get_ 및 Set_ 변형은 CSI-3 GET 및 SET 트랜잭션에 대응한다. 또한, 커맨드의 Info_ 변형은, 전형적으로 상이한 커맨드 식별(ID)을 갖는 더 긴 버전의 Get_ 변형으로서 구현된다. 커맨드의 Info_ 변형이 반환하는 정보는, Get_ 변형이 전형적으로 반환하는 동적 제어 정보와 비교하여, 상당히 더 크고, 전형적으로 정적인 정보이다.
Get_ 또는 Set_ 변형의 커맨드 ID는 다음의 방식으로 CSI-3 속성 ID에 맵핑된다:
Figure 112015105518549-pat00001
많은 커맨드에 대하여, 의사 코드 추상화(pseudo-code abstraction)는 근본적으로 단지 속성 Get/Set 프로세스인 씬 래퍼(thin wrapper)라는 점을 유의하자.
예를 들어, 0x010의 ID를 갖는 get 커맨드 상태(Get_CommandStatus()) 커맨드는 (0x01000000 + (0x010 * 0x1000) = 0x01010000)인 트랜잭션으로 표현될 것이다. 이 어드레스는 패킷 데이터 유닛(PDU)의 속성 ID 필드일 것이다. 추가적으로, PDU는 4바이트 전달을 표시하는 0의 XFSIZE, 및 GET을 표시하는 2의 PDU 타입을 가질 것이다. 이러한 PDU는 후속하여 CSI-3 속성 패킷 내에 캡슐화되고(encapsulated) 카메라로 송신될 것이다. 후속하여, 상태 값은 호스트에 응답 PDU로 반환될 것이며, 이는 커맨드를 완료한다.
도 6은 실시예들에 따라, 전송 메커니즘으로 하여금 Get 및 Set 아키텍처에 기초하여 CCS 커맨드를 실행하게 하는 방법(600)에 관한 프로세스 흐름도이다. 블록 602에서, 커맨드의 속성 식별(ID)이 추출될 수 있다.
블록 604에서, get 프로토콜 데이터 유닛(PDU)은 이미징 디바이스 내 이미지 소스로부터 속성 값을 획득하기 위해 속성 식별에 기초하여 호스트 디바이스로부터 이미징 디바이스로 송신될 수 있다. get PDU는 CSI-3 속성 패킷 내에 캡슐화되고 그 이후 이미징 디바이스로 송신될 수 있다. 실시예들에서, get PDU가 호스트 디바이스로부터 이미징 디바이스로 송신될 때, 이미징 디바이스의 센서는 커맨드를 실행할 수 있다. 추가적으로, 실시예들에서, get PDU가 블로킹(blocking) 없이 호스트 디바이스로부터 이미징 디바이스로 송신될 때, 이미징 디바이스의 센서는 커맨드를 실행한다. 블로킹은 센서가 사용 중일 때 커맨드의 지연된 실행을 지칭한다. 예를 들어, 일부 커맨드는 완료하는데 오랜 시간이 걸릴 수 있고, 카메라는 실행 시간 동안 커맨드를 프로세싱하도록 이용가능하지 않을 수 있다. 그러나, 카메라 모듈은 Get PUD가 수신되었던 순서로 응답 PDU를 반환해야 한다. 카메라는 CPC C-Port에 의해 제공되는 L4 흐름 제어를 사용하여 호스트를 기능 정지(stall)하고 커맨드 버퍼 오버플로우를 방지할 수 있다.
예를 들어, 커맨드의 Set_ 변형은 실행하는데 오랜 시간이 걸릴 수 있고 블로킹을 야기할 수 있다. 이러한 커맨드는 응답을 반환하지 않는다. 따라서, 호스트는 get 커맨드 상태(Get_CommandStatus()) 커맨드를 사용하여 긴 커맨드의 실행이 완료되는 때를 결정한다. 커맨드 실행이 완료되고 센서가 준비되는 때를 결정하는데 커맨드에 대한 응답이 호스트에 의해 사용될 수 있기 때문에, get 커맨드 상태(Get_CommandStatus()) 커맨드가 항상 블로킹 없이 센서에 의해 핸들링되는 것이 추천된다.
블록 606에서, 응답 PDU는 이미징 디바이스로부터 호스트 디바이스로 송신되어 커맨드의 실행을 완료할 수 있다. 응답 PDU는 이미징 디바이스 내 이미지 소스로부터 획득된 속성 값을 포함할 수 있다.
실시예들에서, CSI-3 통지 PDU(CSI-3 Notify PDU)는 이미징 디바이스로부터 호스트 디바이스로 송신될 수 있다. 통지 PDU는 커맨드로부터의 속성 식별에 기초한 속성 값을 포함하지 않는다. 추가적으로, Set PDU가 호스트 디바이스로부터 송신될 때, Set PDU는 커맨드로부터의 속성 식별에 기초하여 이미징 디바이스에 속성 값을 기록할 수 있다.
카메라 서브시스템은 또한, 호스트 하드웨어 및 소프트웨어 프로세싱으로 하여금, 카메라 세부사항을 식별하고, 카메라 특정 캘리브레이션(calibration) 및 튜닝 정보를 식별하고, 펌웨어 또는 다른 코드 스토어를 관리하게 하는 메타데이터 서브시스템을 포함할 수 있다. 따라서, 메타데이터는 변환 코드, 캘리브레이션 데이터, 튜닝 데이터, 이미징 디바이스 펌웨어, 또는 이들의 임의의 조합 중 적어도 하나를 포함한다. 많은 구현예들에서, 다양한 메타데이터 조각들은, 모듈 그 자체 상의 비휘발성 저장소, 호스트 펌웨어, 및 호스트 OS 주기억 장치를 포함하는, 다양한 시스템 데이터 스토어들에 저장된다. 실시예들에서, 데이터는 또한 다양한 코드 스토어에 저장될 수 있다. 또한, 실시예들에서, 코드 스토어 및 데이터 스토어는 동일하다. 다양한 시스템 저장소 제약사항 또는 비용 트레이드-오프가 선호되는 위치를 변경할 수 있음에 따라, 이러한 다양한 스토어들의 위치는 시스템에서 시스템으로 변할 수 있다. 메타데이터를 관리하는데 위치 결정하는 고급 소프트웨어의 작업을 간소화하기 위해, CCS는 메타데이터 저장 및 인출을 관리하는데 사용될 수 있는 선택적 세트의 커맨드를 제공한다. 카메라는 이러한 커맨드의 기본 버전을 구현하여 모듈 상에서 비휘발성 저장소를 관리할 수 있지만, 변환된 커맨드는 다른 시스템 스토어에 대한 액세스를 또한 잠재적으로 제공할 수 있다.
도 7은 실시예들에 따라, 센서 및 모듈 특정 메타데이터를 저장 및 인출하는 것을 가능하게 하는 메타데이터 저장소 서브시스템(700)에 관한 블록도이다. 실시예들에서, 메타데이터 저장소 시스템은 CSI-3에 대한 데이터 블록 저장소이다. 카메라 메타데이터는 블랍들에 의해 체계화되고(organized), 블랍들의 각각은 개별적으로 관리가능할 수 있다. 블랍은 데이터 조각이다. 예시의 블랍들은 캘리브레이션 정보, 센서 펌웨어, 및 CCS를 지원하는 코드를 포함한다. 따라서, 전술된 변환 코드는 블랍이다. 이러한 블랍들은 시스템 전체에 걸쳐 다양한 장소에 저장될 수 있고; CCS 변환 코드는, 각각의 블랍에 대한 액세스를 갖는 한 이러한 다양한 메타데이터 스토어를 소프트웨어에 대한 하나의 조정된 뷰로 추상화할 수 있다.
호스트 소프트웨어(702)는 메타데이터 디렉토리를 판독함으로써 이용가능한 블랍을 식별한다. 메타데이터 저장소 커맨드(704)는 메타데이터 디렉토리에 대한 액세스를 제공한다. 호스트 소프트웨어(702)는 메타데이터 디렉토리를 판독하여 존재하는 블랍의 타입, 시작 어드레스 및 길이, 및 액세스 속성을 결정한다. 블랍은 카메라 저장소(706), 플랫폼 펌웨어(708), 또는 플랫폼 1차 저장소(712) 중 어느 것 상에 존재할 수 있다.
구체적으로, 메타데이터 디렉토리(MetadataDirectory()) 커맨드는 디렉토리에 대한 액세스를 제공한다. 이후에 get 메타데이터 디렉토리(Get_MetadataDirectory()) 커맨드 변형을 사용하여 페치될 수 있는, 정보 메타데이터(Info_MetadataDirectory()) 커맨드 변형은 디렉토리의 크기를 반환한다.
개별 블랍들을 페치하기 위해, 두 개의 프로세스 단계가 호스트에 의해 사용된다. 우선, set 메타데이터(Set_Metadata()) 커맨드는 전달의 시작 어드레스를 표시하는데 사용되며, 그 이후 get 메타데이터(Get_Metadata()) 커맨드는 메타데이터 블랍의 세그먼트를 전달한다. 개별 CSI-3 PDU는 한 번에 4096 바이트까지 전달하도록 제한되기 때문에, 복수의 Set_/Get_시퀀스는 4KB 한도보다 긴 메타데이터 블랍을 페치할 필요가 있을 수도 있다.
블랍의 시작 어드레스는, CSI-3 속성 맵핑에 적합한 4의 배수인 것 외에, 임의의 특정 패턴을 따를 필요는 없다. 접속된 EEPROM를 사용하여 메타데이터 저장소 커맨드를 기본적으로 구현하는 카메라는 저장 디바이스 내에서 문자 어드레스(literal address)를 표현하도록 어드레스를 사용할 수 있는 반면, 변환된 메타데이터 커맨드는 상위 바이트를 사용하여 메타데이터 블랍이 인출되어야 하는 데이터 스토어를 표현할 수 있다.
도 8은 실시예들에 따라 메타데이터 저장소 서브시스템을 인에이블하는 방법(800)에 관한 프로세스 흐름도이다. 블록 802에서, 이용가능한 메타데이터의 디렉토리가 생성되며, 여기서 메타데이터는 다양한 시스템 데이터 스토어에 저장된다. 실시예들에서, 메타데이터는 카메라 커맨드 세트(CCS) 변환 코드 블록이며, 호스트 디바이스는 CCS 변환 코드 블록을 로딩하고 개시한다. 블록 804에서, 메타데이터는 호스트 디바이스에 의해 요청된 대로 인출된다. 전술된 바와 같이, 메타데이터를 인출하는 것은 메타데이터를 포함하는 데이터 전달의 시작 어드레스를 표시하는 커맨드를 실행하는 것을 포함할 수 있다. 실시예들에서, 시작 어드레스는 CSI-3 속성 맵핑에 대응한다. 또한, 호스트 디바이스는 디렉토리를 판독하여 이미지 디바이스 상에 존재하는 메타데이터의 타입, 메타데이터의 길이 및 시작 어드레스, 및 메타데이터의 액세스 속성을 결정한다. 블록 806에서, 메타데이터는 호스트 디바이스에 전달된다. 블록 808에서, 메타데이터가 실행된다.
도 4 내지 도 6 및 도 8의 프로세스 흐름도는, 방법 400, 500, 600 및 800의 단계들이 임의의 특정 순서로 실행되는 것 또는 방법 400, 500, 600 및 800의 모든 단계들이 모든 경우에 포함될 수 있다는 것을 나타내고자 하는 것이 아니다. 또한, 임의의 개수의 추가 단계들은, 특정 응용에 따라, 방법 400, 500, 600 및 800, 또는 이들의 임의의 조합 내에 포함될 수 있다.
도 9는 실시예들에 따라, 카메라 커맨드를 변환하기 위한 코드를 저장하는 유형의, 비일시적 컴퓨터 판독가능 매체(900)를 도시한다. 유형의, 비일시적, 머신 판독가능 매체는 머신, 예를 들어, 컴퓨터에 의해 판독가능한 형태로 정보를 저장하거나 전송하기 위한 임의의 메커니즘을 포함할 수 있다. 예를 들어, 머신 판독가능 매체는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광학 저장 매체, 및 플래시 메모리 디바이스를 포함할 수 있다. 유형의, 비일시적 컴퓨터 판독가능 매체(900)는 컴퓨터 버스(904)를 통해 프로세서(902)에 의해 액세스될 수 있다. 더욱이, 유형의, 비일시적 컴퓨터 판독가능 매체(900)는 본원에서 설명된 방법을 수행하도록 프로세서(902)에 지시하도록 구성된 코드를 포함할 수 있다.
본원에 설명된 다양한 소프트웨어 컴포넌트들은, 도 9에 나타낸 바와 같이, 유형의, 비일시적 컴퓨터 판독가능 매체(900) 상에 저장될 수 있다. 저장 모듈(906)은 변환 엔진을 형성하도록 코드 스토어로부터 변환 코드를 수신하도록 구성된다. 또한, 변환 모듈(908)은 변환 엔진을 사용하여 이미징 디바이스 커맨드를 변환하도록 구성될 수 있다. 변환 모듈(910)은 변환된 이미징 디바이스 커맨드를 이미징 디바이스에 전달하여 변환된 이미징 디바이스 커맨드에 의해 요청된 거동을 야기할 수 있다.
도 9의 블록도는 유형의, 비일시적 컴퓨터 판독가능 매체(900)가 도 9에 도시된 모든 컴포넌트들을 포함한다는 것을 나타내고자 하는 것이 아니다. 또한, 유형의, 비일시적 컴퓨터 판독가능 매체(900)는, 특정 구현예의 세부사항에 따라, 도 9에 도시되지 않은 임의의 개수의 추가 컴포넌트들을 포함할 수 있다.
도 10은 실시예들에 따라, 카메라 커맨드를 변환하기 위한 예시의 시스템(1000)에 관한 블록도이다. 유사한 번호의 항목은 도 1에 관하여 설명된 바와 같다. 일부 실시예들에서, 시스템(1000)은 미디어 시스템이다. 또한, 시스템(1000)은 퍼스널 컴퓨터(PC), 랩톱 컴퓨터, 울트라-랩톱 컴퓨터, 태블릿, 터치 패드, 휴대용 컴퓨터, 핸드헬드 컴퓨터, 팜톱 컴퓨터, PDA, 휴대 전화, 휴대 전화/PDA의 조합, 텔레비전, 스마트 디바이스(예를 들어, 스마트 폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 디바이스(MID), 메시징 디바이스, 데이터 통신 디바이스 등에 통합될 수 있다.
다양한 실시예들에서, 시스템(1000)은 디스플레이(1004)에 연결된 플랫폼(1002)을 포함한다. 플랫폼(1002)은 콘텐츠 서비스 디바이스(들)(1006) 또는 콘텐츠 전달 디바이스(들)(1008), 또는 다른 유사한 콘텐츠 소스와 같은 콘텐츠 디바이스로부터 콘텐츠를 수신할 수 있다. 하나 이상의 내비게이션 피처를 포함하는 내비게이션 제어기(1010)는, 예를 들어, 플랫폼(1002) 및/또는 디스플레이(1004)와 인터랙션하는데 사용될 수 있다. 이러한 컴포넌트들의 각각은 아래에서 더 상세히 설명된다.
플랫폼(1002)은 칩셋(1012), 중앙 처리 장치(CPU)(102), 메모리 디바이스(104), 저장 디바이스(128), 그래픽 서브시스템(1014), 애플리케이션(130), 및 무선장치(1016)의 임의의 조합을 포함할 수 있다. 칩셋(1012)은 CPU(102), 메모리 디바이스(104), 저장 디바이스(128), 그래픽 서브시스템(1014), 애플리케이션(130), 및 무선장치(1016) 사이에서 상호통신을 제공할 수 있다. 예를 들어, 칩셋(1012)은 저장 디바이스(128)와의 상호통신을 제공할 수 있는 저장소 어댑터(미도시)를 포함할 수 있다.
프로세서(102)는 복합 명령어 세트 컴퓨터(Complex Instruction Set Computer; CISC) 또는 축소 명령어 세트 컴퓨터(Reduced Instruction Set Computer; RISC) 프로세서, x86 명령어 세트 호환가능 프로세서, 멀티 코어, 또는 임의의 다른 마이크로프로세서 또는 중앙 처리 유닛(CPU)으로서 구현될 수 있다. 일부 실시예들에서, 프로세서(102)는 듀얼 코어 프로세서(들), 듀얼 코어 모바일 프로세서(들) 등을 포함한다.
메모리 디바이스(104)는 휘발성 메모리 디바이스, 예컨대, 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 또는 정적 RAM(SRAM)으로 구현될 수 있으나 이로 제한되지 않는다. 저장 디바이스(128)는 비휘발성 저장 디바이스, 예컨대, 자기 디스크 드라이브, 광 디스크 드라이브, 테이프 드라이브, 내부 저장 디바이스, 부착형 저장 디바이스, 플래시 메모리, 배터리 백업 SDRAM(동기 DRAM), 및/또는 네트워크 액세스가능 저장 디바이스로서 구현될 수 있으나 이로 제한되지 않는다. 일부 실시예들에서, 저장 디바이스(128)는, 예를 들어, 복수의 하드 드라이브가 포함될 때, 가치있는 디지털 미디어에 대한 저장 성능 향상된 보호를 증가시키는 기법을 포함한다.
그래픽 서브시스템(1014)은 디스플레이를 위한 스틸 또는 비디오와 같은 이미지의 프로세싱을 수행할 수 있다. 그래픽 서브시스템(1014)은, 예를 들어, GPU(108)와 같은 그래픽 프로세싱 유닛(GPU), 또는 가상 프로세싱 유닛(VPU)을 포함할 수 있다. 아날로그 또는 디지털 인터페이스는 그래픽 서브시스템(1014)와 디스플레이(1004)를 통신하능하게 연결하는데 사용될 수 있다. 예를 들어, 인터페이스는 고화질 멀티미디어 인터페이스(High-Definition Multimedia Interface; HDMI), 디스플레이포트, 무선 HDMI, 및/또는 무선 HD 준수 기술 중 임의의 것일 수 있다. 그래픽 서브 시스템(1014)은 프로세서 또는 칩셋(1012)에 통합될 수 있다. 대안적으로, 그래픽 서브시스템(1014)은 칩셋(1012)에 통신가능하게 연결된 독립형 카드일 수 있다.
본원에서 설명된 그래픽 및/또는 비디오 프로세싱 기술은 다양한 하드웨어 아키텍처에서 구현될 수 있다. 예를 들어, 그래픽 및/또는 비디오 기능은 칩셋(1012) 내에 통합될 수 있다. 대안적으로, 별개의 그래픽 및/또는 비디오 프로세서가 사용될 수 있다. 또 다른 실시예로서, 그래픽 및/또는 비디오 기능은 멀티 코어 프로세서를 포함하는 범용 프로세서에 의해 구현될 수 있다. 추가 실시예에서, 기능은 소비자 전자 디바이스에서 구현될 수 있다.
무선장치(1016)는 다양한 적합한 무선 통신 기술을 사용하여 신호를 전송 및 수신할 수 있는 하나 이상의 무선장치를 포함할 수 있다. 그러한 기술은 하나 이상의 무선 네트워크에 걸친 통신을 수반할 수 있다. 예시의 무선 네트워크는 무선 LAN(WLAN), 무선 PAN(WPAN), 무선 MAN(WMAN), 셀를러 네트워크, 위성 네트워크 등을 포함한다. 그러한 네트워크에 걸쳐 통신할 때, 무선장치(1016)는 임의의 버전의 하나 이상의 적용가능한 표준에 따라 동작할 수 있다.
디스플레이(1004)는 임의의 텔레비전 타입 모니터 또는 디스플레이를 포함할 수 있다. 예를 들어, 디스플레이(1004)는 컴퓨터 디스플레이 스크린, 터치 스크린 디스플레이, 비디오 모니터, 텔레비전 등을 포함할 수 있다. 디스플레이(1004)는 디지털 및/또는 아날로그일 수 있다. 일부 실시예들에서, 디스플레이(1004)는 홀로그래픽 디스플레이이다. 또한, 디스플레이(1004)는 시각적 투사(a visual projection)를 수신할 수 있는 투명 표면일 수 있다. 그러한 투사는 다양한 형태의 정보, 이미지, 오브젝트 등을 전달할 수 있다. 예를 들어, 그러한 투사는 모바일 증강 현실(mobile augmented reality; MAR) 애플리케이션을 위한 시각적 오버레이일 수 있다. 하나 이상의 애플리케이션(130)의 제어 하에서, 플랫폼(1002)은 디스플레이(1004) 상에서 사용자 인터페이스(1018)를 디스플레이할 수 있다.
콘텐츠 서비스 디바이스(들)(1006)는 임의의 국가적, 국제적, 또는 독립적인 서비스에 의해 호스팅될 수 있으며, 이에 따라 예를 들어, 인터넷을 통해 플랫폼(1002)에 액세스가능할 수 있다. 콘텐츠 서비스 디바이스(들)(1006)는 플랫폼(1002) 및/또는 디스플레이(1004)에 연결될 수 있다. 플랫폼(1002) 및/또는 콘텐츠 서비스 디바이스(들)(1006)는 네트워크(134)에 연결되어 네트워크(134)로 그리고 네트워크(134)로부터 미디어 정보를 통신(예를 들어, 송신 및/또는 수신)할 수 있다. 콘텐츠 전달 디바이스(들)(1008)는 또한 플랫폼(1002)에 및/또는 디스플레이(1004)에 연결될 수 있다.
콘텐츠 서비스 디바이스(들)(1006)는 케이블 텔레비전 박스, 퍼스널 컴퓨터, 네트워크, 전화, 또는 디지털 정보를 전달할 수 있는 인터넷 가능 디바이스를 포함할 수 있다. 또한, 콘텐츠 서비스 디바이스(들)(1006)는, 네트워크(134)를 통하거나 직접, 콘텐츠 제공자와 플랫폼(1002) 또는 디스플레이(1004) 사이에서 콘텐츠를 단방향으로 또는 양방향으로 통신할 수 있는 임의의 다른 유사한 디바이스를 포함할 수 있다. 콘텐츠는 네트워크(134)를 통해 콘텐츠 제공자 및 시스템(1000) 내 컴포넌트들 중 임의의 하나로 또는 그로부터 단방향으로 및/또는 양방향으로 통신될 수 있다는 것을 이해할 것이다. 콘텐츠에 관한 예시들은, 예를 들어, 비디오, 음악, 의료 및 게임 정보 등을 포함하는, 임의의 매체 정보를 포함할 수 있다.
콘텐츠 서비스 디바이스(들)(1006)는, 매체 정보, 디지털 정보, 또는 다른 콘텐츠를 포함하는 케이블 텔레비전 프로그래밍과 같은 콘텐츠를 수신할 수 있다. 콘텐츠 제공자에 관한 예시들은 무엇보다도 임의의 케이블 또는 위성 텔레비전 또는 라디오 또는 인터넷 콘텐츠 제공자를 포함할 수 있다.
일부 실시예들에서, 플랫폼(1002)은 하나 이상의 내비게이션 피처들을 포함하는, 내비게이션 제어기(1010)로부터 제어 신호를 수신한다. 내비게이션 제어기(1010)의 내비게이션 피처들은, 예를 들어, 사용자 인터페이스(1018)와 인터랙팅하는데 사용될 수 있다. 내비게이션 제어기(1010)는 사용자로 하여금 공간(예를 들어, 연속(continuous) 및 다차원(multi-dimensional)) 데이터를 컴퓨터에 입력할 수 있게 하는 컴퓨터 하드웨어 컴포넌트(구체적으로 휴먼 인터페이스 디바이스)일 수 있는 위치결정 디바이스(a pointing device)일 수 있다. 그래픽 사용자 인터페이스, 및 텔레비전 및 모니터와 같은 많은 시스템들은 사용자로 하여금 물리적 제스처를 사용하여 컴퓨터 또는 텔레비전에 데이터를 제공 및 제어할 수 있게 한다. 물리적 제스처는 얼굴 표정, 얼굴 이동, 다양한 팔의 이동, 신체 이동(body movements), 신체 언어(body language) 또는 이들의 조합을 포함하나 이로 제한되지 않는다. 그러한 물리적 제스처는 커맨드 또는 명령어로 인식되고 변환될 수 있다.
내비게이션 제어기(1010)의 내비게이션 피처의 이동은 포인터, 커서, 포커스 링(focus ring), 또는 디스플레이(1004) 상에 디스플레이된 다른 시각적 표시자의 이동에 의해 디스플레이(1004) 상에 에코잉될 수 있다. 예를 들어, 애플리케이션(130)의 제어 하에서, 내비게이션 제어기(1010) 상에 위치된 내비게이션 피처는 사용자 인터페이스(1018) 상에 디스플레이된 시각 내비게이션 피처에 맵핑될 수 있다. 일부 실시예들에서, 내비게이션 제어기(1010)는 별도의 컴포넌트가 아니라, 플랫폼(1002) 및/또는 디스플레이(1004)에 통합될 수도 있다.
시스템(1000)은 사용자로 하여금 초기 부팅 업 이후, 예를 들어, 사용가능할 때, 버튼의 터치를 사용하여 플랫폼(1002)을 즉시 턴 온 및 턴 오프하게 하는 기술을 포함하는 드라이버(미도시)를 포함할 수 있다. 프로그램 로직은 플랫폼이 턴 "오프" 될 때 플랫폼(1002)으로 하여금 미디어 어댑터 또는 다른 콘텐츠 서비스 디바이스(들)(1006) 또는 콘텐츠 전달 디바이스(content delivery device)(들)(1008)로 콘텐츠를 스트리밍하도록 허용할 수 있다. 또한 칩셋(1012)은, 예를 들어, 10.1 서라운드 사운드 오디오 및/또는 고화질 7.1 서라운드 사운드 오디오에 대한 하드웨어 및/또는 소프트웨어 지원을 포함할 수 있다. 드라이버는 통합 그래픽 플랫폼을 위한 그래픽 드라이브를 포함할 수 있다. 일부 실시예들에서, 그래픽 드라이버는 주변 컴포넌트 상호접속 익스프레스(PCIe) 그래픽 카드를 포함한다.
다양한 실시예들에서, 시스템(1000) 내 도시된 컴포넌트들 중 임의의 하나 이상은 통합될 수 있다. 예를 들어, 플랫폼(1002) 및 콘텐츠 서비스 디바이스(들)(1006)가 통합될 수 있거나, 플랫폼(1002) 및 콘텐츠 전달 디바이스(들)(1008)이 통합될 수 있거나, 플랫폼, 콘텐츠 서비스 디바이스(들)(1006), 및 콘텐츠 전달 디바이스(들)(1008)가 통합될 수 있다. 일부 실시예들에서, 플랫폼(1002) 및 디스플레이(1004)는 통합 유닛이다. 예를 들어, 디스플레이(1004) 및 콘텐츠 서비스 디바이스(들)(1006)가 통합될 수 있거나, 디스플레이(1004) 및 콘텐츠 전달 디바이스(들)(1008)가 통합될 수 있다.
시스템(1000)은 무선 시스템 또는 유선 시스템으로 구현될 수 있다. 무선 시스템으로 구현될 때, 시스템(1000)은 무선 공유 매체를 통해 통신하기에 적합한 인터페이스 및 컴포넌트, 예컨대, 하나 이상의 안테나, 전송기, 수신기, 송수신기, 증폭기, 필터, 제어 로직 등을 포함할 수 있다. 무선 공유 매체의 일 예시는, 무선 스펙트럼의 일부, 예컨대, RF 스펙트럼을 포함할 수 있다. 유선 시스템으로 구현될 때, 시스템(1000)은 유선 통신 매체를 통해 통신하기에 적합한 인터페이스 및 컴포넌트, 예컨대, 입력/출력(I/O) 어댑터, I/O 어댑터를 대응 유선 통신 매체와 접속시키는 물리적 접속기, 네트워크 인터페이스 카드(NIC), 디스크 제어기, 비디오 제어기, 오디오 제어기 등을 포함할 수 있다. 유선 통신 매체의 예시는, 와이어, 케이블, 금속 리드, 인쇄 회로 기판(PCB), 백플레인, 스위치 패브릭, 반도체 물질, 꼬임 쌍선, 동축 케이블, 광 섬유 등을 포함할 수 있다.
플랫폼(1002)은 정보를 통신하기 위해 논리 채널 또는 물리 채널을 수립할 수 있다. 정보는 매체 정보 및 제어 정보를 포함할 수 있다. 매체 정보는 사용자를 위해 계획된 콘텐츠를 표현하는 임의의 데이터를 지칭할 수 있다. 콘텐츠에 관한 예시들은, 예를 들어, 음성 변환으로부터의 데이터, 음성 회의, 스트리밍 비디오, 전자 메일(이메일) 메시지, 음성 메일 메시지, 영숫자 심볼, 그래픽, 이미지, 비디오, 텍스트 등을 포함할 수 있다. 음성 변환으로부터의 데이터는, 예를 들어, 스피치 정보, 침묵 기간, 배경 잡음, 통신 소음(comfort noise), 어조(tones) 등일 수 있다. 제어 정보는 자동화 시스템을 위해 계획된 커맨드, 명령어 또는 제어 워드를 표현하는 임의의 데이터를 지칭할 수 있다. 예를 들어, 제어 정보는 시스템을 통해 매체 정보를 라우팅하는데 사용될 수 있거나, 사전결정된 방식으로 매체 정보를 프로세싱하도록 노드에 명령하는데 사용될 수 있다. 그러나, 실시예들은 도 10에서 설명되거나 도시된 문맥 또는 요소들로 제한되지 않는다.
도 11은 실시예들에 따라, 도 10의 시스템(1000)이 포함될 수 있는 소형 폼 팩터 디바이스(1100)에 관한 개략도이다. 유사 번호의 항목은 도 10에 대하여 설명된 것과 같다. 일부 실시예들에서, 예를 들어, 디바이스(1100)는 무선 능력을 갖는 모바일 컴퓨팅 디바이스로서 구현된다. 모바일 컴퓨팅 디바이스는, 예를 들어, 하나 이상의 배터리와 같은 이동식 전력원 또는 공급기 및 프로세싱 시스템을 갖는 임의의 디바이스를 지칭할 수 있다.
전술된 바와 같이, 모바일 컴퓨팅 디바이스에 관한 예시들은 퍼스널 컴퓨터(PC), 랩톱 컴퓨터, 울트라 랩톱 컵퓨터, 태블릿, 터치 패드, 포터블 컴퓨터, 핸드헬드 컴퓨터, 팜톱 컵퓨터, PDA, 휴대 전화, 휴대 전화/PDA의 조합, 텔레비전, 스마트 디바이스(예를 들어, 스마트 폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 디바이스(MID), 메시징 디바이스, 데이터 통신 디바이스 등을 포함할 수 있다.
모바일 컴퓨팅 디바이스에 관한 일 예시는 또한 사람에 의해 착종되도록 배치되는 컴퓨터를 포함할 수 있으며, 예컨대, 손목 컴퓨터, 손가락 컴퓨터, 링 컴퓨터, 안경 컴퓨터, 벨트 클립 컴퓨터, 암밴드 컴퓨터, 신발 컴퓨터, 옷 컴퓨터, 또는 임의의 다른 적합한 타입의 웨어러블 컴퓨터를 포함할 수 있다. 예를 들어, 모바일 컴퓨팅 디바이스는 컴퓨터 애플리케이션뿐만 아니라, 음성 통신 및/또는 데이터 통신을 실행할 수 있는 스마트폰으로 구현될 수 있다. 일부 실시예들은 예시의 방법으로 스마트 폰으로서 구현된 모바일 컴퓨팅 디바이스를 사용하여 설명될 수 있으나, 다른 실시예들은 다른 무선 모바일 컴퓨팅 디바이스를 또한 사용하여 구현될 수 있다는 것이 이해될 수 있다.
도 11에 도시된 바와 같이, 디바이스(1100)는 하우징(1102), 디스플레이(1104), 입력/출력(I/O) 디바이스(1106), 및 안테나(1108)를 포함할 수 있다. 디바이스(1100)는 또한 내비게이션 피처(1110)를 포함할 수 있다. 디스플레이(1104)는 모바일 컴퓨팅 디바이스에 대한 적절한 정보를 디스플레이하기 위한 임의의 적합한 디스플레이 유닛을 포함할 수 있다. I/O 디바이스(1106)는 모바일 컴퓨팅 디바이스로 정보를 입력하기 위한 임의의 적합한 I/O 디바이스를 포함할 수 있다. 예를 들어, I/O 디바이스(1106)는 영숫자 키보드, 숫자 키패드, 터치 패드, 입력 키, 버튼, 스위치, 로커 스위치(rocker switch), 마이크로폰, 스피커, 음성 인식 디바이스 및 소프트웨어 등을 포함할 수 있다. 정보는 또한 마이크로폰의 방법으로 디바이스(1100)에 입력될 수 있다. 그러한 정보는 음성 인식 디바이스에 의해 디지털화될 수 있다. 더욱이, 디바이스(1100)는 또한 하나 이상의 카메라를 포함할 수 있다. 카메라는 MIPI(Mobile Industry Processor Interface) 얼라이언스에 의해 개발된 표준에 따라 디바이스의 프로세서와 인터페이싱 할 수 있다.
예시 1
이미징 디바이스 커맨드를 변환하기 위한 장치가 본원에서 설명된다. 장치는 코드 스토어로부터 변환 코드를 인출하여 변환 엔진을 형성하는 로직 및 변환 엔진에서 이미징 디바이스 커맨드를 수신하는 로직을 포함한다. 장치는 또한 변환 엔진을 사용하여 이미징 디바이스 커맨드를 변환하는 로직, 및 변환된 이미징 디바이스 커맨드를 이미징 디바이스에 전달하여 변환된 이미징 디바이스 커맨드에 의해 요청된 거동을 야기하는 로직을 포함한다.
장치는 수신된 커맨드가 이미징 디바이스에 의해 기본적으로 지원되는지 여부를 결정하는 로직을 더 포함할 수 있다. 변환 코드는 이미징 디바이스 커맨드를 변환하기 위해 실행될 수 있다. 코드 스토어는 이미징 디바이스 내에 위치될 수 있거나, 코드 스토어는 호스트 디바이스에 연결된 플랫폼 저장소 내에 위치될 수 있다. 변환 엔진은 이미징 디바이스로부터 원격에 위치될 수 있다. 더욱이, 변환 엔진은 인터포저 디바이스 상에 위치될 수 있고, 코드 스토어는 인터포저 디바이스, 호스트 디바이스, 센서, 또는 이들의 임의의 조합 중 적어도 하나에 위치될 수 있다. 변환 엔진은 이미징 디바이스 커맨드를 CSI-3 속성 Get/Set 커맨드로 변환할 수 있다. 추가적으로, 변환 엔진은 이미징 디바이스 커맨드를 CSI-2 레지스터 판독/기록 커맨드로 변환할 수 있다. 변환 엔진은 또한 이미징 디바이스에 의해 기본적으로 지원되지 않는 커맨드를 변환할 수 있다.
예시 2
이미징 디바이스 커맨드를 변환하기 위한 시스템이 본원에서 설명된다. 시스템은, 호스트 디바이스, 호스트 디바이스에 연결된 이미징 디바이스, 및 변환 엔진을 포함하며, 변환 엔진은 코드 스토어로부터 획득된 코드를 사용하여 생성되고, 변환 엔진은 이미징 디바이스 커맨드를 이미징 디바이스 특정 커맨드로 변환하도록 구성된다.
호스트 디바이스는 랩톱 컴퓨터, 데스크톱 컴퓨터, 태블릿 컴퓨터, 모바일 디바이스, 또는 서버, 또는 이들의 임의의 조합일 수 있다. 또한, 이미징 디바이스 내 내장 프로세서 또는 시퀀스는 이미징 디바이스 커맨드를 변환하는데 사용될 수 있다. 코드 스토어는 호스트 디바이스 내에 위치될 수 있다. 추가적으로, 코드 스토어는 이미징 디바이스 내에 위치될 수 있다. 코드 스토어는 또한 호스트 디바이스에 연결된 플랫폼 저장 디바이스 내에 위치될 수 있다. 변환 엔진은 이미징 디바이스로부터 원격에 위치될 수 있다. 변환 엔진은 또한 이미징 디바이스 커맨드를 CSI-3 속성 Get/Set 커맨드로 변환할 수 있다. 변환 엔진은 변환된 커맨드를 이미징 디바이스로 송신하도록 구성되어 변환된 이미징 디바이스 커맨드에 의해 요청된 거동을 야기할 수 있다. 더욱이, 변환 엔진은 이미징 디바이스에 의해 기본적으로 지원되지 않는 커맨드를 변환하도록 구성될 수 있다. 변환 코드는 런타임 해석 언어 샌드박스 내에서 실행될 수 있다. 변환 엔진은 또한 호스트 디바이스 상에 위치될 수 있다.
예시 3
이미징 디바이스 커맨드를 변환하기 위한 컴퓨터 실행가능 명령어를 포함하는 유형의, 비일시적, 컴퓨터 판독가능 저장 매체가 본원에서 설명된다. 명령어는 컴퓨터로 하여금 코드 스토어로부터 변환 코드를 인출하여 변환 엔진을 형성하게 하고 입력 이미징 디바이스 커맨드를 수신하게 한다. 명령어는 또한 컴퓨터로 하여금 입력 이미징 디바이스 커맨드를 이미징 디바이스 특정 커맨드로 변환하게 하고, 이미징 디바이스 특정 커맨드를 컴퓨터에 연결된 이미징 디바이스에 송신하게 할 수 있으며, 입력 이미징 디바이스 커맨드는 변환 수단에 의해 변환된다. 변환 수단은 변환 엔진일 수 있고, 변환 수단은 이미징 디바이스로부터 원격에 위치될 수 있다.
예시 4
get 및 set 아키텍처에 기초한 전송 메커니즘(a transport mechanism) 내에서 커맨드를 실행하기 위한 장치가 본원에서 설명된다. 장치는 커맨드의 속성 식별을 추출하는 로직 및 이미징 디바이스 내 이미징 소스로부터 속성 값을 획득하기 위해 속성 식별에 기초하여 호스트 디바이스로부터 이미징 디바이스로 get 프로토콜 데이터 유닛(PDU)을 송신하는 로직을 포함한다. 장치는 또한 커맨드의 실행을 완료하도록 이미징 디바이스로부터 호스트 디바이스로 응답 PDU를 송신하는 로직을 포함한다.
이미징 디바이스의 센서는 get PDU가 호스트 디바이스로부터 이미징 디바이스로 송신될 때 커맨드를 실행할 수 있다. 추가적으로, 이미징 디바이스의 센서는 get PDU가 블로킹 없이 호스트 디바이스로부터 이미징 디바이스로 송신될 때 실행될 수 있다. get PDU는 CSI-3 속성 패킷 내에 캡슐화될 수 있고 그 이후 이미징 디바이스로 송신될 수 있다. 또한, 응답 PDU는 이미징 디바이스 내 이미지 소스로부터 획득된 속성 값을 포함할 수 있다. 이미지 소스는, 이미지 센서, 시스템 온 칩(SOC) 이미징 디바이스, 멀티칩 이미징 디바이스 모듈 또는 이미지 신호 프로세서(ISP)일 수 있다. 장치는 또한 이미징 디바이스로부터 호스트 디바이스로 통지 PDU(a notify PDU)를 송신하는 로직을 포함할 수 있고, 통지 PDU는 커맨드로부터의 속성 식별에 기초한 속성 값을 포함하지 않는다. 추가적으로, 장치는 호스트 디바이스로부터 set PDU를 송신하는 로직을 포함할 수 있고, set PDU는 커맨드로부터의 속성 식별에 기초하여 속성 값을 이미징 디바이스에 기록한다.
예시 5
get 및 set 아키텍처에 기초한 전송 메커니즘 내에서 커맨드를 실행하기 위한 시스템이 본원에서 설명된다. 시스템은 호스트 디바이스, 및 호스트 디바이스에 연결된 이미징 디바이스를 포함하며, get 프로토콜 데이터 유닛(PDU)은 호스트 디바이스로부터 이미징 디바이스로 송신되고 get PDU는 이미징 디바이스의 이미지 소스로부터의 속성 값에 대한 요청을 포함하고, 응답 PDU는 이미징 디바이스로부터 호스트 디바이스로 송신되어 커맨드의 실행을 완료한다.
호스트 디바이스의 센서는 get PDU가 호스트 디바이스로부터 이미징 디바이스로 송신될 때 커맨드를 실행할 수 있다. 이미징 디바이스의 센서는 또한 get PDU가 블로킹 없이 호스트 디바이스로부터 이미징 디바이스로 송신될 때 커맨드를 실행할 수 있다. 이미지 소스는 RAW 이미징 디바이스 센서, 시스템 인 칩 이미징 디바이스, 멀티칩 이미징 디바이스 모듈 또는 이미지 신호 프로세서일 수 있다. 통지 PDU는 이미징 디바이스로부터 호스트 디바이스로 송신될 수 있고, 통지 PDU는 커맨드로부터의 속성 식별에 기초한 속성 값을 포함하지 않는다. set PDU는 이미징 디바이스로부터 호스트 디바이스로 송신될 수 있고, set PDU는 커맨드로부터의 속성 식별에 기초하여 이미징 디바이스에 속성 값을 판독 또는 기록한다.
예시 6
get 및 set 아키텍처에 기초한 전송 메커니즘 내에서 커맨드를 실행하기 위한 컴퓨터 실행가능한 명령어를 포함하는 유형의, 비일시적, 컴퓨터 판독가능 저장 매체가 본원에서 설명된다. 명령어는 컴퓨터로 하여금 커맨드의 속성 식별을 추출하게 하고, 이미징 디바이스 내 이미지 소스로부터 속성 값을 획득하기 위해 속성 식별에 기초하여 get 프로토콜 데이터 유닛(PDU)을 호스트 디바이스로부터 이미징 디바이스로 송신하게 한다. 명령어는 또한 컴퓨터로 하여금 커맨드의 실행을 완료하도록 응답 PDU를 이미징 디바이스로부터 호스트 디바이스로 송신하게 한다.
get PDU는 CSI-3 속성 패킷 내에 캡슐화될 수 있고 그 이후 이미징 디바이스로 송신될 수 있다. 응답 PDU는 이미징 디바이스 내 이미지 소스로부터 획득된 속성 값을 포함할 수 있다. 이미지 소스는 RAW 이미징 디바이스 센서, 시스템 인 칩 이미징 디바이스, 멀티칩 이미징 디바이스 모듈 또는 이미지 신호 프로세서일 수 있다. 또한, 통지 PDU는 이미징 디바이스로부터 호스트 디바이스로 송신될 수 있고, 통지 PDU는 커맨드로부터의 속성 식별에 기초한 속성 값을 포함하지 않는다. 추가적으로. set PDU는 이미징 디바이스로부터 호스트 디바이스로 송신될 수 있으며, set PDU는 커맨드로부터의 속성 식별에 기초하여 이미징 디바이스에 속성 값을 기록한다.
예시 7
메타데이터 저장소 서브시스템을 인에이블하는 장치가 본원에서 설명된다. 장치는 이용가능한 메타데이터의 디렉토리를 생성하는 로직 ―메타데이터는 다양한 시스템 데이터 스토어에 저장됨― 과, 호스트 디바이스에 의해 요청된 바와 같이 메타데이터를 인출하는 로직을 포함한다. 장치는 또한 메타데이터를 호스트 디바이스에 전달하는 로직, 및 메타데이터를 실행하는 로직을 포함한다.
메타데이터를 인출하는 로직은 메타데이터를 포함하는 데이터 전달의 시작 어드레스를 표시하는 커맨드를 실행하는 것을 포함할 수 있다. 호스트 디바이스는 디렉토리를 판독하여 이미징 디비이스 상에 존재하는 메타데이터의 타입, 메타데이터의 길이 및 시작 어드레스, 및 메타데이터의 액세스 속성을 결정할 수 있다. 메타데이터는 변환 코드, 캘리브레이션 데이터, 튜닝 데이터, 이미징 디바이스 펌웨어, 또는 이들의 임의의 조합 중 적어도 하나를 포함할 수 있다. 추가적으로, 메타데이터를 인출하는 로직은 메타데이터를 포함하는 데이터 전달의 시작 어드레스를 표시하는 커맨드를 실행하는 것을 포함하며, 시작 어드레스는 CSI-3 속성 맵핑에 대응한다. 또한, 메타데이터는 카메라 커맨드 세트(camera command set; CCS) 변환 코드 블록일 수 있고, 호스트 디바이스는 CCS 변환 코드 블록을 로딩 및 개시한다.
예시 8
메타데이터 저장소 서브시스템을 인에이블하기 위한 시스템이 본원에서 설명된다. 시스템은 호스트 디바이스, 호스트 디바이스에 연결된 이미징 디바이스, 및 메타데이터 서브시스템을 포함한다. 메타데이터 서브시스템 내 이용가능한 메타데이터의 디렉토리가 생성되고, 메타데이터를 호스트 디바이스에 의한 요청에 따라 인출된다. 메타데이터는 또한 호스트 디바이스를 사용하여 전달되고 실행된다.
메타데이터를 인출하는 것은 메타데이터를 포함하는 데이터 전달의 시작 어드레스를 표시하는 커맨드를 실행하는 것을 포함할 수 있다. 호스트 디바이스는 디렉토리를 판독하여 이미지 디바이스 상에 저장된 메타데이터의 타입, 메타데이터의 길이 및 시작 어드레스, 및 메타데이터의 액세스 속성을 결정할 수 있다. 추가적으로, 메타데이터는 변환 코드, 캘리브레이션 데이터, 튜닝 데이터, 이미징 디바이스 펌웨어, 또는 이들의 임의의 조합 중 적어도 하나를 포함할 수 있다. 메타데이터를 인출하는 것은 메타데이터를 포함하는 데이터 전달의 시작 어드레스를 표시하는 커맨드를 실행하는 것을 포함할 수 있으며, 시작 어드레스는 CSI-3 속성 맵핑에 대응한다. 메타데이터는 커맨드 이미징 디바이스 세트(CCS) 변환 코드 블록일 수 있고, 호스트 디바이스는 CCS 변환 코드 블록을 로딩 및 개시한다.
예시 9
메타데이터 저장소 서브시스템을 인에이블하기 위한 컴퓨터 실행가능한 명령어를 포함하는 유형의, 비일시적, 컴퓨터 판독가능 저장 매체가 본원에서 설명된다. 명령어는 컴퓨터로 하여금 이용가능한 메타데이터의 디렉토리를 생성하게 하며, 메타데이터는 다양한 시스템 데이터 스토어 내에 저장된다. 명령어는 또한 컴퓨터로 하여금 호스트 디바이스에 의해 요청된 바와 같이 메타데이터를 인출하게 하고, 메타데이터를 호스트 디바이스에 전달하게 하고, 메타데이터를 실행하게 한다.
메타데이터를 인출하는 것은 메타데이터를 포함하는 데이터 전달의 시작 어드레스를 표시하는 커맨드를 실행하는 것을 포함할 수 있다. 호스트 디바이스는 디렉토리를 판독하여 이미징 디바이스 상에 존재하는 메타데이터의 타입, 메타데이터의 길이 및 시작 어드레스, 및 메타데이터의 액세스 속성을 결정할 수 있다. 추가적으로, 메타데이터는 변환 코드, 캘리브레이션 데이터, 튜닝 데이터, 이미징 디바이스 펌웨어, 또는 이들의 임의의 조합 중 적어도 하나를 포함할 수 있다. 메타데이터를 인출하는 것을 또한 메타데이터를 포함하는 데이터 전달의 시작 어드레스를 표시하는 커맨드를 실행하는 것을 포함할 수 있으며, 시작 어드레스는 CSI-3 속성 맵핑에 대응한다. 또한, 메타데이터는 이미징 디바이스 세트(CCS) 변환 코드 블록일 수 있으며, 호스트 디바이스는 CCS 변환 코드 블록을 로딩 및 개시한다.
예시 10
하나 이상의 이미징 디바이스 커맨드를 변환하기 위한 방법이 본원에서 개시된다. 방법은 변환 코드를 인출하는 단계와 하나 이상의 이미징 디바이스 커맨드를 수신하는 단계를 포함한다. 방법은 또한 변환 코드를 실행하여 하나 이상의 이미징 디바이스 커맨드를 이미징 디바이스가 핸들링 가능한 하나 이상의 액세스로 변환하는 단계와, 하나 이상의 액세스를 이미징 디바이스에 송신하여 하나 이상의 이미징 디바이스 커맨드에 의해 요청된 거동을 야기하는 단계를 포함한다.
이미징 디바이스는 카메라를 포함할 수 있고, 하나 이상의 이미징 디바이스 커맨드는 하나 이상의 카메라 커맨드를 포함할 수 있다. 또한, 방법은 호스트 디바이스에서 구현될 수 있다. 추가적으로, 방법은 호스트 소프트웨어로 구현될 수 있다. 변환 코드는 고수준 변환 코드(a high-level translation code)일 수 있다. 변환 코드는 또한 이미징 디바이스 내에 위치된 저장소로부터 인출될 수 있다. 이미징 디바이스 내에 위치된 저장소는 메타데이터 저장소일 수 있다. 변환 코드는 이미징 디바이스 외부의 저장소로부터 인출될 수 있다. 또한, 이미징 디바이스 외부의 저장소는 플랫폼 저장소일 수 있다. 또한, 이미징 디바이스 외부의 저장소는 메타데이터 저장소일 수 있다.
이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스는 CSI-3 속성 Get/Set 패킷을 포함할 수 있다. 또한, 더 복잡한 커맨드는 더 단순한 커맨드로 변환될 수 있다. 더 복잡한 커맨드는 또한 CSI-3 속성 Get/Set 요청으로 변환될 수 있다. 방법은 또한 수신된 커맨드가 이미징 디바이스에 의해 기본적으로 지원되는지 여부를 결정하는 단계를 포함할 수 있다. 변환 코드는 인터포저 디바이스, 호스트 디바이스, 센서, 또는 이들의 임의의 조합 중 적어도 하나 상에 저장될 수 있다. 하나 이상의 이미징 디바이스 커맨드는 CSI-3 속성 Get/Set 커맨드로 변환될 수 있다. 추가적으로, 하나 이상의 이미징 디바이스 커맨드는 CSI-2 레지스터 판독/기록 커맨드로 변환될 수 있다. 하나 이상의 변환된 이미징 디바이스 커맨드는 또한 이미징 디바이스에 의해 기본적으로 지원되지 않는 커맨드일 수 있다.
예시 11
하나 이상의 디바이스 커맨드를 변환하기 위한 장치가 본원에서 설명된다. 장치는 변환 코드를 인출하고, 하나 이상의 이미징 디바이스 커맨드를 수신하고, 하나 이상의 이미징 디바이스 커맨드를 이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스로 변환하도록 변환 코드를 실행하고, 하나 이상의 이미징 디바이스 커맨드에 의해 요청된 거동을 야기하도록 이미징 디바이스에 하나 이상의 액세스를 송신하는, 변환 엔진을 포함한다.
이미징 디바이스는 카메라를 포함할 수 있으며, 하나 이상의 이미징 디바이스 커맨드는 하나 이상의 카메라 커맨드를 포함한다. 변환 엔진은 호스트 디바이스에 포함될 수 있다. 추가적으로, 변환 엔진은 호스트 소프트웨어를 포함할 수 있다. 변환 코드는 고수준 변환 코드일 수 있다. 더욱이, 변환 엔진은 이미징 디바이스 내에 위치된 저장소로부터 변환 코드를 인출할 수 있다. 이미징 디바이스 내에 위치된 저장소는 메타데이터 저장소일 수 있다. 추가적으로, 변환 엔진은 이미징 디바이스 외부의 저장소로부터 변환 코드를 인출하는 것이다. 이미징 디바이스 외부 저장소는 플랫폼 저장소이다. 또한, 이미징 디바이스 외부의 저장소는 메타데이터 저장소이다.
이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스는 CSI-3 속성 Get/Set 패킷을 포함할 수 있다. 더욱이, 변환 엔진은 더 복잡한 커맨드를 더 간단한 커맨드로 변환할 수 있다. 변환 엔진은 또한 더 복잡한 커맨드를 CSI-3 속성 Get/Set 요청으로 변환할 수 있다. 변환 엔진은 수신된 커맨드가 이미징 디바이스에 의해 기본적으로 지원되는지 여부를 결정할 수 있다. 변환 코드는 인터포저 디바이스, 호스트 디바이스, 센서, 또는 이들의 임의의 조합 중 적어도 하나 상에 저장될 수 있다. 변환 엔진은 하나 이상의 이미징 디바이스 커맨드를 CSI-3 속성 Get/Set 커맨드로 변환할 수 있다. 또한, 변환 엔진은 하나 이상의 이미징 디바이스 커맨드를 CSI-2 레지스터 판독/기록 커맨드로 변환할 수 있다. 추가적으로, 하나 이상의 변환된 이미징 디바이스 커맨드는 이미징 디바이스에 의해 기본적으로 지원되지 않는 커맨드일 수 있다. 또한, 변환 엔진은 호스트 내에 포함될 수 있고, 장치는 이미징 디바이스를 더 포함한다. 장치는 또한 변환 코드를 저장하는 저장 디바이스를 포함할 수 있다.
예시 12
장치가 본원에서 설명된다. 장치는 이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스를 수신하고, 하나 이상의 이미징 디바이스 커맨드에 의해 요청된 거동을 수행하는, 이미징 디바이스를 포함하며, 하나 이상의 액세스는 하나 이상의 이미징 디바이스 커맨드의 변환에 애응하고, 변환은 변환 코드를 사용하여 구현된다.
이미징 디바이스는 카메라를 포함할 수 있고, 하나 이상의 이미징 디바이스 커맨드는 하나 이상의 카메라 커맨드를 포함할 수 있다. 변환 엔진은 하나 이상의 이미지 디바이스 커맨드를 하나 이상의 액세스로 변환할 수 있다. 변환 엔진은 호스트 소프트웨어를 포함할 수 있다. 추가적으로, 변환 코드는 고수준 변환 코드일 수 있다. 변환 엔진은 이미징 디바이스 내에 위치된 저장소로부터 변환 코드를 인출할 수 있다. 이미징 디바이스는 변환 코드를 저장하는 저장소를 더 포함할 수 있다. 저장소는 메타데이터 저장소일 수 있다. 변환 엔진은 이미징 디바이스 외부의 저장소로부터 변환 코드를 인출할 수 있다. 추가적으로, 이미징 디바이스 외부의 저장소는 플랫폼 저장소일 수 있다. 또한, 이미징 디바이스 외부의 저장소는 메타데이터 저장소일 수 있다.
이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스는 CSI-3 속성 Get/Set 패킷을 포함할 수 있다. 변환 엔진은 더 복잡한 커맨드를 더 간단한 커맨드로 변환할 수 있다. 또한, 변환 엔진은 더 복잡한 커맨드를 CSI-3 속성 Get/Set 요청으로 변환할 수 있다. 변환 엔진은 또한 수신된 커맨드가 이미징 디바이스에 의해 기본적으로 지원되는지 여부를 결정할 수 있다. 추가적으로, 변환 코드는 인터포저 디바이스, 호스트 디바이스, 센서, 또는 이들의 임의의 조합 중 적어도 하나에 저장된다. 변환 엔진은 하나 이상의 이미징 디바이스 커맨드를 CSI-3 속성 Ge/Set 커맨드로 변환할 수 있다. 변환 엔진은 또한 하나 이상의 이미징 디바이스 커맨드를 CSI-2 레지스터 핀독/기록 커맨드로 변환할 수 있다. 하나 이상의 변환된 이미징 디바이스 커맨드는 이미징 디바이스에 의해 기본적으로 지원되지 않는 커맨드일 수 있다. 또한, 장치는 변환 코드를 저장하는 저장 디바이스를 포함할 수 있다.
예시 13
컴퓨터 실행가능한 명령어를 포함하는 유형의, 비일시적, 컴퓨터 판독가능 저장 매체가 본원에서 설명된다. 명령어는 컴퓨터로 하여금 변환 코드를 인출하게 하고 하나 이상의 이미징 디바이스 커맨드를 수신하게 한다. 명령어는 또한 컴퓨터로 하여금 변환 코드를 실행하여 하나 이상의 이미징 디바이스 커맨드를 이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스로 변환하게 하고, 하나 이상의 액세스를 이미징 디바이스에 송신하여 하나 이상의 이미징 디바이스 커맨드레 의해 요청된 거동을 야기하게 한다.
이미징 디바이스는 카메라를 포함할 수 있고, 하나 이상의 이미징 디바이스 커맨드는 하나 이상의 카메라 커맨드를 포함한다. 추가적으로, 변호나 코드를 고수준 변환 코드일 수 있다. 이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스는 CSI-3 속성 Get/Set 패킷을 포함할 수 있다. 또한, 더 복잡한 커맨드는 더 간단한 커맨드로 변환될 수 있다. 더욱이, 더 복잡한 커맨드는 CSI-3 속성 Get/Set 요청으로 변환될 수 있다. 명령어는 또한 컴퓨터로 하여금 수신된 커맨드가 이미징 디바이스에 의해 기본적으로 지원되는지 여부를 결정하게 할 수 있다. 명령어는 또한 컴퓨터로 하여금 하나 이상의 이미징 디바이스 커맨드를 CSI-3 속성 Get/Set 커맨드로 변환하게 할 수 있다. 추가적으로, 명령어는 또한 컴퓨터로 하여금 하나 이상의 이미징 디바이스 커맨드를 CSI-2 레지스터 판독/기록 커맨드로 변환하게 할 수 있다.
하나 이상의 변환된 이미징 디바이스 커맨드는 이미징 디바이스에 의해 기본적으로 지원되지 않는 커맨드일 수 있다. 명령어는 컴퓨터로 하여금 하나 이상의 이미징 디바이스 커맨드를 이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스로 변환하게 할 수 있다. 이미징 디바이스는 카메라를 포함할 수 있고, 하나 이상의 이미징 디바이스 커맨드는 하나 이상의 카메라 커맨드를 포함한다. 또한, 이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스는 CSI-3 속성 Ge/Set 패킷을 포함할 수 있다. 명령어는 또한 컴퓨터로 하여금 더 복잡한 커맨드를 더 간단한 커맨드로 변환하게 할 수 있다. 명령어는 또한 컴퓨터로 하여금 더 복잡한 커맨드를 CSI-3 속성 Get/Set 요청으로 변환하게 할 수 있다. 더욱이, 명령어는 또한 컴퓨터로 하여금 수신된 커맨드가 이미징 디바이스에의해 기본적으로 지원되는지 여부를 결정하게 할 수 있다. 또한, 명령어는 또한 컴퓨터로 하여금 하나 이상의 이미징 디바이스 커맨드를 CSI-3 속성 Get/Set 커맨드로 변환하게 할 수 있다. 추가적으로, 명령어는 또한 컴퓨터로 하여금 하나 이상의 이미징 디바이스 커맨드를 CSI-2 레지스터 판독/기록 커맨드로 변환하게 할 수 있다.
예시 14
커맨드 전송을 사용하여 커맨드를 실행하기 위한 장치가 본원에서 설명된다. 장치는 속성 패킷 내에 캡슐화된 커맨드의 프로토콜 데이터 유닛을 캡슐화하는 제어기를 포함한다. 제어기는 또한 캡슐화된 프로토콜 데이터 유닛을 이미징 디바이스에 송신할 수 있고 이미징 디바이스로부터의 응답 프로토콜 데이터 유닛 내 상태 값을 수신하여 커맨드를 완료할 수 있다.
이미징 디바이스는 카메라를 포함할 수 있고 커맨드는 카메라 커맨드일 수 있다. 추가적으로, 커맨드는 CSI-3 속성에 대응할 수 있다. 또한, 프로토콜 데이터 유닛은 get 프로토콜 데이터 유닛일 수 있다. 장치는 호스트 디바이스를 포함할 수 있다. 또한, 제어기는 커맨드의 속성 식별을 추출할 수 있고, 제어기는 속성 식별에 기초하여 프로토콜 데이터 유닛을 송신할 수 있다. 프로토콜 데이터 유닛이 이미징 디바이스에 송신될 때 이미징 디바이스의 센서는 커맨드를 실행할 수 있다. 추가적으로, 프로토콜 데이터 유닛이 블로킹 없이 이미징 디바이스에 송신될 때 이미징 디바이스의 센서가 커맨드를 실행할 수도 있다. 제어기는 프로토콜 데이터 유닛을 CSI-3 속성 패킷 내에 캡슐화하고 그 이후 이미징 디바이스에 송신한다. 추가적으로, 응답 프로토콜 데이터 유닛은 이미징 디바이스 내 이미지 소스로부터 획득된 속성 값을 포함할 수 있다. 또한, 제어기는 이미징 디바이스의 이미지 소스로부터 속성 값을 획득할 수 있다. 이미지 소스틈 이미지 센서, 시스템 온 칩(SOC) 이미징 디바이스, 멀티칩 이미징 디바이스 모듈 또는 이미지 신호 프로세서(ISP)일 수 있다. 제어기는 또한 이미징 디바이스로부터 통지 프로토콜 데이터 유닛을 수신할 수 있고, 통지 프로토콜 데이터 유닛은 커맨드로부터의 속성 식별에 기초한 속성 값을 포함하지 않는다. 추가적으로, 제어기는 또한 set 프로토콜 데이터 유닛을 이미징 디바이스에 송신할 수 있고, set 프로토콜 데이터 유닛은 커맨드로부터의 속성 식별에 기초하여 이미징 디바이스에 속성 값을 기록한다.
예시 15
커맨드 전송을 사용하여 커맨드를 실행하기 위한 이미징 디바이스가 본원에서 설명된다. 이미징 디바이스는 속성 패킷 내에 캡슐화된 커맨드의 프로토콜 데이터 유닛을 수신하고, 응답 프로토콜 데이터 유닛 내 상태 값을 반환하여 커맨드를 완료하는 제어기를 포함한다.
프로토콜 데이터 유닛은 호스트 디바이스로부터 수신될 수 있고 응답 프로토콜 데이터 유닛은 호스트 디바이스에 송신될 수 있다. 이미징 디바이스는 카메라를 포함할 수 있고 커맨드는 카메라 커맨드일 수 있다. 추가적으로, 커맨드는 CSI-3 속성에 대응할 수 있다. 수신된 프로토콜 데이터 유닛은 get 프로토콜 데이터 유닛일 수 있다. 추가적으로, 수신된 프로토콜 데이터 유닛을 커맨드로부터 추출된 속성 식별에 기초할 수 있다. 이미징 디바이스는 또한 프로토콜 데이터 유닛이 수신될 때 실행하는 센서를 포함할 수 있다. 더욱이, 이미징 디바이스는 또한 프로토콜 데이터 유닛이 블로킹 없이 수신될 때 커맨드를 실행하는 센서를 포함할 수 있다. 추가적으로, 수신된 프로토콜 데이터 유닛은 CSI-3 속성 패킷 내에 캡슐화될 수 있다. 이미징 디바이스는 또한 이미지 소스를 포함할 수 있고, 응답 프로토콜 데이터 유닛은 이미지 소스로부터 획득된 속성 값을 포함한다. 이미지 소스는 이미지 센서, 시스템 온 칩(SOC) 이미징 디바이스, 멀티칩 이미징 디바이스 모듈 또는 이미지 신호 프로세서(ISP)일 수 있다. 이미지 소스는 또한 RAW 이미징 디바이스 센서, 시스템 온 칩 이미징 디바이스, 멀티칩 이미징 디바이스 모듈 또는 이미지 신호 프로세서일 수 있다. 제어기는 또한 통지 프로토콜 데이터 유닛을 송신할 수 있고, 통지 프로토콜 데이터 유닛은 커맨드로부터의 속성 식별에 기초한 속성 값을 포함하지 않는다. 추가적으로, 제어기는 또한 set 프로토콜 데이터 유닛을 수신할 수 있고, 커맨드로부터의 속성 식별에 기초하여 속성 값을 기록할 수 있다.
예시 16
커맨드 전송을 사용하여 커맨드를 실행하기 위한 시스템이 본원에서 개시된다. 시스템은 속성 패킷 내에 캡슐화된 커맨드의 프로토콜 데이터 유닛을 캡슐화하고, 캡슐화된 프로토콜 데이터 유닛을 송신하고, 이미징 디바이스로부터 응답 프로토콜 데이터 유닛 내 상태 값을 수신하여 커맨드를 완료하는 제어기를 갖는 호스트를 포함한다. 시스템은 또한 이미징 디바이스를 포함하고, 이미징 디바이스는 허스트로부터 캡슐화된 프로토콜 데이터 유닛을 수신하고 응답 프로토콜 데이터 유닛 내 상태 값을 호스트에 반환하여 커맨드를 완료하는 다른 제어기를 포함한다.
이미징 디바이스는 카메라를 포함할 수 있고, 커맨드는 카메라 커맨드일 수 있다. 커맨드는 CSI-3 속성에 대응할 수 있다. 프로토콜 데이터 유닛은 get 프로토콜 데이터 유닛일 수 있다. 또한, 호스트 제어기는 커맨드의 속성 식별을 추출할 수 있고, 속성 식별에 기추하여 프로토콜 데이터 유닛을 송신할 수 있다. 이미징 디바이스는 프로토콜 데이터 유닛이 이미징 디바이스에 송신될 때 커맨드를 실행하는 센서를 더 포함할 수 있다. 또한, 이미징 디바이스는 프로토콜 데이터 유닛이 블로킹 없이 이미징 디바이스에 송신될 때 커맨드를 실행하는 센서를 더 포함할 수 있다. 호스트 제어기는 CSI-3 속성 패킷 내에 프로토콜 데이터 유닛을 캡슐화하고 그 이후 이미징 디바이스에 송신할 수 있다. 이미징 디바이스는 이미지 소스를 더 포함할 수 있으며, 응답 프로토콜 데이터 유닛은 이미지 소스로부터 획득된 속성 값을 포함한다. 더욱이, 이미징 디바이스는 이미지 소스를 더 포함할 수 있고, 호스트 제어기는 이미지 소스로부터 속성 값을 획득할 수 있다. 이미지 소스는 이미지 센서, 시스템 온 칩(SOC) 이미징 디바이스, 멀티칩 이미징 디바이스 모듈 또는 이미지 신호 프로세서(ISP)일 수 있다. 이미지 소스는 또한 RAW 이미징 디바이스 센서, 시스템 온 칩 이미징 디바이스, 멀티칩 이미징 디바이스 모듈 또는 이미지 신호 프로세서일 수 있다. 이미징 디바이스 제어기는 통지 프로토콜 데이터 유닛을 호스트에 송신할 수 있고, 통지 프로토콜 데이터 유닛은 커맨드로부터의 속성 식별에 기초한 속성 값을 포함하지 않는다. 추가적으로, 호스트 제어기는 set 프로토콜 데이터 유닛을 이미징 디바이스에 송신할 수 있고, set 프로토콜 데이터 유닛은 커맨드로부터의 속성 식별에 기초하여 이미징 디바이스에 속성 값을 기록한다.
예시 17
장치가 본원에서 설명된다. 장치는 이미징 디바이스 메타데이터를 체계화(organize)하는 블랍에 포함된 이용가능한 블랍을 식별하고, 식별된 블랍에 응답하여 이미징 디바이스 메타데이터를 체계화하는 블랍 내 포함된 개별 블랍을 페치하고, 페치된 개별 블랍을 실행하는 호스트 제어기를 포함한다.
이미징 디바이스 메타데이터는 카메라 메타데이터를 포함할 수 있다. 호스트 제어기는 또한 이용가능한 메타데이터의 디렉토리를 생성할 수 있고, 메타데이터는 다양한 시스템 데이터 스토어 내에 저장될 수 있다. 호스트 제어기는 또한 이미징 디바이스 메타데이터를 인출할 수 있다. 추가적으로, 호스트 제어기는 이미징 디바이스 메타데이터를 실행할 수 있다. 이미징 디바이스 메타데이터의 인출은 이미징 디바이스 메타데이터를 포함하는 데이터 전달의 시작 어드레스를 표시하는 커맨드를 실행하는 것을 포함할 수 있다. 더욱이, 호스트 제어기는 디렉토리를 판독하여 이미징 디바이스 상에 존재하는 메타데이터의 타입, 메타데이터의 길이 및 시작 어드레스, 및 메타데이터의 액세스 속성을 결정할 수 있다. 이미징 디바이스 메타데이터는 변환 코드, 캘리브레이션 데이터, 튜닝 데이터, 이미징 디바이스 펌웨어, 또는 이들의 임의의 조합 중 적어도 하나를 포함할 수 있다. 더욱이, 이미징 디바이스 메타데이터의 인출은 메타데이터를 포함하는 데이터 전달의 시작 어드레스를 표시하는 커맨드를 실행하는 것을 포함하고, 시작 어드레스는 CSI-3 속성 맵핑에 대응한다. 맵핑 디바이스 메타데이터는 카메라 커맨드 세트 변환 코드 블록을 포함할 수 있고, 호스트 제어기는 카메라 커맨드 세트 변환 코드 블록을 로딩하고 제어할 수 있다.
예시 18
장치가 본원에서 설명된다. 장치는 이미징 디바이스 메타데이터를 식별하고, 식별된 이미징 디바이스 메타데이터를 페치하고, 페치된 이미징 디바이스 메타데이터를 실행하는 호스트 제어기를 포함한다.
이미징 디바이스 메타데이터는 카메라 메타데이터를 포함할 수 있다. 추가적으로, 호스트 제어기는 이용가능한 메타데이터의 디렉토리를 생성할 수 있고, 메타데이터는 다양한 시스템 데이터 스토어에 저장된다. 호스트 제어기는 또한 이미징 디바이스 메타데이터를 포함하는 데이터 전달의 시작 어드레스를 표시하는 커맨드를 실행함으로써 이미징 디바이스 메타데이터를 페치할 수 있다. 더욱이, 호스트 제어기는 디렉토리를 판독하여 이미징 디바이스 상에 존재하는 메타데이터의 타입, 메타데이터의 길이 및 시작 어드레스, 메타데이터의 액세스 속성을 결정할 수 있다. 이미징 디바이스 메타데이터는 변환 코드, 캘리브레이션 데이터, 튜닝 데이터, 이미징 디바이스 펌웨어, 또는 이들의 임의의 조합 중 적어도 하나를 포함할 수 있다. 호스트 제어기는 메타데이터를 포함하는 데이터 전달의 시작 어드레스를 표시하는 커맨드를 실행함으로써 이미징 디바이스 메타데이터를 페치할 수 있고, 시작 어드레스는 CSI-3 속성 맵핑에 대응한다. 이미징 디바이스 메타데이터는 카메라 커맨드 세트 변환 코드 블록을 포함할 수 있고, 호스트 제어기는 카메라 커맨드 세트 변환 코드 블록을 로딩하고 개시한다.
본 기술은 다양한 수정 및 대안적인 형태를 허용할 수 있고, 전술된 예시적인 예시들은 예시의 방법으로만 도시되었다. 본 기술은 본원에 개시된 특정 예시들로 제한되지 않는다는 것이 이해되어야 한다. 실제로, 본 기술은 첨부된 특허청구항의 실제 정신 및 범주 내의 대안, 수정, 및 균등물을 모두 포함한다. 또한, 하나의 예시로부터의 요소들 또는 특징들은 임의의 개수의 다른 예시들과 조합하여 사용될 수 있다.
앞서 언급된 예시들 내 특정사항들은 하나 이상의 실시예들 어디에서든 사용될 수 있다는 것이 이해되어야 한다. 예를 들어, 전술된, 컴퓨터 디바이스, 장치, 또는 시스템의 모든 선택적인 피처는 본원에 개시된 방법 또는 컴퓨터 판독가능 매체에 대하여 구현될 수 있다. 더욱이, 흐름도 및/또는 상태도는 실시예들을 설명하기 위해 본원에서 사용될 수 있었으나, 본 발명은 그러한 도표 또는 본원의 대응 설명으로 제한되지 않는다. 예를 들어, 흐름은 각각의 도시된 박스 또는 상태를 통해 또는 본원에 설명되고 도시된 동일한 순서대로 정확히 이동할 필요는 없다.
본 발명은 본원에 열거된 특정 세부사항으로 제한되지 않는다. 실제로, 본 개시물의 이익을 갖는 본 기술분야의 당업자는 앞서 말한 설명 및 도면으로부터 많은 다른 변형들이 본 발명의 범주 내에서 행해질 수 있다는 것을 이해할 것이다. 따라서, 본 발명의 범주를 정의하는 것은 임의의 수정안을 포함하는 다음의 특허청구항이다.

Claims (76)

  1. 하나 이상의 이미징 디바이스 커맨드를 변환하기 위한 방법으로서,
    변환 코드(a translation code)를 인출하는(retrieving) 단계와,
    하나 이상의 이미징 디바이스 커맨드를 수신하는 단계와,
    상기 변환 코드를 실행하여 상기 하나 이상의 이미징 디바이스 커맨드를 이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스로 변환하는 단계와,
    상기 하나 이상의 액세스를 상기 이미징 디바이스에 송신하여 상기 하나 이상의 이미징 디바이스 커맨드에 의해 요청된 거동(behavior)을 야기하는 단계를 포함하는
    이미징 디바이스 커맨드 변환 방법.
  2. 제 1 항에 있어서,
    상기 이미징 디바이스는 카메라를 포함하고,
    상기 하나 이상의 이미징 디바이스 커맨드는 하나 이상의 카메라 커맨드를 포함하는
    이미징 디바이스 커맨드 변환 방법.
  3. 제 1 항에 있어서,
    상기 방법은 호스트 디바이스에서 구현되는
    이미징 디바이스 커맨드 변환 방법.
  4. 제 1 항에 있어서,
    상기 방법은 호스트 소프트웨어에서 구현되는
    이미징 디바이스 커맨드 변환 방법.
  5. 제 1 항에 있어서,
    상기 변환 코드는 고급 변환 코드(high-level translation code)인
    이미징 디바이스 커맨드 변환 방법.
  6. 제 1 항에 있어서,
    상기 변환 코드는 상기 이미징 디바이스 내에 위치된 저장소로부터 인출되는
    이미징 디바이스 커맨드 변환 방법.
  7. 제 6 항에 있어서,
    상기 이미징 디바이스 내에 위치된 저장소는 메타데이터 저장소인
    이미징 디바이스 커맨드 변환 방법.
  8. 제 1 항에 있어서,
    상기 변환 코드는 상기 이미징 디바이스의 외부에 있는 저장소로부터 인출되는
    이미징 디바이스 커맨드 변환 방법.
  9. 제 8 항에 있어서,
    상기 이미징 디바이스의 외부에 있는 저장소는 플랫폼 저장소인
    이미징 디바이스 커맨드 변환 방법.
  10. 제 8 항에 있어서,
    상기 이미징 디바이스의 외부에 있는 저장소는 메타데이터 저장소인
    이미징 디바이스 커맨드 변환 방법.
  11. 제 1 항에 있어서,
    상기 이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스는 CSI-3 속성 Get/Set 패킷을 포함하는
    이미징 디바이스 커맨드 변환 방법.
  12. 제 1 항에 있어서,
    더 복잡한 커맨드는 더 단순한 커맨드로 변환되는
    이미징 디바이스 커맨드 변환 방법.
  13. 제 1 항에 있어서,
    더 복잡한 커맨드는 CSI-3 속성 Get/Set 요청으로 변환되는
    이미징 디바이스 커맨드 변환 방법.
  14. 제 1 항에 있어서,
    상기 수신된 커맨드가 상기 이미징 디바이스에 의해 기본적으로(natively) 지원되는지 여부를 판단하는 단계를 더 포함하는
    이미징 디바이스 커맨드 변환 방법.
  15. 제 1 항에 있어서,
    상기 변환 코드는 인터포저(interposer) 디바이스, 호스트 디바이스, 센서, 또는 이들의 임의의 조합 중 적어도 하나 상에 저장되는
    이미징 디바이스 커맨드 변환 방법.
  16. 제 1 항에 있어서,
    상기 하나 이상의 이미징 디바이스 커맨드는 CSI-3 속성 Get/Set 커맨드로 변환되는
    이미징 디바이스 커맨드 변환 방법.
  17. 제 1 항에 있어서,
    상기 하나 이상의 이미징 디바이스 커맨드는 CSI-2 레지스터 판독/기록 커맨드로 변환되는
    이미징 디바이스 커맨드 변환 방법.
  18. 제 1 항에 있어서,
    상기 하나 이상의 변환된 이미징 디바이스 커맨드는 상기 이미징 디바이스에 의해 기본적으로 지원되지 않는 커맨드인
    이미징 디바이스 커맨드 변환 방법.
  19. 하나 이상의 이미징 디바이스 커맨드를 변환하기 위한 장치로서,
    변환 엔진을 포함하고,
    상기 변환 엔진은,
    변환 코드를 인출하고,
    하나 이상의 이미징 디바이스 커맨드를 수신하고,
    상기 변환 코드를 실행하여 상기 하나 이상의 이미징 디바이스 커맨드를 이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스로 변환하고,
    상기 하나 이상의 액세스를 상기 이미징 디바이스에 송신하여 상기 하나 이상의 이미징 디바이스 커맨드에 의해 요청된 거동을 야기하는
    이미징 디바이스 커맨드 변환 장치.
  20. 제 19 항에 있어서,
    상기 이미징 디바이스는 카메라를 포함하고,
    상기 하나 이상의 이미징 디바이스 커맨드는 하나 이상의 카메라 커맨드를 포함하는
    이미징 디바이스 커맨드 변환 장치.
  21. 제 19 항에 있어서,
    상기 변환 엔진은 호스트 디바이스 내에 포함되는
    이미징 디바이스 커맨드 변환 장치.
  22. 제 19 항에 있어서,
    상기 변환 엔진은 호스트 소프트웨어를 포함하는
    이미징 디바이스 커맨드 변환 장치.
  23. 제 19 항에 있어서,
    상기 변환 코드는 고급 변환 코드인
    이미징 디바이스 커맨드 변환 장치.
  24. 제 19 항에 있어서,
    상기 변환 엔진은 상기 이미징 디바이스 내에 위치된 저장소로부터 상기 변환 코드를 인출하는
    이미징 디바이스 커맨드 변환 장치.
  25. 제 24 항에 있어서,
    상기 이미징 디바이스 내에 위치된 저장소는 메타데이터 저장소인
    이미징 디바이스 커맨드 변환 장치.
  26. 제 19 항에 있어서,
    상기 변환 엔진은 상기 이미징 디바이스의 외부에 있는 저장소로부터 상기 변환 코드를 인출하는
    이미징 디바이스 커맨드 변환 장치.
  27. 제 26 항에 있어서,
    상기 이미징 디바이스의 외부에 있는 저장소는 플랫폼 저장소인
    이미징 디바이스 커맨드 변환 장치.
  28. 제 26 항에 있어서,
    상기 이미징 디바이스의 외부에 있는 저장소는 메타데이터 저장소인
    이미징 디바이스 커맨드 변환 장치.
  29. 제 19 항에 있어서,
    상기 이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스는 CSI-3 속성 Get/Set 패킷을 포함하는
    이미징 디바이스 커맨드 변환 장치.
  30. 제 19 항에 있어서,
    상기 변환 엔진은 더 복잡한 커맨드를 더 단순한 커맨드로 변환하는
    이미징 디바이스 커맨드 변환 장치.
  31. 제 19 항에 있어서,
    상기 변환 엔진은 더 복잡한 커맨드를 CSI-3 속성 Get/Set 요청으로 변환하는
    이미징 디바이스 커맨드 변환 장치.
  32. 제 19 항에 있어서,
    상기 변환 엔진은 상기 수신된 커맨드가 상기 이미징 디바이스에 의해 기본적으로 지원되는지 여부를 판단하는
    이미징 디바이스 커맨드 변환 장치.
  33. 제 19 항에 있어서,
    상기 변환 코드는 인터포저 디바이스, 호스트 디바이스, 센서, 또는 이들의 임의의 조합 중 적어도 하나 상에 저장되는
    이미징 디바이스 커맨드 변환 장치.
  34. 제 19 항에 있어서,
    상기 변환 엔진은 상기 하나 이상의 이미징 디바이스 커맨드를 CSI-3 속성 Get/Set 커맨드로 변환하는
    이미징 디바이스 커맨드 변환 장치.
  35. 제 19 항에 있어서,
    상기 변환 엔진은 상기 하나 이상의 이미징 디바이스 커맨드를 CSI-2 레지스터 판독/기록 커맨드로 변환하는
    이미징 디바이스 커맨드 변환 장치.
  36. 제 19 항에 있어서,
    상기 하나 이상의 변환된 이미징 디바이스 커맨드는 상기 이미징 디바이스에 의해 기본적으로 지원되지 않는 커맨드인
    이미징 디바이스 커맨드 변환 장치.
  37. 제 19 항에 있어서,
    상기 변환 엔진은 호스트 내에 포함되고, 상기 장치는 상기 이미징 디바이스를 더 포함하는
    이미징 디바이스 커맨드 변환 장치.
  38. 제 19 항에 있어서,
    상기 변환 코드를 저장하는 저장 디바이스를 더 포함하는
    이미징 디바이스 커맨드 변환 장치.
  39. 이미징 디바이스를 포함하는 장치로서,
    상기 이미징 디바이스는, 상기 이미징 디바이스가 핸들링할 수 있는 그리고 하나 이상의 이미징 디바이스 커맨드에 의해 요청된 거동을 수행할 수 있는 하나 이상의 액세스를 수신하고,
    상기 하나 이상의 액세스는 상기 하나 이상의 이미징 디바이스 커맨드의 변환에 대응하고, 상기 변환은 변환 코드를 사용하여 구현되는
    장치.
  40. 제 39 항에 있어서,
    상기 이미징 디바이스는 카메라를 포함하고,
    상기 하나 이상의 이미징 디바이스 커맨드는 하나 이상의 카메라 커맨드를 포함하는
    장치.
  41. 제 39 항에 있어서,
    상기 하나 이상의 이미징 디바이스 커맨드를 상기 하나 이상의 액세스로 변환하는 변환 엔진을 더 포함하는
    장치.
  42. 제 41 항에 있어서,
    상기 변환 엔진은 호스트 소프트웨어를 포함하는
    장치.
  43. 제 39 항에 있어서,
    상기 변환 코드는 고급 변환 코드인
    장치.
  44. 제 42 항에 있어서,
    상기 변환 엔진은 상기 이미징 디바이스 내에 위치된 저장소로부터 상기 변환 코드를 인출하는
    장치.
  45. 제 39 항에 있어서,
    상기 이미징 디바이스는 상기 변환 코드를 저장하는 저장소를 더 포함하는
    장치.
  46. 제 45 항에 있어서,
    상기 저장소는 메타데이터 저장소인
    장치.
  47. 제 42 항에 있어서,
    상기 변환 엔진은 상기 이미징 디바이스의 외부에 있는 저장소로부터 상기 변환 코드를 인출하는
    장치.
  48. 제 47 항에 있어서,
    상기 이미징 디바이스의 외부에 있는 저장소는 플랫폼 저장소인
    장치.
  49. 제 47 항에 있어서,
    상기 이미징 디바이스의 외부에 있는 저장소는 메타데이터 저장소인
    장치.
  50. 제 39 항에 있어서,
    상기 이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스는 CSI-3 속성 Get/Set 패킷을 포함하는
    장치.
  51. 제 42 항에 있어서,
    상기 변환 엔진은 더 복잡한 커맨드를 더 단순한 커맨드로 변환하는
    장치.
  52. 제 41 항에 있어서,
    상기 변환 엔진은 더 복잡한 커맨드를 CSI-3 속성 Get/Set 요청으로 변환하는
    장치.
  53. 제 41 항에 있어서,
    상기 변환 엔진은 상기 하나 이상의 이미징 디바이스 커맨드가 상기 이미징 디바이스에 의해 기본적으로 지원되는지 여부를 판단하는
    장치.
  54. 제 39 항에 있어서,
    상기 변환 코드는 인터포저 디바이스, 호스트 디바이스, 센서, 또는 이들의 임의의 조합 중 적어도 하나 상에 저장되는
    장치.
  55. 제 41 항에 있어서,
    상기 변환 엔진은 상기 하나 이상의 이미징 디바이스 커맨드를 CSI-3 속성 Get/Set 커맨드로 변환하는
    장치.
  56. 제 41 항에 있어서,
    상기 변환 엔진은 상기 하나 이상의 이미징 디바이스 커맨드를 CSI-2 레지스터 판독/기록 커맨드로 변환하는
    장치.
  57. 제 39 항에 있어서,
    상기 하나 이상의 변환된 이미징 디바이스 커맨드는 상기 이미징 디바이스에 의해 기본적으로 지원되지 않는 커맨드인
    장치.
  58. 제 39 항에 있어서,
    상기 변환 코드를 저장하는 저장 디바이스를 더 포함하는
    장치.
  59. 컴퓨터 실행가능 명령어를 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 명령어는 컴퓨터로 하여금,
    변환 코드를 인출하게 하고,
    하나 이상의 이미징 디바이스 커맨드를 수신하게 하고,
    상기 변환 코드를 실행하여 상기 하나 이상의 이미징 디바이스 커맨드를 이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스로 변환하게 하고,
    상기 하나 이상의 액세스를 상기 이미징 디바이스에 송신하여 상기 하나 이상의 이미징 디바이스 커맨드에 의해 요청된 거동을 야기하게 하는
    컴퓨터 판독가능 저장 매체.
  60. 제 59 항에 있어서,
    상기 이미징 디바이스는 카메라를 포함하고,
    상기 하나 이상의 이미징 디바이스 커맨드는 하나 이상의 카메라 커맨드를 포함하는
    컴퓨터 판독가능 저장 매체.
  61. 제 59 항에 있어서,
    상기 변환 코드는 고급 변환 코드인
    컴퓨터 판독가능 저장 매체.
  62. 제 59 항에 있어서,
    상기 이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스는 CSI-3 속성 Get/Set 패킷을 포함하는
    컴퓨터 판독가능 저장 매체.
  63. 제 59 항에 있어서,
    더 복잡한 커맨드는 더 단순한 커맨드로 변환되는
    컴퓨터 판독가능 저장 매체.
  64. 제 59 항에 있어서,
    더 복잡한 커맨드는 CSI-3 속성 Get/Set 요청으로 변환되는
    컴퓨터 판독가능 저장 매체.
  65. 제 59 항에 있어서,
    상기 명령어는 또한, 컴퓨터로 하여금 상기 수신된 커맨드가 상기 이미징 디바이스에 의해 기본적으로 지원되는지 여부를 판단하게 하는
    컴퓨터 판독가능 저장 매체.
  66. 제 59 항에 있어서,
    상기 명령어는 또한, 컴퓨터로 하여금 상기 하나 이상의 이미징 디바이스 커맨드를 CSI-3 속성 Get/Set 커맨드로 변환하게 하는
    컴퓨터 판독가능 저장 매체.
  67. 제 59 항에 있어서,
    상기 명령어는 또한, 컴퓨터로 하여금 상기 하나 이상의 이미징 디바이스 커맨드를 CSI-2 레지스터 판독/기록 커맨드로 변환하게 하는
    컴퓨터 판독가능 저장 매체.
  68. 제 59 항에 있어서,
    상기 하나 이상의 변환된 이미징 디바이스 커맨드는 상기 이미징 디바이스에 의해 기본적으로 지원되지 않는 커맨드인
    컴퓨터 판독가능 저장 매체.
  69. 컴퓨터 실행가능 명령어를 포함하는 컴퓨터 판독가능 저장 매체로서,
    상기 명령어는 컴퓨터로 하여금,
    하나 이상의 이미징 디바이스 커맨드를 이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스로 변환하게 하는
    컴퓨터 판독가능 저장 매체.
  70. 제 69 항에 있어서,
    상기 이미징 디바이스는 카메라를 포함하고,
    상기 하나 이상의 이미징 디바이스 커맨드는 하나 이상의 카메라 커맨드를 포함하는
    컴퓨터 판독가능 저장 매체.
  71. 제 69 항에 있어서,
    상기 이미징 디바이스가 핸들링할 수 있는 하나 이상의 액세스는 CSI-3 속성 Get/Set 패킷을 포함하는
    컴퓨터 판독가능 저장 매체.
  72. 제 69 항에 있어서,
    상기 명령어는 또한, 컴퓨터로 하여금 더 복잡한 커맨드를 더 단순한 커맨드로 변환하게 하는
    컴퓨터 판독가능 저장 매체.
  73. 제 69 항에 있어서,
    상기 명령어는 또한, 컴퓨터로 하여금 더 복잡한 커맨드를 CSI-3 속성 Get/Set 요청으로 변환하게 하는
    컴퓨터 판독가능 저장 매체.
  74. 제 69 항에 있어서,
    상기 명령어는 또한, 컴퓨터로 하여금 수신된 커맨드가 상기 이미징 디바이스에 의해 기본적으로 지원되는지 여부를 판단하게 하는
    컴퓨터 판독가능 저장 매체.
  75. 제 69 항에 있어서,
    상기 명령어는 또한, 컴퓨터로 하여금 상기 하나 이상의 이미징 디바이스 커맨드를 CSI-3 속성 Get/Set 커맨드로 변환하게 하는
    컴퓨터 판독가능 저장 매체.
  76. 제 69 항에 있어서,
    상기 명령어는 또한, 컴퓨터로 하여금 상기 하나 이상의 이미징 디바이스 커맨드를 CSI-2 레지스터 판독/기록 커맨드로 변환하게 하는
    컴퓨터 판독가능 저장 매체.
KR1020157031290A 2012-12-27 2013-06-13 카메라 커맨드 세트 호스트 커맨드 변환 KR101702801B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/728,921 2012-12-27
US13/728,921 US9235260B2 (en) 2012-12-27 2012-12-27 Camera command set host command translation
PCT/US2013/045660 WO2014105120A2 (en) 2012-12-27 2013-06-13 Camera command set host command translation

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020157014066A Division KR101645242B1 (ko) 2012-12-27 2013-06-13 카메라 커맨드 세트 호스트 커맨드 변환

Publications (2)

Publication Number Publication Date
KR20150129049A KR20150129049A (ko) 2015-11-18
KR101702801B1 true KR101702801B1 (ko) 2017-02-22

Family

ID=51016785

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020157014066A KR101645242B1 (ko) 2012-12-27 2013-06-13 카메라 커맨드 세트 호스트 커맨드 변환
KR1020157031290A KR101702801B1 (ko) 2012-12-27 2013-06-13 카메라 커맨드 세트 호스트 커맨드 변환

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020157014066A KR101645242B1 (ko) 2012-12-27 2013-06-13 카메라 커맨드 세트 호스트 커맨드 변환

Country Status (6)

Country Link
US (3) US9235260B2 (ko)
EP (2) EP2939433A4 (ko)
JP (2) JP2016507920A (ko)
KR (2) KR101645242B1 (ko)
CN (2) CN105282372B (ko)
WO (1) WO2014105120A2 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10419541B2 (en) 2008-11-26 2019-09-17 Free Stream Media Corp. Remotely control devices over a network without authentication or registration
US10631068B2 (en) 2008-11-26 2020-04-21 Free Stream Media Corp. Content exposure attribution based on renderings of related content across multiple devices
US10880340B2 (en) 2008-11-26 2020-12-29 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US10567823B2 (en) 2008-11-26 2020-02-18 Free Stream Media Corp. Relevant advertisement generation based on a user operating a client device communicatively coupled with a networked media device
US9519772B2 (en) 2008-11-26 2016-12-13 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US10977693B2 (en) 2008-11-26 2021-04-13 Free Stream Media Corp. Association of content identifier of audio-visual data with additional data through capture infrastructure
US9386356B2 (en) 2008-11-26 2016-07-05 Free Stream Media Corp. Targeting with television audience data across multiple screens
US9026668B2 (en) 2012-05-26 2015-05-05 Free Stream Media Corp. Real-time and retargeted advertising on multiple screens of a user watching television
US9154942B2 (en) 2008-11-26 2015-10-06 Free Stream Media Corp. Zero configuration communication between a browser and a networked media device
US8180891B1 (en) 2008-11-26 2012-05-15 Free Stream Media Corp. Discovery, access control, and communication with networked services from within a security sandbox
US9961388B2 (en) 2008-11-26 2018-05-01 David Harrison Exposure of public internet protocol addresses in an advertising exchange server to improve relevancy of advertisements
US10334324B2 (en) 2008-11-26 2019-06-25 Free Stream Media Corp. Relevant advertisement generation based on a user operating a client device communicatively coupled with a networked media device
US9986279B2 (en) 2008-11-26 2018-05-29 Free Stream Media Corp. Discovery, access control, and communication with networked services
US9235260B2 (en) 2012-12-27 2016-01-12 Intel Corporation Camera command set host command translation
US9244694B2 (en) 2012-12-27 2016-01-26 Intel Corporation Executing a command within a transport mechanism based on a get and set architecture
US20150049101A1 (en) * 2013-08-16 2015-02-19 Nobuyuki Suzuki Display adaptation system for mipi display serial interface applications
KR101798947B1 (ko) * 2016-06-01 2017-11-20 주식회사 리딩유아이 터치 감지 장치
TWI645297B (zh) * 2017-05-26 2018-12-21 聚晶半導體股份有限公司 資料傳輸系統
JP7241551B2 (ja) * 2019-01-22 2023-03-17 富士通株式会社 伝送装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003230038A (ja) 2002-01-02 2003-08-15 Hewlett Packard Co <Hp> デジタルカメラのための代用品による遠隔制御システムおよび方法
JP2006222622A (ja) 2005-02-09 2006-08-24 Ntt Comware Corp 入力制御システムおよび制御装置、制御プログラム
JP2010166537A (ja) 2009-01-14 2010-07-29 Yahoo Japan Corp メタデータを活用するデジタルビデオ受信装置、携帯情報機器、番組関連情報活用システム及びそれらの制御方法

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0556484A (ja) * 1991-08-22 1993-03-05 Fujitsu General Ltd マルチリモコンシステム
JPH10174118A (ja) * 1996-12-10 1998-06-26 Canon Inc 撮像システム
JP3656438B2 (ja) * 1998-11-02 2005-06-08 松下電器産業株式会社 高速画像入力変換装置
US6154210A (en) * 1998-11-25 2000-11-28 Flashpoint Technology, Inc. Method and system for implementing button interface compatibility in touch-screen equipped digital imaging device
US20020170039A1 (en) 2001-02-22 2002-11-14 Kovacevic Branko D. System for operating system and platform independent digital stream handling and method thereof
JP2003228968A (ja) * 2002-01-30 2003-08-15 Matsushita Electric Ind Co Ltd 機器制御システム、被制御機器、被制御機器動作モード変更方法、プログラム、および媒体
US7491367B2 (en) 2002-06-04 2009-02-17 Applera Corporation System and method for providing a standardized state interface for instrumentation
US7130424B2 (en) * 2002-12-19 2006-10-31 Qualcomm, Inc. Systems and methods for utilizing an application from a native portable device within a non-native communications network
JP4127053B2 (ja) * 2003-01-10 2008-07-30 ソニー株式会社 電子機器制御システム及び電子機器制御方法
JP2004333665A (ja) * 2003-05-02 2004-11-25 Sanyo Electric Co Ltd 遠隔操作可能な電子機器
JP2005260648A (ja) * 2004-03-12 2005-09-22 Matsushita Electric Ind Co Ltd 記録再生装置、およびその制御システム
KR100736930B1 (ko) * 2005-02-07 2007-07-10 삼성전자주식회사 홈서버, 상기 홈서버를 포함하는 컨텐츠 전송 시스템, 통합미디어 재생 프로그램을 이용한 컨텐츠 재생방법, 미디어포맷 변환 기능을 이용한 컨텐츠 전송방법 그리고 컨텐츠전송 여부 판별방법
JP5313430B2 (ja) * 2005-08-17 2013-10-09 日本電気株式会社 変換サーバ、携帯端末装置、データ変換システム、データ変換方法およびプログラム
JP5170961B2 (ja) * 2006-02-01 2013-03-27 ソニー株式会社 画像処理システム、画像処理装置および方法、プログラム、並びに記録媒体
JP4187037B2 (ja) * 2006-10-12 2008-11-26 船井電機株式会社 遠隔操作システム
EP1981245A1 (en) * 2007-04-13 2008-10-15 Liconic Ag Method and product for controlling laboratory equipment
JP2008306253A (ja) * 2007-06-05 2008-12-18 Panasonic Corp 携帯受信端末及び機器制御システム
US20120075469A1 (en) * 2007-07-25 2012-03-29 Neo It Solutions Ltd. Internet visual surveillance and management technology for telecommunications, internet, cellular and other communications companies
US9052934B2 (en) * 2008-06-30 2015-06-09 Fluke Corporation Remote command interpreter
US8180891B1 (en) * 2008-11-26 2012-05-15 Free Stream Media Corp. Discovery, access control, and communication with networked services from within a security sandbox
US8386649B2 (en) 2009-09-16 2013-02-26 EchoStar Technologies, L.L.C. User input command relaying
US20110225606A1 (en) * 2010-03-09 2011-09-15 Microsoft Corporation Television Content Metadata
US8477204B2 (en) 2010-03-16 2013-07-02 Sony Corporation Camera image editing using a television
JP5016710B2 (ja) * 2010-08-19 2012-09-05 シャープ株式会社 無線伝送システム
US20120084452A1 (en) 2010-10-01 2012-04-05 Microsoft Corporation Remote control command translation
US8849054B2 (en) * 2010-12-23 2014-09-30 Samsung Electronics Co., Ltd Digital image stabilization
US8659667B2 (en) * 2011-08-29 2014-02-25 Panasonic Corporation Recipe based real-time assistance for digital image capture and other consumer electronics devices
US8780219B2 (en) * 2012-07-23 2014-07-15 Wooblue, Inc. Wireless viewing and control interface for imaging devices
US9235260B2 (en) 2012-12-27 2016-01-12 Intel Corporation Camera command set host command translation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003230038A (ja) 2002-01-02 2003-08-15 Hewlett Packard Co <Hp> デジタルカメラのための代用品による遠隔制御システムおよび方法
JP2006222622A (ja) 2005-02-09 2006-08-24 Ntt Comware Corp 入力制御システムおよび制御装置、制御プログラム
JP2010166537A (ja) 2009-01-14 2010-07-29 Yahoo Japan Corp メタデータを活用するデジタルビデオ受信装置、携帯情報機器、番組関連情報活用システム及びそれらの制御方法

Also Published As

Publication number Publication date
CN104798376A (zh) 2015-07-22
JP2016040728A (ja) 2016-03-24
US9201492B2 (en) 2015-12-01
WO2014105120A2 (en) 2014-07-03
WO2014105120A3 (en) 2014-12-18
CN105282372A (zh) 2016-01-27
CN104798376B (zh) 2019-06-14
JP2016507920A (ja) 2016-03-10
EP2939433A2 (en) 2015-11-04
EP3037963A1 (en) 2016-06-29
CN105282372B (zh) 2019-10-18
KR20150129049A (ko) 2015-11-18
US20160088220A1 (en) 2016-03-24
US20140184842A1 (en) 2014-07-03
EP2939433A4 (en) 2016-06-29
US9906713B2 (en) 2018-02-27
US9235260B2 (en) 2016-01-12
KR101645242B1 (ko) 2016-08-03
KR20150079884A (ko) 2015-07-08
US20140184827A1 (en) 2014-07-03

Similar Documents

Publication Publication Date Title
KR101702801B1 (ko) 카메라 커맨드 세트 호스트 커맨드 변환
US9667849B2 (en) Enabling a metadata storage subsystem
US9600296B2 (en) Executing a command within a transport mechanism based on a get and set architecture
US11126322B2 (en) Electronic device and method for sharing image with external device using image link information

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20200103

Year of fee payment: 4