KR20040104515A - 클라이언트에서 그래픽 및 미디어 디스플레이를 생성하기위한 방법 및 장치 - Google Patents

클라이언트에서 그래픽 및 미디어 디스플레이를 생성하기위한 방법 및 장치 Download PDF

Info

Publication number
KR20040104515A
KR20040104515A KR10-2004-7014453A KR20047014453A KR20040104515A KR 20040104515 A KR20040104515 A KR 20040104515A KR 20047014453 A KR20047014453 A KR 20047014453A KR 20040104515 A KR20040104515 A KR 20040104515A
Authority
KR
South Korea
Prior art keywords
client
data set
media
compressed data
computer
Prior art date
Application number
KR10-2004-7014453A
Other languages
English (en)
Inventor
데이비드 로빈슨
리 라보르츠팔비
피에르 세만
어닐 로이차우드리
마틴 둘스마
아나토릴리 파나슈크
Original Assignee
사이트릭스 시스템스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 사이트릭스 시스템스, 인크. filed Critical 사이트릭스 시스템스, 인크.
Publication of KR20040104515A publication Critical patent/KR20040104515A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/75Indicating network or usage conditions on the user display
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2320/00Control of display operating conditions
    • G09G2320/10Special adaptations of display systems for operation with variable images

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Digital Computer Display Output (AREA)

Abstract

본 발명은 일반적으로 클라이언트에서 그래픽 및/또는 미디어 요소를 갖는 디스플레이를 생성하는 것에 관련된다. 일 측면에서, 클라이언트에서 그래픽 디스플레이를 생성하기 위한 방법은, 서버상에서 실행하는 어플리케이션 프로그램의 출력을 클라이언트에 전송하는 단계와, 상기 어플리케이션 출력내에서 비-텍스트 요소를 식별해내는 단계와, 상기 비-텍스트 요소에 연관된 압축된 데이터 포맷을 검색하는 단계와, 상기 클라이언트에 상기 비-텍스트 요소 대신에 상기 압축된 데이터 포맷을 전송하는 단계를 포함한다. 또다른 측면에서, 클라이언트에서 미디어 프레젠테이션을 생성하는방법은, 서버상에서 실행하는 어플리케이션 프로그램의 출력을 클라이언트에 전송하는 단계와, 상기 어플리케이션 출력내에서 비-텍스트 요소를 식별해내는 단계와, 상기 어플리케이션 프로그램에 의한 처리 이전에 미디어 스트림의 적어도 일부를 나타내는 원래의 압축된 데이터 집합을 가로채는 단계와, 상기 클라이언트에 원래의 압축된 데이터 집합을 전송하는 단계를 포함한다.

Description

클라이언트에서 그래픽 및 미디어 디스플레이를 생성하기 위한 방법 및 장치{Method and apparatus for generating graphical and media displays at a client}
딘-클라이언트(thin-client) 프로토콜은 서버상에서 실행되는 어플리케이션에 의해 산출된 출력을 제한된 처리 능력을 갖는 클라이언트상에서 디스플레이하기 위해 사용된다. 2가지 예시적인 딘 클라이언트 프로토콜로서 사이트릭스 시스템사의 ICA(Independent Computing Architecture)와 마이크로소프트상의 RDP(Remote Desktop Protocol)가 있다. 클라이언트는 때때로 원격 단말 세션으로 지칭되기도 한다. 하나의 딘-클라이언트 프로토콜은 서버 운영체제(OS)에게 디스플레이 스크린에 그림을 그리라는 어플리케이슨 프로그램에 의한 명령을 가로챈다. 가로채인 명령은, 예를 들어, 하나 이상의 프레젠테이션 계층 패킷을 이용하여 원격 세션에전송된다. 원격 세션(예, 딘-클라이언트)이 명령을 수신하면, 원격 세션은 수신된 명령을 원격 세션 OS에 전달한다. 딘-클라이언트는 수신된 명령을 이용하여 그의 디스플레이에 상기 어플리케이션 프로그램 결과를 그린다. 이러한 방식에 의하면, 어플리케이션 프로그램은 딘-클라이언트상에서 실행되는 것처럼 보인다.
전형적으로, 어플리케이션 프로그램이 디스플레이 스크린에 이미지를 그리면, 이미지는 비트맵으로서 표현된다. 이미지의 비트맵 포맷은 통상적으로 매우 큰 데이터 집합이다. 따라서, 딘-클라이언트 프로토콜은 네트워크를 통해 대용량의 이미지의 비트맵 표현을, 이 비트맵 표현을 어떻게 디스플레이할 것인지에 대해 적용될 수 있는 명령어들과 함께, 전송하여야 한다. 저대역 네트워크의 경우에, 완성된 이미지가 수신되고 클라이언트상에 디스플레이되기 이전에 상당한 시간 지연이 존재하게 된다. 이 때문에 클라이언트의 사용자에게는 불편함과 불쾌함이 생길 수 있다. 또한, 사용자가, 예를 들어, 무선망에서 사용 대역에 대하여 직접적으로 지불하는 경우에, 이러한 커다란 양의 비트맵 포맷의 전송은 각 전송에 관련된 엄청난 비용을 발생시킨다.
어플리케이션 프로그램이 미디어 프레젠테이션(media presentation)을 렌더링하는 경우에도 유사한 문제점이 존재한다. 전형적으로, 비디오 파일은 일련의 비트맵으로서 렌더링되고, 오디오 정보는 펄스 코드 변조를 이용하여 렌더링된다. 따라서, 딘-클라이언트 프로토콜은 비디오 파일을 나타내는 일련의 비트맵 및/또는 오디오 정보를 나타내는 펄스 코드 변조 신호를 네트워크를 통해 전송한다. 이러한 전송은 과도한 대역 및 과중한 CPU 이용을 요구하므로 비효율적이다. 더욱이,충분한 대역이 이용가능하더라도, 클라이언트에서 반응이 느린 그래픽 사용자 인터페이스의 결과를 낳을 수 있다. 예를 들어, 비디오 재생은 종종 질이 떨어져서, "어색하게" 보일 수 있으며, 오디오 정보와 동기가 제대로 이루어지지 않을 수 있다.
따라서, 원격 단말 세션에서 이미지 및 미디어 프레젠테이션을 렌더링하기 위한 개선된 방법이 필요하다.
본 발명은 2002년 3월 14일에 출원된 미국특허출원 제 10/098,157호에 기반한 우선권을 주장하며, 상기 출원은 본 명세서에 전체적으로 참조된다.
본 발명은 일반적으로 분산 처리에 관한 것으로, 좀더 구체적으로는 클라이언트에서 그래픽 및/또는 미디어 요소를 갖는 디스플레이를 생성하기 위한 분산처리에 관한 것이다.
본 발명의 전술한 장점들 및 기타 장점들은 다음의 첨부된 도면들과 관련하여 이하의 설명을 참조함으로써 잘 이해될 것이다.
도 1은 본 발명에 따라 원격 단말 세션용 그래픽 디스플레이를 생성하기 위한 시스템의 예시적인 실시예에 관한 블록도이다.
도 2는 본 발명에 따라 원격 단말 세션용 그래픽 디스플레이를 생성하기 위한 프로세스의 예시적인 실시예에 대한 흐름도이다.
도 3은 본 발명에 따라 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 시스템의 예시적인 실시예에 대한 블록도이다.
도 4A, 4B 및 4C는 본 발명에 따라 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 방법의 예시적인 실시예에 대한 흐름도이다.
본 발명은, 일 장점에 따르면, 큰 비트맵 포맷으로 원래 표현되는 이미지 및 다른 비-텍스트 요소들을, 전송전에, 비트맵 포맷에 대하여 가용한 압축 포맷으로 대체함으로써 이들의 전송과 관련된 시간 및 비용을 낮춘다. 통상적으로, 비트맵 포맷 대신에 압축된 포맷을 전송함으로써 필요한 대역을 많이 줄일 수 있다. 클라이언트는 이용가능한 라이브러리를 이용하여 수신된 데이터의 압축을 해제한다. 그다음에, 클라이언트는, 예를 들어, 다름 식별가능한 데이터를 갖는 수정된 딘-클라이언트 프로토콜 명령을 이용하여 원래 비트맵 표현 대신에 압축해제된 이미지를 사용한다.
본 발명의 다른 장점에 따르면, 미디어 스트림의 적어도 일부를 나타내는 압축된 데이터 집합이 압축해제되기 이전에 제1 컴퓨팅 장치상에서 가로채인다. 대안적으로, 압축된 데이터 집합이 제1 컴퓨팅 장치상에서 압축해제되는 경우에, 결과의 압축해제된 데이터 집합은 제1 컴퓨팅 장치상에서 재-압축된다. 압축해제된 데이터 집합대신에 압축된 데이터 집합을 (제한된 대역을 가질 수도 있는) 네트워크를 통해 전송함으로써, 데이터 집합을 전송하는 것과 관련된 시간 및 비용은 이에 따라 감소된다.
일측면에서, 본 발명은 클라이언트에서 그래픽 디스플레이를 생성하기 위한 방법에 관련된다. 방법은, 서버상에서 실행되는 어플리케이션 프로그램의 출력을 클라이언트에 전송하는 단계와, 상기 어플리케이션 출력내에서 비트맵 표현을 식별하는 단계와, 상기 비트맵 표현에 대한 체크값(check value)을 판단하는 단계를 포함한다. 또한, 방법은 적어도 부분적으로 상기 체크값을 이용하여 비트맵 표현의 압축된 데이터 포맷을 검색하는 단계와 상기 비트맵 표현을 대신하여 상기 압축된 데이터 포맷을 전송하는 단계를 포함한다.
또다른 측면에서, 본 발명은 클라이언트에서 그래픽 디스플레이를 생성하기 위한 방법에 관련된다. 상기 방법은 서버상에서 실행되는 어플리케이션 프로그램의 출력을 클라이언트에 전송하는 단계와, 상기 어플리케이션 출력내에서 비-텍스트 요소를 식별하는 단계를 포함한다. 또한, 상기 방법은 비-텍스트 요소와 관련된 압축된 데이터 포맷을 검색하는 단계와 상기 비-텍스트를 대신하여 압축된 데이터 포맷을 클라이언트에 전송하는 단계를 포함한다.
본 발명의 전술한 측면에 따른 일실시예에서, 상기 방법은 상기 어플리케이션 출력내에서 텍스트 요소를 식별하는 단계와 상기 텍스트 요소를 클라이언트에 전송하는 단계를 포함한다. 또다른 실시예에서, 상기 방법은 상기 압축된 데이터 포맷 및 선택적으로 상기 텍스트 요소를 클라이언트에서 수신하는 단계와 상기 압축된 데이터 포맷 및, 선택적으로, 상기 텍스트 요소를 이용하여 상기 클라이언트에서 디스플레이를 생성하는 단계를 포함한다. 또다른 실시예에서, 상기 방법은 적어도 하나의 프레젠테이션 프로토콜 패킷을 이용하여 상기 압축된 데이터 포맷을 전송하는 단계를 포함한다. 또다른 실시예에서, 상기 방법은 본래의 포맷으로 파일을 전송하기 위한 명령어를 이용하여 상기 적어도 하나의 프레젠테이션 계층 프로토콜 패킷을 전송하는 단계를 포함한다.
또다른 실시예에서, 상기 방법은 상기 적어도 하나의 프레젠테이션 계층 프로토콜 패킷을 원격 액세스 프로토콜, 딘-클라이언트 프로토콜, 및/또는 프레젠테이션 프로토콜을 따르는(conform) 단계를 포함한다. 또다른 실시예에서, 상기 방법은 압축된 데이터 포맷을 이용하여 비-텍스트 요소를 렌더링하는 클라이언트의 능력을 판단하는 단계를 포함하다. 상기 방법은, 상기 클라이언트가 압축된 데이터 포맷을 이용하여 상기 비-텍스트 요소를 렌더링할 수 없는 것으로 판단되면, 상기 압축된 데이터 포맷을 이용하여 상기 비-텍스트 요소를 렌더링할 수 있는 이미지-렌더링 라이브러리를 전송하는 단계를 더 포함한다.
또다른 구현에서, 본 발명에 따른 방법은 어플리케이션 출력을 가로채는 단계와 상기 가로챈 출력에서 비-텍스트 요소의 비트맵 표현이 있는지를 검사하는 단계를 포함한다. 또다른 구현에서, 본 방법은 상기 비-텍스트 요소의 비트맵 표현에 대한 제1 체크값을 계산하는 단계와 상기 제1 체크값과 동일한 체크값을 갖는 압축된 데이터 포맷을 이미지 저장소에서 검색하는 단계를 포함한다.
또다른 측면에서, 본 발명은 클라이언트에서 그래픽 디스플레이를 생성하기 위한 시스템에 관련된다. 시스템은 출력 필터 모듈과 서버 에이전트를 포함한다.출력 필터 모듈은 어플리케이션 프로그램에 의해 산출된 출력을 가로채고, 상기 출력에서 비-텍스트 요소를 식별하고, 상기 비-텍스트 요소에 연관된 압축된 데이터 포맷을 검색하도록 구성된다. 서버 에이전트는 상기 비-텍스트 요소를 대신하여 상기 압축된 데이터 포맷을 클라이언트에 전송하도록 구성된다.
본 발명의 일측면에 따른 일 실시예에서, 상기 시스템은 서버 노드를 포함하고, 서버 노드는 서버 에이전트와 출력 필터 모듈을 포함한다. 또다른 구현에서, 상기 시스템은 클라이언트 노드를 포함한다. 상기 클라이언트 노드는 클라이언트 에이전트와 디스플레이를 포함한다. 클라이언트 에이전트는 압축된 데이터 포맷을 수신하고 상기 수신된 압축된 데이터 포맷을 이용하여 상기 비-텍스트 요소의 디스플레이를 생성하도록 구성된다. 또다른 측면에서, 상기 시스템은 네트워크를 또한 포함한다.
또다른 측면으로, 본 발명은 클라이언트에서 그래픽 디스플레이를 생성하기 위한 컴퓨터 판독가능 프로그램 수단이 그 내부에 구현된 제조물에 관련된다. 상기 제조물은 전술한 방법중 임의의 방법을 수행하기 위한 컴퓨터-판독가능 프로그램 수단을 포함한다.
부가적인 측면으로, 본 발명은 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 방법에 관련된다. 상기 방법은 서버상에서 실행하는 어플리케이션 프로그램의 출력을 클라이언트에 전송하는 단계와, 상기 어플리케이션 출력내에서 미디어 스트림을 식별하는 단계와, 상기 어플리케이션 프로그램에 의해 처리하기 이전에 상기 미디어 스트림의 적어도 일부를 나타내는 원래의 압축된 데이터 집합을 가로채는 단계와, 상기 원래의 압축된 데이터 집합을 클라이언트에 전송하는 단계를 포함한다.
또다른 측면으로, 본 발명은 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 또다른 방법에 관련된다. 상기 방법은 서버상에서 실행하는 어플리케이션 프로그램의 출력을 전송하는 단계와, 상기 어플리케이션 출력내에서 미디어 스트림을 식별하는 단계와, 상기 미디어 스트림의 적어도 일부를 나타내는 제1의 압축해제된 데이터 집합을 가로채는 단계와, 상기 가로채인 제1의 압축해제된 데이터 집합을 압축하는 단계와, 상기 제1의 압축해제된 데이터 집합을 대신하여 상기 클라이언트에 상기 압축된 데이터 집합을 전송하는 단계를 포함한다.
또다른 측면에서, 본 발명은 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 또다른 방법에 관련된다. 상기 방법은 상기 클라이언트상에 설치된 클라이언트 에이전트에 의해 지원되는 적어도 하나의 미디어 포맷을 서버에 알려주는 단계와, 상기 클라이언트에서 미디어 스트림의 압축된 데이터 집합을 수신하는 단계와, 압축해제된 데이터 집합을 생성하기 위해 상기 클라이언트에서 상기 압축된 데이터 집합을 압축해제하는 단계와, 상기 압축해제된 데이터 집합을 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하는 단계를 포함한다.
또다른 측면에서, 본 발명은 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 컴퓨터 판독가능 프로그램 수단이 그 내부에 구현된 제조물에 관련된다. 제조물은 서버상에서 실행하는 어플리케이션 프로그램의 출력을 클라이언트에 전송하기 위한 컴퓨터 판독가능 프로그램 수단과, 상기 어플리케이션 출력내에서 미디어 스트림을 식별하기 위한 컴퓨터 판독가능 프로그램 수단과, 상기 어플리케이션 프로그램에 의해 처리하기 이전에 상기 미디어 스트림의 적어도 일부를 나타내는 원래의 압축된 데이터 집합을 가로채기 위한 컴퓨터 판독가능 프로그램 수단과, 상기 원래의 압축된 데이터 집합을 상기 클라이언트에 전송하기 위한 컴퓨터 판독가능 프로그램 수단을 포함한다.
또다른 측면으로, 본 발명은 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단을 구현한 또다른 제조물에 관련된다. 상기 제조물은 서버상에서 실행되는 어플리케이션의 출력을 클라이언트에 전송하기 위한 컴퓨터-판독가능 프로그램 수단과, 상기 어플리케이션 출력내에서 미디어 스트림을 식별하기 위한 컴퓨터-판독가능 프로그램 수단과, 상기 미디어 스트림의 적어도 일부를 나타내는 제1의 압축해제된 데이터 집합을 가로채기 위한 컴퓨터-판독가능 프로그램 수단과, 상기 제1의 압축해제된 데이터 집합을 압축하기 위한 컴퓨터-판독가능 프로그램 수단과, 상기 제1의 압축해제된 데이터 집합을 대신하여 상기 클라이언트에 상기 압축해제된 데이터 집합을 전송하기 위한 컴퓨터 판독가능 프로그램 수단을 포함한다.
또다른 측면에서, 본 발명은 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 컴퓨터 판독 수단을 구현하는 또다른 제조물에 관련된다. 이 제조물은 클라이언트에상에 설치된 클라이언트 에이전트에 의해 지원되는 적어도 하나의 미디어 포맷을 서버에 알리기 위한 컴퓨터-판독가능 프로그램 수단과, 상기 클라이언트에서 미디어 스트림의 압축된 데이터 집합을 수신하기 위한 컴퓨터-판독가능 프로그램 수단과, 압축해제된 데이터 집합을 생성하기 위해 클라이언트에서 상기 압축된 데이터 집합을 압축해제하기 위한 컴퓨터-판독가능 프로그램 수단과, 상기 압축해제된 데이터 집합을 이용하여 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단을 포함한다.
본 발명의 전술한 여섯가지 측면에 따른 다양한 실시예에서, 본 발명에 따른 방법 및 제조물은, 상기 미디어 스트림에 연관된 타이밍 정보를 획득하고, 상기 타이밍 정보를 클라이언트에 전송하고, 상기 압축된 데이터 집합 및, 선택적으로, 상기 타이밍 정보를 클라이언트에서 수신하고, 상기 압축된 데이터 집합을 클라이언트에서 압축해제하여 압축해제된 데이터 집합을 생성하고, 상기 압축해제된 데이터 집합 및, 선택적으로, 타이밍 정보를 이용하여 클라이언트에서 상기 미디어 프레젠테이션을 생성하는 단계 및 이에 대응하는 컴퓨터-판독가능 프로그램 수단을 또한 포함한다. 다른 실시예에서, 상기 방법 및 상기 제조물은, 어플리케이션 출력중에서 비-미디어 그래픽 정보를 클라이언트에 전송하고, 상기 비-미디어 그래픽 정보를 클라이언트에서 수신하고, 상기 압축해제된 데이터 집합 및 상기 비-미디어 그래픽 정보를 이용하여 클라이언트에서 상기 미디어 프레젠테이션을 생성하는 단계 및 이에 대응하는 컴퓨터 판독가능 프로그램 수단을 더 포함한다.
부가적인 측면에서, 본 발명은 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 시스템에 관련된다. 상기 시스템은 어플리케이션 프로그램과 출력 필터 모듈을 포함한다. 어플리케이션 프로그램은 상기 어플리케이션 프로그램에 의해 산출된 출력내에 미디어 스트림을 식별하도록 구성된다. 출력 필터 모듈은 어플리케이션 프로그램에 의한 처리 이전에 상기 미디어 스트림의 적어도 일부를 나타내는 원래의 압축된 데이터 집합을 가로채고 상기 원래의 압축된 데이터 집합을 클라이언트에 전송하도록 구성된다.
또다른 측면에서, 본 발명은 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 또다른 시스템에 관련된다. 이 시스템은 어플리케이션 프로그램과 출력 필터 모듈을 포함한다. 어플리케이션 프로그램은 상기 어플리케이션 프로그램에 의해 산출되는 출력내에서 미디어 스트림을 식별하기 위해 구성된다. 출력 필터 모듈은 상기 미디어 스트림의 적어도 일부를 나타내는 제1의 압축해제된 데이터 집합을 가로채고, 상기 미디어 스트림의 상기 가로챈 제1의 압축해제된 데이터 집합을 압축하고, 상기 제1의 압축해제된 데이터 집합 대신에 상기 클라이언트에 상기 압축된 데이터 집합을 전송하도록 구성된다.
또다른 측면에서, 본 발명은 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 또다른 시스템에 관련된다. 이러한 시스템은 서버와 서버와 통신하는 클라이언트를 포함한다. 클라이언트는 클라이언트 에이전트를 포함하고, 클라이언트 에이전트는 자신에 의해 지원되는 적어도 하나의 미디어 포맷을 서버에 알려주고, 미디어 스트림의 압축된 데이터 집합을 수신하고, 상기 압축된 데이터 집합을 클라이언트에서 압축해제하여 압축해제된 데이터 집합을 생성하고, 상기 압축해제된 데이터 집합을 이용하여 상기 미디어 프레젠테이션을 생성하도록 구성된다.
본 발명의 전술한 세가지 측면에 따른 다양한 실시예에서, 시스템의 출력 필터 모듈은 미디어 스트림에 연관된 타이밍 정보를 획득하고 상기 타이밍 정보를 클라이언트에 전송하도록 또한 구성된다. 또다른 실시예에서, 상기 시스템은 압축된 데이터 집합 및 선택적인 타이밍 정보를 수신하고, 상기 압축된 데이터 집합을 압축해제하여 압축해제된 데이터 집합을 생성하고, 상기 미디어 압축해제된 데이터 집합 및 선택적인 타이밍 정보를 이용하여 상기 미디어 프레젠테이션을 생성하도록 구성된 클라이언트 에이전트를 또한 포함한다. 또다른 실시예에서, 클라이언트 에이전트는 비-미디어 그래픽 정보를 수신하고 상기 압축해제된 데이터 집합 및 상기 비-미디어 그래픽 정보를 이용하여 클라이언트에서 상기 미디어 프레젠테이션을 생성하도록 또한 구성된다.
또다른 측면에서, 상기 발명은 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 또다른 시스템에 관련된다. 상기 시스템은, 네트워크와, 상기 네트워크와 통신하는 서버와, 상기 네트워크와 통신하는 클라이언트를 포함한다. 상기 서버는 어플리케이션 프로그램과 적어도 하나의 출력 필터 모듈을 포함한다. 어플리케이션 프로그램은 어플리케이션 프로그램에 의해 산출된 출력내에서 미디어 스트림을 식별하도록 구성된다. 출력 필터 모듈은 어플리케이션 프로그램에 의한 처리 이전에 미디어 스트림의 적어도 일부를 나타내는 압축된 데이터 집합을 가로채고, 상기 압축된 데이터 집합을 클라이언트에 전송하도록 구성된다. 클라이언트는 클라이언트 에이전트를 포함한다. 클라이언트 에이전트는 상기 클라이언트 에이전트에 의해 지원된느 적어도 하나의 미디어 포맷을 서버에 알리고, 상기 압축된 데이터 집합을 수신하고, 클라이언트에서 상기 압축된 데이터 집합을 압축해제하여 압축해제된 데이터 집합을 생성하고, 상기 압축해제된 데이터 집합을 이용하여 클라이언트에서 미디어 프레젠테이션을 생성하도록 구성된다.
또다른 측면에서, 본 발명은 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단을 구현하는 제조물에 관련된다. 제조물은 미디어 스트림의 원래 압축된 데이터 집합을 가로채기 위한 컴퓨터-판독가능 프로그램 수단과, ICA 또는 RDP와 같은 딘 클라이언트 프로토콜을 이용하여 클라이언트에 미디어 스트림의 원래 압축된 데이터 집합을 전송하기 위한 컴퓨터-판독가능 프로그램 수단을 포함한다.
또다른 측면에서, 본 발명은 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단을 구현하는 또다른 제조물에 관련된다. 제조물은 미디어 스트림의 압축해제된 데이터 집합을 가로채기 위한 컴퓨터-판독가능 프로그램 수단과, 상기 가로챈 압축해제된 데이터 집합을 압축하기 위한 컴퓨터-판독가능 프로그램 수단과, ICA 또는 RDP와 같은 딘 클라이언트 프로토콜을 이용하여 클라이언트에 상기 압축된 데이터 집합을 전송하기 위한 컴퓨터-판독가능 프로그램 수단을 포함한다.
일측면에서, 본 발명은 그래픽 디스플레이를 생성하기 위한 방법, 시스템 및 제조물에 관한 것이다. 이미지의 비-텍스트 요소 또는 비트맵 표현과 연관된 압축된 데이터 포맷은, 이후의 디스플레이를 위해, 상기 비-텍스트 요소 또는 비트맵 표현대신에, 네트워크를 통해 서버로부터 클라이언트에 전송된다.
개략적으로, 도 1은 네트워크(115)를 통해 제2 컴퓨팅 시스템("서버 노드")와 통신하는 제1 컴퓨팅 시스템("클라이언트 노드", 105)을 포함하는 원격 단말 세션용 디스플레이를 생성하기 위한 시스템(100)을 도시한다. 예를 들어, 네트워크(115)는 회사 인트라넷과 같은 LAN이거나, 인터넷 또는 월드와이드웹과 같은 WAN일 수 있다. 클라이언트 노드(105)의 사용자는 표준 전화선, LAN 또는 WAN 링크(예, T1, T3, 56kb, X.25), 브로드밴드 연결(ISDN, 프레임 릴레이, ATM) 및 무선 연결을 포함하는 다양한 연결을 통해 네트워크(115)에 연결될 수 있다. 클라이언트 노드(105)는 네트워크(115)와의 연결을 개설하기 위해 클라이언트 트랜시버(130)를 포함한다. 서버 노드(110)는 네트워크(115)와 통신을 개설하기 위해 서버 트랜시버(135)를 포함한다. 연결은 다양한 통신 프로토콜(예, ICA, RDP, HTTP, TCP/IP,IPX, SPX, NetBIOS, 이더넷, RS232 및 직접 비동기 연결)을 이용하여 개설될 수 있다.
서버 노드(110)는 클라이언트 노드(105)에 요청된 서비스를 제공할 수 있는 임의의 컴퓨팅 장치일 수 있다. 구체적으로, 이는 서버(110)상에서 실행하는 어플리케이션 프로그램(140)에 의해 산출되는 출력물을 나타내는 명령 및 데이터를 생성하고 클라이언트 노드(105)에 전송하는 것을 포함한다. 서버 노드(110)는 서버 트랜시버(135)와, 실행 어플리케이션 프로그램(140)과, 서버 에이전트(150)와, 출력 필터 모듈(155)과 이미지 저장소(160)를 포함한다. 서버 에이전트(150)는 어플리케이션 프로그램(140)의 작동 및 원격 디스플레이를 지원하기 위해 클라이언트 에이전트(175) 및 서버 노드(110)의 다른 요소들과 인터페이스하는 모듈을 포함한다. 서버 에이전트 모듈(150) 및 본 명세서에 걸쳐서 언급되는 모든 모듈은 소프트웨어 프로그램 및/또는 하드웨어 장치(예, ASIC 또는 FPGA)로 구현된다.
간결하게, 전술한 모든 요소들은 서버 노드(110)상에 도시되어 있다. 서버 노드(110)는 단일 서버를 나타내거나 각각이 네트워크(115) 또는 또다른 네트워크(미도시)를 통해 서로 통신하는 여러개의 서버를 나타낼 수 있음은 이해할 것이다. 여러개의 서버 구현물에서, 요소들의 기능은 가용 서버들에 걸쳐서 분산될 수 있다. 예를 들어, 복수개의 서버를 갖는 일 실시예에서, 트랜시버(135), 어플리케이션 프로그램(140), 서버 에이전트(150) 및 출력 필터 모듈(155)은 어플리케이션 서버상에 있으며 이미지 저장소(160)는, 레이드(RAID) 시스템의 디스크와 같은 저장 장치상에 있다.
클라이언트 노드(105)는 서버 노드(110)상에서 실행하는 어플리케이션 프로그램(140)에 사용자 인터페이스를 제공하기 위해 사용되는 임의의 컴퓨팅 장치(예, 개인용 컴퓨터, 셋탑박스, 무선 이동전화기, 휴대용 장치, PDA, 키오스크 등)일 수 있다. 클라이언트 노드(105)는, 클라이언트 트랜시버(130), 디스플레이(145), 클라이언트 에이전트(175) 및 그래픽 라이브러리(180)(이미지-렌더링 라이브러리라고도 지칭됨)를 포함한다. 클라이언트 에이전트(175)는 클라이언트 노드(105)의 사용자(미도시) 및 서버 노드(110)로부터 명령 및 데이터를 수신하는 소프트웨어 프로그램 및/또는 하드웨어 장치(예, ASIC 또는 FPGA)로서 구현되는 모듈을 포함한다. 클라이언트 에이전트(175)는 클라이언트 노드(105)의 다른 요소들과 상호작용할 때(예, 운영체제에게 디스플레이(145)상으로 데이터를 출력하라고 지시할 때), 상기 수신된 정보를 이용한다. 클라이언트 에이전트(175)는 서버에 의해 송출된 명령 또는 클라이언트에서의 사용자 동작에 응답하여 서버 노드(110)에 요청 및 데이터를 전송하기도 한다.
서버 노드(110)는 클라이언트 노드(105)에 의해 액세스될 수 있는 하나 이상의 어플리케이션 프로그램(140)을 호스팅한다. 이러한 어플리케이션의 예에는 마이크로소프트 워드와 같은 워드 프로세싱 프로그램과 마이크로소프트 액셀과 같은 스프레드쉬트 프로그램(두 프로그램 모두 마이크로소프트사가 제조한 것임)이 포함된다. 다른 예로서, 재정보고 프로그램, 고객 등록 프로그램, 기술지원정보를 제공하는 프로그램, 고객 데이터베이스 어플리케이션 및 어플리케이션 셋트 관리자를 들 수 있다. 어플리케이션 프로그램의 또다른 예로서, 마이크로소프트사의 인터넷익스플로러가 있으며, 이 프로그램은 이하의 설명에서 예시적인 어플리케이션 프로그램(140)으로 이용될 것이다. 다른 어플리케이션 프로그램들도 이용될 수 있음을 이해할 것이다.
어플리케이션 프로그램(140, 예를 들어, 인터넷 익스플로러)의 실행중에, 서버 노드(110)는 트랜스포트 메커니즘을 통해 클라이언트 노드(105)와 통신한다. 일실시예에서, 트랜스포트 메커니즘은 네트워크(115)를 통해 복수의 가상 채널(185)을 제공함으로써 서버 에이전트(150)가 클라이언트 에이전트(175)와 통신할 수 있도록 한다. 가상 채널(185)중 하나가 서버 노드(110)로부터 클라이언트 노드(105)에 그래픽 스크린 데이터를 전송하기 위한 프로토콜을 제공한다. 서버(110)는, 서버 에이전트(150)의 일부로서,일실시예에서, 프로토콜 드라이버를 실행시키는데, 이는 어플리케이션 프로그램(140)에 의해 생성되어 서버의 운영체제로 향하는 그래픽 디스플레이 인터페이스 명령들을 가로챈다. 프로토콜 드라이버는 상기 명령들을 트랜스포트 메커니즘을 통해 전송하기 위해 적합한 프로토콜 패킷으로 변환한다.
서버(110)에서 실행하는 어플리케이션 프로그램(예,인터넷 익스플로러)은 웹페이지를 검색한다. 전술한 바와 같이, 어플리케이션 프로그램(140)은, 마치 자신이 서버 노드(110)에 출력을 디스플레이할 것처럼, 서버 운영체제에 그래픽 디스플레이 명령을 생성한다. 서버 에이전트(150)는 이러한 명령들을 가로채서 이들을 클라이언트 에이전트(175)에 전송한다. 클라이언트 에이전트(175)는 클라이언트 운영체제에 동일하거나 유사한 명령들을 송출하여 클라이언트 노드(105)의 디스플레이(145)용 출력을 생성한다.
일실시예에서, 웹페이지의 내부에는 텍스트 요소(예, 타이틀, 텍스트 및 ASCII 문자)와 비-텍스트 요소(예, 이미지, 사진, 아이콘 및 스플래시 스크린)가 모두 통합되어 있다. 때때로, 비-텍스트 요소는 압축된 데이터 포맷(예, 파일 또는 데이터 스트림)(이는 비-텍스트 요소의 원래 형태라고도 지칭되기도 함)으로 웹서버(미도시)로부터 인터넷 익스플로러 어플리케이션 프로그램(140)으로 전송된다. 압축 포맷의 예에는, JPEG, GIF 및 PNG가 있다. 압축된 데이터 포맷으로 표현된 비-텍스트 요소는, 예를 들어, 20 킬로바이트의 크기이다. 비트맵 표현으로 압축해제된 동일한 비-텍스트 요소는, 예를 들어, 300 킬로바이트의 크기이다.
어플리케이션 프로그램(140)은, 웹페이지의 디스플레이를 생성할 때, 예를 들어, 비-텍스트 요소의 JPEG 데이터 포맷을 검색하고 JPEG 데이터 포맷을 디스플레이용 비트맵으로 압축해제한다. 출력필터모듈(155)은 비트맵 표현이 압축된 포맷임을 판단하고, 이하에서 상세히 설명하는 바와 같이, 이미지 저장소(160)로부터 비-텍스트 요소의 대응 압축 포맷을 획득한다. 일실시예에서, 이미지 저장소(160)는 영속 저장소이다. 다른 실시예에서, 이미지 저장소(160)는 일시적 저장소, 캐시, 휘발성 메모리 및/또는 일시 및 영구 저장소의 조합이다.
서버 에이전트(150)는 비-텍스트 요소의 비트맵 표현을 출력 필터 모듈(155)이 이미지 저장소(160)로부터 검색한 압축된 비-텍스트 요소로 교체한다. 서버 에이전트(150)는, 비트맵 표현과 연관된 그래픽 디스플레이 인터페이스 명령들과 함께, 압축된 포맷의 비-텍스트 요소를 클라이언트 노드(105)에 전송한다. 일실시예에서, 서버 에이전트(150)는, 연관된 명령들이 비-텍스트 요소의 비트맵 표현에 적용될 수 있을지라도, 비트맵 표현으로 되어 있지 않은 비-텍스트 요소의 전송을 식별하는 유일의 프로토콜 명령을 이용한다. 다른 실시예에서, 다른 식별 기술들이 이용될 수 있다. 예를 들어, 프로토콜 명령은 변경자 코멘트 또는 명령 스위치를 가질 수 있다. 또한, 명령은 콘텍스트의 변경 또는 복수의 명령들의 조합을 이용할 수 있다.
클라이언트 에이전트(175)는, 비-텍스트 요소의 비트맵 표현과 연관된 그래픽 디스플레이 인터페이스 명령과 함께, 압축된 데이터 포맷의 비-텍스트 요소 파일의 전송을 수신한다. 클라이언트 에이전트(175)는 비-텍스트 요소가 압축된 데이터 포맷으로 되어 있으며 비트맵 표현이 아님을 판단한다. 일실시예에서, 클라이언트 에이전트(175)는 압축된 데이터 포맷의 비-텍스트 요소가 유일의 프로토콜 명령을 이용하여 전송되기 때문에 이러한 판단을 한다. 또다른 실시예에서, 연관된 그래픽 디스플레이 인터페이스 명령들에 포함된 비-텍스트요소 데이터의 크기 및/또는 다른 특성들은 클라이언트 에이전트(175)가 이러한 판단을 할 수 있도록 하기에 충분하다.
클라이언트 에이전트(175)는 클라이언트 노드(105)가 비-텍스트 요소의 압축된 데이터 포맷을 압축해제하기 위해 필요한 라이브러리(180)를 포함하는지 여부를 판단한다. 클라이언트 노드(105)가 압축해제 알고리즘을 수행하기 위해 설치된 적절한 그래픽 라이브러리(180)를 구비하고 있다면, 클라이언트 에이전트(175)는 이 라이브러리(180)를 이용하여 비-텍스트 요소의 압축된 포맷을 그의 비트맵 표현으로 압축해제한다. 클라이언트 에이전트(175)는 클라이언트 디스플레이(145)상에 어플리케이션 프로그램(140)의 출력의 비-텍스트 요소를 생성하기 위해 비트맵 표현에 대한 상기 수신된 연관 그래픽 디스플레이 인터페이스 명령을 수행한다.
일실시예에서, 클라이언트 에이전트(175)는 비-텍스트 요소를 압축된 포맷에서 비트맵 표현으로 압축해제하기 위한 모든 압축해제 알고리즘을 포함하고 있지 않다. 클라이언트 노드(105)가 압축해제 알고리즘을 수행하기 위해 설치된 적절한 그래픽 라이브러리(180)가 없다면, 클라이언트 에이전트(175)는 서버 노드(110)로부터 필요한 그래픽 라이브러리를 요청한다. 또다른 실시예에서, 클라이언트 에이전트(175)는, 서버 노드(110)로부터 임의의 비-텍스트 요소를 수신하기 이전에, 가장 광범위하게 사용되는 그래픽 라이브러리(180)의 선정된 집합이 클라이언트 노드(105)상에 설치되어 있는지를 판단한다. 가장 광범위하게 사용되는 그래픽 라이브러리(180)가 클라이언트 노드(105)상에 설치되어 있지 않다면, 클라이언트 에이전트(175)는 서버 노드(110)로부터 임의의 비-텍스트 요소를 수신하기 이전에 서버 노드(110)에 결여된 라이브러리를 요청한다.
또다른 실시예에서, 클라이언트 에이전트(175)는 클라이언트 노드(105)가 어느 그래픽 라이브러리(180)를 가지고 있는지를 판단하고 이러한 라이브러리 정보를 서버 에이전트(150)에 전송한다. 이 실시예에서, 서버 에이전트(150)가 출력 필터 모듈(155)로부터 비트맵 표현의 압축된 데이터 포맷을 수신하면, 서버 에이전트(150)는 클라이언트 노드(105)가 압축된 데이터 포맷을 렌더링할 수 있는지 여부를 상기 전송된 라이브러리 정보를 이용하여 판단한다. 클라이언트 노드(105)가적용가능한 라이브러리를 가진 것으로 서버 에이전트(150)가 판단하면, 서버 에이전트(150)는 비-텍스트 요소의 비트맵 표현을 압축된 데이터 포맷으로 대체한다. 클라이언트 노드(105)가 적용가능한 라이브러리를 가지고 있지 않은 것으로 서버 에이전트(150)가 판단하면, 서버 에이전트(150)는 비-텍스트 요소의 비트맵 표현을 압축된 데이터 포맷으로 대체하지 않으며, 대신에 비트맵 표현을 클라이언트(105)에 전송한다.
서버 에이전트(150)가 비-텍스트 요소의 비트맵 표현을 압축된 포맷의 비-텍스트 요소로 교체하는 경우에, 출력 필터 모듈(155)은 비트맵 표현이 이미지 저장소(160)에 저장된 압축된 포맷임을 판단한다. 이러한 판단을 하기 위해, 출력 필터 모듈(155)은 비트맵 표현에 대한 하나 이상의 체크 값을 계산한다. 예를 들어, 출력 필터 모듈(155)은 전체 비트맵 표현에 대한 단일 체크값을 계산할 수 있고/있거나, 출력 필터 모듈(155)은 전체 비트맵 표현의 각 사분면에 대해 하나씩, 4개의 체크값을 계산할 수 있다. 또다른 실시예에서, 출력 필터 모듈(155)은 비트맵 표현에서 N개의 라인 각각에 대하여 하나씩, N개의 체크값을 계산할 수 있다. 체크값은 데이터의 상이한 배열에 대한 실질적으로 유일한 값을 생성하는 알고리즘의 결과이다. 예를 들어, 체크값은 체크태그(checktag), 순환 중복 코드(Cyclic Redundancy Code: CRC), 체크섬(checksum), 또는 해싱 함수의 결과이다. 체크값은 비트맵 표현에 근거한 것이며 압축된 데이터 포맷을 배열된 데이터에 대한 것은 아니다. 그러나, 압축된 데이터 포맷이 이미지 저장소(160)에 저장될 때, 압축해제시에 압축된 데이터의 비트맵 표현의 하나 이상의 체크값에 대응하는 체크값 속성과 함께 저장된다.
일실시예에서, 체크값은 고정 식별자 및 유일 식별자를 포함하는 체크태그이다. 고정 식별자 및 유일 식별자는 함께 결합되어 이미지내에 숨겨진다. 고정 식별자는 그자체로 체크태그를 식별하기 위해 이용되고, 유일 식별자는 구체적인 이미지를 식별하기 위해 이용된다. 고정 식별자는, 예를 들어, 이미지내에서 통계학적으로 거의 발견되지 않을 가능성이 높은 전역적으로 유일 식별자이다. 예를 들어, 고정 식별자는 디버깅중에 용이하게 인식될 수 있는 바이트 시퀀스이며 0와 1비트를 균형있게 포함한다. 유일 식별자는 캐시내의 각 이미지에 대하여 유일하게 할당되는 순차적인 식별자이다. 순차적인 유일 식별자는 또다른 값과 XOR 마스킹되어 작은 값(가장 그럴듯한 값)을 갖는 이미지 식별자가 0과 1비트를 균형있게 가질 가능성이 더욱 높아진다.
체크태그는, RGB 요소가 이미지의 일부 또는 색상 팔레트의 일부인지와 무관하게, RGB 색상 요소로 인코딩된다. 좀더 구체적으로, 체크태그는 160 비트의 스트림(즉, 20개의 개별 바이트, 각 바이트는 비트 0, 최하위 비트에서 시작하고, 비트 7, 최상위 비트에서 끝남)으로서 다루어진다. 각 바이트의 최하위 비트는 체크태그의 다음 비트에 의해 오버라이트된다. 각 바이트의 나머지 7개 비트는 변경되지 않는다.
체크태그는 인코딩 절차를 단순히 반대로 함으로써 디코딩된다. 체크태그가 디코딩된 후에, 고정 식별자와 유일 식별자는 체크태그로부터 검색된다. 검색된 고정 식별자는 체크태그 자체로 식별하기 위해 이전에 저장된 고정 식별자에 대하여 검증된다. 일치가 이루어지면, 이미지에 연관된 비트맵 데이터와 같은 식별된 이미지에 관련된 정보를 검색하기 위해 유일 식별자가 사용된다.
출력 필터 모듈(155)은 이미지 저장소(160)에서 출력 필터 모듈(155)이 비트맵 표현에 대해 계산한 하나 이상의 체크값과 동일한 체크값을 갖는 압축된 데이터 포맷의 비-텍스트 요소를 찾는다. 출력 필터 모듈(155)은 하나 이상의 체크값과 동일한 체크값 속성을 갖는 비-텍스트 요소의 압축 포맷을 검색하여 이를 비트맵 표현 대신에 클라이언트 에이전트(175)에 전송하기 위해 서버 에이전트(150)에 보낸다.
서버 노드(110)는 어플리케이션 프로그램(140)이 압축된 포맷 파일로부터 비트맵 표현을 생성하기 위해 그래픽 라이브러리(미도시)를 호출하는 처음 시점에 이미지 저장소에 비-텍스트 요소의 압축된 포맷을 저장한다. 출력 필터 모듈(155)은 어플리케이션 프로그램(140)이 압축된 포맷을 압축해제하고 비트맵 표현을 생성할 때 비트맵 표현의 연관된 체크값을 계산한다. 전술한 바와 같이, 출력 필터 모듈(155)은, 비트맵 표현이 완료될 때, 비트맵 표현의 사분면중 하나가 완료될 때, 또는 비트맵 표현의 한 라인이 완료될 때, 체크값을 계산할 수 있다. 서버(110)는 압축된 포맷 파일과 연관된 체크값 속성을 이미지 저장소(160)에 저장하고, 어플리케이션 프로그램(140)이 연관된 비-텍스트 요소를 생성하는 처음 및 임의의 후속시점에 압축된 데이터 포맷 파일을 검색한다.
서버(110)가 압축된 데이터 파일 및 그에 연관된 체크값 속성을 일시적인 부분(예, RAM 메모리 버퍼 또는 캐시) 또는 영구적인 부분(예, 디스크 또는 비휘발성메모리 버퍼)의 이미지 저장소(160)에 저장하는지는 적어도 부분적으로는 설계 및 하드웨어 제약사항(예, 영구 저장소의 크기)에 근거한다. 이러한 결정을 하는데 하나의 예시적인 기준은 어플리케이션 프로그램(140)이 비-텍스트 요소를 생성하는 횟수이다. 예를 들어, 어플리케이션 프로그램(140)이 선정된 회수 이상으로 특정의 비-텍스트 요소를 생성한다면, 서버(110)는 압축된 포맷 화일과 이미지 저장소(160)에 영구적으로 저장된 상기 특정의 비-텍스트 요소에 대응하는 그에 연관된 체크값 속성을 저장한다.
다른 실시예에서, 서버(110)는 빅-텍스트 요소가 정적이거나(static) 복합적인(complex) 경우에 그것을 저장한다. 예를 들어, 어플리케이션 프로그램(140)이 초기에 스플래시(splash) 스크린을 항상 생성한다면, 서버(110)는 이미지 저장소(160)의 영구적인 부분에 해당 스플래시 스크린에 대응하는 압축된 포맷 파일을 저장한다. 다른 실시예에서, 비-텍스트 요소가 복합적이거나, 정적이고/이거나 반복적으로 생성되지만 대응하는 압축 포맷 파일을 가지고 있지 않은 경우에, 출력 필터 모듈(155)은 이러한 비-텍스트 요소에 대한 압축 포맷 파일을, 표준-기반 또는 독점-기반(proprietary-based) 포맷으로 생성한다. 임의의 후속 전송에서, 서버 에이전트(150)는 비트맵 표현 대신에 상기 생성된 압축 포맷 파일을 전송한다. 압축 포맷이 독점-기반 포맷인 경우, 서버 에이전트(150)는 클라이언트 노드(105)가 압축 포맷 파일을 비트맵 표현으로 압축해제하기 위해 적용가능한 독점-기반 그래픽 라이브러리를 포함하는지 여부를 판단한다. 클라이언트 노드(105)에 포함되어 있지 않다면, 서버 에이전트(105)는 클라이언트 노드(105)에 적용가능한 라이브러리를 설치하도록 전송한다.
전술한 실시예는 서버 노드상에 이미지 저장소(160)를 도시하였으나, 대안적 실시예에서, 이미지 저장소의 적어도 일부분(미도시)이 클라이언트 노드(105)상에 있을 수 있다. 이러한 대안적 실시예에서, 출력 필터 모듈(155)은 비트맵 표현에 대한 하나 이사의 체크값을 계산하고 상기 하나 이상의 체크값을 서버 에이전트(150)에 전송한다. 서버 에이전트(150)는 이러한 하나 이상의 체크값을 클라이언트 에이전트(175)에 전송한다. 클라이언트 에이전트(175)는 클라이언트 노드(105)상의 이미지 저장소 부분에서 동일한 하나 이상의 체크값 속성으로 저장된 압축된 데이터 포맷을 검색한다. 클라이언트 에이전트(175)는 서버 에이전트(150)에 상기 검색 결과를 전송한다.
비-텍스트 요소에 대한 압축된 데이터 포맷이 클라이언트 노드(105)상에 존재한다면, 서버 에이전트(150)는 네트워크(115)를 통해 압축된 데이터 포맷 또는 비트맵 표현을 전송할 필요 없다. 서버 에이전트(150)는 비-텍스트 요소의 비트맵 표현에 연관된 그래픽 디스플레이 인터페이스 명령만을 전송한다. 비-텍스트 요소에 대한 압축된 데이터 포맷이 클라이언트 노드(105)상에 존재하지 않는다면, 출력 필터 모듈(155)은 이미지 저장소(160)로부터 비-텍스트 요소의 대응 압축 포맷을 획득한다. 서버 에이전트(150)는 비-텍스트 요소의 비트맵 표현을 출력 필터 모듈(155)이 이미지 저장소(160)로부터 검색한 압축된 데이터 포맷의 비-텍스트요소로 교체한다. 서버 에이전트(150)는 압축 포맷으로 된 비-텍스트 요소를, 비트맵 표현에 연관된 그래픽 디스플레이 인터페이스 명령과 함께, 클라이언트 노드(105)에 전송한다.
도 2는 도 1의 예시적인 실시예를 이용하여 원격 단말 세션용 디스플레이를 생성하기 위한 프로세스(200)의 예시적인 실시예를 도시한다. 출력 필터 모듈(155)은 서버 노드(110)의 운영체제에 이루어진 호출을 모니터링함으로써 어플리케이션 프로그램(140)의 출력을 모니터링한다. 출력 필터 모듈(155)이 어플리케이션 프로그램(140)으로부터의 디스플레이 명령을 검출하면(단계 205), 출력 모듈(155)은 어플리케이션 프로그램(140)이 비-텍스트 요소의 비트맵 표현을 생성하는지 여부를 판단한다(단계 210).
어플리케이션 프로그램(140)이 비-텍스트 요소의 비트맵 표현을 생성하고 있지 않다면, 출력 필터 모듈(155)은 서버 에이전트(150)에 디스플레이 명령을 전송하고(단계 215), 서버 에이전트(150)는 상기 명령 또는 프로토콜에 정의된 대표적인 명령을 클라이언트 에이전트(175)에 전송한다. 어플리케이션 프로그램(140)이 비-텍스트 요소의 비트맵 표현을 생성하고 있다면, 출력 필터 모듈(155)은 비-텍스트 이미지의 비트맵 표현에 대응하는 하나 이상의 체크값을 계산한다(단계 220).
출력 필터 모듈(1555)은, 하나 이상의 계산된 체크값을 이용하여, 이미지 저장소(160)를 검색하여 동일한 체크값 속성을 갖는 압축된 데이터 포맷이 존재하는지를 판단한다(단계 225). 출력 필터 모듈(155)이 계산한 하나 이상의 체크값에 동일한 체크값 속성을 갖는 압축된 데이터 포맷이 이미지 저장소에 있다면, 출력 모듈(155)은 비-텍스트 요소의 비트맵 표현을 압축된 데이터 포맷으로 교체한다(단계 230). 출력 모듈(155)은 서버 에이전트(150)에 압축된 데이터 포맷을 전송하여(단계 230), 궁극적으로는 클라이언트 에이전트(175)에 전송되도록 한다. 또한, 출력 모듈(155)은 압축된 데이터 포맷과 함께 상기 교체된 비트맵 표현에 연관된 모든 명령들을 전송한다.
이미지 저장소(160)에 동일한 하나 이상의 체크값 속성을 갖는 압축된 데이터 포맷이 없다면, 출력 모듈(155)은 압축된 데이터 포맷에 대응하는 비-텍스트 요소의 비트맵 표현이 영구 저장을 위한 선정된 기준(예, 전술한 임의의 기준)을 충족시키는 지 여부를 판단한다(단계 235). 상기 선정된 기준을 충족시키는 것으로 출력 모듈(155)이 판단하면, 출력 모듈(155)은 압축된 데이터 포맷과, 하나 이상의 계산된 체크값과 동일한 대응 체크값 속성을 이미지 저장소(160)의 영구적인 부분에 저장한다. 선정된 기준을 충족시키지 못하는 것으로 출력 모듈(155)이 판단하면(단계 235), 출력 모듈(155)은 압축된 데이터 포맷과, 하나 이상의 계산된 체크값과 동일한 대응 체크값 속성을 이미지 저장소(160)의 일시적인 부분에 저장한다(단계 245).
출력 모듈(155)이 압축된 데이터 포맷과 하나 이상의 계산된 체크값과 동일한 대응 체크값 속성을 이미지 저장소(160)에 일단 저장하면(단계 240 및 245), 출력 모듈(155)은 비-텍스트의 비트맵 표현을 압축된 데이터 포맷으로 교체한다(단계 230). 출력 모듈(155)은 궁극적으로는 클라이언트 에이전트(175)에 전송하기 위해 서버 에이전트(150)에 압축된 데이터 포맷을 전송한다(단계 230). 출력 모듈(155)은 자신이 어플리케이션 프로그램(140)으로부터 또다른 디스플레이 명령을 검출할 때까지(단계 205), 어플리케이션 프로그램(140)에 의해 생성된 출력을 계속적으로모니터링한다.
또다른 측면에서, 본 발명은 미디어 프레젠테이션을 생성하기 위한 방법, 시스템 및 제조물에 관한 것이다. 일실시예에서, 미디어 스트림의 적어도 일부를 나타내는 압축된 데이터 집합은 제1 컴퓨팅 장치에 의해 가로채이고, 네트워크를 통해 제2 컴퓨팅 장치로 전송되며, 제2 컴퓨팅 장치에서 이것이 압축해제되어 사용자에게 제공된다. 또다른 실시예에서, 미디어 스트림의 적어도 일부를 나타내는 압축해제된 데이터 집합이 제1 컴퓨팅 장치상에서 가로채이고 압축된 후에, 전술한 바와 같이, 제2 컴퓨팅 장치로 전송되고,제2 컴퓨팅 장치에서 다시 압축해제되고 사용자에게 제공된다.
도 3은 본 발명의 전술한 측면에 따라 미디어 프레젠테이션을 생성하는 시스템(300)의 일실시예를 도시한다. 시스템(300)은 네트워크(315)를 통해 제2 컴퓨팅 장치(예, 클라이언트(305))와 통신하는 제1 컴퓨팅 장치(예, 서버(310))를 포함한다. 일반적으로, 이하에 기재된 것만 빼고, 클라이언트(305), 서버(310) 및 네트워크(315)는 전술한 바와 같은 클라이언트(105), 서버(110) 및 네트워크(115) 각각과 동일한 능력을 갖는다.
도시된 바와 같이, 클라이언트(305)는, 적어도, 클라이언트 트랜시버(330), 클라이언트 에이전트(375) 및 프레젠테이션 인터페이스(345)를 포함한다. 클라이언트 에이전트(375)는 소프트웨어 프로그램 및/또는 하드웨어 디바이스(예, ASIC 또는 FPGA)로 구현될 수 있다. 클라이언트 에이전트(375)는 네트워크(315)를 통해 통신하기 위해 클라이언트 트랜시버(330)를 이용하고 프레젠테이션 인터페이스(345)에서 미디어 및 비-미디어 요소를 포함한 프레젠테이션을 생성한다.
일실시예에서, 서버(310)는 어플리케이션 서버이다. 도시된 바와 같이, 서버(310)는, 서버 트랜시버(335), 어플리케이션 프로그램(340), 서버 에이전트(350), 제1 출력 필터 모듈(355a) 및 제2 출력 필터 모듈(355b)를 적어도 포함한다. 서버 에이전트(350), 제1 출력 필터 모듈(355a) 및 제2 출력 필터 모듈(355b)은 소프트웨어 프로그램 및/또는 하드웨어 디바이스(예, ASIC 또는 FPGA)로 구현될 수 있다. 서버 에이전트(350), 제1 출력 필터 모듈(355a) 및 제2 출력 필터 모듈(355b)은 네트워크(315)를 통해 통신하기 위해 서버 트랜시버(330)를 이용한다.
또다른 실시예에서, 전술한 요소(335, 340, 350, 355a 및 355b)는 네트워크(315) 또는 또다른 네트워크(미도시)를 통해 서로 통신하는 여러개의 서버들에 분산되어 있다. 대안적으로, 또다른 실시예에서, 이하에 설명되는 바와 같이, 전술한 요소(335, 340, 350, 355a 및 355b)중 2개 이상의 요소에 의해 수행되는 기능들이 단일 요소에 의해 수행되도록 전술한 요소(335, 340, 350, 355a 및 355b)중 2개 이상의 요소가 단일 요소로 결합될 수 있다.
도 3에 도시된 어플리케이션 프로그램(340)은 그 출력의 일부로서 미디어 스트림을 렌더링하는 어플리케이션 프로그램이다. 미디어 스트림은, 비디오 스트림, 오디오 스트림, 또는 대안적으로 이들의 조합일 수 있다. 또한, 어플리케이션 프로그램(340)은 비-미디어 그래픽 정보를 출력할 수 있다. 여기서, 비-미디어 그래픽 정보는 코덱(codec)이나 이에 상응하는 것을 사용하지 않고 어플리케이션 프로그램(340)에 의해 출력되는 모든 그래픽 정보를 통상적으로 지칭하는 것으로서, 예를들어, 툴바 및 하강 메뉴 등을 포함하는 정적 그래픽 정보를 들 수 있다. 비-미디어 그래픽 정보는, 예를 들어, 디스플레이 스크린상에서 정적 그래픽 정보를 찾기 위한 정보를 또한 포함한다. 어플리케이션 프로그램(340)은, 예를 들어, 마이크로소프트사에 의해 제조된 마이크로소프트 인카르타(MICROSOFT ENCARTA) 어플리케이션 프로그램일 수 있다.
일 실시예에서, 어플리케이션 프로그램(340)은, 예를 들어, 서버(310)의 운영체제에 설치된 코덱과 같은 외부 코덱을 이용하여, 미디어 스트림의 적어도 일부를 나타내는 압축된 데이터 집합을 압축해제한다. 또다른 실시예에서, 어플리케이션 프로그램(340)에 의해 사용되는 코덱은 어플리케이션 프로그램(340) 그 자체에 임베딩된다. 또다른 실시예에서, 서버(310)는 임의의 개수의 실행 어플리케이션 프로그램(340)들을 포함할 수 있으며, 이들중 일부는 외부 코덱을 사용하고, 나머지는 임베딩된 코덱을 사용한다.
어플리케이션 프로그램(340)이 외부 코덱을 사용하여 미디어 스트림을 출력하기를 원하는 경우에, 어플리케이션 프로그램(340)은 서버(310)의 운영체제가 외부 코덱을 이용하여 미디어 스트림의 적어도 일부를 나타내는 압축된 데이터 집합을 이후의 디스플레이를 위해 압축해제할 것을 요청한다. 어플리케이션 프로그램(340)에 의해 사용되는 코덱이 어플리케이션 프로그램(340) 자체에 임베딩되는 경우에, 어플리케이션 프로그램(340)은, 미디어 스트림을 출력하고자 할 때, 임베딩된 코덱을 이용하여 압축된 데이터 집합 자체를 이후의 디스플레이를 위해 압축해제한다. 부가적으로, 어플리케이션 프로그램(340)은 비-미디어 그래픽 정보와 연관된 그래픽 디스플레이 명령들을 생성하고 이를 서버(310)의 운영체제에 전송할 수 있다.
본 발명에 따르면, 어플리케이션 프로그램(340)은 어플리케이션 프로그램(340)이 서버(310)에서 미디어 및 비-미디어 요소를 갖는 프레젠테이션을 생성하려고 한 것처럼 전술한 타스크들을 수행한다. 이하에 설명하는 바와 같이, 제1 출력 필터 모듈(355 a), 제2 출력 필터 모듈(355b) 및 서버 에이전트(350)는 외부 코덱으로 전달되는 압축된 데이터 집합과, 임베딩된 코덱에 의해 생성된 압축해제된 데이터 집합과, 비-미디어 그래픽 정보에 연관된 그래픽 디스플레이 명령 각각을 가로채고, (임베딩된 코덱에 의해 생성된 압축해제된 데이터 집합을 먼저 압축한 후에) 이들을 네트워크를 통해 클라이언트 에이전트(375)에 전송한다. 이하에서 설명하는 바와 같이, 클라이언트 에이전트(375)는 상기 수신된 압축된 데이터 집합을 압축해제하고, 비-미디어 그래픽 정보에 연관된 동일하거나 유사한 그래픽 디스플레이 명령을 클라이언트(305)의 운영체제에 송출하여, 클라이언트(305)의 프레젠테이션 인터페이스(345)에 미디어 및 비-미디어 요소를 구비한 프레젠테이션을 생성한다.
외부 코덱을 이용하는 어플리케이션 프로그램(340)이 미디어 스트림을 출력하기 위해 외부 코덱을 호출하려고 시도할 때, 제1 출력 필터 모듈(355a) 및 제2 출력 필터 모듈(355b)이 호출된다. 제1 출력 필터 모듈(355a)은 미디어 스트림의 적어도 일부를 나타내는 원래의 압축된 데이터 집합을 가로챈다. 외부 코덱이 하는 바와 같이, 이러한 데이터 집합을 압축해제하는 대신에, 제1 출력 필터 모듈(355a)은 클라이언트 에이전트(375)에 네트워크(315)를 통해 원래의 압축된 데이터 집합을 전송한다. 미디어 스트림이 비디오 스트림을 포함하는 경우에, OS 수준의 렌더러(renderer)로서 기능하는 제2 출력 필터 모듈(355b)은 디스플레이 스크린상에서 비디오 스트림의 이미지를 찾기 위한 정보를 획득하고 클라이언트 에이전트(375)에 네트워크(315)를 통해 정보를 전송한다.
또다른 실시예에서, 임베딩된 코덱을 이용하는 어플리케이션 프로그램(340)이 미디어 스트림을 출력하기 위해, 예를 들어, OS-레벨 렌더러를 호출하고자 할때, 제2 출력 모듈(355b)이 호출된다. 제2 출력 필터 모듈(355b)은 어플리케이션 프로그램(340)의 출력으로부터 미디어 스트림의 적어도 일부를 나타내는 제1의 압축해제된 데이터 집합을 가로챈다. 제2 출력 필터 모듈(355b)은, 이하에 설명하는 바와 같이, 상기 가로챈 제1의 압축해제된 데이터 집합을 압축하고 결과의 압축된 데이터 집합을 네트워크(315)를 통해 클라이언트 에이전트(375)에 전송한다. 제2 출력 필터 모듈(355b)은, 전술한 것과 마찬가지로, 미디어 스트림이 비디오 스트림을 포함하는 경우에, 디스플레이 스크린상에서 비디오 스트림의 이미지를 찾기 위한 정보를 또한 획득하여 네트워크(315)를 통해 클라이언트 에이전트(375)에 정보를 전송한다.
또다른 실시예에서, 서버 에이전트(350)는 어플리케이션 프로그램(340)에 의해 출력되는 비-미디어 그래픽 정보에 연관된 그래픽 디스플레이 명령을 가로채서 네트워크(315)를 통해 클라이언트 에이전트(375)에 전송한다.
부가적으로, 일실시예에서, 제1 출력 필터 모듈(355a), 제2 출력 필터 모듈(355b), 또는 (어플리케이션 프로그램(340)이 외부 코드를 이용하는 경우에) 이들 모두, 또는 (어플리케이션 프로그램(340)이 임베딩된 코덱을 이용하는 경우에) 제2 출력 필터 모듈(355b)은 미디어 스트림에 연관된 타이밍 정보를 획득하고 타이밍 정보를 네트워크(315)를 통해 클라이언트 에이전트(375)에 전송한다. 좀더 구체적으로, 출력 필터 모듈(355a, 355b)은 미디어 스트림의 각 프레임에 대한 프레젠테이션 시간을 획득하여 클라이언트 에이전트(375)에 전송하고, 이에 의해 클라이언트 에이전트(375)가 비디오 및 오디오 스트림을 동기화할 수 있도록 하고 올바른 프레임 속도를 유지할 수 있도록 해준다.
도시된 바와 같이, 서버 에이전트(350)는 서버 트랜시버(335) 및 어플리케이션 프로그램(340)과 인터페이스한다. 일실시예에서, 이하에 설명하는 바와 같이, 서버 에이전트(350)는 클라이언트 에이전트(375)로부터 네트워크(315)를 통해 클라이언트 에이전트(375)에 의해 지원되는 미디어 포맷 리스트를 수신한다. 지원되는 미디어 포맷 리스트를 수신한 후에, 서버 에이전트(350)는 서버(310)의 구성을 조작함으로써 출력 필터 모듈(355a, 355b)을 등록한다. 일실시예에서, 예를 들어, 서버 에이전트(350)는 서버(310)의 레지스트리를 편집함으로써 출력 필터 모듈(355a, 355b)을 등록한다. 서버 에이전트(350)는 서버(310)가 이러한 미디어 포맷 모두를 처리할 수 있음을 클라이언트 에이전트(375)에 알린다.
클라이언트(305)에서, 클라이언트 에이전트(375)는 클라이언트 트랜시버(330) 및 프레젠테이션 인터페이스(345)와 인터페이스한다. 이하에 설명되는 바와 같이, 클라이언트 에이전트(375)는 클라이언트 에이전트(375)에 의해 지원되는 미디어 포맷을 서버 에이전트(350)에 우선 알려준다. 클라이언트 에이전트(375)는 네트워크(315)를 통해 출력 필터 모듈(355a, 355b)로부터 압축된 데이터 집합 및 임의의 연관된 타이밍 정보를 또한 수신한다. 또한, 클라이언트 에이전트(375)는 네트워크(315)를 통해 제2 출력 필터 모듈(355b)로부터 디스플레이 스크린상의 비디오 스트림의 이미지를 찾기 위한 임의의 정보를 수신하고, 서버 에이전트(350)로부터 비-미디어 그래픽 정보에 연관된 그래픽 디스플레이 명령을 수신한다.
클라이언트 에이전트(375)는, 외부 또는 임베딩된 코덱을 이용하여 압축된 데이터 집합을 압축해제하고, 비-미디어 그래픽 정보에 연관된 그래픽 디스플레이 명령, 디스플레이 스크린상에서 비디오 스트림의 이미지를 찾기 위한 임의의 정보 및 임의의 타이밍 정보를 함께 이용하여 프레젠테이션 인터페이스(345)에서의 미디어 프레젠테이션을 생성한다. 프레젠테이션 인터페이스(345)는, 일실시예에서, 예를 들어, 비디오 프레젠테이션과 같은 그래픽 디스플레이를 렌더링하는 디스플레이 스크린을 구비한다. 또다른 실시예에서, 프레젠테이션 인터페이스(345)는 오디오 프레젠테이션을 렌더링하는 스피커를 포함한다. 클라이언트(305)는 임의의 개수의 프레젠테이션 인터페이스(345)를 포함할 수 있다.
클라이언트 에이전트(375)에 의해 지원되는 미디어 포맷을 지정하는데 제공되는 정보는 서버(310)에서의 동작 모드를 판단할 수 있다. 압축된 데이터 집합이 클라이언트 에이전트(375)에 의해 지원되지 않는 포맷으로 되어 있다면, 제2 출력 필터 모듈(355b)은 압축해제된 데이터 집합을 지원되는 포맷으로 재압축할 수 있다.
도 4a, 4b 및 4c를 참조하면, 도 3의 예시적인 실시예를 이용하여 클라이언트(305)에서 미디어 프레젠테이션을 생성하는 방법(400)의 일실시예가 설명된다. 클라이언트(305)와 서버(310) 모두가 네트워크(315)에 연결되어 있는 경우에, 클라이언트 에이전트(375)는 단계(404)에서 서버 에이전트(350)에 클라이언트 에이전트(375)에 의해 지원되는 모든 미디어 포맷을 알려준다. 일실시예에서, 지원되는 미디어 포맷의 리스트는 클라이언트(305)에 설치된 외부 코덱을 열거함으로써 생성된다. 예를 들어, 클라이언트(305)의 운영체제에 설치된 코덱들이 클라이언트 에이전트(375)에 의해 네트워크(315)를 통해 서버 에이전트(350)로 열거된다. 또다른 실시예에서, 지원되는 미디어 포맷의 리스트는 클라이언트 에이전트(375)에 임베딩된 코덱을 열거함으로써 생성된다. 예를 들어, 클라이언트 에이전트(375)가 소프트웨어 프로그램으로서 구현되는 경우에, 소프트웨어 프로그램에 의해 구현된 코덱은 클라이언트 에이전트(375)에 의해 네트워크(315)를 통해 서버 에이전트(350)로 열거된다. 대안적으로, 클라이언트 에이전트(375)는 지원되는 미디어 포맷의 리스트를 생성하고, 클라이언트(305)상에 설치된 외부 코덱 및 클라이언트 에이전트에 임베딩된 코덱 모두를 열거함으로써,지원되는 미디어 포맷들을 서버 에이전트(350)에 알려준다.
일실시예에서, 클라이언트 에이전트(375)는 전체적으로 유일한 식별자(GUID)를 생성하고 각 GUID를 특정 코덱과 연관시킨다. 다음에, 클라이언트 에이전트(375)는 서버 에이전트(350)에 상기 생성된 GUID 리스트를 전송하여 서버 에이전트(350)에 클라이언트 에이전트(375)에 의해 지원되는 미디어 포맷을 알린다. 또다른 실시예에서, 클라이언트 에이전트(375)는 4개의 4-문자 코드 리스트( 4-문자 코드 각각이 특정 코덱과 연관됨)를 서버 에이전트(350)에 전송하여 서버 에이전트(350)에게 클라이언트 에이전트(375)에 의해 지원되는 미디어 포맷을 알린다.
서버 에이전트(350)는 클라이언트 에이전트(375)로부터 지원되는 미디어 포맷 리스트를 수신한 후에, 단계(408)에서, 상기 지원되는 미디어 포맷에 연관되게 제1 출력 필터 모듈(355a) 및/또는 제2 출력 필터 모듈(355b)을 등록한다. 단계(412)에서, 서버 에이전트(350)는 서버(310)가 상기 열거된 미디어 포맷 모두를 처리할 수 있음을 클라이언트 에이전트(375)에 다시 보고한다.
단계(416)에서, 어플리케이션 프로그램(340)은 서버(310)상에서 실행을 시작한다. 단계(420)에서, 어플리케이션 프로그램(340)이 그의 출력 내에 미디어 콘텐트(예, 미디어 스트림)가 존재함을 확인할 때에, 제1 출력 필터 모듈(355a) 및 제2 출력 필터 모듈(355b) 모두 호출된다. 단계(424)에서, 어플리케이션 프로그램(340)이 외부 코덱을 이용한다면, 어플리케이션 프로그램(340)이 외부 코덱을 호출하고자 시도할때에 단계(428)에서 제1 출력 필터 모듈(355a) 및 제2 출력 필터 모듈(355b) 모두가 호출된다. 단계(432)에서, 제1 출력 필터 모듈(355a)은 미디어 스트림의 적어도 일부를 나타내는 원래의 압축된 데이터 집합을 가로채고, 단계(436)에서, 상기 데이터 집합을 압축해제하지 않고 원래의 압축된 데이터 집합을 클라이언트 에이전트(375)에 전송한다. 단계(440)에서, 클라이언트 에이전트(375)는 원래의 압축된 데이터 집합을 수신하고 단계(444)에서 원래의 압축된 데이터 집합을 압축해제하여 압축해제된 데이터 집합을 생성한다. 클라이언트 에이전트(375)는 클라이언트(305)상에 설치된 외부 코덱 또는 클라이언트 에이전트(375) 자체에 임베딩된 코덱을 이용하여 원래의 압축된 데이터 집합을 압축해제한다.
단계(424)에서, 어플리케이션 프로그램(340)이 어플리케이션 프로그램 자체에 임베딩된 코덱을 이용한다면, 단계(448)에서, 어플리케이션 프로그램(340)이 압축해제된 데이터 집합을 디스플레이하기 위해 OS_레벨의 렌더러를 호출하려고 할 때에 제2 출력 필터 모듈(355b)가 호출된다. 단계(452)에서, 제2 출력 필터 모듈(355b)은 어플리케이션 프로그램(340)의 출력으로부터 미디어 스트림의 적어도 일부를 나타내는 제1의 압축해제된 데이터 집합을 가로챈 다음에, 단계(456)에서, 상기 가로챈 제1의 압축해제된 데이터 집합을 압축한다. 단계(456)에서 미디어 스트림을 압축하기 위해 제2 출력 필터 모듈(355b)에 의해 손실 압축 기술 및 무손실 압축 기술을 모두 포함하는 다양한 압축 기술들이 사용될 수 있다.
미디어 스트림이 비디오 스트림인 경우에, 가로채인 제1의 압축해제된 데이터 집합은, 단계(456)에서, 예를 들어, 미미한 손실의 비디오 인코딩 알고리즘(예, MJPEG 압축)을 이용하여 제2 출력 필터 모듈(355b)에 의해 압축될 수 있다. 미미한 손실의 비디오 인코딩 알고리즘을 이용하는데 있어서, 제2 출력 필터 모듈(355b)은 소정의 압축율을 선택하거나 선정된 압축율을 이용할 수 있다. 통상적으로, 제2 출력 필터 모듈(355b)에 의해 선택된 품질 손실의 정도는 네트워크 연결의 가용 대역폭에 달려있다. 예를 들어, 클라이언트(305)의 사용자가 느린 모뎀을 이용하여 네트워크(315)에 접속하는 경우에, 제2 출력 필터 모듈(355b)은 낮은 품질의 비디오를 이용하기를 선택할 수 있다. 반면에 클라이언트(305)의 사용자가 네트워크(315)에 접속하기 위해 LAN 링크 또는 브로드밴드 연결을 이용하는 경우에, 제2 출력 필터 모듈(355b)은 좀더 높은 품질의 비디오를 이용하기를 선택할 수 있다.
단계(456)에서 가로채인 제1의 압축해제된 데이터 집합을 압축한 다음에, 단계(460)에서 제2 출력 필터 모듈(355b)은 제1의 압축해제된 데이터 집합 대신에 상기 압축된 데이터 집합을 클라이언트 에이전트(375)에 전송한다. 단계(464)에서, 클라이언트 에이전트(375)는 압축된 데이터 집합을 수신하고, 단계(468)에서, 상기 압축된 데이터 집합을 압축해제하여 제2의 압축해제된 데이터 집합을 생성한다. 다시, 클라이언트 에이전트(375)는 클라이언트(305)상에 설치된 외부 코덱 또는 클라이언트 에이전트(375) 자체에 임베딩된 코덱을 이용하여 상기 압축된 데이터 집합을 압축해제한다.
어플리케이션 프로그램(340)이 외부 또는 임베딩된 코덱중 어느것을 이용하는지와 상관없이, 단계(470)에서, 미디어 스트림이 비디오 스트림을 포함하는 경우에, 제2 출력 필터 모듈(355b)은 단계(472)에서 디스플레이상의 비디오 스트림 이미지를 찾기 위한 정보를 획득하여 이 정보는 네트워크(315)를 통해 클라이언트 에이전트(375)에 전송한다. 단계(474)에서, 클라이언트 에이전트(375)는 디스플레이 스크린상의 비디오 스트림 이미지를 찾기 위한 정보를 수신한다.
다시, 어플리케이션 프로그램(340)이 외부 또는 임베딩된 코덱중 어느것을 이용하는지와 상관없이, 또한, 미디어 스트림이 단계(470)에서 비디오 스트림을 포함하는지에 상관없이, 서버 에이전트(350)는 단계(476)에서 어플리케이션 프로그램(340)에 의해 출력된 비-미디어 그래픽 정보에 연관된 그래픽 디스플레이 명령을 네트워크(315)를 통해 클라이언트 에이전트(375)에 전송한다. 단계(480)에서, 클라이언트 에이전트(375)는 비-미디어 그래픽 정보에 연관된 그래픽 디스플레이 명령을 수신한다.
단계(484)에서, 출력 필터 모듈(355a, 355b)이 미디어 스트림에 연관된 타이밍 정보를 획득한 경우에, 출력 필터 모듈(355a, 355b)은, 단계(488)에서, 타이밍 정보를 클라이언트 에이전트(375)에 전송한다. 클라이언트 에이전트(375)는 단계(492)에서 타이밍 정보를 수신하고, 단계(496)에서 프레젠테이션 인터페이스(345)에 미디어 프레젠테이션을 생성한다. 프레젠테이션 인터페이스(345)에서 미디어 프레젠테이션을 생성하기 위해, 클라이언트 에이전트(375)는 타이밍 정보와, 비-미디어 그래픽 정보에 연관된 그래픽 디스플레이 명령과, 미디어 스트림이 비디오 스트림을 포함하는 경우에, 디스플레이 스크린상에서 비디오 스트림의 이미지를 찾기 위한 정보를 이용하여, 압축해제된 데이터 집합(또는, 좀더 구체적으로, 어플리케이션 프로그램(340)이 임베딩된 코덱을 사용하는 경우에, 제2의 압축해제된 데이터 집합)과 비-미디어 그래픽 정보를 흔적없이(seamlessly) 결합시킨다.
출력 필터 모듈(355a,355b)이 미디어 스트림에 연관된 타이밍 정보를 획득하지 못한 경우에, 클라이언트 에이전트(375)는, 단계(496)에서, 압축해제된 데이터 집합(또는 좀더 구체적으로, 어플리케이션 프로그램(340)이 임베딩된 코덱을 사용하는 경우에, 제2의 압축해제된 데이터 집합), 비-미디어 그래픽 정보에 연관된 그래픽 디스플레이 명령, 그리고, (미디어 스트림이 비디오 스트림을 포함하는 경우에) 디스플레이 스크린상에서 비디오 스트림의 이미지를 찾기 위한 정보만을 이용하여 프레젠테이션 인터페이스(345)에 미디어 프레젠테이션을 생성한다.
본 발명은 하나 이상의 제조물상에 구현된 하나 이상의 컴퓨터 판독가능 프로그램들로서 제공될 수 있다. 제조물은, 플로피 디스크, 하드 디스크, CD ROM, 플래시 메모리 카드, PROM, RAM, ROM 또는 자기 테이프를 들 수 있다. 일반적으로, 컴퓨터 판독가능 프로그램들은 임의의 프로그래밍 언어로 작성될 수 있다. 사용될 수 있는 언어의 일부 예로서, C, C++, 또는 자바(JAVA)를 들 수 있다. 소프트웨어 프로그램은 목적 코드로서 하나 이상의 제조물상에 저장될 수 있다.
균등물
본 발명은 본 발명의 정신 및 필수 특징들로부터 벗어나지 않고서도 다른 구체적인 형태로 구현될 수 있다. 구체적으로, 단일 서버로 도 1 및 2의 발명 및 도 3,4a, 4b 및 4c의 발명 모두를 구현할 수 있음을 이해할 것이다. 전술한 실시예들은 따라서 명세서에 기재된 본발명을 제한하기 보다는 예시적인 것으로 모든 측면에서 고려되어야 할 것이다. 본 발명의 범위는 전술한 설명보다는 이하의 청구항들에 의해 나타내어질 것이며, 청구항의 의의 및 균등한 범위내에서 나올 수 있는 모든 변경들은 발명의 범위내에 포함되는 것으로 해석된다.

Claims (133)

  1. 클라이언트에서 그래픽 디스플레이를 생성하기 위한 방법에 있어서,
    서버상에서 실행하는 어플리케이션 프로그램으로부터의 출력을 상기 클라이언트에 전송하는 단계와,
    상기 어플리케이션 출력내에서 비-텍스트(non-textual) 요소를 식별해내는 단계와,
    상기 비-텍스트 요소에 연관된 압축된 데이터 포맷(compressed data format)을 검색하는 단계와,
    상기 비-텍스트 요소 대신에 상기 압축된 데이터 포맷을 상기 클라이언트에 전송하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 클라이언트에서 상기 압축된 데이터 포맷을 수신하는 단계와,
    상기 압축된 데이터 포맷을 이용하여 상기 클라이언트에 디스플레이를 생성하는 단계
    를 포함하는 방법.
  3. 제1항에 있어서,
    상기 어플리케이션 출력 내에서 텍스트 요소를 식별해내는 단계와,
    상기 텍스트 요소를 상기 클라이언트에 전송하는 단계
    를 포함하는 방법.
  4. 제3항에 있어서,
    상기 클라이언트에서 상기 압축된 데이터 포맷과 상기 텍스트 요소를 수신하는 단계와,
    상기 압축된 데이터 포맷과 상기 텍스트 요소를 이용하여 상기 클라이언트에서 디스플레이를 생성하는 단계
    를 포함하는 방법.
  5. 제1항에 있어서, 상기 압축된 데이터 포맷은 적어도 하나의 프레젠테이션 계층 프로토콜 패킷을 이용하여 전송되는 방법.
  6. 제5항에 있어서, 상기 적어도 하나의 프레젠테이션 계층 프로토콜 패킷은 파일을 그의 원래 포맷으로 전송하기 위한 명령어를 이용하여 전송되는 방법.
  7. 제5항에 있어서, 상기 적어도 하나의 프레젠테이션 계층 프로토콜 패킷은 원격 액세스 프로토콜을 따르는(conform) 방법.
  8. 제1항에 있어서, 상기 비-텍스트 요소는 비트맵 표현이고 상기 압축된 데이터 포맷을 전송하는 단계는 상기 비트맵 표현을 상기 압축된 데이터 포맷으로 교체하는 단계를 포함하는 방법.
  9. 제1항에 있어서, 클라이언트가 상기 압축된 데이터 포맷을 이용하여 상기 비-텍스트 요소를 렌더링하는 능력을 판단하는 단계를 더 포함하는 방법.
  10. 제9항에 있어서, 상기 클라이언트가 상기 압축된 데이터 포맷을 이용하여 상기 비-텍스트 요소를 렌더링할 수 없다는 판단에 따라, 상기 압축된 데이터 포맷을 이용하여 상기 비-텍스트 요소를 렌더링할 수 있는 이미지-렌더링 라이브러리(image-rendering library)를 전송하는 단계를 더 포함하는 방법.
  11. 제1항에 있어서, 상기 식별 단계는,
    상기 어플리케이션 출력을 가로채는(intercepting) 단계와,
    상기 가로챈 입력에서 상기 비-텍스트 요소의 비트맵 표현을 검사하는 단계
    를 더 포함하는 방법.
  12. 제1항에 있어서, 상기 검색 단계는,
    상기 비-텍스트 요소의 비트맵 표현에 대한 제1의 체크값(check value)을 계산하는 단계와,
    상기 제1의 체크값과 동일한 체크값을 갖는 압축된 데이터 포맷을 이미지 저장소에서 찾는 단계
    를 더 포함하는 방법.
  13. 클라이언트에서 그래픽 디스플레이를 생성하는 방법에 있어서,
    서버상에서 실행하는 어플리케이션 프로그램으로부터의 출력을 상기 클라이언트에 전송하는 단계와,
    상기 어플리케이션 출력내에서 비트맵 표현을 식별해내는 단계와,
    상기 비트맵 표현에 대한 체크값을 판단하는 단계와,
    적어도 일부의 체크값을 이용하여 상기 비트맵 표현에 대한 압축된 데이터 포맷을 검색하는 단계와,
    상기 비트맵 표현 대신에 상기 압축된 데이터 포맷을 상기 클라이언트에 전송하는 단계
    를 포함하는 방법.
  14. 제13항에 있어서, 상기 비트맵 표현과 연관된 명령을 상기 어플리케이션 출력내에서 식별해내는 단계와,
    상기 압축된 데이터 포맷과 함께 상기 명령을 상기 클라이언트에 전송하는 단계
    를 더 포함하는 방법.
  15. 제14항에 있어서,
    상기 클라이언트에서 상기 압축된 데이터 포맷과 상기 명령을 수신하는 단계와,
    비트맵 표현을 생성하기 위해 상기 압축된 데이터 포맷을 압축해제하는 단계와,
    상기 비트맵 표현 및 상기 명령을 이용하여 디스플레이를 생성하는 단계
    를 포함하는 방법.
  16. 제13항에 있어서, 상기 비트맵 표현을 디스플레이하는 것과 연관된 명령 및 상기 압축된 데이터 포맷은 프레젠테이션 계층 프로토콜 패킷을 이용하여 전송되는 방법.
  17. 제16항에 있어서, 상기 프레젠테이션 계층 프로토콜 패킷은 파일을 그의 압축된 데이터 포맷으로 전송하기 위해 확립된 프로토콜 명령을 이용하여 전송되는 방법.
  18. 제16항에 있어서, 프레젠테이션 계층 프로토콜 패킷은 프레젠테이션 프로토콜을 따르는 방법.
  19. 제13항에 있어서, 클라이언트가 상기 압축된 데이터 포맷을 이용하여 상기 비-텍스트 요소를 렌더링하는 능력을 판단하는 단계를 더 포함하는 방법.
  20. 제19항에 있어서, 상기 클라이언트가 상기 압축된 데이터 포맷을 이용하여 상기 비-텍스트 요소를 렌더링할 수 없다는 판단에 따라, 상기 압축된 데이터 포맷을 이용하여 상기 비-텍스트 요소를 렌더링할 수 있는 이미지-렌더링 라이브러리(image-rendering library)를 전송하는 단계를 더 포함하는 방법.
  21. 제13항에 있어서, 상기 식별 단계는,
    상기 어플리케이션 출력을 가로채는(intercepting) 단계와,
    상기 가로챈 입력에서 하나 이상의 비-텍스트 요소의 비트맵 표현을 검사하는 단계
    를 더 포함하는 방법.
  22. 제13항에 있어서, 상기 판단 단계는,
    상기 비트맵 표현에 근거하여 CRC를 계산하는 단계와,
    상기 계산된 CRC를 체크값으로서 이용하는 단계
    를 더 포함하는 방법.
  23. 클라이언트에서 그래픽 디스플레이를 생성하기 위한 시스템에 있어서,
    어플리케이션 프로그램에 의해 산출된 출력을 가로채고, 상기 출력의 비-텍스트 요소를 식별해내고, 상기 비-텍스트 요소에 연관된 압축된 데이터 포맷을 검색하도록 구성된 출력 필터 모듈과,
    상기 비-텍스트 요소 대신에 상기 압축된 데이터 포맷을 상기 클라이언트에 전송하도록 구성된 서버 에이전트
    를 포함하는 시스템.
  24. 제23항에 있어서, 상기 서버 에이전트 및 상기 출력 필터 모듈을 포함하는 서버 노드를 더 포함하는 시스템.
  25. 제23항에 있어서,
    상기 압축된 데이터 포맷을 수신하고 상기 수신된 압축된 데이터 포맷을 이용하여 상기 비-텍스트 요소의 디스플레이를 생성하도록 구성된 클라이언트 에이전트를 더 포함하는 시스템.
  26. 제25항에 있어서, 상기 클라이언트 에이전트와 디스플레이를 포함하는 클라이언트 노드를 더 포함하는 시스템.
  27. 제23항에 있어서, 상기 서버 에이전트는 프레젠테이션 계층 프로토콜 패킷을 이용하여 상기 압축된 데이터 포맷을 전송하도록 또한 구성되는 시스템.
  28. 제27항에 있어서, 상기 서버 에이전트는 상기 비-텍스트 요소 대신에 상기 압축된 데이터 포맷을 전송하기 위한 명령을 상기 프레젠테이션 계층 프로토콜 패킷에 포함시키도록 또한 구성되는 시스템.
  29. 제23항에 있어서, 상기 서버 에이전트는 딘(thin) 클라이언트 프로토콜을 따르도록 또한 구성되는 시스템.
  30. 제23항에 있어서, 상기 비-텍스트 요소는 비트맵 표현인 시스템.
  31. 제23항에 있어서, 상기 출력 필터 모듈은 상기 클라이언트가 상기 압축된 데이터 포맷을 이용하여 상기 비-텍스트 요소를 렌더링하는 능력이 있는지 여부를 판단하도록 또한 구성되는 시스템.
  32. 제31항에 있어서, 상기 출력 필터 모듈이 상기 클라이언트가 상기 압축된 데이터 포맷을 이용하여 상기 비-텍스트 요소를 렌더링하는 능력이 없다고 판단되면, 상기 서버 에이전트는 상기 압축된 데이터 포맷을 이용하여 상기 비-텍스트 요소를 렌더링할 수 있는 이미지-렌더링 라이브러리를 전송하도록 또한 구성되는 시스템.
  33. 제23항에 있어서, 상기 출력 필터 모듈이 상기 출력을 가로채고 상기 가로챈출력에서 비-텍스트 요소의 비트맵 표현을 검사하도록 또한 구성되는 시스템.
  34. 클라이언트에서 그래픽 디스플레이를 생성하기 위한 시스템에 있어서,
    네트워크와,
    상기 네트워크와 통신중인 서버- 상기 서버는
    어플리케이션 프로그램에 의해 산출되는 출력을 가로채고, 상 기 출력에서 비-텍스트 요소를 식별하고 상기 비-텍스트 요소에 연관 된 압축된 데이터 포맷을 검색하도록 구성된 출력 필터 모듈과,
    상기 출력 필터 모듈에 연관되며, 상기 비-텍스트 요소를 대 신하여 상기 압축된 데이터 포맷을 상기 클라이언트에 전송하도록 구 성되는 서버 에이전트를 포함함-와,
    상기 네트워크와 통신하는 클라이언트 - 상기 클라이언트는, 서버 에 이전트와 통신하며, 상기 압축된 데이터 포맷을 수신하고 상기 수신 된 압축된 데이터 포맷을 이용하여 상기 비-텍스트 요소의 디스플레 이를 생성하도록 구성된 클라이언트 에이전트를 구비함-
    를 포함하는 시스템.
  35. 클라이언트에서 그래픽 디스플레이를 생성하기 위한 컴퓨터-판독가능 프로그램 수단이 내부에 구현된 제조물에 있어서, 상기 제조물은,
    서버상에서 실행하는 어플리케이션 프로그램에 의해 산출되는 출력을 가로채기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 출력의 비-텍스트 요소를 식별해내기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 비-텍스트 요소에 연관된 압축된 데이터 포맷을 검색하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 비-텍스트 요소 대신에 상기 압축된 데이터 포맷을 상기 클라이언트에 전송하기 위한 컴퓨터-판독가능 프로그램 수단
    을 포함하는 제조물.
  36. 클라이언트에서 그래픽 디스플레이를 생성하기 위한 컴퓨터-판독가능 프로그램 수단이 내부에 구현된 제조물에 있어서,
    서버상에서 실행하는 어플리케이션 프로그램에 의해 산출되는 출력을 가로채기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 어플리케이션 프로그램에 의해 산출된 출력내에서 비트맵 표현을 식별해내기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 비트맵 표현에 대한 체크값을 판단하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 비트맵 표현 대신에 상기 압축된 데이터 포맷을 상기 클라이언트에 전송하기 위한 컴퓨터-판독가능 프로그램 수단
    을 포함하는 제조물.
  37. 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 방법에 있어서,
    (a) 서버상에서 실행하는 어플리케이션 프로그램으로부터의 출력을 상기 클라이언트에 전송하는 단계와,
    (b) 상기 어플리케이션 출력내에서 미디어 스트림을 식별해내는 단계와,
    (c) 상기 어플리케이션 프로그램에 의한 처리 이전에 상기 미디어 스트림의 적어도 일부를 나타내는 원래의 압축된 데이터 집합을 가로채는 단계와,
    (d) 상기 원래의 압축된 데이터 집합을 클라이언트에 전송하는 단계
    를 포함하는 방법.
  38. 제37항에 있어서, 상기 어플리케이션 프로그램이 외부 코덱(codec)을 활용하는지를 판단하는 단계를 더 포함하는 방법.
  39. 제37항에 있어서,
    상기 원래의 압축된 데이터 집합을 상기 클라이언트에서 수신하는 단계와,
    압축해제된 데이터 집합을 생성하기 위해 상기 클라이언트에서 상기 원래의 압축된 데이터 집합을 압축해제하는 단계와,
    상기 압축해제된 데이터 집합을 이용하여 상기 클라이언트에서 상기 미디어 프레젠테이션을 생성하는 단계
    를 더 포함하는 방법.
  40. 제37항에 있어서,
    상기 미디어 스트림에 연관된 타이밍 정보를 획득하는 단계와,
    상기 타이밍 정보를 상기 클라이언트에 전송하는 단계
    를 포함하는 방법.
  41. 제40항에 있어서,
    상기 클라이언트에서 상기 원래의 압축된 데이터 집합과 상기 타이밍 정보를 수신하는 단계와,
    압축해제된 데이터 집합을 생성하기 위해 상기 클라이언트에서 상기 원래의 압축된 데이터 집합을 압축해제하는 단계와,
    상기 압축해제된 데이터 집합과 상기 타이밍 정보를 이용하여 상기 클라이언트에서 상기 미디어 프레젠테이션을 생성하는 단계
    를 포함하는 방법.
  42. 제39항에 있어서, 상기 미디어 스트림은 비디오 스트림을 포함하고 상기 미디어 프레젠테이션은 그래픽 디스플레이를 포함하는 방법.
  43. 제42항에 있어서,
    디스플레이 스크린상에서 상기 비디오 스트림의 이미지를 찾기 위한 정보를상기 클라이언트에 전송하는 단계와,
    상기 클라이언트에서 상기 비디오 스트림의 이미지를 찾기 위한 정보를 수신하는 단계와,
    상기 압축해제된 집합과 상기 찾기 위한 정보를 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하는 단계
    를 더 포함하는 방법.
  44. 제39항에 있어서,
    상기 어플리케이션 출력으로부터 비-미디어 그래픽 정보를 상기 클라이언트에 전송하는 단계와,
    상기 클라이언트에서 상기 비-미디어 그래픽 정보를 수신하는 단계와,
    상기 압축해제된 데이터 집합과 상기 비-미디어 그래픽 정보를 이용하여 상기 클라이언트에서 상기 미디어 프레젠테이션을 생성하는 단계
    를 포함하는 방법.
  45. 제39항에 있어서, 상기 미디어 스트림은 오디오 스트림을 포함하고 상기 미디어 프레젠테이션은 오디오 프레젠테이션을 포함하는 방법.
  46. 제37항에 있어서, 상기 클라이언트에 설치된 클라이언트 에이전트에 의해 지원되는 적어도 하나의 미디어 포맷을 상기 서버에 알려주는 단계를 더 포함하는 방법.
  47. 제46항에 있어서, 상기 적어도 하나의 미디어 포맷은 상기 클라이언트에 설치된 적어도 하나의 코덱을 열거함으로써 판단되는 방법.
  48. 제46항에 있어서, 상기 적어도 하나의 미디어 포맷은 상기 클라이언트에 설치된 클라이언트 에이전트에 임베딩된(embedded) 적어도 하나의 코덱을 열거함으로써 판단되는 방법.
  49. 제46항에 있어서, 상기 서버에 상기 적어도 하나의 미디어 포맷을 알려주기 위해 전체적으로 유일한 식별자가 사용되는 방법.
  50. 제46항에 있어서, 상기 서버에 상기 적어도 하나의 미디어 포맷을 알려주기 위해 4개-문자 코드가 사용되는 방법.
  51. 클라이언트에 미디어 프레젠테이션을 생성하는 방법에 있어서,
    (a) 서버상에서 실행하는 어플리케이션 프로그램으로부터의 출력을 상기 클라이언트에 전송하는 단계와,
    (b) 상기 어플리케이션 출력내에서 미디어 스트림을 식별해내는 단계와,
    (c) 상기 미디어 스트림의 적어도 일부분을 나타내는 제1의 압축해제
    데이터 집합을 가로채는 단계와,
    (d) 상기 가로챈 제1의 압축해제된 데이터 집합을 압축하는 단계와,
    (e) 상기 제1의 압축해제된 데이터 집합을 대신하여 상기 클라이언트에 상기 압축된 데이터 집합을 전송하는 단계
    를 포함하는 방법.
  52. 제51항에 있어서, 상기 어플리케이션 프로그램이 임베딩된 코덱을 이용하는지를 판단하는 단계를 더 포함하는 방법.
  53. 제51항에 있어서,
    상기 클라이언트에서 상기 압축된 데이터 집합을 수신하는 단계와,
    제2의 압축해제된 데이터 집합을 생성하기 위해 상기 압축된 데이터 집합을 압축해제하는 단계와,
    상기 제2의 압축해제된 데이터 집합을 이용하여 상기 클라이언트에서 상기 미디어 프레젠테이션을 생성하는 단계
    를 포함하는 방법.
  54. 제51항에 있어서,
    상기 미디어 스트림에 연관된 타이밍 정보를 획득하는 단계와,
    상기 타이밍 정보를 상기 클라이언트에 전송하는 단계
    를 포함하는 방법.
  55. 제54항에 있어서,
    상기 클라이언트에서 상기 압축된 데이터 집합 및 상기 타이밍 정보를 수신하는 단계와,
    제2의 압축해제된 데이터 집합을 생성하기 위해 상기 클라이언트에서 상기 압축된 데이터 집합을 압축해제하는 단계와,
    상기 제2의 압축해제된 데이터 집합과 상기 타이밍 정보를 이용하여 상기 클라이언트에서 상기 미디어 프레젠테이션을 생성하는 단계
    를 포함하는 방법.
  56. 제53항에 있어서, 상기 미디어 스트림은 비디오 스트림을 포함하고 상기 미디어 프레젠테이션은 그래픽 디스플레이를 포함하는 방법.
  57. 제56항에 있어서,
    디스플레이 스크린상에서 상기 비디오 스트림의 이미지를 찾기 위한 정보를 상기 클라이언트에 전송하는 단계와,
    상기 클라이언트에서 상기 이미지를 찾기 위한 정보를 수신하는 단계와,
    상기 제2의 압축해제된 데이터 집합과 상기 찾기 위한 정보를 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하는 단계
    를 포함하는 방법.
  58. 제53항에 있어서,
    상기 어플리케이션 출력으로부터의 비-미디어 그래픽 정보를 상기 클라이언트에 전송하는 단계와,
    상기 클라이언트에서 상기 비-미디어 그래픽 정보를 수신하는 단계와,
    상기 제2의 압축해제된 데이터 집합과 상기 비-미디어 그래픽 정보를 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하는 단계
    를 더 포함하는 방법.
  59. 제56항에 있어서, 상기 단계(d)는 경미한 손실의 비디오 인코딩 알고리즘(lightweight lossy video encoding algorithm)을 이용하여 상기 가로채인 제1의 비디오 스트림의 압축해제된 데이터 집합을 압축하는 단계를 포함하는 방법.
  60. 제59항에 있어서, 상기 경미한 손실의 비디오 인코딩 알고리즘은 MJPEG 압축을 포함하는 방법.
  61. 제59항에 있어서, 상기 단계(d)는 상기 경미한 손실의 비디오 인코딩 알고리즘의 압축비율을 선택하는 단계를 더 포함하는 방법.
  62. 제51항에 있어서, 상기 클라이언트상에 설치된 클라이언트 에이전트에 의해 지원되는 적어도 하나의 미디어 포맷을 상기 서버에 알려주는 단계를 더 포함하는 방법.
  63. 제62항에 있어서, 상기 적어도 하나의 미디어 포맷은 상기 클라이언트에 설치된 적어도 하나의 코덱을 열거함으로써 판단되는 방법.
  64. 제62항에 있어서, 상기 적어도 하나의 미디어 포맷은 상기 클라이언트에 설치된 클라이언트 에이전트내에 임베딩된 적어도 하나의 코덱을 열거함으로써 판단되는 방법.
  65. 제62항에 있어서, 상기 서버에 상기 적어도 하나의 미디어 포맷을 알려주기 위해 전체적으로 유일한 식별자가 사용되는 방법.
  66. 제62항에 있어서, 상기 서버에 상기 적어도 하나의 미디어 포맷을 알려주기 위해 4개-문자 코드가 사용되는 방법.
  67. 클라이언트에서 미디어 프레젠테이션을 생성하는 방법에 있어서,
    (a) 상기 클라이언트에 설치된 클라이언트 에이전트에 의해 지원되는 적어도 하나의 미디어 포맷을 서버에 알려주는 단계와,
    (b) 상기 클라이언트에서 미디어 스트림의 적어도 일부를 나타내는 압축된 데이터 집합을 수신하는 단계와,
    (c) 압축해제된 데이터 집합을 생성하기 위해 상기 클라이언트에서 상기 압축된 데이터 집합을 압축해제하는 단계와,
    (d) 상기 압축해제된 데이터 집합을 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하는 단계
    를 포함하는 방법.
  68. 제67항에 있어서,
    상기 미디어 스트림에 연관된 타이밍 정보를 수신하는 단계와,
    상기 미디어 프레젠테이션을 생성하기 위해 상기 타이밍 정보를 이용하는 단계
    를 더 포함하는 방법.
  69. 제67항에 있어서, 상기 미디어 스트림은 비디오 스트림을 포함하고 상기 미디어 프레젠테이션은 그래픽 디스플레이를 포함하는 방법.
  70. 제69항에 있어서,
    디스플레이 스크린상에서 비디오 스트림의 이미지를 찾기 위한 정보를 상기 클라이언트에서 수신하는 단계와,
    상기 압축해제된 데이터 집합과 상기 찾기 위한 정보를 이용하여 상기 클라이어언트에서 미디서 프레젠테이션을 생성하는 단계
    를 더 포함하는 방법.
  71. 제67항에 있어서,
    상기 클라이언트에서 비-미디어 그래픽 정보를 수신하는 단계와,
    상기 압축해제된 데이터 집합과 상기 비-미디어 그래픽 정보를 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하는 단계
    를 포함하는 방법.
  72. 제67항에 있어서, 상기 미디어 스트림은 오디오 스트림을 포함하고 상기 미디어 프레젠테이션은 오디오 프레젠테이션을 포함하는 방법.
  73. 제67항에 있어서, 상기 적어도 하나의 미디어 포맷은 상기 클라이언트에 설치된 적어도 하나의 코덱을 열거함으로써 판단되는 방법.
  74. 제67항에 있어서, 상기 적어도 하나의 미디어 포맷은 상기 클라이언트에 설치된 클라이언트 에이전트에 임베딩된(embedded) 적어도 하나의 코덱을 열거함으로써 판단되는 방법.
  75. 제67항에 있어서, 상기 서버에 상기 적어도 하나의 미디어 포맷을 알려주기 위해 전체적으로 유일한 식별자가 사용되는 방법.
  76. 제67항에 있어서, 상기 서버에 상기 적어도 하나의 미디어 포맷을 알려주기 위해 4개-문자 코드가 사용되는 방법.
  77. 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 시스템에 있어서,
    어플리케이션 프로그램 -상기 어플리케이션 프로그램은 자신에 의해 산출된 출력내에서 미디어 스트림을 식별해내도록 구성됨-과,
    상기 어플리케이션 프로그램에 의한 처리 이전에 상기 미디어 스트림의 적어도 일부를 나타내는 원래의 압축된 데이터 집합을 가로채고 상기 원래의 압축된 데이터 집합을 클라이언트에 전송하도록 구성된 출력 필터 모듈
    을 포함하는 시스템.
  78. 제77항에 있어서, 상기 원래의 압축된 데이터 집합을 수신하고 압축해제된 데이터 집합을 생성하기 위해 상기 클라이언트에서 상기 원래의 압축된 데이터 집합을 압축해제하고 상기 압축해제된 데이터 집합을 이용하여 상기 클라이언트에 상기 미디어 프레젠테이션을 생성하도록 구성된 클라이언트 에이전트를 더 포함하는 시스템.
  79. 제77항에 있어서, 상기 출력 필터 모듈은 상기 미디어 스트림에 연관된 타이밍 정보를 획득하고 상기 클라이언트에 상기 타이밍 정보를 전송하도록 또한 구성되는 시스템.
  80. 제79항에 있어서, 상기 원래의 압축된 데이터 집합과 상기 타이밍 정보를 수신하고 상기 원래의 압축된 데이터 집합을 압축해제하여 압축해제된 데이터 집합을 생성하고 상기 압축해제된 데이터 집합과 상기 타이밍 정보를 이용하여 상기 미디어 프레젠테이션을 생성하도록 구성된 클라이언트 에이전트를 더 포함하는 시스템.
  81. 제78항에 있어서, 상기 미디어 스트림은 비디오 스트림이고 상기 클라이언트 에이전트는 디스플레이 스크린상에서 상기 비디오 스트림의 이미지를 찾기 위한 정보를 수신하고 상기 압축해제된 데이터 집합과 상기 찾기 위한 정보를 이용하여 상기 클라이언트에서 상기 미디어 프레젠테이션을 생성하도록 또한 구성되는 시스템.
  82. 제78항에 있어서, 상기 클라이언트 에이전트는 비-미디어 그래픽 정보를 수신하고 상기 압축해제된 데이터 집합과 상기 비-미디어 그래픽 정보를 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하도록 또한 구성되는 시스템.
  83. 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 시스템에 있어서, 상기 시스템은,
    어플리케이션 프로그램 - 상기 어플리케이션 프로그램은 자신에 의해 산출된 출력내에서 미디어 스트림을 식별하도록 구성됨-과,
    상기 미디어 스트림의 적어도 일부를 나타내는 제1의 압축해제된 데이터 집합을 가로채고 상기 가로챈 제1의 미디어 스트림 압축해제된 데이터 집합을 압축하고 상기 제1의 압축해제된 데이터 집합 대신에 상기 압축된 데이터 집합을 상기 클라이언트 전송하도록 구성된 출력 필터 모듈
    을 포함하는 시스템.
  84. 제83항에 있어서, 상기 압축된 데이터 집합을 수신하고 제2의 압축해제된 데이터 집합을 생성하기 위해 상기 클라이언트에서 상기 압축된 데이터 집합을 압축해제하고 상기 제2의 압축해제된 데이터 집합을 이용하여 상기 클라이언트에 상기 미디어 프레젠테이션을 생성하도록 구성된 클라이언트 에이전트를 더 포함하는 시스템.
  85. 제83항에 있어서, 상기 출력 필터 모듈은 상기 미디어 스트림에 연관된 타이밍 정보를 획득하고 상기 클라이언트에 상기 타이밍 정보를 전송하도록 또한 구성되는 시스템.
  86. 제85항에 있어서, 상기 압축된 데이터 집합과 상기 타이밍 정보를 수신하고 상기 압축된 데이터 집합을 압축해제하여 제2의 압축해제된 데이터 집합을 생성하고 상기 제2의 압축해제된 데이터 집합과 상기 타이밍 정보를 이용하여 상기 미디어 프레젠테이션을 생성하도록 구성된 클라이언트 에이전트를 더 포함하는 시스템.
  87. 제84항에 있어서, 상기 미디어 스트림은 비디오 스트림이고 상기 클라이언트 에이전트는 디스플레이 스크린상에서 상기 비디오 스트림의 이미지를 찾기 위한 정보를 수신하고 상기 제2의 압축해제된 데이터 집합과 상기 찾기 위한 정보를 이용하여 상기 클라이언트에서 상기 미디어 프레젠테이션을 생성하도록 또한 구성되는 시스템.
  88. 제84항에 있어서, 상기 클라이언트 에이전트는 비-미디어 그래픽 정보를 수신하고 상기 제2의 압축해제된 데이터 집합과 상기 비-미디어 그래픽 정보를 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하도록 또한 구성되는 시스템.
  89. 제83항에 있어서, 상기 미디어 스트림은 비디오 스트림을 포함하고, 상기 출력 필터 모듈은 상기 비디오 스트림의 가로챈 제1의 압축해제된 데이터 집합을 경미한 손실의 비디오 인코딩 알고리즘을 이용하여 압축하도록 또한 구성되는 시스템.
  90. 제89항에 있어서, 상기 경미한 손실의 비디오 인코딩 알고리즘은 MJPEG 압축을 포함하는 시스템.
  91. 제89항에 있어서, 상기 출력 필터 모듈은 상기 경미한 손실의 비디오 인코딩 알고리즘에 대한 압축비율을 판단하도록 또한 구성되는 시스템.
  92. 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 시스템에 있어서,
    서버와,
    상기 서버와 통신하고, 클라이언트 에이전트를 포함하는 상기 클라이언트를 포함하고,
    상기 클라이언트 에이전트는 상기 클라이언트 에이전트에 의해 지원되는 적어도 하나의 미디어 포맷을 상기 서버에 알려주고, 미디어 스트림의 적어도 일부를 나타내는 압축된 데이터 집합을 수신하고, 상기 클라이언트에서 상기 압축된 데이터 집합을 압축해제하여 압축해제된 데이터 집합을 생성하고, 상기 압축해제된 데이터 집합을 이용하여 미디어 프레젠테이션을 생성하도록 구성되는 시스템.
  93. 제92항에 있어서, 상기 클라이언트 에이전트는 상기 미디어 프레젠테이션과 연관된 타이밍 정보를 수신하고 상기 타이밍 정보를 이용하여 상기 미디어 프레젠테이션을 생성하도록 또한 구성되는 시스템.
  94. 제92항에 있어서, 상기 미디어 스트림은 비디오 스트림이고 상기 클라이언트에이전트는 디스플레이상에서 비디오 스트림의 이미지를 찾기 위한 정보를 수신하고 상기 압축해제된 데이터 집합과 상기 찾기 위한 정보를 이용하여 상기 클라이언트에서 상기 미디어 프레젠테이션을 생성하도록 또한 구성되는 시스템.
  95. 제92항에 있어서, 상기 클라이언트 에이전트는 비-미디어 그래픽 정보를 수신하고 상기 압축해제된 데이터 집합 및 상기 비-미디어 그래픽 정보를 이용하여 상기 미디어 프레젠테이션을 생성하도록 또한 구성되는 시스템.
  96. 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단이 내부에 구현된 제조물에 있어서, 상기 제조물은,
    서버상에서 실행하는 어플리케이션 프로그램으로부터의 출력을 상기 클라이언트에 전송하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 어플리케이션 출력내에서 미디어 스트림을 식별해내기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 어플리케이션 프로그램에 의한 처리 이전에 상기 미디어 스트림의 적어도 일부를 나타내는 원래의 압축된 데이터 집합을 가로채기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 원래의 압축된 데이터 집합을 클라이언트에 전송하기 위한 컴퓨터-판독가능 프로그램 수단
    를 포함하는 제조물.
  97. 제96항에 있어서, 상기 어플리케이션 프로그램이 외부 코덱(codec)을 활용하는지를 판단하기 위한 컴퓨터-판독가능 프로그램 수단을 더 포함하는 제조물.
  98. 제96항에 있어서,
    상기 원래의 압축된 데이터 집합을 상기 클라이언트에서 수신하기 위한 컴퓨터-판독가능 프로그램 수단과,
    압축해제된 데이터 집합을 생성하기 위해 상기 클라이언트에서 상기 원래의 압축된 데이터 집합을 압축해제하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 압축해제된 데이터 집합을 이용하여 상기 클라이언트에서 상기 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단
    을 더 포함하는 제조물.
  99. 제96항에 있어서,
    상기 미디어 스트림에 연관된 타이밍 정보를 획득하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 타이밍 정보를 상기 클라이언트에 전송하기 위한 컴퓨터-판독가능 프로그램 수단
    을 포함하는 제조물.
  100. 제99항에 있어서,
    상기 클라이언트에서 상기 원래의 압축된 데이터 집합과 상기 타이밍 정보를 수신하기 위한 컴퓨터-판독가능 프로그램 수단과,
    압축해제된 데이터 집합을 생성하기 위해 상기 클라이언트에서 상기 원래의 압축된 데이터 집합을 압축해제하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 압축해제된 데이터 집합과 상기 타이밍 정보를 이용하여 상기 클라이언트에서 상기 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단
    을 포함하는 제조물.
  101. 제98항에 있어서, 상기 미디어 스트림은 비디오 스트림이고, 상기 제조물은,
    디스플레이 스크린상에서 상기 비디오 스트림의 이미지를 찾기 위한 정보를 상기 클라이언트에 전송하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 클라이언트에서 상기 상기 비디오 스트림의 이미지를 찾기 위한 정보를 수신하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 압축해제된 집합과 상기 찾기 위한 정보를 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단
    을 더 포함하는 제조물.
  102. 제98항에 있어서,
    상기 어플리케이션 출력으로부터 비-미디어 그래픽 정보를 상기 클라이언트에 전송하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 클라이언트에서 상기 비-미디어 그래픽 정보를 수신하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 압축해제된 데이터 집합과 상기 비-미디어 그래픽 정보를 이용하여 상기 클라이언트에서 상기 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단
    을 포함하는 제조물.
  103. 제96항에 있어서, 상기 클라이언트에 설치된 클라이언트 에이전트에 의해 지원되는 적어도 하나의 미디어 포맷을 상기 서버에 알려주기 위한 컴퓨터-판독가능 프로그램 수단을 더 포함하는 제조물.
  104. 제103항에 있어서, 상기 적어도 하나의 미디어 포맷은 상기 클라이언트에 설치된 적어도 하나의 코덱을 열거함으로써 판단되는 제조물.
  105. 제103항에 있어서, 상기 적어도 하나의 미디어 포맷은 상기 클라이언트에 설치된 클라이언트 에이전트에 임베딩된(embedded) 적어도 하나의 코덱을 열거함으로써 판단되는 제조물.
  106. 제103항에 있어서, 상기 서버에 상기 적어도 하나의 미디어 포맷을 알려주기위한 컴퓨터 판독가능 프로그램 수단은 전체적으로 유일한 식별자를 사용하는 제조물.
  107. 제103항에 있어서, 상기 서버에 상기 적어도 하나의 미디어 포맷을 알려주기 위한 컴퓨터 판독가능 프로그램 수단은 4개-문자 코드를 사용하는 제조물.
  108. 클라이언트에 미디어 프레젠테이션을 생성하는 제조물에 있어서,
    서버상에서 실행하는 어플리케이션 프로그램으로부터의 출력을 상기 클라이언트에 전송하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 어플리케이션 출력내에서 미디어 스트림을 식별해내기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 미디어 스트림의 적어도 일부분을 나타내는 제1의 압축해제
    데이터 집합을 가로채기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 가로챈 제1의 압축해제된 데이터 집합을 압축하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 제1의 압축해제된 데이터 집합을 대신하여 상기 클라이언트에상기 압축된 데이터 집합을 전송하기 위한 컴퓨터-판독가능 프로그램 수단
    을 포함하는 제조물.
  109. 제108항에 있어서, 상기 어플리케이션 프로그램이 임베딩된 코덱을 이용하는지를 판단하기 위한 컴퓨터-판독가능 프로그램 수단을 더 포함하는 제조물.
  110. 제108항에 있어서,
    상기 클라이언트에서 상기 압축된 데이터 집합을 수신하기 위한 컴퓨터-판독가능 프로그램 수단과,
    제2의 압축해제된 데이터 집합을 생성하기 위해 상기 압축된 데이터 집합을 압축해제하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 제2의 압축해제된 데이터 집합을 이용하여 상기 클라이언트에서 상기 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단
    을 포함하는 제조물.
  111. 제108항에 있어서,
    상기 미디어 스트림에 연관된 타이밍 정보를 획득하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 타이밍 정보를 상기 클라이언트에 전송하기 위한 컴퓨터-판독가능 프로그램 수단
    을 포함하는 제조물.
  112. 제111항에 있어서,
    상기 클라이언트에서 상기 압축된 데이터 집합 및 상기 타이밍 정보를 수신하기 위한 컴퓨터-판독가능 프로그램 수단과,
    제2의 압축해제된 데이터 집합을 생성하기 위해 상기 클라이언트에서 상기 압축된 데이터 집합을 압축해제하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 제2의 압축해제된 데이터 집합과 상기 타이밍 정보를 이용하여 상기 클라이언트에서 상기 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단
    을 포함하는 제조물.
  113. 제110항에 있어서, 상기 미디어 스트림은 비디오 스트림을 포함하고 상기 제조물은
    디스플레이 스크린상에서 상기 비디오 스트림의 이미지를 찾기 위한 정보를 상기 클라이언트에 전송하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 클라이언트에서 상기 이미지를 찾기 위한 정보를 수신하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 제2의 압축해제된 데이터 집합과 상기 찾기 위한 정보를 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단
    을 포함하는 제조물.
  114. 제110항에 있어서,
    상기 어플리케이션 출력으로부터의 비-미디어 그래픽 정보를 상기 클라이언트에 전송하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 클라이언트에서 상기 비-미디어 그래픽 정보를 수신하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 제2의 압축해제된 데이터 집합과 상기 비-미디어 그래픽 정보를 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단
    을 더 포함하는 제조물.
  115. 제108항에 있어서, 상기 미디어는 비디오 스트림을 포함하고, 상기 압축하기 위한 컴퓨터-판독가능 프로그램 수단은 경미한 손실의 비디오 인코딩 알고리즘(lightweight lossy video encoding algorithm)을 포함하는 제조물.
  116. 제115항에 있어서, 상기 압축하기 위한 컴퓨터-판독가능 프로그램 수단의 상기 경미한 손실의 비디오 인코딩 알고리즘은 MJPEG 압축을 포함하는 제조물.
  117. 제115항에 있어서, 상기 압축하기 위한 컴퓨터-판독가능 프로그램 수단은 상기 경미한 손실의 비디오 인코딩 알고리즘의 압축비율을 선택하는 제조물.
  118. 제108항에 있어서, 상기 클라이언트상에 설치된 클라이언트 에이전트에 의해지원되는 적어도 하나의 미디어 포맷을 상기 서버에 알려주기 위한 컴퓨터-판독가능 프로그램 수단을 더 포함하는 제조물.
  119. 제118항에 있어서, 상기 적어도 하나의 미디어 포맷을 상기 서버에 알려주기 위한 컴퓨터-판독가능 프로그램 수단은 상기 클라이언트에 설치된 적어도 하나의 코덱을 열거하는 제조물.
  120. 제118항에 있어서, 상기 적어도 하나의 미디어 포맷을 상기 서버에 알려주기 위한 컴퓨터-판독가능 프로그램 수단은 상기 클라이언트에 설치된 클라이언트 에이전트내에 임베딩된 적어도 하나의 코덱을 열거하는 제조물.
  121. 제118항에 있어서, 상기 적어도 하나의 미디어 포맷을 상기 서버에 알려주기 위한 컴퓨터-판독가능 프로그램 수단은 전체적으로 유일한 식별자를 사용하는 제조물.
  122. 제118항에 있어서, 상기 적어도 하나의 미디어 포맷을 상기 서버에 알려주기 위한 컴퓨터-판독가능 프로그램 수단은 4개-문자 코드를 사용하는 제조물.
  123. 클라이언트에서 미디어 프레젠테이션을 생성하는 제조물에 있어서,
    상기 클라이언트에 설치된 클라이언트 에이전트에 의해 지원되는 적어도 하나의 미디어 포맷을 서버에 알려주기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 클라이언트에서 미디어 스트림의 적어도 일부를 나타내는 압축된 데이터 집합을 수신하기 위한 컴퓨터-판독가능 프로그램 수단과,
    압축해제된 데이터 집합을 생성하기 위해 상기 클라이언트에서 상기 압축된 데이터 집합을 압축해제하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 압축해제된 데이터 집합을 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단
    을 포함하는 제조물.
  124. 제123항에 있어서,
    상기 미디어 스트림에 연관된 타이밍 정보를 수신하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 미디어 프레젠테이션을 생성하기 위해 상기 타이밍 정보를 이용하기 위한 컴퓨터-판독가능 프로그램 수단
    을 더 포함하는 제조물.
  125. 제123항에 있어서, 상기 미디어 스트림은 비디오 스트림을 포함하고, 상기 제조물은,
    디스플레이 스크린상에서 비디오 스트림의 이미지를 찾기 위한 정보를 상기 클라이언트에서 수신하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 압축해제된 데이터 집합과 상기 찾기 위한 정보를 이용하여 상기 클라이어언트에서 미디서 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단
    을 더 포함하는 제조물.
  126. 제123항에 있어서,
    상기 클라이언트에서 비-미디어 그래픽 정보를 수신하기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 압축해제된 데이터 집합과 상기 비-미디어 그래픽 정보를 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단
    을 포함하는 제조물.
  127. 제123항에 있어서, 상기 적어도 하나의 미디어 포맷을 서버에 알려주기 위한 컴퓨터-판독가능 프로그램 수단은 상기 클라이언트에 설치된 적어도 하나의 코덱을 열거하는 제조물.
  128. 제123항에 있어서, 상기 적어도 하나의 미디어 포맷을 서버에 알려주기 위한 컴퓨터-판독가능 프로그램 수단은 상기 클라이언트에 설치된 클라이언트 에이전트에 임베딩된(embedded) 적어도 하나의 코덱을 열거하는 제조물.
  129. 제67항에 있어서, 상기 적어도 하나의 미디어 포맷을 서버에 알려주기 위한 컴퓨터-판독가능 프로그램 수단은 전체적으로 유일한 식별자를 사용하는 제조물.
  130. 제123항에 있어서, 상기 적어도 하나의 미디어 포맷을 서버에 알려주기 위한 컴퓨터-판독가능 프로그램 수단은 4개-문자 코드를 사용하는 제조물.
  131. 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 시스템에 있어서,
    네트워크와,
    상기 네트워크와 통신하는 서버 - 상기 서버는,
    자신에 의해 산출된 출력내에서 미디어 스트림을 식별해내도 록 구성된 어플리케이션 프로그램과,
    상기 어플리케이션 프로그램에 의한 처리 이전에 상기 미디어 스트림의 적어도 일부를 나타내는 압축된 데이터 집합을 획득하고 상기 압축된 데이터 집합을 상기 클라이언트에 전송하도록 구성된 적어도 하 나의 출력 필터 모듈을 포함함-와,
    상기 네트워크와 통신하며, 클라이언트 에이전트를 구비하는 클라이언트 - 상기 클라이언트 에이전트는 상기 클라이언트 에이전트에 의해 지원되는 적어도 하나의 미디어 포맷을 상기 서버에게 알리고, 상기 압축된 데이터 집합을 수신하고, 상기 압축된 데이터 집합을 상기 클라이언트에서 압축해제하여 압축해제된 데이터집합을 생성하고, 상기 압축해제된 데이터 집합을 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하도록 구성됨-
    를 포함하는 시스템.
  132. 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단이 내부에 구현된 제조물에 있어서, 상기 제조물은,
    미디어 스트림의 원래의 압축된 데이터 집합을 가로채기 위한 컴퓨터-판독가능 프로그램 수단과,
    ICA 또는 RDP와 같은 딘(thin) 클라이언트 프로토콜을 이용하여 상기 클라이언트에 상기 원래의 압축된 데이터 집합을 전송하기 위한 컴퓨터-판독가능 프로그램 수단
    을 포함하는 제조물.
  133. 클라이언트에서 미디어 프레젠테이션을 생성하기 위한 컴퓨터-판독가능 프로그램 수단이 내부에 구현된 제조물에 있어서, 상기 제조물은,
    미디어 스트림의 압축해제된 데이터 집합을 가로채기 위한 컴퓨터-판독가능 프로그램 수단과,
    상기 가로챈 데이터 집합을 압축하기 위한 컴퓨터-판독가능 프로그램 수단과,
    ICA 또는 RDP와 같은 딘(thin) 클라이언트 프로토콜을 이용하여 상기 클라이언트에 상기 압축된 데이터 집합을 전송하기 위한 컴퓨터-판독가능 프로그램 수단
    을 포함하는 제조물.
KR10-2004-7014453A 2002-03-14 2003-03-14 클라이언트에서 그래픽 및 미디어 디스플레이를 생성하기위한 방법 및 장치 KR20040104515A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/098,157 2002-03-14
US10/098,157 US7376695B2 (en) 2002-03-14 2002-03-14 Method and system for generating a graphical display for a remote terminal session
PCT/US2003/007965 WO2003079212A1 (en) 2002-03-14 2003-03-14 Methods and apparatus for generating graphical and media displays at a client

Publications (1)

Publication Number Publication Date
KR20040104515A true KR20040104515A (ko) 2004-12-10

Family

ID=28039321

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7014453A KR20040104515A (ko) 2002-03-14 2003-03-14 클라이언트에서 그래픽 및 미디어 디스플레이를 생성하기위한 방법 및 장치

Country Status (8)

Country Link
US (3) US7376695B2 (ko)
EP (4) EP2284722B1 (ko)
JP (1) JP2005521280A (ko)
KR (1) KR20040104515A (ko)
AU (2) AU2003220302B2 (ko)
CA (1) CA2478994A1 (ko)
IL (2) IL164052A0 (ko)
WO (1) WO2003079212A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100772407B1 (ko) * 2006-05-04 2007-11-01 삼성전자주식회사 임베디드 디스플레이 시스템 및 방법
KR101401380B1 (ko) * 2010-11-04 2014-05-30 한국전자통신연구원 원격 렌더링 기반의 3d 응용프로그램 실행 장치 및 그 방법

Families Citing this family (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7117239B1 (en) 2000-07-28 2006-10-03 Axeda Corporation Reporting the state of an apparatus to a remote computer
US7185014B1 (en) 2000-09-22 2007-02-27 Axeda Corporation Retrieving data from a server
US8108543B2 (en) 2000-09-22 2012-01-31 Axeda Corporation Retrieving data from a server
US6856448B2 (en) * 2001-03-26 2005-02-15 Creo Inc. Spatial light modulator
AU2002339746A1 (en) 2001-05-18 2002-12-03 Imprivata Inc. System and method for authentication using biometrics
US7254601B2 (en) 2001-12-20 2007-08-07 Questra Corporation Method and apparatus for managing intelligent assets in a distributed environment
US8671213B2 (en) 2002-03-14 2014-03-11 Citrix Systems, Inc. Methods and apparatus for generating graphical and media displays at a client
US7376695B2 (en) * 2002-03-14 2008-05-20 Citrix Systems, Inc. Method and system for generating a graphical display for a remote terminal session
US7178149B2 (en) 2002-04-17 2007-02-13 Axeda Corporation XML scripting of soap commands
US7464185B2 (en) * 2002-04-30 2008-12-09 Hewlett-Packard Development Company, L.P. Method and apparatus for transfering data from a sending system to a receiving system, and program storage devices
ES2325317T3 (es) * 2002-09-06 2009-09-01 Telefonaktiebolaget Lm Ericsson (Publ) Metodo y dispositivos para controlar las retransmisiones en el flujo de datos.
US7966418B2 (en) 2003-02-21 2011-06-21 Axeda Corporation Establishing a virtual tunnel between two computer programs
US7493614B2 (en) * 2003-03-31 2009-02-17 Microsoft Corporation System architecture and related methods for dynamically adding software components to extend functionality of system processes
US7613767B2 (en) * 2003-07-11 2009-11-03 Microsoft Corporation Resolving a distributed topology to stream data
KR100501334B1 (ko) * 2003-08-04 2005-07-18 삼성전자주식회사 씬 클라이언트 방식을 개선한 홈 미디어 게이트웨이의멀티미디어 데이터 처리장치 및 그 방법
US7711840B2 (en) * 2003-10-23 2010-05-04 Microsoft Corporation Protocol for remote visual composition
US7712108B2 (en) 2003-12-08 2010-05-04 Microsoft Corporation Media processing methods, systems and application program interfaces
US7900140B2 (en) * 2003-12-08 2011-03-01 Microsoft Corporation Media processing methods, systems and application program interfaces
US7733962B2 (en) * 2003-12-08 2010-06-08 Microsoft Corporation Reconstructed frame caching
US7735096B2 (en) 2003-12-11 2010-06-08 Microsoft Corporation Destination application program interfaces
US20050210056A1 (en) * 2004-01-31 2005-09-22 Itzhak Pomerantz Workstation information-flow capture and characterization for auditing and data mining
US7941739B1 (en) 2004-02-19 2011-05-10 Microsoft Corporation Timeline source
US7934159B1 (en) 2004-02-19 2011-04-26 Microsoft Corporation Media timeline
US7664882B2 (en) 2004-02-21 2010-02-16 Microsoft Corporation System and method for accessing multimedia content
US7669206B2 (en) 2004-04-20 2010-02-23 Microsoft Corporation Dynamic redirection of streaming media between computing devices
US7441062B2 (en) 2004-04-27 2008-10-21 Apple Inc. Connector interface system for enabling data communication with a multi-communication device
US7529872B1 (en) 2004-04-27 2009-05-05 Apple Inc. Communication between an accessory and a media player using a protocol with multiple lingoes
US7673083B2 (en) * 2004-04-27 2010-03-02 Apple Inc. Method and system for controlling video selection and playback in a portable media player
US7797471B2 (en) * 2004-04-27 2010-09-14 Apple Inc. Method and system for transferring album artwork between a media player and an accessory
US20050237329A1 (en) * 2004-04-27 2005-10-27 Nvidia Corporation GPU rendering to system memory
US7526588B1 (en) 2004-04-27 2009-04-28 Apple Inc. Communication between an accessory and a media player using a protocol with multiple lingoes
US8117651B2 (en) 2004-04-27 2012-02-14 Apple Inc. Method and system for authenticating an accessory
US7441058B1 (en) 2006-09-11 2008-10-21 Apple Inc. Method and system for controlling an accessory having a tuner
US7529870B1 (en) 2004-04-27 2009-05-05 Apple Inc. Communication between an accessory and a media player with multiple lingoes
US20050257196A1 (en) * 2004-05-17 2005-11-17 Gideon Hollander System and method for developing new services from legacy computer applications
US7747086B1 (en) 2005-07-28 2010-06-29 Teradici Corporation Methods and apparatus for encoding a shared drawing memory
US8442311B1 (en) 2005-06-30 2013-05-14 Teradici Corporation Apparatus and method for encoding an image generated in part by graphical commands
US20060031187A1 (en) * 2004-08-04 2006-02-09 Advizor Solutions, Inc. Systems and methods for enterprise-wide visualization of multi-dimensional data
US7590750B2 (en) * 2004-09-10 2009-09-15 Microsoft Corporation Systems and methods for multimedia remoting over terminal server connections
US20060085562A1 (en) * 2004-10-14 2006-04-20 Blaho Bruce E Devices and methods for remote computing using a network processor
US7450128B2 (en) * 2004-11-15 2008-11-11 Hewlett-Packard Development Company, L.P. Systems and methods of providing image copy and modify commands to a receiver with an associated display
US7823214B2 (en) 2005-01-07 2010-10-26 Apple Inc. Accessory authentication for electronic devices
US20060159432A1 (en) 2005-01-14 2006-07-20 Citrix Systems, Inc. System and methods for automatic time-warped playback in rendering a recorded computer session
US8230096B2 (en) 2005-01-14 2012-07-24 Citrix Systems, Inc. Methods and systems for generating playback instructions for playback of a recorded computer session
US8340130B2 (en) * 2005-01-14 2012-12-25 Citrix Systems, Inc. Methods and systems for generating playback instructions for rendering of a recorded computer session
US8200828B2 (en) 2005-01-14 2012-06-12 Citrix Systems, Inc. Systems and methods for single stack shadowing
US8145777B2 (en) 2005-01-14 2012-03-27 Citrix Systems, Inc. Method and system for real-time seeking during playback of remote presentation protocols
US7996549B2 (en) * 2005-01-14 2011-08-09 Citrix Systems, Inc. Methods and systems for recording and real-time playback of presentation layer protocol data
US7831728B2 (en) * 2005-01-14 2010-11-09 Citrix Systems, Inc. Methods and systems for real-time seeking during real-time playback of a presentation layer protocol data stream
US8296441B2 (en) 2005-01-14 2012-10-23 Citrix Systems, Inc. Methods and systems for joining a real-time session of presentation layer protocol data
US8935316B2 (en) 2005-01-14 2015-01-13 Citrix Systems, Inc. Methods and systems for in-session playback on a local machine of remotely-stored and real time presentation layer protocol data
US20060221869A1 (en) * 2005-03-29 2006-10-05 Teck-Kuen Chua System and method for audio multicast
US7430681B1 (en) 2005-03-30 2008-09-30 Teradici Corporation Methods and apparatus for interfacing a drawing memory with a remote display controller
US8560753B1 (en) 2005-03-30 2013-10-15 Teradici Corporation Method and apparatus for remote input/output in a computer system
US7516255B1 (en) 2005-03-30 2009-04-07 Teradici Corporation Method and apparatus for providing a low-latency connection between a data processor and a remote graphical user interface over a network
US8743019B1 (en) 2005-05-17 2014-06-03 Nvidia Corporation System and method for abstracting computer displays across a host-client network
US7676549B2 (en) * 2005-05-27 2010-03-09 Microsoft Corporation Techniques for providing accessibility options in remote terminal sessions
US7533189B2 (en) 2005-06-21 2009-05-12 Microsoft Corporation Enabling a graphical window modification command to be applied to a remotely generated graphical window
US8345768B1 (en) 2005-07-28 2013-01-01 Teradici Corporation Progressive block encoding using region analysis
US7822278B1 (en) 2005-09-20 2010-10-26 Teradici Corporation Methods and apparatus for encoding a digital video signal
US8107527B1 (en) 2005-07-28 2012-01-31 Teradici Corporation Progressive block encoding using region analysis
US7817849B2 (en) * 2005-08-18 2010-10-19 Hewlett-Packard Development Company, L.P. Method and apparatus for graphical data compression
JP2007065944A (ja) * 2005-08-31 2007-03-15 Hitachi Ltd 計算機情報の表示方法およびシステム
US8191008B2 (en) 2005-10-03 2012-05-29 Citrix Systems, Inc. Simulating multi-monitor functionality in a single monitor environment
US8244051B2 (en) * 2006-03-15 2012-08-14 Microsoft Corporation Efficient encoding of alternative graphic sets
US7950021B2 (en) 2006-03-29 2011-05-24 Imprivata, Inc. Methods and systems for providing responses to software commands
US8775704B2 (en) 2006-04-05 2014-07-08 Nvidia Corporation Method and system for communication between a secondary processor and an auxiliary display subsystem of a notebook
US9195428B2 (en) * 2006-04-05 2015-11-24 Nvidia Corporation Method and system for displaying data from auxiliary display subsystem of a notebook on a main display of the notebook
JP4577267B2 (ja) * 2006-05-17 2010-11-10 株式会社日立製作所 シンクライアントシステム
US8006019B2 (en) * 2006-05-22 2011-08-23 Apple, Inc. Method and system for transferring stored data between a media player and an accessory
US7792792B2 (en) * 2006-05-22 2010-09-07 Microsoft Corporation Synchronizing structured web site contents
US7415563B1 (en) 2006-06-27 2008-08-19 Apple Inc. Method and system for allowing a media player to determine if it supports the capabilities of an accessory
US7558894B1 (en) 2006-09-11 2009-07-07 Apple Inc. Method and system for controlling power provided to an accessory
US8370479B2 (en) 2006-10-03 2013-02-05 Axeda Acquisition Corporation System and method for dynamically grouping devices based on present device conditions
US8065397B2 (en) 2006-12-26 2011-11-22 Axeda Acquisition Corporation Managing configurations of distributed devices
US8234385B2 (en) * 2007-05-16 2012-07-31 Microsoft Corporation Format negotiation for media remoting scenarios
US8140610B2 (en) * 2007-05-31 2012-03-20 Microsoft Corporation Bitmap-based display remoting
JP2007300665A (ja) * 2007-06-29 2007-11-15 Hitachi Ltd 動画像表示方法及びシステム
US8635069B2 (en) 2007-08-16 2014-01-21 Crimson Corporation Scripting support for data identifiers, voice recognition and speech in a telnet session
US8954876B1 (en) * 2007-10-09 2015-02-10 Teradici Corporation Method and apparatus for providing a session status indicator
US8051192B2 (en) * 2007-10-09 2011-11-01 Viasat, Inc. Methods and systems for presentation layer redirection for network optimization
EP2315124B1 (en) * 2008-01-27 2020-08-05 Citrix Systems, Inc. Methods and systems for remoting three dimensional graphics
EP2086236A1 (en) * 2008-01-31 2009-08-05 Hewlett-Packard Development Company, L.P. Method and system for accessing applications
US9161063B2 (en) * 2008-02-27 2015-10-13 Ncomputing, Inc. System and method for low bandwidth display information transport
US8736617B2 (en) * 2008-08-04 2014-05-27 Nvidia Corporation Hybrid graphic display
US8238811B2 (en) 2008-09-08 2012-08-07 Apple Inc. Cross-transport authentication
US8208853B2 (en) 2008-09-08 2012-06-26 Apple Inc. Accessory device authentication
US8880715B2 (en) * 2008-10-23 2014-11-04 Canon Kabushiki Kaisha Remote control of a host computer
US8799425B2 (en) * 2008-11-24 2014-08-05 Nvidia Corporation Configuring display properties of display units on remote systems
US8463848B2 (en) * 2009-07-15 2013-06-11 Hippocrene Llc System and method of transmitting data over a computer network including for presentations over multiple channels in parallel
US9111325B2 (en) * 2009-12-31 2015-08-18 Nvidia Corporation Shared buffer techniques for heterogeneous hybrid graphics
US8780122B2 (en) * 2009-09-16 2014-07-15 Nvidia Corporation Techniques for transferring graphics data from system memory to a discrete GPU
US9054913B1 (en) 2009-11-30 2015-06-09 Dell Software Inc. Network protocol proxy
US8891939B2 (en) * 2009-12-22 2014-11-18 Citrix Systems, Inc. Systems and methods for video-aware screen capture and compression
US9235452B2 (en) * 2010-02-05 2016-01-12 Microsoft Technology Licensing, Llc Graphics remoting using augmentation data
CN102473065B (zh) * 2010-04-13 2015-04-08 松下电器(美国)知识产权公司 截图显示控制装置、截图显示控制方法、截图显示控制用集成电路、服务器装置
CN101848214B (zh) * 2010-04-30 2012-10-03 德讯科技股份有限公司 基于rdp审计数据的任意定位回放方法及系统
US8907987B2 (en) 2010-10-20 2014-12-09 Ncomputing Inc. System and method for downsizing video data for memory bandwidth optimization
US8615159B2 (en) 2011-09-20 2013-12-24 Citrix Systems, Inc. Methods and systems for cataloging text in a recorded session
US9026615B1 (en) 2011-09-22 2015-05-05 Teradici Corporation Method and apparatus for caching image data transmitted over a lossy network
KR101700821B1 (ko) * 2012-08-21 2017-02-01 한국전자통신연구원 스케일러블 원격화면 전송방법 및 그 장치
US9842532B2 (en) 2013-09-09 2017-12-12 Nvidia Corporation Remote display rendering for electronic devices
CN103543975B (zh) * 2013-10-15 2016-09-28 广州杰赛科技股份有限公司 基于rdp协议的云计算终端显示优化方法及系统
EP2887021B1 (en) * 2013-12-20 2019-05-15 Airbus Operations GmbH Merging human machine interfaces of segregated domains
CN104579934B (zh) 2015-02-10 2016-08-17 腾讯科技(深圳)有限公司 一种信息处理方法及客户端
CN104615747B (zh) * 2015-02-11 2017-05-17 腾讯科技(深圳)有限公司 一种信息处理方法、客户端及服务器
US10148964B2 (en) * 2016-11-03 2018-12-04 Ujet, Inc. Image quality management
US10581939B2 (en) 2018-01-26 2020-03-03 Citrix Systems, Inc. Virtual computing system providing local screen sharing from hosted collaboration applications and related methods
US10904325B2 (en) 2018-05-04 2021-01-26 Citrix Systems, Inc. WebRTC API redirection with screen sharing
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information
US10452868B1 (en) 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering

Family Cites Families (135)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4013828A (en) 1976-02-20 1977-03-22 Bell Telephone Laboratories, Incorporated Method and arrangement for reducing the bandwidth and/or time required to transmit a dithered image
US4410916A (en) 1979-08-24 1983-10-18 Compression Labs, Inc. Dual mode facsimile coding system and method
US4463424A (en) 1981-02-19 1984-07-31 International Business Machines Corporation Method for dynamically allocating LRU/MRU managed memory among concurrent sequential processes
US4562423A (en) 1981-10-15 1985-12-31 Codex Corporation Data compression
US4499499A (en) 1982-12-29 1985-02-12 International Business Machines Corporation Method for identification and compression of facsimile symbols in text processing systems
US4545016A (en) 1983-01-07 1985-10-01 Tandy Corporation Memory management system
US4796003A (en) 1984-06-28 1989-01-03 American Telephone And Telegraph Company Data compaction
GB2172127B (en) 1985-03-06 1988-10-12 Ferranti Plc Data compression system
JPS62282328A (ja) 1986-02-21 1987-12-08 Hitachi Ltd 多重画面制御方式
US4899149A (en) 1986-02-28 1990-02-06 Gary Kahan Method of and apparatus for decoding Huffman or variable-length coees
US4862392A (en) 1986-03-07 1989-08-29 Star Technologies, Inc. Geometry processor for graphics display system
US5481740A (en) 1986-04-14 1996-01-02 National Instruments Corporation Method and apparatus for providing autoprobe features in a graphical data flow diagram
US4937036A (en) 1986-04-28 1990-06-26 Xerox Corporation Concurrent display of data from two different display processors and user interface therefore
JP2608400B2 (ja) 1986-06-16 1997-05-07 富士写真フイルム株式会社 圧縮処理を経た画像データからの画像再構成方法
US4862167A (en) 1987-02-24 1989-08-29 Hayes Microcomputer Products, Inc. Adaptive data compression method and apparatus
US5072412A (en) 1987-03-25 1991-12-10 Xerox Corporation User interface with multiple workspaces for sharing display system objects
US4949281A (en) 1987-04-23 1990-08-14 H. Berthold Ag Method and apparatus for generating and producing two-dimensional graphic object by polynominal parametric curves
US4992954A (en) 1987-08-05 1991-02-12 Hitachi, Ltd. Method of storing character patterns and character pattern utilization system
US4928247A (en) 1987-08-13 1990-05-22 Digital Equipment Corporation Method and apparatus for the continuous and asynchronous traversal and processing of graphics data structures
US4903218A (en) 1987-08-13 1990-02-20 Digital Equipment Corporation Console emulation for a graphics workstation
US4870662A (en) 1987-12-01 1989-09-26 Concord Data Systems, Inc. System and method for compressing transmitted or stored data
US5103303A (en) 1988-04-19 1992-04-07 Konica Corporation Multicolor imaging forming apparatus
US4958303A (en) 1988-05-12 1990-09-18 Digital Equipment Corporation Apparatus for exchanging pixel data among pixel processors
JP2790815B2 (ja) 1988-08-10 1998-08-27 株式会社リコー 画像データ圧縮方法
US5016009A (en) 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
US5126739A (en) 1989-01-13 1992-06-30 Stac Electronics Data compression apparatus and method
EP0384339B1 (en) 1989-02-24 1997-04-02 Digital Equipment Corporation Broker for computer network server selection
KR930003126B1 (ko) 1989-04-20 1993-04-19 가부시기가이샤 도시바 곡선정합에 있어서 형상을 표시하는 직선쇼트벡터의 접속상태를 판정하는 방법 및 시스템
JP2805096B2 (ja) 1989-10-31 1998-09-30 ソニー株式会社 ディジタル変調方法及び復調方法
US5119319A (en) 1989-12-14 1992-06-02 Options Unlimited Research Corp. Full-duplex video communication system
US5001478A (en) 1989-12-28 1991-03-19 International Business Machines Corporation Method of encoding compressed data
US5309555A (en) 1990-05-15 1994-05-03 International Business Machines Corporation Realtime communication of hand drawn images in a multiprogramming window environment
US5049881A (en) 1990-06-18 1991-09-17 Intersecting Concepts, Inc. Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
US5051745A (en) 1990-08-21 1991-09-24 Pkware, Inc. String searcher, and compressor using same
US5204947A (en) 1990-10-31 1993-04-20 International Business Machines Corporation Application independent (open) hypermedia enablement services
US5241625A (en) 1990-11-27 1993-08-31 Farallon Computing, Inc. Screen image sharing among heterogeneous computers
EP0773685B1 (en) 1990-12-26 2002-06-05 Canon Kabushiki Kaisha Multi-media communication apparatus
US5161015A (en) 1990-12-31 1992-11-03 Zenith Electronics Corporation System for peaking a video signal with a control signal representative of the perceptual nature of blocks of video pixels
US5164727A (en) 1991-04-30 1992-11-17 Regents Of The Unversity Of California Optimal decoding method and apparatus for data acquisition applications of sigma delta modulators
CA2069355C (en) 1991-06-07 1998-10-06 Robert C. Pike Global user interface
US5315698A (en) 1991-08-21 1994-05-24 Digital Equipment Corporation Method and apparatus for varying command length in a computer graphics system
US5321806A (en) 1991-08-21 1994-06-14 Digital Equipment Corporation Method and apparatus for transmitting graphics command in a computer graphics system
US5481704A (en) * 1991-09-27 1996-01-02 Computer Concepts Corp. Indexing/compression scheme for supporting graphics and data selection
US5349682A (en) 1992-01-31 1994-09-20 Parallel Pcs, Inc. Dynamic fault-tolerant parallel processing system for performing an application function with increased efficiency using heterogeneous processors
US5351129A (en) 1992-03-24 1994-09-27 Rgb Technology D/B/A Rgb Spectrum Video multiplexor-encoder and decoder-converter
US5406279A (en) 1992-09-02 1995-04-11 Cirrus Logic, Inc. General purpose, hash-based technique for single-pass lossless data compression
US5557749A (en) 1992-10-15 1996-09-17 Intel Corporation System for automatically compressing and decompressing data for sender and receiver processes upon determination of a common compression/decompression method understood by both sender and receiver processes
US5537551A (en) 1992-11-18 1996-07-16 Denenberg; Jeffrey N. Data compression method for use in a computerized informational and transactional network
US5455576A (en) 1992-12-23 1995-10-03 Hewlett Packard Corporation Apparatus and methods for Lempel Ziv data compression with improved management of multiple dictionaries in content addressable memory
SE500721C2 (sv) 1993-01-27 1994-08-15 Sandvik Ab Skär med vriden spånyta
US5469540A (en) 1993-01-27 1995-11-21 Apple Computer, Inc. Method and apparatus for generating and displaying multiple simultaneously-active windows
IL104568A (en) 1993-01-31 1995-12-31 Age Computational Graphics Ltd Method and system for generating amplified output signals
US5544352A (en) * 1993-06-14 1996-08-06 Libertech, Inc. Method and apparatus for indexing, searching and displaying data
US5850540A (en) 1993-07-02 1998-12-15 Sony Corporation Method and apparatus for time-sharing CPU system bus in image generation system
US5521597A (en) 1993-08-02 1996-05-28 Mircosoft Corporation Data compression for network transport
US5359593A (en) 1993-08-26 1994-10-25 International Business Machines Corporation Dynamic bandwidth estimation and adaptation for packet communications networks
DE4417588A1 (de) 1993-08-30 1995-03-02 Hewlett Packard Co Verfahren und Vorrichtung zum Erfassen und Weiterleiten von Fensterereignissen zu einer Mehrzahl von bestehenden Anwendungen zur gleichzeitigen Ausführung
US5844553A (en) 1993-08-30 1998-12-01 Hewlett-Packard Company Mechanism to control and use window events among applications in concurrent computing
GB2281793A (en) 1993-09-11 1995-03-15 Ibm A data processing system for providing user load levelling in a network
US5384568A (en) 1993-12-02 1995-01-24 Bell Communications Research, Inc. Data compression
US5515508A (en) 1993-12-17 1996-05-07 Taligent, Inc. Client server system and method of operation including a dynamically configurable protocol stack
US5473742A (en) 1994-02-22 1995-12-05 Paragraph International Method and apparatus for representing image data using polynomial approximation method and iterative transformation-reparametrization technique
US5526344A (en) 1994-04-15 1996-06-11 Dsc Communications Corporation Multi-service switch for a telecommunications network
US5577188A (en) 1994-05-31 1996-11-19 Future Labs, Inc. Method to provide for virtual screen overlay
US5572206A (en) 1994-07-06 1996-11-05 Microsoft Corporation Data compression method and system
JPH0855019A (ja) * 1994-08-10 1996-02-27 Hitachi Ltd 視覚的プログラミング方法
US5485460A (en) 1994-08-19 1996-01-16 Microsoft Corporation System and method for running multiple incompatible network protocol stacks
US5566288A (en) 1994-09-02 1996-10-15 Caterpillar Inc. System and method for automatically fitting a B-spline curve to a set of data points
US5623603A (en) 1994-11-02 1997-04-22 Fls Acquistion Corporation Method of transferring data at adjustable levels of priorities to provide optimum response to user demands
US5659685A (en) 1994-12-13 1997-08-19 Microsoft Corporation Method and apparatus for maintaining network communications on a computer capable of connecting to a WAN and LAN
US5771034A (en) 1995-01-23 1998-06-23 Microsoft Corporation Font format
US5784570A (en) 1995-04-07 1998-07-21 At&T Corp Server for applying a recipient filter and compressing the input data stream based upon a set of at least one characteristics in a multiuser interactive virtual environment
US5621660A (en) 1995-04-18 1997-04-15 Sun Microsystems, Inc. Software-based encoder for a software-implemented end-to-end scalable video delivery system
US5864711A (en) 1995-07-05 1999-01-26 Microsoft Corporation System for determining more accurate translation between first and second translator, and providing translated data to second computer if first translator is more accurate
US5874960A (en) 1995-07-05 1999-02-23 Microsoft Corporation Method and system for sharing applications between computer systems
US5767849A (en) 1995-08-18 1998-06-16 International Business Machines Corporation Personality neutral window management subsystem
US5657390A (en) 1995-08-25 1997-08-12 Netscape Communications Corporation Secure socket layer application program apparatus and method
US5758186A (en) 1995-10-06 1998-05-26 Sun Microsystems, Inc. Method and apparatus for generically handling diverse protocol method calls in a client/server computer system
US5826027A (en) 1995-10-11 1998-10-20 Citrix Systems, Inc. Method for supporting an extensible and dynamically bindable protocol stack in a distrubited process system
US6081623A (en) 1995-10-11 2000-06-27 Citrix Systems, Inc. Method for lossless bandwidth compression of a series of glyphs
US6473609B1 (en) * 1995-12-11 2002-10-29 Openwave Systems Inc. Method and architecture for interactive two-way communication devices to interact with a network
US6161126A (en) 1995-12-13 2000-12-12 Immersion Corporation Implementing force feedback over the World Wide Web and other computer networks
JP3493091B2 (ja) 1996-01-25 2004-02-03 富士通株式会社 情報表示システム、情報提供装置及び情報表示装置
JPH09233467A (ja) 1996-02-21 1997-09-05 Fujitsu Ltd 画像データ通信装置及び画像データ通信システムにおける通信データ量調整方法
US5961588A (en) 1996-02-22 1999-10-05 Alcatel Usa Sourcing, L.P. Handling of commands passed between the server and client stations of a telecommunications system
US5838910A (en) 1996-03-14 1998-11-17 Domenikos; Steven D. Systems and methods for executing application programs from a memory device linked to a server at an internet site
US5740171A (en) 1996-03-28 1998-04-14 Cisco Systems, Inc. Address translation mechanism for a high-performance network switch
US6112250A (en) 1996-04-11 2000-08-29 America Online, Inc. Recompression of files at an intermediate node in a network system
US5864678A (en) 1996-05-08 1999-01-26 Apple Computer, Inc. System for detecting and reporting data flow imbalance between computers using grab rate outflow rate arrival rate and play rate
US5996022A (en) 1996-06-03 1999-11-30 Webtv Networks, Inc. Transcoding data in a proxy computer prior to transmitting the audio data to a client
US6034689A (en) 1996-06-03 2000-03-07 Webtv Networks, Inc. Web browser allowing navigation between hypertext objects using remote control
US6057857A (en) 1996-06-12 2000-05-02 Citrix Systems, Inc. Method for the lossless compression of lines in a distributed computer system
US6014133A (en) 1996-06-14 2000-01-11 Seiko Epson Corporation Data transmitter/receiver apparatus, data transmitter, data receiver, and data compression method
US5881241A (en) 1996-06-19 1999-03-09 Sun Microsystems, Inc. System for transmitting data packet after matching data packet's routing pattern with predetermined data routes stored in a route table
US5757925A (en) 1996-07-23 1998-05-26 Faybishenko; Yaroslav Secure platform independent cross-platform remote execution computer system and method
US5918019A (en) 1996-07-29 1999-06-29 Cisco Technology, Inc. Virtual dial-up protocol for network communication
US6052120A (en) 1996-10-01 2000-04-18 Diamond Multimedia Systems, Inc. Method of operating a portable interactive graphics display tablet and communications systems
US5944791A (en) 1996-10-04 1999-08-31 Contigo Software Llc Collaborative web browser
US5931904A (en) 1996-10-11 1999-08-03 At&T Corp. Method for reducing the delay between the time a data page is requested and the time the data page is displayed
GB9623298D0 (en) 1996-11-08 1997-01-08 Int Computers Ltd Updating mechanism for software
US5911044A (en) 1996-11-08 1999-06-08 Ricoh Company, Ltd. Network image scanning system which transmits image information from a scanner over a network to a client computer
US6185625B1 (en) 1996-12-20 2001-02-06 Intel Corporation Scaling proxy server sending to the client a graphical user interface for establishing object encoding preferences after receiving the client's request for the object
US5949975A (en) 1997-03-12 1999-09-07 Microsoft Corp. Method and system for negotiating capabilities when sharing an application program with multiple computer systems
AUPO661797A0 (en) * 1997-05-06 1997-05-29 Florenca, Isaiah Three dimensional graphical display generating system and method for computer drawing
US6061714A (en) 1997-05-07 2000-05-09 International Business Machines Corporation Persistent cache synchronization and start up system
US5983190A (en) 1997-05-19 1999-11-09 Microsoft Corporation Client server animation system for managing interactive user interface characters
US5877757A (en) 1997-05-23 1999-03-02 International Business Machines Corporation Method and system for providing user help information in network applications
US6430591B1 (en) * 1997-05-30 2002-08-06 Microsoft Corporation System and method for rendering electronic images
RU2210871C2 (ru) 1997-08-06 2003-08-20 Тэчйон, Инк. Распределенная система и способ предварительной выборки объектов
US5999950A (en) 1997-08-11 1999-12-07 Webtv Networks, Inc. Japanese text input method using a keyboard with only base kana characters
US5953503A (en) * 1997-10-29 1999-09-14 Digital Equipment Corporation Compression protocol with multiple preset dictionaries
US5999179A (en) 1997-11-17 1999-12-07 Fujitsu Limited Platform independent computer network management client
US6260044B1 (en) * 1998-02-04 2001-07-10 Nugenesis Technologies Corporation Information storage and retrieval system for storing and retrieving the visual form of information from an application in a database
US6112244A (en) 1998-02-27 2000-08-29 Motorola, Inc. Method and apparatus in a wireless communication system for compressing and decompressing messages generated by a plurality of applications
US6148340A (en) * 1998-04-30 2000-11-14 International Business Machines Corporation Method and system for differencing container files
US6353839B1 (en) * 1998-04-30 2002-03-05 Openwave Systems Inc. Method for inline variables management in a hypermedia display language
US5956490A (en) 1998-06-30 1999-09-21 Motorola, Inc. Method, client device, server and computer readable medium for specifying and negotiating compression of uniform resource identifiers
US6182125B1 (en) 1998-10-13 2001-01-30 3Com Corporation Methods for determining sendable information content based on a determined network latency
US6178461B1 (en) 1998-12-08 2001-01-23 Lucent Technologies Inc. Cache-based compaction technique for internet browsing using similar objects in client cache as reference objects
US6507867B1 (en) * 1998-12-22 2003-01-14 International Business Machines Corporation Constructing, downloading, and accessing page bundles on a portable client having intermittent network connectivity
US6345279B1 (en) * 1999-04-23 2002-02-05 International Business Machines Corporation Methods and apparatus for adapting multimedia content for client devices
US6427149B1 (en) * 1999-09-09 2002-07-30 Herman Rodriguez Remote access of archived compressed data files
US6449658B1 (en) 1999-11-18 2002-09-10 Quikcat.Com, Inc. Method and apparatus for accelerating data through communication networks
AU3274301A (en) * 2000-01-05 2001-07-16 Realnetworks, Inc. Systems and methods for multiple-file data compression
KR20010073607A (ko) * 2000-01-19 2001-08-01 구자홍 화상통신기기의 데이터 전송 프로토콜
WO2001063485A2 (en) * 2000-02-24 2001-08-30 Transfinity Corporation Content distribution system
WO2001093525A2 (en) * 2000-05-26 2001-12-06 Citrix Systems, Inc. Method and system for efficiently reducing graphical display data for transmission over a low bandwidth transport protocol mechanism
US6704024B2 (en) * 2000-08-07 2004-03-09 Zframe, Inc. Visual content browsing using rasterized representations
JP4223689B2 (ja) * 2000-12-26 2009-02-12 エスアイアイ・ナノテクノロジー株式会社 派生データ表示調整システム
US20020107988A1 (en) * 2001-02-05 2002-08-08 James Jordan In-line compression system for low-bandwidth client-server data link
US20020162068A1 (en) * 2001-04-25 2002-10-31 Jens Meggers Weak data verification for low processing power devices
US20030004933A1 (en) * 2001-06-28 2003-01-02 Doron Ben-Yehezkel Compound request processing
US6709651B2 (en) 2001-07-03 2004-03-23 B.M.R.A. Corporation B.V. Treatment of substance P-related disorders
US7305114B2 (en) * 2001-12-26 2007-12-04 Cognex Technology And Investment Corporation Human/machine interface for a machine vision sensor and method for installing and operating the same
US7376695B2 (en) * 2002-03-14 2008-05-20 Citrix Systems, Inc. Method and system for generating a graphical display for a remote terminal session

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100772407B1 (ko) * 2006-05-04 2007-11-01 삼성전자주식회사 임베디드 디스플레이 시스템 및 방법
KR101401380B1 (ko) * 2010-11-04 2014-05-30 한국전자통신연구원 원격 렌더링 기반의 3d 응용프로그램 실행 장치 및 그 방법

Also Published As

Publication number Publication date
EP2275948A1 (en) 2011-01-19
CA2478994A1 (en) 2003-09-25
WO2003079212A1 (en) 2003-09-25
AU2003220302A1 (en) 2003-09-29
AU2009251123A1 (en) 2010-01-21
US8131817B2 (en) 2012-03-06
EP2284722B1 (en) 2019-07-24
EP1488326A1 (en) 2004-12-22
US8131816B2 (en) 2012-03-06
JP2005521280A (ja) 2005-07-14
IL164052A (en) 2011-01-31
EP2280352B1 (en) 2019-07-24
AU2009251123B2 (en) 2012-04-12
IL164052A0 (en) 2005-12-18
US20050198189A1 (en) 2005-09-08
US20030177172A1 (en) 2003-09-18
AU2003220302B2 (en) 2010-01-28
EP2284722A1 (en) 2011-02-16
EP1488326A4 (en) 2007-11-28
US20080201405A1 (en) 2008-08-21
EP2280352A1 (en) 2011-02-02
EP1488326B1 (en) 2018-07-11
US7376695B2 (en) 2008-05-20

Similar Documents

Publication Publication Date Title
KR20040104515A (ko) 클라이언트에서 그래픽 및 미디어 디스플레이를 생성하기위한 방법 및 장치
US7254786B2 (en) System for transmitting and displaying icon resources group associated with remote application to a local computing system to facilitate virtualization of the remote application
JP5373135B2 (ja) 代替的グラフィック・セットの効率的な符号化
KR100824121B1 (ko) 저밴드폭 전송 프로토콜 메카니즘을 통해 전송에 대한그래픽 디스플레이 데이터를 효율적으로 감소하기 위한방법 및 시스템
JP4363847B2 (ja) インタラクティブ・テレビ用のデジタル・テレビ・アプリケーション・プロトコル
EP1665798A1 (en) Method and apparatus for generating graphical and media displays at a thin client
JP5123186B2 (ja) 任意のフォーマットにおけるラージオブジェクトの通信のためのリモートプロトコルサポート
US20040080533A1 (en) Accessing rendered graphics over the internet
CN109040786B (zh) 摄像头数据的传输方法、装置、系统及存储介质
US9325759B2 (en) Methods and apparatus for generating graphical and media displays at a client
JP4691037B2 (ja) リモートなビジュアル構成のためのプロトコル
CN115052043B (zh) 一种云桌面的视频传输方法、电子设备、装置及介质
EP1821490A1 (en) Method for transmitting graphical data to a thin client

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid