KR20060110267A - Method and apparatus for generating graphical and media display at a thin client - Google Patents

Method and apparatus for generating graphical and media display at a thin client Download PDF

Info

Publication number
KR20060110267A
KR20060110267A KR1020067005104A KR20067005104A KR20060110267A KR 20060110267 A KR20060110267 A KR 20060110267A KR 1020067005104 A KR1020067005104 A KR 1020067005104A KR 20067005104 A KR20067005104 A KR 20067005104A KR 20060110267 A KR20060110267 A KR 20060110267A
Authority
KR
South Korea
Prior art keywords
client
data set
media
server
compressed data
Prior art date
Application number
KR1020067005104A
Other languages
Korean (ko)
Inventor
데이비드 로빈슨
리 라보르츠팰비
피에르 세맨
애닐 로이카우드라이
마르틴 듀얼스마
아나톨리 파나슠크
죠오지 몸트필로프
Original Assignee
사이트릭스 시스템스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 사이트릭스 시스템스, 인크. filed Critical 사이트릭스 시스템스, 인크.
Publication of KR20060110267A publication Critical patent/KR20060110267A/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software
    • H04N21/8193Monomedia components thereof involving executable data, e.g. software dedicated tools, e.g. video decoder software or IPMP tool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23113Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving housekeeping operations for stored content, e.g. prioritizing content for deletion because of storage space restrictions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/2312Data placement on disk arrays
    • H04N21/2318Data placement on disk arrays using striping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2347Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving video stream encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808Management of client data
    • H04N21/25858Management of client data involving client software characteristics, e.g. OS identifier
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/414Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
    • H04N21/41407Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance embedded in a portable device, e.g. video client on a mobile phone, PDA, laptop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/414Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
    • H04N21/41415Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance involving a public display, viewable by several users in a public space outside their home, e.g. movie theatre, information kiosk
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/414Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
    • H04N21/4143Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance embedded in a Personal Computer [PC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof
    • H04N21/42653Internal components of the client ; Characteristics thereof for processing graphics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4331Caching operations, e.g. of an advertisement for later insertion during playback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44209Monitoring of downstream path of the transmission network originating from a server, e.g. bandwidth variations of a wireless network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/4424Monitoring of the internal components or processes of the client device, e.g. CPU or memory load, processing speed, timer, counter or percentage of the hard disk space used
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/4425Monitoring of client processing errors or hardware failure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4431OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB characterized by the use of Application Program Interface [API] libraries
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47202End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting content on demand, e.g. video on demand
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6143Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via a satellite
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6156Network physical structure; Signal processing specially adapted to the upstream path of the transmission network
    • H04N21/6175Network physical structure; Signal processing specially adapted to the upstream path of the transmission network involving transmission via Internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/637Control signals issued by the client directed to the server or network components
    • H04N21/6373Control signals issued by the client directed to the server or network components for rate control, e.g. request to the server to modify its transmission rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/637Control signals issued by the client directed to the server or network components
    • H04N21/6377Control signals issued by the client directed to the server or network components directed to server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/64Addressing
    • H04N21/6408Unicasting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/643Communication protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/654Transmission by server directed to the client
    • H04N21/6547Transmission by server directed to the client comprising parameters, e.g. for client setup
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6582Data stored in the client, e.g. viewing habits, hardware capabilities, credit card number
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6583Acknowledgement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6587Control parameters, e.g. trick play commands, viewpoint selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/812Monomedia components thereof involving advertisement data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8146Monomedia components thereof involving graphical data, e.g. 3D object, 2D graphics
    • H04N21/8153Monomedia components thereof involving graphical data, e.g. 3D object, 2D graphics comprising still images, e.g. texture, background image
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • H04N7/17309Transmission or handling of upstream communications
    • H04N7/17336Handling of requests in head-ends

Abstract

The invention relates to generating at a client a display having a graphical and/or media components. A method for generating a media presentation at a client includes transmitting output from an application program executing on a server to the client, identifying a media stream within an application output, receiving an compressed data set representing at least a portion of the media stream and transmitting the compressed data set to the client. At least one of timing and control information associated with the media stream is captured and transmitted to the client.

Description

신 클라이언트에서 그래픽 및 미디어 디스플레이를 생성하기 위한 장치 및 방법{Method and Apparatus for Generating Graphical and Media Display at a Thin Client}Method and Apparatus for Generating Graphical and Media Display at a Thin Client}

본 발명은 일반적으로 분산 처리와 연관된 것으로 보다 상세하게는 클라이언트에서 그래픽 및/또는 미디어 컴포넌트들을 갖는 디스플레이를 생성하는 것과 연관된 발명이다. The present invention is generally related to distributed processing and more particularly to the creation of a display having graphics and / or media components at a client.

신 클라이언트(thin client) 프로토콜은 서버상에서 실행되는 애플리케이션에 의해 생성된 출력을 제한된 처리 능력을 갖는 컴퓨터상에서 실행되는 클라이언트에 디스플레이하는데 사용될 수 있다. 신 클라이언트 프로토콜의 두 가지 예로써 ICA(Citrix Systems 사의 Independent Computing Architecture ) 와 RDP(Microsoft사의 Remote Desktop Protocol)를 들 수 있다. 상기 클라이언트는 때때로 원격 터미널 세션으로 불리기도 한다. 단일한 신 클라이언트 프로토콜은 디스플레이 스크린에 표시하기 위해 서버 운영 체제(OS)로 가는 커맨드를 애플리케이션 프로그램을 통해 인터셉트한다. 인터셉트된 커맨드들은 예를 들면 하나 또는 그 이상의 프리젠테이션 계층 패킷들을 사용하여 원격 세션으로 전송된다. 상기 원격 세션(예를 들면 신 클라이언트)이 상기 커맨드를 수신하면 상기 원격 세션은 상기 수신된 커맨드를 원격 세션 OS로 전송한다. 상기 신 클라이언트는 상기 수신된 커맨드들을 사용하여 애플리케이션 프로그램 출력을 디스플레이에 표시한다. 이와 같은 방식으로, 상기 애플리케이션 프로그램은 신 클라이언트 상에서 실행되는 것처럼 보이게 된다. The thin client protocol can be used to display output generated by an application running on a server to a client running on a computer with limited processing power. Two examples of new client protocols are ICA (Independent Computing Architecture from Citrix Systems) and RDP (Microsoft's Remote Desktop Protocol). The client is sometimes called a remote terminal session. A single scene client protocol intercepts, via an application program, commands to the server operating system (OS) for display on a display screen. Intercepted commands are sent to the remote session using, for example, one or more presentation layer packets. When the remote session (eg scene client) receives the command, the remote session sends the received command to a remote session OS. The scene client uses the received commands to display an application program output on a display. In this way, the application program appears to be running on the scene client.

애플리케이션 프로그램이 이미지를 디스플레이 스크린에 표시할 때 상기 이미지는 통상적으로 비트맵형태로 표시된다. 이미지의 비트맵 포맷은 일반적으로 상당히 큰 사이즈의 데이터 세트이다. 따라서, 상기 신 클라이언트 프로토콜은 이미지의 비트맵 표시와 상기 비트맵 표시를 디스플레이하는 방법에 대한 적용가능한 커맨드들을 함께 네트워크를 통해 전송해야 한다. 저대역의 네트워크의 경우, 완전한 이미지가 수신되고 클라이언트 상에 디스플레이되기 전까지 시간적으로 상당한 지연이 발생한다. 이로 인해 상기 클라이언트의 사용자는 불편함과 불쾌감을 갖는다. 또한, 사용자가 상기와 같은 대형 비트맵 포맷들을 전송하는데 사용된 대역폭에 대해 직접 지급한다면-예를 들면, 무선 네트워크와 같은 경우- 각각의 전송마다 상당한 비용을 지급하게 된다. When an application program displays an image on a display screen, the image is typically displayed in bitmap form. The bitmap format of an image is usually a fairly large data set. Thus, the scene client protocol must send over the network together a bitmap representation of the image and applicable commands for how to display the bitmap representation. For low bandwidth networks, there is a significant delay in time before the complete image is received and displayed on the client. This results in inconvenience and discomfort for the user of the client. In addition, if the user pays directly for the bandwidth used to transmit such large bitmap formats-such as in a wireless network-then there is a significant cost for each transmission.

애플리케이션 프로그램이 미디어 프리젠테이션을 렌더링할 때도 유사한 문제점이 있다. 통상적으로, 비디오 파일은 비트맵들의 연속으로 렌더링 되어 있으며, 오디오 정보는 펄스 코드 변조를 사용하여 렌더링 되어 있다. 따라서, 상기 신 클라이언트 프로토콜은 비디오 파일을 나타내는 비트맵들의 연속물들 및/또는 오디오 정보를 나타내는 펄스 코드 변조된 신호를 네트워크를 통해 전송한다. 상기 전송은 과도한 대역폭과 현저한 CPU 사용을 필요로 하기 때문에 비효율적이다. 게다가, 충분한 대역폭을 사용할 수 있다고 해도 클라이언트 상에서는 더딘 그래픽 사용자 인터페이스로 나타날 것이다. 예를 들면, 비디오 재생은 종종 저화질이거나 저크(jerk)가 발생할 수 있으며 오디오 신호와 잘 동기화되지 않을 수 있다. There is a similar problem when an application program renders a media presentation. Typically, video files are rendered as a series of bitmaps, and audio information is rendered using pulse code modulation. Thus, the scene client protocol transmits over the network a pulse code modulated signal representing a series of bitmaps representing a video file and / or audio information. The transmission is inefficient because it requires excessive bandwidth and significant CPU usage. In addition, even if enough bandwidth is available, it will appear as a slow graphical user interface on the client. For example, video playback can often be of poor quality or jerk and may not be well synchronized with the audio signal.

따라서, 원격 터미널 세션에서 이미지와 미디어 프리젠테이션을 렌더링하는 데 있어 보다 개선된 접근방법이 요구된다. Thus, there is a need for an improved approach to rendering images and media presentations in remote terminal sessions.

상기 발명은 첨부한 도면과 일치하는 다음의 설명을 참조할 때 더 잘 이해될 수 있다.The invention may be better understood with reference to the following description in accordance with the accompanying drawings.

도 1은 본원 발명에 따라 원격 터미널 세션을 위한 그래픽 디스플레이를 생성하기 위한 시스템의 일실시 예를 도시한 블록도,1 is a block diagram illustrating one embodiment of a system for generating a graphical display for a remote terminal session in accordance with the present invention;

도 2는 본원 발명에 따라 원격 터미널 세션을 위한 그래픽 디스플레이를 생성하기 위한 과정의 일실시 예를 도시한 흐름도,2 is a flow diagram illustrating one embodiment of a process for generating a graphical display for a remote terminal session in accordance with the present invention;

도 3은 본원 발명에 따라 클라이언트 측에서 미디어 프리젠테이션을 생성하기 위한 장치의 일실시 예를 도시한 블록도,3 is a block diagram illustrating one embodiment of an apparatus for generating a media presentation at a client side in accordance with the present invention;

도 4a,4b 및 4c는 본원 발명에 따라 클라이언트 측에서 미디어 프리젠테이션을 생성하기 위한 방법의 일실시 예를 도시한 흐름도,4A, 4B and 4C are flow charts illustrating one embodiment of a method for generating a media presentation at a client side in accordance with the present invention;

도 5a,5b 및 5c는 본원 발명에 따라 클라이언트 측에서 미디어 프리젠테이션을 생성하기 위한 방법의 일실시 예를 도시한 흐름도.5A, 5B and 5C are flow diagrams illustrating one embodiment of a method for generating a media presentation at a client side in accordance with the present invention.

한가지 장점에 따르면, 본원 발명은 원래 대형 비트맵 포맷들로 표시되었던 이미지들 및 다른 비 텍스트 요소들을 그 전송 전에 비트맵 포맷 대신 가용한 압축된 포맷들로 교체하여 전송에 드는 시간과 비용을 절감할 수 있다. 몇몇 시스템들에서는 이미지들 및 다른 멀티미디어 컨텐츠는 JPEG, PNG, GIF, MPEG3 또는 MPEG4와 같은 이미 압축된 포맷형태로 전송된다. 상기 시스템들에서는, 이미 압축된 포맷을 가로채고 보다 압축된 포맷 형태인 또 다른 버전의 미디어 스트림으로 교체하는 과정을 통해 상기 미디어들을 전송하는데 드는 시간과 비용이 절감될 것이다. 압축된 포맷들을 전송하는 것은 미디어 스트림을 전송하는데 필요한 대역폭을 크게 감소 시킬 수 있다. 클라이언트는 가용한 라이브러리들을 이용하여 수신된 데이터의 압축을 푼다. 그리고 클라이언트는 예를 들면 다른 식별 데이터(identifying data)를 갖는 수정된 신 클라이언트 프로토콜 커맨드들을 사용하여 압축해제된 이미지를 원본 비트맵 표시로 교체한다.According to one advantage, the present invention saves the time and cost of transmission by replacing images and other non-text elements that were originally displayed in large bitmap formats with compressed formats available instead of the bitmap format prior to transmission. Can be. In some systems images and other multimedia content are transmitted in an already compressed format such as JPEG, PNG, GIF, MPEG3 or MPEG4. In such systems, the time and cost of transferring the media will be reduced by intercepting the already compressed format and replacing it with another version of the media stream, which is in the more compressed format. Sending compressed formats can greatly reduce the bandwidth required to transmit the media stream. The client decompresses the received data using the available libraries. The client then replaces the decompressed image with the original bitmap representation using, for example, modified scene client protocol commands with different identifying data.

본원 발명의 또 다른 장점에 따르면, 미디어 스트림의 최소한의 일부분을 나타내는 압축된 데이터 세트는 압축해제되기 전에 첫 번째 컴퓨팅 디바이스상에서 인터셉트된다. 대안적으로, 압축된 데이터 세트는 첫 번째 컴퓨팅 디바이스상에서 압축해제되며, 압축해제된 데이터 세트는 첫 번째 컴퓨팅 디바이스상에서 재압축된다. 제한된 대역폭을 갖고 있는 네트워크상에서, 압축해제된 데이터 세트보다는 상기 압축된 데이터 세트를 전송하는 것에 의해 데이터 세트를 전송하는데 드는 비용과 시간이 결과적으로 감소된다.According to another advantage of the invention, the compressed data set representing at least a portion of the media stream is intercepted on the first computing device before being decompressed. Alternatively, the compressed data set is decompressed on the first computing device and the decompressed data set is recompressed on the first computing device. On networks with limited bandwidth, the cost and time spent transmitting the data set is consequently reduced by transmitting the compressed data set rather than the decompressed data set.

통신에 필요한 대역폭을 감소시킴에 따라 시간과 비용이 절감될 뿐 아니라, 본원 발명을 사용하는 클라이언트들과 서버들은 개선된 성능을 보이게 된다. 본원 발명에 따라 서버가 비문자 요소(non-textual element) 또는 미디어 스트림의 압축 데이터 표시를 전송할 때, 상기 서버의 중앙 처리 장치(CPU)의 처리 부담은 감소된다. 그렇지 않으면 상기 서버의 CPU는 압축 데이터를 압축 해제하고 압축되지 않은 대용량의 데이터를 전송하고 네트워크 통신의 늘어난 용량의 추가적인 처리에 처리 능력을 소비하게 된다. 하나의 서버는 복수의 클라이언트들과 상호작용할 수 있고, 압축해제 및 렌더링 연산을 클라이언트에 위임하는 것 또한 서버의 성능을 향상할 수 있다. 클라이언트의 성능은 압축되지 않은 대용량 데이터의 수신관 연관된 클라이언트 측에서의 처리 부담이 감소되었다는 점에서 더욱 개선되었다.    Reducing the bandwidth required for communication not only saves time and money, but also improves performance for clients and servers using the present invention. When the server sends a compressed data representation of a non-textual element or media stream in accordance with the present invention, the processing burden on the central processing unit (CPU) of the server is reduced. Otherwise, the CPU of the server decompresses the compressed data, transfers large amounts of uncompressed data, and consumes processing power for additional processing of the increased capacity of network communication. One server can interact with multiple clients, and delegating decompression and rendering operations to clients can also improve server performance. The performance of the client is further improved in that the processing burden on the client side associated with the receiver of large amounts of uncompressed data is reduced.

본원 발명의 일 측면은 클라이언트 측에서 그래픽 디스플레이를 생성하는 방법에 관한 것이다. 상기 방법은 서버상에서 실행되는 애플리케이션 프로그램으로부터의 출력을 클라이언트에 전송하는 단계와, 상기 애플리케이션 출력 내에서 비트맵 표시를 식별하는 단계와, 상기 비트맵 표시를 위한 체크값(check value)을 결정하는 단계를 포함한다. 상기 방법은 또한 부분적으로 상기 체크값을 사용하여 비트맵 표시의 압축 데이터 포맷을 검색하는 단계와 상기 비트맵 표시를 대신하여 상기 압축 데이터 포맷을 클라이언트에 전송하는 단계를 포함한다.One aspect of the present invention relates to a method for generating a graphical display on the client side. The method includes transmitting output from an application program running on a server to a client, identifying a bitmap representation in the application output, and determining a check value for the bitmap representation. It includes. The method also includes partially retrieving the compressed data format of the bitmap representation using the check value and sending the compressed data format to the client on behalf of the bitmap representation.

본원 발명의 또 다른 측면은 클라이언트 측에서 그래픽 디스플레이를 생성하는 방법에 관한 것이다. 상기 방법은 서버상에서 실행되는 애플리케이션 프로그램으로부터의 출력을 클라이언트에 전송하는 단계와, 상기 애플리케이션 출력 내에서 비문자 요소를 식별하는 단계를 포함한다. 상기 방법은 상기 비문자 요소와 연관된 압축 데이터 포맷을 검색하는 단계와 상기 비문자 요소를 대신하여 상기 압축 데이터 포맷을 클라이언트에 전송하는 단계를 포함한다.Another aspect of the invention relates to a method of generating a graphical display on the client side. The method includes sending output from an application program running on a server to a client and identifying a non-literal element within the application output. The method includes retrieving a compressed data format associated with the non-literal element and transmitting the compressed data format to a client on behalf of the non-literal element.

본원 발명의 상기 측면에 따른 실시 예에 있어서, 상기 방법은 애플리케이션 출력내에서 문자 요소(textual element)를 식별하는 단계와, 상기 문자 요소를 클라이언트에 전송하는 단계를 포함한다. 또 다른 실시 예에서, 상기 방법은 클라이언트 측에서 압축 데이터 포맷 및 선택적으로는 문자 요소를 수신하는 단계와, 상기 압축 데이터 포맷 및 선택적으로는 문자 요소를 사용하여 클라이언트 측에서 디스플레이를 생성하는 단계를 포함한다. 또 다른 실시 예에서, 상기 방법은 상기 압축 데이터를 적어도 하나의 프리젠테이션 계층 프로토콜 패킷을 사용하여 전송하는 단계를 포함한다. 또 다른 실시 예에서, 상기 방법은 파일을 원시 형태로 전송하기 위한 커맨드를 사용하여 적어도 하나의 프리젠테이션 계층 프로토콜 패킷을 전송하는 단계를 포함한다. In an embodiment according to this aspect of the invention, the method includes identifying a textual element in an application output and sending the textual element to a client. In another embodiment, the method includes receiving a compressed data format and optionally a character element at the client side and generating a display at the client side using the compressed data format and optionally the character element. do. In another embodiment, the method includes transmitting the compressed data using at least one presentation layer protocol packet. In another embodiment, the method includes transmitting at least one presentation layer protocol packet using a command to transfer the file in raw form.

또 다른 실시 예에서, 상기 방법은 적어도 하나의 프리젠테이션 계층 프로토콜 패킷을 원격 액세스 프로토콜. 신 클라이언트 프로토콜 및/또는 프리젠테이션 프로토콜에 일치시키는 단계를 포함한다. 또 다른 실시 예에서, 상기 비문자요소는 비트맵 표시이며, 상기 방법은 비트맵 표시를 압축 데이터 포맷으로 교체하는 단계를 포함한다. 또 다른 실시 예에서, 상기 방법은 상기 압축 데이터 포맷을 사용하여 비문자 요소를 렌더링하는 클라이언트의 능력을 판단하는 단계를 포함한다. 상기 방법은 상기 클라이언트가 압축 데이터 포맷을 사용하여 비문자 요소를 렌더링할 수 없다는 판단에 따라 상기 압축 데이터 포맷을 사용하여 비문자 요소를 렌더링할 수 있는 이미지 렌더링 라이브러리를 전송하는 단계를 포함한다. In another embodiment, the method further comprises at least one presentation layer protocol packet. Matching the scene client protocol and / or presentation protocol. In another embodiment, the non-literal element is a bitmap representation, and the method includes replacing the bitmap representation with a compressed data format. In another embodiment, the method includes determining a client's ability to render the non-literal element using the compressed data format. The method includes transmitting an image rendering library capable of rendering the non-literal element using the compressed data format in accordance with determining that the client cannot render the non-literal element using the compressed data format.

또 다른 실시 예에서, 상기 방법은 애플리케이션 출력을 인터셉트하는 단계와 비문자 요소의 비트맵 표시의 인터셉트된 출력을 조사하는 단계를 포함한다. 또 다른 실시 예에서, 상기 방법은 비문자 요소의 비트맵 표시를 위한 제 1 체크값을 계산하는 단계와 상기 제 1 체크값과 일치하는 체크값을 갖는 압축 데이터 포맷을 위한 이미지 저장부(image store)를 검색하는 단계를 포함한다.In another embodiment, the method includes intercepting the application output and examining the intercepted output of the bitmap representation of the non-literal element. In another embodiment, the method includes calculating a first check value for bitmap representation of a non-literal element and an image store for a compressed data format having a check value that matches the first check value. )).

본원 발명의 또 다른 측면은 클라이언트 측에서 그래픽 디스플레이를 생성하기 위한 장치와 연관된 것이다. 상기 장치는 출력 필터 모듈(output filter module)과 서버에이전트를 포함한다. 상기 출력 필터 모듈은 애플리케이션 프로그램이 생산한 출력을 인터셉트하도록 구성되어 있고, 상기 출력의 비문자 요소를 식별하며, 상기 비문자 요소와 연관된 압축 데이터 포맷을 검색한다. 상기 서버 에이전트는 상기 비문자 요소 대신에 압축 데이터 포맷을 상기 클라이언트에 전송하도록 구성되어 있다. Another aspect of the invention relates to an apparatus for generating a graphical display on the client side. The apparatus includes an output filter module and a server agent. The output filter module is configured to intercept an output produced by an application program, identifies a non-literal element of the output, and retrieves a compressed data format associated with the non-literal element. The server agent is configured to send a compressed data format to the client instead of the non-literal element.

본원 발명의 상기 측면들의 일실시 예에 있어서, 상기 장치는 서버 에이전트와 출력 필터 모듈을 포함하는 서버 노드를 포함한다. 또 다른 실시 예에 있어서, 상기 시스템은 클라이언트 노드를 포함한다. 상기 클라이언트 노드는 클라이언트 에이전트와 디스플레이를 포함한다. 상기 클라이언트 에이전트는 상기 압축 데이터 포맷을 수신하고, 상기 수신된 압축 데이터 포맷을 사용하여 비문자 요소의 디스플레이를 수신하도록 구성되어 있다. 또 다른 측면에 있어서, 상기 장치는 네트워크를 포함한다.In one embodiment of the above aspects of the invention, the apparatus includes a server node comprising a server agent and an output filter module. In another embodiment, the system includes a client node. The client node includes a client agent and a display. The client agent is configured to receive the compressed data format and to receive a display of the non-literal element using the received compressed data format. In another aspect, the device comprises a network.

본원 발명의 또 다른 측면은 클라이언트 측에서 그래픽 디스플레이를 생성하기 위한 컴퓨터가 판독가능한 프로그램 매체에 관한 것이다. 상기 매체는 상기 언급된 모든 방법을 수행하기 위한 컴퓨터가 판독가능한 프로그램 매체를 포함한다.Another aspect of the invention relates to a computer readable program medium for generating a graphical display on the client side. The medium includes a computer readable program medium for performing all the above-mentioned methods.

본원 발명의 또 다른 측면은 클라이언트 측에서 미디어 프리젠테이션을 생성하는 방법에 관한 것이다. 상기 방법은 서버상에서 실행되는 애플리케이션 프로그램으로부터 상기 클라이언트에 출력을 전송하는 단계와, 상기 애플리케이션 출력내의 미디어 스트림을 식별하는 단계와, 상기 애플리케이션 프로그램이 처리하기 전에 미디어 스트림의 적어도 일부분을 표시하는 원본 압축 데이터를 인터셉트하는 단계와, 상기 원본 압축 데이터 세트를 상기 클라이언트에 전송하는 단계를 포함한다. Another aspect of the invention relates to a method for generating a media presentation on the client side. The method includes sending output from an application program running on a server to the client, identifying a media stream within the application output, and displaying at least a portion of the media stream prior to processing by the application program. Intercepting and transmitting the original compressed data set to the client.

본원 발명의 또 다른 측면은 클라이언트 측에서 미디어 프리젠테이션을 생성하는 방법에 관한 것이다. 상기 방법은 서버상에서 실행되는 애플리케이션 프로그램으로부터 상기 클라이언트에 출력을 전송하는 단계와, 상기 애플리케이션 출력내의 미디어 스트림을 식별하는 단계와, 상기 미디어 스트림의 적어도 일부분을 표시하는 제 1 압축해제된 데이터 세트를 인터셉트하는 단계와, 상기 제 1 압축해제된 데이터 세트를 대신하여 상기 압축 데이터 세트를 상기 클라이언트에 전송하는 단계를 포함한다. Another aspect of the invention relates to a method for generating a media presentation on the client side. The method includes transmitting output from the application program running on a server to the client, identifying a media stream within the application output, and intercepting a first decompressed data set that represents at least a portion of the media stream. And sending the compressed data set to the client on behalf of the first decompressed data set.

본원 발명의 또 다른 측면은 클라이언트 측에서 미디어 프리젠테이션을 생성하기 위한 방법에 관한 것이다. 상기 방법은 클라이언트 측에 설치된 클라이언트 에이전트가 지원하는 적어도 하나의 미디어 포맷에 관한 정보를 서버에 제공하는 단계와, 클라이언트 측에서 미디어 스트림의 압축 데이터 세트를 수신하는 단계와, 압축해제 데이터 세트를 생성하기 위해 클라이언트 측에서 상기 압축 데이터 세트를 압축해제하는 단계와, 상기 압축해제 데이터 세트를 사용하여 클라이언트 측에서 미디어 프리젠테이션을 생성하는 단계를 포함한다.Another aspect of the invention relates to a method for generating a media presentation on the client side. The method includes providing information to a server about at least one media format supported by a client agent installed on the client side, receiving a compressed data set of the media stream on the client side, and generating a decompressed data set. Decompressing the compressed data set at a client side and generating a media presentation at the client side using the decompressed data set.

본원 발명의 또 다른 측면은 클라이언트 측에서 미디어 스트림을 생성하기 위한 컴퓨터가 판독가능한 프로그램 매체에 관한 것이다. 상기 매체는 서버상에서 실행되는 애플리케이션 프로그램으로부터의 출력을 상기 클라이언트에 전송하기 위한 컴퓨터가 판독가능한 프로그램 매체, 상기 애플리케이션 출력내의 미디어 스트림을 식별하기 위한 컴퓨터가 판독가능한 프로그램 매체, 상기 애플리케이션 프로그램이 처리하기 전에 미디어 스트림의 적어도 일부분을 표시하는 원본 압축 데이터 세트를 인터셉트하기 위한 컴퓨터가 판독가능한 프로그램 매체 및 상기 원본 압축 데이터 세트를 상기 클라이언트에 전송하기 위한 컴퓨터가 판독가능한 프로그램 매체를 포함한다. Another aspect of the invention relates to a computer readable program medium for generating a media stream on the client side. The medium may be a computer readable program medium for transmitting output from an application program running on a server to the client, a computer readable program medium for identifying a media stream in the application output, before the application program processes. A computer readable program medium for intercepting an original compressed data set representing at least a portion of a media stream and a computer readable program medium for transmitting the original compressed data set to the client.

본원 발명의 또 다른 측면은 클라이언트 측에서 미디어 스트림을 생성하기 위한 컴퓨터가 판독가능한 프로그램 매체에 관한 것이다. 상기 매체는 서버상에서 실행되는 애플리케이션 프로그램으로부터의 출력을 상기 클라이언트에 전송하기 위한 컴퓨터가 판독가능한 프로그램 매체, 상기 애플리케이션 출력내의 미디어 스트림을 식별하기 위한 컴퓨터가 판독가능한 프로그램 매체, 미디어 스트림의 적어도 일부분을 표시하는 제 1 압축해제된 데이터 세트를 인터셉트하기 위한 컴퓨터가 판독가능한 프로그램 매체, 상기 인터셉트된 제 1 압축해제된 데이터 세트를 압축하기 위한 컴퓨터가 판독가능한 프로그램 매체 및 제 1 압축해제된 데이터 세트를 대신하여 상기 압축된 데이터 세트를 상기 클라이언트에 전송하기 위한 컴퓨터가 판독가능한 프로그램 매체를 포함한다. Another aspect of the invention relates to a computer readable program medium for generating a media stream on the client side. The medium represents a computer readable program medium for transmitting output from an application program running on a server to the client, a computer readable program medium for identifying a media stream in the application output, and at least a portion of the media stream. A computer readable program medium for intercepting a first decompressed data set, the computer readable program medium for compressing the intercepted first decompressed data set and a first decompressed data set And a computer readable program medium for transmitting the compressed data set to the client.

본원 발명의 또 다른 측면은 클라이언트 측에서 미디어 스트림을 생성하기 위한 컴퓨터가 판독가능한 프로그램 매체에 관한 것이다. 상기 매체는 상기 클라이언트에 설치된 클라이언트 에이전트가 지원하는 적어도 하나의 미디어 포맷의 정보를 서버에 제공하기 위한 컴퓨터가 판독가능한 프로그램 매체, 클라이언트 측에서 미디어 스트림의 압축 데이터를 수신하기 위한 컴퓨터가 판독가능한 프로그램 매체, 압축해제된 데이터 세트를 생성하기위해 클라이언트 측에서 압축 데이터 세트를 압축해제 하기위한 컴퓨터가 판독가능한 프로그램 매체와 상기 압축해제된 데이터 세트를 사용하여 클라이언트 측에서 미디어 프리젠테이션을 생성하기 위한 컴퓨터가 판독가능한 프로그램 매체를 포함한다.Another aspect of the invention relates to a computer readable program medium for generating a media stream on the client side. The medium may be a computer readable program medium for providing a server with information in at least one media format supported by a client agent installed on the client, and a computer readable program medium for receiving compressed data of a media stream on a client side. A computer readable program medium for decompressing the compressed data set at the client side to produce the decompressed data set and a computer readable program for generating a media presentation at the client side using the decompressed data set. Possible program media.

본원 발명 상기한 마지막 여섯 가지 측면의 다양한 실시 예에 있어서, 상기 방법 및 컴퓨터가 판독가능한 프로그램 매체는 미디어 스트림과 연관된 타이밍 정보를 캡처하는 단계, 상기 타이밍 정보를 클라이언트에 전송하는 단계, 상기 클라이언트 측에서 압축 데이터 세트 및 선택적으로 타이밍 정보를 수신하는 단계, 압축해제된 데이터 세트를 생성하기 위해 클라이언트 측에서 상기 압축 데이터 세트를 압축해제 하는 단계 및 상기 압축 해제된 데이터 세트 및 또는 상기 타이밍 정보를 사용하여 클라이언트 측에서 미디어 프리젠테이션을 생성하기 위한 단계를 포함한다. 본원 발명의 상기한 마지막 여섯 가지 측면의 또 다른 실시 예에 있어서, 상기 방법 및 컴퓨터가 판독가능한 프로그램 매체는 애플리케이션 출력으로부터 비-미디어 그래픽 정보(non-media graphical information)를 상기 클라이언트에 전송하기 위한 단계, 상기 클라이언트 측에서 상기 비-미디어 그래픽 정보를 수신하는 단계와 상기 압축해제된 데이터 세트 및 비-미디어 그래픽 정보를 사용하여 클라이언트 측에서 미디어 프리젠테이션을 생성하는 단계를 포함한다. In various embodiments of the last six aspects described herein, the method and computer readable program medium may comprise capturing timing information associated with a media stream, transmitting the timing information to a client, at the client side. Receiving a compressed data set and optionally timing information, decompressing the compressed data set at a client side to produce an uncompressed data set and using the decompressed data set and / or the timing information A step for generating a media presentation at the side. In another embodiment of the last six aspects of the invention, the method and computer readable program medium further comprise steps for sending non-media graphical information from the application output to the client. Receiving the non-media graphics information at the client side and generating a media presentation at the client side using the decompressed data set and non-media graphics information.

본원 발명의 또 다른 측면은 클라이언트 측에서 미디어 프리젠테이션을 생성하기 위한 장치에 관한 것이다. 상기 장치는 애플리케이션 프로그램 및 출력 필터 모듈을 포함한다. 상기 애플리케이션 프로그램은 애플리케이션 프로그램이 생산한 출력내의 미디어 스트림을 식별하도록 구성되어 있다. 상기 출력 필터 모듈은 애플리케이션 프로그램이 처리하기 전에 미디어 스트림의 적어도 일부분을 표시하는 원본 압축 데이터 세트를 인터셉트 하고 상기 원본 압축 데이터 세트를 클라이언트에 전송하도록 구성되어 있다.Another aspect of the invention relates to an apparatus for generating a media presentation on the client side. The apparatus includes an application program and an output filter module. The application program is configured to identify a media stream in the output produced by the application program. The output filter module is configured to intercept an original compressed data set representing at least a portion of a media stream and transmit the original compressed data set to a client before an application program processes it.

본원 발명의 또 다른 측면은 클라이언트 측에서 미디어 프리젠테이션을 생성하기 위한 장치에 관한 것이다. 상기 장치는 애플리케이션 프로그램 및 출력 필터 모듈을 포함한다. 상기 애플리케이션 프로그램은 애플리케이션 프로그램이 생산한 출력내의 미디어 스트림을 식별하도록 구성되어 있다. 상기 출력 필터 모듈은 미디어 스트림의 적어도 일부분을 표시하는 제 1 압축해제된 데이터 세트를 인터셉트하도록 구성되어 있으며, 상기 미디어 스트림의 인터셉트된 제 1 압축해제된 데이터 세트를 압축하고, 제 1 압축해제된 데이터 세트를 대신하여 상기 압축된 데이터 세트를 클라이언트에 전송한다.Another aspect of the invention relates to an apparatus for generating a media presentation on the client side. The apparatus includes an application program and an output filter module. The application program is configured to identify a media stream in the output produced by the application program. The output filter module is configured to intercept a first decompressed data set representing at least a portion of a media stream, compress the intercepted first decompressed data set of the media stream, and first decompress data. Send the compressed data set to the client on behalf of the set.

본원 발명의 또 다른 측면은 클라이언트 측에서 미디어 프리젠테이션을 생성하기 위한 장치에 관한 것이다. 상기 장치는 서버 및 상기 서버와 통신 관계에 있는 클라이언트를 포함한다. 상기 클라이언트는 클라이언트 에이전트가 지원하는 적어도 하나의 미디어 포맷에 관한 정보를 서버에 제공하도록 구성된 클라이언트 에이전트를 포함하고, 미디어 스트림의 압축 데이터 세트를 수신하며, 압축해제된 데이터 세트를 생성하기 위해 클라이언트 측에서 상기 압축 데이터 세트를 압축해제하며, 상기 압축 해제된 데이터 세트를 이용하여 미디어 프리젠테이션을 생성한다.Another aspect of the invention relates to an apparatus for generating a media presentation on the client side. The apparatus includes a server and a client in communication with the server. The client includes a client agent configured to provide a server with information regarding at least one media format supported by the client agent, receive a compressed data set of the media stream, and generate a decompressed data set at the client side. Decompress the compressed data set and generate a media presentation using the decompressed data set.

본원 발명의 상기 마지막 세 가지 측면의 다양한 실시 예에 있어서, 상기 장치의 출력 필터 모듈은 상기 미디어 스트림과 연관된 타이밍 정보를 캡쳐하고, 상기 타이밍 정보를 클라이언트에 전송하도록 구성되어 있다. 본원 발명의 상기 마지막 세 가지 측면의 다양한 실시 예에 있어서, 상기 시스템은 상기 압축 데이터 세트 및 선택적인 타이밍 정보를 수신하도록 구성되어 있으며, 압축 해제된 데이터 세트를 생성하기 위해 상기 압축 데이터 세트를 압축해제하고, 상기 압축해제된 데이터 세트 및 상기 선택적 타이밍 정보를 사용하여 미디어 프리젠테이션을 생성한다. 본원 발명의 상기 마지막 세 가지 측면의 또 다른 실시 예에 있어서, 상기 클라이언트 에이전트는 논 미디어 그래픽 정보를 수신하고 상기 압축해제된 데이터 세트 및 상기 비-미디어 그래픽 정보를 사용하여 클라이언트 측에서 미디어 프리젠테이션을 생성하도록 구성되어 있다.In various embodiments of the last three aspects of the invention, the output filter module of the device is configured to capture timing information associated with the media stream and send the timing information to a client. In various embodiments of the last three aspects of the invention, the system is configured to receive the compressed data set and optional timing information, and decompresses the compressed data set to produce an uncompressed data set. And generate a media presentation using the decompressed data set and the optional timing information. In another embodiment of the last three aspects of the invention, the client agent receives non-media graphics information and uses the decompressed data set and the non-media graphics information to present a media presentation at the client side. It is configured to generate.

본원 발명의 또 다른 측면은 클라이언트 측에서 미디어 프리젠테이션을 생성하기 위한 장치에 관한 것이다. 상기 장치는 네트워크, 상기 네트워크와 통신관계에 있는 서버 및 상기 네트워크와 통신관계에 있는 클라이언트를 포함한다. 상기 서버는 애플리케이션 프로그램 및 적어도 하나의 출력 필터 모듈을 포함한다. 상기 애플리케이션 프로그램은 상기 애플리케이션 프로그램이 생산한 출력내의 미디어 스트림을 식별하도록 구성되어 있다. 상기 출력 필터 모듈은 상기 애플리케이션 프로그램이 처리하기 전에 미디어 스트림의 적어도 일부분을 표시하는 압축 데이터 세트를 인터셉트하도록 구성되어 있으며, 상기 압축 데이터 세트를 클라이언트에 전송한다. 몇몇 실시 예에서, 상기 출력 필터 모듈은 미디어 스트림을 표시하는 압축 데이터 세트의 일부분만을 인터셉트한다. 예를 들면, 상기 출력 필터 모듈은 비디오 미디어 스트림의 프레임 중 하나 걸러 한 프레임씩 인터셉트 할 수 있다. 또 다른 실시 예에서, 상기 출력 필터 모듈은 비디오 스트림의 전송을 위해 필요한 대역폭을 감소시키기 위해 비디오 데이터의 매 프레임과 연관된 데이터의 일 부분을 폐기한다. 상기 클라이언트는 클라이언트 에이전트를 포함한다. 상기 클라이언트 에이전트는 클라이언트 에이전트가 지원하는 적어도 하나의 미디어 포맷에 대한 정보를 상기 서버에 제공하도록 구성되어 있으며, 상기 압축 데이터 세트를 수신하고, 압축해제된 데이터 세트를 생성하기 위해 클라이언트 측에서 상기 압축 데이터 세트를 압축해제하며, 상기 압축해제된 데이터 세트를 사용하여 클라이언트 측에서 미디어 프리젠테이션을 생성한다.Another aspect of the invention relates to an apparatus for generating a media presentation on the client side. The apparatus includes a network, a server in communication with the network, and a client in communication with the network. The server includes an application program and at least one output filter module. The application program is configured to identify a media stream in the output produced by the application program. The output filter module is configured to intercept a compressed data set that represents at least a portion of a media stream before the application program processes and sends the compressed data set to a client. In some embodiments, the output filter module only intercepts a portion of the compressed data set that represents the media stream. For example, the output filter module may intercept every other frame of the video media stream one frame at a time. In another embodiment, the output filter module discards a portion of the data associated with every frame of video data to reduce the bandwidth required for transmission of the video stream. The client includes a client agent. The client agent is configured to provide the server with information about at least one media format supported by the client agent, the compressed data at the client side to receive the compressed data set and generate an uncompressed data set. Decompress the set and use the decompressed data set to create a media presentation on the client side.

본원 발명의 또 다른 측면은 클라이언트 측에서 미디어 프리젠테이션을 생성하기 위한 컴퓨터가 판독가능한 프로그램 매체에 관한 것이다. 상기 매체는 미디어 스트림의 원본 압축 데이터 세트를 인터셉트 하기 위한 컴퓨터가 판독가능한 프로그램 매체와 상기 원본 압축 데이터 세트를 ICA 또는 RDP와 같은 신 클라이언트 프로토콜을 사용하는 클라이언트에 전송하기 위한 컴퓨터가 판독가능한 프로그램 매체를 포함한다.Another aspect of the invention relates to a computer readable program medium for generating a media presentation on the client side. The medium includes a computer readable program medium for intercepting an original compressed data set of a media stream and a computer readable program medium for transferring the original compressed data set to a client using a new client protocol such as ICA or RDP. Include.

본원 발명의 또 다른 측면은 클라이언트 측에서 미디어 프리젠테이션을 생성하기 위한 컴퓨터가 판독가능한 프로그램 매체에 관한 것이다. 상기 매체는 미디어 스트림의 압축해제된 데이터 세트를 인터셉트하는 컴퓨터가 판독가능한 프로그램 매체, 상기 인터셉트된 압축해제된 데이터 세트를 압축하기 위한 컴퓨터가 판독가능한 프로그램 매체 및 상기 압축된 데이터 세트를 ICA 또는 RDP와 같은 신 클라이언트 프로토콜을 사용하는 클라이언트에 전송하기 위한 컴퓨터가 판독가능한 프로그램 매체를 포함한다.Another aspect of the invention relates to a computer readable program medium for generating a media presentation on the client side. The medium may comprise a computer readable program medium intercepting the decompressed data set of a media stream, a computer readable program medium for compressing the intercepted decompressed data set and the compressed data set with an ICA or RDP. Computer-readable program media for transmission to clients using the same scene client protocol.

본원 발명은 그래픽 디스플레이를 생성하기 위한 방법, 장치 및 컴퓨터가 판독가능한 프로그램 매체에 관한 것이다. 비문자 요소 또는 이미지의 비트맵 표시와 연관된 압축 데이터 포맷 표시는 연속적인 디스플레이를 위해 상기 비문자 요소 또는 비트맵 표시를 대신해서 네트워크를 통해 서버에서 클라이언트로 전송된다. The present invention relates to a method, an apparatus and a computer readable program medium for producing a graphical display. Compressed data format representations associated with bitmap representations of non-literal elements or images are transmitted from the server to the client over the network on behalf of the non-literal elements or bitmap representations for subsequent display.

전체적인 개관을 보면, 도 1은 제 2 컴퓨팅 시스템(서버 노드, 110)과 네트워크(115)를 통해 커뮤니케이션 하는 제 1 컴퓨팅 시스템(클라이언트 노드, 105)을 포함하는 원격 터미널 세션을 위한 디스플레이를 생성하는 시스템(100)을 도시하고 있다. 예를 들면, 상기 네트워크(115)는 사내 인트라넷과 같은 근거리 통신망(LAN)이거나 인터넷 또는 월드 와이드 웹과 같은 광역 통신망(WAN)일 수 있다. 상기 클라이언트 노드(105)의 사용자는 표준 전화선, LAN 또는 WAN(예를 들면, T1, T3, 56kb, X.25), 광대역 연결(ISDN, 프레임 릴레이, ATM) 및 무선 접속들을 포함하는 다양한 종류의 접속수단을 통해 네트워크(115)에 접속될 수 있다. 상기 서버 노드(110)는 상기 네트워크(115)와 통신관계를 설정하기 위한 서버 송수신기(135)를 포함한다. 상기 접속은 ICA, RDP, HTTP, TCP/IP, IPX, SPX, NetBIOS, Ethernet, RS232 및 직접 비동기 접속(direct asynchronous connections) 들과 같은 다양한 통신 프로토콜을 사용하여 설정될 수 있다.1 shows a system for generating a display for a remote terminal session that includes a first computing system (client node) 105 in communication with a second computing system (server node 110) over a network 115. 100 is shown. For example, the network 115 may be a local area network (LAN), such as an intranet, or a wide area network (WAN), such as the Internet or the World Wide Web. The user of the client node 105 may be of various kinds, including standard telephone lines, LANs or WANs (eg, T1, T3, 56kb, X.25), broadband connections (ISDN, frame relay, ATM) and wireless connections. It may be connected to the network 115 via the connection means. The server node 110 includes a server transceiver 135 for establishing a communication relationship with the network 115. The connection can be established using various communication protocols such as ICA, RDP, HTTP, TCP / IP, IPX, SPX, NetBIOS, Ethernet, RS232, and direct asynchronous connections.

상기 서버 노드(110)는 상기 클라이언트 노드(115)의 요청 서비스들을 공급할 만한 능력을 갖는 모든 컴퓨터 디바이스가 될 수 있다. 특히, 상기 능력은 서버(110)상에서 실행되는 애플리케이션 프로그램(140)에 의해 생산되는 출력을 표시하는 커맨드 및 데이터를 생성하고 상기 클라이언트 노드(105)에 전송하는 단계를 포함한다. 상기 서버 노드(110)는 상기 서버 송수신기(135), 애플리케이션 프로그램(140) 실행부, 서버 에이전트(150), 출력 필터 모듈(155) 및 이미지 저장부(160)를 포함한다. 상기 서버 에이전트(150)는 원격 디스 플레이 및 애플리케이션 프로그램(140)의 운용도(operability)를 지원하기 위한 서버 노드(110)의 다른 컴포넌트들과 클라이언트 에이전트(175) 사이를 인터페이스 시키는 모듈을 포함한다. 상기 서버 에이전트 모듈(150) 및 상기 언급된 모든 모듈들은 소프트웨어 프로그램 및/또는 ASIC 또는 FPGA와 같은 하드웨어 디바이스로 구현될 수 있다.The server node 110 may be any computer device having the capability to supply the requested services of the client node 115. In particular, the capability includes generating and transmitting to the client node 105 commands and data indicative of the output produced by the application program 140 running on the server 110. The server node 110 includes the server transceiver 135, an application program 140 execution unit, a server agent 150, an output filter module 155, and an image storage unit 160. The server agent 150 includes a module that interfaces between the client agent 175 and other components of the server node 110 to support the operability of the remote display and application program 140. The server agent module 150 and all the above-mentioned modules may be implemented as a software program and / or a hardware device such as an ASIC or FPGA.

명확하게 설명하면 상기 모든 컴포넌트들은 서버 노드(110)상에 도시되어 있다. 상기 서버 노드(110)는 네트워크(115) 또는 미도시된 다른 네트워크를 통해 통신 관계에 있는 복수의 서버들이나 단일 서버를 나타낼 수 있다는 점은 이해될 수 있다. 다중 서버 구현에 있어서, 상기 컴포넌트들의 기능은 가용한 서버들에게 분산 될 수 있다. 예를 들면, 다중 서버들의 일 실시 예에서는, 송수신기(135), 애플리케이션 프로그램(140), 서버 에이전트(150) 및 출력 필터 모듈(155)은 애플리케이션 서버에 있고 이미지 저장부(160)는 RAID 시스템의 디스크와 같은 저장 디바이스상에 있다. For clarity, all of the above components are shown on server node 110. It may be appreciated that the server node 110 may represent a single server or a plurality of servers in communication via the network 115 or other networks not shown. In a multiple server implementation, the functionality of the components may be distributed among the available servers. For example, in one embodiment of multiple servers, the transceiver 135, the application program 140, the server agent 150 and the output filter module 155 are in an application server and the image storage 160 is in a RAID system. On a storage device such as a disk.

상기 클라이언트 노드(105)는 서버 노드(110)상에서 실행되는 애플리케이션 프로그램(140)에 사용자 인터페이스를 제공하는 데 사용되는 예를 들면 개인용 컴퓨터, 셋톱박스, 무선 모바일 폰, 핸드헬드 기기(handheld device), 개인 디지털 장비, 키오스크(kiosk) 들과 같은 모든 컴퓨터 디바이스가 될 수 있다. 상기 클라이언트 노드(105)는 클라이언트 송수신기(130), 디스플레이(145), 클라이언트 에이전트(175) 및 그래픽 라이브러리(또는 이미지 렌더링 라이브러리라 칭함, 180)를 포함한다. 상기 클라이언트 에이전트(175)는 서버노드(110) 및 클라이언트 노드(105)의 사용자(미도시됨)로 부터 커맨드 및 데이터를 수신하는 모듈을 포함하며 상기 모듈은 소프트웨어 프로그램 및/또는 ASIC 또는 FPGA와 같은 하드웨어 디바이스 형태로 구현된다. 상기 클라이언트 에이전트(175)는 클라이언트 노드(105)의 다른 컴포넌트들과 상호작용할 때 예를 들면 디스플레이(145) 상에서 운영체제를 출력 데이터 쪽으로 배정할 때 상기 수신된 정보를 사용한다. 상기 클라이언트 에이전트(175)는 또한 서버에서 나온 커맨드들 또는 클라이언트 노드(105)에서의 사용자 행위에 반응하여 요청 및 데이터를 상기 서버 노드(110)에 전송한다. The client node 105 may be used to provide a user interface to an application program 140 running on a server node 110, for example, a personal computer, set-top box, wireless mobile phone, handheld device, It can be any computer device such as personal digital equipment, kiosks. The client node 105 includes a client transceiver 130, a display 145, a client agent 175, and a graphics library (also called an image rendering library, 180). The client agent 175 includes a module for receiving commands and data from the server node 110 and the user of the client node 105 (not shown), which module may be a software program and / or an ASIC or FPGA. It is implemented in the form of a hardware device. The client agent 175 uses the received information when interacting with other components of the client node 105, for example when assigning an operating system to output data on the display 145. The client agent 175 also sends requests and data to the server node 110 in response to commands from the server or user actions at the client node 105.

상기 서버 노드(110)는 상기 클라이언트 노드(105)에 의해 액세스 되는 하나 또는 그 이상의 애플리케이션 프로그램들(140)을 호스팅한다. 상기 애플리케이션의 예로 마이크로소프트 사가 제작한 Microsoft Word® 와 같은 워드 프로세싱 프로그램 및 Microsoft Excel® 과 같은 스프레드시트 프로그램을 들 수 있다. 또는 파이낸셜 리포팅 프로그램, 고객 등록 프로그램, 기술 지원 정보를 제공하는 프로그램, 고객 데이터베이스 애플리케이션 및 애플리케이션 세트 매니저들을 예로 들 수 있다. 애플리케이션의 또 다른 예로 마이크로소프트사의 Internet Explorer®를 들 수 있으며, 상기 프로그램은 후술할 내용에서 예시적인 애플리케이션 프로그램(140)으로 사용될 것이다. 다른 애플리케이션 프로그램이 사용될 수 있다는 점은 이해될 것이다.The server node 110 hosts one or more application programs 140 that are accessed by the client node 105. Examples of such applications include word processing programs such as Microsoft Word® and spreadsheet programs such as Microsoft Excel®. Examples include financial reporting programs, customer registration programs, programs that provide technical support information, customer database applications, and application set managers. Another example of an application is Microsoft's Internet Explorer®, which will be used as the exemplary application program 140 in the following description. It will be appreciated that other application programs may be used.

Internet Explorer®와 같은 애플리케이션 프로그램(140)의 실행 동안 상기 서버 노드(110)는 전송 메커니즘을 통해 상기 클라이언트 노드(105)와 통신한다. 일 실시 예에서, 상기 전송 메커니즘은 네트워크(115)를 통해 다중 가상 채널(185)을 제공하고 이를 통해 서버 에이전트(150)는 클라이언트 에이전트(175)와 통신할 수 있다. 가상 채널(185)들 중 하나는 서버 노드(110)로 부터 클라이언트 노드(105)로 그래픽 스크린 데이터를 전송하기 위한 프로토콜을 제공한다. 상기 서버(110)는 상기 애플리케이션 프로그램(140)에 의해 생성되고 서버의 운영체제를 목표로 향하는 그래픽 디스플레이 인터페이스 커맨드들을 인터셉트하는 프로토콜 드라이버를 실행하는데, 이는 서버 에이전트(150)의 일부분으로서의 일실시 예에 해당한다. 상기 프로토콜 드라이버는 상기 커맨드들을 전송 메커니즘을 통해 전송하기에 적합한 프로토콜 패킷으로 변환한다. During execution of an application program 140 such as Internet Explorer®, the server node 110 communicates with the client node 105 via a transport mechanism. In one embodiment, the transport mechanism provides multiple virtual channels 185 over the network 115 through which the server agent 150 can communicate with the client agent 175. One of the virtual channels 185 provides a protocol for transferring graphical screen data from server node 110 to client node 105. The server 110 executes a protocol driver generated by the application program 140 and intercepts graphic display interface commands directed to an operating system of the server, which corresponds to an embodiment as part of the server agent 150. do. The protocol driver converts the commands into a protocol packet suitable for transmission via a transport mechanism.

Internet Explorer®와 같은 예에서, 상기 애플리케이션 프로그램(140)은 서버(110)상에서 웹 페이지를 검색한다. 설명한 바와 같이, 상기 애플리케이션 프로그램(140)은 상기 서버 노드(110)에서 출력을 디스플레이하기 위한 것처럼 상기 서버 운영 체제에 대해 그래픽 디스플레이 커맨드들을 생성한다. 상기 서버 에이전트(150)는 상기 커맨드들을 인터셉트하고 클라이언트 에이전트(175)에 전송한다. 상기 클라이언트 에이전트(175)는 클라이언트 노드(105)의 디스플레이(145)에 대한 출력을 생성하기 위해 동일 또는 유사한 커맨드들을 상기 클라이언트 운영체제로 배출한다. 상기 서버 에이전트(150) 또는 클라이언트 에이전트(175)가 마이크로소프트 사가 제작한 Windows® 계열의 운영체제라면, 상기 그래픽 디스플레이 커맨드들은 예를 들면 DirectShow®,DirectX®, 또는 윈도우 그래픽 디바이스 인터페이스(GDI) 기능과 같은 형태를 가질 것이다.In an example such as Internet Explorer®, the application program 140 retrieves a web page on the server 110. As described, the application program 140 generates graphical display commands for the server operating system as for displaying output at the server node 110. The server agent 150 intercepts the commands and sends them to the client agent 175. The client agent 175 issues the same or similar commands to the client operating system to produce an output for the display 145 of the client node 105. If the server agent 150 or client agent 175 is a Windows® based operating system manufactured by Microsoft, the graphic display commands may be, for example, a DirectShow®, DirectX®, or Windows Graphics Device Interface (GDI) function. Will have a form.

일 실시 예에서, 웹 페이지는 타이틀, 텍스트, ASCII 문자와 같은 문자 요소 및 이미지, 사진, 아이콘 및 스플래쉬 스크린과 같은 비문자 요소를 융합된 상태로 포함한다. 상기 비문자 요소는 때때로 비문자 요소의 원형이라고도 언급되는 파일 또는 데이터 스트림과 같은 압축 데이터 형태로 웹서버(미도시됨)로부터 Internet Explorer®와 같은 애플리케이션 프로그램(140)으로 전송된다. 압축 포맷의 예로서 JPEG, GIF 및 PNG를 들 수 있다. 상기 비문자 요소는 예를 들면 20 킬로 바이트 사이즈의 압축 데이터 형태로 표시될 수 있다. 동일한 비문자 요소가 비트맵 표시로 압축 해제되면 예를 들면 300 킬로 바이트 사이즈가 된다.In one embodiment, the web page includes a fused state of text elements such as titles, text, ASCII characters, and non-text elements such as images, photos, icons, and splash screens. The non-literal element is transmitted from a web server (not shown) to an application program 140 such as Internet Explorer® in the form of compressed data, such as a file or data stream, sometimes referred to as the prototype of the non-literal element. Examples of compression formats include JPEG, GIF, and PNG. The non-literal element can be represented, for example, in the form of compressed data of size 20 kilobytes. If the same non-literal element is decompressed into a bitmap representation, for example, it is 300 kilobytes in size.

웹페이지의 디스플레이를 생성할 때, 상기 애플리케이션 프로그램(140)은 예를 들면 비문자 요소의 JPEG 데이터 포맷을 검색하고 상기 JPEG 데이터 포맷을 디스플레이를 위한 비트맵으로 압축해제한다. 상기 출력 필터 모듈(150)은 후술할 내용에서 자세히 설명하는 바와 같이, 비트맵 표시가 압축 포맷으로부터 온 것인지를 판단하고, 이미지 저장부(160)로부터 비문자 요소의 대응되는 압축포맷을 획득한다. 일 실시 예에서 상기 이미지 저장부(160)는 영구 저장장치이다. 또 다른 실시 예에서, 상기 이미지 저장부(160)는 임시 저장장치, 캐쉬, 휘발성 메모리 및/또는 임시 저장장치 및 영구 저장장치의 조합이다.When generating a display of a web page, the application program 140 retrieves, for example, the JPEG data format of the non-literal element and decompresses the JPEG data format into a bitmap for display. The output filter module 150 determines whether the bitmap representation is from a compression format, as described in detail below, and obtains a corresponding compression format of the non-letter element from the image storage 160. In one embodiment, the image storage unit 160 is a permanent storage device. In another embodiment, the image storage unit 160 is a temporary storage, a cache, a volatile memory and / or a combination of temporary storage and permanent storage.

서버 에이전트(150)는 비문자 요소(non-textual element)의 비트맵 표시를 출력 필터 모듈(output filter module:155)이 이미지 저장부(image store:160)로부터 탐색한 압축 비문자 요소로 교체한다. 서버 에이전트(150)는 압축 포맷내의 비문자 요소를 비트맵 표시와 연관된 그래픽 디스플레이 인터페이스 커맨드와 함께 클라이언트 노드(105)에 전송한다. 일 실시 예에서, 연관된 커맨드는 비문자요소의 비트맵 표현에 적용할 수 있지만, 서버 에이전트(150)는 비트맵 표현이 아닌 비문자 요소의 전송을 식별하는 단일 프로토콜 커맨드(unique protocol command)를 이용한다. 다른 실시 예들에서는 다른 식별 테크닉이 사용될 수 있다. 예를 들면, 프로토콜 커맨드는 수정자 코멘트(modifier comment), 또는 커맨드 스위치(command switch)를 가질 수 있다. 또한 상기 커맨드는 컨텍스트(context)의 변경 또는 다수의 커맨드의 조합을 이용할 수 있다.The server agent 150 replaces the bitmap representation of the non-textual element with the compressed non-literal element that the output filter module (155) retrieved from the image store (160). . The server agent 150 sends the non-letter elements in the compressed format to the client node 105 along with the graphical display interface commands associated with the bitmap representation. In one embodiment, the associated command may apply to the bitmap representation of the non-letter element, but the server agent 150 uses a unique protocol command that identifies the transmission of the non-letter element rather than the bitmap representation. . In other embodiments, other identification techniques may be used. For example, a protocol command may have a modifier comment or command switch. In addition, the command may use a change of context or a combination of a plurality of commands.

비문자요소가 압축 해제 포맷(예를 들면, Windows® bitmap(bit.) 포맷)내에 저장될 때, 비문자 요소의 압축 버전(compressed version)을 제공하기 위해, 서버 에이전트(150)는 비문자 요소의 압축 해제 표시를 탐색하여, 예를 들면, 2DRLE 압축을 이용하여 그것을 압축할 수 있다. 선택적으로, 에이전트(150)는 또한 압축 해제 표시에서 데이터를 리뷰하여, 압축 해제된 표시에 적용하기에 적합한 압축 알고리즘을 선택하여, 선택된 알고리즘을 상기 압축 해제 표시에 적용하고, 디스플레이하기 위해 클라이언트 에이전트(175)에 압축 표시를 제공한다. 비문자 요소가 원래대로 압축되면, 서버 에이전트(150)는 동일한 압축 테크닉 또는 다른 압축 테크닉을 이용하여 이미지를 재압축하도록 선택할 수 있다. When a non-literal element is stored in an uncompressed format (e.g., Windows® bitmap (bit.) Format), to provide a compressed version of the non-literal element, the server agent 150 provides a non-literal element. It is possible to search for the decompression mark of and compress it, for example using 2DRLE compression. Optionally, agent 150 may also review the data in the decompression indication to select a compression algorithm suitable for application to the decompressed indication, apply the selected algorithm to the decompression indication, and display the client agent ( Provide a compression indication. If the non-literal element is compressed intact, the server agent 150 may choose to recompress the image using the same compression technique or another compression technique.

압축 해제된 표시의 압축을 위해 서버 에이전트(150)에 적용할 수 있는 알고리즘은, 무손실 압축 알고리즘(lossless compression algorithms)과 손실 압축 알고리즘(lossy compression algorithms)을 포함한다. 예를 들면, 2DRLE 압축과 같은 무손실 압축 알고리즘은, 표시 내에 포함된 정보의 손실 없이 압축 해제된 표시의 사이즈를 줄인다. 예를 들면, JPEG 또는 JPEG2000압축과 같은 손실 압축 알고리즘은, 압축 해제된 표시 내에 포함된 정보가 폐기되는(discard) 방식으로 압축 해제된 표시의 사이즈를 줄인다.Algorithms applicable to server agent 150 for the compression of decompressed indications include lossless compression algorithms and lossy compression algorithms. For example, lossless compression algorithms, such as 2DRLE compression, reduce the size of the decompressed representation without loss of information contained within the representation. For example, lossy compression algorithms, such as JPEG or JPEG2000 compression, reduce the size of the decompressed representation in such a way that information contained in the decompressed representation is discarded.

서버 에이전트(150)는 압축 해제된 표시의 컨텐츠-적어도 일부분-를 이용하여 압축 해제된 표시를 압축하기 적합한 압축 알고리즘을 선택한다. 일 실시 예에서, 서버 에이전트(150)는 압축 해제된 표시가, 포토그래픽 이미지와 같은 연속톤 이미지(continuous tone image)인지를 판단하여, 손실 압축 알고리즘을 압축 해제된 표시에 적용한다. 다른 실시 예에서, 서버 에이전트(150)는 압축 해제된 표시가 동일한 컬러(예를 들면, 컴퓨터-생성 이미지)의 대 영역(large area)을 포함하는 지를 판단하여, 무손실 압축 알고리즘을 적용한다. 또 다른 실시 예에서는 압축 해제된 표시의 픽셀 내에 포함된 픽셀의 개수가 계수되고(enumerate), 계수된 컬러의 개수가 소정의 스레스홀드값(threshold value, 예를 들면, 256 컬러)을 초과하는 경우, 손실 압축 알고리즘이 압축 해제된 표시에 적용된다.The server agent 150 selects a compression algorithm suitable for compressing the decompressed representation using the content—at least a portion of the decompressed representation. In one embodiment, the server agent 150 determines whether the decompressed indication is a continuous tone image, such as a photographic image, and applies a lossy compression algorithm to the decompressed indication. In another embodiment, server agent 150 determines whether the decompressed representation includes a large area of the same color (eg, a computer-generated image) and applies a lossless compression algorithm. In another embodiment, the number of pixels included in the pixels of the decompressed display is counted, and the number of counted colors exceeds a predetermined threshold value (eg, 256 colors). In that case, a lossy compression algorithm is applied to the decompressed indication.

또 다른 실시 예에서, 서버 에이전트(150)는 무손실 압축 알고리즘을 이용하여 압축 해제된 표시를 압축하여, 압축된 결과의 사이즈를 소정의 값과 비교한다. 압축된 결과의 사이즈가 소정의 값을 초과하는 경우, 압축 해제된 표시는 손실 압축 알고리즘을 이용하여 압축된다. 손실 압축 결과의 사이즈가 무손실 압축 결과의 사이즈의 소정 퍼센티지보다 적은 경우에는 손실 압축 알고리즘이 선택된다.In another embodiment, the server agent 150 compresses the decompressed display using a lossless compression algorithm, and compares the size of the compressed result with a predetermined value. If the size of the compressed result exceeds a predetermined value, the decompressed representation is compressed using a lossy compression algorithm. The lossy compression algorithm is selected if the size of the lossy compression result is less than a predetermined percentage of the size of the lossless compression result.

클라이언트 에이전트(175)는 비문자 요소의 비트맵 표시와 연관된 그래피컬 디스플레이 인터페이스 커맨드와 함께, 압축 데이터 포맷에서 비문자 요소 파일의 전송을 수신한다. 클라이언트 에이전트(175)는 비문자요소가 압축된 데이터 포맷내에서 비트맵 표시가 아닌 것으로 판단한다. 일 실시 예에서, 클라이언트 에이전트(175)가 이와 같이 판단하는 이유는 압축된 포맷내에 비문자 요소는 단일 프로토콜 커맨드(unique protocol command)를 이용하여 전송하기 때문이다. 다른 실시 예에서, 비문자요소 데이터의 사이즈 및/또는 연관된 그래픽 디스플레이 인터페이스 커맨드를 포함한 비문자 요소에 대한 다른 특성들은 클라이언트 에이전트(175)가 충분히 판단할 수 있다.The client agent 175 receives the transfer of the non-literal element file in a compressed data format, with graphical display interface commands associated with the bitmap representation of the non-literal element. The client agent 175 determines that the non-character element is not a bitmap representation in the compressed data format. In one embodiment, the client agent 175 determines this because the non-letter elements in the compressed format are sent using a single protocol command. In other embodiments, the client agent 175 may fully determine other characteristics for the non-letter element, including the size of the non-letter element data and / or associated graphical display interface commands.

클라이언트 에이전트(175)는 클라이언트 노드(105)가 비문자 요소의 압축된 포맷을 압축 해제하기 위해 필요한 라이브러리(library:180)를 포함하는 지를 판단한다. 클라이언트 노드(105)가 압축 해제 알고리즘을 실행하기 위해 인스톨된 적합한 그래픽 라이브러리(들)(180)을 갖는다면, 클라이언트 에이전트(175)는 라이브러리(180)를 이용하여 비문자 요소의 압축된 포맷을 비트맵 표시로 압축 해제한다. 클라이언트 에이전트(175)는 비트맵 표시에 대해 수신된 연관 그래픽 디스플레이 인터페이스 커맨드를 실행하여 클라이언트 디스플레이(145)상에 애플리케이션 프로그램(140)의 출력에 대한 비문자요소를 생성한다.The client agent 175 determines whether the client node 105 includes a library (180) necessary for decompressing the compressed format of the non-letter elements. If the client node 105 has the appropriate graphics library (s) 180 installed to execute the decompression algorithm, the client agent 175 uses the library 180 to bit the compressed format of the non-literal element. Uncompress the map display. The client agent 175 executes the associated graphical display interface commands received for the bitmap representation to generate non-literal elements for the output of the application program 140 on the client display 145.

일 실시 예에서, 클라이언트 에이전트(175)는 압축된 포맷으로부터의 비문자요소를 비트맵 표시로 압축 해제하기 위해, 어떤 압축 해제 알고리즘도 포함하지 않는다. 만약, 클라이언트 노드(105)가 압축 해제 알고리즘을 실행하기 위해 적합한 인스톨된 그래픽 라이브러리(180)를 갖지 않으면, 클라이언트 에이전트(175)는 서버 노드(110)에 필요한 그래픽 라이브러리를 요청한다. 다른 실시 예에서, 클라이언트 에이전트(175)는 서버 노드(110)에서 임의의 비문자요소를 수신하기 전에, 가장 널리 이용된 그래픽 라이브러리의 소정의 세트가 클라이언트 노드(105) 상에서 인스톨되는 지를 판단한다. 만약, 가장 널리 이용된 그래픽 라이브러리(180)가 클라이언트 노드(105) 상에서 인스톨되어 있지 않으면, 클라이언트 에이전트(175)는, 서버노드(110)로부터 임의의 비문자 요소를 수신하기 전에 서버노드(110)에 빠진 라이브러리(missing library)를 요청한다. In one embodiment, the client agent 175 does not include any decompression algorithms to decompress non-element elements from the compressed format into bitmap representations. If the client node 105 does not have an installed graphics library 180 suitable for executing the decompression algorithm, the client agent 175 requests the server node 110 for the required graphics library. In another embodiment, the client agent 175 determines whether a predetermined set of the most widely used graphics library is installed on the client node 105 before receiving any non-elemental elements at the server node 110. If the most widely used graphics library 180 is not installed on the client node 105, the client agent 175 may receive the server node 110 before receiving any non-literal elements from the server node 110. Request a missing library.

또 다른 실시 예에서, 클라이언트 에이전트(175)는 클라이언트 노드(105)의 그래픽 라이브러리가 상기 라이브러리 정보를 포함하고 서버 에이전트(150)에 전송하는 지를 판단한다. 이 실시 예에서, 서버 에이전트(150)가 비트맵 표시의 압축된 데이터를 출력 필터 모듈(output filter module:155)부터 수신할 때, 서버 에이전트(150)는 전송된 라이브러리 정보를 이용하여 클라이언트 노드(105)가 압축된 데이터 포맷을 제공할(render) 수 있는지를 판단한다. 서버 에이전트(150)가 클라이언트 노드(105)가 적용가능한 라이브러리를 갖는다고 판단하면, 서버 에이전트(150)는 비문자 요소의 비트맵 표시에 대한 압축 데이터 포맷을 교체한다(substitute). 서버 에이전트(150)가 클라이언트 노드(105)가 적용가능한 라이브러리가 아니라고 판단하면, 서버 에이전트(150)는 비문자 요소의 비트맵 표시에 대한 압축된 데이터 포맷을 교체하지 않는 대신 비트맵 표시를 클라이언트(105)에 전송한다. In another embodiment, the client agent 175 determines whether the graphical library of the client node 105 includes the library information and transmits it to the server agent 150. In this embodiment, when the server agent 150 receives the compressed data of the bitmap representation from the output filter module 155, the server agent 150 uses the transmitted library information to generate the client node ( It is determined whether 105 can provide a compressed data format. If the server agent 150 determines that the client node 105 has an applicable library, the server agent 150 substitutes the compressed data format for the bitmap representation of the non-literal element. If the server agent 150 determines that the client node 105 is not an applicable library, the server agent 150 does not replace the compressed data format for the bitmap representation of the non-literal element, but instead returns the bitmap representation to the client ( 105).

서버 에이전트(150)에서 비문자 요소의 비트맵 표시를 압축된 포맷 내의 비문자 요소로 교체하기 위해, 출력 필터 모듈(155)은 비트맵 표시가 이미지 저장부(160)내에 포함된 압축된 포맷에서 생긴 것인지를 판단한다. 출력 필터 모듈(155)은 미디어 스트림(media stream)의 소스(source)가 문서에 의한 임의의 방식(예를 들면, 이 정보를 노출시키기 위해 구성된 애플리케이션 프로그램 또는 파일 타입 식별자)에 의해 노출되는 지를 판단할 수 있다. 미디어 스트림이 멀티미디어 스트림인 실시 예에서, 출력 필터 모듈(155)에는 멀티미디어 서브시스템에 의해 미디어 스트림과 연관된 소스 애플리케이션에 관한 정보가 제공될 수 있다. 또 다른 실시 예에서, 출력 필터 모듈(155)은 비트맵 표시에 대한 하나 이상의 체크값을 연산한다(calculate). 예를 들면, 출력 필터 모듈(155)은 전체 비트맵 표시에 대해 하나의 체크값을 연산할 수 있으며 및/또는 출력 필터 모듈(155)은 전체 비트맵 표시에 대한 각 사분면 중 하나에 네 개의 체크값을 연산할 수 있다. 다른 실시 예에서, 출력 필터 모듈(155)은 비트맵 표시 내의 N개의 각각의 라인 중 하나에 N개의 체크값을 연산할 수 있다. 체크값은 데이터의 다른 배열에 대해 실질적으로 유일한 값을 생성하는 알고리즘의 결과이다. 체크값은, 예를 들면, 체크태그(cheㅊktag), 사이클릭 리던던시 코드(cyclic redundary code:"CRC"), 체크섬(check sum), 또는 해싱함수(hashing function)의 결과이다. 체크값은 비트맵 표시를 기초로 할 뿐 압축된 데이터 포맷에서 배열된 데이터는 아니다. 그러나, 압축된 데이터 포맷이 이미지 저장부(160)에 저장되는 경우, 압축 해제될 때 압축된 데이터의 비트맵 표시에 대한 하나 이상의 체크값에 대응하는 체크값 속성으로 저장된다. In order to replace the bitmap representation of the non-literal element in the server agent 150 with the non-literal element in the compressed format, the output filter module 155 uses the compressed format in which the bitmap representation is contained in the image storage 160. Determine if it occurred. The output filter module 155 determines whether the source of the media stream is exposed by any way by the document (e.g., an application program or file type identifier configured to expose this information). can do. In an embodiment where the media stream is a multimedia stream, the output filter module 155 may be provided with information about the source application associated with the media stream by the multimedia subsystem. In another embodiment, the output filter module 155 calculates one or more check values for the bitmap representation. For example, output filter module 155 may compute one check value for the entire bitmap representation and / or output filter module 155 may check four checks in one of each quadrant for the entire bitmap representation. Can compute a value. In another embodiment, the output filter module 155 may compute N check values on one of the N respective lines in the bitmap representation. The check value is the result of an algorithm that produces a substantially unique value for another array of data. The check value is, for example, the result of a chetag tag, a cyclic redundary code ("CRC"), a check sum, or a hashing function. The check value is based on the bitmap representation and not the data arranged in the compressed data format. However, when the compressed data format is stored in the image storage 160, it is stored as a check value attribute corresponding to one or more check values for the bitmap representation of the compressed data when decompressed.

일 실시 예에서, 체크값은 고정된 식별자와 단일 식별자를 포함하는 체크태그이다. 고정된 식별자(fixed identifier) 및 단일 식별자(unique identifier)는 함께 결합되어 이미지 내에 숨겨진다(concealed). 단일 식별자가 특정 이미지를 식별하는데 이용되는 것과 마찬가지로 고정자 식별자는 체크태그를 이용하는데 이용된다. 고정된 식별자는, 예를 들면, 통계적으로 이미지 내에서 발견될 것 같지 않은 전 세계적 단일 식별자(globally unique identifier)이다. 예를 들면, 고정된 식별자는 디버깅하는(debugging) 동안 쉽게 인식할 수 있으며 균형잡힌(balanced) 다수의 0 및 1 비트를 갖는 바이트 시퀀스(byte sequence)이다. 단일 식별자는 캐시(cache)내에서 각 이미지에 대해 유일하게 할당된 시퀀셜 식별자(sequential identifier)이다. 시퀀셜 단일 식별자는 다른 값으로 숨겨진(masked) XOR이므로, 작은 값(가장 가능한 값)을 갖는 이미지 식별자는 평균 0 및 1 비트의 개수를 가질 수 있다.In one embodiment, the check value is a check tag that includes a fixed identifier and a single identifier. Fixed identifiers and unique identifiers are combined together and concealed within the image. Just as a single identifier is used to identify a particular image, a stator identifier is used to use a check tag. A fixed identifier is, for example, a globally unique identifier that is not statistically likely to be found in the image. For example, a fixed identifier is a byte sequence with a large number of zero and one bits that are easily recognizable and balanced during debugging. A single identifier is a uniquely assigned sequential identifier for each image in the cache. Since the sequential single identifier is a masked XOR with another value, an image identifier with a small value (the most likely value) may have an average number of 0 and 1 bits.

RGB 컬러 컴포넌트가 이미지의 일부인지 컬러 팔레트의 일부인지에 따라, 체크태그는 RGB컬러 컴포넌트로 엔코딩된다. 구체적으로, 체크태그는 160개 비트 스트림(즉, 20개의 개별 바이트, 각각 0비트에서 시작하는 최하위 비트 및 7비트에서 끝나는 최상위 비트)으로 처리된다. 각 바이트의 최하위 비트는 체크태그의 다음 비트로 겹쳐써진다(overwrite). 나머지 각 바이트의 다른 7비트는 변하지 않는다.Depending on whether the RGB color component is part of an image or part of a color palette, the check tag is encoded as an RGB color component. Specifically, the check tag is processed into 160 bit streams (ie, 20 individual bytes, the least significant bit starting at 0 bits and the most significant bit ending at 7 bits, respectively). The least significant bit of each byte is overwritten with the next bit of the check tag. The other seven bits of each remaining byte remain unchanged.

체크태그는 단순히 엔코딩 프로시저를 반대로 함으로서 디코딩된다. 체크태그가 디코딩된 다음, 고정된 식별자와 단일 식별자는 체크 태그에서 탐색된다. 탐색된 고정 식별자는 체크태그를 식별하는 것과 같이 이전에 저장된 고정 식별자에 대해서 확인된다. 결합(match)이 발견된 다음, 단일 식별자는, 이미지와 연관된 비트맵 데이터처럼, 식별된 이미지와 연관된 정보를 탐색하는데 이용된다. The check tag is decoded by simply reversing the encoding procedure. After the check tag is decoded, the fixed identifier and the single identifier are searched for in the check tag. The retrieved fixed identifier is checked against a previously stored fixed identifier, such as identifying a check tag. After a match is found, a single identifier is used to search for information associated with the identified image, such as bitmap data associated with the image.

출력 필터 모듈(155)은 하나 이상의 체크값과 동일한 체크값 속성을 갖는 압축된 데이터 포맷내의 비문자 요소를 위해 이미지 저장부(160)을 검색하고, 출력 필터 모듈(155)은 비트맵 표시를 연산한다. 출력 필터 모듈(155)은 하나 이상의 체크값과 같은 동일한 체크값 속성으로 비문자 요소의 압축된 포맷을 탐색하여 비트맵 표시 대신 클라이언트 에이전트(175)에 대한 전송을 위해 비문자 요소의 압축된 포맷을 서버 에이전트(150)에 전송한다(send). The output filter module 155 searches the image storage 160 for non-literal elements in the compressed data format having the same check value attribute as one or more check values, and the output filter module 155 calculates the bitmap representation. do. The output filter module 155 searches for the compressed format of the non-literal element with the same check value attribute, such as one or more check values, to convert the compressed format of the non-literal element for transmission to the client agent 175 instead of displaying the bitmap. Send to server agent 150.

서버 노드(110)가 이미지 저장부(160)에서 비문자 요소의 압축된 포맷을 저장하고 나서, 애플리케이션 프로그램(140)은 압축된 포맷파일로부터 비트맵 표시를 생성하기(create) 위해 그래픽 라이브러리(미도시)를 호출한다(call). 출력 필터 모듈(155)이 비트맵 표시와 연관된 체크값을 연산함으로 애플리케이션 프로그램(140)은 압축된 포맷을 압축 해제하고 비트맵 표시를 생성한다. 전술한 바와 같이, 비트맵 표시가 완전할 때, 비트맵 표시의 사분면이 완전할 때, 또는 비트맵 표시의 라인이 완전할 때, 출력 필터 모듈(155)은 체크값을 연산할 수 있다. 서버(110)는 이미지 저장부(160) 내에 압축된 포맷 파일과 연관된 체크값 속성을 저장하고 압축된 포맷 파일을 탐색한 다음, 임의의 다음번에 애플리케이션 프로그램(140)은 연관된 비문자 요소를 생성한다. After the server node 110 stores the compressed format of the non-literal element in the image storage 160, the application program 140 executes a graphics library (not shown) to create a bitmap representation from the compressed format file. Call). As the output filter module 155 computes the check value associated with the bitmap representation, the application program 140 decompresses the compressed format and generates a bitmap representation. As described above, when the bitmap display is complete, when the quadrant of the bitmap display is complete, or when the line of the bitmap display is complete, the output filter module 155 may calculate the check value. The server 110 stores the check value attribute associated with the compressed format file in the image storage 160 and retrieves the compressed format file, and then anytime next, the application program 140 generates the associated non-literal element. .

서버(110)는 임시 저장부(예를 들면, RAM 메모리버퍼 또는 캐시) 내의 이미지 저장부(160) 또는 설계 및 하드웨어 제한(예를 들면, 영구 저장부의 사이즈)에 적어도 일부에 의존하는 영구 저장부(예를 들면, 디스크 또는 비휘발성 메모리 버퍼)내의 이미지 저장부(160) 어디든 압축된 포맷 파일과 그와 연관된 체크값 속성을 저장한다. 애플리케이션 프로그램 개수를 판단하는데 이용된 바람직한 하나의 기준(criterion)은 비문자 요소를 생성한다. 예를 들면, 애플리케이션 프로그램(140)이 소정의 개수보다 많은 특정 비문자 요소를 생성하면, 서버(110)는 압축 포맷 파일과 상기 특정 비문자 요소에 대응하는 체크 값 속성을 이미지 저장부(160)내에 영구적으로 저장한다. 이미지 저장부(160)는 이미지 저장부(160)로부터 데이터를 제거하기 위해 축출(eviction) 알고리즘(예를 들면, 최근 최소 사용된[LRU:(a least-recently-used)] 알고리즘)을 적용할 수 있다. 축출은 서버 에이전트(150) 및 클라이언트 에이전트(175)를 허용하여 이미지 저장부(160)에 부과된 리소스 또는 저장 한계를 관찰한다. Server 110 may be a permanent storage that depends at least in part on image storage 160 in temporary storage (e.g., a RAM memory buffer or cache) or design and hardware limitations (e.g., size of persistent storage). The image storage 160 (eg, disk or non-volatile memory buffer) anywhere stores the compressed format file and its associated check value attribute. One preferred criterion used to determine the number of application programs creates non-literal elements. For example, when the application program 140 generates more than a predetermined number of specific non-letter elements, the server 110 may store a compressed format file and check value attributes corresponding to the specific non-letter elements. Permanently stored in. Image storage 160 may apply an eviction algorithm (eg, a least-recently-used) algorithm to remove data from image storage 160. Can be. Ejection allows server agent 150 and client agent 175 to observe the resource or storage limits imposed on image store 160.

다른 실시 예에서, 서버(110)가 정적(static) 또는 복합적(complex)이면 비문자 요소를 저장한다. 예를 들면, 애플리케이션 프로그램(140)이 항상 초기단계에서 스플래시 스크린(splash screen)을 생성하면, 서버(110)는 이미지 저장부(160)의 영구 영역내에 스플래시 스크린에 대응하는 압축된 포맷 파일을 저장한다. 다른 실시 예에서, 비문자 요소가 복합적, 정적 또는/및 반복적으로 생성되면, 대응 압축 포맷 파일을 갖지 않으며, 출력 필터 모듈(155)은 표준-기반형 또는 소유자-기반형 포맷(proprietary-based format)내에서, 비문자 요소에 대해 압축된 포맷 파일을 생성한다. 임의의 후속 전송에서, 서버 에이전트(150)는 비트맵 표시 대신 생성된 압축 포맷 파일을 전송한다. 압축 포맷이 소유자-기반형 포맷이면, 서버 에이전트(150)는 클라이언트 모드(105)가 압축된 포맷 파일을 비트맵 표시로 압축 해제하기 위해 적용가능한 소유자-기반형 그래픽 라이브러리를 포함하는 지를 판단한다. 이것이 클라이언트 노드(105)에 포함되지 않으면, 서버 에이전트(150)는 인스톨을 위해 클라이언트 노드(105)에 적용가능한 라이브러리를 전송한다. In another embodiment, the server 110 stores non-literal elements if the server 110 is static or complex. For example, if the application program 140 always creates a splash screen at an early stage, the server 110 stores the compressed format file corresponding to the splash screen in the permanent area of the image storage 160. do. In other embodiments, if a non-literal element is created complex, static or / and iteratively, it does not have a corresponding compressed format file, and the output filter module 155 may be in a standards-based or owner-based format. Within) creates a compressed format file for the non-literal elements. In any subsequent transfer, server agent 150 sends the generated compressed format file instead of the bitmap representation. If the compression format is an owner-based format, server agent 150 determines whether client mode 105 includes an owner-based graphics library that is applicable to decompress the compressed format file into a bitmap representation. If this is not included in the client node 105, the server agent 150 sends a library applicable to the client node 105 for installation.

도시된 실시 예는 서버 노드(110)상의 이미지 저장부(160)를 나타내지만, 다른 실시 예에서는 적어도 일부의 이미지 저장부(미도시)가 클라이언트 노드(1050상에 있다. 상기 다른 실시 예에서, 출력 필터 모듈(155)은 비트맵 표시의 하나이상의 체크값을 연산하고 하나 이상의 체크값을 서버 에이전트(150)에 전송한다. 서버 에이전트(150)는 하나 이상의 체크값을 클라이언트 에이전트(175)에 전송한다. 클라이언트 에이전트(175)는 동일한 하나 이상의 체크값 속성으로 저장된 압축된 데이터 포맷을 위해 클라이언트 노드(105)상의 이미지 저장부의 일부를 검색한다. 클라이언트 에이전트(175)는 서버 에이전트(150)에 대한 상기 검색 결과를 전송한다. 서버-측 및 클라이언트-측 이미지 저장부는 클라이언트와 서버 간의 세(session)이 종결된 다음에 계속할(persist) 수 있다. 이어서, 새로운 세션이 개시될 때, 클라이언트 에이전트(175)는 이미지 저장부(160)의 컨텐츠에 대한 정보를 서버 에이전트(150)와 통신하고, 서버의 이미지 저장부(160)와 비교한 다음, 서버 에이전트(150)는 클라이언트에서 그래픽 및 미디어 디스플레이를 생성하도록 요구되는 밴드폭의 양을 줄이기 위해 이미지 저장부 -또는 후술할 그들의 스트립(strip)- 내의 비문자 요소를 이용할 수 있다. Although the illustrated embodiment shows an image storage unit 160 on the server node 110, in other embodiments at least some image storage unit (not shown) is on the client node 1050. In other embodiments, The output filter module 155 computes one or more check values of the bitmap representation and sends one or more check values to the server agent 150. The server agent 150 sends one or more check values to the client agent 175. The client agent 175 retrieves a portion of the image store on the client node 105 for the compressed data format stored with the same one or more check value attributes. Send search results Server-side and client-side image stores can persist after the session between client and server is terminated Subsequently, when a new session is initiated, the client agent 175 communicates information about the contents of the image store 160 with the server agent 150 and compares it with the image store 160 of the server. The server agent 150 may use non-literal elements in the image store—or their strips, described below—to reduce the amount of bandwidth required to generate graphics and media displays at the client.

비문자 요소에 대한 압축된 데이터 포맷이 클라이언트 노드(105) 상에 존재하면, 서버 에이전트(150)는 네트워크(115)를 통해 압축된 데이터 포맷이나 비트맵 표시를 전송하지 않는다. 서버 에이전트(150)는 비문자 요소의 비트맵 표시와 연관된 그래픽 디스플레이 인터페이스 커맨드만 전송한다. 비문자 요소에 대해 압축된 데이터 포맷이 클라이언트 노드(105)상에 존재하지 않으면, 출력 필터 모듈(155)은 이미지 저장부(160)로부터 비문자 요소의 대응 압축된 포맷을 획득한다. 서버 에이전트(150)는 비문자 요소의 비트맵 표시를 출력 필터 모듈(155)이 이미지 저장부(160)에서 탐색한 압축된 데이터 포맷내의 비문자 요소로 교체한다. 서버 에이전트(150)는 압축된 포맷 내의 비문자 요소를 비트맵 표시와 연관된 그래픽 디스플레이 인터페이스 커맨드와 함께 클라이언트 노드(105)에 전송한다. If a compressed data format for a non-literal element is present on the client node 105, the server agent 150 does not transmit the compressed data format or bitmap representation over the network 115. Server agent 150 sends only graphical display interface commands associated with the bitmap representation of the non-literal element. If the compressed data format for the non-literal element is not present on the client node 105, the output filter module 155 obtains the corresponding compressed format of the non-literal element from the image storage 160. The server agent 150 replaces the bitmap representation of the non-letter elements with the non-letter elements in the compressed data format that the output filter module 155 has searched for in the image storage 160. The server agent 150 sends the non-letter elements in the compressed format to the client node 105 along with the graphical display interface commands associated with the bitmap representation.

전술과 같이, 서버(110) 및/또는 클라이언트 노드(105) 상에서의 이미지 저장부(160)에서 비문자 요소의 캐싱(caching)을 허용하여, 클라이언트에서 그래픽 및 미디어 디스플레이를 생성하도록 요구된 밴드폭을 줄인다. 본 발명에 따라, 이 비문자 요소는 서브영역, 즉, 스트립("strip")으로 세분화될 수 있으며, 이미지 저장부(160)는 전술과 같이 비문자 요소 캐싱에 스트립 레벨 그래뉴얼리티(strip level granularity)를 제공할 수 있다. 예를 들면, 웹 페이지는 웹페이지의 일부에만 눈에 띠는 전체 또는 부분적으로 다수의 이미지로 구성될 수 있다. 부분적으로만 도시된 이미지에 대해서, 다른 윈도우에 불명료한 부분을 포함하는 클라이언트에 전체 이미지를 전송할 수 있다. 그러나, 밴드폭 소비가 증가하기 때문에, 다른 데이터가 필요 이상 전송된다. 눈에 띠는 일부 이미지는 "스트립"으로 식별되며, 후술과 같이 진행된다. 이미지 저장부(160)는 스트립, 선택적으로, 이미지 스트립 높이와 같은 스트립-연관된 메타데이터(metadata), 이미지 스트립 폭, 및 이미지 스트립 식별자(예를 들면, 사이클릭 리던던시 검사 체크섬:cyclic redundancy check checksum)를 형성하는 그래픽 데이터를 포함한다. As described above, the bandwidth required to generate non-literal elements in the image storage 160 on the server 110 and / or client node 105 to produce graphics and media displays on the client. Reduce According to the invention, this non-literal element can be subdivided into sub-regions, ie strips, " strips ", and image storage 160 can be strip level granularity for non-letter element caching as described above. granularity). For example, a web page may be composed of multiple images, in whole or in part, that are only visible to a portion of the web page. For an image that is only partially shown, it is possible to send the entire image to a client that includes an opaque portion in another window. However, because bandwidth consumption increases, other data is transmitted more than necessary. Some striking images are identified as "strips" and proceed as described below. Image storage 160 may include strips, optionally strip-associated metadata such as image strip heights, image strip widths, and image strip identifiers (eg, cyclic redundancy check checksum). It includes graphic data to form.

본 실시 예에서, 그래픽 렌더링 동작 내에서 이용된 각 비문자 요소는 전술한 스트립으로 나눠진다. 일 실시 예에서, 이들 스트립은 비문자 요소로서 동일한 폭과 비문자 요소의 높이와 동일하거나 더 적은 높이를 갖는다. 클라이언트 에이전트(175)가 이미지 저장부(16)내에 나타나지 않는 하나 이상의 스트립으로 이루어진 비문자 요소의 디스플레이가 요구될 때, 요구된 스트립은 렌더링하기 위해 클라이언트 및 클라이언트-측 이미지 저장부(160')내의 저장부에 전송된다. In this embodiment, each non-literal element used within the graphic rendering operation is divided into the aforementioned strips. In one embodiment, these strips have the same width as the non-letter elements and the height less than or equal to the height of the non-letter elements. When the client agent 175 is required to display a non-literal element consisting of one or more strips that do not appear in the image store 16, the required strips are stored in the client and client-side image store 160 'for rendering. Sent to storage.

서버 에이전트(150)는 렌더링하기 위해 이전에 클라이언트에 전송되는 스트립의 데이터베이스를 보유한다. 후속 렌더링 동작이 저장된 스트립내에 포함된 영역을 제공하면, 앞에서 저장된 스트립은 서버-측 이미지 저장부(160)내에서 식별되며 저장된 스트립과 연관된 적합한 식별자가 탐색된다. 식별자와 연관된 저장된 스트립을 제공하기 위해 클라이언트 에이전트(175)를 가리키는 메시지는 클라이언트 에이전트(175)에 전송되며, 스트립 자신의 컨텐츠를 포함하는 메시지보다 적은 밴드폭을 요구한다. 클라이언트 에이전트(175)는 이미지 저장부(160')로부터 전송된 식별자와 연관된 저장된 스트립 사본을 탐색하여 저장된 스트립의 컨텐츠를 디스플레이한다. 유사하게, 개별 스트립이 다수의 비문자 요소 사이에 공유될 때, 서버 에이전트(150)는 공통 스트립을 식별하고, 클라이언트 자신의 이미지 저장부(160)에서 스트립을 디스플레이하기 위해 지시하여, 디스플레이에 대한 스트립의 재전송을 회피한다. Server agent 150 maintains a database of strips that are previously sent to clients for rendering. If a subsequent rendering operation provides an area contained within the stored strip, the previously stored strip is identified in server-side image store 160 and a suitable identifier associated with the stored strip is retrieved. The message pointing to the client agent 175 to provide the stored strip associated with the identifier is sent to the client agent 175 and requires less bandwidth than the message containing the strip's own content. The client agent 175 searches for the stored strip copy associated with the identifier sent from the image store 160 'and displays the contents of the stored strip. Similarly, when individual strips are shared between multiple non-literal elements, server agent 150 identifies common strips and instructs the client's own image store 160 to display the strips for display. Avoid retransmission of the strip.

스트립이 연속적인 렌더링 동작 사이에서 수정되어지면, 예를 들면, 이전 렌더링 동작 내의 소스 비트맵이 후속 렌더링 동작에서 목적지 비트맵이 될 때, 서버 에이전트(10)는 스트립에 대한 수정을 검출할 수 있으며 렌더링에 대한 클라이언트 에이전트(175)에 대한 스트립 및/또는 클라이언트-측 이미지 저장부(160') 내에서의 결합에 대한 스트립을 재송신한다. If the strip is modified between successive rendering operations, for example, when the source bitmap in the previous rendering operation becomes the destination bitmap in the subsequent rendering operation, the server agent 10 may detect the modification to the strip and Resend the strip for client agent 175 for rendering and / or the strip for combining in client-side image store 160 '.

도 2는 도 1의 바람직한 실시예를 이용하여, 원격 터미널 세션(remote terminal session)에 대한 디스플레이를 생성하기 위한 바람직한 실시 예 프로세스(200)를 도시한다. 출력 필터 모듈(155)은 서버노드(110)의 운영체계로 만들어진 호출을 모니터링함으로써 애플리케이션 프로그램(140)의 출력을 모니터링한다. 출력필터 모듈(155)은 애플리케이션 프로그램으로부터 디스플레이 커맨드를 검출할 때(단계 205), 출력 필터 모듈(155)은 애플리케이션 프로그램(140)이 비문자 요소의 비트맵 표시를 생성하는지를 판단한다(단계 210).FIG. 2 illustrates a preferred embodiment process 200 for generating a display for a remote terminal session using the preferred embodiment of FIG. 1. The output filter module 155 monitors the output of the application program 140 by monitoring calls made by the operating system of the server node 110. When the output filter module 155 detects a display command from the application program (step 205), the output filter module 155 determines whether the application program 140 generates a bitmap representation of the non-literal element (step 210). .

애플리케이션 프로그램(140)이 비문자 요소의 비트맵 표시를 생성하지 않으면, 출력 필터 모듈(155)은 디스플레이 커맨드를 서버 에이전트(150) -서버 에이전트는 상기 커맨드를 전송함- 에 전송하고(단계 215), 또는 프로토콜에서 정의된 표시 커맨드(representative command)를 클라이언트 에이전트(175)에 저장한다. 애플리케이션 프로그램(140)이 비문자 요소의 비트맵 표시를 생성하면, 출력 필터 모듈(155)은 비문자 이미지의 비트맵 표시에 대응하는 하나이상의 체크값을 연산한다(단계 220). If the application program 140 does not produce a bitmap representation of the non-literal element, the output filter module 155 sends a display command to the server agent 150, where the server agent sends the command (step 215). Or a representation command defined in the protocol is stored in the client agent 175. When application program 140 generates a bitmap representation of the non-literal element, output filter module 155 calculates one or more check values corresponding to the bitmap representation of the non-literal image (step 220).

하나이상의 연산된 체크값을 이용하여, 출력 필터 모듈(155)은 이미지 저장부를 검색하여 동일한 체크값 속성을 갖는 압축된 데이터 포맷이 존재하는지를 판단한다(단계 225). 이미지 저장부(160)내에 출력 필터 모듈(155)이 연산한 하나 이상의 체크값과 동일한 체크값 속성을 갖는 압축된 데이터 포맷이 존재하면, 출력 필터 모듈(155)은 비문자 요소의 비트맵 표시를 압축된 데이터 포맷으로 교체한다(단계 230). 출력 필터 모듈(155)은 클라이전트 에이전트(175)로의 최종 전송을 위해 압축된 데이터 포맷을 서버 에이전트(150)에 전송한다(단계 230). 출력 필터 모듈(155)은 또한 압축된 데이터 포맷과 함께 교체된 비트맵 표시와 연관된 모든 커맨드를 전송한다. Using one or more computed check values, output filter module 155 searches the image store to determine if there is a compressed data format having the same check value attribute (step 225). If there is a compressed data format in the image store 160 that has the same check value attribute as the one or more check values computed by the output filter module 155, then the output filter module 155 displays a bitmap representation of the non-letter elements. Replace with a compressed data format (step 230). The output filter module 155 sends the compressed data format to the server agent 150 for final transmission to the client agent 175 (step 230). The output filter module 155 also sends all commands associated with the replaced bitmap indication with the compressed data format.

이미지 저장부(160)에 동일한 하나 이상의 체크값 속성을 갖는 압축된 데이터 포맷이 존재하지 않으면, 출력 필터 모듈(155)은 압축된 데이터 포맷에 대응하는 비문자 요소의 비트맵 표시가 영구저장부에 대한 소정의 기준(criterion)(예를 들면, 상술한 임의의 기준(criteria))에 부합하는지를 판단한다(단계 235). 출력 필터 모듈(155)이 소정의 기준에 부합한다고 판단하면, 출력 모듈(155)은 압축된 데이터 포맷과 연산된 하나 이상의 체크값 속성과 동일한 대응하는 체크값 속성을 이미지 저장부(160)의 영구저장부에 저장한다(단계 240). 출력 필터 모듈(155)이 소정의 기준에 부합하지 않는다고 판단하면, 출력 필터 모듈(155)은 압축된 데이터 포맷과 연산된 하나이상의 체크값과 동일한 상기 대응 체크값 속성을 이미지 저장부(160)의 임시 저장부에 저장한다(단계 245). If there is no compressed data format having the same one or more check value attributes in the image storage unit 160, the output filter module 155 outputs the bitmap representation of the non-letter element corresponding to the compressed data format to the permanent storage. It is determined whether it meets a predetermined criterion (e.g., any criteria described above) (step 235). If the output filter module 155 determines that it meets a predetermined criterion, the output module 155 permanently stores the check value attribute corresponding to the compressed data format and the calculated one or more check value attributes. Store to storage (step 240). If it is determined that the output filter module 155 does not meet a predetermined criterion, the output filter module 155 outputs the corresponding check value attribute equal to the compressed data format and one or more check values calculated. Store in a temporary storage (step 245).

출력 필터 모듈(155)이 압축된 데이터 포맷과 연산된 하나이상의 체크값과 동일한 대응 체크값 속성을 이미지 저장부(160)부에 저장할 때, 출력 필터 모듈(155)은 비문자 요소의 비트맵 표시를 압축된 데이터 포맷으로 교체한다(단계 230). 출력 필터 모듈(155)은 궁극적으로 압축된 데이터 포맷을 클라이언트 에이전트(175)에 전송하기 위해 서버 에이전트(150)에 전송한다. 출력 필터 모듈(155)은 출력 필터 모듈(155)이 애플리케이션 프로그램(140)으로부터 다른 디스플레이 커맨드를 검출할 때까지(단계 205) 애플리케이션 프로그램에 의해 생성된 출력을 지속적으로 모니터링한다. When the output filter module 155 stores in the image storage 160 a corresponding check value attribute equal to the compressed data format and the computed one or more check values, the output filter module 155 displays a bitmap of non-letter elements. Is replaced with the compressed data format (step 230). The output filter module 155 ultimately sends the compressed data format to the server agent 150 for transmission to the client agent 175. The output filter module 155 continuously monitors the output generated by the application program until the output filter module 155 detects another display command from the application program 140 (step 205).

다른 측면에서, 본 발명은 미디어 프리젠테이션을 생성하기 위한 방법 및 시스템 및 그 제작물에 관한 것이다. 일 실시 예에서, 적어도 미디어 스트림의 일부를 나타내는 압축된 데이터 세트는 제 1 컴퓨팅 디비이스에서 인터셉트되어, 네트워크 상에서 사용자에게 압축 해제되어 프리젠트되는 제 2 컴퓨팅 디바이스에 전송된다. 다른 실시 예에서, 적어도 미디어 스트림의 일부를 나타내는 압축 해제된 데이터 세트는, 전술과 마찬가지로 제 1 컴퓨팅 디바이스 상에서 인터셉트되어 압축되어, 사용자에게 압축해제되고 프리젠트되는 제2 컴퓨터 디바이스에 전송된다. In another aspect, the present invention relates to a method and system for producing a media presentation and to a production thereof. In one embodiment, the compressed data set representing at least a portion of the media stream is intercepted in the first computing device and sent to a second computing device that is decompressed and presented to the user on the network. In another embodiment, the decompressed data set, which represents at least a portion of the media stream, is intercepted and compressed on the first computing device as described above and transmitted to a second computer device that is decompressed and presented to the user.

도 3은 본 발명의 일 측면에 따른 미디어 프리젠테이션을 생성하는 시스템(300)의 일 실시 예를 도시한다. 본 시스템(300)은 네트워크(315)를 통해 제 2 컴퓨팅 디바이스(예를 들면, 클라이언트:305)와 통신하는 제 1 컴퓨팅 디바이스(예를 들면, 서버: 310)를 포함한다. 일반적으로, 전술을 제외하고, 클라이언트(305), 서버(310), 및 네트워크(315)는 전술한 클라이언트(105), 서버(110), 및 네트워크(105)와 동일한 특성을 갖는다. 3 illustrates one embodiment of a system 300 for generating a media presentation in accordance with an aspect of the present invention. The system 300 includes a first computing device (eg, server 310) in communication with a second computing device (eg, client: 305) over a network 315. In general, except for the foregoing, the client 305, server 310, and network 315 have the same characteristics as the client 105, server 110, and network 105 described above.

도시된 바와 같이, 클라이언트(305)는 클라이언트 에이전트(375), 및 프리젠테이션 인터페이스(345)를 포함한다. 클라이언트 에이전트(375)는 소프트웨어 프로그램 및/또는 하드웨어 디바이스(예를 들면, ASIC 또는 FPGA 등과 같은)로 구현될 수 있다. 클라이언트 에이전트(375)는 네트워크(315)를 통해 통신하기 위해 클라이언트 송수신기(330)를 이용하여 프리젠테이션 인터페이스(345)에서 미디어와 넌-미디어 컴포넌트를 갖는 프리젠테이션을 생성한다. As shown, the client 305 includes a client agent 375, and a presentation interface 345. The client agent 375 may be implemented with a software program and / or a hardware device (eg, ASIC or FPGA, etc.). Client agent 375 generates a presentation with media and non-media components at presentation interface 345 using client transceiver 330 to communicate over network 315.

일 실시 예에서, 서버(310)는 애플리케이션 서버이다. 도시된 바와 같이, 서버(310)는 적어도 서버 송수신기(335), 애플리케이션 프로그램(340), 서버 에이전트(350), 제 1 출력 필터 모듈(355A), 및 제 2 출력 필터 모듈(355b)을 포함한다. 서버 에이전트(350), 제 1 출력 필터 모듈(355A), 및 제 2 출력 필터 모듈(355b)는 소프트웨어 프로그램 및/또는 하드웨어 디바이스(예를 들면, ASIC 또는 FPGA)로 구현될 수 있다. 서버 에이전트(350), 제 1 출력 필터 모듈(355A), 제 2 출력 필터 모듈(355b)은 네트워크(315)와 통신하기 위해 서버 송수신기(335)를 이용한다.In one embodiment, server 310 is an application server. As shown, server 310 includes at least a server transceiver 335, an application program 340, a server agent 350, a first output filter module 355A, and a second output filter module 355b. . The server agent 350, the first output filter module 355A, and the second output filter module 355b may be implemented in software programs and / or hardware devices (eg, ASICs or FPGAs). The server agent 350, the first output filter module 355A, and the second output filter module 355b use the server transceiver 335 to communicate with the network 315.

다른 실시 예에서, 전술한 구성요소(335, 340, 350, 355A 및 355B)는 네트워크(315) 또는 다른 네트워크(미도시)를 통해 서로 통신하는 몇몇 서버를 통해 분배(distributed) 및/또는 중복된다(duplicated). 예를 들면, 이것은 미디어 관련 특성 정보의 전송, 미디어 스트림, 및 다수의 홉스(hops)를 통한 콘트롤 정보 및 다수의 클라이언트에 대한 콘트롤 정보를 인정한다. 대안적으로, 또 다른 실시 예에서 두 개 이상의 전술한 컴포넌트(335, 350, 355A, 355B)는 하나의 컴포넌트로 결합될 수 있으며, 후술과 같이, 두 개 이상의 컴포넌트(335, 350, 355A, 355B)에 의해 수행되는 기능(function)은 단일 컴포넌트에 의해 수행된다. In other embodiments, the aforementioned components 335, 340, 350, 355A, and 355B are distributed and / or redundant through some servers communicating with each other via a network 315 or other network (not shown). (duplicated). For example, this allows for the transmission of media related characteristic information, media streams, and control information over multiple hops and control information for multiple clients. Alternatively, in another embodiment two or more of the aforementioned components 335, 350, 355A, 355B may be combined into one component, and as described below, two or more components 335, 350, 355A, 355B The function performed by) is performed by a single component.

또 다른 실시 예에서, 전술한 컴포넌트(340, 355A, 355B)는 동일한 서버(310)에서 중복된다. 예를 들면, 이것은 다른/다수의 애플리케이션, 및 각 애플리케이션내의 다른/다수의 미디어 스트림과 관련한 미디어-관련 특성 정보, 미디어 스트림 및 콘트롤 정보의 동시 전송을 허용한다. 다른 애플리케이션(340)은 주요한(major) 스트림 컨텍스트로 식별될 수 있으며, 특정 메이저 컨텍스트 내의 마이너(minor) 컨텍스트로서 다른 미디어 스트림이 식별될 수 있다. In another embodiment, the aforementioned components 340, 355A, 355B are duplicated in the same server 310. For example, this allows simultaneous transmission of different / multiple applications, and media-related characteristic information, media streams, and control information with respect to other / multiple media streams within each application. The other application 340 may be identified as a major stream context, and other media streams may be identified as minor contexts within a particular major context.

도 3에 도시된 애플리케이션 프로그램(340)은 그 출력의 일부로 미디어 스트림을 나타내는 임의의 애플리케이션 프로그램(340)이다. 미디어 스트림은 비디오 스트림, 오디오 스트림, 또는 대안적으로 다수의 인스턴스의 임의의 조합일 수 있다. 더욱이, 애플리케이션 프로그램(340)은 넌-미디어 그래픽 정보를 출력할 수 있다. 본 컨텍스트에서, 넌-미디어 그래픽 정보는 일반적으로 코덱 또는 그 등가물(예를 들면, 디스플레이 스크린 상에서 정적 그래픽 정보를 로케이팅하기 위해 툴바 및 드랍 다운 메뉴(이에 한정되지는 않음)를 포함하는 정보)의 이용없이 애플리케이션 프로그램(340)에 의해 출력된 모든 그래픽 정보에 관한 것이다. 넌-미디어 그래픽 정보는 또한 예를 들면, 디스플레이 스크린상에서 정적 그래픽 정보를 로케이팅하기 위한 정보를 포함한다. 애플리케이션 프로그램(340)은, 예를 들면, 미국 워싱톤 레드몬드의 마이크로소프트사에서 제작된 MICROSOFT ENCARTA 애플리케이션 프로그램일 수 있다. The application program 340 shown in FIG. 3 is any application program 340 that represents a media stream as part of its output. The media stream can be a video stream, an audio stream, or alternatively any combination of multiple instances. Moreover, the application program 340 can output non-media graphics information. In this context, non-media graphics information generally refers to a codec or equivalent thereof (eg, information including, but not limited to, toolbars and drop-down menus for locating static graphics information on a display screen). All graphic information output by the application program 340 without use. The non-media graphics information also includes information for locating the static graphics information on the display screen, for example. The application program 340 may be, for example, a MICROSOFT ENCARTA application program manufactured by Microsoft Corporation of Redmond, Washington, USA.

일 실시예에서, 애플리케이션 프로그램은, 미디어 스트림의 적어도 일부를 표시하는 압축된 데이터 세트를 압축 해제하기 위하여, 예를 들면, 서버(310)의 운영 체계에서 인스톨된 코덱과 같은 외장 코덱을 이용한다. 다른 실시 예에서, 애플리케이션 프로그램(340)에 이용된 코덱은 자체 애플리케이션 프로그램 내에 내장된다. 서버(310)는 다수의 실행 애플리케이션 프로그램(340)을 포함할 수 있으며, 일부의 애플리케이션 프로그램(340)은 외장 코덱을 이용하며, 다른 일부의 애플리케이션 프로그램(340)은 내장 코덱을 이용한다. In one embodiment, the application program uses an external codec, such as, for example, a codec installed in the operating system of the server 310, to decompress a compressed data set that represents at least a portion of the media stream. In another embodiment, the codec used in the application program 340 is embedded in its own application program. The server 310 may include a plurality of execution application programs 340, some application programs 340 use an external codec, and some application programs 340 use an embedded codec.

애플리케이션 프로그램(340)이 외장 코덱을 이용하고 미디어 스트림을 출력하기를 원하는 경우, 서버(310)의 운영체계는 후속 디스플레이를 위해 미디어 스트림의 적어도 일 영역을 나타내는 압축된 데이터 세트를 압축 해제하기 위하여 외장 코덱을 이용할 것을 요청한다. 애플리케이션 프로그램(34))에 의해 이용된 코덱이 애플리케이션(340) 자체에 내장되는 경우, 미디어 스트림을 출력하기 원할 때 애플리케이션 프로그램(340)은 후속 디스플레이에 대해 압축된 데이터 세트 자신을 압축 해제하기 위해 내장된 코덱을 이용한다. 추가적으로, 애플리케이션 프로그램(340)은 넌-미디어 그래픽 정보와 연관된 그래픽 디스플레이 커맨드를 생성하여 서버(310)의 운영체계에 전송할 수 있다. 서버 에이전트(150) 또는 클라이언트 에이전트(175)에 대란 운영 체계가 미국, 워싱턴, 레드몬드의 마이크로 소프트사에 의해 제작된 운영체계의 원도우즈® 계의 일종인 경우, 이 그래픽 디스플레이 커맨드는, 예를 들면, DirectShow®, DirectX®, 또는 GDI기능성의 호출의 형태일 수 있다. If the application program 340 uses an external codec and wants to output the media stream, the operating system of the server 310 may attach the external to decompress the compressed data set representing at least one region of the media stream for subsequent display. Ask to use the codec. If the codec used by the application program 34 is embedded in the application 340 itself, the application program 340 is embedded to decompress the compressed data set itself for subsequent displays when it wishes to output a media stream. The codec used. In addition, the application program 340 may generate and send a graphic display command associated with the non-media graphics information to the operating system of the server 310. If the operating system against server agent 150 or client agent 175 is a type of Windows® system of operating system manufactured by Microsoft Corporation of Redmond, Washington, USA, this graphical display command is, for example, This can be in the form of calls to DirectShow®, DirectX®, or GDI functionality.

본 발명에 따르면, 애플리케이션 프로그램(340)은 애플리케이션 프로그램(340)이 서버(310)에서 미디어 및 넌-미디어 컴포넌트를 갖는 프리젠테이션을 생성했었던 것처럼 이 태스크들을 수행한다. 후술과 같이, 제 1 출력 필터 모듈(355A), 제 2 출력 필터 모듈(355B) 및 서버 에이전트(350)는 네트워크(315)를 통해, 외장 코드에 전달되는(pass) 압축된 데이터 세트, 내장 코드에 의해 생성된 압축 해제된 데이터, 및 넌-미디어 그래픽 정보와 연관된 그래픽 디스플레이 커맨드를 각각 인터셉트하여, (내장된 코드에 의해 생성된 압축 해제된 데이터 세트를 우선 압축한 다음) 그들을 전송한다. 클라이언트 에이전트(375)는, 후술에 따르면, 수신된 압축 데이터 세트를 압축 해제한 다음, 클라이언트(305)의 프리젠테이션 인터페이스(345)에서 미디어 및 넌-미디아 컴포넌트를 갖는 프리젠테이션을 생성하기 위해, 넌-미디어 그래픽 정보와 연관된, 동일하거나 유사한 그래픽 디스플레이 커맨드를 클라이언트(305)의 운영체계에 넘겨준다(issue). 실시 예에서, 예를 들면, 후술될 DirecrShow® 실시 예에서는 서버 에이전트(350)와 클라이언트 에이전트(375) 간의 통신은 미디어-관련 특성(예를 들면, 버퍼 및 미디어 타입 성능, 미디어 스트림 우선순위, 등) 또는 콘트롤 정보(예를 들면, 작동(play), 휴지(pause), 플러시(flush), 엔드-어브-스트림(end-of-stream), 및 스탑 커맨드(stop commands), 부모 윈도우 할당, 윈도우 위치 및 클리핑 커맨드, 스크롤링, 오디어 조장 커맨드, 볼륨, 밸랜서, 등)를 포함한다. According to the present invention, application program 340 performs these tasks as if application program 340 had generated a presentation with media and non-media components at server 310. As described below, the first output filter module 355A, the second output filter module 355B, and the server agent 350 pass through the network 315 to a compressed data set, embedded code, which is passed to an external code. Intercepts the decompressed data generated by the < RTI ID = 0.0 > and < / RTI > non-media graphics information, respectively, and sends them (first compressing the decompressed data set generated by the embedded code). The client agent 375 decompresses the received compressed data set according to the following, and then generates a presentation with media and non-media components in the presentation interface 345 of the client 305. Issue the same or similar graphical display command associated with the media graphical information to the operating system of the client 305. In embodiments, for example, in the DirecrShow® embodiment described below, the communication between server agent 350 and client agent 375 may be media-related (eg, buffer and media type performance, media stream priority, etc.). ) Or control information (e.g., play, pause, flush, end-of-stream, and stop commands, parent window assignment, window) Position and clipping commands, scrolling, audio encouragement commands, volume, balancer, etc.).

외장 코덱을 이용하는 애플리케이션 프로그램(340)이 미디어 스트림을 출력하기 위해 외장 코덱을 호출하는 시도(attempt)를 할때, 제 1 출력 필터 모듈(355A) 및 제 2 출력 필터 모듈(355B)이 호출된다. 제 1 출력 필터 모듈(355A)은 미디어 스트림의 적어도 일부를 표시하는 원본 압축 데이터 세트를 인터셉트한다. 외장 코덱이 데이터 세트를 복원하는 것과는 달리, 제 1 출력 필터 모듈(355A)은 네트워크(315)를 통해 클라이언트 에이전트(375)에 원본 압축 데이터 세트를 전송한다. 제 2 출력 필터 모듈(355B)은 스트림-독립(일반적인) 컨트롤 커맨드(예를 들면, 재생, 일시정지, 정지, 플러쉬(flush), 엔드오브스트림(end of stream))을 캡쳐하는 OS-레벨 렌더러(renderer)와 같이 동작하며 이러한 정보를 네트워크(315)를 통해 클라이언트 에이전트(375)에 전송한다. 미디어 스트림이 비디오 스트림을 포함하는 경우, 제 2 출력 필터 모듈(355B)은 또한 디스플레이 화면상의 비디오 스트림의 이미지를 정하기 위한 정보(예를 들면, 원래 윈도우 할당(parent window assignment), 배치 및 클리핑(clipping) 커맨드)를 캡쳐하며 이러한 정보를 네트워크(315)를 통해 클라이언트 에이전트(355B)에 전송한다. 미디어 스트림이 오디오 스트림을 포함하는 경우, 제 2 출력 필터 모듈(355B)은 또한 오디오 조정(예를 들면, 볼륨 및 밸런스 조정 커맨드)에 대한 정보를 캡쳐하며 이러한 정보를 네트워크(315)를 통해 클라이언트 에이전트(375)에 전송한다.When an application program 340 using an external codec attempts to call an external codec to output a media stream, the first output filter module 355A and the second output filter module 355B are called. The first output filter module 355A intercepts the original compressed data set that represents at least a portion of the media stream. Unlike the external codec restoring the data set, the first output filter module 355A sends the original compressed data set to the client agent 375 via the network 315. The second output filter module 355B is an OS-level renderer that captures stream-independent (typical) control commands (e.g., play, pause, stop, flush, end of stream). acts as a renderer and transmits this information to the client agent 375 via the network 315. If the media stream comprises a video stream, the second output filter module 355B may also provide information for determining the image of the video stream on the display screen (eg, parent window assignment, placement and clipping). Command) and transmit this information to the client agent 355B via the network 315. If the media stream comprises an audio stream, the second output filter module 355B also captures information about audio adjustment (eg, volume and balance adjustment commands) and sends this information over the network 315 to the client agent. Send to 375.

또 다른 실시예에 있어서, 내장 코덱을 이용하는 애플리케이션 프로그램(340)이 미디어 스트림을 출력하기 위해, 예를 들면, OS-레벨 렌더러를 호출하는 시도를 할때, 제 2 출력 필터 모듈(355B)이 호출된다. 제 2 출력 필터 모듈(355B)는 애플리케이션 프로그램(340)의 출력으로부터 미디어 스트림의 적어도 일부를 표시하는 제 1 복원 데이터 세트를 인터셉트한다. 그 다음 제 2 출력 필터 모듈(355B)은, 이하에서 설명하는 바와 같이, 인터셉트된 제 1 복원 데이터 세트를 압축하고 그 압축된 데이터 세트를 네트워크(315)를 통해 클라이언트 에이전트(375)에 전송한다. 미디어 스트림이 비디오 스트림을 포함하는 경우, 상기 제 2 출력 필터 모듈(355B)은 또한 디스플레이 화면상의 비디오 스트림의 이미지를 정하기 위한 정보를 캡쳐하고 이러한 정보를 네트워크(315)를 통해 클라이언트 에이전트(375)에 전송한다.In another embodiment, when the application program 340 using the built-in codec attempts to call an OS-level renderer to output a media stream, for example, the second output filter module 355B is called. do. The second output filter module 355B intercepts the first reconstruction data set that represents at least a portion of the media stream from the output of the application program 340. The second output filter module 355B then compresses the intercepted first reconstructed data set and transmits the compressed data set to the client agent 375 via the network 315, as described below. If the media stream comprises a video stream, the second output filter module 355B also captures information for determining the image of the video stream on the display screen and sends this information to the client agent 375 via the network 315. send.

서버 에이전트(350) 또는 클라이언트 에이전트(375)를 위한 운영 체계가 레드먼드, 워싱턴의 마이크로소프트사에서 제작된 Windows® 패밀리의 하나일때, 서버 에이전트(350)는 서버(310)상에 인스톨된 다른 필터들의 필터 메리트 레벨(merit level)을 능가하는 DirectShow® 변환 필터를 제공하는 것에 의해 이러한 인터셉션 기능을 구현할 수도 있다. 공지된 바와 같이, 운영 체계의 WINDOWS 패밀리는 미디어 인코딩의 특정 타입을 처리할 수 있는 다중 필터가 인스톨되는 것을 허용한다. 필터에 할당된 메리트 레벨은 필터에 주어지는 우선순위(priority)를 판단한다; 즉, 높은 메리트 레벨을 갖는 필터가 낮은 메리트 레벨을 갖는 필터보다 앞서 미디어 타입을 처리하기 위해 선택된다. 다양한 미디어 타입(예를 들면, 비디오, 오디오, MIDI, 텍스트, 등등)에 대한 지원은 시스템 레지스트리 변경을 통해 원하는 미디어 타입과 변환 필터를 결합시키는 것에 의해 구현될 수 있다. 또한, 레지스트리 변경을 통해, 변환 필터는 특정 렌더러 필터와 결합될 수도 있다. 명백히, 이러한 구성은 확장가능하며 미디어 프로그래밍의 새로운 타입을 지원하는 것도 허용한다. When the operating system for the server agent 350 or the client agent 375 is one of the Windows® family manufactured by Microsoft Corporation of Redmond, Washington, the server agent 350 may be configured for other filters installed on the server 310. You can also implement this interception feature by providing a DirectShow® transform filter that surpasses the filter merit level. As is known, the WINDOWS family of operating systems allows for the installation of multiple filters that can handle certain types of media encodings. The merit level assigned to the filter determines the priority given to the filter; That is, a filter with a high merit level is selected to process the media type ahead of a filter with a low merit level. Support for various media types (eg, video, audio, MIDI, text, etc.) can be implemented by combining conversion filters with the desired media type through system registry changes. In addition, through a registry change, the transform filter may be combined with a particular renderer filter. Obviously, this configuration is extensible and also allows to support new types of media programming.

Windows® 환경에서, 서버 에이전트(350)은 변경된 DirectShow® 변환 및 렌더러 필터를 이용하여 클라이언트와의 통신 기능을 구성할 수 있다. 수신된 미디어 데이터를 변환(복원)하는 것 대신, 변경된 변환 필터가 데이터를 클라이언트 에이전트(375)에 전송한다. 변환된(압축 해제된) 미디어 데이터를 렌더링하는 것 대신, 렌더러 필터는 스트림-일반적(예를 들면, 재생, 일시정지, 정지, 플러쉬, 엔드오브스트림) 그리고 스트림-특정(예를 들면, 비디오 원래 윈도우 할당, 배치 및 클리핑, 오디오 볼륨 및 밸런스 조정) 커맨드 둘다를 전송한다. 클라이언트(305)가 Windows® 운영 체계를 사용한다면, 클라이언트(305)에서의 변경된 DirectShow® 소스 필터는 전송된 미디어와 스트림-일반적 컨트롤 데이터를 수신하기 위해 동작할 수 있다. 마지막으로, 클라이언트(305)에서의 변경되지 않은 변환 및 렌더링 필터가 유저해 의해 보고, 듣을 수 있게 미디어 데이터를 변환(복원) 및 렌더한다. 렌더러 필터는 또한 스트림-특정 컨트롤 데이터를 수신한다.In a Windows® environment, the server agent 350 can configure the communication functionality with the client using the modified DirectShow® transformation and renderer filter. Instead of converting (restore) the received media data, the modified transform filter sends the data to the client agent 375. Instead of rendering the converted (decompressed) media data, the renderer filter is stream-general (eg, play, pause, stop, flush, end-of-stream) and stream-specific (eg, video original). Windows Assign, Place and Clip, Audio Volume and Balance) commands. If the client 305 uses a Windows® operating system, then the modified DirectShow® source filter at the client 305 may operate to receive the transmitted media and stream-general control data. Finally, the unchanged transform and render filter at the client 305 transforms (restores) and renders the media data for viewing and listening by the user. The renderer filter also receives stream-specific control data.

일실시예에서, 서버 에이전트(350)는 각각의 미디어 스트림에 대한 분리된 미디어 큐(queue)를 유지한다. 서버 에이전트(350)와 클라이언트 에이전트(375)사이의 네트워크 대역폭이 부족할때, 각각의 미디어 스트림은 우선순위화될 수 있다, 즉, 웹 브라우저로부터 스틸 이미지의 전송이 명백히 느려지거나 정지되는 반면, 실타이밍 비디오 컨퍼런싱 정보의 전송을 허용된다. 스트림 우선순위화는 할당된 우선순위를 갖는 각가의 스트림, 미디어의 다른 타입에 대해 분리된 큐를 제공하는 것에 의해 수행될 수 있다. 네트워크 대역폭은 예상된 타겟 서버와 반응 타이밍을 측정하는 "pinging"과 같은 공지된 방법에 의해 결정될 수 있다. 미디어 스트림이 내장된 타이밍 정보를 포함하는 실시예에 있어서, 이러한 정보는 미디어 데이터가 충분히 빠르게 전송되지 않는지 여부, 즉, 채널의 대역폭이 전송을 지원할 수 없는지 여부를 판단하기 위해 이용될 수 있다.In one embodiment, server agent 350 maintains a separate media queue for each media stream. When the network bandwidth between the server agent 350 and the client agent 375 is insufficient, each media stream may be prioritized, ie while the transmission of still images from the web browser is obviously slowed down or stopped, Transmission of video conferencing information is allowed. Stream prioritization may be performed by providing separate queues for each stream, different type of media having an assigned priority. The network bandwidth may be determined by known methods such as "pinging" to measure the expected target server and response timing. In an embodiment in which the media stream includes embedded timing information, this information may be used to determine whether the media data is not being transmitted fast enough, i.e., whether the bandwidth of the channel cannot support transmission.

또 다른 실시예에서, 동일 애플리케이션 프로그램(340)에 대응하는 미디어 큐는 미디어 타입(비디오, 오디오, MIDI, 텍스트, 등등)에 근거하여 다른 우선순위를 가질 수 있다. 서버 에이전트(350)와 클라이언트 에이전트(375)사이의 네트워크 대역폭이 모든 미디어 스트림을 수용하기에 불충분하다면, 높은 우선순위의 큐가 인터럽션없이 서비스될 수 있도록 낮은 우선순위의 큐로부터 샘플들이 드롭(즉, 삭제)될 수 있다. 예를 들면, 비디오 전송은 인터럽트되고 "슬라이드-모드(slide-mode)"로 나타나는 반면 오디오는 계속 인터럽트되지 않는다. 또 다른 실시예에서, 컨트롤 정보는 임의의 미디어 데이터의 앞의 컨트롤 데이터의 전송의 우선순위를 허용하는, 그 자신의 컨트롤 큐와 연관된다.In another embodiment, media queues corresponding to the same application program 340 may have different priorities based on the media type (video, audio, MIDI, text, etc.). If the network bandwidth between server agent 350 and client agent 375 is insufficient to accommodate all media streams, samples may be dropped from low priority queues (ie, high priority queues can be serviced without interruption). , Can be deleted). For example, video transmissions are interrupted and appear as "slide-mode" while audio is not interrupted. In another embodiment, the control information is associated with its own control queue, allowing the priority of transmission of control data before any media data.

이 실시예에서, 서버 에이전트(350)에서 클라이언트 에이전트(375)로의 컨트롤 정보의 전송은 클라이언트 렌더링 필터의 스케쥴러(scheduler)의 컨트롤을 허용한다. 초기 플레이백(playback)내의 레이턴시(latency)는 플레이백 시작전에 가능한 빨리 클라이언트 에이전트(375)의 미디어 큐(도시되어 있지는 않음)를 미리-채움(pre-filling)으로써 감소될 수 있다. 유사하게, 네트워크 레이턴시내의 후속하는 변동이 필요한 클라이언트 에이전트(375)의 미디어 큐를 재조정하는 것에 의해 처리될 수 있다. 클라이언트 에이전트(375)는 하나 이상의 그 자신의 미디어 큐가 아래로 떨어지거나 또는 임의의 리소스 임계치를 초과하는 것을 검출하고, 미디어 큐 조정의 원하는 양을 위해 서버 에이전트(350)에 각각 대응하는 버스트(burst) 또는 정지 요청을 보낼 수 있다.In this embodiment, the transfer of control information from server agent 350 to client agent 375 allows control of the scheduler of the client rendering filter. Latency in initial playback can be reduced by pre-filling the media queue (not shown) of client agent 375 as soon as possible before playback begins. Similarly, subsequent fluctuations in network latency can be handled by readjusting the media queue of client agents 375 that need to. The client agent 375 detects that one or more of its own media queues falls down or exceeds any resource threshold, and each burst corresponding to the server agent 350 for the desired amount of media queue adjustment. Or send a stop request.

Windows® 환경내의 DirectShow® 기능의 사용은 운영 체계에 의해 제공되는 기능에 영향을 미치며 중복되는 기능의 재구현을 줄이거나 제거한다. 예를 들면, 클라이언트 에이전트(375)에 의해 제공되는 그래픽 또는 미디어 디스플레이는 컴플렉스 클리핑 및 오디오 컨트롤 기능을 제공하기 위한 운영 체계 기능에 영향을 미친다. 또한, 클라이언트 에이전트(375)는 운영 체계에 의해 제공되는 DirectDraw® 및 DirectSound® 능력들을 사용할 수 있으며, 요구되는 CPU 리소스를 줄이고 전체적인 수행성능을 개선할 수 있다.The use of DirectShow® features in the Windows® environment affects the functionality provided by the operating system and reduces or eliminates the reimplementation of redundant features. For example, the graphic or media display provided by the client agent 375 affects the operating system functionality to provide complex clipping and audio control functionality. In addition, the client agent 375 can use the DirectDraw® and DirectSound® capabilities provided by the operating system, reducing the required CPU resources and improving overall performance.

또 다른 실시예에서, 서버 에이전트(350)는 애플리케이션 프로그램(340)으로부터의 출력인 비-미디어 그래픽 정보와 연관된 그래픽 디스플레이 커맨드를 인터셉트하고 네트워크(315)를 통해 클라이언트 에이전트(375)에 전송한다.In yet another embodiment, server agent 350 intercepts and sends graphical display commands associated with non-media graphics information that is output from application program 340 to client agent 375 via network 315.

또한, 일실시예에서, 제 1 출력 필터 모듈(355A), 제 2 출력 필터 모듈(355B) 또는 둘다(애플리케이션 프로그램(340)이 외장 코덱을 사용하는 경우), 또는 제 2 출력 필터 모듈(355B)(애플리케이션 프로그램(340)이 내장 코덱을 사용하는 경우), 은 미디어 스트림과 연관된 타이밍 정보를 캡쳐하고 이러한 타이밍 정보를 네트워크(315)를 통해 클라이언트 에이전트(375)에 전송한다. 좀더 구체적으로는, 출력 필터 모듈(355A, 355B)는 미디어 스트림의 각각의 프레임에 대한 프리젠테이션 타이밍을 캡쳐하고 클라이언트 에이전트(375)에 전송하며, 이것에 의해 클라이언트 에이전트(375)가 비디오와 오디오 스트림을 동기화시키고 정정 프레임 레이트(correct frame rate)를 유지할 수 있다. Also, in one embodiment, the first output filter module 355A, the second output filter module 355B, or both (when the application program 340 uses an external codec), or the second output filter module 355B. (When application program 340 uses an embedded codec), captures timing information associated with the media stream and sends this timing information over network 315 to client agent 375. More specifically, the output filter module 355A, 355B captures the presentation timing for each frame of the media stream and sends it to the client agent 375, whereby the client agent 375 makes a video and audio stream. Can be synchronized and a correct frame rate can be maintained.

도시된 바와 같이, 서버 에이전트(350)는 서버 송수신기(335) 및 애플리케이션 프로그램(340)과 연결된다. 일실시예에서, 이하에서 설명되는 바와 같이, 서버 에이전트(350)는 클라이언트 에이전트(375)에 의해 지원되는 미디어 포맷의 리스트를 네트워크(315)를 통해 클라이언트 에이전트(375)로부터 수신한다. 지원되는 미디어 포맷의 리스트의 수신에 따라, 서버 에이전트(350)는 서버(310)의 구성을 조정함으로써 출력 필터 모듈(355A, 355B)를 등록(resister)한다. 일실시예에서, 예를 들면, 서버 에이전트(350)는 서버(310)의 레지스트리를 편집함으로써 출력 필터 모듈(355A, 355B)를 등록한다. 그 다음 서버 에이전트(350)는 서버(310)가 모든 이러한 미디어 포맷을 처리할 수 있다는 것을 클라이언트 에이전트(375)에 알린다. 또 다른 실시예에서, 클라이언트 에이전트(375) 및 서버 에이전트(350)는 지원되는 포맷 및 능력을 교섭한다(negotiate). 예를 들면, 클라이언트 에이전트(375)는 서버 에이전트(35)가 클라이언트 에이전트(375)에 의해 JPEG2000 디스플레이를 생성할 것을 명확하게 요청할때까지 JPEG2000 포맷 미디어의 지원을 서버 에이전트(350)에 알리는 것을 연기할 수 있다.As shown, server agent 350 is coupled to server transceiver 335 and application program 340. In one embodiment, as described below, server agent 350 receives a list of media formats supported by client agent 375 from client agent 375 via network 315. Upon receipt of the list of supported media formats, server agent 350 registers output filter modules 355A, 355B by adjusting the configuration of server 310. In one embodiment, for example, server agent 350 registers output filter modules 355A, 355B by editing the registry of server 310. Server agent 350 then informs client agent 375 that server 310 can handle all of these media formats. In another embodiment, client agent 375 and server agent 350 negotiate supported formats and capabilities. For example, client agent 375 may postpone notifying server agent 350 of support of JPEG2000 format media until server agent 35 explicitly requests that client agent 375 generate a JPEG2000 display. Can be.

또 다른 실시예에서, 미디어 스트림을 렌더하기 위한 시도를 하는 중 애플리케이션 프로그램(340)이 제 1 출력 필터 모듈(355A)을 로드(load)할때, 필터 모듈(355A)은 할당, 미디어 타입, 미디어 스트림 우선순위 등의 미디어 스트림 특성들을 제공하는 것에 미디어 스트림을 생성하기 위해 클라이언트 에이전트(375)에 차례로 요청을 송신하여, 서버 에이전트(350)와 통신한다. 클라이언트 에이전트(375)는 요청의 성공 또는 실패를 지시하는 것으로 미디어 스트림을 생성하기 위한 서버 에이전트(350)의 요청에 응답한다. 요청의 성공 또는 실패는 클라이언트(305)에서의 미디어 스트림 복원 능력, 충분한 메모리, 등등의 각각의 필터 모듈 능력의 유효성에 의존한다. 성공되었을때, 애플리케이션 프로그램(340)은 제 2 출력 필터 모듈(355B)을 로드하고 그것을 제 1 출력 필터 모듈(355A)에 연결시키며, 이것에 의해 압축된 미디어의 충분한 스트리밍을 제공한다. 실패한 경우, 애플리케이션 프로그램(340)은 제 1 출력 필터 모듈(355A)를 로드하지 않고 서버(310)에서 스트림을 복원하고 렌더하는 Microsoft의 고유 또는 제 3 공용-지원(party-supplied) 출력 필터 모듈을 로드한다. 예를 들면, 클라이언트(305)에서 근원을 이루는 운영 체계가 DIRECTX 및 DIRECTSHOW 기술을 구현하는 MICROSOFT WINDOWS 패밀리의 하나일때, 제 1 출력 필터 모듈(355A) 및 제 2 출력 필터 모듈(355B)은 서버 에이전트(350)와 직접 통신한다.In another embodiment, when the application program 340 loads the first output filter module 355A while attempting to render the media stream, the filter module 355A may assign, media type, media. Requests are in turn sent to the client agent 375 to communicate with the server agent 350 to generate a media stream in providing media stream characteristics such as stream priority. The client agent 375 responds to the server agent 350's request to create a media stream by indicating the success or failure of the request. The success or failure of the request depends on the validity of each filter module capability, such as media stream reconstruction capability, sufficient memory, and so forth at the client 305. When successful, the application program 340 loads the second output filter module 355B and connects it to the first output filter module 355A, thereby providing sufficient streaming of the compressed media. If unsuccessful, the application program 340 uses Microsoft's own or third party-supplied output filter module to restore and render the stream on the server 310 without loading the first output filter module 355A. Load. For example, when the operating system originating at the client 305 is one of the MICROSOFT WINDOWS families that implement DIRECTX and DIRECTSHOW technology, the first output filter module 355A and the second output filter module 355B are server agent ( Communicates directly with 350).

클라이언트(305)에서, 클라이언트 에이전트(375)는 클라이언트 송수신기(330)와 프리젠테이션 인터페이스(345)와 연결된다. 이하에서 설명되는 바와 같이,클라이언트 에이전트(375)는 클라이언트 에이전트에 의해 지원되는 미디어 포맷을 서버 에이전트(350)에 초기에 알린다. 또한, 클라이언트 에이전트(375)는 네트워크(315)를 통해 출력 필터 모듈(355B)로부터 압축된 데이터 세트와 임의의 연관된 타이밍 정보를 수신한다. 또한, 클라이언트 에이전트(375)는 네트워크(315)를 통해 제 2 출력 필터 모듈(355B)로부터 비-미디어 그래픽 정보와 관련되 그래픽 디스플레이 커맨드과 서버 에이전트(350)으로부터 스트림-일반적(예를 들면, 재생, 일시정지, 정지, 플러쉬, 엔드오브스트림) 및 스트림-특정(예를 들면, 비디오 원래 윈도우 할당, 배치 및 클리핑, 오디오 볼륨 및 밸런스 조정) 커맨드를 수신한다.At client 305, client agent 375 is coupled with client transceiver 330 and presentation interface 345. As described below, the client agent 375 initially informs the server agent 350 of the media format supported by the client agent. In addition, the client agent 375 receives any associated timing information with the compressed data set from the output filter module 355B via the network 315. In addition, the client agent 375 may be configured to stream non-media (eg, play, Receive pause, stop, flush, end-of-stream) and stream-specific (eg, video original window assignment, placement and clipping, audio volume and balance adjustment) commands.

외장 또는 내장 코덱을 이용하는 클라이언트 에이전트(375)는 압축된 데이터 세트와, 비-미디어 그래픽 정보와 연관된 그래픽 디스플레이 커맨드, 디스플레이 화면상의 비디오 스트림의 이미지를 정하기 위한 임의의 정보, 임의의 타이밍 정보를 함께 복원하고 프리젠테이션 인터페이스(345)에서 미디어 표시를 생성한다. 일실시예에서, 프리젠테이션 인터페이스(345)는 비디오 프리젠테이션과 같은 그래픽 디스플레이를 렌더하는 디스플레이 화면을 갖는다. 또 다른 실시예에서, 프리젠테이션 인터페이스(345)는 오디오 프리젠테이션이 가능하게 하는 스피커를 포함한다. 클라이언트(305)는 임의의 개수의 프리젠테이션 인터페이스(345)를 포함할 수 있다.The client agent 375, using an external or embedded codec, restores the compressed data set together with graphical display commands associated with non-media graphics information, any information to determine the image of the video stream on the display screen, and any timing information. And generate a media presentation in the presentation interface 345. In one embodiment, the presentation interface 345 has a display screen that renders a graphical display, such as a video presentation. In another embodiment, the presentation interface 345 includes a speaker that enables audio presentation. Client 305 may include any number of presentation interfaces 345.

클라이언트 에이전트(375)에 의해 지원되는 미디어 포맷내에서 제공되는 정보는 서버(310)에서 동작 모드를 결정할 수 있다. 압축된 데이터 세트가 클라이언트 에이전트(375)에 의해 지원되지 않는 포맷에 있는 경우, 제 2 출력 필터 모듈(355B)는 지원되는 포맷으로 압축 해제된 데이터 세트를 재압축할 수 있다. 또 다른 실시예에서, 클라이언트 에이전트(375) 스트림 포맷을 지원하지 않을때, 애플리케이션 프로그램(340)은 제 1 출력 필터 모듈(355A)을 로드하지 않고 서버(310)에서 스트림을 복원하고 렌더하는 Microsoft의 고유 또는 제 3 공용-지원 출력 필터 모듈을 로드한다.Information provided within the media format supported by the client agent 375 may determine the mode of operation at the server 310. If the compressed data set is in a format not supported by the client agent 375, the second output filter module 355B may recompress the decompressed data set in a supported format. In another embodiment, when the client agent 375 does not support the stream format, the application program 340 does not load the first output filter module 355A and does not load the stream from the server 310. Load a native or third common-supported output filter module.

도 4A, 4B, 4C를 참조하여, 도 3의 바람직한 실시예를 이용하는, 클라이언트(305)에서 미디어 프리젠테이션을 생성하는 방법(400)의 일실시예가 설명된다. 클라이언트(305) 및 서버(310) 모두 네트워크(315)에 연결되었을때, 클라이언트 에이전트(375)는 클라이언트 에이전트(375)에 의해 지원되는 모든 미디어 포맷을 서버 에이전트(350)에 알린다(단계 404). 일실시예에서, 지원되는 미디 포맷의 리스트는 클라이언트(305)상에 인스톨된 외장 코덱들을 열거하는(enumerating)것에 의해 형성될 수 있다. 예를 들면, 클라이언트(305)의 운영 체계내에 인스톨된 코덱은 네트워크를 통해 서버 에이전트(350)로 클라이언트 에이전트(375)에 의해 열거된다. 또 다른 실시예에서, 지원되는 미디어 포맷의 리스트는 클라이언트 에이전트(375)내에 내장된 코덱을 열거하는 것에 의해 형성될 수 있다. 예를 들면, 클라이언트 에이전트(375)가 소프트웨어 프로그램으로서 구현되는 경우, 소프트웨어 프로그램내에 내장된 코덱은 네트워크(315)를 통해 서버 에인전트(350)로 클라이언트 에이전트(375)에 의해 열거된다. 선택적으로, 클라이언트 에이전트(375)는 지원되는 미디어 포맷의 리스트를 형성하고, 클라이언트(305)상에 인스톨된 외장 코덱과 클라이언트 에이전트(375)내에 내장된 코덱을 열거하여 이러한 지원되는 미디어 포맷을 서버 에이전트(350)에 알린다. 또 다른 실시예에서, 클라이언트 에이전트(375)와 서버 에이전트(350)는 지원되는 포맷 및 능력을 교섭한다. 예를 들면, 클라이언트 에이전트(375)는 서버 에이전트(35)가 클라이언트 에이전트(375)에 의해 JPEG2000 디스플레이를 생성할 것을 명확하게 요청할때까지 JPEG2000 포맷 미디어의 지원을 서버 에이전트(350)에 알리는 것을 연기할 수 있다.4A, 4B, and 4C, one embodiment of a method 400 for generating a media presentation at a client 305 using the preferred embodiment of FIG. 3 is described. When both client 305 and server 310 are connected to network 315, client agent 375 informs server agent 350 of all media formats supported by client agent 375 (step 404). In one embodiment, the list of supported MIDI formats may be formed by enumerating external codecs installed on the client 305. For example, codecs installed within the operating system of client 305 are enumerated by client agent 375 to server agent 350 over a network. In yet another embodiment, the list of supported media formats may be formed by enumerating codecs embedded within the client agent 375. For example, if the client agent 375 is implemented as a software program, the codecs embedded within the software program are enumerated by the client agent 375 via the network 315 to the server agent 350. Optionally, the client agent 375 forms a list of supported media formats and lists the external codecs installed on the client 305 and the codecs embedded in the client agent 375 to list these supported media formats as server agents. Notify at 350. In another embodiment, client agent 375 and server agent 350 negotiate supported formats and capabilities. For example, client agent 375 may postpone notifying server agent 350 of support of JPEG2000 format media until server agent 35 explicitly requests that client agent 375 generate a JPEG2000 display. Can be.

또 다른 실시예에서, 스트림이 형성되는때 퍼-스트림 원칙(per-stream basis)상에서 교섭된다. 클라이언트 에이전트(375)는 미디어 프리젠테이션 형성에 대한 서버 에이전트(350)의 요청에 대해 요청의 성공 또는 실패를 지시하는 것으로 응답한다. 요청의 성공 또는 실패는 클라이언트(305)에서의 미디어 스트림 복원 능력, 충분한 메모리, 등등의 각각의 코덱 능력의 유효성에 의존한다. 성공했을 경우, 애플리케이션 프로그램(340)은 코텍을 로드하고, 이것에 의해 그래픽 데이터의 효율적인 디스플레이를 제공한다. 실패했을 경우, 애플리케이션 프로그램(340)은 서버(310)에서 데이터를 복원 및 렌더하는 Microsoft 내재 또는 제 3 공용-지원 코덱을 로드한다.In another embodiment, the stream is negotiated on a per-stream basis when it is formed. The client agent 375 responds to the server agent 350's request for media presentation formation by indicating the success or failure of the request. The success or failure of the request depends on the validity of each codec capability of the media stream reconstruction capability, sufficient memory, etc., at the client 305. If successful, the application program 340 loads the codec, thereby providing an efficient display of the graphic data. If unsuccessful, the application program 340 loads a Microsoft-embedded or third common-support codec that restores and renders data on the server 310.

일실시예에서, 클라이언트 에이전트(375)는 글로벌 단일 식별자(globally unique identifiers:"GUID")를 생성하고 각각의 GUID를 특정 코덱에 연관시킨다. 그 다음, 클라이언트 에이전트(375)는 클라이언트 에이전트(375)에 의해 지원되는 미디어 포맷을 서버 에이전트에 알리기 위하여 서버 에이전트(350)에 생성된 GUID의 리스트를 전송한다. 또 다른 실시예에서, 클라이언트 에이전트(375)는 클라이언트 에이전트(375)에 의해 지원되는 미디어 포맷을 서버 에이전트(350)에 알리기 위해 서버 에이전트(350)에 4개의 특성 코드의 리스트(4개의 특성 코드 각각은 특정 코덱과 연관됨)를 전송한다.In one embodiment, the client agent 375 generates globally unique identifiers ("GUID") and associates each GUID with a particular codec. The client agent 375 then sends a list of GUIDs generated to the server agent 350 to inform the server agent of the media format supported by the client agent 375. In another embodiment, the client agent 375 may list the four property codes (each of the four property codes) in the server agent 350 to inform the server agent 350 of the media format supported by the client agent 375. Is associated with a particular codec).

클라이언트 에이전트(375)로부터 지원되는 미디어 포맷의 리스트를 수신한후, 서버 에이전트(350)는 서버(310)상의 제 1 출력 필터 모듈(355A) 및/또는 제 2 출력 필터 모듈(355B)을 지원되는 미디어 포맷과 연관시켜 등록한다(단계 408). 그 다음, 서버 에이전트(350)는 서버(310)가 열거된 모든 미디어 포맷을 처리할 수 있음을 다시 클라이언트 에이전트(375)에 리포트한다(단계 412).After receiving the list of supported media formats from the client agent 375, the server agent 350 supports the first output filter module 355A and / or the second output filter module 355B on the server 310. Register in association with the media format (step 408). The server agent 350 then reports back to the client agent 375 that the server 310 can process all listed media formats (step 412).

단계 416에서, 애플리케이션 프로그램(340)은 서버(310)상에서 실행을 시작한다. 애플리케이션 프로그램(340)이 미디어 스트림과 같은 미디어 컨텐츠의 존재를 그 자신의 출력내에서 식별할때, 제 1 출력 필터 모듈(355A), 제 2 출력 필터 모듈(355B), 또는 둘다가 호출된다(단계 420). 단계 424에서, 애플리케이션 프로그램(340)이 외장 코덱을 이용한다면, 애플리케이션 프로그램(340)이 외장 코덱을 호출하는 시도를 함에따라, 제 1 출력 필터 모듈(355A) 및 제 2 출력 필터 모듈(355B)이 호출된다(단계 428). 단계 432에서, 제 1 출력 필터 모듈(355A)은 미디어 스트림의 적어도 일부를 표시하는 원본 압축 데이터 세트를 인터셉트하고, 단계 436에서, 상기 데이터 세트를 복원하지 않고 클라이언트 에이전트(375)에 원본 압축 데이터 세트를 전송한다. 단계 440에서, 클라이언트 에이전트(375)는 원본 압축 데이터 세트를 수신하고, 단계 444에서, 압축 해제된 데이터 세트를 생성하기 위해 원본 압축 데이터 세트를 복원한다. 클라이언트 에이전트(375)는 원본 압축 데이터 세트를 복원하기 위해 클라이언트(305)상에 인스톨된 외장 코덱 또는 클라이언트 에이전트(375) 자체에 내장된 코덱을 이용한다.In step 416, the application program 340 starts running on the server 310. When application program 340 identifies in its own output the presence of media content, such as a media stream, first output filter module 355A, second output filter module 355B, or both are invoked (step 420). In step 424, if the application program 340 uses an external codec, as the application program 340 attempts to call the external codec, the first output filter module 355A and the second output filter module 355B It is called (step 428). In step 432, the first output filter module 355A intercepts the original compressed data set that represents at least a portion of the media stream, and in step 436 the original compressed data set in the client agent 375 without restoring the data set. Send it. In step 440, the client agent 375 receives the original compressed data set, and in step 444, restores the original compressed data set to generate the decompressed data set. The client agent 375 uses an external codec installed on the client 305 or a codec embedded in the client agent 375 itself to restore the original compressed data set.

단계 424에서, 애플리케이션 프로그램(340)이 그 자체내에 내장된 코덱을 이용하는 경우에는, 단계 448에서, 압축 해제된 데이터 세트를 디스플레이하기 위해 OS-레벨 렌더러를 호출하는 시도를 함으로써 제 2 출력 필터 모듈(355B)이 호출된다. 그 다음, 단계 452에서, 제 2 출력 필터 모듈(355B)이 미디어 스트림의 적어도 일부를 표시하는 제 1 압축 해제된 데이터 세트를 애플리케이션 프로그램(340)의 출력으로부터 인터셉트하고, 단계 456에서, 인터셉트된 제 1 압축 해제된 데이터 세트를 압축한다. 다양한 압축 기술은 손실 압축 기술과 무손실 압축 기술 모두를 포함하며, 단계 456에서, 미디어 스트림을 압축하기 위해 제 2 출력 필터 모듈(355B)에 의해 이용될 수 있다.In step 424, if the application program 340 uses a codec embedded in itself, in step 448, an attempt is made to call the OS-level renderer to display the decompressed data set, thereby displaying the second output filter module ( 355B) is called. Next, in step 452, the second output filter module 355B intercepts the first decompressed data set representing at least a portion of the media stream from the output of the application program 340, and in step 456, the intercepted first 1 Compress the decompressed data set. Various compression techniques include both lossy and lossless compression techniques, and in step 456, may be used by the second output filter module 355B to compress the media stream.

미디어 스트림이 비디오 스트림인 경우, 단계 456에서, 인터셉트된 제 1 압축 해제된 데이터 세트가 MJPEG 압축과 같은 작은 손실 비디오 인코딩 알고리즘(lightweight lossy video encoding algorithm)을 이용하여 제 2 출력 필터 모듈(355B)에 의해 압축될 수 있다. 작은 손실 비디오 인코딩 알고리즘의 사용에서, 제 2 출력 필터 모듈(355B)은 원하는 압축 비율을 선택할 수도 있으며 소정의 압축 비율을 이용할 수도 있다. 제 2 출력 필터 모듈(355B)에 의해 선택된 품질 손실의 정도는 일반적으로 네트워크 연결의 가능 대역폭에 의존할 것이다. 예를 들면, 클라이언트(305)의 유저가 네트워크(315)에 연결하기 위해 느린 모뎀을 이용하는 경우, 제 2 출력 필터 모듈(355B)은 낮은 품질 비디오를 이용하는 것을 선택할 수 있다. 반면에, 클라이언트(305)의 유저가 네트워크(315)에 연결하기 위해 LAN 링크 또는 광대역을 이용하는 경우, 제 2 출력 필터 모듈(355B)는 높은 품질 비디오를 이용하는 것을 선택할 수 있다.If the media stream is a video stream, in step 456, the intercepted first decompressed data set is passed to the second output filter module 355B using a light weight lossy video encoding algorithm, such as MJPEG compression. Can be compressed. In the use of a small lossy video encoding algorithm, the second output filter module 355B may select the desired compression ratio and may use a predetermined compression ratio. The degree of quality loss selected by the second output filter module 355B will generally depend on the possible bandwidth of the network connection. For example, if the user of the client 305 uses a slow modem to connect to the network 315, the second output filter module 355B may choose to use low quality video. On the other hand, if the user of the client 305 uses a LAN link or broadband to connect to the network 315, the second output filter module 355B may choose to use high quality video.

단계 456에서 인터셉트된 제 1 압축 해제된 데이터 세트의 압축에 이어, 단계 460에서, 제 2 출력 필터 모듈(355B)은 제 1 압축 해제된 데이터 세트 대신에 압축된 데이터 세트를 클라이언트 에이전트(375)에 전송한다. 단계 464에서, 클라이언트 에이전트(375)는 압축된 데이터 세트를 수신하고, 단계 468에서, 제 2 압축 해제된 데이터 세트를 생성하기 위해 압축된 데이터 세트를 복원한다. 다시, 클라이언트 에이전트(375)는 압축된 데이터 세트를 복원하기 위해 클라이언트(305)상에 인스톨된 외장 코덱 또는 클라이언트 에이전트 자체에 내장된 코덱을 이용한다.Following compression of the first decompressed data set intercepted in step 456, in step 460, the second output filter module 355B sends the compressed data set to the client agent 375 instead of the first decompressed data set. send. In step 464, the client agent 375 receives the compressed data set, and in step 468 restores the compressed data set to generate a second decompressed data set. Again, the client agent 375 uses an external codec installed on the client 305 or a codec embedded in the client agent itself to recover the compressed data set.

애플리케이션 프로그램(340)이 외장 또는 내장 코덱을 이용하는지 여부에 관계없이, 단계 470에서, 미디어 스트림이 비디오 스트림을 포함하는 경우, 제 2 출력 필터 모듈(355B)은 단계 472에서 디스플레이 화면상의 비디오 스트림을 이미지를 정하기 위한 정보를 캡쳐하고 네트워크(315)를 통해 캡쳐된 정보를 클라이언트 에이전트(375)에 전송한다. 단계 474에서, 클라이언트 에이전트(375)는 디스플레이 화면상의 비디오 스트림의 이미지를 정하기 위한 정보를 수신한다.Regardless of whether the application program 340 uses an external or embedded codec, in step 470, if the media stream comprises a video stream, the second output filter module 355B may then, in step 472, view the video stream on the display screen. It captures information to determine the image and sends the captured information to the client agent 375 via the network 315. In step 474, the client agent 375 receives information for determining an image of the video stream on the display screen.

다시, 애플리케이션 프로그램(340)이 외장 또는 내장 코덱을 이용하는지 여부에 관계없이, 또한 단계 470에서 미디어 스트림이 비디오 스트림을 포함하는지 여부에 관계없이, 단계 476에세 서버 에이전트(350)는 애플리케이션 프로그램(340)에 의해 출력된 비-미디어 그래픽 정보와 연관된 그래픽 디스플레이 커맨드를 인터셉트하고 네트워크를 통해 클라이언트 에이전트(375)에 전송한다. 단계 480에서, 클라이언트 에이전트(375)는 비-미디어 그래픽 정보와 연관된 그래픽 디스플레이 커맨드를 수신한다.Again, regardless of whether the application program 340 uses an external or embedded codec, and whether or not the media stream includes the video stream in step 470, the server agent 350 in step 476 executes the application program 340. Intercepts graphic display commands associated with the non-media graphics information outputted by < RTI ID = 0.0 >) and sends < / RTI > At step 480, the client agent 375 receives a graphical display command associated with the non-media graphics information.

단계 484에서, 출력 필터 모듈(355A, 355B)이 미디어 스트림과 연관된 타이밍 정보를 캡쳐하는 경우, 단계 488에서 출력 필터 모듈(355A, 355B)은 클라이언트 에이전트(375)에 타이밍 정보를 전송한다. 단계 492에서, 클라이언트 에이전트(375)는 타이밍 정보를 수신하고, 단계 496에서 프리젠테이션 인터페이스(345)에서 미디어 프리젠테이션을 생성한다. 프리젠테이션 인터페이스(345)에서 미디어 프리젠테이션을 생성하기 위해, 클라이언트 에이전트(375)는 타이밍 정보, 비-미디어 그래픽 정보와 연관된 그래픽 디스플레이 커맨드를 이용하고, 미디어 스트림이 비디오 스트림을 포함하는 경우에는, 압축 해제된 데이터 세트(또는, 좀더 구체적으로는, 애플리케이션 프로그램(340)이 내장된 코덱을 이용하는 경우, 제 2 압축 해제된 데이터 세트)과 비-미디어 그래픽 정보를 일정하게 결합하기 위해 디스플레이 화면상의 비디오 스트림의 이미지를 정하기 위한 정보를 이용한다.In step 484, if the output filter module 355A, 355B captures timing information associated with the media stream, in step 488 the output filter module 355A, 355B sends the timing information to the client agent 375. In step 492, the client agent 375 receives the timing information and in step 496 generates a media presentation in the presentation interface 345. To generate a media presentation at the presentation interface 345, the client agent 375 uses graphics display commands associated with timing information, non-media graphics information, and if the media stream includes a video stream, Video stream on the display screen to consistently combine the decompressed data set (or, more specifically, the second decompressed data set when the application program 340 uses the embedded codec) with the non-media graphics information. Use the information to determine the image of.

출력 필터 모듈(355A, 355B)이 미디어 스트림과 연관된 타이밍 정보를 캡쳐하지 않는 경우, 단계 496에서 클라이언트 에이전트(375)는 오직 압축 해제된 데이터 세트(또는, 좀더 구체적으로는, 애플리케이션 프로그램(340)이 내장된 코덱을 이용하는 경우, 제 2 압축 해제된 데이터 세트), 비-미디어 그래픽 정보와 연관된 그래픽 디스플레이 커맨드과, 미디어 스트림이 비디오 스트림을 포함하는 경우에는 디스플레이 화면상의 비디오 스트림의 이미지를 정하기 위한 정보를 이용하여 프리젠테이션 인터페이스(345)에서 미디어 프리젠테이션을 생성한다.If the output filter modules 355A, 355B do not capture the timing information associated with the media stream, then in step 496 the client agent 375 may only extract the decompressed data set (or, more specifically, the application program 340). Second decompressed data set when using the embedded codec), graphical display commands associated with non-media graphics information, and information for determining an image of the video stream on the display screen if the media stream comprises a video stream. To generate a media presentation at the presentation interface 345.

도 5A-5C는 MICROSOFT WINDOWS 패밀리의 운영 체계로부터 선택된 운영 체계를 이용하는 서버상에 구현된 본 발명의 또 다른 실시예를 나타내고 있다. 클라이언트에서 운영 체계는 서버에서 채택된 운영 체계와 동일한 운영 체계일 필요는 없다.5A-5C illustrate yet another embodiment of the present invention implemented on a server using an operating system selected from the operating systems of the MICROSOFT WINDOWS family. The operating system on the client does not have to be the same operating system adopted on the server.

지원되는 주요 미디어 타입(예를 들면, 비디오, 오디오, MIDI, 텍스트)에 대해, 적절한 제 1 출력 필터 모듈(355A)과 제 2 출력 필터 모듈(355B)가 서버(310)에 등록된다(단계 504). 전술한 바와 같이, 식별되는 미디어 타입은 실례일뿐이며, 이러한 아키텍처를 사용하면, 미래의 미디어 타입이 본 발명에 일치하는 동작에 추가될수 있다.For the main media types supported (e.g., video, audio, MIDI, text), the appropriate first output filter module 355A and second output filter module 355B are registered with the server 310 (step 504). ). As noted above, the media types identified are illustrative only, and with this architecture, future media types can be added to operations consistent with the present invention.

애플리케이션 프로그램(340)은 서버에서 실행하며(단계 508) 애플리케이션 프로그램(340)의 출력내에서 미디어 스트림이 식별된다(단계 512). 일실시예에서 애플리케이션이 미디어 스트림을 처리하기 위해 적절한 코덱을 정하기 위해 WINDOWS 미디어 서브시스템에 시스템 콜을 할때 미디어 스트림이 식별된다. 애플리케이션 프로그램(340)은 애플리케이션 출력내에서 식별되는 미디어 스트림의 주요 미디어 타입에 대응하며, 주요 미디어 타입을 처리하는 능력이 있는 시스템에 등록된 높은 메리트의 임의의 필터를 갖는 제 1 출력 필터 모듈(355A)을 로드한다(단계 516). 제 1 출력 필터 모듈(355A)은 전송된 특성들(할당(버퍼) 특성, 미디어 타입(주요: 비디오, 오디오, 등등; 하위: MPEG-1, MPEG-2, 등등; 포맷, 등등), 온-디맨드 품질 컨트롤을 위한 미디어 스트림 우선순위 등등)에 의해 구체화되는 미디어 스트림을 클라이언트 에이전트(375)가 생성하라는 요청을 위해 서버 에이전트(350)와 통신한다.The application program 340 runs on the server (step 508) and the media stream is identified within the output of the application program 340 (step 512). In one embodiment, the media stream is identified when an application makes a system call to the WINDOWS Media Subsystem to determine the appropriate codec to process the media stream. The application program 340 corresponds to the primary media type of the media stream identified in the application output, and has a first output filter module 355A having any merit of high merit registered in the system capable of processing the primary media type. (Step 516). The first output filter module 355A is configured to transmit the transmitted characteristics (assignment (buffer) characteristics, media type (major: video, audio, etc .; sub: MPEG-1, MPEG-2, etc .; format, etc.), on- Communicate with server agent 350 to request that client agent 375 create a media stream specified by media stream priority for demand quality control, etc.).

각각의 터미널 서비스 세션에 대해, 서버 에이전트(350)는 다른 컨텍스트로 미디어 스트림을 구성한다. 애플리케이션 프로그램의 다른 인스턴스로부터 기원하는 미디어 스트림은 다른 주요 컨텍스트를 갖는다. 애플리케이션 프로그램의 동일한 인스턴스로부터 기원하는 미디어 스트림은 동일한 주요 컨텍스트내의 다른 하위 컨텍스트를 갖는다. 서버 에이전트(350)는 각각의 주요 컨텍스트에 대한 컨트롤 정보에 대한 커맨드 큐, 각각의 하위 컨텍스트에 대한 미디어 샘플 큐를 생성한다. 미디어 샘플 큐는 서버 에이전트(350)가 대역폭의 변경과 네트워크 레이턴시를 수용하는데 도움을 준다(예를 들면, 드롭하기 위한 다양한 스트림으로부터의 데이터를 선택하기 위해 그리고 플레이백 스피드를 유지하기 위해 드롭되는 비디오 데이터의 특정 프레임을 허용). 예를 들면, 비디오 데이터는 오디오 데이터가 제거되기 전에 제거될 수 있다. For each terminal service session, server agent 350 configures the media stream in a different context. Media streams originating from different instances of the application program have different main contexts. Media streams originating from the same instance of an application program have different subcontexts within the same main context. Server agent 350 creates a command queue for control information for each primary context and a media sample queue for each subcontext. The media sample queue helps the server agent 350 to accommodate changes in bandwidth and network latency (e.g., video that is dropped to select data from various streams to drop and to maintain playback speed). Allow certain frames of data). For example, video data may be removed before audio data is removed.

다른 주요 컨텍스트의 큐는 라운드-로빈 패션(round-robin fashion)내에 서비스된다. 주요 컨텍스트내에서, 컨트롤 큐는 일반적으로 가장 높은 우선순위를 갖는 반면, 다른 하위 컨텍스트에 대응하는 미디어 큐는 스트림의 특성에 근거하여 다른 우선순위를 가질 수 있다. 일반적으로, 오디오 스트림이 비디오 스트림보다 높은 우선순위를 가질 것이다.Queues in other major contexts are serviced in a round-robin fashion. Within the main context, control queues generally have the highest priority, while media queues corresponding to different subcontexts may have different priorities based on the characteristics of the stream. In general, the audio stream will have a higher priority than the video stream.

클라이언트 에이전트(375)는 전송된 요청내에 구체화된 미디어 특성들에 합치하는 미디어 스트림을 생성하는 시도를 한다(단계 520). 클라이언트 에이전트(374)의 운영 체계가 MICROSOFT WINDOWS 패밀리의 운영체계일때, 클라이언트 에이전트(375)는 일반적 소스 필터 모듈을 로드하기 위해 시도하고 그것을 미디어 스트림을 복원하고 렌더링하는 능력이 있는 고유 또는 제 3 공용 제공 출력 필터 모듈에 연결시킨다. 다른 운영 체계를 사용하는 클라이언트 에이전트(375)는 동일한 결과를 이루기 위해 다른 동작들을 행할 수 있다. 예를 들면, 클라이언트는 MPEG-1 비디오 스트림과 같은 미디어 스트림을 복원하고 렌더링하는 능력이 있는 멀티미디어 애플리케이션 서비스를 로드하고 이용할 수도 있다.The client agent 375 attempts to create a media stream that matches the media characteristics specified in the transmitted request (step 520). When the operating system of the client agent 374 is an operating system of the MICROSOFT WINDOWS family, the client agent 375 provides a unique or third public offering that has the ability to attempt to load a generic source filter module and to restore and render the media stream. Connect to the output filter module. Client agents 375 using different operating systems may perform different operations to achieve the same result. For example, a client may load and utilize a multimedia application service that has the ability to reconstruct and render a media stream, such as an MPEG-1 video stream.

클라이언트 에이전트(375)는 특정 미디어 스트림을 생성하라는 요청이 성공적인지 여부를 지시하는 응답을 서버 에이전트(350)에 송신한다(단계 524). 서버 에이전트(350)은 이러한 정보를 애플리케이션 프로그램(340)에 제공한다. 클라이언트가 스트림 생성에 성공한 경우, DIRECTSHOW 지능 연결 로직(intelligent connect logic)을 이용하여, 애플리케이션 프로그램(340)은 제 2 출력 필터 모듈(355B)을 로드하고 그것을 제 1 출력 필터 모듈(355A)에 연결시키며(단계 528), 이것에 의해 클라이언트 에이전트(375)에 전송된 컨트롤 정보와 압축된 미디어의 프로세싱이 가능하다.The client agent 375 sends a response to the server agent 350 indicating whether the request to create a particular media stream is successful (step 524). The server agent 350 provides this information to the application program 340. If the client succeeds in creating the stream, using DIRECTSHOW intelligent connect logic, the application program 340 loads the second output filter module 355B and connects it to the first output filter module 355A. (Step 528) This enables processing of the compressed information and control information sent to the client agent 375.

제 1 출력 필터 모듈(355A)은 미디어 스트림의 적어도 일부를 표시하는 원본 압축 데이터 세트와 타이밍 정보를 인터셉트하고, 또한 포맷 변경과 같은 미디어 타입내의 다이내믹 변경을 검출한다(단계 532). 제 2 출력 필터 모듈(355B)은 미디어 스트림-일반적 커맨드(예를 들면, 재생, 일시정지, 정지, 플러쉬, 엔드오브스트림)과 스트림-특정 커맨드(예를 들면, 비디오 원래 윈도우 할당, 배치 및 클리핑, 오디오 볼륨 및 밸런스 조정 커맨드)을 인터셉트한다(단계 536).The first output filter module 355A intercepts timing information and original compressed data sets that represent at least a portion of the media stream, and also detects dynamic changes in the media type, such as format changes (step 532). The second output filter module 355B provides media stream-general commands (eg, play, pause, stop, flush, end-of-stream) and stream-specific commands (eg, video original window assignment, placement and clipping). Audio volume and balance adjustment command) (step 536).

서버 에이전트(350)는 원본 압축 데이터 세트(선택적으로, 타이밍 정보를 포함)을 클라이언트 에이전트(375)에 전송한다(단계 540). 대역폭이 제한된 경우 서버 에이전트(350)는 높은 우선순위의 미디어 큐가 가능한 대역폭을 만들기 위해 낮은 우선순위의 미디어 큐로부터 샘플들을 드롭할 수 있다. 같은 우선순위를 갖는 미디어 큐는 라운드 로빈 패션에 서비스된다. 또한, 서버 에이전트(350)으로의, 따라서 클라이언트 에이전트로의 제 2 출력 필터 모듈(355B)의 전송 비율은 초기 플레이백내의 레이턴시를 줄이기위해, 플레이백 시작전에 네트워크 처리량에 의해 허용되는 것에 최대한 빨리 클라이언트의 미디어 큐가 미리 채워지도록 컨트롤된다. 그 후, 클라이언트 에이전트(375)의 미디어 큐는, 이하에서 설명되는 바와 같이, 네트워크 레이턴시내의 변경들을 수용하기 위해 이용된다. 서버 에이전트(350)는 또한 컨트롤 정보를 클라이언트 에이전트(375)에 전송한다(단계 544). 일반적으로, 컨트롤 정보는 네트워크 대역폭의 가능성에 대한 제약에도 불구하고 절대로 제거되지 않는다.Server agent 350 transmits the original compressed data set (optionally including timing information) to client agent 375 (step 540). If bandwidth is limited, server agent 350 may drop samples from the low priority media queue to make the high priority media queue available bandwidth. Media cues with the same priority are served in round robin fashion. In addition, the rate of transmission of the second output filter module 355B to the server agent 350 and thus to the client agent is as fast as the client is allowed by the network throughput prior to the start of playback to reduce latency in the initial playback. The media cue of the control is prefilled. The media queue of the client agent 375 is then used to accommodate changes in network latency, as described below. Server agent 350 also sends control information to client agent 375 (step 544). In general, control information is never removed despite limitations on the possibility of network bandwidth.

클라이언트 에이전트(375)는 원본 압축 데이터 세트와 선택적 타이밍 정보를 수신한다(단계 548). 클라이언트 에이전트(375)는 또한 컨트롤 정보와 미디어 타입내의 다이내믹 변경(예를 들면, 포맷 변경)에 대한 임의의 통지(notification)를 수신한다(단계 552). 서버 에이전트(350)와 같이, 클라이언트 에이전트(375)는 각각의 주요 컨텍스트에 대한 컨트롤 정보에 대한 단일 커맨드 큐와 각각의 하위 컨텍스트에 대한 미디어 샘플 큐를 생성한다. 미디어 샘플 큐는 클라이언트 에이전트(375)가 대역폭내의 변경과 네트워크 레이턴시를 수용하도록 한다. 다른 주요 컨텍스트의 컨트롤 큐는 라운드-로빈 패션에 제공된다. 이 실시예에 있어서, DIRECTSHOW 기술을 이용하여, 큐내의 미디어 샘플은 타이밍 정보에 근거하는 연관된 소스 필터 모듈(들)에 의해 사용된다.The client agent 375 receives the original compressed data set and optional timing information (step 548). The client agent 375 also receives any notification of dynamic information (eg, format change) in the control information and media type (step 552). Like server agent 350, client agent 375 creates a single command queue for control information for each primary context and a media sample queue for each subcontext. The media sample queue allows the client agent 375 to accept changes in bandwidth and network latency. Control cues in other major contexts are provided for round-robin fashion. In this embodiment, using the DIRECTSHOW technique, media samples in the queue are used by the associated source filter module (s) based on the timing information.

클라이언트 에이전트는 서버 에이전트에 상태(status) 통지를 전송한다(단계 556). 이러한 통지는 요청된 미디어 스트림의 생성에 대한 클라이언트의 성공 또는 실패에 대한 지시를 포함한다. 대역폭의 변경 또는 네트워크 레이턴시는 클라이언트 에이전트(375)의 미디어 큐를 필요한 만큼 조정하는 것에 의해 처리될 수 있다. 클라이언트 에이전트(375)은 하나 이상의 미디어 큐가 아래로 떨어지거나 특정 리소스 임계치를 초과하는지를 검출하고, 클라이언트 에이전트(375)는 미디어 큐 조정의 원하는 양을 위해 서버 에이전트(350)에 각각 대응하는 버스트(burst) 또는 정지 요청을 보낼 수 있다. 클라이언트 에이전트(375)은 또한 미디어 프리젠테이션의 생성내에서 만나는 기대하지 않은 에러들을 고려하는 상태 정보를 송신할 수 있다. 클라이언트의 흐름-조정(flow-adjustment) 통지가 타이밍적으로 효과가 없고, 그에따라, 미디어 큐가 고갈되거나(depleted) 넘치는(overflow) 경우, 클라이언트 에이전트(375)는 큐를 재버퍼(re-buffer)하는 것을 일시정지하거나 미디어 샘플들을 드롭할 수 있다(단계 560).The client agent sends a status notification to the server agent (step 556). This notification includes an indication of the success or failure of the client for the creation of the requested media stream. Changing the bandwidth or network latency can be handled by adjusting the media queue of the client agent 375 as needed. The client agent 375 detects whether one or more media queues fall down or exceed a certain resource threshold, and the client agent 375 bursts corresponding to the server agent 350 respectively for the desired amount of media queue negotiation. Or send a stop request. The client agent 375 may also send status information to account for unexpected errors encountered within the creation of the media presentation. If the flow-adjustment notification of the client is not timely effective, and therefore the media queue is depleted or overflows, the client agent 375 re-buffers the queue. Pause) or drop media samples (step 560).

고유 또는 제 3 공용 지원 출력 필터 모듈(변환 필터)는 압축 해제된 데이터 세트를 생성하기위해 수신된 압축 데이터 세트를 복원한다(단계 564). 클라이언트 에이전트(375)는 컨트롤 정보, 타이밍 정보, 미디어 타입내의 다이내믹 변경을 필터 모듈의 컬렉션(예를 들면, 일반적 소스 필터 모듈의 인스턴스, 고유 또는 제 3 공용 출력 필터 모듈의 연결된 인스턴스, 등등)에 적용한다(단계 568).The native or third common support output filter module (transform filter) restores the received compressed data set to generate an uncompressed data set (step 564). The client agent 375 applies control information, timing information, and dynamic changes in the media type to a collection of filter modules (eg, an instance of a generic source filter module, a linked instance of a unique or third common output filter module, etc.). (Step 568).

적절한 필터 모듈, 프로세싱 리소스, 또는 메모리의 부족으로 인해, 또는 또다른 이유로 인해 클라이언트가 요청된 미디어 스트림을 생성하는데 실패했다면, DIRECTSHOW 지능 연결 로직을 이용하여, 서버(310)상에서 실행하는 애플리케이션 프로그램(340)은 제 1 출력 필터 모듈(355A)를 로드하지 않고 서버(310)에서 데이터 스트림을 복원하고 렌더하는 고유 또는 제 3 공용-지원 출력 필터 모듈을 로드한다(단계 570).If the client failed to create the requested media stream due to lack of appropriate filter module, processing resources, or memory, or for some other reason, then using the DIRECTSHOW intelligent connection logic, the application program running on server 310 340 ) Loads a native or third public-assisted output filter module that restores and renders the data stream at server 310 without loading first output filter module 355A (step 570).

고유 또는 제 3 공용 지원 출력 필터 모듈이 로드되고 동작하는 것과 같이, 미디어 스트림의 적어도 일부를 표시하는 압축 해제된 데이터 세트가 인터셉트되고(단계 574), 압축되고(단계 578), 클라이언트(375)에 전송되고(단계 582), 클라이언트 에이전트(375)에 의해 수신된다(단계 586).As the native or third common support output filter module is loaded and operated on, an uncompressed data set that represents at least a portion of the media stream is intercepted (step 574), compressed (step 578), and sent to client 375 Is sent (step 582) and received by the client agent 375 (step 586).

클라이언트가 미디어 스트림의 생성에 성공했는지 실패했는지 여부에 관계없이, 서버 에이전트(350)는 비-미디어 그래픽 정보와 연관된 그래픽 디스플레이 커맨드를 인터셉트하고 클라이언트 에이전트(375)에 전송한다(단계 590). 클라이언트 에이전트(375)는 그래픽 디스플레이 커맨드를 수신한다(단계 594). 클라이언트 에이전트(375)는 프리젠테이션 인터페이스(245)상에 압축 해제된 데이터 세트를 렌더하기 위해 고유 또는 제 3 공용 제공된 출력 필터 모듈(렌더러 필터)을 이용하여 미디어 프리젠테이션을 생성한다(단계 598).Regardless of whether the client succeeded or failed the creation of the media stream, server agent 350 intercepts and sends a graphical display command associated with the non-media graphics information to client agent 375 (step 590). The client agent 375 receives a graphical display command (step 594). The client agent 375 generates a media presentation using a native or third publicly provided output filter module (renderer filter) to render the decompressed data set on the presentation interface 245 (step 598).

본 발명은 하나 이상의 제조품상에 내장된 컴퓨터-판독가능 프로그램에 의해 제공될 수 있다. 제조품은 플로피 디스크, 하드 디스크, CD ROM, 플래쉬 메모리 카드, PROM, RAM, ROM, 또는 마그네틱 데이프일 수 있다. 일반적으로, 컴퓨터 판독가능 프로그램은 임의의 프로그래밍 언어에서 구현될 수 있다. 이러한 언어들은 C, C++, JAVA를 포함하는 언어들일 수 있다. 소프트웨어 프로그램은 오브젝트 코드로서 하나 이상의 제조품내에 저장될 수 있다.The invention may be provided by a computer-readable program embedded on one or more articles of manufacture. The article of manufacture may be a floppy disk, hard disk, CD ROM, flash memory card, PROM, RAM, ROM, or magnetic tape. In general, computer readable programs may be implemented in any programming language. These languages may be languages including C, C ++, JAVA. The software program may be stored in one or more articles of manufacture as object code.

본 발명은 본 발명의 필수적 특징 또는 의도를 벗어남이 없이 다른 특정 형태내에서 구체화될 수 있다. 예를 들면, 도 1및 2의 발명과 도 3, 4A-4C와 5A-5C의 발명 둘다 모두 단일 서버가 구현할 수 있다는 것을 이해하여야 한다. 본 명세서에서 상기의 실시예들은 본 발명을 제한하려는 것이 아니며 모든 측면들을 설명하는 것으로 고려되어야 할것이다. 본 발명의 범위는 상기의 설명보다는 첨부되는 청구항들에 의해 지시되며, 청구항들과 동일한 의미와 범위내에 포함되는 모든 변경들은 본 발명에 포함된다. The invention may be embodied in other specific forms without departing from the essential features or intentions of the invention. For example, it should be understood that both the invention of FIGS. 1 and 2 and the invention of FIGS. 3, 4A-4C and 5A-5C can be implemented by a single server. The above embodiments herein are not intended to limit the present invention and should be considered to explain all aspects. The scope of the invention is indicated by the appended claims rather than the foregoing description, and all changes that come within the meaning and scope of the claims are to be embraced therein.

Claims (78)

클라이언트에서 미디어 프레젠테이션을 생성하는 방법에 있어서, 상기 방법은A method of creating a media presentation on a client, the method comprising (a) 서버에서 실행하는 애플리케이션 프로그램으로부터의 출력을 클라이언트로 전송하는 단계와,(a) sending the output from the application program running on the server to the client, (b) 상기 애플리케이션 출력 내에서 미디어 스트림을 식별하는 단계와,(b) identifying a media stream within the application output; (c) 상기 애플리케이션 프로그램에 의한 프로세싱 전에 미디어 스트림의 적어도 일부를 표시하는 원본(origianl) 압축 데이터 세트를 인터셉트하는 단계와,(c) intercepting an original compressed data set that represents at least a portion of a media stream prior to processing by the application program; (d) 상기 원본 압축 데이터 세트를 클라이언트로 전송하는 단계와,(d) sending the original compressed data set to a client; (e) 상기 미디어 스트림과 연관된 적어도 하나의 타이밍 정보와 콘트롤 정보를 캡쳐하는 단계와,(e) capturing at least one timing information and control information associated with the media stream; (f) 상기 캡쳐된 정보를 클라이언트로 전송하는 단계(f) transmitting the captured information to a client 를 포함하는 방법.How to include. 제 1 항에 있어서, The method of claim 1, 상기 클라이언트에서 상기 원본 압축 데이터 세트와 상기 캡쳐된 정보를 수신하는 단계와,Receiving the original compressed data set and the captured information at the client; 상기 클라이언트에서 상기 원본 압축 데이터 세트를 압축해제하여 압축해제된 데이터 세트를 생성하는 단계와,Decompressing the original compressed data set at the client to generate a decompressed data set; 상기 압축해제된 데이터 세트와 상기 캡쳐된 정보를 이용하여 상기 클라이언트에서 상기 미디어 프레젠테이션을 생성하는 단계Generating the media presentation at the client using the decompressed data set and the captured information. 를 더 포함하는, 클라이언트에서 미디어 프레젠테이션을 생성하는 방법. Further comprising a method of generating a media presentation on the client. 제 1 항에 있어서, 상기 (d)단계에서의 전송과 사실상 거의 동시에, 상기 원본 압축 데이터 세트를 제 2 클라이언트로 전송하는 단계를 더 포함하는, 클라이언트에서 미디어 프레젠테이션을 생성하는 방법.4. The method of claim 1, further comprising transmitting the original compressed data set to a second client substantially at substantially the same time as the transmission in step (d). 제 1 항에 있어서, 상기 클라이언트로의 전송은 적어도 하나의 중개 노드를 통해 일어나는, 클라이언트에서 미디어 프레젠테이션을 생성하는 방법.The method of claim 1, wherein the transmission to the client occurs through at least one intermediary node. 클라이언트에서 미디어 프레젠테이션을 생성하는 방법에 있어서, 상기 방법은A method of creating a media presentation on a client, the method comprising (a) 서버에서 실행하는 애플리케이션 프로그램으로부터의 출력을 클라이언트로 전송하는 단계와,(a) sending the output from the application program running on the server to the client, (b) 상기 애플리케이션 출력 내에서 미디어 스트림을 식별하는 단계와,(b) identifying a media stream within the application output; (c) 미디어 스트림의 적어도 일부를 표시하는 제 1 압축 데이터 세트를 인터셉트하는 단계와,(c) intercepting a first set of compressed data representing at least a portion of the media stream; (d) 상기 인터셉트된 제 1 압축 데이터 세트를 압축하는 단계와, (d) compressing the intercepted first compressed data set; (e) 상기 제 1 압축해제된 데이터 세트 대신에 상기 제 1 압축 데이터 세트를 클라이언트로 전송하는 단계와,(e) sending the first set of compressed data to the client in place of the first decompressed data set; (f) 상기 미디어 스트림과 연관된 적어도 하나의 타이밍 전보와 콘트롤 정보를 캡쳐하는 단계와,(f) capturing at least one timing telegram and control information associated with the media stream; (f) 상기 캡쳐된 정보를 클라이언트로 전송하는 단계(f) transmitting the captured information to a client 를 포함하는 방법.How to include. 제 5항에 있어서The method of claim 5 상기 클라이언트에서 상기 압축 데이터 세트와 상기 캡쳐된 정보를 수신하는 단계와,Receiving the compressed data set and the captured information at the client; 상기 클라이언트에서 상기 압축 데이터 세트를 압축해제하여 제 2 압축해제된 데이터 세트를 생성하는 단계와,Decompressing the compressed data set at the client to generate a second decompressed data set; 상기 제 2 압축해제된 데이터 세트와 상기 캡쳐된 정보를 이용하여 상기 클라이언트에서 상기 미디어 프레젠테이션을 생성하는 단계Generating the media presentation at the client using the second decompressed data set and the captured information. 를 더 포함하는, 클라이언트에서 미디어 프레젠테이션을 생성하는 방법. Further comprising a method of generating a media presentation on the client. 제 5 항에 있어서, 상기 (e)단계에서의 전송과 사실상 거의 동시에, 상기 제 1 압축해제된 데이터 세트 대신에 상기 압축 데이터 세트를 제 2 클라이언트로 전송하는 단계를 더 포함하는, 클라이언트에서 미디어 프레젠테이션을 생성하는 방법.6. The media presentation of claim 5 further comprising transmitting the compressed data set to a second client instead of the first decompressed data set substantially simultaneously with the transmission in step (e). How to generate. 제 5 항에 있어서, 상기 클라이언트로의 전송은 적어도 하나의 중개 노드를 통해 일어나는, 클라이언트에서 미디어 프레젠테이션을 생성하는 방법.6. The method of claim 5, wherein the transmission to the client occurs through at least one intermediate node. 클라이언트에서 미디어 프레젠테이션을 생성하는 방법에 있어서, 상기 방법은A method of creating a media presentation on a client, the method comprising (a) 클라이언트 상에 설치된 클라이언트 에이전트에 의해 지원되는 적어도 하나의 미디어 포맷을 서버에 알리는(informing) 단계와,(a) informing the server of at least one media format supported by a client agent installed on the client, (b) 상기 클라이언트에서 미디어 스트림의 적어도 일부를 표시하는 압축 데이터 세트를 수신하는 단계와,(b) receiving a compressed data set in the client indicating at least a portion of a media stream; (c) 상기 클라이언트에서 상기 압축 데이터 세트를 압축해제하여 압축해제된 데이터 세트를 생성하는 단계와,(c) decompressing the compressed data set at the client to generate a decompressed data set; (d) 상기 압축해제된 데이터 세트를 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하는 단계와, (d) creating a media presentation at the client using the decompressed data set; (e) 상기 미디어 스트림과 연관된 적어도 하나의 타이밍 전보와 콘트롤 정보를 수신하는 단계와,(e) receiving at least one timing telegram and control information associated with the media stream; (f) 상기 수신된 정보를 이용하여 상기 미디어 프레젠테이션을 생성하는 단계(f) generating the media presentation using the received information 를 포함하는 방법.How to include. 클라이언트에서 미디어 프레젠테이션을 생성하는 시스템에 있어서, 상기 시스템은A system for generating a media presentation at a client, the system comprising (a) 애플리케이션 프로그램에 의해 생성된 출력 내에서 미디어 스트림을 식별하도록 구성된 애플리케이션 프로그램과,(a) an application program configured to identify a media stream within the output generated by the application program, (b) 상기 애플리케이션 프로그램에 의한 프로세싱 전에 미디어 스트림의 적어도 일부를 표시하는 원본 압축 데이터 세트를 인터셉트하고 상기 원본 압축 데이터 세트를 클라이언트로 전송하도록 구성된 출력 필터 모듈 -상기 출력 필터 모듈은 상기 미디어 스트림과 연관된 적어도 하나의 타이밍 정보와 콘트롤 정보를 캡쳐하고 상기 캡쳐된 정보를 클라이언트로 전송하도록 더 구성됨- (b) an output filter module configured to intercept an original compressed data set representing at least a portion of a media stream and send the original compressed data set to a client prior to processing by the application program, wherein the output filter module is associated with the media stream. Further configured to capture at least one timing information and control information and to transmit the captured information to a client- 을 포함하는 시스템.System comprising. 제 10항에 있어서, 상기 원본 압축 데이터 세트와 상기 캡쳐된 정보를 수신하고, 상기 원본 압축 데이터 세트를 압축해제하여 압축해제된 데이터 세트를 생성하고, 상기 압축해제된 데이터 세트와 상기 캡쳐된 정보를 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하도록 구성된 클라이언트 에이전트를 더 포함하는, 클라이언트에서 미디어 프레젠테이션을 생성하는 시스템.11. The method of claim 10, wherein the original compressed data set and the captured information are received, the original compressed data set is decompressed to generate a decompressed data set, and the decompressed data set and the captured information are stored. And a client agent configured to generate a media presentation at the client using the client agent. 제 10 항에 있어서, 상기 출력 필터 모듈은 사실상 거의 동시에 상기 원본 압축 데이터 세트를 다수의 클라이언트로 전송하는 단계를 더 포함하는, 클라이언트에서 미디어 프레젠테이션을 생성하는 시스템.11. The system of claim 10, wherein the output filter module further comprises transmitting the original compressed data set to a plurality of clients at substantially the same time. 제 10 항에 있어서, 상기 출력 필터 모듈은 적어도 하나의 중개 노드를 통해 원본 압축 데이터를 클라이언트로 전송하는, 클라이언트에서 미디어 프레젠테이션을 생성하는 시스템.11. The system of claim 10, wherein the output filter module sends original compressed data to the client via at least one intermediate node. 제 10항에 있어서, 상기 출력 필터 모듈의 필터 메리트(merit)는 상기 시스템상의 다른 필터 모듈의 메리트보다 뛰어난, 클라이언트에서 미디어 프레젠테이션을 생성하는 시스템.11. The system of claim 10, wherein the filter merit of the output filter module is superior to the merit of other filter modules on the system. 클라이언트에서 미디어 프레젠테이션을 생성하는 시스템에 있어서, 상기 시스템은A system for generating a media presentation at a client, the system comprising (a) 애플리케이션 프로그램에 의해 생성된 출력 내에서 미디어 스트림을 식별하도록 구성된 애플리케이션 프로그램과,(a) an application program configured to identify a media stream within the output generated by the application program, (b) 상기 미디어 스트림의 적어도 일부를 표시하는 제 1 압축 데이터 세트를 인터셉트하고, 상기 인터셉트된 제 1 압축 데이터 세트를 압축하는 단계와, 상기 제 1 압축해제된 데이터 세트 대신에 상기 제 1 압축 데이터 세트를 클라이언트로 전송하도록 구성된 출력 필터 모듈-상기 출력 필터 모듈은 상기 미디어 스트림과 연관된 적어도 하나의 타이밍 정보와 콘트롤 정보를 캡쳐하고 상기 캡쳐된 정보를 클라이언트로 전송하도록 더 구성됨-(b) intercepting a first set of compressed data representing at least a portion of the media stream, compressing the intercepted first set of compressed data, and replacing the first decompressed data set with the first set of compressed data An output filter module configured to send a set to a client, wherein the output filter module is further configured to capture at least one timing information and control information associated with the media stream and to transmit the captured information to a client 를 포함하는, 클라이언트에서 미디어 프레젠테이션을 생성하는 시스템.And a system for generating a media presentation at the client. 제 15항에 있어서, 상기 압축 데이터 세트와 상기 캡쳐된 정보를 수신하고, 상기 압축 데이터 세트를 압축해제하여 제 2 압축해제된 데이터 세트를 생성하고, 상기 제 2 압축해제된 데이터 세트와 상기 캡쳐된 정보를 이용하여 상기 클라이언트에서 미디어 프레젠테이션을 생성하도록 구성된 클라이언트 에이전트를 더 포함하는, 클라이언트에서 미디어 프레젠테이션을 생성하는 시스템.16. The method of claim 15, wherein the compressed data set and the captured information are received, the compressed data set is decompressed to generate a second decompressed data set, and the second decompressed data set and the captured information. And a client agent configured to generate a media presentation at the client using information. 제 15 항에 있어서, 상기 출력 필터 모듈은 사실상 거의 동시에 상기 제 1 압축해제된 데이터 세트 대신에 상기 압축 데이터 세트를 다수의 클라이언트로 전송하는 단계를 더 포함하는, 클라이언트에서 미디어 프레젠테이션을 생성하는 시스템.16. The system of claim 15, wherein the output filter module further comprises transmitting the compressed data set to a plurality of clients instead of the first decompressed data set at substantially the same time. 제 15 항에 있어서, 상기 출력 필터 모듈은 적어도 하나의 중개 노드를 통해 상기 제 1 압축해제된 데이터 세트 대신에 상기 압축 데이터 세트를 클라이언트로 전송하는, 클라이언트에서 미디어 프레젠테이션을 생성하는 시스템.16. The system of claim 15, wherein the output filter module sends the compressed data set to a client instead of the first decompressed data set via at least one intermediate node. 제 15항에 있어서, 상기 출력 필터 모듈의 필터 메리트(merit)는 상기 시스템상의 다른 필터 모듈의 메리트보다 뛰어난, 클라이언트에서 미디어 프레젠테이션을 생성하는 시스템.16. The system of claim 15, wherein the filter merit of the output filter module is superior to the merit of other filter modules on the system. 클라이언트에서, 미디어 프레젠테이션을 생성하는 방법에 있어서, 상기 방법은In a client, a method of generating a media presentation, the method comprising 서버와,Server, 상기 서버와 커뮤니케이션하는 클라이언트를 포함하며, A client in communication with the server, 상기 클라이언트는,The client, 클라이언트 에이전트에 의해 지원되는 적어도 하나의 미디어 포맷을 서버에 알리고(inform), 미디어 스트림의 적어도 일부를 표시하는 압축 데이터 세트를 수신하고, 상기 클라이언트에서 상기 압축 데이터 세트를 압축해제하여 압축해제된 데이터 세트를 생성하고, 상기 압축해제된 데이터 세트를 이용하여 상기 미디어 프레젠테이션을 생성하도록 구성된 클라이언트 에이전트를 포함하고,Inform the server of at least one media format supported by the client agent, receive a compressed data set indicative of at least a portion of the media stream, and decompress the compressed data set at the client to decompress the data set And a client agent configured to generate the media presentation using the decompressed data set, 상기 클라이언트 에이전트는 The client agent 상기 미디어 스트림과 연관된 적어도 하나의 타이밍 전보와 콘트롤 정보를 수신하고, 상기 수신된 정보를 이용하여 상기 미디어 프레젠테이션을 생성하도록 더 구성된, 클라이언트에서 미디어 프레젠테이션을 생성하는 방법.Receive at least one timing telegram and control information associated with the media stream, and further generate the media presentation using the received information. 클라이언트에서, 서버상에서 실행하는 애플리케이션 프로그램으로부터의 그래픽 출력을 디스플레이하는 방법에 있어서, In a method of displaying, on a client, graphical output from an application program running on a server, 상기 애플리케이션 출력내에서 비문자 요소(non-textual element)를 식별하는 단계와,Identifying a non-textual element in the application output; 상기 비문자 요소와 연관된 압축해제된 데이터 세트를 복구하는 단계와,Recovering the decompressed data set associated with the non-literal element; 상기 압축해제된 데이터 세트의 컨텐츠에 응답하여 상기 압축해제된 데이터에 사용하기 위한 압축 기술을 식별하는 단계와, Identifying a compression technique for use with the decompressed data in response to the contents of the decompressed data set; 상기 압축해제된 데이터 세트를 상기 식별된 압축 기술로 압축하여 재압축 데이터 세트를 생성하는 단계와,Compressing the decompressed data set with the identified compression technique to produce a recompressed data set; 상기 압축해제된 데이터 세트 대신에 상기 재압축 데이터 세트를 전송하는 단계Transmitting the recompressed data set in place of the decompressed data set. 를 포함하는 방법.How to include. 제 21항에 있어서, 상기 식별된 압축 기술은 무손실 압축 기술인, 디스플레이 방법.The method of claim 21, wherein the identified compression technique is a lossless compression technique. 제 22항에 있어서, 상기 비문자 요소는 동일 컬러의 큰 영역(large area)을 갖는 이미지인, 디스플레이 방법.23. The method of claim 22, wherein the non-literal element is an image having a large area of the same color. 제 22항에 있어서, 상기 비문자 요소는 컴퓨터-생성된 이미지인, 디스플레이 방법.The method of claim 22, wherein the non-literal element is a computer-generated image. 제 22항에 있어서, 상기 무손실 압축 기술은 2DRLE 압축인, 디스플레이 방법.23. The method of claim 22, wherein the lossless compression technique is 2DRLE compression. 제 21항에 있어서, 상기 식별된 압축 기술은 손실 압축 기술인, 디스플레이 방법.22. The method of claim 21, wherein the identified compression technique is a lossy compression technique. 제 26항에 있어서, 상기 비문자 요소는 연속 톤(continuous tone) 이미지인, 디스플레이 방법.27. The method of claim 26, wherein the non-literal element is a continuous tone image. 제 26항에 있어서, 상기 비문자 요소는 사진 이미지인, 디스플레이 방법.27. The method of claim 26, wherein the non-literal element is a photographic image. 제 26항에 있어서, 상기 손실 압축 기술은 JPEG 압축인, 디스플레이 방법.27. The method of claim 26, wherein the lossy compression technique is JPEG compression. 제 21항에 있어서, 상기 압축 기술을 식별하는 단계는22. The method of claim 21, wherein identifying the compression technique is 무손실 압축해제된 기술을 이용하여 상기 압축해제 데이터 세트를 압축하여 제 1 테스트 데이터 세트를 형성하는 단계와,Compressing the decompressed data set using a lossless decompressed technique to form a first test data set; 상기 제 1 테스트 데이터 세트를 소정값과 비교하는 단계와,Comparing the first test data set with a predetermined value; 상기 제 1 테스트 데이터 세트의 사이즈가 소정값을 초과하는 경우에, 손실 압축해제 기술을 이용하여 상기 압축해제된 데이터 세트를 압축하여 제 2 테스트 데이터 세트를 형성하는 단계와,If the size of the first test data set exceeds a predetermined value, compressing the decompressed data set using a lossy decompression technique to form a second test data set; 상기 제 2 테스트 데이터 세트의 사이즈가 상기 제 1 테스트 데이터 세트 사이즈의 소정 백분율 미만인 경우에, 손실 압축 기술을 선택하는 단계Selecting a lossy compression technique when the size of the second test data set is less than a certain percentage of the size of the first test data set. 를 포함하는, 디스플레이 방법.Comprising a display method. 제 21항에 있어서, 상기 압축 기술을 식별하는 단계는, The method of claim 21, wherein identifying the compression technique comprises: 비문서 요소가 사진인지를 판단하기 위해 상기 압축해제된 데이터 세트에 이미지 프로세싱 알고리즘을 적용하는 단계와, Applying an image processing algorithm to the decompressed data set to determine if a letter element is a photograph; 비문서 요소가 사진인 경우에 손실 압축 기술을 선택하는 단계Steps to choose a lossy compression technique if the inscription element is a photo 를 포함하는, 디스플레이 방법. Comprising a display method. 제 21항에 있어서, 상기 압축 기술을 식별하는 단계는, The method of claim 21, wherein identifying the compression technique comprises: 비문서 요소가 연속 톤인지를 판단하기 위해 상기 압축해제 데이터 세트에 이미지 프로세싱 알고리즘을 적용하는 단계와, Applying an image processing algorithm to the decompressed data set to determine if a letter element is a continuous tone; 비문서 요소가 연속 톤인 경우에 손실 압축 기술을 선택하는 단계Selecting a lossy compression technique if the non-zero element is a continuous tone 를 포함하는, 디스플레이 방법. Comprising a display method. 제 21항에 있어서, 상기 압축 기술을 식별하는 단계는, The method of claim 21, wherein identifying the compression technique comprises: 상기 압축해제된 데이터 세트의 픽셀 컬러의 수를 계수하는(enumerating) 단계와,Enumerating the number of pixel colors of the decompressed data set; 상기 계수된 픽셀 컬러의 수가 소정값을 초과하는 경우에 손실 압축 기술을 선택하는 단계Selecting a lossy compression technique when the number of counted pixel colors exceeds a predetermined value 를 포함하는, 디스플레이 방법. Comprising a display method. 클라이언트에서, 서버상에서 실행하는 애플리케이션 프로그램으로부터의 그래픽 출력을 디스플레이하는 시스템에 있어서, In a system for displaying graphical output from an application program running on a server on a client, 애플리케이션 프로그램과,Application programs, 상기 애플리케이션 프로그램에 의해 생성된 비문자 요소를 식별하고, 상기 비문자 요소와 연관된 압축해제된 데이터 세트를 복구하고, 상기 압축해제된 데이터 세트의 컨텐츠에 응답하여 상기 압축해제 데이터에 사용하기 위한 압축 기술을 식별하고, 상기 압축해제된 데이터를 상기 식별된 압축 기술로 압축하여 재압축 데이터 세트를 생성하고, 상기 압축해제 데이터 세트 대신에 상기 재압축 데이터 세트를 클라이언트에 전송하도록 구성된 출력 필터 모듈A compression technique for identifying a non-literal element generated by the application program, restoring a decompressed data set associated with the non-literal element, and using the decompressed data in response to the contents of the decompressed data set. An output filter module configured to identify a, compress the decompressed data with the identified compression technique to generate a recompressed data set, and send the recompressed data set to a client instead of the decompressed data set. 을 포함하는 시스템. System comprising. 제 34항에 있어서, 상기 식별된 압축 기술은 무손실 압축 기술인, 디스플레이 시스템.35. The display system of claim 34, wherein the identified compression technique is a lossless compression technique. 제 35항에 있어서, 상기 비문자 요소는 동일 컬러의 큰 영역(large area)을 갖는 이미지인, 디스플레이 시스템.36. The display system of claim 35, wherein the non-literal element is an image having a large area of the same color. 제 35항에 있어서, 상기 비문자 요소는 컴퓨터-생성된 이미지인, 디스플레이 시스템.36. The display system of claim 35, wherein the non-literal element is a computer-generated image. 제 35항에 있어서, 상기 무손실 압축 기술은 2DRLE 압축인, 디스플레이 시스템.36. The display system of claim 35, wherein the lossless compression technique is 2DRLE compression. 제 34항에 있어서, 상기 식별된 압축 기술은 손실 압축 기술인, 디스플레이 시스템.35. The display system of claim 34, wherein the identified compression technique is a lossy compression technique. 제 39항에 있어서, 상기 비문자 요소는 연속 톤(continuous tone) 이미지인, 디스플레이 시스템.40. The display system of claim 39, wherein the non-literal element is a continuous tone image. 제 39항에 있어서, 상기 비문자 요소는 사진 이미지인, 디스플레이 시스템.The display system of claim 39, wherein the non-literal element is a photographic image. 제 39항에 있어서, 상기 손실 압축 기술은 JPEG 압축인, 디스플레이 시스템.40. The display system of claim 39, wherein the lossy compression technique is JPEG compression. 제 34항에 있어서, 상기 출력 필터 모듈은,The method of claim 34, wherein the output filter module, 무손실 압축해제 기술을 이용하여 상기 압축해제된 데이터 세트를 압축하여 제 1 테스트 데이터 세트를 형성하고, 제 1 테스트 데이터 세트를 소정값과 비교하고, 상기 제 1 테스트 데이터 세트의 사이즈가 소정값을 초과하는 경우에는 손실 압축해제 기술을 이용하여 상기 압축해제 데이터 세트를 압축하여 제 2 테스트 데이터 세트를 형성하고, 상기 제 2 테스트 데이터 세트의 사이즈가 상기 제 1 테스트 데이터 세트 사이즈의 소정 백분율 미만인 경우에는 손실 압축 기술을 선택함으로써, 압축 기술을 식별하는, 디스플레이 시스템.Compressing the decompressed data set using a lossless decompression technique to form a first test data set, comparing the first test data set with a predetermined value, and the size of the first test data set exceeds a predetermined value. Compressing the decompressed data set using a lossy decompression technique to form a second test data set, and loss if the size of the second test data set is less than a predetermined percentage of the size of the first test data set. A display system for identifying a compression technique by selecting a compression technique. 제 34항에 있어서, 상기 출력 필터 모듈은, The method of claim 34, wherein the output filter module, 비문서 요소가 사진인지를 판단하기 위해 상기 압축해제 데이터 세트에 이미지 프로세싱 알고리즘을 적용하고, 비문서 요소가 사진인 경우에 손실 압축 기술을 선택함으로써, 압축 기술을 식별하는, 디스플레이 시스템.A display system for identifying a compression technique by applying an image processing algorithm to the decompressed data set to determine if a non-literal element is a photograph and selecting a lossy compression technique if the non-literal element is a photograph. 제 34항에 있어서, 상기 출력 필터 모듈은,The method of claim 34, wherein the output filter module, 비문서 요소가 연속 톤인지를 판단하기 위해 상기 압축해제 데이터 세트에 이미지 프로세싱 알고리즘을 적용하고, 비문서 요소가 연속 톤인 경우에 손실 압축 기술을 선택함으로써, 압축 기술을 식별하는, 디스플레이 시스템.And applying an image processing algorithm to the decompressed data set to determine if the non-letter element is a continuous tone and selecting a lossy compression technique if the non-letter element is a continuous tone. 제 34항에 있어서, 상기 출력 필터 모듈은,The method of claim 34, wherein the output filter module, 상기 압축해제 데이터 세트의 픽셀 컬러의 수를 계수하는(enumerating)하고, 상기 계수된 픽셀 컬러의 수가 소정값을 초과하는 경우에 손실 압축 기술을 선택함으로써, 압축 기술을 식별하는, 디스플레이 시스템. And enumerating the number of pixel colors of the decompressed data set, and identifying a compression technique by selecting a lossy compression technique when the counted number of pixel colors exceeds a predetermined value. 클라이언트에서 미디어 프레젠테이션을 생성하는 방법에 있어서, 상기 방법은A method of creating a media presentation on a client, the method comprising (a) 서버에서 실행하는 애플리케이션 프로그램으로부터 출력을 클라이언트로 전송하는 단계와,(a) sending the output from the application program running on the server to the client, (b) 상기 애플리케이션 출력 내에서 다수의 미디어 스트림을 식별하는 단계와,(b) identifying a plurality of media streams within the application output; (c) 각각의 미디어 스트림을 할당된 우선순위(priority)를 가지는 각각의 서버 미디어 큐와 연관시키는 단계와,(c) associating each media stream with each server media queue having an assigned priority; (d) 서버 커맨드(command) 큐에 우선순위를 할당하는 단계와,(d) assigning priorities to server command queues, (e) 서버 큐의 컨텐츠를 클라이언트로 전송하는 단계와,(e) transmitting the contents of the server queue to the client, (f) 상기 서버와 클라이언트간의 네트워크 대역폭이 서버 큐 전부를 전송하기에 부족한 경우에, 낮게 할당된 우선순위를 가지는 서버 큐로부터 샘플을 드롭(dropping)하고 높게 할당된 우선순위를 가지는 서버 큐로부터 샘플을 전송하는 단계(f) if the network bandwidth between the server and the client is insufficient to transmit all of the server queues, drop the sample from the server queue with the lower assigned priority and sample from the server queue with the higher assigned priority. Steps to send 를 포함하는 방법.How to include. 제 47항에 있어서, 상기 미디어 큐의 우선순위는 각각의 큐에 저장된 미디어 타입에 근거하는, 클라이언트에서 미디어 프레젠테이션을 생성하는 방법.48. The method of claim 47, wherein the priority of the media queue is based on the media type stored in each queue. 제 47항에 있어서,The method of claim 47, (g) 다수의 클라이언트 미디어 큐 -각각의 클라이언트 미디어 큐는 서버 미디어 큐와 연관됨- 를 가진 클라이언트에서 상기 전송을 수신하는 단계와,(g) receiving the transmission at a client having a plurality of client media queues, each client media queue associated with a server media queue; (h) 클라이언트 미디어 큐가 가득 찼을 때, 가득찬 클라이언트 미디어 큐와 연관된 전송은 폐기(discarding)하는 단계(h) when the client media queue is full, discarding transmissions associated with the full client media queue. 를 더 포함하는, 클라이언트에서 미디어 프레젠테이션을 생성하는 방법.Further comprising a method of generating a media presentation on the client. 제 47항에 있어서, 상기 커맨드 큐는 최상의 우선순위를 갖는, 클라이언트에서 미디어 프레젠테이션을 생성하는 방법.48. The method of claim 47, wherein the command queue has the highest priority. 클라이언트에서 미디어 프레젠테이션을 생성하는 방법에 있어서, 상기 방법은A method of creating a media presentation on a client, the method comprising (a) 서버에서 실행하는 애플리케이션 프로그램으로부터의 출력을 클라이언트로 전송하는 단계와,(a) sending the output from the application program running on the server to the client, (b) 상기 애플리케이션 출력 내에서 다수의 미디어 스트림을 식별하는 단계와,(b) identifying a plurality of media streams within the application output; (c) 상기 미디어 스트림을 표시하는 데이터를 클라이언트로 전송하는 단계(c) sending data representing the media stream to a client 를 포함하며, 클라이언트 플레이백이 시작되기 전에 네트워크 처리량에 의해 허락되는 한 신속히 전송함으로써 클라이언트 미디어 큐가 채워지는, 클라이언트에서 미디어 프레젠테이션을 생성하는 방법.Wherein the client media queue is filled by sending as quickly as allowed by network throughput before client playback begins. 제 51항에 있어서, 클라이언트에서 대응하는 미디어 큐에서의 데이터 레벨에 따라 발행된(issued) 클라이언트로부터의 플로우 콘트롤 커맨드를 서버에서 수신하는 단계를 더 포함하는, 클라이언트에서 미디어 프레젠테이션을 생성하는 방법. 53. The method of claim 51, further comprising receiving at the server a flow control command from a client issued according to a data level in a corresponding media queue at the client. 클라이언트에서, 서버상에서 실행하는 애플리케이션 프로그램으로부터의 미디어 프레젠테이션을 생성하는 방법에 있어서, 상기 방법은A method of generating, at a client, a media presentation from an application program running on a server, the method comprising: 상기 애플리케이션 출력내에서 비문자 요소(non-textual element)를 식별하는 단계와,Identifying a non-textual element in the application output; 상기 비문자 요소와 연관된 압축해제된 데이터 세트를 복구하는 단계와,Recovering the decompressed data set associated with the non-literal element; 상기 압축해제된 데이터 세트를 적어도 하나의 스트립으로 배분(apportioning)하는 단계와,Apportioning the decompressed data set into at least one strip; 상기 적어도 하나의 스트립을 클라이언트로 전송하는 단계Transmitting the at least one strip to a client. 를 포함하는 방법.How to include. 제 53항에 있어서, 상기 적어도 하나의 스트립은 다른 비문서 요소를 표시하는 제 2 압축해제된 데이터 세트내에 존재하는, 미디어 프레젠테이션 생성 방법.54. The method of claim 53 wherein the at least one strip is in a second decompressed data set that represents another letter element. 제 53항에 있어서, 서버에서 데이터베이스 내에 상기 적어도 하나의 스트립을 저장하는 단계를 더 포함하는, 미디어 프레젠테이션 생성 방법.54. The method of claim 53, further comprising storing the at least one strip in a database at a server. 제 55항에 있어서, 상기 서버 데이터베이스내 적어도 하나의 스트립의 높이, 폭 및 순환 중복 검사(CRC) 정보를 더 포함하는, 미디어 프레젠테이션 생성 방법.56. The method of claim 55, further comprising height, width and cyclic redundancy check (CRC) information of at least one strip in the server database. 제 55항에 있어서, 클라이언트에서, 데이터베이스내에 적어도 하나의 스트립을 저장하는 단계를 더 포함하는, 미디어 프레젠테이션 생성 방법.56. The method of claim 55, further comprising storing, at the client, at least one strip in a database. 제 57항에 있어서, 상기 클라이언트 데이터베이스내에 적어도 하나의 스트립의 높이, 폭 및 순환 중복 검사(CRC) 정보를 더 포함하는, 미디어 프레젠테이션 생성 방법.59. The method of claim 57, further comprising height, width and cyclic redundancy check (CRC) information of at least one strip in the client database. 제 57항에 있어서, 상기 방법은59. The method of claim 57, wherein the method is 다른 비문서 요소를 나타내는 제 2 압축해제된 데이터 세트를 인터셉트하는 단계와, Intercepting a second decompressed data set representing another non-literal element; 상기 제 2 압축해제된 데이터 세트를 제 2 스트립으로 배분하는 단계와,Distributing the second decompressed data set to a second strip; 상기 서버 데이터베이스에 미리 저장된 상기 제 2 스트립을 식별하는 단계와,Identifying the second strip previously stored in the server database; 상기 미리 저장된 제 2 스트립과 연관된 식별자를 복구하는 단계와,Recovering an identifier associated with the second stored second strip; 상기 제 2 스트립을 클라이언트로 전송하는 대신에 상기 클라이언트로 식별자를 전송하는 단계Sending an identifier to the client instead of sending the second strip to the client 를 더 포함하는, 미디어 프레젠테이션 생성 방법.Further comprising a media presentation generation method. 제 59항에 있어서, The method of claim 59, 클라이언트에서 상기 식별자를 수신하는 단계와,Receiving the identifier at a client; 상기 수신된 식별자와 연관된 클라이언트 데이터베이스에 저장된 스트립을 식별하는 단계와, 클라이언트에서 상기 수신된 식별자와 연관된 상기 저장된 스트립을 디스플레이하는 단계를 더 포함하는, 미디어 프레젠테이션 생성 방법.Identifying a strip stored in a client database associated with the received identifier and displaying the stored strip associated with the received identifier at a client. 제 57항에 있어서, 상기 서버로부터 클라이언트의 접속이 끊어진 후에 상기 클라이언트의 데이터베이스 컨텐츠를 보유하는 단계를 더 포함하는, 미디어 프레젠테이션 생성 방법.58. The method of claim 57, further comprising retaining database content of the client after the client is disconnected from the server. 제 61항에 있어서, 62. The method of claim 61, 상기 서버로부터 클라이언트를 재접속하는 단계와, Reconnecting a client from the server; 상기 클라이언트 데이터베이스의 컨텐츠 리스트를 서버로 전송하는 단계Transmitting the content list of the client database to a server 를 더 포함하는, 미디어 프레젠테이션 생성 방법.Further comprising a media presentation generation method. 제 62항에 있어서, 상기 클라이언트 데이터베이스내 저장된 스트립의 높이, 폭 및 순환 중복 검사(CRC) 정보를 더 포함하는, 미디어 프레젠테이션 생성 방법.63. The method of claim 62 further comprising height, width and cyclic redundancy check (CRC) information of the strips stored in the client database. 제 57항에 있어서, 상기 서버로부터 상기 클라이언트로 인스트럭션을 전송하여 상기 클라이언트 데이터베이스로부터 상기 클라이언트 데이터베이스에 저장된 스트립을 제거하는 단계를 더 포함하는, 미디어 프레젠테이션 생성 방법.59. The method of claim 57, further comprising removing instructions stored in the client database from the client database by sending instructions from the server to the client. 제 64항에 있어서, 상기 제거하기 위해 선택된 스트립은 미래에 사용될 가능성이 가장 낮은 스트립인, 미디어 프레젠테이션 생성 방법. 65. The method of claim 64, wherein the strip selected for removal is the strip most likely to be used in the future. 클라이언트로 다수의 미디어 스트림을 전송하는 방법에 있어서, 상기 방법은 A method of transmitting a plurality of media streams to a client, the method comprising (a) 애플리케이션 프로그램 출력 내에서 제 1 미디어 스트림과 제 2 미디어 스트림을 식별하는 단계와,(a) identifying a first media stream and a second media stream in an application program output; (b) 할당된 우선순위를 가지는 제 1 큐와 상기 제 1 미디어 스트림을 연관시키고, 상기 제 1 큐보다 낮은 할당된 우선순위를 가지는 제 2 큐와 상기 제 2 미디어 스트림을 연관시키는 단계와,(b) associating the first media stream with a first queue having an assigned priority and associating the second media stream with a second queue having an assigned priority lower than the first queue; (c) 상기 제 1 미디어 스트림의 적어도 일부를 표시하는 제 1 압축 데이터 세트 -상기 제 1 압축 데이터 세트는 제 1 다수의 패킷을 포함함- 를 인터셉트하는 단계와,(c) intercepting a first compressed data set indicating at least a portion of the first media stream, the first compressed data set comprising a first plurality of packets; (d) 상기 제 2 미디어 스트림의 적어도 일부를 표시하는 제 2 압축 데이터 세트 -상기 제 2 압축 데이터 세트는 제 2 다수의 패킷을 포함함- 를 인터셉트하는 단계와,상기 원본 압축 데이터 세트를 클라이언트로 전송하는 단계와,(d) intercepting a second compressed data set indicative of at least a portion of said second media stream, said second compressed data set comprising a second plurality of packets, and passing said original compressed data set to a client; Transmitting, (e) 상기 제 1 미디어 스트림과 연관된 상기 제 1 큐의 상기 제 1 다수의 패킷을 저장하는 단계와, (e) storing the first plurality of packets of the first queue associated with the first media stream; (f) 상기 제 2 미디어 스트림과 연관된 상기 제 2 큐의 상기 제 2 다수의 패킷을 저장하는 단계와,(f) storing the second plurality of packets of the second queue associated with the second media stream; (g) 상기 제 1 큐로부터 상기 제 1 다수의 패킷을 전송하는 단계와, (g) transmitting the first plurality of packets from the first queue, (h) 상기 제 2 큐로부터 상기 제 2 다수의 패킷의 적어도 일부를 전송하는 단계와, (h) transmitting at least a portion of the second plurality of packets from the second queue, (i) 상기 제 2 큐로부터 제 2 다수의 패킷의 다른 패킷을 드롭하는 단계(i) dropping another packet of a second plurality of packets from the second queue 를 포함하는 방법.How to include. 제 66항에 있어서, 상기 애플리케이션 프로그램을 실행하는 단계를 더 포함하는, 클라이언트로 다수의 미디어 스트림을 전송하는 방법.67. The method of claim 66 further comprising executing the application program. 제 66항에 있어서, 콘트롤 커맨드를 저장하는 콘트롤 큐를 생성하는 단계를 더 포함하는, 클라이언트로 다수의 미디어 스트림을 전송하는 방법.67. The method of claim 66, further comprising creating a control queue for storing control commands. 제 68항에 있어서, 상기 콘트롤 커맨드는 하나의 스트림-제너릭 및 스트림-특정 커맨드를 포함하는, 클라이언트로 다수의 미디어 스트림을 전송하는 방법.69. The method of claim 68, wherein the control command comprises one stream-generic and stream-specific command. 제 68항에 있어서, 상기 콘트롤 큐는 모든 큐중에서 최상의 우선순위가 할당되는, 클라이언트로 다수의 미디어 스트림을 전송하는 방법.69. The method of claim 68, wherein the control queue is assigned the highest priority among all queues. 제 66항에 있어서, 상기 미디어 큐의 우선순위는 각 큐에 저장된 대응하는 미디어 타입에 근거하는, 클라이언트로 다수의 미디어 스트림을 전송하는 방법.67. The method of claim 66, wherein the priority of the media queue is based on the corresponding media type stored in each queue. 제 71항에 있어서, 상기 미디어 타입에서 동적 변화를 검출하는 단계를 더 포함하는, 클라이언트로 다수의 미디어 스트림을 전송하는 방법.72. The method of claim 71 further comprising detecting a dynamic change in the media type. 제 71항에 있어서, 제 1 출력 필터 모듈을 호출하는 단계를 더 포함하는, 클라이언트로 다수의 미디어 스트림을 전송하는 방법.72. The method of claim 71 further comprising invoking a first output filter module. 제 73항에 있어서, 상기 제 1 출력 필터 모듈과 커뮤니케이션하는 제 2 출력 필터 모듈을 호출하는 단계를 더 포함하는, 클라이언트로 다수의 미디어 스트림을 전송하는 방법.74. The method of claim 73, further comprising calling a second output filter module in communication with the first output filter module. 제 74항에 있어서, 상기 제 1 출력 필터 모듈이 압축 데이터 세트를 인터셉트하고 상기 제 2 출력 필터 모듈이 콘트롤 정보를 인터셉트하는, 클라이언트로 다수의 미디어 스트림을 전송하는 방법.75. The method of claim 74, wherein the first output filter module intercepts a compressed data set and the second output filter module intercepts control information. 제 73항에 있어서, 상기 제 1 출력 필터 모듈이 클라이언트에 미디어 스트림을 생성하도록 요청하는, 클라이언트로 다수의 미디어 스트림을 전송하는 방법.74. The method of claim 73, wherein the first output filter module requests the client to create a media stream. 제 76항에 있어서, 77. The method of claim 76, (a) 상기 클라이언트로부터 미디어 스트림 생성의 실패(failure) 지시(notice)를 수신하는 단계와,(a) receiving a failure indication of a media stream creation from the client; (b) 상기 제 1 출력 필터 모듈을 언로드(unload)하는 단계와,(b) unloading the first output filter module; (c) 고유(native) 및 제 3자(third party) 출력 필터 모듈 중 하나를 로딩하는 단계(c) loading one of the native and third party output filter modules 를 더 포함하는, 클라이언트로 다수의 미디어 스트림을 전송하는 방법.Further comprising a plurality of media streams to the client. 제 66항에 있어서, 임의의 타이밍 정보를 인터셉트하는 단계를 더 포함하는, 클라이언트로 다수의 미디어 스트림을 전송하는 방법.67. The method of claim 66 further comprising intercepting any timing information.
KR1020067005104A 2003-09-12 2004-09-13 Method and apparatus for generating graphical and media display at a thin client KR20060110267A (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US50257803P 2003-09-12 2003-09-12
US60/502,576 2003-09-12
US51046103P 2003-10-10 2003-10-10
US60/510,461 2003-10-10

Publications (1)

Publication Number Publication Date
KR20060110267A true KR20060110267A (en) 2006-10-24

Family

ID=34381050

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067005104A KR20060110267A (en) 2003-09-12 2004-09-13 Method and apparatus for generating graphical and media display at a thin client

Country Status (6)

Country Link
EP (1) EP1665798A1 (en)
JP (1) JP2007505580A (en)
KR (1) KR20060110267A (en)
AU (1) AU2004305808A1 (en)
CA (1) CA2538340A1 (en)
WO (1) WO2005029864A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101026759B1 (en) * 2008-08-26 2011-04-08 최백준 Apparatus amd method for providing a distributed processing of moving picture in server based computing system of terminal environment
US9055066B2 (en) 2010-12-24 2015-06-09 Kt Corporation Apparatus and method for providing a game service in cloud computing environment

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189792B2 (en) * 2005-04-04 2015-11-17 Mediaport Entertainment, Inc. System and methods for monitoring devices, systems, users, and user activity at remote locations
US9198084B2 (en) 2006-05-26 2015-11-24 Qualcomm Incorporated Wireless architecture for a traditional wire-based protocol
JP2009054097A (en) * 2007-08-29 2009-03-12 Casio Comput Co Ltd Drawing data processing device and drawing data processing program
DE102008027096A1 (en) * 2008-06-06 2009-12-10 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Portable user interface with access to a host computer
US9398089B2 (en) 2008-12-11 2016-07-19 Qualcomm Incorporated Dynamic resource sharing among multiple wireless devices
JP5476734B2 (en) * 2009-02-19 2014-04-23 日本電気株式会社 Server, remote operation system, transmission method selection method, program, and recording medium
US9264248B2 (en) 2009-07-02 2016-02-16 Qualcomm Incorporated System and method for avoiding and resolving conflicts in a wireless mobile display digital interface multicast environment
US9582238B2 (en) 2009-12-14 2017-02-28 Qualcomm Incorporated Decomposed multi-stream (DMS) techniques for video display systems
JP5471794B2 (en) 2010-05-10 2014-04-16 富士通株式会社 Information processing apparatus, image transmission program, and image display method
JP5471903B2 (en) 2010-07-01 2014-04-16 富士通株式会社 Information processing apparatus, image transmission program, and image display method
JP5685840B2 (en) 2010-07-01 2015-03-18 富士通株式会社 Information processing apparatus, image transmission program, and image display method
JP5720211B2 (en) 2010-12-03 2015-05-20 富士通株式会社 Information processing apparatus, information processing method, and information processing program
US9065876B2 (en) 2011-01-21 2015-06-23 Qualcomm Incorporated User input back channel from a wireless sink device to a wireless source device for multi-touch gesture wireless displays
US8964783B2 (en) 2011-01-21 2015-02-24 Qualcomm Incorporated User input back channel for wireless displays
US9413803B2 (en) 2011-01-21 2016-08-09 Qualcomm Incorporated User input back channel for wireless displays
US9787725B2 (en) 2011-01-21 2017-10-10 Qualcomm Incorporated User input back channel for wireless displays
US10135900B2 (en) 2011-01-21 2018-11-20 Qualcomm Incorporated User input back channel for wireless displays
US20130013318A1 (en) 2011-01-21 2013-01-10 Qualcomm Incorporated User input back channel for wireless displays
JP5664289B2 (en) 2011-01-31 2015-02-04 富士通株式会社 Information processing apparatus, image transmission program, and image display method
US10108386B2 (en) 2011-02-04 2018-10-23 Qualcomm Incorporated Content provisioning for wireless back channel
US9503771B2 (en) 2011-02-04 2016-11-22 Qualcomm Incorporated Low latency wireless display for graphics
TW201251429A (en) * 2011-06-08 2012-12-16 Hon Hai Prec Ind Co Ltd System and method for sending streaming of desktop sharing
US9525998B2 (en) 2012-01-06 2016-12-20 Qualcomm Incorporated Wireless display with multiscreen service
TW201419868A (en) * 2012-09-11 2014-05-16 Nec Corp Communication system and method, and server device and terminal
GB2514777B (en) * 2013-06-03 2018-12-19 Displaylink Uk Ltd Management of memory for storing display data
EP3160156A1 (en) * 2015-10-21 2017-04-26 Nagravision S.A. System, device and method to enhance audio-video content using application images
CN112567751A (en) * 2018-09-26 2021-03-26 华为技术有限公司 Method and device for compressing and decompressing 3D (three-dimensional) graphic data

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4120711B2 (en) * 1996-11-15 2008-07-16 株式会社日立製作所 Video display system
JPH11341027A (en) * 1998-05-26 1999-12-10 Canon Inc Method and device for bus management
JP2002531893A (en) * 1998-11-30 2002-09-24 シーベル システムズ,インコーポレイティド Client server system with small and light client architecture
EP1277119A4 (en) * 2000-03-31 2006-09-06 Siebel Systems Inc Thin client method and system for generating page delivery language output from applets, views, and screen definitions
EP1326405B1 (en) * 2000-05-26 2005-03-23 Citrix Systems, Inc. Method and system for efficiently reducing graphical display data for transmission over a low bandwidth transport protocol mechanism
AU2001274972A1 (en) * 2000-05-26 2001-12-11 Citrix Systems, Inc. Method and system for efficiently reducing graphical display data for transmission over a low bandwidth transport protocol mechanism
JP4600875B2 (en) * 2000-08-28 2010-12-22 ソニー株式会社 Multimedia information processing apparatus and method
US20030014476A1 (en) * 2001-01-03 2003-01-16 Peterson David Allen Thin client computer operating system
US20030065715A1 (en) * 2001-08-20 2003-04-03 Burdick William R. System and method of a wireless thin-client, server-centric framework
CN1290027C (en) * 2001-08-27 2006-12-13 皇家飞利浦电子股份有限公司 Cache method
US20040103438A1 (en) * 2002-11-27 2004-05-27 Yong Yan Methods and systems for transferring events including multimedia data

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101026759B1 (en) * 2008-08-26 2011-04-08 최백준 Apparatus amd method for providing a distributed processing of moving picture in server based computing system of terminal environment
US9055066B2 (en) 2010-12-24 2015-06-09 Kt Corporation Apparatus and method for providing a game service in cloud computing environment

Also Published As

Publication number Publication date
CA2538340A1 (en) 2005-03-31
WO2005029864A1 (en) 2005-03-31
EP1665798A1 (en) 2006-06-07
JP2007505580A (en) 2007-03-08
AU2004305808A1 (en) 2005-03-31
WO2005029864A8 (en) 2006-11-09

Similar Documents

Publication Publication Date Title
KR20060110267A (en) Method and apparatus for generating graphical and media display at a thin client
EP2280352B1 (en) Methods and apparatus for generating graphical and media displays at a client
US5838927A (en) Method and apparatus for compressing a continuous, indistinct data stream
JP4716645B2 (en) Document viewing method
KR101443070B1 (en) Method and system for low-latency transfer protocol
US7653749B2 (en) Remote protocol support for communication of large objects in arbitrary format
US20100005187A1 (en) Enhanced Streaming Operations in Distributed Communication Systems
US9325759B2 (en) Methods and apparatus for generating graphical and media displays at a client
JP2007523424A (en) State memory management method and apparatus
EP1821490A1 (en) Method for transmitting graphical data to a thin client
CN105610979B (en) Network resource transmission system and method based on virtualization technology
Kuo et al. Design and implementation of a network application architecture for thin clients
Mauve Protocol Enhancement and Compression for X-Based Application Sharing
CN111064707A (en) Network resource transmission system and method based on virtualization technology
JP2004341884A (en) Data communication method and system
JP2005190339A (en) Apparatus and method for data transfer, communication system, and program

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