KR20180023326A - 전자 장치 및 이미지 센서로부터 획득된 이미지를 어플리케이션으로 전달하기 위한 방법 - Google Patents

전자 장치 및 이미지 센서로부터 획득된 이미지를 어플리케이션으로 전달하기 위한 방법 Download PDF

Info

Publication number
KR20180023326A
KR20180023326A KR1020160108453A KR20160108453A KR20180023326A KR 20180023326 A KR20180023326 A KR 20180023326A KR 1020160108453 A KR1020160108453 A KR 1020160108453A KR 20160108453 A KR20160108453 A KR 20160108453A KR 20180023326 A KR20180023326 A KR 20180023326A
Authority
KR
South Korea
Prior art keywords
application
image
camera
processor
request
Prior art date
Application number
KR1020160108453A
Other languages
English (en)
Inventor
구자민
김형우
박지현
유승혁
이동규
정진홍
이경희
이주영
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020160108453A priority Critical patent/KR20180023326A/ko
Priority to US15/681,636 priority patent/US20180063361A1/en
Priority to CN201710727416.7A priority patent/CN107786794B/zh
Priority to EP17187806.9A priority patent/EP3287866A1/en
Publication of KR20180023326A publication Critical patent/KR20180023326A/ko

Links

Images

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/21Intermediate information storage
    • H04N1/2104Intermediate information storage for one or a few pictures
    • H04N1/2112Intermediate information storage for one or a few pictures using still video cameras
    • H04N1/2137Intermediate information storage for one or a few pictures using still video cameras with temporary storage before final recording, e.g. in a frame buffer
    • H04N1/2141Intermediate information storage for one or a few pictures using still video cameras with temporary storage before final recording, e.g. in a frame buffer in a multi-frame buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/50Constructional details
    • H04N23/54Mounting of pick-up tubes, electronic image sensors, deviation or focusing coils
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B7/00Mountings, adjusting means, or light-tight connections, for optical elements
    • G02B7/02Mountings, adjusting means, or light-tight connections, for optical elements for lenses
    • G02B7/04Mountings, adjusting means, or light-tight connections, for optical elements for lenses with mechanism for focusing or varying magnification
    • G02B7/08Mountings, adjusting means, or light-tight connections, for optical elements for lenses with mechanism for focusing or varying magnification adapted to co-operate with a remote control mechanism
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/02Constructional features of telephone sets
    • H04M1/0202Portable telephone sets, e.g. cordless phones, mobile phones or bar type handsets
    • H04M1/026Details of the structure or mounting of specific components
    • H04M1/0264Details of the structure or mounting of specific components for a camera module assembly
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/45Cameras or camera modules comprising electronic image sensors; Control thereof for generating image signals from two or more image sensors being of different type or operating in different modes, e.g. with a CMOS sensor for moving images in combination with a charge-coupled device [CCD] for still images
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/50Constructional details
    • H04N23/55Optical parts specially adapted for electronic image sensors; Mounting thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/57Mechanical or electrical details of cameras or camera modules specially adapted for being embedded in other devices
    • H04N5/2257
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • H04N5/77Interface circuits between an apparatus for recording and another apparatus between a recording apparatus and a television camera
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2101/00Still video cameras

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Optics & Photonics (AREA)
  • Human Computer Interaction (AREA)
  • Telephone Function (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

본 발명의 다양한 실시예에 따른 전자장치는, 하나 이상의 렌즈들을 포함하는 카메라 모듈; 상기 카메라 모듈을 통하여 획득된 이미지를 표시할 수 있는 디스플레이; 상기 카메라 모듈 및 상기 디스플레이와 전기적으로 연결된 프로세서; 및 상기 프로세서와 전기적으로 연결된 메모리를 포함하고, 상기 메모리는, 실행 시에, 상기 프로세서가, 제1어플리케이션의 카메라 서비스 요청에 응답하여, 상기 카메라 모듈을 통하여 획득된 하나 이상의 이미지들 가운데 적어도 일부를 상기 제1어플리케이션으로 제공하고, 상기 제1어플리케이션으로 상기 적어도 일부를 제공하는 동안, 제2어플리케이션으로부터 카메라 서비스 요청을 수신하는 경우, 상기 제1어플리케이션 및 상기 제2어플리케이션으로 상기 하나 이상의 이미지들을 분배하도록 하는 인스트럭션(instruction)들을 저장할 수 있다.
그 외에 다양한 실시예들이 가능하다.

Description

전자 장치 및 이미지 센서로부터 획득된 이미지를 어플리케이션으로 전달하기 위한 방법 {ELECTRONIC DEVICE AND METHOD FOR PROVIDING IMAGE ACQUIRED BY THE IMAGE SENSOR TO APPLICATION}
본 실시예는 전자 장치에 관한 것이며, 예를 들어, 이미지 센서를 구비하여 이미지의 획득이 가능하고, 획득된 이미지를 적어도 하나의 어플리케이션을 통해 처리할 수 있는 전자 장치에 관한 것이다.
이동통신 기술 및 프로세서 기술의 발달에 따라 휴대용 단말 장치(이하, 전자 장치)는 종래의 통화 기능에서 나아가 다양한 어플리케이션들을 구현할 수 있게 되었다. 예를 들어, 인터넷 브라우저, 게임, 계산기 등 다양한 어플리케이션들이 개발되어 전자 장치 상에서 활용되고 있다. 또한, 전자 장치는 카메라 모듈을 구비하여 이미지를 획득하고, 획득된 이미지들을 어플리케이션에 제공하며, 어플리케이션은 이미지를 디스플레이 상에 출력하거나, 이미지의 편집, 오브젝트 인식 등 다양한 기능을 수행할 수 있다.
전자 장치 상에서 카메라 기능을 사용하는 다수의 어플리케이션이 설치되고, 다수의 어플리케이션들이 동시에 실행될 수 있다. 예를 들어, 일반적인 촬영 기능을 수행하는 어플리케이션과 줌(zoom) 촬영 기능을 수행하는 어플리케이션을 동시에 실행하여, 디스플레이에 일반 촬영 화면과 줌 촬영 화면을 동시에 표시하여 촬영을 수행하고자 할 수 있다. 또한, 전자 장치가 자율적으로 이동 가능한 경우 자율 이동을 위한 주변 인식 어플리케이션, 베이비 케어 어플리케이션, 사용자 등 객체 인식 어플리케이션 등 다양한 형태의 어플리케이션을 동시에 활용할 필요가 있다.
상기와 같이, 카메라 기능을 사용하는 다수의 어플리케이션들을 동시에 실행하기 위해서는, 카메라에서 촬영된 이미지가 동시에 다수의 어플리케이션들에 제공되어야만 한다.
종래의 전자 장치의 경우, 하나의 어플리케이션이 프레임워크를 통해 카메라 모듈에 액세스 하여 이미지를 획득하는 경우, 다른 어플리케이션이 카메라 모듈에 액세스 하는 것이 불가능 하였다. 이에 따라, 카메라 기능을 사용하는 복수의 어플리케이션을 멀티 태스킹을 통해 동시 실행하여 그 의도를 달성할 수 없었다.
본 발명의 다양한 실시예에 따른 전자장치는, 하나 이상의 렌즈들을 포함하는 카메라 모듈; 상기 카메라 모듈을 통하여 획득된 이미지를 표시할 수 있는 디스플레이; 상기 카메라 모듈 및 상기 디스플레이와 전기적으로 연결된 프로세서; 및 상기 프로세서와 전기적으로 연결된 메모리를 포함하고, 상기 메모리는, 실행 시에, 상기 프로세서가, 제1어플리케이션의 카메라 서비스 요청에 응답하여, 상기 카메라 모듈을 통하여 획득된 하나 이상의 이미지들 가운데 적어도 일부를 상기 제1어플리케이션으로 제공하고, 상기 제1어플리케이션으로 상기 적어도 일부를 제공하는 동안, 제2어플리케이션으로부터 카메라 서비스 요청을 수신하는 경우, 상기 제1어플리케이션 및 상기 제2어플리케이션으로 상기 하나 이상의 이미지들을 분배하도록 하는 인스트럭션(instruction)들을 저장할 수 있다.
본 발명의 다양한 실시예에 따른 전자장치는, 복수의 면들을 포함하는 하우징; 상기 하우징의 적어도 일 면을 통해 노출되고, 이미지 데이터를 생성하도록 구성된 적어도 하나의 이미지 센서; 상기 하우징 내에 배치되는 무선 통신 회로; 상기 하우징 내에 배치되는 휘발성 메모리; 상기 하우징 내에 배치되고, 상기 무선 통신 회로 및 상기 휘발성 메모리와 전기적으로 연결되는 적어도 하나의 프로세서; 및 상기 프로세서와 전기적으로 연결되는 비휘발성 메모리를 포함하며, 상기 비휘발성 메모리는, 제1어플리케이션 프로그램 또는 제2어플리케이션 프로그램의 적어도 일부를 저장하고, 실행 시에, 상기 프로세서가, 상기 제1어플리케이션 프로그램으로부터 상기 이미지 센서로부터 상기 이미지 데이터의 적어도 제1부분과 연관된 제1요청을 수신하고, 상기 제2어플리케이션 프로그램으로부터 상기 이미지 센서로부터 상기 이미지 데이터의 적어도 제2부분과 연관된 제2요청을 수신하고, 상기 제1요청의 수신 후 상기 제1요청을 처리하고, 상기 제2요청의 수신 후, 상기 제1요청의 처리를 종료하지 않고, 상기 제1요청의 처리와 동시, 순차 또는 교차하여 상기 제2요청을 처리하도록 하는 인스트럭션(instruction)들을 저장할 수 있다.
본 발명의 다양한 실시예에 따른 전자장치는, 하나 이상의 렌즈들을 포함하는 카메라 모듈; 상기 카메라 모듈을 통하여 획득된 이미지를 표시할 수 있는 디스플레이; 상기 카메라 모듈 및 상기 디스플레이와 전기적으로 연결된 프로세서; 및 상기 프로세서와 전기적으로 연결된 메모리를 포함하고, 상기 메모리는, 실행 시에, 상기 프로세서가, 제1어플리케이션 및 제2어플리케이션을 실행하고, 상기 제1어플리케이션 및 상기 제2어플리케이션의 카메라 서비스 요청에 응답하여, 이미지 촬영 기능을 제어할 수 있는 GUI를 제공하고, 상기 GUI에 대한 입력에 응답하여, 적어도 하나의 이미지를 획득하고, 상기 획득된 이미지 중 적어도 일부를 상기 제1어플리케이션으로 제공하고, 적어도 다른 일부를 상기 제2어플리케이션으로 제공하도록 하는 인스트럭션들을 저장할 수 있다.
상술한 본 발명에 따르면, 복수의 어플리케이션을 통해 카메라 서비스를 제공할 수 있는 전자 장치 및 이미지 센서로부터 획득된 이미지를 어플리케이션으로 전달하기 위한 방법을 제공할 수 있다.
도 1은 다양한 실시예에서의 네트워크 환경 내의 전자 장치를 도시한 것이다.
도 2는 다양한 실시예에 따른 전자 장치의 블록도이다.
도 3 은 다양한 실시예에 따른 프로그램 모듈의 블록도이다.
도 4는 복수의 어플리케이션 실행에 따라 전자 장치에 표시된 화면의 일 예를 도시한 것이다.
도 5는 본 발명의 다양한 실시예에 따른 전자 장치의 블록도이다.
도 6a 내지 6f는 전자 장치의 카메라에서 생성된 이미지가 디스플레이로 전달되는 과정을 도시한 것이다.
도 7a 및 7b는 전자 장치의 카메라에서 생성된 이미지를 어플리케이션으로 전달하기 위한 과정을 도시한 것이다.
도 8a는 본 발명의 다양한 실시예에 따른 전자 장치의 이미지 제공 방법의 흐름도이다.
도 8b은 본 발명의 다양한 실시예에 따른 이미지 분배 방법을 도시한 것이다.
도 9a 내지 9d는 본 발명의 다양한 실시예에 따라, 각 어플리케이션이 카메라에 이미지 전송을 요청하기 위한 과정을 도시한 것이다.
도 10a 내지 10i는 본 발명의 다양한 실시예에 따라, 카메라에서 생성된 이미지를 각 어플리케이션으로 분배하는 방법을 도시한 것이다.
도 11은 본 발명의 다양한 실시예에 따라, global UX가 표시된 화면의 일 예를 도시한 것이다.
도 12a 및 12b는 본 발명의 다양한 실시예에 따라, global UX의 입력에 따른 신호 처리 흐름을 도시한 것이다.
도 13a 내지 13c는 본 발명의 다양한 실시예에 따른 이미지 분배 방법을 도시한 것이다.
이하, 본 문서의 다양한 실시예들이 첨부된 도면을 참조하여 기재된다. 실시예 및 이에 사용된 용어들은 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 및/또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 본 문서에서, "A 또는 B" 또는 "A 및/또는 B 중 적어도 하나" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제 1," "제 2," "첫째," 또는 "둘째,"등의 표현들은 해당 구성요소들을, 순서 또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다. 어떤(예: 제 1) 구성요소가 다른(예: 제 2) 구성요소에 "(기능적으로 또는 통신적으로) 연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제 3 구성요소)를 통하여 연결될 수 있다.
본 문서에서, "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, 하드웨어적 또는 소프트웨어적으로 "~에 적합한," "~하는 능력을 가지는," "~하도록 변경된," "~하도록 만들어진," "~를 할 수 있는," 또는 또는 "~하도록 설계된"과 상호 호환적으로(interchangeably) 사용될 수 있다. 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(예: CPU 또는 application processor)를 의미할 수 있다.
본 문서의 다양한 실시예들에 따른 전자 장치는, 예를 들면, 스마트폰, 태블릿 PC, 이동 전화기, 영상 전화기, 전자책 리더기, 데스크탑 PC, 랩탑 PC, 넷북 컴퓨터, 워크스테이션, 서버, PDA, PMP(portable multimedia player), MP3 플레이어, 의료기기, 카메라, 또는 웨어러블 장치 중 적어도 하나를 포함할 수 있다. 웨어러블 장치는 액세서리형(예: 시계, 반지, 팔찌, 발찌, 목걸이, 안경, 콘택트 렌즈, 또는 머리 착용형 장치(head-mounted-device(HMD)), 직물 또는 의류 일체형(예: 전자 의복), 신체 부착형(예: 스킨 패드 또는 문신), 또는 생체 이식형 회로 중 적어도 하나를 포함할 수 있다. 어떤 실시예들에서, 전자 장치는, 예를 들면, 텔레비전, DVD(digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스, 홈 오토매이션 컨트롤 패널, 보안 컨트롤 패널, 미디어 박스(예: 삼성 HomeSyncTM, 애플TVTM, 또는 구글 TVTM), 게임 콘솔(예: XboxTM, PlayStationTM), 전자 사전, 전자 키, 캠코더, 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
다른 실시예에서, 전자 장치는, 각종 의료기기(예: 각종 휴대용 의료측정기기(혈당 측정기, 심박 측정기, 혈압 측정기, 또는 체온 측정기 등), MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 또는 초음파기 등), 네비게이션 장치, 위성 항법 시스템(GNSS(global navigation satellite system)), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트 장치, 선박용 전자 장비(예: 선박용 항법 장치, 자이로 콤파스 등), 항공 전자기기(avionics), 보안 기기, 차량용 헤드 유닛(head unit), 산업용 또는 가정용 로봇, 드론(drone), 금융 기관의 ATM, 상점의 POS(point of sales), 또는 사물 인터넷 장치 (예: 전구, 각종 센서, 스프링클러 장치, 화재 경보기, 온도조절기, 가로등, 토스터, 운동기구, 온수탱크, 히터, 보일러 등) 중 적어도 하나를 포함할 수 있다. 어떤 실시예에 따르면, 전자 장치는 가구, 건물/구조물 또는 자동차의 일부, 전자 보드(electronic board), 전자 사인 수신 장치(electronic signature receiving device), 프로젝터, 또는 각종 계측 기기(예: 수도, 전기, 가스, 또는 전파 계측 기기 등) 중 적어도 하나를 포함할 수 있다. 다양한 실시예에서, 전자 장치는 플렉서블하거나, 또는 전술한 다양한 장치들 중 둘 이상의 조합일 수 있다. 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다. 본 문서에서, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치(예: 인공지능 전자 장치)를 지칭할 수 있다.
도 1을 참조하여, 다양한 실시예에서의, 네트워크 환경(100) 내의 전자 장치(101)가 기재된다. 전자 장치(101)는 버스(110), 프로세서(120), 메모리(130), 입출력 인터페이스(150), 디스플레이(160), 및 통신 인터페이스(170)를 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)는, 구성요소들 중 적어도 하나를 생략하거나 다른 구성요소를 추가적으로 구비할 수 있다. 버스(110)는 구성요소들(110-170)을 서로 연결하고, 구성요소들 간의 통신(예: 제어 메시지 또는 데이터)을 전달하는 회로를 포함할 수 있다. 프로세서(120)는, 중앙처리장치, 어플리케이션 프로세서, 또는 커뮤니케이션 프로세서(communication processor(CP)) 중 하나 또는 그 이상을 포함할 수 있다. 프로세서(120)는, 예를 들면, 전자 장치(101)의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다.
메모리(130)는, 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 메모리(130)는, 예를 들면, 전자 장치(101)의 적어도 하나의 다른 구성요소에 관계된 명령 또는 데이터를 저장할 수 있다. 한 실시예에 따르면, 메모리(130)는 소프트웨어 및/또는 프로그램(140)을 저장할 수 있다. 프로그램(140)은, 예를 들면, 커널(141), 미들웨어(143), 어플리케이션 프로그래밍 인터페이스(API)(145), 및/또는 어플리케이션 프로그램(또는 "어플리케이션")(147) 등을 포함할 수 있다. 커널(141), 미들웨어(143), 또는 API(145)의 적어도 일부는, 운영 시스템으로 지칭될 수 있다. 커널(141)은, 예를 들면, 다른 프로그램들(예: 미들웨어(143), API(145), 또는 어플리케이션 프로그램(147))에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 버스(110), 프로세서(120), 또는 메모리(130) 등)을 제어 또는 관리할 수 있다. 또한, 커널(141)은 미들웨어(143), API(145), 또는 어플리케이션 프로그램(147)에서 전자 장치(101)의 개별 구성요소에 접근함으로써, 시스템 리소스들을 제어 또는 관리할 수 있는 인터페이스를 제공할 수 있다.
미들웨어(143)는, 예를 들면, API(145) 또는 어플리케이션 프로그램(147)이 커널(141)과 통신하여 데이터를 주고받을 수 있도록 중개 역할을 수행할 수 있다. 또한, 미들웨어(143)는 어플리케이션 프로그램(147)으로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 예를 들면, 미들웨어(143)는 어플리케이션 프로그램(147) 중 적어도 하나에 전자 장치(101)의 시스템 리소스(예: 버스(110), 프로세서(120), 또는 메모리(130) 등)를 사용할 수 있는 우선 순위를 부여하고, 상기 하나 이상의 작업 요청들을 처리할 수 있다. API(145)는 어플리케이션(147)이 커널(141) 또는 미들웨어(143)에서 제공되는 기능을 제어하기 위한 인터페이스로, 예를 들면, 파일 제어, 창 제어, 영상 처리, 또는 문자 제어 등을 위한 적어도 하나의 인터페이스 또는 함수(예: 명령어)를 포함할 수 있다. 입출력 인터페이스(150)는, 예를 들면, 사용자 또는 다른 외부 기기로부터 입력된 명령 또는 데이터를 전자 장치(101)의 다른 구성요소(들)에 전달하거나, 또는 전자 장치(101)의 다른 구성요소(들)로부터 수신된 명령 또는 데이터를 사용자 또는 다른 외부 기기로 출력할 수 있다.
디스플레이(160)는, 예를 들면, 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이, 유기 발광 다이오드(OLED) 디스플레이, 또는 마이크로 전자기계 시스템 (MEMS) 디스플레이, 또는 전자종이(electronic paper) 디스플레이를 포함할 수 있다. 디스플레이(160)는, 예를 들면, 사용자에게 각종 콘텐츠(예: 텍스트, 이미지, 비디오, 아이콘, 및/또는 심볼 등)을 표시할 수 있다. 디스플레이(160)는, 터치 스크린을 포함할 수 있으며, 예를 들면, 전자 펜 또는 사용자의 신체의 일부를 이용한 터치, 제스쳐, 근접, 또는 호버링 입력을 수신할 수 있다. 통신 인터페이스(170)는, 예를 들면, 전자 장치(101)와 외부 장치(예: 제 1 외부 전자 장치(102), 제 2 외부 전자 장치(104), 또는 서버(106)) 간의 통신을 설정할 수 있다. 예를 들면, 통신 인터페이스(170)는 무선 통신 또는 유선 통신을 통해서 네트워크(162)에 연결되어 외부 장치(예: 제 2 외부 전자 장치(104) 또는 서버(106))와 통신할 수 있다.
무선 통신은, 예를 들면, LTE, LTE-A(LTE Advance), CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiBro(Wireless Broadband), 또는 GSM(Global System for Mobile Communications) 등 중 적어도 하나를 사용하는 셀룰러 통신을 포함할 수 있다. 한 실시예에 따르면, 무선 통신은, 예를 들면, WiFi(wireless fidelity), 블루투스, 블루투스 저전력(BLE), 지그비(Zigbee), NFC(near field communication), 자력 시큐어 트랜스미션(Magnetic Secure Transmission), 라디오 프리퀀시(RF), 또는 보디 에어리어 네트워크(BAN) 중 적어도 하나를 포함할 수 있다. 한실시예에 따르면, 무선 통신은 GNSS를 포함할 수 있다. GNSS는, 예를 들면, GPS(Global Positioning System), Glonass(Global Navigation Satellite System), Beidou Navigation Satellite System(이하 “Beidou”) 또는 Galileo, the European global satellite-based navigation system일 수 있다. 이하, 본 문서에서는, “GPS”는 “GNSS”와 상호 호환적으로 사용될 수 있다. 유선 통신은, 예를 들면, USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard232), 전력선 통신, 또는 POTS(plain old telephone service) 등 중 적어도 하나를 포함할 수 있다. 네트워크(162)는 텔레커뮤니케이션 네트워크, 예를 들면, 컴퓨터 네트워크(예: LAN 또는 WAN), 인터넷, 또는 텔레폰 네트워크 중 적어도 하나를 포함할 수 있다.
제 1 및 제 2 외부 전자 장치(102, 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 다양한 실시예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 다른 하나 또는 복수의 전자 장치(예: 전자 장치(102,104), 또는 서버(106)에서 실행될 수 있다. 한 실시예에 따르면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 다른 장치(예: 전자 장치(102, 104), 또는 서버(106))에게 요청할 수 있다. 다른 전자 장치(예: 전자 장치(102, 104), 또는 서버(106))는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 수신된 결과를 그대로 또는 추가적으로 처리하여 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
도 2는 다양한 실시예에 따른 전자 장치(201)의 블록도이다. 전자 장치(201)는, 예를 들면, 도 1에 도시된 전자 장치(101)의 전체 또는 일부를 포함할 수 있다. 전자 장치(201)는 하나 이상의 프로세서(예: AP)(210), 통신 모듈(220), (가입자 식별 모듈(224), 메모리(230), 센서 모듈(240), 입력 장치(250), 디스플레이(260), 인터페이스(270), 오디오 모듈(280), 카메라 모듈(291), 전력 관리 모듈(295), 배터리(296), 인디케이터(297), 및 모터(298) 를 포함할 수 있다. 프로세서(210)는, 예를 들면, 운영 체제 또는 응용 프로그램을 구동하여 프로세서(210)에 연결된 다수의 하드웨어 또는 소프트웨어 구성요소들을 제어할 수 있고, 각종 데이터 처리 및 연산을 수행할 수 있다. 프로세서(210)는, 예를 들면, SoC(system on chip) 로 구현될 수 있다. 한 실시예에 따르면, 프로세서(210)는 GPU(graphic processing unit) 및/또는 이미지 신호 프로세서를 더 포함할 수 있다. 프로세서(210)는 도 2에 도시된 구성요소들 중 적어도 일부(예: 셀룰러 모듈(221))를 포함할 수도 있다. 프로세서(210) 는 다른 구성요소들(예: 비휘발성 메모리) 중 적어도 하나로부터 수신된 명령 또는 데이터를 휘발성 메모리에 로드)하여 처리하고, 결과 데이터를 비휘발성 메모리에 저장할 수 있다.
통신 모듈(220)(예: 통신 인터페이스(170))와 동일 또는 유사한 구성을 가질 수 있다. 통신 모듈(220)은, 예를 들면, 셀룰러 모듈(221), WiFi 모듈(223), 블루투스 모듈(225), GNSS 모듈(227), NFC 모듈(228) 및 RF 모듈(229)를 포함할 수 있다. 셀룰러 모듈(221)은, 예를 들면, 통신망을 통해서 음성 통화, 영상 통화, 문자 서비스, 또는 인터넷 서비스 등을 제공할 수 있다. 한 실시예에 따르면, 셀룰러 모듈(221)은 가입자 식별 모듈(예: SIM 카드)(224)을 이용하여 통신 네트워크 내에서 전자 장치(201)의 구별 및 인증을 수행할 수 있다. 한 실시예에 따르면, 셀룰러 모듈(221)은 프로세서(210)가 제공할 수 있는 기능 중 적어도 일부 기능을 수행할 수 있다. 한 실시예에 따르면, 셀룰러 모듈(221)은 커뮤니케이션 프로세서(CP)를 포함할 수 있다. 어떤 실시예에 따르면, 셀룰러 모듈(221), WiFi 모듈(223), 블루투스 모듈(225), GNSS 모듈(227) 또는 NFC 모듈(228) 중 적어도 일부(예: 두 개 이상)는 하나의 integrated chip(IC) 또는 IC 패키지 내에 포함될 수 있다. RF 모듈(229)은, 예를 들면, 통신 신호(예: RF 신호)를 송수신할 수 있다. RF 모듈(229)은, 예를 들면, 트랜시버, PAM(power amp module), 주파수 필터, LNA(low noise amplifier), 또는 안테나 등을 포함할 수 있다. 다른 실시예에 따르면, 셀룰러 모듈(221), WiFi 모듈(223), 블루투스 모듈(225), GNSS 모듈(227) 또는 NFC 모듈(228) 중 적어도 하나는 별개의 RF 모듈을 통하여 RF 신호를 송수신할 수 있다. 가입자 식별 모듈(224)은, 예를 들면, 가입자 식별 모듈을 포함하는 카드 또는 임베디드 SIM을 포함할 수 있으며, 고유한 식별 정보(예: ICCID(integrated circuit card identifier)) 또는 가입자 정보(예: IMSI(international mobile subscriber identity))를 포함할 수 있다.
메모리(230)(예: 메모리(130))는, 예를 들면, 내장 메모리(232) 또는 외장 메모리(234)를 포함할 수 있다. 내장 메모리(232)는, 예를 들면, 휘발성 메모리(예: DRAM, SRAM, 또는 SDRAM 등), 비휘발성 메모리(예: OTPROM(one time programmable ROM), PROM, EPROM, EEPROM, mask ROM, flash ROM, 플래시 메모리, 하드 드라이브, 또는 솔리드 스테이트 드라이브 (SSD) 중 적어도 하나를 포함할 수 있다. 외장 메모리(234)는 플래시 드라이브(flash drive), 예를 들면, CF(compact flash), SD(secure digital), Micro-SD, Mini-SD, xD(extreme digital), MMC(multi-media card) 또는 메모리 스틱 등을 포함할 수 있다. 외장 메모리(234)는 다양한 인터페이스를 통하여 전자 장치(201)와 기능적으로 또는 물리적으로 연결될 수 있다.
센서 모듈(240)은, 예를 들면, 물리량을 계측하거나 전자 장치(201)의 작동 상태를 감지하여, 계측 또는 감지된 정보를 전기 신호로 변환할 수 있다. 센서 모듈(240)은, 예를 들면, 제스처 센서(240A), 자이로 센서(240B), 기압 센서(240C), 마그네틱 센서(240D), 가속도 센서(240E), 그립 센서(240F), 근접 센서(240G), 컬러(color) 센서(240H)(예: RGB(red, green, blue) 센서), 생체 센서(240I), 온/습도 센서(240J), 조도 센서(240K), 또는 UV(ultra violet) 센서(240M) 중의 적어도 하나를 포함할 수 있다. 추가적으로 또는 대체적으로, 센서 모듈(240)은, 예를 들면, 후각(e-nose) 센서, 일렉트로마이오그라피(EMG) 센서, 일렉트로엔씨팔로그램(EEG) 센서, 일렉트로카디오그램(ECG) 센서, IR(infrared) 센서, 홍채 센서 및/또는 지문 센서를 포함할 수 있다. 센서 모듈(240)은 그 안에 속한 적어도 하나 이상의 센서들을 제어하기 위한 제어 회로를 더 포함할 수 있다. 어떤 실시예에서는, 전자 장치(201)는 프로세서(210)의 일부로서 또는 별도로, 센서 모듈(240)을 제어하도록 구성된 프로세서를 더 포함하여, 프로세서(210)가 슬립(sleep) 상태에 있는 동안, 센서 모듈(240)을 제어할 수 있다.
입력 장치(250)는, 예를 들면, 터치 패널(252), (디지털) 펜 센서(254), 키(256), 또는 초음파 입력 장치(258)를 포함할 수 있다. 터치 패널(252)은, 예를 들면, 정전식, 감압식, 적외선 방식, 또는 초음파 방식 중 적어도 하나의 방식을 사용할 수 있다. 또한, 터치 패널(252)은 제어 회로를 더 포함할 수도 있다. 터치 패널(252)은 택타일 레이어(tactile layer)를 더 포함하여, 사용자에게 촉각 반응을 제공할 수 있다. (디지털) 펜 센서(254)는, 예를 들면, 터치 패널의 일부이거나, 별도의 인식용 쉬트를 포함할 수 있다. 키(256)는, 예를 들면, 물리적인 버튼, 광학식 키, 또는 키패드를 포함할 수 있다. 초음파 입력 장치(258)는 마이크(예: 마이크(288))를 통해, 입력 도구에서 발생된 초음파를 감지하여, 상기 감지된 초음파에 대응하는 데이터를 확인할 수 있다.
디스플레이(260)(예: 디스플레이(160))는 패널(262), 홀로그램 장치(264), 프로젝터(266), 및/또는 이들을 제어하기 위한 제어 회로를 포함할 수 있다. 패널(262)은, 예를 들면, 유연하게, 투명하게, 또는 착용할 수 있게 구현될 수 있다. 패널(262)은 터치 패널(252)과 하나 이상의 모듈로 구성될 수 있다. 한 실시예에 따르면, 패널(262)은 사용자의 터치에 대한 압력의 세기를 측정할 수 있는 압력 센서(또는 포스 센서)를 포함할 수 있다. 상기 압력 센서는 터치 패널(252)과 일체형으로 구현되거나, 또는 터치 패널(252)과는 별도의 하나 이상의 센서로 구현될 수 있다. 홀로그램 장치(264)는 빛의 간섭을 이용하여 입체 영상을 허공에 보여줄 수 있다. 프로젝터(266)는 스크린에 빛을 투사하여 영상을 표시할 수 있다. 스크린은, 예를 들면, 전자 장치(201)의 내부 또는 외부에 위치할 수 있다. 인터페이스(270)는, 예를 들면, HDMI(272), USB(274), 광 인터페이스(optical interface)(276), 또는 D-sub(D-subminiature)(278)를 포함할 수 있다. 인터페이스(270)는, 예를 들면, 도 1에 도시된 통신 인터페이스(170)에 포함될 수 있다. 추가적으로 또는 대체적으로, 인터페이스(270)는, 예를 들면, MHL(mobile high-definition link) 인터페이스, SD카드/MMC(multi-media card) 인터페이스, 또는 IrDA(infrared data association) 규격 인터페이스를 포함할 수 있다.
오디오 모듈(280)은, 예를 들면, 소리와 전기 신호를 쌍방향으로 변환시킬 수 있다. 오디오 모듈(280)의 적어도 일부 구성요소는, 예를 들면, 도 1 에 도시된 입출력 인터페이스(145)에 포함될 수 있다. 오디오 모듈(280)은, 예를 들면, 스피커(282), 리시버(284), 이어폰(286), 또는 마이크(288) 등을 통해 입력 또는 출력되는 소리 정보를 처리할 수 있다. 카메라 모듈(291)은, 예를 들면, 정지 영상 및 동영상을 촬영할 수 있는 장치로서, 한 실시예에 따르면, 하나 이상의 이미지 센서(예: 전면 센서 또는 후면 센서), 렌즈, 이미지 시그널 프로세서(ISP), 또는 플래시(예: LED 또는 xenon lamp 등)를 포함할 수 있다. 전력 관리 모듈(295)은, 예를 들면, 전자 장치(201)의 전력을 관리할 수 있다. 한 실시예에 따르면, 전력 관리 모듈(295)은 PMIC(power management integrated circuit), 충전 IC, 또는 배터리 또는 연료 게이지를 포함할 수 있다. PMIC는, 유선 및/또는 무선 충전 방식을 가질 수 있다. 무선 충전 방식은, 예를 들면, 자기공명 방식, 자기유도 방식 또는 전자기파 방식 등을 포함하며, 무선 충전을 위한 부가적인 회로, 예를 들면, 코일 루프, 공진 회로, 또는 정류기 등을 더 포함할 수 있다. 배터리 게이지는, 예를 들면, 배터리(296)의 잔량, 충전 중 전압, 전류, 또는 온도를 측정할 수 있다. 배터리(296)는, 예를 들면, 충전식 전지 및/또는 태양 전지를 포함할 수 있다.
인디케이터(297)는 전자 장치(201) 또는 그 일부(예: 프로세서(210))의 특정 상태, 예를 들면, 부팅 상태, 메시지 상태 또는 충전 상태 등을 표시할 수 있다. 모터(298)는 전기적 신호를 기계적 진동으로 변환할 수 있고, 진동, 또는 햅틱 효과 등을 발생시킬 수 있다. 전자 장치(201)는, 예를 들면, DMB(digital multimedia broadcasting), DVB(digital video broadcasting), 또는 미디어플로(mediaFloTM) 등의 규격에 따른 미디어 데이터를 처리할 수 있는 모바일 TV 지원 장치(예: GPU)를 포함할 수 있다. 본 문서에서 기술된 구성요소들 각각은 하나 또는 그 이상의 부품(component)으로 구성될 수 있으며, 해당 구성요소의 명칭은 전자 장치의 종류에 따라서 달라질 수 있다. 다양한 실시예에서, 전자 장치(예: 전자 장치(201))는 일부 구성요소가 생략되거나, 추가적인 구성요소를 더 포함하거나, 또는, 구성요소들 중 일부가 결합되어 하나의 개체로 구성되되, 결합 이전의 해당 구성요소들의 기능을 동일하게 수행할 수 있다.
도 3은 다양한 실시예에 따른 프로그램 모듈의 블록도이다. 한 실시예에 따르면, 프로그램 모듈(310)(예: 프로그램(140))은 전자 장치(예: 전자 장치(101))에 관련된 자원을 제어하는 운영 체제 및/또는 운영 체제 상에서 구동되는 다양한 어플리케이션(예: 어플리케이션 프로그램(147))을 포함할 수 있다. 운영 체제는, 예를 들면, AndroidTM, iOSTM, WindowsTM, SymbianTM, TizenTM, 또는 BadaTM를 포함할 수 있다. 도 3을 참조하면, 프로그램 모듈(310)은 커널(320)(예: 커널(141)), 미들웨어(330)(예: 미들웨어(143)), (API(360)(예: API(145)), 및/또는 어플리케이션(370)(예: 어플리케이션 프로그램(147))을 포함할 수 있다. 프로그램 모듈(310)의 적어도 일부는 전자 장치 상에 프리로드 되거나, 외부 전자 장치(예: 전자 장치(102, 104), 서버(106) 등)로부터 다운로드 가능하다.
커널(320)은, 예를 들면, 시스템 리소스 매니저(321) 및/또는 디바이스 드라이버(323)를 포함할 수 있다. 시스템 리소스 매니저(321)는 시스템 리소스의 제어, 할당, 또는 회수를 수행할 수 있다. 한 실시예에 따르면, 시스템 리소스 매니저(321)는 프로세스 관리부, 메모리 관리부, 또는 파일 시스템 관리부를 포함할 수 있다. 디바이스 드라이버(323)는, 예를 들면, 디스플레이 드라이버, 카메라 드라이버, 블루투스 드라이버, 공유 메모리 드라이버, USB 드라이버, 키패드 드라이버, WiFi 드라이버, 오디오 드라이버, 또는 IPC(inter-process communication) 드라이버를 포함할 수 있다. 미들웨어(330)는, 예를 들면, 어플리케이션(370)이 공통적으로 필요로 하는 기능을 제공하거나, 어플리케이션(370)이 전자 장치 내부의 제한된 시스템 자원을 사용할 수 있도록 API(360)를 통해 다양한 기능들을 어플리케이션(370)으로 제공할 수 있다. 한 실시예에 따르면, 미들웨어(330) 는 런타임 라이브러리(335), 어플리케이션 매니저(341), 윈도우 매니저(342), 멀티미디어 매니저(343), 리소스 매니저(344), 파워 매니저(345), 데이터베이스 매니저(346), 패키지 매니저(347), 커넥티비티 매니저(348), 노티피케이션 매니저(349), 로케이션 매니저(350), 그래픽 매니저(351), 또는 시큐리티 매니저(352) 중 적어도 하나를 포함할 수 있다.
런타임 라이브러리(335)는, 예를 들면, 어플리케이션(370)이 실행되는 동안에 프로그래밍 언어를 통해 새로운 기능을 추가하기 위해 컴파일러가 사용하는 라이브러리 모듈을 포함할 수 있다. 런타임 라이브러리(335)는 입출력 관리, 메모리 관리, 또는 산술 함수 처리를 수행할 수 있다. 어플리케이션 매니저(341)는, 예를 들면, 어플리케이션(370)의 생명 주기를 관리할 수 있다. 윈도우 매니저(342)는 화면에서 사용되는 GUI 자원을 관리할 수 있다. 멀티미디어 매니저(343)는 미디어 파일들의 재생에 필요한 포맷을 파악하고, 해당 포맷에 맞는 코덱을 이용하여 미디어 파일의 인코딩 또는 디코딩을 수행할 수 있다. 리소스 매니저(344)는 어플리케이션(370)의 소스 코드 또는 메모리의 공간을 관리할 수 있다. 파워 매니저(345)는, 예를 들면, 배터리의 용량 또는 전원을 관리하고, 전자 장치의 동작에 필요한 전력 정보를 제공할 수 있다. 한 실시예에 따르면, 파워 매니저(345)는 바이오스(BIOS: basic input/output system)와 연동할 수 있다. 데이터베이스 매니저(346)는, 예를 들면, 어플리케이션(370)에서 사용될 데이터베이스를 생성, 검색, 또는 변경할 수 있다. 패키지 매니저(347)는 패키지 파일의 형태로 배포되는 어플리케이션의 설치 또는 갱신을 관리할 수 있다.
커넥티비티 매니저(348)는, 예를 들면, 무선 연결을 관리할 수 있다. 노티피케이션 매니저(349)는, 예를 들면, 도착 메시지, 약속, 근접성 알림 등의 이벤트를 사용자에게 제공할 수 있다. 로케이션 매니저(350)는, 예를 들면, 전자 장치의 위치 정보를 관리할 수 있다. 그래픽 매니저(351)는, 예를 들면, 사용자에게 제공될 그래픽 효과 또는 이와 관련된 사용자 인터페이스를 관리할 수 있다. 보안 매니저(352)는, 예를 들면, 시스템 보안 또는 사용자 인증을 제공할 수 있다. 한 실시예에 따르면, 미들웨어(330)는 전자 장치의 음성 또는 영상 통화 기능을 관리하기 위한 통화(telephony) 매니저 또는 전술된 구성요소들의 기능들의 조합을 형성할 수 있는 하는 미들웨어 모듈을 포함할 수 있다. 한 실시예에 따르면, 미들웨어(330)는 운영 체제의 종류 별로 특화된 모듈을 제공할 수 있다. 미들웨어(330)는 동적으로 기존의 구성요소를 일부 삭제하거나 새로운 구성요소들을 추가할 수 있다. API(360)는, 예를 들면, API 프로그래밍 함수들의 집합으로, 운영 체제에 따라 다른 구성으로 제공될 수 있다. 예를 들면, 안드로이드 또는 iOS의 경우, 플랫폼 별로 하나의 API 셋을 제공할 수 있으며, 타이젠의 경우, 플랫폼 별로 두 개 이상의 API 셋을 제공할 수 있다.
어플리케이션(370)은, 예를 들면, 홈(371), 다이얼러(372), SMS/MMS(373), IM(instant message)(374), 브라우저(375), 카메라(376), 알람(377), 컨택트(378), 음성 다이얼(379), 이메일(380), 달력(381), 미디어 플레이어(382), 앨범(383), 와치(384), 헬스 케어(예: 운동량 또는 혈당 등을 측정), 또는 환경 정보(예: 기압, 습도, 또는 온도 정보) 제공 어플리케이션을 포함할 수 있다. 한 실시예에 따르면, 어플리케이션(370)은 전자 장치와 외부 전자 장치 사이의 정보 교환을 지원할 수 있는 정보 교환 어플리케이션을 포함할 수 있다. 정보 교환 어플리케이션은, 예를 들면, 외부 전자 장치에 특정 정보를 전달하기 위한 노티피케이션 릴레이 어플리케이션, 또는 외부 전자 장치를 관리하기 위한 장치 관리 어플리케이션을 포함할 수 있다. 예를 들면, 알림 전달 어플리케이션은 전자 장치의 다른 어플리케이션에서 발생된 알림 정보를 외부 전자 장치로 전달하거나, 또는 외부 전자 장치로부터 알림 정보를 수신하여 사용자에게 제공할 수 있다. 장치 관리 어플리케이션은, 예를 들면, 전자 장치와 통신하는 외부 전자 장치의 기능(예: 외부 전자 장치 자체(또는, 일부 구성 부품)의 턴-온/턴-오프 또는 디스플레이의 밝기(또는, 해상도) 조절), 또는 외부 전자 장치에서 동작하는 어플리케이션을 설치, 삭제, 또는 갱신할 수 있다. 한 실시예에 따르면, 어플리케이션(370)은 외부 전자 장치의 속성에 따라 지정된 어플리케이션(예: 모바일 의료 기기의 건강 관리 어플리케이션)을 포함할 수 있다. 한 실시예에 따르면, 어플리케이션(370)은 외부 전자 장치로부터 수신된 어플리케이션을 포함할 수 있다. 프로그램 모듈(310)의 적어도 일부는 소프트웨어, 펌웨어, 하드웨어(예: 프로세서(210)), 또는 이들 중 적어도 둘 이상의 조합으로 구현(예: 실행)될 수 있으며, 하나 이상의 기능을 수행하기 위한 모듈, 프로그램, 루틴, 명령어 세트 또는 프로세스를 포함할 수 있다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구성된 유닛을 포함하며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. "모듈"은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수 있다. "모듈"은 기계적으로 또는 전자적으로 구현될 수 있으며, 예를 들면, 어떤 동작들을 수행하는, 알려졌거나 앞으로 개발될, ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays), 또는 프로그램 가능 논리 장치를 포함할 수 있다. 다양한 실시예에 따른 장치(예: 모듈들 또는 그 기능들) 또는 방법(예: 동작들)의 적어도 일부는 프로그램 모듈의 형태로 컴퓨터로 판독 가능한 저장 매체(예:메모리(130))에 저장된 명령어로 구현될 수 있다. 상기 명령어가 프로세서(예: 프로세서(120))에 의해 실행될 경우, 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체(예: 자기테이프), 광기록 매체(예: CD-ROM, DVD, 자기-광 매체 (예: 플롭티컬 디스크), 내장 메모리 등을 포함할 수 있다. 명령어는 컴파일러에 의해 만들어지는 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 다양한 실시예에 따른 모듈 또는 프로그램 모듈은 전술한 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 다른 구성요소를 더 포함할 수 있다. 다양한 실시예에 따른, 모듈, 프로그램 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
이하에서는, 복수의 어플리케이션에 카메라 모듈에서 촬영된 이미지를 분배하기 위한 보다 구체적인 실시예에 대해 설명하기로 한다.
어플리케이션은, 예를 들면, framework에 구현되는 소프트웨어 모듈(프로그램), 라이브러리, 또는 백그라운드 서비스(프로그램) 등을 포함할 수 있다. 한 실시예에 따르면, 어플리케이션은 프레임워크 레이어보다 상위 레이어에서 구현되는 소프트웨어 모듈(프로그램), 라이브러리, 또는 백그라운드 서비스(프로그램) 등을 포함할 수 있다. 또한, 어플리케이션은, 예를 들면, 사용자에게 서비스를 제공하기 위하여, 다양한 유저 인터페이스(예: 디스플레이, 스피커, 를 디스플레이를 통하여 표시할 수 있다.
도 4는 복수의 어플리케이션 실행에 따라 전자 장치(400)에 표시된 화면의 일 예를 도시한 것이다.
다양한 실시예에 따르면, 전자 장치(400)는 복수의 어플리케이션을 포 그라운드(foreground) 및/또는 백 그라운드(background)에서 동시에 실행할 수 있으며, 포 그라운드에서 실행된 복수의 어플리케이션에서 생성된 화면은 디스플레이(410) 상에 동시에 표시될 수 있다.
도 4에 도시된 바와 같이, 전자 장치(400)는 2개의 어플리케이션을 동시 또는 순차적으로 구동하여 생성된 화면을 디스플레이(410)에 표시할 수 있다. 다양한 실시예에 따르면, 제1어플리케이션(420) 및 제2어플리케이션(430)은 카메라 기능을 사용하는 어플리케이션일 수 있다. 예를 들어, 제1어플리케이션(420) 및/또는 제2어플리케이션(430)은 카메라 모듈을 통해 이미지를 캡쳐 또는 녹화 하는 기능, 획득된 이미지를 실시간으로 편집하는 기능, 이미지 촬영을 통해 객체를 인식하는 기능 등 다양한 기능에 관련된 어플리케이션일 수 있다.
제1어플리케이션(420)에서 표시되는 제1이미지 및 제2어플리케이션(430)에서 표시되는 제2이미지는 동일한 이미지이거나, 다른 이미지일 수 있다. 한 실시예에 따르면, 다른 이미지인 경우, 동일한 카메라에서 일반 촬영 및 줌(zoom) 촬영으로 획득된 서로 다른 영역에 대한 이미지이거나, 동일한 영역을 촬영한 이미지이되 해상도 및/또는 프레임 레이트(frame rate), 프레임의 순서, 압축률, 밝기, ISO, 채도, 색공간, 또는 focus 영역 등이 서로 다른 이미지일 수 있다.
다양한 실시예에 따르면, 전자 장치(400)는 하나의 이미지 센서만을 구비하거나, 복수의 이미지 센서를 구비할 수도 있다. 제1이미지 및 제2이미지는 하나의 이미지 센서에서 획득된 이미지이거나, 각각 다른 이미지 센서에서 획득된 이미지 일 수 있다.
도 4에서는 전자 장치(400)의 일 예로 스마트폰 등의 휴대 단말 장치를 예시 하였으나, 본 발명의 다양한 실시예들은 이에 한정되지 않으며, 본 발명의 다양한 실시예들은 카메라 모듈을 이용해 이미지를 촬영할 수 있고, 프로세서 및 메모리를 구비하여 다양한 어플리케이션을 실행할 수 있는 다양한 형태의 전자 장치(400) 상에서 구현될 수 있다. 예를 들어, 전자 장치(400)는 로봇(robot) 일 수 있다. 일 실시예에 따르면, 전자 장치는 이동 장치 예를 들어, 로봇 다리 또는 팔, 휠, 캐터필러, 프로펠러, 윙, 핀, 엔진, 모터 또는 로켓 중 적어도 하나를 포함할 수 있으며, 제1어플리케이션은 이와 같은 이동 장치의 동작과 연관된 것일 수 있다.
다양한 실시예에 따르면, 제1어플리케이션 및 제2어플리케이션 중 적어도 하나는 전자 장치(400) 외부의 다른 장치(미도시)에 의해 실행되는 것일 수 있다. 이 경우, 전자 장치(400)는 통신 회로를 통해 외부 장치의 제2어플리케이션과 통신하도록 구성될 수 있다.
예를 들어, 로봇은 자율주행, 사물인식, 사람인식, 상황인식 등의 sw 모듈을 가지고 있어서, 상기 소프트웨어 모듈 중 적어도 하나를 필요시 동작시키거나 상시 동작시킬 수 있다. 또한, 한 실시예에 따르면, 로봇은, 다양한 목적을 위하여(예: 방범 기록) 상기 로봇 내에 배치된 메모리 또는 스토리지 장치 등을 통하여 자체적으로 영상을 저장하거나, 외부 저장장치(NAS, CLOUD 등)에 영상을 업로드 할 수 있다. 한 실시예에 따르면, 로봇은 life logging 등의 목적으로 웃음 인식 기능을 지원하는 모듈을 통해서 사진을 촬영할 수 있고, 상황인식 모듈 및/또는 사람인식 모듈을 활용하여 특정인을 감지할 수 있다. 예를 들면, 로봇은, 해당 특정인이 아기인 경우, 베이비 케어 기능을 지원하는 어플리케이션을 동작시킬 수 있다. 또는, 로봇은, 예를 들면, 지정된 영역(예: 집안, 회사 내 등)에 아무도 있지 않다고 판단되는 경우, 외부인 감지 기능을 지원하는 어플이케이션을 동작시킬 수 있다.
한 실시예에 따르면, 위에서 언급된 어플리케이션들은 단독으로 또는 동시에 동작할 수 있다. 예를 들어, 로봇은 사용자가 로봇을 통하여 영상 통화를 수행하는 경우, 카메라 이미지를 통화 목적으로 사용하면서, 사용자가 이동하는 경우, 카메라 이미지를 사람과 주변 사물을 인식하여 자율 주행을 통해 사람을 따라가거나 관절을 회전/이동하는 목적으로도 동시에 활용 가능하다.
도 5는 본 발명의 다양한 실시예에 따른 전자 장치(500)의 블록도이다.
도시된 바와 같이, 전자 장치(500)는 디스플레이(510), 통신 회로(520), 프로세서(530), 메모리(540) 및 카메라 모듈(550)을 포함하며, 도시된 구성 중 일부가 생략 또는 치환되더라도 본 발명의 다양한 실시예를 구현함에는 지장이 없을 것이다. 또한, 전자 장치(500)는 도 1의 전자 장치(101) 및/또는 도 2의 전자 장치(201)의 구성 및/또는 기능 중 적어도 일부를 포함할 수 있다.
다양한 실시예에 따르면, 디스플레이(510)는 영상을 표시하며, 액정 디스플레이(liquid crystal display(LCD)), 발광 다이오드(light-emitting diode(LED)) 디스플레이, 유기 발광 다이오드(organic light-emitting diode(OLED)) 디스플레이, 또는 마이크로 전자기계 시스템(micro electro mechanical systems(MEMS)) 디스플레이, 또는 전자종이(electronic paper) 디스플레이 중 어느 하나로 구현될 수 있으나, 이에 한정되지는 않는다. 디스플레이(510)는 도 1의 디스플레이(160) 및/또는 도 2의 디스플레이(260)의 구성 및/또는 기능 중 적어도 일부를 포함할 수 있다. 디스플레이(510)는 터치 스크린 패널(touch screen panel, 미도시)을 포함하며, 터치 스크린 패널은 디스플레이(510) 전면에 마련된 윈도우(window, 미도시)에 대한 터치 입력 또는 호버링(hovering) 입력을 감지할 수 있다.
한 실시예에 따르면, 디스플레이는 없거나 1개이거나 1개 이상일수 있고, 전자 장치(500)에 구비된 적어도 하나의 어플리케이션(예를 들어, 제1어플리케이션 및/또는 제2어플리케이션)은 동일 디스플레이에 이미지를 표시하거나, 다른 디스플레이 또는 동일한 디스플레이의 서로 다른 영역에 이미지를 표시할 수 있으며, 적어도 하나의 어플리케이션은 이미지를 표시하지 않고 기능만 수행할 수도 있다.
다양한 실시예에 따르면, 디스플레이(510)는 프로세서(530)와 전기적으로 연결되며, 프로세서(530)에서 전송된 데이터에 따라 카메라 모듈(550)을 통하여 획득한 이미지를 표시할 수 있다.디스플레이(510)는 통신 회로(520)를 통해서 전자 장치(500)의 다른 구성(예를 들어, 카메라 모듈(550)) 및/또는 외부 장치와 연결될 수도 있다. 예를 들어, 외부 장치로부터 스크린 미러링, 라이브 스트리밍, WIFI DISPLAY, air play, DLNA 등 다양한 방식을 통해 이미지가 통신 회로(520)에 수신될 수 있으며, 통신 회로(520)에 수신된 이미지는 디스플레이(510) 상에 표시될 수 있다.
다양한 실시예에 따르면, 통신 회로(520)는 다양한 외부 장치와 데이터를 송수신하기 위한 구성으로, 도 1의 통신 인터페이스(170) 및/또는 도 2의 통신 모듈(220)의 구성 및/또는 기능 중 적어도 일부를 포함할 수 있다. 통신 회로(520)는 예컨대, Wi-Fi 등 근거리 무선 통신 방식으로 외부 장치와 통신할 수 있다.
다양한 실시예에 따르면, 카메라 모듈(550)은 적어도 하나의 이미지 센서 및/또는 렌즈를 포함할 수 있으며, 각각의 이미지 센서 및/또는 렌즈를 통해 이미지를 획득할 수 있다.
카메라 모듈(550)은 전자 장치(500)의 하우징(미도시)의 적어도 일면(예를 들어, 전면 및/또는 후면)을 통해 전자 장치(500)의 외부로 노출 될 수 있다. 카메라 모듈(550)에서 획득된 이미지는 디지털 이미지 데이터로써 프로세서(530)로 제공될 수 있다. 카메라 모듈(550)은 도 2의 카메라 모듈(291)의 구성 및/또는 기능 중 적어도 일부를 포함할 수 있다.
다양한 실시예에 따르면, 카메라 모듈(550)은 전자 장치(500)와 별도의 장치로 마련될 수 있으며, 유선으로 전자 장치(500)와 연결되거나, 통신 회로(520)를 통해 무선으로 연결될 수도 있다. 일 실시예에 따르면, 카메라 모듈(550)은 usb 카메라, 무선 카메라, cctv 카메라 등일 수 있다.
도 5에서는 카메라 모듈(550)이 제1이미지 센서(552) 및 제2이미지 센서(554)를 포함하는 것으로 도시 하였으나, 하나의 이미지 센서만을 구비하는 것도 가능하며, 3개 이상을 구비하는 것도 가능하다. 또한, 도 5에서는 카메라 모듈(550) 제1렌즈(556) 및 제2렌즈(558)를 포함하는 것으로 도시 하였으나, 하나의 렌즈만을 구비하는 것도 가능하며, 3개 이상을 구비하는 것도 가능하다. 일 실시예에 따르면, 제1렌즈 및 제2렌즈는 다른 속성을 가질 수 있다. 예를 들어, 제1렌즈는 광학 렌즈, 어안 렌즈 또는 일반 렌즈 중 어느 하나일 수 있으며, 제2렌즈는 상기 렌즈들 중 다른 하나일 수 있다. 다른 일 실시예에 따르면, 제1렌즈 및 제2렌즈는 동일한 속성의 렌즈일 수도 있다.
카메라 모듈(550)이 제1이미지 센서(552) 및 제2이미지 센서(554)를 포함하는 경우, 제1이미지 센서(552)에서 획득된 이미지가 제1어플리케이션으로 제공되고, 제2이미지 센서(554)에서 획득된 이미지가 제2어플리케이션으로 제공될 수 있다. 이와 달리, 제1이미지 센서(552) 및 제2이미지 센서(554)에서 획득된 이미지가 제1어플리케이션 및 제2어플리케이션에 모두 제공될 수도 있다. 또한, 카메라 모듈(550)이 제1렌즈(556) 및 제2렌즈(558)를 포함하는 경우, 제1렌즈(556)에서 획득된 이미지가 제1어플리케이션으로 제공되고, 제2렌즈(558)에서 획득된 이미지가 제2어플리케이션으로 제공될 수 있다. 이와 달리, 제1렌즈(556) 및 제2렌즈(558)에서 획득된 이미지가 제1어플리케이션 및 제2어플리케이션에 모두 제공될 수도 있다.
다양한 실시예에 따르면, 메모리(540)는 공지의 휘발성 메모리(542)(volatile memory) 및 비휘발성 메모리(544)(non-volatile memory)를 포함할 수 있으며, 구체적인 구현 예에 있어서는 한정되지 않는다. 메모리(540)는 하우징 내에 배치되어 전기적으로 프로세서(530)와 연결될 수 있다. 메모리(540)는 도 1의 메모리(130) 및/또는 도 2의 메모리(230)의 구성 및/또는 기능 중 적어도 일부를 포함할 수 있다.
비휘발성 메모리(544)는 OTPROM(one time programmable ROM), PROM, EPROM, EEPROM, mask ROM, flash ROM, 플래시 메모리, 하드 드라이브, 또는 솔리드 스테이트 드라이브 (SSD) 중 적어도 하나를 포함할 수 있으며, 이에 한정되지는 않는다. 비휘발성 메모리(544)는 복수의 어플리케이션(예를 들어, 제1어플리케이션 및 제2어플리케이션)을 저장할 수 있다. 이하에서는, 제1어플리케이션 및 제2어플리케이션은 카메라 서비스와 관련된 어플리케이션인 것을 예로 들어 설명하며, 비휘발성 메모리(544)에 저장되는 복수의 어플리케이션의 수 및 종류에는 정함이 없다.
또한, 비휘발성 메모리(544)는 프로세서(530)에서 수행될 수 있는 다양한 인스트럭션(instruction)들을 저장할 수 있다. 이와 같은 인스트럭션들은 제어 회로에 의해 인식될 수 있는 산술 및 논리 연산, 데이터 이동, 입출력 등의 제어 명령을 포함할 수 있으며, 비휘발성 메모리(544)에 저장된 프레임워크(framework) 상에서 정의될 수 있다. 또한, 비휘발성 메모리(544)는 도 3의 프로그램 모듈(310) 중 적어도 일부를 저장할 수 있다.
휘발성 메모리(542)는 DRAM, SRAM, 또는 SDRAM 중 적어도 하나를 포함할 수 있으며, 이에 한정되지는 않는다. 프로세서(530)는 비휘발성 메모리(544)에 저장된 어플리케이션 및/또는 인스트럭션 등 다양한 데이터들을 휘발성 메모리(542)에 로딩 하고, 그에 대응하는 기능들을 전자 장치(500) 상에서 수행할 수 있다.
다양한 실시예에 따르면, 프로세서(530)는 전자 장치(500) 내에서 구현할 수 있는 연산 및 데이터 처리 기능에는 한정됨이 없을 것이나, 이하에서는 프로세서(530)가 카메라 모듈(550)에서 획득한 이미지를 각각의 어플리케이션으로 분배하는 기능에 대해 보다 상세히 설명하기로 한다. 후술할 프로세서(530)의 동작들은 앞서 설명한 메모리(540)에 저장된 인스트럭션들을 로딩(loading)함으로써 수행될 수 있다. 프로세서(530)는 도 1의 프로세서(120) 및/또는 도 2의 프로세서(210)의 구성 및/또는 기능 중 적어도 일부를 포함할 수 있다.
프로세서(530)는 메모리(540)에 저장된 제1어플리케이션을 실행할 수 있다. 제1어플리케이션은 카메라 서비스에 관련된 어플리케이션일 수 있으며, 프로세서(530)는 제1어플리케이션의 카메라 서비스 요청에 응답하여, 카메라 모듈(550)을 인에이블 할 수 있다. 이 후, 프로세서(530)는 카메라 모듈(550)로부터 획득된 하나 이상의 이미지 가운데 적어도 일부를 제1어플리케이션으로 제공할 수 있다.
앞서 설명한 바와 같이, 전자 장치(500)는 카메라 서비스에 관련된 제1어플리케이션 및 제2어플리케이션을 동시에 실행할 수 있다. 프로세서(530)는 카메라 모듈(550)에서 획득된 하나 이상의 이미지 가운데 적어도 일부를 제1어플리케이션으로 제공하는 동안, 동시에 또는 순차적으로 실행된 제2어플리케이션으로부터 카메라 서비스 요청을 수신할 수 있다. 이 경우, 프로세서(530)는 제1어플리케이션 및 제2어플리케이션으로 획득된 하나 이상의 이미지들을 분배할 수 있다. 보다 구체적으로, 프로세서(530)는 제1어플리케이션 및 제2어플리케이션에 각각 제1이미지 및 제2이미지를 제공하되, 동시(simultaneously), 순차적(sequentially) 또는 교차(interleavedly)하여 제공할 수 있다. 다시 말하면, 프로세서(530)는 제1어플리케이션의 카메라 서비스 요청(또는 제1요청)을 처리하는 동안, 제2어플리케이션의 카메라 서비스 요청(또는 제2요청)을 수신하는 경우, 제1요청의 처리를 종료하지 않고 제1요청의 처리와 동시, 순차 또는 교차하여 제2요청을 처리할 수 있다.
전자 장치(500)는 카메라 모듈(550)에서 획득된 하나 이상의 이미지를 제1어플리케이션과 제2어플리케이션으로 분배하기 위해 임시 저장하는 이미지 버퍼(image buffer)를 포함할 수 있다. 이미지 버퍼는 메모리(540)(또는 휘발성 메모리(544))의 일 영역에 마련되며, 고정된 주소를 갖거나, 동적으로 그 주소가 할당될 수도 있다. 이미지 버퍼에 적어도 하나의 이미지가 저장되면, 프로세서(530)는 각 이미지가 저장된 주소를 제1어플리케이션 및 제2어플리케이션으로 제공하고, 제1어플리케이션 및 제2어플리케이션은 이에 기초하여 이미지 버퍼에 액세스 할 수 있다.
다양한 실시예에 따르면, 제1어플리케이션 및 제2어플리케이션으로 제공되는 이미지는 동일한 이미지일 수 있다. 이 경우, 프로세서(530)는 이미지 버퍼에 하나 이상의 이미지를 동시에 또는 순차적으로 저장하고, 이를 복사하여 각각 제1어플리케이션 및 제2어플리케이션으로 제공할 수 있다.
다양한 실시예에 따르면, 제1어플리케이션 및 제2어플리케이션으로 제공되는 제1이미지 및 제2이미지가 서로 다른 이미지일 수 있다.
일 실시예에 따르면, 제1이미지는 카메라 모듈(550)에 의해 획득된 이미지 데이터의 제1부분이고, 제2이미지는 상기 이미지의 제2부분일 수 있다. 여기서, 제1부분과 제2부분은 적어도 일부가 다른 부분일 수 있다. 예를 들어, 제1이미지는 이미지 전체이고, 제2이미지는 이미지의 일부를 확대한 부분일 수 있다.
일 실시예에 따르면, 제1이미지는 이미지 데이터의 제1부분을 제1비율로 형성한 것이고, 제2이미지는 이미지 데이터의 제2부분을 제2비율로 형성한 것일 수 있다. 여기서, 제1비율 및 제2비율은 해상도 및/또는 프레임 레이트를 포함할 수 있다. 즉, 제1이미지와 제2이미지는 이미지 데이터의 동일한 부분 또는 다른 부분으로써, 해상도 및/또는 프레임 레이트 가 서로 다른 이미지 일 수 있다. 또한, 제1이미지 및 제2이미지는 프레임의 순서, 압축률, 밝기, ISO, 채도, 색공간 또는 포커스 영역 중 적어도 하나가 다른 이미지일 수 있다.
일 실시예에 따르면, 제1이미지 및 제2이미지는 각각 제1이미지 센서(552) 및 제2이미지 센서(554)에 의해 획득된 이미지일 수 있다. 이 경우, 프로세서(530)는 제1어플리케이션의 제1요청에 기초하여 제1이미지 센서(552)를 제어하고, 제2어플리케이션의 제2요청에 기초하여 제2이미지 센서(554)를 제어할 수 있다. 일 실시예에 따르면, 제1이미지 센서(552)는 제1초점 거리에 따라 촬영하여 제1이미지를 생성하고, 제2이미지 센서(554)는 제2초점 거리에 따라 촬영하여 제2이미지를 생성할 수 있다. 다른 일 실시예에 따르면, 제1이미지 및 제2이미지는 각각 제1렌즈(556) 및 제2렌즈(558)에 의해 획득된 이미지일 수 있다.
프로세서(530)의 이미지 분배 방법에 대해서는 도 10a 내지 10i를 통해 보다 상세히 설명하기로 한다.
다양한 실시예에 따르면, 제1어플리케이션 및 제2어플리케이션으로부터 제공되는 카메라 서비스 요청은 어플리케이션의 속성 타입을 포함하는 API(application programming interface) 호출을 통하여 수행될 수 있다. 여기서, 어플리케이션의 속성 타입은 획득한 이미지를 어플리케이션에서 사용할 용도와 관련될 수 있다. 예를 들어, 어플리케이션은 이미지 센서에서 획득한 이미지를 캡쳐, 녹화, 사물 인식 등에 사용하고자 할 수 있다. 이 경우, 획득한 이미지를 어플리케이션에서 사용할 용도에 따라 카메라 모듈(550) 및 프로세서(530)는 다른 속성 값에 따라 이미지 센서를 제어하게 되며, 해상도, 프레임 레이트, 초점 거리 등을 서로 다르게 결정할 수 있다. 일 실시예에 따르면, 카메라 서비스 요청은 이미지를 획득할 카메라의 ID, 획득한 이미지에 액세스 하기 위한 방법과 관련되는 출력 인터페이스 정보를 더 포함할 수 있다. 일 실시예에 따르면, 카메라 서비스 요청은 카메라 모듈(550)에 포함된 특정 이미지 센서의 ID도 포함할 수 있다.
어플리케이션의 카메라 서비스 요청에 대한 처리는 프레임워크의 카메라 매니저 상에서 정의된 인스트럭션들에 의해 수행될 수 있다. 카메라 매니저는 카메라 모듈(550)에 의해 생성된 이미지를 획득 및 처리하여 API를 통해 어플리케이션에 제공할 수 있다. 다양한 실시예에 따르면, 카메라 매니저는 카메라 확인 모듈, 카메라 오픈 모듈, 자원 분배 매니저를 포함하며, 자원 분배 매니저는 가용성 확인 모듈, 이미지 분배 모듈을 포함할 수 있다. 상기 카메라 매니저의 세부 기능에 대해서는 도 9a 내지 9d 및 10a 내지 10i를 통해 보다 상세히 설명하기로 한다.
도 6a 내지 6f는 전자 장치의 카메라에서 생성된 이미지가 디스플레이로 전달되는 과정을 도시한 것이다. 이하에서는 정지 이미지를 촬영하여 제1어플리케이션 및 제2어플리케이션에 제공하는 것을 일 예로 설명하며, 제1이미지는 카메라 모듈을 통해 획득된 이미지 데이터의 전체를, 제2이미지는 획득된 이미지 데이터의 일부 영역을 확대한 것임을 예시하여 설명하기로 한다. 앞서 설명한 바와 같이, 제1이미지 및 제2이미지의 형태는 다양하며, 이하에서 설명하는 바에 한정되지는 않는다.
도 6a는 하나의 이미지 센서를 이용해 이미지를 획득하고, 제1어플리케이션(662) 및 제2어플리케이션(664)에 제공하는 실시예에 관한 것이다.
도 6a를 참고 하면, 카메라 모듈(650)은 제1어플리케이션(662) 및 제2어플리케이션(664)의 카메라 서비스 요청에 응답하여, 하나의 이미지 데이터를 획득할 수 있다.
획득된 이미지 데이터는 카메라 모듈(650)의 내부에 마련된 버퍼(미도시)에 임시 저장 될 수 있으며, 카메라 모듈(650)은 내부에 마련된 이미지 처리 모듈(미도시)에 의해 이미지 데이터로부터 제1이미지(IMG 1) 및 제2이미지(IMG2)를 각각 생성할 수 있다.
카메라 모듈(650)은 제1이미지 및 제2이미지를 카메라 매니저(670)로 제공할 수 있다.
카메라 매니저(670)는 API를 통해 제1이미지를 제1어플리케이션(662)으로 제공하고, 제2이미지를 제2어플리케이션(664)으로 제공할 수 있다.
제1이미지 및 제2이미지는 각각 제1어플리케이션(662) 및 제2어플리케이션(664)에 의해 처리되어 디스플레이(610) 상에 적어도 일부 동시에 표시될 수 있다.
도 6b는 하나의 이미지 센서를 이용해 이미지를 획득하고, 제1어플리케이션(662) 및 제2어플리케이션(664)에 제공하는 실시예에 관한 것이다.
도 6b를 참고 하면, 카메라 모듈(650)은 제1어플리케이션(662) 및 제2어플리케이션(664)의 카메라 서비스 요청에 응답하여, 하나의 이미지 데이터를 획득하고, 획득된 이미지 데이터를 카메라 매니저(670)에 제공할 수 있다. 여기서, 카메라 모듈(650)이 획득한 이미지 데이터는 제1이미지와 동일할 수 있다.
카메라 매니저(670)는 제공 받은 이미지 데이터를 이미지 버퍼 상에 저장하고, 이미지 데이터로부터 제1이미지 및 제2이미지를 생성할 수 있다.
카메라 매니저(670)는 API를 통해 생성된 제1이미지를 제1어플리케이션(662)으로 제공하고, 제2이미지를 제2어플리케이션(664)으로 제공할 수 있다.
도 6c는 하나의 이미지 센서를 이용해 이미지를 획득하고, 하나의 어플리케이션에서 제1이미지 및 제2이미지를 생성하는 실시예에 관한 것이다.
도 6c를 참고 하면, 카메라 모듈(650)은 어플리케이션(660)의 카메라 서비스 요청에 응답하여, 하나의 이미지 데이터를 획득하고, 획득된 이미지 데이터를 카메라 매니저(670)에 제공할 수 있다.
카메라 매니저(670)는 API를 통해 생성된 제1이미지를 어플리케이션(660)에 제공할 수 있다.
어플리케이션(660)은 제1이미지로부터 제2이미지를 생성하고, 제1이미지 및 제2이미지를 디스플레이(610)를 통해 표시할 수 있다.
도 6d는 제1이미지 센서(652) 및 제2이미지 센서(654)를 이용해 이미지를 획득하고, 하나의 어플리케이션(660)에서 제1이미지 및 제2이미지를 처리하여 표시하는 실시예에 관한 것이다.
도 6d를 참고 하면, 카메라 모듈(650)은 제1이미지 센서(652) 및 제2이미지 센서(654)를 포함하며, 제1이미지 센서(652)는 제1이미지를 획득하고, 제2이미지 센서(654)는 제2이미지를 획득할 수 있다. 카메라 모듈(650)은 획득한 제1이미지 및 제2이미지를 카메라 매니저(670)에 제공할 수 있다.
카메라 매니저(670)는 제1이미지 및 제2이미지를 API 호출을 통해 요청한 어플리케이션(660)에 제공할 수 있다. 어플리케이션(660)은 제공 받은 제1이미지 및 제2이미지를 처리하여, 디스플레이(610) 상에 표시할 수 있다.
도 6e는 제1이미지 센서(652) 및 제2이미지 센서(654)를 이용해 이미지를 획득하고, 제1어플리케이션(662) 및 제2어플리케이션(664) 각각에서 제1이미지 및 제2이미지를 모두 처리하여 표시하는 실시예에 관한 것이다.
도 6e를 참고 하면, 카메라 모듈(650)은 제1이미지 센서(652) 및 제2이미지 센서(654)를 포함하며, 제1이미지 센서(652)는 제1이미지를 획득하고, 제2이미지 센서(654)는 제2이미지를 획득할 수 있다. 카메라 모듈(650)은 획득한 제1이미지 및 제2이미지를 카메라 매니저(670)에 제공할 수 있다.
카메라 매니저(670)는 제1어플리케이션(662)에 제1이미지 및 제2이미지를 제공하고, 제2어플리케이션(664)에도 제1이미지 및 제2이미지를 제공할 수 있다.
일 실시예에 따르면, 카메라 매니저(670)는 제1이미지 및 제2이미지를 가공하거나 합친 다음, 합쳐진 이미지의 전체 또는 일부를 제3이미지 및 제4이미지로 생성할 수 있다. 카메라 매니저(670)는 제3이미지 및 제4이미지를 각각 제1어플리케이션(662) 및 제2어플리케이션(664)에 제공할 수 있다.
도 6a 내지 도 6e는 본 발명의 다양한 실시예들 중 일부에 해당하며, 카메라 기능을 사용할 수 있는 어플리케이션의 수, 이미지 센서의 수에는 정함이 없고, 카메라 모듈에서 획득된 이미지로부터 복수의 이미지를 생성하는 방법 역시 다양할 수 있다.
또한, 일 실시예에 따르면, 전자 장치(600)는 복수의 렌즈로부터 각각 이미지를 획득할 수 있다. 도 6f에 도시된 바와 같이 카메라 모듈(650)는 제1렌즈(656) 및 제2렌즈(658)를 포함하며, 제1렌즈(656)는 제1이미지를 획득하고, 제2렌즈(658)는 제2이미지를 획득할 수 있다. 획득한 제1이미지 및 제2이미지는 카메라 매니저(670)에 제공될 수 있다. 카메라 매니저(670)는 제1어플리케이션(662)에 제1이미지 및 제2이미지를 제공하고, 제2어플리케이션(664)에도 제1이미지 및 제2이미지를 제공할 수 있다. 상술한 도 6f 이외에 복수의 렌즈로부터 각각 이미지를 획득하여 카메라 매니저로 전송하는 다양한 실시예들이 가능하다.
도 7a 및 7b는 전자 장치의 카메라에서 생성된 이미지를 어플리케이션으로 전달하기 위한 과정을 도시한 것이다.
도 7a 및 7b는 각각의 하드웨어 및 소프트웨어 계층에서, 이미지 데이터를 어플리케이션에 전달하는 과정을 설명하고 있으며, 하드웨어, 드라이버, HAL(hardware abstraction layer), 프레임워크(framework), API(application programming interface) 및 어플리케이션을 포함할 수 있다.
도 7a 및 7b를 참고 하면, 전자 장치의 카메라 모듈은 제1 내지 제3 이미지 센서(752, 754, 756)를 포함하며, 각 이미지 센서를 구동하기 위한 제1 내지 제3 드라이버(782, 784, 786)를 포함할 수 있다. 프레임워크에는 카메라 매니저(770)가 포함되며, 카메라 매니저(770)는 전자 장치에 포함된 이미지 센서(예를 들어, 752, 754, 756)의 리스트 및 각 이미지 센서의 속성을 확인하기 위한 카메라 확인 모듈(771) 및 어플리케이션(예를 들어, 762, 764, 766)의 요청에 따라 적어도 하나의 이미지 센서를 인에이블 하기 위한 카메라 오픈 모듈(772)을 포함할 수 있다.
도 7a는 본 발명의 다양한 실시예들에 대한 비교예를 도시하고 있다. 도 7a를 통해 설명하는 내용들은 이하에서 설명할 본 발명의 다양한 실시예에 도달하기 위해 연구된 것으로써, 종래 기술로 간주되어서는 안된다.
제1어플리케이션(762)이 실행된 후 API 호출을 통해 카메라 서비스를 요청할 수 있다. 이는 API를 통해 프레임워크로 전달되며, 카메라 매니저(770)는 HAL(790)과 제1 드라이버(782)를 거쳐 제1이미지 센서(752)에 이미지 획득을 요청할 수 있다. 제1이미지 센서(752)에서 획득된 이미지는 제1 드라이버(782), HAL(790) 및 카메라 매니저(770)를 거쳐 제1어플리케이션(762)으로 전송될 수 있다.
제1어플리케이션(762)에 제1이미지 센서(752)의 이미지 데이터가 전송되는 동안 제2어플리케이션(764)으로부터 카메라 서비스 요청이 수신될 수 있다. 도 7a의 비교예에 따르면, 제1이미지 센서(752)의 이미지 획득 기능을 제1어플리케이션(762)이 점유하고 있으므로, 카메라 매니저(770)는 제2어플리케이션(764)의 API 호출에 대해 액세스가 승인될 수 없음을 알리는 응답 메시지(NA)를 전송할 수 있다.
즉, 도 7a의 비교예에 따르면 하나의 어플리케이션(예를 들어, 762) 만이 카메라 리소스(예를 들어, 752)에 접근 가능하며, 제1어플리케이션(762) 및 제2어플리케이션(764)이 동시에 카메라 서비스를 점유할 수 없다.
도 7b의 실시예에 따르면, 도 7a와 달리 제1어플리케이션(762) 및 제2어플리케이션(764)의 카메라 서비스 요청을 동시에 처리할 수 있다. 이를 위해, 카메라 매니저(770)는 자원 분배 매니저(773)를 더 포함하며, 자원 분배 매니저(773)는 가용성 확인 모듈(774) 및 이미지 분배 모듈(775)을 포함할 수 있다.
제1어플리케이션(762) 및 제2어플리케이션(764)은 어플리케이션의 속성 타입을 포함하는 API 호출을 통해 카메라 서비스를 요청할 수 있다. 여기서, 어플리케이션의 속성 타입은 획득한 이미지를 어플리케이션에서 사용할 용도(예를 들어, 정지 이미지 캡쳐, 동영상 녹화, 객체 인식)와 관련될 수 있다. 제1어플리케이션(762) 및/또는 제2어플리케이션(764)은 1개 이상의 속성타입을 같이 요청할 수 있다. 예를 들어, 제1어플리케이션(762) 및/또는 제2어플리케이션(764)은 사진 촬영 및 동영상 녹화를 동시에 수행하는 어플리케이션일 수 있으며, 이 경우 사진 촬영 및 동영상 녹화에 대한 속성 타입이 모두 포함될 수 있다. 일 실시예에 따르면, 일 실시예에 따르면, 속성 타입은 이미지의 해상도, 압축 품질, 프레임 레이트 등을 직접 지정하거나 아웃풋 인터페이스에 포함된 값을 사용할 수 있다.
제1이미지 센서로(또는 제1렌즈)부터 획득된 이미지를 제1어플리케이션(762)에 제공하는 동안, 제2어플리케이션(764)으로부터 카메라 API 호출이 수신되면, 가용성 확인 모듈(774)은 카메라 모듈 및 메모리 등의 리소스를 확인하여 제2어플리케이션(764)에 이미지를 제공할 수 있는 지 확인할 수 있다. 확인 결과, 제2어플리케이션(764)에 이미지 제공이 가능하면, 이미지 분배 모듈(775)은 하나 이상의 분배 방법을 통하여 획득된 이미지를 분배할 수 있다. 일 실시예에 따르면, 제1어플리케이션(762) 및 제2어플리케이션(764)으로 제공되는 이미지는 별도의 버퍼 메모리에 저장될 수 있다.
가용성 확인 모듈(774)은 카메라 모듈과 속성 타입을 기준으로 사용 가능한 리소스를 확인하되, 전자장치의 각 구성, 예를 들어, cpu, 휘발성 메모리, 비휘발성메모리, 카메라 모듈의 성능을 기준으로 미리 정의된 최대치를 고려하여 사용 가능한 리소스를 확인할 수 있다. 가용성 확인 모듈(774)은 전자 장치의 각 구성의 성능에 따라 가용성을 판단하는 알고리즘 및/또는 함수를 가질 수 있다. 속성의 예중 하나인 사용 목적을 속성타입으로 하는 경우 각 목적에 따라 제공하는 해상도, 압축품질, frame rate 등도 사전에 정의될 수 있다. 일 실시예에 따르면, 표/배열/함수등을 이용해서 사전에 정의된 최대치와 현재 요구되는 수치를 비교하여 가능한지 아닌지를 응답할 수 있다. 또 가용성 확인 모듈(774)은 현재 카메라모듈의 동작 상태값을 확인하고 어플리케이션에서 속성 타입을 통해 요청한 동작이 가능한지를 응답할 수 있다. 가용성 확인 모듈(774)은 어플리케이션의 요청에 따른 카메라의 설정값이나 상태값을 저장할 수 있다.
가용성 확인 모듈(774) 및 이미지 분배 모듈(775)의 보다 상세한 동작에 대해서는 도 8 내지 도 10을 통해 보다 상세히 설명하기로 한다.
도 8a는 본 발명의 다양한 실시예에 따른 전자 장치의 이미지 제공 방법의 순서도이다.
동작 801에서, 전자 장치의 프로세서(예를 들어, 도 5의 프로세서(530)는 제1어플리케이션의 카메라 서비스 요청을 수신할 수 있다.
동작 802에서, 프로세서는 제1어플리케이션의 카메라 서비스 요청에 응답하여, 카메라 모듈로부터 획득된 이미지를 제1어플리케이션에 제공할 수 있다.
동작 803에서, 프로세서는 제1어플리케이션으로 이미지를 제공하는 동안 제2어플리케이션으로부터 카메라 서비스 요청을 수신할 수 있다. 카메라 서비스 요청은 어플리케이션의 속성 타입을 포함하는 API 호출을 통해 수행될 수 있다.
동작 804에서, 프로세서는 제2어플리케이션의 카메라 서비스 요청에 포함된 제2어플리케이션의 속성 타입을 확인할 수 있다.
동작 805에서, 프로세서는 전자 장치의 카메라 모듈, 메모리 등 각 구성의 가용한 리소스를 체크할 수 있다.
리소스의 체크 결과, 리소스가 충분한 경우, 동작 806에서, 제2어플리케이션에 카메라 모듈에서 획득된 이미지를 제공할 수 있다. 이와 달리, 리소스가 불충분한 경우, 에러 메시지를 전송하고 이미지를 제공하지 않을 수 있다.
도 8b은 본 발명의 다양한 실시예에 따른 이미지 분배 방법을 도시한 것이다.
도시된 바와 같이, 전자 장치(예를 들어, 도 5의 전자 장치(500))는 복수의 어플리케이션(예를 들어, 제1어플리케이션(862) 및 제2어플리케이션(864)) 및 카메라 매니저(870)를 포함할 수 있다. 앞서 설명한 바와 같이, 카메라 매니저(870)는 프레임워크 상에서 정의되며, 프로세서(예를 들어, 도 5의 프로세서(530))는 카메라 매니저(870)를 구성하는 인스트럭션들을 메모리(예를 들어, 도 5의 메모리(540) 또는 휘발성 메모리(542)) 상에 로딩하여, 카메라 매니저(870)의 기능을 수행할 수 있다. 도 8b에서는 하나의 이미지 센서(또는 카메라)만을 포함하는 것으로 설명하나, 본 발명의 다양한 실시예들은 이에 한정되지는 않는다.
제1어플리케이션(862)의 카메라 서비스 요청은 카메라 오픈 모듈(872)에 제공될 수 있다. 여기서, 카메라 서비스 요청은 API 호출을 통해 수행되며, 제1어플리케이션(862)의 속성 타입 및 제1어플리케이션(862)에 획득된 이미지를 제공하기 위한 출력 인터페이스 정보를 포함할 수 있다. 카메라 오픈 모듈(872)은 제1어플리케이션(862)의 속성 타입을 가용성 확인 모듈(874)로 전달하고, 이미지 분배 모듈(875)은 출력 인터페이스 정보를 수신할 수 있다.
일 실시예에 따르면, 전자 장치는 설치된 각각의 어플리케이션의 속성 타입을 포함하는 속성 테이블을 저장할 수 있으며, 자원 분배 매니저(873)는 어플리케이션의 인덱스(index)에 기반하여 어플리케이션의 속성 타입을 확인할 수 있다. 이 경우, 카메라 서비스 요청 시 어플리케이션은 속성 타입을 전송하지 않고, 어플리케이션의 인덱스 정보 만을 제공할 수도 있다.
가용성 확인 모듈(874)은 현재 카메라 모듈(850) 및 메모리의 리소스를 확인하고, 제1어플리케이션(862)에 이미지 제공이 가능한 것으로 확인되는 경우, 카메라 모듈(850)에 카메라 서비스를 요청할 수 있다. 또한, 가용성 확인 모듈(874)은 이와 적어도 일부 동시에, 이미지를 제공할 이미지 센서의 고유 ID 및 카메라 모듈(850)을 제어할 수 있는 핸들러를 제1어플리케이션(862)에 제공할 수 있다.
카메라 모듈에서 획득된 이미지는 이미지 버퍼(877)에 임시 저장되고, 출력 인터페이스(876)를 통해 제1어플리케이션(862)에 제공될 수 있다. 일 실시예에 따르면, 이미지 버퍼(877)는 각각의 어플리케이션 별로 메모리 내에서 별도의 영역으로 할당될 수 있다.
상술한 제1어플리케이션(862)에 획득된 이미지를 제공함과 적어도 일부 동시에, 제2어플리케이션(864)이 카메라 서비스 요청을 카메라 매니저(870)에 전송할 수 있다. 여기서, 제2어플리케이션(864)의 카메라 서비스 요청은 제2어플리케이션(864)의 속성 타입 및 제2어플리케이션(864)에 획득된 이미지를 제공하기 위한 출력 인터페이스(876) 정보를 포함할 수 있다.
카메라 오픈 모듈(872)은 제2어플리케이션(864)의 속성 타입을 가용성 확인 모듈(874)로 전달하고, 이미지 분배 모듈(875)은 출력 인터페이스(876) 정보를 수신할 수 있다.
가용성 확인 모듈(874)은 현재 카메라 모듈(850) 및 메모리의 리소스를 확인하고, 제2어플리케이션(864)에 이미지 제공이 가능한 것으로 확인되는 경우, 카메라 모듈(850)에 카메라 서비스를 요청한다. 또한, 가용성 확인 모듈(874)은 이와 적어도 일부 동시에, 이미지를 제공할 이미지 센서의 고유 ID 및 카메라 모듈을 제어할 수 있는 핸들러를 제2어플리케이션(864)에 제공할 수 있다.
이에 따라, 제1이미지는 출력 인터페이스(876)를 통해 제1어플리케이션(862)에 제공되고, 제2이미지는 제2어플리케이션(864)에 제공될 수 있다.
한편, 가용성 확인 모듈(874)은 현재 카메라 모듈 및/또는 메모리의 리소스 부족으로 제2어플리케이션(864)에 이미지 제공이 불가능한 것으로 확인되는 경우, 제2어플리케이션(864)의 액세스가 승인될 수 없음을 알리는 응답 메시지를 전송할 수 있다.
도 9a 내지 9d는 본 발명의 다양한 실시예에 따라, 각 어플리케이션이 카메라에 이미지 전송을 요청하기 위한 과정을 도시한 것이다.
도 9a는 제1어플리케이션(962)의 최초 등록 과정을 도시한 것이다.
제1어플리케이션(962)은 API를 통해 카메라 매니저(970)에 카메라 매니저(970)에 의해 운영되는 전자 장치에 구비된 카메라의 리스트를 요청하고, 카메라 확인 모듈(971)은 미리 저장된 카메라 정보를 기반으로 전자 장치에 구비된 카메라의 리스트를 제1어플리케이션(962)에 전송할 수 있다(Get list of camera).
카메라 리스트가 확인되면, 제1어플리케이션(962)은 카메라의 식별 정보를 포함하는 카메라 정보 요청 메시지를 전송하고(Get camera info(cameraDeviceID)), 카메라 확인 모듈(971)은 가용성 확인 모듈(974)에 해당 카메라의 사용 정보를 요청할 수 있다.
가용성 확인 모듈(974)은 해당 카메라 및 메모리 등의 리소스를 확인하고, 사용 가능한 경우 응답 메시지를 카메라 확인 모듈(971)을 통해 제1어플리케이션(962)으로 전달할 수 있다.
제1어플리케이션(962)은 카메라 오픈 요청 메시지를 카메라 오픈 모듈(972)에 전송할 수 있다(RequestOpenCamera(cameraDeviceID, OPEN_TYPE_CAPTURE, OutputInterface)). 여기서, 카메라 오픈 요청 메시지는 카메라의 ID, 제1어플리케이션(962)의 속성 타입 및 제1어플리케이션(962)에 획득된 이미지를 제공하기 위한 출력 인터페이스 정보를 포함할 수 있다. 앞서 설명한 바와 같이, 제1어플리케이션(962)의 속성 타입은 획득한 이미지를 제1어플리케이션(962)에서 사용할 용도에 대한 정보를 포함하며, 도 9a에 도시된 바와 같이, 제1어플리케이션(962)은 속성 타입이 캡쳐 임을 포함하여(OPEN_TYPE_CAPTURE) 카메라 오픈 모듈(972)에 전송할 수 있다. 출력 인터페이스 정보는 카메라에서 획득할 이미지를 위해 할당되는 메모리, 메모리 포인터 또는 그들을 포함하는 객체나 함수 포인터, 인터페이스 클래스 객체 등일 수 있다.
카메라 오픈 모듈(972)은 수신한 카메라 오픈 요청 메시지에 기초하여, 가용성 확인 모듈(974)에 제1어플리케이션(962)의 등록 요청 메시지를 전송할 수 있다(Register(cameraDeviceID, OPEN_TYPE_CAPTURE)).
가용성 확인 모듈(974)은 제1어플리케이션(962)이 요청한 카메라가 캡쳐 용도의 이미지를 획득할 수 있는 지 확인하고, 가능한 경우 제1어플리케이션(962)을 등록할 수 있다. 또한, 가용성 확인 모듈(974)은 카메라 모듈(950)에 카메라의 ID를 포함하여 카메라 하드웨어의 오픈을 요청할 수 있다.
이 후, 가용성 확인 모듈(974)은 주기적 또는 소정의 이벤트 발생 시 카메라 ID, 어플리케이션의 속성 타입 등을 포함하여 카메라 상태를 업데이트 할 수 있다(updateCameraState(cameraDeviceID, OPEN_TYPE_CAPTURE)).
가용성 확인 모듈(974)은 제1어플리케이션(962)에서 요청한 출력 인터페이스)와 출력 스펙을 등록 할 수 있다(RegisterOutputBuffer(OutputInterface,OutputSpec)). 여기서, 출력 스펙은 카메라(950)의 속성 정보로써 카메라(950)가 획득할 이미지의 해상도, 프레임 레이트 등을 포함할 수 있다.
또한, 제1어플리케이션(962)이 카메라를 제어할 수 있는 핸들러를 제1어플리케이션(962)에 전송할 수 있다.
도 9b는 제1어플리케이션(962)의 구동 중 제2어플리케이션(964)의 등록 과정을 도시한 것이다. 도 9b는 도 9a의 제1어플리케이션(962)의 등록 이후의 과정에 대한 것으로, 제2어플리케이션(964)이 제1어플리케이션(962)과 동일한 목적(예를 들어, 캡쳐)으로 카메라 서비스를 사용하고자 하는 실시예에 관한 것이다.
제2어플리케이션(964)이 카메라 확인 모듈(971)을 통해 카메라 리스트를 획득하고(Get list of camera), 카메라 정보를 획득하는 과정(Get camera info(cameraDeviceID)) 및 가용성 확인 모듈(974)에 카메라 사용 정보를 요청하는 동작은 앞서 도 9a에서 설명한 바와 동일할 수 있다.
제2어플리케이션(964)은 카메라 오픈 요청 메시지를 카메라 오픈 모듈(972)에 전송할 수 있다(RequestOpenCamera(cameraDeviceID, OPEN_TYPE_CAPTURE, OutputInterface)). 여기서, 카메라 오픈 요청 메시지는 카메라의 ID, 제2어플리케이션(964)의 속성 타입 및 제2어플리케이션(964)에 획득된 이미지를 제공하기 위한 출력 인터페이스 정보를 포함할 수 있다. 도 9b에 도시된 바와 같이, 제2어플리케이션(964)은 속성 타입이 캡쳐 임을 포함하여(OPEN_TYPE_CAPTURE) 카메라 오픈 모듈(972)에 전송할 수 있다.
카메라 오픈 모듈(972)은 수신한 카메라 오픈 요청 메시지에 기초하여, 가용성 확인 모듈(974)에 제2어플리케이션(964)의 등록 요청 메시지를 전송할 수 있다(Register(cameraDeviceID, OPEN_TYPE_CAPTURE)).
가용성 확인 모듈(974)은 제2어플리케이션(964)이 요청한 카메라가 캡쳐 용도의 이미지를 획득할 수 있는 지 확인하고, 가능한 경우 제2어플리케이션(964)을 등록할 수 있다.
본 실시예에서, 제1어플리케이션(962) 및 제2어플리케이션(964)은 속성 타입이 캡쳐로써 동일할 수 있다. 이 경우, 카메라는 동일한 속성(예를 들어, 해상도, 프레임 레이트 등)으로 이미지를 획득하여, 제1어플리케이션(962) 및 제2어플리케이션(964)에 제공할 수 있다. 이에 따라, 제2어플리케이션(964)의 요청에 따라 카메라 하드웨어의 오픈을 요청하는 과정은 불필요 하며, 카메라(950)는 제1어플리케이션(962)에서 요청한 출력 스펙에 따라서 계속하여 이미지를 획득할 수 있다.
가용성 확인 모듈(974)은 제2어플리케이션(964)에서 요청한 출력 인터페이스(976)와 출력 스펙을 등록 할 수 있다(RegisterOutputBuffer(OutputInterface,OutputSpec)).
또한, 가용성 확인 모듈(974)은 제2어플리케이션(964)이 카메라를 제어할 수 있는 핸들러를 제2어플리케이션(964)에 전송할 수 있다.
도 9c는 제1어플리케이션(962)의 구동 중 제2어플리케이션(964)의 등록 과정을 도시한 것이다. 도 9c는 도 9a의 제1어플리케이션(962)의 등록 이후의 과정에 대한 것으로, 도 9b와 달리 제2어플리케이션(964)이 제1어플리케이션(962)과 다른 목적(예를 들어, 객체 인식)으로 카메라 서비스를 사용하고자 하는 실시예에 관한 것이다.
제2어플리케이션(964)이 카메라 확인 모듈(971)을 통해 카메라 리스트를 획득하고(Get list of camera), 카메라 정보를 획득하는 과정(Get camera info(cameraDeviceID)) 및 가용성 확인 모듈(974)에 카메라 사용 정보를 요청하는 동작은 앞서 도 9a 및 9b에서 설명한 바와 동일할 수 있다.
제2어플리케이션(964)은 카메라 오픈 요청 메시지를 카메라 오픈 모듈(972)에 전송할 수 있다(RequestOpenCamera(cameraDeviceID, OPEN_TYPE_RECOGNITION, OutputInterface)). 여기서, 카메라 오픈 요청 메시지는 카메라의 ID, 제2어플리케이션(964)의 속성 타입 및 제2어플리케이션(964)에 획득된 이미지를 제공하기 위한 출력 인터페이스 정보를 포함할 수 있다. 도 9c에 도시된 바와 같이, 제2어플리케이션(964)은 속성 타입이 객체 인식 임을 포함하여(OPEN_TYPE_RECOGNITION) 카메라 오픈 모듈(972)에 전송할 수 있다.
카메라 오픈 모듈(972)은 수신한 카메라 오픈 요청 메시지에 기초하여, 가용성 확인 모듈(974)에 제2어플리케이션(964)의 등록 요청 메시지를 전송할 수 있다(Register(cameraDeviceID, OPEN_TYPE_RECOGNITION)).
가용성 확인 모듈(974)은 제2어플리케이션(964)이 요청한 카메라가 객체 인식 용도의 이미지를 획득할 수 있는 지 확인하고, 가능한 경우 제2어플리케이션(964)을 등록할 수 있다.
가용성 확인 모듈(974)은 제1어플리케이션(962)의 속성 타입(캡쳐)과 다른 속성 타입(객체 인식)가 제2어플리케이션(964)으로부터 전송 된 바, 카메라 서비스의 변경을 요청할 수 있다. 이 때, 변경 요청 메시지는\ 카메라 ID 및 변경할 서비스(객체 인식)를 위한 파라미터를 포함할 수 있다(ChangeCameraService (cameraDeviceID,parameter)). 이미지 캡쳐의 경우, 정확한 타이밍의 촬영을 위해 높은 프레임 레이트(예를 들어, 60frame/sec)로 동작하는 것이 필요하나, 객체 인식의 경우 보다 낮은 프레임 레이트(예를 들어, 10frame/sec)로 동작해도 무방하다. 또한, 객체 인식의 경우 이미지 캡쳐보다 낮은 해상도로 촬영해도 무방하다.
따라서, 가용성 확인 모듈(974)은 제2어플리케이션(964)의 속성 타입에 따라, 변경될 카메라 속성에 대한 파라미터를 카메라로 전송할 수 있다.
일 실시예에 따르면, 제1어플리케이션(962) 및 제2어플리케이션(964)의 속성 타입이 다른 경우, 가용성 확인 모듈(974)은 속성 타입 중 보다 높은 파라미터(예를 들어, 해상도 및 프레임 레이트)로 이미지를 획득할 것을 카메라에 요청할 수 있다. 예를 들어, 고해상도 이미지 캡쳐와 저해상도 이미지 캡쳐가 각각 제1어플리케이션(962) 및 제2어플리케이션(964)으로부터 전송되는 경우, 가용성 확인 모듈(974)은 고해상도 이미지를 획득하도록 카메라에 요청할 수 있다. 이 경우, 카메라 매니저(970)의 이미지 처리 모듈(미도시)에서 고해상도 이미지를 저해상도 이미지로 변환하여 제2어플리케이션(964)으로 제공할 수 있다.
이 후, 가용성 확인 모듈(974)은 주기적 또는 소정의 이벤트 발생 시 카메라 ID, 어플리케이션의 속성 타입 등을 포함하여 카메라 상태를 업데이트 할 수 있다(updateCameraState(cameraDeviceID, OPEN_TYPE_CAPTURE)).
가용성 확인 모듈(974)은 제2어플리케이션(964)에서 요청한 출력 인터페이스(976)와 출력 스펙을 등록 할 수 있다(RegisterOutputBuffer(OutputInterface,OutputSpec)). 여기서, 출력 스펙은 카메라의 속성 정보로써 카메라가 획득할 이미지의 해상도, 프레임 레이트 등을 포함할 수 있다.
또한, 제2어플리케이션(964)이 카메라를 제어할 수 있는 핸들러를 제2어플리케이션(964)에 전송할 수 있다.
도 9d는 제1어플리케이션(962) 및 제2어플리케이션(964)의 구동 중 제3어플리케이션(966)의 등록 과정을 도시한 것이다. 도 9d는 도 9b 또는 9c의 제2어플리케이션(964)의 등록 이후의 과정에 대한 것이다.
제3어플리케이션(966)이 카메라 확인 모듈(971)을 통해 카메라 리스트를 획득하고(Get list of camera), 카메라 정보를 획득하는 과정(Get camera info(cameraDeviceID)) 및 가용성 확인 모듈(974)에 카메라 사용 정보를 요청하는 동작은 앞서 도 9a 내지 9c에서 설명한 바와 동일할 수 있다.
제3어플리케이션(966)은 카메라 오픈 요청 메시지를 카메라 오픈 모듈(972)에 전송할 수 있다(RequestOpenCamera(cameraDeviceID, OPEN_TYPE_CAPTURE, OutputInterface)). 여기서, 카메라 오픈 요청 메시지는 카메라의 ID, 제3어플리케이션(966)의 속성 타입 및 제3어플리케이션(966)에 획득된 이미지를 제공하기 위한 출력 인터페이스 정보를 포함할 수 있다. 도 9c에 도시된 바와 같이, 제3어플리케이션(966)은 속성 타입이 캡쳐 임을 포함하여(OPEN_TYPE_CAPTURE) 카메라 오픈 모듈(972)에 전송할 수 있다.
카메라 오픈 모듈(972)은 수신한 카메라 오픈 요청 메시지에 기초하여, 가용성 확인 모듈(974)에 제3어플리케이션(966)의 등록 요청 메시지를 전송할 수 있다(Register(cameraDeviceID, OPEN_TYPE_CAPTURE)).
가용성 확인 모듈(974)은 제3어플리케이션(966)이 요청한 카메라가 캡쳐 용도의 이미지를 획득할 수 있는 지 확인할 수 있다. 이 경우, 카메라 하드웨어는 이미 등록된 것과 동일하고, 그 목적(캡쳐)은 동일하나, 카메라 모듈(950) 또는 메모리 리소스의 한계 상 사용 불가능한 것으로 결정될 수 있다. 이 경우, 가용성 확인 모듈(974)은 에러 코드를 제3어플리케이션(966)으로 전송할 수 있다.
다른 일 실시예에 따르면, 가용성 확인 모듈(974)은 카메라(950)에 동시에 액세스 가능한 어플리케이션의 수를 한정하고(예를 들어, 2개), 이를 초과하여 카메라 서비스를 요청하는 어플리케이션의 액세스를 차단할 수 있다.
도 10a 내지 10i는 본 발명의 다양한 실시예에 따라, 카메라에서 생성된 이미지를 각 어플리케이션으로 분배하는 방법을 도시한 것이다.
앞서 설명한 바와 같이, 전자 장치는 카메라 모듈(1050)에서 획득한 적어도 하나의 이미지들을, 하나 이상의 분배 방법을 통하여, 제1어플리케이션(1062) 및 제2어플리케이션(1064)으로 분배할 수 있다.
도 10a 및 10b는 카메라에서 획득한 이미지를 프레임을 교차하여 제공하는 실시예에 관한 것이다.
일 실시예에 따르면, 카메라는 순차적으로 획득되는 이미지 프레임들(예를 들어, frame 1 내지 frame 8)을 교차하여 각각 제1어플리케이션(1062) 및 제2어플리케이션(1064)으로 전송할 수 있다.
도 10a에 도시된 바와 같이, 홀수 번째 이미지 프레임은 제1어플리케이션(1062)에 제공되고, 짝수 번째 이미지 프레임은 제2어플리케이션(1064)에 제공될 수 있다. 일 실시예에 따르면, 제1어플리케이션(1062) 및 제2어플리케이션(1064)은 동일한 속성 타입, 예를 들어 캡쳐의 용도로 이미지를 요청할 수 있다. 이와 같이, 제1어플리케이션(1062) 및 제2어플리케이션(1064)이 동일한 속성 타입인 경우, 카메라에서 획득된 이미지는 동일한 프레임 레이트(frame rate)로 제1어플리케이션(1062) 및 제2어플리케이션(1064)에 전송될 수 있다.
다른 일 실시예에 따르면, 도 10b에 도시된 바와 같이, 카메라는 순차적으로 획득되는 이미지 프레임들 중 복수의 프레임(예를 들어, frame 1 내지 frame 4)을 제1어플리케이션(1062)에 제공하고, 하나의 프레임(예를 들어, frame 5)을 제2어플리케이션(1064)에 제공하는 방식으로 이미지를 분배할 수 있다.
일 실시예에 따르면, 제1어플리케이션(1062) 및 제2어플리케이션(1064)은 서로 다른 속성 타입을 가질 수 있으며, 제1어플리케이션(1062)은 이미지 캡쳐, 제2어플리케이션(1064)은 객체 인식을 요청하는 등 서로 다른 프레임 레이트의 이미지가 필요한 경우가 있다. 이 경우, 카메라에서 60 frame/sec로 이미지를 획득하여, 보다 높은 프레임 레이트가 필요한 제1어플리케이션(1062)에는 초당 48프레임을 제공하고, 낮은 프레임 레이트도 충분한 제2어플리케이션(1064)에는 초당 12프레임만을 제공할 수 있다.
도 10a 및 10b의 실시예에서는 카메라에서 획득한 이미지를 프레임 단위로 시간적으로 분할하여 제1어플리케이션(1062) 및 제2어플리케이션(1064)으로 전송하므로, 별도로 이미지 버퍼(1077)에 카메라에서 획득한 이미지를 저장할 필요 없이 카메라(1050)에서 바로 출력 인터페이스(1076)를 통해 제1어플리케이션(1062) 및 제2어플리케이션(1064)에 제공할 수 있다. 일 실시예에 따르면, 이미지 분배 모듈(1075)은 각 어플리케이션이 로딩 된 메모리의 영역에 획득한 이미지를 복사해 주거나, 이미지를 메모리의 다른 영역에 저장하고 저장된 영역의 주소를 각 어플리케이션에 제공해 줄 수도 있다.
도 10c 및 10d는 카메라에서 획득한 이미지를 복제하여 제공하는 실시예에 관한 것이다.
도 10c에 도시된 바와 같이, 카메라에(1050)서 획득된 하나 이상의 이미지는 이미지 버퍼(1077)에 저장될 수 있다. 이미지 분배 모듈(1075)은 제1어플리케이션(1062) 및 제2어플리케이션(1064)의 출력 인터페이스(1076)로 이미지 버퍼(1077) 상에서 획득된 이미지가 저장된 주소를 제1어플리케이션(1062) 및 제2어플리케이션(1064)의 출력 인터페이스(1076)로 제공하거나, 획득된 이미지를 복사하여 각각 제1어플리케이션(1062) 및 제2어플리케이션(1064)으로 제공할 수 있다.
이 경우, 출력 인터페이스(1076)의 물리적 메모리 영역과 획득된 이미지가 임시 저장되는 이미지 버퍼(1077)의 물리적 메모리 영역은 동일할 수 있다.
도 10d에 도시된 바와 같이, 제1어플리케이션(1062) 및 제2어플리케이션(1064)이 다른 속성 타입, 예를 들어 제1어플리케이션(1062)은 고해상도 이미지의 캡쳐, 제2어플리케이션(1064)은 저해상도 이미지의 캡쳐를 요청할 수 있다. 카메라 오픈 모듈(1072)은 이와 같은 카메라 서비스 요청에 응답하여 카메라(1050)를 고해상도로 구동하고, 고해상도 이미지를 획득할 수 있다.
획득된 고해상도 이미지는 이미지 버퍼(1077)의 일 영역에 저장되며, 제1어플리케이션(1062)의 출력 인터페이스(1076)를 통해 제공될 수 있다.
또한, 이미지 분배 모듈(1075)은 획득된 고해상도 이미지를 저해상도 이미지로 복제하여 제2어플리케이션(1064)의 출력 인터페이스(1076)를 통해 제공할 수 있다. 일 실시예에 따르면, 이미지 분배 모듈(1075)은 고해상도 이미지를 저해상도 이미지로 변환하는 등 이미지 버퍼(1077)에 저장된 이미지의 특성(예를 들어, 해상도, 프레임 레이트 등)을 어플리케이션의 요청에 따라 변경할 수 있는 이미지 처리 모듈(미도시)을 더 포함할 수 있다.
도 10e 및 10f는 제1어플리케이션(1062) 및 제2어플리케이션(1064)이 카메라(1050)에서 획득한 이미지에 액세스 하는 방법에 관한 것이다.
일 실시예에 따르면, 카메라(1050)에서 획득된 이미지는 이미지 버퍼(1077)에 저장되고, 제1어플리케이션(1062) 및 제2어플리케이션(1064)에는 이미지가 저장된 영역의 주소 정보가 제공될 수 있다. 제1어플리케이션(1062) 및 제2어플리케이션(1064)은 제공 받은 주소 정보에 따라 이미지 버퍼(1077)에 액세스 하여 이미지를 획득할 수 있다.
일 실시예에 따르면, 도 10e에 도시된 바와 같이, 제1어플리케이션(1062) 및 제2어플리케이션(1064)은 순차적으로 이미지 버퍼(1077)에 액세스 할 수 있다.
카메라(1050)에서 획득된 이미지가 이미지 버퍼(1077)에 제공되면, 이미지 분배 모듈(1075)은 출력 인터페이스(1076)를 통해 이미지가 이미지 버퍼(1077) 영역의 주소를 제공할 수 있다.
상기 주소 정보는 먼저 제1어플리케이션(1062)에 의해 획득되며, 제1어플리케이션(1062)은 주소 정보를 통해 이미지가 저장된 영역에 액세스 하여 이미지를 획득할 수 있다. 제1어플리케이션(1062)은 이미지 획득이 완료되면 이미지 분배 모듈(1075)로 완료 메시지를 전송하며, 다음으로 제2어플리케이션(1064)이 주소 정보를 통해 이미지가 저장된 영역에 액세스 하여 이미지를 획득할 수 있다. 제2어플리케이션(1064)의 완료 메시지가 전송되면 이미지 분배 모듈(1075)은 이미지 버퍼(1077)에 저장된 해당 이미지를 삭제(또는 해제)할 수 있다.
일 실시예에 따르면, 도 10f에 도시된 바와 같이, 제1어플리케이션(1062) 및 제2어플리케이션(1064)이 동시에 이미지 버퍼(1077)에 액세스 할 수 있다.
카메라에서 획득된 이미지가 이미지 버퍼(1077)에 제공되면, 이미지 분배 모듈(1075)은 출력 인터페이스(1076)를 통해 이미지가 이미지 버퍼(1077) 영역의 주소를 제공할 수 있다.
상기 주소 정보는 제1어플리케이션(1062) 및 제2어플리케이션(1064)에 동시 또는 순차적으로 접속할 수 있으며, 제1어플리케이션(1062) 및 제2어플리케이션(1064)은 주소 정보를 통해 적어도 일부 동시에 이미지가 저장된 영역에 액세스 하여 이미지를 획득할 수 있다. 제1어플리케이션(1062) 및 제2어플리케이션(1064)은 이미지 획득이 완료되면 이미지 분배 모듈(1075)로 완료 메시지를 전송하며, 제1어플리케이션(1062) 및 제2어플리케이션(1064)의 완료 메시지가 모두 접수된 경우, 이미지 분배 모듈(1075)은 이미지 버퍼(1077)에 저장된 해당 이미지를 삭제(또는 해제)할 수 있다.
도 10g 및 10h는 카메라에서 획득한 이미지 프레임 중 일부를 드롭 하는 실시예에 관한 것이다.
카메라(1050)는 제1어플리케이션(1062) 및 제2어플리케이션(1064)의 카메라 서비스 요청에 응답하여 소정의 속성(예를 들어, 60 frame/sec)으로 연속적으로 이미지 프레임을 촬영할 수 있다.
도 10g에 도시된 바와 같이, 카메라(1050)로부터 frame 1이 획득되면 이미지 버퍼(1077)에 저장되고, frame 1의 주소 정보가 출력 인터페이스(1076)를 통해 제1어플리케이션(1062) 및 제2어플리케이션(1064)에 제공될 수 있다. 제1어플리케이션(1062) 및 제2어플리케이션(1064)은 동시에 또는 순차적으로 주소 정보를 통해 이미지 버퍼(1077)의 영역에 액세스 할 수 있다. 일 실시예에 따르면, 제1어플리케이션(1062) 및 제2어플리케이션(1064)으로부터 완료 메시지가 도달하기 전에 frame 2가 카메라(1050)로부터 전송될 수 있다. 이미지 버퍼(1077)가 하나의 프레임만을 저장할 수 있는 크기를 가진 다면, frame 2를 저장하기 위해 frame 1을 삭제해야 할 것이나, 제1어플리케이션(1062) 및 제2어플리케이션(1064)이 frame 1을 완전히 획득하지 못한 상태이므로, frame 1을 삭제하는 것은 바람직하지 않을 수 있다.
이에, 이미지 분배 모듈(1075)은 제1어플리케이션(1062) 및 제2어플리케이션(1064)이 frame 1을 획득하기 이전에 카메라(1050)로부터 전송되는 frame 2를 드롭, 즉 이미지 버퍼(1077)에 저장하지 않을 수 있다.
이 후, 제1어플리케이션(1062) 및 제2어플리케이션(1064)이 frame 1의 획득 후 완료 메시지를 전송하며, 이미지 분배 모듈(1075)은 완료 메시지가 모두 수신되면 frame 1을 삭제하고, 이 후 카메라(1050)로부터 획득되는 frame 3를 이미지 버퍼(1077)에 저장할 수 있다.
도 10h에 도시된 바와 같이, 이미지 버퍼(1077)가 2개 이상의 이미지 프레임을 저장할 수 있는 경우에도 도 10g와 같은 프레임 드롭이 발생할 수 있다.
카메라(1050)로부터 frame 1이 획득되면 이미지 버퍼(1077)에 저장되고, frame 1의 주소 정보가 출력 인터페이스(1076)를 통해 제1어플리케이션(1062) 및 제2어플리케이션(1064)에 제공될 수 있다. 또한, frame 2이 획득되면 이미지 버퍼(1077)에 저장되고, frame 2의 주소 정보가 출력 인터페이스(1076)를 통해 제1어플리케이션(1062) 및 제2어플리케이션(1064)에 제공될 수 있다.
이 후, 제1어플리케이션(1062) 및 제2어플리케이션(1064)은 주소 정보를 통해 이미지 버퍼(1077)에 액세스 하여 frame 1 및 frame 2을 수신할 수 있으며, 제1어플리케이션(1062) 및/또는 제2어플리케이션(1064)의 frame 1 및 frame 2 중 적어도 하나의 획득 이전에 카메라(1050)로부터 frame 3가 전송될 수 있다.
이미지 분배 모듈(1075)은 이미지 버퍼(1077)가 2개의 프레임을 저장할 수 있으므로, frame 3는 드롭 시킬 수 있다.
이 후, frame 1과 frame 2 중 어느 하나의 완료 메시지가 제1어플리케이션(1062) 및 제2어플리케이션(1064)으로부터 모두 전송되면, 해당 프레임을 삭제하고, 이후에 카메라(1050)로부터 수신되는 frame 4를 이미지 버퍼(1077)에 저장할 수 있다.
도 10i는 카메라 모듈(1050) 내에서 이미지 처리를 수행하는 실시예에 관한 것이다.
도 10i에 도시된 바와 같이, 카메라 모듈(1050)은 고해상도 이미지를 획득하고, 고해상도 이미지로부터 저해상도 이미지를 생성할 수 있다. 생성된 고해상도 이미지 및 저해상도 이미지는 각각 이미지 버퍼(1077)에 저장되고, 이미지 분배 모듈(1075)은 출력 인터페이스(1076)를 통해 고해상도 프레임을 제1어플리케이션(1062)에 제공하고, 저해상도 프레임을 제2어플리케이션(1064)에 제공할 수 있다.
도 11은 본 발명의 다양한 실시예에 따라, 전자 장치 상에 global UX가 표시된 화면의 일 예를 도시한 것이다.
도 11에 도시된 바와 같이, 제1어플리케이션(1120) 및 제2어플리케이션(1130)이 포 그라운드에서 동시에 실행되어, 디스플레이(1110) 내에 제1어플리케이션(1120)에 대응하는 화면 및 제2어플리케이션(1130)에 대응하는 화면이 동시에 표시될 수 있다.
다양한 실시예에 따르면, 프로세서(예를 들어, 도 5의 프로세서(530))는 포 그라운드에서 실행되는 어플리케이션 중 2 이상이 동일한 기능의 어플리케이션인지 확인하고, 동일한 기능에 관련된 2 이상의 어플리케이션의 공통 기능을 제어하기 위한 global UX(1150)를 제1어플리케이션(1120) 및 제2어플리케이션(1130)과 함께 표시할 수 있다. 예를 들어, 제1어플리케이션(1120) 및 제2어플리케이션(1130)이 모두 카메라 기능에 관련된 어플리케이션인 경우, 이미지 캡쳐 버튼(1154) 및 녹화 버튼(1152)을 포함하는 global UX(1150)를 디스플레이(1110) 상에 표시할 수 있다.
일 실시예에 따르면, 제1어플리케이션(1120) 및 제2어플리케이션(1130)의 camera open 요청에 따라 카메라 오픈 모듈 또는 가용성 확인모듈을 통해서 동일 목적의 카메라 사용이 시작됨을 인지할 수 있으며, 이 경우 global ux(1150)를 구동할 수 있다.
일 실시예에 따르면, global UX(1150)는 별도의 어플리케이션이거나, 프레임워크 상에 정의될 수 있다.
다양한 실시예에 따르면, 프로세서는 상기 global UX(1150)에 대한 터치 입력의 감지에 응답하여 제1어플리케이션(1120) 및 제2어플리케이션(1130)에 터치 입력에 대응하는 제어 명령을 전송할 수 있다. 예를 들어, global UX(1150)의 캡쳐 버튼(1154)을 누르면, 카메라 모듈에서 이미지를 캡쳐하고, 캡쳐된 이미지가 각각 제1어플리케이션(1120) 및 제2어플리케이션(1130)에 제공될 수 있다. 카메라 모듈에서 획득한 이미지를 제1어플리케이션(1120) 및 제2어플리케이션(1130)으로 분배하는 특징에 대해서는 앞서 도 8 내지 도 10을 통해 설명한 바 있다.
이에 따라, 본 발명의 다양한 실시예들은 하나의 UX(1150)에 대한 조작으로 동일한 기능을 갖는 복수의 어플리케이션에 입력 신호를 제공할 수 있다.
도 12a 및 12b는 본 발명의 다양한 실시예에 따라, global UX(1268)의 입력에 따른 신호 처리 흐름을 도시한 것이다.
도 12a에 도시된 바와 같이, 제1어플리케이션(1262) 및 제2어플리케이션(1264)이 실행되면, 프레임워크의 어플리케이션 매니저(1280)는 global UX(1268) 어플리케이션을 실행할 수 있다. 일 실시예에 따르면, 도시된 바와 달리 global UX(1268)는 프레임워크 상에서 구현될 수 있다.
도 12b에 도시된 바와 같이, 터치 센서 또는 버튼 등 입력 장치에서 입력을 감지하면, 어플리케이션 매니저(1280)를 통해 global UX(1268)에 감지되고, global UX(1268)는 입력에 따른 제어 입력을 제1어플리케이션(1262) 및 제2어플리케이션(1264)으로 전송할 수 있다.
제1어플리케이션(1262) 및 제2어플리케이션(1264)은 global UX(1268)로부터 수신된 제어 입력(예를 들어, 이미지 캡쳐 명령)에 따라 카메라 매니저(1270)에 이미지 캡쳐를 요청할 수 있다. 카메라 매니저(1270)는 카메라 모듈(1250)에 이미지 캡쳐를 요청하고, 카메라 모듈(1250)에 의해 획득된 이미지는 제1어플리케이션(1262) 및 제2어플리케이션(1264)에 제공될 수 있다.
도 13a 내지 13c는 본 발명의 다양한 실시예에 따른 이미지 분배 방법을 도시한 것이다.
도 13a 내지 13c에 도시된 바와 같이, 제1어플리케이션(1362) 및 제2어플리케이션(1364)을 동시에 실행할 수 있으며, 프레임워크에는 어플리케이션 매니저(1380), 어플리케이션 제어 엔진 및 카메라 매니저(1370)가 저장될 수 있다. global UX(1368)는 별도의 어플리케이션이거나, 프레임워크 상에 저장될 수 있다.
제1어플리케이션(1362)과 제2어플리케이션(1364)이 포 그라운드에서 실행되면, 프레임워크의 어플리케이션 매니저(1380)는 동일한 기능(예를 들어, 카메라 기능)에 관련된 2 이상의 어플리케이션이 동시에 실행 되었음을 확인하고, 카메라 기능의 제어에 관련된 global UX(1368)를 실행할 수 있다.
제1어플리케이션(1362) 및 제2어플리케이션(1364)은 각각 속성 타입을 전송하고, 프레임워크의 카메라 매니저(1370)는 제1어플리케이션(1362) 및 제2어플리케이션(1364)의 속성 타입에 따라 카메라의 구동을 요청할 수 있다.
사용자는 global UX(1368)에 대한 터치 입력으로 이미지의 사이즈를 설정할 수 있으며, 어플리케이션 매니저(1380)는 global UX(1368) 입력에 따른 제어 입력을 제1어플리케이션(1362) 및 제2어플리케이션(1364)으로 전송할 수 있다.
이 후, global UX(1368)에 대한 터치 입력으로 이미지 캡쳐 명령이 입력되는 경우, 카메라는 이미지를 획득하고, 제1어플리케이션(1362) 및 제2어플리케이션(1364)에 각각 제1이미지 및 제2이미지를 제공할 수 있다.
일 실시예에 따르면, global UX(1368)를 활용하여 타이머 설정을 통한 일괄 촬영이 가능하다.
도 13b에 도시된 바와 같이, global UX(1368)가 실행된 상태에서, 사용자는 global UX(1368)를 통해 플래시 설정 및 타이머를 입력할 수 있으며, 타이머에 설정된 시간의 경과 후 카메라는 이미지를 획득하고, 제1어플리케이션(1362) 및 제2어플리케이션(1364)에 각각 제1이미지 및 제2이미지를 제공할 수 있다.
일 실시예에 따르면, global UX(1368)를 활용하여 일괄 동영상 촬영이 가능하다.
도 13c에 도시된 바와 같이, global UX(1368)가 실행된 상태에서, 사용자는 global UX(1368)를 통해 녹화 시작, 일시 정지, 녹화 재개, 중단을 입력할 수 있으며, 그에 따라 제1어플리케이션(1362) 및 제2어플리케이션(1364)에 대한 동영상의 녹화가 개시 또는 중단될 수 있다.
일 실시예에 따르면, 제1어플리케이션(1362) 및 제2어플리케이션(1364)이 종료되는 경우 어플리케이션의 camera close 요청에 따라 카메라오픈 모듈 또는 가용성 확인모듈을 통해서 동일 목적의 카메라 사용이 종료됨을 인지할 수 있으며, 이 경우 global ux가 중단될 수 있다.
본 발명의 다양한 실시예에 따른 전자장치는, 하나 이상의 렌즈들을 포함하는 카메라 모듈; 상기 카메라 모듈을 통하여 획득된 이미지를 표시할 수 있는 디스플레이; 상기 카메라 모듈 및 상기 디스플레이와 전기적으로 연결된 프로세서; 및 상기 프로세서와 전기적으로 연결된 메모리를 포함하고, 상기 메모리는, 실행 시에, 상기 프로세서가, 제1어플리케이션의 카메라 서비스 요청에 응답하여, 상기 카메라 모듈을 통하여 획득된 하나 이상의 이미지들 가운데 적어도 일부를 상기 제1어플리케이션으로 제공하고, 상기 제1어플리케이션으로 상기 적어도 일부를 제공하는 동안, 제2어플리케이션으로부터 카메라 서비스 요청을 수신하는 경우, 상기 제1어플리케이션 및 상기 제2어플리케이션으로 상기 하나 이상의 이미지들을 분배하도록 하는 인스트럭션(instruction)들을 저장할 수 있다.
다양한 실시예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 하나 이상의 이미지들을 이미지 버퍼에 저장하고, 하나 이상의 분배 방법을 통하여, 상기 이미지 버퍼로부터 상기 제1어플리케이션 및 상기 제2어플리케이션으로 상기 하나 이상의 이미지들을 분배하도록 할 수 있다.
다양한 실시예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 이미지 버퍼에 저장된 하나 이상의 이미지 중 적어도 일부의 이미지 프레임을 상기 제1어플리케이션으로 제공하고, 다른 일부의 이미지 프레임을 상기 제2어플리케이션으로 제공하도록 할 수 있다.
다양한 실시예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 이미지 버퍼에 저장된 하나의 이상의 이미지의 속성을 유지 또는 변경하고, 상기 속성이 유지 또는 변경된 이미지를 상기 제1어플리케이션 및 상기 제2어플리케이션으로 제공하도록 할 수 있다.
다양한 실시예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 하나 이상의 렌즈들 중 일부를 통하여 획득된 이미지는 상기 제1어플리케이션으로 제공하고, 다른 일부를 통하여 획득된 이미지는 상기 제2어플리케이션으로 제공하도록 할 수 있다.
다양한 실시예에 따르면, 상기 카메라 서비스 요청은 어플리케이션의 속성 타입을 포함하는 API(application programming interface) 호출을 통하여 수행되도록 할 수 있다.
다양한 실시예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 API 호출에 포함된 어플리케이션의 속성 타입에 기초하여, 상기 이미지 버퍼에 저장된 하나 이상의 이미지의 속성을 유지 또는 변경하도록 할 수 있다.
다양한 실시예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 제1어플리케이션으로 상기 이미지의 적어도 일부를 제공하는 동안, 또는 상기 제1어플리케이션 및 제2어플리케이션으로 상기 이미지의 적어도 일부를 제공하는 동안, 제3어플리케이션으로부터 카메라 서비스 요청을 수신하는 경우, 상기 메모리 및 카메라 모듈의 가용한 리소스를 체크하고, 상기 가용한 리소스가 부족한 것으로 판단되는 경우 상기 제3어플리케이션에 에러 메시지를 전송하도록 할 수 있다.
다양한 실시예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 제1어플리케이션의 카메라 서비스 요청에 응답하여, 상기 획득된 하나 이상의 이미지 중 하나의 이미지의 적어도 일부를 상기 제1어플리케이션으로 제공하고, 상기 제2어플리케이션의 카메라 서비스 요청에 응답하여, 상기 제1어플리케이션으로 상기 하나의 이미지의 적어도 일부를 제공하면서, 상기 제2어플리케이션으로 상기 하나의 이미지의 적어도 다른 일부를 제공하도록 할 수 있다.
본 발명의 다양한 실시예에 따른 전자 장치는, 복수의 면들을 포함하는 하우징; 상기 하우징의 적어도 일 면을 통해 노출되고, 이미지 데이터를 생성하도록 구성된 적어도 하나의 이미지 센서; 상기 하우징 내에 배치되는 무선 통신 회로; 상기 하우징 내에 배치되는 휘발성 메모리; 상기 하우징 내에 배치되고, 상기 무선 통신 회로 및 상기 휘발성 메모리와 전기적으로 연결되는 적어도 하나의 프로세서; 및 상기 프로세서와 전기적으로 연결되는 비휘발성 메모리를 포함하며, 상기 비휘발성 메모리는, 제1어플리케이션 프로그램 또는 제2어플리케이션 프로그램의 적어도 일부를 저장하고, 실행 시에, 상기 프로세서가, 상기 제1어플리케이션 프로그램으로부터 상기 이미지 센서로부터 상기 이미지 데이터의 적어도 제1부분과 연관된 제1요청을 수신하고, 상기 제2어플리케이션 프로그램으로부터 상기 이미지 센서로부터 상기 이미지 데이터의 적어도 제2부분과 연관된 제2요청을 수신하고, 상기 제1요청의 수신 후 상기 제1요청을 처리하고, 상기 제2요청의 수신 후, 상기 제1요청의 처리를 종료하지 않고, 상기 제1요청의 처리와 동시, 순차 또는 교차하여 상기 제2요청을 처리하도록 하는 인스트럭션(instruction)들을 저장할 수 있다.
다양한 실시예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 이미지 데이터를 상기 휘발성 메모리에 저장하고, 상기 저장된 이미지 데이터의 상기 제1부분을 상기 제1어플리케이션 프로그램으로 제공하고, 상기 저장된 이미지 데이터의 상기 제1부분과 다른 상기 제2부분을 상기 제2어플리케이션으로 제공하도록 함으로써, 상기 제1요청 및 상기 제2요청을 처리하도록 할 수 있다.
다양한 실시예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 이미지 데이터를 상기 휘발성 메모리에 저장하고, 상기 저장된 이미지 데이터의 상기 제1부분을 제1비율로 상기 제1어플리케이션 프로그램에 제공하고, 상기 저장된 이미지 데이터의 상기 제2부분을 상기 제1비율과 다른 제2비율로 상기 제2어플리케이션 프로그램에 제공함으로써, 상기 제1요청 및 상기 제2요청을 처리하도록 할 수 있다.
다양한 실시예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 제1요청에 응답하여 제1명령으로 상기 적어도 하나의 이미지 센서 중 제 1 이미지 센서를 제어하고, 상기 제2요청에 응답하여 상기 제1명령과 다른 제2명령으로 상기 적어도 하나의 이미지 센서 중 상기 제 1 이미지 센서와 다른 제 2 이미지 센서를 제어함으로써, 상기 제1요청 및 상기 제2요청을 처리하도록 할 수 있다.
다양한 실시예에 따르면, 상기 제1명령은 제1초점 거리에서의 동작과 연관되고, 상기 제2명령은 상기 제1초점 거리와 다른 제2초점 거리에서의 동작과 연관될 수 있다.
다양한 실시예에 따르면, 상기 비휘발성 메모리는, 프레임워크를 저장하고, 상기 프레임워크 상에서 상기 제1어플리케이션 프로그램 또는 상기 제2어플리케이션의 프로그램의 상기 적어도 일부가 동작하고, 상기 저장된 인스트럭션들의 적어도 일부는 상기 프레임워크의 일부일 수 있다.
다양한 실시예에 따르면, 로봇 다리 또는 팔, 휠, 캐터필러, 프로펠러, 윙, 핀, 엔진, 모터 또는 로켓 중 적어도 하나를 포함하는 자율적 이동 장치를 더 포함하며, 상기 제1어플리케이션 프로그램은 상기 이동 장치의 동작과 연관될 수 있다.
다양한 실시예에 따르면, 상기 제2어플리케이션 프로그램은 상기 전자 장치와 통신할 수 있는 외부 장치에 존재하고, 상기 무선 통신 회로는 상기 제2어플리케이션 프로그램의 적어도 일부와 통신하도록 구성될 수 있다.
본 발명의 다양한 실시예에 따른 전자장치는, 하나 이상의 렌즈들을 포함하는 카메라 모듈; 상기 카메라 모듈을 통하여 획득된 이미지를 표시할 수 있는 디스플레이; 상기 카메라 모듈 및 상기 디스플레이와 전기적으로 연결된 프로세서; 및 상기 프로세서와 전기적으로 연결된 메모리를 포함하고, 상기 메모리는, 실행 시에, 상기 프로세서가, 제1어플리케이션 및 제2어플리케이션을 실행하고, 상기 제1어플리케이션 및 상기 제2어플리케이션의 카메라 서비스 요청에 응답하여, 이미지 촬영 기능을 제어할 수 있는 GUI를 제공하고, 상기 GUI에 대한 입력에 응답하여, 적어도 하나의 이미지를 획득하고, 상기 획득된 이미지 중 적어도 일부를 상기 제1어플리케이션으로 제공하고, 적어도 다른 일부를 상기 제2어플리케이션으로 제공하도록 하는 인스트럭션들을 저장할 수 있다.
다양한 실시예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 카메라 모듈로부터 획득된 상기 하나 이상의 이미지들을 이미지 버퍼에 저장하고, 상기 이미지 버퍼에 저장된 하나 이상의 이미지들 중 적어도 일부를 상기 제1어플리케이션의 속성 타입에 기초하여 유지 또는 변경한 후 상기 제1어플리케이션으로 제공하고, 상기 이미지 버퍼에 저장된 하나 이상의 이미지들 중 적어도 일부를 상기 제2어플리케이션의 속성 타입에 기초하여 유지 또는 변경한 후 상기 제2어플리케이션으로 제공하도록 할 수 있다.
다양한 실시예에 따르면, 상기 인스트럭션들은, 상기 프로세서가, 상기 GUI에 대한 입력에 응답하여, 상기 카메라 모듈의 제1렌즈로부터 획득된 제1이미지를 상기 제1어플리케이션으로 제공하고, 상기 카메라 모듈의 제2렌즈로부터 획득된 제2이미지를 상기 제2어플리케이션으로 제공하도록 할 수 있다.

Claims (20)

  1. 전자장치에 있어서,
    하나 이상의 렌즈들을 포함하는 카메라 모듈;
    상기 카메라 모듈을 통하여 획득된 이미지를 표시할 수 있는 디스플레이;
    상기 카메라 모듈 및 상기 디스플레이와 전기적으로 연결된 프로세서; 및
    상기 프로세서와 전기적으로 연결된 메모리를 포함하고,
    상기 메모리는, 실행 시에, 상기 프로세서가,
    제1어플리케이션의 카메라 서비스 요청에 응답하여, 상기 카메라 모듈을 통하여 획득된 하나 이상의 이미지들 가운데 적어도 일부를 상기 제1어플리케이션으로 제공하고,
    상기 제1어플리케이션으로 상기 적어도 일부를 제공하는 동안, 제2어플리케이션으로부터 카메라 서비스 요청을 수신하는 경우, 상기 제1어플리케이션 및 상기 제2어플리케이션으로 상기 하나 이상의 이미지들을 분배하도록 하는 인스트럭션(instruction)들을 저장하는 전자 장치.
  2. 제 1항에 있어서,
    상기 인스트럭션들은, 상기 프로세서가,
    상기 하나 이상의 이미지들을 이미지 버퍼에 저장하고,
    하나 이상의 분배 방법을 통하여, 상기 이미지 버퍼로부터 상기 제1어플리케이션 및 상기 제2어플리케이션으로 상기 하나 이상의 이미지들을 분배하도록 하는 전자 장치.
  3. 제 2항에 있어서,
    상기 인스트럭션들은, 상기 프로세서가,
    상기 이미지 버퍼에 저장된 하나 이상의 이미지 중 적어도 일부의 이미지 프레임을 상기 제1어플리케이션으로 제공하고, 다른 일부의 이미지 프레임을 상기 제2어플리케이션으로 제공하도록 하는 전자 장치.
  4. 제 2항에 있어서,
    상기 인스트럭션들은, 상기 프로세서가,
    상기 이미지 버퍼에 저장된 하나의 이상의 이미지의 속성을 유지 또는 변경하고,
    상기 속성이 유지 또는 변경된 이미지를 상기 제1어플리케이션 및 상기 제2어플리케이션으로 제공하도록 하는 전자 장치.
  5. 제 1항에 있어서,
    상기 인스트럭션들은, 상기 프로세서가,
    상기 하나 이상의 렌즈들 중 일부를 통하여 획득된 이미지는 상기 제1어플리케이션으로 제공하고, 다른 일부를 통하여 획득된 이미지는 상기 제2어플리케이션으로 제공하도록 하는 전자 장치.
  6. 제 1항에 있어서,
    상기 카메라 서비스 요청은 어플리케이션의 속성 타입을 포함하는 API(application programming interface) 호출을 통하여 수행되도록 하는 전자 장치.
  7. 제 6항에 있어서,
    상기 인스트럭션들은, 상기 프로세서가,
    상기 API 호출에 포함된 어플리케이션의 속성 타입에 기초하여, 상기 이미지 버퍼에 저장된 하나 이상의 이미지의 속성을 유지 또는 변경하도록 하는 전자 장치.
  8. 제 1항에 있어서,
    상기 인스트럭션들은, 상기 프로세서가,
    상기 제1어플리케이션으로 상기 이미지의 적어도 일부를 제공하는 동안, 또는 상기 제1어플리케이션 및 제2어플리케이션으로 상기 이미지의 적어도 일부를 제공하는 동안, 제3어플리케이션으로부터 카메라 서비스 요청을 수신하는 경우,
    상기 메모리 및 카메라 모듈의 가용한 리소스를 체크하고, 상기 가용한 리소스가 부족한 것으로 판단되는 경우 상기 제3어플리케이션에 에러 메시지를 전송하도록 하는 전자 장치.
  9. 제 1항에 있어서,
    상기 인스트럭션들은, 상기 프로세서가,
    상기 제1어플리케이션의 카메라 서비스 요청에 응답하여, 상기 획득된 하나 이상의 이미지 중 하나의 이미지의 적어도 일부를 상기 제1어플리케이션으로 제공하고,
    상기 제2어플리케이션의 카메라 서비스 요청에 응답하여, 상기 제1어플리케이션으로 상기 하나의 이미지의 적어도 일부를 제공하면서, 상기 제2어플리케이션으로 상기 하나의 이미지의 적어도 다른 일부를 제공하도록 하는 전자 장치.
  10. 전자 장치에 있어서,
    복수의 면들을 포함하는 하우징;
    상기 하우징의 적어도 일 면을 통해 노출되고, 이미지 데이터를 생성하도록 구성된 적어도 하나의 이미지 센서;
    상기 하우징 내에 배치되는 무선 통신 회로;
    상기 하우징 내에 배치되는 휘발성 메모리;
    상기 하우징 내에 배치되고, 상기 무선 통신 회로 및 상기 휘발성 메모리와 전기적으로 연결되는 적어도 하나의 프로세서; 및
    상기 프로세서와 전기적으로 연결되는 비휘발성 메모리를 포함하며,
    상기 비휘발성 메모리는,
    제1어플리케이션 프로그램 또는 제2어플리케이션 프로그램의 적어도 일부를 저장하고,
    실행 시에, 상기 프로세서가,
    상기 제1어플리케이션 프로그램으로부터 상기 이미지 센서로부터 상기 이미지 데이터의 적어도 제1부분과 연관된 제1요청을 수신하고,
    상기 제2어플리케이션 프로그램으로부터 상기 이미지 센서로부터 상기 이미지 데이터의 적어도 제2부분과 연관된 제2요청을 수신하고,
    상기 제1요청의 수신 후 상기 제1요청을 처리하고,
    상기 제2요청의 수신 후, 상기 제1요청의 처리를 종료하지 않고, 상기 제1요청의 처리와 동시, 순차 또는 교차하여 상기 제2요청을 처리하도록 하는 인스트럭션(instruction)들을 저장하는 전자 장치.
  11. 제 10항에 있어서,
    상기 인스트럭션들은, 상기 프로세서가,
    상기 이미지 데이터를 상기 휘발성 메모리에 저장하고,
    상기 저장된 이미지 데이터의 상기 제1부분을 상기 제1어플리케이션 프로그램으로 제공하고,
    상기 저장된 이미지 데이터의 상기 제1부분과 다른 상기 제2부분을 상기 제2어플리케이션으로 제공하도록 함으로써,
    상기 제1요청 및 상기 제2요청을 처리하도록 하는 전자 장치.
  12. 제 10항에 있어서,
    상기 인스트럭션들은, 상기 프로세서가,
    상기 이미지 데이터를 상기 휘발성 메모리에 저장하고,
    상기 저장된 이미지 데이터의 상기 제1부분을 제1비율로 상기 제1어플리케이션 프로그램에 제공하고,
    상기 저장된 이미지 데이터의 상기 제2부분을 상기 제1비율과 다른 제2비율로 상기 제2어플리케이션 프로그램에 제공함으로써,
    상기 제1요청 및 상기 제2요청을 처리하도록 하는 전자 장치.
  13. 제 10항에 있어서,
    상기 인스트럭션들은, 상기 프로세서가,
    상기 제1요청에 응답하여 제1명령으로 상기 적어도 하나의 이미지 센서 중 제 1 이미지 센서를 제어하고,
    상기 제2요청에 응답하여 상기 제1명령과 다른 제2명령으로 상기 적어도 하나의 이미지 센서 중 상기 제 1 이미지 센서와 다른 제 2 이미지 센서를 제어함으로써,
    상기 제1요청 및 상기 제2요청을 처리하도록 하는 전자 장치.
  14. 제 13항에 있어서,
    상기 제1명령은 제1초점 거리에서의 동작과 연관되고,
    상기 제2명령은 상기 제1초점 거리와 다른 제2초점 거리에서의 동작과 연관되는 전자 장치.
  15. 제 10항에 있어서,
    상기 비휘발성 메모리는,
    프레임워크를 저장하고, 상기 프레임워크 상에서 상기 제1어플리케이션 프로그램 또는 상기 제2어플리케이션의 프로그램의 상기 적어도 일부가 동작하고,
    상기 저장된 인스트럭션들의 적어도 일부는 상기 프레임워크의 일부인 전자 장치.
  16. 제 10항에 있어서,
    로봇 다리 또는 팔, 휠, 캐터필러, 프로펠러, 윙, 핀, 엔진, 모터 또는 로켓 중 적어도 하나를 포함하는 자율적 이동 장치를 더 포함하며,
    상기 제1어플리케이션 프로그램은 상기 이동 장치의 동작과 연관된 전자 장치.
  17. 제 16항에 있어서,
    상기 제2어플리케이션 프로그램은 상기 전자 장치와 통신할 수 있는 외부 장치에 존재하고,
    상기 무선 통신 회로는 상기 제2어플리케이션 프로그램의 적어도 일부와 통신하도록 구성된 전자 장치.
  18. 전자장치에 있어서,
    하나 이상의 렌즈들을 포함하는 카메라 모듈;
    상기 카메라 모듈을 통하여 획득된 이미지를 표시할 수 있는 디스플레이;
    상기 카메라 모듈 및 상기 디스플레이와 전기적으로 연결된 프로세서; 및
    상기 프로세서와 전기적으로 연결된 메모리를 포함하고,
    상기 메모리는, 실행 시에, 상기 프로세서가,
    제1어플리케이션 및 제2어플리케이션을 실행하고,
    상기 제1어플리케이션 및 상기 제2어플리케이션의 카메라 서비스 요청에 응답하여, 이미지 촬영 기능을 제어할 수 있는 GUI를 제공하고,
    상기 GUI에 대한 입력에 응답하여, 적어도 하나의 이미지를 획득하고,
    상기 획득된 이미지 중 적어도 일부를 상기 제1어플리케이션으로 제공하고, 적어도 다른 일부를 상기 제2어플리케이션으로 제공하도록 하는 인스트럭션들을 저장하는 전자 장치.
  19. 제 18항에 있어서,
    상기 인스트럭션들은, 상기 프로세서가,
    상기 카메라 모듈로부터 획득된 상기 하나 이상의 이미지들을 이미지 버퍼에 저장하고,
    상기 이미지 버퍼에 저장된 하나 이상의 이미지들 중 적어도 일부를 상기 제1어플리케이션의 속성 타입에 기초하여 유지 또는 변경한 후 상기 제1어플리케이션으로 제공하고,
    상기 이미지 버퍼에 저장된 하나 이상의 이미지들 중 적어도 일부를 상기 제2어플리케이션의 속성 타입에 기초하여 유지 또는 변경한 후 상기 제2어플리케이션으로 제공하도록 하는 전자 장치.
  20. 제 18항에 있어서,
    상기 인스트럭션들은, 상기 프로세서가,
    상기 GUI에 대한 입력에 응답하여,
    상기 카메라 모듈의 제1렌즈로부터 획득된 제1이미지를 상기 제1어플리케이션으로 제공하고,
    상기 카메라 모듈의 제2렌즈로부터 획득된 제2이미지를 상기 제2어플리케이션으로 제공하도록 하는 전자 장치.
KR1020160108453A 2016-08-25 2016-08-25 전자 장치 및 이미지 센서로부터 획득된 이미지를 어플리케이션으로 전달하기 위한 방법 KR20180023326A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020160108453A KR20180023326A (ko) 2016-08-25 2016-08-25 전자 장치 및 이미지 센서로부터 획득된 이미지를 어플리케이션으로 전달하기 위한 방법
US15/681,636 US20180063361A1 (en) 2016-08-25 2017-08-21 Electronic device and method of providing image acquired by image sensor to application
CN201710727416.7A CN107786794B (zh) 2016-08-25 2017-08-23 向应用提供由图像传感器获取的图像的电子装置和方法
EP17187806.9A EP3287866A1 (en) 2016-08-25 2017-08-24 Electronic device and method of providing image acquired by image sensor to application

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160108453A KR20180023326A (ko) 2016-08-25 2016-08-25 전자 장치 및 이미지 센서로부터 획득된 이미지를 어플리케이션으로 전달하기 위한 방법

Publications (1)

Publication Number Publication Date
KR20180023326A true KR20180023326A (ko) 2018-03-07

Family

ID=59886996

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160108453A KR20180023326A (ko) 2016-08-25 2016-08-25 전자 장치 및 이미지 센서로부터 획득된 이미지를 어플리케이션으로 전달하기 위한 방법

Country Status (4)

Country Link
US (1) US20180063361A1 (ko)
EP (1) EP3287866A1 (ko)
KR (1) KR20180023326A (ko)
CN (1) CN107786794B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022154281A1 (ko) * 2021-01-12 2022-07-21 삼성전자 주식회사 카메라를 포함하는 전자 장치 및 이의 동작 방법
WO2022231230A1 (ko) * 2021-04-26 2022-11-03 삼성전자 주식회사 전자 장치 및 전자 장치의 api 변환 방법
CN116048744A (zh) * 2022-08-19 2023-05-02 荣耀终端有限公司 一种图像获取方法及相关电子设备

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190110858A (ko) * 2018-03-21 2019-10-01 삼성전자주식회사 이미지 데이터 처리 방법 및 이를 위한 장치
JP7420734B2 (ja) * 2018-11-13 2024-01-23 ソニーセミコンダクタソリューションズ株式会社 データ配信システム、センサデバイス及びサーバ
KR102491386B1 (ko) * 2018-12-27 2023-01-26 삼성전자주식회사 전자 장치 및 그 제어 방법
US20200349749A1 (en) * 2019-05-03 2020-11-05 XRSpace CO., LTD. Virtual reality equipment and method for controlling thereof
US20210056220A1 (en) * 2019-08-22 2021-02-25 Mediatek Inc. Method for improving confidentiality protection of neural network model
CN110753187B (zh) * 2019-10-31 2021-06-01 芋头科技(杭州)有限公司 一种摄像头的控制方法及设备
CN110958390B (zh) * 2019-12-09 2021-07-20 Oppo广东移动通信有限公司 图像处理方法及相关装置
CN110933313B (zh) * 2019-12-09 2021-07-16 Oppo广东移动通信有限公司 暗光拍照方法及相关设备
KR20210101684A (ko) * 2020-02-10 2021-08-19 삼성전자주식회사 어플리케이션의 실행 화면을 제공하기 위한 전자 장치 및 그 동작 방법
CN111343412B (zh) * 2020-03-31 2021-08-17 联想(北京)有限公司 一种图像处理方法及电子设备
CN116886810A (zh) * 2020-11-20 2023-10-13 华为终端有限公司 摄像头调用方法、系统及电子设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1973531A (zh) * 2003-04-25 2007-05-30 高通股份有限公司 用于控制便携式装置中的照相机资源的系统
US20060050155A1 (en) * 2004-09-02 2006-03-09 Ing Stephen S Video camera sharing
US8284267B2 (en) * 2009-03-11 2012-10-09 O2Micro Inc. Virtual camera for sharing a physical camera
US8878794B2 (en) * 2011-09-27 2014-11-04 Z124 State of screen info: easel
US9641266B2 (en) * 2012-07-17 2017-05-02 Qualcomm Incorporated Sensor with concurrent data streaming using various parameters
KR102013443B1 (ko) * 2012-09-25 2019-08-22 삼성전자주식회사 이미지를 전송하기 위한 방법 및 그 전자 장치
KR20140112914A (ko) * 2013-03-14 2014-09-24 삼성전자주식회사 휴대단말기의 어플리케이션 정보 처리 장치 및 방법
US10318361B2 (en) * 2014-07-02 2019-06-11 Atheer, Inc. Methods and systems for multiple access to a single hardware data stream
KR20160041610A (ko) * 2014-10-08 2016-04-18 엘지전자 주식회사 이동단말기 및 그 제어방법
US20170195543A1 (en) * 2015-12-31 2017-07-06 Skytraq Technology, Inc. Remote control between mobile communication devices for capturing images
US10108462B2 (en) * 2016-02-12 2018-10-23 Microsoft Technology Licensing, Llc Virtualizing sensors
CN105808353A (zh) * 2016-03-08 2016-07-27 珠海全志科技股份有限公司 一种摄像机资源共享的方法和装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022154281A1 (ko) * 2021-01-12 2022-07-21 삼성전자 주식회사 카메라를 포함하는 전자 장치 및 이의 동작 방법
WO2022231230A1 (ko) * 2021-04-26 2022-11-03 삼성전자 주식회사 전자 장치 및 전자 장치의 api 변환 방법
CN116048744A (zh) * 2022-08-19 2023-05-02 荣耀终端有限公司 一种图像获取方法及相关电子设备
CN116048744B (zh) * 2022-08-19 2023-09-12 荣耀终端有限公司 一种图像获取方法及相关电子设备

Also Published As

Publication number Publication date
US20180063361A1 (en) 2018-03-01
CN107786794A (zh) 2018-03-09
EP3287866A1 (en) 2018-02-28
CN107786794B (zh) 2021-06-29

Similar Documents

Publication Publication Date Title
KR102422353B1 (ko) 스크린 미러링 서비스 제공장치 및 방법
KR20180023326A (ko) 전자 장치 및 이미지 센서로부터 획득된 이미지를 어플리케이션으로 전달하기 위한 방법
KR102360067B1 (ko) 전자 장치 및 전자 장치의 정보 공유 방법
KR20170086750A (ko) 기능을 제어하는 방법 및 이를 지원하는 전자 장치
KR20170136920A (ko) 화면 출력 방법 및 이를 지원하는 전자 장치
KR102391487B1 (ko) 충전 및 데이터 통신 경로 제어 방법 및 이를 구현한 전자 장치
KR20170105213A (ko) 전자 장치 및 전자 장치의 디스플레이 구동 방법
KR102398027B1 (ko) 전자 장치의 동적 프리뷰 디스플레이 방법 및 그 전자 장치
US20180260550A1 (en) Electronic device for performing authentication using multiple authentication means and method for operating the same
US20170353845A1 (en) Electronic device and information processing system including the same
KR20180006782A (ko) 영상의 초점을 제어하는 전자 장치와 이의 동작 방법
KR20180094290A (ko) 전자 장치 및 전자 장치의 수중 촬영 판단 방법
KR20160026341A (ko) 제어 방법 및 그 방법을 처리하는 전자장치
KR20170112066A (ko) 이미지를 처리하기 위한 전자 장치 및 방법
KR102467869B1 (ko) 전자 장치 및 그의 동작 방법
KR20170062038A (ko) 전자 장치 및 그의 동작 방법
US10356306B2 (en) Electronic device connected to camera and method of controlling same
KR102477522B1 (ko) 전자 장치 및 그의 카메라 노출 조정 방법
KR20180076863A (ko) 외부 장치를 연결하는 방법 및 이를 지원하는 전자 장치
KR20170092772A (ko) 이미지 처리장치 및 방법
KR102323797B1 (ko) 전자 장치 및 그의 정보 공유 방법
KR20180050174A (ko) 전자 장치 및 그 제어 방법
KR20180038892A (ko) 영상 처리 방법 및 이를 지원하는 전자 장치
KR20170119948A (ko) 전자 장치 및 그 제어 방법
KR102568387B1 (ko) 전자 장치 및 그의 데이터 처리 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
E601 Decision to refuse application
E801 Decision on dismissal of amendment