KR20090106453A - 원격 상호작용에 응답한 비디오 콘텐츠의 전송 아키텍처 - Google Patents
원격 상호작용에 응답한 비디오 콘텐츠의 전송 아키텍처 Download PDFInfo
- Publication number
- KR20090106453A KR20090106453A KR1020097009054A KR20097009054A KR20090106453A KR 20090106453 A KR20090106453 A KR 20090106453A KR 1020097009054 A KR1020097009054 A KR 1020097009054A KR 20097009054 A KR20097009054 A KR 20097009054A KR 20090106453 A KR20090106453 A KR 20090106453A
- Authority
- KR
- South Korea
- Prior art keywords
- engine
- program
- video frames
- user
- network
- Prior art date
Links
- 230000003993 interaction Effects 0.000 title description 10
- 238000000034 method Methods 0.000 claims abstract description 75
- 230000005540 biological transmission Effects 0.000 claims abstract description 27
- 230000008569 process Effects 0.000 claims abstract description 27
- 230000006835 compression Effects 0.000 claims abstract description 20
- 238000007906 compression Methods 0.000 claims abstract description 20
- 238000012545 processing Methods 0.000 claims description 71
- 230000008859 change Effects 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 230000001502 supplementing effect Effects 0.000 claims 1
- 230000015654 memory Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 15
- 238000007726 management method Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 9
- 230000001413 cellular effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006854 communication Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000000116 mitigating effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000007175 bidirectional communication Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000007790 scraping Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/16—Analogue secrecy systems; Analogue subscription systems
- H04N7/173—Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
- H04N7/17309—Transmission or handling of upstream communications
- H04N7/17318—Direct or substantially direct transmission and handling of requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
- H04L65/401—Support for services or applications wherein the services involve a main real-time session and one or more additional parallel real-time or time sensitive sessions, e.g. white board sharing or spawning of a subconference
- H04L65/4015—Support for services or applications wherein the services involve a main real-time session and one or more additional parallel real-time or time sensitive sessions, e.g. white board sharing or spawning of a subconference where at least one of the additional parallel sessions is real time or time sensitive, e.g. white board sharing, collaboration or spawning of a subconference
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/752—Media network packet handling adapting media to network capabilities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/756—Media network packet handling adapting media to device capabilities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/762—Media network packet handling at the source
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/23424—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/266—Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
- H04N21/2668—Creating a channel for a dedicated end-user group, e.g. insertion of targeted commercials based on end-user profiles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/442—Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
- H04N21/44213—Monitoring of end-user related data
- H04N21/44222—Analytics of user selections, e.g. selection of programs or purchase activity
- H04N21/44224—Monitoring of user activity on external systems, e.g. Internet browsing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
- H04N21/47205—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for manipulating displayed content, e.g. interacting with MPEG-4 objects, editing locally
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/65—Transmission of management data between client and server
- H04N21/658—Transmission by the client directed to the server
- H04N21/6587—Control parameters, e.g. trick play commands, viewpoint selection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8545—Content authoring for generating interactive applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/613—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Databases & Information Systems (AREA)
- Social Psychology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Marketing (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Between Computers (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
네트워크상에서 비디오 프레임들을 통신하기 위한 클라이언트-서버 아키텍처에 관계된 시스템들 및 방법들이 개시된다. 실시예에서, 시스템은 제1 장치에 탑재된 제1 엔진을 포함하고, 이러한 제1 엔진은 네트워크상으로 전송하기 위해, 프로그램의 유저 인터페이스의 비디오 프레임들의 열을 인코딩한다. 이러한 인코딩은 하나 또는 그 이상의 피드백 파라미터들에 기초하고, 비디오 압축 기술들을 포함한다. 동일한 실시예에서, 상기 시스템은 상기 프로그램과 동작할 수 있도록 결합된 제1 명령 처리 엔진을 포함한다. 동일한 실시예에서, 상기 시스템은 제2 장치에 탑재된 제2 엔진을 포함하고, 상기 제2 엔진은 상기 네트워크상으로 전송한 후에 상기 비디오 프레임들의 열을 디코딩한다. 동일한 실시예에서, 상기 시스템은, 상기 제1 명령 처리 엔진과 동작할 수 있도록 결합된 제2 명령 처리 엔진을 포함하고, 상기 제2 명령 처리 엔진은 상기 제1 명령 처리 엔진을 통해서 상기 제2 장치의 유저 입력을 상기 프로그램에 통신한다.
Description
본 발명은 원격 상호작용에 응답한 비디오 콘텐츠의 전송 아키텍처 관한 것이다. 보다 상세하게는, 본 발명은 비디오 프레임들의 열을 장치(device)에 쌍방향으로 교통(communication)하는 것에 관한 것이다.
클라이언트-서버 아키텍처는 다양한 타입의 네트워크 환경의 다양한 콘텍스트(context)에서 사용된다. 어떤 네트워크 환경에서, 대역폭 한계들(bandwidth limitations)은 클라이언트-서버 아키텍처를 사용함에 있어 주된 한계요소들 중 하나를 포함한다. 그러한 대역폭 제한 환경은 유선 네트워크, 무선 네트워크, 및 그러한 네트워크들이 결합 또는 복합된 네트워크에서 발생될 수 있다. 예를 들면, 무선 네트워크의 클라이언트 장치들은, 장치의 성능 예컨대, 처리능력, 메모리 한계 및 파워 (예컨대, 배터리) 한계에 관련하여 리소스(resource)가 제한될 수 있다. 상대적으로 많은 양의 대역폭 및 프로세싱 파워를 사용하는, 웹브라우저 애플리케이션들과 같은 엔드-유저 애플리케이션들(End-user applications)은 모바일 클라이언트 장치에서 실행될 때, 유저들에게 불만족스러울 수 있다. 이렇게 유저들이 불만족을 느끼는 것은 흔히 웹브라우징 세션(웹브라우징 sessions)에 기대되는 고속의 쌍방향성을 제공하는 능력이 취약한 것에 기인한다. 셀룰러폰과 같은 많은 모바일 클라이언트 장치들은 그러한 애플리케이션들의 모든 특성(full-featured version)들을 적절하게 지원하지 못할 수도 있다.
웹사이트들은 계속적으로 특성들이 풍부해지고 있으며, 많은 모바일 클라이언트 장치들에서 지원되지 않는 (애니메이션 플러그인들과 같은) 다양한 보조적인 소프트웨어를 사용하는 경향이 증가되고 있다. 많은 모바일 클라이언트 장치들에 비디오 콘텐트를 전송함에 있어서, 대역폭 한계 및 현재의 클라이언트-서버 아키텍처들이 이러한 한계들을 적절히 조절하는데 무능력한 것 때문에, 많은 유저들이 불만족을 경험할 수 있다. 따라서, 다양한 대역폭의 크로스섹션 및 제한된 성능의 모바일 장치들에서 모든 특성을 구현할 수 있는 웹브라우징을 지원할 수 있는 수요가 존재하며, 마찬가지로 동일한 장치들에서의 다른 애플리케이션들을 지원할 수 있는 수요가 존재한다. 본 발명의 실시예들은 다른 수요들 또한 충족시킨다.
본 발명의 실시예에서는 네트워크상에서 비디오 프레임들을 통신하기 위한 클라이언트-서버 아키텍처에 관계된 시스템들 및 방법들이 개시된다. 일 실시예에서, 시스템은 제1 장치에 탑재된 제1 엔진을 포함하고, 이러한 제1 엔진은 네트워크상으로 전송하기 위해, 프로그램의 유저 인터페이스의 비디오 프레임들의 열을 인코딩한다. 이러한 인코딩은 하나 또는 그 이상의 피드백 파라미터들에 기초하고, 비디오 압축 기술들을 포함한다. 동일한 실시예에서, 상기 시스템은 상기 프로그램과 동작할 수 있도록 결합된 제1 명령 처리 엔진을 포함한다. 동일한 실시예에서, 상기 시스템은 제2 장치에 탑재된 제2 엔진을 포함하고, 상기 제2 엔진은 상기 네트워크상으로 전송한 후에 상기 비디오 프레임들의 열을 디코딩한다. 동일한 실시예에서, 상기 시스템은, 상기 제1 명령 처리 엔진과 동작할 수 있도록 결합된 제2 명령 처리 엔진을 포함하고, 상기 제2 명령 처리 엔진은 상기 제1 명령 처리 엔진을 통해서 상기 제2 장치의 유저 입력을 상기 프로그램에 통신한다.
다른 실시예에서, 상기 비디오 프레임들과 연관된 오디오 스트림은 또한 인코딩되고 디코딩된다. 상기 다른 실시예에서, 유저 인터페이스들을 갖는 복수의 프로그램들이 있으며, 상기 복수의 프로그램들 각각은 대응하는 복수의 제1 엔진들 및 대응하는 복수의 제1 명령 프로세스들을 포함한다. 더욱이, 상기 복수의 프로그램들은 오퍼레이팅 시스템의 인스턴스에서 동작하며, 유저 매니저 엔진은 대응하는 복수의 제2 장치들로 네트워크를 통해 전송하기 위해서, 상기 복수의 프로그램들의 비디오 프레임들의 열을 로드 밸런스 인코딩한다.
또 다른 실시예에서, 그러한 제2 장치는 뷰잉 애플리케이션을 포함하고, 상기 뷰잉 애플리케이션은 상기 제1 엔진에 동작할 수 있도록 결합되고 및 상기 비디오 프레임들의 열을 디스플레이한다. 동일한 실시예에서, 상기 뷰잉 애플리케이션은 상기 명령 처리 엔진에 동작할 수 있도록 결합되며, 유저 입력을 상기 프로그램에 통신한다.
더욱더 다른 실시예에서, 상기 방법은 상기 복수의 프로그램들에 대응하는 복수의 오디오 스트림들을 인터셉팅하는 단계, 상기 복수의 오디오 스트림들 각각을 상기 복수의 프로그램들에 대응하는 복수의 프로세스 식별자들 중 어느 하나에 연관시키는 단계, 상기 복수의 오디오 스트림들을 인코딩하는 단계, 및 연관된 상기 프로세스 식별자들에 기초하여 상기 복수의 오디오 스트림들을 라우팅하는 단계를 포함한다.
본 기술분야의 당업자는 본 발명이 다양한 시스템들 및 방법들에 적용될 수 있음을 알 수 있을 것이다.
도 1은 본 발명의 일 실시예에 의한 클라이언트-서버 아키텍처의 일 예를 도시하는 블록도이다.
도 2는 본 발명의 일 실시예에 의한 서버의 일 예를 도시하는 블록도이다.
도 3은 본 발명의 일 실시예에 의한, 서버, 오디오 서버 및 클라이언트를 포함하는 구조적인 개관의 일 예를 도시하는 블록도이다.
도 4는 본 발명의 일 실시예에 의한 클라이언트의 일 예를 도시하는 블록도이다.
도 5는 본 발명의 일 실시예에 의한 멀티유저 소프트웨어 아키텍처의 일 예를 도시하는 다이어그램이다.
도 6은 본 발명의 일 실시예에 따라 비디오 프레임들의 열을 캡처하는 과정의 일 예를 보여주는 플로우 챠트이다.
도 7은 본 발명의 일 실시예에 따라 비디오 프레임들의 열을 전송하는 과정의 일 예를 보여주는 플로우 챠트이다.
도 8은 본 발명의 일 실시예에 따른 클라이언트-서버 교환의 일 예를 도시하 는 다이어그램이다.
도 9는 본 발명의 일 실시예에 따른, 서버 내부에 수반하는 교환을 포함하는 클라이언트-서버 교환의 일 예를 도시하는 다이어그램이다.
도 10은 본 발명의 일 실시예에 따라 원격 상호작용을 위한 클라이언트-서버 아키텍처와 관련된 사용에 적절한 예시적인 컴퓨터 시스템을 도시한다.
본 기술분야의 당업자는 이러한 도면들이 단지 본 발명의 일 실시예 또는 다른 실시예들의 예일 뿐이며, 다른 아키텍처들, 방법의 단계들, 동작의 변형들 및 동작모드들은 본 발명의 본질적인 특성에서 벗어남이 없이 사용될 수 있음을 알 수 있을 것이다.
본 발명은 본 발명의 일 또는 다른 실시예들이 도시된 도면들을 참조로 상세히 설명될 것이다. 본 발명은 다른 많은 형태로 실현될 수 있으며, 이하에서 기술되는 실시예로 제한되서는 안된다. 오히려, 본 실시예들은 본 공개를 완전하게 하고 및 본 발명의 원리를 본 기술분야의 당업자에게 전달하기 위해서 제공된다.
도식화하기 위해서, 본 발명의 실시예들은 서버 또는 모바일 클라이언트 장치와 관련하여 기술된다. 본 발명의 이해를 돕기위해서, 서버들 및 모바일 클라이언트 장치들과 관련하여 다양한 특정하는 설명이 제공될 수 있다. 그러나, 그렇게 특정하는 설명들은 도시화하기 위한 의도로 제공되는 것일 뿐, 청구되는 본 발명의 범위를 제한해서는 안된다. 특히, 본 발명의 당업자는, 본 발명이 예컨대, 유선 네트워크에서 동작하는 클라이언트 장치들을 포함하는, 넓은 범위의 다양한 콘택스 트들(contexts)과 관련하여 사용될 수 있음을 알 수 있을 것이다. 더욱이, 본 발명의 실시예들은 웹브라우징 애플리케이션에 관련되어 기술된다, 그러나 그러한 기술은 도식화하기 위한 것으로 청구된 본 발명의 범위를 제한해서는 안된다. 본 발명의 다양한 실시예들은 오퍼레이팅 시스템 (OS)과 워드 프로세싱, 스프레드시트, 프레젠테이션, 및 데이터베이스 애플리케이션들, 등을 포함하는 많은 다양한 애플리케이션들을 포함하는 많은 다양한 타입의 프로그램들과 관련하여 사용될 수 있다.
어떤 실시예에서는, 본 발명은, 마이크로소프트사의 마이크로소프트오에스(Microsoft OS), 다양한 버전의 리눅스 (LINUX), 다양한 버전의 유닉스(UNIX), 애플컴퓨터사(Apple 컴퓨터 Inc.)의 맥오에스 (MacOS), 및/또는 다른 오퍼레이팅 시스템들과 같은 오퍼레이팅 시스템(OS)을 구동시키는 종래의 서버 컴퓨터 시스템에 적어도 부분적으로 적용된다. 어떤 실시예에서는, 본 발명은, 마이크로소프트 윈도우 비스타(Microsoft Windows Vista), 마이크로소프트 윈도우 엑스피(Microsoft Windows XP) 또는 다른 윈도우 버전, 맥오에스엑스(MacOS X) 또는 다른 MacOS 버전, 다양한 버전의 리눅스, 다양한 버전의 유닉스, 또는 컴퓨터장치를 구동하기 위해 설계된 다른 오퍼레이팅 시스템을 구동하는 종래의 퍼스널 컴퓨터 시스템에 적용될 수 있다.
더욱이, 본 발명은, 예컨대 다양한 오퍼레이팅 시스템들에 의해 동작되고, 하나 또는 그 이상의 컴퓨팅 리소스들이 원격으로 네트워크를 통해서 엑세스되는 퍼스널 컴퓨터들 이외의 다른 장치들, 예컨대 개인휴대정보단말기(PDA), 핸드폰, 컴퓨터 장치들에 적용되거나, 또는 관련될 수 있다. 본 발명은 애드온 소프트웨어(add-on software)에 포함될 수 있거나, 또는 본 발명은 컴퓨터 시스템과 묶음으로 판매되거나 별로로 판매되는 애플리케이션의 특징이 될 수 있으며, 또는 본 발명은 하드웨어에 내장된 기능으로 적용될 수 있다.
본 발명의 출력은 스크린에 디스플레이되거나, 원격 장치로 전송되거나, 데이터베이스 또는 다른 저장 메커니즘에 저장되거나, 프린트되거나, 또는 다른 방식으로 사용될 수 있다. 더욱이, 어떤 실시예에서는, 본 발명은 (스크린-기반의 또는 실제적인, 또는 다양한 형태의)키보드 , 스크롤휠(scroll wheels), 숫자패드(number pads), 스타일러스 기판의 입력장치들(stylus-based inputs), 터치스크린 또는 터치패드, 등과 같은 입력 장치들을 통해서 상기 컴퓨터 시스템에 제공되는 입력을 사용할 수 있다. 그들의 오퍼레이션 및 상호간의 인터액션 및 퍼스널 컴퓨터의 중앙처리장치와의 인터액션을 포함하는 그러한 구성요소들은 컴퓨터 시스템들 분야의 당업자에 잘 알려져 있으며 따라서, 더 이상은 이곳에서 기술하지 아니한다.
모듈들과 관련하여 이곳에서 기술된 어떠한 소프트웨어 부분들은 별도의 소프트웨어 모듈들을 포함하는 것을 필요로 하지 않는다. 이곳에서 기술된 어떠한 소프트웨어 형태는 단지 예로서 기술된 것이며, 본 발명의 다양한 실시예 범위 내에서 다른 형태로 변형될 수 있다. 본 명세서에서 사용된 ‘엔진’이란 용어는 상기 기능 또는 참조된 기능들을 수행하는 어떠한 소프트웨어 또는 하드웨어 형태, 또는 그들의 결합을 지칭한다.
상세한 설명에서 "하나의 실시예" 또는 "일 실시예"에의 참조는 상기 실시예에 관련되어 기술된 특정한 형태, 구조, 또는 특징이 본 발명의 적어도 하나의 실시예에 포함되어 있음을 의미한다. 상세한 설명의 다양한 지점에 보여지는 "일 실시예"는 그 용어가 기술된 동일한 실시예에서만 지칭될 필요없다. 또한, 상세한 설명의 다양한 지점에 보여지는 "어떤 실시예들"은 그 용어가 기술된 동일한 실시예에서만 지칭될 필요없다. 또한, 상세한 설명의 다양한 지점에 보여지는 "다양한 실시예들"은 그 용어가 기술된 동일한 실시예에서만 지칭될 필요없다.
1. 시스템
도 1은 본 발명의 예시적인 일 실시예에 따른 시스템(100)의 일 예를 도시하는 블록도이다. 시스템(100)은 클라이언트-서버 아키텍처를 채용한다. 상기 클라이언트-서버 아키텍처는 서버(200)에서 동작하는 다수의 서버 애플리케이션들을 포함한다. 상기 다수의 서버 애플리케이션 인스턴스들(instances)은, 서버 애플리케이션 1(102), 서버 애플리케이션 2(104), 서버 애플리케이션 3(106), 및 (108의 참조번호를 부여하고 타원으로 표현된) 광범위 갯수의 추가적인 서버 애플리케이션들, 및 서버 애플리케이션 n(110)을 포함한다. "서버 애플리케이션"이란 용어는 여기서 서버측 애플리케이션, 즉, 하나 또는 그 이상의 서버들에서 동작하는 애플리케이션을 지칭한다. 서버 애플리케이션 n(110)은, 시스템(100)에서 동작하는 상기 다수의 서버 애플리케이션 인스턴스들 중 어느 하나가 될 수 있다. 서버(200)는 또한 복수의 서버 애플리케이션 인스턴스들(102-110) 사이에서 복수의 유저들을 관리(managing)하는 유저 매니저 모듈(502)을 포함한다. 유저 매니저 모듈(502)은 도 5를 참조로 설명되며, 서버(200)에서 동작하는 잠재적인 복수의 유저 매니저들을 나타낸다. 서버(200)는, 서버 애플리케이션들(102-110) 아래의 오퍼레이팅 시스템(OS)의 하나의 인스턴스를 구동한다. 다른 실시예로, 서버(200)는 하나 또는 그 이상의 애플리케이션 인스턴스들을 포함하는 복수의 인스턴스들을 구동할 수 있다.
도 1에서는 복수의 서버 애플리케이션들(102-110)이 도시되어 있으나, 다른 실시예로, 예컨대, 오퍼레이팅 시스템(OS)을 포함하는 다수의 서로 상이한 타입의 프로그램들이 교대로 사용될 수 있다. 도 1에서 도시된 서버 애플리케이션들(102-110)은 하나의 서버(200) 또는 하나 또는 그 이상의 서버 팜 환경(server farm environments)의 임의의 수의 서버들에서 구동될 수 있다. 서버 애플리케이션들(102-110) 각각은 상이한 서버 애플리케이션들의 인스턴스들을 포함할 수 있거나, 또는 서버 애플리케이션들(102-110) 전체는 하나의 서버 애플리케이션의 인스턴스를 포함할 수 있다. 예컨대, 각각의 서버 애플리케이션 (102-110)은 웹브라우징 애플리케이션의 개별 인스턴스를 포함할 수 있다.
A. 서버
서버 애플리케이션 1(102)을 보다 상세히 기술하면, 예시적인 서버 애플리케이션 인스턴스로서, 서버 애플리케이션 1(102)은 애플리케이션(112), 플러그인(114), 오디오 데이터 제네레이터(116), 오디오 인코더 모듈(120), 비디오 인코더 모듈(124), 및 명령 처리 모듈(126)을 포함한다. 비디오 인코더 모듈(124)은 피드백 파라미터(125)를 사용한다.
비디오 인코더 모듈(124)은 애플리케이션(112)에 동작할 수 있도록 결합되며, 네트워크(128)를 통해 전송하기 위한 비디오 프레임들로 인코딩하기 위해서, 애플리케이션(112)의 상기 유저 인터페이스 (UI)의 캡처들(122)의 열(succession)을 수신한다. 상기 유저 인터페이스 (UI)의 캡처들(122)의 열은, 도 2에서 도시되고 기술된 개별적인 모듈(이미지 매니지먼트 모듈(216))에 의해서, 캡처되고 애플리케이션(112)으로부터 비디오 인코더(124)로 전송된 데이터를 포함한다. 본 명세서 전체에 걸쳐 사용된 상기 ‘유저 인터페이스’란 용어는, 다양한 컴퓨터 프로그램들과 관련된 전체 또는 어떠한 유저 인터페이스의 일부를 가리킨다.
상기 애플리케이션 UI 캡처들(122)을 인코딩하는 것은, 어떤 특정한 인코딩 또는 비디오 압축 포맷에 한정되는 것은 아니며, H.264와 같은 비디오 압축 표준의 사용으로부터, 전적으로 커스터마이징(customizing)된 비디오 압축의 폼, 변경된 버전의 비디오 압축 표준, 등에 이르기까지 다양한 비디오 압축 기술들을 포함할 수 있다.
오디오 인코더 모듈(120)은 애플리케이션(112)의 오디오 데이터 제네레이터(116)에, 동작할 수 있도록 결합되며, 오디오 데이터 제네레이터(116)의 오디오 캡처들(118, 예를들어 오디오 스트림)을 네트워크(128)를 통해서 전송하기 위한 인코딩된 오디오 스트림으로 변환한다. 오디오 캡처들(118)은 오디오 데이터 제네레이터(116)로부터 오디오 인코더 모듈(120)로 전송된 데이터를 포함한다.
오디오 데이터 제네레이터(116)는 애플리케이션(112)에, 동작할 수 있도록 결합되며, 상기 애플리케이션(112)의 오디오 데이터를 생성한다. 플러그인(114) 은, 애플리케이션(112) 및 명령 처리 모듈(126)에, 동작할 수 있도록 결합된다. 플러그인(114)은 애플리케이션(112) 및 명령 처리 모듈(126) 사이의 인터페이스를 용이하게 하기 위해서 채용된다.
서버(200)는 도 2를 참조로 보다 상세히 설명된다.
C. 클라이언트
시스템(100)은 다수의 클라이언트들을 포함한다. 상기 다수의 클라이언트들은 클라이언트 1(400), 클라이언트 2(132), 클라이언트 3(134), (136의 참조부호를 부여하고 타원으로 표현된) 광범위 갯수의 추가적인 클라이언트들, 및 클라이언트 n(138)을 포함한다. 클라이언트 n(138)은 상기 시스템과 체결된 상기 다수의 클라이언트들 중 어느 하나가 될 수 있다. 도 1에서 도시된 바와 같이, 상기 상이한 클라이언트들은 서로 무관한 상이한 클라이언트 장치들을 포함한다.
클라이언트의 예로서, 클라이언트 1(400)을 보다 상세히 기술하면, 클라이언트 1(400)은 오디오 디코더 모듈(142), 비디오 디코더 모듈(144), 명령 처리 모듈(146), 뷰잉 애플리케이션(148) 및 스피커(150)를 포함할 수 있다. 비디오 디코더 모듈(144)은, 비디오 인코더 모듈(124)에 의해 인코딩되고 네트워크(128)를 통해서 클라이언트 1(400)에 전송된 상기 비디오 프레임들의 열을 디코딩할 수 있다. 비디오 디코더 모듈(144)은, 뷰잉 애플리케이션(148)에 동작할 수 있도록 결합될 수 있으며, 클라이언트 1(400)에 상기 비디오 프레임들을 디스플레이하기 위해서 상기 디코딩된 비디오 프레임들을 뷰잉 애플리케이션(148)에 통신한다.
클라이언트 1(400)은 스피커(150)를 포함하며, 오디오 디코더 모듈(142)은 스피커(150)에 동작할 수 있도록 결합된다. 오디오 디코더 모듈(142)은 오디오 인코더 모듈(120)에 의해 인코딩되고 네트워크(128)를 통해서 클라이언트 1(400)에 전송된 상기 오디오 캡처들을 디코딩한다. 상기 오디오 스트림을 디코딩한 후, 오디오 디코더 모듈(142)은, 오디오 출력 클라이언트 1(400)의 오디오 출력을 위해서, 디코딩된 오디오를 스피커(150)에 통신할 수 있다.
뷰잉 애플리케이션(148)은 유저 입력을 수신하며, 상기 유저 입력을 명령 처리 모듈(146)에 통신한다. 명령 처리 모듈(146)은, 네트워크(128)를 통해서 애플리케이션(102)의 명령 처리 모듈(126)에 상기 유저 입력을 다시 통신한다. 명령 처리 모듈(126)은 플러그인(114)을 통해서 상기 유저 입력을 애플리케이션(112)에 통신한다.
플러그인(114)은, 도 1에서 도시된 상기 시스템(100)을 통한 상기 애플리케이션(112)의 원격 쌍방향 사용(remote inter액티브 use)을 용이하게 한다. 플러그인(114)은 또한 확장판일 수 있다. 다른 실시예에서, 애플리케이션(112)은, 본 발명에 의한 상기 클라이언트-서버 아키텍처의 사용을 위해서 특별한 플러그인이 요구되지 않도록, 주문에 응하여 만들어 질 수 있다. 또 다른 실시예에서, 플러그인 또는 어떠한 특별한 애플리케이션 변경도 요구되지 아니할 수 있다.
명령 처리 모듈(146)은 하나 또는 그 이상의 피드백 파라미터들(125)을 명령 처리 모듈(126)에 통신한다. 애플리케이션 UI 캡처들(122)의 열 및 오디오 캡처들(118)의 열의 인코딩을 위해서, 명령 처리 모듈(126)은 상기 하나 또는 그 이상의 피드백 파라미터들(125)을 비디오 인코더 모듈(124) 및 오디오 인코더 모 듈(120)에 통신한다. 상기 하나 또는 그 이상의 피드백 파라미터들(125)은, 네트워크(128)의 적어도 일부와 관련된 대역폭 파라미터, 클라이언트 1(400)의 장치 파라미터 또는 클라이언트 1(400)을 위한 유저 입력을 포함하는, 하나 또는 그 이상의 광범위의 파라미터들을 포함할 수 있다.
상기 하나 또는 그 이상의 피드백 파라미터들(125)은, 추측된 또는 측정된 대역폭 데이터 포인트를 포함하는 대역폭 파라미터를 포함할 수 있다. 예를들면, 이러한 대역폭 파라미터는, 서버(200) 및 클라이언트 1(400) 사이를 이동하는 확정된 패킷들의 측정에 근거하여 추측된 대역폭(예를 들어, 쓰루풋 값(throughput value)을 얻기 위해 얼마나 많은 데이터가 트래버설 타임(traversal time)에 의해 분할된 상태로 전송되었는가), 또는 네트워크(128)로부터 얻어지거나 또는 네트워크(128)와 관련되며 네트워크 프로토콜을 포함하는 다른 대역폭 인포메이션을 포함할 수 있다. 상기 하나 또는 그 이상의 피드백 파라미터들(125)은, 클라이언트 1(400)을 위한 유저 입력을 포함할 수 있다. 이러한 유저 입력은 예컨대, 뷰잉 애플리케이션(148)에 의해서 요청되고 통신된, 특정 포맷 또는 방법으로 수행되는 인코딩을 위한 유저 요청을 포함할 수 있다. 상기 하나 또는 그 이상의 피드백 파라미터들(125)은, 클라이언트 1(400)의 디스플레이 해상도(예를들어, CGA, QVGA, VGA, NTSC, PAL, WVGA, SVGA, XGA, 등)를 포함할 수 있다. 상기 하나 또는 그 이상의 피드백 파라미터들(125)은, 다른 스크린 파라미터들(예를들어, 스크린 사이즈, 리프레시 성능, 백라이트 성능, 스크린 기술, 등) 또는 상기 클라이언트 장치(예를들어, 디바이스 프로세서, 비디오 프레임들 또는 GPS 또는 다른 위치정보 기 술을 사용할 수 있을 경우 위치정보를 저장하기 위한 가용 메모리, 등)의 다른 파라미터들을 포함할 수 있다. 위에서 논의된 상기 예시적인 피드백 파라미터들은, 그들 간의 결합 또는 다른 피드백 파라미터들과의 결합을 배제하지 않는다. 어떤 실시예에서는, 비디오 인코더 모듈(124)은 적어도 부분적으로 상기 하나 또는 그 이상의 피드백 파라미터들(125)의 베이스 그것의 비디오 샘플 레이트에 적절하다.
도 1에서는, 개별 클라이언트 각각이 자신의 하나 또는 그 이상의 피드백 파라미터들을 갖는 상이한 타입의 클라이언트 장치를 잠재적으로 포함할 수 있다는 사실을 나타내기 위해서 복수의 클라이언트들이 도시되었다.
클라이언트 1(400)은 도 4를 참조로 보다 상세히 설명된다.
본 기술이 속하는 분야의 당업자는, 도 1에서 도시된 상기 클라이언트-서버 아키텍처는 단지 예시적인 것일 뿐이며 본 발명은 다른 많은 아키텍처들 및 환경들을 이용하여 실행될 수 있고 완성될 수 있음을 알 수 있을 것이다.
도 2는 본 발명의 일 실시예에 의한 서버(200)의 일 예를 도시하는 블록도이다. 서버(200)는 유저 매니저 모듈(502), 서버 애플리케이션 1(102), 애플리케이션(112), 플러그인(114), 오디오 데이터 제네레이터(116), 오디오 인코더 모듈(120), 이미지 매니지먼트 모듈(216), 메모리(218), (피드백 파라미터(125)를 포함하는)비디오 인코더 모듈(124), 명령 처리 모듈(126), 및 얼라인 모듈(224)을 포함한다. 명령 처리 모듈(126)은 클라이언트 인터프리터 서브모듈(228)을 포함하며, 플러그인(114)은 클라이언트 임플리멘터(implementer) 서브모듈(208)을 포함한다. 도 2에서 도시된 상기 구성요소들은 동일한 참조번호를 갖는 도 1의 구성요소 에 대응하며, 따라서 그들의 일반적인 동작은 반복적으로 설명되지 아니할 것이다. 하나의 동작되는 애플리케이션이 서버(200)와 관련하여 도시되는 반면, 서버 애플리케이션(102)은, 서버(200)에서 구동되는 복수의 서버 애플리케이션들의 대표적인 인스턴스로서 도시되며, 각각의 상기 복수의 서버 애플리케이션들은, 그들 자신의 별개의 클라이언트(클라이언트들은 본 도면에서 도시되지 아니한다)와 관계된다.
이미지 매니지먼트 모듈(216)은 상기 애플리케이션(112)(상기 UI는 스크린 위에서 발현된다)의 UI를 캡처하며, 상기 캡처를 메모리(218)에 저장한다. 스크린 스크레이핑(screen-scraping)과 같은 어떠한 캡처 프로세스도 사용될 수 있으며, 이미지 매니지먼트 모듈(216)은 설계된 레이트(rate)로 이러한 캡처를 수행한다. 상기 애플리케이션 UI의 특정 영역에서 어떠한 변화가 있었는지 여부를 판정하기 위해서, 이미지 매니지먼트 모듈(216)은 또한 상기 애플리케이션 UI의 이전 캡처와 현재 캡처를 비교한다. 이러한 비교를 위해서, 어떠한 이미지/비디오 프레임 매칭 프로세스도 사용될 수 있다. 이미지 매니지먼트 모듈(216)은 반복적으로 이러한 기능을 수행한다.
만약 이미지 매니지먼트 모듈(216)이 관심있는 특정 영역에서 어떠한 변화를 감지한 경우, 상기 관심있는 영역이 변화되었음을 알려주는 델타 플래그가 세팅된다. 변화를 감지하면, 이미지 매니지먼트 모듈(216)은 UI 렌더드 데이터(UI rendered data)의 원래의 포맷을, 압축 및 상기 클라이언트 장치에의 전송에 보다 적합한 비디오 프레임 포맷(예를들어, 컬러 스페이스 변환, 데이터 포맷 변환, 등)으로 변경시킨다. 이미지 매니지먼트 모듈(216)은 상기 재포맷된 비디오 프레임을 위한 이미지의 크기를 재조정한다. 도 2의 실시예에서, 적절한 클라이언트 장치의 복수의 파라미터들은, 이미지 매니지먼트 모듈(216)이 클라이언트 장치 파라미터들 (이미지 매니지먼트 모듈(216)에 통신된 관련 파라미터들)에 기초하여 상기 재포맷 및 사이즈조정을 수행하게 하면서, 상기 하나 또는 그 이상의 피드백 파라미터들(125)에 포함되어 있었다.
이미지 매니지먼트 모듈(216)은, (그것의 샘플 인터벌에 기초하여) 델타 플래그가 세팅되었는지를 주기적으로 체크한다. 만약 상기 델타 플래그가 체크기간 동안 세팅된 것으로 검출된 경우, 메모리(218)에 저장된 상기 재포맷된/사이즈가 재조정된 비디오 프레임은, 상기 클라이언트 장치로의 전송을 위해서, 비디오 인코더 모듈(124)에 의해 인코딩된다.
명령 처리 모듈(126)의 클라이언트 인터프리터 서브모듈(228)은 클라이언트 장치(400)로부터 수신된 데이터를 통역(interpret)하며, 비디오 인코더 모듈(124), 오디오 인코더 모듈(120) 및 애플리케이션(112) (예를들어, 유저 명령, 등)과 관련된 사용을 위해서, 이 데이터를 번역(translate)한다. 클라이언트 인터프리터 서브모듈(228)은, 인코딩에 사용하기 위해서 상기 피드백 파라미터들(125)을 비디오 인코더 모듈(124) 및 오디오 인코더 모듈(120)로 전달한다.
명령 처리 모듈(126)의 클라이언트 인터프리터 서브모듈(228)은, 플러그인(114) 및 그것의 클라이언트 임플리멘터 서브모듈(208)의 연결을 위해서 클라이언트-수신 데이터를 번역한다. 유저 입력을 통신함에 있어서, 상기 클라이언트 장치는 상기 클라이언트 장치의 스크린과 관련된 (커서, 등의) 좌표를 명령 프로세 스(126)로 전달한다. 클라이언트 인터프리터 서브모듈(228)은, 상기 클라이언트 장치 및 상기 애플리케이션 UI의 뷰포트(view port)에 관련된 대응위치를 결정한다. 그러면, 클라이언트 인터프리터 서브모듈(228)은, 그것의 클라이언트 임플리멘터 서브모듈(208)에 의한 사용을 위해서, 상기 번역된 좌표를 플러그인(114)에 통신한다. 클라이언트 임플리멘터 서브모듈(208)은, 종래의 유저 입력을 애플리케이션(112)에 적합한 포맷으로 번역하며, 그리고 나서 상기 번역된 입력을 애플리케이션(112)에 곧바로 주입한다.
얼라인 모듈(224)은, 비디오 인코더 모듈(124)에 의해 인코딩된 비디오 프레임들 및 오디오 인코더 모듈(120)에 의해 인코딩된 오디오를 연관짓고(correlates), 상호날인(cross-stamps)함으로써, 상기 UI of 애플리케이션(112)에 연관된 상기 오디오 스트림 및 상기 비디오 프레임들은 클라이언트 장치(400)에 용이하게 매칭될 수 있다. 이미지 매니지먼트 모듈(216)은, 얼라인 모듈(224)에 의한 다운-스트림 정렬을 위해서, 모든 이미지들에 시간날인(시간날인)할 수 있으며, 오디오 데이터 제네레이터(116)로부터 오디오를 캡처하는 것 또한 상기 오디오 스트림에 시간날인할 수 있다. 다른 실시예에서, 오디오 및 비디오 프레임들의 모든 정렬/매칭은 상기 클라이언트 장치에서 수행될 수 있다.
본 기술이 속하는 분야의 당업자는 도 2의 일러스트레이션이 단지 예시적인 것일 뿐 아니라, 본 발명이 다양한 방법으로 실행될 수 있고 완성될 수 있음을 알 수 있을 것이다.
도 3은 본 발명의 일 실시예에 의한, 서버, 오디오 서버 및 클라이언트를 포 함하는 구조적인 개관의 일 예를 도시하는 기능적인 블록도(300)이다. 본 실시예에서, 오디오는, 특정목적을 위한(dedicated) 오디오 서버(304)로부터 상기 클라이언트로 전송된다. 기능적인 블록도(300)는 서버(302), 오디오 서버(304) 및 클라이언트(306)를 포함하고, 클라이언트(306)는 네트워크(310, 또는 커넥션들(312, 314, 316))를 통해서 서버(302) 및 오디오 서버(304)에 동작할 수 있도록 링크된다. 서버(302)는 커넥션(308)을 통해서 오디오 서버(304)에 동작할 수 있도록 링크된다. 서버(302)는 includes 애플리케이션(318), 플러그인(322), 오디오 데이터 제네레이터(320), (피드백 파라미터(325)를 포함하는) 비디오 인코더 모듈(324), 명령 처리 모듈(326), 오디오 인터셉터 모듈(330), PID (프로세스 식별자) 매니저 모듈(332), 및 시간날인 매니저 모듈(334)을 포함한다.
비디오 인코더 모듈(324)은 도 2에서 도시된 비디오 인코더 모듈(124)과 유사하게 동작한다(마찬가지로, 피드백 파라미터(325)는 피드백 파라미터(125)와 유사). 비디오 인코더 모듈(324)은 애플리케이션 UI 캡처들(328)을 인코딩하며, 클라이언트(306)로의 전송을 위해서 상기 인코딩된 비디오 프레임들을 통신한다. 애플리케이션 UI 캡처들을 획득하는 프로세스에서, 결과의 UI 캡처들은 시간날인된다. 시간날인 매니저 모듈(334)은 상기 UI 캡처들의 시간날인을 용이하게 한다. 명령 처리 모듈(326)은, 도 2의 명령 처리 모듈(126)과 유사하게 동작한다.
하나의 동작하는 애플리케이션이 서버(302)와 관련하여 도시된 반면, 애플리케이션(318)은 서버(302)에서 동작하는 복수의 애플리케이션들의 대표적인 인스턴스로서 도시되며, 각각의 상기 복수의 애플리케이션들은 자신의 비디오 인코더 및 명령 처리 모듈들을 포함하고, 및 자신의 별개의 클라이언트에 연관된다. 오디오 데이터 제네레이터(320)는 애플리케이션(318)을 위해 오디오 스트림(도시안됨)을 제공한다. 오디오 인터셉터 모듈(330)은, 오디오 서버(304)의 리다이렉션(redirection)을 위해서 이러한 오디오 스트림을 인터셉트하거나 또는 붙잡으며(trap), 상기 오디오 스트림에 시간날인할 수 있다. 시간날인 매니저 모듈(334)은 상기 오디오 스트림의 상기 시간날인을 용이하게 할 수 있다. 오디오 인터셉터 모듈(330)은, 상기 오디오 스트림의 리다이렉션을 용이하게 하기 위해서, 커스터마이징된 DLL(dynamic link library)을 사용할 수 있다. PID 매니저 모듈(332)은, 서버(302)에서 동작하는 상기 복수의 애플리케이션들의 상이한 프로세스 ID들을 검출하고 매니징(manage)한다. PID 매니저 모듈(332)은 관련 애플리케이션의 프로세스 ID가 부여되어 오디오 서버에 리다이렉트된, 각각의 오디오 스트림에 날인할 수 있다.
오디오 서버(304)는 오디오 스트림 처리 모듈(336) 및 PID 인증 모듈(338)을 포함한다. 오디오 스트림 처리 모듈(336)은 서버(302)에서 동작하는 상기 애플리케이션들로부터 수신된 상기 오디오 스트림들을 인코딩하며, 어떠한 요청된 변환(예를들어, 샘플 레이트(샘플 rates), 비트 깊이(bit depths), 채널카운트, 버퍼 사이즈, 등의 변환)을 수행한다. 도 3의 실시예에서는, 각각의 오디오 스트림을 그것의 목적 클라이언트 장치로 다이렉트시키기 위해서 유저 데이터그램 프로토콜 포트들(도시안됨)이 사용되었으며, 다른 실시예에서 다른 프로토콜들이 사용될 수 있다. 오디오 스트림 처리 모듈(336)은, 상기 오디오 스트림의 대응하는 클라이언 트 장치(즉, 상기 오디오 스트림에 대응하는 상기 비디오 프레임들을 디스플레이하는 상기 클라이언트 장치)와 관련된 포트(port)로 각각의 오디오 스트림을 다이렉트한다. 오디오 스트림 처리 모듈(336)은, 서버(302)로부터 상기 적절한 포트로 스트리밍하는 상기 복수의 오디오 스트림들을 확인하고 다이렉트하기 위해서, PID 인증 모듈(338)과 연계되어 동작할 수 있다.
클라이언트(306)는 비디오 디코더 모듈(340), 오디오 디코더 모듈(342), 명령 처리 모듈(344) 및 오디오/비디오 싱크 모듈(346)을 포함한다. 클라이언트(306)가, 서버(302)로부터 적용가능한 오디오 및 비디오 스트림들(즉, 클라이언트(306)를 위해 인스턴스화되는 애플리케이션의 오디오 및 비디오 스트림들)을 수신하고 디코드한 후, 오디오/비디오 싱크 모듈(346)은, 오디오 디코더 모듈(342) 및 비디오 디코더 모듈(340)과 관련된 스트림들 및 작업들 위의 시간날인들을 연관시켜서, 출력을 스피커(348) 및 뷰잉 애플리케이션(350)에 각각 동기화시킨다.
본 기술의 당업자는, 도 3의 일러스트레이션은 단지 예시적인 것일 뿐이며, 본 발명이 다양한 방법으로 실행될 수 있고 완성될 수 있음을 알 수 있을 것이다.
도 4는 본 발명의 일 실시예에 의한 클라이언트의 일 예를 도시하는 블록도이다. 클라이언트(400)는 비디오 디코더 모듈(144), 오디오 디코더 모듈(142), 오디오/비디오 싱크 모듈(406), 명령 처리 모듈(146), 스피커(150), 뷰잉 애플리케이션(148), 및 커넥션들(410, 412, 414)을 포함한다.
오디오 디코더 모듈(142)이 커넥션(414)을 통해서 인코딩된 오디오스트림을 수신하는 동안, 비디오 디코더 모듈(144)은 커넥션(412)을 통해서 인코딩된 비디오 프레임들을 수신한다. 오디오/비디오 싱크 모듈(406)은, 스피커(150) 및 뷰잉 애플리케이션(148)을 통한 각각의 출력을 동기화시키기 위해서, 상기 오디오 스트림 및 상기 비디오 프레임들에 부가된 시간날인들 또는 다른 형태의 식별자(식별자)를 매치시킨다. 오디오 디코더 모듈(142), 비디오 디코더 모듈(144) 및 뷰잉 애플리케이션(148)들은, 상기 샘플레이트(샘플 rate) 및/또는 상기 비디오 인코딩, 상기 오디오 인코딩, 등의 압축을 변경시키는 것을 포함하는 상기 서버측 애플리케이션 피드백 파라미터들(도 4에 도시되지 아니함)을 통신하기 위해서, 모두 명령 처리 모듈(146)에 피드백을 제공할 수 있다.
명령 처리 모듈(146)은, 세션(session)의 시작 또는 세션중에 비디오 및/또는 오디오 인코딩에 사용하기 위해서 클라이언트(400)의 피드백 파라미터들을 통과시킨다. 그러한 피드백 파라미터들은, 하나 또는 그 이상의 파라미터들, 예컨대 디스플레이 해상도, 스크린 사이즈, 프로세스 식별 또는 성능, 메모리 성능/파라미터들, 스피커 성능, 등을 포함할 수 있다.
뷰잉 애플리케이션(148)은 상기 서버측 애플리케이션의 UI의 일부의 상기 비디오 프레임들의 열을 디스플레이한다. 뷰잉 애플리케이션(148)은, 상기 서버에 전송을 위해서, 유저 명령들을 포함하는 유저 입력 제어를 명령 처리 모듈(146)에 통신하는 것을 용이하게 한다. 상기 서버로 전달된 클라이언트 유저 입력 제어는, 예컨대 (스크린-기반 또는 실제적인, 다양한 형태의)키보드, 스크롤휠(scroll wheels), 숫자패드(number pads), 스타일러스 기반(stylus-based) 입력들, 터치스크린 또는 터치패드, 등으로부터의 입력을 포함할 수 있다. 뷰잉 애플리케이 션(148)은 전송을 위해서 어떠한 유저 입력(예컨대, 문자입력을 위한 로컬 텍스트 박스를 오픈하는 것)을 집합시킨다.
본 기술의 당업자는, 도 4의 일러스트레이션은 단지 예시적인 것일 뿐이며, 본 발명이 다양한 방법으로 실행될 수 있고 완성될 수 있음을 알 수 있을 것이다.
도 5는 본 발명의 일 실시예에 의한 멀티유저 소프트웨어 아키텍처의 일 예를 도시하는 다이어그램(500)이다. 유저 매니저 모듈(502)은, 작업 쓰레드(worker thread, 504), 작업 쓰레드(506), 및 (508의 참조번호를 부여하고, 타원으로 표현된)광범위 갯수의 추가적인 작업 쓰레드들, 및 ; ‘작업 쓰레드 n’(510)을 포함한다. 작업 쓰레드 n(510)은, 임의의 주어진 시점에서 상기 시스템에서 동작하는 작업 쓰레드들의 전체 개수를 나타낸다. 각각의 작업 쓰레드는 액티브 유저들의 리스트에 대응하며, 및 상기 액티브 유저들의 리스트들은 상이한 개수의 액티브 유저들을 잠재적으로 포함할 수 있다. 도 5에서 도시된 바와 같이, 작업 쓰레드(504)는 쓰레드 싸이클(thread cycle, 512)에 대응하며, 작업 쓰레드(506)는 쓰레드 사이클(514)에 대응하며, 508의 참조번호를 부여하고 타원으로 표현된 상기 가변적인 갯수의 작업 쓰레드들은, 518의 참조번호를 부여하고 타원으로 표현된 동일한 갯수의 쓰레드 싸이클들에 대응하며, 및 작업 쓰레드(510)는 쓰레드 사이클(516)에 대응한다. 도 5에서 도시된 바와 같이, 작업 쓰레드(504)는 유저 1(520), 유저 2(522), 유저 3(524) 및 유저 4(526)를 순환하고, 작업 쓰레드(506)는 유저 5(528), 유저 6(530) 및 유저 7(532)을 순환하며, 작업 쓰레드(516)는 유저 8(534), 유저 9(536), 유저 10(538), 유저 11(540) 및 유저 12(542)를 순환한다. 도 5에서 도시된 상기 작업 쓰레드들에 의해 지지되는 상기 복수의 유저들은 임의의 시점에서의 스냅샷(snapshot)을 나타내기 위함이고, 상기 주어진 쓰레드에 의해 지지되는 유저들의 숫자는 동적이다.
상기 시스템에 부가된 그이상의 유저들을 매니징(manage)하기 위해서, 유저 매니저 모듈(502)은, 추가적인 작업 쓰레드들을 인스턴스화하기 전에, 유한한 숫자의 작업 쓰레드들을 인스턴스화하기 위해서 세팅될 수 있다. 도 5에서 도시된 전반적인 아키텍처의 작업 쓰레드들의 갯수는 다양한 실시예들에 따라서 변경될 수 있다. 하나의 작업 쓰레드에 할당된 액티브 유저들의 개수와 관련된 파라미터들은 다양한 실시예들에 따라서 변경될 수 있다.
도 1에서 도시된 바와 같이, 유저 매니저 모듈(502)은 서버에서 동작되며, 애플리케이션들의 복수의 인스턴스들 역시 동작한다. 따라서, 유저 매니저 모듈(502)은, 복수의 애플리케이션 인스턴스들의 환경안에서 복수의 유저들을 매니징한다. 새로운 유저가 도 1의 전반적인 시스템에 유입되면, 상기 새로운 유저는 작업 쓰레드 (504-510)에 할당되어 상기 특정의 클라이언트 및 특정의 서버측 애플리케이션 사이의 인터액션을 용이하게 한다.
도 5에서 도시된 실시예가 하나의 쓰레드에 할당된 복수의 유저들을 도시함에 반해, 다른 실시예에서는, 하나의 유저가 그들 자신의 하나의 쓰레드에 할당될 수 있다. 다른 실시예들에서는, 전반적인 시스템의 현재로딩/사용, 본 발명의 실시예를 오퍼레이팅하는 각각의 서비스의 공급자(provider)를 갖는 유저의 서비스 정책(service policy), 등과 같은 하나 또는 그 이상의 팩터에 따라서, 공유하는 쓰레드 또는 전용의 쓰레드 중 어느 하나에, 유저가 할당될 수 있다.
유저 매니저 모듈(502)은, 각각의 작업 쓰레드가 액티브 유저들의 리스트를 순환하고 각 유저를 위한 액티브 이벤트를 프로세싱하는 것과 같은 다양한 방법으로, 복수의 유저들의 로드 밸런싱(load balancing)을 용이하게 한다. 프로세싱될 수 있는 상기 액티브 이벤트들은, (a) 비디오 프레임 업데이트를 상기 클라이언트에 전송하는 것 또는 (b) 상기 클라이언트의 뷰잉 애플리케이션 및 상기 서버측 애플리케이션/UI에 관련된 상태정보(state information)를 업데이트 하는 것을 포함한다. 유저 1이 도 1의 서버 애플리케이션 1(102)과 연관된 케이스를 도시하기 위해서, 작업 쓰레드(512)는 유저들 1(520) 내지 4(526)의 비디오 인코더/명령 처리 모듈들 각각을, 유저 1(520)의 비디오 인코더/명령 처리 모듈들을 포함하는 비디오 인코더 모듈(124) 및 명령 처리 모듈(126)을 이용하여 시분할함으로써 위의 (a) 및 (b)를 수행한다. 개별적인 쓰레드 (도시안됨)는 오디오 인코더 모듈(120)에 동작할 수 있도록 결합되어, 오디오 데이터가 송부될 때 상기 인코딩된 오디오 스트림을 상기 클라이언트에 연속적으로 전송한다.
이러한 방법으로 오퍼레이팅 시킴으로써, 어떠한 단일 유저도 동일한 쓰레드에 의해서 서비스되고 있는 다른 유저의 프로세스 집중 세션(processing-intensive session, 예를들어 고해상도, 하이 프레임 레이트 비디오)결과로 방해받지 않는다. 이것은 도 7을 참조로 보다 상세히 설명될 것이다. 다른 실시예들에서, 하나 이상의 액티브 이벤트는 유저단위로 처리될 수 있다. 다른 실시예들에서, 가변적인 개수의 액티브 이벤트는, 광범위의 팩터들을 기초하여, 유저단위로 처리될 수 있다. 상기 팩터들은 상기 하부의 애플리커블 유저를 위한 애플리케이션 액티비티의 레벨, 본 발명의 실시예를 오퍼레이팅하는 각각의 서비스의 공급자(provider)를 갖는 유저의 서비스 정책(service policy), 등을 포함한다.
유저매니저 모듈(502)은, 상이한 작업 쓰레드들 사이의 특정 유저를 이동시켜 프로세스 집중(processing-intensive) 유저들 및 프로세스 경감(processing-light) 유저들 사이의 로드를 밸런스시킬 수 있다. 예컨대, 만약 하나의 작업 쓰레드에 의해 서비스되는 복수의 유저들에게 하이 프레임 레이트 비디오가 서비스될 필요가 있으면, 유저 매니저 모듈(502)은, 하나 또는 그 이상의 그러한 유저들을, 프로세스 경감 유저들에게만 서비스하거나 서비스되는 프로세스 경감 유저들이 다수인 다른 쓰레드에 이동시킬 수 있다. 다른 쓰레드 또한 이러한 목적으로 인스턴스화될 수 있다. 본 기술이 속하는 분야의 당업자는, 유저가 객체(object)로 취급되며, 쓰레드들 사이를 객체들이 전송될 때 다른 쓰레드로 이동될 수 있음을 이해할 수 있을 것이다. 그러한 객체가 이동하는 타이밍은 클라이언트 장치의 뷰잉 애플리케이션에 의해 비디오 프레임들이 디스플레이되는 중의 특정한 때에 발생되어 유저들의 익스피리언스(experience)의 분열(disruption)을 최소화한다.
본 기술의 당업자는, 도 5의 일러스트레이션은 단지 예시적인 것일 뿐이며, 본 발명이 다양한 방법으로 실행될 수 있고 완성될 수 있음을 알 수 있을 것이다.
도 6은 본 발명의 일 실시예에 따라 비디오 프레임들의 열을 캡처하는 과정의 일 예를 보여주는 플로우챠트(600)이다. 먼저, 오퍼레이션(602, 애플리케이션 UI를 메모리에 제공)이 애플리케이션에 플러그인하여 또는 애플리케이션 그 자체로 서 수행된다. 오퍼레이션(602)은 UI가 스크린에 나타나면 애플리케이션의 UI를 캡처하고, 상기 캡처를 메모리 버퍼(도 2의 218)에 저장한다. UI의 실제 디스플레이가 스크린에 표시 될 필요는 없으나, 사용될 수 있다. 오퍼레이션(604, 이전의 애플리케이션 UI로부터 델타가 캡처되었는가?)은 상기 애플리케이션 UI의 이전 캡처들 중 마지막 것과 상기 현재 캡처를 비교하여 어떤 변화가 있었는지 결정한다. 이러한 델타 체킹 오퍼레이션은 수많은 방법으로 수행될 수 있다. 이러한 방법들로는 예컨대, 현재 UI 캡처의 픽셀블럭 해싱(hashing)하고 상기 해시값(hash value)을 유사한 이전 UI 캡처로부터 생성된 픽셀-해시 테이블과 비교하는 방법이 있다. 상기 해시값은 또한 활용되는 압축 방법에서의 잠재적인 사용, 예컨대 연속적인 비디오 프레임들의 블록을 매칭시키고, 레퍼런스 프레임에 대비하여 플록들을 매칭시키는 등에 적용할 수 있다. 선택적으로, 예컨대, 오퍼레이션(602) 이전에, 상기 애플리케이션은 서버에 언제 변화가 발생되었는지를 통지할 수 있다.
만약 오퍼레이션(604)이 부정적 결론이 나온 경우, 오퍼레이션(602)가 반복적으로 수행되기 이전에, 오퍼레이션(606,딜레이)이 타이머(도시안됨)에 의해 실행될 수 있다. 만약 오퍼레이션(604)이 긍정적 결론이 나온 경우, 오퍼레이션(608, 적절한 포맷으로 변환)이 수행된다. 오퍼레이션(608)은, 데이터에 부여된 UI의 네이티브 포맷을, 클라이언트 장치에서 디스플레이 하기 위해 압축하고 네트워크로 전송하는데 보다 적합한 다른 포맷으로 변환(예를들어, 컬러스페이스 변환, 데이터 포맷 변환, 등)시킨다.
오퍼레이션(610, 사이즈 재조정)이 다음으로 수행된다. 오퍼레이션(610)은 상기 UI에 부여된 데이터에 고유한 상기 네이티브 스크린 사이즈를 클라이언트 장치(예를들어, 셀룰러폰, 팜탑 컴퓨터, 등)에서 디스플레이되기에 보다 적합한 다른 사이즈로 조정한다. 오퍼레이션(610)은, 상기 서버측 애플리케이션에 통신되는 클라이언트 장치의 하나 또는 그 이상의 피드백 파라미터들(도시안됨) 및 그것에 수반하는 비디오 인코더 인스턴스화를 이용한다. 오퍼레이션(612, 인코더를 위해 메모리에 저장)이 다음으로 수행된다. 오퍼레이션(612)은, 비디오 인코더에의 사용을 위해 상기 변환된 비디오 프레임을 저장한다. 오퍼레이션(614, 플래그 비디오 업데이트)이 다음으로 수행된다. 오퍼레이션(614)은 비디오 업데이트가 필요한지(도 7의 오퍼레이션(712, 비디오 업데이트가 필요한가?) 참조)를 결정하는 표지를 세팅한다. 오퍼레이션(616, 딜레이)이 다음으로 수행된다. 오퍼레이션(616, 딜레이)은, 오퍼레이션(602)이 반복적으로 수행되기 전에 타이머 (도시안됨)에 의해 수행될 수 있다.
본 기술의 당업자는, 도 6의 일러스트레이션은 단지 예시적인 것일 뿐이며, 본 발명이 다양한 방법으로 실행될 수 있고 완성될 수 있음을 알 수 있을 것이다.
도 7은 본 발명의 일 실시예에 따라 비디오 프레임들의 열을 전송하는 과정의 일 예를 보여주는 플로우 챠트(700)이다. ‘업데이트 유저 N’(702)은 스텝들의 순서의 시작을 나타낸다. 이러한, 스텝들의 순서는 액티브 유저들의 적용할 수 있는 작업 쓰레드의 리스트에서 각 유저를 위한, 도 5의 작업 쓰레드들에 의해 수행될 스텝들을 나타내는 스텝들의 순서이다. 작업 쓰레드는 최초에 오퍼레이션(704, 채널 리드)를 수행한다. 오퍼레이션(706, 처리될 데이터가 있는가?)이 다 음으로 수행된다. 오퍼레이션(706)에서, 처리되어야할 유저 N의 어떤 것이 상기 네트워크에서 들어왔는지를 결정한다. 검출된 유저 N에 적합한 데이터에 응답하여, 오퍼레이션(708, 네트워크 이벤트들 처리)이 수행된다. 유저 N에 적합한 인커밍 데이터는 예컨대, 상기 클라이언트 장치에의 유저 입력과 관련된 정보를 포함할 수 있다.이러한 유저입력과 관련된 정보로는, (상기 클라이언트 장치에서 동작하는 뷰잉 애플리케이션에 디스플레이되는, 서버측 애플리케이션 UI의 비디오 프레임에서 볼수 있는 것과 같이) 상기 서버측 애플리케이션 UI의 특정 영역을 확대하려는 시도를 들 수 있다. 오퍼레이션(708)은 그렇게 처리된 인포메이션을 다음 목적지(destination)로 통신하는 것을 포함할 수 있다. 예를들어, 만약 줌 명령이 상기 클라이언트로부터 전송된 경우, 상기 줌 명령은 적절하게 처리되어, 상기 작업 쓰레드 proceeded to 다음번 적용될 오퍼레이션에 선행하는 작업 쓰레드 이전에, 상기 서버측 애플리케이션에 포워드된다.
오퍼레이션(708, 네트워크 이벤트들 처리) 또는 오퍼레이션(706, 처리될 데이터가 있는가?)의 네거티브 결정 중의 어느 하나 이후에, 오퍼레이션 (710, 업데이트가 필요한가?)이 수행된다. 오퍼레이션(710)은, 상기 적절한 유저를 위한 마지막 비디오 프레임이 송신되었을때 또는 오퍼레이션(712, 비디오 업데이트가 필요한가?)이 마지막으로 수행되었을 때 세팅된 카운터(도시안됨)에 의존할 수 있다. 만약 상기 카운터가 아직 종점(end point)에 도달되지 아니하였다면, 상기 오퍼레이션들을 수행하는 작업 쓰레드는 오퍼레이션 (718, N증가)으로 진행하여 다음번의 적절한 유저를 위해서 도 7에 도시된 스텝들의 순서를 개시한다. 상기 카운터는, 상기 서버로부터 상기 클라이언트로 통신되는 비디오 프레임들의 열을 위한 상기 프레임 레이트(frame rate), 보다 상세히 오퍼레이션(712, 비디오 업데이트가 필요한가?)를 참고로 설명될 ‘허용 가능한 프레임 레이트’(allowable frame rate)를 제어한다. 예컨대, 초당 10회의 허용 가능한 프레임 레이트의 경우, 상기 카운터는 100 밀리세컨드(예를들어, 밀리세컨드에서 to 제로, 또는 그 반대)를 카운트할 수 있도록 세팅된다.
만약 오퍼레이션(710, 업데이트가 필요한가?)이 긍정적으로 판명된 경우, 오퍼레이션(712, 비디오 업데이트가 필요한가?)이 수행된다. 오퍼레이션(712)은, 도 6과 관련하여 설명된 것과 같이 `비디오 업데이트가 필요한가`플래그를 체킹하는 것 또는 그와 유사한 오퍼레이션을 포함할 수 있다. 오퍼레이션(712)에서는, 클라이언트에 의해서 상기 클라이언트의 뷰잉 애플리케이션에 디스플레이되는 서버측 애플리케이션의 일부에 어떠한 변화가 있는지 결정된다. 만약 오퍼레이션(712)에서 긍정적인 것으로 결정되는 경우, 오퍼레이션(714, 요청된 비디오 정보 획득)이 수행된다. 오퍼레이션(714)에서는, 애플리케이션 UI의 상기 비디오 프레임을 업데이트하기 위해서 요구되는 비디오 프레임 인포메이션이, 상기 UI의 마지막 전송된 비디오 프레임으로부터 획득되며, 비디오 프레임/압축 표준, 주문에 의한 방법, 및 그것들의 결합을 포함하는 광범위의 비디오 프레임/압축 기술들이 사용될 수 있다.
오퍼레이션(714, 요청된 비디오 정보 획득)이 수행되면, 오퍼레이션(716, 네트워크 이벤트 전송)이 수행된다. 오퍼레이션(716)에서는, 상기 클라이언트 비디오 프레임 업데이트, 또는 상기 클라이언트의 뷰잉 애플리케이션 및 상기 서버측 애플리케이션/UI에 적합한, 업데이트된 스테이트 인포메이션(state information)이 전송된다. 이것을 실시하기 위해, 오퍼레이션(716)은, 유저 N을 위한 적절한 데이터를 유저 N의 네트워크 커넥션을 위한 큐(queue)에 송부할 수 있다.
오퍼레이션(712)에서 네커티브로 결정된 경우, 만약 클라이언트의 뷰잉 애플리케이션 및 상기 서버측 애플리케이션/UI에 적절한 스테이스 인포메이션이 업데이트되었다면, 오퍼레이션(716, 네트워크 이벤트 전송)이 계속 수행될 수 있다.
유저당 단지 하나의 비디오 프레임 업데이트(또는 스테이트 인포메이션 업데이트)를 송신함으써, 상기 복수의 유저들에 서비스하는 작업 쓰레드는 전체를 순환하고, 어떠한 하나의 유저가 다른 유저들을 손상시키며 상기 작업 쓰레드의 시간을 심하게 소모하는 일이 없이 그것의 액티브 유저 리스트 안의 상기 유저들 전체에 서비스할 수 있다. 서포트되는 전체 유저들의 작업 쓰레드의 로드(load)가 증가함에 따라서, 상기 작업 쓰레드의 전체 액티브 유저들을 위한 서비스 시간은 점진적으로 증가될 것이다. 따라서, 이와 같은 방법으로 로드 밸런싱(load balancing)은 본질적으로 임베드(embed)된다. 추가적인 로드 밸런싱 테크닉은 도 5와 관련하여 기술될 것이다.
본 기술의 당업자는, 도 7의 일러스트레이션은 단지 예시적인 것일 뿐이며, 본 발명이 다양한 방법으로 실행될 수 있고 완성될 수 있음을 알 수 있을 것이다.
도 8은 본 발명의 일 실시예에 따른 클라이언트-서버 교환(800)의 일 예를 도시하는 다이어그램이다. 클라이언트-서버 교환(800)은 서버(802) 및 클라이언트 장치(804) 사이의 세션 교환을 묘사한다. 여기서 기술된 것과 같이, 서버(802)는, 도 8에서 도시된 오퍼레이션들을 용이하게 하는 어떠한 서버측 머신(machine)을 지칭할 수 있으며, 다수의 서버들을 포함할 수 있고, 하나의 시설에 구비되거나 또는 지역적으로 분산될 수도 있다. 이러한 서버들은 인증 서버들, 데이터베이스 서버들, 등을 포함할 수 있다.
클라이언트 장치(804)는, 유저가 뷰잉 애플리케이션을 클라이언트 장치(804)에 론칭하는 오퍼레이션(806)으로 클라이언트-서버 교환(800)을 초기화한다(‘클라이언트 장치’란 용어는, 단순히 상기 클라이언트 장치의 파라미터들이 충분히 논의되었다는 이유로, 도 8과 관련하여 사용된다. 상기 term, ‘클라이언트’란 용어는 혼용하여 사용될 수 있다.) 그러면 오퍼레이션(808)을 통해서, 상기 뷰잉 애플리케이션은 네트워크 커넥션을 통하여 서버(802)로의 커넥션을 오픈하는 것을 용이하게 한다. 오퍼레이션(808)에서는, 하나 또는 그 이상의 표준 인터넷 프로토콜들, 또는 당업자가 용이하게 생각할 수 있는 그것들의 다양한 변형이 사용된다. 오퍼레이션(808)에서, 세션중에 서버(802)가 사용할 수 있도록, 상기 유저의 식별자(예를들어, 전화번호, 캐리어 어카운트, 등) 및 클라이언트 장치(804)의 디스플레이 해상도 및 사이즈를 서버(802)에 전달된다. 그러면, 서버(802)는 오퍼레이션(810)을 수행한다. 오퍼레이션(810)에는 서버 애플리케이션 인스턴스가 론칭되고, 서버 애플리케이션 인스턴스에 상기 유저의 선호도(preferences)에 기초하여 커스터마이즈드된 서버 애플리케이션이 제공된다. 본 실시예에서, 상기 유저의 선호도는 상기 유저의 식별자(identity)의 식별자들과 연관되어 있는 데이터베이스(not illustrated)에 가서 가져온다. 오퍼레이션(810)마다, 상기 서버 애플리케 이션은 버추얼(virtual) 프레임 버퍼에서 실행된다. 다른 실시예에서, 상기 서버 애플리케이션은 스크린에 실행될 수 있다.
그 다음 오퍼레이션(812)이 수행된다. 오퍼레이션(812)에서, 오디오/비디오 인코더 모듈들 및 수반하는 명령 처리 모듈은 론칭되고, 클라이언트 장치(804)의 디스플레이 솔루션 및 클라이언트 장치(804)를 위한 커스터마이즈된 인코딩 사이즈는 오디오/비디오 인코더 모듈들 및 수반하는 명령 처리 모듈에 제공된다. 상기 특정 유저에 with 상기 시스템을 사용하는 다른 유저들과 관련된 우선순위 레벨(priority level)을 제공하면서, 상기 명령 프로세스 및 인코더 모듈들은 상기 유저의 식별자와 관련된 서비스의 레벨을 제공받을 수 있다. 그 후에, 오퍼레이션(814)에 묘사된 것과 같이, 상기 비디오 인코더는 may convert 및 encode 상기 서버 애플리케이션의 UI의 비디오 프레임들을 변환하고 인코딩할 수 있다(예를들어, QVGA 해상도를 지원하기 때문에, 클라이언트 장치(804)는 상기 서버 애플리케이션에 의해서 부여된 상기 비디오 프레임들을, 상기 서버 애플리케이션의 자연적으로 부여된 해상도로부터 QVGA 해상도로 변환시킨다). 상기 비디오 인코더 모듈은, 또한 그 안에서 적절하게 피팅되도록 상기 서버 애플리케이션의 네이티브 UI 사이즈 또는 클라이언트 장치의 (804) 스크린 사이즈와 함께 작업(work)의 사이즈를 재조정한다. 상기 오디오 인코더 모듈은, 클라이언트 장치(804)의 스피커 성능에 기초하여 상기 서버 애플리케이션의 오디오 스트림 출력을 인코딩한다(예를들어, 만약 클라이언트 장치가 셀룰러 폰인 경우, 상기 오디오는 인코딩의 퀄리티가 상기 특정 폰의 스피커 성능을 초과하지 않도록 또는 셀룰러폰의 디폴트 레벨의 범 위로 인코딩될 수 있다). 화살표(816)는 상기 인코딩된 오디오 및 비디오로부터 클라이언트 장치(804)로의 통신을 도시한다.
다음으로 오퍼레이션(818)이 수행된다. 오퍼레이션(818)에서는, 상기 뷰잉 애플리케이션의 디코더 모듈들 (오디오 및 비디오)은 수신된 상기 오디오 및 비디오 프레임들을 디코딩한다. 오퍼레이션(820)에 도시된 바와 같이, 상기 비디오 프레임들은 상기 클라이언트의 뷰잉 애플리케이션에서 디스플레이 될 수 있으며, (만약 오디오가 실재하고 및 클라이언트(804)가 음량제거 상태가 아니라면)상기 오디오는 클라이언트 장치(804)의 스피커들에 출력될 수 있다.
다음으로 오퍼레이션(822)이 수행된다. 오퍼레이션(822)에서는, 서버(802) 및 클라이언트 장치(804) 사이의 (화살표(826 및 828)으로 표시된)상호작용의 일련의 시리즈들이 묘사되며, 또한 상기 클라이언트 측의 오퍼레이션(824)이 표현된다. 오퍼레이션(822)에서는, 클라이언트 장치(804)로의 전송을 위해서 인포메이션을 인코딩하는 인코더와 함께, 상기 UI 또는 오디오 출력이 변화될 때, 단순히 인포메이션을 상기 인코더 모듈들로 전송하는 서버 애플리케이션이 묘사된다. 따라서, 만약 상기 서버 애플리케이션의 UI 또는 오디오와 관련하여 아무것도 변화된 것이 없으면, 오디오/비디오 인포메이션은 인코딩되지 않으며, 클라이언트 장치(804)에 전송된다. 서버 (802)의 비디오 인코더는, 따라서, 상기 UI 내부의 변화에 기초하여, 비동기적으로 비디오 프레임들을 통신한다. 비디오는, 비디오 프레임 포맷의 외부 명령으로서가 아니라 UI변화를 디스플레이 하기 위해서 비디오 프레임들로서 전송된다.
오퍼레이션(824)는, 파라미터들로 변환되고 상기 서버 애플리케이션들로 전달되는 유저의 입력들과 함께, 상기 버추얼 애플리케이션과 상호작용하는 유저를 묘사한다. 오퍼레이션(822)은, 상기 서버 애플리케이션 UI에서 동작하기 위해서, 유저 입력 파라미터들을 번역하는 서버측 명령 처리 모듈과, 이에 따라서 변화하는 서버 애플리케이션 UI를 또한 묘사한다. 유저 입력들의 결과로 인코딩된 오디오 및 비디오를 더 묘사함으로써, 오퍼레이션(824)은, 수신되고 디코딩되고 상기 뷰잉 애플리케이션에 디스플레이되는 상기 버추얼 애플리케이션에, 상기 순환적 순서를 완성한다.
본 기술의 당업자는, 도 8의 일러스트레이션은 단지 예시적인 것일 뿐이며, 본 발명이 다양한 방법으로 실행될 수 있고 완성될 수 있음을 알 수 있을 것이다.
도 9는 본 발명의 일 실시예에 따른, 서버 내부에 수반하는 교환을 포함하는 클라이언트-서버 교환(900)의 일 예를 도시하는 다이어그램이다. 클라이언트-서버 교환(900)에서는, 서버(903) 및 클라이언트(904) 사이의 세션 교환과 이에 수반하는 인코더/명령 처리 모듈들(902) 및 애플리케이션(906) (둘 모두 서버(903)에서 동작한다)사이의, 수반하는 교환이 묘사된다. 애플리케이션(906)은, 본 실시예에서 웹브라우징 애플리케이션을 포함한다. 인코더/명령 처리 모듈들(902)은 오디오 및 비디오 인코더 모듈들 및 명령 처리 모듈을 포함한다. 본 기술이 속하는 분야의 당업자는 용이하게 인식하는 바와 같이, 인코더/명령 처리 모듈들(902)을 교환하는 레퍼런스들은 이러한 모듈 중 어느 하나를 교환하는 것을 명확하게 포함할 수 있다. 다른 실시예에서, 인코더/명령 처리 모듈들(902)과 유사한 기능적 구성요소 는, 오디오 인코더 모듈이 아닌, 비디오 인코더 모듈 및 명령 처리 모듈을 포함할 수 있다. 여기서 설명된 바와 같이, 서버(903)는 도 9에서 도시된 상기 오퍼레이션들을 용이하게 하는 어떠한 서버측 머신(machine)을 지칭할 수 있으며, 다수의 서버들을 포함할 수 있고, 하나의 시설에 구비되거나 또는 지역적으로 분산될 수도 있다. 이러한 서버들은 인증 서버들, 데이터베이스 서버들, 등을 포함할 수 있다.
클라이언트(904)는 오퍼레이션(908, 커넥션 오픈)으로써, 클라이언트-서버 교환(900)을 시작한다. 서버(903)는 오퍼레이션(910, 커넥션 컨펌)으로써 응답한다. 그러면, 클라이언트(904)는, 오퍼레이션(912)을 통해서 스크린 사이즈 및 다른 장치 파라미터들을 포함하는 자신의 성능을 인코더/명령 처리 모듈들(902)에 전송한다. 상기 장치 파라미터들은 장치 프로세서, 메모리, 스크린 특성, 등을 포함하는 다양한 장치 파라미터들을 포함할 수 있다. 그러면, 클라이언트(904)는 오퍼레이션(914)을 통해서 URL을 전송한다. 상기 URL은 저장된 URL(예를들어, 홈페이지) 또는 클라이언트(904)의 유저에 의해 도입된 URL을 포함할 수 있다. 이번에는, 인코더/명령 처리 모듈들(902)은, 오퍼레이션(916)을 통해서, 상기 URL을 애플리케이션(906)에 통신하면, 애플리케이션(906)은, 오퍼레이션(918)을 통해서 상기 URL을 로딩한다. 애플리케이션(906)은 또한 오퍼레이션(920)을 통해서, 상기 URL에 관련된 웹페이지의 폭 (w) 및 높이 (h)를 인코더/명령 처리 모듈들(902)에 전달한다. 그러면, 인코더/명령 처리 모듈들(902)은, 오퍼레이션(922)을 통해서 상기 클라이언트 스크린에서 보여질 수 있는 뷰포트(상기 클라이언트의 뷰포트의 특성을 기술하는 파라미터들, 예를들어, 구석좌표(corner coordinate) (x, y) 및 연관된 줌팩터(zoom factor) (z)를 포함)와 함께 상기 웹페이지의 사이즈를 클라이언트(904)에 통신한다.
그러면, 상기 웹페이지 뷰포트(상기 뷰포트가 관련된 브라우저 UI의 부분)의 스크린 캡처는, 오퍼레이션(924)을 통해서, 본 기술분야에서 알려진 수많은 기술에 따라 발생된다. 뷰포트를 통해 보여질 수 있는 상기 웹페이지의 비디오 프레임은, 오퍼레이션(926)을 통해서 클라이언트(904)에 통신된다. 그러면, 상기 연관된 비디오 프레임이 오퍼레이션(932)을 통해서 통신되는 것과 함께, 그 다음의 스크린 캡처(930)는, 가변적인 샘플 인터벌(928)경과 후 발생된다. 가변적인 요소를 나타내기 위해 흔히 사용되는 화살표부호(929)는, 이러한 신규한 특징을 나타내기 위해서, 가변적인 샘플 인터벌(928)을 관통하여 도시된다.
비동기의 피드백 채널은, 오퍼레이션(934)을 통해서 피드백을 제공한다. 이러한 피드백은, 대역폭 파라미터들이 서버(903) 및 클라이언트(904) 사이를 왕복하는 패킷들의 관측에 기초하여 변경되는 것과 마찬가지로, 클라이언트 장치 파라미터들, 유저 입력 파라미터들, 및/또는 추측된 대역폭 파라미터들을 포함하는 하나 또는 그 이상의 피드백 파라미터들에 기초하여, 상기 샘플 인터벌(928)을 변경시키기 위해 사용될 수 있다. 오퍼레이션(936)으로 도시된 것과 같이, RTCP 프로토콜 또는 (표준화된 또는 주문에 응한) 유사한 프로토콜은, 그러한 피드백을 제공하는 것과 관련하여 사용될 수 있다. 타원(938) 및 원(940)은, 비디오 프레임들을 송신하는 서버(903)에서 클라이언트(904) 사이의 상호작용의 반복적인 속성을 도시한다.
샘플 인터벌(928)은 또한, 보여지는 하부의 웹페이지의 변화율에 기초하여 적어도 부분적으로 변경될 수 있다. 예컨대, 만약 클라이언트(904)에 의해서 보여지는 상기 하부의 웹페이지에 변화가 거의 감지되지 않거나 전혀 감지되지 않는 경우, 상기 프레임 샘플 인터벌은 위로 조절될 수 있다(adjusted upward). 마찬가지로, for a very 다이내믹 웹페이지, 또는 웹페이지 내부의 컨텐트의 경우에, 상기 프레임 샘플 인터벌은 아래로 조절될 수 있다(adjusted downward).
오퍼레이션(942)에서 묘사된 것과 같이, 클라이언트(904)의 유저는, 상기 웹페이지의 다른 부분을 보기 위해서, 상기 뷰포트의 새로운 파라미터들을 포함하는 x' 및 y'로써, 웹페이지가 보여지는 뷰포트를 이동시킬 수 있다. 그러면, 새로운 뷰포트에 매칭되는, 웹페이지의 상기 새로운 부분은 오퍼레이션(944)을 통해서캡처되며, 상기 새로운 뷰포트의 비디오 프레임은, 오퍼레이션(946)을 통해서 클라이언트(904)에 통신될 것이다.
상기 클라이언트(904)의 유저는 다시, 오퍼레이션(948)에서 묘사된 것과 같이, 상기 뷰포트의 새로운 파라미터들을 포함하는 x'' 및 y''로써, 상기 뷰포트를 이동시킬 수 있다. 이번에는, 상기 새로운 뷰포트가 상기 서버 브라우저 윈도우에서 보여지는 것 이상으로 연장될 수 있으며, 따라서 브라우저 그 자신은, 오퍼레이션(950)에서 묘사된 것과 같이, 상기 웹페이지의 원하는 영역을 캡처하기 위해서 스크롤(scroll)하여야 한다. 적절히 스크롤되면, 상기 새로운 뷰포트의 스크린 캡처는, 오퍼레이션(952)을 통해서 묘사된 것과 같이, 획득될 것이며, 오퍼레이션(954)에서 도시된 것과 같이, 결과적으로 오퍼레이션(956)을 통해서 비디오 프레 임이 통신된다.
클라이언트(904)의 유저는 또한, 오퍼레이션(958)을 통해서 보여지는 바와 같이, 마우스 또는 마우스-균등물(예를들어, 터치스크린 위의 손가락 끝, 다방향 버튼(multi-directional button), 커서(cursor)를 움직이는 트랙포인트 스타일러스(trackpoint stylus), 등)을 사용할 수 있다. 오퍼레이션(958)에서는, 마우스를 아래로 움직이는 동작이 행해져서 상기 마우스의 새로운 좌표는 (a, b)로 이동한다. 클라이언트(904)는 상기 클라이언트 장치의 스크린에 대한 상대적인 좌표를 인코더/명령 처리 모듈들(902)에 전달할 것이며, 그러한 오퍼레이션에서, 인코더/명령 처리 모듈들(902)은 상기 뷰포트 및 하부의 웹페이지에 관련된 대응하는 위치를 결정할 것이다. 도 9에서 설명된 실시예에서, 서버(903)는, 적절한 위치정보를 갖는 마우스 메세지를 상기 브라우저(906)와 관련된 윈도우에 주입하면서, (렌더링(rendering)을 위해 사용되는 엑추어(actual) 스크린이 존재하거나 또는 아니거나) 하부의 윈도우즈 OS(Windows OS)를 실행한다. 이것은 오퍼레이션(960)을 통해서 묘사되며, 위에서 기술된 바와 같이, 상기 스크린 커서는 결과적으로 애플리케이션(906)으로 이동하며, 비디오 프레임 안에서 클라이언트(904)로 통신된다. 다른 오퍼레이팅 시스템들과 관련하여 사용되는 다른 실시예에서, 필요한 경우, 본 기술이 속하는 분야의 당업자가 생각할 수 있는 유사한 기능(function)들이 사용되거나, 또는 유사한 기술(techniques)이 사용될 수 있다.
오퍼레이션들(962, 964, 966, 968)은 유사한 방식으로 동작될 유사한 마우스-구동 이벤트들 묘사한다. 마찬가지로, (키패드 입력등과 같은) 다른 입력 구동 제어 이벤트들은 같은 방식으로 동작된다. 참조번호(970, 972, 974, 976, 978)에서 묘사된 상기 오퍼레이션들의 타입은 위에서 기술되었으며, 클라이언트(904) 및 서버(903) 사이의 세션이 계속되는 동안의 일련의 상호작용들은 타원(980) 및 원(982)으로 나타낸다.
본 기술의 당업자는, 도 9의 일러스트레이션은 단지 예시적인 것일 뿐이며, 본 발명이 다양한 방법으로 실행될 수 있고 완성될 수 있음을 알 수 있을 것이다.
도 10은 본 발명의 일 실시예에 따라 원격 상호작용을 위한 클라이언트-서버 아키텍처와 관련된 사용에 적절한 예시적인 컴퓨터 시스템을 도시한다. 도시된 바와 같이, 컴퓨터 시스템(1000)은, 서버로 동작하는 컴퓨터 또는 클라이언트로 동작하는 컴퓨터 중 어느 하나를 나타낼 수 있으며, 도 10에서 도시된 상기 일반적인 구성요소들은 본 기술의 당업자가 예상할 수 있는 범위에서 잠재적으로 변경될 수 있다. 컴퓨터 시스템(1000)은 하나 또는 그 이상의 프로세서들(1002) 및 시스템 메모리(1004)를 포함할 수 있다. 추가적으로, 컴퓨터 시스템(1000)은 (하드 드라이브, 광학적인 또는 다른 타입의 디스크, 플래시 메모리를 포함하는 전자적인 메모리, 등과 같은) 하나 또는 그 이상의 장치들 형태의 스토리지(1006), ((스크린-기반의 또는 실제적인, 또는 다양한 형태의)키보드 , 스크롤휠(scroll wheels), 숫자패드(number pads), 스타일러스 기판의 입력장치들(stylus-based inputs), 터치스크린 또는 터치패드, 등과 같은) 입력/출력 장치들(1008) 및 (LAN, WAN, 유선 또는 무선 네트워크, 등에 연결된) 통신 인터페이스들(1010)를 포함할 수 있다. 상기 구성요소들은 시스템 버스(1012)를 통해서 서로 연결될 수 있으며, 시스템 버 스(1012)는 하나 또는 그 이상의 버스들을 나타낸다. 시스템 버스(1012)가 복수의 버스들을 나타내는 경우에, 상기 복수의 버스들은 may be bridged by 하나 또는 그 이상의 버스 브릿지들(도시안됨)로 연결(bridge)될 수 있다. 어떤 실시예들에서 클라이언트 장치들을 나타낼 때, 프로세서(들)(1002)은 콘트롤러를 포함할 수 있으며, 시스템 메모리(1004) 및 스토리지(1006)는 하나의 코히시브(cohesive) 메모리 구성요소를 포함할 수 있다.
이러한 구성요소들 각각은, 본 기술분야에서 알려진 종래의 기능들을 수행한다. 다양한 실시예들에서, 컴퓨팅 시스템(1000)은, 적어도 부분적으로 대형 컴퓨팅 시스템에 통합될 수 있다. 시스템 메모리(1004) 및 스토리지(1006)는, 본 발명의 상기 하나 또는 그 이상의 앞서 기술된 실시예들에서 실행된 프로그래밍 명령들의 작업카피(working copy) 및 영구적 카피(permanent copy)를 저장할 수 있다. 여기에서 설명된 어떤 소프트웨어 부분은 개별적인 소프트웨어 모듈들을 포함할 필요없다. 위에서 설명된 어떤 소프트웨어 형태(configuration)은 단지 예시적인 것일 뿐이고, 다른 형태들은 본 발명의 다양한 실시예들의 범위에 의해 또한 범위 내에서 고려된다. 본 명세서에서 사용된 ‘엔진’이란 용어는 상기 기능 또는 참조된 기능들을 수행하는 어떠한 소프트웨어 또는 하드웨어 형태, 또는 그들의 결합을 지칭한다.
본 발명의 어떠한 실시예들에 관련하여, 모듈들은 다양한 기능들을 충족시키기 위해서 기술되어졌다. 다른 실시예들에서는, 상기 모듈들의 부분 또는 전체는, 예컨대 하나 또는 그 이상의 주문형 집적회로(ASICs)를 사용하여 하드웨어에 탑재 될 수 있다.
앞선 진술 전체에서, 실시예들은 단지 예시적인 것인 뿐이며, 상기 essential characteristics of 본 발명의 본질적인 특징에서 벗어남이 없이 동등한 다른 실시예들이 제공될 수 있음을 알아야 한다.
본 발명은 하나의 가능한 실시예에 대해서 특히 상세히 기술하였다. 본 기술이 속하는 당업자는 다른 실시예들에도 상기 실시예가 다른 실시예들에도 적용될 수 있음을 알 수 있을 것이다. 먼저, 상기 구성요소들의 특정한 이름붙임, 용어들의 대문자화, 속성들, 데이터 구조들, 또는 어떤 다른 프로그래밍 또는 구조적인 측면은 절대적인 것 또는 중요한 것이 아니며, 본 발명 또는 특징들의 메카니즘은 상이한 이름들, 포맷들, 또는 프로토콜들을 가질 수 있다. 더욱이, 언급된 바와 같이, 상기 시스템은 하드웨어 및 소프트웨어의 결합을 통해서 실현되거나, 또는 전체적으로 하드웨어 구성요소를 통해서 실현될 수 있다. 또한, 다양한 시스템 구성요소들 사이 상관관계의 특별한 구분은 단지 예시적인 것일 뿐이며, 절대적인 것이 아니다. 그 대신, 단일 시스템 구성요소에 의해 행해지는 기능은 복수의 구성요소들에 의해 수행될 수 있으며, 복수의 구성요소들에 의해 행해지는 기능들은 단일 구성요소에 의해 수행될 수 있다.
위의 설명의 어떤 부분들은 본 발명의 특징들을 알고리즘들의 용어 및 인포메이션에서의 오퍼레이션들의 상징적인 표현들로 나타내었다. 이러한 알고리즈믹 기술 및 표현들은, 다른 기술분야의 사람들에게 요지를 가장 효과적으로 전달하기 위해, 데이터 프로세싱 기술 분야에서 사용되는 수단들이다. 이러한 오퍼레이션들 은, 기능적으로 또는 로직으로 설명되었지만, 컴퓨터 프로그램들에 의해 실현된다. 더욱이, 때때로, 오퍼레이션들의 배열을 모듈들 또는 기능적 이름들로 언급하는 것은, 보편성을 상실함이 없이, 편리함이 증명되었다.
위의 논의에서 만약 특별히 달리 분명하게 언급되지 않으면, 상세한 설명 전체에 걸쳐서 "결정하는(determining)" 또는 "표시하는(displaying)" 또는 이와 유사한 용어들은, 컴퓨터 시스템 메모리들, 레지시터들, 다른 인포메이션 스토리지, 또는 디스플레이 장치들 내에서, 컴퓨터 시스템 또는 실제적인 (전자적인) 양으로 표현되는 데이터를 취급하고 변환하는 유사한 전자 컴퓨팅 장치의 액션 및 프로세스들을 가리킨다.
본 발명의 어떤 실시예들은 여기에서 표현된, 알고리즘 형태의 프로세스 단계들 및 명령들을 포함한다. 본 발명의 상기 프로세스 단계들 및 명령들은 소프트웨어, 펌웨어 또는 하드웨어로 구현될 수 있음을 알아야 하며, 소프트웨어로 구현되었을 때, 탑재되기 위해 다운로드될 수 있으며 실시간으로 네트워크 오퍼레이팅 시스템들에서 사용되는 상이한 플랫폼들로부터 동작될 수 있음을 알아야 한다.
본 발명은 또한 상기 오퍼레이션을 수행하기 위한 시스템에 관련된다. 이러한 시스템은 요구되는 목적을 위해 특별히 형성될 수 있거나, 또는 컴퓨터에 의해 엑세스 가능한 컴퓨터 저장매체에 저장된 컴퓨터 프로그램을 의해서 선택적으로 활성화되거나 재조정되는 컴퓨터(여기서 컴퓨터는 서버, 퍼스널 컴퓨터, 태블릿 장치, 팜탑 컴퓨터, PDA, 셀룰러폰, 등을 포함하는 다양한 실시예의 어떤 타입의 컴퓨터도 될 수 있다)를 포함할 수 있다. 그러한 컴퓨터 프로그램은 컴퓨터 저장매 체에 저장될 수 있다. 이러한 저장매체는 한정됨이 없이 어떠한 타입의 플로피 디스크, 광디스크, CD-ROMs, 마크네틱 옵티걸 디스크, ROMs, RAMs, EPROMs, EEPROMs, 자기적 또는 광학적 카드들, ASICs 또는 전자적 명령들을 저장하기에 적합한 어떤 타입의 미디어도 될 수 있으며, 각각은 컴퓨터 시스템 버스에 연결된다. 더욱이, 상세한 설명에서 언급된 상기 컴퓨터들은 단일 프로세서를 포함하거나, 계산능력을 향상시키기 위해서 멀티코어 디자인들(multi-core designs)을 포함하는 복수의 프로세서 디자인들을 채용하는 아키텍처들이 될 수 있다.
여기서 기술된 상기 알고리즘들 및 오퍼레이션들은 어떤 특별한 컴퓨터 또는 다른 시스템에 관련되는 것은 아니다. 다양한 일반목적의 시스템들은 여기서의 개시와 관련된 프로그램들로써 사용될 수 있으며, 또는 요구되어진 방법들을 수행하기 위해 보다 전문화된 시스템을 용이하게 형성할 수 있다. 이러한 시스템들의 다양성을 위해 요구되는 구조는, 본 기술 또는 유사한 기술을 가진 사람에게 자명할 것이다. 더욱이, 본 발명은 어떤 특정의 프로그래밍 언어를 참조로 설명되지 아니하였다. 다양한 프로그래밍 언어들로서 여기서 기술된 본 발명을 실현시킬 수 있다.
본 발명은 수많은 토폴로지들(topologies) 상의 다양한 종류의 컴퓨터 네트워크 시스템들에 적합하다. 이 분야에서, 거대한 네트워크들의 형태(configuration) 및 관리(management)는 인터넷같은 네트워크 상의 상이한 컴퓨터들 및 스토리지 장치들과 통신 가능하도록 연결된 스토리지 장치들 및 컴퓨터들을 포함한다.
마지막으로, 상세한 설명에서 사용된 언어는 가독성(readability) 및 가르치기 위한 목적으로 원리적으로 선택된 것이며, 본 발명의 본질의 윤곽을 그리거나 한정하기 위해 선택된 것이 아님을 주목해야 한다. 따라서, 본 발명의 개시는 묘사하기 위한 의도이며, 다음의 특허청구범위에 있는 발명을 한정하기 위한 의도가 아니다.
Claims (25)
- 제1 장치에 탑재되고, 네트워크 상으로 전송하기 위해, 프로그램의 유저 인터페이스의 비디오 프레임들의 열을 인코딩(이러한 인코딩은 하나 또는 그 이상의 피드백 파라미터들에 기초하고, 비디오 압축 기술들을 포함한다)하는 제1 엔진;상기 프로그램과 동작할 수 있도록 결합된 제1 명령 처리 엔진;제2 장치에 탑재되고, 상기 네트워크 상으로 전송한 후에 상기 비디오 프레임들의 열을 디코딩하는 제2 엔진; 및상기 제1 명령 처리 엔진과 동작할 수 있도록 결합되고, 상기 제1 명령 처리 엔진을 통해서 상기 제2 장치의 유저 입력을 상기 프로그램에 통신하는 제2 명령 처리 엔진을 포함하는, 네트워크 상에서 비디오 프레임들을 통신하기 위한 시스템.
- 제1항에 있어서,상기 프로그램과 동작할 수 있도록 결합되고, 상기 네트워크로 전송하기 위해서 상기 비디오 프레임들의 열과 연관된 오디오 스트림을 인코딩하는 제3 엔진; 및상기 네트워크로 송신한 후, 상기 오디오 스트림을 디코딩하는 제4 엔진을 더 포함하는 시스템.
- 제1항에 있어서,각각이, 대응하는 복수의 제1 엔진들 및 제1 명령 처리 엔진들을 갖고 있으며, 오퍼레이팅 시스템의 하나의 인스턴스(instance)에서 동작하고, 유저 인터페이스들을 갖는 복수의 프로그램들; 및복수의 제2 장치들 중 대응하는 어느 하나에 상기 네트워크를 통해 전송하기 위해서, 상기 복수의 프로그램들 각각의 비디오 프레임들의 열을 로드 밸런스 인코딩(load balance encoding)하는 유저 매니저 엔진을 더 포함하는 시스템.
- 네트워크로 전송하기 위해서, 프로그램의 유저 인터페이스의 비디오 프레임들의 열을 인코딩 단계(이러한 인코딩 단계는 하나 또는 그 이상의 피드백 파라미터들에 기초하고, 비디오 압축 기술들을 포함한다);상기 네트워크 상으로 전송한 후에, 상기 프로그램의 상기 유저 인터페이스의 상기 비디오 프레임들의 열을, 장치에 의해서 디코딩하는 단계; 및상기 장치의 유저 입력을 상기 프로그램에 통신하는 단계를 포함하는, 네트워크 상에서 비디오 프레임들을 통신하기 위한 방법.
- 제4항에 있어서,상기 네트워크 상으로 전송하기 위해서, 상기 비디오 프레임들과 연관된 오디오 스트림을 인코딩하는 단계; 및상기 네트워크로 전송한 후에, 상기 장치에 의해서 상기 오디오 스트림을 디 코딩하는 단계를 더 포함하는 방법.
- 제4항에 있어서,프로그램들 중 대응하는 어느 하나의 유저 인터페이스들의 비디오 프레임들의 다수의 열을 인코딩하는 단계(이러한 인코딩 단계는 각 프로그램과 연관된 하나 또는 그 이상의 피드백 파라미터들에 기초하고, 비디오 압축 기술들을 포함하며, 상기 다수의 프로그램들은 오퍼레이팅 시스템의 하나의 인스턴스(instance)에서 동작한다);복수의 장치들(이러한 복수의 장치들 각각은 상기 프로그램들 중 어느 하나에 대응한다)에 의해서, 상기 비디오 프레임들의 다수의 열을 디코딩하는 단계; 및상기 복수의 장치들의 유저 입력들을, 상기 각각 대응하는 프로그램에 통신하는 단계를 더 포함하는 방법.
- 네트워크를 통해서 장치에 전송하기 위해, 프로그램의 유저 인터페이스의 비디오 프레임들의 열을 인코딩(이러한 인코딩은 하나 또는 그 이상의 피드백 파라미터들에 기초하고, 비디오 압축 기술들을 포함한다)하는 제1 엔진; 및상기 프로그램에 동작할 수 있도록 결합되고, 상기 장치의 유저 입력을 수신하며 상기 유저 입력을 상기 프로그램에 통신하는 명령 처리 엔진을 포함하는, 네트워크 상에서 비디오 프레임들을 통신하기 위한 시스템.
- 제7항에 있어서,상기 프로그램에 동작할 수 있도록 결합되고, 상기 명령 처리 모듈을 통해서 유저 입력을 수신하며, 상기 프로그램의 오퍼레이션을 위하여 상기 유저 입력을 전송하는 플러그인을 더 포함하는 시스템.
- 제7항에 있어서,상기 프로그램에 동작할 수 있도록 결합되고, 상기 프로그램의 상기 유저 인터페이스의 상기 비디오 프레임들의 열을 캡처하며, 비디오 포맷 컨버전(conversion)을 수행하는 이미지 매니지먼트 엔진을 더 포함하는 시스템.
- 제7항에 있어서,상기 제1 엔진은 추가적으로, 상기 유저 인터페이스의 변화에 기초하여, 비디오 프레임들을 비동기적으로 통신하는 것을 특징으로 하는 시스템.
- 제7항에 있어서,유저 인터페이스들을 갖고, 각각이 복수의 제1 엔진들 중 대응하는 어느 하나 및 복수의 제1 명령 처리 엔진들 중 대응하는 어느 하나를 갖는 복수의 프로그램들; 및상기 네트워크를 통해서 복수의 장치들 중 대응하는 어느 하나에 전송하기 위해서, 상기 복수의 프로그램들 각각의 비디오 프레임들의 열들을 로드 밸런스 인 코딩하는 유저 매니저 엔진을 더 포함하는 시스템.
- 제11항에 있어서,상기 복수의 프로그램들은 오퍼레이팅 시스템의 하나의 인스턴스에서 동작하는 것을 특징으로 하는 시스템.
- 제11항에 있어서,상기 유저 매니저 엔진은 복수의 작업 쓰레드들을 포함하고, 및 각 유저를 상기 복수의 작업 쓰레드들(각각의 작업 쓰레드는 하나 또는 그 이상의 유저들에 봉사한다)중 어느 하나에 할당하는 것을 특징으로 하는 시스템.
- 제11항에 있어서,상기 복수의 프로그램들에 동작할 수 있도록 결합되고, 상기 복수의 프로그램들에 대응하는 복수의 오디오 스트림들을 인코딩하는 제2 엔진을 더 포함하는 시스템.
- 제14항에 있어서,상기 제1 장치에 탑재되고, 상기 복수의 프로그램들 및 상기 제2 엔진에 동작할 수 있도록 결합되며, 상기 복수의 오디오 스트림들을 상기 제2 엔진에 리다이렉트시키는 오디오 인터셉터 엔진을 더 포함하고,상기 복수의 오디오 스트림들은 상기 복수의 프로그램들에 대응하는 복수의 프로세스 식별자들 중 어느 하나에 각각 연관되며, 상기 제2 엔진은 연관된 프로세스 식별자들에 기초하여 상기 복수의 오디오 스트림들을 라우트(route)하는 것을 특징으로 시스템.
- 장치에 네트워크를 통해서 전송하기 위해서, 프로그램의 유저 인터페이스의 비디오 프레임들의 열을 인코딩(이러한 인코딩은 하나 또는 그 이상의 피드백 파라미터들에 기초하고, 비디오 압축 기술들을 포함한다)하는 단계;상기 장치의 유저 입력을 수신하는 단계; 및상기 유저 입력을 상기 프로그램에 통신하는 단계를 포함하는, 네트워크 상에서 비디오 프레임들을 통신하기 위한 방법.
- 제16항에 있어서,상기 프로그램의 오퍼레이션을 위해서 상기 프로그램에 상기 유저 입력을 수신 또는 전송하는 플러그인으로 상기 프로그램을 보충(supplement)하는 단계를 더 포함하는 방법.
- 제16항에 있어서,상기 네트워크를 통해서 복수의 장치들 중 대응하는 어느 하나로 전송하기 위해서, 복수의 프로그램들의 유저 인터페이스들의 비디오 프레임들의 복수의 열들 을 인코딩(이러한 인코딩은 하나 또는 그 이상의 피드백 파라미터들에 기초하고, 비디오 압축 기술들을 포함한다)하는 단계;상기 복수의 프로그램들의 유저 인터페이스들의 비디오 프레임들의 상기 복수의 열들의 인코딩을 매니징(managing)하고 로드 밸런싱하는 단계; 및상기 복수의 장치들의 유저 입력들을 각각 대응하는 상기 프로그램에 통신하는 단계를 더 포함하는 방법.
- 제18항에 있어서,상기 복수의 프로그램들은 오퍼레이팅 시스템의 하나의 인스턴스에서 동작하는 것을 특징으로 하는 방법.
- 제18항에 있어서,상기 매니징과 로드 밸런싱은 복수의 작업 쓰레드들을 이용하는 것 및 각 유저를 상기 복수의 작업 쓰레드들(각각의 작업 쓰레드는 하나 또는 그 이상의 유저들에 봉사한다) 중 어느 하나에 할당하는 것을 포함하는 것을 특징으로 하는 방법.
- 제18항에 있어서,상기 복수의 프로그램들에 대응하는 복수의 오디오 스트림들을 인터셉팅하는 단계;상기 복수의 오디오 스트림들 각각을 상기 복수의 프로그램들에 대응하는 복 수의 프로세스 식별자들 중 어느 하나에 연관시키는 단계;상기 복수의 오디오 스트림들을 인코딩하는 단계; 및연관된 상기 프로세스 식별자들에 기초하여 상기 복수의 오디오 스트림들을 라우팅하는 단계를 더 포함하는 방법.
- 네트워크를 통해서 전송된 프로그램의 유저 인터페이스의 비디오 프레임들의 열을 디코딩(이러한 인코딩은 하나 또는 그 이상의 피드백 파라미터들에 기초하고, 비디오 압축 기술들을 포함한다)하는 제1 엔진; 및상기 시스템의 유저 입력을 상기 프로그램에 통신하는 명령 처리 엔진을 포함하는, 네트워크상으로부터 비디오 프레임들을 수신하는 시스템.
- 제22항에 있어서,상기 네트워크를 통한 전송 이후, 상기 비디오 프레임들의 열에 연관된 오디오 스트림을 디코딩하는 제2 엔진을 더 포함하는 시스템.
- 제23항에 있어서,상기 제1 엔진 및 상기 제2 엔진과 동작할 수 있도록 결합되고, 장치 출력을 위해 상기 오디오 스트림을 상기 비디오 프레임들의 열에 연관짓는 것을 용이하게 하는 동기화 엔진을 더 포함하는 시스템.
- 제22항에 있어서,상기 제1 엔진에 동작할 수 있도록 결합되며, 상기 비디오 프레임들의 열을 디스플레이하기 위한 뷰잉 애플리케이션을 더 포함하고,상기 뷰잉 애플리케이션은 상기 명령 처리 엔진에 동작할 수 있도록 결합되고, 유저 입력을 상기 프로그램에 통신하는 것을 용이하게 하는 것을 특징으로 하는 시스템.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US86388806P | 2006-11-01 | 2006-11-01 | |
US60/863,888 | 2006-11-01 | ||
US11/929,773 | 2007-10-30 | ||
US11/929,773 US8443398B2 (en) | 2006-11-01 | 2007-10-30 | Architecture for delivery of video content responsive to remote interaction |
PCT/US2007/083203 WO2008057888A2 (en) | 2006-11-01 | 2007-10-31 | Architecture for delivery of video content responsive to remote interaction |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090106453A true KR20090106453A (ko) | 2009-10-09 |
KR101413126B1 KR101413126B1 (ko) | 2014-07-01 |
Family
ID=39331968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020097009054A KR101413126B1 (ko) | 2006-11-01 | 2007-10-31 | 원격 상호작용에 응답한 비디오 콘텐츠의 전송 아키텍처 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8443398B2 (ko) |
EP (1) | EP2082328A2 (ko) |
JP (1) | JP5451397B2 (ko) |
KR (1) | KR101413126B1 (ko) |
WO (1) | WO2008057888A2 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011093629A2 (ko) * | 2010-01-27 | 2011-08-04 | 에스케이 텔레콤주식회사 | 미디어 스트리밍을 이용한 리치미디어 서비스 방법 및 시스템 |
WO2012096717A1 (en) * | 2011-01-14 | 2012-07-19 | Google Inc. | Video processing feedback |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4506856B2 (ja) * | 2008-03-10 | 2010-07-21 | ソニー株式会社 | 通信装置、及び通信方法 |
US8793749B2 (en) * | 2008-08-25 | 2014-07-29 | Broadcom Corporation | Source frame adaptation and matching optimally to suit a recipient video device |
FR2943871B1 (fr) * | 2009-03-25 | 2011-07-22 | Sagem Comm | Procede de partage a distance de bureaux(x) informatique(s) |
US8379039B2 (en) * | 2009-06-07 | 2013-02-19 | Apple Inc. | Reformatting content with proper color-region conversion |
US20100328418A1 (en) * | 2009-06-25 | 2010-12-30 | Yair Winkler | Method for real-time remote presentation and control of a visual page from a mobile terminal during a video call |
US20110154214A1 (en) * | 2009-12-18 | 2011-06-23 | Microsoft Corporation | Offloading Content Retrieval And Decoding In Pluggable Content-Handling Systems |
US9781477B2 (en) | 2010-05-05 | 2017-10-03 | Cavium, Inc. | System and method for low-latency multimedia streaming |
US20110274156A1 (en) * | 2010-05-05 | 2011-11-10 | Cavium Networks | System and method for transmitting multimedia stream |
US8681866B1 (en) | 2011-04-28 | 2014-03-25 | Google Inc. | Method and apparatus for encoding video by downsampling frame resolution |
US9106787B1 (en) | 2011-05-09 | 2015-08-11 | Google Inc. | Apparatus and method for media transmission bandwidth control using bandwidth estimation |
US9503497B2 (en) * | 2011-12-10 | 2016-11-22 | LogMeln, Inc. | Optimizing transfer to a remote access client of a high definition (HD) host screen image |
US9185429B1 (en) | 2012-04-30 | 2015-11-10 | Google Inc. | Video encoding and decoding using un-equal error protection |
US10942735B2 (en) * | 2012-12-04 | 2021-03-09 | Abalta Technologies, Inc. | Distributed cross-platform user interface and application projection |
CN103116517B (zh) * | 2013-01-24 | 2016-09-14 | 华为技术有限公司 | 虚拟化平台下i/o通道的调整方法和调整装置 |
US9311692B1 (en) | 2013-01-25 | 2016-04-12 | Google Inc. | Scalable buffer remote access |
US8713600B2 (en) * | 2013-01-30 | 2014-04-29 | Almondnet, Inc. | User control of replacement television advertisements inserted by a smart television |
US9225979B1 (en) | 2013-01-30 | 2015-12-29 | Google Inc. | Remote access encoding |
US10116943B2 (en) * | 2013-10-16 | 2018-10-30 | Nvidia Corporation | Adaptive video compression for latency control |
EP3061253A4 (en) | 2013-10-25 | 2016-08-31 | Microsoft Technology Licensing Llc | PAIRING OF BLOCKS BY HASHING VIDEO AND IMAGE CODING |
WO2015058397A1 (en) | 2013-10-25 | 2015-04-30 | Microsoft Technology Licensing, Llc | Representing blocks with hash values in video and image coding and decoding |
US9424429B1 (en) * | 2013-11-18 | 2016-08-23 | Amazon Technologies, Inc. | Account management services for load balancers |
US10368092B2 (en) | 2014-03-04 | 2019-07-30 | Microsoft Technology Licensing, Llc | Encoder-side decisions for block flipping and skip mode in intra block copy prediction |
KR102185245B1 (ko) | 2014-03-04 | 2020-12-01 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | 해시 기반 블록 매칭을 위한 해시 테이블 구성 및 이용가능성 검사 |
FR3019428A1 (fr) | 2014-03-31 | 2015-10-02 | Orange | Dispositif et procede de commande a distance de la restitution de contenus multimedia |
US10681372B2 (en) | 2014-06-23 | 2020-06-09 | Microsoft Technology Licensing, Llc | Encoder decisions based on results of hash-based block matching |
US9681157B2 (en) * | 2014-07-23 | 2017-06-13 | Able Technologies | System and method for D-cinema to a selected location |
JP6462119B2 (ja) | 2014-09-30 | 2019-01-30 | マイクロソフト テクノロジー ライセンシング,エルエルシー | コンピューティングデバイス |
US9628830B1 (en) | 2014-12-22 | 2017-04-18 | Sorenson Media, Inc. | Automatic content recognition (ACR) fingerprinting and video encoding |
JP2016143236A (ja) | 2015-02-02 | 2016-08-08 | 株式会社リコー | 配信制御装置、配信制御方法、及びプログラム |
EP3057318A1 (en) * | 2015-02-13 | 2016-08-17 | Alcatel Lucent | Adapting coding parameters based on viewing experience and system constraints |
WO2017046713A2 (en) | 2015-09-14 | 2017-03-23 | Colorado Code Craft Patent Holdco Llc | Secure, anonymous browsing with a remote browsing server |
US9681111B1 (en) | 2015-10-22 | 2017-06-13 | Gopro, Inc. | Apparatus and methods for embedding metadata into video stream |
US9667859B1 (en) | 2015-12-28 | 2017-05-30 | Gopro, Inc. | Systems and methods for determining preferences for capture settings of an image capturing device |
US9922387B1 (en) | 2016-01-19 | 2018-03-20 | Gopro, Inc. | Storage of metadata and images |
US9967457B1 (en) | 2016-01-22 | 2018-05-08 | Gopro, Inc. | Systems and methods for determining preferences for capture settings of an image capturing device |
US9665098B1 (en) | 2016-02-16 | 2017-05-30 | Gopro, Inc. | Systems and methods for determining preferences for flight control settings of an unmanned aerial vehicle |
US10390039B2 (en) | 2016-08-31 | 2019-08-20 | Microsoft Technology Licensing, Llc | Motion estimation for screen remoting scenarios |
US9973792B1 (en) | 2016-10-27 | 2018-05-15 | Gopro, Inc. | Systems and methods for presenting visual information during presentation of a video segment |
US11095877B2 (en) | 2016-11-30 | 2021-08-17 | Microsoft Technology Licensing, Llc | Local hash-based motion estimation for screen remoting scenarios |
US10187607B1 (en) | 2017-04-04 | 2019-01-22 | Gopro, Inc. | Systems and methods for using a variable capture frame rate for video capture |
GB2568020A (en) * | 2017-09-05 | 2019-05-08 | Nokia Technologies Oy | Transmission of video content based on feedback |
US11202085B1 (en) | 2020-06-12 | 2021-12-14 | Microsoft Technology Licensing, Llc | Low-cost hash table construction and hash-based block matching for variable-size blocks |
US20240181339A1 (en) * | 2022-12-01 | 2024-06-06 | At&T Intellectual Property I, L.P. | Intelligent adaptive signaling automation for metaverse streaming |
Family Cites Families (81)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5253275A (en) * | 1991-01-07 | 1993-10-12 | H. Lee Browne | Audio and video transmission and receiving system |
US6297843B1 (en) * | 1993-09-30 | 2001-10-02 | Intel Corporation | System providing video compression/encoding for communications across a network |
JP3749752B2 (ja) * | 1995-03-24 | 2006-03-01 | アイティーティー・マニュファクチャリング・エンタープライジズ・インコーポレーテッド | ブロック適応型差分パルスコード変調システム |
US5742892A (en) * | 1995-04-18 | 1998-04-21 | Sun Microsystems, Inc. | Decoder for a software-implemented end-to-end scalable video delivery system |
US5821915A (en) * | 1995-10-11 | 1998-10-13 | Hewlett-Packard Company | Method and apparatus for removing artifacts from scanned halftone images |
US5841432A (en) * | 1996-02-09 | 1998-11-24 | Carmel; Sharon | Method and system of building and transmitting a data file for real time play of multimedia, particularly animation, and a data file for real time play of multimedia applications |
US5727159A (en) * | 1996-04-10 | 1998-03-10 | Kikinis; Dan | System in which a Proxy-Server translates information received from the Internet into a form/format readily usable by low power portable computers |
US6038257A (en) * | 1997-03-12 | 2000-03-14 | Telefonaktiebolaget L M Ericsson | Motion and still video picture transmission and display |
US6292834B1 (en) * | 1997-03-14 | 2001-09-18 | Microsoft Corporation | Dynamic bandwidth selection for efficient transmission of multimedia streams in a computer network |
JP3003618B2 (ja) * | 1997-03-19 | 2000-01-31 | 日本電気株式会社 | 動画像送受信装置 |
US6282240B1 (en) * | 1997-09-03 | 2001-08-28 | Oki Electric Industry Co., Ltd. | Picture coder, picture decoder, and transmission system |
US20030122954A1 (en) * | 1998-01-01 | 2003-07-03 | Kassatly L. Samuel Anthony | Video camera and method and device for capturing video, audio and data signals |
US7257158B1 (en) * | 1998-05-18 | 2007-08-14 | Kendyl A. Román | System for transmitting video images over a computer network to a remote receiver |
US6496203B1 (en) * | 1998-05-27 | 2002-12-17 | Microsoft Corporation | Standardized and application-independent graphical user interface components implemented with web technology |
US6563517B1 (en) * | 1998-10-02 | 2003-05-13 | International Business Machines Corp. | Automatic data quality adjustment to reduce response time in browsing |
US6578201B1 (en) * | 1998-11-20 | 2003-06-10 | Diva Systems Corporation | Multimedia stream incorporating interactive support for multiple types of subscriber terminals |
US6529552B1 (en) * | 1999-02-16 | 2003-03-04 | Packetvideo Corporation | Method and a device for transmission of a variable bit-rate compressed video bitstream over constant and variable capacity networks |
US6584493B1 (en) * | 1999-03-02 | 2003-06-24 | Microsoft Corporation | Multiparty conferencing and collaboration system utilizing a per-host model command, control and communication structure |
US6711294B1 (en) * | 1999-03-31 | 2004-03-23 | International Business Machines Corporation | Method and apparatus for reducing image data storage and processing based on device supported compression techniques |
US6668273B1 (en) * | 1999-11-18 | 2003-12-23 | Raindance Communications, Inc. | System and method for application viewing through collaborative web browsing session |
US20020059368A1 (en) * | 2000-01-07 | 2002-05-16 | Soneticom, Inc. | Wireless remote computer interface system |
TW515192B (en) * | 2000-06-06 | 2002-12-21 | Noa Kk Off | Compression method of motion picture image data and system there for |
US6925651B2 (en) * | 2000-06-08 | 2005-08-02 | Agile Tv Corporation | Method and processor engine architecture for the delivery of audio and video content over a broadband network |
US7210099B2 (en) * | 2000-06-12 | 2007-04-24 | Softview Llc | Resolution independent vector display of internet content |
US7116843B1 (en) * | 2000-07-24 | 2006-10-03 | Quark, Inc. | Method and system using non-uniform image blocks for rapid interactive viewing of digital images over a network |
US6704024B2 (en) * | 2000-08-07 | 2004-03-09 | Zframe, Inc. | Visual content browsing using rasterized representations |
KR100345447B1 (ko) * | 2000-09-27 | 2002-07-26 | 한국전자통신연구원 | 스트리밍 서비스를 위한 가변 비트율 처리 방법 |
US20020076049A1 (en) * | 2000-12-19 | 2002-06-20 | Boykin Patrick Oscar | Method for distributing perceptually encrypted videos and decypting them |
US20030079222A1 (en) * | 2000-10-06 | 2003-04-24 | Boykin Patrick Oscar | System and method for distributing perceptually encrypted encoded files of music and movies |
US6724382B2 (en) * | 2000-12-04 | 2004-04-20 | Wildtangent, Inc. | Method and apparatus for distributing and displaying maps electronically |
US7043745B2 (en) * | 2000-12-29 | 2006-05-09 | Etalk Corporation | System and method for reproducing a video session using accelerated frame recording |
US20020122491A1 (en) * | 2001-01-03 | 2002-09-05 | Marta Karczewicz | Video decoder architecture and method for using same |
JP3918447B2 (ja) * | 2001-03-30 | 2007-05-23 | 三菱電機株式会社 | 動画像受信装置および動画像送信装置 |
US7821953B2 (en) | 2005-05-13 | 2010-10-26 | Yahoo! Inc. | Dynamically selecting CODECS for managing an audio message |
US7016963B1 (en) * | 2001-06-29 | 2006-03-21 | Glow Designs, Llc | Content management and transformation system for digital content |
JP2003087575A (ja) * | 2001-07-06 | 2003-03-20 | Ricoh Co Ltd | 画像表示装置 |
US6990534B2 (en) * | 2001-07-20 | 2006-01-24 | Flowfinity Wireless, Inc. | Method for a proactive browser system for implementing background frame maintenance and asynchronous frame submissions |
BR0212000A (pt) * | 2001-08-23 | 2004-09-28 | Polycom Inc | Sistema e método para ocultação de erro de vìdeo |
JP2003134362A (ja) * | 2001-10-22 | 2003-05-09 | D T P:Kk | 監視用ビデオカメラ |
US7088398B1 (en) * | 2001-12-24 | 2006-08-08 | Silicon Image, Inc. | Method and apparatus for regenerating a clock for auxiliary data transmitted over a serial link with video data |
US7376896B2 (en) * | 2002-01-15 | 2008-05-20 | International Business Machines Corporation | System for recording world wide web browsing sessions navigation on a real-time basis and for subsequently displaying the recorded sessions as surrogate browsing sessions with user enabled real-time modification |
JP2003259310A (ja) | 2002-02-28 | 2003-09-12 | Mitsubishi Electric Corp | 映像音声録画再生媒体用メニュー装置 |
US7219163B2 (en) * | 2002-03-14 | 2007-05-15 | Hewlett-Packard Development Company, L.P. | Method and system that tailors format of transmission to suit client capabilities and link characteristics |
FR2840495B1 (fr) * | 2002-05-29 | 2004-07-30 | Canon Kk | Procede et dispositif de selection d'une methode de transcodage parmi un ensemble de methodes de transcodage |
GB2390949A (en) * | 2002-07-17 | 2004-01-21 | Sony Uk Ltd | Anti-aliasing of a foreground image to be combined with a background image |
US20040022322A1 (en) * | 2002-07-19 | 2004-02-05 | Meetrix Corporation | Assigning prioritization during encode of independently compressed objects |
JP4343111B2 (ja) * | 2002-10-02 | 2009-10-14 | エルジー エレクトロニクス インコーポレーテッド | グラフィックデータの再生を管理するためのデータ構造を有する記録媒体、該記録媒体による記録・再生方法、およびその装置 |
US7483575B2 (en) * | 2002-10-25 | 2009-01-27 | Sony Corporation | Picture encoding apparatus and method, program and recording medium |
GB0230328D0 (en) * | 2002-12-31 | 2003-02-05 | British Telecomm | Video streaming |
GB0303888D0 (en) * | 2003-02-19 | 2003-03-26 | Sec Dep Acting Through Ordnanc | Image streaming |
US20040184523A1 (en) * | 2003-02-25 | 2004-09-23 | Dawson Thomas Patrick | Method and system for providing reduced bandwidth for picture in picture video transmissions |
US7724827B2 (en) * | 2003-09-07 | 2010-05-25 | Microsoft Corporation | Multi-layer run level encoding and decoding |
KR100982511B1 (ko) * | 2003-10-08 | 2010-09-16 | 삼성전자주식회사 | 원격 제어 장치 및 방법 |
US20050089092A1 (en) * | 2003-10-22 | 2005-04-28 | Yasuhiro Hashimoto | Moving picture encoding apparatus |
US20050147247A1 (en) * | 2003-11-14 | 2005-07-07 | Westberg Thomas E. | Interactive television systems having POD modules and methods for use in the same |
TWI262660B (en) * | 2003-11-19 | 2006-09-21 | Inst Information Industry | Video transcoder adaptively reducing frame rate |
CN1922880B (zh) | 2004-02-24 | 2012-11-14 | 日本电气株式会社 | 信息分发系统和方法、及其信息分发装置、接收终端、信息中继装置 |
KR100586883B1 (ko) * | 2004-03-04 | 2006-06-08 | 삼성전자주식회사 | 비디오 스트리밍 서비스를 위한 비디오 코딩방법, 프리디코딩방법, 비디오 디코딩방법, 및 이를 위한 장치와, 이미지 필터링방법 |
KR100631768B1 (ko) * | 2004-04-14 | 2006-10-09 | 삼성전자주식회사 | 비디오 코딩에서 프레임간 예측방법 및 비디오 인코더와,비디오 디코딩방법 및 비디오 디코더 |
US20050257167A1 (en) * | 2004-05-11 | 2005-11-17 | International Business Machines Corporation | Embedded Web dialog |
KR20050114047A (ko) * | 2004-05-31 | 2005-12-05 | 삼성전자주식회사 | 원격지에 소재하는 다수의 클라이언트들을 지원하는 방법및 서버 |
EP1615447B1 (en) * | 2004-07-09 | 2016-03-09 | STMicroelectronics Srl | Method and system for delivery of coded information streams, related network and computer program product therefor |
US7590750B2 (en) * | 2004-09-10 | 2009-09-15 | Microsoft Corporation | Systems and methods for multimedia remoting over terminal server connections |
US8948266B2 (en) * | 2004-10-12 | 2015-02-03 | Qualcomm Incorporated | Adaptive intra-refresh for digital video encoding |
US7784076B2 (en) * | 2004-10-30 | 2010-08-24 | Sharp Laboratories Of America, Inc. | Sender-side bandwidth estimation for video transmission with receiver packet buffer |
KR20060063605A (ko) * | 2004-12-06 | 2006-06-12 | 엘지전자 주식회사 | 영상신호의 엔코딩과 그 전송, 그리고 디코딩을 위한 방법및 장치 |
US20060174026A1 (en) * | 2005-01-05 | 2006-08-03 | Aaron Robinson | System and method for a remote user interface |
US7730157B2 (en) * | 2005-02-03 | 2010-06-01 | The Trustees Of Columbia University In The City Of New York | Methods, media, and systems for displaying information on a thin-client in communication with a network |
US7503173B2 (en) * | 2005-02-08 | 2009-03-17 | Parker-Hannifin Corporation | Control devices for swashplate type variable displacement piston pump |
JP2006270690A (ja) | 2005-03-25 | 2006-10-05 | Funai Electric Co Ltd | データ伝送システム |
US7870256B2 (en) * | 2005-03-25 | 2011-01-11 | Hewlett-Packard Development Company, L.P. | Remote desktop performance model for assigning resources |
US20060282855A1 (en) * | 2005-05-05 | 2006-12-14 | Digital Display Innovations, Llc | Multiple remote display system |
US7830961B2 (en) * | 2005-06-21 | 2010-11-09 | Seiko Epson Corporation | Motion estimation and inter-mode prediction |
KR100699261B1 (ko) * | 2005-06-24 | 2007-03-27 | 삼성전자주식회사 | 움직임 에러 검출장치와 이를 포함하는 움직임 에러보정장치와 이에 의한 움직임 에러 검출방법 및 움직임에러 보정방법 |
KR100723505B1 (ko) * | 2005-10-06 | 2007-05-30 | 삼성전자주식회사 | 하이브리드 방식의 영상 데이터 처리 시스템 및 영상데이터 처리 방법 |
US20070116117A1 (en) * | 2005-11-18 | 2007-05-24 | Apple Computer, Inc. | Controlling buffer states in video compression coding to enable editing and distributed encoding |
JP2007158410A (ja) * | 2005-11-30 | 2007-06-21 | Sony Computer Entertainment Inc | 画像符号化装置、画像復号装置、および画像処理システム |
US20070250711A1 (en) * | 2006-04-25 | 2007-10-25 | Phonified Llc | System and method for presenting and inputting information on a mobile device |
US20080062322A1 (en) * | 2006-08-28 | 2008-03-13 | Ortiva Wireless | Digital video content customization |
US20080065980A1 (en) * | 2006-09-08 | 2008-03-13 | Opera Software Asa | Modifying a markup language document which includes a clickable image |
NO325628B1 (no) * | 2006-09-20 | 2008-06-30 | Opera Software Asa | Fremgangsmåte, datamaskinprogram, transkodingsserver og datamaskinsystem for å modifisere et digitalt dokument |
-
2007
- 2007-10-30 US US11/929,773 patent/US8443398B2/en active Active
- 2007-10-31 KR KR1020097009054A patent/KR101413126B1/ko active IP Right Grant
- 2007-10-31 JP JP2009534948A patent/JP5451397B2/ja active Active
- 2007-10-31 EP EP07863723A patent/EP2082328A2/en not_active Withdrawn
- 2007-10-31 WO PCT/US2007/083203 patent/WO2008057888A2/en active Application Filing
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011093629A2 (ko) * | 2010-01-27 | 2011-08-04 | 에스케이 텔레콤주식회사 | 미디어 스트리밍을 이용한 리치미디어 서비스 방법 및 시스템 |
WO2011093629A3 (ko) * | 2010-01-27 | 2012-01-05 | 에스케이플래닛 주식회사 | 미디어 스트리밍을 이용한 리치미디어 서비스 방법 및 시스템 |
WO2012096717A1 (en) * | 2011-01-14 | 2012-07-19 | Google Inc. | Video processing feedback |
US8849956B2 (en) | 2011-01-14 | 2014-09-30 | Google Inc. | Video processing feedback |
Also Published As
Publication number | Publication date |
---|---|
US8443398B2 (en) | 2013-05-14 |
EP2082328A2 (en) | 2009-07-29 |
WO2008057888A3 (en) | 2008-07-10 |
JP5451397B2 (ja) | 2014-03-26 |
JP2010508734A (ja) | 2010-03-18 |
KR101413126B1 (ko) | 2014-07-01 |
WO2008057888A2 (en) | 2008-05-15 |
US20080104652A1 (en) | 2008-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101413126B1 (ko) | 원격 상호작용에 응답한 비디오 콘텐츠의 전송 아키텍처 | |
KR101413130B1 (ko) | 상태기반 브라우징 | |
US20080184128A1 (en) | Mobile device user interface for remote interaction | |
US12093429B2 (en) | Remoting application across a network using draw commands with an isolator application | |
US10552639B1 (en) | Local isolator application with cohesive application-isolation interface | |
CN103210672B (zh) | 根据终端将自适应画面虚拟化的方法和系统 | |
US10062141B2 (en) | Server-based fast remote display on client devices | |
TWI495330B (zh) | 有效地串流數位視訊的系統及方法 | |
US9679344B2 (en) | Server-based fast remote display on client devices | |
KR20120106778A (ko) | 라이트웨이트 클라이언트를 이용해서 네트워크를 거쳐 가상화 컴퓨팅 서비스와 인터페이스하기 위한 방법 | |
KR20160092136A (ko) | 가상 데스크탑 제공 방법 및 가상 데스크탑 제공 서버 | |
CN101676875A (zh) | Linux终端无缝访问远程Windows应用程序的方法及其装置 | |
US20030204558A1 (en) | Interaction interface for a composite device computing environment | |
Baratto | THINC: a virtual and remote display architecture for desktop computing and mobile devices | |
CN102811241A (zh) | 远程管理方法及远程管理系统 | |
EP1821490A1 (en) | Method for transmitting graphical data to a thin client | |
TW202046741A (zh) | 客戶側延遲改善方法、主處理器以及處理電路 | |
Baig et al. | Virtual Network Computing Based Remote Desktop Access | |
Honda et al. | Thin client technology for mobile service platform | |
Simoens et al. | Optimized mobile thin clients through a MPEG-4 BiFS semantic remote display framework | |
Kalje et al. | Android Based Remote Control of Mobile Devices Using VNC System | |
KR101473463B1 (ko) | 터미널 환경의 서버 기반 컴퓨팅 시스템에서 압축 화면 정보를 제공하는 터미널 서비스 시스템 및 터미널 서비스 방법 | |
Yu et al. | Extending the power of server based computing | |
Kumar et al. | Optimized solutions for mobile Cloud Computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
N231 | Notification of change of applicant | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170522 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180529 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190530 Year of fee payment: 6 |