KR20210018353A - A method, apparatus, and computer readable medium for sharing a desktop via a web socket connection within a networked collaboration workspace. - Google Patents

A method, apparatus, and computer readable medium for sharing a desktop via a web socket connection within a networked collaboration workspace. Download PDF

Info

Publication number
KR20210018353A
KR20210018353A KR1020207038083A KR20207038083A KR20210018353A KR 20210018353 A KR20210018353 A KR 20210018353A KR 1020207038083 A KR1020207038083 A KR 1020207038083A KR 20207038083 A KR20207038083 A KR 20207038083A KR 20210018353 A KR20210018353 A KR 20210018353A
Authority
KR
South Korea
Prior art keywords
local
computing device
desktop
local computing
streaming object
Prior art date
Application number
KR1020207038083A
Other languages
Korean (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
Priority claimed from US15/995,878 external-priority patent/US11412012B2/en
Application filed by 리 마고 엘티디 filed Critical 리 마고 엘티디
Publication of KR20210018353A publication Critical patent/KR20210018353A/en

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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Abstract

네트워킹된 협업 워크스페이스(collaboration workspace) 내에서 웹 소켓 연결을 통해 데스크탑을 공유하는 시스템, 방법 및 컴퓨터 판독 가능 매체로서, 웹 소켓 연결을 통해 복수의 컴퓨팅 기기 상의 복수의 참가자에게 접근 가능하고 서버에서 호스팅되는, 협업 워크스페이스의 리프리젠테이션(representation)을 전송하는 단계, 상기 협업 워크스페이스 내의 상기 로컬 컴퓨팅 기기의 로컬 데스크탑의 적어도 하나의 부분을 공유하기 위한 요청 및 상기 협업 워크스페이스의 상기 리프리젠테이션 내 하나의 영역의 선택을 수신하는 단계, 상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 비디오 스트림을 출력하도록 구성된 스트리밍 객체를 생성하는 단계, 및 상기 웹 소켓 연결을 통해 하나 이상의 커맨드(command)(상기 하나 이상의 커맨드는, 상기 스트리밍 객체 및 상기 선택된 영역에 대응하는 정보를 포함하고 상기 서버로 하여금 상기 스트리밍 객체를 상기 선택된 영역에서 상기 협업 워크스페이스 내로 삽입하도록 하게끔 구성됨)를 상기 서버로 전송하는 단계를 포함한다.A system, method, and computer-readable medium for sharing a desktop via a web socket connection within a networked collaboration workspace, accessible to multiple participants on multiple computing devices via a web socket connection and hosted on a server Transmitting a representation of the collaboration workspace, a request to share at least one portion of the local desktop of the local computing device in the collaboration workspace, and within the representation of the collaboration workspace Receiving a selection of one region, generating a streaming object configured to output a video stream of the at least one portion of the local desktop of the local computing device, and one or more commands through the web socket connection ) (The one or more commands include information corresponding to the streaming object and the selected area, and are configured to cause the server to insert the streaming object into the collaboration workspace in the selected area) to the server Includes steps.

Description

네트워킹된 협업 워크스페이스(collaboration workspace) 내에서 웹 소켓 연결을 통해 데스크탑을 공유하기 위한 방법, 장치, 및 컴퓨터 판독 가능 매체A method, apparatus, and computer readable medium for sharing a desktop via a web socket connection within a networked collaboration workspace.

본 발명은 네트워킹된 협업 워크스페이스에서 웹 소켓 연결을 통해 크로핑된 이미지를 전파하기 위한 방법, 기기, 및 컴퓨터 판독 가능 매체에 관한 것이다.The present invention relates to a method, apparatus, and computer-readable medium for propagating cropped images over a web socket connection in a networked collaborative workspace.

운영 체제 내에서 실행되는 운영 체제 및 애플리케이션은 외부 하드웨어 장치를 활용하여, 사용자가 프로그램에 입력을 제공하고 사용자에게 출력을 제공할 수 있게 한다. 외부 하드웨어 장치의 공통적인 예로는 키보드, 컴퓨터 마우스, 마이크, 및 외부 스피커가 있다. 이들 외부 하드웨어 장치는 드라이버의 사용을 통해, 운영 체제와 인터페이싱하며, 이는 특정 하드웨어 장치에 의해 사용되는 하드웨어 커맨드(Hardware Command)와 운영 체제 사이에서 인터페이싱(Interface)하도록 구성된 특화된 소프트웨어 프로그램이다.Operating systems and applications running within the operating system utilize external hardware devices to enable the user to provide input to the program and output to the user. Common examples of external hardware devices are keyboards, computer mice, microphones, and external speakers. These external hardware devices interface with an operating system through the use of a driver, which is a specialized software program configured to interface between the operating system and a hardware command used by a specific hardware device.

애플리케이션은 때때로, 소정 하드웨어 장치와 인터페이싱하도록 설계될 것이다. 예를 들어, 음성-텍스트 워드 프로세싱 애플리케이션이 마이크를 포함하는 오디오 헤드셋과 인터페이싱하도록 설계될 수 있다. 이 경우에 있어서, 애플리케이션은 특별히, 음성 커맨드를 수신하도록, 음성 인식을 수행하도록, 인식된 단어를 텍스트 콘텐츠로 변환하도록, 그리고 텍스트 콘텐츠를 문서에 출력하도록 구성되어야 한다. 이 기능은 전형적으로, 다양한 소프트웨어 구성 요소들 사이의 정의된 통신 방법들의 세트인 애플리케이션의 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)에서 구현될 것이다. 음성 인식 애플리케이션의 예에서, API는 하드웨어 장치(마이크) 자체와 인터페이싱하는 일을 담당하는 드라이버 상의 소프트웨어와 애플리케이션 프로그램 사이의 인터페이스를 포함한다.Applications will sometimes be designed to interface with certain hardware devices. For example, a speech-to-text word processing application can be designed to interface with an audio headset that includes a microphone. In this case, the application must be specifically configured to receive a voice command, to perform speech recognition, to convert the recognized word into text content, and to output text content to a document. This functionality will typically be implemented in an application's Application Programming Interface (API), which is a defined set of communication methods between various software components. In the example of a speech recognition application, the API includes an interface between the application program and software on the driver responsible for interfacing with the hardware device (microphone) itself.

특화된 하드웨어 장치를 활용하는 기존 소프트웨어가 갖는 한 가지 문제는, 애플리케이션 또는 운영 체제 소프트웨어 자체가 맞춰져야 하고, 특히, 하드웨어 장치를 활용하기 위해 설계되어야 한다는 것이다. 이러한 맞춤은, 하드웨어 장치가 애플리케이션에 의해 그에 대해 정의된 범주를 초과할 수 없고, 그것이 사용되도록 설계되었던 특정 애플리케이션 이외의 콘텍스트(Context)에 대해 활용될 수 없다는 것을 의미한다. 예를 들어, 음성-텍스트 프로세싱 애플리케이션의 사용자는, 다른 애플리케이션 프로그램 또는 운영 체제가 특별히, 마이크를 통해 수신된 음성 커맨드를 활용하도록 설계되지 않았다면, 다른 애플리케이션 프로그램 또는 운영 체제 내의 다른 구성 요소를 조작할 수 없다.One problem with existing software that utilizes specialized hardware devices is that the application or operating system software itself must be tailored, and in particular, must be designed to utilize the hardware device. This fit means that the hardware device cannot exceed the criteria defined for it by the application and cannot be utilized for a context other than the specific application for which it was designed to be used. For example, a user of a speech-to-text processing application can manipulate other application programs or other components within the operating system, unless the other application program or operating system is specifically designed to utilize voice commands received through a microphone. none.

도 1은 사용자 입력을 위해 결합된 하드웨어 장치를 활용하는 시스템의 기존 아키텍처(Architecture)의 예를 도시한다. 도 1의 운영 체제(100A)는 애플리케이션(101A, 102A)을 실행시키는 것을 포함하며, 각각의 애플리케이션은 그들 자신의 API(101B) 및 API(102B)를 각각 갖는다. 운영 체제(100A)는 또한, 그 자신의 API(100B)뿐 아니라, 하드웨어 장치(100D, 101D, 102D)와 인터페이싱하도록 구성된 특화된 드라이버(100C, 101C, 102C)도 갖는다.1 shows an example of an existing architecture of a system that utilizes a combined hardware device for user input. The operating system 100A of FIG. 1 includes running applications 101A and 102A, each application having its own API 101B and API 102B, respectively. Operating system 100A also has its own API 100B, as well as specialized drivers 100C, 101C, and 102C configured to interface with hardware devices 100D, 101D, and 102D.

도 1에 도시된 바와 같이, 애플리케이션 API(101B)는, 자체가 하드웨어 장치(101D)와 인터페이싱하는 드라이버(101C)와 인터페이싱하도록 구성된다. 유사하게, 애플리케이션 API(102B)는, 자체가 하드웨어 장치(102D)와 인터페이싱하는 드라이버(102C)와 인터페이싱하도록 구성된다. 운영 체제 레벨에서, 운영 체제 API(100B)는, 자체가 하드웨어 장치(100D)와 인터페이싱하는 드라이버(100C)와 인터페이싱하도록 구성된다.As shown in Fig. 1, the application API 101B is configured to interface with a driver 101C that itself interfaces with the hardware device 101D. Similarly, application API 102B is configured to interface with driver 102C, which itself interfaces with hardware device 102D. At the operating system level, the operating system API 100B is configured to interface with the driver 100C, which itself interfaces with the hardware device 100D.

도 1에 도시된 시스템의 아키텍처는 소정 애플리케이션 또는 운영 체제 콘텍스트 이외의 하드웨어 장치를 활용하는 사용자의 능력을 제한한다. 예를 들어, 사용자는 애플리케이션(102A)에 입력을 제공하기 위해 하드웨어 장치(101D)를 활용할 수 없고, 애플리케이션(101A)에 또는 운영 체제(100A)에 입력을 제공하기 위해 하드웨어 장치(102D)를 활용할 수 없다.The architecture of the system shown in Figure 1 limits a user's ability to utilize hardware devices other than certain application or operating system contexts. For example, the user cannot utilize hardware device 101D to provide input to application 102A, but utilize hardware device 102D to provide input to application 101A or to operating system 100A. Can't.

따라서, 다수의 소프트웨어 콘텍스트에서 하드웨어 장치의 활용을 허용하는 하드웨어-소프트웨어 인터페이스에서 개선이 필요하다.Thus, there is a need for improvements in hardware-software interfaces that allow the use of hardware devices in multiple software contexts.

본 발명은 하드웨어 장치에 사용되는 이전 하드웨어-소프트웨어 인터페이스와 연관된 문제를 해결하는 방법, 기기, 및 컴퓨터 판독 가능 매체를 제공하는 것을 목적으로 한다. 구체적으로, 본 발명은 사용자가 다양한 소프트웨어 콘텍스트(Context)에서 통신 가능하게 결합된 하드웨어 장치를 활용할 수 있게 하는 범용 하드웨어-소프트웨어 인터페이스를 개발해 제공하는 것을 다른 목적으로 한다.It is an object of the present invention to provide a method, apparatus, and computer-readable medium for solving problems associated with previous hardware-software interfaces used in hardware devices. Specifically, another object of the present invention is to develop and provide a general-purpose hardware-software interface that enables a user to utilize a hardware device communicatively coupled in various software contexts.

본 발명의 일 양태에 따르면, 네트워킹된 협업 워크스페이스(collaboration workspace) 내에서 웹 소켓(web socket) 연결을 통해 크로핑된(cropped) 이미지를 전파하는 방법에 있어서, 상기 방법은: 로컬 컴퓨팅 기기의 사용자 인터페이스 상에서, 웹 소켓 연결을 통해 복수의 컴퓨팅 기기 상의 복수의 참가자에게 접근 가능하고 서버에서 호스팅되는, 협업 워크스페이스(상기 협업 워크스페이스는 하나 이상의 이미지를 포함함)의 리프리젠테이션(representation)을 전송하는 단계; 상기 로컬 컴퓨팅 기기 상에서 실행되는 크로핑 도구에 의해, 상기 하나 이상의 이미지 내 하나의 이미지의 이미지 영역을 선택하는 사용자 입력(상기 사용자 입력은 복수의 좌표에 대응함)을 검출하는 단계; 상기 로컬 컴퓨팅 기기 상에서 실행되는 상기 크로핑 도구에 의해, 상기 로컬 컴퓨팅 기기 상에서 실행되는 투명 레이어(transparent layer)(상기 투명 레이어는, 운영 체제 또는 상기 운영 체제 상에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상과 인터페이싱하도록 구성된, API(application programming interface)를 포함함)에게 상기 복수의 좌표를 전송하는 단계; 상기 로컬 컴퓨팅 기기 상에서 실행되는 상기 투명 레이어에 의해, 상기 복수의 좌표에 적어도 부분적으로 기반한 상기 이미지 영역을 캡처하는 단계; 상기 로컬 컴퓨팅 기기 상에서 실행되는 상기 투명 레이어에 의해, 상기 선택된 이미지 영역을 상기 협업 워크스페이스 내 하나의 위치로 드래그하기 위한 제2 사용자 입력을 검출하는 단계; 및 상기 로컬 컴퓨팅 기기 상에서 실행되는 상기 투명 레이어에 의해, 상기 협업 워크스페이스를 호스팅하는 상기 서버에게 복수의 커맨드(command)(상기 복수의 커맨드는, 상기 협업 워크스페이스로부터 상기 이미지를 제거하도록 구성되고, 이에 더해 상기 이미지 영역이, 상기 위치에 적어도 부분적으로 기반하여 상기 협업 워크스페이스 내로 삽입되도록 하게끔 구성됨)를 전송하는 단계를 포함한다.According to an aspect of the present invention, in a method of propagating a cropped image through a web socket connection in a networked collaboration workspace, the method comprises: On the user interface, a representation of a collaboration workspace (the collaboration workspace contains one or more images) accessible to multiple participants on multiple computing devices via a web socket connection and hosted on a server. Transmitting; Detecting a user input (the user input corresponds to a plurality of coordinates) for selecting an image area of one image in the one or more images by a cropping tool executed on the local computing device; By the cropping tool running on the local computing device, a transparent layer running on the local computing device (the transparent layer includes at least one of an operating system or one or more applications configured to run on the operating system) Transmitting the plurality of coordinates to (including an application programming interface (API)) configured to interface; Capturing the image region based at least in part on the plurality of coordinates, by the transparent layer running on the local computing device; Detecting a second user input for dragging the selected image area to a location in the collaboration workspace by the transparent layer executed on the local computing device; And a plurality of commands to the server hosting the collaborative workspace by the transparent layer executed on the local computing device (the plurality of commands are configured to remove the image from the collaborative workspace, In addition, the image area is configured to be inserted into the collaborative workspace based at least in part on the location).

도 1은 사용자 입력을 위해 결합된 하드웨어 장치를 활용하는 시스템의 기존 아키텍처의 예를 도시한다.
도 2는 예시적인 실시예에 따른, 범용 하드웨어-소프트웨어 인터페이스를 활용하는 시스템의 아키텍처를 도시한다.
도 3은 예시적인 실시예에 따른, 범용 하드웨어-소프트웨어 인터페이스의 구현에 대한 흐름도를 도시한다.
도 4는 예시적인 실시예에 따른, 하나 이상의 하드웨어 장치에 의해 캡처된 정보가 하나 이상의 이미지를 포함할 때 시스템에 통신 가능하게 결합된 하나 이상의 하드웨어 장치에 의해 캡처된 정보에 적어도 부분적으로 기초하여 사용자 입력을 결정하기 위한 흐름도를 도시한다.
도 5a는 예시적인 실시예에 따른, 객체 인식의 예를 도시한다.
도 5b는 예시적인 실시예에 따른, 입력 위치 좌표를 결정하는 예를 도시한다.
도 6은 예시적인 실시예에 따른, 캡처된 정보가 소리 정보일 때 시스템에 통신 가능하게 결합된 하나 이상의 하드웨어 장치에 의해 캡처된 정보에 적어도 부분적으로 기초하여 사용자 입력을 결정하기 위한 흐름도를 도시한다.
도 7은 예시적인 실시예에 따른, 투명 레이어의 일부일 수 있는 툴 인터페이스(Tool Interface)를 도시한다.
도 8은 예시적인 실시예에 따른, 시스템의 일부일 수 있는 스타일러스(Stylus)의 예를 도시한다.
도 9는 예시적인 실시예에 따른, 사용자 입력에 대응하는 콘텍스트(Context)를 식별하기 위한 흐름도를 도시한다.
도 10은 예시적인 실시예에 따른, 입력 좌표를 사용하여 콘텍스트를 결정하는 예를 도시한다.
도 11은 예시적인 실시예에 따른, 사용자 입력을 투명 레이어 커맨드(Transparent Layer Command)로 변환하기 위한 흐름도를 도시한다.
도 12a는 예시적인 실시예에 따른, 선택 모드가 토글될(Toggled) 때 입력 좌표를 수신하는 예를 도시한다.
도 12b는 예시적인 실시예에 따른, 포인팅 모드가 토글될 때 입력 좌표를 수신하는 예를 도시한다.
도 12c는 예시적인 실시예에 따른, 드로잉(Drawing) 모드가 토글될 때 입력 좌표를 수신하는 예를 도시한다.
도 13은 예시적인 실시예에 따른, 입력 음성 데이터에서 식별된 하나 이상의 단어에 기초하여 결정된 투명 레이어 커맨드의 예를 도시한다.
도 14는 예시적인 실시예에 따른, 입력 음성 데이터에서 식별된 하나 이상의 단어에 기초하여 결정된 투명 레이어 커맨드의 다른 예를 도시한다.
도 15는 예시적인 실시예에 따른, 투명 레이어 상에서 하나 이상의 투명 레이어 커맨드를 실행하기 위한 흐름도를 도시한다.
도 16은 예시적인 실시예에 따른, 사용자 입력에 대응하는 새로운 커맨드를 추가하기 위한 예시적인 인터페이스를 도시한다.
도 17은 예시적인 실시예에 따른, 드로잉 인터페이스 및 그리기(Draw) 모드의 다양한 구성 요소 및 옵션을 도시한다.
도 18은 예시적인 실시예에 따른, 객체를 인식하는 데 사용되고 사용자가 터치 및 제스처를 사용하여 입력을 제공할 수 있게 하는 비디오 카메라 하드웨어 장치에 대한 캘리브레이션(Calibration) 및 설정 인터페이스를 도시한다.
도 19는 예시적인 실시예에 따른, 사용자가 인터페이스의 다양한 양태를 맞출 수 있게 하고, 입력 모드를 토글하고, 다른 변화를 이루는 일반 설정 인터페이스를 도시한다.
도 20은 예시적인 실시예에 따른, 네트워킹된 협업 워크스페이스(collaboration workspace) 내에서 웹 소켓(web socket) 연결을 통해 데스크탑을 공유하기 위한 흐름도를 도시한다.
도 21a는 예시적인 실시예에 따른, 협업 워크스페이스를 호스팅 및 전송하는 데 사용되는 네트워크 아키텍처를 도시한다.
도 21b는 예시적인 실시예에 따른, 편집을 네트워크 내의 협업 워크스페이스로 전파하기 위한 프로세스를 도시한다.
도 22는 예시적인 실시예에 따른, 협업 워크스페이스의 다수의 리프리젠테이션을 도시한다.
도 23a는 예시적인 실시예에 따른, 요청 및 하나의 영역의 선택을 수신하기 이전인 로컬 컴퓨팅 기기의 사용자 인터페이스(데스크탑)의 예를 도시한다.
도 23b는 예시적인 실시예에 따른, 요청을 수신한 이후이되 영역을 선택하기 이전인 로컬 컴퓨팅 기기의 사용자 인터페이스(데스크탑)의 예를 도시한다.
도 24a 내지 도 24c는 예시적인 실시예에 따른, 소스 선택 프로세스의 예를 도시한다.
도 25는 예시적인 실시예에 따른, 로컬 컴퓨팅 기기의 로컬 데스크탑의 적어도 하나의 부분의 비디오 스트림을 출력하도록 구성된 스트리밍 객체를 생성하기 위한 흐름도를 도시한다.
도 26은 예시적인 실시예에 따른, 로컬 컴퓨팅 기기로부터 커맨드를 전송하고 스트리밍 객체를 전파하는 프로세스를 도시한다.
도 27은 예시적인 실시예에 따른, 서버가 협업 워크스페이스 내에 스트리밍 객체를 임베딩(embed)한 후의 로컬 컴퓨팅 기기의 인터페이스의 예를 도시한다.
도 28은 예시적인 실시예에 따른, 임베딩된 스트리밍 객체를 통해 로컬 컴퓨팅 기기로부터 데스크탑 또는 데스크탑의 일부를 제어하기 위한 흐름도를 도시한다.
도 29a 내지 도 29c는 예시적인 실시예에 따른, 임베딩된 스트리밍 객체를 통해 로컬 컴퓨팅 기기로부터 데스크탑 또는 데스크탑의 일부를 제어하는 예를 도시한다.
도 30은 예시적인 실시예에 따른, 임베딩된 스트리밍 객체를 통해 원격 컴퓨팅 기기로부터 데스크탑 또는 데스크탑의 일부를 제어하기 위한 흐름도를 도시한다.
도 31a 내지 도 31c는 예시적인 실시예에 따른, 임베딩된 스트리밍 객체를 통해 원격 컴퓨팅 기기로부터 데스크탑 또는 데스크탑의 일부를 제어하는 예를 도시한다.
도 32는 개시된 방법을 실행하도록 구성된 예시적인 컴퓨팅 환경을 도시한다.
1 shows an example of an existing architecture of a system that utilizes a combined hardware device for user input.
Fig. 2 shows the architecture of a system utilizing a universal hardware-software interface, according to an exemplary embodiment.
3 shows a flow diagram for an implementation of a general purpose hardware-software interface, according to an exemplary embodiment.
4 is a user based at least in part on information captured by one or more hardware devices communicatively coupled to the system when information captured by one or more hardware devices includes one or more images, according to an exemplary embodiment. A flow chart for determining the input is shown.
Fig. 5A shows an example of object recognition, according to an exemplary embodiment.
Fig. 5B shows an example of determining input position coordinates according to an exemplary embodiment.
6 shows a flow chart for determining a user input based at least in part on information captured by one or more hardware devices communicatively coupled to the system when the captured information is sound information, according to an exemplary embodiment. .
Fig. 7 shows a Tool Interface, which may be part of a transparent layer, according to an exemplary embodiment.
8 shows an example of a stylus that may be part of a system, according to an exemplary embodiment.
Fig. 9 shows a flow chart for identifying a context corresponding to a user input, according to an exemplary embodiment.
Fig. 10 shows an example of determining a context using input coordinates, according to an exemplary embodiment.
Fig. 11 is a flow chart for converting a user input into a transparent layer command according to an exemplary embodiment.
Fig. 12A shows an example of receiving input coordinates when a selection mode is toggled, according to an exemplary embodiment.
Fig. 12B shows an example of receiving input coordinates when a pointing mode is toggled, according to an exemplary embodiment.
Fig. 12C illustrates an example of receiving input coordinates when a drawing mode is toggled, according to an exemplary embodiment.
Fig. 13 shows an example of a transparent layer command determined based on one or more words identified in input speech data, according to an exemplary embodiment.
Fig. 14 shows another example of a transparent layer command determined based on one or more words identified in input speech data, according to an exemplary embodiment.
Fig. 15 is a flow chart for executing one or more transparent layer commands on a transparent layer, according to an exemplary embodiment.
Fig. 16 shows an exemplary interface for adding a new command corresponding to a user input, according to an exemplary embodiment.
Fig. 17 shows various components and options of a drawing interface and a draw mode, according to an exemplary embodiment.
Fig. 18 shows a calibration and settings interface for a video camera hardware device that is used to recognize an object and allows a user to provide input using touches and gestures, according to an exemplary embodiment.
Fig. 19 shows a general settings interface that allows a user to customize various aspects of the interface, toggle input modes, and make other changes, according to an exemplary embodiment.
Fig. 20 shows a flow chart for sharing a desktop through a web socket connection within a networked collaboration workspace, according to an exemplary embodiment.
Fig. 21A shows a network architecture used to host and transport collaborative workspaces, according to an exemplary embodiment.
21B shows a process for propagating edits to a collaborative workspace within a network, according to an exemplary embodiment.
22 illustrates multiple representations of a collaborative workspace, according to an exemplary embodiment.
Fig. 23A shows an example of a user interface (desktop) of a local computing device prior to receiving a request and selection of one area, according to an exemplary embodiment.
Fig. 23B is a diagram showing an example of a user interface (desktop) of a local computing device after receiving a request but before selecting a region, according to an exemplary embodiment.
24A-24C show an example of a source selection process, according to an exemplary embodiment.
Fig. 25 shows a flowchart for creating a streaming object configured to output a video stream of at least one portion of a local desktop of a local computing device, according to an exemplary embodiment.
Fig. 26 shows a process of sending a command and propagating a streaming object from a local computing device, according to an exemplary embodiment.
Fig. 27 shows an example of an interface of a local computing device after a server embeds a streaming object in a collaboration workspace, according to an exemplary embodiment.
Fig. 28 shows a flow chart for controlling a desktop or a portion of a desktop from a local computing device via an embedded streaming object, according to an exemplary embodiment.
29A-29C illustrate an example of controlling a desktop or a portion of a desktop from a local computing device through an embedded streaming object, according to an exemplary embodiment.
Fig. 30 shows a flow chart for controlling a desktop or a portion of a desktop from a remote computing device via an embedded streaming object, according to an exemplary embodiment.
31A-31C illustrate an example of controlling a desktop or a portion of a desktop from a remote computing device through an embedded streaming object, according to an exemplary embodiment.
32 illustrates an example computing environment configured to perform the disclosed method.

방법, 기기, 및 컴퓨터 판독 가능 매체가 본 명세서에서 예 및 실시예로서 기술되어 있지만, 당업자는 범용 하드웨어-소프트웨어 인터페이스의 구현을 위한 방법, 기기, 및 컴퓨터 판독 가능 매체가 기술된 실시예 또는 도면으로 제한되지 않음을 인식한다. 도면 및 설명은 개시된 특정 형태로 제한되도록 의도되지 않는다는 것이 이해되어야 한다. 오히려, 그 의도는 첨부된 청구범위의 사상 및 범주 내에 있는 모든 수정물, 등가물, 및 대안물을 포괄하는 것이다. 본 명세서에서 사용되는 임의의 주제는 구조적 목적만을 위한 것이고, 설명 또는 청구범위의 범주를 제한하도록 의도되지 않는다. 본 명세서에서 사용되는 바와 같이, "할 수 있다(Can)"라는 단어는 강제의 의미(즉, 필연(Must)을 의미함)보다는 허용의 의미(즉, 잠재력을 가짐을 의미함)에서 사용된다. 유사하게, "포함하다(Include, Includes)", "포함하는(Including)"이라는 단어는 포함하지만, 이에 제한되지 않음을 의미한다.Although a method, an apparatus, and a computer-readable medium are described herein as examples and embodiments, those skilled in the art will describe a method, apparatus, and computer-readable medium for implementation of a general-purpose hardware-software interface. Recognize that you are not limited. It is to be understood that the drawings and description are not intended to be limited to the specific form disclosed. Rather, its intent is to cover all modifications, equivalents, and alternatives that fall within the spirit and scope of the appended claims. Any subject matter used herein is for structural purposes only and is not intended to limit the scope of the description or claims. As used herein, the word "can" is used in the meaning of permissive (ie, means to have potential) rather than in the sense of force (ie, means must). . Similarly, the words "Include, Includes" and "Including" are meant to include, but are not limited to.

출원인은 하드웨어 장치에 사용되는 이전 하드웨어-소프트웨어 인터페이스와 연관된 문제를 해결하는 방법, 기기, 및 컴퓨터 판독 가능 매체를 발견했다. 구체적으로, 출원인은 사용자가 다양한 소프트웨어 콘텍스트(Context)에서 통신 가능하게 결합된 하드웨어 장치를 활용할 수 있게 하는 범용 하드웨어-소프트웨어 인터페이스를 개발했다. 개시된 구현예는, 아래에서 더 상세히 기술되는 바와 같이, 특화된 가상 드라이버 및 대응하는 투명 레이어의 사용을 통해 애플리케이션 또는 운영 체제가 특정 하드웨어 장치와 인터페이싱하도록 맞춤 설계될 필요성을 제거한다.Applicants have discovered a method, apparatus, and computer-readable medium that solve problems associated with previous hardware-software interfaces used in hardware devices. Specifically, Applicants have developed a general-purpose hardware-software interface that allows a user to utilize a communicatively coupled hardware device in a variety of software contexts. The disclosed implementation eliminates the need for an application or operating system to be custom designed to interface with a specific hardware device through the use of specialized virtual drivers and corresponding transparent layers, as described in more detail below.

도 2는 예시적인 실시예에 따른, 범용 하드웨어-소프트웨어 인터페이스를 활용하는 시스템의 아키텍처를 도시한다. 도 2에 도시된 바와 같이, 운영 체제(200A)는 가상 드라이버(204)와 통신하는 투명 레이어(203)을 포함한다. 아래에서 더 상세히 설명되는 바와 같이, 투명 레이어(203)는 가상 드라이버와 운영 체제 및/또는 운영 체제 상에서 실행되는 애플리케이션(들) 사이에서 인터페이싱하도록 구성된 API이다. 이 예에서, 투명 레이어(203)는 가상 드라이버(204)와 애플리케이션(201A)의 API(201B), 애플리케이션(202A)의 API(202B), 및 운영 체제(200A)의 운영 체제 API(200B) 사이에서 인터페이싱한다.Fig. 2 shows the architecture of a system utilizing a universal hardware-software interface, according to an exemplary embodiment. As shown in FIG. 2, the operating system 200A includes a transparent layer 203 that communicates with a virtual driver 204. As described in more detail below, the transparent layer 203 is an API configured to interface between a virtual driver and an operating system and/or application(s) running on the operating system. In this example, the transparent layer 203 is between the virtual driver 204 and the API 201B of the application 201A, the API 202B of the application 202A, and the operating system API 200B of the operating system 200A. Interfacing at

투명 레이어(203)는 운영 체제 상에서 실행되는 소프트웨어 프로세스의 일부일 수 있고, 기초 사용자 인터페이스 상에 중첩되는 투명 UI 및/또는 사용자가 상호작용할 수 있는 가시적 UI 요소를 비롯한 그 자신의 사용자 인터페이스(UI) 요소를 가질 수 있다.The transparent layer 203 may be part of a software process running on an operating system, and its own user interface (UI) elements, including a transparent UI superimposed on the basic user interface and/or a visible UI element that a user can interact with. Can have

가상 드라이버(204)는 드라이버(205A, 205B)를 에뮬레이팅(Emulate)하도록 구성되는데, 이들은 하드웨어 장치(206A, 206B)와 각각 인터페이싱한다. 가상 드라이버는, 예를 들어 음성 커맨드, 사용자 인터페이스 상에서 행해진 선택, 및/또는 결합된 웹 카메라의 정면에서 사용자에 의해 행해진 제스처의 형태로 어느 가상 드라이버를 에뮬레이팅할 것에 대해 가상 드라이버에 지시하는 사용자 입력을 수신할 수 있다. 예를 들어, 연결된 하드웨어 장치 각각은 "리스닝" 모드에서 동작할 수 있고, 가상 드라이버(204) 내의 에뮬레이팅된 드라이버 각각은 특정 에뮬레이션 모드로 스위칭하기 위한 가상 드라이버로의 신호로서의 역할을 하는 초기화 신호를 검출하도록 구성될 수 있다. 예를 들어, 사용자가 "음성 커맨드 시작(Start Voice Commands)"이라고 진술하는 것은 마이크에 대응하는 드라이버를 활성화시켜서 새로운 음성 커맨드를 수신하게 할 수 있다. 유사하게, 사용자가 소정 제스처를 제공하는 것은 웹 카메라에 대응하는 드라이버를 활성화시켜서 제스처 입력 또는 터치 입력을 수신하게 할 수 있다.Virtual driver 204 is configured to emulate drivers 205A and 205B, which interface with hardware devices 206A and 206B, respectively. The virtual driver is a user input that instructs the virtual driver to emulate which virtual driver, for example, in the form of voice commands, selections made on the user interface, and/or gestures made by the user in front of the combined web camera. Can be received. For example, each of the connected hardware devices may operate in a "listening" mode, and each of the emulated drivers in the virtual driver 204 receives an initialization signal that serves as a signal to the virtual driver to switch to a specific emulation mode. It can be configured to detect. For example, stating that the user is "Start Voice Commands" can activate the driver corresponding to the microphone to receive new voice commands. Similarly, providing a predetermined gesture by a user may activate a driver corresponding to a web camera to receive a gesture input or a touch input.

가상 드라이버는 또한, 자체가 하드웨어 장치(206C)와 통신하는 네이티브 드라이버(Native Driver), 예컨대 네이티브 드라이버(205C)와 인터페이싱하도록 구성될 수 있다. 일례에서, 하드웨어 장치(206C)는 운영 체제에 의해 본래 지원되는 표준 입력 장치, 예컨대 키보드 또는 마우스일 수 있다.The virtual driver may also be configured to interface with a native driver, such as a native driver 205C, which itself communicates with the hardware device 206C. In one example, hardware device 206C may be a standard input device, such as a keyboard or mouse, that is natively supported by the operating system.

도 2에 도시된 시스템은, 애플리케이션 또는 운영 체제가 하드웨어 장치와 인터페이싱하도록 맞춰질 필요 없이, 사용자가 특정 애플리케이션 또는 운영 체제와 같은 다양한 콘텍스트 내의 임의의 결합된 하드웨어 장치를 활용할 수 있는 범용 하드웨어-소프트웨어 인터페이스의 구현을 허용한다.The system shown in Figure 2 is a general-purpose hardware-software interface that allows a user to utilize any combined hardware device within a variety of contexts, such as a particular application or operating system, without the need for an application or operating system to interface with a hardware device. Allow implementation.

예를 들어, 하드웨어 장치(206A)는 정보를 캡처할 수 있는데, 정보는 그 다음에, 드라이버(205A)를 에뮬레이팅하는 가상 드라이버(204)에 의해 수신된다. 가상 드라이버(204)는 캡처된 정보에 기초하여 사용자 입력을 결정할 수 있다. 예를 들어, 정보가, 사용자가 그의 손을 움직이는 일련의 이미지인 경우, 가상 드라이버는 사용자가 제스처를 수행했다고 결정할 수 있다. For example, hardware device 206A may capture the information, which is then received by virtual driver 204 that emulates driver 205A. Virtual driver 204 may determine user input based on the captured information. For example, if the information is a series of images that the user moves his hand, the virtual driver may determine that the user has performed a gesture.

식별된 콘텍스트(예컨대, 특정 애플리케이션 또는 운영 체제)에 기초하여, 사용자는 투명 레이어 커맨드로 변환될 수 있고, 실행을 위해 투명 레이어(203)로 전송될 수 있다. 투명 레이어 커맨드는 식별된 콘텍스트 내의 네이티브 커맨드를 포함할 수 있다. 예를 들어, 식별된 콘텍스트가 애플리케이션(201A)인 경우, 네이티브 커맨드는 애플리케이션(201A)의 애플리케이션 API(201B)와 호환가능한 포맷일 것이다. 투명 레이어 커맨드의 실행은 그 다음에, 식별된 콘텍스트 내의 하나 이상의 네이티브 커맨드의 실행을 야기하도록 구성될 수 있다. 이는 투명 레이어(203)가 운영 체제(200A)뿐 아니라 운영 체제 API(200B) 상에서 실행되는 애플리케이션의 API 각각과 인터페이싱하는 것에 의해 달성된다. 예를 들어, 네이티브 커맨드가 새로운 프로그램을 실행시키기 위한 커맨드와 같은 운영 체제 커맨드인 경우, 투명 레이어(203)는 실행을 위해 그 네이티브 커맨드를 운영 체제 API(200B)에 제공할 수 있다.Based on the identified context (eg, a specific application or operating system), the user can be converted to a transparent layer command and sent to the transparent layer 203 for execution. Transparent layer commands may include native commands within the identified context. For example, if the identified context is application 201A, the native command will be in a format compatible with application API 201B of application 201A. Execution of the transparent layer command may then be configured to cause execution of one or more native commands within the identified context. This is achieved by the transparent layer 203 interfacing with the operating system 200A as well as the respective APIs of the application running on the operating system API 200B. For example, when the native command is an operating system command such as a command for executing a new program, the transparent layer 203 may provide the native command to the operating system API 200B for execution.

도 2에 도시된 바와 같이, 도시된 모든 구성 요소들 사이에는 양방향 통신이 존재한다. 이는, 예를 들어, 투명 레이어(203)에서의 투명 레이어 커맨드의 실행이 가상 드라이버(204)로의 그리고 연결된 하드웨어 장치들 중 하나 상으로의 정보 전송을 초래할 수 있다는 것을 의미한다. 예를 들어, 음성 커맨드가 입력으로서 인식되고, 네이티브 커맨드를 포함하는 투명 레이어 커맨드로 변환되고, 투명 레이어에 의해 실행된 후(식별된 콘텍스트 내의 네이티브 커맨드의 실행을 초래함), 투명 레이어로부터 스피커로 (가상 드라이버를 통해) 신호가 전송되어, 소리 출력 "커맨드 수신(Command Received)"을 전송하게 할 수 있다.As shown in Fig. 2, there is a two-way communication between all the components shown. This means, for example, that execution of a transparent layer command in the transparent layer 203 may result in the transfer of information to the virtual driver 204 and onto one of the connected hardware devices. For example, a voice command is recognized as input, converted to a transparent layer command containing a native command, executed by the transparent layer (causing the execution of the native command in the identified context), and then from the transparent layer to the speaker. A signal can be transmitted (via a virtual driver), allowing the sound output "Command Received" to be transmitted.

물론, 도 2에 도시된 아키텍처는 설명만을 위한 것이며, 실행되는 애플리케이션의 개수, 연결된 하드웨어 장치의 개수 및 유형, 드라이버의 개수, 및 에뮬레이팅된 드라이버는 변할 수 있다는 것이 이해된다.Of course, the architecture shown in FIG. 2 is for illustrative purposes only, and it is understood that the number of applications to be executed, the number and type of connected hardware devices, the number of drivers, and the emulated drivers may vary.

도 3은 예시적인 실시예에 따른, 범용 하드웨어-소프트웨어 인터페이스의 구현에 대한 흐름도를 도시한다.3 shows a flow diagram for an implementation of a general purpose hardware-software interface, according to an exemplary embodiment.

단계(301)에서, 사용자 입력은 시스템에 통신 가능하게 결합된 하나 이상의 하드웨어 장치에 의해 캡처된 정보에 적어도 부분적으로 기초하여 결정된다. 시스템은, 본 명세서에서 사용되는 바와 같이, 방법의 단계를 실행하는 하나 이상의 컴퓨팅 기기, 방법의 단계를 실행하는 하나 이상의 프로세서 및 하나 이상의 메모리를 포함하는 기기, 또는 임의의 다른 컴퓨팅 시스템을 지칭할 수 있다.In step 301, user input is determined based at least in part on information captured by one or more hardware devices communicatively coupled to the system. A system, as used herein, may refer to one or more computing devices that perform steps of a method, devices that include one or more processors and one or more memories to execute steps of a method, or any other computing system. have.

사용자 입력은 시스템 상에서 실행되는 가상 드라이버에 의해 결정될 수 있다. 앞서 논의된 바와 같이, 가상 드라이버는, 그것이 다른 하드웨어 드라이버를 에뮬레이팅하고 있고, 그에 의해, 하드웨어 장치로부터 캡처된 정보를 수신하고 있는 에뮬레이션 모드에서 동작하는 중일 수 있고, 또는 특정 하드웨어 장치와 인터페이싱하도록 구성된 하나 이상의 다른 하드웨어 드라이버로부터 캡처된 정보를 선택적으로 수신할 수 있다.User input can be determined by a virtual driver running on the system. As discussed above, a virtual driver may be operating in an emulation mode where it is emulating another hardware driver, thereby receiving information captured from a hardware device, or configured to interface with a specific hardware device. It is possible to selectively receive captured information from one or more other hardware drivers.

카메라, 비디오 카메라, 마이크, 양방향 통신을 갖는 헤드셋, 마우스, 터치 패드, 트랙볼, 제어기, 게임 패드, 조이스틱, 터치 스크린, 가속도계 및/또는 기울기 센서를 포함하는 모션 캡처 장치, 리모트(Remote), 스타일러스(Stylus), 또는 이들 장치의 임의의 조합과 같은 다양한 하드웨어 장치가 활용될 수 있다. 물론, 이러한 하드웨어 장치 목록은 예로서만 제공되며, 음성, 이미지, 비디오, 또는 터치 정보를 검출하는 데 활용될 수 있는 임의의 하드웨어 장치가 활용될 수 있다.Motion capture device including camera, video camera, microphone, headset with two-way communication, mouse, touch pad, trackball, controller, game pad, joystick, touch screen, accelerometer and/or tilt sensor, remote, stylus ( Stylus), or any combination of these devices may be utilized. Of course, such a list of hardware devices is provided only as an example, and any hardware device that can be utilized to detect voice, image, video, or touch information may be utilized.

하드웨어 장치와 시스템 사이의 통신 결합은 다양한 형태를 취할 수 있다. 예를 들어, 하드웨어 장치는 무선 네트워크, 블루투스 프로토콜, 무선 주파수, 적외선 신호를 통해, 그리고/또는 USB(Universal Serial Bus) 연결과 같은 물리적 연결에 의해 시스템과 통신할 수 있다. 통신은 또한 무선 및 유선 통신 둘 다를 포함할 수 있다. 예를 들어, 하드웨어 장치는 2개의 구성 요소를 포함할 수 있는데, 그 중 하나는, 자체가 유선 접속(예컨대, USB)을 통해 시스템에 연결되는 제2 구성 요소에 신호를 무선으로(예컨대, 블루투스를 통해) 전송한다. 본 명세서에 기술된 시스템에 따라 다양한 통신 기법이 활용될 수 있고, 이들 예는 제한하는 것으로 의도되지 않는다.The communication coupling between the hardware device and the system can take many forms. For example, the hardware device may communicate with the system through a wireless network, Bluetooth protocol, radio frequency, infrared signal, and/or by a physical connection such as a Universal Serial Bus (USB) connection. Communication may also include both wireless and wired communication. For example, a hardware device may include two components, one of which wirelessly transmits a signal to a second component which itself is connected to the system via a wired connection (e.g., USB) (e.g., Bluetooth Through). Various communication techniques may be utilized depending on the system described herein, and these examples are not intended to be limiting.

하나 이상의 하드웨어 장치에 의해 캡처된 정보는, 임의의 유형의 정보, 예컨대 하나 이상의 이미지를 포함하는 이미지 정보, 비디오의 프레임, 소리 정보, 및/또는 터치 정보일 수 있다. 캡처된 정보는 임의의 적합한 포맷, 예컨대 소리 정보에 대한 wav 파일 또는 mp3 파일, 이미지에 대한 jpeg 파일, 터치 정보에 대한 수치 좌표 등일 수 있다.The information captured by the one or more hardware devices may be any type of information, such as image information including one or more images, frames of video, sound information, and/or touch information. The captured information can be in any suitable format, such as a wav file or mp3 file for sound information, a jpeg file for an image, numerical coordinates for touch information, and the like.

본 명세서에 기술된 기법은, 디스플레이 장치가 터치 신호 또는 터치 기반 제스처를 검출하기 위한 어떠한 하드웨어도 포함하지 않는다 하더라도, 임의의 디스플레이 장치가 임의의 콘텍스트에서 사실상 "터치" 스크린 장치로서 기능할 수 있게 한다. 이는 아래에서 더 상세히 기술되며, 카메라 또는 비디오 카메라에 의해 캡처된 이미지의 분석을 통해 달성될 수 있다.The techniques described herein allow any display device to function as a virtually "touch" screen device in any context, even if the display device does not include any hardware for detecting touch signals or touch-based gestures. . This is described in more detail below and can be achieved through analysis of the images captured by the camera or video camera.

도 4는 하나 이상의 하드웨어 장치에 의해 캡처된 정보가 하나 이상의 이미지를 포함할 때 시스템에 통신 가능하게 결합된 하나 이상의 하드웨어 장치에 의해 캡처된 정보에 적어도 부분적으로 기초하여 사용자 입력을 결정하기 위한 흐름도를 도시한다.4 is a flow chart for determining user input based at least in part on information captured by one or more hardware devices communicatively coupled to a system when information captured by one or more hardware devices includes one or more images. Shows.

단계(401)에서, 하나 이상의 이미지가 수신된다. 이들 이미지는, 앞서 논의된 바와 같이, 카메라 또는 비디오 카메라와 같은 하드웨어 장치에 의해 캡처될 수 있고, 가상 드라이버에 의해 수신될 수 있다.In step 401, one or more images are received. These images, as discussed above, may be captured by a hardware device such as a camera or video camera, and may be received by a virtual driver.

단계(402)에서, 하나 이상의 이미지 내의 객체가 인식된다. 객체는, 예를 들어, 손, 손가락, 또는 사용자의 다른 신체 부위일 수 있다. 객체는 또한, 스타일러스 또는 펜과 같은 특수 목적 장치, 또는 시스템에 통신 가능하게 결합되고 가속도계 및/또는 기울기 센서를 포함하는 모션 추적 스타일러스/리모트와 같은 특수 목적 하드웨어 장치일 수 있다. 객체 인식은 조기 트레이닝에 기초하여, 예컨대 객체를 사용한 캘리브레이션 루틴 실행(Calibration Routine Run)을 통해, 가상 드라이버에 의해 수행될 수 있다.In step 402, objects in one or more images are recognized. The object may be, for example, a hand, a finger, or other body part of the user. The object may also be a special purpose device such as a stylus or pen, or a special purpose hardware device such as a motion tracking stylus/remote communicatively coupled to the system and including an accelerometer and/or tilt sensor. Object recognition may be performed by a virtual driver based on early training, for example through a calibration routine run using an object.

도 5a는 예시적인 실시예에 따른, 객체 인식의 예를 도시한다. 도 5a에 도시된 바와 같이, 이미지(501)는 객체(502)로서 인식되었던 사용자의 손을 포함한다. 인식 알고리즘은, 물론, 손가락과 같은 상이한 객체를 인식하도록 구성될 수 있다.Fig. 5A shows an example of object recognition, according to an exemplary embodiment. As shown in FIG. 5A, image 501 includes a user's hand that was recognized as an object 502. The recognition algorithm can, of course, be configured to recognize different objects such as fingers.

도 4로 되돌아가면, 단계(403)에서, 인식된 객체의 하나 이상의 배향 및 하나 이상의 위치가 결정된다. 이는 다양한 방식으로 달성될 수 있다. 객체가 하드웨어 장치가 아니고 그 대신 손 또는 손가락과 같은 신체 부위인 경우, 객체는 기준 포인트로서 카메라의 밝혀진 위치를 사용하여 3차원 좌표계에서 맵핑되어, 객체의 3차원 좌표 및 X, Y, 및 Z 축에 대한 다양한 각도를 결정하게 할 수 있다. 객체가 하드웨어 장치이고 가속도계 및/또는 기울기 센서와 같은 모션 추적 하드웨어를 포함하는 경우, 이미지 정보는 가속도계 및/또는 기울기 센서에 의해 나타내진 정보와 함께 사용되어, 객체의 위치 및 배향을 결정하게 할 수 있다.Returning to Fig. 4, in step 403, one or more orientations and one or more positions of the recognized object are determined. This can be accomplished in a variety of ways. If the object is not a hardware device and instead is a body part such as a hand or finger, the object is mapped in a three-dimensional coordinate system using the camera's revealed position as a reference point, and the three-dimensional coordinates of the object and the X, Y, and Z axes It can be made to determine various angles for. If the object is a hardware device and includes motion tracking hardware such as an accelerometer and/or tilt sensor, the image information can be used in conjunction with the information represented by the accelerometer and/or tilt sensor to determine the position and orientation of the object. have.

단계(404)에서, 사용자 입력은 인식된 객체의 하나 이상의 배향 및 하나 이상의 위치에 적어도 부분적으로 기초하여 결정된다. 이는 하나 이상의 배향 및 하나 이상의 위치에 적어도 부분적으로 기초하여 투명 레이어의 투명 사용자 인터페이스(UI) 상의 위치 좌표를 결정하는 것을 포함할 수 있다. 투명 UI는 투명 레이어의 일부이고, 운영 체제 및/또는 운영 체제 상에서 실행되는 임의의 애플리케이션에 대응하는 기초 UI 상에 중첩된다.In step 404, the user input is determined based at least in part on one or more orientations and one or more locations of the recognized object. This may include determining location coordinates on the transparent user interface (UI) of the transparent layer based at least in part on the one or more orientations and the one or more locations. The transparent UI is part of the transparent layer and is superimposed on the underlying UI corresponding to the operating system and/or any application running on the operating system.

도 5b는 객체가 사용자의 손가락일 때 이러한 단계의 예를 도시한다. 도 5b에 도시된 바와 같이, 디스플레이 장치(503)는 기초 UI(506) 및 기초 UI(506) 위에 중첩된 투명 UI(507)를 포함한다. 명료성을 위해, 투명 UI(507)는 도트 음영을 갖는 것으로 도시되어 있지만, 실제로, 투명 UI는 사용자에게 가시적이지 않은 투명 레이어라는 것이 이해된다 추가로, 투명 UI(507)는 기초 UI(506)보다 약간 작은 것으로 도시되어 있지만, 실제로, 투명 UI는 기초 UI와 동일한 스크린 영역을 커버할 것이라는 것이 이해된다.5B shows an example of this step when the object is the user's finger. 5B, the display device 503 includes a basic UI 506 and a transparent UI 507 overlaid on the basic UI 506. For clarity, the transparent UI 507 is shown as having dot shading, but in practice it is understood that the transparent UI is a transparent layer that is not visible to the user. In addition, the transparent UI 507 is more than the basic UI 506. Although shown as being slightly smaller, in practice, it is understood that the transparent UI will cover the same screen area as the base UI.

도 5b에 도시된 바와 같이, 객체(사용자의 손가락)의 위치 및 배향 정보는 디스플레이 장치(503)의 평면 상에 라인을 투영하고 교차 포인트(505)를 결정하는 데 사용된다. 카메라(504)에 의해 캡처된 이미지 정보 및 카메라 아래의 디스플레이 장치(503)의 밝혀진 위치는 이러한 투영을 돕는 데 사용될 수 있다. 도 5b에 도시된 바와 같이, 사용자 입력은 교차 포인트(505)에서의 입력 좌표인 것으로 결정된다.As shown in FIG. 5B, the position and orientation information of the object (user's finger) is used to project a line onto the plane of the display device 503 and determine the intersection point 505. Image information captured by the camera 504 and the revealed position of the display device 503 under the camera can be used to aid in this projection. As shown in FIG. 5B, the user input is determined to be the input coordinates at the intersection point 505.

아래에서 추가로 논의되는 바와 같이, 이러한 입력에 기초하여 생성되는 실제 투명 레이어 커맨드는 사용자 설정 및/또는 식별된 콘텍스트에 기초할 수 있다. 예를 들어, 커맨드는 포인트(505)의 좌표에 있는 객체가 선택되고/되거나 열려야 함을 나타내는 터치 커맨드일 수 있다. 커맨드는 또한, 포인터(예컨대, 마우스 포인터)가 포인트(505)의 좌표로 이동되어야 함을 나타내는 포인팅 커맨드일 수 있다. 추가로, 커맨드는 (예컨대, 인터페이스를 어노테이팅(Annotate)하거나 소정 요소를 그리기 위해) 그 위치에서의 그래픽 출력을 수정하는 편집 커맨드일 수 있다.As discussed further below, the actual transparent layer command generated based on this input may be based on user settings and/or identified context. For example, the command may be a touch command indicating that the object at the coordinates of point 505 should be selected and/or opened. The command may also be a pointing command indicating that the pointer (eg, a mouse pointer) should be moved to the coordinates of the point 505. Additionally, the command may be an editing command that modifies the graphic output at that location (eg, to annotate an interface or draw a certain element).

도 5b가 인식된 객체(502)를 디스플레이 장치(503)로부터의 일부 거리에 있는 것으로 도시하고 있지만, 터치 입력은 거리와는 무관하게 검출될 수 있다. 예를 들어, 사용자가 디스플레이 장치(503)를 물리적으로 터치하였다면, 위에 기술된 기법은 여전히 입력 좌표를 결정할 것이다. 그 경우에 있어서, 객체(502)와 교차 포인트 사이의 투영 라인(Projection Line)은 단지 더 짧을 것이다.Although FIG. 5B shows the recognized object 502 as being at a partial distance from the display device 503, a touch input may be detected regardless of the distance. For example, if the user has physically touched the display device 503, the technique described above will still determine the input coordinates. In that case, the Projection Line between the object 502 and the point of intersection will only be shorter.

물론, 터치 입력은 캡처된 이미지로부터 결정될 수 있는 유일한 유형의 사용자 입력이 아니다. 인식된 객체의 하나 이상의 배향 및 하나 이상의 위치에 적어도 부분적으로 기초하여 사용자 입력을 결정하는 단계는 제스처 입력을 결정하는 것을 포함할 수 있다. 구체적으로, 다수의 이미지에 걸쳐서 인식된 객체의 위치 및 배향은 대응하는 제스처, 예컨대 스와이프(Swipe) 제스처, 핀치(Pinch) 제스처, 및/또는 임의의 밝혀진 또는 맞춰진 제스처를 결정하도록 분석될 수 있다. 사용자는 특정 콘텍스트 및 그들 콘텍스트 내의 커맨드에 맵핑되는 맞춤 제스처를 인식하도록 가상 드라이버를 캘리브레이션할 수 있다. 예를 들어, 사용자는, 운영 체제 콘텍스트에 맵핑되고, 특정 애플리케이션을 실행시키는 네이티브 운영 체제 커맨드의 실행을 초래하는 맞춤 제스처를 생성할 수 있다.Of course, touch input is not the only type of user input that can be determined from the captured image. Determining a user input based at least in part on one or more orientations and one or more positions of the recognized object may include determining a gesture input. Specifically, the position and orientation of the recognized object across multiple images can be analyzed to determine a corresponding gesture, such as a swipe gesture, a pinch gesture, and/or any revealed or matched gesture. . The user can calibrate the virtual driver to recognize specific contexts and custom gestures that map to commands within those contexts. For example, a user may create a custom gesture that maps to the operating system context and results in execution of a native operating system command that executes a particular application.

앞서 논의된 바와 같이, 도 3의 단계(301)에서 하나 이상의 하드웨어 장치에 의해 캡처된 정보는 또한, 마이크에 의해 캡처된 소리 정보를 포함할 수 있다. 도 6은 캡처된 정보가 소리 정보일 때 시스템에 통신 가능하게 결합된 하나 이상의 하드웨어 장치에 의해 캡처된 정보에 적어도 부분적으로 기초하여 사용자 입력을 결정하기 위한 흐름도를 도시한다. 아래에서 논의되는 바와 같이, 사용자 입력에 대응하는 하나 이상의 단어를 식별하기 위해 소리 정보에 대해 음성 인식이 수행된다.As discussed above, the information captured by the one or more hardware devices in step 301 of FIG. 3 may also include sound information captured by the microphone. 6 shows a flowchart for determining a user input based at least in part on information captured by one or more hardware devices communicatively coupled to the system when the captured information is sound information. As discussed below, speech recognition is performed on the sound information to identify one or more words corresponding to user input.

단계(601)에서, 소리 데이터가 수신된다. 소리 데이터는, 위에서 논의된 바와 같이, 마이크와 같은 하드웨어 장치에 의해 캡처될 수 있고, 가상 드라이버에 의해 수신될 수 있다. 단계(602)에서, 수신된 소리 데이터는 소리 사전과 비교될 수 있다. 소리 사전은 커맨드 단어 또는 커맨드 수식어와 같은 하나 이상의 인식된 단어의 소리 시그니처(Sound Signature)를 포함할 수 있다. 단계(603)에서, 소리 데이터 내의 하나 이상의 단어는 비교에 기초하여 사용자 입력으로서 식별된다. 식별된 하나 이상의 단어는 그 다음에, 투명 레이어 커맨드로 변환될 수 있고, 투명 레이어로 전달될 수 있다.In step 601, sound data is received. Sound data, as discussed above, may be captured by a hardware device such as a microphone, and may be received by a virtual driver. In step 602, the received sound data may be compared to a sound dictionary. The sound dictionary may include a sound signature of one or more recognized words, such as command words or command modifiers. In step 603, one or more words in the sound data are identified as user input based on the comparison. The identified one or more words can then be converted into a transparent layer command and passed to the transparent layer.

앞서 논의된 바와 같이, 가상 드라이버에 의해 에뮬레이팅된 드라이버, 사용자 입력의 예상 유형, 및 사용자 입력에 기초하여 생성된 커맨드는 모두, 하나 이상의 설정 또는 이전 사용자 입력에 적어도 부분적으로 기초하여 결정될 수 있다.As discussed above, the driver emulated by the virtual driver, the expected type of user input, and the command generated based on the user input may all be determined based at least in part on one or more settings or previous user input.

도 7은, 또한 투명 레이어의 일부일 수 있는 툴 인터페이스(701)를 도시한다. 투명 UI와 달리, 툴 인터페이스(701)는 사용자에게 가시적이며, 가상 드라이버의 에뮬레이션 모드를 변경하는 상이한 옵션들 사이에서, 사용자 입력에 기초하여 생성된 네이티브 커맨드를 선택하거나 추가 기능을 수행하는 데 사용될 수 있다.7 shows a tool interface 701 that may also be part of a transparent layer. Unlike the transparent UI, the tool interface 701 is visible to the user and can be used to select a native command generated based on user input or perform additional functions, among different options for changing the emulation mode of the virtual driver. have.

버튼(701A)은, 사용자 입력이 입력 좌표(예컨대, 사용자가 그의 손 또는 스타일러스/리모트로 스크리닝(Screening)을 터치하는 것에 기초한 좌표)일 때 사용자가 사용자 인터페이스를 그래픽으로 수정하는 데 사용되는 드로잉 툴(Drawing Tool)의 유형을 선택할 수 있게 한다. 다양한 드로잉 툴은 상이한 브러시, 컬러, 펜, 하이라이터 등을 포함할 수 있다. 이들 툴은 스타일, 두께, 컬러 등을 변화시키는 그래픽 변경을 초래할 수 있다.Button 701A is a drawing tool used by the user to graphically modify the user interface when the user input is input coordinates (e.g., coordinates based on the user touching the screening with his hand or stylus/remote) Allows you to select the type of (Drawing Tool). The various drawing tools can include different brushes, colors, pens, highlighters, and the like. These tools can result in graphic changes that change style, thickness, color, and more.

버튼(701B)은 입력 좌표가 사용자 입력으로서 수신될 때 사용자가 선택, 포인팅, 또는 드로잉 모드들 사이에서 스위칭할 수 있게 한다. 선택 모드에서, 입력 좌표는 "터치"로서 처리될 수 있고, 입력 좌표에 있는 객체의 선택 또는 열림을 초래할 수 있다. 포인팅 모드에서, 좌표는 포인터(예컨대, 마우스 포인터) 위치로서 처리되어, 사실상, 사용자가 마우스를 에뮬레이팅할 수 있게 할 수 있다. 드로잉 모드에서, 좌표는 사용자 인터페이스 상에서 드로잉 또는 기록의 모습을 프리젠트(Present)하기 위해 사용자 인터페이스의 그래픽 출력을 변경할 위치로서 처리될 수 있다. 변경의 본질은, 버튼(701A)을 참조하여 논의된 바와 같이, 선택된 드로잉 툴에 의존할 수 있다. 버튼(701B)은 또한, 가상 드라이버에 변경하여, (모션 추적 장치가 사용되는 경우에) 이미지 입력 및/또는 모션 입력을 예상하고, 그에 따라, 적절한 드라이버를 에뮬레이팅하게 할 수 있다.Button 701B allows a user to switch between selection, pointing, or drawing modes when input coordinates are received as user input. In the selection mode, the input coordinates can be treated as a "touch", resulting in selection or opening of an object at the input coordinates. In the pointing mode, the coordinates are treated as a pointer (eg, mouse pointer) location, which, in fact, allows the user to emulate a mouse. In the drawing mode, the coordinates can be treated as a location to change the graphic output of the user interface to present the appearance of the drawing or recording on the user interface. The nature of the change may depend on the drawing tool selected, as discussed with reference to button 701A. The button 701B may also change to the virtual driver to anticipate image input and/or motion input (if a motion tracking device is used) and, accordingly, emulate the appropriate driver.

버튼(701C)은 가상 드라이버에 변경하여, 음성 커맨드를 예상하게 할 수 있다. 이는, 도 6에 대해 기술된 바와 같이, 가상 드라이버가 결합된 마이크에 대응하는 드라이버를 에뮬레이팅하여, 음성 입력을 수신하고 음성 입력을 파싱(Parse)하게 할 수 있다.The button 701C can be changed to a virtual driver to predict a voice command. This, as described with respect to FIG. 6, emulates a driver corresponding to a microphone to which a virtual driver is coupled, so that a voice input can be received and the voice input can be parsed.

버튼(701D)은, 투명 레이어의 일부일 수 있고, 운영 체제 내의 애플리케이션을 실행시키거나 애플리케이션 내의 특정 커맨드를 실행시키는 데 사용될 수 있는 런처(Launcher) 애플리케이션을 연다. 런처는 또한, 투명 레이어 내의 옵션들, 예컨대 사용자 입력과 연관된 애플리케이션에 대한 맞춤 음성 커맨드, 맞춤 제스처, 맞춤 네이티브 커맨드를 맞춤화하고/하거나 하드웨어 장치 및 사용자 입력(예컨대, 음성 캘리브레이션, 모션 캡처 장치 캘리브레이션, 및/또는 객체 인식 캘리브레이션)을 캘리브레이션하는 데 사용될 수 있다.The button 701D opens a launcher application, which may be part of a transparent layer and may be used to launch an application within the operating system or execute a specific command within the application. The launcher also customizes options within the transparent layer, such as custom voice commands, custom gestures, custom native commands for the application associated with user input and/or hardware device and user input (e.g., voice calibration, motion capture device calibration, and /Or object recognition calibration) can be used to calibrate.

버튼(701E)은, 사용자 인터페이스의 스크린샷을 캡처하고 스크린샷을 이미지로서 익스포트(Export)하는 데 사용될 수 있다. 이는 버튼(701B)의 드로잉 모드 및 드로잉 툴(701A)과 함께 사용될 수 있다. 사용자가 특정 사용자 인터페이스를 마크업(Mark Up)한 후, 마크업된 버전이 이미지로서 익스포트될 수 있다.Button 701E can be used to capture a screenshot of the user interface and export the screenshot as an image. This can be used with the drawing mode of the button 701B and the drawing tool 701A. After the user marks up a specific user interface, the marked-up version may be exported as an image.

버튼(701F)은 또한 그래픽 편집을 허용하며, 사용자가 사용자 인터페이스 상에서 생성하고 있는 드로잉의 컬러 또는 드로잉의 양태를 변화시키는 데 사용될 수 있다. 버튼(701B)의 그리기(Draw) 모드와 유사하게, 이 버튼은 입력 좌표에 있는 그래픽 변경의 본질을 변경한다.The button 701F also allows graphic editing and can be used to change the color of the drawing or the aspect of the drawing the user is creating on the user interface. Similar to the Draw mode of button 701B, this button changes the nature of the graphic change in the input coordinates.

버튼(701G)은 사용자 인터페이스 상에서 드로잉을 취소한다. 이 버튼의 선택은 사용자 인터페이스 상의 모든 그래픽 마킹을 제거할 수 있으며, 기초 UI를, 사용자가 드로잉을 생성하기 전에 그것이 있던 상태로 리셋할 수 있다.Button 701G cancels drawing on the user interface. Selecting this button can remove all graphic markings on the user interface and reset the underlying UI to the state it was in before the user created the drawing.

버튼(701H)은 사용자가 가상 화이트보드 상에서 그리기 모드를 사용하여 드로잉을 생성하거나 기록할 수 있게 하는 화이트보드 애플리케이션을 실행시키는 데 사용될 수 있다.Button 701H can be used to launch a whiteboard application that allows a user to create or record a drawing using a drawing mode on a virtual whiteboard.

버튼(701I)은 운영 체제 UI 또는 애플리케이션 UI에 보여진 객체와 같은 객체에 텍스트 노트를 추가하는 데 사용될 수 있다. 텍스트 노트는 음성 신호로부터 해석되거나 키보드를 사용하여 사용자에 의해 타이핑될 수 있다.The button 701I may be used to add a text note to an object such as an object shown in an operating system UI or an application UI. Text notes can be interpreted from spoken signals or typed by the user using a keyboard.

버튼(701J)은 툴 인터페이스(701)를 열거나 닫는 데 사용될 수 있다. 닫힐 때, 툴 인터페이스는 최소화되거나 기초 사용자 인터페이스로부터 전적으로 제거될 수 있다.Button 701J may be used to open or close tool interface 701. When closed, the tool interface can be minimized or removed entirely from the underlying user interface.

앞서 논의된 바와 같이, 스타일러스 또는 리모트 하드웨어 장치는 카메라 또는 비디오 카메라와 같은 다른 하드웨어 장치와 함께 본 시스템에 사용될 수 있다. 도 8은 시스템에 사용될 수 있는 스타일러스(801)의 예를 도시한다. 스타일러스(801)는, 예컨대 블루투스를 통해, 하드웨어 수신기(802)와 통신할 수 있다. 하드웨어 수신기는, 예컨대 USB(802B)를 통해, 컴퓨터 시스템과 연결될 수 있고, 스타일러스로부터 하드웨어 수신기를 통해 컴퓨터 시스템에 전달된 신호는 메뉴(803)를 제어하고 그와 상호작용하는 데 사용될 수 있는데, 이 메뉴는 도 7에 도시된 툴 인터페이스와 유사하다.As discussed above, a stylus or remote hardware device may be used in the present system in conjunction with a camera or other hardware device such as a video camera. 8 shows an example of a stylus 801 that may be used in the system. The stylus 801 may communicate with the hardware receiver 802, for example via Bluetooth. The hardware receiver can be connected to the computer system, e.g. via USB 802B, and the signal transmitted from the stylus to the computer system via the hardware receiver can be used to control and interact with the menu 803, which The menu is similar to the tool interface shown in FIG. 7.

도 8에 도시된 바와 같이, 스타일러스(801)는 물리적 버튼(801A)을 포함할 수 있다. 이들 물리적 버튼(801)은, 스타일러스에 전력을 공급하고, 메뉴(803)를 내비게이팅(Navigate)하고, 선택을 행하는 데 사용될 수 있다. 추가로, 스타일러스(801)는 카메라에 의해 이미지에서 캡처되고 가상 드라이버에 의해 인식되는 독특한 팁(801B)을 포함할 수 있다. 이는 그리기 모드에 있을 때 스타일러스(801)가 드로잉 및 편집에 사용될 수 있게 할 수 있다. 스타일러스(801)는 또한, 스타일러스가 입력 좌표 또는 제스처를 제공하는 데 사용될 때 위치 검출을 돕기 위해 가속도계 및/또는 기울기 센서와 같은 모션 추적 하드웨어를 포함할 수 있다. 추가로, 하드웨어 수신기(802)는 캘리브레이션 버튼(802A)을 포함할 수 있는데, 이 버튼은 눌릴 때, 사용자 인터페이스 내의 캘리브레이션 유틸리티를 개시할 수 있다. 이는 스타일러스의 캘리브레이션을 허용한다.As shown in FIG. 8, the stylus 801 may include a physical button 801A. These physical buttons 801 can be used to power the stylus, navigate menus 803, and make selections. Additionally, stylus 801 may include a unique tip 801B that is captured in an image by a camera and recognized by a virtual driver. This may allow the stylus 801 to be used for drawing and editing when in the drawing mode. The stylus 801 may also include motion tracking hardware such as an accelerometer and/or tilt sensor to aid in position detection when the stylus is used to provide input coordinates or gestures. Additionally, the hardware receiver 802 may include a calibration button 802A, which, when pressed, may initiate a calibration utility in the user interface. This allows the stylus to be calibrated.

도 3을 다시 참조하면, 단계(302)에서, 사용자 입력에 대응하는 콘텍스트가 식별된다. 식별된 콘텍스트는 운영 체제 또는 운영 체제 상에서 실행되는 애플리케이션 중 하나를 포함한다.Referring again to Fig. 3, in step 302, a context corresponding to a user input is identified. The identified context includes either the operating system or an application running on the operating system.

도 9는 예시적인 실시예에 따른, 사용자 입력에 대응하는 콘텍스트를 식별하기 위한 흐름도를 도시한다. 도 9에 도시된 바와 같이, 운영 체제 데이터(901), 애플리케이션 데이터(902), 및 사용자 입력 데이터(903)는 모두, 콘텍스트(904)를 결정하는 데 사용될 수 있다.Fig. 9 shows a flow chart for identifying a context corresponding to a user input, according to an exemplary embodiment. As shown in FIG. 9, operating system data 901, application data 902, and user input data 903 can all be used to determine context 904.

운영 체제 데이터(901)는, 예를 들어 운영 체제 내의 활성 윈도우에 관한 정보를 포함할 수 있다. 예를 들어, 활성 윈도우가 계산기 윈도우인 경우, 콘텍스트는 계산기 애플리케이션인 것으로 결정될 수 있다. 유사하게, 활성 윈도우가 마이크로소프트 워드(Microsoft Word) 윈도우인 경우, 콘텍스트는 마이크로소프트 워드 애플리케이션인 것으로 결정될 수 있다. 한편, 활성 윈도우가 파일 폴더인 경우, 활성 콘텍스트는 운영 체제인 것으로 결정될 수 있다. 운영 체제 데이터는 또한, 현재 실행 중인 애플리케이션, 마지막으로 개시된 애플리케이션, 및 콘텍스트를 결정하는 데 사용될 수 있는 임의의 다른 운영 체제 정보와 같은 추가 정보를 포함할 수 있다.The operating system data 901 may include, for example, information about an active window in the operating system. For example, if the active window is a calculator window, the context may be determined to be a calculator application. Similarly, if the active window is a Microsoft Word window, the context can be determined to be a Microsoft Word application. Meanwhile, when the active window is a file folder, it may be determined that the active context is an operating system. Operating system data may also include additional information such as the currently running application, the last launched application, and any other operating system information that may be used to determine the context.

애플리케이션 데이터(902)는, 예를 들어, 실행 중인 하나 이상의 애플리케이션에 관한 정보 및/또는 특정 애플리케이션을 소정 유형의 사용자 입력에 맵핑시키는 정보를 포함할 수 있다. 예를 들어, 제1 애플리케이션은 음성 입력에 맵핑되어, 음성 커맨드가 수신될 때마다 콘텍스트가 제1 애플리케이션인 것으로 자동으로 결정되게 할 수 있다. 다른 예에서, 특정 제스처가 제2 애플리케이션과 연관되어, 그 제스처가 입력으로서 수신될 때, 제2 애플리케이션이 개시되거나 닫히고, 또는 제2 애플리케이션 내의 일부 동작이 수행된다.The application data 902 may include, for example, information about one or more running applications and/or information for mapping a specific application to a predetermined type of user input. For example, the first application may be mapped to a voice input so that the context is automatically determined to be the first application each time a voice command is received. In another example, a particular gesture is associated with a second application, and when the gesture is received as input, the second application is launched or closed, or some action within the second application is performed.

사용자 입력(903)은 또한, 다양한 방식으로 콘텍스트를 결정하는 데 사용될 수 있다. 위에서 논의된 바와 같이, 소정 유형의 사용자 입력이 소정 애플리케이션에 맵핑될 수 있다. 위 예에서, 음성 입력은 제1 애플리케이션의 콘텍스트와 연관된다. 추가로, 사용자 입력의 특질은 또한, 콘텍스트를 결정하는 데 사용될 수 있다. 제스처 또는 모션이 애플리케이션에 또는 운영 체제에 맵핑될 수 있다. 음성 커맨드 내의 특정 단어가 또한, 애플리케이션에 또는 운영 체제에 맵핑될 수 있다. 입력 좌표가 또한, 콘텍스트를 결정하는 데 사용될 수 있다. 예를 들어, 입력 좌표의 위치에 있는 사용자 인터페이스 내의 윈도우가 결정될 수 있고, 그 윈도우에 대응하는 애플리케이션이 콘텍스트로서 결정될 수 있다.User input 903 can also be used to determine the context in a variety of ways. As discussed above, certain types of user input may be mapped to certain applications. In the above example, the voice input is associated with the context of the first application. Additionally, the nature of the user input can also be used to determine the context. Gestures or motions can be mapped to an application or to an operating system. Certain words in spoken commands can also be mapped to an application or to an operating system. Input coordinates can also be used to determine the context. For example, a window in the user interface at the location of the input coordinates may be determined, and the application corresponding to that window may be determined as the context.

도 10은 입력 좌표를 사용하여 콘텍스트를 결정하는 예를 도시한다. 도 10에 도시된 바와 같이, 디스플레이 장치(1001)는 사용자 인터페이스(1002)를 디스플레이하고 있다. 또한, 카메라(1004)가 도시되고, 투명 레이어(1003)이 기초 사용자 인터페이스(1003) 위에 중첩된다. 사용자는 사용자 인터페이스(1002) 내의 위치(1005)를 포인팅하는 데 스타일러스(1000)를 활용한다. 위치(1005)가 애플리케이션 1에 대응하는 애플리케이션 윈도우 내에 놓여 있으므로, 애플리케이션 1은 애플리케이션 2, 애플리케이션 3, 또는 운영 체제와는 반대로 사용자 입력에 대한 콘텍스트인 것으로 결정될 수 있다.10 shows an example of determining a context using input coordinates. As shown in FIG. 10, the display device 1001 is displaying a user interface 1002. Further, a camera 1004 is shown, and a transparent layer 1003 is overlaid on the basic user interface 1003. The user utilizes the stylus 1000 to point to the location 1005 in the user interface 1002. Since location 1005 lies within the application window corresponding to application 1, application 1 may be determined to be the context for user input as opposed to application 2, application 3, or the operating system.

도 3을 다시 참조하면, 단계(303)에서, 사용자 입력은 식별된 콘텍스트에 적어도 부분적으로 기초하여 하나 이상의 투명 레이어 커맨드로 변환된다. 앞서 논의된 바와 같이, 투명 레이어는 가상 드라이버와 운영 체제 및/또는 운영 체제 상에서 실행되는 애플리케이션 사이에서 인터페이싱하도록 구성된 애플리케이션 프로그램 인터페이스(API)를 포함한다.Referring again to FIG. 3, in step 303, user input is converted into one or more transparent layer commands based at least in part on the identified context. As discussed above, the transparent layer includes an application program interface (API) configured to interface between the virtual driver and the operating system and/or applications running on the operating system.

도 11은 사용자 입력을 투명 레이어 커맨드로 변환하기 위한 흐름도를 도시한다. 도 11의 단계(1104)에 도시된 바와 같이, 투명 레이어 커맨드는 식별된 콘텍스트(1102) 및 사용자 입력(1103)에 적어도 부분적으로 기초하여 결정될 수 있다. 투명 레이어 커맨드는 하나 이상의 대응하는 콘텍스트에서 실행하도록 구성된 하나 이상의 네이티브 커맨드를 포함할 수 있다. 투명 레이어 커맨드는 또한, 가상 드라이버로 그리고 하드웨어 장치(들) 상으로 전송될 응답 출력을 포함할 수 있다.11 shows a flowchart for converting a user input into a transparent layer command. As shown in step 1104 of FIG. 11, the transparent layer command may be determined based at least in part on the identified context 1102 and user input 1103. The transparent layer command may include one or more native commands configured to execute in one or more corresponding contexts. The transparent layer command may also include a response output to be sent to the virtual driver and onto the hardware device(s).

식별된 콘텍스트(1102)는 어느 투명 레이어 커맨드가 사용자 입력에 맵핑되어야 하는지를 결정하는 데 사용될 수 있다. 예를 들어, 식별된 콘텍스트가 "운영 체제"인 경우, (하나의 열린 윈도우를 최소화하고 다음에 열리는 윈도우를 최대화함으로써) 사용자 인터페이스가 운영 체제 내의 현재 열린 윈도우를 관통하여 스크롤하는 결과를 초래하는 투명 레이어 커맨드에 맵핑될 수 있다. 대안적으로, 식별된 콘텍스트가 "웹 브라우저 애플리케이션"인 경우, 웹 페이지가 스크롤되는 결과를 초래하는 투명 레이어 커맨드에 동일한 스와이프 제스처가 맵핑될 수 있다.The identified context 1102 can be used to determine which transparent layer command should be mapped to user input. For example, if the identified context is "operating system", then the user interface (by minimizing one open window and maximizing the next one) is transparent, resulting in the user interface scrolling through the currently open window within the operating system. It can be mapped to a layer command. Alternatively, if the identified context is a "web browser application", the same swipe gesture may be mapped to a transparent layer command that results in the web page being scrolled.

사용자 입력(1103)은 또한 투명 레이어 커맨드를 결정하는데, 이는 사용자 입력이 특히 하나 이상의 콘텍스트 내의 소정 네이티브 커맨드에 맵핑되고 이들 네이티브 커맨드가 투명 레이어 커맨드의 일부이기 때문이다. 예를 들어, 음성 커맨드 "이메일을 열어라(Open email)"는 이메일 애플리케이션 아웃룩(Outlook)을 실행시키라는 특정 운영 체제 네이티브 커맨드에 맵핑될 수 있다. 인식된 단어 "이메일을 열어라"를 포함하는 음성 입력이 수신될 때, 이는 아웃룩을 실행시키라는 네이티브 커맨드를 포함하는 투명 레이어 커맨드가 결정되는 결과를 초래한다.User input 1103 also determines transparent layer commands, since user inputs are specifically mapped to certain native commands in one or more contexts and these native commands are part of the transparent layer commands. For example, the voice command "Open email" can be mapped to a specific operating system native command to launch the email application Outlook. When a voice input comprising the recognized word "open email" is received, this results in a transparent layer command comprising a native command to launch Outlook is determined.

도 11에 도시된 바와 같이, 투명 레이어 커맨드는 또한, 하나 이상의 사용자 설정(1101) 및 API 라이브러리(1104)에 기초하여 결정될 수 있다. API 라이브러리(1104)는 식별된 콘텍스트 및 특정 사용자 입력에 대응하는 네이티브 커맨드를 룩업하는 데 사용될 수 있다. 스와이프 제스처 및 웹 브라우저 애플리케이션 콘텍스트의 예에서, 웹 브라우저 애플리케이션에 대응하는 API 라이브러리는 적적한 API가 웹 페이지의 스크롤링을 야기할 것을 질의받을 수 있다. 대안적으로, API 라이브러리(1104)는 생략될 수 있으며, 특정 사용자 입력 및 식별된 콘텍스트로 지향되는 네이티브 커맨드가 맵핑될 수 있다.As shown in FIG. 11, the transparent layer command may also be determined based on one or more user settings 1101 and API library 1104. The API library 1104 can be used to look up the identified context and native commands corresponding to specific user input. In the example of a swipe gesture and web browser application context, the API library corresponding to the web browser application may be queried that the appropriate API will cause the web page to scroll. Alternatively, the API library 1104 can be omitted, and native commands directed to specific user input and identified contexts can be mapped.

사용자 입력이 입력 좌표인 것으로 결정되는 상황에서, 투명 레이어 커맨드는 입력 위치 좌표 및 식별된 콘텍스트에 적어도 부분적으로 기초하여 결정된다. 이 경우에 있어서, 투명 레이어 커맨드는 식별된 콘텍스트 내의 적어도 하나의 네이티브 커맨드를 포함할 수 있으며, 이때 적어도 하나의 네이티브 커맨드는 기초 UI 내의 대응하는 위치 좌표에서 일정 동작을 수행하도록 구성된다.In a situation where the user input is determined to be the input coordinates, the transparent layer command is determined based at least in part on the input location coordinates and the identified context. In this case, the transparent layer command may include at least one native command in the identified context, and in this case, the at least one native command is configured to perform a certain operation at a corresponding position coordinate in the basic UI.

특정 콘텍스트 및 사용자 입력에 맵핑되는 하나 초과의 가능한 동작이 있을 때, 설정(1101)은 대응하는 투명 레이어 커맨드를 결정하는 데 사용될 수 있다. 예를 들어, 도 7의 버튼(701B)은, 입력 좌표가 사용자 입력으로서 수신될 때, 사용자가 선택, 포인팅, 또는 그리기 모드들 사이에서 선택할 수 있게 한다. 이러한 설정은 투명 레이어 커맨드를 결정하기 위해, 그리고 더 나아가, 어느 네이티브 커맨드가 수행되고 어느 동작이 수행되는지를 결정하기 위해 사용될 수 있다. 이 경우에 있어서, 가능한 네이티브 커맨드는 기초 UI 내의 대응하는 위치 좌표와 연관된 객체를 선택하도록 구성된 선택 커맨드, 포인터를 기초 UI 내의 대응하는 위치 좌표로 이동시키도록 구성된 포인터 커맨드, 및 기초 UI 내의 대응하는 위치 좌표에서 디스플레이 출력을 변경하도록 구성된 그래픽 커맨드를 포함할 수 있다.When there is more than one possible action mapped to a particular context and user input, the setting 1101 can be used to determine the corresponding transparent layer command. For example, button 701B of FIG. 7 allows the user to select between selection, pointing, or drawing modes when input coordinates are received as user input. This setting can be used to determine the transparent layer command, and furthermore, to determine which native command is performed and which operation is performed. In this case, possible native commands are a selection command configured to select an object associated with a corresponding position coordinate in the base UI, a pointer command configured to move the pointer to a corresponding position coordinate in the base UI, and a corresponding position in the base UI. It may include a graphic command configured to change the display output in coordinates.

도 12a는 선택 모드가 토글될(Toggled) 때 입력 좌표를 수신하는 예를 도시한다. 도 12a에 도시된 바와 같이, 사용자는 디스플레이 장치(1201) 상의 (중첩되는 투명 UI(1203)를 갖는) 운영 체제 UI(1202)에서 스타일러스(1200)를 지시했다. 앞서 예와 유사하게, 카메라(1204)는 스타일러스(1200)에 대한 위치 및 배향 정보, 및 입력 좌표를 결정하는 데 사용될 수 있다. 선택 모드가 토글되고 스타일러스(1200)가 운영 체제 UI(12102) 내의 폴더(1205)로 지시되므로, 결정된 투명 레이어 커맨드는 입력 좌표와 연관된 객체를, 이 경우에는 폴더(1205)를 선택하라는 네이티브 운영 체제 커맨드를 포함할 수 있다. 다른 예에서, 윈도우가 입력 좌표에 위치되었다면, 이는 전체 윈도우의 선택을 초래할 것이다.12A shows an example of receiving the input coordinates when the selection mode is toggled. As shown in FIG. 12A, the user instructed the stylus 1200 in the operating system UI 1202 (with the superimposed transparent UI 1203) on the display device 1201. Similar to the previous example, the camera 1204 may be used to determine position and orientation information for the stylus 1200 and input coordinates. Since the selection mode is toggled and the stylus 1200 is directed to the folder 1205 in the operating system UI 12102, the determined transparent layer command is the native operating system to select the object associated with the input coordinates, in this case the folder 1205. May contain commands. In another example, if the window was positioned at the input coordinates, this would result in selection of the entire window.

도 12b는 포인팅 모드가 토글될 때 입력 좌표를 수신하는 예를 도시한다. 이 경우에 있어서, 결정된 투명 레이어 커맨드는 마우스 포인터(1206)를 입력 좌표의 위치로 이동시키라는 네이티브 운영 체제 커맨드를 포함할 수 있다.12B shows an example of receiving input coordinates when the pointing mode is toggled. In this case, the determined transparent layer command may include a native operating system command to move the mouse pointer 1206 to the position of the input coordinate.

도 12c는, 드로잉 모드가 토글되고 사용자가 다수의 입력 좌표 위에서 스타일러스(1200)를 스와이프했을 때, 입력 좌표를 수신하는 예를 도시한다. 이 경우에 있어서, 결정된 투명 레이어 커맨드는 입력 좌표 각각의 위치에 있는 디스플레이 출력을 변경하라는 네이티브 운영 체제 커맨드를 포함하여, 사용자가 사용자 인터페이스(1202) 상에 라인(1207)을 그리는 결과를 초래할 수 있다. 드로잉 모드에서 생성된 수정된 그래픽 출력은 투명 레이어(1203)의 일부로서, 예를 들어 입력 좌표의 경로와 관련된 메타데이터로서 저장될 수 있다. 사용자는 그 다음에, 변경된 디스플레이 출력을 이미지로서 익스포트하는 옵션을 선택할 수 있다.12C shows an example of receiving input coordinates when the drawing mode is toggled and the user swipes the stylus 1200 over a plurality of input coordinates. In this case, the determined transparent layer command includes a native operating system command to change the display output at each location of the input coordinates, resulting in the user drawing a line 1207 on the user interface 1202. . The modified graphic output generated in the drawing mode may be stored as a part of the transparent layer 1203, for example, as metadata related to the path of the input coordinates. The user can then select the option to export the modified display output as an image.

사용자 입력이 제스처로서 식별되는 상황에서, 식별된 콘텍스트에 적어도 부분적으로 기초하여 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환하는 것은 식별된 제스처 및 식별된 콘텍스트에 적어도 부분적으로 기초하여 투명 레이어 커맨드를 결정하는 것을 포함할 수 있다. 투명 레이어 커맨드는 식별된 콘텍스트 내의 적어도 하나의 네이티브 커맨드를 포함할 수 있으며, 이때 적어도 하나의 네이티브 커맨드는 식별된 콘텍스트 내의 식별된 제스처와 연관된 동작을 수행하도록 구성된다. 이것의 예가 네이티브 커맨드가 웹 브라우저에서 스크롤 동작을 수행하도록 구성되는 결과를 초래하는 웹 브라우저 애플리케이션 콘텍스트 및 스와이프 제스처에 대해 위에서 논의되어 있다.In a situation in which user input is identified as a gesture, converting the user input to one or more transparent layer commands based at least in part on the identified context determines the transparent layer command based at least in part on the identified gesture and the identified context. May include. The transparent layer command may include at least one native command within the identified context, wherein the at least one native command is configured to perform an action associated with the identified gesture within the identified context. An example of this is discussed above for web browser application context and swipe gestures resulting in the native command being configured to perform a scroll operation in the web browser.

사용자 입력이 (예컨대, 음성 인식을 사용함으로써) 하나 이상의 단어로서 식별되는 상황에서, 식별된 것에 적어도 부분적으로 기초하여 사용자 입력을 하나 이상의 투명 레이어 커맨드로 변환하는 것은 식별된 하나 이상의 단어 및 식별된 콘텍스트에 적어도 부분적으로 기초하여 투명 레이어 커맨드를 결정하는 것을 포함할 수 있다. 투명 레이어 커맨드는 식별된 콘텍스트 내의 적어도 하나의 네이티브 커맨드를 포함할 수 있으며, 이때 적어도 하나의 네이티브 커맨드는 식별된 콘텍스트 내의 식별된 하나 이상의 단어와 연관된 동작을 수행하도록 구성된다.In situations in which user input is identified as one or more words (e.g., by using speech recognition), converting the user input to one or more transparent layer commands based at least in part on what is identified may be performed on the identified one or more words and the identified context. And determining the transparent layer command based at least in part on. The transparent layer command may include at least one native command within the identified context, wherein the at least one native command is configured to perform an action associated with the identified one or more words within the identified context.

도 13은 입력 음성 데이터에서 식별된 하나 이상의 단어에 기초하여 결정된 투명 레이어 커맨드(1300)의 예를 도시한다. 식별된 단어(1301)는 어구 "화이트보드" 또는 "빈 페이지" 중 하나를 포함한다. 투명 레이어 커맨드(1300)는 또한, 커맨드의 설명(1302), 및 투명 레이어 커맨드의 실행 시에 투명 레이어에 의해 가상 드라이버로 그리고 하드웨어 출력 장치로 전송된 출력 인스트럭션인 응답 인스트럭션(1303)을 포함한다. 추가로, 투명 레이어 커맨드(1300)는 화이트보드 기능을 호출하는 데 사용되는 실제 네이티브 커맨드(1304)를 포함한다.13 shows an example of a transparent layer command 1300 determined based on one or more words identified in input speech data. The identified word 1301 includes one of the phrases “whiteboard” or “blank page”. The transparent layer command 1300 also includes a description 1302 of the command, and a response instruction 1303, which is an output instruction sent by the transparent layer to the virtual driver and to the hardware output device upon execution of the transparent layer command. Additionally, the transparent layer command 1300 includes an actual native command 1304 used to invoke the whiteboard function.

도 14는 예시적인 실시예에 따른, 입력 음성 데이터에서 식별된 하나 이상의 단어에 기초하여 결정된 투명 레이어 커맨드(1400)의 다른 예를 도시한다. 이 예에서, 하나 이상의 단어는 "이메일을 열어라"이다. 도 14에 도시된 바와 같이, 투명 레이어 커맨드(1400)는 아웃룩 애플리케이션을 실행시키는 특정 실행 가능 파일을 실행시키는 인스트럭션인 네이티브 커맨드 "outlook.exe"를 포함한다. 투명 레이어 커맨드(1400)는 또한, 음성 커맨드를 수신한 것에 응답하여 출력될 음성 응답 "이메일 열림(Email Opened)"을 포함한다.Fig. 14 shows another example of a transparent layer command 1400 determined based on one or more words identified in input voice data, according to an exemplary embodiment. In this example, one or more words are "open email". As shown in Fig. 14, the transparent layer command 1400 includes a native command "outlook.exe" which is an instruction for executing a specific executable file for executing an Outlook application. The transparent layer command 1400 also includes a voice response "Email Opened" to be output in response to receiving the voice command.

도 3을 다시 참조하면, 단계(304)에서, 하나 이상의 투명 레이어 커맨드는 투명 레이어 상에서 실행된다. 하나 이상의 투명 레이어 커맨드의 실행은 식별된 콘텍스트 내의 하나 이상의 네이티브 커맨드의 실행을 야기하도록 구성된다.Referring again to FIG. 3, in step 304, one or more transparent layer commands are executed on the transparent layer. Execution of one or more transparent layer commands is configured to cause execution of one or more native commands within the identified context.

도 15는 예시적인 실시예에 따른, 투명 레이어 상에서 하나 이상의 투명 레이어 커맨드를 실행하기 위한 흐름도를 도시한다. 단계(1501)에서, 투명 레이어 커맨드 내의 적어도 하나의 네이티브 커맨드가 식별된다. 네이티브 커맨드는, 예를 들어, 투명 레이어 커맨드의 구조 내의 네이티브 커맨드로서 지정되어, 식별을 허용하게 할 수 있다.Fig. 15 is a flow chart for executing one or more transparent layer commands on a transparent layer, according to an exemplary embodiment. In step 1501, at least one native command in the transparent layer command is identified. The native command can be designated as a native command in the structure of the transparent layer command, for example, to allow identification.

단계(1502)에서, 적어도 하나의 네이티브 커맨드는 식별된 콘텍스트에서 실행된다. 이 단계는 식별된 콘텍스에 대해 식별된 API를 통해 적어도 하나의 네이티브 커맨드를 그 식별된 콘텍스트로 전달하는 것, 및 식별된 콘텍스트 내의 네이티브 커맨드를 실행하는 것을 포함할 수 있다. 예를 들어, 식별된 콘텍스트가 운영 체제인 경우, 네이티브 커맨드는 운영 체제 API를 통해 실행을 위한 운영 체제로 전달될 수 있다. 추가로, 식별된 콘텍스트가 애플리케이션인 경우, 네이티브 커맨드는 애플리케이션 API를 통해 실행을 위한 애플리케이션으로 전달될 수 있다.In step 1502, at least one native command is executed in the identified context. This step may include passing at least one native command to the identified context via the identified API for the identified context, and executing the native command within the identified context. For example, if the identified context is an operating system, the native command may be passed to the operating system for execution through the operating system API. Additionally, if the identified context is an application, the native command may be passed to the application for execution through the application API.

선택적으로, 단계(1503)에서, 응답이 하드웨어 장치(들)로 전송될 수 있다. 앞서 논의된 바와 같이, 이러한 응답은 투명 레이어로부터 가상 드라이버로 그리고 하드웨어 장치 상으로 라우팅(Route)될 수 있다.Optionally, in step 1503, a response may be sent to the hardware device(s). As discussed above, this response can be routed from the transparent layer to the virtual driver and onto the hardware device.

도 16 내지 도 19는 본 명세서에 개시된 시스템의 추가 특징을 도시한다. 도 16은 예시적인 실시예에 따른, 사용자 입력에 대응하는 새로운 커맨드를 추가하기 위한 예시적인 인터페이스를 도시한다. 인터페이스(1600) 내의 대시보드는, 이미 추가되었고 사전결정된 사용자 입력 및 하드웨어 장치(예컨대, 음성 커맨드)를 사용하여 개시될 수 있는 애플리케이션(1601)의 아이콘을 포함한다. 대시보드는 또한, 애플리케이션 특정적이고 소정 사용자 입력에 맵핑되는 다른 커맨드를 보여줄 수 있다. 추가 버튼(1602)의 선택은 추가 커맨드 메뉴(1603)를 연다. 이러한 메뉴는 사용자가 다음 옵션들 사이에서 선택할 수 있게 한다: 항목 유형: 하부 바 메뉴 상에 추가할 고정 항목/드래그 메뉴에 추가할 일반 항목; 아이콘: 이미지 아이콘을 선택한다; 배경: 배경 아이콘 컬러를 선택한다; 컬러: 아이콘 컬러를 선택한다; 이름: 새로운 항목 이름을 설정한다; 음성 커맨드: 새로운 애플리케이션을 열라는 음성 활성화 커맨드를 설정한다; 피드백 응답: 애플리케이션 음성 응답 피드백을 설정한다; 커맨드: 애플리케이션 유형 또는 맞춤 커맨드 유형을 선택하여 개시한다(예컨대, 애플리케이션 커맨드를 개시한다, 애플리케이션 커맨드 내의 동작을 수행한다, 애플리케이션 커맨드를 닫는다 등); 프로세스 시작: 새로운 프로세스 또는 애플리케이션을 실행시키는 경우, 프로세스 또는 애플리케이션의 이름; 및 파라미터: 새로운 프로세스 또는 애플리케이션으로 전달할 임의의 파라미터이다.16-19 illustrate additional features of the system disclosed herein. Fig. 16 shows an exemplary interface for adding a new command corresponding to a user input, according to an exemplary embodiment. The dashboard within interface 1600 includes an icon of an application 1601 that has already been added and can be launched using predetermined user input and hardware devices (eg, voice commands). The dashboard may also show other commands that are application specific and are mapped to certain user inputs. Selection of the add button 1602 opens the add command menu 1603. These menus allow the user to choose between the following options: Item Type: Fixed item to add on the lower bar menu/generic item to add to the drag menu; Icon: Select an image icon; Background: Select the background icon color; Color: Select the icon color; Name: Set a new item name; Voice command: Set a voice activation command to open a new application; Feedback Response: Set the application voice response feedback; Command: Select and start an application type or a custom command type (eg, start an application command, perform an operation within an application command, close an application command, etc.); Process start: When launching a new process or application, the name of the process or application; And parameters: any parameters to be passed to the new process or application.

도 17은 예시적인 실시예에 따른, 드로잉 인터페이스(1700) 및 그리기 모드의 다양한 구성 요소 및 옵션을 도시한다. 도 18은 객체를 인식하는 데 사용되고 사용자가 터치 및 제스처를 사용하여 입력을 제공할 수 있게 하는 비디오 카메라 하드웨어 장치에 대한 캘리브레이션 및 설정 인터페이스(1800)를 도시한다. 도 19는 사용자가 인터페이스의 다양한 양태를 맞출 수 있게 하고, 입력 모드를 토글하고, 다른 변화를 이루는 일반 설정 인터페이스(1900)를 도시한다. 인터페이스(100)에서 보여지는 바와 같이, 사용자는 또한, 설정 페이지에 접근하여 하드웨어 스타일러스("매직 스타일러스(Magic Stylus)"로 지칭됨)에 대한 설정을 캘리브레이션 및 조정할 수 있다.Fig. 17 shows a drawing interface 1700 and various components and options of a drawing mode, according to an exemplary embodiment. FIG. 18 shows a calibration and setup interface 1800 for a video camera hardware device that is used to recognize an object and allows a user to provide input using touch and gestures. 19 shows a general settings interface 1900 that allows a user to customize various aspects of the interface, toggle input modes, and make other changes. As shown in interface 100, a user can also access a settings page to calibrate and adjust settings for a hardware stylus (referred to as "Magic Stylus").

본 명세서에 개시된 시스템은 다수의 네트워킹된 컴퓨팅 기기 상에서 구현될 수 있고, 네트워킹된 협업 세션을 이행하는 데 있어서 도움을 주는 데 사용될 수 있다. 예를 들어, 앞서 기술된 화이트보드 기능은 다수의 컴퓨팅 기기 상의 다수의 사용자 사이의 공유된 화이트보드일 수 있다.The systems disclosed herein can be implemented on multiple networked computing devices and can be used to assist in conducting networked collaboration sessions. For example, the whiteboard function described above may be a shared whiteboard between multiple users on multiple computing devices.

그러나, 기존의 화이트보드 또는 기타 공유 협업 공간의 문제점 중 하나는, 원격 컴퓨팅 기기와 상호 작용하거나, 공동 작업 세션을 중단 또는 방해하지 않고 데스크탑 스크린을 공유할 수 있는, 용이한 방법이 존재하지 않는다는 것이다. 예를 들어, 협업 워크스페이스의 참가자가 다른 참가자와 프리젠테이션을 공유하려는 경우, 모든 참가자는 협업 세션을 최소화하거나 닫고, 스크린 공유 애플리케이션을 실행하여 스크린 공유 미팅에 참가해야 한다. 협업 공간은 작업 흐름 및 공유 브레인스토밍을 세션을 촉진하도록 설계되었으나, 이는 공유 협업 세션 동안 상기의 이유로 인해 자주 중단된다.However, one of the problems with existing whiteboards or other shared collaboration spaces is that there is no easy way to interact with a remote computing device or share a desktop screen without interrupting or interrupting a collaboration session. . For example, if a participant in a collaboration workspace wants to share a presentation with another participant, all participants must minimize or close the collaboration session and launch a screen sharing application to join the screen sharing meeting. The collaboration space is designed to facilitate the workflow and shared brainstorming sessions, but this is often interrupted for the above reasons during shared collaboration sessions.

범용 하드웨어-소프트웨어 인터페이스를 구현하기 위한 전술된 방법 및 시스템에 추가하여, 본 출원인은 네트워킹된 협업 워크스페이스 내에서 웹 소켓 연결을 통해 데스크탑을 공유할 수 있는 방법, 장치 및 컴퓨터 판독 가능 매체를 추가적으로 발견하였다.In addition to the above-described methods and systems for implementing a universal hardware-software interface, the Applicant has additionally discovered a method, apparatus and computer-readable medium capable of sharing a desktop via a web socket connection within a networked collaborative workspace. I did.

도 20은 예시적인 실시예에 따른, 네트워킹된 협업 워크스페이스 내에서 웹 소켓 연결을 통해 데스크탑을 공유하기 위한 흐름도를 도시한다. 도 20에 도시된 모든 단계는, 서버에 연결된 클라이언트 기기와 같은 로컬 컴퓨팅 기기에서 수행될 수 있으며, 복수의 컴퓨팅 기기가 필요하지 않다. 개시된 프로세스는 또한 서버에 연결된 복수의 장치에 의해 구현될 수 있다.Fig. 20 shows a flow chart for sharing a desktop through a web socket connection within a networked collaborative workspace, according to an exemplary embodiment. All of the steps shown in FIG. 20 may be performed on a local computing device, such as a client device connected to a server, and do not require a plurality of computing devices. The disclosed process can also be implemented by multiple devices connected to the server.

단계(2001)에서는, 서버에서 호스팅되는 협업 워크스페이스의 리프리젠테이션이 로컬 컴퓨팅 기기의 사용자 인터페이스 상에서 전송된다. 상기 협업 워크스페이스는 웹 소켓 연결을 통해 복수의 컴퓨팅 기기 상의 복수의 참가자에게 접근 가능하며, 상기 복수의 참가자는 로컬 컴퓨팅 기기에서의 로컬 참가자 및 원격 컴퓨팅 기기에서의 하나 이상의 원격 참가자를 포함한다. 본원에 사용된 원격 컴퓨팅 기기 및 원격 참가자는, 로컬 컴퓨팅 기기 및 로컬 참가자 이외의 컴퓨팅 기기 및 참가자를 지칭한다. 원격 컴퓨팅 기기는 WAN(wide area network)과 같은 네트워크에 의해, 로컬 기기와 분리된다.In step 2001, a representation of the collaborative workspace hosted on the server is transmitted on the user interface of the local computing device. The collaboration workspace is accessible to a plurality of participants on a plurality of computing devices through a web socket connection, the plurality of participants including a local participant at a local computing device and one or more remote participants at a remote computing device. A remote computing device and a remote participant, as used herein, refers to a computing device and participant other than the local computing device and the local participant. The remote computing device is separated from the local device by a network such as a wide area network (WAN).

도 21a는 예시적인 실시예에 따른, 협업 워크스페이스를 호스팅하고 전송하는 데 사용되는 네트워크 아키텍처(network architecture)를 도시한다. 도 21a에 도시된 바와 같이, 서버(2100)는 컴퓨팅 기기(2101A~2101F)에 연결된다. 서버(2100) 및 컴퓨팅 기기(2101A~2101F)는, 컴퓨팅 기기(2101A~2101F)(클라이언트) 와 서버(2100) 간의 양방향 통신을 허용하는 웹 소켓 연결과 같은 네트워크 연결을 통해 연결될 수 있다. 도 21a에 도시된 바와 같이, 컴퓨팅 기기는 노트북, 데스크탑, 스마트폰 또는 기타 모바일 장치 등의 임의의 유형의 컴퓨팅 기기일 수 있다.21A shows a network architecture used to host and transport collaborative workspaces, according to an exemplary embodiment. As shown in Fig. 21A, the server 2100 is connected to the computing devices 2101A to 2101F. The server 2100 and the computing devices 2101A to 2101F may be connected through a network connection such as a web socket connection that allows two-way communication between the computing devices 2101A to 2101F (client) and the server 2100. 21A, the computing device may be any type of computing device, such as a notebook, desktop, smart phone, or other mobile device.

협업 워크스페이스는, 예를 들어, 웹 소켓 연결을 통해 복수의 참가자 중 임의의 참가자로부터 다른 참가자로 임의의 편집을 전파하도록 구성된 디지털 화이트보드일 수 있다. 도 21b는 예시적인 실시예에 따른, 편집을 네트워크 내의 협업 워크스페이스로 전파하기 위한 프로세스를 도시한다. 도 21b에 도시된 바와 같이, 컴퓨팅 기기(2101B)에서의 사용자가 협업 워크스페이스에 대한 편집 또는 변경을 수행하는 경우, 이러한 편집 또는 변경(2102B)은 서버(2100)로 전송되며, 이는 여기서 워크스페이스의 호스팅된 버전을 업데이트하는 데 사용된다. 이후, 편집 또는 변경은, 업데이트(2102A, 2102C, 2102D, 2102E, 2102F)로서 서버(2100)에 의해 다른 연결된 컴퓨팅 기기(2101A, 2101C, 2101D, 2101E, 2101F)로 전파된다.The collaborative workspace may be, for example, a digital whiteboard configured to propagate any edits from any of the plurality of participants to other participants via a web socket connection. 21B shows a process for propagating edits to a collaborative workspace within a network, according to an exemplary embodiment. 21B, when a user at the computing device 2101B makes an edit or change to a collaborative workspace, this edit or change 2102B is transmitted to the server 2100, where the workspace Used to update the hosted version of. Thereafter, edits or changes are propagated by server 2100 as updates 2102A, 2102C, 2102D, 2102E, 2102F to other connected computing devices 2101A, 2101C, 2101D, 2101E, 2101F.

협업 워크스페이스의 각각의 리프리젠테이션은 로컬 참가자에 맞춰진 협업 워크스페이스 버전일 수 있다. 예를 들어, 전술된 바와 같이, 협업 워크스페이스의 각각의 리프리젠테이션은, 서버에 연결된 하나 이상의 원격 컴퓨팅 기기에 대응하는 하나 이상의 원격 참가자 객체를 포함할 수 있다.Each representation of the collaboration workspace may be a version of the collaboration workspace tailored to local participants. For example, as described above, each representation of the collaboration workspace may include one or more remote participant objects corresponding to one or more remote computing devices connected to the server.

도 22는 일 실시예에 따른 협업 워크스페이스의 복수의 리프리젠테이션을 도시한다. 도 22에 도시된 바와 같이, 서버(2200)는 협업 워크스페이스(2201)를 호스팅한다. 서버에서 호스팅되는 협업 워크스페이스의 버전은, 전술된 바와 같이, 연결된 장치로 전파된다. 또한, 도 22는 세 명의 연결된 사용자(사용자 1, 사용자 2, 사용자 3)을 위한 협업 워크스페이스의 리프리젠테이션을 도시한다. 각 리프리젠테이션은 선택적으로 로컬 참가자에게(각 위치에서의 로컬 컴퓨팅 기기에게) 맞춰질 수 있다.22 is a diagram illustrating a plurality of representations of a collaborative workspace according to an embodiment. As shown in FIG. 22, the server 2200 hosts a collaborative workspace 2201. The version of the collaborative workspace hosted on the server is propagated to connected devices, as described above. In addition, FIG. 22 shows a representation of a collaboration workspace for three connected users (User 1, User 2, and User 3). Each representation can optionally be tailored to a local participant (to a local computing device at each location).

도 20으로 돌아가면, 단계(2002)에서, 로컬 컴퓨팅 기기에 의해, 협업 워크스페이스 내의 로컬 컴퓨팅 기기의 로컬 데스크탑의 적어도 하나의 부분을 공유하기 위한 요청 및 협업 워크스페이스의 리프리젠테이션 내 하나의 영역의 선택이 수신된다.Returning to Fig. 20, in step 2002, a request to share at least one portion of the local desktop of the local computing device in the collaboration workspace and one area in the representation of the collaboration workspace by the local computing device. A selection of is received.

도 23a 및 도 23b는 예시적인 실시예에 따른, 협업 워크스페이스 내의 로컬 컴퓨팅 기기의 로컬 데스크탑의 적어도 하나의 부분을 공유하기 위한 요청 및 협업 워크스페이스의 리프리젠테이션 내 하나의 영역의 선택을 수신하는 단계의 예를 도시한다.23A and 23B are for receiving a request to share at least one portion of a local desktop of a local computing device in a collaboration workspace and a selection of one area in a representation of the collaboration workspace, according to an exemplary embodiment. An example of steps is shown.

도 23a는 예시적인 실시예에 따른, 요청 및 하나의 영역의 선택을 수신하기 이전인 로컬 컴퓨팅 기기의 사용자 인터페이스(데스크탑)의 예를 도시한다. 도 23a에 도시된 바와 같이, 사용자 인터페이스(2301)는 서버에서 호스팅되는 협업 워크스페이스(2303)의 리프리젠테이션을 국부적으로 디스플레이하는 협업 애플리케이션(2302)뿐만 아니라, 별도의 프리젠테이션 애플리케이션(2308)(예: PowerpointTM) 및 별도의 문서 편집 애플리케이션(예: WordTM)을 포함한다. 로컬 컴퓨팅 기기 상에서 실행되는 모든 사용자 애플리케이션은, 운영 체제와 연관된 메뉴를 불러오는 운영 체제 메뉴 버튼에 추가되어 운영 체제 ("OS")의 작업 표시줄(2306)에 탭으로 표시된다.Fig. 23A shows an example of a user interface (desktop) of a local computing device prior to receiving a request and selection of one area, according to an exemplary embodiment. As shown in FIG. 23A, the user interface 2301 includes a collaboration application 2302 that locally displays a representation of a collaboration workspace 2303 hosted on a server, as well as a separate presentation application 2308 ( Examples: Powerpoint TM ) and separate document editing applications (eg Word TM ). All user applications running on the local computing device are displayed as tabs on the taskbar 2306 of the operating system (“OS”) in addition to the operating system menu button that brings up a menu associated with the operating system.

협업 애플리케이션(2302)은, 툴바(2304)뿐만 아니라, 로컬 참가자 및 기타 임의의 참가자에 의한 모든 편집 및 기여를 포함하는 협업 워크스페이스(2303)의 리프리젠테이션을 포함할 수 있다. 툴바(2304)는 다양한 편집 도구, 설정, 커맨드 및, 협업 워크스페이스의 리프리젠테이션과 상호작용하거나 상기 리프리젠테이션을 구성할 옵션을 포함할 수 있다. 예를 들어, 툴바(2304)는 협업 워크스페이스(2303)의 리프리젠테이션에 그림을 그릴 편집 도구를 포함할 수 있으며, 편집은 웹 소켓 연결을 통해 서버 및 다른 연결된 컴퓨팅 기기로 전파된다.Collaboration application 2302 may include a representation of the collaborative workspace 2303, including all edits and contributions by local participants and any other participants, as well as toolbar 2304. The toolbar 2304 may include various editing tools, settings, commands, and options for interacting with or configuring a representation of a collaborative workspace. For example, the toolbar 2304 may include an editing tool to draw on the representation of the collaborative workspace 2303, and the editing is propagated to the server and other connected computing devices via a web socket connection.

추가적으로 툴바(2304)는, 상기 툴바(2304)가 선택될 때, 로컬 컴퓨팅 기기로 하여금 협업 워크스페이스 내의 로컬 컴퓨팅 기기의 로컬 데스크탑의 적어도 하나의 부분을 공유하라는 요청을 수신하도록 하는, 스크린 공유 버튼(2305)을 추가로 포함한다. 따라서, 사용자는 스크린 공유 버튼(2305)을 선택하여 협업 워크스페이스 내에서 스크린 공유를 개시할 수 있다.Additionally, the toolbar 2304, when the toolbar 2304 is selected, causes the local computing device to receive a request to share at least one portion of the local desktop of the local computing device in the collaborative workspace, a screen sharing button ( 2305). Accordingly, the user can initiate screen sharing within the collaborative workspace by selecting the screen sharing button 2305.

도 23b는 예시적인 실시예에 따른, 요청을 수신한 이후이되 영역을 선택하기 이전인 로컬 컴퓨팅 기기의 사용자 인터페이스(데스크탑)의 예를 도시한다. 도 23b에 도시된 바와 같이, 스크린 공유 버튼(2305)의 선택은 협업 워크스페이스(2303)의 리프리젠테이션 내에 영역 윈도우(2309)가 나타나도록 할 수 있다. 영역 윈도우(2309)는 로컬 데스크탑(또는 로컬 데스크탑의 일부)의 스크린 공유를 위한 결과 출력 영역을 결정하고, 사용자에 의하여 크기, 형태, 방향, 위치 등의 관점에서 이동되거나 또는 맞춰질 수 있다. 윈도우(2309)의 위치/크기/형태를 선택한 후, 사용자는 소정의 입력(예: 포인팅 장치 누르기, 버튼(2305) 재선택 또는 기타 입력)을 통하여 선택을 확정할 수 있다. 이후, 협업 워크스페이스 내의 관련 파라미터(크기, 형태, 방향 등)를 포함하는 선택된 영역은 로컬 컴퓨팅 기기에 의해 수신될 수 있다. 선택적으로, 상기 영역은 디폴트 크기, 위치 및 방향을 포함한 소정의 디폴트 값으로 설정될 수 있으며, 사용자가 영역에서 벗어나고자 할 경우, 사용자에 의하여 추가로 구성될 수 있다.Fig. 23B is a diagram showing an example of a user interface (desktop) of a local computing device after receiving a request but before selecting a region, according to an exemplary embodiment. As shown in FIG. 23B, selection of the screen sharing button 2305 may cause the area window 2309 to appear in the representation of the collaboration workspace 2303. The area window 2309 determines a result output area for screen sharing of the local desktop (or a part of the local desktop), and may be moved or aligned in terms of size, shape, direction, position, etc. by a user. After selecting the location/size/shape of the window 2309, the user may confirm the selection through a predetermined input (eg, pressing a pointing device, reselecting the button 2305, or other input). Thereafter, the selected area including related parameters (size, shape, direction, etc.) in the collaboration workspace may be received by the local computing device. Optionally, the area may be set to a predetermined default value including a default size, position, and direction, and may be additionally configured by the user when the user wants to leave the area.

물론, 도 23a 및 도 23b에 도시된 프로세스는, 협업 워크스페이스 내의 로컬 컴퓨팅 기기의 로컬 데스크탑의 적어도 하나의 부분을 공유하기 위한 요청 및 협업 워크스페이스의 리프리젠테이션 내 하나의 영역의 선택을 수신하는, 하나의 예일 뿐이다. 이러한 단계는 다양한 방법으로 구현될 수 있다. 예를 들어, 스크린 공유 버튼(2305)이 선택되는 대신, 협업 워크스페이스(2303) 내로 드래그될 수 있다. 스크린 공유 요청은 키보드 커맨드 또는, 메뉴 또는 하위 메뉴 내의 선택과 같은, 소정의 입력 커맨드(상기 커맨드는 협업 애플리케이션에 의해 스크린 공유 요청으로 인식될 수 있음)를 사용하는 사용자에 의해 개시될 수도 있다. 협업 워크스페이스 내에서 스크린 공유를 개시하라는 요청은, 별도의 스크린 공유 세션이 이미 시작된 후에도 개시될 수 있다. 예를 들어, 사용자는 작업 표시줄 탭, 아이콘 또는 스크린 공유 윈도우를 협업 워크스페이스 내의 위치로 드래그하여, 컴퓨팅 기기가 협업 워크스페이스 내의 하나의 영역의 선택과 요청을 모두 수신하도록 할 수 있다.Of course, the process shown in FIGS. 23A and 23B is to receive a request to share at least one portion of the local desktop of a local computing device within the collaboration workspace and a selection of one area within the representation of the collaboration workspace. , It is just one example. These steps can be implemented in a variety of ways. For example, instead of the screen share button 2305 being selected, it may be dragged into the collaboration workspace 2303. The screen sharing request may be initiated by a user using a keyboard command or a predetermined input command (the command may be recognized as a screen sharing request by a collaborative application), such as a selection in a menu or sub-menu. The request to initiate screen sharing within the collaborative workspace may be initiated even after a separate screen sharing session has already started. For example, the user may drag a taskbar tab, icon, or screen sharing window to a location within the collaboration workspace, so that the computing device receives both the selection and request of one area within the collaboration workspace.

로컬 컴퓨팅 기기의 로컬 데스크탑의 적어도 하나의 부분과 협업 워크스페이스의 리프리젠테이션 내 하나의 영역의 선택을 공유하기 위한 요청을 수신하는 단계는, 사용자가 스크린 공유를 위한 소스, 예를 들어, 데스크탑 전체를 공유할지, 데스크탑 내에서 하나 이상의 윈도우를 공유할지 또는 로컬 컴퓨팅 기기에서 실행중인 하나 이상의 애플리케이션과 연관된 출력을 공유할지 여부와 같은 소스를 선택할 수 있도록 하는, 하위 단계를 포함할 수 있다. 이러한 하위 단계는 사용자 인터페이스 내에서 소스 선택 인터페이스를 전송하는 것을 포함할 수 있으며, 소스 선택 인터페이스는 로컬 데스크탑의 적어도 하나의 부분의 선택을 수신하고, 소스 선택 인터페이스 내에서 로컬 데스크탑의 적어도 하나의 부분의 선택을 수신하도록 구성된다.Receiving a request for sharing a selection of at least one portion of a local desktop of a local computing device and a selection of an area within a representation of a collaborative workspace may include a source for screen sharing, for example, the entire desktop It may include a sub-step of allowing a source to be selected, such as whether to share an output, whether to share one or more windows within a desktop, or an output associated with one or more applications running on a local computing device. These sub-steps may include sending a source selection interface within the user interface, the source selection interface receiving a selection of at least one portion of the local desktop, and receiving a selection of at least one portion of the local desktop within the source selection interface. It is configured to receive a selection.

도 24a 내지 도 24c는 예시적인 실시예에 따른, 소스 선택 프로세스의 예를 도시한다. 도 24a는 사용자가 임의의 스크린 공유 커맨드 또는 버튼을 선택하기 이전의, 로컬 컴퓨팅 기기의 사용자 인터페이스(데스크탑)(2406)를 도시한다. 숫자(2401~2408)는 전술된 도 23a의 숫자(2301~2308)와 동일한 구성 요소를 나타낸다.24A-24C show an example of a source selection process, according to an exemplary embodiment. 24A shows a user interface (desktop) 2406 of the local computing device before the user selects any screen share command or button. Numerals 2401-2408 represent the same elements as numbers 2301-2308 in FIG. 23A described above.

도 24b는 사용자가 스크린 공유 버튼(2405)을 선택한 이후의 사용자 인터페이스(2406)를 도시한다. 도 24b에 도시된 바와 같이, 소스 선택 인터페이스(2409)는 협업 워크스페이스(2403) 내에서, 사용자가 데스크탑 전체를 공유할지 또는 일부를 공유할지 여부 및 데스크탑의 어느 부분을 공유할지를 선택할 수 있도록 하는, 협업 애플리케이션(2404) 내에서 전송될 수 있다. 소스 선택 인터페이스는, 임의의 윈도우(예: 운영 체제에 해당하는 윈도우 또는 애플리케이션에서 생성된 윈도우)뿐만 아니라 로컬 컴퓨팅 기기에서 실행중인, 현재 활성화된 모든 애플리케이션을 나열할 수 있으며, 사용자로 하여금 전체 로컬 데스크탑을 공유할지, 로컬 데스크탑 내의 하나 이상의 윈도우를 공유할지, 또는 로컬 컴퓨팅 기기 상에서 실행되는 하나 이상의 애플리케이션에 대응하는 하나 이상의 인터페이스를 공유할지를 선택할 수 있도록 한다. 예를 들어, 사용자가 공유할 애플리케이션을 선택하면, 해당 애플리케이션과 연관된 모든 인터페이스(예: 윈도우, 프롬프트(prompt), 디스플레이 등)가 공유될 수 있다. 사용자가 단일 윈도우 공유를 선택하면 해당 윈도우만이 공유된다. 또한, 사용자가 데스크탑 전체 공유를 선택하면, 데스크탑 전체의 콘텐츠를 다른 참가자와 공유할 수 있다.24B shows the user interface 2406 after the user selects the screen share button 2405. As shown in FIG. 24B, the source selection interface 2409 allows a user to select whether to share the entire desktop or a portion of the desktop, and which part of the desktop, within the collaboration workspace 2403, It may be transmitted within the collaboration application 2404. The source selection interface can list all currently active applications running on the local computing device, as well as any window (e.g., a window corresponding to an operating system or a window created by an application), allowing the user to It allows the user to choose whether to share one or more interfaces corresponding to one or more applications running on the local computing device, or one or more windows within the local desktop. For example, when a user selects an application to be shared, all interfaces (eg, windows, prompts, displays, etc.) associated with the application may be shared. If the user chooses to share a single window, only that window is shared. In addition, if the user chooses to share the entire desktop, the content of the entire desktop can be shared with other participants.

도 24c는 사용자가 선택 인터페이스(2409) 내에서 "문서 편집 앱(app)"을 선택한 이후의 인터페이스(2401)를 도시한다. 이러한 선택은 문서 편집 앱을 스크린 공유 스트림의 소스로 지정할 것이며, 이는 협업 워크스페이스 내의 다른 참가자가 로컬 컴퓨팅 기기에서 실행중인 문서 편집 애플리케이션에 대응하는 인터페이스를 볼 수 있도록 한다. 상기 선택은 메모리에 저장될 수 있고/있거나, 이하에서 더 논의되는 바와 같이, 데스크탑의 관련 부분을 캡처하는 스트리밍 객체를 생성하기 위해 사용되는 애플리케이션 또는 프로그램에 전달될 수 있다.24C shows the interface 2401 after the user selects "a document editing app" in the selection interface 2409. This selection will designate the document editing app as the source of the screen sharing stream, allowing other participants in the collaborative workspace to see the interface corresponding to the document editing application running on the local computing device. The selection may be stored in memory and/or communicated to an application or program used to create a streaming object that captures the relevant portion of the desktop, as discussed further below.

도 24a 내지 도 24c와 관련하여, 전술된 소스 선택 단계는, 도 23a 내지 도 23c와 관련하여 논의된 하나의 영역의 선택의 일부로서, 이전에, 또는 이후에 수행될 수 있다. 예를 들어, 시스템은 사용자가 스크린 공유 윈도우의 하나의 영역을 선택한 이후 소스 선택 인터페이스를 디스플레이할 수 있다. 대안적으로, 소스 선택 인터페이스는 하나의 영역을 선택하기 이전에 디스플레이될 수 있다. 또한, 소스 선택 프로세스는 전체 프로세스의 이후 단계, 예를 들어 스트리밍 객체가 생성될 때에도 수행될 수 있다.24A-24C, the source selection step described above may be performed before or after, as part of the selection of one region discussed with respect to FIGS. 23A-23C. For example, the system may display the source selection interface after the user selects one area of the screen sharing window. Alternatively, the source selection interface can be displayed prior to selecting one region. Also, the source selection process may be performed at a later stage of the entire process, for example when a streaming object is created.

소스 선택 프로세스는 생략(데스크탑 전체 공유를 디폴트로 설정)될 수도 있으며/또는 다른 방법으로 수행될 수도 있다. 예를 들어, 소스 선택 인터페이스를 디스플레이하는 대신, 사용자에게 공유하고자 하는 모든 활성화된 윈도우를 선택하도록 지시하거나 데스크탑 전체를 공유하는 커맨드를 입력하도록 지시하는, 프롬프트가 디스플레이될 수 있다. 다양한 변형이 가능하며 이러한 예는 제한하려는 의도가 아니다.The source selection process may be omitted (set the entire desktop sharing as default) and/or may be performed in another way. For example, instead of displaying the source selection interface, a prompt may be displayed, instructing the user to select all active windows to be shared or to input a command to share the entire desktop. Various variations are possible and these examples are not intended to be limiting.

단계(2002), 도 23a 및 도 23b, 및 도 24a 내지 도 24c와 관련하여 설명된 입력은 마우스, 터치스크린 또는 스타일러스(stylus)와 같은 임의의 유형의 포인팅 장치를 통해 수신될 수 있다. 가상 드라이버 및/또는 투명 레이어를 포함하는 전술된 기술을 사용하여 입력을 검출할 수 있다. 예를 들어, 입력은 사용자의 포인팅 제스쳐일 수 있다. 또한, 드래그 앤 드롭 동작, 선택, 선택 취소 또는 기타 입력 또는 입력 시퀀스 등의 전술된 동작은, 가상 드라이버 및/또는 투명 레이어를 포함하는 전술된 기술을 사용하여 입력될 수도 있다.The input described in connection with step 2002, FIGS. 23A and 23B, and FIGS. 24A-24C may be received through any type of pointing device such as a mouse, touch screen, or stylus. Input can be detected using the techniques described above, including virtual drivers and/or transparent layers. For example, the input may be a user's pointing gesture. Further, the above-described operations, such as a drag-and-drop operation, selection, deselection, or other input or input sequence, may be input using the above-described techniques including virtual drivers and/or transparent layers.

도 20으로 돌아가면, 단계(2003)에서, 로컬 컴퓨팅 기기의 로컬 데스크탑의 적어도 하나의 부분의 비디오 스트림을 출력하도록 구성된 스트리밍 객체가 생성된다. 스트리밍 객체는 로컬 데스크탑의 적어도 하나의 부분의 스트림을 캡처하도록 구성된 비디오 스트림과 같은, 미디어 스트림일 수 있다.Turning to Fig. 20, in step 2003, a streaming object configured to output a video stream of at least one portion of a local desktop of a local computing device is created. The streaming object may be a media stream, such as a video stream configured to capture a stream of at least one portion of the local desktop.

전술된 바와 같이, 서버에서 호스팅되는 협업 워크스페이스의 리프리젠테이션은 로컬 컴퓨팅 기기에서 실행되는 로컬 협업 애플리케이션에 의해 로컬 컴퓨팅 기기로 전송될 수 있다. 이러한 협업 애플리케이션은, 예를 들어 웹 애플리케이션일 수 있으며, 로컬 컴퓨팅 기기 상의 스크린 캡처 프로그램과 통신하고 인터페이싱할 수 있다. 스크린 캡처 프로그램은 데스크탑의 적어도 일부의 스트림을 생성하도록 구성된 프로그램이다. 협업 애플리케이션은 API(Application Programming Interface)를 통해 스크린 캡처 프로그램과 인터페이싱할 수 있다. 또한, 협업 애플리케이션은 투명 레이어를 통해 스크린 캡처 프로그램과 인터페이싱할 수 있으며, 이는 로컬 컴퓨팅 기기 상에서 실행되는 다수의 애플리케이션과 자체적으로 인터페이싱한다. 미디어 스트림을 생성하는 데 사용되는 스크린 캡처 프로그램 기능을 협업 애플리케이션에 통합하여, 협업 애플리케이션이 단순히 관련 루틴 또는 프로세스를 호출하여 스트리밍 객체를 인스턴스화(instantiate) 하게끔 할 수도 있다.As described above, a representation of a collaboration workspace hosted on a server may be transmitted to a local computing device by a local collaboration application running on the local computing device. Such a collaborative application can be, for example, a web application, and can communicate and interface with a screen capture program on a local computing device. The screen capture program is a program configured to create a stream of at least a portion of the desktop. Collaborative applications can interface with screen capture programs through an application programming interface (API). Collaborative applications can also interface with screen capture programs through a transparent layer, which interfacing itself with multiple applications running on local computing devices. The functionality of the screen capture program used to create the media stream can be integrated into the collaborative application, allowing the collaborative application to instantiate the streaming object simply by calling the relevant routine or process.

도 25는 예시적인 실시예에 따른, 로컬 컴퓨팅 기기의 로컬 데스크탑의 적어도 하나의 부분의 비디오 스트림을 출력하도록 구성된 스트리밍 객체를 생성하기 위한 흐름도를 도시한다.Fig. 25 shows a flowchart for creating a streaming object configured to output a video stream of at least one portion of a local desktop of a local computing device, according to an exemplary embodiment.

단계(2501)에서, 로컬 협업 애플리케이션은 상기 로컬 협업 애플리케이션과 스크린 캡처 프로그램 사이의 API를 통해, 로컬 컴퓨팅 기기 상에서 실행되는 스크린 캡처 프로그램에게 소스 식별자에 대한 요청을 전송한다. 전술된 바와 같이, 이러한 API는 그 자체로 투명 레이어가 될 수 있다. 이러한 요청에는 스크린 공유 스트림의 선택된 소스(예: 특정 애플리케이션 또는 윈도우)와 같은 추가 속성이 포함될 수 있다. 또한, 소스 선택 프로세스는 디폴트 소스(예: 데스크탑 전체)를 대신하여 요청이 제출되거나 생략된 후 수행될 수 있다. 소스 식별자는 생성될 미디어 스트림의 핸들(handle) 또는 주소(address)이며, 애플리케이션으로 하여금 미디어 스트림의 출력 및 스크린 공유 결과에 액세스할 수 있도록 한다.In step 2501, the local collaboration application transmits a request for a source identifier to the screen capture program running on the local computing device through an API between the local collaboration application and the screen capture program. As mentioned above, this API can itself be a transparent layer. These requests may include additional attributes, such as the selected source of the screen sharing stream (eg, a specific application or window). Also, the source selection process can be performed after the request has been submitted or omitted on behalf of the default source (eg, the entire desktop). The source identifier is the handle or address of the media stream to be created, and allows the application to access the output of the media stream and the screen sharing results.

단계(2502)에서, 스크린 캡처 프로그램은 로컬 컴퓨팅 기기의 로컬 데스크탑의 적어도 하나의 부분의 스트림(상기 스트림은 대응하는 소스 식별자를 가짐)을 개시한다. 스크린 캡처 프로그램에 소스 파라미터가 제공되면, 스크린 캡처 프로그램은 식별된 구성 요소(예: 특정 애플리케이션 또는 윈도우)만을 사용하여 스트림을 개시할 수 있다. 그렇지 않을 경우, 스크린 캡처 프로그램은 디폴트 옵션 또는 전술된 바와 같은 현재 소스 선택 옵션에 의해 로컬 데스크탑 전체의 스트림을 사용자에게 개시할 수 있다. 개시된 스트림은, 데스크탑의 적어도 하나의 부분에 대한 스냅샷을 주기적으로(예: 초당 30회) 캡처하는 일련의 스크린 캡처이다. 스트림은, 전술된 바와 같이, 프로그램이 스트림에 액세스 가능하도록 하는 핸들인 소스 식별자를 사용하여 액세스할 수 있다.In step 2502, the screen capture program initiates a stream of at least one portion of the local desktop of the local computing device, the stream having a corresponding source identifier. If source parameters are provided to the screen capture program, the screen capture program can initiate the stream using only the identified components (eg, specific application or window). Otherwise, the screen capture program may initiate a stream of the entire local desktop to the user with the default option or the current source selection option as described above. The disclosed stream is a series of screen captures that periodically (eg 30 times per second) capture snapshots of at least one portion of the desktop. The stream can be accessed using a source identifier, which is a handle that allows a program to access the stream, as described above.

단계(2503)에서, 스크린 캡처 프로그램은 소스 식별자를 로컬 협업 애플리케이션으로 전송한다. 단계(2504)에서, 로컬 협업 애플리케이션은 소스 식별자에 적어도 부분적으로 기반하여 스트리밍 객체를 생성한다. 로컬 협업 애플리케이션은, 소스 식별자 이외에도, 사용자가 지정한 영역과 같은 이전에 제공된 정보를 선택적으로 활용하여, 스트리밍 객체를 생성할 수 있다. 스트리밍 객체는 정의된 형식을 가진 미디어 스트림 및 대응하는 출력 인터페이스이다. 선택적으로, 정의된 형식은 선택한 영역과 같은 사용자 입력을 기반으로 할 수 있다. 스트리밍 객체는, 참가자 카메라의 비디오 스트림과 유사하게, 협업 워크스페이스 내에 임베딩되도록 구성되고 호환되는 미디어 스트림 객체이다.In step 2503, the screen capture program sends the source identifier to the local collaboration application. In step 2504, the local collaboration application creates a streaming object based at least in part on the source identifier. In addition to the source identifier, the local collaboration application may create a streaming object by selectively utilizing previously provided information such as an area designated by the user. A streaming object is a media stream with a defined format and a corresponding output interface. Optionally, the defined format can be based on user input, such as a selected area. The streaming object is a media stream object that is configured and compatible to be embedded within a collaborative workspace, similar to the video stream of a participant camera.

스크린 캡처 프로그램은, 로컬 데스크탑 또는 로컬 데스크탑의 일부의 스트림을 생성하도록 구성되거나, 로컬 협업 애플리케이션에 통합되고 로컬 데스크탑 또는 로컬 데스크탑의 일부의 스트림을 생성하도록 구성된 구성 요소를 생성하는 프로그램이다. 예를 들어, 스크린 캡처 프로그램은 WebRTC(Web Real-Time Communication) 스트리밍의 베이스 또는 종단점인 웹 브라우저 또는 브라우저 엔진 구성 요소일 수 있다. 다음 섹션에서는 스크린 캡처 프로그램이 Chrome일 때 스트리밍 객체를 생성하는 단계의 실시예를 제공한다.A screen capture program is a program that is configured to generate a stream of a local desktop or a portion of a local desktop, or is a program that creates a component integrated into a local collaboration application and configured to generate a stream of a local desktop or a portion of the local desktop. For example, the screen capture program may be a web browser or a browser engine component, which is the base or endpoint of Web Real-Time Communication (WebRTC) streaming. The next section provides an example of the steps for creating a streaming object when the screen capture program is Chrome.

Chrome의 스크린 캡처 기능은 MediaDevices.getUserMedia() 함수 인터페이스를 통해 액세스할 수 있다. gUM 함수는 사용자 오디오/비디오 스트림을 검색하기 위하여 한 번 호출되고, 스크린 스트림을 가져오기 위하여 두 번째로 호출될 수 있다.Chrome's screen capture functionality can be accessed through the MediaDevices.getUserMedia() function interface. The gUM function is called once to retrieve the user audio/video stream, and can be called a second time to get the screen stream.

Chrome에서, 스크린 캡처 기능을 사용하기 위한 권한은 웹 애플리케이션(예: 협업 애플리케이션의 하나의 가능한 구현)에서 크롬 확장을 사용함으로써 허용될 수 있다. 확장 프로그램은 chrome.desktopCapture.chooseDesktopMedia() 함수를 사용하여 sourceID를 리턴한다. 이후, sourceID를 gUM 함수의 인수로 사용하여 대응하는 스트림을 검색할 수 있다.In Chrome, permission to use the screen capture function can be granted by using the Chrome extension in a web application (eg, one possible implementation of a collaborative application). The extension returns the sourceID using the chrome.desktopCapture.chooseDesktopMedia() function. Thereafter, the corresponding stream can be searched using sourceID as an argument of the gUM function.

스크린 공유를 위한 확장에는 협업 애플리케이션의 컨텍스트에서 실행되는 콘텐츠 스크립트 및 별도의 확장 컨텍스트에서 실행되는 백그라운드 스크립트가 포함될 수 있다. 콘텐츠 스크립트는 윈도우에 메시지를 보내거나 DOM(문서 객체 모델, document object model) 조작을 통해 협업 애플리케이션과 통신할 수 있지만, 백그라운드 스크립트는 할 수 없다. 백그라운드 스크립트는 모든 Chrome 확장 API에 액세스할 수 있으나, 콘텐츠 스크립트는 할 수 없다. 콘텐츠 스크립트와 백그라운드 스크립트는 chrome.runtime.connect() 함수를 통해 서로 통신 가능하다. 이러한 아키텍처가 주어지면, 로컬 컴퓨팅 기기의 로컬 데스크탑의 적어도 하나의 부분의 비디오 스트림을 출력하도록 구성된 스트리밍 객체를 생성하는 프로세스는 다음과 같은 단계로 수행될 수 있다:The extension for screen sharing may include a content script executed in the context of a collaborative application and a background script executed in a separate extension context. Content scripts can communicate with collaborative applications by sending messages to windows or manipulating the document object model (DOM), but background scripts cannot. Background scripts can access all Chrome extension APIs, but content scripts cannot. Content scripts and background scripts can communicate with each other through the chrome.runtime.connect() function. Given such an architecture, the process of creating a streaming object configured to output a video stream of at least one portion of a local desktop of a local computing device can be performed in the following steps:

(1) 협업 애플리케이션이 스크린 공유 소스 식별자에 대한 요청을 콘텐츠 스크립트에 전송;(1) the collaboration application sends a request for the screen sharing source identifier to the content script;

(2) 콘텐츠 스크립트가 백그라운드 스크립트에 상기 요청을 전달;(2) the content script forwards the request to the background script;

(3) 백그라운드 스크립트가 chrome.desktopCapture.chooseDesktopMedia() 함수를 호출하고 소스 식별자를 콘텐츠 스크립트에 리턴;(3) The background script calls the chrome.desktopCapture.chooseDesktopMedia() function and returns the source identifier to the content script;

(4) 콘텐츠 스크립트가 이를 협업 애플리케이션에 리턴하고, 제약조건(constraint)/인수 중 하나로서 소스 식별자를 사용하여, 최종적으로 getUserMedia() 함수를 호출.(4) The content script returns this to the collaborative application, and finally calls the getUserMedia() function, using the source identifier as one of the constraints/arguments.

Chrome의 gUM 함수에 대해, 비디오 스트림을 위한 제약조건은 {chromeMediaSource: 'desktop'; maxWidth: 1920; maxHeight: 1080; maxFrameRate: 10; minAspectRatio: 1.77; chromeMediaSourceId: sourceId} 또는 {maxWidth: 1920; maxHeight: 1080; maxFrameRate: 10; minAspectRatio: 1.77; chromeMediaSourceId: sourceId} 을 포함할 수 있다.For Chrome's gUM function, the constraint for the video stream is {chromeMediaSource:'desktop'; maxWidth: 1920; maxHeight: 1080; maxFrameRate: 10; minAspectRatio: 1.77; chromeMediaSourceId: sourceId} or {maxWidth: 1920; maxHeight: 1080; maxFrameRate: 10; minAspectRatio: 1.77; Can include chromeMediaSourceId: sourceId}.

스크린 공유 gUM 호출은, WebRTC mediaStream으로서 피어(peer) 연결을 통해 공유될 수 있는 mediaStream을 리턴한다.The screen sharing gUM call returns a mediaStream that can be shared over a peer connection as a WebRTC mediaStream.

물론, 스크린 캡처 프로그램으로서 크롬 브라우저를 활용한 전술된 구현은 단지 예시로서 제공되며, 스트리밍 객체 생성 단계는 Firefox와 같이 스크린 캡처 기능을 지원하는 기타 프로그램 또는 브라우저, 또는 별도의 독립 실행형 스크린 캡처 프로그램을 사용하여 수행될 수 있다.Of course, the above-described implementation using the Chrome browser as a screen capture program is provided as an example only, and the step of creating a streaming object is to use another program or browser that supports a screen capture function, such as Firefox, or a separate standalone screen capture program. Can be done using.

도 20으로 돌아가면, 단계(2004)에서 로컬 컴퓨팅 기기는 웹 소켓 연결을 통해 서버에 하나 이상의 커맨드를 전송한다. 상기 하나 이상의 커맨드는 스트리밍 객체 및 선택된 영역에 대응하는 정보를 포함할 수 있고, 서버로 하여금 선택된 영역에 적어도 부분적으로 기반하여 스트리밍 객체를 협업 워크스페이스에 삽입하도록 하게끔 구성된다.Returning to FIG. 20, in step 2004, the local computing device sends one or more commands to the server through a web socket connection. The one or more commands may include a streaming object and information corresponding to the selected area, and are configured to cause the server to insert the streaming object into the collaborative workspace based at least in part on the selected area.

예를 들어, 사용자가 이전에 협업 워크스페이스의 오른쪽 하단 모서리에 있는 원형 영역을 스크린 공유를 위한 선택된 영역으로서 선택한 경우, 스트리밍 객체가 서버에 의해 협업 워크스페이스 내로 삽입되어, 미디어 스트림이 협업 워크스페이스에 임베딩되었을 때 협업 워크스페이스의 오른쪽 하단 모서리에 원형 형식으로 디스플레이되도록 할 수 있다. 원의 크기 및 방향은 선택된 영역의 동일한 속성을 기반으로 할 수 있다. 물론, 협업 워크스페이스 내의 다른 임의의 객체와 마찬가지로, 스트리밍 객체는 협업 워크스페이스의 리프리젠테이션과 상호작용하여 협업 워크스페이스 내에 임베딩된 후 참가자에 의해 조정되거나 이동될 수 있다.For example, if the user previously selected the circular area in the lower right corner of the collaborative workspace as the selected area for screen sharing, a streaming object will be inserted into the collaborative workspace by the server, and the media stream will be inserted into the collaborative workspace. When embedded, it can be displayed in a circular format in the lower-right corner of the collaboration workspace. The size and direction of the circle can be based on the same properties of the selected area. Of course, like any other object in the collaborative workspace, the streaming object interacts with the representation of the collaborative workspace to be embedded within the collaborative workspace and then manipulated or moved by the participant.

협업 워크스페이스 내 스트리밍 객체의 형식은, 형태, 크기 및 위치와 같은 선택한 영역의 속성을 포함하여, 이전에 선택한 영역을 기반으로 결정될 수 있다. 이러한 속성은 서버로 전송되는 하나 이상의 커맨드에서 스트리밍 객체 자체와 함께 전송될 수 있다. 이후, 서버는 이러한 속성을 기반으로 스트리밍 객체를 협업 워크스페이스에 임베딩하기 위한 삽입 지점 및 형식을 결정할 수 있다.The format of the streaming object in the collaboration workspace may be determined based on the previously selected area, including attributes of the selected area such as shape, size, and location. These attributes may be transmitted along with the streaming object itself in one or more commands sent to the server. Thereafter, the server may determine the insertion point and format for embedding the streaming object in the collaboration workspace based on these attributes.

대안적으로, 스트리밍 객체는 사용자의 이전 영역 선택을 기반으로 기정의된 공간 속성을 가진 미디어 스트림 객체일 수 있다. 이 경우, 스트리밍 객체가 로컬 컴퓨팅 기기에서 생성될 때, 스트리밍 객체의 디스플레이 속성이 스트리밍 객체에 통합될 수 있다. 이후, 스트리밍 객체(임베딩된 공간속성(spatial attribute) 포함)는, 임베딩된 공간속성에 기반하여 적합한 위치에서 적합한 형식으로 스트리밍 객체를 협업 워크스페이스 내로 임베딩하는, 서버로 전송될 수 있다. Alternatively, the streaming object may be a media stream object having spatial properties predefined based on the user's selection of a previous area. In this case, when the streaming object is created in the local computing device, display properties of the streaming object may be integrated into the streaming object. Thereafter, the streaming object (including the embedded spatial attribute) may be transmitted to the server, which embeds the streaming object into the collaboration workspace in an appropriate format at an appropriate location based on the embedded spatial attribute.

상기 하나 이상의 커맨드는, 스트리밍 객체 자체를 포함하는 대신, 스트리밍 객체의 주소, 또는 스트리밍 객체를 검색하거나 스트리밍 객체의 자체 인스턴스를 인스턴스화하기 위하여 서버에서 사용 가능한 기타 식별자를 선택적으로 포함할 수 있다.Instead of including the streaming object itself, the one or more commands may optionally include an address of the streaming object or other identifier available in the server to search for the streaming object or instantiate its own instance of the streaming object.

서버에 의해, 협업 워크스페이스 내로 스트리밍 객체를 삽입하면, 스트리밍 객체의 리프리젠테이션이 웹 소켓 연결을 통해 복수의 컴퓨팅 기기로 전파된다. 따라서, 연결된 컴퓨팅 기기 각각은 협업 워크스페이스의 각각의 리프리젠테이션에서 스트리밍 객체의 리프리젠테이션을 가지게 된다.When a streaming object is inserted into the collaboration workspace by the server, the representation of the streaming object is propagated to a plurality of computing devices through a web socket connection. Therefore, each connected computing device has a representation of a streaming object in each representation of the collaboration workspace.

삽입된 스트리밍 객체는, 로컬 컴퓨팅 기기의 로컬 데스크탑의 적어도 하나의 부분의 비디오 스트림을 수신하고, 웹 소켓 연결을 통해 로컬 컴퓨팅 기기의 로컬 데스크탑의 적어도 하나의 부분의 비디오 스트림을 복수의 컴퓨터 기기로 전송하도록 구성된다.The inserted streaming object receives a video stream of at least one portion of the local desktop of the local computing device, and transmits the video stream of at least one portion of the local desktop of the local computing device to a plurality of computer devices through a web socket connection. Is configured to

전술된 바와 같이, 이러한 프로세스는, 스트리밍 객체를 인스턴스화한 (스트림 식별자에 의해 미디어 스트림의 소스로서 식별되는) 로컬 컴퓨팅 기기로부터 서버에게 전송되고, 이후 협업 워크스페이스의 리프리젠테이션 내 서버에 연결된 복수의 컴퓨팅 기기 각각에게 전송되는, 스트림 정보를 포함한다. 따라서, 스트리밍 객체 자체는 서버의 협업 워크스페이스 내에 임베딩될 수 있으며, 결과 스트림은 연결된 클라이언트로 전파될 수 있다.As described above, this process is transmitted to the server from the local computing device (identified as the source of the media stream by the stream identifier) that instantiated the streaming object, and then connected to the server in the representation of the collaborative workspace. It includes stream information transmitted to each of the computing devices. Thus, the streaming object itself can be embedded within the server's collaborative workspace, and the resulting stream can be propagated to connected clients.

도 26은 예시적인 실시예에 따른, 로컬 컴퓨팅 기기로부터 커맨드를 전송하고 스트리밍 객체를 전파하는 프로세스를 도시한다. 도 26에 도시된 바와 같이, 로컬 컴퓨팅 기기(2601)는 서버(2600)에게 커맨드(스트리밍 객체, 또는 스트리밍 객체에 대한 참조/포인터 중 어느 하나를 포함)를 전송한다. 이후, 서버(2600)는 스트리밍 객체를 협업 워크스페이스 내에 삽입하여, 협업 워크스페이스에 임베딩된 스트리밍 객체가 로컬 컴퓨팅 기기(2601) 및 원격 컴퓨팅 기기(2602, 2603)를 포함하는 모든 연결된 장치로 전파되도록 한다.Fig. 26 shows a process of sending a command and propagating a streaming object from a local computing device, according to an exemplary embodiment. As illustrated in FIG. 26, the local computing device 2601 transmits a command (including either a streaming object or a reference/pointer to a streaming object) to the server 2600. Thereafter, the server 2600 inserts the streaming object into the collaboration workspace so that the streaming object embedded in the collaboration workspace is propagated to all connected devices including the local computing device 2601 and remote computing devices 2602, 2603. do.

도 27은 예시적인 실시예에 따른, 서버가 협업 워크스페이스 내에 스트리밍 객체를 임베딩한 후의 로컬 컴퓨팅 기기의 인터페이스의 예를 도시한다. 숫자(2701~2708)는 도 23a의 숫자(2301~2308)와 관련하여 설명된 동일한 구성 요소에 대응한다. 도 27은 사용자 데스크탑의 미디어 스트림을 디스플레이하는 임베딩된 스트리밍 객체(2709)를 추가로 도시한다. 이 경우, 선택된 소스가 데스크탑 전체라고 가정한다. 서버에 연결된 각 원격 참가자는 협업 워크스페이스의 리프리젠테이션 내에 임베딩된 동일한 스트리밍 객체를 갖게 된다. 도 27에 도시된 바와 같이, 임베딩된 결과의 스트림은, 로컬 참가자와 원격 참가자 모두가 협업 워크스페이스의 컨텍스트 내에서 공유 스크린의 내용을 볼 수 있도록 하는, "화면 속 화면(picture-in-picture)"효과를 제공한다. 따라서, 참가자는 협업 세션을 중단하지 않고 관련 프로그램과 정보를 공유할 수 있다.Fig. 27 shows an example of an interface of a local computing device after a server embeds a streaming object in a collaboration workspace, according to an exemplary embodiment. Numbers 2701-2708 correspond to the same elements described in connection with numbers 2301-2308 in FIG. 23A. 27 further shows an embedded streaming object 2709 that displays a media stream of the user's desktop. In this case, it is assumed that the selected source is the entire desktop. Each remote participant connected to the server will have the same streaming object embedded within the representation of the collaboration workspace. As shown in Fig. 27, the stream of embedded results is a "picture-in-picture" that allows both the local participant and the remote participant to view the contents of the shared screen within the context of the collaboration workspace. "Provides an effect. Thus, participants can share related programs and information without interrupting the collaboration session.

전술된 기술에 더하여, 출원인은 로컬 참가자와 원격 참가자 모두가 임베딩된 스트리밍 객체 내에 디스플레이된 데스크탑 또는 데스크탑의 일부를 제어할 수 있도록 하는 새로운 기술을 추가로 발견하였다. 이러한 새로운 기술은, 투명 레이어를 활용하여 사용자(로컬 및 원격 모두)가 임베딩된 스트리밍 객체 내에 나타나는 데스크탑 또는 데스크탑의 일부를 효과적으로 브라우징할 수 있도록 한다.In addition to the techniques described above, Applicants have further discovered a new technique that allows both local and remote participants to control the desktop or portions of the desktop displayed within the embedded streaming object. This new technology utilizes a transparent layer to allow users (both local and remote) to effectively browse the desktop or parts of the desktop that appear within the embedded streaming object.

도 28은 예시적인 실시예에 따른, 임베딩된 스트리밍 객체를 통해 로컬 컴퓨팅 기기로부터 데스크탑 또는 데스크탑의 일부를 제어하기 위한 흐름도를 도시한다.Fig. 28 shows a flow chart for controlling a desktop or a portion of a desktop from a local computing device via an embedded streaming object, according to an exemplary embodiment.

단계(2801)에서, 삽입된 스트리밍 객체는 로컬 컴퓨팅 기기의 사용자 인터페이스 상의 협업 워크스페이스의 리프리젠테이션 내로 전송된다. 삽입된 스트리밍 객체는 비디오 스트림의 소스의 네트워크 주소와 연관된다. 이러한 연관은 스트리밍 객체와 연결된 태그 또는 메타데이터의 형태로 서버에 의해 제공될 수 있다. 또한, 연관은 스트리밍 객체의 일부가 될 수 있으며, 예를 들어, 전술된 소스 식별자를 기반으로 할 수 있다. 예를 들어, 스트리밍 객체가 생성될 때, 스트리밍 객체를 생성하는 기기는 상기 기기의 IP 주소를 나타내는 태그를 포함할 수 있다.In step 2801, the inserted streaming object is transmitted into a representation of the collaborative workspace on the user interface of the local computing device. The inserted streaming object is associated with the network address of the source of the video stream. This association can be provided by the server in the form of tags or metadata associated with the streaming object. In addition, the association may be part of the streaming object, for example, based on the source identifier described above. For example, when a streaming object is generated, a device generating the streaming object may include a tag indicating the IP address of the device.

단계(2802)에서, 로컬 컴퓨팅 기기에서 실행되는 투명 레이어는 삽입된 스트리밍 객체와 연관된 사용자 입력(상기 사용자 입력은 로컬 데스크탑 내의 하나의 위치에 해당함)을 검출한다. 전술된 바와 같이, 투명 레이어는 운영 체제 또는 상기 운영 체제에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상과 인터페이싱하도록 구성된, API를 포함한다. 투명 레이어는 입력의 위치(좌표에 의해 결정됨) 및 스트리밍 객체의 위치에 기반하여, 삽입된 스트리밍 객체와 연관된 사용자 입력을 검출할 수 있다. 예를 들어, 마우스 클릭과 스트리밍 객체의 일부가 겹치는 경우, 이러한 입력은 삽입된 스트리밍 객체와 연관된 사용자 입력으로서 검출될 수 있다.In step 2802, the transparent layer executed on the local computing device detects a user input associated with the inserted streaming object (the user input corresponds to one location in the local desktop). As described above, the transparent layer includes an API, configured to interface with one or more of the operating system or one or more applications configured to run on the operating system. The transparent layer may detect a user input associated with the inserted streaming object based on the location of the input (determined by coordinates) and the location of the streaming object. For example, if a mouse click and a portion of the streaming object overlap, this input may be detected as a user input associated with the inserted streaming object.

사용자 입력은 삽입된 스트리밍 객체 내의 입력의 위치에 기반하여 로컬 데스크탑 내의 특정 위치에 추가적으로 매핑될 수 있다. 다시 한 번, 로컬 데스크탑의 상이한 부분들과 연관된 삽입된 스트리밍 객체 내의 영역 또는 좌표를 나타내는 맵이 저장될 수 있으며. 상기 위치는 로컬 데스크탑의 각각의 부분에 매핑될 수 있다. 예를 들어, 삽입된 스트리밍 객체의 하위 영역은 로컬 데스크탑 내에서 대응하는 영역을 차지하는 특정 애플리케이션과 연관되거나, 로컬 데스크탑 내의 대응하는 좌표와 연관될 수 있다.The user input may be additionally mapped to a specific location in the local desktop based on the location of the input in the inserted streaming object. Once again, a map may be stored indicating the area or coordinates within the inserted streaming object associated with different parts of the local desktop. The location can be mapped to each part of the local desktop. For example, the sub-region of the inserted streaming object may be associated with a specific application occupying a corresponding region in the local desktop, or may be associated with a corresponding coordinate in the local desktop.

매핑 절차는, 삽입된 스트리밍 객체 내에서 입력의 상대 위치를 검출하고, 스트리밍 객체에 의해 스트리밍되는 데스크탑(또는 데스크탑의 일부) 내의 절대 위치에 상대 위치를 매핑하는, 스케일링 메커니즘 또는 프로세스를 활용할 수 있다.The mapping procedure may utilize a scaling mechanism or process that detects the relative position of the input within the inserted streaming object and maps the relative position to an absolute position within the desktop (or part of the desktop) streamed by the streaming object.

추가적으로, 전술된 바와 같이, 입력은 마우스와 같은 포인팅 장치로부터, 또는 가상 드라이버 및 투명 레이어에 의존하는 입력 메커니즘과 같은 다른 입력 수단을 통하여 이루어질 수 있다.Additionally, as described above, the input may be from a pointing device such as a mouse, or through other input means such as an input mechanism that relies on a virtual driver and a transparent layer.

단계(2804)에서, 로컬 컴퓨팅 기기 상에서 실행되는 투명 레이어는 삽입된 스트리밍 객체와 연관된 네트워크 주소가 로컬 컴퓨팅 기기의 네트워크 주소에 대응함을 판단한다. 이는 예를 들어, 매칭이 있는지 판단하기 위하여 스트리밍 객체와 연관된 IP 주소와 입력을 제공하는 장치의 IP 주소를 비교함으로써 판단될 수 있다.In step 2804, the transparent layer executed on the local computing device determines that the network address associated with the inserted streaming object corresponds to the network address of the local computing device. This may be determined, for example, by comparing the IP address associated with the streaming object with the IP address of the device providing the input to determine whether there is a match.

단계(2805)에서, 삽입된 스트리밍 객체와 연관된 네트워크 주소가 입력을 제공하는 컴퓨팅 기기의 네트워크 주소에 대응한다는 판단에 기반하여, 투명 레이어는 하나 이상의 제2 커맨드(상기 하나 이상의 제2 커맨드는 로컬 데스크탑 내의 상기 위치에서 사용자 입력을 수행하도록 구성됨)를 운영 체제 또는 운영 체제 상에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상으로 전송한다.In step 2805, based on the determination that the network address associated with the inserted streaming object corresponds to the network address of the computing device that provides the input, the transparent layer includes one or more second commands (the one or more second commands are local desktop Configured to perform user input at the location within) to the operating system or one or more of the one or more applications configured to run on the operating system.

전술된 바와 같이, 투명 레이어는 운영 체제 또는 상기 운영 체제 상에서 실행되는 애플리케이션과 인터페이싱할 수 있다. 따라서, 삽입된 스트리밍 객체 내의 임의의 입력은 로컬 데스크탑 내의 대응하는 위치에 매핑될 수 있으며, 커맨드는 (전술된 바와 같이, 관련된 컨텍스트에 따라)적합한 애플리케이션 또는 운영 체제로 전송되어, 로컬 데스크탑 내의 대응하는 위치에서 입력을 수행할 수 있다.As described above, the transparent layer may interface with an operating system or an application running on the operating system. Thus, any input in the inserted streaming object can be mapped to a corresponding location within the local desktop, and the command is sent to the appropriate application or operating system (depending on the context involved, as described above), and the corresponding Input can be performed at the location.

도 29a 내지 도 29c는 예시적인 실시예에 따른, 임베딩된 스트리밍 객체를 통해 로컬 컴퓨팅 기기로부터 데스크탑 또는 데스크탑의 일부를 제어하는 예를 도시한다.29A-29C illustrate an example of controlling a desktop or a portion of a desktop from a local computing device through an embedded streaming object, according to an exemplary embodiment.

도 29a에 도시된 바와 같이, 로컬 사용자 인터페이스(데스크탑)(2901)는 협업 워크스페이스의 리프리젠테이션을 디스플레이하는 협업 애플리케이션(2902)을 포함한다. 상기 리프리젠테이션은 로컬 데스크탑 자체를 스트리밍하는 삽입/임베딩된 스트리밍 객체(2903)를 포함한다. 로컬 사용자 인터페이스(2901)는 또한 운영 체제 메뉴 버튼(2905)을 포함하는, 작업 표시줄(2906)을 포함한다. 도면에 도시된 바와 같이, 마우스 포인터는 로컬 데스크탑 내의 운영 체제 메뉴 버튼(2905)에 대응하는, 삽입된 스트리밍 객체(2903) 내의 버튼(2904) 위에 있다.As shown in FIG. 29A, a local user interface (desktop) 2901 includes a collaboration application 2902 that displays a representation of the collaboration workspace. The representation includes an embedded/embedded streaming object 2903 that streams the local desktop itself. The local user interface 2901 also includes a taskbar 2906, which includes an operating system menu button 2905. As shown in the figure, the mouse pointer is over the button 2904 in the inserted streaming object 2902, corresponding to the operating system menu button 2905 in the local desktop.

도 29b는 사용자가 스트리밍 객체(2903) 내의 버튼(2904)의 위치를 클릭 한 결과를 도시한다. 투명 레이어에 의해 검출된 입력의 결과로, 스트리밍 객체(2903) 내의 입력의 위치가 데스크탑(2901) 내의 대응하는 위치에 매핑된다. 대응하는 위치가 운영 체제 메뉴 버튼(2905)이기 때문에, 이 입력은 투명 레이어로 하여금 운영 체제에게 운영 체제 메뉴 버튼(2905)을 활성화하기 위한 커맨드를 보내도록 한다. 데스크탑(2901)의 이러한 변경은 스트리밍 객체에 의해 자체적으로 캡처되며, 삽입된 스트리밍 객체 내의 버튼(2904)이 활성화되는 것도 볼 수 있다.29B shows the result of clicking the location of the button 2904 in the streaming object 2903 by the user. As a result of the input detected by the transparent layer, the location of the input in the streaming object 2903 is mapped to a corresponding location in the desktop 2901. Since the corresponding location is the operating system menu button 2905, this input causes the transparent layer to send a command to the operating system to activate the operating system menu button 2905. This change of desktop 2901 is captured by the streaming object itself, and it can also be seen that the button 2904 in the inserted streaming object is activated.

도 29c는 입력이 로컬 데스크탑으로 전달된 이후의 인터페이스(2901) 및 삽입된 스트리밍 객체(2903)를 도시한다. 도 29c에 도시된 바와 같이, 운영 체제 메뉴가 열리며 선택 가능한 인디케이터(2907)의 목록이 포함된다. 결과적으로, 이러한 변화는 삽입된 스트리밍 객체(2903)에 의해 캡처되며, 선택 가능한 인디케이터(2908)의 목록을 포함하는 대응하는 버튼(2904)의 개방을 자체적으로 보여준다.29C shows the interface 2901 and the inserted streaming object 2903 after the input has been delivered to the local desktop. As shown in FIG. 29C, an operating system menu is opened and a list of selectable indicators 2907 is included. As a result, this change is captured by the inserted streaming object 2903, which itself shows the opening of the corresponding button 2904, which contains a list of selectable indicators 2908.

전술된 바와 같이, 투명 레이어는 임베딩된 스트리밍 객체를 통해 로컬 데스크탑을 제어하기 위하여 효과적으로 사용될 수 있다. 이는 협업 세션에 참여하는 사용자에게 원격 제어 인터페이스를 제공하여, 협업 세션 내에 머무르면서 동시에 다른 참가자와 공유하는 데스크탑 또는 애플리케이션을 효과적으로 탐색할 수 있도록 한다.As described above, the transparent layer can be effectively used to control the local desktop through the embedded streaming object. This provides a remote control interface to users participating in the collaboration session, allowing them to stay in the collaboration session while effectively navigating the desktops or applications shared with other participants.

본 시스템은 또한 원격 참가자로 하여금 공유되고 있는 데스크탑 또는 데스크탑의 일부를 제어할 수 있도록 활용될 수 있다. 이 기능은 원격 참가자로 하여금, 협업 워크스페이스 내에 삽입된 스트리밍 객체를 통해 공유되는 다른 데스크탑 및 애플리케이션에 액세스할 수 있도록 하므로, 크게 유용하다.The system can also be utilized to allow remote participants to control the desktop or part of the desktop being shared. This feature is extremely useful as it allows remote participants to access other shared desktops and applications through streaming objects embedded within the collaborative workspace.

도 30은 예시적인 실시예에 따른, 임베딩된 스트리밍 객체를 통해 원격 컴퓨팅 기기로부터 데스크탑 또는 데스크탑의 일부를 제어하기 위한 흐름도를 도시한다.Fig. 30 shows a flow chart for controlling a desktop or a portion of a desktop from a remote computing device via an embedded streaming object, according to an exemplary embodiment.

단계(3001)에서, 삽입된 스트리밍 객체는 원격 컴퓨팅 기기의 사용자 인터페이스 상의 협업 워크스페이스의 리프리젠테이션 내로 전송된다. 삽입된 스트리밍 객체는 비디오 스트림의 소스의 네트워크 주소와 연관된다. 이러한 연결은 스트리밍 객체와 연결된 태그 또는 메타데이터의 형태로 서버에 의해 제공될 수 있다. 또한, 연결은 스트리밍 객체의 일부가 될 수 있으며, 예를 들어, 전술한 소스 식별자를 기반으로 할 수 있다. 예를 들어, 스트리밍 객체가 생성 될 때, 스트리밍 객체를 생성하는 기기는 상기 기기의 IP 주소를 나타내는 태그를 포함할 수 있다.In step 3001, the inserted streaming object is transmitted into a representation of the collaborative workspace on the user interface of the remote computing device. The inserted streaming object is associated with the network address of the source of the video stream. Such a connection may be provided by the server in the form of a tag or metadata associated with the streaming object. In addition, the connection may be a part of the streaming object, for example, may be based on the above-described source identifier. For example, when a streaming object is generated, a device generating the streaming object may include a tag indicating the IP address of the device.

단계(3002)에서, 원격 컴퓨팅 기기에서 실행되는 투명 레이어는 삽입된 스트리밍 객체와 연관된 사용자 입력(상기 사용자 입력은 로컬 데스크탑 내의 하나의 위치에 해당함)을 검출한다. 전술된 바와 같이, 투명 레이어는 운영 체제 또는 상기 운영 체제에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상과 인터페이싱하도록 구성된, API를 포함한다. 투명 레이어는 입력의 위치(좌표에 의해 결정됨) 및 스트리밍 객체의 위치에 기반하여, 삽입된 스트리밍 객체와 연관된 사용자 입력을 검출할 수 있다. 예를 들어, 마우스 클릭과 스트리밍 객체의 일부가 겹치는 경우, 이러한 입력은 삽입된 스트리밍 객체와 연관된 사용자 입력으로서 검출될 수 있다.In step 3002, the transparent layer executed on the remote computing device detects a user input associated with the inserted streaming object (the user input corresponds to one location in the local desktop). As described above, the transparent layer includes an API, configured to interface with one or more of the operating system or one or more applications configured to run on the operating system. The transparent layer may detect a user input associated with the inserted streaming object based on the location of the input (determined by coordinates) and the location of the streaming object. For example, if a mouse click and a portion of the streaming object overlap, this input may be detected as a user input associated with the inserted streaming object.

사용자 입력은 삽입된 스트리밍 객체 내의 입력의 위치에 따라 로컬 데스크탑 내의 특정 위치에 추가적으로 매핑될 수 있다. 다시 한 번, 로컬 데스크탑의 상이한 부분들과 연관된 삽입된 스트리밍 객체 내의 영역 또는 좌표를 나타내는 맵이 저장될 수 있으며. 상기 위치는 로컬 데스크탑의 각각의 부분에 매핑될 수 있다. 예를 들어, 삽입된 스트리밍 객체의 하위 영역은 로컬 데스크탑 내에서 대응하는 영역을 차지하는 특정 애플리케이션과 연관되거나, 로컬 데스크탑 내의 대응하는 좌표와 연관될 수 있다.The user input may be additionally mapped to a specific location in the local desktop according to the location of the input in the inserted streaming object. Once again, a map may be stored indicating the area or coordinates within the inserted streaming object associated with different parts of the local desktop. The location can be mapped to each part of the local desktop. For example, the sub-region of the inserted streaming object may be associated with a specific application occupying a corresponding region in the local desktop, or may be associated with a corresponding coordinate in the local desktop.

매핑 절차는, 삽입된 스트리밍 객체 내에서 입력의 상대 위치를 검출하고, 스트리밍 객체에 의해 스트리밍되는 데스크탑(또는 데스크탑의 일부) 내의 절대 위치에 상대 위치를 매핑하는, 스케일링 메커니즘 또는 프로세스를 활용할 수 있다.The mapping procedure may utilize a scaling mechanism or process that detects the relative position of the input within the inserted streaming object and maps the relative position to an absolute position within the desktop (or part of the desktop) streamed by the streaming object.

추가적으로, 전술된 바와 같이, 입력은 마우스와 같은 포인팅 장치로부터, 또는 가상 드라이버 및 투명 레이어에 의존하는 입력 메커니즘과 같은 다른 입력 수단을 통하여 이루어질 수 있다.Additionally, as described above, the input may be from a pointing device such as a mouse, or through other input means such as an input mechanism that relies on a virtual driver and a transparent layer.

단계(3004)에서, 원격 컴퓨팅 기기 상에서 실행되는 투명 레이어는 삽입된 스트리밍 객체와 연관된 네트워크 주소가 원격 컴퓨팅 기기의 네트워크 주소에 대응하지 않음을 판단한다. 이는 예를 들어, 매칭이 있는지 결정하기 위하여 스트리밍 객체와 연관된 IP 주소와 입력을 제공하는 장치(원격 컴퓨터 기기)의 IP 주소를 비교함으로써 판단될 수 있다.In step 3004, the transparent layer executed on the remote computing device determines that the network address associated with the inserted streaming object does not correspond to the network address of the remote computing device. This can be determined, for example, by comparing the IP address associated with the streaming object with the IP address of the device (remote computer device) providing the input to determine if there is a match.

단계(3005)에서, 삽입된 스트리밍 객체와 연관된 네트워크 주소가 입력을 제공하는 컴퓨팅 기기의 네트워크 주소에 대응하지 않는다는 판단에 기반하여, 투명 레이어는 웹 소켓 연결을 통하여 하나 이상의 제2 커맨드(상기 하나 이상의 제2 커맨드는 로컬 컴퓨팅 기기 상에서 실행되는 로컬 투명 레이어로 하여금 로컬 데스크탑 내의 상기 위치에서 사용자 입력을 수행하도록 하게끔 구성됨)를 로컬 컴퓨팅 기기에게 전송한다.In step 3005, based on the determination that the network address associated with the inserted streaming object does not correspond to the network address of the computing device providing the input, the transparent layer provides one or more second commands (the one or more The second command is configured to cause a local transparent layer running on the local computing device to perform user input at the location within the local desktop) to the local computing device.

하나 이상의 제2 커맨드는 웹 소켓 연결을 통하여, 서버를 통해 원격 컴퓨팅 기기로부터 로컬 컴퓨팅 기기로 라우팅(route)될 수 있다. 특히, 하나 이상의 제2 커맨드는 수신지 주소가 로컬 컴퓨팅 기기의 IP 주소인 서버로 전송된 이후, 서버에 의해 로컬 컴퓨팅 기기로 라우팅될 수 있다.One or more second commands may be routed from a remote computing device to a local computing device through a server through a web socket connection. In particular, the one or more second commands may be routed to the local computing device by the server after the destination address is transmitted to the server, which is the IP address of the local computing device.

하나 이상의 제2 커맨드는, 로컬 컴퓨팅 기기의 로컬 투명 레이어가, 로컬 운영 체제 또는 상기 로컬 운영 체제에서 실행되도록 구성된 하나 이상의 로컬 애플리케이션 중 하나 이상에게 로컬 커맨드를 자체적으로 전송하도록 구성될 수 있으며, 상기 하나 이상의 로컬 커맨드는 로컬 데스크탑 내의 상기 위치에서 사용자 입력을 수행하도록 구성된다.The one or more second commands may be configured such that the local transparent layer of the local computing device transmits a local command to one or more of a local operating system or one or more local applications configured to be executed in the local operating system, and the one The above local command is configured to perform user input at the location in the local desktop.

전술된 바와 같이, 투명 레이어는 운영 체제 또는 상기 운영 체제 상에서 실행되는 애플리케이션과 인터페이싱할 수 있다. 따라서, 삽입된 스트리밍 객체 내의 임의의 입력은 로컬 데스크탑 내의 대응하는 위치에 매핑될 수 있으며, 커맨드는 로컬 투명 레이어로부터 (전술된 바와 같이, 관련된 컨텍스트에 따라)적합한 애플리케이션 또는 로컬 컴퓨팅 기기 상의 운영 체제로 전송되어, 로컬 데스크탑 내의 대응하는 위치에서 입력을 수행할 수 있다As described above, the transparent layer may interface with an operating system or an application running on the operating system. Thus, any input within the inserted streaming object can be mapped to a corresponding location within the local desktop, and commands can be mapped from the local transparent layer to the appropriate application or operating system on the local computing device (depending on the context involved, as described above). Sent, allowing input to be performed at a corresponding location within the local desktop

도 31a 내지 도 31c는 예시적인 실시예에 따른, 임베딩된 스트리밍 객체를 통해 원격 컴퓨팅 기기로부터 데스크탑 또는 데스크탑의 일부를 제어하는 예를 도시한다.31A-31C illustrate an example of controlling a desktop or a portion of a desktop from a remote computing device through an embedded streaming object, according to an exemplary embodiment.

도 31a에 도시된 바와 같이, 원격 사용자 인터페이스(데스크탑)(3101)는 협업 워크스페이스의 리프리젠테이션을 디스플레이하는 협업 애플리케이션(3102)을 포함한다. 상기 리프리젠테이션은 로컬 데스크탑을 스트리밍하는 삽입/임베딩된 스트리밍 객체(3103)를 포함한다(본원에서 사용되는 "로컬"은 스트리밍 객체를 인스턴스화하고 이의 데스크탑 또는 데스크탑의 일부를 공유하는 기기를 지칭함). 또한, 원격 사용자 인터페이스(3101)는 원격 데스크탑에서 실행되는 웹 브라우저 애플리케이션에 대응하는 윈도우 및 작업 표시줄을 포함한다. 도면에 도시된 바와 같이, 마우스 포인터는 스트리밍되는 로컬 데스크탑 내의 운영 체제 메뉴 버튼에 대응하는, 삽입된 스트리밍 객체(3103) 내의 버튼(3104) 위에 있다.As shown in FIG. 31A, the remote user interface (desktop) 3101 includes a collaboration application 3102 that displays a representation of the collaboration workspace. The representation includes an embedded/embedded streaming object 3103 that streams a local desktop ("local" as used herein refers to a device that instantiates a streaming object and shares its desktop or part of the desktop). In addition, the remote user interface 3101 includes a window and a task bar corresponding to a web browser application running on the remote desktop. As shown in the figure, the mouse pointer is over the button 3104 in the inserted streaming object 3103, corresponding to the operating system menu button in the local desktop being streamed.

도 31b는 사용자가 스트리밍 객체(3103) 내의 버튼(3104)의 위치를 클릭 한 결과를 도시한다. 원격 투명 레이어에 의해 검출된 입력의 결과로, 스트리밍 객체(3103) 내의 입력의 위치가 스트리밍되는 로컬 데스크탑 내의 대응하는 위치에 매핑된다. 이후, 원격 투명 레이어는 로컬 컴퓨팅 기기 상의 로컬 투명 레이어에 커맨드를 전송하여, 로컬 데스크탑 내의 대응하는 위치에서 입력이 발생하도록 한다. 대응하는 위치가 로컬 데스크탑의 운영 체제 메뉴 버튼이므로, 이러한 입력은 원격 투명 레이어로 하여금 로컬 투명 레이어로 커맨드를 전송하도록 하고, 로컬 운영 체제에 자체적으로 커맨드를 전송하여 로컬 데스크탑의 운영 체제 메뉴 버튼을 활성화한다. 로컬 데스크탑 내의 이러한 변화는, 삽입된 스트리밍 객체가 활성화되는 중인 버튼(3104)을 보여주는 스트리밍 객체(3103)에 의해 캡처된다. 삽입된 스트리밍 객체는 원격 데스크탑(3101)이 아닌, 로컬 컴퓨팅 기기와 연관된 다른 데스크탑을 스트리밍하기 때문에, 이 입력(스트리밍 객체(3103)에 대한 업데이트 제외)의 영향을 받지 않는다는 점에 유의해야 한다.31B shows the result of clicking the location of the button 3104 in the streaming object 3103 by the user. As a result of the input detected by the remote transparent layer, the location of the input in the streaming object 3103 is mapped to the corresponding location in the local desktop being streamed. Thereafter, the remote transparent layer transmits a command to the local transparent layer on the local computing device to generate an input at a corresponding location in the local desktop. Since the corresponding location is the operating system menu button on the local desktop, this input causes the remote transparent layer to send commands to the local transparent layer, and sends the command itself to the local operating system to activate the operating system menu button on the local desktop. do. This change in the local desktop is captured by the streaming object 3103 showing the button 3104 in which the inserted streaming object is being activated. It should be noted that the inserted streaming object is not affected by this input (except for updates to the streaming object 3103) because it streams other desktops associated with the local computing device, not the remote desktop 3101.

도 31c는 입력이 로컬 데스크탑으로 전달된 이후의 인터페이스(3101) 및 삽입된 스트리밍 객체(3103)를 도시한다. 도 31c에 도시된 시간에, 스트리밍되는 로컬 데스크탑의 로컬 운영 체제 메뉴가 열리고, 선택 가능한 인디케이터 목록이 포함된다. 이러한 변화는 결과적으로 삽입된 스트리밍 객체(3103)에 의해 캡처되며, 선택 가능한 인디케이터의 목록을 포함하는 대응하는 버튼(3104)의 개방을 자체적으로 보여준다.31C shows the interface 3101 and the inserted streaming object 3103 after the input has been passed to the local desktop. At the time shown in Fig. 31C, a local operating system menu of the streamed local desktop is opened, and a list of selectable indicators is included. This change is consequently captured by the inserted streaming object 3103, which itself shows the opening of the corresponding button 3104 containing a list of selectable indicators.

전술된 바와 같이, 투명 레이어는 임베딩된 스트리밍 객체를 통해 원격 데스크탑을 제어하는 데 사용될 수 있다. 이를 통해, 협업 세션에 참여하는 사용자는, 협업 세션 내에 머물면서 동시에 협업 워크스페이스 내에서 다른 참여자의 데스크탑 또는 애플리케이션을 탐색할 수 있는, 원격 제어 인터페이스를 효과적으로 사용할 수 있다. 예를 들어, 두 명의 참가자가 다른 참가자 그룹에게 프리젠테이션을 발표하는 경우, 첫 번째 발표 참가자는 데스크탑에서 프리젠테이션 애플리케이션을 공유하고, 협업 워크스페이스 내에서 스트리밍 객체와 공유된 첫 번째 슬라이드 세트를 설명할 수 있다. 이후, 첫 번째 발표 참가자는 프리젠테이션 애플리케이션의 제어권을 두 번째 발표 참가자에게 "양도"할 수 있으며, 두 번째 발표 참가자는 첫 번째 발표 참가자의 데스크탑에서 프리젠테이션 애플리케이션을 원격으로 제어할 수 있다.As described above, the transparent layer can be used to control the remote desktop via an embedded streaming object. Through this, a user participating in the collaboration session can effectively use the remote control interface, which allows the user to stay in the collaboration session and at the same time browse the desktops or applications of other participants in the collaboration workspace. For example, if two participants are presenting a presentation to another group of participants, the first presenting participant will share the presentation application on the desktop, and the first set of slides shared with the streaming object within the collaboration workspace. I can. Thereafter, the first presenter can "transfer" control of the presentation application to the second presenter, and the second presenter can remotely control the presentation application from the first presenter's desktop.

선택적으로, 원격 제어 기능에는 권한, 인증, 또는 각 참가자로 하여금 다른 참가자가 스트리밍 객체를 통해 공유 데스크탑을 원격으로 제어할 수 있는지 여부 및 어떤 참가자가 공유 데스크탑을 원격으로 제어할 수 있는지 설정이 가능한, 기타 액세스 제어 메커니즘이 포함될 수 있다. 예를 들어, 각 사용자는 자신의 로컬 데스크탑 또는 로컬 데스크탑의 일부를 다른 참가자가 제어할 수 있도록 허용할지 여부를 나타내는, 기본 설정을 저장할 수 있다. 이러한 기본 설정은 각 컴퓨팅 기기에 저장되거나(투명 레이어에 액세스할 수 있고, 투명 레이어에 의해 원격 제어 입력을 허용하거나 차단하는 데 사용할 수 있음), 서버에 저장되어 서버에서 컴퓨팅 기기 사이의 원격 제어 입력을 허용 또는 차단하는 데 사용할 수 있다. 이러한 액세스 제어 메커니즘은, 저장되는 방법에 관계없이, 원격 참가자가 삽입된 스트리밍 객체를 통해 다른 참가자의 데스크탑에 입력을 제공할 수 있는지 여부를 결정하는 데 사용할 수 있다.Optionally, the remote control function includes authorization, authentication, or allowing each participant to set whether another participant can remotely control the shared desktop via a streaming object, and which participants can remotely control the shared desktop. Other access control mechanisms may be included. For example, each user could store preferences indicating whether to allow other participants to control his or her local desktop or portions of the local desktop. These preferences are stored on each computing device (the transparent layer can be accessed, and can be used to allow or block remote control input by the transparent layer), or stored on the server to allow remote control input between the server and the computing device. Can be used to allow or block Such an access control mechanism can be used to determine whether a remote participant can provide input to another participant's desktop via an embedded streaming object, regardless of how it is stored.

전술된 기법 중 하나 이상은 하나 이상의 컴퓨터 시스템에서 구현되거나 그들을 포함할 수 있다. 도 32는 특수한 컴퓨팅 환경(3200)의 예를 도시한다. 컴퓨팅 환경(3200)은 설명된 실시예(들)의 사용 또는 기능의 범주에 대해 어떠한 제한도 시사하는 것으로 의도되지 않는다.One or more of the techniques described above may be implemented in or include one or more computer systems. 32 shows an example of a special computing environment 3200. Computing environment 3200 is not intended to imply any limitations on the scope of functionality or use of the described embodiment(s).

도 32를 참조하면, 컴퓨팅 환경(3000)은 적어도 하나의 처리 유닛(3210) 및 메모리(3220)를 포함한다. 처리 유닛(3210)은 컴퓨터 실행 가능 인스트럭션을 실행하고, 실제 또는 가상 프로세서일 수 있다. 다중 처리 시스템에서, 다수의 처리 유닛이 컴퓨터 실행 가능 인스트럭션을 실행하여, 처리 전력을 증가시킨다. 메모리(3220)는 휘발성 메모리(예컨대, 레지스터(Register), 캐시, RAM), 비휘발성 메모리(예컨대, ROM, EEPROM, 플래시 메모리 등), 또는 이 둘의 일부 조합일 수 있다. 메모리(3220)는 기술된 기법을 구현하는 소프트웨어(3280)를 저장할 수 있다.Referring to FIG. 32, the computing environment 3000 includes at least one processing unit 3210 and a memory 3220. The processing unit 3210 executes computer-executable instructions, and may be a real or virtual processor. In a multiple processing system, multiple processing units execute computer-executable instructions to increase processing power. The memory 3220 may be volatile memory (eg, a register, cache, RAM), non-volatile memory (eg, ROM, EEPROM, flash memory, etc.), or some combination of the two. Memory 3220 may store software 3280 implementing the described techniques.

컴퓨팅 환경은 추가 특징을 가질 수 있다. 예를 들어, 컴퓨팅 환경(3200)은 저장소(3240), 하나 이상의 입력 장치(3250), 하나 이상의 출력 장치(3260), 및 하나 이상의 통신 연결(3290)을 포함한다. 버스, 제어기, 또는 네트워크 상호연결과 같은 상호연결 메커니즘(3270)이 컴퓨팅 환경(3200)의 구성 요소들을 상호연결한다. 전형적으로, 운영 체제 소프트웨어 또는 펌웨어(미도시)는 컴퓨팅 환경(3200)에서 실행되는 다른 소프트웨어에 대한 운영 환경을 제공하고, 컴퓨팅 환경(3200)의 구성 요소의 활성화를 조정한다.The computing environment may have additional features. For example, computing environment 3200 includes storage 3240, one or more input devices 3250, one or more output devices 3260, and one or more communication connections 3290. An interconnection mechanism 3270, such as a bus, controller, or network interconnect, interconnects the components of the computing environment 3200. Typically, operating system software or firmware (not shown) provides an operating environment for other software running in computing environment 3200 and coordinates the activation of components of computing environment 3200.

저장소(3240)는 착탈식 또는 비착탈식일 수 있고, 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, CD-RW, DVD, 또는 정보를 저장하는 데 사용될 수 있고 컴퓨팅 환경(3200) 내에서 접근될 수 있는 임의의 다른 매체일 수 있다. 저장소(3240)는 소프트웨어(3280)에 대한 인스트럭션을 저장할 수 있다.Storage 3240 may be removable or non-removable, may be a magnetic disk, magnetic tape or cassette, CD-ROM, CD-RW, DVD, or used to store information and can be accessed within the computing environment 3200. It can be any other medium that is there. Storage 3240 may store instructions for software 3280.

입력 장치(들)(3250)는 키보드, 마우스, 펜, 트랙볼, 터치 스크린, 또는 게임 제어기와 같은 터치 입력 장치, 음성 입력 장치, 스캐닝 장치, 디지털 카메라, 원격 제어부, 또는 컴퓨팅 환경(3200)에 입력을 제공하는 다른 장치일 수 있다. 출력 장치(들)(3260)는 디스플레이, 텔레비전, 모니터, 프린터, 스피커, 또는 컴퓨팅 환경(3200)으로부터 출력을 제공하는 다른 장치일 수 있다.The input device(s) 3250 is input to a touch input device such as a keyboard, mouse, pen, trackball, touch screen, or game controller, a voice input device, a scanning device, a digital camera, a remote control unit, or a computing environment 3200 It may be another device that provides. The output device(s) 3260 may be a display, television, monitor, printer, speaker, or other device that provides output from the computing environment 3200.

통신 연결(들)(3290)은 다른 컴퓨팅 개체(Computing Entity)로의 통신 매체를 통한 통신을 가능하게 한다. 통신 매체는 컴퓨터 실행가능 인스트럭션, 오디오 또는 비디오 정보, 또는 변조된 데이터 신호 내의 다른 데이터와 같은 정보를 전달한다. 변조된 데이터 신호는 신호 내의 정보를 인코딩하기 위한 방식으로 설정 또는 변화된 그의 특성들 중 하나 이상을 갖는 신호이다. 제한이 아닌 예로서, 통신 매체는 전기, 광, RF, 적외선, 음향, 또는 다른 캐리어(Carrier)로 구현되는 유선 또는 무선 기법을 포함한다.The communication connection(s) 3290 enables communication over a communication medium to another computing entity. Communication media carry information such as computer executable instructions, audio or video information, or other data in a modulated data signal. A modulated data signal is a signal having one or more of its characteristics set or changed in a manner to encode information in the signal. By way of example and not limitation, communication media includes wired or wireless techniques implemented with electricity, light, RF, infrared, acoustic, or other carriers.

구현예는 컴퓨터 판독 가능 매체의 콘텍스트에서 기술될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨팅 환경 내에서 접근될 수 있는 임의의 가용 매체이다. 제한이 아닌 예로서, 컴퓨팅 환경(3200) 내에서, 컴퓨터 판독 가능 매체는 메모리(3220), 저장소(3240), 통신 매체, 및 위의 것들 중 임의의 것들의 조합을 포함한다.Implementations may be described in the context of a computer-readable medium. Computer-readable media is any available media that can be accessed within a computing environment. By way of example and not limitation, within computing environment 3200, computer-readable media includes memory 3220, storage 3240, communication media, and combinations of any of the above.

물론, 도 32는 식별 용이성만을 위해 컴퓨팅 환경(3200), 디스플레이 장치(3260), 및 입력 장치(3250)를 별개의 장치들로서 도시한다. 컴퓨팅 환경(3200), 디스플레이 장치(3260), 및 입력 장치(3250)는 별개의 장치들일 수 있고(예컨대, 모니터 및 마우스에 유선으로 연결되는 개인용 컴퓨터), 단일 장치 내에 통합될 수 있고(예컨대, 스마트폰 또는 태블릿과 같은, 터치 디스플레이를 갖는 모바일 장치), 또는 임의의 장치 조합일 수 있다(예컨대, 터치 스크린 디스플레이 장치에 동작 가능하게 결합되는 컴퓨팅 기기, 단일 디스플레이 장치 및 입력 장치에 부착되는 복수의 컴퓨팅 기기 등). 컴퓨팅 환경(3200)은 셋톱 박스, 개인용 컴퓨터, 또는 하나 이상의 서버, 예를 들어 네트워킹된 서버의 팜(Farm), 클러스터형 서버 환경, 또는 컴퓨팅 기기의 클라우드 네트워크일 수 있다.Of course, FIG. 32 illustrates computing environment 3200, display device 3260, and input device 3250 as separate devices for ease of identification only. Computing environment 3200, display device 3260, and input device 3250 may be separate devices (e.g., a personal computer wired to a monitor and mouse), integrated into a single device (e.g., A mobile device having a touch display, such as a smartphone or tablet), or any combination of devices (e.g., a computing device operably coupled to a touch screen display device, a single display device, and a plurality of devices attached to the input device). Computing devices, etc.). The computing environment 3200 may be a set-top box, a personal computer, or one or more servers, such as a farm of networked servers, a clustered server environment, or a cloud network of computing devices.

기술된 실시예를 참조하여 본 발명의 원리를 기술하고 예시했지만, 기술된 실시예는 그러한 원리를 벗어나지 않고서 배열 및 세부사항이 수정될 수 있다는 것이 인식될 것이다. 소프트웨어로 도시된 기술된 실시예의 요소는 하드웨어로 구현될 수 있고, 그 역도 성립한다.While the principles of the present invention have been described and illustrated with reference to the described embodiments, it will be appreciated that the described embodiments may be modified in arrangements and details without departing from such principles. The elements of the described embodiment shown in software may be implemented in hardware, and vice versa.

본 발명의 원리가 적용될 수 있는 많은 가능한 실시예의 관점에서, 다음의 청구범위 및 그의 등가물의 범주 및 사상 내에 있는 모든 그러한 실시예를 본 발명으로 주장한다.In view of the many possible embodiments to which the principles of the invention may be applied, all such embodiments that fall within the scope and spirit of the following claims and their equivalents are claimed as the invention.

Claims (20)

네트워킹된 협업 워크스페이스(collaboration workspace) 내에서 웹 소켓 연결을 통해 데스크탑을 공유하는 방법에 있어서, 상기 방법은:
로컬 컴퓨팅 기기의 사용자 인터페이스 상에서, 웹 소켓 연결을 통해 복수의 컴퓨팅 기기 상의 복수의 참가자에게 접근 가능하고 서버에서 호스팅되는, 협업 워크스페이스의 리프리젠테이션(representation)을 전송하는 단계;
상기 로컬 컴퓨팅 기기에 의해, 상기 협업 워크스페이스 내의 상기 로컬 컴퓨팅 기기의 로컬 데스크탑의 적어도 하나의 부분을 공유하기 위한 요청 및 상기 협업 워크스페이스의 상기 리프리젠테이션 내 하나의 영역의 선택을 수신하는 단계;
상기 로컬 컴퓨팅 기기에 의해, 상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 비디오 스트림을 출력하도록 구성된 스트리밍 객체를 생성하는 단계; 및
상기 로컬 컴퓨팅 기기에 의해, 상기 웹 소켓 연결을 통해 하나 이상의 커맨드(command) - 상기 하나 이상의 커맨드는, 상기 스트리밍 객체 및 상기 선택된 영역에 대응하는 정보를 포함하고 상기 서버로 하여금 상기 스트리밍 객체를 상기 선택된 영역에서 상기 협업 워크스페이스 내로 삽입하도록 하게끔 구성됨 - 를 상기 서버로 전송하는 단계;
를 포함하는, 방법.
A method of sharing a desktop through a web socket connection within a networked collaboration workspace, the method comprising:
Transmitting, on a user interface of a local computing device, a representation of the collaborative workspace, hosted on a server and accessible to a plurality of participants on the plurality of computing devices via a web socket connection;
Receiving, by the local computing device, a request to share at least one portion of a local desktop of the local computing device in the collaborative workspace and a selection of one area in the representation of the collaborative workspace;
Creating, by the local computing device, a streaming object configured to output a video stream of the at least one portion of the local desktop of the local computing device; And
By the local computing device, one or more commands through the web socket connection-the one or more commands include information corresponding to the streaming object and the selected region, and cause the server to select the streaming object Sending an area to the server, configured to be inserted into the collaboration workspace;
Containing, method.
제1항에 있어서,
상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분을 공유하기 위한 요청 및 상기 협업 워크스페이스의 상기 리프리젠테이션 내 하나의 영역의 선택을 수신하는 단계는:
상기 사용자 인터페이스 내에서 소스(source) 선택 인터페이스 - 상기 소스 선택 인터페이스는 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 선택을 수신하도록 구성됨 - 를 전송하는 단계; 및
상기 로컬 데스크탑의 상기 적어도 하나의 부분의 선택을 수신하는 단계;
를 포함하는, 방법.
The method of claim 1,
Receiving a request to share the at least one portion of the local desktop of the local computing device and a selection of one area within the representation of the collaboration workspace, comprising:
Transmitting a source selection interface within the user interface, the source selection interface configured to receive a selection of the at least one portion of the local desktop; And
Receiving a selection of the at least one portion of the local desktop;
Containing, method.
제1항에 있어서,
상기 적어도 하나의 부분은, 상기 로컬 데스크탑 내의 윈도우, 상기 로컬 컴퓨팅 기기 상에서 실행되는 애플리케이션에 대응하는 인터페이스, 또는 상기 로컬 데스크탑 중 하나를 포함하는, 방법.
The method of claim 1,
Wherein the at least one portion comprises one of a window in the local desktop, an interface corresponding to an application running on the local computing device, or the local desktop.
제1항에 있어서,
상기 서버에서 호스팅되는 상기 협업 워크스페이스의 상기 리프리젠테이션은, 상기 로컬 컴퓨팅 기기 상에서 실행되는 로컬 협업 애플리케이션에 의해 상기 로컬 컴퓨팅 기기 상에서 전송되며,
상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 상기 비디오 스트림을 출력하도록 구성된 상기 스트리밍 객체를 생성하는 단계는;
상기 로컬 협업 애플리케이션에 의해, 상기 로컬 협업 애플리케이션과 스크린 캡처 프로그램 사이의 API(application programming interface)를 통하여, 상기 로컬 컴퓨팅 기기 상에서 실행되는 상기 스크린 캡처 프로그램에게 소스 식별자에 대한 요청을 전송하는 단계;
상기 스크린 캡처 프로그램에 의해, 상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 스트림 - 상기 스트림은 대응하는 소스 식별자를 가짐 - 을 개시하는 단계;
상기 스크린 캡처 프로그램에 의해, 상기 로컬 협업 애플리케이션으로 상기 소스 식별자를 전송하는 단계; 및
상기 로컬 협업 애플리케이션에 의해, 상기 소스 식별자에 적어도 부분적으로 기반하여 상기 스트리밍 객체를 생성하는 단계;
를 포함하는, 방법.
The method of claim 1,
The representation of the collaboration workspace hosted on the server is transmitted on the local computing device by a local collaboration application running on the local computing device,
Creating the streaming object configured to output the video stream of the at least one portion of the local desktop of the local computing device;
Transmitting, by the local collaboration application, a request for a source identifier to the screen capture program executed on the local computing device through an application programming interface (API) between the local collaboration application and a screen capture program;
Initiating, by the screen capture program, a stream of the at least one portion of the local desktop of the local computing device, the stream having a corresponding source identifier;
Transmitting the source identifier to the local collaboration application by the screen capture program; And
Creating, by the local collaboration application, the streaming object based at least in part on the source identifier;
Containing, method.
제1항에 있어서,
상기 삽입된 스트리밍 객체는, 상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 상기 비디오 스트림을 수신하도록 구성되고, 상기 웹 소켓 연결을 통해, 상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 상기 비디오 스트림을 상기 복수의 컴퓨팅 기기에 전송하도록 구성된, 방법.
The method of claim 1,
The inserted streaming object is configured to receive the video stream of the at least one portion of the local desktop of the local computing device, and through the web socket connection, the at least one of the local desktop of the local computing device And transmitting the video stream of the portion of the to the plurality of computing devices.
제1항에 있어서,
상기 로컬 컴퓨팅 기기의 상기 사용자 인터페이스 상에서, 상기 협업 워크스페이스의 상기 리프리젠테이션 내로 상기 삽입된 스트리밍 객체 - 상기 삽입된 스트리밍 객체는 상기 비디오 스트림의 소스의 네트워크 주소와 연관됨 -를 전송하는 단계;
상기 로컬 컴퓨팅 기기 상에서 실행되는 투명 레이어 - 상기 투명 레이어는, 운영 체제 또는 상기 운영 체제 상에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상과 인터페이싱하도록 구성된, API(application programming interface)를 포함함 - 에 의해, 상기 삽입된 스트리밍 객체와 연관된 사용자 입력 - 상기 사용자 입력은 상기 로컬 데스크탑 내의 하나의 위치에 대응함 - 을 검출하는 단계;
상기 로컬 컴퓨팅 기기 상에서 실행되는 상기 투명 레이어에 의해, 상기 삽입된 스트리밍 객체와 연관된 상기 네트워크 주소가 상기 로컬 컴퓨팅 기기의 네트워크 주소에 대응하는 것을 판단하는 단계; 및
상기 로컬 컴퓨팅 기기 상에서 실행되는 상기 투명 레이어에 의해, 하나 이상의 제2 커맨드 - 상기 하나 이상의 제2 커맨드는 상기 로컬 데스크탑 내의 상기 위치에서 상기 사용자 입력을 수행하도록 구성됨 - 를, 상기 운영 체제 또는 상기 운영 체제 상에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상으로 전송하는 단계;
를 더 포함하는, 방법.
The method of claim 1,
Transmitting, on the user interface of the local computing device, the inserted streaming object into the representation of the collaborative workspace, the inserted streaming object being associated with the network address of the source of the video stream;
By a transparent layer running on the local computing device, the transparent layer including an application programming interface (API), configured to interface with one or more of an operating system or one or more applications configured to be executed on the operating system. Detecting a user input associated with the inserted streaming object, the user input corresponding to a location in the local desktop;
Determining, by the transparent layer executed on the local computing device, that the network address associated with the inserted streaming object corresponds to a network address of the local computing device; And
By the transparent layer running on the local computing device, one or more second commands, the one or more second commands configured to perform the user input at the location within the local desktop, the operating system or the operating system Transmitting to one or more of the one or more applications configured to run on the application;
The method further comprising.
제1항에 있어서,
상기 복수의 컴퓨팅 기기 내의 원격 컴퓨팅 기기의 원격 사용자 인터페이스 상에서, 상기 협업 워크스페이스의 원격 리프리젠테이션 내로 상기 삽입된 스트리밍 객체 - 상기 삽입된 스트리밍 객체는 상기 비디오 스트림의 소스의 네트워크 주소와 연관됨 - 를 전송하는 단계;
상기 원격 컴퓨팅 기기 상에서 실행되는 원격 투명 레이어 - 상기 투명 레이어는, 운영 체제 또는 상기 운영 체제 상에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상과 인터페이싱하도록 구성된, API(application programming interface)를 포함함 - 에 의해, 상기 삽입된 스트리밍 객체와 연관된 원격 사용자 입력 - 상기 원격 사용자 입력은 상기 로컬 데스크탑 내의 하나의 위치에 대응함 - 을 검출하는 단계;
상기 원격 컴퓨팅 기기 상에서 실행되는 상기 원격 투명 레이어에 의해, 상기 삽입된 스트리밍 객체와 연관된 상기 네트워크 주소가 상기 원격 컴퓨팅 기기의 네트워크 주소에 대응하지 않는 것을 판단하는 단계; 및
상기 원격 컴퓨팅 기기 상에서 실행되는 상기 원격 투명 레이어에 의해, 상기 웹 소켓 연결을 통하여, 하나 이상의 제2 커맨드 - 상기 하나 이상의 제2 커맨드는 상기 로컬 컴퓨팅 기기 상에서 실행되는 로컬 투명 레이어로 하여금 상기 로컬 데스크탑 내의 상기 위치에서 상기 사용자 입력을 수행하도록 하게끔 구성됨 - 를 상기 로컬 컴퓨팅 기기에게 전송하는 단계;
를 더 포함하는, 방법.
The method of claim 1,
On a remote user interface of a remote computing device in the plurality of computing devices, the inserted streaming object into the remote representation of the collaborative workspace, the inserted streaming object is associated with the network address of the source of the video stream. Transmitting;
By a remote transparent layer running on the remote computing device, the transparent layer comprising an application programming interface (API), configured to interface with one or more of an operating system or one or more applications configured to run on the operating system, Detecting a remote user input associated with the inserted streaming object, the remote user input corresponding to a location within the local desktop;
Determining, by the remote transparent layer running on the remote computing device, that the network address associated with the inserted streaming object does not correspond to a network address of the remote computing device; And
By the remote transparent layer running on the remote computing device, through the web socket connection, one or more second commands-the one or more second commands cause a local transparent layer executed on the local computing device to be in the local desktop. Transmitting, to the local computing device, configured to perform the user input at the location;
The method further comprising.
네트워킹된 협업 워크스페이스(collaboration workspace) 내에서 웹 소켓 연결을 통해 데스크탑을 공유하기 위한 로컬 컴퓨팅 기기에 있어서, 상기 로컬 컴퓨팅 기기는:
하나 이상의 프로세서; 및
하나 이상의 메모리 - 상기 하나 이상의 메모리는 상기 하나 이상의 프로세서 중 적어도 하나에 작동 가능하게 연동됨 - 를 포함하며,
상기 하나 이상의 메모리에 저장된 인스트럭션은, 상기 하나 이상의 프로세서 중 적어도 하나에 의하여 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금:
상기 로컬 컴퓨팅 기기의 사용자 인터페이스 상에서, 상기 웹 소켓 연결을 통해 복수의 컴퓨팅 기기 상의 복수의 참가자에게 접근 가능하고 서버에서 호스팅되는, 협업 워크스페이스의 리프리젠테이션(representation)을 전송하는 프로세스;
상기 협업 워크스페이스 내의 상기 로컬 컴퓨팅 기기의 로컬 데스크탑의 적어도 하나의 부분을 공유하기 위한 요청 및 상기 협업 워크스페이스의 상기 리프리젠테이션 내 하나의 영역의 선택을 수신하는 프로세스;
상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 비디오 스트림을 출력하도록 구성된 스트리밍 객체를 생성하는 프로세스; 및
상기 웹 소켓 연결을 통해 하나 이상의 커맨드(command) - 상기 하나 이상의 커맨드는, 상기 스트리밍 객체 및 상기 선택된 영역에 대응하는 정보를 포함하고 상기 서버로 하여금 상기 스트리밍 객체를 상기 선택된 영역에서 상기 협업 워크스페이스 내로 삽입하도록 하게끔 구성됨 - 를 상기 서버로 전송하는 프로세스;
를 수행하도록 하는, 로컬 컴퓨팅 기기.
A local computing device for sharing a desktop through a web socket connection within a networked collaboration workspace, the local computing device comprising:
One or more processors; And
One or more memories-the one or more memories are operatively interlocked with at least one of the one or more processors -,
When an instruction stored in the one or more memories is executed by at least one of the one or more processors, at least one of the one or more processors causes:
A process of transmitting, on a user interface of the local computing device, a representation of a collaborative workspace accessible to a plurality of participants on a plurality of computing devices through the web socket connection and hosted on a server;
A process of receiving a request to share at least one portion of a local desktop of the local computing device in the collaborative workspace and a selection of an area within the representation of the collaborative workspace;
Creating a streaming object configured to output a video stream of the at least one portion of the local desktop of the local computing device; And
One or more commands through the web socket connection-The one or more commands include information corresponding to the streaming object and the selected area, and cause the server to transfer the streaming object from the selected area to the collaboration workspace. Configured to insert-to the server;
To perform, a local computing device.
제8항에 있어서,
상기 하나 이상의 프로세서 중 적어도 하나에 의하여 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금 상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분을 공유하기 위한 요청 및 상기 협업 워크스페이스의 상기 리프리젠테이션 내 하나의 영역의 선택을 수신하도록 하는 상기 인스트럭션은, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금:
상기 사용자 인터페이스 내에서 소스(source) 선택 인터페이스 - 상기 소스 선택 인터페이스는 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 선택을 수신하도록 구성됨 - 를 전송하는 프로세스; 및
상기 로컬 데스크탑의 상기 적어도 하나의 부분의 선택을 수신하는 프로세스;
를 더 수행하도록 하는, 로컬 컴퓨팅 기기.
The method of claim 8,
When executed by at least one of the one or more processors, a request for at least one of the one or more processors to share the at least one portion of the local desktop of the local computing device and within the representation of the collaboration workspace The instruction to receive a selection of one region causes at least one of the one or more processors to:
A process of transmitting a source selection interface within the user interface, the source selection interface configured to receive a selection of the at least one portion of the local desktop; And
Receiving a selection of the at least one portion of the local desktop;
The local computing device to further perform.
제8항에 있어서,
상기 적어도 하나의 부분은, 상기 로컬 데스크탑 내의 윈도우, 상기 로컬 컴퓨팅 기기 상에서 실행되는 애플리케이션에 대응하는 인터페이스, 또는 상기 로컬 데스크탑 중 하나를 포함하는, 로컬 컴퓨팅 기기.
The method of claim 8,
The at least one portion includes one of a window in the local desktop, an interface corresponding to an application running on the local computing device, or the local desktop.
제8항에 있어서,
상기 서버에서 호스팅되는 상기 협업 워크스페이스의 상기 리프리젠테이션은, 상기 로컬 컴퓨팅 기기 상에서 실행되는 로컬 협업 애플리케이션에 의해 상기 로컬 컴퓨팅 기기 상에서 전송되며,
상기 하나 이상의 프로세서 중 적어도 하나에 의하여 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금 상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 상기 비디오 스트림을 출력하도록 구성된 상기 스트리밍 객체를 생성하도록 하는 상기 인스트럭션은, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금;
상기 로컬 협업 애플리케이션에 의해, 상기 로컬 협업 애플리케이션과 스크린 캡처 프로그램 사이의 API(application programming interface)를 통하여, 상기 로컬 컴퓨팅 기기 상에서 실행되는 상기 스크린 캡처 프로그램에게 소스 식별자에 대한 요청을 전송하는 프로세스;
상기 스크린 캡처 프로그램에 의해, 상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 스트림 - 상기 스트림은 대응하는 소스 식별자를 가짐 - 을 개시하는 프로세스;
상기 스크린 캡처 프로그램에 의해, 상기 로컬 협업 애플리케이션으로 상기 소스 식별자를 전송하는 프로세스; 및
상기 로컬 협업 애플리케이션에 의해, 상기 소스 식별자에 적어도 부분적으로 기반하여 상기 스트리밍 객체를 생성하는 프로세스;
를 더 수행하도록 하는, 로컬 컴퓨팅 기기.
The method of claim 8,
The representation of the collaboration workspace hosted on the server is transmitted on the local computing device by a local collaboration application running on the local computing device,
The at least one of the one or more processors to generate the streaming object configured to output the video stream of the at least one portion of the local desktop of the local computing device, when executed by at least one of the one or more processors The instruction causes at least one of the one or more processors;
A process of transmitting, by the local collaboration application, a request for a source identifier to the screen capture program running on the local computing device through an application programming interface (API) between the local collaboration application and a screen capture program;
Initiating, by the screen capture program, a stream of the at least one portion of the local desktop of the local computing device, the stream having a corresponding source identifier;
Sending the source identifier to the local collaboration application by the screen capture program; And
Creating, by the local collaboration application, the streaming object based at least in part on the source identifier;
The local computing device to further perform.
제8항에 있어서,
상기 삽입된 스트리밍 객체는, 상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 상기 비디오 스트림을 수신하도록 구성되고, 상기 웹 소켓 연결을 통해, 상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 상기 비디오 스트림을 상기 복수의 컴퓨팅 기기에 전송하도록 구성된, 로컬 컴퓨팅 기기.
The method of claim 8,
The inserted streaming object is configured to receive the video stream of the at least one portion of the local desktop of the local computing device, and through the web socket connection, the at least one of the local desktop of the local computing device A local computing device configured to transmit a portion of the video stream to the plurality of computing devices.
제8항에 있어서,
상기 하나 이상의 메모리 중 적어도 하나에 저장된 인스트럭션은, 상기 하나 이상의 프로세서 중 적어도 하나에 의하여 실행될 때, 상기 하나 이상의 프로세서 중 적어도 하나로 하여금:
상기 로컬 컴퓨팅 기기의 상기 사용자 인터페이스 상에서, 상기 협업 워크스페이스의 상기 리프리젠테이션 내로 상기 삽입된 스트리밍 객체 - 상기 삽입된 스트리밍 객체는 상기 비디오 스트림의 소스의 네트워크 주소와 연관됨 -를 전송하는 프로세스;
상기 로컬 컴퓨팅 기기 상에서 실행되는 투명 레이어 - 상기 투명 레이어는, 운영 체제 또는 상기 운영 체제 상에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상과 인터페이싱하도록 구성된, API(application programming interface)를 포함함 - 에 의해, 상기 삽입된 스트리밍 객체와 연관된 사용자 입력 - 상기 사용자 입력은 상기 로컬 데스크탑 내의 하나의 위치에 대응함 - 을 검출하는 프로세스;
상기 로컬 컴퓨팅 기기 상에서 실행되는 상기 투명 레이어에 의해, 상기 삽입된 스트리밍 객체와 연관된 상기 네트워크 주소가 상기 로컬 컴퓨팅 기기의 네트워크 주소에 대응하는 것을 판단하는 프로세스; 및
상기 로컬 컴퓨팅 기기 상에서 실행되는 상기 투명 레이어에 의해, 하나 이상의 제2 커맨드 - 상기 하나 이상의 제2 커맨드는 상기 로컬 데스크탑 내의 상기 위치에서 상기 사용자 입력을 수행하도록 구성됨 - 를, 상기 운영 체제 또는 상기 운영 체제 상에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상으로 전송하는 프로세스;
를 더 수행하도록 하는, 로컬 컴퓨팅 기기.
The method of claim 8,
When an instruction stored in at least one of the one or more memories is executed by at least one of the one or more processors, at least one of the one or more processors causes:
A process of transmitting, on the user interface of the local computing device, the inserted streaming object into the representation of the collaborative workspace, the inserted streaming object being associated with the network address of the source of the video stream;
By a transparent layer running on the local computing device, the transparent layer including an application programming interface (API), configured to interface with one or more of an operating system or one or more applications configured to be executed on the operating system. A process of detecting a user input associated with the inserted streaming object, the user input corresponding to a location within the local desktop;
A process of determining, by the transparent layer running on the local computing device, that the network address associated with the inserted streaming object corresponds to a network address of the local computing device; And
By the transparent layer running on the local computing device, one or more second commands, the one or more second commands configured to perform the user input at the location within the local desktop, the operating system or the operating system A process of transmitting to one or more of the one or more applications configured to run on the application;
The local computing device to further perform.
컴퓨터 판독 가능 인스트럭션을 저장하는 적어도 하나의 비일시적(non-transitory) 컴퓨터 판독 가능 매체에 있어서, 상기 적어도 하나의 비일시적 컴퓨터 판독 가능 매체는, 로컬 컴퓨팅 기기에 의해 실행될 때, 상기 로컬 컴퓨팅 기기로 하여금:
로컬 컴퓨팅 기기의 사용자 인터페이스 상에서, 웹 소켓 연결을 통해 복수의 컴퓨팅 기기 상의 복수의 참가자에게 접근 가능하고 서버에서 호스팅되는, 협업 워크스페이스의 리프리젠테이션(representation)을 전송하는 프로세스;
상기 협업 워크스페이스 내의 상기 로컬 컴퓨팅 기기의 로컬 데스크탑의 적어도 하나의 부분을 공유하기 위한 요청 및 상기 협업 워크스페이스의 상기 리프리젠테이션 내 하나의 영역의 선택을 수신하는 프로세스;
상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 비디오 스트림을 출력하도록 구성된 스트리밍 객체를 생성하는 프로세스; 및
상기 웹 소켓 연결을 통해 하나 이상의 커맨드(command) - 상기 하나 이상의 커맨드는, 상기 스트리밍 객체 및 상기 선택된 영역에 대응하는 정보를 포함하고 상기 서버로 하여금 상기 스트리밍 객체를 상기 선택된 영역에서 상기 협업 워크스페이스 내로 삽입하도록 하게끔 구성됨 - 를 상기 서버로 전송하는 프로세스;
를 수행하도록 하는, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
At least one non-transitory computer-readable medium storing computer-readable instructions, wherein the at least one non-transitory computer-readable medium, when executed by a local computing device, causes the local computing device to :
A process of transmitting, on a user interface of a local computing device, a representation of a collaborative workspace, hosted on a server and accessible to a plurality of participants on the plurality of computing devices via a web socket connection;
A process of receiving a request to share at least one portion of a local desktop of the local computing device in the collaborative workspace and a selection of an area within the representation of the collaborative workspace;
Creating a streaming object configured to output a video stream of the at least one portion of the local desktop of the local computing device; And
One or more commands through the web socket connection-The one or more commands include information corresponding to the streaming object and the selected area, and cause the server to transfer the streaming object from the selected area to the collaboration workspace. Configured to insert-to the server;
At least one non-transitory computer-readable medium to perform.
제14항에 있어서,
상기 로컬 컴퓨팅 기기에 의하여 실행될 때, 상기 로컬 컴퓨팅 기기로 하여금 상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분을 공유하기 위한 요청 및 상기 협업 워크스페이스의 상기 리프리젠테이션 내 하나의 영역의 선택을 수신하도록 하는 상기 인스트럭션은, 상기 로컬 컴퓨팅 기기로 하여금:
상기 사용자 인터페이스 내에서 소스(source) 선택 인터페이스 - 상기 소스 선택 인터페이스는 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 선택을 수신하도록 구성됨 - 를 전송하는 프로세스; 및
상기 로컬 데스크탑의 상기 적어도 하나의 부분의 선택을 수신하는 프로세스;
를 더 수행하도록 하는, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
The method of claim 14,
When executed by the local computing device, a request for the local computing device to share the at least one portion of the local desktop of the local computing device and selection of an area within the representation of the collaboration workspace The instruction to receive: causes the local computing device to:
A process of transmitting a source selection interface within the user interface, the source selection interface configured to receive a selection of the at least one portion of the local desktop; And
Receiving a selection of the at least one portion of the local desktop;
At least one non-transitory computer-readable medium to further perform.
제14항에 있어서,
상기 적어도 하나의 부분은, 상기 로컬 데스크탑 내의 윈도우, 상기 로컬 컴퓨팅 기기 상에서 실행되는 애플리케이션에 대응하는 인터페이스, 또는 상기 로컬 데스크탑 중 하나를 포함하는, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
The method of claim 14,
The at least one portion includes one of a window in the local desktop, an interface corresponding to an application running on the local computing device, or the local desktop.
제14항에 있어서,
상기 서버에서 호스팅되는 상기 협업 워크스페이스의 상기 리프리젠테이션은, 상기 로컬 컴퓨팅 기기 상에서 실행되는 로컬 협업 애플리케이션에 의해 상기 로컬 컴퓨팅 기기 상에서 전송되며,
상기 로컬 컴퓨팅 기기에 의하여 실행될 때, 상기 로컬 컴퓨팅 기기로 하여금 상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 상기 비디오 스트림을 출력하도록 구성된 상기 스트리밍 객체를 생성하도록 하는 상기 인스트럭션은, 상기 로컬 컴퓨팅 기기로 하여금:
상기 로컬 협업 애플리케이션에 의해, 상기 로컬 협업 애플리케이션과 스크린 캡처 프로그램 사이의 API(application programming interface)를 통하여, 상기 로컬 컴퓨팅 기기 상에서 실행되는 상기 스크린 캡처 프로그램에게 소스 식별자에 대한 요청을 전송하는 프로세스;
상기 스크린 캡처 프로그램에 의해, 상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 스트림 - 상기 스트림은 대응하는 소스 식별자를 가짐 - 을 개시하는 프로세스;
상기 스크린 캡처 프로그램에 의해, 상기 로컬 협업 애플리케이션으로 상기 소스 식별자를 전송하는 프로세스; 및
상기 로컬 협업 애플리케이션에 의해, 상기 소스 식별자에 적어도 부분적으로 기반하여 상기 스트리밍 객체를 생성하는 프로세스;
를 더 수행하도록 하는, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
The method of claim 14,
The representation of the collaboration workspace hosted on the server is transmitted on the local computing device by a local collaboration application running on the local computing device,
The instruction, when executed by the local computing device, causes the local computing device to create the streaming object configured to output the video stream of the at least one portion of the local desktop of the local computing device. Computing devices:
A process of transmitting, by the local collaboration application, a request for a source identifier to the screen capture program running on the local computing device through an application programming interface (API) between the local collaboration application and a screen capture program;
Initiating, by the screen capture program, a stream of the at least one portion of the local desktop of the local computing device, the stream having a corresponding source identifier;
Sending the source identifier to the local collaboration application by the screen capture program; And
Creating, by the local collaboration application, the streaming object based at least in part on the source identifier;
At least one non-transitory computer-readable medium to further perform.
제14항에 있어서,
상기 삽입된 스트리밍 객체는, 상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 상기 비디오 스트림을 수신하도록 구성되고, 상기 웹 소켓 연결을 통해, 상기 로컬 컴퓨팅 기기의 상기 로컬 데스크탑의 상기 적어도 하나의 부분의 상기 비디오 스트림을 상기 복수의 컴퓨팅 기기에 전송하도록 구성된, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
The method of claim 14,
The inserted streaming object is configured to receive the video stream of the at least one portion of the local desktop of the local computing device, and through the web socket connection, the at least one of the local desktop of the local computing device At least one non-transitory computer-readable medium configured to transmit a portion of the video stream to the plurality of computing devices.
제14항에 있어서,
상기 적어도 하나의 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 판독 가능 인스트럭션은, 상기 로컬 컴퓨팅 기기에 의하여 실행될 때, 상기 로컬 컴퓨팅 기기로 하여금:
상기 로컬 컴퓨팅 기기의 상기 사용자 인터페이스 상에서, 상기 협업 워크스페이스의 상기 리프리젠테이션 내로 상기 삽입된 스트리밍 객체 - 상기 삽입된 스트리밍 객체는 상기 비디오 스트림의 소스의 네트워크 주소와 연관됨 -를 전송하는 프로세스;
상기 로컬 컴퓨팅 기기 상에서 실행되는 투명 레이어 - 상기 투명 레이어는, 운영 체제 또는 상기 운영 체제 상에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상과 인터페이싱하도록 구성된, API(application programming interface)를 포함함 - 에 의해, 상기 삽입된 스트리밍 객체와 연관된 사용자 입력 - 상기 사용자 입력은 상기 로컬 데스크탑 내의 하나의 위치에 대응함 - 을 검출하는 프로세스;
상기 로컬 컴퓨팅 기기 상에서 실행되는 상기 투명 레이어에 의해, 상기 삽입된 스트리밍 객체와 연관된 상기 네트워크 주소가 상기 로컬 컴퓨팅 기기의 네트워크 주소에 대응하는 것을 판단하는 프로세스; 및
상기 로컬 컴퓨팅 기기 상에서 실행되는 상기 투명 레이어에 의해, 하나 이상의 제2 커맨드 - 상기 하나 이상의 제2 커맨드는 상기 로컬 데스크탑 내의 상기 위치에서 상기 사용자 입력을 수행하도록 구성됨 - 를, 상기 운영 체제 또는 상기 운영 체제 상에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상으로 전송하는 프로세스;
를 더 수행하도록 하는, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
The method of claim 14,
Computer-readable instructions stored in the at least one non-transitory computer-readable medium, when executed by the local computing device, cause the local computing device to:
A process of transmitting, on the user interface of the local computing device, the inserted streaming object into the representation of the collaborative workspace, the inserted streaming object being associated with the network address of the source of the video stream;
By a transparent layer running on the local computing device, the transparent layer including an application programming interface (API), configured to interface with one or more of an operating system or one or more applications configured to be executed on the operating system. A process of detecting a user input associated with the inserted streaming object, the user input corresponding to a location within the local desktop;
A process of determining, by the transparent layer running on the local computing device, that the network address associated with the inserted streaming object corresponds to a network address of the local computing device; And
By the transparent layer running on the local computing device, one or more second commands, the one or more second commands configured to perform the user input at the location within the local desktop, the operating system or the operating system A process of transmitting to one or more of the one or more applications configured to run on the application;
At least one non-transitory computer-readable medium to further perform.
제14항에 있어서,
상기 적어도 하나의 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 판독 가능 인스트럭션은, 상기 복수의 컴퓨팅 기기 내의 원격 컴퓨팅 기기에 의하여 실행될 때, 상기 원격 컴퓨팅 기기로 하여금:
상기 원격 컴퓨팅 기기의 원격 사용자 인터페이스 상에서, 상기 협업 워크스페이스의 원격 리프리젠테이션 내로 상기 삽입된 스트리밍 객체 - 상기 삽입된 스트리밍 객체는 상기 비디오 스트림의 소스의 네트워크 주소와 연관됨 - 를 전송하는 프로세스;
상기 원격 컴퓨팅 기기 상에서 실행되는 원격 투명 레이어 - 상기 투명 레이어는, 운영 체제 또는 상기 운영 체제 상에서 실행되도록 구성된 하나 이상의 애플리케이션 중 하나 이상과 인터페이싱하도록 구성된, API(application programming interface)를 포함함 - 에 의해, 상기 삽입된 스트리밍 객체와 연관된 원격 사용자 입력 - 상기 원격 사용자 입력은 상기 로컬 데스크탑 내의 하나의 위치에 대응함 - 을 검출하는 프로세스;
상기 원격 컴퓨팅 기기 상에서 실행되는 상기 원격 투명 레이어에 의해, 상기 삽입된 스트리밍 객체와 연관된 상기 네트워크 주소가 상기 원격 컴퓨팅 기기의 네트워크 주소에 대응하지 않는 것을 판단하는 프로세스; 및
상기 원격 컴퓨팅 기기 상에서 실행되는 상기 원격 투명 레이어에 의해, 상기 웹 소켓 연결을 통하여, 하나 이상의 제2 커맨드 - 상기 하나 이상의 제2 커맨드는 상기 로컬 컴퓨팅 기기 상에서 실행되는 로컬 투명 레이어로 하여금 상기 로컬 데스크탑 내의 상기 위치에서 상기 사용자 입력을 수행하도록 하게끔 구성됨 - 를 상기 로컬 컴퓨팅 기기에게 전송하는 프로세스;
를 더 수행하도록 하는, 적어도 하나의 비일시적 컴퓨터 판독 가능 매체.
The method of claim 14,
Computer-readable instructions stored in the at least one non-transitory computer-readable medium, when executed by a remote computing device in the plurality of computing devices, cause the remote computing device to:
Transmitting, on a remote user interface of the remote computing device, the inserted streaming object into the remote representation of the collaborative workspace, the inserted streaming object being associated with the network address of the source of the video stream;
By a remote transparent layer running on the remote computing device, the transparent layer comprising an application programming interface (API), configured to interface with one or more of an operating system or one or more applications configured to run on the operating system, Detecting a remote user input associated with the inserted streaming object, the remote user input corresponding to a location within the local desktop;
Determining, by the remote transparent layer running on the remote computing device, that the network address associated with the inserted streaming object does not correspond to the network address of the remote computing device; And
By the remote transparent layer running on the remote computing device, through the web socket connection, one or more second commands-the one or more second commands cause a local transparent layer executed on the local computing device to be in the local desktop. Configured to perform the user input at the location-to the local computing device;
At least one non-transitory computer-readable medium to further perform.
KR1020207038083A 2018-06-01 2019-05-30 A method, apparatus, and computer readable medium for sharing a desktop via a web socket connection within a networked collaboration workspace. KR20210018353A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/995,878 US11412012B2 (en) 2017-08-24 2018-06-01 Method, apparatus, and computer-readable medium for desktop sharing over a web socket connection in a networked collaboration workspace
US15/995,878 2018-06-01
PCT/EP2019/064131 WO2019229208A1 (en) 2018-06-01 2019-05-30 Method, apparatus, and computer-readable medium for desktop sharing over a web socket connection in a networked collaboration workspace

Publications (1)

Publication Number Publication Date
KR20210018353A true KR20210018353A (en) 2021-02-17

Family

ID=66821200

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207038083A KR20210018353A (en) 2018-06-01 2019-05-30 A method, apparatus, and computer readable medium for sharing a desktop via a web socket connection within a networked collaboration workspace.

Country Status (6)

Country Link
EP (1) EP3803558A1 (en)
JP (1) JP2021525910A (en)
KR (1) KR20210018353A (en)
CN (1) CN112204512A (en)
BR (1) BR112020024441A2 (en)
WO (1) WO2019229208A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230127644A1 (en) * 2021-10-25 2023-04-27 Wei Li Methods, devices, and media for managing a virtual workspace

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120010995A1 (en) * 2008-10-23 2012-01-12 Savnor Technologies Web content capturing, packaging, distribution
US10860279B2 (en) * 2009-11-24 2020-12-08 Clearslide, Inc. Method and system for browser-based screen sharing
CA2722460A1 (en) * 2010-11-26 2012-05-26 Centre De Recherche Informatique De Montreal Screen sharing and video conferencing system and method
US8745266B2 (en) * 2011-06-30 2014-06-03 Citrix Systems, Inc. Transparent layer 2 redirection of request to single sign in service based on applying policy to content of request
US9152376B2 (en) * 2011-12-01 2015-10-06 At&T Intellectual Property I, L.P. System and method for continuous multimodal speech and gesture interaction
US20140101571A1 (en) * 2012-10-04 2014-04-10 Lucid Dream Software, Inc. Shared collaborative environment
US10484189B2 (en) * 2013-11-13 2019-11-19 Microsoft Technology Licensing, Llc Enhanced collaboration services
WO2017019292A1 (en) * 2015-07-24 2017-02-02 Coscreen, Inc. Frictionless interface for virtual collaboration, communication and cloud computing

Also Published As

Publication number Publication date
CN112204512A (en) 2021-01-08
EP3803558A1 (en) 2021-04-14
JP2021525910A (en) 2021-09-27
WO2019229208A1 (en) 2019-12-05
BR112020024441A2 (en) 2021-03-23

Similar Documents

Publication Publication Date Title
US11412012B2 (en) Method, apparatus, and computer-readable medium for desktop sharing over a web socket connection in a networked collaboration workspace
US11483376B2 (en) Method, apparatus, and computer-readable medium for transmission of files over a web socket connection in a networked collaboration workspace
JP5442727B2 (en) Display of teaching videos on the user interface display
JP6050719B2 (en) User interface virtualization for remote devices
US9542010B2 (en) System for interacting with objects in a virtual environment
US20190065012A1 (en) Method, apparatus, and computer-readable medium for propagating enriched note data objects over a web socket connection in a networked collaboration workspace
US20200396315A1 (en) Delivery of apps in a media stream
JP2020532007A (en) Methods, devices, and computer-readable media that provide a general-purpose interface between hardware and software
KR20200131881A (en) Method, apparatus, and computer readable medium for transferring files over a web socket connection in a networked collaborative workspace
KR20210018353A (en) A method, apparatus, and computer readable medium for sharing a desktop via a web socket connection within a networked collaboration workspace.
US11334220B2 (en) Method, apparatus, and computer-readable medium for propagating cropped images over a web socket connection in a networked collaboration workspace
JP2021533456A (en) Methods, devices and computer-readable media for communicating expanded note data objects over websocket connections in a networked collaborative workspace.
KR20210010567A (en) Method, apparatus, and computer readable medium for propagating cropped images over a web socket connection in a networked collaborative workspace