KR20180039730A - 그래픽 커맨드 토큰들의 수정 - Google Patents
그래픽 커맨드 토큰들의 수정 Download PDFInfo
- Publication number
- KR20180039730A KR20180039730A KR1020187009193A KR20187009193A KR20180039730A KR 20180039730 A KR20180039730 A KR 20180039730A KR 1020187009193 A KR1020187009193 A KR 1020187009193A KR 20187009193 A KR20187009193 A KR 20187009193A KR 20180039730 A KR20180039730 A KR 20180039730A
- Authority
- KR
- South Korea
- Prior art keywords
- video data
- command tokens
- modified
- render
- tokens
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1454—Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/003—Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
- G09G5/005—Adapting incoming signals to the display format of the display terminal
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
-
- H04N13/0497—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/30—Image reproducers
- H04N13/398—Synchronisation thereof; Control thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/41—Structure of client; Structure of client peripherals
- H04N21/426—Internal components of the client ; Characteristics thereof
-
- H04N5/4401—
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2350/00—Solving problems of bandwidth in display systems
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2370/00—Aspects of data communication
- G09G2370/16—Use of wireless transmission of display information
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- Architecture (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
- Processing Or Creating Images (AREA)
- Digital Computer Display Output (AREA)
- Information Transfer Between Computers (AREA)
Abstract
일 예에 있어서, 비디오 데이터를 프로세싱하기 위한 방법은, 싱크 디바이스에 의해 및 소스 디바이스로부터, 오리지널 비디오 데이터를 렌더링하도록 실행가능한 하나 이상의 그래픽 커맨드 토큰들을 수신하는 단계; 싱크 디바이스에 의해, 오리지널 비디오 데이터와는 상이한 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 그래픽 커맨드 토큰들을 수정하는 단계; 및 싱크 디바이스에 동작가능하게 접속된 디스플레이에서의 프리젠테이션을 위해, 수정된 비디오 데이터를 출력하는 단계를 포함한다.
Description
본 개시는 소스 디바이스로부터 싱크 디바이스로의 비디오 스트리밍을 프로세싱하기 위한 기법들에 관한 것이다.
무선 디스플레이 (WD) 시스템들은 소스 디바이스 및 하나 이상의 싱크 디바이스들을 포함한다. 소스 디바이스 및 싱크 디바이스들의 각각은 무선 통신 능력들을 갖는 유선 디바이스들 또는 모바일 디바이스들 중 어느 하나일 수도 있다. 모바일 디바이스들로서, 예를 들어, 소스 디바이스 및 싱크 디바이스들 중 하나 이상은 모바일 전화기들, 태블릿 컴퓨터들, 랩탑 컴퓨터들, 무선 통신 카드들을 갖는 휴대용 컴퓨터들, 개인용 디지털 보조기들 (PDA들), 무선 게이밍 디바이스들, 휴대용 미디어 플레이어들, 또는 무선 통신 능력들을 갖는 다른 플래시 메모리 디바이스들을 포함할 수도 있다. 모바일 디바이스들은 또한, 소위 "스마트" 폰들 및 "스마트" 패드들 또는 태블릿들, 또는 다른 타입들의 무선 통신 디바이스들을 포함할 수도 있다. 유선 디바이스들로서, 예를 들어, 소스 디바이스 및 싱크 디바이스들 중 하나 이상은 무선 통신 능력들을 포함하는 텔레비전들, 데스크탑 컴퓨터들, 모니터들, 프로젝터들 등을 포함할 수도 있다.
소스 디바이스는 오디오 및/또는 비디오 데이터와 같은 미디어 데이터를, 특정 통신 세션에 참가하는 싱크 디바이스들 중 하나 이상에 전송한다. 미디어 데이터는 소스 디바이스의 로컬 디스플레이 및 싱크 디바이스들의 디스플레이들의 각각 양자에서 재생될 수도 있다. 더 구체적으로, 참가하는 싱크 디바이스들의 각각은 수신된 미디어 데이터를 그 디스플레이 및 오디오 장비 상에 렌더링한다.
일 예에 있어서, 비디오 데이터를 프로세싱하기 위한 방법은, 싱크 디바이스에 의해 및 소스 디바이스로부터, 오리지널 비디오 데이터를 렌더링하도록 실행가능한 하나 이상의 그래픽 커맨드 토큰들을 수신하는 단계; 싱크 디바이스에 의해, 오리지널 비디오 데이터와는 상이한 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 그래픽 커맨드 토큰들을 수정하는 단계; 및 싱크 디바이스에 동작가능하게 접속된 디스플레이에서의 프리젠테이션을 위해, 수정된 비디오 데이터를 출력하는 단계를 포함한다.
다른 예에 있어서, 싱크 디바이스는, 소스 디바이스로부터, 오리지널 비디오 데이터를 렌더링하도록 실행가능한 그래픽 커맨드 토큰들을 수신하도록 구성된 통신 유닛; 및 하나 이상의 프로세서들을 포함한다. 이 예에 있어서, 하나 이상의 프로세서들은 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 그래픽 커맨드 토큰들을 수정하고; 그리고 싱크 디바이스에 동작가능하게 접속된 디스플레이에서의 프리젠테이션을 위해, 수정된 비디오 데이터를 출력하도록 구성된다.
다른 예에 있어서, 싱크 디바이스는 소스 디바이스로부터, 오리지널 비디오 데이터를 렌더링하도록 실행가능한 하나 이상의 그래픽 커맨드 토큰들을 수신하는 수단; 오리지널 비디오 데이터와는 상이한 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 그래픽 커맨드 토큰들을 수정하는 수단; 및 싱크 디바이스에 동작가능하게 접속된 디스플레이에서의 프리젠테이션을 위해, 수정된 비디오 데이터를 출력하는 수단을 포함한다.
다른 예에 있어서, 컴퓨터 판독가능 저장 매체는 명령들을 저장하고, 명령들은, 실행될 경우, 싱크 디바이스의 하나 이상의 프로세서들로 하여금, 소스 디바이스로부터, 오리지널 비디오 데이터를 렌더링하도록 실행가능한 하나 이상의 그래픽 커맨드 토큰들을 수신하게 하고; 오리지널 비디오 데이터와는 상이한 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 그래픽 커맨드 토큰들을 수정하게 하고; 그리고 싱크 디바이스에 동작가능하게 접속된 디스플레이에서의 프리젠테이션을 위해, 수정된 비디오 데이터를 출력하게 한다.
하나 이상의 예들의 상세들이 첨부 도면들 및 하기의 설명에 개시된다. 다른 특징들, 목적들, 및 이점들은 그 설명 및 도면들로부터, 그리고 청구항들로부터 명백할 것이다.
도 1 은 본 개시의 하나 이상의 기법들에 따른, 디바이스가 그래픽 커맨드 토큰들을 수정하도록 구성되는 예시적인 무선 디스플레이 (WD) 시스템의 개념 다이어그램이다.
도 2 는 본 개시의 하나 이상의 기법들에 따른, 소스 디바이스가 비디오 데이터를 통신 채널 상으로 싱크 디바이스에 스트리밍하도록 구성되는 도 1 의 소스 디바이스 및 싱크 디바이스의 일 예의 추가적인 상세들을 예시한 블록 다이어그램이다.
도 3a, 도 3b, 도 4a, 도 4b, 도 5a, 도 5b 및 도 6 은 본 개시의 하나 이상의 양태들에 따른, 디바이스에 의해 수행될 수도 있는 그래픽 커맨드 토큰들의 예시적인 수정들을 예시한 개념 다이어그램들이다.
도 7 은 본 개시의 하나 이상의 기법들에 따른, 비디오 데이터를 프로세싱하기 위한 싱크 디바이스의 예시적인 동작들을 예시한 플로우 다이어그램이다.
도 2 는 본 개시의 하나 이상의 기법들에 따른, 소스 디바이스가 비디오 데이터를 통신 채널 상으로 싱크 디바이스에 스트리밍하도록 구성되는 도 1 의 소스 디바이스 및 싱크 디바이스의 일 예의 추가적인 상세들을 예시한 블록 다이어그램이다.
도 3a, 도 3b, 도 4a, 도 4b, 도 5a, 도 5b 및 도 6 은 본 개시의 하나 이상의 양태들에 따른, 디바이스에 의해 수행될 수도 있는 그래픽 커맨드 토큰들의 예시적인 수정들을 예시한 개념 다이어그램들이다.
도 7 은 본 개시의 하나 이상의 기법들에 따른, 비디오 데이터를 프로세싱하기 위한 싱크 디바이스의 예시적인 동작들을 예시한 플로우 다이어그램이다.
본 개시는 소스 디바이스로부터 싱크 디바이스로 비디오를 스트리밍하기 위한 기법들을 설명한다. 일부 예들에 있어서, 소스 디바이스는 소스 디바이스의 프레임 버퍼로부터 구성된 프레임들을 캡처하는 것, 및 캡처된 프레임들을 싱크 디바이스로 송신하는 것에 의해 비디오를 싱크 디바이스에 스트리밍할 수도 있으며, 그 싱크 디바이스는 그 후 싱크 디바이스의 디스플레이에 이미지들을 디스플레이할 수도 있다. 이 방법은 "픽셀 도메인" 송신 방법으로서 지칭될 수도 있으며, 예를 들어, 여기서 프레임은 픽셀들의 어레이를 포함한다. 하지만, 일부 예들에 있어서, 캡처된 이미지들의 송신을 위해 요구된 높은 평균 데이터 레이트로 인해 픽셀 도메인 방법을 사용하는 것이 바람직하지 않을 수도 있다.
대안적으로, 일부 예들에 있어서, "그래픽 도메인" 송신 방법은 해체된 비디오 프레임들 (즉, 비-래스터 포맷의 비디오 프레임들) 을 싱크 디바이스에 스트리밍하기 위해 소스 디바이스에 의해 사용될 수도 있다. 그래픽 도메인 송신은 그래픽 커맨드 토큰들 (예를 들어, OpenGL 커맨드들 및 그 오퍼랜드들의 토큰들/인스턴스들) 및 텍스처 엘리먼트들의 형태로 소스 디바이스의 그래픽 프로세싱 유닛 (GPU) 의 입력에서 디스플레이 데이터를 캡처하는 것, 및 그래픽 커맨드 토큰들 및 텍스처 엘리먼트들을 싱크 디바이스로 송신하는 것에 의해 달성될 수도 있다. 싱크 디바이스의 GPU 는 그래픽 커맨드 토큰들을 실행하여, 텍스처 엘리먼트들에 기초하여 (즉, 텍스처 엘리먼트들을 참조함으로써) 디스플레이가능한 프레임들을 렌더링하고, 비디오 데이터의 렌더링된 프레임들을 싱크 디바이스의 디스플레이에서 출력할 수도 있다.
일부 경우들에 있어서, 싱크 디바이스의 디스플레이에서 출력된 비디오 데이터를 수정하는 것이 바람직할 수도 있다. 열화된 스트리밍 경험을 회피하기 위해, 그 수정을 실시간으로 (또는 준 실시간으로) 수행하여, 지연으로부터 기인할 수 있는 아티팩트들을 회피하는 것이 바람직할 수도 있다. 픽셀 도메인 송신 방법을 활용할 경우, 캡처된 프레임들을 실시간으로 (또는 준 실시간으로) 수정하는 것이 가능하지 않을 수도 있다. 하지만, 그래픽 도메인 송신 방법을 활용할 경우, 캡처된 프레임들을 실시간으로 (또는 준 실시간으로) 수정하는 것이 가능하다. 예를 들어, 캡처된 프레임이 나중에 저장 및 수정될 수도 있는 픽셀 도메인 방법과 대조적으로, 그래픽 도메인 송신 방법을 활용함으로써, 캡처된 프레임들은 프레임들이 캡처되었던 때의 시간에 근접하게 (예를 들어, 100 밀리초, 1 초, 5 초 이내) 수정될 수도 있다.
동작에 있어서, 싱크 디바이스는, 오리지널 비디오 데이터로 렌더링가능한 그래픽 커맨드 토큰들을 수신할 수도 있다. 예를 들어, 싱크 디바이스는 소스 디바이스로부터 그래픽 커맨드 토큰들을 무선으로 수신할 수도 있다.
본 개시의 하나 이상의 기법들에 따르면, 싱크 디바이스는, 오리지널 비디오 데이터와는 상이한 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 그래픽 커맨드 토큰들을 수정할 수도 있다. 싱크 디바이스는 수정된 그래픽 커맨드 토큰들을 실행하고, 싱크 디바이스에 동작가능하게 접속된 디스플레이에서의 프리젠테이션을 위해, 수정된 비디오 데이터를 출력할 수도 있다. 이러한 방식으로, 그래픽 커맨드 토큰들은 싱크 디바이스로 하여금 수정된 비디오 데이터, 즉, 어떠한 방식으로든 오리지널 비디오 데이터에 대해 수정된 비디오 데이터를 출력하게 하도록 (예를 들어, 실시간으로) 수정될 수도 있다. 그래픽 커맨드 토큰들에 대한 수정은, 일반적으로 사용자에게 제시되는 비디오 데이터의 시각적 외형에 대한 수정을 야기하는 임의의 다양한 수정들 또는 그러한 수정들의 조합들일 수도 있다.
싱크 디바이스가 그래픽 커맨드 토큰들에 대해 행할 수도 있는 일부 예시적인 수정들은 이미지 프로세싱 포인트 동작들 (예를 들어, 그레이스케일 조정과 같은 컬러 변환들, 블러링, 샤프닝 등), 예술적 효과들을 갖는 이미지 프로세싱 필터들 (인스타그램형 필터들), (예를 들어, 다중의 어플들 등을 허용하기 위한 디스플레이의 부분적 커버링용으로, 예를 들어, 더 높거나 더 낮은 공간 해상도 또는 더 크거나 더 작은 사이즈로 렌더링하기 위한) 해상도 변경들, 3차원 (3D) 오브젝트들을 위한 뷰포인트 변경들, 및 텍스처 엘리먼트들의 대체를 포함하지만 이에 한정되지 않는다. 싱크 디바이스에 의해 수행되는 그래픽 커맨드 토큰들에 대한 수정들은 임의의 어플리케이션을 위해 일반적 (예를 들어, 그레이스케일 효과) 이거나 또는 어플리케이션 특정 (예를 들어, 특정 어플리케이션에 있어서의 특정 오브젝트의 3D 뷰포인트의 변경) 일 수 있다. 그 수정들은 부분 뷰이거나 전체 뷰를 위한 것일 수 있다 (예를 들어, 어도비 리더에서의 PDF 문서의 도면들에 대한 효과를 추가하는 것 하지만 텍스트에 대한 효과를 추가하는 것 아님). 그 수정들은 적응형일 수 있다. 예를 들어, 싱크 디바이스의 디스플레이에서의 브라우저 출력은 회사 종업원들에 의해 관측되면 전체 웹페이지를 포함할 수도 있지만, 비-종업원들/손님들에 의해 관측되면 특정 부분들을 블러링할 수도 있다.
도 1 은 본 개시의 하나 이상의 기법들에 따른, 디바이스가 그래픽 커맨드 토큰들을 수정하도록 구성되는 예시적인 무선 디스플레이 (WD) 시스템의 개념 다이어그램이다. 도 1 에 예시된 바와 같이, WD 시스템 (2) 은 소스 디바이스 (4), 싱크 디바이스 (6), 및 통신 채널 (8) 을 포함한다.
통신 채널 (8) 은 소스 디바이스 (4) 와 싱크 디바이스 (6) 사이에서 통신 신호들을 전파 가능한 임의의 채널일 수도 있다. 일부 예들에 있어서, 통신 채널 (8) 은 무선 통신 채널일 수도 있다. 예를 들어, 통신 채널 (8) 은 2.4 기가헤르쯔 (GHz) 대역, 5 GHz 대역, 60 GHz 대역, 또는 다른 주파수 대역들과 같은 주파수 대역들에서의 무선 주파수 통신에 있어서 구현될 수도 있다. 일부 예들에 있어서, 통신 채널 (8) 은 (USB 구현자 포럼에 의해 장려된 바와 같은) 무선 범용 직렬 버스 (WUSB), (Wi-Fi 얼라이언스에 의해 장려된 바와 같은) Wi-Fi, (무선 기가비트 얼라이언스에 의해 장려된 바와 같은) WiGig, 및/또는 IEEE (the Institute of Electrical and Electronics Engineers) 802.11 세트의 표준들 (예를 들어, 802.11, 802.11a, 802.11b, 802.11g, 802.11n, 802.11ac, 802.11ad 등) 과 같은 하나 이상의 세트들의 표준들, 프로토콜들, 또는 기술들, 또는 다른 표준들, 프로토콜들, 또는 기술들에 따를 수도 있다. 802.11 사양의 2012 버전은 http://standards.ieee.org/getieee802/download/802.11-2012.pdf 에서 개시된다. 사용된 주파수 대역들, 예컨대, 2.4 GHz, 5 GHz, 및 60 GHz 대역들은, Wi-Fi, WiGig, 임의의 하나 이상의 IEEE 802.11 프로토콜들, 또는 다른 적용가능한 표준들 또는 프로토콜들의 표준들의 관점에서 이해되는 바와 같이, 본 개시의 목적들을 위해 정의될 수도 있다.
WD (2) 는 그래픽 커맨드 토큰들의 형태인 비디오 데이터를 통신 채널 (8) 과 같은 통신 채널 상으로 싱크 디바이스 (6) 와 같은 싱크 디바이스로 송신하도록 구성될 수도 있는 소스 디바이스 (4) 를 포함할 수도 있다. 소스 디바이스 (4) 의 예들은 스마트폰들 또는 다른 모바일 핸드셋들과 같은 모바일 디바이스들, 태블릿 컴퓨터들, 랩탑 컴퓨터들, 데스크탑 컴퓨터들, 웨어러블 컴퓨팅 디바이스들 (예를 들어, 스마트 와치들, 바이저들 등), 하나 이상의 프로세싱 유닛들 또는 다른 집적 회로들 또는 칩 세트들, 또는 다른 전자 디바이스들을 포함할 수도 있지만 이에 한정되지 않는다. 도 1 의 예에 예시된 바와 같이, 소스 디바이스 (4) 는 통신 모듈 (10), 그래픽 프로세싱 유닛 (GPU) (12), 스트리밍 모듈 (14), 및 어플리케이션 모듈들 (18A-18N) 을 포함할 수도 있다.
소스 디바이스 (4) 는, 소스 디바이스 (4) 와 하나 이상의 외부 디바이스들, 예컨대, 싱크 디바이스 (6) 사이의 통신을 관리할 수도 있는 통신 모듈 (10) 을 포함할 수도 있다. 예를 들어, 통신 모듈 (10) 은 통신 채널 (8) 상으로 싱크 디바이스 (6) 와 데이터를 교환할 수도 있다. 일 예로서, 통신 모듈 (10) 은 그래픽 커맨드 토큰들을 통신 채널 (8) 상으로 싱크 디바이스 (6) 에 스트리밍할 수도 있다. 일부 예들에 있어서, 통신 모듈 (10) 은 소스 디바이스 (4) 의 다른 컴포넌트들로부터 송신될 정보를 수신할 수도 있다. 예를 들어, 통신 모듈 (10) 은 스트리밍 모듈 (14) 로부터 그래픽 커맨드 토큰들을 수신할 수도 있다.
소스 디바이스 (4) 는, 하나 이상의 텍스처 엘리먼트들 및 그래픽 커맨드 토큰들에 기초하여 비디오 데이터의 프레임들을 렌더링할 수도 있는 GPU (12) 를 포함할 수도 있다. GPU (12) 에 의해 토큰화되고 수행될 수도 있는 그래픽 커맨드들의 일부 예들은 Microsoft® 에 의한 DirectX® API, 크로노스 그룹사에 의한 Vulkan® API, 크로노스 그룹사에 의한 OpenGL® API (예를 들어, https://www.opengl.org/registry/doc/glspec45.core.pdf 에서 입수가능한 OpenGL® A 사양 (버전 4.5 (코어 프로파일) - 2015년 5월 28일)), 및 크로노스 그룹사에 의한 OpenCLTM API (예를 들어, https://www.khronos.org/registry/cl/specs/opencl-2.1.pdf 에서 입수가능한 OpenCL 사양, 버전 2.1, 크로노스 OpenCL 워킹 그룹, 2015년 1월 29일) 를 포함하지만 이에 한정되지 않는다. 일부 예들에 있어서, GPU (12) 는 어플리케이션 모듈들 (18) 중 하나 이상의 어플리케이션 모듈들과 연관된 그래픽 커맨드 토큰들 및 텍스처 엘리먼트들에 기초하여 비디오 데이터의 프레임들을 렌더링할 수도 있다. 예를 들어, GPU (12) 는 소스 디바이스 (4) 에 동작가능하게 커플링되거나 포함된 디스플레이에서의 출력을 위해 어플리케이션 모듈들 (18) 의 어플리케이션 모듈에 의해 생성된 그래픽 커맨드 토큰들 및 그 어플리케이션 모듈과 연관된 텍스처 엘리먼트들에 기초하여 비디오 데이터의 프레임들을 렌더링할 수도 있다.
소스 디바이스 (4) 는, 비디오 데이터를 하나 이상의 외부 디바이스들에 스트리밍하도록 구성될 수도 있는 스트리밍 모듈 (14) 을 포함할 수도 있다. 예를 들어, 스트리밍 모듈 (14) 은 그래픽 커맨드 토큰들 및 텍스처 엘리먼트들의 형태인 비디오 데이터를 싱크 디바이스 (6) 에 스트리밍할 수도 있다. 일부 예들에 있어서, 스트리밍 모듈 (14) 은 GPU (12) 의 입력에서 그래픽 커맨드 토큰들 및/또는 텍스처 엘리먼트들 (16) 을 캡처할 수도 있다. 스트리밍 모듈 (14) 은 싱크 디바이스 (6) 로의 송신을 위해 그래픽 커맨드 토큰들 및 하나 이상의 텍스처 엘리먼트들을 포함하는 비트스트림을 통신 모듈 (10) 에 출력할 수도 있다.
소스 디바이스 (4) 는, 소스 디바이스 (4) 를 제조하는 엔터티에 의해 제공된 어플리케이션 또는 소스 디바이스 (4) 상에서 동작하는 소프트웨어 또는 소스 디바이스 (4) 와의 사용을 위해 제 3 자에 의해 개발된 어플리케이션을 각각 나타낼 수도 있는 어플리케이션 모듈들 (18) 을 포함할 수도 있다. 어플리케이션 모듈들 (18) 의 예들은 게이밍, 쇼핑, 여행 라우팅, 지도들, 오디오 및/또는 비디오 프리젠테이션, 워드 프로세싱, 스프레드시트들, 날씨 등을 위한 어플리케이션들을 포함할 수도 있다.
소스 디바이스 (4) 는, 비디오 데이터의 프레임들을 렌더링하기 위해 GPU 에 의해 활용될 수도 있는 텍스처 엘리먼트들 (16) 을 포함할 수도 있다. 일부 예들에 있어서, 텍스처 엘리먼트들 (16) 중 하나 이상은 어플리케이션 모듈들 (18) 의 특정 어플리케이션 모듈과 연관될 수도 있다. 예를 들어, 어플리케이션 모듈들 (18) 의 게이밍 어플리케이션이 떨어지는 과일 (예를 들어, 수박, 아보카도, 파인애플 등) 의 슬라이싱을 수반할 경우, 게이밍 어플리케이션과 연관될 수도 있는 텍스처 엘리먼트들 (16) 의 예시적인 텍스처 엘리먼트들은 과일의 타입들의 각각의 그래픽 표현을 포함한다. 일부 예들에 있어서, 텍스처 엘리먼트들 (16) 은 복수의 포맷들로 저장될 수도 있다. 일부 예시적인 포맷들은 RGBα 8888, RGBα 4444, RGBα 5551, RGB 565, Yα 88, 및 α 8 을 포함하지만 이에 한정되지 않는다.
WD (2) 는 그래픽 커맨드 토큰들의 형태인 비디오 데이터를 소스 디바이스 (4) 와 같은 소스 디바이스로부터 통신 채널 (8) 과 같은 통신 채널 상으로 수신하도록 구성될 수도 있는 싱크 디바이스 (6) 를 포함할 수도 있다. 싱크 디바이스 (6) 의 예들은 스마트폰들 또는 다른 모바일 핸드셋들과 같은 모바일 디바이스들, 태블릿 컴퓨터들, 랩탑 컴퓨터들, 데스크탑 컴퓨터들, 웨어러블 컴퓨팅 디바이스들 (예를 들어, 스마트 와치들, 바이저들 등), 텔레비전들, 모니터들, 하나 이상의 프로세싱 유닛들 또는 다른 집적 회로들 또는 칩 세트들, 또는 다른 전자 디바이스들을 포함할 수도 있지만 이에 한정되지 않는다. 도 1 의 예에 예시된 바와 같이, 싱크 디바이스 (6) 는 통신 모듈 (19), 그래픽 프로세싱 유닛 (GPU) (20), 스트리밍 모듈 (22), 및 텍스처 엘리먼트들 (24) 을 포함할 수도 있다.
싱크 디바이스 (6) 는, 싱크 디바이스 (6) 와 하나 이상의 외부 디바이스들, 예컨대, 소스 디바이스 (4) 사이의 통신을 관리할 수도 있는 통신 모듈 (19) 을 포함할 수도 있다. 일부 예에 있어서, 통신 모듈 (19) 은 소스 디바이스 (4) 의 통신 모듈 (10) 과 유사한 동작들을 수행할 수도 있다. 예를 들어, 통신 모듈 (19) 은 통신 채널 (8) 상으로 소스 디바이스 (4) 와 데이터를 교환할 수도 있다. 일 예로서, 통신 모듈 (19) 은 그래픽 커맨드 토큰들 및 텍스처 엘리먼트들을 소스 디바이스 (4) 로부터 다이렉트 Wi-Fi 커넥션 상으로 수신할 수도 있다. 일부 예들에 있어서, 통신 모듈 (19) 은 수신된 정보를 싱크 디바이스 (6) 의 다른 컴포넌트들에 제공할 수도 있다. 예를 들어, 통신 모듈 (19) 은 수신된 그래픽 커맨드 토큰들 및 텍스처 엘리먼트들을 스트리밍 모듈 (22) 에 제공할 수도 있다.
싱크 디바이스 (6) 는, 소스 디바이스 (4) 의 GPU (12) 와 유사한 동작들을 수행할 수도 있는 GPU (20) 를 포함할 수도 있다. 예를 들어, GPU (20) 는 하나 이상의 텍스처 엘리먼트들 및 그래픽 커맨드 토큰들에 기초하여 비디오 데이터의 프레임들을 렌더링할 수도 있다. 일부 예들에 있어서, GPU (20) 는 GPU (12) 와 동일한 그래픽 커맨드들을 수행 가능할 수도 있다. GPU (20) 에 의해 수행될 수도 있는 그래픽 커맨드들의 일부 예들은 Microsoft® 에 의한 DirectX® API, 크로노스 그룹사에 의한 OpenGL® API, 및 OpenCLTM API 를 포함하지만 이에 한정되지 않는다. 일부 예들에 있어서, GPU (20) 는 스트리밍 모듈 (22) 과 같은 싱크 디바이스 (6) 의 하나 이상의 다른 컴포넌트들로부터 수신된 그래픽 커맨드 토큰들 및 텍스처 엘리먼트들에 기초하여 비디오 데이터의 프레임들을 렌더링할 수도 있다. 예를 들어, GPU (20) 는 싱크 디바이스 (6) 에 동작가능하게 커플링되거나 포함된 디스플레이에서의 출력을 위해 스트리밍 모듈 (22) 로부터 수신된 그래픽 커맨드 토큰들 및 텍스처 엘리먼트들에 기초하여 비디오 데이터의 프레임들을 렌더링할 수도 있다.
싱크 디바이스 (6) 는, 하나 이상의 외부 디바이스들로부터 스트리밍 비디오 데이터를 수신하도록 구성될 수도 있는 스트리밍 모듈 (22) 을 포함할 수도 있다. 예를 들어, 스트리밍 모듈 (22) 은 그래픽 커맨드 토큰들 및 텍스처 엘리먼트들의 형태인 스트리밍 비디오 데이터를 소스 디바이스 (4) 로부터 수신할 수도 있다.
싱크 디바이스 (6) 는, 비디오 데이터의 프레임들을 렌더링하기 위해 GPU 에 의해 활용될 수도 있는 텍스처 엘리먼트들 (24) 을 저장할 수도 있다. 일부 예들에 있어서, 스트리밍 모듈 (22) 은 소스 디바이스 (4) 로부터 수신된 텍스처 엘리먼트들을 텍스처 엘리먼트들 (24) 에 저장할 수도 있다.
소스 디바이스 (4) 의 사용자는 비디오를 소스 디바이스 (4) 로부터 싱크 디바이스 (6) 로 스트리밍하길 원할 수도 있다. 예를 들어, 소스 디바이스 (4) 의 디스플레이의 사이즈가 싱크 디바이스 (6) 의 디스플레이의 사이즈보다 작은 경우, 소스 디바이스 (4) 의 사용자는 비디오를 출력하기 위해 싱크 디바이스 (6) 의 더 큰 디스플레이를 활용하길 원할 수도 있다. 하지만, 예를 들어, 대역폭 제약들, 프로세싱 전력 등으로 인해, 비디오 데이터의 구성된 프레임들을 소스 디바이스 (4) 로부터 싱크 디바이스 (6) 로 송신하는 것이 바람직하지 않을 수도 있다. 이에 따라, 소스 디바이스 (4) 의 스트리밍 모듈 (14) 은, 싱크 디바이스 (6) 의 GPU (20) 로 하여금 비디오 데이터의 프레임들을 렌더링하게 하기 위하여 그래픽 커맨드 토큰들 및 하나 이상의 텍스처 엘리먼트들을 통신 채널 (8) 을 통해 싱크 디바이스 (6) 의 스트리밍 모듈 (22) 에 출력할 수도 있다. 이러한 방식으로, 픽셀 도메인에서 비디오 데이터를 스트리밍하는 것에 대조적으로, 소스 디바이스 (4) 는, 예를 들어, 그래픽 커맨드들 및 텍스처 엘리먼트들을 스트리밍함으로써, 그래픽 도메인에서 비디오 데이터를 싱크 디바이스 (6) 에 스트리밍할 수도 있다.
일부 예들에 있어서, 싱크 디바이스 (6) 의 디스플레이에서 출력된 비디오 데이터를 수정하는 것이 바람직할 수도 있다. 열화된 스트리밍 경험을 회피하기 위해, 그 수정을 실시간으로 (또는 준 실시간으로) 수행하는 것이 바람직할 수도 있다. 부가적으로, 그 수정이 어플리케이션 독립적인 것이 바람직할 수도 있다. 즉, 그 수정은 비디오 데이터를 생성하였던 어플리케이션의 관련없이 (즉, 비디오 데이터를 생성하였던 어플리케이션이 싱크 디바이스 상에 설치될 필요가 없도록) 발생하는 것이 바람직할 수도 있다. 본 개시의 하나 이상의 기법들에 따르면, 싱크 디바이스 (6) 의 스트리밍 모듈 (22) 은 GPU (20) 로 하여금 수정된 비디오 데이터를 렌더링하게 하기 위하여 그래픽 커맨드 토큰들을 수정할 수도 있다.
동작에 있어서, 소스 디바이스 (4) 는, 오리지널 비디오 데이터로 렌더링가능한 오리지널 그래픽 커맨드 토큰들 및 하나 이상의 텍스처 엘리먼트들을 수신할 수도 있다. 예를 들어, 소스 디바이스 (4) 의 스트리밍 모듈 (14) 은 소스 디바이스 (4) 의 GPU (12) 의 입력에서 그래픽 커맨드 토큰들을 캡처함으로써 오리지널 그래픽 커맨드 토큰들을 수신할 수도 있다. 소스 디바이스 (4) 의 스트리밍 모듈 (14) 은 오리지널 그래픽 커맨드 토큰들 및 하나 이상의 텍스처 엘리먼트들을 포함하는 비트스트림을 통신 채널 (8) 을 통해 싱크 디바이스 (6) 의 스트리밍 모듈 (22) 에 출력할 수도 있다.
싱크 디바이스 (6) 의 스트리밍 모듈 (22) 은 소스 디바이스 (4) 로부터 오리지널 그래픽 커맨드 토큰들을 수신할 수도 있다. 예를 들어, 스트리밍 모듈 (22) 은 통신 모듈 (19) 을 통해 비트스트림을 무선으로 수신할 수도 있다. 본 개시의 하나 이상의 기법들에 따르면, 스트리밍 모듈 (22) 은 수정된 그래픽 커맨드 토큰들을 생성하기 위해 오리지널 그래픽 커맨드 토큰들을 수정하고, GPU (20) 로 하여금 오리지널 비디오 데이터와는 상이한 수정된 비디오 데이터를 렌더링하기 위해 수정된 그래픽 커맨드 토큰들을 실행하게 할 수도 있다. 이러한 방식으로, 싱크 디바이스 (6) 는 오리지널 그래픽 커맨드 토큰들을 (예를 들어, 실시간으로) 수정하여 GPU (20) 로 하여금 수정된 비디오 데이터를 (즉, 어플리케이션 독립형으로 남겨 두면서) 렌더링하게 할 수도 있다.
도 2 는 본 개시의 하나 이상의 기법들에 따른, 소스 디바이스 (4) 가 비디오 데이터를 통신 채널 (8) 상으로 싱크 디바이스 (6) 에 스트리밍하도록 구성되는 도 1 의 소스 디바이스 (4) 및 싱크 디바이스 (6) 의 일 예의 추가적인 상세들을 예시한 블록 다이어그램이다.
도 2 에 예시된 바와 같이, 소스 디바이스 (4) 는 하나 이상의 프로세서들 (30), 하나 이상의 통신 유닛들 (32), 하나 이상의 사용자 인터페이스 (UI) 디바이스들 (34), 및 하나 이상의 저장 디바이스들 (36) 을 포함할 수도 있다. 컴포넌트들 (30, 32, 34, 및 36) 의 각각은 컴포넌트간 통신을 위해 통신 채널들 (38) 을 통해 (물리적으로, 통신가능하게 및/또는 동작가능하게) 상호접속될 수도 있다. 일부 예들에 있어서, 통신 채널들 (38) 은 시스템 버스, 네트워크 커넥션, 프로세스간 통신 데이터 구조, 또는 데이터를 통신하기 위한 임의의 다른 채널을 포함할 수도 있다. 저장 디바이스들 (36) 중 하나 이상은, 일부 예들에 있어서, 통신 모듈 (10), 스트리밍 모듈 (14), 하나 이상의 어플리케이션 모듈들 (18A-18N) (총칭하여, "어플리케이션 모듈들 (18)"), 및 UI 모듈 (40) 을 포함할 수도 있다.
하나 이상의 프로세서들 (30) (즉, 프로세서(들) (30)) 은, 일 예에 있어서, 소스 디바이스 (4) 내의 실행을 위한 기능 및/또는 프로세스 명령들을 구현하도록 구성된다. 예를 들어, 프로세서들 (30) 은 저장 디바이스들 (36) 중 하나 이상에 저장된 명령들을 프로세싱 가능할 수도 있다. 프로세서들 (30) 의 예들은 임의의 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSP들), 주문형 집적 회로들 (ASIC들), 필드 프로그래밍가능 게이트 어레이들 (FPGA들), 또는 임의의 다른 균등한 집적된 또는 별개의 로직 회로부 뿐 아니라 그러한 컴포넌트들의 임의의 조합들을 포함할 수도 있다.
소스 디바이스 (4) 는, 일부 예들에 있어서, 또한 하나 이상의 통신 유닛들 (32) 을 포함한다. 소스 디바이스 (4) 는, 일 예에 있어서, 통신 유닛들 (32) 중 하나 이상을 활용하여, 하나 이상의 무선 네트워크들과 같은 하나 이상의 네트워크들을 통해 외부 디바이스들과 통신한다. 통신 유닛들 (32) 중 하나 이상은 네트워크 인터페이스 카드, 예컨대, 이더넷 카드, 광학 트랜시버, 무선 주파수 트랜시버, 또는 정보를 전송 및 수신할 수 있는 임의의 다른 타입의 디바이스일 수도 있다. 그러한 네트워크 인터페이스들의 다른 예들은 블루투스, 3G, 및 Wi-Fi 무선기기들을 포함할 수도 있다. 일부 예들에 있어서, 소스 디바이스 (4) 는 통신 유닛 (32) 을 활용하여 외부 디바이스와 무선으로 통신한다. 예를 들어, 소스 디바이스 (4) 는 통신 유닛 (32) 을 활용하여, 통신 채널 (8) 상으로 싱크 디바이스 (6) 의 통신 유닛 (52) 과 무선으로 통신할 수도 있다. 일부 예들에 있어서, 통신 유닛 (32) 은, 통신 유닛 (32) 으로 하여금 외부 디바이스와 통신하게 하는 통신 모듈 (10) 과 같은 소스 디바이스 (4) 의 다른 컴포넌트들로부터의 입력을 수신할 수도 있다.
소스 디바이스 (4) 는, 일부 예들에 있어서, 또한 하나 이상의 UI 디바이스들 (34) 을 포함할 수도 있다. 일부 예들에 있어서, UI 디바이스들 (34) 중 하나 이상은 비디오 데이터와 같은 컨텐츠를 출력하도록 구성될 수 있다. 예를 들어, UI 디바이스들 (34) 의 디스플레이는 GPU (12) 에 의해 렌더링된 비디오 데이터의 프레임들을 디스플레이하도록 구성될 수도 있다. 컨텐츠를 출력하는 것에 부가하여, UI 디바이스들 (34) 중 하나 이상은 촉각, 청각, 또는 시각 입력을 수신하도록 구성될 수도 있다. UI 디바이스들 (34) 의 일부 예들은 비디오 디스플레이들, 스피커들, 키보드들, 터치 스크린들, 마우스들, 트랙볼들, 또는 다른 포인팅 디바이스들, 카메라들 등을 포함한다.
소스 디바이스 (4) 는, 일부 예들에 있어서, 또한 UI 모듈 (40) 을 포함할 수도 있다. UI 모듈 (40) 은 소스 디바이스 (4) 와 연관된 다른 컴포넌트들로부터 UI 데이터와 같은 컨텐츠를 수신하고 그리고 UI 디바이스들 (34) 중 하나 이상으로 하여금 컨텐츠를 출력하게 하기 위한 하나 이상의 기능들을 수행할 수 있다. 일부 예들에 있어서, UI 모듈 (40) 은 사용자 입력과 같은 입력의 표시를 수신하고, 스트리밍 모듈 (14) 과 같은 소스 디바이스 (4) 와 연관된 다른 컴포넌트들로 입력의 표시들을 전송하도록 구성될 수도 있다.
하나 이상의 저장 디바이스들 (36) 은 동작 동안 소스 디바이스 (4) 내에 정보를 저장하도록 구성될 수도 있다. 저장 디바이스들 (36) 중 하나 이상은, 일부 예들에 있어서, 컴퓨터 판독가능 저장 매체를 포함할 수도 있다. 일부 예들에 있어서, 저장 디바이스들 (36) 중 하나 이상은, 저장 디바이스들 (36) 중 하나 이상의 주요 목적이 장기 저장이 아님을 의미하는 임시 메모리를 포함할 수도 있다. 저장 디바이스들 (36) 중 하나 이상은, 일부 예들에 있어서, 시스템이 턴-오프될 경우 저장 디바이스들 (36) 중 하나 이상이 저장된 컨텐츠를 유지하지 않음을 의미하는 휘발성 메모리를 포함할 수도 있다. 휘발성 메모리들의 예는 랜덤 액세스 메모리들 (RAM), 동적 랜덤 액세스 메모리들 (DRAM), 정적 랜덤 액세스 메모리들 (SRAM), 및 당업계에 공지된 다른 형태들의 휘발성 메모리들을 포함한다. 일부 예들에 있어서, 저장 디바이스들 (36) 중 하나 이상은, 프로세서들 (30) 에 의한 실행을 위한 프로그램 명령들을 저장하는데 사용된다. 저장 디바이스들 (36) 중 하나 이상은, 일 예에 있어서, 프로그램 실행 동안 정보를 임시로 저장하기 위해 소스 디바이스 (4) 상에서 구동하는 소프트웨어 또는 모듈들 (예를 들어, 통신 모듈 (10), 스트리밍 모듈 (14), 어플리케이션 모듈들 (18), 및 UI 모듈 (40)) 에 의해 사용될 수도 있다.
저장 디바이스들 (36) 중 하나 이상은, 일부 예들에 있어서, 또한 하나 이상의 컴퓨터 판독가능 저장 매체들을 포함할 수도 있다. 저장 디바이스들 (36) 중 하나 이상은 추가로, 정보의 장기 저장을 위해 구성될 수도 있다. 일부 예들에 있어서, 저장 디바이스들 (36) 중 하나 이상은 비-휘발성 저장 엘리먼트들을 포함할 수도 있다. 그러한 비-휘발성 저장 엘리먼트들의 예들은 자기 하드 디스크들, 광학 디스크들, 플래시 메모리들, 또는 전기적 프로그래밍가능 메모리들 (EPROM) 또는 전기적 소거가능 및 프로그래밍가능 (EEPROM) 메모리들의 형태들을 포함한다.
싱크 디바이스 (6) 는 하나 이상의 프로세서들 (50) (즉, 프로세서(들) (50)), 하나 이상의 통신 유닛들 (52), 하나 이상의 사용자 인터페이스 (UI) 디바이스들 (54), 및 하나 이상의 저장 디바이스들 (56) 을 포함할 수도 있다. 컴포넌트들 (50, 52, 54, 및 56) 의 각각은 컴포넌트간 통신을 위해 통신 채널들 (58) 을 통해 (물리적으로, 통신가능하게 및/또는 동작가능하게) 상호접속될 수도 있다. 일부 예들에 있어서, 통신 채널들 (58) 은 시스템 버스, 네트워크 커넥션, 프로세스간 통신 데이터 구조, 또는 데이터를 통신하기 위한 임의의 다른 채널을 포함할 수도 있다. 저장 디바이스들 (56) 중 하나 이상은, 일부 예들에 있어서, 통신 모듈 (19), 스트리밍 모듈 (22), 텍스처 엘리먼트들 (24), 및 UI 모듈 (60) 을 포함할 수도 있다.
프로세서들 (50) 은, 일부 예들에 있어서, 싱크 디바이스 (6) 내의 실행을 위한 기능 및/또는 프로세스 명령들을 구현하도록 구성될 수도 있다. 예를 들어, 프로세서들 (50) 은 저장 디바이스들 (56) 중 하나 이상에 저장된 명령들을 프로세싱 가능할 수도 있다. 프로세서들 (50) 의 예들은 임의의 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSP들), 주문형 집적 회로들 (ASIC들), 필드 프로그래밍가능 게이트 어레이들 (FPGA들), 또는 임의의 다른 균등한 집적된 또는 별개의 로직 회로부 뿐 아니라 그러한 컴포넌트들의 임의의 조합들을 포함할 수도 있다.
싱크 디바이스 (6) 는, 일부 예들에 있어서, 또한 하나 이상의 통신 유닛들 (52) 을 포함한다. 싱크 디바이스 (6) 는, 일 예에 있어서, 통신 유닛들 (52) 중 하나 이상을 활용하여, 하나 이상의 무선 네트워크들과 같은 하나 이상의 네트워크들을 통해 외부 디바이스들과 통신한다. 통신 유닛들 (52) 중 하나 이상은 네트워크 인터페이스 카드, 예컨대, USB 트랜시버, 이더넷 카드, 광학 트랜시버, 무선 주파수 트랜시버, 또는 정보를 전송 및 수신할 수 있는 임의의 다른 타입의 디바이스일 수도 있다. 그러한 네트워크 인터페이스들의 다른 예들은 블루투스, 3G, 및 Wi-Fi 무선기기들을 포함할 수도 있다. 일부 예들에 있어서, 싱크 디바이스 (6) 는 통신 유닛 (52) 을 활용하여 외부 디바이스와 무선으로 통신한다. 예를 들어, 싱크 디바이스 (6) 는 통신 유닛 (52) 을 활용하여, 통신 채널 (8) 상으로 소스 디바이스 (4) 의 통신 유닛 (32) 과 무선으로 통신할 수도 있다. 일부 예들에 있어서, 통신 유닛 (52) 은 수신된 데이터를 통신 모듈 (19) 과 같은 싱크 디바이스 (6) 의 다른 컴포넌트들에 제공할 수도 있다.
싱크 디바이스 (6) 는, 일부 예들에 있어서, 또한 하나 이상의 UI 디바이스들 (54) 을 포함할 수도 있다. 일부 예들에 있어서, UI 디바이스들 (54) 중 하나 이상은 비디오 데이터와 같은 컨텐츠를 출력하도록 구성될 수 있다. 예를 들어, UI 디바이스들 (54) 의 디스플레이는 GPU (20) 에 의해 렌더링된 비디오 데이터의 프레임들을 디스플레이하도록 구성될 수도 있다. 컨텐츠를 출력하는 것에 부가하여, UI 디바이스들 (54) 중 하나 이상은 촉각, 청각, 또는 시각 입력을 수신하도록 구성될 수도 있다. UI 디바이스들 (54) 의 일부 예들은 비디오 디스플레이들, 스피커들, 키보드들, 터치 스크린들, 마우스들, 카메라들 등을 포함한다.
싱크 디바이스 (6) 는, 일부 예들에 있어서, 또한 UI 모듈 (60) 을 포함할 수도 있다. UI 모듈 (60) 은 싱크 디바이스 (6) 와 연관된 다른 컴포넌트들로부터 UI 데이터와 같은 컨텐츠를 수신하고 그리고 UI 디바이스들 (54) 중 하나 이상으로 하여금 컨텐츠를 출력하게 하기 위한 하나 이상의 기능들을 수행할 수 있다. 일부 예들에 있어서, UI 모듈 (60) 은 사용자 입력과 같은 입력의 표시를 수신하고, 스트리밍 모듈 (14) 과 같은 싱크 디바이스 (6) 와 연관된 다른 컴포넌트들로 입력의 표시들을 전송하도록 구성될 수도 있다.
하나 이상의 저장 디바이스들 (56) 은 동작 동안 싱크 디바이스 (6) 내에 정보를 저장하도록 구성될 수도 있다. 저장 디바이스들 (56) 중 하나 이상은, 일부 예들에 있어서, 컴퓨터 판독가능 저장 매체를 포함할 수도 있다. 일부 예들에 있어서, 저장 디바이스들 (56) 중 하나 이상은, 저장 디바이스들 (56) 중 하나 이상의 주요 목적이 장기 저장이 아님을 의미하는 임시 메모리를 포함할 수도 있다. 저장 디바이스들 (56) 중 하나 이상은, 일부 예들에 있어서, 시스템이 턴-오프될 경우 저장 디바이스들 (56) 중 하나 이상이 저장된 컨텐츠를 유지하지 않음을 의미하는 휘발성 메모리를 포함할 수도 있다. 휘발성 메모리들의 예는 랜덤 액세스 메모리들 (RAM), 동적 랜덤 액세스 메모리들 (DRAM), 정적 랜덤 액세스 메모리들 (SRAM), 및 당업계에 공지된 다른 형태들의 휘발성 메모리들을 포함한다. 일부 예들에 있어서, 저장 디바이스들 (56) 중 하나 이상은, 프로세서들 (50) 에 의한 실행을 위한 프로그램 명령들을 저장하는데 사용된다. 저장 디바이스들 (56) 중 하나 이상은, 일 예에 있어서, 프로그램 실행 동안 정보를 임시로 저장하기 위해 싱크 디바이스 (6) 상에서 구동하는 소프트웨어 또는 모듈들 (예를 들어, 통신 모듈 (19), 스트리밍 모듈 (22), 및 UI 모듈 (60)) 에 의해 사용될 수도 있다.
저장 디바이스들 (56) 중 하나 이상은, 일부 예들에 있어서, 또한 하나 이상의 컴퓨터 판독가능 저장 매체들을 포함할 수도 있다. 저장 디바이스들 (56) 중 하나 이상은 추가로, 정보의 장기 저장을 위해 구성될 수도 있다. 일부 예들에 있어서, 저장 디바이스들 (56) 중 하나 이상은 비-휘발성 저장 엘리먼트들을 포함할 수도 있다. 그러한 비-휘발성 저장 엘리먼트들의 예들은 자기 하드 디스크들, 광학 디스크들, 플래시 메모리들, 또는 전기적 프로그래밍가능 메모리들 (EPROM) 또는 전기적 소거가능 및 프로그래밍가능 (EEPROM) 메모리들의 형태들을 포함한다.
상기 논의된 바와 같이, 싱크 디바이스 (6) 는, 하나 이상의 외부 디바이스들로부터 스트리밍 비디오 데이터를 수신하도록 구성될 수도 있는 스트리밍 모듈 (22) 을 포함할 수도 있다. 일부 예들에 있어서, 스트리밍 모듈 (22) 은, 하나 이상의 그래픽 커맨드 토큰들을 수정하도록 구성될 수도 있는 커맨드 수정 모듈 (62) 을 포함할 수도 있다. 하기에서 더 상세히 설명되는 바와 같이, 커맨드 수정 모듈 (62) 은, 수정된 비디오 데이터를 렌더링하도록 GPU (20) 에 의해 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 그래픽 커맨드 토큰들을 수정할 수도 있다.
도 3a 내지 도 6 은 본 개시의 하나 이상의 양태들에 따른, 디바이스에 의해 수행될 수도 있는 그래픽 커맨드들의 예시적인 수정들을 예시한 개념 다이어그램들이다. 도 3a 및 도 3b 는 예시적인 텍스처 엘리먼트 대체 수정을 예시한다. 도 4a 및 도 4b 는 예시적인 3차원 (3D) 뷰포인트 변경 수정을 예시한다. 도 5a 및 도 5b 는 예시적인 하이라이트 수정을 예시한다. 도 6 은 예시적인 분할 스크린 수정을 예시한다. 설명의 목적들을 위해, 도 3a, 도 3b, 도 4a, 도 4b, 도 5a, 도 5b 및 도 6 의 수정들은 도 1 및 도 2 에서 예시된 싱크 디바이스 (6) 의 문맥 내에서 설명되지만, 싱크 디바이스 (6) 의 구성들과는 상이한 구성들을 갖는 컴퓨팅 디바이스들이 도 3a, 도 3b, 도 4a, 도 4b, 도 5a, 도 5b 및 도 6 의 수정들을 수행할 수도 있다.
도 3a 및 도 3b 는, 각각, 오리지널 그래픽 커맨드 토큰들에 기초하여 렌더링된 오리지널 비디오 데이터의 프레임 (302A) 및 수정된 그래픽 커맨드 토큰들에 기초하여 렌더링된 수정된 비디오 데이터의 프레임 (302B) 을 예시한다. 프레임 (302A) 은 도 2 의 UI 디바이스들 (54) 의 디스플레이 디바이스와 같은 디스플레이 디바이스 상에 디스플레이될 수도 있다. 도 3a 에 도시된 바와 같이, 오리지널 비디오 데이터의 프레임 (302A) 은, 다양한 장애물들을 통과하여 헬리콥터를 날리는 것과 관련되는 게이밍 어플리케이션 (예를 들어, 도 1 및 도 2 의 소스 디바이스 (4) 의 어플리케이션 모듈들 (18) 의 어플리케이션 모듈) 에 의해 생성된 오리지널 그래픽 커맨드 토큰들에 기초하여 렌더링될 수도 있다. 오리지널 비디오 데이터의 프레임 (302A) 의 렌더링을 가능케 하기 위하여, 게이밍 어플리케이션에 의해 생성된 그래픽 커맨드 토큰들 중 하나 이상은 헬리콥터 텍스처 엘리먼트 (304) 에 대한 참조들을 포함할 수도 있다. 예를 들어, 게이밍 어플리케이션에 의해 생성된 그래픽 커맨드 토큰들 중 하나 이상은 헬리콥터 텍스처 엘리먼트 (304) 에 대한 픽셀 값들을 포함하는 버퍼에 대한 참조를 포함할 수도 있다 (예를 들어, glTexImage2D 또는 glTexSubImage2D 그래픽 커맨드는 버퍼에 대한 포인터를 포함할 수도 있음).
상기 논의된 바와 같이, 싱크 디바이스 (6) 의 스트리밍 모듈 (22) 은 소스 디바이스 (4) 로부터 오리지널 그래픽 커맨드 토큰들을 수신할 수도 있다. 본 개시의 하나 이상의 기법들에 따르면, 싱크 디바이스 (6) 는 오리지널 비디오 데이터에 포함된 하나 이상의 텍스처 엘리먼트들을 대체함으로써 오리지널 비디오 데이터를 수정할 수도 있다. 예를 들어, 커맨드 수정 모듈 (62) 은 오리지널 텍스처 엘리먼트에 대한 그래픽 커맨드 토큰들에서의 참조들을 오리지널 텍스처 엘리먼트와는 상이한 대체 텍스처 엘리먼트에 대한 참조들로 대체함으로써 수정된 그래픽 커맨드 토큰들을 생성하기 위해 게이밍 어플리케이션에 의해 생성된 하나 이상의 그래픽 커맨드 토큰들을 수정할 수도 있다. 일부 예들에 있어서, 대체 텍스처 엘리먼트는 텍스처 엘리먼트들 (24) 에 포함될 수도 있다. 예를 들어, 커맨드 수정 모듈 (62) 은 버퍼에서의 오리지널 텍스처 엘리먼트에 대한 픽셀 값들을 대체 텍스처 엘리먼트에 대한 픽셀 값들로 수정할 수도 있다. 일 예로서, 커맨드 수정 모듈 (62) 은 glTexImage2D 또는 glTexSubImage2D 그래픽 커맨드에 의해 포인팅된 버퍼에서의 픽셀 값들을 대체 텍스처 엘리먼트에 대한 픽셀 값들로 오버라이트할 수도 있다.
도 3a 및 도 3b 의 예에 있어서, 수정된 그래픽 커맨드 토큰들을 생성할 경우, 커맨드 수정 모듈 (62) 은 헬리콥터 텍스처 엘리먼트 (304) 에 대한 그래픽 커맨드 토큰들에서의 참조들을 드래곤 텍스처 엘리먼트 (306) 에 대한 참조들로 대체할 수도 있다. 도 3b 에 도시된 바와 같이, 헬리콥터 텍스처 엘리먼트 (304) 에 대한 참조들을 드래곤 텍스처 엘리먼트 (306) 에 대한 참조들로 대체함으로써, 커맨드 수정 모듈 (62) 은 GPU (20) 로 하여금 수정된 비디오 데이터의 프레임 (302B) 을 헬리콥터 텍스처 엘리먼트 (304) 대신 드래곤 텍스처 엘리먼트 (306) 로 렌더링하게 할 수도 있다.
일부 예들에 있어서, 싱크 디바이스 (6) 는 하나 이상의 텍스처 엘리먼트들의 언어를 변경함으로써 오리지널 비디오 데이터를 수정할 수도 있다. 예를 들어, 싱크 디바이스 (6) 는 오리지널 그래픽 커맨드 토큰들에 의해 참조된 오리지널 텍스처 엘리먼트에 대해 광학 문자 인식 (OCR) 을 수행하여, 오리지널 텍스처 엘리먼트가 텍스트를 포함하는지 여부를 결정할 수도 있다. 싱크 디바이스 (6) 의 사용자에 의해 선택된 언어가 오리지널 텍스처 엘리먼트에 포함된 텍스트와 상이하면, 싱크 디바이스 (6) 는 싱크 디바이스 (6) 의 사용자에 의해 선택된 언어로의 텍스트의 번역을 포함하는 대체 텍스처 엘리먼트를 생성하고, 상기 설명된 바와 같이 오리지널 텍스처 엘리먼트에 대한 참조들을 대체 텍스처 엘리먼트에 대한 참조들로 대체할 수도 있다.
도 4a 및 도 4b 는, 각각, 오리지널 그래픽 커맨드 토큰들에 기초하여 렌더링된 오리지널 비디오 데이터의 프레임 (402A) 및 수정된 그래픽 커맨드 토큰들에 기초하여 렌더링된 수정된 비디오 데이터의 프레임 (402B) 을 예시한다. 도 4a 에 도시된 바와 같이, 오리지널 비디오 데이터의 프레임 (402A) 은, 3차원 (3D) 파이-차트 오브젝트 (403) 의 프리젠테이션과 관련되는 프리젠테이션 어플리케이션 (예를 들어, 도 1 및 도 2 의 어플리케이션 모듈들 (18) 의 어플리케이션 모듈) 에 의해 생성된 오리지널 그래픽 커맨드 토큰들에 기초하여 렌더링될 수도 있다. 오리지널 비디오 데이터의 프레임 (402A) 의 렌더링을 가능케 하기 위하여, 프리젠테이션 어플리케이션에 의해 생성된 그래픽 커맨드 토큰들 중 하나 이상은 3D 파이-차트 오브젝트 (403) 가 제 1 뷰포인트 (404A) 에서 렌더링되게 할 수도 있다.
상기 논의된 바와 같이, 싱크 디바이스 (6) 의 스트리밍 모듈 (22) 은 소스 디바이스 (4) 로부터 오리지널 그래픽 커맨드 토큰들을 수신할 수도 있다. 본 개시의 하나 이상의 기법들에 따르면, 싱크 디바이스 (6) 는, 3D 오브젝트가 렌더링되는 뷰포인트를 조정함으로써 오리지널 비디오 데이터를 수정할 수도 있다. 예를 들어, 오리지널 그래픽 커맨드 토큰들이 제 1 뷰포인트로부터의 3D 오브젝트의 표현을 포함하는 오리지널 비디오 데이터를 렌더링하도록 실행가능할 경우, 커맨드 수정 모듈 (62) 은, 제 1 뷰포인트와는 상이한 제 2 뷰포인트로부터의 3D 오브젝트의 표현을 포함하기 위해 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성함으로써 하나 이상의 그래픽 커맨드 토큰들을 수정할 수도 있다. 예를 들어, 커맨드 수정 모듈 (62) 은 3D 오브젝트에 대한 변환 매트릭스를 포함하는 그래픽 커맨드 (예를 들어, glUniformMatrix4fv 커맨드들 중 하나) 를 검출하고, 변환 매트릭스를 원하는 변환에 의해 승산할 수도 있다. 일 예로서, 요구된 뷰포인트 변경이 (오브젝트를 확대하기 위해) x, y, z 방향들에서의 3 에 의한 스케일링이면, 커맨드 수정 모듈 (62) 은 변환 매트릭스를 [3 0 0 0; 0 3 0 0; 0 0 3 0; 0 0 0 1] 에 의해 승산할 수도 있다.
도 4a 및 도 4b 의 예에 있어서, 커맨드 수정 모듈 (62) 은 3D 파이-차트 오브젝트 (403) 가 제 2 뷰포인트 (404B) 에서 렌더링되게 하는 수정된 그래픽 커맨드 토큰들을 생성할 수도 있다. 도 4b 에 도시된 바와 같이, 3D 파이-차트 오브젝트 (403) 가 제 2 뷰포인트 (404B) 에서 렌더링되게 하는 수정된 그래픽 커맨드 토큰들을 생성함으로써, 커맨드 수정 모듈 (62) 은 GPU (20) 로 하여금 수정된 비디오 데이터의 프레임 (402B) 을, 오리지널 비디오 데이터의 프레임 (402A) 에서와는 상이한 뷰포인트에서의 3D 파이-차트 오브젝트 (403) 로 렌더링하게 할 수도 있다.
도 5a 및 도 5b 는, 각각, 오리지널 그래픽 커맨드 토큰들에 기초하여 렌더링된 오리지널 비디오 데이터의 프레임 (502A) 및 수정된 그래픽 커맨드 토큰들에 기초하여 렌더링된 수정된 비디오 데이터의 프레임 (502B) 을 예시한다. 도 5a 에 도시된 바와 같이, 오리지널 비디오 데이터의 프레임 (502A) 은, 블록들 (506A-506C) (총칭하여, "블록들 (506)") 을 포함하는 플로우 다이어그램 (504) 의 프리젠테이션과 관련되는 프리젠테이션 어플리케이션 (예를 들어, 도 1 및 도 2 의 어플리케이션 모듈들 (18) 의 어플리케이션 모듈) 에 의해 생성된 오리지널 그래픽 커맨드 토큰들에 기초하여 렌더링될 수도 있다.
상기 논의된 바와 같이, 싱크 디바이스 (6) 의 스트리밍 모듈 (22) 은 소스 디바이스 (4) 로부터 오리지널 그래픽 커맨드 토큰들을 수신할 수도 있다. 본 개시의 하나 이상의 기법들에 따르면, 싱크 디바이스 (6) 는 오리지널 비디오 데이터의 하나 이상의 영역들을 하이라이팅함으로써 오리지널 비디오 데이터를 수정할 수도 있다. 예를 들어, 커맨드 수정 모듈 (62) 은, 오리지널 비디오 데이터 상에 오버레이된 하이라이트를 포함하는 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성함으로써 오리지널 그래픽 커맨드 토큰들을 수정할 수도 있다. 일 예로서, 오리지널 그래픽 커맨드 토큰들이 오리지널 비디오 데이터를 오리지널 텍스처 엘리먼트들의 타일들로서 렌더링하도록 실행가능할 경우, 커맨드 수정 모듈 (62) 은 오리지널 그래픽 커맨드 토큰들 중 하나 이상에 의해 참조된 버퍼에서의 오리지널 텍스처 엘리먼트들 중 하나 이상에 대한 픽셀 값들을, 하이라이트 오버레이를 포함하는 대체 텍스처 엘리먼트에 대한 픽셀 값들로 수정할 수도 있다.
도 5a 및 도 5b 의 예에 있어서, 커맨드 수정 모듈 (62) 은 하이라이트 박스 (508) 가 플로우 다이어그램 (504) 의 블록 (506A) 의 상부 상에서 렌더링되게 하는 수정된 그래픽 커맨드 토큰들을 생성할 수도 있다. 도 5b 에 도시된 바와 같이, 하이라이트 박스 (508) 가 플로우 다이어그램 (504) 의 블록 (506A) 의 상부 상에서 렌더링되게 하는 수정된 그래픽 커맨드 토큰들을 생성함으로써, 커맨드 수정 모듈 (62) 은 GPU (20) 로 하여금 수정된 비디오 데이터의 프레임 (502B) 을, 블록 (506A) 에 대한 추가적인 강조로 렌더링하게 할 수도 있다.
도 6 은 수정된 그래픽 커맨드 토큰들에 기초하여 렌더링되는 수정된 비디오 데이터의 프레임 (602) 을 예시한다. 상기 논의된 바와 같이, 싱크 디바이스 (6) 의 스트리밍 모듈 (22) 은 소스 디바이스 (4) 로부터 오리지널 그래픽 커맨드 토큰들을 수신할 수도 있다. 본 개시의 하나 이상의 기법들에 따르면, 수정된 비디오 데이터의 프레임의 단일 버전을 제시하는 것과 대조적으로, 싱크 디바이스 (6) 는 단일 디스플레이 디바이스에서의 비디오 데이터의 프레임의 다중의 버전들을 동시에 제시할 수도 있다. 예를 들어, 커맨드 수정 모듈 (62) 은 수정된 그래픽 커맨드 토큰들의 하나 이상의 세트들을 생성하고, GPU (20) 로 하여금 수정된 비디오 데이터의 단일 프레임의 상이한 영역들에서 수정된 비디오 데이터의 하나 이상의 버전들을 렌더링하기 위해 수정된 그래픽 커맨드 토큰들의 하나 이상의 세트들을 실행하게 할 수도 있다.
도 6 의 예에 있어서, 커맨드 수정 모듈 (62) 은, 플로우 다이어그램 (604) 의 블록들 (606A-606C) (총칭하여, "블록 (606)") 을 포함하는 오리지널 비디오 데이터의 프레임 (614) 을 렌더링하도록 실행가능한 하나 이상의 오리지널 그래픽 커맨드 토큰들을 수신할 수도 있다. 커맨드 수정 모듈 (62) 은 블록들 (606) 을 포함하는 수정된 비디오 데이터의 프레임 (615A) 을 블록 (606A) 상의 하이라이트 박스 (608) 로 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들의 제 1 세트, 블록들 (606) 을 포함하는 수정된 비디오 데이터의 프레임 (615B) 을 블록 (606B) 상의 하이라이트 박스 (608) 로 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들의 제 2 세트, 및 블록들 (606) 을 포함하는 수정된 비디오 데이터의 프레임 (615C) 을 블록 (606C) 상의 하이라이트 박스 (608) 로 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들의 제 3 세트를 생성하기 위해 오리지널 그래픽 커맨드 토큰들을 수정할 수도 있다.
커맨드 수정 모듈 (62) 은 그래픽 커맨드 토큰들의 오리지널 세트를 수정된 그래픽 커맨드 토큰들의 제 1, 제 2 및 제 3 세트와 함께 결합하고, GPU (20) 로 하여금 수정된 비디오 데이터의 단일 프레임을 렌더링하기 위해 수정된 그래픽 커맨드 토큰들의 하나 이상의 세트들을 실행하게 할 수도 있다. 도 6 에 도시된 바와 같이, 커맨드 수정 모듈 (62) 은, GPU (20) 가 프레임 (602) 의 좌상부 쿼터에서 오리지널 비디오 데이터의 프레임 (614A) 을 렌더링하고, 프레임 (602) 의 우상부 쿼터에서 수정된 비디오 데이터의 프레임 (615A) 을 렌더링하고, 프레임 (602) 의 좌하부 쿼터에서 프레임 (615B) 을 렌더링하고, 그리고 프레임 (602) 의 우하부 쿼터에서 프레임 (615C) 을 렌더링하도록, 그래픽 커맨드 토큰들의 세트들을 결합할 수도 있다. 이러한 방식으로, 커맨드 수정 모듈 (62) 은 오리지널 그래픽 커맨드 토큰들의 단일 세트로부터 (즉, 단일 비트스트림으로부터) 수정된 그래픽 커맨드 토큰들의 다중의 세트들을 생성할 수도 있다.
도 3a 내지 도 6 을 참조하여 설명된 수정들은 오직 예들일 뿐이고 다른 타입들의 수정들이 가능함이 이해되어야 한다. 일 예로서, 싱크 디바이스 (6) 는, 수정된 비디오 데이터가 이미지 프로세싱 포인트 동작들 (예를 들어, 그레이스케일과 같은 컬러 변환들, 블러링, 샤프닝 등) 로 렌더링되도록 그래픽 커맨드 토큰들을 수정할 수도 있다. 다른 예로서, 싱크 디바이스 (6) 는, 수정된 비디오 데이터가 하나 이상의 사진 필터들 (예를 들어, 인스타그램형 필터들) 과 같은 하나 이상의 이미지 프로세싱 필터들로 프로세싱되는 외형으로 렌더링되도록 그래픽 커맨드 토큰들을 수정할 수도 있다. 다른 예로서, 싱크 디바이스 (6) 는 (예를 들어, 다중의 어플들 등을 허용하기 위한 디스플레이의 부분적 커버링용으로, 더 큰 해상도로 렌더링하기 위한) 해상도 변경들을 수행하기 위해 그래픽 커맨드 토큰들을 수정할 수도 있다.
일부 예들에 있어서, 싱크 디바이스 (6) 에 의해 수행된 수정들은 임의의 어플리케이션 (예를 들어, 그레이스케일 효과) 을 위한 것일 수도 있다. 일부 예들에 있어서, 싱크 디바이스 (6) 에 의해 수행된 수정들은 어플리케이션 특정 (예를 들어, 특정 어플리케이션에 있어서의 특정 오브젝트의 3D 뷰포인트의 변경) 일 수도 있다. 싱크 디바이스 (6) 에 의해 수행된 수정들은 부분 뷰이거나 전체 뷰를 위한 것일 수 있다 (예를 들어, 어도비 리더에서의 PDF 문서의 도면들에 대한 효과를 추가하는 것 하지만 텍스트에 대한 효과를 추가하는 것 아님). 싱크 디바이스 (6) 에 의해 수행된 수정들은 적응형일 수 있다 (예를 들어, 싱크 디바이스의 디스플레이에서의 웹 브라우저 출력은 회사 종업원들에 의해 관측되면 전체 웹페이지를 포함할 수도 있지만, 손님들에 의해 관측되면 특정 부분들을 블러링할 수도 있음).
도 7 은 본 개시의 하나 이상의 기법들에 따른, 비디오 데이터를 프로세싱하기 위한 싱크 디바이스의 예시적인 동작들을 예시한 플로우 다이어그램이다. 도 7 의 기법들은 도 1 및 도 2 에 예시된 싱크 디바이스 (6) 와 같은 컴퓨팅 디바이스의 하나 이상의 프로세서들에 의해 수행될 수도 있다. 예시의 목적들로, 도 7 의 기법들은 도 1 및 도 2 에 예시된 싱크 디바이스 (6) 의 문맥 내에서 설명되지만, 싱크 디바이스 (6) 의 구성들과는 상이한 구성들을 갖는 컴퓨팅 디바이스들이 도 7 의 기법들을 수행할 수도 있다.
본 개시의 하나 이상의 기법들에 따르면, 싱크 디바이스 (6) 는, 소스 디바이스로부터, 오리지널 비디오 데이터를 렌더링하도록 실행가능한 그래픽 커맨드 토큰들을 수신할 수도 있다 (702). 예를 들어, 싱크 디바이스 (6) 의 프로세서들 (50) 중 하나 이상은, 그래픽 커맨드 토큰들을 포함하는 비트스트림을 소스 디바이스 (4) 와 같은 소스 디바이스로부터 무선으로 수신하도록 스트리밍 모듈 (22) 을 실행할 수도 있다. 일부 예들에 있어서, 싱크 디바이스 (6) 에 의해 수신된 비트스트림은 또한 하나 이상의 텍스처 엘리먼트들을 포함할 수도 있다.
싱크 디바이스 (6) 는 수정된 그래픽 커맨드 토큰들을 생성하기 위해 그래픽 커맨드 토큰들을 수정할 수도 있다 (704). 예를 들어, 프로세서들 (50) 중 하나 이상은, 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 커맨드 수정 모듈 (62) 을 실행할 수도 있다. 일부 예들에 있어서, 프로세서들 (50) 중 하나 이상은, 수신된 비트스트림에 포함된 그래픽 커맨드 토큰들을 수정함으로써 수정된 그래픽 커맨드 토큰들을 생성하기 위해 커맨드 수정 모듈 (62) 을 실행할 수도 있다. 일부 예들에 있어서, 프로세서들 (50) 중 하나 이상은, 수신된 비트스트림에 추가의 그래픽 커맨드 토큰들을 삽입함으로써 수정된 그래픽 커맨드 토큰들을 생성하기 위해 커맨드 수정 모듈 (62) 을 실행할 수도 있다. 일부 예들에 있어서, 오리지널 비디오 데이터 및 수정된 비디오 데이터는 비디오 데이터의 프레임들의 시퀀스일 수도 있다. 일부 예들에 있어서, 오리지널 비디오 데이터 및 수정된 비디오 데이터는 비디오 데이터의 단일 프레임일 수도 있다.
프로세서들 (50) 중 하나 이상은 매우 다양한 수정들을 수행하기 위해 커맨드 수정 모듈 (62) 을 실행할 수도 있다. 커맨드 수정 모듈 (62) 이 수행하도록 실행될 수도 있는 일부 예시적인 수정들은 텍스처 엘리먼트들의 대체 (예를 들어, 도 3a 및 도 3b 의 예), 3D 오브젝트들에 대한 뷰포인트 변경들 (예를 들어, 도 4a 및 도 4b 의 예), 이미지 프로세싱 포인트 동작들 (예를 들어, 도 5a 및 도 5b 의 예), 예술적 효과들을 갖는 이미지 프로세싱 필터들, 및 해상도 변경들을 포함하지만 이에 한정되지 않는다.
어떤 경우라도, 싱크 디바이스 (6) 는 수정된 비디오 데이터를 렌더링하기 위해 수정된 그래픽 커맨드 토큰들을 실행하고 (706), 디스플레이에서의 프리젠테이션을 위해, 수정된 비디오 데이터를 출력할 수도 있다 (708). 예를 들어, 프로세서들 (50) 중 하나 이상은 커맨드 수정 모듈 (62) 을 실행하여, 싱크 디바이스 (6) 의 GPU (20) 로 하여금 수정된 비디오 데이터를 렌더링하기 위해 수정된 그래픽 커맨드 토큰들을 실행하게 하고 그리고 렌더링된 수정된 비디오 데이터를 싱크 디바이스 (6) 의 UI 디바이스들 (54) 의 디스플레이에 출력하게 할 수도 있다.
다음의 넘버링된 예들은 본 개시의 하나 이상의 양태들을 예시할 수도 있다:
예 1. 비디오 데이터를 프로세싱하기 위한 방법은, 싱크 디바이스에 의해 및 소스 디바이스로부터, 하나 이상의 텍스처 엘리먼트들에 기초하여 오리지널 비디오 데이터를 렌더링하도록 실행가능한 하나 이상의 그래픽 커맨드 토큰들을 수신하는 것; 싱크 디바이스에 의해, 오리지널 비디오 데이터와는 상이한 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 그래픽 커맨드 토큰들을 수정하는 것; 및 싱크 디바이스에 동작가능하게 접속된 디스플레이에서의 프리젠테이션을 위해, 수정된 비디오 데이터를 출력하는 것을 포함한다.
예 2. 예 1 의 방법에 있어서, 그래픽 커맨드 토큰들을 수신하는 것은 소스 디바이스로부터 그래픽 커맨드 토큰들을 무선으로 수신하는 것을 포함한다.
예 3. 예들 1-2 의 임의의 조합의 방법에 있어서, 수신된 텍스처 엘리먼트들 중 하나 이상을 하나 이상의 수신된 텍스처 엘리먼트들과는 상이한 하나 이상의 대체 텍스처 엘리먼트들로 대체하여 수정된 비디오 데이터가 하나 이상의 대체 텍스처 엘리먼트들에 기초하게 하는 것을 더 포함한다.
예 4. 예들 1-3 의 임의의 조합의 방법에 있어서, 오리지널 비디오 데이터는 제 1 뷰포인트로부터의 3차원 (3D) 오브젝트의 표현을 포함하고, 그래픽 커맨드 토큰들을 수정하는 것은 수정된 비디오 데이터가 제 1 뷰포인트와는 상이한 제 2 뷰포인트로부터의 3D 오브젝트의 표현을 포함하도록 그래픽 커맨드 토큰들을 수정하는 것을 포함한다.
예 5. 예들 1-4 의 임의의 조합의 방법에 있어서, 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 그래픽 커맨드 토큰들을 수정하는 것은 제 1 수정된 비디오 데이터를 렌더링하도록 실행가능한 제 1 수정된 그래픽 커맨드 토큰들을 생성하기 위해 그래픽 커맨드 토큰들을 수정하는 것을 포함하고, 수정된 비디오 데이터를 출력하는 것은 디스플레이의 제 1 부분에서의 프리젠테이션을 위해 제 1 수정된 비디오 데이터를 출력하는 것을 포함하고, 그 방법은 오리지널 비디오 데이터 및 제 1 수정된 비디오 데이터와는 상이한 제 2 수정된 비디오 데이터를 렌더링하도록 실행가능한 제 2 수정된 그래픽 커맨드 토큰들을 생성하기 위해 그래픽 커맨드 토큰들을 수정하는 것; 및 제 1 부분과는 상이한 디스플레이의 제 2 부분에서의 프리젠테이션을 위해, 제 2 수정된 비디오 데이터를 출력하는 것을 더 포함한다.
예 6. 예들 1-5 의 임의의 조합의 방법에 있어서, 수정된 그래픽 커맨드 토큰들을 생성하는 것은, 수정된 비디오 데이터가 사진 필터로 프로세싱되는 외형으로 렌더링되도록 수정된 그래픽 커맨드 토큰들을 생성하는 것을 포함한다.
예 7. 예들 1-6 의 임의의 조합의 방법에 있어서, 그래픽 커맨드 토큰들을 수정하는 것은 그래픽 커맨드 토큰들을 실시간으로 수정하는 것을 포함한다.
예 8. 싱크 디바이스는, 소스 디바이스로부터, 하나 이상의 텍스처 엘리먼트들에 기초하여 오리지널 비디오 데이터를 렌더링하도록 실행가능한 그래픽 커맨드 토큰들을 수신하도록 구성된 통신 유닛; 및 예들 1-7 의 임의의 조합의 방법을 수행하도록 구성된 하나 이상의 프로세서들을 포함한다.
예 9. 싱크 디바이스는 예들 1-7 의 임의의 조합의 방법을 수행하는 수단을 포함한다.
예 10. 컴퓨터 판독가능 저장 매체는, 실행될 경우, 싱크 디바이스의 하나 이상의 프로세서들로 하여금 예들 1-7 의 임의의 조합의 방법을 수행하게 하는 명령들을 저장한다.
예에 의존하여, 본 명세서에서 설명된 기법들의 임의의 특정 작동들 또는 이벤트들은 상이한 시퀀스로 수행될 수 있고, 전체적으로 부가되거나 병합되거나 또는 제거될 수도 있음 (예를 들어, 설명된 모든 작동들 또는 이벤트들이 그 기법들의 실시를 위해 필수적인 것은 아님) 이 인식되어야 한다. 더욱이, 특정 예들에 있어서, 작동들 또는 이벤트들은 순차적인 것보다는, 예를 들어, 다중-스레딩된 프로세싱, 인터럽트 프로세싱, 또는 다중의 프로세서들을 통해 동시에 수행될 수도 있다.
하나 이상의 예들에 있어서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨어에서 구현된다면, 그 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독가능 매체 상으로 저장 또는 전송되고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체들은 데이터 저장 매체들과 같은 유형의 매체에 대응하는 컴퓨터 판독가능 저장 매체들, 또는 예를 들어, 통신 프로토콜에 따라 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들을 포함할 수도 있다. 이러한 방식으로, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비-일시적인 유형의 컴퓨터 판독가능 저장 매체들 또는 (2) 신호 또는 캐리어파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체들은 본 개시에서 설명된 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 가용 매체들일 수도 있다. 컴퓨터 프로그램 제품이 컴퓨터 판독가능 매체를 포함할 수도 있다.
한정이 아닌 예로서, 그러한 컴퓨터 판독가능 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장부, 자기 디스크 저장부 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 커넥션이 컴퓨터 판독가능 매체로 적절히 명명된다. 예를 들어, 동축 케이블, 광섬유 케이블, 꼬임쌍선, 디지털 가입자 라인 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 명령들이 송신된다면, 동축 케이블, 광섬유 케이블, 꼬임쌍선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의에 포함된다. 하지만, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 커넥션들, 캐리어파들, 신호들, 또는 다른 일시적 매체들을 포함하지 않지만 대신 비-일시적인 유형의 저장 매체들로 지향됨이 이해되어야 한다. 본 명세서에서 사용된 바와 같은 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서, 디스크 (disk) 는 통상적으로 데이터를 자기적으로 재생하지만 디스크 (disc) 는 레이저들을 이용하여 데이터를 광학적으로 재생한다. 상기의 조합들이 또한, 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로프로세서들, 주문형 집적회로들 (ASIC들), 필드 프로그래밍가능 로직 어레이들 (FPGA들), 또는 다른 등가의 집적된 또는 별도의 로직 회로부와 같은 하나 이상의 프로세서들에 의해 실행될 수도 있다. 이에 따라, 본 명세서에서 사용된 바와 같은 용어 "프로세서" 는 본 명세서에서 설명된 기법들의 구현에 적합한 전술한 구조 또는 임의의 다른 구조 중 임의의 구조를 지칭할 수도 있다. 부가적으로, 일부 양태들에 있어서, 본 명세서에서 설명된 기능은 인코딩 및 디코딩을 위해 구성되거나 또는 결합된 코덱에서 통합된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 그 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
본 개시의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (예를 들어, 칩 세트) 를 포함하여 매우 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들 또는 유닛들이 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시에서 설명되지만, 반드시 상이한 하드웨어 유닛들에 의한 실현을 요구하지는 않는다. 오히려, 상기 설명된 바와 같이, 다양한 유닛들은 적합한 소프트웨어 및/또는 펌웨어와 함께 상기 설명된 바와 같은 하나 이상의 프로세서들을 포함하여 코덱 하드웨어 유닛에서 결합되거나 또는 상호운용식 하드웨어 유닛들의 집합에 의해 제공될 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.
Claims (29)
- 비디오 데이터를 프로세싱하기 위한 방법으로서,
싱크 디바이스에 의해 및 소스 디바이스로부터, 오리지널 비디오 데이터를 렌더링하도록 실행가능한 하나 이상의 그래픽 커맨드 토큰들을 수신하는 단계;
상기 싱크 디바이스에 의해, 상기 오리지널 비디오 데이터와는 상이한 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 상기 그래픽 커맨드 토큰들을 수정하는 단계; 및
상기 싱크 디바이스에 동작가능하게 접속된 디스플레이에서의 프리젠테이션을 위해, 상기 수정된 비디오 데이터를 출력하는 단계를 포함하는, 비디오 데이터를 프로세싱하기 위한 방법. - 제 1 항에 있어서,
상기 그래픽 커맨드 토큰들을 수신하는 단계는,
상기 소스 디바이스로부터 상기 그래픽 커맨드 토큰들을 무선으로 수신하는 단계를 포함하는, 비디오 데이터를 프로세싱하기 위한 방법. - 제 1 항에 있어서,
상기 싱크 디바이스에 의해 및 상기 소스 디바이스로부터, 하나 이상의 텍스처 엘리먼트들을 수신하는 단계로서, 수신된 상기 하나 이상의 그래픽 커맨드 토큰들은 수신된 상기 하나 이상의 텍스처 엘리먼트들에 기초하여 오리지널 데이터를 렌더링하도록 실행가능한, 상기 하나 이상의 텍스처 엘리먼트들을 수신하는 단계; 및
수신된 상기 텍스처 엘리먼트들 중 하나 이상을 하나 이상의 수신된 텍스처 엘리먼트들과는 상이한 하나 이상의 대체 텍스처 엘리먼트들로 대체하여 상기 수정된 비디오 데이터가 상기 하나 이상의 대체 텍스처 엘리먼트들에 기초하게 하는 단계를 더 포함하는, 비디오 데이터를 프로세싱하기 위한 방법. - 제 1 항에 있어서,
상기 오리지널 비디오 데이터는 제 1 뷰포인트로부터의 3차원 (3D) 오브젝트의 표현을 포함하고,
상기 그래픽 커맨드 토큰들을 수정하는 단계는
상기 수정된 비디오 데이터가 상기 제 1 뷰포인트와는 상이한 제 2 뷰포인트로부터의 3D 오브젝트의 표현을 포함하도록 상기 그래픽 커맨드 토큰들을 수정하는 단계를 포함하는, 비디오 데이터를 프로세싱하기 위한 방법. - 제 1 항에 있어서,
상기 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 상기 그래픽 커맨드 토큰들을 수정하는 단계는 제 1 수정된 비디오 데이터를 렌더링하도록 실행가능한 제 1 수정된 그래픽 커맨드 토큰들을 생성하기 위해 상기 그래픽 커맨드 토큰들을 수정하는 단계를 포함하고,
상기 수정된 비디오 데이터를 출력하는 단계는 상기 디스플레이의 제 1 부분에서의 프리젠테이션을 위해 상기 제 1 수정된 비디오 데이터를 출력하는 단계를 포함하고,
상기 비디오 데이터를 프로세싱하기 위한 방법은,
상기 오리지널 비디오 데이터 및 상기 제 1 수정된 비디오 데이터와는 상이한 제 2 수정된 비디오 데이터를 렌더링하도록 실행가능한 제 2 수정된 그래픽 커맨드 토큰들을 생성하기 위해 상기 그래픽 커맨드 토큰들을 수정하는 단계; 및
상기 제 1 부분과는 상이한 상기 디스플레이의 제 2 부분에서의 프리젠테이션을 위해 상기 제 2 수정된 비디오 데이터를 출력하는 단계를 더 포함하는, 비디오 데이터를 프로세싱하기 위한 방법. - 제 1 항에 있어서,
상기 수정된 그래픽 커맨드 토큰들을 생성하는 것은
상기 수정된 비디오 데이터가 사진 필터로 프로세싱되는 외형으로 렌더링되도록 상기 수정된 그래픽 커맨드 토큰들을 생성하는 것을 포함하는, 비디오 데이터를 프로세싱하기 위한 방법. - 제 1 항에 있어서,
상기 그래픽 커맨드 토큰들을 수정하는 단계는 상기 그래픽 커맨드 토큰들을 실시간으로 수정하는 단계를 포함하는, 비디오 데이터를 프로세싱하기 위한 방법. - 싱크 디바이스로서,
소스 디바이스로부터, 오리지널 비디오 데이터를 렌더링하도록 실행가능한 하나 이상의 그래픽 커맨드 토큰들을 수신하도록 구성된 통신 유닛; 및
하나 이상의 프로세서들을 포함하고,
상기 하나 이상의 프로세서들은,
수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 상기 그래픽 커맨드 토큰들을 수정하고; 그리고
상기 싱크 디바이스에 동작가능하게 접속된 디스플레이에서의 프리젠테이션을 위해, 상기 수정된 비디오 데이터를 출력하도록
구성되는, 싱크 디바이스. - 제 8 항에 있어서,
상기 그래픽 커맨드 토큰들을 수신하기 위하여, 상기 통신 유닛은,
상기 소스 디바이스로부터 상기 그래픽 커맨드 토큰들을 무선으로 수신하도록 구성되는, 싱크 디바이스. - 제 8 항에 있어서,
상기 통신 유닛은 추가로, 하나 이상의 텍스처 엘리먼트들을 수신하도록 구성되고,
수신된 상기 하나 이상의 그래픽 커맨드 토큰들은 수신된 상기 하나 이상의 텍스처 엘리먼트들에 기초하여 오리지널 데이터를 렌더링하도록 실행가능하고,
상기 하나 이상의 프로세서들은 추가로,
수신된 상기 텍스처 엘리먼트들 중 하나 이상을 하나 이상의 수신된 텍스처 엘리먼트들과는 상이한 하나 이상의 대체 텍스처 엘리먼트들로 대체하여 상기 수정된 비디오 데이터가 상기 하나 이상의 대체 텍스처 엘리먼트들에 기초하게 하도록 구성되는, 싱크 디바이스. - 제 8 항에 있어서,
상기 오리지널 비디오 데이터는 제 1 뷰포인트로부터의 3차원 (3D) 오브젝트의 표현을 포함하고,
상기 그래픽 커맨드 토큰들을 수정하기 위하여, 상기 하나 이상의 프로세서들은,
상기 수정된 비디오 데이터가 상기 제 1 뷰포인트와는 상이한 제 2 뷰포인트로부터의 3D 오브젝트의 표현을 포함하도록 상기 그래픽 커맨드 토큰들을 수정하도록 구성되는, 싱크 디바이스. - 제 8 항에 있어서,
상기 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 상기 그래픽 커맨드 토큰들을 수정하기 위하여, 상기 하나 이상의 프로세서들은 제 1 수정된 비디오 데이터를 렌더링하도록 실행가능한 제 1 수정된 그래픽 커맨드 토큰들을 생성하기 위해 상기 그래픽 커맨드 토큰들을 수정하도록 구성되고,
상기 수정된 비디오 데이터를 출력하기 위하여, 상기 하나 이상의 프로세서들은 상기 디스플레이의 제 1 부분에서의 프리젠테이션을 위해 상기 제 1 수정된 비디오 데이터를 출력하도록 구성되고,
상기 하나 이상의 프로세서들은 추가로,
상기 오리지널 비디오 데이터 및 상기 제 1 수정된 비디오 데이터와는 상이한 제 2 수정된 비디오 데이터를 렌더링하도록 실행가능한 제 2 수정된 그래픽 커맨드 토큰들을 생성하기 위해 상기 그래픽 커맨드 토큰들을 수정하고; 그리고
상기 제 1 부분과는 상이한 상기 디스플레이의 제 2 부분에서의 프리젠테이션을 위해 상기 제 2 수정된 비디오 데이터를 출력하도록
구성되는, 싱크 디바이스. - 제 8 항에 있어서,
상기 수정된 그래픽 커맨드 토큰들을 생성하기 위하여, 상기 하나 이상의 프로세서들은,
상기 수정된 비디오 데이터가 사진 필터로 프로세싱되는 외형으로 렌더링되도록 상기 수정된 그래픽 커맨드 토큰들을 생성하도록 구성되는, 싱크 디바이스. - 제 8 항에 있어서,
상기 그래픽 커맨드 토큰들을 수정하기 위하여, 상기 하나 이상의 프로세서들은 상기 그래픽 커맨드 토큰들을 실시간으로 수정하도록 구성되는, 싱크 디바이스. - 제 8 항에 있어서,
명령들을 저장하는 메모리를 더 포함하고,
상기 명령들은, 실행될 경우,
상기 그래픽 커맨드 토큰들을 수정하고; 그리고
상기 수정된 비디오 데이터를 출력하도록
상기 하나 이상의 프로세서들을 구성하는, 싱크 디바이스. - 싱크 디바이스로서,
소스 디바이스로부터, 오리지널 비디오 데이터를 렌더링하도록 실행가능한 하나 이상의 그래픽 커맨드 토큰들을 수신하는 수단;
상기 오리지널 비디오 데이터와는 상이한 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 상기 그래픽 커맨드 토큰들을 수정하는 수단; 및
상기 싱크 디바이스에 동작가능하게 접속된 디스플레이에서의 프리젠테이션을 위해, 상기 수정된 비디오 데이터를 출력하는 수단을 포함하는, 싱크 디바이스. - 제 16 항에 있어서,
상기 그래픽 커맨드 토큰들을 수신하는 수단은,
상기 소스 디바이스로부터 상기 그래픽 커맨드 토큰들을 무선으로 수신하는 수단을 포함하는, 싱크 디바이스. - 제 16 항에 있어서,
상기 소스 디바이스로부터, 하나 이상의 텍스처 엘리먼트들을 수신하는 수단으로서, 수신된 상기 하나 이상의 그래픽 커맨드 토큰들은 수신된 상기 하나 이상의 텍스처 엘리먼트들에 기초하여 오리지널 데이터를 렌더링하도록 실행가능한, 상기 하나 이상의 텍스처 엘리먼트들을 수신하는 수단; 및
수신된 상기 텍스처 엘리먼트들 중 하나 이상을 하나 이상의 수신된 텍스처 엘리먼트들과는 상이한 하나 이상의 대체 텍스처 엘리먼트들로 대체하여 상기 수정된 비디오 데이터가 상기 하나 이상의 대체 텍스처 엘리먼트들에 기초하게 하는 수단을 더 포함하는, 싱크 디바이스. - 제 16 항에 있어서,
상기 오리지널 비디오 데이터는 제 1 뷰포인트로부터의 3차원 (3D) 오브젝트의 표현을 포함하고,
상기 그래픽 커맨드 토큰들을 수정하는 수단은
상기 수정된 비디오 데이터가 상기 제 1 뷰포인트와는 상이한 제 2 뷰포인트로부터의 3D 오브젝트의 표현을 포함하도록 상기 그래픽 커맨드 토큰들을 수정하는 수단을 포함하는, 싱크 디바이스. - 제 16 항에 있어서,
상기 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 상기 그래픽 커맨드 토큰들을 수정하는 수단은 제 1 수정된 비디오 데이터를 렌더링하도록 실행가능한 제 1 수정된 그래픽 커맨드 토큰들을 생성하기 위해 상기 그래픽 커맨드 토큰들을 수정하는 수단을 포함하고,
상기 수정된 비디오 데이터를 출력하는 수단은 상기 디스플레이의 제 1 부분에서의 프리젠테이션을 위해 상기 제 1 수정된 비디오 데이터를 출력하는 수단을 포함하고,
상기 싱크 디바이스는,
상기 오리지널 비디오 데이터 및 상기 제 1 수정된 비디오 데이터와는 상이한 제 2 수정된 비디오 데이터를 렌더링하도록 실행가능한 제 2 수정된 그래픽 커맨드 토큰들을 생성하기 위해 상기 그래픽 커맨드 토큰들을 수정하는 수단; 및
상기 제 1 부분과는 상이한 상기 디스플레이의 제 2 부분에서의 프리젠테이션을 위해 상기 제 2 수정된 비디오 데이터를 출력하는 수단을 더 포함하는, 싱크 디바이스. - 제 16 항에 있어서,
상기 수정된 그래픽 커맨드 토큰들을 생성하는 수단은,
상기 수정된 비디오 데이터가 사진 필터로 프로세싱되는 외형으로 렌더링되도록 상기 수정된 그래픽 커맨드 토큰들을 생성하는 수단을 포함하는, 싱크 디바이스. - 제 16 항에 있어서,
상기 그래픽 커맨드 토큰들을 수정하는 수단은 상기 그래픽 커맨드 토큰들을 실시간으로 수정하는 수단을 포함하는, 싱크 디바이스. - 명령들을 저장하는 컴퓨터 판독가능 저장 매체로서,
상기 명령들은, 실행될 경우, 싱크 디바이스의 하나 이상의 프로세서들로 하여금
소스 디바이스로부터, 오리지널 비디오 데이터를 렌더링하도록 실행가능한 하나 이상의 그래픽 커맨드 토큰들을 수신하게 하고;
상기 오리지널 비디오 데이터와는 상이한 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 상기 그래픽 커맨드 토큰들을 수정하게 하고; 그리고
상기 싱크 디바이스에 동작가능하게 접속된 디스플레이에서의 프리젠테이션을 위해, 상기 수정된 비디오 데이터를 출력하게 하는, 컴퓨터 판독가능 저장 매체. - 제 23 항에 있어서,
상기 하나 이상의 프로세서들로 하여금 상기 그래픽 커맨드 토큰들을 수신하게 하는 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 소스 디바이스로부터 상기 그래픽 커맨드 토큰들을 무선으로 수신하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체. - 제 23 항에 있어서,
상기 하나 이상의 프로세서들로 하여금
상기 소스 디바이스로부터, 하나 이상의 텍스처 엘리먼트들을 수신하게 하는 것으로서, 수신된 상기 하나 이상의 그래픽 커맨드 토큰들은 수신된 상기 하나 이상의 텍스처 엘리먼트들에 기초하여 오리지널 데이터를 렌더링하도록 실행가능한, 상기 하나 이상의 텍스처 엘리먼트들을 수신하게 하고; 그리고
수신된 상기 텍스처 엘리먼트들 중 하나 이상을 하나 이상의 수신된 텍스처 엘리먼트들과는 상이한 하나 이상의 대체 텍스처 엘리먼트들로 대체하여 상기 수정된 비디오 데이터가 상기 하나 이상의 대체 텍스처 엘리먼트들에 기초하게 하는
명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체. - 제 23 항에 있어서,
상기 오리지널 비디오 데이터는 제 1 뷰포인트로부터의 3차원 (3D) 오브젝트의 표현을 포함하고,
상기 하나 이상의 프로세서들로 하여금 상기 그래픽 커맨드 토큰들을 수정하게 하는 명령들은 상기 하나 이상의 프로세서들로 하여금
상기 수정된 비디오 데이터가 상기 제 1 뷰포인트와는 상이한 제 2 뷰포인트로부터의 3D 오브젝트의 표현을 포함하도록 상기 그래픽 커맨드 토큰들을 수정하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체. - 제 23 항에 있어서,
상기 하나 이상의 프로세서들로 하여금 수정된 비디오 데이터를 렌더링하도록 실행가능한 수정된 그래픽 커맨드 토큰들을 생성하기 위해 상기 그래픽 커맨드 토큰들을 수정하게 하는 명령들은 상기 하나 이상의 프로세서들로 하여금 제 1 수정된 비디오 데이터를 렌더링하도록 실행가능한 제 1 수정된 그래픽 커맨드 토큰들을 생성하기 위해 상기 그래픽 커맨드 토큰들을 수정하게 하는 명령들을 포함하고,
상기 하나 이상의 프로세서들로 하여금 상기 수정된 비디오 데이터를 출력하게 하는 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 디스플레이의 제 1 부분에서의 프리젠테이션을 위해 상기 제 1 수정된 비디오 데이터를 출력하게 하는 명령들을 포함하고,
상기 하나 이상의 프로세서들로 하여금
상기 오리지널 비디오 데이터 및 상기 제 1 수정된 비디오 데이터와는 상이한 제 2 수정된 비디오 데이터를 렌더링하도록 실행가능한 제 2 수정된 그래픽 커맨드 토큰들을 생성하기 위해 상기 그래픽 커맨드 토큰들을 수정하게 하고; 그리고
상기 제 1 부분과는 상이한 상기 디스플레이의 제 2 부분에서의 프리젠테이션을 위해 상기 제 2 수정된 비디오 데이터를 출력하게 하는
명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체. - 제 23 항에 있어서,
상기 하나 이상의 프로세서들로 하여금 상기 수정된 그래픽 커맨드 토큰들을 생성하게 하는 명령들은 상기 하나 이상의 프로세서들로 하여금
상기 수정된 비디오 데이터가 사진 필터로 프로세싱되는 외형으로 렌더링되도록 상기 수정된 그래픽 커맨드 토큰들을 생성하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체. - 제 23 항에 있어서,
상기 하나 이상의 프로세서들로 하여금 상기 그래픽 커맨드 토큰들을 수정하게 하는 명령들은 상기 하나 이상의 프로세서들로 하여금 상기 그래픽 커맨드 토큰들을 실시간으로 수정하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/845,082 US9911175B2 (en) | 2015-09-03 | 2015-09-03 | Modification of graphical command tokens |
US14/845,082 | 2015-09-03 | ||
PCT/US2016/046042 WO2017039970A1 (en) | 2015-09-03 | 2016-08-08 | Modification of graphical command tokens |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180039730A true KR20180039730A (ko) | 2018-04-18 |
KR101882164B1 KR101882164B1 (ko) | 2018-07-25 |
Family
ID=56802672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187009193A KR101882164B1 (ko) | 2015-09-03 | 2016-08-08 | 그래픽 커맨드 토큰들의 수정 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9911175B2 (ko) |
EP (1) | EP3345084A1 (ko) |
JP (1) | JP6395971B1 (ko) |
KR (1) | KR101882164B1 (ko) |
CN (1) | CN108027715B (ko) |
WO (1) | WO2017039970A1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11405657B1 (en) * | 2021-05-04 | 2022-08-02 | International Business Machines Corporation | Remote virtual reality viewing of an event using crowdsourcing |
JP7088400B1 (ja) | 2021-12-22 | 2022-06-21 | 凸版印刷株式会社 | コンテンツ管理システム、コンテンツ管理方法、及びプログラム |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6222558B1 (en) * | 1990-11-20 | 2001-04-24 | David A. Berg | System and method for efficiently transmitting and processing object information between and among a plurality of networked computers |
US6263101B1 (en) * | 1995-09-01 | 2001-07-17 | Cerulean Colorization Llc | Filtering in picture colorization |
US20060253245A1 (en) * | 2005-04-18 | 2006-11-09 | Cera Christopher D | Data-driven 3D traffic views with the view based on user-selected start and end geographical locations |
US20110292181A1 (en) * | 2008-04-16 | 2011-12-01 | Canesta, Inc. | Methods and systems using three-dimensional sensing for user interaction with applications |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8745173B1 (en) | 2011-12-30 | 2014-06-03 | hopTo Inc. | Client computing system for and method of receiving cross-platform remote access to 3D graphics applications |
WO1998014906A1 (fr) * | 1996-10-02 | 1998-04-09 | Nippon Telegraph And Telephone Corporation | Procede et appareil d'affichage graphique de structure hierarchique |
US7027062B2 (en) | 2004-02-27 | 2006-04-11 | Nvidia Corporation | Register based queuing for texture requests |
US8924998B2 (en) * | 2007-11-16 | 2014-12-30 | Thomson Licensing | System and method for session management of streaming media |
JP5773608B2 (ja) * | 2010-10-16 | 2015-09-02 | キヤノン株式会社 | 映像配信装置、撮像装置、映像配信システム、映像配信方法、映像配信プログラム |
CA2824287C (en) * | 2011-01-21 | 2018-07-03 | Qualcomm Incorporated | User input back channel for wireless displays |
US8964783B2 (en) | 2011-01-21 | 2015-02-24 | Qualcomm Incorporated | User input back channel for wireless displays |
US9503771B2 (en) | 2011-02-04 | 2016-11-22 | Qualcomm Incorporated | Low latency wireless display for graphics |
US8674957B2 (en) | 2011-02-04 | 2014-03-18 | Qualcomm Incorporated | User input device for wireless back channel |
US9256408B2 (en) | 2012-01-20 | 2016-02-09 | Qualcomm Incorporated | Optimizing texture commands for graphics processing unit |
US8996762B2 (en) * | 2012-02-28 | 2015-03-31 | Qualcomm Incorporated | Customized buffering at sink device in wireless display system based on application awareness |
JP5875463B2 (ja) * | 2012-05-21 | 2016-03-02 | キヤノン株式会社 | 撮像装置、マスク画像設定方法、および、プログラム |
US9214005B2 (en) * | 2012-12-18 | 2015-12-15 | Google Technology Holdings LLC | Methods and systems for overriding graphics commands |
US20140333639A1 (en) | 2013-05-13 | 2014-11-13 | Qnx Software Systems Limited | System and method for forwarding a graphics command stream |
-
2015
- 2015-09-03 US US14/845,082 patent/US9911175B2/en active Active
-
2016
- 2016-08-08 CN CN201680050630.7A patent/CN108027715B/zh active Active
- 2016-08-08 WO PCT/US2016/046042 patent/WO2017039970A1/en active Application Filing
- 2016-08-08 KR KR1020187009193A patent/KR101882164B1/ko active IP Right Grant
- 2016-08-08 EP EP16757763.4A patent/EP3345084A1/en active Pending
- 2016-08-08 JP JP2018507714A patent/JP6395971B1/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6222558B1 (en) * | 1990-11-20 | 2001-04-24 | David A. Berg | System and method for efficiently transmitting and processing object information between and among a plurality of networked computers |
US6263101B1 (en) * | 1995-09-01 | 2001-07-17 | Cerulean Colorization Llc | Filtering in picture colorization |
US20060253245A1 (en) * | 2005-04-18 | 2006-11-09 | Cera Christopher D | Data-driven 3D traffic views with the view based on user-selected start and end geographical locations |
US20110292181A1 (en) * | 2008-04-16 | 2011-12-01 | Canesta, Inc. | Methods and systems using three-dimensional sensing for user interaction with applications |
Also Published As
Publication number | Publication date |
---|---|
CN108027715B (zh) | 2019-05-28 |
JP2018534648A (ja) | 2018-11-22 |
CN108027715A (zh) | 2018-05-11 |
KR101882164B1 (ko) | 2018-07-25 |
EP3345084A1 (en) | 2018-07-11 |
WO2017039970A1 (en) | 2017-03-09 |
US20170069053A1 (en) | 2017-03-09 |
US9911175B2 (en) | 2018-03-06 |
JP6395971B1 (ja) | 2018-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111399956B (zh) | 应用于显示设备的内容展示方法、装置和电子设备 | |
US10257510B2 (en) | Media encoding using changed regions | |
EP2975846B1 (en) | Image frame transmission method, mobile terminal and smart television | |
JP2016536710A (ja) | デスクトップクラウドベースのメディア制御方法およびデバイス | |
CN105518614A (zh) | 用于多屏幕应用程序的屏幕录制 | |
CN105874807B (zh) | 用于在电视设备上对Web内容远程渲染的方法、系统和介质 | |
US10191709B2 (en) | Display apparatus configured to determine a processing mode to transfer image contents to another display apparatus | |
US20160063964A1 (en) | Streaming video data in the graphics domain | |
CN110675465A (zh) | 用于生成图像的方法和装置 | |
CN110782387A (zh) | 图像处理方法、装置、图像处理器及电子设备 | |
JP6395971B1 (ja) | グラフィカルコマンドトークンの修正 | |
CN116774961A (zh) | 无线可编程媒体处理系统 | |
US20170070740A1 (en) | Encoding techniques for display of text and other high-frequency content | |
KR102397438B1 (ko) | 디스플레이 장치 및 이의 제어 방법 | |
TWI600312B (zh) | 顯示介面帶寬調制 | |
CN110427584A (zh) | 页面生成方法、装置、电子设备及计算机可读存储介质 | |
CN107077747B (zh) | 远程显示的图形命令压缩 | |
US10025550B2 (en) | Fast keyboard for screen mirroring | |
US9361860B2 (en) | Display apparatus, image post-processing apparatus and method for image post-processing of contents | |
TWI539795B (zh) | 使用變化區域的媒體編碼 | |
CN111435995A (zh) | 用于生成动态图片的方法、装置和系统 | |
CN113362224A (zh) | 图像处理方法、装置、电子设备及可读存储介质 | |
CN118870016A (zh) | 视频解码方法、装置、电子设备和计算机可读介质 | |
KR20140127601A (ko) | 3차원 라이팅 처리장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |