KR102340358B1 - 그래픽 이미지 데이터를 캡쳐하기 위한 소프트웨어 개발 킷 - Google Patents

그래픽 이미지 데이터를 캡쳐하기 위한 소프트웨어 개발 킷 Download PDF

Info

Publication number
KR102340358B1
KR102340358B1 KR1020140080014A KR20140080014A KR102340358B1 KR 102340358 B1 KR102340358 B1 KR 102340358B1 KR 1020140080014 A KR1020140080014 A KR 1020140080014A KR 20140080014 A KR20140080014 A KR 20140080014A KR 102340358 B1 KR102340358 B1 KR 102340358B1
Authority
KR
South Korea
Prior art keywords
graphics
image data
engine
library
software
Prior art date
Application number
KR1020140080014A
Other languages
English (en)
Other versions
KR20150037493A (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 KR20150037493A publication Critical patent/KR20150037493A/ko
Application granted granted Critical
Publication of KR102340358B1 publication Critical patent/KR102340358B1/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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

그래픽 이미지 데이터를 캡쳐하기 위한 소프트웨어 개발 킷 (SDK)이 제공된다. 상기 SDK는 그래픽 이미지를 생성하는 것을 위해서 하나 또는 그 이상의 소프트웨어 애플리케이션들을 실행시키도록 동작 가능한 컴퓨팅 하드웨어를 포함한 기기 내에 채택되도록 구성된다. 상기 SDK는 상기 소프트웨어 애플리케이션들과 동시에 실행하도록 구성된다. 상기 하나 또는 그 이상의 소프트웨어 애플리케이션들은 상기 그래픽 이미지 데이터를 생성하기 위해서 그래픽 엔진 그리고/또는 그래픽 라이브러리로의 하나 또는 그 이상의 함수 호출들을 만들도록 동작할 수 있다. 한편, 상기 SDK는 상기 하나 또는 그 이상의 소프트웨어 애플리케이션들에 의해서 만들어진 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리로의 함수 호출을 가로채도록 동작할 수 있다. 더욱이, 상기 SDK는 상기 함수 호출들이 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리에 의해서 수신되기 이전에 상기 함수 호출들을 수정하도록 동작할 수 있어서, 상기 SDK가 상기 그래픽 이미지 데이터를 액세스하고, 읽고, 복사하고 그리고/또는 수정하는 것을 가능하게 하고 그리고/또는 그렇지 않다면 상기 그래픽스 엔진 그리고/또는 그래픽스 라이브러리의 동작들을 어떤 방식으로라도 제어하기 위해서 상기 함수 호출들을 수정하도록 한다.

Description

그래픽 이미지 데이터를 캡쳐하기 위한 소프트웨어 개발 킷 {Software development kit for capturing graphical image data}
관련된 출원에 대한 상호 참조
본 출원은 "System and Method for Sharing Gameplay Experiences" 제목으로 2013년 2월 13일에 출원된 미국 출원 번호 13/765,703 과 관련되며, 이 출원에서 개시된 내용은 그 전체가 본원에 참조로 편입된다.
기술 분야
본 발명 개시의 모습들은 그래픽 이미지 데이터를 캡쳐하는 것에 일반적으로 관련되며, 그리고 더 상세하게는, 그래픽 이미지 데이터를 캡쳐하기 위한 소프트웨어 개발 킷에 관련된다. 또한, 본 발명은 상기 언급된 소프트웨어 개발 킷들을 사용하는 방법에 관련된다. 더욱이, 본 발명 개시의 모습들은 비-일시적인 (일시적이지 않은) 기계-판독가능 데이터 저장 매체 상에 저장된 소프트웨어 제품들에 관련되며, 이 경우 상기 소프트웨어 제품들은 상기 언급된 방법들을 구현하기 위한 기기의 컴퓨팅 하드웨어 상에서 실행 가능하다.
오늘날, 다양한 운영 시스템들 (OS) 그리고 그래픽 장치들이 휴대용 기기들, 즉, 휴대용 전자 기기들을 지원하기 위해서 개발된다. 일반적으로, 휴대용 기기를 위한 그래픽스 장치는 하나 또는 그 이상의 그래픽스 엔진 그리고/또는 오픈 그래픽스 라이브러리 (Open Graphics Library (OpenGL))와 같은 하나 또는 그 이상의 그래픽스 라이브러리들을 포함한다. 이 그래픽스 엔진들 그리고/또는 라이브러리들은 휴대용 기기의 OS 상에서 실행되고 있는 다양한 애플리케이션들에 의해서 호출될 수 있으며, 그래서 그 휴대용 기기의 그래픽 디스플레이 배치를 경유하여 사용자에게 제시될 그래픽 이미지 데이터를 생성한다.
도 1은 휴대용 기기를 위한 알려진 통상적인 그래픽스 장치를 개략적으로 도시한 것이며; 도 1은 종래 기술을 나타낸다. 상기 전통적인 그래픽스 장치는, 예를 들면, 그래픽 이미지 데이터를 사용자에게 제시하기 위해서 상기 휴대용 기기의 OS 상에서 실행되고 있는 소프트웨어 애플리케이션에 의해서 사용될 수 있을 것이다.
도 1을 참조하면, 상기 전통적인 그래픽스 장치는 그래픽스 엔진 (104), 그래픽스 라이브러리 (106), 본 발명이 속한 기술 분야에서의 통상의 지식을 가진 자에게는 "프레임버퍼들"로 또한 알려진 하나 또는 그 이상의 임시 버퍼들 (108), 최종 버퍼 (108), 그래픽스 드라이버 (112), 그래픽스 하드웨어 (114), 그리고 디스플레이 (116)를 포함한다. 상기 그래픽스 엔진 (104), 그래픽스 라이브러리 (106), 하나 또는 그 이상의 임시 버퍼들 (108) 그리고 최종 버퍼 (110)는 도 1에서 보이는 것처럼 OS 공간에 상주할 수 있을 것이다. 상기 그래픽스 드라이버 (112)는 커널 공간에서 소프트웨어로 구현 가능할 수 있을 것이다. 상기 그래픽스 드라이버 (112)는 상기 그래픽스 하드웨어 (114)를 경유하여 상기 디스플레이 (116)와 인터페이스된다. 상기 그래픽스 하드웨어 (114)는, 예를 들면, 통합된 그래픽스 칩셋 또는 전용의 그래픽스 프로세싱 유닛 (graphics processing unit (GPU))일 수 있다. 상기 디스플레이 (116)는, 예를 들면, 상기 휴대용 기기의 터치 스크린 디스플레이와 같은 픽셀 디스플레이일 수 있다.
일 예에서, 상기 소프트웨어 애플리케이션 (102)은 게이밍 애플리케이션이거나 또는 게임을 플레이하는 동안에 그래픽 이미지 데이터를 생성하고 그리고 표현할 것을 필요로 하는 유사한 것이다. 더욱이, 상기 예에서, 상기 소프트웨어 애플리케이션 (102)은 그래픽 이미지 데이터를 생성하기 위해서 상기 그래픽스 엔진 (104)에게 하나 또는 그 이상의 함수 호출들을 한다.
상기 함수 호출들을 수신하자마자, 상기 그래픽스 엔진 9104)은 상기 소프트웨어 애플리케이션의 상태를 어떻게 그래픽으로 제시하는가를 계산하고 그리고 하나 또는 그 이상의 대응하는 함수 호출들을 상기 그래픽스 라이브러리 (106)로 송신하며, 이것은 그러면 하나 또는 그 이상의 임시 버퍼들 (108)에서 상기 그래픽 이미지 데이터를 생성하거나 또는 수정한다. 상기 애플리케이션에서 그래픽의 한 프레임을 제시하기 위한 모든 그래픽 이미지 데이터가 하나 또는 그 이상의 임시 버퍼들에서 일단 완전하게 생성되면, 상기 그래픽스 라이브러리 (106)는 최종 버퍼 (110)를 생성하기 위해서 상기 임시 버퍼들을 같이 합성하며, 이 최종 버퍼는 새로운 버퍼일 수 있으며, 또는 상기 임시 버퍼들 중 하나일 수 있다. 그래픽의 한 프레임을 제시하기 위해서 단 하나의 임시 버퍼만이 생성된 상황에서, 그 임시 버퍼는 최종 버퍼 (110)로서 사용될 수 있다.
이어서, 상기 최종 버퍼 (110) 내의 상기 그래픽 이미지 데이터는 상기 그래픽스 드라이버 (112)로 제공된다. 상기 그래픽스 드라이버 (112)는 그러면 상기 이미지를 사용자에게 제시하기 위해서 상기 그래픽스 하드웨어 (114) 그리고/또는 상기 디스플레이 (116)를 제어한다. 초당 복수의 이미지 프레임들이 사용자에게 제시될 때에, 그 사용자는 함께 결합된 이 이미지 프레임들을 인지하여 상기 디스플레이 (116) 상에서 움직이는 이미지들의 효과를 생성한다.
상기 그래픽스 엔진 (104)은 상기 소프트웨어 애플리케이션 (102) 그리고 상기 그래픽스 장치 사이의 인터페이스로서 행동한다. 여기에서 그 그래픽스 엔진 (104)은 보통은 상기 소프트웨어 애플리케이션 (102)의 일부라는 것에 주목한다. 예를 들면, 간단하게는 상기 그래픽스 엔진 (104)은 상기 그래픽스 라이브러리 (106)를 호출하는 상기 소프트웨어 애플리케이션 (102)의 루틴이다. 대안으로, 상기 그래픽스 엔진 (104)은 상기 그래픽 이미지 데이터를 생성하거나 또는 수정하고 그리고/또는 상기 그래픽 이미지 데이터 상에서 디지털 이미지 프로세싱을 수행하는 것을 담당하는 상기 소프트웨어 애플리케이션 (102)의 모든-특성을 가진 서브-프로그램이다.
상기 그래픽스 엔진 (104)은 서드 파티로부터 라이센스를 받은, 또는 운영 시스템 벤더에 의해서 제공된 상기 소프트웨어 애플리케이션 (102)의 저자에 의해서 생성될 수 있을 것이다. 많은 예들에서, 상기 소프트웨어 애플리케이션 (102) 그리고/또는 상기 그래픽스 엔진 (104)은 알려진 그래픽스 장치에 의해서 생성된 그래픽 이미지 데이터를 캡쳐하기 위해서 임의 인터페이스를 제공하기 위해서 동작 가능하지 않다.
그런 그래픽 이미지 데이터 캡쳐하는 것을 용이하게 하기 위한 전통적인 기술은 그래픽 이미지 데이터를 캡쳐하는 능력들을 포함시키기 위해서 상기 소프트웨어 애플리케이션 (102) 그리고/또는 상기 그래픽스 엔진 (104)을 수정할 것을 필요로 한다. 이 목적을 위해서, 추가적인 소프트웨어 모듈이 상기 소프트웨어 애플리케이션 (102)의 일부로서 포함되어야만 한다. 추가로, 상기 그래픽스 엔진 (104)은 상기 소프트웨어 애플리케이션 (102)을 실행하는 동안에 상기 그래픽 이미지 데이터를 캡쳐하기 위해서 추가적인 소프트웨어 모듈을 호출하기 위해서 수정되어야만 한다.
그러나, 이 전통적인 기술에는 여러 가지 불리한 점들이 있다. 먼저, 상기 소프트웨어 애플리케이션 (102) 그리고/또는 상기 그래픽스 엔진 (104)이 광범위하게 수정될 것을 필요로 한다. 두 번째는, 그런 광범위한 수정들은 어려우며, 시간을 소비하며 그리고 지루하다는 것이다. 세 번째는, 상기 그래픽스 엔진 (104)이 서드 파티로부터 라이센스 받은 경우에, 그 그래픽스 엔진 (104)의 소스 코드는 종종 닫혀있으며, 그러므로, 소프트웨어 애플리케이션 (102)의 저자에 의해서 수정될 수 없다. 더욱이, 상기 전통적인 기술은 그래픽 이미지들을 생성할 때에는 잠재적으로 성능의 하락의 결과가 될 여지가 있다.
그래픽스 캡쳐를 용이하게 하기 위한 다른 전통적인 기술은 그래픽스 캡쳐 기능들을 구비한 서드-파티 소프트웨어 애플리케이션을 사용할 것을 필요로 한다. 그러나, 그런 서드-파티 소프트웨어 애플리케이션들은 휴대용 기기들을 위해서 종종 적합하지 않으며, 이는 애플 iOS 그리고 구글 안드로이드와 같은 운영 시스템들에 의해서 강제된 상기 휴대용 기기들에서의 소프트웨어 애플리케이션들에 대한 샌드박싱 (sandboxing)으로 인한 것이다. "샌드박싱"의 용어는 소프트웨어 애플리케이션이 다른 소프트웨어 애플리케이션의 데이터를 읽는 것을 방지하는 소프트웨어 보안 실행에 관한 것이다.
더욱이, 몇몇의 운영 시스템들은 그 자체적으로 그래픽 이미지 데이터 캡쳐 기능들을 표준 특성으로 구비할 수 있을 것이다. 그러나, 그런 그래픽 이미지 데이터 캡쳐 기능들은 휴대용 기기들을 위해서 설계된 운영 시스템들에서는 제공되지 않는 것이 보통이다.
그러므로, 그래픽 이미지 데이터 캡쳐를 용이하게 할 수 있는 휴대용 기기를 위한 그래픽스 장치에 대한 필요가 존재한다.
본 발명의 개시는 휴대용 기기를 위한 그래픽스 장치를 제공할 것을 모색한다.
본 발명 개시는 그래픽 이미지 데이터를 캡쳐하기 위한 소프트웨어 개발 킷 (Software Development Kit (SDK))을 제공할 것을 또한 모색한다.
본 발명 개시는 예를 들면 스크린샷들, 일련의 스크린샷들 그리고/또는 비디오를 포함하는 상기 언급된 그래픽 이미지 데이터를 캡쳐하기 위해 상기 SDK를 사용하는 방법을 제공할 것을 또한 모색한다.
한 모습에서, 본 발명 개시의 실시예들은 그래픽 이미지 데이터를 캡쳐하기 위한 SDK를 제공한다. 상기 SDK는 기기 내에 채택되도록 구성된다. 상기 기기는 상기 기기의 그래픽 디스플레이 설비를 경유하여 볼 수 있는 그래픽 이미지 데이터를 생성하기 위해서 하나 또는 그 이상의 소프트웨어 애플리케이션들을 실행시키도록 동작 가능하다.
상기 기기의 예들은 모바일 단말, 모바일 전화기, 스마트 전화기, 모바일 인터넷 디바이스 (Mobile Internet Device (MID)), 패블릿 컴퓨터, 태블릿 컴퓨터, 울트라-모바일 개인용 컴퓨터 (Ultra-Mobile Personal Computer (UMPC)), 개인용 디지털 보조기 (PDA), 웹 패드, 핸드헬드 개인용 컴퓨터 (PC), 랩톱 컴퓨터, 인터액티브 엔터테인먼트 컴퓨터, 게이밍 단말, 텔레비전 (TV) 세트, 그리고 셋-톱 박스 (STB)를 포함하지만, 그것들로 제한되지는 않는다.
상기 SDK는 상기 기기의 상기 컴퓨팅 하드웨어 상에서 상기 소프트웨어 애플리케이션들과 동시에 실행하도록 구성된다.
상기 소프트웨어 애플리케이션들은 그래픽 이미지 데이터를 생성하기 위해서 그래픽스 엔진 그리고/또는 그래픽스 라이브러리로 하나 또는 그 이상의 함수 호출들을 하도록 동작할 수 있다.
유리하게도, 상기 SDK는 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리 주변을 둘러싸도록 (wrap around) 구성될 수 있으며, 그래서 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리로의 실질적인 모든 함수 호출들이 가로채도록 동작할 수 있으며, 그래서 그 함수 호출들이 상기 SDK를 통해서 지나갈 수 있도록 한다.
더욱이, 상기 SDK는 가로채진 함수 호출들이 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리에 의해서 수신되기 이전에 상기 가로챈 함수 호출들을 수정하도록 동작할 수 있다. 상기 SDK는, 상기 SDK가 상기 그래픽스 라이브러리 그리고/또는 상기 그래픽스 엔진에 의해서 생성된 그래픽 이미지 데이터를 액세스하고, 읽고, 복사하고 그리고/또는 수정하는 것을 가능하게 하도록 이 가로챈 함수 호출들을 수정하고 그리고/또는 그렇지 않다면 상기 그래픽스 엔진 그리고/또는 그래픽스 라이브러리의 동작들을 어떤 방식으로라도 제어하기 위해서 상기 함수 호출들을 수정하는 것을 가능하게 한다.
더욱이, 상기 SDK는 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리에 의해서 생성된 상기 그래픽 이미지 데이터를 복사하고 그리고 그 복사된 데이터를 상기 기기의 일시적 메모리 상 다른 위치에 또는 비-일시적 저장부에 저장하고 또는 상기 그래픽 이미지 데이터를, 예를 들면, 상기 그래픽 이미지 데이터로부터 비디오 영상의 한 프레임을 생성하고 그리고 그런 비디오를 상기 기기 상의 메모리에 또는 비-일시적 저장부에 저장하도록 동작할 수 있는 비디오 인코딩 소프트웨어 또는 하드웨어로 송신하도록 옵션으로 동작할 수 있다.
더욱이, 상기 SDK는 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리에 의해서 생성된 그래픽 이미지 데이터를 상기 기기로부터 공간적으로 원격인 데이터 저장부에 업로드하거나 또는 스트리밍하도록 옵션으로 동작할 수 있다.
또한, 상기 SDK는 상기 소프트웨어 애플리케이션들로 통합되어, 그 소프트웨어 애플리케이션들의 필수적인 일부가 되도록 옵션으로 구성된다.
다른 모습에서, 본 발명의 실시예들은 상기 그래픽 이미지 데이터를 캡쳐하기 위해 상기 SDK를 이용하는 방법을 제공한다.
또 다른 모습에서, 본 발명 개시의 실시예들은 비-일시적인 (일시적이지 않은) 기계-판독가능 데이터 저장 매체 상에 저장된 소프트웨어 제품을 제공하며, 이 경우에 상기 소프트웨어 제품은 전술한 방법을 구현하기 위해서 상기 기기의 컴퓨팅 하드웨어 상에서 실행 가능하다. 상기 소프트웨어 제품은, 예를 들면, 소프트웨어 애플리케이션 스토어로부터 상기 기기로 다운로드 가능할 수 있을 것이다.
본 발명 개시의 실시예들은 종래 기술에서의 전술한 문제들을 실질적으로 제거하거나 또는 적어도 부분적으로 중점을 두어 해결하며, 그리고 소프트웨어 애플리케이션들 그리고/또는 그래픽스 엔진들 그리고/또는 그래픽스 라이브러리 라이브러리를 수정하기 위한 어떤 필요도 없이, 대응하는 애플리케이션 이진 인터페이스들 (ABIs)이 생성될 때에 상기 소프트웨어 애플리케이션들에서 단순하게 SDK를 포함시키는 것, 즉, "라이브러리를 링크하는 것"과는 떨어져서, 예를 들면, 게임-플레이하는 동안에 생성된 그래픽 이미지 데이터를 사용자가 캡쳐하는 것을 가능하게 하며 그리고 상기 그래픽 이미지 데이터를 캡쳐하는 기능성을 용이하게 한다.
다른 모습에서, 그래픽스 라이브러리로의 함수 호출들을 가로채고 수정하는 것을 가능하게 하는 상기 SDK 그리고/또는 코어 기술들은 운영 시스템 벤더에 의해서 운영 시스템 (OS)의 일부로서 옵션으로 포함되며, 그럼으로써 그 운영 시스템을 지원하는 모든 애플리케이션들에 대해서 그 애플리케이션들이 상기 SDK를 포함시킬 것을 필요로 하지 않으면서도 그래픽 이미지 데이터를 캡쳐하는 것을 가능하게 한다.
본 발명 개시의 추가적인 모습들, 유리함들, 특징들 그리고 목적들은 도면들 그리고 이어지는 첨부된 청구항들에 관련하여 파악되는 예시적인 실시예들에 대한 상세한 설명으로부터 명백할 것이다.
본 발명 개시의 특징들은 첨부된 청구항들에 의해서 정의된 본 발명 개시의 범위로부터 벗어나지 않으면서 다양한 결합들에서 결합되는 것이 가능하다는 것이 이해될 것이다.
본 발명의 효과는 본 명세서의 해당되는 부분들에 개별적으로 명시되어 있다.
예시적인 실시예들의 다음의 상세한 설명은 물론이며 상기 요약은 첨부된 도면들을 함께 읽으면 더 잘 이해될 것이다. 본 발명 개시를 도시하기 위한 목적으로, 본 발명 개시의 예시적인 구축들이 도면들에서 보인다. 그러나, 본 발명 개시는 여기에서 개시된 특정 방법들 및 수단들로 제한되지 않는다. 더욱이, 본 발명이 속한 기술 분야에서의 통상의 지식을 가진 자들은 상기 도면들이 크기에 맞추어 진것이 아니라는 것을 이해할 것이다. 가능한 곳에서는 어느 곳에서나, 유사한 요소들은 동일한 번호들에 의해서 표시된다.
본 발명 개시의 실시예들이 다음의 도면들을 참조하여 이제 예로서만 설명될 것이다.
도 1 (종래 기술)은 휴대용 기기, 즉, 휴대용 전자 기기를 위한 전통적인 그래픽스 장치의 개략적인 예시이다.
도 2는 본 발명 개시의 실시예에 따라 그래픽 이미지 데이터를 캡쳐하기 위해서 소프트웨어 개발 킷 (Software Development Kit (SDK))를 채택하기 위해 적합한 기기의 다양한 컴포넌트들의 개략적인 예시이다.
도 3은 본 발명 개시의 제1 실시예에 따른, 상기 기기를 위해서 적합한 그래픽스 장치의 개략적인 예시이다.
도 4는 본 발명 개시의 제2 실시예에 따른, 상기 기기를 위해서 적합한 그래픽스 장치의 개략적인 예시이다.
도 5는 본 발명 개시의 제3 실시예에 따른, 상기 기기를 위해서 적합한 그래픽스 장치의 개략적인 예시이다.
도 6은 본 발명 개시에 따라, 그래픽 이미지 데이터를 캡쳐하기 위해서 SDK를 사용하는 방법의 단계의 예시이다.
첨부된 도면들에서, 밑줄이 그어진 번호는, 그 밑줄이 그어진 번호가 어떤 아이템 위에 위치하거나 또는 그 밑줄이 그어진 번호가 어떤 아이템에 인접하여 위치한, 그 아이템을 나타내기 위해서 채택된다. 밑줄이 그어지지 않은 번호는 그 밑줄이 그어지지 않은 번호를 어떤 아이템에 링크시키는 라인에 의해서 식별된, 그 아이템에 관련된다. 어떤 번호가 밑줄이 그어지지 않고 그리고 어떤 연관된 화살표와 동반될 때에, 그 밑줄이 그어지지 않은 번호는 상기 화살표가 지시하고 있는 일반적인 아이템을 식별하기 위해서 사용된다.
다음의 상세한 설명은 본 발명의 개시의 실시예들 그리고 그 실시예들이 구현되는 방식들을 예시한다. 비록 본 발명 개시를 수행하는 최선 모드가 개시되지만, 본 발명이 속한 기술 분야에서의 통상의 지식을 가진 자들은 본 발명 개시를 수행하거나 또는 실행하기 위한 다른 실시예들 또한 가능하다는 것을 인정할 것이다.
본 발명 개시의 실시예들은 그래픽 이미지 데이터를 캡쳐하기 위해서 소프트웨어 개발 킷 (SDK)을 제공한다. 상기 SDK는 기기, 예를 들면, 휴대용 기기에 채택되도록 구성된다. 상기 기기는 상기 기기의 그래픽 디스플레이 설비를 경유하여 볼 수 있는 그래픽 이미지 데이터를 생성하기 위해 하나 또는 그 이상의 소프트웨어 애플리케이션들을 실행시키도록 동작할 수 있는 컴퓨팅 하드웨어를 포함한다.
상기 휴대용 기기의 예들은 모바일 단말, 모바일 전화기, 스마트 폰, 모바일 인터넷 디바이스 (Mobile Internet Device (MID)), 패블릿 (phablet) 컴퓨터, 태블릿 컴퓨터, 울트라-모바일 개인용 컴퓨터 (Ultra-Mobile Personal Computer (UMPC)), 개인용 디지털 보조기 (Personal Digital Assistant (PDA)), 웹 패드, 핸드헬드 개인용 컴퓨터 (PC), 랩톱 컴퓨터, 인터액티브 엔터테인먼트 컴퓨터, 게이밍 단말, 텔레비전 (TV) 세트, 그리고 셋-톱 박스 (STB)를 포함하지만, 그것들로 제한되지는 않는다.
상기 SDK는 상기 기기의 컴퓨팅 하드웨어 상에서 하나 또는 그 이상의 소프트웨어 애플리케이션들을 동시에 실행시키도록 구성된다.
상기 하나 또는 그 이상의 소프트웨어 애플리케이션들은 그래픽 이미지 데이터를 생성하기 위해서 그래픽스 엔진 그리고/또는 그래픽스 라이브러리로 하나 또는 그 이상의 함수 호출들을 만들도록 동작할 수 있다.
유익하게도, 상기 SDK는 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리를 둘러싸도록 (wrap around) 동작할 수 있으며, 그래서 상기 SDK가 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리로의 실질적인 모든 함수 호출들을 가로채도록 동작할 수 있도록 하며, 그래서 그 함수 호출들이 상기 SDK를 통해서 지나갈 수 있도록 한다.
더욱이, 상기 SDK는 이 함수 호출들이 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리에 의해서 수신되기 이전에 상기 가로챈 함수 호출들을 수정하도록 동작할 수 있다. 상기 SDK는 옵션으로, 상기 SDK가 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리에 의해서 생성된 그래픽 이미지 데이터를 액세스하고, 읽고, 복사하고 그리고/또는 수정하는 것을 가능하게 하기 위해서 상기 함수 호출들을 수정하는 것을 가능하게 하도록 상기 함수 호출들을 수정하도록 동작할 수 있으며 또는 그렇지 않다면 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리가 그래픽 이미지 데이터를 액세스하고, 생성하고 또는 수정하는 방식을 변경하도록 동작할 수 있다. 이미지 데이터의 예들은 상기 기기를 경유하여 디스플레이될 수 있는 어떤 그래픽스도 포함하며, 이 경우에 상기 이미지 데이터는 다음 중 하나 또는 그 이상을 포함한다: 비디오, 비디오의 플레이, 정지 이미지, 상기 기기 내 그래픽스의 일부 그리고 유사한 것.
더욱이, 상기 SDK는 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리에 의해서 생성된 그래픽 이미지 데이터의 사본을 만들고 그리고 그 사본을 상기 기기의 일시적인 메모리 내 또는 비-일시적인 저장부 내 다른 위치에 저장하거나 또는 상기 그래픽 이미지 데이터를, 예를 들면, 비디오 인코딩 소프트웨어 또는 하드웨어로 송신하도록 동작할 수 있어서 상기 그래픽 이미지 데이터로부터 비디오 장면의 한 프레임을 생성하고 그리고 그런 비디오를 상기 기기의 메모리 또는 비-일시적 저장부에 저장하도록 한다.
더욱이, 상기 SDK는 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리에 의해서 생성된 상기 그래픽 이미지 데이터를 상기 기기로부터 공간적으로 원격인 데이터 저장부에 업로드하거나 또는 스트리밍하도록 옵션으로 동작할 수 있다.
또한, 상기 SDK는 상기 소프트웨어 애플리케이션들로 통합되어 그 소프트웨어 애플리케이션들의 필수적인 일부가 되도록 옵션으로 구성된다.
이제 상기 도면들, 특히 그 도면들의 참조 번호들을 참조하면, 도 2는 기기 (200), 즉, 예를 들면, 본 발명의 개시의 실시예에 따라, 그래픽 이미지 데이터를 캡쳐하기 위해 SDK를 채택하기에 적합한 기기 (200)의 다양한 컴포넌트들의 개략적인 예시이다. 상기 기기 (200)는 데이터 메모리 (202), 프로세서 (204)와 같은 컴퓨팅 하드웨어, 입력/출력 (I/O) 기기들 (206), 네트워크 인터페이스 (208), 그리고 상기 데이터 메모리 (202), 상기 프로세서 (204), 상기 I/O 기기들 (206) 그리고 네트워크 인터페이스 (208)를 포함하는 다양한 컴포넌트들을 작동적으로 연결하는 시스템 버스 (210)를 포함하지만, 그것들로 제한되지는 않는다. 옵션으로, 상기 입력/출력 (I/O) 기기들 (206)은 비-일시적인 데이터 저장 설비들을 포함한다.
상기 데이터 메모리 (202)는 비-탈부착가능 메모리, 탈부착가능 메모리, 또는 그것들의 조합을 옵션으로 포함한다. 상기 비-탈부착가능 메모리는, 예를 들면, 랜덤-액세스 메모리 (Random-Access Memory (RAM)), 읽기-전용 메모리 (Read-Only Memory (ROM)), 플래시 메모리, 또는 하드 드라이브를 포함한다. 상기 탈부착가능 메모리는, 예를 들면, 플래시 메모리 카드들, 메모리 스틱들, 또는 스마트 카드들을 포함한다.
상기 메모리 (202)는 운영 시스템 (Operating System (OS)) (212)을 포함하며, 이 운영 시스템은 프로세서 (204) 상에서 실행될 때에 다양한 소프트웨어 애플리케이션들이 실행될 수 있을 인터페이스를 제공한다. 추가로, 상기 OS (212)는 상기 기기 (200)의 사용자에게 선택할 수 있는 것들 중 하나 또는 그 이상의 옵션들을 제공하는 사용자 인터페이스 (도 2에서는 보이지 않음)를 포함할 수 있을 것이다.
예를 들면, 상기 사용자 인터페이스는 상기 사용자가 게이밍 애플리케이션을 원격 서버로부터 다운로드하고, 그리고 상기 프로세서 (204) 상에서 상기 게이밍 애플리케이션을 실행함으로써 게임을 플레이하는 것을 옵션으로 허용한다; 그러나, 게이밍 애플리케이션들이 아니라 소프트웨어 애플리케이션들이 대안으로 또는 추가로 다운로드될 수 있다는 것이 이해될 것이다. 추가로, 상기 사용자는 게임을 플레이하는 동안에 생성된 그래픽 이미지 데이터를 캡쳐하기 위한 옵션을 제공받는다. 그래픽 이미지가 캡쳐되는 방식의 상세한 내용들은 도 3, 4 및 도 5와 함께 설명된다. 그에 의해서 상기 그래픽 이미지 데이터는 그러면 상기 데이터 메모리 (202)에 옵션으로 저장된다. 상기 언급된 것처럼, 여기에서 설명된 실시예들은 게이밍 애플리케이션으로 제한되지 않으며, 즉, 캡쳐는 어떤 소프트웨어 애플리케이션과도 함께 잠재적으로 사용 가능하다.
추가로, 상기 캡쳐된 그래픽 이미지 데이터는 다른 기기들을 사용하는 다른 사용자들과 네트워크 인터페이스 (208)를 경유하여 옵션으로 공유된다. 상기 네트워크 인터페이스 (208)는 상기 기기 (200)가, 예를 들면, 통신 네트워크 (도 2에서는 보이지 않음)를 경유하여 다른 기기들과 통신하도록 옵션으로 허용한다. 추가로, 상기 네트워크 인터페이스 (208)는 상기 기기 (200)가 상기 캡쳐된 그래픽 이미지 데이터를 통신 네트워크를 경유하여 원격 서버로 업로드하거나 또는 스트리밍하도록 옵션으로 허용한다.
상기 통신 네트워크는, 예를 들면, 서로 서로와 상호 접속하며 그리고 단일의 큰 네트워크로서 기능하는 개별적인 네트워크들을 모은 것이다. 그런 개별적인 네트워크들은 옵션으로 유선, 무선, 또는 그것들의 결합이다. 그런 개별적인 네트워크들의 예들은 로컬 영역 네트워크들 (Local Area Networks (LANs)), 광역 네트워크들 (Wide Area Networks (WANs)), 대도시 영역 네트워크들 (Metropolitan Area Networks (MANs)) 무선 LAN들 (Wireless LANs (WLANs)), 무선 WAN들 (Wireless WANs (WWANs)), 무선 MAN들 (Wireless MANs (WMANs)), 2세대 (second generation (2G)) 원거리 네트워크들, 3세대 (third generation (3G)) 원거리 네트워크들, 4세대 (fourth generation (4G)) 원거리 네트워크들, 그리고 WiMAX (Worldwide Interoperability for Microwave Access) 네트워크들을 포함하지만, 그것들로 제한되는 것은 아니다.
상기 기기 (200)는 다음의 것들 중 적어도 하나에 의해서 옵션으로 구현된다: 모바일 단말, 모바일 전화기, 스마트 폰, MID, 패블릿 컴퓨터, 태블릿 컴퓨터, UMPC, PDA, 웹 패드, 핸드헬드 PC, 랩톱 컴퓨터, 인터액티브 엔터테인먼트 컴퓨터, 게이밍 단말, TV 세트, 그리고 셋-톱 박스 (Set-Top-Box (STB)).
도 2는 단순한 예이며, 이것은 본원에서의 청구항들의 범위를 과도하게 제한해서는 안 된다. 상기 기기 (200)를 위한 특정 표시는 일 예로서 제공되며 그리고 상기 기기 (200)를 상기 기기 (200)의 모듈들 그리고/또는 컴포넌트들의 특정 개수들, 유형들, 또는 배치들로 제한하는 것으로서 해석되지 않는다는 것이 이해되어야만 한다. 본 발명이 속한 기술 분야에서의 통상의 지식을 가진 자는 본 발명 개시의 실시예들의 많은 변형들, 대안들, 그리고 수정들을 인식할 것이다.
도 3은 본 발명 개시의 제1 실시예에 따른, 상기 기기 (200)를 위해서 적합한 그래픽스 장치의 개략적인 예시이다. 예시의 목적들을 위해서, 상기 그래픽스 장치는 상기 기기 (200)의 프로세서 (204) 상에서 실행하는 소프트웨어 애플리케이션 (302)에 의해서 사용된다.
상기 그래픽스 장치는 그래픽스 엔진 (304), 래퍼 (wrapper) (306), 그래픽스 라이브러리 (308), 하나 또는 그 이상의 임시 버퍼들 (310), 최종 버퍼 (312), 비디오-캡쳐 컴포넌트 (314), 그래픽스 드라이버 (316), 그래픽스 하드웨어 (318) 및 디스플레이 (3200를 포함한다. 상기 래퍼 (306) 그리고 상기 비디오-캡쳐 컴포넌트 (314)는 그래픽 이미지 데이터를 캡쳐하기 위한 SDK의 일부를 형성한다. 상기 그래픽스 드라이버 (316), 상기 그래픽스 하드웨어 (318) 그리고 상기 디스플레이 (320)는 상기 기기 (200)의 그래픽 디스플레이 설비의 일부를 형성한다.
본 발명 개시의 일 실시예에 따라서, 상기 SDK는 상기 기기 (200)의 프로세서 (204) 상에서 상기 소프트웨어 애플리케이션 (302)과 동시에 실행하도록 구성되며, 옵션으로는 상기 소프트웨어 애플리케이션 (302)의 일부로서 실행하도록 구성된다.
상기 그래픽스 엔진 (304), 상기 래퍼 (306), 상기 그래픽스 라이브러리 (308), 상기 임시 버퍼들 (310), 상기 최종 버퍼 (312) 그리고 상기 비디오-캡쳐 컴포넌트 (314)는 상기 기기 (200)의 데이터 메모리 (202) 내에 옵션으로 저장되며, 그리고 도 3에서 보이는 것처럼 OS (212) 내에 옵션으로 상주하며 또는 상기 OS (212) 내부에서 옵션으로 실행된다.
예를 들면, 상기 그래픽스 엔진 (304)은 옵션으로는, 객체-지향적 그래픽스 렌더링 엔진 (Object-oriented Graphics Rendering Engine (OGRE)), 일리히트 (Irrlicht) 3D 엔진, Visual3D 게임 엔진, Truevision3D 엔진, 크리스탈 스페이스 (Crystal Space) 엔진, Unity3D 게임 엔진, 언리얼 (Unreal) 엔진, Cocos2D 엔진 등과 같은 서드 파티로부터 라이센스를 받은 그래픽스 엔진이다. 상기 그래픽스 라이브러리 (308)는 오픈 그래픽스 라이브러리 (Open Graphics Library (OpenGL)) API, Direct3D API, EA 그래픽스 라이브러리 (EA Graphics Library (EAGL)) API, EGL (Embedded-system Graphics Library) API 등과 같은 크로스-플랫폼 그래픽스 라이브러리 애플리케이션 프로그래밍 인터페이스들 (Application Programming Interfaces (API's))을 경유하여 옵션으로 구현된다.
추가로, 상기 그래픽스 드라이버 (316)는 옵션으로는 운영 시스템 (OS)의 커널에서 소프트웨어로 가능하다. 상기 그래픽스 드라이버 (316)는 옵션으로 시스템-공급 드라이버 컴포넌트, 벤더-공급 드라이버 컴포넌트, 또는 그것들의 조합이다. 상기 그래픽스 드라이버 (316)는 상기 그래픽스 하드웨어 (318)를 경유하여 상기 디스플레이 (320)와 인터페이스한다. 상기 그래픽스 하드웨어 (318)는 옵션으로, 예를 들면, 상기 기기 (200)의 통합된 그래픽스 칩셋 또는 전용의 그래픽스 프로세싱 유닛 (graphics processing unit (GPU))이다. 상기 디스플레이 (320)는 옵션으로, 예를 들면, 상기 기기 (200)의 터치 스크린 디스플레이와 같은 픽셀 디스플레이이다.
예시의 실시예에서, 상기 소프트웨어 애플리케이션 (302)은 게임을 플레이하는 동안에 상기 기기 (200)의 그래픽 디스플레이 설비를 경유하여 볼 수 있는 그래픽 이미지 데이터의 생성을 요청하는 게이밍 애플리케이션이다. 더욱이, 상기 기기 (200)의 사용자는 게임을 플레이하는 동안에 생성된 상기 그래픽 이미지 데이터를 캡쳐하기 위해서 이 예시의 실시예에서 선택한다.
상기 그래픽 이미지 데이터를 생성하기 위해서, 상기 소프트웨어 애플리케이션 (302)은 상기 그래픽스 엔진 (304)으로의 하나 또는 그 이상의 함수 호출들을 한다. 상기 그래픽스 엔진 (304)은 상기 소프트웨어 애플리케이션 (302) 그리고 그래픽스 장치 사이의 인터페이스로서 행동한다.
상기 그래픽스 엔진 (304)은 적어도 부분적으로 상기 소프트웨어 애플리케이션 (302)에서 구현되는 것이 보통이다. 대안으로, 상기 그래픽스 엔진 (304)은 상기 소프트웨어 애플리케이션 (302)과는 완전히 개별적인 루틴으로서 옵션으로 구현된다. 상기 그래픽스 엔진 (304)은 상기 소프트웨어 애플리케이션 (302)의 저자에 의해서 생성되거나 또는 서드 파티로부터 라이센스 받은 것 중 어느 하나이다.
상기 함수 호출들을 수신하면, 상기 그래픽스 엔진 (304)은 상기 소프트웨어 애플리케이션들의 상태를 그래픽으로 제시하는 방식을 계산하고, 그리고 상기 그래픽스 라이브러리 (308)로의 하나 또는 그 이상의 함수 호출들을 한다. 이것은 상기 래퍼 (306)를 개시하며, 이 래퍼는 상기 그래픽스 엔진 (304)에 의해서 만들어진 상기 그래픽스 라이브러리 (308)로의 함수 호출들을 가로채도록 동작할 수 있다.
유익하게도, 상기 래퍼 (306)는 상기 그래픽스 라이브러리 (308)를 둘러싸도록 (wrap around) 동작할 수 있으며, 그래서 상기 그래픽스 라이브러리로의 실질적인 모든 함수 호출들이 상기 래퍼 (306)를 통해서 지나가도록 한다. 상기 래퍼 (306)는 상기 애플리케이션 (302)의 일부이라는 것에 유의해야만 한다.
상기 SDK가 상기 그래픽스 라이브러리 (308) 그리고/또는 상기 그래픽스 엔진 (304)에 의해서 생성된 그래픽 이미지 데이터를 액세스하고, 읽고, 복사하고 그리고/또는 수정하는 것을 가능하게 하기 위해서 상기 래퍼 (306)는 상기 함수 호출들이 상기 그래픽스 라이브러리 (308)에 의해서 수신되기 이전에 그 함수 호출들을 수정하도록 동작할 수 있으며 그리고/또는 그렇지 않다면 상기 그래픽스 라이브러리 (308)의 동작을 어떤 방식으로라도 제어하기 위해서 상기 함수 호출들을 수정하는 것을 가능하게 한다.
더욱이, 상기 SDK는 상기 임시 버퍼 (310) 그리고/또는 상기 최종 버퍼 (312)로부터 상기 그래픽스 엔진 (304) 그리고/또는 상기 그래픽스 라이브러리 (308)에 의해서 생성된 그래픽 이미지 데이터의 사본을 만들도록 옵션으로 동작할 수 있다. 특별한 함수 호출이 상기 래퍼 (306)를 통해서 지나갈 때에, 상기 비디오-캡쳐 컴포넌트 (314)가 상기 임시 버퍼 (310) 그리고/또는 상기 최종 버퍼 (312)로부터 상기 그래픽 이미지 데이터를 복사할 수 있는 방식으로 상기 그래픽스 라이브러리 (308)를 제어하기 위해서, 상기 래퍼 (306)는 저 특별한 함수 호출이 상기 그래픽스 라이브러리 (308)에 의해서 수신되기 이전에 그 특별한 함수 호출을 수정한다.
상기 그래픽스 엔진 (304)이 하나의 임시 버퍼 (310)만을 사용하는 경우에, 그 임시 버퍼 (310)는 상기 최종 버퍼 (312)로서 또한 옵션으로 사용되며, 상기 SDK가 상기 함수 호출들에 행했던 또는 행한 수정들은 상기 비디오-캡쳐 컴포넌트가 그 버퍼에서 상기 그래픽스 라이브러리 (308)에 의해서 생성된 또는 수정된 데이터를 읽는 것을 가능하게 한다. 상기 그래픽스 엔진 (304)이 그 버퍼에서 이미지 프레임을 그리는 것을 완료할 때에, 상기 그래픽스 엔진 (304)은 상기 그래픽스 라이브러리 (308)를 호출하여 상기 완료된 이미지 프레임을 사용자에게 제시한다. 따라서, 상기 비디오-캡쳐 컴포넌트 (314)는 상기 최종 버퍼 (312)의 사본을 상기 기기 메모리 내 어떤 다른 곳에 저장하며, 그 이후에 상기 그래픽스 라이브러리 (308)가 상기 그래픽스 드라이버 (316)를 호출하여 상기 최종 버퍼 (312)를 상기 사용자에게 제시하는 것을 상기 래퍼 (306)가 보장한다. 대안의 실시예에서, 즉, 사용자 인터페이스 엘리먼트들과 같은 어떤 그래픽 엘리먼트들이 그 대응 버퍼에서 생성되기 이전에 그래픽 이미지 데이터를 캡쳐하기 위해서 상기 비디오-캡쳐 컴포넌트 (314)는 상기 이미지 프레임이 완전하게 그려지기 이전에 상기 임시 버퍼 (310) 또는 상기 최종 버퍼 (312)의 사본을 저장할 수 있다.
상기 그래픽스 엔진 (304)이 다중의 버퍼들, 즉, 하나 또는 그 이상의 임시 버퍼들 (310)을 사용하는 다른 경우에, 상기 그래픽스 라이브러리 (308)는 상기 그래픽 이미지 데이터를 상기 하나 또는 그 이상의 임시 버퍼들 (310)에 쓴다. 상기 그래픽스 엔진 (304)이 상기 하나 또는 그 이상의 임시 버퍼들 (310)에서 이미지 프레임을 그리는 것을 완료할 때에, 상기 그래픽스 엔진 (304)은 합성된 이미지 프레임을 사용자에게 제시하기 위해서 상기 그래픽스 라이브러리 (308)를 호출한다. 따라서, 상기 래퍼 (306)는 상기 그래픽스 라이브러리 (308)가 상기 하나 또는 그 이상의 임시 버퍼들 (310)로부터의 그래픽 이미지 데이터를 상기 최종 버퍼 (312)로 합성하는 것을 보장하며, 이것은 상기 비디오-캡쳐 컴포넌트 (314)에 의해서 읽혀질 수 있다. 일단 상기 합성이 완료되면, 상기 비디오-캡쳐 컴포넌트 (314)는 상기 최종 버퍼 (312)로부터의 상기 합성된 그래픽 이미지 데이터를 상기 기기 메모리 내 어떤 다른 곳에 저장할 것이며, 그 이후에 상기 그래픽스 드라이버 (316)는 상기 최종 버퍼 (312)를 사용자에게 제시할 것이다. 대안의 실시예에서, 즉, 사용자 인터페이스 엘리먼트들과 같은 어떤 그래픽 엘리먼트들이 생성되기 이전에 어떤 그래픽 이미지 데이터를 캡쳐하기 위해서 상기 비디오-캡쳐 컴포넌트 (314)는 상기 프레임이 완료되기 이전에 상기 임시 버퍼 (310) 또는 상기 최종 버퍼 (312)의 사본을 저장하도록 동작할 수 있다.
상기 완료된 이미지 프레임을 수신하면, 상기 그래픽스 드라이버 (316)는 상기 그래픽스 하드웨어 (318) 그리고/또는 상기 디스플레이 (320)를 제어하여 상기 완료된 이미지 프레임을 상기 사용자에게 제시하도록 한다.
한편, 상기 비디오-캡쳐 컴포넌트 (314)는 상기 임시 버퍼들 (310) 또는 최종 버퍼 (312) 중 어느 하나로 써진 그래픽 이미지 데이터를 캡쳐하고, 그리고 상기 그래픽 이미지 데이터를 상기 메모리 (202)에, 또는 상기 기기 (200)의 로컬인 다른 내부 저장부에 저장하고, 또는, 예를 들면, 비디오 인코더 소프트웨어 또는 하드웨어를 이용함으로써 그것을 더 프로세싱하고, 상기 그래픽 이미지 데이터의 프레임들을 비디오 파일로 압축하도록 동작할 수 있다. 그럼으로써 저장된 상기 그래픽 이미지 데이터는 옵션으로, 예를 들면, 나중에 이미지 프레임들을 재생하기 위해서 옵션으로 사용되어, 예를 들면, 상기 소프트웨어 애플리케이션 (302) 동작의 비디오 레코딩을 제공하도록 한다.
유리하게도, 상기 비디오-캡쳐 컴포넌트 (314)는 상기 최종 버퍼 (312)의 콘텐트를 상기 기기 (200)와는 공간적으로 원격인 데이터 저장부에 업로드하고 그리고/또는 스트리밍하도록 옵션으로 동작 가능하다. 상기 콘텐트는 상기 데이터 저장부로부터 다른 사용자들의 하나 또는 그 이상의 기기들로 옵션으로 스트리밍되며, 이는 예를 들면 게임을 플레이하는 경험들을 공유하기 위한 목적들을 위한 것이지만, 그것들로 제한되는 것은 아니다.
더욱이, 상기 래퍼 (306) 그리고 상기 비디오-캡쳐 컴포넌트 (314)를 포함하는 상기 SDK는 상기 소프트웨어 애플리케이션 (302)으로 통합되어 상기 소프트웨어 애플리케이션의 필수적인 일부가 되도록 옵션으로 구성된다. 예를 들면, 상기 소프트웨어 애플리케이션 (302)이 오브젝트 코드 라이브러리들과 함께 링크될 때에, 상기 래퍼 (306) 그리고 상기 비디오-캡쳐 컴포넌트 (314)는 상기 소프트웨어 애플리케이션 (302)의 애플리케이션 이진 인터페이스 (Application Binary Interface (ABI))에 옵션으로 포함된다. 실행 가능한 파일이 생성될 때에, 또는 상기 소프트웨어 애플리케이션 (302)이 런 타임에 사용될 때에는 언제나, 그런 링크 형성은, 예를 들면, 유리하게도 수행된다. 결과적으로, 옵션으로 상기 래퍼 (306) 그리고 상기 비디오-캡쳐 컴포넌트 (314)는, 예를 들면, 소프트웨어 개발자들에 의해서 구현된 것과 같이 투명한 (transparent) 방식으로 상기 소프트웨어 애플리케이션 (302)의 일부가 된다.
더욱이, 상기 소프트웨어 애플리케이션 (302)은 사용자가 상기 SDK에 의해서 제공된 그래픽 캡쳐 기능성들을 "가능하게" 하고 또는 "불능하게"하는 것을 허용하도록 옵션으로 동작할 수 있다.
옵션으로, 상기 SDK를 상기 소프트웨어 애플리케이션 이진 인터페이스 (ABI)와 링크하는 것을 제외하면, 상기 소프트웨어 애플리케이션 (302), 상기 그래픽스 엔진 (304) 그리고/또는 상기 그래픽스 라이브러리 (308)는 수정될 것을 실질적으로 요청받지 않는다
이제, 상기 소프트웨어 애플리케이션 (302)이 그래픽 이미지 데이터를 생성하기 위해서 상기 그래픽스 엔진 (304)을 호출할 때에, 상기 그래픽스 라이브러리 (308)를 호출할 것을 의도하고 있는 상기 그래픽스 엔진 (304)은 대신에 상기 래퍼를 투명하게 호출한다. 계속해서, 상기 래퍼 (306)는 상기 그래픽스 라이브러리 (308)를 구성하기 위해서 상기 함수 호출들을 통과시키기 이전에 상기 함수 호출들을 수정하며, 그래서, 예를 들면, 그런 데이터를 읽고, 복사하고 그리고 수정하기 위해서, 상기 비디오-캡쳐 컴포넌트 (314)가 생성된 상기 그래픽 이미지 데이터에 완전하게 액세스하도록 하여, 상기 그래픽스 엔진 (304) 그리고/또는 상기 그래픽스 라이브러리 (308)에 의해서 생성된 상기 그래픽 이미지 데이터를 캡쳐하는 것을 용이하게 한다.
대안으로, 상기 SDK는 상기 OS (212)로 통합되어 상기 OS의 필수적인 일부가 되도록 옵션으로 구성된다. 이것은 상기 OS (212) 상에서 동작하는 어떤 소프트웨어 애플리케이션에게도 그래픽 캡쳐링 기능성들을 제공한다. 그런 경우에, 상기 OS (212)는 상기 기기 (200)의 사용자가, 예를 들면, 소프트웨어-애플리케이션 기반마다 상기 그래픽 캡쳐링 기능성들을 제어하는 것을 가능하게 하는 특징을 옵션으로 제공한다.
그런 구현은 하드웨어 제조자들이 휴대용 기기 상에서 동작하는 모든 소프트웨어 애플리케이션들에게 시스템-와이드 (system-wide) 그래픽 캡쳐링 기능성을 제공하기 위해서 상기 OS (212)를 이용하는 상기 휴대용 기기를 제조하는 것을 유리하게도 가능하게 한다. 더욱이, 오픈-소스 운영 시스템들의 경우에, 이것은 개별 개발자들이 시스템-와이드 그래픽 캡쳐링 기능성을 포함시키기 위해서 상기 오픈-소스 운영 시스템들을 수정하는 것을 유리하게도 가능하게 한다.
유리하게도, 상기 래퍼 (306)를 실행하는 것은 측정 가능한 성능 저하가 되지 않으며, 이는 상기 래퍼 (306)가 스스로 그래픽 이미지 데이터를 생성하지 않기 때문이다. 그러나, 상기 비디오-캡쳐 컴포넌트 (314)에 의해서 그래픽 이미지 데이터를 캡쳐하고, 그리고 그런 그래픽 이미지 데이터를 저장하거나 또는 비디오 파일로 압축하는 것은 잠재적으로 약간의 성능 저하의 결과가 되며, 이는 상기 소프트웨어 애플리케이션 (302)을 실행함으로써 초래된 성능 저하와 비교할 때에는 실질적으로 무시될 수 있다.
도 3은 일 예일 뿐이며, 이것은 본원에서의 청구범위의 범위를 과도하게 제한하면 안 된다. 상기 그래픽스 장치의 특정 명칭은 상기 그래픽 장치를 상기 그래픽 장치의 모듈들, 루틴들, 소프트웨어 제품들, 컴포넌트들 그리고/또는 API들의 특정 번호들, 유형들, 또는 배치들로 제한하는 것으로 해석되어서는 안 된다. 본 발명이 속한 기술 분야에서의 통상의 지식을 가진 자는 본 발명 개시의 실시예들의 많은 변이들, 대안들, 그리고 수정들을 인식할 것이다.
예를 들면, 비디오 장치는 상기 그래픽스 장치와 유사한 방식으로 상기 기기 (200) 상에서 옵션으로 구현되어, 게임을 플레이하는 동안에 생성된 그래픽 이미지 데이터와 함께 비디오 그리고/또는 디지털 오디오 데이터를 캡쳐하도록 한다. 상기 그래픽 이미지 데이터와 함께 상기 디지털 오디오 데이터로 구성된 비디오 파일은 그러면 유리하게도 원격 서버로 업로드되거나 또는 스트리밍되며 그리고/또는 다른 사용자들과 공유된다.
도 4는 본 발명 개시의 제2 실시예에 따른, 상기 장치 (200)에 적합한 그래픽 장치의 개략적인 도시이다; 도 3에서의 특징들에 대한 설명은 다르게 설명된 경우를 제외하면 도 4 및 도 5에서 필요한 부분만 약간 수정한 것에 속한다. 예시적인 목적들을 위해서, 상기 그래픽스 장치는 상기 기기 (200)의 프로세서 (204) 상에서 실행하고 있는 소프트웨어 애플리케이션에 의해서 사용된다.
상기 그래픽스 장치는 래퍼 (404), 그래픽스 엔진 (406), 그래픽스 라이브러리 (408), 하나 또는 그 이상의 임시 버퍼들 (410), 최종 버퍼 (412), 비디오-캡쳐 컴포넌트 (414), 그래픽 드라이버 (416), 그래픽스 하드웨어 (418) 그리고 디스플레이 (420)를 포함한다. 상기 래퍼 (404), 최종 버퍼 (412) 그리고 상기 비디오-캡쳐 컴포넌트 (414)는 그래픽 이미지 데이터를 캡쳐하기 위해 SDK의 일부를 형성한다. 상기 그래픽 드라이버 (416), 그래픽 하드웨어 (418) 그리고 상기 디스플레이 (420)는 상기 기기 (200)의 그래픽 디스플레이 설비의 일부를 형성한다.
본 발명 개시의 실시예에 따라, 상기 SDK는 상기 기기 (200)의 프로세서 (204) 상에서 상기 소프트웨어 애플리케이션 (402)과 동시에 실행하도록 구성되며, 옵션으로는 상기 소프트웨어 애플리케이션 (402)의 일부로서 실행하도록 구성된다.
상기 래퍼 (404), 그래픽스 엔진 (406), 상기 그래픽스 라이브러리 (408), 상기 임시 버퍼들 (410), 상기 최종 버퍼 (412) 그리고 상기 비디오-캡쳐 컴포넌트 (414)는 상기 기기 (200)의 데이터 메모리 (202) 내에 옵션으로 저장되며, 그리고 도 4에서 보이는 것처럼 OS (212) 내에 옵션으로 상주하며 또는 상기 OS (212) 내부에서 옵션으로 실행된다.
예를 들면, 상기 그래픽스 엔진 (406)은 옵션으로는, 객체-지향적 그래픽스 렌더링 엔진 (Object-oriented Graphics Rendering Engine (OGRE)), 일리히트 (Irrlicht) 3D 엔진, Visual3D 게임 엔진, Truevision3D 엔진, 크리스탈 스페이스 (Crystal Space) 엔진, Unity3D 게임 엔진, 언리얼 (Unreal) 엔진, Cocos2D 엔진 등과 같은 서드 파티로부터 라이센스를 받은 그래픽스 엔진이다. 상기 그래픽스 라이브러리 (408)는 OpenGL API, Direct3D API, EAGL API, EGL API 등과 같은 크로스-플랫폼 그래픽스 라이브러리를 경유하여 옵션으로 구현된다.
추가로, 상기 그래픽스 드라이버 (416)는 옵션으로는 운영 시스템 (OS)의 커널에서 소프트웨어로 가능하다. 상기 그래픽스 드라이버 (416)는 옵션으로 시스템-공급 드라이버 컴포넌트, 벤더-공급 드라이버 컴포넌트, 또는 그것들의 조합이다. 상기 그래픽스 드라이버 (416)는 상기 그래픽스 하드웨어 (418)를 경유하여 상기 디스플레이 (420)와 인터페이스된다. 상기 그래픽스 하드웨어 (418)는 옵션으로, 예를 들면, 상기 기기 (200)의 통합된 그래픽스 칩셋 또는 전용의 그래픽스 프로세싱 유닛 (GPU)이다. 상기 디스플레이 (420)는, 예를 들면, 상기 기기 (200)의 터치 스크린 디스플레이와 같은 픽셀 디스플레이이다.
예시의 실시예에서, 상기 소프트웨어 애플리케이션 (402)은 게임을 플레이하는 동안에 상기 기기 (200)의 그래픽 디스플레이 설비를 경유하여 볼 수 있는 그래픽 이미지 데이터의 생성을 요청하는 게이밍 애플리케이션이다. 더욱이, 상기 기기 (200)의 사용자는 게임을 플레이하는 동안에 생성된 상기 그래픽 이미지 데이터를 캡쳐하기 위해서 이 예시의 실시예에서 선택한다.
상기 그래픽 이미지 데이터를 생성하기 위해서, 상기 소프트웨어 애플리케이션 (402)은 상기 그래픽스 엔진 (404)으로의 하나 또는 그 이상의 함수 호출들을 한다. 상기 그래픽스 엔진 (406)은 상기 소프트웨어 애플리케이션 (402) 그리고 그래픽스 장치 사이의 인터페이스로서 행동한다.
상기 그래픽스 엔진 (406)은 상기 소프트웨어 애플리케이션 (302)의 일부로서 구현되는 것이 보통이다. 대안으로, 상기 그래픽스 엔진 (406)은 상기 소프트웨어 애플리케이션 (402)과는 완전히 개별적인 루틴으로서 구현된다. 상기 그래픽스 엔진 (406)은 옵션으로 상기 소프트웨어 애플리케이션 (402)의 저자에 의해서 생성되거나 또는 서드 파티로부터 라이센스 받은 것 중 어느 하나이다.
상기 소프트웨어 애프리케이션 (402)이 상기 그래픽스 엔진 (406)으로의 함수 호출들을 할 때에, 상기 래퍼 (404)는 개시된다. 상기 래퍼 (404)는 상기 소프트웨어 애플리케이션 (402)에 의해서 만들어진 상기 그래픽스 엔진 (406)으로의 함수 호출들을 가로채도록 동작할 수 있다.
유익하게도, 상기 래퍼 (404)는 상기 그래픽스 엔진 (406)을 둘러싸도록 동작할 수 있으며, 그래서 상기 그래픽스 엔진 (406)으로의 그리고/또는 상기 그래픽스 엔진으로부터의 실질적인 모든 함수 호출들이 상기 래퍼 (404)를 통해서 지나가도록 한다. 상기 래퍼 (404)는 상기 애플리케이션 (402)의 일부이라는 것에 유의해야만 한다.
상기 함수 호출들을 수신하면, 상기 그래픽스 엔진 (406)은 상기 소프트웨어 애플리케이션들의 상태를 그래픽으로 제시하는 방식을 평가하고, 그리고 상기 그래픽스 라이브러리 (408)로의 하나 또는 그 이상의 함수 호출들을 한다. 따라서, 상기 래퍼 (404)는 상기 그래픽스 엔진 (406)에 의해서 만들어진 상기 그래픽스 라이브러리 (408)로의 함수 호출들을 가로채도록 동작할 수 있다.
그래픽 이미지 데이터를 캡쳐하기 위해서, 상기 SDK가 상기 그래픽스 엔진 (406) 그리고/또는 상기 그래픽스 라이브러리 (408)에 의해서 생성된 그래픽 이미지 데이터를 액세스하고, 읽고, 복사하고 그리고/또는 수정하는 것을 가능하게 하기 위해서 상기 래퍼 (404)는 상기 함수 호출들이 상기 그래픽스 엔진 (406) 그리고/또는 상기 그래픽스 라이브러리 (408)에 의해서 수신되기 이전에 그 함수 호출들을 수정하도록 동작할 수 있으며 그리고/또는 그렇지 않다면 상기 그래픽스 엔진 (406) 그리고/또는 그래픽스 라이브러리 (408)의 동작을 어떤 방식으로라도 제어하기 위해서 상기 함수 호출들을 수정하는 것을 가능하게 한다.
더욱이, 상기 SDK는 상기 임시 버퍼 (410) 그리고/또는 상기 최종 버퍼 (412)로부터 상기 그래픽스 엔진 (406) 그리고/또는 상기 그래픽스 라이브러리 (408)에 의해서 생성된 그래픽 이미지 데이터의 사본을 만들도록 옵션으로 동작할 수 있다. 특별한 함수 호출이 상기 래퍼 (404)를 통해서 지나갈 때에, 상기 비디오-캡쳐 컴포넌트 (414)가 상기 그래픽 이미지 데이터를 상기 임시 버퍼 (410) 그리고/또는 상기 최종 버퍼 (412)로부터 복사할 수 있는 방식으로 상기 그래픽스 엔진 (406) 그리고/또는 상기 그래픽스 라이브러리 (408)를 제어하기 위해서, 상기 래퍼 (406)는 저 특별한 함수 호출이 상기 그래픽스 엔진 (406) 그리고/또는 상기 그래픽스 라이브러리 (408)에 의해서 수신되기 이전에 그 특별한 함수 호출을 수정한다.
상기 그래픽스 엔진 (406)이 하나의 임시 버퍼 (410)만을 사용하는 경우에, 그 임시 버퍼 (410)는 상기 최종 버퍼 (412)로서 또한 옵션으로 사용되며, 그리고 상기 SDK가 상기 함수 호출들에 행했던 또는 행한 수정들은 상기 비디오-캡쳐 컴포넌트가 그 버퍼에서 상기 그래픽스 라이브러리 (408)에 의해서 생성된 또는 수정된 데이터를 읽는 것을 가능하게 한다. 따라서, 상기 래퍼 (404)는, 상기 비디오-캡쳐 컴포넌트 (414)가 상기 최종 버퍼 (412)의 사본을 상기 기기 메모리 내 어떤 다른 곳에 저장하며 그 이후에 상기 그래픽스 라이브러리 (408)가 상기 그래픽스 드라이버 (416)를 호출하여 상기 최종 버퍼 (412)를 상기 사용자에게 제시한다는 것을 보장한다. 대안의 실시예에서, 즉, 사용자 인터페이스 엘리먼트들과 같은 어떤 그래픽 엘리먼트들이 그 대응 버퍼에서 생성되기 이전에 그래픽 이미지 데이터를 캡쳐하기 위해서 상기 비디오-캡쳐 컴포넌트는 상기 이미지 프레임이 완전하게 그려지기 이전에 상기 임시 버퍼 (410) 또는 상기 최종 버퍼 (412)의 사본을 저장할 수 있다.
상기 그래픽스 엔진 (406)이 다중의 버퍼들, 즉, 상기 임시 버퍼들 (410)을 사용하는 다른 경우에, 상기 그래픽스 라이브러리 (408)는 상기 그래픽 이미지 데이터를 상기 임시 버퍼들 (410)에 쓴다. 상기 그래픽스 엔진 (406)이 상기 하나 또는 그 이상의 임시 버퍼들 (410)에서 이미지 프레임을 그리는 것을 완료할 때에, 상기 그래픽스 엔진 (406)은 합성된 이미지 프레임을 사용자에게 제시하기 위해서 상기 그래픽스 라이브러리 (408)를 호출한다. 따라서, 상기 래퍼 (404)는 상기 그래픽스 라이브러리 (408)가 상기 하나 또는 그 이상의 임시 버퍼들 (410)로부터의 그래픽 이미지 데이터를 상기 최종 버퍼 (412)로 합성하는 것을 보장하며, 이것은 상기 비디오-캡쳐 컴포넌트 (414)에 의해서 읽혀질 수 있다. 일단 상기 합성이 완료되면, 상기 비디오-캡쳐 컴포넌트 (414)는 상기 최종 버퍼 (412)로부터의 상기 합성된 그래픽 이미지 데이터를 상기 기기 메모리 내 어떤 다른 곳에 저장할 것이며, 그 이후에 상기 그래픽스 드라이버 (416)는 상기 최종 버퍼 (412)를 사용자에게 제시할 것이다. 대안의 실시예에서, 즉, 사용자 인터페이스 엘리먼트들과 같은 어떤 그래픽 엘리먼트들이 생성되기 이전에 어떤 그래픽 이미지 데이터를 캡쳐하기 위해서 상기 비디오-캡쳐 컴포넌트 (414)는 상기 프레임이 완료되기 이전에 상기 임시 버퍼 (410) 또는 상기 최종 버퍼 (412)의 사본을 저장하도록 동작할 수 있다.
상기 완료된 이미지 프레임을 수신하면, 상기 그래픽스 드라이버 (416)는 상기 그래픽스 하드웨어 (418) 그리고/또는 상기 디스플레이 (420)를 제어하여 상기 완료된 이미지 프레임을 상기 사용자에게 제시하도록 한다.
한편, 상기 비디오-캡쳐 컴포넌트 (414)는 상기 임시 버퍼들 (410) 또는 최종 버퍼 (412) 중 어느 하나로 써진 그래픽 이미지 데이터를 캡쳐하고, 그리고 상기 그래픽 이미지 데이터를 상기 메모리 (202)에, 또는 상기 기기 (200)의 로컬인 다른 내부 저장부에 저장하고, 또는, 예를 들면, 비디오 인코더 소프트웨어 또는 하드웨어를 이용함으로써 그것을 더 프로세싱하고, 상기 그래픽 이미지 데이터의 프레임들을 비디오 파일로 압축하도록 동작할 수 있다. 그럼으로써 저장된 상기 그래픽 이미지 데이터는 옵션으로, 예를 들면, 나중에 이미지 프레임들을 재생하기 위해서 옵션으로 사용되어, 예를 들면, 상기 소프트웨어 애플리케이션 (402) 동작의 비디오 레코딩을 제공하도록 한다.
유리하게도, 상기 비디오-캡쳐 컴포넌트 (414)는 상기 최종 버퍼 (412)의 콘텐트를 상기 기기 (200)와는 공간적으로 원격인 데이터 저장부에 업로드하고 그리고/또는 스트리밍하도록 옵션으로 동작 가능하다. 상기 콘텐트는 상기 데이터 저장부로부터 다른 사용자들의 하나 또는 그 이상의 기기들로 옵션으로 스트리밍되며, 이는 예를 들면 게임을 플레이하는 경험들을 공유하기 위한 목적들을 위한 것이지만, 그것들로 제한되는 것은 아니다.
더욱이, 상기 래퍼 (404) 그리고 상기 비디오-캡쳐 컴포넌트 (414)를 포함하는 상기 SDK는 상기 소프트웨어 애플리케이션 (402)으로 통합되어 상기 소프트웨어 애플리케이션의 필수적인 일부가 되도록 옵션으로 구성된다. 예를 들면, 상기 소프트웨어 애플리케이션 (402)이 오브젝트 코드 라이브러리들과 함께 링크될 때에, 상기 래퍼 (404) 그리고 상기 비디오-캡쳐 컴포넌트 (414)는 상기 소프트웨어 애플리케이션 (402)의 애플리케이션 이진 인터페이스 (Application Binary Interface (ABI))에 옵션으로 포함된다. 실행 가능한 파일이 생성될 때에, 또는 상기 소프트웨어 애플리케이션 (402)이 런 타임에 사용될 때에는 언제나, 그런 링크 형성은, 예를 들면, 유리하게도 수행된다. 결과적으로, 옵션으로 상기 래퍼 (404) 그리고 상기 비디오-캡쳐 컴포넌트 (414)는, 예를 들면, 소프트웨어 개발자들에 의해서 구현된 것과 같이 투명한 (transparent) 방식으로 상기 소프트웨어 애플리케이션 (402)의 일부가 된다.
더욱이, 상기 소프트웨어 애플리케이션 (402)은 사용자가 상기 SDK에 의해서 제공된 그래픽 캡쳐 기능성들을 "가능하게" 하고 또는 "불능하게"하는 것을 허용하도록 옵션으로 동작할 수 있다.
옵션으로, 상기 SDK를 상기 소프트웨어 애플리케이션 이진 인터페이스 (ABI)와 링크하는 것을 제외하면, 상기 소프트웨어 애플리케이션 (402), 상기 그래픽스 엔진 (406) 그리고/또는 상기 그래픽스 라이브러리 (408)는 수정될 것을 실질적으로 요청받지 않는다
이제, 상기 소프트웨어 애플리케이션 (402)이 그래픽 이미지 데이터를 생성하기 위해서 상기 그래픽스 엔진 (406)을 호출할 때에, 소프트웨어 애플리케이션 (402)은 대신에 상기 래퍼 (404)를 투명하게 호출한다. 계속해서, 상기 래퍼 (404)는 상기 그래픽스 엔진 (406) 그리고/또는 상기 그래픽스 라이브러리 (408)를 구성하기 위해서 상기 함수 호출들을 통과시키기 이전에 상기 함수 호출들을 수정하며, 그래서, 예를 들면, 그런 데이터를 읽고, 복사하고 그리고 수정하기 위해서, 상기 비디오-캡쳐 컴포넌트 (414)가 생성된 상기 그래픽 이미지 데이터에 완전하게 액세스하도록 하여, 상기 그래픽스 엔진 (406) 그리고/또는 상기 그래픽스 라이브러리 (408)에 의해서 생성된 상기 그래픽 이미지 데이터를 캡쳐하는 것을 용이하게 한다.
유리하게도, 상기 래퍼 (404)를 실행하는 것은 측정 가능한 성능 저하가 되지 않으며, 이는 상기 래퍼 (404)가 스스로 그래픽 이미지 데이터를 생성하지 않기 때문이다. 그러나, 상기 비디오-캡쳐 컴포넌트 (414)에 의해서 그래픽 이미지 데이터를 캡쳐하고, 그리고 그런 그래픽 이미지 데이터를 저장하거나 또는 비디오 파일로 압축하는 것은 잠재적으로 약간의 성능 저하의 결과가 되며, 이는 상기 소프트웨어 애플리케이션 (402)을 실행함으로써 초래된 성능 저하와 비교할 때에는 실질적으로 무시될 수 있다.
도 3은 일 예일 뿐이며, 이것은 본원에서의 청구범위의 범위를 과도하게 제한하면 안 된다. 상기 그래픽스 장치의 특정 명칭은 상기 그래픽 장치를 상기 그래픽 장치의 모듈들, 루틴들, 소프트웨어 제품들, 컴포넌트들 그리고/또는 API들의 특정 번호들, 유형들, 또는 배치들로 제한하는 것으로 해석되어서는 안 된다. 본 발명이 속한 기술 분야에서의 통상의 지식을 가진 자는 본 발명 개시의 실시예들의 많은 변이들, 대안들, 그리고 수정들을 인식할 것이다.
예를 들면, 비디오 장치는 상기 그래픽스 장치와 유사한 방식으로 상기 기기 (200) 상에서 옵션으로 구현되어, 게임을 플레이하는 동안에 생성된 그래픽 이미지 데이터와 함께 비디오 그리고/또는 디지털 오디오 데이터를 캡쳐하도록 한다. 상기 그래픽 이미지 데이터와 함께 상기 디지털 오디오 데이터로 구성된 비디오 파일은 그러면 유리하게도 원격 서버로 업로드되거나 또는 스트리밍되며 그리고/또는 다른 사용자들과 공유된다.
도 5는 본 발령 개시의 제3 실시예에 따른 기기 (200)에 적합한 그래픽장치의 개략적인 도시이다. 도시의 목적들을 위해서, 상기 그래픽 장치는, 예를 들면, 상기 기기 (200)의 프로세서 (204) 상에서 실행하는 소프트웨어 애플리케이션 (502)에 의해 사용된다.
상기 그래픽스 장치는 그래픽스 엔진 (504), 비디오-캡쳐 API (506), 그래픽스 라이브러리 (508), 하나 또는 그 이상의 임시 버퍼들 (510), 최종 버퍼 (512), 비디오-캡쳐 컴포넌트 (514), 그래픽 드라이버 (516), 그래픽스 하드웨어 (518) 그리고 디스플레이 (520)를 포함한다. 상기 비디오-캡쳐 API (506) 그리고 상기 비디오-캡쳐 컴포넌트 (514)는 그래픽 이미지 데이터를 캡쳐하기 위한 SDK의 일부를 형성한다. 상기 그래픽 드라이버 (516), 그래픽 하드웨어 (518) 그리고 상기 디스플레이 (520)는 상기 기기 (200)의 그래픽 디스플레이 설비의 일부를 형성한다.
본 발명 개시의 실시예에 따라, 상기 SDK는 상기 기기 (200)의 프로세서 (204) 상에서 상기 소프트웨어 애플리케이션 (502)과 동시에 실행하도록 구성되며, 옵션으로는 상기 소프트웨어 애플리케이션 (502)의 일부로서 실행하도록 구성된다.
상기 그래픽스 엔진 (504), 상기 비디오-캡쳐 API (506), 상기 그래픽스 라이브러리 (508), 상기 임시 버퍼들 (510), 상기 최종 버퍼 (512) 그리고 상기 비디오-캡쳐 컴포넌트 (514)는 상기 기기 (200)의 데이터 메모리 (202) 내에 옵션으로 저장되며, 그리고 도 5에서 보이는 것처럼 OS (212) 내에 옵션으로 상주하며 또는 상기 OS (212) 내부에서 옵션으로 실행된다.
예를 들면, 상기 그래픽스 엔진 (504)은 옵션으로는, OGRE, 일리히트 (Irrlicht) 3D 엔진, Visual3D 게임 엔진, Truevision3D 엔진, 크리스탈 스페이스 (Crystal Space) 엔진, Unity3D, 언리얼 (Unreal) 엔진, Cocos2D 등과 같은 서드 파티로부터 라이센스를 받은 그래픽스 엔진이다. 상기 그래픽스 라이브러리 (508)는 OpenGL API, Direct4D API, EAGL API, EGL API 등과 같은 크로스-플랫폼 그래픽스 라이브러리를 경유하여 옵션으로 구현된다.
추가로, 상기 그래픽스 드라이버 (516)는 옵션으로는 운영 시스템 (OS)의 커널에서 소프트웨어로 가능하다. 상기 그래픽스 드라이버 (516)는 옵션으로 시스템-공급 드라이버 컴포넌트, 벤더-공급 드라이버 컴포넌트, 또는 그것들의 조합이다. 상기 그래픽스 드라이버 (516)는 상기 그래픽스 하드웨어 (518)를 경유하여 상기 디스플레이 (520)와 인터페이스된다. 상기 그래픽스 하드웨어 (518)는 옵션으로, 예를 들면, 상기 기기 (200)의 통합된 그래픽스 칩셋 또는 전용의 그래픽스 프로세싱 유닛 (GPU)이다. 상기 디스플레이 (520)는, 예를 들면, 상기 기기 (200)의 터치 스크린 디스플레이와 같은 픽셀 디스플레이이다.
예시의 실시예에서, 상기 소프트웨어 애플리케이션 (502)은 게임을 플레이하는 동안에 상기 기기 (200)의 그래픽 디스플레이 설비를 경유하여 볼 수 있는 그래픽 이미지 데이터의 생성을 요청하는 게이밍 애플리케이션이다. 더욱이, 상기 기기 (200)의 사용자는 게임을 플레이하는 동안에 생성된 상기 그래픽 이미지 데이터를 캡쳐하기 위해서 이 예시의 실시예에서 선택한다.
상기 그래픽 이미지 데이터를 생성하기 위해서, 상기 소프트웨어 애플리케이션 (502)은 상기 그래픽스 엔진 (504)으로의 하나 또는 그 이상의 함수 호출들을 한다. 상기 그래픽스 엔진 (504)은 상기 소프트웨어 애플리케이션 (502) 그리고 그래픽스 장치 사이의 인터페이스로서 행동한다.
상기 그래픽스 엔진 (504)은 옵션으로 상기 소프트웨어 애플리케이션 (302)의 적어도 일부로서 구현된다. 대안으로, 상기 그래픽스 엔진 (504)은 상기 소프트웨어 애플리케이션 (502)과는 완전히 개별적인 루틴으로서 옵션으로 구현된다. 상기 그래픽스 엔진 (504)은 옵션으로 상기 소프트웨어 애플리케이션 (502)의 저자에 의해서 생성되거나 또는 서드 파티로부터 라이센스 받은 것 중 어느 하나이다.
상기 소프트웨어 애플리케이션 (502) 그리고/또는 상기 그래픽스 엔진 (504)은 상기 비디오-캡쳐 API (506)와 통합하기 위해서 명시적으로 수정되는 것이 이해될 것이다. 일 예에서, 상기 그래픽 엔진 (504)이 오픈-소스 그래픽스 엔진일 때의 경우에 상기 그래픽 엔진 (504)은 상기 소프트웨어 애플리케이션 (502)의 저장에 의해서 옵션으로 수정된다. 다른 예에서, 상기 그래픽스 엔진 (504)은 상기 그래픽스 엔진의 저자에 의해서 옵션으로 수정된다.
이 구현에서, 상기 그래픽스 엔진 (504)은 그래픽 캡쳐링 기능성을 제공하는 상기 비디오-캡쳐 API (506)을 호출하기 위해서 명시적으로 수정된다. 결과적으로, 상기 소프트웨어 애플리케이션 (502)으로부터의 함수 호출들을 수신하면, 상기 그래픽스 엔진 (504)은 상기 비디오-캡쳐 API (506)로 함수 호출들을 하여 비디오 캡쳐를 가능하게 하고 그리고 그래픽스 라이브러리 (508)로 의도된 어떤 함수 호출들을 상기 비디오-캡쳐 API (506)로 명시적으로 송신한다.
상기 그래픽 이미지 데이터를 캡쳐하기 위해서, 상기 SDK가 상기 그래픽스 엔진 (504) 그리고/또는 상기 그래픽스 라이브러리 (508)에 의해서 생성된 그래픽 이미지 데이터를 액세스하고, 읽고, 복사하고 그리고/또는 수정하는 것을 가능하게 하기 위해서 상기 비디오-캡쳐 API (506)는 상기 함수 호출들이 상기 비디오-캡쳐 API (506)로부터 상기 그래픽스 라이브러리 (508)로 송신되기 이전에 그 함수 호출들을 수정하도록 동작할 수 있다.
더욱이, 상기 SDK는 상기 임시 버퍼 (510) 그리고/또는 상기 최종 버퍼 (512)로부터 상기 그래픽스 엔진 (504) 그리고/또는 상기 그래픽스 라이브러리 (508)에 의해서 생성된 그래픽 이미지 데이터의 사본을 만들도록 옵션으로 동작할 수 있다. 특별한 함수 호출이 상기 비디오-캡쳐 API (506)를 통해서 지나갈 때에, 상기 비디오-캡쳐 컴포넌트 (514)가 상기 그래픽 이미지 데이터를 상기 임시 버퍼 (510) 그리고/또는 상기 최종 버퍼 (512)로부터 복사할 수 있는 방식으로 상기 그래픽스 라이브러리 (508)를 제어하기 위해서, 상기 비디오-캡쳐 API (506)는 저 특별한 함수 호출이 상기 그래픽스 라이브러리 (508)로 송신되기 이전에 그 특별한 함수 호출을 수정한다.
상기 그래픽스 엔진 (504)이 하나의 버퍼, 상기 그래픽스 라이브러리 (508)를 사용하는 경우에, 그 임시 버퍼 (510)는 상기 최종 버퍼 (512)로서 또한 옵션으로 사용되며, 그리고 상기 SDK가 상기 함수 호출들에 행했던 또는 행한 수정들은 상기 비디오-캡쳐 컴포넌트가 그 버퍼에서 상기 그래픽스 라이브러리 (508)에 의해서 생성된 또는 수정된 데이터를 읽는 것을 가능하게 한다. 상기 그래픽스 엔진 (504)이 그 버퍼에서 이미지 프레임을 그리는 것을 완료할 때에, 상기 그래픽스 엔진 (504)은 상기 비디오-캡쳐 API (506)를 호출하며, 이 비디오-캡쳐 API는 그러면 상기 완료된 이미지 프렝미을 사용자에게 제시하기 위해서 상기 그래픽스 라이브러리 (508)를 호출한다.따라서, 상기 비디오-캡쳐 API (506)는, 상기 비디오-캡쳐 컴포넌트 (514)가 상기 최종 버퍼 (512)의 사본을 상기 기기 메모리 내 어떤 다른 곳에 저장하며 그 이후에 상기 그래픽스 라이브러리 (508)가 상기 그래픽스 드라이버 (516)를 호출하여 상기 최종 버퍼 (512)를 상기 사용자에게 제시한다는 것을 보장한다. 대안의 실시예에서, 즉, 사용자 인터페이스 엘리먼트들과 같은 어떤 그래픽 엘리먼트들이 그 대응 버퍼에서 생성되기 이전에 그래픽 이미지 데이터를 캡쳐하기 위해서 상기 비디오-캡쳐 컴포넌트 (514)는 상기 이미지 프레임이 완전하게 그려지기 이전에 상기 임시 버퍼 (510) 또는 상기 최종 버퍼 (512)의 사본을 저장할 수 있다.
상기 그래픽스 엔진 (504)이 다중의 버퍼들, 즉, 상기 임시 버퍼들 (510)을 사용하는 다른 경우에, 상기 그래픽스 라이브러리 (508)는 상기 그래픽 이미지 데이터를 상기 임시 버퍼들 (510)에 쓴다. 상기 그래픽스 엔진 (504)이 상기 임시 버퍼들 (510)에서 이미지 프레임을 그리는 것을 완료할 때에, 상기 그래픽스 엔진 (504)은 상기 비디오-캡쳐 API (506)를 호출하며, 이 비디오-캡쳐 API (506)는 그러면 상기 완료된 이미지 프레임을 사용자에게 제시하기 위해서 상기 그래픽스 라이브러리 (508)를 호출한다. 따라서, 상기 비디오-캡쳐 API (506)는 상기 그래픽스 라이브러리 (508)가 상기 하나 또는 그 이상의 임시 버퍼들 (510)로부터의 그래픽 이미지 데이터를 상기 최종 버퍼 (512)로 합성하는 것을 보장하며, 이것은 상기 비디오-캡쳐 컴포넌트 (514)에 의해서 읽혀질 수 있다. 일단 상기 합성이 끝나면, 상기 비디오-캡쳐 컴포넌트 (514)는 상기 최종 버퍼 (512)로부터의 상기 합성된 그래픽 이미지 데이터를 상기 기기 메모리 내 어떤 다른 곳에 저장할 것이며, 그 이후에 상기 그래픽스 드라이버 (516)는 상기 최종 버퍼 (512)를 사용자에게 제시할 것이다. 대안의 실시예에서, 즉, 사용자 인터페이스 엘리먼트들과 같은 어떤 그래픽 엘리먼트들이 생성되기 이전에 그래픽 이미지 데이터를 캡쳐하기 위해서 상기 비디오-캡쳐 컴포넌트 (514)는 상기 프레임이 완료되기 이전에 상기 임시 버퍼 (510) 또는 상기 최종 버퍼 (512)의 사본을 저장하도록 동작할 수 있다.
상기 완료된 이미지 프레임을 수신하면, 상기 그래픽스 드라이버 (516)는 상기 그래픽스 하드웨어 (518) 그리고/또는 상기 디스플레이 (520)를 제어하여 상기 완료된 이미지 프레임을 상기 사용자에게 제시하도록 한다.
한편, 상기 비디오-캡쳐 컴포넌트 (514)는 상기 임시 버퍼들 (510) 또는 최종 버퍼 (512) 중 어느 하나로 써진 그래픽 이미지 데이터를 캡쳐하고, 그리고 상기 그래픽 이미지 데이터를 상기 메모리 (202)에, 또는 상기 기기 (200)의 로컬인 다른 내부 저장부에 저장하고, 또는, 예를 들면, 비디오 인코더 소프트웨어 또는 하드웨어를 이용함으로써 그것을 더 프로세싱하여 상기 그래픽 이미지 데이터의 프레임들을 비디오 파일로 압축시키도록 동작할 수 있다. 그럼으로써, 저장된 상기 그래픽 이미지 데이터는 옵션으로, 예를 들면, 나중에 이미지 프레임들을 재생하기 위해서 옵션으로 사용되어, 예를 들면, 상기 소프트웨어 애플리케이션 (502) 동작의 비디오 레코딩을 제공하도록 한다.
유리하게도, 상기 비디오-캡쳐 컴포넌트 (514)는 상기 최종 버퍼 (512)의 콘텐트를 상기 기기 (200)와는 공간적으로 원격인 데이터 저장부에 업로드하고 그리고/또는 스트리밍하도록 옵션으로 동작 가능하다. 상기 콘텐트는 상기 데이터 저장부로부터 다른 사용자들의 하나 또는 그 이상의 기기들로 옵션으로 스트리밍되며, 이는 예를 들면 게임을 플레이하는 경험들을 공유하기 위한 목적들을 위한 것이지만, 그것들로 제한되는 것은 아니다.
더욱이, 상기 비디오-캡쳐 API (506) 그리고 상기 비디오-캡쳐 컴포넌트 (514)를 포함하는 상기 SDK는 상기 소프트웨어 애플리케이션 (502)으로 통합되어 상기 소프트웨어 애플리케이션의 필수적인 일부가 되도록 옵션으로 구성된다. 예를 들면, 상기 소프트웨어 애플리케이션 (502)이 오브젝트 코드 라이브러리들과 함께 링크될 때에, 상기 비디오-캡쳐 API (506) 그리고 상기 비디오-캡쳐 컴포넌트 (514)는 상기 소프트웨어 애플리케이션 (502)의 애플리케이션 이진 인터페이스 (Application Binary Interface (ABI))에 옵션으로 포함된다. 실행 가능한 파일이 생성될 때에, 또는 상기 소프트웨어 애플리케이션 (502)이 런 타임에 사용될 때에는 언제나, 그런 링크 형성은, 예를 들면, 유리하게도 수행된다. 결과적으로, 상기 비디오-캡쳐 API (506) 그리고 상기 비디오-캡쳐 컴포넌트 (514)는 옵션으로 상기 소프트웨어 애플리케이션 (502)의 일부가 된다.
더욱이, 상기 소프트웨어 애플리케이션 (502)은 사용자가 상기 SDK에 의해서 제공된 그래픽 캡쳐 기능성들을 "가능하게" 하고 또는 "불능하게"하는 것을 허용하도록 옵션으로 동작할 수 있다.
이제, 상기 소프트웨어 애플리케이션 (502)이 그래픽 이미지 데이터를 생성하기 위해서 상기 그래픽스 엔진 (504)을 호출할 때에, 상기 그래픽스 엔진 (504)은 상기 비디오-캡쳐 API (506)를 명시적으로 호출한다. 계속해서, 상기 비디오-캡쳐 API (506)는 상기 그래픽스 라이브러리 (508)를 구성하기 위해서 상기 함수 호출들을 통과시키기 이전에 상기 함수 호출들을 수정하며, 그래서, 예를 들면, 그런 데이터를 읽고, 복사하고 그리고 수정하기 위해서, 상기 비디오-캡쳐 컴포넌트 (514)가 생성된 상기 그래픽 이미지 데이터에 완전하게 액세스하도록 하여, 상기 그래픽스 엔진 (504) 그리고/또는 상기 그래픽스 라이브러리 (508)에 의해서 생성된 상기 그래픽 이미지 데이터를 캡쳐하는 것을 용이하게 한다.
유리하게도, 상기 비디오-캡쳐 API (506)를 실행하는 것은 측정 가능한 성능 저하가 되지 않으며, 이는 상기 비디오-캡쳐 API (506)가 스스로 그래픽 이미지 데이터를 생성하지 않기 때문이다. 그러나, 상기 비디오-캡쳐 컴포넌트 (514)에 의해서 그래픽 이미지 데이터를 캡쳐하고, 그리고 그런 그래픽 이미지 데이터를 저장하거나 또는 비디오 파일로 압축하는 것은 잠재적으로 약간의 성능 저하의 결과가 되며, 이는 상기 소프트웨어 애플리케이션 (502)을 실행함으로써 초래된 성능 저하와 비교할 때에는 실질적으로 무시될 수 있다.
도 5는 일 예일 뿐이며, 이것은 본원에서의 청구범위의 범위를 과도하게 제한하면 안 된다. 상기 그래픽스 장치의 특정 명칭은 상기 그래픽 장치를 상기 그래픽 장치의 모듈들, 루틴들, 소프트웨어 제품들, 컴포넌트들 그리고/또는 API들의 특정 번호들, 유형들, 또는 배치들로 제한하는 것으로 해석되어서는 안 된다. 본 발명이 속한 기술 분야에서의 통상의 지식을 가진 자는 본 발명 개시의 실시예들의 많은 변이들, 대안들, 그리고 수정들을 인식할 것이다.
예를 들면, 비디오 장치는 상기 그래픽스 장치와 유사한 방식으로 상기 기기 (200) 상에서 옵션으로 구현되어, 게임을 플레이하는 동안에 생성된 그래픽 이미지 데이터와 함께 비디오 그리고/또는 디지털 오디오 데이터를 캡쳐하도록 한다. 상기 그래픽 이미지 데이터와 함께 상기 디지털 오디오 데이터로 구성된 비디오 파일은 그러면 유리하게도 원격 서버로 업로드되거나 또는 스트리밍되며 그리고/또는 다른 사용자들과 공유된다.
도 6은 본 발명 개시의 실시예에 따라서, 그래픽 이미지 데이터를 캡쳐하기위해 SDK를 이용하는 방법의 단계들을 도시한 것이다.상기 방법은 논리적인 흐름도 내의 단계들의 수집으로서 도시되며, 이는 하드웨어, 소프트웨어, 또는 그것들의 결합으로 구현될 수 있는 일련의 단계들을 나타낸다.
이전에 설명된 것처럼, 상기 SDK는 상기 기기 (200)와 같은 기기 내에 채택되도록 구성된다. 상기 기기는 상기 기기의 그래픽 디스플레이 설비를 경유하여 볼 수 있는 그래픽 이미지 데이터를 생성하기 위해서 하나 또는 그 이상의 소프트웨어 애플리케이션들을 실행시키도록 동작할 수 있는 컴퓨팅 하드웨어를 포함한다.
단계 602에서, 상기 SDK는 상기 기기의 컴퓨팅 하드웨어 상에서 상기 소프트웨어 애플리케이션들과 동시에 실행하도록 구성된다. 단계 602에 따라서, 상기 SDK는, 예를 들면, 상기 소프트웨어 애플리케이션이 그래픽스 엔진 그리고/또는 그래픽스 라이브러리로 하나 또는 그 이상의 함수 호출들을 할 때에 옵션으로 개시된다.
단계 604에서, 상기 SDK는 상기 소프트웨어 애플리케이션들에 의해서 만들어진 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리로의 함수 호출들을 가로채도록 동작한다; 대안으로, 또는 추가로, 도 5를 참조하여 설명된 실시예들에서, 상기 함수 호출들은 상기 비디오-캡쳐 API (506)로 명시적으로 송신된다.
단계 604에 따라서, 상기 SDK는 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리를 둘러싸도록 옵션으로 동작하여, 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리로의 실질적인 모든 함수 호출들이 상기 SDK를 통해서 지나가도록 한다.
다음에, 단계 606에서, 상기 SDK는 이전에 설명된 것처럼 이 함수 호출들이 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리에 의해서 수신되기 이전에 그 함수 호출들을 수정하도록 동작한다. 이것은 상기 SDK가 상기 그래픽스 엔진 그리고/또는 그래픽스 라이브러리에 의해서 생성된 상기 그래픽 이미지 데이터를 액세스하고, 읽고, 복사하고 그리고/또는 수정하며, 그리고/또는 그렇지 않다면 상기 그래픽스 엔진 그리고/또는 그래픽스 라이브러리의 동작들을 어떤 방식으로라도 제어하기 위해서 상기 함수 호출들을 수정하는 것을 가능하게 한다.
단계 606에 따라서, 상기 SDK는 상기 비디오-캡쳐 컴포넌트 (314, 414, 514)가 상기 그래픽스 엔진 그리고/또는 그래픽스 라이브러리에 의해서 생성된 상기 그래픽 이미지 데이터를 액세스하고, 읽고, 복사하고 그리고/또는 수정하는 것을 가능하게 하며, 그리고/또는 그렇지 않다면 상기 그래픽스 엔진 그리고/또는 그래픽스 라이브러리의 동작들을 어떤 방식으로라도 제어하기 위해서 상기 함수 호출들을 수정하는 것을 가능하게 하기 위해서 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리를 옵션으로 설정한다.
이어서, 단계 608에서, 상기 SDK는 이전에 설명된 것처럼 상기 임시 버퍼들 (301, 410, 510)에서 또는 상기 최종 버퍼 (312, 412, 512)에서 생성된 또는 수정된 그래픽 이미지 데이터를 캡쳐하도록 동작한다. 상기 비디오-캡쳐 컴포넌트는 상기 참조번호 314의 비디오-캡쳐 컴포넌트, 참조번호 414의 비디오-캡쳐 컴포넌트 또는 참조번호 514의 비디오-캡쳐 컴포넌트의 구현과 유사한 방식으로 옵션으로 구현된다.
상기 단계 608에서 캡쳐된 그래픽 이미지 데이터는 상기 기기에 로컬인 내부 데이터 메모리에 저장될 수 있을 것이다.
더욱이, 상기 방법은 추가적인 단계를 옵션으로 포함하며, 이 추가 단계에서 상기 SDK는 상기 비디오-캡쳐 버퍼의 콘텐트를 상기 기기에 공간적으로 원격인 데이터 저장부로 업로드하고 그리고/또는 스트리밍하도록 동작한다.
한편, 단계 610에서, 상기 최종 버퍼 내의 이미지 프레임들은 상기 기기의 그래픽 디스플레이 설비를 경유하여 사용자에게 제시된다.
참조번호 608의 단계 그리고 참조번호 610의 단계는, 예를 들면, 옵션으로 동시에 수행된다.
더욱이, 상기 방법은 옵션의 단계를 포함하며, 이 옵션의 단계에서 상기 SDK는 상기 소프트웨어 애플리케이션들에 통합되어 그 소프트웨어 애플리케이션들의 필수적인 일부가 되도록 구성된다; 바람직하게는, 이것은 본 발명 개시의 실시예들에 대해서 디폴트이다.
참조번호 602 내지 610의 단계들은 단지 예시적인 것이며 그리고 다른 대안들이 또한 제공될 수 있으며, 이 경우에 본원에서의 청구항들의 범위로부터 벗어나지 않으면서도 하나 또는 그 이상의 단계들이 추가되고, 하나 또는 그 이상의 단계들이 제거되며, 또는 하나 또는 그 이상의 단계들이 상이한 시퀀스로 제공된다.
본 발명 개시의 실시예들은 비-일시적인 (일시적이지 않은) 기계-판독가능 데이터 저장 매체 상에 저장된 소프트웨어 제품을 제공하며, 이 경우에 상기 소프트웨어 제품은 도 6에 관련하여 설명된 상기 방법을 구현하기 위해서 상기 기기 (200)의 컴퓨팅 하드웨어 상에서 실행 가능하다. 상기 소프트웨어 제품은 소프트웨어 애플리케이션 스토어로부터, 예를 들면, "App store"로부터 상기 기기 (200)로, 예를 들면, 옵션으로 다운로드 가능하다.
본 발명 개시의 실시예들은 다양한 목적들을 위해서 사용될 여지가 있으며, 이 다양한 목적들은 사용자들이 자신들의 휴대용 기기들의 성능을 실질적으로 하락시키기 않으면서도 게임-플레이와 같이 소프트웨어 애플리케이션을 이용하는 동안에 생성된 그래픽 이미지 데이터를 캡쳐하는 것을 가능하게 하는 것, 그리고 소프트웨어 애플리케이션들의 ABI들에 단순하게 SDK를 포함하는, 즉, "라이브러리들을 링크하는 것"이 아니라 소프트웨어 애플리케이션들 그리고/또는 그래픽스 엔진들을 수정하기 위한 어떤 필요도 없이 상기 그래픽 이미지 데이터를 캡쳐하기 위한 기능성을 용이하게 하는 것을 포함하지만, 그것들로 제한되지는 않는다. 그런 SDK는, 예를 들면, 사용자들이 그래픽 이미지 데이터 캡쳐를 제어하는 것을 가능하게 하기 위해서 추가의 기능성을 옵션으로 제공한다; 그런 기능성은, 그런 기능성을 사용자들에게 노출시키기 위해서 소프트웨어 애플리케이션에 수정들을 할 것을 옵션으로 필요로 한다. 더욱이, 전술한 것처럼, 본 발명 개시의 실시예들은 이미지 그리고/또는 비디오 콘텐트의 결합을 대응하는 오디오 콘텐트와 함께 결합하는 캡쳐를 가능하게 한다.
앞에서 설명된 본 발명 개시의 실시예들에 대한 수정들은 동반된 청구항들에 의해서 정의된 본 발명 개시의 범위로부터 벗어나지 않으면서도 가능하다. 본 발명 개시를 설명하고 주장하기 위해서 사용된 "구비한", "포함하는", "편입하는", "구성된", "가진", "이다"와 같은 표현들은 비-배타적이 방식으로 해석되도록 의도된 것이며, 즉, 명시적으로 설명되지 않은 아이템들, 컴포넌트들 또는 엘리먼트들이 존재하도록 허용한다. 단수에 대한 참조는 복수에 대해서 관련된 것으로 또한 해석되어야 한다.
이 단락에서 제시된 몇몇의 예시의 실시예들은 예시의 목적을 위한 것일 뿐이다. 그 실시예들은 본 출원의 우선권 주장의 기초가 되는 미국 출원의 청구범위 부분에서 출원일에 독립항들로서 정의된 것들이다.
[청구항 1]
그래픽 이미지 데이터를 캡쳐하기 위한 소프트웨어 개발 킷 (software development kit (SDK))으로서, 상기 소프트웨어 개발 킷은 기기에서 사용되도록 구성되며, 상기 기기는 그 기기의 그래픽 디스플레이 설비를 경유하여 볼 수 있는 그래픽 이미지 데이터를 생성하기 위해서 하나 이상의 소프트웨어 애플리케이션들을 실행하도록 동작할 수 있는 컴퓨팅 하드웨어를 포함하며,
상기 소프트웨어 개발 킷은 상기 하나 이상의 소프트웨어 애플리케이션들과 동시에 실행하도록 구성되며,
상기 하나 이상의 소프트웨어 애플리케이션들은 상기 그래픽 이미지 데이터를 생성하기 위해서 그래픽스 엔진 그리고/또는 그래픽스 라이브러리에 하나 이상의 함수 호출들을 하도록 동작할 수 있으며,
상기 소프트웨어 개발 킷이 상기 그래픽스 라이브러리 그리고/또는 상기 그래픽스 엔진에 의해서 생성된 상기 그래픽 이미지 데이터에 액세스하고, 읽고, 복사하고 그리고/또는 수정하는 것을 가능하게 하기 위해서 상기 소프트웨어 개발 킷은 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리가 상기 하나 이상의 함수 호출들을 수신하기 이전에 상기 하나 이상의 함수 호출들을 수정하도록 동작할 수 있으며 그리고/또는 그렇지 않다면 상기 그래픽스 엔진 그리고/또는 그래픽스 라이브러리의 동작을 어떤 방식으로라도 제어하기 위해서 상기 함수 호출들을 수정하도록 동작할 수 있는, 소프트웨어 개발 킷.
[청구항 2]
그래픽 이미지 데이터를 캡쳐하기 위한 소프트웨어 개발 킷 (SDK)을 이용하는 방법으로서, 상기 소프트웨어 개발 킷은 기기에서 사용되도록 구성되며, 상기 기기는 그 기기의 그래픽 디스플레이 설비를 경유하여 볼 수 있는 그래픽 이미지 데이터를 생성하기 위해서 하나 이상의 소프트웨어 애플리케이션들을 실행하도록 동작할 수 있는 컴퓨팅 하드웨어를 포함하며,
상기 방법은:
(a) 상기 하나 이상의 소프트웨어 애플리케이션들과 동시에 실행하도록 상기 소프트웨어 개발 킷을 구성하는 단계;
(b) 상기 그래픽 이미지 데이터를 생성하기 위해서 그래픽스 엔진 그리고/또는 그래픽스 라이브러리에 하나 이상의 함수 호출들을 하도록 하기 위해서 상기 하나 이상의 소프트웨어 애플리케이션들을 동작시키는 단계; 그리고
(c) 상기 소프트웨어 개발 킷이 상기 그래픽스 라이브러리 그리고/또는 상기 그래픽스 엔진에 의해서 생성된 상기 그래픽 이미지 데이터에 액세스하고, 읽고, 복사하고 그리고/또는 수정하는 것을 가능하게 하기 위해서 상기 그래픽스 엔진 그리고/또는 상기 그래픽스 라이브러리가 상기 하나 이상의 함수 호출들을 수신하기 이전에 상기 하나 이상의 함수 호출들을 수정하도록 하며 그리고/또는 그렇지 않다면 상기 그래픽스 엔진 그리고/또는 그래픽스 라이브러리의 동작을 어떤 방식으로라도 제어하기 위해서 상기 함수 호출들을 수정하게 하도록 상기 소프트웨어 개발 킷을 동작시키는 단계를 포함하는, 소프트웨어 개발 킷 사용 방법.
본 발명은 컴퓨터 그래픽 분야에서 사용될 수 있으며, 더 상세하게는, 그래픽 이미지 데이터를 캡쳐하는 분야, 그리고 더 상세하게는, 그래픽 이미지 데이터를 캡쳐하기 위한 소프트웨어 개발 킷 (SDK)의 분야 그리고 상기 언급된 소프트웨어 개발 킷들을 사용하는 분야에서 이용될 수 있다.

Claims (16)

  1. 컴퓨터 판독가능 코드를 포함한 컴퓨터 프로그램을 포함하는 휴대용 그래픽스 장치로서,
    상기 컴퓨터 판독가능 코드는, 기기의 그래픽 디스플레이 설비를 경유하여 볼 수 있는 그래픽 이미지 데이터를 생성하기 위해 하나 이상의 소프트웨어 애플리케이션들을 실행하도록 동작할 수 있는 컴퓨팅 하드웨어를 포함하는 상기 기기에서 실행될 때에 동작들을 수행하도록 구성되며, 상기 동작들은:
    상기 기기 상에서 소프트웨어 애플리케이션을 실행하는 것과 동시에 래퍼 (wrapper) 모듈 및 캡쳐 모듈을 포함하는 소프트웨어 개발 킷을 실행하는 동작으로, 상기 소프트웨어 애플리케이션은 상기 그래픽스 장치의 운영 시스템에 의해 샌드박싱된 (sandboxed), 실행 동작;
    상기 소프트웨어 개발 킷이 상기 그래픽스 장치의 그래픽스 엔진 및/또는 그래픽스 라이브러리에 의해 생성된 데이터에 대한 액세스, 읽기, 복사 및/또는 수정을 가능하게 하며, 그리고/또는 상기 그래픽스 엔진 및/또는 상기 그래픽스 라이브러리의 동작들을 제어하기 위한, 실행 소프트웨어 애플리케이션으로부터 상기 그래픽스 엔진 및/또는 상기 그래픽스 라이브러리로의 하나 이상의 함수 호출들 (function calls)을 상기 래퍼 모듈에 의해 가로채는 동작, 그리고 상기 하나 이상의 함수 호출들이 상기 그래픽스 엔진 및/또는 상기 그래픽스 라이브러리에 의해 수신되기 이전에 상기 하나 이상의 함수 호출들을 상기 래퍼 모듈에 의해 수정하는 동작으로, 상기 하나 이상의 함수 호출들은 상기 실행 소프트웨어 애플리케이션을 위한 그래픽 이미지 데이터를 생성하기 위한 것인, 가로채는 동작 및 수정 동작;
    데이터를 저장하기 위해 버퍼로부터 상기 그래픽스 엔진 및/또는 상기 그래픽스 라이브러리에 의해 생성된 데이터를 상기 캡쳐 모듈에 의해 복사하는 동작; 그리고
    상기 하나 이상의 함수 호출들에 기반하여 생성된 그래픽 이미지 데이터를 디스플레이를 위해서 그래픽스 드라이버로 송신하는 동작을 포함하는, 그래픽스 장치.
  2. 제1항에 있어서,
    상기 래퍼 모듈은 상기 그래픽스 엔진 및/또는 상기 그래픽스 라이브러리 주변을 둘러싸도록 (wrap around) 구성되며, 상기 그래픽스 엔진 및/또는 상기 그래픽스 라이브러리로의 모든 함수 호출들이 상기 래퍼 모듈을 통해서 지나가는, 그래픽스 장치.
  3. 제1항 또는 제2항에 있어서,
    상기 동작들은 복사된 데이터의 콘텐트를 상기 기기와는 공간적으로 원격인 데이터 저장부로 상기 캡쳐 모듈에 의해 업로드하고 그리고/또는 스트리밍하는 동작을 포함하는, 그래픽스 장치.
  4. 제1항 또는 제2항에 있어서,
    상기 래퍼 모듈은 상기 하나 이상의 소프트웨어 애플리케이션들에 통합되어 그 하나 이상의 소프트웨어 애플리케이션들의 필수적인 일부가 되는, 그래픽스 장치.
  5. 제1항 또는 제2항에 있어서,
    상기 래퍼 모듈은 상기 기기의 운영 시스템에 통합되어 그 운영 시스템의 필수적인 일부가 되는, 그래픽스 장치.
  6. 휴대용 그래픽스 장치에서 그래픽 이미지 데이터를 캡쳐하기 위한 방법으로서,
    상기 그래픽스 장치는, 상기 그래픽스 장치의 컴퓨팅 하드웨어에 의해서 실행되도록 구성된 컴퓨터 실행가능 명령어들을 포함하며,
    상기 그래픽스 장치의 상기 컴퓨팅 하드웨어는 상기 그래픽스 장치의 그래픽 디스플레이 설비를 경유하여 볼 수 있는 그래픽 이미지 데이터를 생성하기 위한 하나 이상의 소프트웨어 애플리케이션들을 실행시키도록 구성되며,
    상기 방법은:
    래퍼 모듈 및 캡쳐 모듈을 포함하는 소프트웨어 개발 킷을 상기 하나 이상의 소프트웨어 애플리케이션과 동시에 실행하는 단계로, 상기 소프트웨어 애플리케이션은 상기 그래픽스 장치의 운영 시스템에 의해 샌드박싱된, 실행 단계;
    상기 하나 이상의 소프트웨어 애플리케이션으로부터 상기 그래픽스 장치의 그래픽스 엔진 및/또는 그래픽스 라이브러리로의 함수 호출을 탐지하는 단계로서, 상기 함수 호출은 상기 그래픽 이미지 데이터를 생성하기 위한 요청을 포함하는, 탐지 단계;
    상기 소프트웨어 개발 킷이 상기 그래픽스 엔진 및/또는 상기 그래픽스 라이브러리에 의해 생성된 그래픽 이미지 데이터에 대한 액세스, 읽기, 복사 및/또는 수정을 가능하게 하기 위해, 그리고/또는 상기 그래픽스 엔진 및/또는 그래픽스 라이브러리의 동작들을 제어하기 위하여, 상기 탐지된 함수 호출을 상기 래퍼 모듈에 의해서 가로채며, 상기 함수 호출이 상기 그래픽스 엔진 및/또는 그래픽스 라이브러리에 의해 수신되기 이전에 상기 가로챈 함수 호출을 수정하는 단계; 그리고
    데이터를 저장하기 위해 버퍼로부터 상기 그래픽스 엔진 및/또는 상기 그래픽스 라이브러리에 의해 생성된 데이터를 상기 캡쳐 모듈에 의해 복사하는 단계를 포함하는, 그래픽스 이미지 데이터 캡쳐 방법.
  7. 제6항에 있어서,
    상기 래퍼 모듈은 상기 그래픽스 엔진 및/또는 상기 그래픽스 라이브러리 주변을 둘러싸도록 구성되어, 상기 그래픽스 엔진 및/또는 상기 그래픽스 라이브러리로의 모든 함수 호출들이 상기 래퍼 모듈을 통해서 지나가고 그리고 상기 래퍼 모듈에 의해서 수정되도록 하는, 그래픽스 이미지 데이터 캡쳐 방법.
  8. 제6항 또는 제7항에 있어서,
    복사된 데이터의 콘텐트를 상기 그래픽스 장치와는 공간적으로 원격인 데이터 저장부로 상기 캡쳐 모듈에 의해 업로드하고 그리고/또는 스트리밍하는 단계를 더 포함하는, 그래픽스 이미지 데이터 캡쳐 방법.
  9. 제6항 또는 제7항에 있어서,
    상기 래퍼 모듈은 상기 하나 이상의 소프트웨어 애플리케이션들에 통합되어 그 하나 이상의 소프트웨어 애플리케이션들의 필수적인 일부가 되는, 그래픽스 이미지 데이터 캡쳐 방법.
  10. 제6항 또는 제7항에 있어서,
    상기 래퍼 모듈은 상기 그래픽스 장치의 운영 시스템에 통합되어 그 운영 시스템의 필수적인 일부가 되는, 그래픽스 이미지 데이터 캡쳐 방법.
  11. 그래픽 이미지 데이터를 캡쳐하기 위한 컴퓨터 판독가능 프로그램 코드를 포함하는 컴퓨터 프로그램을 저장하는 비-일시적 기계-판독가능 데이터 저장 매체로서,
    상기 컴퓨터 판독가능 프로그램 코드는 휴대용 그래픽스 장치의 컴퓨팅 하드웨어 상에서 실행될 때에 상기 그래픽스 장치로 하여금 동작들을 수행하도록 하며, 상기 동작들은:
    래퍼 모듈 및 캡쳐 모듈을 포함하는 소프트웨어 개발 킷을 하나 이상의 소프트웨어 애플리케이션과 동시에 실행하는 동작으로, 상기 소프트웨어 애플리케이션은 상기 그래픽스 장치의 운영 시스템에 의해 샌드박싱된, 실행 동작;
    그래픽스 장치 상에서 실행하는 소프트웨어 애플리케이션으로부터 상기 그래픽스 장치의 그래픽스 엔진 및/또는 그래픽스 라이브러리로의 함수 호출을 탐지하는 동작으로, 상기 함수 호출은 상기 그래픽 이미지 데이터를 생성하기 위한 요청을 포함하는, 탐지 동작;
    상기 소프트웨어 개발 킷이 상기 그래픽스 엔진 및/또는 상기 그래픽스 라이브러리에 의해 생성된 그래픽 이미지 데이터에 대한 액세스, 읽기, 복사 및/또는 수정을 가능하게 하기 위해, 그리고/또는 상기 그래픽스 엔진 및/또는 그래픽스 라이브러리의 동작들을 제어하기 위한, 상기 탐지된 함수 호출을 상기 래퍼 모듈에 의해서 가로채며, 상기 함수 호출이 상기 그래픽스 엔진 및/또는 그래픽스 라이브러리에 의해 수신되기 이전에 상기 가로챈 함수 호출을 수정하는 동작; 그리고
    데이터를 저장하기 위해 버퍼로부터 상기 그래픽스 엔진 및/또는 상기 그래픽스 라이브러리에 의해 생성된 데이터를 상기 캡쳐 모듈에 의해 복사하는 동작을 포함하는, 기계-판독가능 데이터 저장 매체.
  12. 제11항에 있어서,
    상기 동작들은 복사된 데이터의 콘텐트를 상기 그래픽스 장치와는 공간적으로 원격인 데이터 저장부로 상기 캡쳐 모듈에 의해 업로드하고 그리고/또는 스트리밍하는 동작을 포함하는, 기계-판독가능 데이터 저장 매체.
  13. 제11항 또는 제12항에 있어서,
    상기 컴퓨터 프로그램은 소프트웨어 애플리케이션 스토어로부터 상기 그래픽스 장치로 다운로드 가능한, 기계-판독가능 데이터 저장 매체.
  14. 삭제
  15. 삭제
  16. 삭제
KR1020140080014A 2013-09-30 2014-06-27 그래픽 이미지 데이터를 캡쳐하기 위한 소프트웨어 개발 킷 KR102340358B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/041,117 US9430251B2 (en) 2013-09-30 2013-09-30 Software development kit for capturing graphical image data
US14/041,117 2013-09-30

Publications (2)

Publication Number Publication Date
KR20150037493A KR20150037493A (ko) 2015-04-08
KR102340358B1 true KR102340358B1 (ko) 2021-12-16

Family

ID=52745835

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140080014A KR102340358B1 (ko) 2013-09-30 2014-06-27 그래픽 이미지 데이터를 캡쳐하기 위한 소프트웨어 개발 킷

Country Status (3)

Country Link
US (1) US9430251B2 (ko)
JP (1) JP6452950B2 (ko)
KR (1) KR102340358B1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9519758B2 (en) * 2014-02-04 2016-12-13 Pegasus Media Security, Llc System and process for monitoring malicious access of protected content
US9756091B1 (en) * 2014-03-21 2017-09-05 Google Inc. Providing selectable content items in communications
US10282216B2 (en) * 2015-07-16 2019-05-07 Apptimize, Inc. Automatic import of third party analytics
CN106648456B (zh) * 2016-09-18 2019-05-31 重庆邮电大学 基于用户访问量以及预测机制的动态副本文件访问方法
IL303169B1 (en) * 2017-03-30 2024-04-01 Magic Leap Inc centralized processing
WO2018194667A1 (en) * 2017-04-21 2018-10-25 Hewlett-Packard Development Company, L.P. Firmware outputted keyboard code to enter operating system state
CN110162302B (zh) * 2019-04-11 2023-06-20 北京达佳互联信息技术有限公司 数据处理方法、装置、电子设备及存储介质
CN112035163B (zh) * 2020-09-03 2023-08-22 抖音视界有限公司 软件开发包配置方法、设备和存储介质
WO2022061194A1 (en) * 2020-09-18 2022-03-24 Crunch Media Works, Llc Method and system for real-time content-adaptive transcoding of video content on mobile devices
US11637895B1 (en) * 2022-06-30 2023-04-25 Browserstack Limited Media transfer for remote device infrastructure
CN115619911B (zh) * 2022-10-26 2023-08-08 润芯微科技(江苏)有限公司 基于Unreal Engine的虚拟形象生成方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120114200A1 (en) 2009-04-21 2012-05-10 International Business Machines Corporation Addition of immersive interaction capabilities to otherwise unmodified 3d graphics applications

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2197517C (en) * 1997-02-13 2002-01-15 Mitel Corporation Database access server for pbx
US6104405A (en) * 1997-02-26 2000-08-15 Alternate Realities Corporation Systems, methods and computer program products for converting image data to nonplanar image data
AU1939300A (en) * 1999-08-09 2001-03-05 Cross Match Technologies, Inc. Method, system, and computer program product for a gui to fingerprint scanner interface
JP4409956B2 (ja) * 2002-03-01 2010-02-03 ティーファイヴ ラブズ リミテッド 集中型対話グラフィカルアプリケーションサーバ
EP1579415A4 (en) * 2002-09-09 2006-04-19 Ingeeni Studios Inc PLATFORM FOR ARTIFICIAL INTELLIGENCE
US7139005B2 (en) * 2003-09-13 2006-11-21 Microsoft Corporation Optimized fixed-point mathematical library and graphics functions for a software-implemented graphics rendering system and method using a normalized homogenous coordinate system
US20060259588A1 (en) * 2005-04-20 2006-11-16 Lerman David R Browser enabled video manipulation
US7830388B1 (en) * 2006-02-07 2010-11-09 Vitie Inc. Methods and apparatus of sharing graphics data of multiple instances of interactive application
US8015547B2 (en) * 2006-06-29 2011-09-06 Augusta Systems, Inc. Reconfigurable, hierarchical component-based architecture and framework and methods for rapidly developing sensor device-enabling software applications
US8279222B2 (en) * 2008-03-14 2012-10-02 Seiko Epson Corporation Processing graphics data for a stereoscopic display
US20090327995A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Annotation-aided code generation in library-based replay
CN103270492B (zh) * 2010-12-15 2016-08-17 国际商业机器公司 用于网络使能应用的硬件加速图形的方法和系统
US8707276B2 (en) * 2011-01-07 2014-04-22 Mastercard International Incorporated Method and system for managing programmed applications in an open API environment
US20130244790A1 (en) * 2012-03-13 2013-09-19 Sony Computer Entertainment America Llc System and method for capturing and sharing console gaming data
US10525347B2 (en) * 2012-03-13 2020-01-07 Sony Interactive Entertainment America Llc System and method for capturing and sharing console gaming data
US20140189544A1 (en) * 2012-12-27 2014-07-03 Nvidia Corporation Web-based graphics development system and method of graphics program interaction therewith

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120114200A1 (en) 2009-04-21 2012-05-10 International Business Machines Corporation Addition of immersive interaction capabilities to otherwise unmodified 3d graphics applications

Also Published As

Publication number Publication date
US20150095874A1 (en) 2015-04-02
KR20150037493A (ko) 2015-04-08
JP2015069638A (ja) 2015-04-13
JP6452950B2 (ja) 2019-01-16
US9430251B2 (en) 2016-08-30

Similar Documents

Publication Publication Date Title
KR102340358B1 (ko) 그래픽 이미지 데이터를 캡쳐하기 위한 소프트웨어 개발 킷
JP2015069638A5 (ko)
JP5781497B2 (ja) 拡張可能なメディア形式を持つホスト型アプリケーションプラットフォーム
CN108228188B (zh) 一种视图组件处理方法、电子设备及可读存储介质
US10368121B2 (en) System and method for collecting data
US9164798B2 (en) Method, apparatus and computer for loading resource file for game engine
US9451043B2 (en) Remote virtualization of mobile apps
AU2012297524B2 (en) Script-based video rendering
US20150082239A1 (en) Remote Virtualization of Mobile Apps with Transformed Ad Target Preview
US9161006B1 (en) Systems and methods for efficient screen capture
US20140344469A1 (en) Method of in-application encoding for decreased latency application streaming
US20200244774A1 (en) Method and system for rendering content using templates
CA2885114C (en) Video acquisition method and device
JP5807756B2 (ja) ビデオストリーミングのための方法及び装置
US20190377461A1 (en) Interactive file generation and execution
US11457289B2 (en) Low latency broadcasting of game engine frames
US9392047B1 (en) Facilitating application compatibility across devices
CN112004041A (zh) 视频录制方法、装置、终端及存储介质
JP5717899B2 (ja) 携帯デバイスのオーディオ装置
KR102575541B1 (ko) 이미지를 캡처하기 위한 방법, 단말기 및 이의 저장 매체
US20190005708A1 (en) Method and device for generating desktop effect and electronic device
JPWO2014024255A1 (ja) 端末および動画再生プログラム
CN117370696A (zh) 小程序页面的加载方法、装置、电子设备及存储介质
CN117014689A (zh) 弹幕的显示方法、装置以及电子设备
Perera et al. Accelerating image processing in flash using simd standard operations

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant