KR20060059334A - 데이타를 스트리밍하기 위한 분산 토팔로지의 해결 - Google Patents

데이타를 스트리밍하기 위한 분산 토팔로지의 해결 Download PDF

Info

Publication number
KR20060059334A
KR20060059334A KR1020047010341A KR20047010341A KR20060059334A KR 20060059334 A KR20060059334 A KR 20060059334A KR 1020047010341 A KR1020047010341 A KR 1020047010341A KR 20047010341 A KR20047010341 A KR 20047010341A KR 20060059334 A KR20060059334 A KR 20060059334A
Authority
KR
South Korea
Prior art keywords
distributed
data
client device
source device
source
Prior art date
Application number
KR1020047010341A
Other languages
English (en)
Inventor
커트 에이. 데비큐
토마스 에이. 돈톤
트로이 디. 배터베리
나딤 와이. 압도
알렉산드레 에이. 그리고로비츠
댈 에이. 사더
롤랜드 와이. 아얄라
에듀아도 피. 올리베이라
알렉산드레 에이. 그리그로비츠
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060059334A publication Critical patent/KR20060059334A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/765Media network packet handling intermediate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/24Negotiation of communication capabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

실행되었을 때, 통신망을 통해 소스 디바이스로부터 클라이언트 디바이스로 데이타를 스트리밍하기 위한 요구로부터 분산 토팔로지를 해결하는, 분산 미디어 세션이 기술된다. 분산 토팔로지는, 실행되었을 때, 요구를 수행하는 복수의 소프트웨어 구성 요소들을 참조한다. 복수의 소프트웨어 구성 요소들 중의 적어도 한 개는 소스 디바이스 및 클라이언트 디바이스의 각각에서 실행 가능하다.
데이타 스트리밍, 분산 토팔로지, 분산 미디어 세션

Description

데이타를 스트리밍하기 위한 분산 토팔로지의 해결 {RESOLVING A DISTRIBUTED TOPOLOGY TO STREAM DATA }
본 발명은 일반적으로 데이타를 스트리밍하는 것에 관한 것이고, 특히 데이타를 스트리밍하기 위한 분산 토팔로지의 해결 (resolution))에 관한 것이다.
데이타 스트리밍은 사용자가 빨리 데이타를 수신할 수 있도록 사용자에게 증대된 기능을 제공한다. 스트리밍이 없이, 전체 데이타가 클라이언트 디바이스에 의해 출력되기 전에, 그 데이타가 소스 디바이스로부터 수신될 필요가 있다면, 사용자는 클라이언트 디바이스에서 데이타를 랜더링할 때 지연을 경험할 수 있다. 데이타를 스트리밍함으로써, 사용자가 직면하는 지연을 줄일 수 있다. 데이타 스트리밍은 데이타의 "실시간" 랜더링을 제공하기 위해 사용될 수 있다.
데이타를 포함하는 전체 파일이 클라이언트 디바이스에서 이용 가능할 때까지 랜더링되지 않는 데이타에 반해서, 데이타를 스트리밍하기 위해서, 데이타는 데이타가 도달하면서 클라이언트 디바이스에서 랜더링하기 위해 일반적으로 데이타 패킷들을 사용해서 스트리밍 혹은 연속 방식으로 소스 디바이스로부터 전송된다. 스트리밍은 비디오 데이타, 오디오 데이타, 미디어 데이타, 및 기타의 다양한 타입들을 위해 사용될 수 있다. 비디오 데이타 스트림은 이미지들이 도착할 때 전송되 고 디스플래이되는 "동적 이미지들 (moving images)"의 시퀀스 (sequence)를 제공한다. 마찬가지로, 오디오 데이타 스트림은 오디오 데이타가 도착하면서 플래이 (play)되는 소리 데이타를 제공한다. 미디어 데이타 스트림은 오디오 및 비디오 데이타를 모두 포함한다.
앞서, 데이타 스트림의 사용과 관련된 주변 디바이스들의 사용이 로컬 방식으로 수행되었다. 예를 들어, 소스 주변 디바이스들 (카메라들, 마이크로폰들, 및 캡춰 (capture) 카드들과 같은) 및 랜더링 디바이스들 (디스플래이 모니터들 및 스피커들과 같은)과 같은 주변 디바이스들은, 소스 주변 디바이스에 의해 스트리밍되는 데이타가 랜더링 디바이스에 의해 랜더링될 수 있도록, 한 개 컴퓨팅 디바이스에 물리적으로 장착된다. 데이타 랜더링은, 디스플래이 디바이스에서 디스플래이되고, 오디오 스피커에 의해 플래이되고, 및 기타와 같은, 랜더링 디바이스에 의해 실재 형태로 출력하기에 적절한 형태로 데이타를 변환시키는 것을 포함할 것이다.
데이타 스트림들로의 원격 액세스가 원해지면, 원격 액세스는 데이타가 제공되는 로컬 방식에 의해 제한된다. 예를 들어, 소스 주변 디바이스에 의해 스트리밍되는 데이타로 원격 액세스를 제공하기 위해서, 데이타가 클라이언트 디바이스에 스트리밍되기 전에, 그 데이타는 출력되고, 압축되고, 압축재생되고, 랜더링되고, 캡춰되고, 그리고 재압축된다. 그러나, 클라이언트 디바이스로 스트리밍하기 전에, 그 데이타를 캡춰링하고 재압축할 때, 소스 주변 디바이스에 의한 출력으로서 데이타의 부분들은 분실될 수 있다. 그러므로, 클라이언트 디바이스로 스트리밍되는 데이타의 품질이 저하된다. 이것은, 비디오 데이타의 디스플래이에서 끊어지는 동작 및 오디오 데이타의 불완전한 플래이백 (playback)을 경험하는 것과 같이, 데이타를 뷰잉 (viewing) 및/또는 경청할 때 사용자의 경험을 감소시킨다. 추가로, 소스 디바이스에 의한 데이타를 캡춰링 및 재압축을 하는 것은 리소스 인텐시브 (resource intensive)하고, 그러므로 충분한 프로세서 및 데이타 저장 리소스들을 갖는 디바이스들에게 그런 기능을 제한한다. 더욱이, 랜더링된 데이타를 캡춰링 및 재압축하는 것은 클라이언트 디바이스로의 데이타 스트리밍을 저속화할 수 있고, 그러므로 데이타의 "실시간" 특성을 제한할 수 있다. 더욱이, 한 개 이상의 목적지가 데이타 스트림들을 위해 원해지면, 복수 스트림들을 지원하기 위해 사용되는 리소스들의 양이 더 증가된다.
따라서, 데이타 스트리밍을 진보시키기 위한 계속적인 필요가 있다.
<발명의 개요>
실행될 때, 통신망을 통해 소스 디바이스로부터 클라이언트 디바이스로의 스트리밍 데이타를 위한 소프트웨어 구성 요소들을 참조하는 분산 토팔로지 (distributed topology)를 해결하는 한 분산 미디어 세션이 설명된다. 분산 토팔로지는 통신망을 통해 소스 디바이스로부터 클라이언트 디바이스로 데이타를 스트리밍하기 위해 사용될 수 있는 소프트웨어 구성 요소들의 프래임 워크 (framework) 혹은 플랜 (plan)으로서 고려될 수 있다. 그러므로, 분산 토팔로지의 소프트웨어 구성 요소들이 실행될 때, 데이타는 통신망을 통해 소스 디바이스로부터 클라이언트 디바이스로 스트리밍된다. 이러한 소프트웨어 구성 요소들의 분산 소프트웨어 기반 구조는 분산 미디어 세션의 실행을 통해 분산 토팔로지에 기초해서 구성될 수 있다. 분산 소프트웨어 기반 구조의 소프트웨어 구성 요소들의 실행은 통신망을 통해 소스 디바이스로부터 클라이언트 디바이스로 데이타가 스트리밍되도록 허용한다.
실행될 때, 분산 미디어 세션은 분산 토팔로지를 해결하기 위한 중앙집중식 (centralized) 메카니즘을 제공할 것이다. 예를 들어, 실행될 때, 분산 미디어 세션은 분산 토팔로지를 해결할 때 소스 및 클라이언트 디바이스들 모두의 능력들을 고려할 수 있다. 추가로, 실행될 때, 분산 미디어 세션이 클라이언트 디바이스, 소스 디바이스, 및/또는 제3자 디바이스에 의해 실행될 수 있도록, 분산 미디어 세션은 분산 토팔로지를 해결하기 위한 중앙집중식 메카니즘을 제공한다. 분산 미디어 세션의 실행은 제어를 위한 중앙집중식 메카니즘을 또한 제공할 수 있다. 예를 들어, 소스 및 클라이언트 디바이스들의 소프트웨어 구성 요소들은 그런 중앙집중식 메카니즘을 나타내는 한 개의 개체에 의해 제어될 수 있다.
<도면 설명>
도1은 소스 디바이스로부터 클라이언트 디바이스로 데이타를 스트리밍하기 위해 부모 분산 미디어 세션 (DMS)를 포함하는 데이타를 스트리밍하기 위해 제공하는 시스템의 한 실시예를 도시한다.
도2는 컴퓨팅 환경이 데이타를 스트리밍하기 위해 도1의 부모 DMS를 사용하는 한 실시예를 도시한다.
도3은 자식 DMS를 갖는 도1의 부모 DMS의 부모-자식 관계들의 한 실시예를 도시한다.
도4는 도3의 자식 DMS를 채택해서 중앙집중식 접근을 사용하는 원격 액세스 기능을 제공하는 부모 DMS를 도시하는 한 실시예이다.
도5는 도1의 부모 DMS가 소스 디바이스로부터 클라이언트 디바이스로 데이타를 스트리밍하기 위해 분산 소프트웨어 기반 구조를 구성하는 과정의 한 예를 도시한다.
도6은 도5의 과정을 채택하는 원격 소스 분산 토팔로지를 해결하는 한 실시예를 도시한다.
도7은 도6의 원격 소스 분산 토팔로지로부터 더 해결되는 원격 소스 분산 토팔로지의 한 실시예를 도시한다.
도8은 도7의 원격 소스 분산 토팔로지로부터 완전히 해결되는 원격 소스 분산 토팔로지의 실시예를 도시한다.
도9는 도8에 도시된 실시예에서 제어 계층구조 (hierarchy)를 도시한다.
도10은 도5의 과정을 통해 해결되는 해결된 원격 씽크 (sink) 분산 토팔로지의 한 예를 도시한다.
도11은 도10에 도시된 실시예에서 제어 계층구조를 도시한다.
도12는 도1의 클라이언트 디바이스에서 실행되는 프락시 (proxy)의 한 실시예를 도시한다.
도13는 도1의 소스 디바이스에서 실행되는 프락시 (proxy)의 한 실시예를 도시한다.
도14는 소스 프락시로서 설정된 도12의 프락시의 한 실시예를 도시한다.
도15는 씽크 프락시로서 설정된 도13의 프락시의 한 실시예를 도시한다.
도16은 도14의 소스 프락시를 포함하는 원격 소스 분산 토팔로지의 한 실시예를 도시한다.
도17은, 도16에서 도시된 바와 같이, 원격 소스 분산 토팔로지에서 제어 계층구조를 도시하는 한 실시예이다.
도18은 도15의 씽크 프락시를 포함하는 원격 씽크 분산 토팔로지의 한 실시예를 도시한다.
도19는 도18에 도시된 바와 같이 원격 씽크 분산 토팔로지에서 제어 계층구조를 도시하는 한 실시예이다.
도20은 도1의 통신망을 통해 소스 및 클라이언트 디바이스들로 통신적으로 연결되는 제3자 디바이스를 포함하는 시스템이 도시된 한 실시예이다.
도21은 도20에 도시된 시스템에 구현된 제3자 분산 토팔로지의 실시예를 도시한다.
도22는 도21에 도시된 실시예에서 제어 계층구조의 한 실시예를 도시한다.
도23은 도1의 클라이언트 디바이스로 데이타를 스트리밍하는 복수의 소스 디바이스들의 한 실시예를 도시한다.
도24는 도23의 시스템을 위해 해결되는 분산 토팔로지의 한 실시예를 도시한다.
도25는, 분산 미디어 세션의 실행이 스트리밍 데이타와 인터랙션 (interaction)하기 위해 소스 및 클라이언트 디바이스들의 능력들에 기초해서 최적 화된 방식으로, 도5의 과정을 사용해서 분산 토팔로지를 해결하는 시스템의 한 실시예를 도시한다.
도26은, 소프트웨어 구성 요소들의 분산 소프트웨어 기반 구조가 구성되고, 데이타가 클라이언트 디바이스에 의해 랜더링되기 위해 소스 디바이스로부터 클라이언트 디바이스로 스트리밍되는 과정의 한 실시예를 도시하는 흐름도이다.
도27은 운영 환경의 한 예를 도시한다.
동일 번호들은 해당 구성 요소들 및 특징들을 참조하기 위해 개시 및 도면들에서 사용된다.
<개관>
실행될 때, 통신망을 통해 소스 디바이스로부터 클라이언트 디바이스로 데이타를 스트리밍하기 위해 소프트웨어 구성 요소들을 참조하는 분산 토팔로지를 해결하는 분산 미디어 세션 (DMS)이 기술된다. 분산 토팔로지는 참조된 소프트웨어 구성 요소들을 사용해서 통신망을 통해 소스 디바이스로부터 클라이언트 디바이스로 데이타를 스트리밍하기 위한 소프트웨어 프래임워크 혹은 플랜으로서 고려될 수 있다. 실행될 때, DMS는 랜더링되는 데이타를 스트리밍하기 위한 소스 디바이스의 능력들을 발견하고, 소스 디바이스로부터 데이타 스트림을 랜더링하는 클라이언트 디바이스의 능력들을 발견함으로써, 분산 토팔로지를 해결할 수 있다. 이러한 두 개의 발견들로부터, DMS는 통신망을 통해 소스 디바이스로부터 클라이언트 디바이스로 데이타를 스트리밍하기에 적절한 소프트웨어 구성 요소들을 참조하는 분산 토 팔로지를 구성한다. 그 다음, 분산 토팔로지는, 실행될 때, 통신망을 통해 소스 디바이스로부터 클라이언트 디바이스로 데이타가 스트리밍되도록 하는 분산 소프트웨어 기반 구조를 구성하기 위해 DMS에 의해 사용될 수 있다.
실행될 때, DMS는 분산 토팔로지를 해결하기 위한 중앙집중식 메카니즘을 제공할 것이다. 예를 들어, 실행될 때, DMS는 분산 토팔로지를 해결할 때, 소스 및 클라이언트 디바이스들 모두의 능력들을 고려할 수 있다. 추가로, DMS가 클라이언트 디바이스, 소스 디바이스, 및/또는 제3자 디바이스에 의해 실행될 수 있도록, DMS는 분산 토팔로지를 해결하기 위한 중앙집중식 메카니즘을 제공한다. DMS는, 소스 및 클라이언트 디바이스들 모두의 소프트웨어 구성 요소들이 DMS 및/또는 DMS 그 자신과 인터랙팅하는 응용 프로그램에 의해서와 같이, 한 개의 개체에 의해 제어될 수 있도록, 제어를 위한 중앙집중 메카니즘을 또한 제공할 수 있다.
<분산 미디어 세션 (DMS)>
도1은 데이타를 스트리밍하는 시스템(100)을 도시하는 한 실시예이다. 시스템(100)은 통신망(106)을 통해 통신적으로 연결된 소스 디바이스(102) 및 클라이언트 디바이스(104)를 포함한다. 통신망(106)은 구내 통신망 (LAN), 광역 통신망 (WAN), 및 인터넷 중 임의의 것을 포함할 수 있다.
소스 디바이스(102)는 랜더링되는 데이타 스트림을 제공한다. 소스 디바이스(102)는 데이타를 출력하는 소스 주변 디바이스(108)를 포함할 수 있다. 소스 주변 디바이스(108)는 카메라(108a), 마이크로폰(108b), 캡춰 카드, 및 기타로서 구성될 수 있다. 소스 디바이스(102)는, 범용 직렬 버스 (USB) 포트, IEEE 1394 포트, 병렬 포트, 및 기타를 사용해서와 같이, 로컬 연결을 통해 소스 주변 디바이스(108)로 통신적으로 연결되는 컴퓨팅 디바이스(110)를 또한 포함할 수 있다. 컴퓨팅 디바이스(110)는 한 개 이상의 소프트웨어 구성 요소들을 실행하기 위한 처리기(112) 및 소프트웨어 구성 요소들 및 데이타를 저장하기 위한 메모리(114)를 포함한다. 소스 디바이스(102)는 랜더링 디바이스(116)와 인터랙팅하는 사용자에게 데이타의 실재 출력을 제공하는 랜더링 디바이스(116)을 또한 포함할 수 있다. 랜더링 디바이스(116)는, 디스플래이 디바이스(116a), 스피커(116b), 및 기타와 같은 다양한 방식들로 구성될 수 있다. 랜더링 디바이스(116)는 또한 로컬 연결을 사용해서 컴퓨팅 디바이스(110)로 통신적으로 연결된다.
도1에 도시된 소스 디바이스(102)는 컴퓨팅 디바이스(110)에 통신적으로 연결된 소스 주변 디바이스(108)를 포함하기 위해 구성되지만, 소스 디바이스(102)는 다양한 방식들로 구성될 수 있다. 예를 들어, 소스 디바이스(102)는, 프로세서, 메모리, 및 통신망 하드웨어 구성 요소 그 자체를 포함해서와 같이, 통신망(106)으로 연결하기 위한 분리된 컴퓨팅 디바이스(110)를 포함하지 않는 통신망-준비된 (network-ready) 디바이스로서 구성될 수 있다. 또 다른 예에서, 소스 디바이스(102)는 소스 디바이스(102)에 의해 소프트웨어 실행을 통해 제공되는 스트리밍 프로토콜을 통해 스트림을 제공하는 미디어 서버로서 구성될 수 있다.
클라이언트 디바이스(104)는 프로세서(120) 및 메모리(122)를 갖는 컴퓨팅 디바이스(118)을 또한 포함할 수 있다. 클라이언트 디바이스(104)는 로컬 연결을 통해 컴퓨팅 디바이스(118)로 통신적으로 연결된 데이타의 실재 출력을 제공하기 위한 랜더링 디바이스(124)를 포함한다. 소스 디바이스(102)와 같이, 클라이언트 디바이스(104)가 분리된 컴퓨팅 디바이스(118) 및 분리된 랜더링 디바이스(124)를 포함하는 것으로서 도시되지만, 클라이언트 디바이스(104)는 다양한 방식들로 구성될 수 있다. 예를 들어, 클라이언트 디바이스(104)는 컴퓨팅 디바이스(118)의 전체 리소스들을 포함하지 않는 통신망-준비된 랜더링 디바이스로서 구성될 수 있다. 예를 들어, 클라이언트 디바이스(104)는, 제한된 양의 RAM 메모리, 디스크 드라이브 없음, 및 제한된 처리 능력들과 같은 제한된 처리 및 메모리 능력들을 갖는 로우 (low) 리소스 디바이스로서 구성될 수 있다.
부모 분산 미디어 미디어 세션(126) (부모 DMS)은 통신망(106)을 통해 소스 디바이스(102)로부터 클라이언트 디바이스(104)로 데이타를 시스템(100)이 스트리밍하도록 포함된다. 부모 DMS(126)는 도20에서 도시된 소스 디바이스(102), 클라이언트 디바이스(104), 및/또는 제3자 디바이스(2002)에 의해 실행될 수 있는 소프트웨어 구성 요소이다. 부모 DMS(126)의 실행을 통해서, 분산 소프트웨어 기반 구조는 통신망(106)을 통해 데이타를 스트리밍하기 위해 구성될 수 있다. 실행될 때, 부모 DMS(126)는 소스 디바이스 및 클라이언트 디바이스들 (102, 104) 모두의 능력들을 발견할 수 있다. 이러한 발견된 능력들로부터, 부모 DMS(126)는 클라이언트 디바이스(104) 및 소스 디바이스(102) 모두로 소프트웨어 구성 요소들의 분산 배치를 논의할 것이다. 소프트웨어 구성 요소 분산 배치의 추가 논의는 아래 "분산 토팔로지의 해결"의 표제의 섹션에서 발견된다. 다음 논의를 돕기 위해서, 액션을 수행하기 위한 부모 DMS(126) 혹은 기타 소프트웨어 구성 요소의 실행으로의 추가 참조들은 부모 DMS(126) 혹은 기타 소프트웨어 구성 요소가 그 액션을 수행하는 것처럼 만들어질 것이다.
도2는 데이타를 스트리밍하기 위한 분산 미디어 세션(126)을 사용하는 컴퓨팅 환경(200)을 도시한다. 부모 DMS(126)는, 도20에서 도시된 제3자 디바이스(2002)를 위한 운영 체제의 일부를 비롯해서, 도1에 도시된 소스 디바이스(102) 혹은 클라이언트 디바이스(104)에서 실행되는 운영 체제(202)의 일부로서 포함될 수 있다. 운영 체제(202)는, 소스 주변 디바이스들(204(1)-204(N)) 및 랜더링 디바이스들(206(1)-206(M))과 같은 소프트웨어 및 하드웨어의 구조화 및 제어를 위해 제공한다.
부모 DMS(126)는 데이타 스트림들의 입력 및/또는 출력을 위해 사용되는 로컬 소프트웨어 구성 요소들(210)을 포함하는 로컬 소프트웨어 기반 구조 위에 구성될 수 있다. 로컬 소프트웨어 구성 요소들(210)은 디바이스 드라이버들(212), 미디어 플래이어들과 같은 데이타 스트림 출력을 위한 플래이어들(214), 및 기타(216) 소프트웨어 구성 요소들을 포함할 수 있다. 부모 DMS(126)는 이러한 로컬 소프트웨어 구성 요소들(210)을 관리할 수 있고, 도1에서 도시된 것처럼 통신망(106)을 통해 이러한 로컬 소프트웨어 구성 요소들(210)로(부터) 데이타를 스트리밍할 수 있다. 그러므로, 부모 DMS(126)는 로컬 소프트웨어 구성 요소들(210)을 대체하지 않고 그들을 보완할 수 있다.
미디어 엔진(218)은 응용 프로그램(208) 및 부모 DMS(126) 간의 인터페이스를 제공하기 위해 포함될 수 있다. 미디어 엔진(218)은 응용 프로그램(208)으로 부모 DMS(126)의 능력들을 제공하기 위해 사용될 수 있다. 다시 말하면, 응용 프로그램(208)이 부모 DMS(126)와 인터랙팅하고 그 반대도 가능하도록, 미디어 엔진(218)은 응용 프로그램 인터페이스(API)를 정의한다. 추가로, 부모 DMS(126)는 로컬 소프트웨어 구성 요소들(210)과 인터랙팅하기 위한 인터페이스를 제공하기 위한 미디어 엔진(218)을 사용할 수 있다. 미디어 엔진(218)은 소프트웨어 구성 요소들 간의 데이타 흐름을 제어하기 위해 또한 사용될 수 있다. 예를 들어, 미디어 엔진(218)은 로컬 소프트웨어 구성 요소들(210) 간의 데이타 스트림을 라우팅할 수 있고, 로컬 소프트웨어 구성 요소들(210)의 실행을 시작할 수 있고, 그리고 기타 등등을 할 수 있다.
<원격 액세스 및 중앙집중>
로컬 소프트웨어 구성 요소들(210)의 구성 및 제어에 반해서, 추가의 복잡성은 분산 소프트웨어 기반 구조의 구성 및 제어에서 대면될 수 있고, 거기서 소프트웨어 구성 요소들은 분산 소프트웨어 기반 구조에서 두 개 이상의 디바이스들에서 실행된다. 추가로, 다양한 소프트웨어 구성 요소들은 데이타를 스트리밍하기 위해 분산 소프트웨어 기반 구조에서 사용될 수 있고, 이것은 분산 소프트웨어 기반 구조의 구성 및 제어를 더 복잡하게 한다. 예를 들어, 다양한 소프트웨어 구성 요소들은 로컬 소프트웨어 구성 요소들(210), 미디어 엔진들(218), 송신기들, 수신기들, 및 기타를 포함할 수 있다. 그것들의 사용은 아래 "분산 토팔로지의 해결"이라는 표제의 섹션에서 더욱 자세히 설명될 것이다.
부모 DMS(126)는 두 개 이상의 디바이스들 간의 데이타를 스트림하기에 적합 한 분산 소프트웨어 기반 구조를 구성하기 위한 중앙집중식 접근을 제공한다. 이 접근법은 계획 (planning) 프로세스를 중앙집중하고, 소프트웨어 구성 요소들의 제어를 또한 중앙집중식으로 할 수 있다. 부모 DMS(126)는, 분산 소프트웨어 기반 구조를 구성할 때, 소스 및 클라이언트 디바이스들(102, 104) 둘다의 능력들도 고려되어진다. 이것은 부모 DMS(126)에 의해 소스 및 클라이언트 디바이스들 (102, 104) 모두의 소프트웨어 구성 요소들이 연동되어 구성되고 제어되도록 허용한다. 아래 도25에 관련해서 더 논의되는 것처럼, 중앙집중식 접근법을 사용해서, 부모 DMS(126)는 소스 및 클라이언트 디바이스들의 능력들로 최적화되는 분산 소프트웨어 기반 구조를 제공할 수 있다.
중앙집중식 접근법은 분산 토팔로지의 구성에 채택될 수 있고, 구성 및 제어의 소자들은 복수 디바이스들을 통해 분산 토팔로지의 분리된 부분들에 포함될 수 있다. 예를 들어, 구성 및 제어는, 소스 디바이스(102)로부터 클라이언트 디바이스(104)로 데이타를 스트림하기 위해 사용될 수 있는 소프트웨어 구성 요소들을 위한 연관 관계들을 갖는 디바이스들에 파견 배치될 수 있다. 이 모델은 부모 자식 관계들의 사용을 통해 부모 DMS(126)에 의해 지원된다. 분산 소프트웨어 기반 구조의 모든 소프트웨어 구성 요소들을 직접적으로 제어하기를 시도하기 보다는, 부모 DMS(126)는, 도3에 도시된 것처럼, 제어를 파견 배치하는 자식 DMS(302)를 생성할 수 있다. 결과적 구조는, 부모 DMS(126) 및 자식 DMS(302) 간에, 혹은, 도3에서 도시된 바와 같이, 몇 개의 부모-자식 관계들을 포함하는 더 복잡한 유사 트리 (tree-like) 구조에서 보인 것처럼 단순한 한 개의 부모-자식 구조일 수 있다.
도4는 중앙집중 접근법을 사용해서 원격 액세스 기능을 제공하는 것으로서 부모 DMS(126)를 도시하는 실시예이다. 부모 DMS(126)는 자식 DMS(302)를 호스트하고, 제어하는 부모로서 동작한다. 부모 DMS(126)가 미디어 엔진(218)을 통해 응용 프로그램(208)으로 호스트하는 소프트웨어 구성 요소들의 제어를 제공할 수 있다. 이 방식으로서, 부모 DMS(126)는 응용 프로그램(208)에 데이타 스트림들의 원격 액세스 기능을 제공한다. 예를 들어, 부모 DMS(126)는 디바이스 경계(404)를 가로질러 실행되는, 즉, 다른 디바이스에서 실행되는, 미디어 엔진(402)을 포함하는 자식 DMS(302)를 호스트한다. 자식 DMS(302)를 통해서, 부모 DMS(126)는 디바이스 경계(404)를 가로질러 미디어 엔진(402)을 컨트롤할 수 있다. 그러므로, 미디어 엔진(402)이 응용 프로그램(208)에 원격일지라도, 자식 DMS(302)는 부모 DMS(126)를 통해 응용 프로그램(208)으로 미디어 엔진(402)의 기능을 제공한다.
부모 DMS(126)는 미디어 엔진(406)을 또한 직접 호스트할 수 있다. 부모 DMS(126)는, 미디어 엔진(406), 자식 DMS(302), 및, 범용 플러그앤플래이 (plug and play) 디바이스들, 레거시 (legacy) 디바이스들, 및 기타와 인터랙팅하기 위해 사용되는, 도2에 도시된, 로컬 소프트웨어 구성 요소들(210)을 포함할 수 있는 소프트웨어 구성 요소들의 몇 개의 타입들을 호스트하는 능력을 갖는다. 복수 소프트웨어 구성 요소들을 호스트함으로써, 부모 DMS(126)는 소프트웨어 구성 요소들의 제어를 수집할 수 있다. 그러므로, 복수 소프트웨어 구성 요소들은 부모 DMS(126)와의 인터랙팅을 통해 응용 프로그램(208)에 의해 제어될 수 있다.
자식 DMS(302)는 서로 다른 기능을 제공하기 위한 다양한 방법들로 구성될 수 있다. 예를 들어, 자식 DMS(302)는, 부모 DMS(126)가 자식 DMS(302)가 액세스를 갖는 소프트웨어 구성 요소로, 예를 들어 미디어 엔진(402), 직접 액세스를 갖지 않는 상황을 처리하기 위해 생성될 수 있다. 그러므로, 자식 DMS(302)는 소프트웨어 구성 요소로, 예를 들어 미디어 엔진(402), 액세스를 제공하는 부모 DMS(126)에 의해 호스트된다. 추가로, 자식 DMS(302)는 소프트웨어 구성 요소들의 특정 세트로 제어를 하기 위해 생성될 수 있다. 예를 들어, 분리된 자식 DMS는, 비디오 데이타 및 오디오 데이타와 같은, 스트리밍되는 데이타의 각 타입을 위해 제공될 수 있다.
궁극적으로, 부모 DMS(126)는, 도4에 도시된 바와 같이, 분산 소프트웨어 기반 구조의 적어도 일부의 수집된 제어를 제공할 수 있다. 예를 들어, 부모 DMS(126)는 소스 디바이스 및 클라이언트 디바이스들 (102, 104)의 각각에 위치되는 적어도 한 개의 소프트웨어 구성 요소를 각각 제어할 수 있다. 자식 DMS(302)를 생성하는 결정은 다음 섹션에서 논의되는 분산 토팔로지를 해결하는 결과이다.
<분산 토팔로지의 해결>
도5는, 부모 DMS(126)가 소스 디바이스(102)로부터 클라이언트 디바이스(104)로 데이타를 스트리밍하기 위해 분산 소프트웨어 기반 구조를 구성하는 예시적 과정(500)의 도시이다. 블럭(502)에서, 요구 스텝이 도시되고, 여기서 응용 프로그램(208)은 데이타를 스트리밍하기 위해 부모 DMS(126)로 요구(504)를 전송한다. 요구는 도1에서 도시된 소스 및 클라이언트 디바이스들(102, 104)을 참조한다.
부모 DMS(126)는, 소스 디바이스(102)로부터 클라이언트 디바이스(104)로 데이타를 스트리밍하기 위해 적절한 소프트웨어 구성 요소들을 참조하는 분산 토팔로지를 해결하는 요구(504)를 사용한다. 분산 토팔로지를 해결하기 위해서, 부모 DMS(126)는 첫째로 스트리밍 데이타와 인터랙팅하기 위해 소스 디바이스(102) 및 클라이언트 디바이스(104)의 능력들을 각각 발견한다. 예를 들어, DMS(126)는 데이타를 랜더링하기 위해 클라이언트 디바이스(104)의 능력들 및 랜더링되는 데이타를 스트리밍하는 소스 디바이스(102)의 능력들을 발견할 수 있다.
능력들은 다양한 방식들로 발견될 수 있다. 블럭(506)의 설명된 실시예에서, 능력 발견 스텝은 도시되고, 여기서 부모 DMS(126)는 소스 디바이스(102)로부터 데이타의 스트리밍을 특징 혹은 결과로서 관련하는 (즉, 갖는) 소스 소프트웨어 구성 요소(508)를 발견하기 위해 소스 디바이스(102)를 검사할 수 있다. 유사하게, 부모 DMS(126)는 클라이언트 디바이스(104)로 스트리밍되는 데이타를 랜더링하는 것과 관련있는 클라이언트 소프트웨어 구성 요소(510)를 발견하는 클라이언트 디바이스(104)를 검사할 수 있다. 소스 및 클라이언트 디바이스들(102, 104)을 검사하는 것은 부모 DMS(126)로 소스 및 클라이언트 디바이스들(102, 104)에 의해서 노출되는, 즉 가시화되는, 소프트웨어 구성 요소들을 발견하는 것을 포함할 수 있다.
또 다른 실시예에서, 부모 DMS(126)는 룩업 표 (look-up table)에 대해 질의해서 소스 및 클라이언트 디바이스들(102, 104)의 능력들을 발견할 수 있다. 룩업표는 소스 및/또는 클라이언트 디바이스들(102, 104)의 능력들을 명시하는 결과를 리턴할 것이다. 룩업 표는, 소스 디바이스(102), 클라이언트 디바이스(104), 및/또는 통신망(106)을 통해 액세스할 수 있는 추가 디바이스 (도시 안됨)와 같은, 도1에 도시된 통신망(106)에서 부모 DMS(126)의 일부로서 및/또는 기타 위치에 상주할 수 있다.
블럭(512)에서, 분산 토팔로지 스텝을 해결하는 것은, 부모 DMS(126)가 블럭(506)에서 발견되는 소스 및 클라이언트 디바이스들(102, 104) 모두의 발견된 능력들로부터 분산 토팔로지(514)를 유도하는 것을 도시한다. 분산 토팔로지(514)는, 소프트웨어 구성 요소들이 실행될 때 소스 디바이스(102)로부터 클라이언트 디바이스(104)로 데이타를 스트리밍하는 소프트웨어 구성 요소들을 참조하는 계획, 즉 청사진,이다. 예를 들어, 소스 디바이스(102)에서 부모 DMS(126)에 의해 발견되는 소스 소프트웨어 구성 요소(508)는 도1에서 도시된 소스 주변 디바이스(108)를 위한 드라이버일 수 있다. 추가로, 클라이언트 디바이스(104)에서 발견되는 클라이언트 소프트웨어 구성 요소(510)는 도1에서 도시되는 클라이언트 디바이스(104)의 랜더링 디바이스(124)를 위한 디바이스 드라이버를 통해 데이타를 제공하기 위해 사용되는 미디어 플래이어일 수 있다. 발견 내용들에 기초해서, 부모 DMS(126)는, 소스 소프트웨어 구성 요소(508) 및 클라이언트 소프트웨어 구성 요소(510)와 연관해서 실행될 때, 소스 디바이스(102)로부터 클라이언트 디바이스(104)로 데이타를 스트리밍하는 추가 소프트웨어 구성 요소(516)를 유도할 수 있다. 부모 DMS(126)가 소스 및 클라이언트 소프트웨어 구성 요소들(508, 510)의 발견된 능력들에 기초해서 추가 소프트웨어 구성 요소(516)을 포함하도록, 부모 DMS(126)는 분산 토팔로지(514)를 유도한다. 설명된 예에서, 분산 토팔로지(514)는 추가 소프트웨어 구성 요소(516)과 함께 소스 및 클라이언트 소프트웨어 구성 요소들(508, 510)을 참조한다. 이 시점에서, 분산 토팔로지(514)는 소스 디바이스(102)로부터 클라이언트 디바이스(104)로 데이타를 스트리밍하기 위한 계획을 제공하지만, 그렇게 하기 위해서 실재 분산 소프트웨어 기반 구조를 제공하지 않는다.
블럭(518)에서, 분산 소프트웨어 기반 구조 스텝을 구성하는 것이 도시되고, 여기서 부모 DMS(126)는 분산 소프트웨어 기반 구조(520)를 구성하기 위해 분산 토팔로지(514)에 기초해서 추가 소프트웨어 구성 요소(516)를 제공한다. 분산 소프트웨어 기반 구조(520)는 추가 소프트웨어 구성 요소(516), 및 소스 및 클라이언트 소프트웨어 구성 요소들(508, 510)을 포함한다. 분산 소프트웨어 기반 구조(520)의 소스, 클라이언트 및 추가 소프트웨어 구성 요소들(508, 510, 516)은 소스 디바이스(102)로부터 클라이언트 디바이스(104)로 데이타를 스트리밍하기 위해 실행된다. 추가 소프트웨어 구성 요소(516)는 다양한 방식들로 제공될 수 있다. 예를 들어, 추가 소프트웨어 구성 요소(516)는, 로컬 메모리, 도1의 통신망(106)에 위치된 메모리, 및 기타로부터와 같이, 부모 DMS(126)에 의해 저장되고 수취될 수 있다.
도5의 설명된 예에서, 부모 DMS(126)는 소스 및 클라이언트 디바이스들(102, 104)로의 참조를 포함하는 요구(504)에서 시작한다. 그 다음, 부모 DMS(126)는, 블럭(518)의 분산 소프트웨어 기반 구조(520)를 구성하기 위해 사용될 수 있는 블 럭(512)의 분산 토팔로지(514)를 요구(504)로부터 해결한다. 블럭들(502, 506, 512, 518)에서 기술된 스텝들은 사용자 참여 없이 부모 DMS(126)에 의해 자동 수행될 수 있다. 부모 DMS(126)는, 각각이 다음 섹션들에서 더 논의되는 원격 소스 분산 토팔로지, 원격 씽크 분산 토팔로지, 및 제3자 분산 토팔로지와 같은, 다양한 분산 토팔로지들을 해결할 수 있다.
<원격 소스 분산 토팔로지>
도6,7, 및 8은 원격 소스 분산 토팔로지의 해결을 보이는 실시예들이다. 원격 소스 분산 토팔로지는, 스트리밍 데이타의 소스 디바이스(102)가 부모 DMS(126)를 호스트하는 클라이언트 디바이스(104)로부터 원격인, 즉 디바이스 경계(404)를 가로질러서, 분산 토팔로지를 참조한다. 부모 DMS(126)는 분산 토팔로지를 해결하기 위해 클라이언트 디바이스(104)에 의해 실행된다. 응용 프로그램(208)은 또한 클라이언트 디바이스(104)에서 실행된다. 한 실시예가 도7에 도시되고, 여기서 소스 디바이스(102)는 카메라(108a) 및 카메라 소프트웨어 구성 요소(602)를 포함하고, 클라이언트 디바이스(104)는 랜더링 디바이스(124) 및 디스플래이 소프트웨어 구성 요소(604)를 포함한다.
도6은 도5의 과정(500)의 블럭(512)에서, 분산 토팔로지를 해결하는 실시예를 도시한다. 부모 DMS(126)는 카메라 소프트웨어 구성 요소(602) 및 디스플래이 소프트웨어 구성 요소(604)를 포함하는 분산 토팔로지(606)를 처음 생성한다. 카메라 소프트웨어 구성 요소(602)는, 데이타를 스트리밍하는 카메라(108a)에 포함된 로컬 소프트웨어 구성 요소들과 같은 도7의 카메라(108a)의 능력들 및 카메라(108a)의 통신망 주소를 참조한다. 유사하게, 디스플래이 소프트웨어 구성 요소(604)는, 데이타를 랜더링하기 위해 도7의 랜더링 디바이스(124)에 포함된 로컬 소프트웨어 구성 요소들과 같은 능력들 및 랜더링 디바이스(124)의 통신망 주소를 참조하기 위해 사용될 수 있다.
도6에서 도시된 분산 토팔로지(606)는 스트리밍 데이타를 제공하기 위해 사용될 수 있는 모든 소프트웨어 구성 요소들이 참조되지 않기 때문에 부분적이다. 이전에 기술된 것처럼, 분산 토팔로지(606)는 분산 소프트웨어 기반 구조를 위한 계획이고, 그렇게, 구현될 수 있는 실재 소프트웨어 구성 요소들을 포함하지 않는다. 예를 들어, 분산 토팔로지(606)는, 카메라(108a)로부터 도7의 랜더링 디바이스(124)로 데이타를 스트리밍하기 위한 분산 소프트웨어 기반 구조를 제공하기 위해 부모 DMS(126)에 의해 사용될 수 있는 소프트웨어 구성 요소들을 참조한다. 이러한 참조들은 도5에 관련해서 논의되는 것처럼 분산 소프트웨어 기반 구조를 구성하기 위해 분산 토팔로지(606)에서 참조되는 소프트웨어 구성 요소들을 제공하기 위해 부모 DMS(126)에 의해 사용될 수 있다.
도7의 설명된 예에서, 카메라(108a) 및 랜더링 디바이스(124)는 서로 주변에서 연결되지 않지만, 도1에서 도시된 통신망(106)을 통해 대신 연결된다. "원격 액세스 및 중앙집중"의 표제의 섹션 및 도3에서 논의되는 바와 같이, 중앙집중은 분산 소프트웨어 기반 구조에서 데이타를 스트리밍하기 위해 사용될 수 있는 로컬 소프트웨어 구성 요소들을 제어할 수 있는 자식 DMS(302)로 제어를 위임해서 분산 토팔로지(606)를 세그멘팅 (segmenting)하는 것과 관련있을 것이다. 예를 들어, 도7에 도시된 바와 같이, 분산 토팔로지(606)는 클라이언트 디바이스(104)로부터 디바이스 경계(404)에 의해 분리되는 원격 소스, 즉 소스 디바이스(102),에서 생성되는 자식 DMS(702)를 포함하기 위해 세그먼트된다.
자식 DMS(702)는 해결 스텝을 또한 거치는 분산 토팔로지(606)의 부분(704)을 포함한다. 예를 들어, 부분(704)를 해결하는 것은 자식 DMS(702)를 통해 부모 DMS(126)에 의해 제어되는 소프트웨어 구성 요소인 송신기(706)로 참조를 추가하는 것을 포함할 수 있다. 유사하게, 분산 토팔로지(606)를 해결하는 것은 부모 DMS(126)에 의해 직접 제어되는 소프트웨어 구성 요소인 수신기(708)로 참조를 추가하는 것을 또한 포함할 수 있다. 송신기(706)는 디바이스 경계(404)를 가로질러 데이타를 스트리밍한다. 수신기(708)는 디바이스 경계(404)를 가로질러 스트리밍되는 데이타를 수신한다. 데이타는 다양한 방식들로 송신기 및 수신기(706, 708) 간에 스트리밍될 수 있다. 예를 들어, 데이타는, 통신망 주소로 데이타를 스트리밍해서와 같이, 송신기(706)에 의해 수신기(708)로 "푸쉬(push)"될 수 있다. 데이타는 또한, 통신망 주소로부터 데이타 스트림을 수취해서와 같이, 수신기(708)에 의해 송신기(706)로부터 "풀(pull)"될 수 있다.
도8은, 완전히 해결된 것처럼, 도6-7의 분산 토팔로지(606)를 설명한다. 이 예에서, 미디어 엔진(802)은 카메라 소프트웨어 구성 요소(602)로부터 송신기(706)로 데이타 스트리밍을 제어하기 위한 분산 토팔로지(606)의 부분(704)에서 참조된다. 또 다른 미디어 엔진(804)은 수신기(708)로부터 디스플래이 소프트웨어 구성 요소(604)로 데이타 스트리밍을 제어하기 위해 분산 토팔로지(606)에 포함된다. 도8에 도시된 화살표들은 데이타 스트리밍을 도시한다.
도9는 도8에서 도시된 분산 토팔로지(606)에서 소프트웨어 구성 요소들의 제어의 계층(900)을 도시한다. 분산 토팔로지(606)는, 도8에서 도시된 바와 같이, 부모 DMS(126)가 분산 토팔로지의 모든 소프트웨어 구성 요소들의 제어를 갖도록, 해결된다. 그러므로, 부모 DMS(126)는 분산 토팔로지(606)로부터 구성되는 분산 소프트웨어 기반 구조의 제어를 가질 것이다. 예를 들어, 부모 DMS(126)는 자식 DMS(702)의 사용을 통해 카메라 소프트웨어 구성 요소(602), 미디어 엔진(802), 및 송신기(706)로의 제어를 갖는다. 이 예에서, 자식 DMS(702)는, 도7에 도시된 바와 같이, 소스 디바이스(102)에 상주한다. 부모 DMS(126)는 또한, 도7에 도시된 바와 같이, 클라이언트 디바이스(104)의 부모 DMS(126)에 포함되는 수신기(708), 미디어 엔진(804), 및 디스플래이 소프트웨어 구성 요소(604)의 제어를 갖는다. 그러므로, 부모 DMS(126)는, 분산 토팔로지(606)로부터 구성될 수 있고, 미디어 엔진(218)을 통해 부모 DMS(126)와 인터랙팅하는 응용 프로그램(208)으로 이 제어를 제공할 수 있는 분산 소프트웨어 기반 구조의 제어를 가질 것이다.
<원격 씽크(sink) 분산 토팔로지>
도10은 해결된 원격 씽크 분산 토팔로지(1000)를 도시하는 실시예이다. 원격 씽크 분산 토팔로지(1000)는, 클라이언트 디바이스(104)가 부모 DMS(126)를 실행하는 소스 디바이스(102)로부터 원격인, 즉 디바이스 경계(404)를 가로질러, 분산 토팔로지를 참조한다. 부모 DMS(126)는 분산 토팔로지를 해결하기 위해 소스 디바이스(102)에 의해 실행된다. 원격 씽크 시나리오를 위한 분산 토팔로지는 효 과적으로 도6-9에 관련해서 기술되는 원격 소스 시나리오의 미러 (mirror) 이미지이다.
도6-9에 도시된 이전 실시예에서 기술된 바와 같이 카메라(108a) 및 랜더링 디바이스(124)의 카메라 소프트웨어 구성 요소(602) 및 디스플래이 소프트웨어 구성 요소(604)를 참조하는 분산 토팔로지(1002)는 해결된다. 전과 같이, 부모 DMS(126)는 디바이스 경계(404)를 가로질러 부모 DMS(126)를 호스팅하는 소스 디바이스(102)로부터 분리되는 클라이언트 디바이스(104)에 자식 DMS(1004)를 생성해서 분산 토팔로지(1002)를 세그먼트한다. 자식 DMS(1004)는 분산 토팔로지(1002)의 부분(1006)을 포함한다. 분산 토팔로지(1002)는 소스 디바이스(102)에 포함되는 송신기(1008) 및 미디어 엔진(1010), 및 클라이언트 디바이스(104)에 포함되는 수신기(1012) 및 미디어 엔진(1014)을 참조한다.
도11은 도10에 도시된 원격 씽크 분산 토팔로지(1000)에서 참조되는 소프트웨어 구성 요소들의 제어(1100)의 계층화를 도시한다. 부모 DMS(126)는 도10의 분산 토팔로지(1002)로부터 형성될 수 있는 분산 소프트웨어 기반 구조의 제어를 갖는다. 예를 들어, 부모 DMS(126)는 카메라 소프트웨어 구성 요소(602), 미디어 엔진(1010), 및 송신기(1008)의 직접 제어를 갖는다. 부모 DMS(126)는, 도10에 도시된 바와 같이, 클라이언트 디바이스(104)의 자식 DMS(702)에 포함되는 수신기(1012), 미디어 엔진(1014), 및 디스플래이 소프트웨어 구성 요소(604)의 제어를 또한 갖는다. 그러므로, 부모 DMS(126)는 분산 토팔로지(1002)로부터 구성될 수 있는 분산 소프트웨어 구성 요소의 제어를 갖는다. 그 다음, 미디어 엔진(218) 을 통해 부모 DMS(126)와 인터랙팅하는 응용 프로그램(208)은 도10의 분산 토팔로지(1002)로부터 형성되는 분산 소프트웨어 기반 구조를 또한 제어할 수 있다.
원격 소스 분산 토팔로지 및 원격 씽크 분산 토팔로지의 이전 실시예들 모두에서, 부모 DMS(126)는 분산 토팔로지들로부터 구성되는 전체 분산 소프트웨어 기반 구조의 제어를 제공한다. 그러나, 다음 섹션에서 논의되는 것처럼, 전체 분산 소프트웨어 기반 구조의 제어가 제공되지 않는 예들이 있을 수 있다.
<분산 토팔로지들에서 사용하기 위한 소스 및 씽크 프락시 소프트웨어 구성 요소들 >
도12는 프락시(1202)의 실시예(1200)를 도시한다. 프락시(1202)는, 부모 DMS(126) (도시 안됨)가 응용 프로그램(208)과는 다른 디바이스에, 즉 디바이스 경계(404)를 가로질러서, 위치되는 소프트웨어 구성 요소(1204)와의 인터랙팅을 응용 프로그램(208)에게 제공할 수 있는 소프트웨어 구성 요소이다. 프락시(1202)는 데이타가 로컬 소프트웨어 구성 요소(210)의 사용을 통해 국지적으로 제공되는 것처럼 응용 프로그램(208)으로 스트리밍 데이타를 제공하기 위해 사용된다. 그러므로, 응용 프로그램(208)은, 카메라(108a) 및 그것의 대응하는 소프트웨어 구성 요소(1204)가 클라이언트 디바이스(104)에서 실행되는 것처럼, 카메라(108a)로부터 스트리밍 데이타를 수신할 수 있다.
도13은 프락시(1202)의 한 추가 실시예(1300)의 도시이다. 프락시(1202)는 또한 소프트웨어 구성 요소(1302)로 디바이스 경계(404)를 가로질러서 데이타를 수신하고 스트리밍하기 위해 사용될 수 있다. 예를 들어, 프락시(1202)는, 소프트웨 어 구성 요소(1302)가 소스 디바이스(102)에서 실행되는 로컬 소프트웨어 구성 요소(210)인 것처럼 랜더링 디바이스(124)에서 디스플래이하기 위해 소프트웨어 구성 요소(1302)로 데이타를 스트리밍할 수 있다.
프락시(1202)는, 분산 소프트웨어 기반 구조의 모든 소프트웨어 구성 요소들의 제어는 부모 DMS(126) (도시 안됨)에 의해 제공되지 않는 예들에서 사용될 수 이다. 그러므로, 프락시(1202)의 사용을 통해서, 중앙집중 모델은 부모 DMS(126)에 의해 분산 토팔로지의 해결을 위해 사용되지만, 중앙집중 모델은 도6-11에 관련한 경우들처럼 제어에는 사용되지 않는다.
도14는 소스 프락시(1402)의 한 실시예(1400)를 도시한다. 소스 프락시(1402)는 부모 DMS(126) 및 수신기(1404)를 포함한다. 부모 DMS(126)는 도12에 도시된 바와 같이 소스 디바이스(102)에 상주하는 원격 소프트웨어 구성 요소의 제어를 위해 사용된다. 수신기(1404)는 이전에 기술된 바와 같이 수신기(1206)로 송신기 (도시 안됨)에 의해 스트리밍되는 데이타를 수신한다.
도15는 씽크 프락시(1502)의 한 실시예(1500)를 도시한다. 씽크 프락시(1502)는 도13에 도시된 바와 같이 클라이언트 디바이스(104)에 상주하는 소프트웨어 구성 요소(1302)의 제어를 위해 사용되는 부모 DMS(126)를 포함한다. 송신기(1504)는 이전에 기술된 바와 같이 수신기 (도시 안됨)로 데이타를 스트리밍한다. 씽크 프락시(1502)는 데이타의 소스로서 동작하는 소프트웨어 구성 요소를 제어하기 위한 부모 DMS(126)를 사용하지 않고 소프트웨어 구성 요소로부터 데이타를 스트리밍하기 위해 사용될 수 있다.
도16은 소스 프락시(1602)를 포함하는 원격 소스 분산 토팔로지(1600)를 도시하는 한 실시예이다. 응용 프로그램(208) 및 미디어 엔진(218)은 도6-9에 도시된 원격 소스 분산 토팔로지에서 설명된 바와 같이 클라이언트 디바이스(104)에서 실행된다. 그러나, 이 예에서, 데이타를 스트리밍하기 위해 응용 프로그램(208)로부터 요구를 수신하는 부모 DMS(126)는 스트리밍되는 데이타와 관련되는 소스 디바이스(102)의 소프트웨어 구성 요소들의 각각을 제어하기 위해 사용되지 않을 것이다. 다시 말하면, 부모 DMS(126)는 분산 토팔로지로부터 구성되는 전체 분산 소프트웨어 기반 구조의 제어를 하지 않을 것이다. 그러므로, 분산 토팔로지를 해결할 때, 부모 DMS(126)는, 데이타가 부모 DMS(126)에 의해 제어되지 않는 소프트웨어 구성 요소로 스트리밍되도록, 소스 프락시(1602)를 참조한다.
부모 DMS(126)는, 소스 디바이스(102)로부터 부모 DMS(126)를 호스트하는 클라이언트 디바이스(104)로 데이타를 스트리밍하기 위해 소스 디바이스(102)에 상주하는 소프트웨어 구성 요소들의 제어를 제공한다. 예를 들어, 부모 DMS(126)는 미디어 엔진(1608)의 사용을 통해 소스 소프트웨어 구성 요소(1604) 및 송신기(1606)를 제어할 수 있다. 송신기(1606)는 이전에 기술된 바와 같이 수신기(1610)로 데이타를 스트리밍한다. 그러나, 부모 DMS(126)는, 이 예에서 씽크(1612)로서 참조되는 데이타의 목적지의 제어를 갖지는 않는다. 씽크(1612)는 부모 DMS(126)에 의해 제어되지 않는 데이타를 위한 목적지를 지정하기 위해 설명되는 소프트웨어 구성 요소이다. 그러므로, 부모 DMS(126)는 데이타를 제어하지 않고 씽크(1612)로 데이타를 단순히 스트리밍한다. 응용 프로그램(208)은, 부모 DMS(126)가 응용 프 로그램(208)에서 원격인, 예를 들어 소스 디바이스(102)에 위치되는, 소프트웨어 구성 요소들을 제어하지만, 그것이 로컬 소프트웨어 구성 요소들(1614)인 것처럼 소스 프락시(1602)와 인터랙팅할 수 있다.
도17은 도16에 도시된 바와 같이 원격 소스 분산 토팔로지(1600)에서 제어 계층화(1700)를 도시한다. 원격 소스 분산 토팔로지(1600)에서, 부모 DMS(126)는 이전에 기술된 바와 같이 미디어 엔진(1608), 소스 소프트웨어 구성 요소(1604), 송신기(1606), 및 수신기(1610)의 제어를 제공한다. 부모 DMS(126)가 씽크(1612)의 제어를 하지 않기 때문에, 부모 DMS(126)는 데이타가 스트리밍은 되지만 제어는 되지 않는 아울렛 (outlet)으로서 씽크(1612)를 인식한다.
도18은 씽크 프락시(1802)를 포함하는 원격 씽크 분산 토팔로지(1800)의 실시예를 도시한다. 원격 씽크 분산 토팔로지(1800)는 원격 소스 분산 토팔로지(1600)와 유사하다. 이 실시예에서, 응용 프로그램(208) 및 미디어 엔진(218)은 도10-11에 도시된 바와 같이 원격 씽크 분산 토팔로지와 관련해서 기술되는 것처럼 소스 디바이스(102)에서 실행된다.
데이타를 스트리밍하기 위해 응용 프로그램(208)로부터 요구를 수신하는 부모 DMS(126)는, 데이타 스트리밍과 관련되는 클라이언트 디바이스(104)의 전체 소프트웨어 구성 요소들의 제어를 위한 분산 소프트웨어 기반 구조에서 사용되지 않을 것이다. 그러므로, 씽크 프락시(1802)는, 스트리밍되는 데이타가 부모 DMS(126)가 제어를 갖지 않는 소프트웨어 구성 요소를 사용해서 수신될 수 있도록, 요구로의 응답에서 부모 DMS(126)에 의해 참조된다.
부모 DMS(126)는 소스 디바이스(102)로부터 스트리밍되는 데이타를 수신하는 클라이언트 디바이스(104)에 상주하는 소프트웨어 구성 요소들의 제어를 제공한다. 예를 들어, 부모 DMS(126)는 미디어 엔진(1808)의 사용을 통해 수신기(1804) 및 클라이언트 소프트웨어 구성 요소(1806)를 제어할 수 있다. 송신기(1810)는 이전에 기술된 바와 같이 수신기(1804)로 데이타를 스트리밍하기 위해 사용된다. 그러나, 부모 DMS(126)는 데이타를 스트리밍하는 모든 소프트웨어 구성 요소들의 제어를 갖지는 않고, 이 예에서 원본(1812)으로서 참조될 것이다. 그러므로, 부모 DMS(126)는 데이타를 제어함이 없이 원본(1812)로부터 데이타를 단순히 수신한다. 응용 프로그램(208)은 로컬 소프트웨어 구성 요소(1814)로서 씽크 프락시(1802)를 인식할 수 있다.
도19는 도18에 도시된 바와 같이 원격 씽크 분산 토팔로지(1800)에서 제어 계층화(1900)를 도시한다. 부모 DMS(126)는 미디어 엔진(1808), 클라이언트 소프트웨어 구성 요소(1806), 수신기(1804), 및 송신기(1810)의 제어를 제공한다. 부모 DMS(126)는 원본(1812)의 제어를 하지 않기 때문에, 부모 DMS(126)는 데이타가 수신되지만 부모 DMS(126)가 제어를 갖지는 않는 인렛 (inlet)으로서 원본(1812)을 인식한다.
<제3자 분산 토팔로지>
도20은, 시스템(2000)이 통신망(106)을 통해 소스 및 클라이언트 디바이스들(102, 104)로 통신적으로 연결되는 제3자 디바이스(2002)를 포함해서 도시되는 한 실시예이다. 이전 실시예들에서, 분산 토팔로지들은 해결 및 제어가 소 스 디바이스(102) 혹은 클라이언트 디바이스(104)에 의해 제공되도록 설명된다. 제3자 디바이스(2002)는 부모 DMS(126)에 의해 제공되는 중앙집중 접근법의 사용을 통해 부모 DMS(126)를 실행하기 위해 또한 사용될 수 있다. 그러므로, 제3자 디바이스(2002)는 소스 디바이스(102)로부터 클라이언트 디바이스(104)로 데이타를 스트리밍하기 위해 분산 토팔로지를 해결하기 위해 사용될 수 있다.
도21은 제3자 분산 토팔로지(2100)가 도시되는 한 실시예이다. 제3자 디바이스(2002)는 소스 디바이스(102)로부터 클라이언트 디바이스(104)로 데이타를 스트리밍하기 위해 미디어 엔진(218)을 통해 응용 프로그램(208)으로부터의 요구를 수신하는 부모 DMS(126)를 실행한다. 부모 DMS(126)는 소스 디바이스(102)를 포함하는 분산 토팔로지의 부분을 해결하기 위해 제1 자식 DMS(2102)를 생성한다. 제1 자식 DMS(2102)는 소스 디바이스(102)에 포함되는 소프트웨어 구성 요소들의 제어를 또한 제공한다. 부모 DMS(126)는 클라이언트 디바이스(104)의 분산 토팔로지의 부분을 해결하기 위해 제2 자식 DMS(2104)를 또한 생성한다. 제2 자식 DMS(2104)는 클라이언트 디바이스(104)에 포함되는 소프트웨어 구성 요소들의 제어를 제공한다.
제1 자식 DMS(2102)는 미디어 엔진(2110)에 의해 제어되는 소스 소프트웨어 구성 요소(2106) 및 송신기(2108)를 참조한다. 제2 자식 DMS(2104)는 미디어 엔진(2116)에 의해 제어되는 클라이언트 소프트웨어 구성 요소(2114) 및 수신기(2112)를 참조한다. 도22는 도21에 도시된 제3자 분산 토팔로지(2100)에서 제어의 계층화(2200)의 도시이다. 계층화(2200)는 부모 DMS(126)가 제1 자식 DMS(2102) 및 제2 자식 DMS(2104)로의 제어를 제공함을 도시한다. 제1 자식 DMS(2102)는 소스 소프트웨어 구성 요소(2106), 송신기(2108), 및 미디어 엔진(2100)으로의 제어를 제공한다. 제2 자식 DMS(2104)는 클라이언트 소프트웨어 구성 요소(2114), 수신기(2112), 및 미디어 엔진(2116)으로의 제어를 제공한다.
제3자 제어 분산 토팔로지(2100)는 다양한 방식들로 구성될 수 있다. 도21에서 도시된 예에서, 부모 DMS(126)는 소스 및 클라이언트 디바이스들(102, 104)에 위치되는 소프트웨어 구성 요소들의 제어를 제공한다. 도20의 제3자 디바이스(2002)는 제어가 소스 디바이스(102) 혹은 클라이언트 디바이스(104)에 의해 제공되는 분산 토팔로지를 해결하기 위해 부모 DMS(126)를 또한 실행할 수 있다. 도21에 도시된 실시예에서, 데이타는 제3자 디바이스(2002)를 통해 스트리밍되지 않고 소스 디바이스(102)로부터 클라이언트 디바이스(104)로 스트리밍됨을 또한 주목해야 한다. 이 방식으로서, 제3자 디바이스(2002)는 데이타 자체를 실재로 스트리밍하지 않고 데이타를 스트리밍하는 분산 토팔로지를 해결할 수 있다. 추가 실시예들에서, 데이타는 제3자 디바이스(2002)를 통해 소스 디바이스(102)로부터 클라이언트 디바이스(104)로 스트리밍된다.
<복수 스트림들을 갖는 분산 토팔로지>
이전 실시예들이 논의를 돕기 위해 한 개 스트림의 데이타에 관련해서 기술되었지만, 복수 스트림들의 데이타가 부모 DMS(126)에 의해 스트리밍될 수 있다. 예를 들어, 복수의 소스 디바이스들이 사용될 수 있고, 소스 디바이스들의 각각은 한 개의 클라이언트 디바이스로 데이타를 스트리밍한다. 추가로, 한 개 소스 디바이스는 한 개 이상의 클라이언트 디바이스들로 복수 스트림들의 데이타를 스트리밍 할 수 있다. 유사하게, 복수 클라이언트 디바이스들은 소스 디바이스로부터 한 개의 스트림 데이타를 수신할 수 있다. 복수 스트림들의 스트리밍 데이타의 사용의 한 예는 논의될 것이지만, 이전에 논의된 분산 토팔로지들 및 분산 소프트웨어 기반 구조들의 각각은 데이타의 복수 스트림들을 지원할 것이다.
도23은 복수의 소스 디바이스들이 클라이언트 디바이스(104)로 데이타를 스트리밍하는 시스템(2300)의 한 실시예를 도시한다. 시스템(2300)은 통신망-준비된 (network-ready) 카메라로 구성되는 제1 소스 디바이스(2302)를 포함할 수 있다, 즉 통신망-준비된 카메라는 통신망(106)에 통신적으로 연결될 수 있게 하는 기능을 포함한다. 시스템(2300)은 또한, 통신망-준비된 마이크로폰과 같은 통신망-준비된 오디오 입력 디바이스로서 구성되는 제2 소스 디바이스(2304)를 포함한다. 클라이언트 디바이스(104)에 의해 사용되기 위해서, 제1 소스 디바이스(2302)는 비디오 데이타를 스트리밍하고, 제2 소스 디바이스(2304)는 오디오 데이타를 스트리밍한다. 제1 및 제2 소스 디바이스들(2302, 2304)는, 범용 플러그앤플래이 (plug-and-play) (UPnP) 디바이스들과 같이, 다양한 방식들로 구성될 수 있다.
도24는 도23의 시스템(2300)에 사용하기 위해 분산 토팔로지를 도시하는 실시예이다. 클라이언트 디바이스(104)는 클라이언트 디바이스(104)에서 랜더링하기 위해 제1 및 제2 소스 디바이스들(2302, 2304) 모두로부터 데이타 스트리밍을 요구하는 응용 프로그램(208)을 포함한다. 부모 DMS(126)는 미디어 엔진(218)을 통해 요구를 수신하고, 오디오 및 비디오 데이타를 스트리밍하기 위해 분산 토팔로지를 해결한다.
부모 DMS(126)는 제1 소스 디바이스(2302)의 분산 토팔로지의 부분을 해결하기 위해 제1 자식 DMS(2402)를 생성한다. 제1 자식 DMS(2402)는 또한 제1 소스 디바이스(2302)에 포함되는 소프트웨어 구성 요소들의 제어를 또한 제공한다. 추가로, 부모 DMS(126)는 제2 소스 디바이스(2302)의 분산 토팔로지의 부분을 해결하기 위해 제2 자식 DMS(2404)를 생성한다. 제2 자식 DMS(2404)는 제2 소스 디바이스(2302)에 포함되는 소프트웨어 구성 요소들을 또한 제어한다.
제1 자식 DMS(2402)는 미디어 엔진(2410)에 의해 제어되는 카메라 소프트웨어 구성 요소(2406) 및 송신기(2408)를 참조한다. 제2 자식 DMS(2404)는 미디어 엔진(2416)에 의해 제어되는 오디오 소프트웨어 구성 요소(2412) 및 송신기(2414)를 참조한다. 부모 DMS(126)는 클라이언트 디바이스(104)로 오디오 및 비디오 데이타의 스트리밍을 관리하기 위해 제1 및 제2 자식 DMS(2402, 2404)를 제어할 수 있다.
<최적화된 방식으로의 분산 토팔로지들의 해결>
도25는, 부모 DMS(126)가 데이타를 스트리밍하는 것과 인터랙팅하기 위해 소스 및 클라이언트 디바이스들(102, 104)의 능력들에 기초해서 최적화된 방식으로 분산 토팔로지를 해결하는 시스템(2500)의 실시예를 도시한다. 국지적으로 데이타를 랜더링하기 위해서, 소스 디바이스(102)는 포함된 소스 주변 디바이스(108)로부터 미가공 (raw) 스트림 데이타(2502)를 , 즉 처리되지 않거나 분석되지 않은 데이타, 생성할 수 있다. 미가공 데이타(2502)는 데이타가 효과적인 방식으로 전송되고 저장되도록 압축 데이타(2504)를 형성하기 위해 압축된다. 압축 데이타와 인터 랙팅하기 위해서, 소스 디바이스(102)는 압축재생 데이타(2506)를 얻기 위해 압축 데이타(2504)를 압축재생한다. 그 다음, 압축재생 데이타(2506)는 랜더링된 데이타(2508)를, 즉 사용자에 의해 인터랙팅하기 위해 실재 형태로 출력에 적절한 (오디오 디바이스등에 의해 디스플래이되고 플래이되는 것과 같은) 데이타, 형성하기 위해 랜더링 스텝을 통과한다. 부모 DMS(126)는 소스 디바이스(102) 및 클라이언트 디바이스(104) 모두의 능력들을 발견함으로써 최적화된 분산 소프트웨어 토팔로지를 제공할 수 있다. 예를 들어, 도25에 도시된 바와 같이, 부모 DMS(126)는 미가공 데이타(2502)로부터 얻어지는 압축 데이타(2504)가 클라이언트 디바이스(104)로 스트리밍되는 분산 토팔로지를 해결할 수 있다. 그 다음, 클라이언트 디바이스(104)는 압축재생 데이타(2510)를 형성하기 위해 압축 데이타(2504)를 압축재생할 수 있다. 그 다음, 압축재생 데이타(2510)는 랜더링 디바이스(124)에 의해 사용되기 위해 랜더링되는 데이타(2512)를 형성하기 위해 랜더링된다.
분산 토팔로지의 최적화는 데이타를 스트리밍하기 위해 사용되는 리소스들을 분산시키는 분산 소프트웨어 기반 구조를 제공하기 위해 사용될 수 있다. 예를 들어, 압축재생하고 랜더링하기 위해 충분한 하드웨어 및 소프트웨어 리소스들을 소스 디바이스(102)에 제공하기 보다는, 이 기능은 클라이언트 디바이스(104)에 의해 제공될 수 있다. 추가로, 압축 데이타(2504)는 암호화되는 방식으로 압축될 수 있다. 압축 데이타(2504)의 암호화를 위해 제공함으로써, 데이타는 인코딩되어 남아있고, 그러므로, 통신망(106)을 통해 안전하게 스트리밍될 수 있다.
<과정의 예>
도26은 소스 디바이스(102)로부터 클라이언트 디바이스(104)로 데이타를 스트리밍하는 소프트웨어 구성 요소들의 분산 소프트웨어 기반 구조가 구성되는 과정(2600)의 예를 도시하는 흐름도이다. 블럭(2602)에서, 요구 (request)는 응용 프로그램(208)에 의해 전송된다. 요구는 소스 디바이스(102)로부터 클라이언트 디바이스(104)로 데이타를 스트리밍하는 것을 통신하기 위한 지시를 포함할 수 있다. 요구는, 데이타를 스트리밍하기 위한 분산 소프트웨어 기반 구조를 구성하기 위해 사용되는 소프트웨어 구성 요소들의 설명을 포함하지 않는 부분적 토팔로지로 고려될 수 있다.
블럭(2604)에서, 부모 DMS(126)는 소스 디바이스(102) 및 클라이언트 디바이스(104)의 부분적 토팔로지를 포함하는 요구를 수신한다. 블럭(2606)에서, 부모 DMS(126)는 분산 토팔로지를 해결한다. 분산 토팔로지는 통신망을 통해 소스 디바이스(102)로부터 클라이언트 디바이스(104)로 데이타를 스트리밍하기 위해 적절한 소프트웨어 구성 요소들을 참조하는 계획이다.
블럭(2608)에서, 부모 DMS(126)는 소스 및 클라이언트 디바이스들(102, 104) 모두의 데이타를 스트리밍하는 것과 인터랙팅하기 위한 능력들을 발견해서 분산 토팔로지를 해결하는 것을 처음 시작한다. 능력들은 소스 및 클라이언트 디바이스들(102, 104) 각각에 의해 랜더링되는 데이타를 스트리밍하기 위해서 및 데이타 스트림을 랜더링하기 위해서 사용되는 소프트웨어 구성 요소들을 포함할 수 있다. 이러한 능력들은 다양한 방식들에서 발견될 수 있다. 예를 들어, 부모 DMS(126)는 데이타를 스트리밍하는 것과 관련있는 어떤 소프트웨어 구성 요소들이 포함되는 지를 결정하기 위해 소스 및 클라이언트 디바이스들(102, 104)를 검사할 수 있다. 부모 DMS(126)는 소스 및 클라이언트 디바이스들(102 104)의 능력들의 설명을 포함하는 룩업 표를 또한 질의할 수 있다.
블럭(2610)에서, 부모 DMS(126)는 요구를 완료하기에 적절한 복수의 소프트웨어 구성 요소들을 참조하는 분산 토팔로지를 유도한다. 분산 토팔로지는 소스 디바이스(102)로부터 클라이언트 디바이스(104)로 데이타를 스트리밍하기 위해 포함되는 소프트웨어 구성 요소들을 비롯해서, 소스 및 클라이언트 디바이스들(102, 104)에 이미 포함되는 소프트웨어 구성 요소들을 참조할 수 있다.
블럭(2612)에서, 부모 DMS(126)는 분산 토팔로지에 의해 참조되는 소프트웨어 구성 요소들을 포함하는 분산 토팔로지로부터 분산 소프트웨어 기반 구조를 구성한다. 예를 들어, 부모 DMS(126)는 해결된 분산 토팔로지에 기초해서 분산 소프트웨어 기반 구조를 구성하기 위한 추가 소프트웨어 구성 요소를 제공할 수 있다. 그러므로, 부모 DMS(126)는 분산 토팔로지에 의해 참조되는 소프트웨어 구성 요소들을 공급하기 위한 계획으로서 분산 토팔로지를 사용한다. 블럭(2614)에서, 소스 디바이스(102)는 분산 소프트웨어 기반 구조를 사용해서 통신망을 통해 클라이언트 디바이스(104)로 데이타를 스트리밍한다. 블럭(2616)에서, 클라이언트 디바이스(104)는 데이타를 랜더링한다.
<운영 환경의 예>
본 명세서에서 기술된 다양한 구성 요소들 및 기능이 다수의 개인 컴퓨터들로 구현된다. 도27은, 참조 번호(2702)로 참조되는, 컴퓨터를 포함한 컴퓨터 환경(2700)의 전형적 예의 구성 요소들을 도시한다. 다양한 실시예들에서, 소스 디바이스(102), 클라이언트 디바이스(104), 및/또는 제3자 디바이스(2002)는 컴퓨터(2702)로서 구성될 수 있다. 도27에 도시된 구성 요소들은 단지 예들일 뿐이고, 본 발명의 기능의 범위에 대해 어떤 제한을 제안하기 위해 의도되지 않았다. 본 발명은 도27에 도시된 특징들에 의존할 필요는 없다.
일반적으로, 다양한 서로 다른 일반 목적 혹은 특수 목적 컴퓨팅 시스템 구성들이 사용될 수 있다. 본 발명과 함께 사용하기에 적절할 수 있는 잘 알려진 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들은, 개인 컴퓨터들, 서버 컴퓨터들, 핸드 핼드 혹은 랩탑 컴퓨터들, 멀티 프로세서 시스템들, 마이크로프로세서 기반 시스템들, 셋탑 박스들, 프로그램 가능한 소비자 전자 제품들, 통신망 PC들, 통신망-준비된 디바이스들, 미니 컴퓨터들, 메인프래임 컴퓨터들, 위의 시스템들 및 디바이스들 중의 임의의 것, 및 기타를 포함하는 분산 컴퓨팅 환경들을, 하지만 거기에 국한되지 않고, 포함한다.
컴퓨터들의 기능은 컴퓨터들에 의해 실행되는, 소프트웨어 구성 요소들과 같은, 컴퓨터 실행 가능 명령들에 의해 많은 경우들에서 구현된다. 일반적으로, 소프트웨어 구성 요소들은 특정 작업들을 수행하거나 특정 추상 데이타 타입들을 구현하는 루틴들, 프로그램들, 객체들, 구성 요소들, 데이타 구조들, 기타를 포함한다. 작업들은 통신망을 통해 링크되는 원격 처리 디바이스들에 의해 또한 수행될 수 있다. 분산 컴퓨팅 환경에서, 소프트웨어 구성 요소들은 로컬 및 원격 컴퓨터 저장 미디어들에 위치될 수 있다.
명령들 및/또는 소프트웨어 구성 요소들은 컴퓨터의 일부이거나 혹은 컴퓨터에 의해 판독될 수 있는다양한 컴퓨터 판독 가능 미디어들에서 다른 시간들에 저장된다. 프로그램들은, 예를 들어, 플로피 디스크들, CD-ROM들, DVD, 혹은 변조 신호와 같은 통신 미디어들의 어떤 형태로 전형적으로 분산된다. 거기서, 그들은 컴퓨터의 제2 메모리에 설치되거나 로딩된다. 실행에서, 그들은 컴퓨터의 제1 전자 메모리에 적어도 부분적으로 로딩된다.
설명 목적에서, 프로그램들 및, 운영 체제와 같은, 기타 실행 가능 프로그램 구성 요소들은, 그런 프로그램들 및 구성 요소들은 컴퓨터의 서로 다른 저장 구성 요소들에 다른 시간에 상주하고 컴퓨터의 데이타 처리기(들)에 의해 실행됨이 인식되지만, 본 명세서에서 분리된 블럭들로서 설명된다.
도27을 참조해서, 컴퓨터(2702)의 구성 요소들은 처리 장치(2704), 시스템 메모리(2706), 및 처리 장치(2704)로 시스템 메모리를 포함하는 다양한 시스템 구성 요소들을 연결하는 시스템 버스(2708)를, 하지만 거기에 국한되지 않고, 포함할 수 있다. 시스템 버스(2708)는 메모리 버스 혹은 메모리 제어기, 주변 버스, 및 다양한 버스 구조들 중 임의의 것을 사용하는 로컬 버스를 포함하는 몇 개 타입들의 버스 구조들 중의 임의의 것일 수 있다. 예를 들어, 그런 구조들은 산업 표준 구조(ISA) 버스, 마이크로 채널 구조(MCA) 버스, 진보된 ISA (EISA) 버스, 비디오 전자 표준 협회(VESA) 로컬 버스, 및 메자닌 버스라고 또한 알려진 주변 기기 연결 (PCI) 버스를, 하지만 거기에 국한되지 않고, 포함한다.
컴퓨터(2702)는 전형적으로 다양한 컴퓨터 판독 가능 미디어들을 포함한다. 컴퓨터 판독 가능 미디어들은 컴퓨터(2702)에 의해 액세스될 수 있는 임의의 이용 가능 미디어들일 수 있고, 휘발성 및 비휘발성 미디어들, 분리형 및 비분리형 미디어들 모두를 포함한다. 예를 들어, 컴퓨터 판독 가능 미디어들은 컴퓨터 저장 미디어들 및 통신 미디어들을, 하지만 거기에 국한되지 않고, 포함할 수 있다. "컴퓨터 저장 미디어들"은, 컴퓨터 판독 가능 명령들, 데이타 구조들, 프로그램 모듈들, 혹은 기타 데이타와 같은 정보 저장을 위한 임의의 방법 혹은 기술에 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 미디어들을 포함한다. 컴퓨터 저장 미디어들은 RAM, ROM, EEPROM, 플래쉬 메모리 혹은 기타 메모리 기술, CD-ROM, 디지탈 다용도 디스크들 (DVDs) 혹은 기타 광 디스크 저장 장치, 자기 카세트들, 자기 테입, 자기 디스크 저장 장치 혹은 기타 자기 저장 디바이스들, 혹은 원하는 정보를 저장하기 위해 사용할 수 있고 컴퓨터(2702)에 의해 액세스될 수 있는 임의의 기타 미디어를, 하지만 거기에 국한되지 않고, 포함한다. 통신 미디어들은 전형적으로 컴퓨터 판독 가능 명령들, 데이타 구조들, 프로그램 모듈들 혹은 캐리어 웨이브 (carrier wave) 혹은 기타 운송 메카니즘과 같은 변조 데이타 신호의 기타 데이타를 구현하고, 임의의 정보 전달 미디어들을 포함한다. "변조 데이타 신호"라는 용어는 신호에서 정보 인코딩을 위한 방식으로서 그 자신의 한 개 이상의 특징들이 세트되거나 혹은 변경되는 신호를 의미한다. 예를 들어, 통신 미디어들은 유선망 혹은 직접 유선 연결과 같은 유선 미디어들, 및 음향, RF, 적외선 및 기타 무선 미디어들과 같은 무선 미디어들을, 하지만 거기에 국한되지 않고, 포함한다. 위의 것들의 임의의 조합들도 또한 컴퓨터 판독 가능 미디어들의 범위 내에 포함되어야 한다.
시스템 메모리(2706)는 읽기 전용 메모리 (ROM)(2710) 및 랜덤 액세스 메모리 (RAM)(2712)와 같은 휘발성 및/또는 비휘발성 메모리의 형태로 컴퓨터 저장 미디어들을 포함한다. 스타트업 (start-up) 동안과 같은 때, 컴퓨터(2702) 내의 소자들 간에 정보 전송을 돕는 기본 루틴들을 포함하는 기본 입/출력 시스템 (BIOS)(2714)은 ROM(2710)에 전형적으로 저장된다. RAM(2712)은 즉시 액세스 가능하고 그리고/또는 처리 장치(2704)에 의해 현재 동작되고 있는 데이타 및/또는 소프트웨어 구성 요소들을 전형적으로 포함한다. 예를 들어, 도27은 운영 체제(2716), 응용 프로그램들(2718), 소프트웨어 구성 요소들(2720), 및 프로그램 데이타(2722)를, 하지만 거기에 국한되지 않고, 도시한다.
컴퓨터(2702)는 기타 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 미디어들을 또한 포함할 수 있다. 예를 들어, 도27은 비분리형, 비휘발성 자기 미디어들로 읽고 쓰는 하드 디스크 드라이브(2724), 분리형, 비휘발성 자기 디스크(2728)로 읽고 쓰는 자기 디스크 드라이브(2726), 및 CD-ROM 혹은 기타 광 미디어들과 같은 분리형, 비휘발성 광 디스크(2732)로 읽고 쓰는 광 디스크 드라이브(2730)를 도시한다. 운영 환경의 예에서 사용될 수 있는 기타 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 미디어들은, 자기 테입 카세트들, 플래쉬 메모리 카드들, 디지탈 다용도 디스크들, 디지탈 비디오 테입들, 반도체 RAM, 반도체 ROM, 및 기타를, 하지만 거기에 국한되지 않고, 포함한다. 하드 디스크 드라이브(2724)는 전형적으로 데이타 미디어 인터페이스(2734)와 같은 비분리형 메모리 인터페이스를 통해 시스 템 버스(2708)로 연결되고, 자기 디스크 드라이브(2726)와 광 디스크 드라이브(2730)는 전형적으로 분리형 메모리 인터페이스에 의해 시스템 버스(2708)로 연결된다.
위에 논의되고 도27에 도시된 드라이브들 및 그들과 연계된 컴퓨터 저장 미디어들은, 컴퓨터 판독 가능 명령들, 데이타 구조들, 소프트웨어 구성 요소들, 및 컴퓨터(2702)를 위한 기타 데이타를 제공한다. 도27에서, 예를 들어, 하드 디스크 드라이브(2724)는 운영 체제(2716'), 응용 프로그램들(2718'), 소프트웨어 구성 요소들(2720'), 및 프로그램 데이타(2722')를 저장하는 것으로서 도시된다. 이러한 구성 요소들은 운영 체제(2716), 응용 프로그램들(2718), 소프트웨어 구성 요소들(2720), 및 프로그램 데이타(2722)와 동일하거나 혹은 상이할 수 있다. 운영 체제(2716'), 응용 프로그램들(2718'), 소프트웨어 구성 요소들(2720'), 및 프로그램 데이타(2722')는 적어도 그들이 다른 복사본들임을 설명하기 위해 다른 숫자들이 주어진다. 사용자는 키보드(2736) 및, 일반적으로 마우스, 트랙볼, 혹은 터치 패드라고 참조되는, 포인팅 디바이스 (도시 안됨)와 같은 입력 디바이스들을 통해 컴퓨터(2702)로 명령들 및 정보를 입력할 수 있다. 기타 입력 장치들은 소스 주변 디바이스들 (데이타 스트리밍을 제공하는 마이크로폰(2738) 혹은 카메라(2740)와 같은), 조이스틱, 게임 패드, 위성 접시, 스캐너, 혹은 기타를 포함할 수 있다. 이런 그리고 기타 입력 디바이스들은 시스템 버스로 연결되는 입/출력 (I/O) 인터페이스(2742)를 통해 처리 장치(2702)로 종종 연결되지만, 병렬 포트, 게임 포트, 혹은 범용 직렬 버스(USB)와 같은 기타 인터페이스 및 버스 구조들에 의해 연결될 수 있다. 모니터(2744) 혹은 기타 타입의 디스플래이 디바이스는 비디오 어뎁터(2746)와 같은 인터페이스를 통해 시스템 버스(2708)로 또한 연결된다. 모니터(2744)에 추가해서, 컴퓨터들은 I/O 인터페이스(2742)를 통해 연결될 수 있는 기타 주변 랜더링 디바이스들 (예를 들어, 스피커들) 및 한 개 이상의 프린터들(2748)을 또한 포함할 수 있다.
컴퓨터는 원격 디바이스(2750)와 같은 한 개 이상의 원격 컴퓨터들로의 논리 연결들을 사용하는 통신망 환경에서 동작될 수 있다. 원격 디바이스(2750)는 개인 컴퓨터, 통신망-준비된 디바이스, 서버, 라우터, 통신망 PC, 피어 (peer) 디바이스 혹은 기타 범용 통신망 노드일 수 있고, 전형적으로 컴퓨터(2702)에 관련해서 위에서 기술된 다수 혹은 전체 소자들을 포함한다. 도27에 도시된 논리 연결들은 구내 통신망 (LAN)(2752) 및 광역 통신망 (WAN)(2754)을 포함한다. 도27에 도시된 WAN(2754)은 인터넷이지만, WAN(2754)은 기타 통신망들을 또한 포함할 수 있다. 그런 통신망 환경들은 사무실들, 기업전반 컴퓨터망들, 인트라넷들, 및 기타에서 일반적이다.
LAN 통신망 환경에서 사용될 때, 컴퓨터(2702)는 통신망 인터페이스 혹은 어뎁터(2756)를 통해 LAN(2752)로 연결된다. WAN 통신망 환경에서 사용될 때, 컴퓨터(2702)는 전형적으로 인터넷(2754)를 통해 통신을 개통하기 위해 모뎀(2758) 혹은 기타 수단을 포함한다. 외장 혹은 내장일 수 있는 모뎀(2758)은 I/O 인터페이스(2742) 혹은 기타 적절한 메카니즘을 통해 시스템 버스(2708)로 연결될 수 있다. 통신망 환경에서, 컴퓨터(2702)와 연관해서 도시된 프로그램 모듈들은, 혹은 그들 의 일부, 원격 디바이스(2750)에 저장될 수 있다. 예를 들어, 도27은 원격 디바이스(2750)에 상주하는 것으로 원격 소프트웨어 구성 요소들(2760)을, 하지만 거기에 국한되지 않고, 도시한다. 도시된 통신 연결들이 예들일 뿐이고, 컴퓨터들 간에 통신 링크를 개통하는 기타 수단이 사용될 수 있다.
<결론>
본 발명은 구조적 특징들 및/또는 방법적 동작들에 대한 특정 언어로 기술되었지만, 첨부된 청구항들에서 정의된 본 발명은 기술된 특정 특징들 혹은 동작들로 제한될 필요가 없음이 이해되어야 한다. 대신, 특정 특징들 및 동작들은 청구된 발명을 구현하는 예시적 형태들로서 개시된다.

Claims (52)

  1. 통신망을 통해 소스 디바이스로부터 클라이언트 디바이스로 데이타가 스트리밍되는 것을 요구하는 단계; 및
    상기 요구로부터 분산 토팔로지를 해결 (resolving)하는 단계를 포함하고,
    상기 분산 토팔로지가, 실행되었을 때, 상기 요구를 수행하는 복수의 소프트웨어 구성 요소들을 참조하고,
    상기 복수의 소프트웨어 구성 요소들 중의 적어도 한 개는,
    상기 소스 디바이스; 및
    상기 클라이언트 디바이스
    의 각각에서 실행할 수 있는
    방법.
  2. 제1항에 있어서, 상기 해결 단계는,
    데이타 스트림을 랜더링하기 위해 상기 클라이언트 디바이스의 상기 능력들을 발견하는 단계;
    랜더링되는 데이타를 스트리밍하기 위해 상기 소스 디바이스의 상기 능력들을 발견하는 단계; 및
    상기 능력들 모두로부터 상기 분산 토팔로지를 유도하는 단계
    를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 분산 토팔로지는,
    원격 씽크 (sink) 분산 토팔로지;
    원격 소스 분산 토팔로지; 및
    제3자 분산 토팔로지
    로 구성되는 상기 그룹으로부터 선택되는 방법.
  4. 제1항에 있어서, 상기 분산 토팔로지로부터 분산 소프트웨어 기반 구조를 구성하는 것을 더 포함하고, 상기 분산 소프트웨어 기반 구조는 상기 복수의 소프트웨어 구성 요소들을 포함하는 방법.
  5. 제1항에 있어서, 상기 분산 소프트웨어 기반 구조는 상기 데이타가 스트리밍되기 전에 상기 소스 디바이스와 상기 데이타를 랜더링하지 않고 상기 소스 디바이스로부터 상기 클라이언트 디바이스로 데이타를 스트리밍하기 위해 구성되도록, 최적화된 분산 토팔로지로부터 상기 분산 소프트웨어 기반 구조를 구성하는 단계를 더 포함하는 방법.
  6. 제1항에 있어서,
    상기 요구는 추가 소스 디바이스로부터 상기 클라이언트 디바이스로 데이타를 스트리밍하는 단계를 또한 요구하고,
    상기 해결 단계는, 실행되었을 때, 복수의 소프트웨어 구성 요소들이 상기 소스 디바이스 및 상기 추가 소스 디바이스의 각각으로부터 상기 클라이언트 디바이스로 데이타를 스트리밍하기 위해 상기 요구를 수행하도록, 상기 분산 토팔로지를 해결하는 방법.
  7. 제1항에 있어서,
    상기 요구는 상기 소스 디바이스로부터 추가 클라이언트 디바이스로 데이타를 스트리밍하는 단계를 또한 요구하고,
    상기 해결 단계는, 실행되었을 때, 상기 복수의 소프트웨어 구성 요소들이 상기 소스 디바이스로부터 상기 클라이언트 디바이스 및 상기 추가 클라이언트 디바이스의 각각으로 데이타를 스트리밍하기 위해 상기 요구를 수행하도록, 상기 분산 토팔로지를 해결하는 방법.
  8. 제1항에 있어서, 상기 분산 소프트웨어 기반 구조는 제어를 위해 중앙집중 메카니즘을 제공하는 분산 미디어 세션을 포함하고,
    상기 소스 디바이스에서 실행 가능한 상기 적어도 한 개의 소프트웨어 구성 요소가 상기 분산 미디어 세션에 의해 제어될 수 있고,
    상기 클라이언트 디바이스에서 실행 가능한 상기 적어도 한 개 소프트웨어 구성 요소는 상기 분산 미디어 세션에 의해 제어할 수 있는
    방법.
  9. 제1항에 있어서, 상기 해결 단계는,
    상기 소스 디바이스;
    상기 클라이언트 디바이스; 및
    제3자 디바이스
    로 구성된 상기 그룹으로부터 선택된 디바이스에 사용자 참여 없이 실행되는 방법.
  10. 실행되었을 때, 제1항에서 기술된 바와 같이 상기 방법을 수행하는 컴퓨터 실행 가능한 명령들을 포함하는 한 개 이상의 컴퓨터 판독 가능한 매체들.
  11. 통신망을 통해 소스 디바이스로부터 클라이언트 디바이스로 데이타를 스트리밍하기 위한 요구를 수신하는 단계; 및
    상기 요구를 수행하기 위해 소프트웨어 구성 요소들을 참조하는 분산 토팔로지를 해결하는 단계 - 상기 분산 토팔로지는,
    데이타 스트림을 랜더링하기 위한 상기 클라이언트 디바이스의 능력들; 및
    랜더링되는 데이타를 스트리밍하기 위한 상기 소스 디바이스의 능력들
    로부터 해결됨 - ; 및
    상기 분산 토팔로지로부터, 상기 참조된 소프트웨어 구성 요소들을 포함하는 분산 소프트웨어 기반 구조를 구성하는 단계를 포함하고, 상기 소프트웨어 구성 요소들의 적어도 한 개는,
    상기 소스 디바이스; 및
    상기 클라이언트 디바이스
    의 각각에서 실행 가능한 방법.
  12. 제11항에 있어서, 상기 분산 토팔로지는,
    원격 씽크 분산 토팔로지;
    원격 소스 분산 토팔로지; 및
    제3자 분산 토팔로지
    로 구성되는 상기 그룹으로부터 선택되는 방법.
  13. 제11항에 있어서, 상기 해결은,
    데이타 스트림을 랜더링하는 상기 클라이언트 디바이스의 능력들을 발견하는 단계;
    랜더링되는 데이타를 스트리밍하는 상기 소스 디바이스의 상기 능력들을 발견하는 단계; 및
    상기 능력들 모두로부터 분산 토팔로지를 유도하는 단계를 포함하고, 상기 분산 토팔로지는 상기 소프트웨어 구성 요소들을 참조하는 방법.
  14. 제11항에 있어서, 상기 구성 단계는, 상기 분산 소프트웨어 기반 구조는, 상기 데이타가 스트리밍되기 전에, 상기 소스 디바이스와 상기 데이타를 랜더링하지 않고 상기 소스 디바이스로부터 상기 클라이언트 디바이스로 데이타를 스트리밍하기 위해 구성되도록, 최적화된 분산 토팔로지로부터 상기 분산 소프트웨어 기반 구조를 구성하는 단계를 더 포함하는 방법.
  15. 제11항에 있어서, 상기 분산 토팔로지는,
    상기 소스 디바이스에서 실행 가능한 상기 적어도 한 개의 소프트웨어 구성 요소는 상기 분산 미디어 세션에 의해 제어될 수 있고,
    상기 클라이언트 디바이스에서 실행 가능한 상기 적어도 한 개의 소프트웨어 구성 요소는 상기 분산 미디어 세션에 의해 제어될 수 있도록,
    제어를 위한 중앙집중 메카니즘을 제공하는 분산 미디어 세션을 참조하는 방법.
  16. 제11항에 있어서, 상기 수신 단계 및 상기 해결 단계는,
    상기 소스 디바이스;
    상기 클라이언트 디바이스; 및
    제3자 디바이스
    로 구성되는 상기 그룹으로부터 선택된 디바이스에 사용자 참여 없이 실행되는 방법.
  17. 실행되었을 때, 제11항에서 기술된 바와 같이 상기 방법을 수행하는 컴퓨터 실행 가능 명령들을 포함하는 한 개 이상의 컴퓨터 판독 가능 미디어들.
  18. 데이타 스트림을 랜더링하기 위해 클라이언트 디바이스의 상기 능력들을 발견하는 단계;
    랜더링되는 데이타를 랜더링하기 위해 소스 디바이스의 상기 능력들을 발견하는 단계; 및
    상기 능력들 모두로부터 분산 토팔로지를 유도하는 단계를 포함하고,
    상기 분산 토팔로지는 상기 요구를 수행하기 위해 복수의 소프트웨어 구성 요소들을 참조하고,
    상기 분산 토팔로지에 의해 참조되는 적어도 한 개의 상기 소프트웨어 구성 요소들은,
    상기 소스 디바이스; 및
    상기 클라이언트 디바이스
    의 각각에서 실행 가능한 방법.
  19. 제18항에 있어서, 상기 분산 토팔로지는,
    원격 씽크 분산 토팔로지;
    원격 소스 분산 토팔로지; 및
    제3자 분산 토팔로지
    로 구성된 상기 그룹으로부터 선택되는 방법.
  20. 제18항에 있어서, 상기 분산 토팔로지로부터, 상기 소프트웨어 구성 요소들을 포함하는 분산 소프트웨어 기반 구조를 구성하는 단계를 더 포함하는 방법.
  21. 제18항에 있어서,
    상기 클라이언트 디바이스의 상기 능력들의 상기 발견 단계는 데이타 스트림을 랜더링하는 소프트웨어 구성 요소를 발견하는 상기 클라이언트 디바이스를 검사하는 것을 더 포함하고,
    상기 소스 디바이스의 상기 능력들의 상기 발견 단계는 데이타를 스트리밍하는 소프트웨어 구성 요소를 발견하기 위해 상기 소스 디바이스를 검사하는 단계를 더 포함하는 방법.
  22. 제18항에 있어서, 상기 클라이언트 및 소스 디바이스들의 상기 능력들을 각각 발견하는 상기 단계는,
    상기 데이타 스트림을 랜더링하는 상기 클라이언트 디바이스의 상기 능력들; 및
    랜더링되는 데이타를 스트리밍하기 위해 상기 소스 디바이스의 상기 능력들
    을 포함하는 룩업 표 (look-up table)를 질의하는 단계를 더 포함하는 방법.
  23. 제18항에 있어서, 상기 분산 토팔로지는,
    상기 소스 디바이스에서 실행 가능한 상기 적어도 한 개의 소프트웨어 구성 요소는 상기 분산 미디어 세션에 의해 제어될 수 있고,
    상기 클라이언트 디바이스에서 실행 가능한 상기 적어도 한 개의 소프트웨어 구성 요소는 상기 분산 미디어 세션에 의해 제어될 수 있도록,
    제어를 위해 중앙집중 메카니즘을 제공하는 분산 미디어 세션을 참조하는 방법.
  24. 제18항에 있어서, 상기 수신 단계 및 상기 해결 단계는,
    상기 소스 디바이스;
    상기 클라이언트 디바이스; 및
    제3자 디바이스
    로 구성된 상기 그룹으로부터 선택된 디바이스에서 사용자 참여 없이 실행되는 방법.
  25. 실행되었을 때, 제18항에서 기술된 바와 같이 상기 방법을 수행하는 컴퓨터 실행 가능한 명령들을 포함하는 한 개이상의 컴퓨터 판독 가능 미디어들.
  26. 소스 디바이스로부터 클라이언트 디바이스로 데이타를 스트리밍하기 위한 요 구를 수신하는 단계;
    데이타 스트림을 랜더링하기 위한 상기 클라이언트 디바이스의 상기 능력들을 발견하는 단계;
    랜더링되는 데이타를 스트리밍하기 위해 상기 소스 디바이스이 상기 능력들을 발견하는 단계;
    상기 능력들 모두로부터 상기 요구를 수행하기 위해 분산 토팔로지를 유도하는 단계 - 상기 분산 토팔로지는 복수의 소프트웨어 구성 요소들을 참조함 -;
    상기 분산 토팔로지로부터 분산 소프트웨어 기반 구조를 구성하는 단계 - 상기 분산 소프트웨어 기반 구조는 상기 분산 토팔로지에 의해 참조되는 상기 소프트웨어 구성 요소들을 포함함 -;
    상기 통신망을 통해 상기 소스 디바이스로부터 상기 클라이언트 디바이스로 상기 데이타를 스트리밍하는 단계; 및
    상기 클라이언트 디바이스에 의해 상기 데이타를 랜더링하는 단계
    를 포함하는 방법.
  27. 실행되었을 때, 소스 디바이스로부터 클라이언트 디바이스로 데이타를 스트리밍하기 위한 요구를 수행하는 복수의 소프트웨어 구성 요소들을 참조하는 분산 토팔로지를 해결하는 단계; 및
    상기 분산 토팔로지로부터, 상기 소프트웨어 구성 요소들을 포함하는 분산 소프트웨어 기반 구조를 구성하는 단계를 포함하고, 상기 소프트웨어 구성 요소들 중의 적어도 한 개는,
    상기 소스 디바이스; 및
    상기 클라이언트 디바이스
    의 각각에서 실행 가능한 동작들을, 실행되었을 때, 지시하는 명령들을 갖는 소프트웨어 구성 요소를 포함하는 분산 미디어 세션.
  28. 제27항에 있어서, 상기 해결 단계는,
    데이타 스트림을 랜더링하기 위해 상기 클라이언트 디바이스의 상기 능력들을 발견하는 단계;
    랜더링되는 데이타를 스트리밍하는 상기 소스 디바이스의 상기 능력들을 발견하는 단계; 및
    상기 능력들 모두로부터 상기 분산 토팔로지를 유도하는 단계
    를 더 포함하는 분산 미디어 세션.
  29. 제27항에 있어서, 상기 분산 토팔로지는,
    원격 씽크 분산 토팔로지;
    원격 소스 분산 토팔로지; 및
    제3자 분산 토팔로지
    로 구성되는 상기 그룹으로부터 선택되는 분산 미디어 세션.
  30. 제27항에 있어서, 상기 구성 단계는 상기 분산 토팔로지에 의해 참조되는 적어도 한 개의 추가 소프트웨어 구성 요소를 공급하는 단계를 더 포함하는 분산 미디어 세션.
  31. 제27항에 있어서, 상기 해결 단계는, 상기 분산 토팔로지로부터 구성되는 상기 분산 소프트웨어 기반 구조가, 상기 데이타가 스트리밍되기 전에, 상기 소스 디바이스에 의해 상기 데이타를 랜더링하지 않고 상기 소스 디바이스로부터 상기 클라이언트 디바이스로 데이타를 스트리밍하기 위해 구성되도록, 상기 분산 토팔로지를 최적화하는 단계를 더 포함하는 분산 미디어 세션.
  32. 통신망을 통해 소스 디바이스로부터 클라이언트 디바이스로, 실행되었을 때, 데이타를 스트리밍하는 복수의 소프트웨어 구성 요소들을 참조하는 분산 토팔로지를, 사용자 참여 없이, 해결하는 단계를 포함하고, 복수의 소프트웨어 구성 요소들 중의 적어도 한 개는,
    상기 소스 디바이스; 및
    상기 클라이언트 디바이스
    의 각각에서 실행 가능한 동작들을 수행하기 위해, 실행되었을 때, 컴퓨팅 디바이스를 지시하는 컴퓨터 실행 가능 명령들을 포함하는 컴퓨터 판독 가능 매체.
  33. 제32항에 있어서, 상기 해결 단계는,
    데이타 스트림을 랜더링하기 위해 상기 클라이언트 디바이스의 상기 능력들을 발견하는 단계;
    랜더링되는 데이타를 스트리밍하기 위해 상기 소스 디바이스의 상기 능력들을 발견하는 단계;
    상기 능력들 모두로부터 상기 분산 토팔로지를 유도하는 단계
    를 더 포함하는 컴퓨터 판독 가능 매체.
  34. 제32항에 있어서, 상기 분산 토팔로지는,
    원격 씽크 분산 토팔로지;
    원격 소스 분산 토팔로지; 및
    제3자 분산 토팔로지
    로 구성되는 상기 그룹으로부터 선택되는 컴퓨터 판독 가능 매체.
  35. 제32항에 있어서,
    상기 분산 토팔로지로부터 분산 소프트웨어 기반 구조를 구성하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  36. 제32항에 있어서, 상기 분산 소프트웨어 기반 구조는, 상기 데이타가 스트리밍되기 전에, 상기 소스 디바이스와 상기 데이타를 랜더링하지 않고 상기 소스 디바이스로부터 상기 클라이언트 디바이스로 데이타를 스트리밍하기 위해 구성되도 록, 최적화된 분산 토팔로지로부터 분산 소프트웨어 기반 구조를 구성하는 단계를 더 포함하는 컴퓨터 판독 가능 매체.
  37. 컴퓨터 실행 가능 명령들을 포함하는 컴퓨터 판독 가능 매체에 있어서, 상기 명령은 실행시 컴퓨팅 디바이스가,
    데이타 스트림을 랜더링하기 위해 클라이언트 디바이스의 상기 능력들을 발견하는 단계;
    랜더링되는 데이타를 스트리밍하기 위해 소스 디바이스의 상기 능력들을 발견하는 단계;
    상기 능력들 모두로부터 분산 토팔로지를, 사용자 참여 없이, 유도하는 단계를 포함하는 동작들을 수행하도록 지시하고,
    상기 분산 토팔로지는, 실행되었을 때, 상기 소스 디바이스로부터 상기 클라이언트 디바이스로 데이타를 스트리밍하는 복수의 소프트웨어 구성 요소들을 참조하고,
    상기 분산 토팔로지에 의해 참조되는 상기 복수의 소프트웨어 구성 요소들 중의 적어도 한 개는,
    상기 소스 디바이스; 및
    상기 클라이언트 디바이스
    의 각각에서 실행 가능한 컴퓨터 판독 가능 매체.
  38. 제37항에 있어서, 상기 분산 토팔로지로부터, 상기 복수의 소프트웨어 구성 요소들을 포함하는 분산 소프트웨어 기반 구조를 구성하는 단계를 더 포함하는 컴퓨터 판독 가능 미디어.
  39. 랜더링되는 데이타를 스트리밍하기 위해 동작할 수 있는 소스 디바이스;
    데이타 스트림을 랜더링하기 위해 동작할 수 있는 클라이언트 디바이스; 및
    분산 매체 세션을 포함하고, 실행시 상기 세션은,
    통신망을 통해 상기 소스 디바이스로부터 상기 클라이언트 디바이스로 데이타를 스트리밍하는 복수의 소프트웨어 구성 요소들을 참조하는 분산 토팔로지를 해결하는 단계; 및
    상기 분산 토팔로지로부터, 상기 소프트웨어 구성 요소들을 포함하는 분산 소프트웨어 기반 구조를 구성하는 단계를 포함하는 동작들이 수행되도록 하고, 상기 소프트웨어 구성 요소들 중의 적어도 한 개는,
    상기 소스 디바이스; 및
    상기 클라이언트 디바이스
    의 각각에서 실행될 수 있는 시스템.
  40. 제39항에 있어서, 상기 소스 디바이스는,
    소스 주변 디바이스로 국지적으로 연결된 컴퓨팅 디바이스; 및
    랜더링되는 데이타를 스트리밍하기 위해 동작될 수 있는 통신망-준비된 (network-ready) 디바이스
    로 구성되는 상기 그룹으로부터 선택되는 시스템.
  41. 제39항에 있어서, 상기 클라이언트 디바이스는,
    랜더링 디바이스에 국지적으로 연결되는 컴퓨팅 디바이스; 및
    데이타 랜더링을 위해 적절한 통신망-준비된 디바이스
    로 구성되는 상기 그룹으로부터 선택되는 시스템.
  42. 제39항에 있어서, 상기 해결 단계는,
    데이타 스트림을 랜더링하기 위해 상기 클라이언트 디바이스의 상기 능력들을 발견하는 단계;
    랜더링되는 데이타를 스트리밍하기 위해 상기 소스 디바이스의 상기 능력들을 발견하는 단계; 및
    상기 능력들 모두로부터 상기 분산 토팔로지를 유도하는 단계
    를 더 포함하는 시스템.
  43. 제39항에 있어서, 상기 분산 토팔로지는,
    원격 씽크 분산 토팔로지;
    원격 소스 분산 토팔로지; 및
    제3자 분산 토팔로지
    로 구성되는 상기 그룹으로부터 선택되는 시스템.
  44. 제39항에 있어서, 상기 구성 단계는 상기 분산 토팔로지에 의해 참조되는 적어도 한 개의 소프트웨어 구성 요소를 공급하는 단계를 더 포함하는 시스템.
  45. 제39항에 있어서, 상기 구성 단계는, 상기 분산 소프트웨어 기반 구조는, 상기 데이타가 스트리밍되기 전에, 상기 소스 디바이스와 상기 데이타를 랜더링하지 않고 상기 소스 디바이스로부터 상기 클라이언트 디바이스로 데이타를 스트리밍하기 위해 구성되도록, 최적화된 분산 토팔로지로부터 상기 분산 소프트웨어 기반 구조를 구성하는 단계를 더 포함하는 시스템.
  46. 제39항에 있어서, 상기 분산 미디어 세션의 상기 실행은,
    상기 소스 디바이스;
    상기 클라이언트 디바이스; 및
    제3자 디바이스
    중의 하나에 의해 수행되는 시스템.
  47. 상기 소스 디바이스에 의해 실행되었을 때, 랜더링되는 데이타를 스트리밍하는 소프트웨어 구성 요소를 포함하는 소스 디바이스;
    상기 클라이언트 디바이스에 의해 실행되었을 때, 데이타 스트림을 랜더링하 는 소프트웨어 구성 요소를 포함하는 클라이언트 디바이스; 및
    분산 매체 세션을 포함하고, 상기 세션은,
    상기 소스 디바이스 또는 클라이언트 디바이스에 의해 실행되었을 때, 랜더링되는 데이타를 스트리밍하는 상기 소프트웨어 구성 요소; 및
    상기 클라이언트 디바이스에 의해 실행되었을 때, 데이타 스트림을 랜더링하는 상기 소프트웨어 구성 요소
    의 제어를 위한 중앙집중 메카니즘을 제공하는 시스템.
  48. 제47항에 있어서, 상기 소스 디바이스는,
    소스 주변 디바이스로 국지적으로 연결되는 컴퓨팅 디바이스; 및
    랜더링되는 데이타를 스트리밍하기 위해 동작할 수 있는 통신망-준비된 디바이스
    로 구성되는 상기 그룹으로부터 선택되는 시스템.
  49. 제47항에 있어서, 상기 클라이언트 디바이스는,
    랜더링 디바이스에 국지적으로 연결되는 컴퓨팅 디바이스; 및
    데이타 랜더링을 위해 적합한 통신망-준비된 디바이스
    로 구성되는 상기 그룹으로부터 선택되는 시스템.
  50. 통신망;
    데이타를 압축하고, 상기 압축 데이타를 랜더링하지 않고 상기 압축 데이타를 스트리밍하기 위해 구성되는 소스 디바이스; 및
    상기 통신망을 통해 상기 소스 디바이스로 통신적으로 연결되는 클라이언트 디바이스를 포함하고, 상기 클라이언트 디바이스는,
    상기 통신망을 통해 상기 소스 디바이스로부터 상기 스트리밍된 데이타를 수신하고,
    상기 수신된 데이타를 압축재생하고,
    상기 압축재생 데이타를 랜더링하기 위해
    구성되는 시스템.
  51. 제50항에 있어서, 상기 소스 디바이스는,
    소스 주변 디바이스로 국지적으로 연결되는 컴퓨팅 디바이스; 및
    랜더링되는 데이타를 스트리밍하기 위해 동작할 수 있는 통신망-준비된 디바이스로 구성되는 상기 그룹으로부터 선택되는 시스템.
  52. 제50항에 있어서, 상기 클라이언트 디바이스는,
    랜더링 디바이스에 국지적으로 연결되는 컴퓨팅 디바이스; 및
    데이타 랜더링을 위해 적절한 통신망-준비된 디바이스
    로 구성되는 상기 그룹으로부터 선택되는 시스템.
KR1020047010341A 2003-07-11 2003-08-20 데이타를 스트리밍하기 위한 분산 토팔로지의 해결 KR20060059334A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/618,335 US7613767B2 (en) 2003-07-11 2003-07-11 Resolving a distributed topology to stream data
US10/618,335 2003-07-11

Publications (1)

Publication Number Publication Date
KR20060059334A true KR20060059334A (ko) 2006-06-01

Family

ID=34062426

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047010341A KR20060059334A (ko) 2003-07-11 2003-08-20 데이타를 스트리밍하기 위한 분산 토팔로지의 해결

Country Status (12)

Country Link
US (1) US7613767B2 (ko)
EP (1) EP1661009A4 (ko)
JP (1) JP2007521526A (ko)
KR (1) KR20060059334A (ko)
CN (1) CN1669015B (ko)
BR (1) BR0306630A (ko)
CA (1) CA2468461A1 (ko)
MX (1) MXPA04006407A (ko)
RU (1) RU2332706C2 (ko)
TW (1) TW200502784A (ko)
WO (1) WO2005015424A1 (ko)
ZA (1) ZA200404021B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100734628B1 (ko) * 2005-09-29 2007-07-03 한국전자통신연구원 분산 소프트웨어 스트리밍 서비스 방법 및 시스템
US9065762B2 (en) 2011-04-28 2015-06-23 Samsung Electronics Co., Ltd. Method and apparatus for controlling load shedding in data stream management system

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7555540B2 (en) * 2003-06-25 2009-06-30 Microsoft Corporation Media foundation media processor
US8290603B1 (en) 2004-06-05 2012-10-16 Sonos, Inc. User interfaces for controlling and manipulating groupings in a multi-zone media system
US10613817B2 (en) 2003-07-28 2020-04-07 Sonos, Inc. Method and apparatus for displaying a list of tracks scheduled for playback by a synchrony group
US8086752B2 (en) * 2006-11-22 2011-12-27 Sonos, Inc. Systems and methods for synchronizing operations among a plurality of independently clocked digital data processing devices that independently source digital data
US11106425B2 (en) 2003-07-28 2021-08-31 Sonos, Inc. Synchronizing operations among a plurality of independently clocked digital data processing devices
US11294618B2 (en) 2003-07-28 2022-04-05 Sonos, Inc. Media player system
US8234395B2 (en) 2003-07-28 2012-07-31 Sonos, Inc. System and method for synchronizing operations among a plurality of independently clocked digital data processing devices
US11650784B2 (en) 2003-07-28 2023-05-16 Sonos, Inc. Adjusting volume levels
US11106424B2 (en) 2003-07-28 2021-08-31 Sonos, Inc. Synchronizing operations among a plurality of independently clocked digital data processing devices
US9977561B2 (en) 2004-04-01 2018-05-22 Sonos, Inc. Systems, methods, apparatus, and articles of manufacture to provide guest access
US9374607B2 (en) 2012-06-26 2016-06-21 Sonos, Inc. Media playback system with guest access
US8326951B1 (en) 2004-06-05 2012-12-04 Sonos, Inc. Establishing a secure wireless network with minimum human intervention
US8868698B2 (en) 2004-06-05 2014-10-21 Sonos, Inc. Establishing a secure wireless network with minimum human intervention
JP4519736B2 (ja) * 2004-09-15 2010-08-04 株式会社東芝 データ伝送システム、データ伝送方法およびメディア装置
US7827554B2 (en) * 2005-06-20 2010-11-02 Microsoft Corporation Multi-thread multimedia processing
US8788080B1 (en) 2006-09-12 2014-07-22 Sonos, Inc. Multi-channel pairing in a media system
US9202509B2 (en) 2006-09-12 2015-12-01 Sonos, Inc. Controlling and grouping in a multi-zone media system
US8483853B1 (en) 2006-09-12 2013-07-09 Sonos, Inc. Controlling and manipulating groupings in a multi-zone media system
US8433812B2 (en) * 2008-04-01 2013-04-30 Microsoft Corporation Systems and methods for managing multimedia operations in remote sessions
US8645559B2 (en) * 2008-09-22 2014-02-04 Microsoft Corporation Redirection of multiple remote devices
BRPI0920478B1 (pt) * 2009-01-29 2020-03-17 Hewlett - Packard Development Company, L.P. Método para uso em um arranjo de rede, computador remetente e meio de armazenagem legível por computador não-transitório
US11429343B2 (en) 2011-01-25 2022-08-30 Sonos, Inc. Stereo playback configuration and control
US11265652B2 (en) 2011-01-25 2022-03-01 Sonos, Inc. Playback device pairing
US9729115B2 (en) 2012-04-27 2017-08-08 Sonos, Inc. Intelligently increasing the sound level of player
US9008330B2 (en) 2012-09-28 2015-04-14 Sonos, Inc. Crossover frequency adjustments for audio speakers
US9510055B2 (en) 2013-01-23 2016-11-29 Sonos, Inc. System and method for a media experience social interface
RU2547627C2 (ru) * 2013-06-24 2015-04-10 Государственное казенное образовательное учреждение высшего профессионального образования Академия Федеральной службы охраны Российской Федерации (Академия ФСО России) Способ структурно-функционального синтеза защищенной иерархической сети связи
US9300647B2 (en) 2014-01-15 2016-03-29 Sonos, Inc. Software application and zones
US20150220498A1 (en) 2014-02-05 2015-08-06 Sonos, Inc. Remote Creation of a Playback Queue for a Future Event
US9226073B2 (en) 2014-02-06 2015-12-29 Sonos, Inc. Audio output balancing during synchronized playback
US9226087B2 (en) 2014-02-06 2015-12-29 Sonos, Inc. Audio output balancing during synchronized playback
US9679054B2 (en) 2014-03-05 2017-06-13 Sonos, Inc. Webpage media playback
US10587693B2 (en) 2014-04-01 2020-03-10 Sonos, Inc. Mirrored queues
US20150324552A1 (en) 2014-05-12 2015-11-12 Sonos, Inc. Share Restriction for Media Items
US20150356084A1 (en) 2014-06-05 2015-12-10 Sonos, Inc. Social Queue
US9671997B2 (en) * 2014-07-23 2017-06-06 Sonos, Inc. Zone grouping
US9874997B2 (en) 2014-08-08 2018-01-23 Sonos, Inc. Social playback queues
EP3114625A1 (en) 2014-09-24 2017-01-11 Sonos, Inc. Social media connection recommendations based on playback information
US10645130B2 (en) 2014-09-24 2020-05-05 Sonos, Inc. Playback updates
US9690540B2 (en) 2014-09-24 2017-06-27 Sonos, Inc. Social media queue
US9723038B2 (en) 2014-09-24 2017-08-01 Sonos, Inc. Social media connection recommendations based on playback information
US9959087B2 (en) 2014-09-24 2018-05-01 Sonos, Inc. Media item context from social media
US9860286B2 (en) 2014-09-24 2018-01-02 Sonos, Inc. Associating a captured image with a media item
US9667679B2 (en) 2014-09-24 2017-05-30 Sonos, Inc. Indicating an association between a social-media account and a media playback system
US10248376B2 (en) * 2015-06-11 2019-04-02 Sonos, Inc. Multiple groupings in a playback system
US10200246B1 (en) * 2015-09-01 2019-02-05 Vmware, Inc. Importing parameters from nested information-technology blueprints
US10303422B1 (en) 2016-01-05 2019-05-28 Sonos, Inc. Multiple-device setup
US9886234B2 (en) 2016-01-28 2018-02-06 Sonos, Inc. Systems and methods of distributing audio to one or more playback devices
CN106549823A (zh) * 2016-09-21 2017-03-29 南京途牛科技有限公司 一种分布式实时流计算系统
US10712997B2 (en) 2016-10-17 2020-07-14 Sonos, Inc. Room association based on name
RU174148U1 (ru) * 2017-06-14 2017-10-04 Федеральное государственное учреждение "Федеральный исследовательский центр "Информатика и управление" Российской Академии Наук" Технологическая платформа интеграции информационных ресурсов системы межведомственного электронного взаимодействия

Family Cites Families (132)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2797404B2 (ja) * 1989-04-20 1998-09-17 ソニー株式会社 動画像データの記録方式
US5765011A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5528281A (en) 1991-09-27 1996-06-18 Bell Atlantic Network Services Method and system for accessing multimedia data over public switched telephone network
DE69329577T2 (de) * 1992-07-01 2001-05-31 Ericsson Telefon Ab L M Verfahren und system für implementierung-unabhängige schnittstellenspezifikation
GB2272311A (en) * 1992-11-10 1994-05-11 Ibm Call management in a collaborative working network.
US5420801A (en) * 1992-11-13 1995-05-30 International Business Machines Corporation System and method for synchronization of multimedia streams
US5604843A (en) 1992-12-23 1997-02-18 Microsoft Corporation Method and system for interfacing with a computer output device
EP0714531B1 (en) 1993-09-13 1997-06-18 Taligent, Inc. Object-oriented video system
US6279029B1 (en) * 1993-10-12 2001-08-21 Intel Corporation Server/client architecture and method for multicasting on a computer network
US5574934A (en) * 1993-11-24 1996-11-12 Intel Corporation Preemptive priority-based transmission of signals using virtual channels
US5577258A (en) * 1994-07-13 1996-11-19 Bell Communications Research, Inc. Apparatus and method for preprocessing multimedia presentations to generate a delivery schedule
US5675752A (en) * 1994-09-15 1997-10-07 Sony Corporation Interactive applications generator for an interactive presentation environment
US6976266B1 (en) 1994-12-23 2005-12-13 Thomson Licensing S.A. Apparatus and method for processing a program guide in a digital video system
US5786814A (en) * 1995-11-03 1998-07-28 Xerox Corporation Computer controlled display system activities using correlated graphical and timeline interfaces for controlling replay of temporal data representing collaborative activities
WO1997018637A2 (en) * 1995-11-15 1997-05-22 Cabletron Systems, Inc. Distributed connection-oriented services for switched communications networks
IL117133A (en) * 1996-02-14 1999-07-14 Olivr Corp Ltd Method and system for providing on-line virtual reality movies
US6343313B1 (en) * 1996-03-26 2002-01-29 Pixion, Inc. Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability
US6044408A (en) * 1996-04-25 2000-03-28 Microsoft Corporation Multimedia device interface for retrieving and exploiting software and hardware capabilities
CA2183280C (en) 1996-08-14 2009-04-14 Rob Menard Centralized broadcast channel real-time search system
US5887139A (en) * 1996-08-19 1999-03-23 3Com Corporation Configurable graphical user interface useful in managing devices connected to a network
US5764965A (en) 1996-09-23 1998-06-09 Silicon Graphics, Inc. Synchronization infrastructure for use in a computer system
US5878431A (en) * 1996-10-04 1999-03-02 Hewlett-Packard Company Method and apparatus for providing topology based enterprise management services
US6263486B1 (en) * 1996-11-22 2001-07-17 International Business Machines Corp. Method and system for dynamic connections with intelligent default events and actions in an application development environment
US6262776B1 (en) * 1996-12-13 2001-07-17 Microsoft Corporation System and method for maintaining synchronization between audio and video
US5995512A (en) 1997-01-17 1999-11-30 Delco Electronics Corporation High speed multimedia data network
US6014706A (en) * 1997-01-30 2000-01-11 Microsoft Corporation Methods and apparatus for implementing control functions in a streamed video display system
US6823225B1 (en) 1997-02-12 2004-11-23 Im Networks, Inc. Apparatus for distributing and playing audio information
US5892767A (en) * 1997-03-11 1999-04-06 Selsius Systems Inc. Systems and method for multicasting a video stream and communications network employing the same
US6192354B1 (en) * 1997-03-21 2001-02-20 International Business Machines Corporation Apparatus and method for optimizing the performance of computer tasks using multiple intelligent agents having varied degrees of domain knowledge
US6546426B1 (en) * 1997-03-21 2003-04-08 International Business Machines Corporation Method and apparatus for efficiently processing an audio and video data stream
US6209041B1 (en) * 1997-04-04 2001-03-27 Microsoft Corporation Method and computer program product for reducing inter-buffer data transfers between separate processing components
US5815689A (en) 1997-04-04 1998-09-29 Microsoft Corporation Method and computer program product for synchronizing the processing of multiple data streams and matching disparate processing rates using a standardized clock mechanism
JP3063721B2 (ja) * 1997-04-30 2000-07-12 日本電気株式会社 トポロジー情報交換装置及びプログラムを記録した機械読み取り可能な記録媒体
US5886274A (en) 1997-07-11 1999-03-23 Seer Systems, Inc. System and method for generating, distributing, storing and performing musical work files
US6317131B2 (en) * 1997-07-15 2001-11-13 At&T Corp. Interaction modalities for multimedia delivery and presentation using nodes
US6594699B1 (en) * 1997-10-10 2003-07-15 Kasenna, Inc. System for capability based multimedia streaming over a network
US5996015A (en) * 1997-10-31 1999-11-30 International Business Machines Corporation Method of delivering seamless and continuous presentation of multimedia data files to a target device by assembling and concatenating multimedia segments in memory
US6308216B1 (en) * 1997-11-14 2001-10-23 International Business Machines Corporation Service request routing using quality-of-service data and network resource information
US5987628A (en) 1997-11-26 1999-11-16 Intel Corporation Method and apparatus for automatically correcting errors detected in a memory subsystem
US6038625A (en) * 1998-01-06 2000-03-14 Sony Corporation Of Japan Method and system for providing a device identification mechanism within a consumer audio/video network
US6411628B1 (en) * 1998-02-02 2002-06-25 Intel Corporation Distributed arbitration on a full duplex bus
US6178172B1 (en) * 1998-03-24 2001-01-23 3Com Corporation Method of topology database synchronization in an asynchronous transfer mode network
US6266053B1 (en) * 1998-04-03 2001-07-24 Synapix, Inc. Time inheritance scene graph for representation of media content
KR100607215B1 (ko) * 1998-05-07 2006-08-01 삼성전자주식회사 네트워크에서 사용자와 디바이스 명령 및 제어 방법 및 장치
US6347079B1 (en) * 1998-05-08 2002-02-12 Nortel Networks Limited Apparatus and methods for path identification in a communication network
US6549932B1 (en) * 1998-06-03 2003-04-15 International Business Machines Corporation System, method and computer program product for discovery in a distributed computing environment
US6243753B1 (en) * 1998-06-12 2001-06-05 Microsoft Corporation Method, system, and computer program product for creating a raw data channel form an integrating component to a series of kernel mode filters
KR20010034920A (ko) * 1998-06-26 2001-04-25 매클린토크 샤운 엘 엠펙-4 비디오 프로그램을 작성하고 표현하기 위한 단말기
US6321252B1 (en) * 1998-07-17 2001-11-20 International Business Machines Corporation System and method for data streaming and synchronization in multimedia groupware applications
GB2340361B (en) * 1998-07-31 2002-11-06 Sony Uk Ltd Digital video processing
US6668291B1 (en) * 1998-09-09 2003-12-23 Microsoft Corporation Non-blocking concurrent queues with direct node access by threads
US6185612B1 (en) * 1998-10-29 2001-02-06 Novell, Inc. Secure distribution and use of weighted network topology information
US6625643B1 (en) * 1998-11-13 2003-09-23 Akamai Technologies, Inc. System and method for resource management on a data network
US7047554B1 (en) 1998-12-09 2006-05-16 Intel Corporation System and method for integrating and controlling audio/video devices
US6430526B1 (en) 1998-12-22 2002-08-06 Intel Corporation Computer processable interconnect topology
US6691312B1 (en) * 1999-03-19 2004-02-10 University Of Massachusetts Multicasting video
US6470378B1 (en) * 1999-03-31 2002-10-22 Intel Corporation Dynamic content customization in a clientserver environment
US6820144B2 (en) 1999-04-06 2004-11-16 Microsoft Corporation Data format for a streaming information appliance
US6539163B1 (en) 1999-04-16 2003-03-25 Avid Technology, Inc. Non-linear editing system and method employing reference clips in edit sequences
US6658477B1 (en) * 1999-05-12 2003-12-02 Microsoft Corporation Improving the control of streaming data through multiple processing modules
US6369835B1 (en) * 1999-05-18 2002-04-09 Microsoft Corporation Method and system for generating a movie file from a slide show presentation
US6581102B1 (en) * 1999-05-27 2003-06-17 International Business Machines Corporation System and method for integrating arbitrary isochronous processing algorithms in general media processing systems
EP1065589A1 (en) * 1999-06-28 2001-01-03 Lucent Technologies Inc. Multimedia processing system architecture
US6684331B1 (en) * 1999-12-22 2004-01-27 Cisco Technology, Inc. Method and apparatus for distributing and updating group controllers over a wide area network using a tree structure
US6594773B1 (en) * 1999-11-12 2003-07-15 Microsoft Corporation Adaptive control of streaming data in a graph
KR100679809B1 (ko) * 1999-12-28 2007-02-07 주식회사 케이티 분산객체간 통신장치 및 방법
US20040220926A1 (en) * 2000-01-03 2004-11-04 Interactual Technologies, Inc., A California Cpr[P Personalization services for entities from multiple sources
EP1117240A1 (fr) 2000-01-14 2001-07-18 TRT Lucent Technologies (SA) Procédé de gestion des ressources d'une plate-forme multimédia et plate-forme multimédia pour la mise en oeuvre de ce procédé.
US6389467B1 (en) 2000-01-24 2002-05-14 Friskit, Inc. Streaming media search and continuous playback system of media resources located by multiple network addresses
WO2001061939A2 (en) * 2000-02-18 2001-08-23 Bridgeco Ag Multi-portal bridge for providing network connectivity
US6725274B1 (en) * 2000-03-29 2004-04-20 Bycast Inc. Fail-safe system for distributing streaming media having a dynamically reconfigurable hierarchy of ring or mesh topologies
US7725812B1 (en) 2000-03-31 2010-05-25 Avid Technology, Inc. Authoring system for combining temporal and nontemporal digital media
US7415537B1 (en) * 2000-04-07 2008-08-19 International Business Machines Corporation Conversational portal for providing conversational browsing and multimedia broadcast on demand
US6618752B1 (en) * 2000-04-18 2003-09-09 International Business Machines Corporation Software and method for multicasting on a network
US6802019B1 (en) 2000-06-15 2004-10-05 Genesys Conferencing, Ltd. Method and system for synchronizing data
CA2413434A1 (en) * 2000-06-26 2002-01-03 International Business Machines Corporation Data management application programming interface for a parallel file system
US20020051017A1 (en) * 2000-07-13 2002-05-02 Clayton Wishoff Notification device for a graphical user environment
US7031288B2 (en) * 2000-09-12 2006-04-18 Sri International Reduced-overhead protocol for discovering new neighbor nodes and detecting the loss of existing neighbor nodes in a network
US6920181B1 (en) 2000-09-19 2005-07-19 Todd Porter Method for synchronizing audio and video streams
WO2002067483A2 (en) * 2000-10-27 2002-08-29 Softconnex Technologies Automatic embedded host configuration system and method
US7124424B2 (en) 2000-11-27 2006-10-17 Sedna Patent Services, Llc Method and apparatus for providing interactive program guide (IPG) and video-on-demand (VOD) user interfaces
US7206854B2 (en) 2000-12-11 2007-04-17 General Instrument Corporation Seamless arbitrary data insertion for streaming media
ATE434903T1 (de) * 2000-12-22 2009-07-15 Nokia Corp Verfahren und system für den aufbau einer multimedia verbindung durch austausch der übertragungskapazitäten in einem ausserband- signalisierungskanal
US7191244B2 (en) * 2001-01-19 2007-03-13 Streamworks Technologies, Inc. System and method for routing media
US6975752B2 (en) 2001-01-31 2005-12-13 General Electric Company Imaging system including detector framing node
US20030028643A1 (en) * 2001-03-13 2003-02-06 Dilithium Networks, Inc. Method and apparatus for transcoding video and speech signals
US20020158897A1 (en) * 2001-04-30 2002-10-31 Besaw Lawrence M. System for displaying topology map information through the web
US6968538B2 (en) 2001-06-01 2005-11-22 Symyx Technologies, Inc. System and methods for integration of custom classes into pre-existing objects models
US7366754B2 (en) * 2001-06-29 2008-04-29 Thomson Licensing Multi-media jitter removal in an asynchronous digital home network
US6757735B2 (en) * 2001-07-03 2004-06-29 Hewlett-Packard Development Company, L.P. Method for distributing multiple description streams on servers in fixed and mobile streaming media systems
KR20040028638A (ko) * 2001-07-30 2004-04-03 소니 가부시끼 가이샤 무선 통신 시스템, 무선 통신 제어 장치 및 무선 통신제어 방법, 기억 매체, 및 컴퓨터 프로그램
WO2003025929A1 (en) * 2001-09-14 2003-03-27 Seagate Technology Plc Prioritizing commands in a data storage device
US7076564B2 (en) * 2001-09-17 2006-07-11 Micromuse Ltd. Method and apparatus for determining and resolving missing topology features of a network for improved topology accuracy
US6980979B2 (en) * 2001-09-19 2005-12-27 Sun Microsystems, Inc. Method and apparatus for customizing Java API implementations
EP1436686A4 (en) * 2001-09-20 2005-09-21 Ucentric Holdings Inc CENTRALIZED RESOURCE MANAGER WITH PASSIVE DETECTION SYSTEM
US7432940B2 (en) 2001-10-12 2008-10-07 Canon Kabushiki Kaisha Interactive animation of sprites in a video production
US20050204337A1 (en) 2003-12-31 2005-09-15 Automatic E-Learning Llc System for developing an electronic presentation
US20030110234A1 (en) * 2001-11-08 2003-06-12 Lightsurf Technologies, Inc. System and methodology for delivering media to multiple disparate client devices based on their capabilities
US7171444B2 (en) 2001-11-14 2007-01-30 Sharp Laboratories Of America, Inc. Remote desktop protocol compression system
US20030101253A1 (en) * 2001-11-29 2003-05-29 Takayuki Saito Method and system for distributing data in a network
US7260722B2 (en) * 2001-12-28 2007-08-21 Itt Manufacturing Enterprises, Inc. Digital multimedia watermarking for source identification
US7634531B2 (en) 2002-01-23 2009-12-15 Ali Abdolsalehi Interactive internet browser based media broadcast
US7415026B2 (en) * 2002-02-04 2008-08-19 Qualcomm Incorporated Method and apparatus for session release in a communication system
US7376695B2 (en) * 2002-03-14 2008-05-20 Citrix Systems, Inc. Method and system for generating a graphical display for a remote terminal session
AUPS127702A0 (en) * 2002-03-21 2002-05-02 Canon Kabushiki Kaisha Dual mode timeline interface
US7024483B2 (en) * 2002-04-29 2006-04-04 Sun Microsystems, Inc. System and method for topology manager employing finite state automata for dynamic cluster formation
US7139925B2 (en) 2002-04-29 2006-11-21 Sun Microsystems, Inc. System and method for dynamic cluster adjustment to node failures in a distributed data system
US7035858B2 (en) 2002-04-29 2006-04-25 Sun Microsystems, Inc. System and method dynamic cluster membership in a distributed data system
US7899915B2 (en) * 2002-05-10 2011-03-01 Richard Reisman Method and apparatus for browsing using multiple coordinated device sets
CA2481029A1 (en) * 2002-05-14 2003-11-27 Akamai Technologies, Inc. Enterprise content delivery network having a central controller for coordinating a set of content servers
US20030236892A1 (en) * 2002-05-31 2003-12-25 Stephane Coulombe System for adaptation of SIP messages based on recipient's terminal capabilities and preferences
US7155109B2 (en) * 2002-06-14 2006-12-26 Microsoft Corporation Programmable video recorder having flexible trick play
US7725557B2 (en) * 2002-06-24 2010-05-25 Microsoft Corporation Client-side caching of streaming media content
US20040001106A1 (en) * 2002-06-26 2004-01-01 John Deutscher System and process for creating an interactive presentation employing multi-media components
US7246318B2 (en) * 2002-06-28 2007-07-17 Microsoft Corporation Application programming interface for utilizing multimedia data
US7290057B2 (en) 2002-08-20 2007-10-30 Microsoft Corporation Media streaming of web content data
US7240325B2 (en) * 2002-09-11 2007-07-03 International Business Machines Corporation Methods and apparatus for topology discovery and representation of distributed applications and services
US7269623B2 (en) * 2003-01-09 2007-09-11 Raytheon Company System and method for distributed multimodal collaboration using a tuple-space
US20040207723A1 (en) 2003-04-15 2004-10-21 Davis Jeffrey Alan UI remoting with synchronized out-of-band media
US7245589B2 (en) * 2003-04-21 2007-07-17 Lucent Technologies Inc. Wireless media gateway with bearer path control and tone allocation
US7426637B2 (en) * 2003-05-21 2008-09-16 Music Public Broadcasting, Inc. Method and system for controlled media sharing in a network
US7555540B2 (en) 2003-06-25 2009-06-30 Microsoft Corporation Media foundation media processor
US7743329B2 (en) * 2003-06-27 2010-06-22 Microsoft Corporation Incorporating interactive media into a playlist
US20040267778A1 (en) * 2003-06-27 2004-12-30 Microsoft Corporation Media foundation topology application programming interface
US7613822B2 (en) * 2003-06-30 2009-11-03 Microsoft Corporation Network load balancing with session information
US20050005025A1 (en) * 2003-07-04 2005-01-06 Michael Harville Method for managing a streaming media service
US8995536B2 (en) * 2003-07-23 2015-03-31 Broadcom Corporation System and method for audio/video synchronization
KR100982511B1 (ko) 2003-10-08 2010-09-16 삼성전자주식회사 원격 제어 장치 및 방법
US7712108B2 (en) 2003-12-08 2010-05-04 Microsoft Corporation Media processing methods, systems and application program interfaces
US7900140B2 (en) * 2003-12-08 2011-03-01 Microsoft Corporation Media processing methods, systems and application program interfaces
US7735096B2 (en) * 2003-12-11 2010-06-08 Microsoft Corporation Destination application program interfaces
US8555395B2 (en) * 2004-02-03 2013-10-08 Media Rights Technologies, Inc. Method and system for providing a media change notification on a computing system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100734628B1 (ko) * 2005-09-29 2007-07-03 한국전자통신연구원 분산 소프트웨어 스트리밍 서비스 방법 및 시스템
US9065762B2 (en) 2011-04-28 2015-06-23 Samsung Electronics Co., Ltd. Method and apparatus for controlling load shedding in data stream management system

Also Published As

Publication number Publication date
ZA200404021B (en) 2005-09-09
RU2332706C2 (ru) 2008-08-27
BR0306630A (pt) 2005-04-26
EP1661009A1 (en) 2006-05-31
CA2468461A1 (en) 2005-01-11
CN1669015B (zh) 2010-12-08
EP1661009A4 (en) 2013-05-01
JP2007521526A (ja) 2007-08-02
US20050021590A1 (en) 2005-01-27
MXPA04006407A (es) 2005-04-19
CN1669015A (zh) 2005-09-14
US7613767B2 (en) 2009-11-03
RU2004119840A (ru) 2005-04-10
WO2005015424A1 (en) 2005-02-17
TW200502784A (en) 2005-01-16

Similar Documents

Publication Publication Date Title
KR20060059334A (ko) 데이타를 스트리밍하기 위한 분산 토팔로지의 해결
KR101596530B1 (ko) 원격 세션에서의 멀티미디어 동작을 관리하는 시스템 및 방법
US7669206B2 (en) Dynamic redirection of streaming media between computing devices
US9565396B2 (en) Methods, systems and program products for initiating a process on data network
US7760659B2 (en) Transmission optimization for application-level multicast
KR101490548B1 (ko) 실시간 커널
US7290039B1 (en) Intent based processing
JP4425577B2 (ja) データを提示する方法
JP5349958B2 (ja) マルチメディアコンテンツおよび装置の動的仲裁
KR101037263B1 (ko) 세션 기술 메시지 확장
US8463860B1 (en) Scenario based scale testing
EP2521332B1 (en) Sparse Mode System
JP2007173987A (ja) マルチメディアデータ送受信システム、及び装置、又はプログラム
KR20070121662A (ko) 미디어 타임라인 처리 기반구조
US8023437B1 (en) Methods, systems and program products for a distributed communications configuration
Vieira et al. Sunflower: an environment for standardized communication of IoMusT
CN113242173B (zh) 屏幕的分享方法、装置、系统和即时通讯服务器
US20050132366A1 (en) Creating virtual device for universal plug and play
JP2009049949A (ja) ストリーミング情報の再生制御方法
Bouillot et al. Aes white paper: Best practices in network audio
CN111541905A (zh) 一种直播方法、装置、计算机设备和存储介质
Ooi et al. Indiva: A middleware for managing distributed media environment
JP4990718B2 (ja) メディアストリーム加工システム、メディアストリーム加工方法、コンポーネント実現装置
CN110602431A (zh) 配置参数修改方法、装置
AU2003259937A1 (en) Resolving a distributed topology to stream data

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application