|
(21), (22) Заявка: 2004119840/09, 20.08.2003
(24) Дата начала отсчета срока действия патента:
20.08.2003
(30) Конвенционный приоритет:
11.07.2003 US 10/618,335
(43) Дата публикации заявки: 10.04.2005
(46) Опубликовано: 27.08.2008
(56) Список документов, цитированных в отчете о поиске:
US 2003/0101253 A1, 29.05.2003. WO 02/27426 A2, 04.04.2002. WO 01/13311 A2, 22.02.2001. US 5887139, 23.03.1999. RU 2159955 С1, 27.11.2000.
(85) Дата перевода заявки PCT на национальную фазу:
29.06.2004
(86) Заявка PCT:
US 03/26037 (20.08.2003)
(87) Публикация PCT:
WO 2005/015424 (17.02.2005)
Адрес для переписки:
129090, Москва, ул. Б. Спасская, 25, стр.3, ООО “Юридическая фирма Городисский и Партнеры”, пат.пов. Ю.Д.Кузнецову, рег.№ 595
|
(72) Автор(ы):
ДЕБИК Кирт А. (US), ТОРНТОН Томас А. (US), БАТТЕРБЕРРИ Трой Д. (US), АБДО Надим Й. (US), ГРИГОРОВИЧ Александр В. (US), САТЕР Дэйл А. (US), АЯЛА Роланд Й. (US), ОЛИВЕЙРА Эдуарду П. (US)
(73) Патентообладатель(и):
МАЙКРОСОФТ КОРПОРЕЙШН (US)
|
(54) ОПРЕДЕЛЕНИЕ РАСПРЕДЕЛЕННОЙ ТОПОЛОГИИ ДЛЯ ПОТОКОВОЙ ПЕРЕДАЧИ ДАННЫХ
(57) Реферат:
Изобретение относится к области сочетания двух и более вычислительных машин, в частности способам инициализации потоковой передачи данных между этими устройствами. Технический результат, заключающийся в потоковой передаче данных через сеть, достигается за счет того, что вычислительные машины под управлением программных компонент устанавливают между собой сеанс связи через сеть, в ходе которого распознают возможности обоих устройств по обработке потока данных. На основе информации о возможностях устройств формируют распределенную программную среду обработки потоковых данных. Причем одно из устройств под управлением программной компоненты осуществляет передачу потоковых данных (устройство-источник), а другое – клиентское устройство под управление программной компоненты – осуществляет воспроизведение принятых потоковых данных. Кроме того, возможно централизованное управление работой упомянутых программных компонент посредством дополнительной программной компоненты, исполняемой либо устройством-источником, либо клиентским устройством. 10 н. и 20 з.п. ф-лы, 27 ил.
Область техники, к которой относится изобретение
Настоящее изобретение относится в целом к потоковой передаче данных и, в частности, касается определения распределенной топологии для потоковой передачи данных.
Предшествующий уровень техники
Потоковая передача данных предоставляет пользователю расширенные функциональные возможности, обеспечивая возможность быстрого приема данных. Без использования потоковой передачи при необходимости приема всего объема данных от устройства-источника перед их выводом клиентским устройством пользователь может столкнуться с задержкой при воспроизведении этих данных в клиентском устройстве. В результате потоковой передачи данных задержка, с которой сталкивается пользователь, может быть уменьшена. Потоковую передачу данных можно использовать для обеспечения воспроизведения данных в «реальном времени».
Для обеспечения потоковой передачи данных их передают от устройства-источника в потоке, или непрерывно, обычно используя пакеты данных, с целью воспроизведения в клиентском устройстве по их прибытии, в отличие от случая, когда данные не воспроизводятся до тех пор, пока весь файл, включающий в себя эти данные, не окажется в клиентском устройстве. Потоковую передачу можно использовать применительно к данным различных типов, таким как видеоданные, аудиоданные, данные мультимедиа и т.п. Поток видеоданных обеспечивает последовательность «движущихся изображений», которые передаются и отображаются при поступлении изображений. Аналогично, поток аудиоданных предоставляет акустические данные, которые воспроизводятся при поступлении аудиоданных. Поток данных мультимедиа включает в себя как аудиоданные, так и видеоданные.
Ранее использование периферийных устройств, в которых применялись потоки данных, носило локальный характер. Например, периферийные устройства, такие как периферийные устройства-источники (такие как, камеры, микрофоны и карты видеозахвата) и устройства воспроизведения (такие как мониторы и громкоговорители) физически соединялись с одним вычислительным устройством, так чтобы данные, передаваемые в потоке периферийным устройством-источником, могли бы воспроизводиться устройством воспроизведения. Воспроизведение данных может включать в себя преобразование данных в форму, подходящую для вывода устройством воспроизведения в виде воспринимаемом человеком, к примеру, отображаться на устройстве отображения, проигрываться через громкоговоритель и т.д.
Если необходим удаленный доступ к потокам данных, то такой доступ ограничен локальными особенностями предоставления данных. Например, для обеспечения удаленного доступа к данным, которые поступают потоком от периферийного устройства-источника, эти данные перед их потоковой передачей на клиентское устройство выводят, уплотняют, разуплотняют, воспроизводят, захватывают и вновь уплотняют. Однако при захвате и повторном уплотнении данных перед их потоковой передачей на клиентское устройство части этих данных, выдаваемые периферийным устройством-источником, могут теряться. Следовательно, ухудшается качество данных, передаваемых в потоке на клиентское устройство. Это сужает возможности восприятия пользователя при просмотре и/или прослушивании данных, к примеру, из-за появления прерывистого движения при отображении видеоданных и неполного воспроизведения аудиоданных. Помимо этого захват и повторное уплотнение данных устройством-источником связаны с интенсивным расходом ресурсов, что ограничивает указанные функциональные возможности устройств, имеющих достаточные ресурсы процессора и памяти для хранения данных. Кроме того, захват и повторное уплотнение воспроизведенных данных могут замедлить потоковую передачу данных на клиентское устройство, что ограничивает характерную особенность для этих данных и возможность передачи «в реальном времени». Кроме того, при необходимости передачи потоков данных нескольким адресатам дополнительно возрастает объем ресурсов, используемых для поддержки множества потоков.
Соответственно имеется насущная потребность в совершенствовании потоковой передачи данных.
Сущность изобретения
Описывается распределенный мультимедийный сеанс, при выполнении которого определяют распределенную топологию, которая обращается к программным компонентам для потоковой передачи данных от устройства-источника на клиентское устройство через сеть. Распределенная топология может быть представлена как структура или схема программных компонент, которые будут использованы для потоковой передачи данных от устройства-источника на клиентское устройство через сеть. Таким образом, при исполнении программных компонент распределенной топологии происходит потоковая передача данных по сети от устройства-источника на клиентское устройство. Распределенную программную инфраструктуру этих программных компонент можно построить на основе распределенной топологии посредством исполнения распределенного мультимедийного сеанса. Исполнение программных компонент распределенной программной инфраструктуры позволяет обеспечить потоковую передачу данных через сеть от устройства-источника на клиентское устройство.
Распределенный мультимедийный сеанс при его исполнении может обеспечить интегрированное (то есть централизованное) средство для определения распределенной топологии. Например, при исполнении распределенного мультимедийного сеанса можно учесть возможности как устройства-источника, так и клиентского устройства при определении распределенной топологии. Кроме того, распределенный мультимедийный сеанс при его исполнении обеспечивает интегрированное средство для определения распределенной топологии, так что распределенный мультимедийный сеанс может быть исполнен клиентским устройством, устройством-источником и/или устройством третьей стороны. Исполнение распределенного мультимедийного сеанса может также обеспечить интегрированное средство для управления. Управление программными компонентами, например, как в устройстве-источнике, так и в клиентском устройстве, может осуществляться одним объектом, который представляет подобное интегрированное средство.
Перечень фигур
фиг.1 – иллюстрация примерного варианта реализации системы, обеспечивающей потоковую передачу данных, которая включает в себя родительский распределенный мультимедийный сеанс (DMS) для потоковой передачи данных от устройства-источника на клиентское устройство;
фиг.2 – иллюстрация примерного варианта реализации, где вычислительная среда использует родительский DMS по фиг.1 для потоковой передачи данных;
фиг.3 – иллюстрация примерного варианта реализации взаимосвязей «родитель – дочерний объект» родительского DMS по фиг.1 с дочерним DMS;
фиг.4 – иллюстрация примерного варианта реализации, где показан родительский DMS, который обеспечивает функциональные возможности удаленного доступа, используя интегрированный подход через дочерний DMS по фиг.3;
фиг.5 – иллюстрация примерной процедуры, в которой родительский DMS по фиг.1 выполняет построение распределенной программной инфраструктуры для потоковой передачи данных от устройства-источника на клиентское устройство;
фиг.6 – иллюстрация примерной реализации определения распределенной топологии с удаленным источником с использованием процедуры по фиг.5;
фиг.7 – иллюстрация примерного варианта реализации распределенной топологии с удаленным источником, которую дополнительно определяют на основе распределенной топологии по фиг.6 с удаленным источником;
фиг.8 – иллюстрация примерного варианта реализации распределенной топологии с удаленным источником, которую полностью определяют на основе распределенной топологии по фиг.7 с удаленным источником;
фиг.9 – иллюстрация иерархии управления в примере реализации, показанном на фиг.8;
фиг.10 – иллюстрация примерной определенной распределенной топологии с удаленным стоком посредством процедуры по фиг.5;
фиг.11 – иллюстрация иерархии управления в примере реализации, показанном на фиг.10;
фиг.12 – иллюстрация примерного варианта реализации программы-посредника, исполняемой на клиентском устройстве по фиг.1;
фиг.13 – иллюстрация примерного варианта реализации программы-посредника, исполняемой на устройстве-источнике по фиг.1;
фиг.14 – иллюстрация примерного варианта реализации программы-посредника по фиг.12, сконфигурированной в виде программы-посредника источника;
фиг.15 – иллюстрация примерного варианта реализации программы-посредника по фиг.13, сконфигурированной в виде программы-посредника стока;
фиг.16 – иллюстрация примерного варианта реализации распределенной топологии с удаленным источником, которая включает в себя программу-посредник источника по фиг.14;
фиг.17 – иллюстрация примерного варианта реализации, где представлена иерархия управления в распределенной топологии с удаленным источником, как показано на фиг.16;
фиг.18 – иллюстрация примерного варианта реализации распределенной топологии с удаленным стоком, которая включает в себя программу-посредник стока по фиг.15;
фиг.19 – иллюстрация примерного варианта реализации, где представлена иерархия управления в распределенной топологии с удаленным стоком, как показано на фиг.18;
фиг.20 – иллюстрация примерного варианта реализации, где показана система, включающая в себя устройство третьей стороны, которое имеет соединения для связи с устройством-источником и клиентским устройством через сеть по фиг.1;
фиг.21 – иллюстрация примерного варианта реализации распределенной топологии с третьей стороной, реализованной в системе, показанной на фиг.20;
фиг.22 – иллюстрация примерного варианта реализации иерархии управления в варианте реализации, показанном на фиг.21;
фиг.23 – иллюстрация примерного варианта реализации множества устройств-источников, которые осуществляют потоковую передачу данных на клиентское устройство по фиг.1;
фиг.24 – иллюстрация примерного варианта реализации распределенной топологии, определенной для системы по фиг.23;
фиг.25 – иллюстрация примерного варианта реализации системы, в которой исполнение распределенного мультимедийного сеанса определяет распределенную топологию с использованием процедуры по фиг.5 оптимальным образом на основе возможностей устройства-источника и клиентского устройства в отношении взаимодействия с процессом потоковой передачи данных;
фиг.26 – блок-схема последовательности операций, где показана примерная процедура построения распределенной программной инфраструктуры из программных компонентов и где данные передаются в потоке от устройства-источника на клиентское устройство для их воспроизведения клиентским устройством;
фиг.27 – иллюстрация примерной операционной среды.
По всему описанию и на всех чертежах для ссылок на аналогичные компоненты и признаки используются одинаковые ссылочные позиции.
Подробное описание предпочтительного варианта изобретения
Общие положения
Описывается распределенный мультимедийный сеанс (DMS), который при его исполнении определяет распределенную топологию, которая обращается к программным компонентам для потоковой передачи данных от устройства-источника на клиентское устройство через сеть. Распределенную топологию можно представить в виде структуры или схемы для потоковой передачи данных от устройства-источника на клиентское устройство через сеть с использованием программных компонент, к которым обращается указанная распределенная топология. При его исполнении DMS может определить распределенную топологию путем распознавания возможностей устройства-источника в отношении осуществления потоковой передачи данных, подлежащих воспроизведению, и путем распознавания возможностей клиентского устройства в отношении воспроизведения потока данных от устройства-источника. Исходя из результатов этих двух процессов распознавания DMS строит распределенную топологию, которая обращается к программным компонентам, пригодным для потоковой передачи данных от устройства-источника на клиентское устройство через сеть. Затем DMS может использовать распределенную топологию для построения распределенной программной инфраструктуры, которая при ее исполнении позволяет обеспечить потоковую передачу данных по сети от устройства-источника на клиентское устройство.
При его исполнении DMS может обеспечить интегрированное, то есть централизованное средство для определения распределенной топологии. Например, DMS при его исполнении может учесть возможности как устройства-источника, так и клиентского устройства при определении распределенной топологии. Кроме того, DMS обеспечивает интегрированное средство для определения распределенной топологии, так что DMS может исполняться клиентским устройством, устройством-источником и/или устройством третьей стороны. DMS может также обеспечить интегрированное средство для управления, так что управление программными компонентами как в устройстве-источнике, так и в клиентском устройстве может осуществляться одним объектом, к примеру приложением, взаимодействующим с DMS, и/или самим DMS.
Распределенный мультимедийный сеанс (DMS)
На фиг.1 показан пример реализации системы 100, которая осуществляет потоковую передачу данных. Система 100 включает в себя устройство-источник 102 и клиентское устройство 104, которые соединены через сеть 106. Сеть 106 может включать в себя любую из следующих сетей: локальную сеть (LAN), глобальную сеть (WAN) или интернет.
Устройство-источник 102 обеспечивает поток данных, подлежащих воспроизведению. Устройство-источник 102 может включать в себя периферийное устройство-источник 108, которое выдает данные. Периферийное устройство-источник 108 может быть сконфигурировано в виде камеры 108а, микрофона 108b, платы видеозахвата и т.п. Устройство-источник 102 может также включать в себя вычислительное устройство 110, которое имеет соединение для связи с периферийным устройством-источником 108 через локальное соединение, к примеру, с использованием порта универсальной последовательной шины (USB), порта IEEE 1394, параллельного порта и т.д. Вычислительное устройство 110 включает в себя процессор 112 для исполнения одной или нескольких программных компонент и память 114 для хранения программных компонент и данных. Устройство-источник 102 может также включать в себя устройство 116 воспроизведения для предоставления данных в виде воспринимаемом пользователем, взаимодействующим с устройством 116 воспроизведения. Устройство 116 воспроизведения может быть сконфигурировано различным образом, к примеру в виде устройства 116а отображения, громкоговорителя 116b и т.п. Устройство 116 воспроизведения также имеет локальное соединение для связи с вычислительным устройством 110.
Хотя устройство-источник 102, показанное на фиг.1, сконфигурировано так, что оно включает в себя периферийное устройство-источник 108, которое имеет соединение для связи с вычислительным устройством 110, устройство-источник 102 может быть сконфигурировано в различных вариантах. Например, устройство-источник 102 может быть сконфигурировано в виде устройства, готового к работе в сети, которое не содержит отдельного вычислительного устройства 110 для подсоединения к сети 106, а например, включает в себя процессор, память и сетевые аппаратные компоненты. В другом примере устройство-источник 102 может быть сконфигурировано в виде мультимедийного сервера, который обеспечивает поток посредством протокола потоковой передачи данных, обеспечиваемого посредством исполнения программных средств устройством-источником 102.
Клиентское устройство 104 может также включать в себя вычислительное устройство 118, имеющее процессор 120 и память 122. Клиентское устройство 104 включает в себя устройство 124 воспроизведения для выдачи данных в воспринимаемой форме, причем устройство 124 имеет локальное соединение для связи с вычислительным устройством 118. Подобно устройству-источнику 102 (хотя здесь показано, что клиентское устройство 104 включает в себя отдельное вычислительное устройство 118 и отдельное устройство 124 воспроизведения) клиентское устройство 104 может быть сконфигурировано различными способами. Например, клиентское устройство 104 может быть сконфигурировано в виде устройства воспроизведения, готового к работе в сети, которое не включает в себя полный набор ресурсов вычислительного устройства 118. Например, клиентское устройство 104 может быть сконфигурировано в виде устройства с ограниченными ресурсами, которое имеет ограниченные возможности обработки данных и памяти, например, ограниченный объем ОЗУ (RAM), не имеет дисковода и имеет ограниченные возможности обработки данных.
Предусмотрен родительский распределенный мультимедийный сеанс 126 (родительский DMS), позволяющий системе 100 осуществлять потоковую передачу данных от устройства-источника 102 на клиентское устройство 104 через сеть 106. Родительский DMS 126 представляет собой программную компоненту, которая может исполняться устройством-источником 102, клиентским устройством 104 и/или устройством 2002 третьей стороны, показанным на фиг.20. Посредством исполнения родительского DMS 126 может быть построена распределенная программная инфраструктура для потоковой передачи данных через сеть 106. Родительский DMS 126 при его исполнении может распознать возможности как устройства-источника 102, так и клиентского устройства 104. Исходя из этих распознанных возможностей родительский DMS 126 может адресовать распределение программных компонент как через клиентское устройство 104, так и через устройство-источник 102. Распределение программных компонентов дополнительно обсуждается ниже в разделе «Определение распределенной топологии». Для удобства последующего обсуждения сделаны дополнительные ссылки на исполнение родительского DMS 126 или другой программной компоненты с целью выполнения некоторого действия, как если бы это действие выполнял родительский DMS 126 или другая программная компонента.
На фиг.2 показана вычислительная среда 200, где используется распределенный мультимедийный сеанс 126 для потоковой передачи данных. Родительский DMS 126 может составлять часть операционной системы 202, которая исполняется в устройстве-источнике 102 или клиентском устройстве 104, показанных на фиг.1, а также может составлять часть операционной системы для устройства 2002 третьей стороны, показанного на фиг.20. Операционная система 202 обеспечивает организацию и управление программными и аппаратными средствами, такими как периферийные устройства-источники 204(1) – 204(N) и устройства 206(1) – 206(M) воспроизведения.
Родительский DMS 126 может образовать верхний уровень локальной программной инфраструктуры, которая включает в себя локальные программные компоненты, используемые для ввода и/или вывода потоков данных. Локальные программные компоненты 210 могут включать в себя драйверы 212 устройств, проигрыватели 214 для вывода потока данных, такие как проигрыватели данных мультимедиа (медиаплееры), и другие программные компоненты 216. Родительский DMS 126 может управлять этими локальными программными компонентами 210 и осуществлять потоковую передачу данных через сеть 106, показанную на фиг.1, как на эти локальные программные компоненты 210, так и из этих локальных программных компонент 210. Таким образом, родительский DMS 126 может дополнять локальные программные компоненты 210, не заменяя их.
Может быть предусмотрено средство 218 мультимедиа для предоставления интерфейса между приложением 208 и родительским DMS 126. Средство 218 мультимедиа используется для предоставления возможностей родительского DMS 126 приложению 208. Другими словами, средство 218 мультимедиа определяет интерфейс прикладного программирования (API), так что приложение 208 и родительский DMS 126 могут взаимодействовать друг с другом. Помимо этого родительский DMS 126 может использовать средство 218 мультимедиа для предоставления интерфейса для взаимодействия с локальными программными компонентами 210. Средство 218 мультимедиа можно также использовать для управления потоком данных между программными компонентами. Средство 218 мультимедиа может, например, направлять поток данных между локальными программными компонентами 210, инициировать исполнение локальных программных компонент 210 и т.д.
Удаленный доступ и интеграция
При построении распределенной программной инфраструктуры и управлении ей в отличие от построения локальных программных компонент 210 и управления ими могут возникнуть дополнительные сложности в связи с тем, что программные компоненты исполняются в распределенной программной инфраструктуре на двух или более устройствах. Кроме того, в распределенной программной инфраструктуре для потоковой передачи данных может быть использовано множество различных программных компонент, что дополнительно усложняет построение распределенной программной инфраструктуры и управление ей. Например, множество различных программных компонент может включать в себя локальные программные компоненты 210, средства 218 мультимедиа, передающие средства (передатчики), приемные средства (приемники) и тому подобное, использование которых более подробно описано ниже в разделе «Определение распределенной топологии».
Родительский DMS 126 обеспечивает интегрированный, то есть централизованный подход к построению распределенной программной инфраструктуры, пригодной для потоковой передачи данных между двумя или более устройствами. Такой подход централизует процесс планирования и может также централизовать управление программными компонентами. Родительский DMS 126 при построении распределенной программной инфраструктуры может также учитывать возможности как устройства-источника 102, так и клиентского устройства 104. Это позволяет родительскому DMS 126 обеспечить согласованное построение программных компонент и управление ими как для устройства-источника 103, так и для клиентского источника 104. Используя интегрированный подход, родительский DMS 126 может обеспечить распределенную программную инфраструктуру, оптимизированную применительно к возможностям устройства-источника и клиентского устройства, что дополнительно обсуждается ниже в связи с фиг.25.
Хотя интегрированный подход может быть реализован для построения распределенной топологии, элементы построения и управления могут быть обеспечены в виде отдельных частей распределенной топологии на множестве устройств. Например, построение и управление может быть делегировано устройствам, имеющим соответствующие возможности для размещения программных компонентов, которые используются для потоковой передачи данных от устройства-источника 102 на клиентское устройство 104. Эта модель поддерживается родительским DMS 126 посредством использования связей «родитель-потомок». Вместо того, чтобы попытаться непосредственно управлять всеми программными компонентами распределенной программной инфраструктуры, родительский DMS 126 может создать, например, посредством создания экземпляра дочерний DMS 302, которому он делегирует управление, как показано на фиг.3. Результирующая структура может представлять собой простую, единственную связь «родитель-потомок», как показано между родительским DMS 126 и дочерним DMS 302, либо более сложную древовидную структуру, содержащую несколько связей «родитель-потомок», как показано на фиг.3.
На фиг.4 показан пример реализации, где родительский DMS 126 предоставляет функциональные возможности удаленного доступа с использованием интегрированного подхода. Родительский DMS 126 выступает в роли «родителя», который является ведущим для дочернего DMS 302 и управляет им. Родительский DMS 126 может обеспечить управление программными компонентами, для которых он является ведущим, для приложения 208 через средство 218 мультимедиа. Таким путем родительский DMS 126 предоставляет приложению 208 функциональные возможности удаленного доступа для потоков данных. Например, родительский DMS 126 является ведущим для дочернего DMS 302, который включает в себя средство 402 мультимедиа, исполняемое за границей 404 устройств, то есть на другом устройстве. Через дочерний DMS 302 родительский DMS 126 может управлять средством 402 мультимедиа через границу 404 устройств. Таким образом, дочерний DMS 302 предоставляет приложению 208 функциональные возможности средства 402 мультимедиа через родительский DMS 126, хотя средство 402 мультимедиа является удаленным для приложения 208.
Родительский DMS 126 может также непосредственно быть ведущим в отношении средства 406 мультимедиа. Родительский DMS 126 имеет возможность быть ведущим для программных компонентов нескольких типов, которые могут включать в себя средство 406 мультимедиа, дочерний DMS 302 и локальные программные компоненты 210, показанные на фиг.2, которые используют для взаимодействия с устройствами, поддерживающими универсальный стандарт распознавания и настройки устройства без последующего конфигурирования пользователем (UPnP), действующими устройствами и т.д. Выступая в качестве ведущего для множества программных компонент, родительский DMS 126 может сконцентрировать управление программными компонентами. Таким образом, приложение 208 может управлять множеством программных компонент посредством взаимодействия с родительским DMS 126.
Дочерний DMS 302 может быть сконфигурирован различными путями для обеспечения разных функциональных возможностей. Например, дочерний DMS 302 может быть создан для случая, когда родительский DMS 126 не имеет прямого доступа к программной компоненте, например средству 402 мультимедиа, к которому дочерний DMS 302 имеет доступ. Таким образом, родительский DMS 126 является ведущим для дочернего DMS 302, чтобы обеспечить доступ к программной компоненте, например средству 402 мультимедиа. Кроме того, дочерний DMS 302 может быть создан для обеспечения управления над заданным набором программных компонентов. Например, для каждого типа данных, которые передаются в потоке, например видеоданных и аудиоданных, может быть предусмотрен отдельный дочерний DMS.
Наконец, родительский DMS 126 может обеспечить централизованное управление по меньшей мере частью распределенной программной инфраструктуры, как показано на фиг.4. Например, родительский DMS 126 может управлять по меньшей мере одной программной компонентой, находящейся на каждом из устройств – устройстве-источнике 102 и клиентском устройстве 104 соответственно. Решение о создании дочернего DMS 302 принимается в результате определения распределенной топологии, что обсуждается в последующем разделе.
Определение распределенной топологии
На фиг.5 показана примерная процедура, в которой родительский DMS 126 строит распределенную программную инфраструктуру для потоковой передачи данных от устройства-источника 102 на клиентское устройство 104. В блоке 502 показан этап осуществления запроса, на котором приложение 208 посылает в родительский DMS 126 запрос 504 на потоковую передачу данных. Запрос обращается к устройству-источнику 102 и клиентскому устройству 104, показанным на фиг.1.
Родительский DMS 126 использует запрос 504 для определения распределенной топологии, которая обращается к программным компонентам, пригодным для потоковой передачи данных от устройства-источника 102 на клиентское устройство 104. Для определения распределенной топологии родительский DMS 126 сначала распознает возможности в отношении взаимодействия с потоковой передачей данных у устройства-источника 102 и клиентского устройства 104 соответственно. Например, DMS 126 может распознать возможности клиентского устройства 104 в отношении воспроизведения данных и возможности устройства-источника 102 в отношении осуществления потоковой передачи данных, подлежащих воспроизведению.
Эти возможности могут быть распознаны различными путями. В варианте, показанном в блоке 506, показан этап распознавания возможностей, на котором родительский DMS 126 может проанализировать устройство-источник 102 на предмет обнаружения программной компоненты 508 источника, которая обеспечивает, то есть содержит в качестве признака или следствия потоковую передачу данных от устройства-источника 102. Аналогично родительский DMS 126 может проанализировать клиентское устройство 104 на предмет обнаружения клиентской программной компоненты 510, которая обеспечивает воспроизведение данных, передаваемых в потоке на клиентское устройство 104. Анализ устройства-источника 102 и клиентского устройства 104 может включать в себя нахождение программных компонент, которые открыто предоставлены, например сделаны видимыми, устройством-источником 102 и клиентским устройством 104 для родительского DMS 126.
В другом варианте реализации родительский DMS 126 может обнаружить возможности устройства-источника 102 и клиентского устройства 104 путем запроса справочной таблицы. Справочная таблица может возвратить результат, который определяет возможности устройства-источника 102 и/или клиентского устройства 104. Справочная таблица может храниться как часть родительского DMS 126 и/или где-либо в сети 106, показанной на фиг.1, к примеру в устройстве-источнике 102, клиентском устройстве 104 и/или дополнительном устройстве (не показано), которое доступно через сеть 106.
В блоке 512 показан этап определения распределенной топологии, на котором родительский DMS 126 определяет распределенную топологию 514 на основе распознанных возможностей как устройства-источника 102, так и клиентского устройства 104, распознанных в блоке 506. Распределенная топология 514 представляет собой схему, например «проект», которая обращается к программным компонентам, так что при их исполнении происходит потоковая передача данных от устройства-источника 102 на клиентское устройство 104. Например, программная компонента 508 источника, обнаруженная родительским DMS 126 в устройстве-источнике 102, может представлять собой драйвер для периферийного устройства 108 источника, показанного на фиг.1. Кроме того, клиентская программная компонента 510, обнаруженная в клиентском устройстве 104, может представлять собой медиаплеер, который используют для предоставления данных через драйвер устройства для устройства 124 воспроизведения в клиентском устройстве 104, показанном на фиг.1. На основе обнаруженных компонент родительский DMS 126 может получить дополнительную программную компоненту 516, которая при ее исполнении вместе с программной компонентой 508 источника и клиентской программной компонентой 510 выполняет потоковую передачу данных от устройства-источника 102 на клиентское устройство 104. Родительский DMS 126 получает распределенную топологию 514, так что она включает в себя дополнительную программную компоненту 516 на основе распознанных возможностей программных компонент 508, 510 источника и клиента. В показанном примере распределенная топология 514 обращается к программным компонентам 508, 510 источника и клиента наряду с дополнительной программной компонентой 516. В этот момент распределенная топология 514 предоставляет схему для потоковой передачи данных от устройства-источника 102 на клиентское устройство 104, но не предоставляет действительную распределенную программную инфраструктуру для потоковой передачи.
В блоке 518 показан этап построения распределенной программной инфраструктуры, где родительский DMS 126 обеспечивает дополнительную программную компоненту 516 на основе распределенной топологии 514 для построения распределенной программной инфраструктуры 520. Распределенная программная инфраструктура 520 включает в себя дополнительную программную компоненту 516 и программные компоненты 508, 510 источника и клиента. Программные компоненты 508, 510 источника и клиента, а также дополнительная программная компонента 516 распределенной программной инфраструктуры 520 исполняются для потоковой передачи данных от устройства-источника 102 на клиентское устройство 104. Дополнительная программная компонента 516 может обеспечиваться различными способами. Например, дополнительная программная компонента 516 может храниться и извлекаться родительским DMS 126, например, из локальной памяти, памяти, размещенной в сети 106 по фиг.1, и т.п.
В примере, показанном на фиг.5, родительский DMS 126 начинается с запроса 504, который включает в себя обращение к устройству-источнику 102 и клиентскому устройству 104. Затем родительский DMS 126 определяет на основе запроса 504 распределенную топологию 514 из блока 512, которую затем можно использовать для построения распределенной программной инфраструктуры 520 в блоке 518. Этапы, описанные в блоках 502, 506, 512, 518, могут выполняться автоматически родительским DMS 126 без вмешательства пользователя. Родительский DMS 126 может определить множество различных распределенных топологий, таких как распределенная топология с удаленным источником, распределенная топология с удаленным стоком и распределенная топология с третьей стороной, каждая из которых дополнительно обсуждается в последующих разделах.
Распределенная топология с удаленным источником
На фиг.6, 7 и 8 показан примерный вариант реализации разрешения распределенной топологии с удаленным источником. Распределенная топология с удаленным источником относится к распределенной топологии, где устройство-источник 102 потоковой передачи данных удалено, то есть находится за границей 404 устройств, по отношению к клиентскому устройству 104, на котором размещен родительский DMS 126. Родительский DMS 126 исполняется клиентским устройством 104 для определения распределенной топологии. На клиентском устройстве 104 также исполняется приложение 208. На фиг.7 показан вариант реализации, где устройство-источник 102 включает в себя камеру 108а и программную компоненту 602 камеры, а клиентское устройство 104 включает в себя устройство 124 воспроизведения и программную компоненту 604 отображения.
На фиг.6 показан примерный вариант реализации определения распределенной топологии в блоке 512 процедуры 500 по фиг.5. Родительский DMS 126 сначала создает распределенную топологию 606, которая включает в себя программную компоненту 602 камеры и программную компоненту 604 отображения. Программная компонента 602 камеры обращается к возможностям камеры 108а по фиг.7, таким как локальные программные компоненты, включенные в состав камеры 108а, которые обеспечивают потоковую передачу данных, и сетевому адресу камеры 108а. Аналогично программную компоненту 604 отображения можно использовать для обращения к возможностям, например, локальным программным компонентам, которые включены в состав устройства 124 воспроизведения по фиг.7, для воспроизведения данных, и сетевому адресу устройства 124 воспроизведения. Распределенная топология 606, показанная на фиг.6, является неполной, поскольку обращение происходит не ко всем программным компонентам, которые будут использованы для обеспечения потоковой передачи данных. Как было установлено ранее, распределенная топология 606 является схемой для распределенной программной инфраструктуры и, как таковая, не включает в себя действительные программные компоненты, которые будут реализованы. Например, распределенная топология 606 обращается к программным компонентам, которые будут использованы родительским DMS 126 для обеспечения распределенной программной инфраструктуры для потоковой передачи данных от камеры 108а на устройство 124 воспроизведения по фиг.7. Эти обращения могут быть использованы родительским DMS 126 для обеспечения программных компонент, указанных в распределенной топологии 606, для построения распределенной программной инфраструктуры, как это было обсуждено в связи с фиг.5.
В примере, показанном на фиг.7, камера 108а и устройство 124 воспроизведения не имеют локального соединения друг с другом, а вместо этого соединены через сеть 106, показанную на фиг.1. Как было обсуждено в разделе «Удаленный доступ и интеграция» и фиг.3, интеграция может включать в себя сегментирование распределенной топологии 606 путем делегирования управления дочернему DMS 302, который будет управлять локальными программными компонентами, используемыми в будущем для потоковой передачи данных в распределенной программной инфраструктуре. Например, как показано на фиг.7, распределенная топология 606 сегментируется для включения в нее дочернего DMS 702, создаваемого в удаленном источнике, то есть устройстве-источнике 102, которое отделено от клиентского устройства 104 границей 404 устройств.
Дочерний DMS 702 включает в себя часть 704 распределенной топологии 606, которая также должна будет пройти этап определения. Например, определение части 704 может включать в себя добавление обращения к передатчику 706, который представляет собой программную компоненту, управляемую родительским DMS 126 через дочерний DMS 702. Аналогичным образом, определение распределенной топологии 606 может также включать в себя добавление обращения к приемнику 708, который представляет собой программную компоненту, непосредственно управляемую родительским DMS 126. Передатчик 706 передает данные в потоке через границу 404 устройств. Приемник 708 принимает данные, которые были переданы в потоке через границу 404 устройств. Данные могут передаваться в потоке между передатчиком 706 и приемником 708 различными путями. Например, данные могут «проталкиваться» на приемник 708 передатчиком 706, например, путем потоковой передачи данных по сетевому адресу. Данные могут также «вытягиваться» из передатчика 706 приемником 708, например, путем извлечения потока данных из сетевого адреса.
На фиг.8 показана распределенная топология 606 по фиг.6-7 в полностью определенном виде. В этом примере обращение к средству 802 мультимедиа происходит в части 704 распределенной топологии 606 для управления потоковой передачей данных от программной компоненты 602 камеры на передатчик 706. Другое средство 804 мультимедиа включено в состав распределенной топологии 606 для управления потоковой передачей данных от приемника 708 на программную компоненту 604 отображения. Стрелки, показанные на фиг.8, обозначают передачу потоков данных.
На фиг.9 показана иерархия управления 900 программных компонент в распределенной топологии 606, показанной на фиг.8. Распределенную топологию 606, показанную на фиг.8, определяют таким образом, что родительский DMS 126 осуществляет управление всеми программными компонентами распределенной топологии. Таким образом, родительский DMS 126 будет управлять всей распределенной программной инфраструктурой, которая строится на основе распределенной топологии 606. Например, родительский DMS 126 управляет программной компонентой 602 камеры, средством 802 мультимедиа и передатчиком 706, используя дочерний DMS 702. В этом примере дочерний DMS 702 находится в устройстве-источнике 102, как показано на фиг.7. Родительский DMS 126 также управляет приемником 708, средством 804 мультимедиа и программной компонентой 604 отображения, которые включены вместе с родительским DMS 126 в клиентское устройство 104, как показано на фиг.7. Таким образом, родительский DMS 126 будет управлять распределенной программной инфраструктурой, которая может быть построена на основе распределенной топологии 606, и может предоставить такое управление приложению 208, которое взаимодействует с родительским DMS 126 через средство 218 мультимедиа.
Распределенная топология с удаленным стоком
На фиг.10 показан пример реализации разрешенной распределенной топологии 100 с удаленным стоком. Распределенная топология 100 с удаленным стоком относится к распределенной топологии, в которой клиентское устройство 104 является удаленным, то есть находится за границей 404 устройств по отношению к устройству-источнику 102, которое исполняет родительский DMS 126. Родительский DMS 126 исполняется устройством-источником 102 для определения распределенной топологии. Распределенная топология для сценария с удаленным стоком фактически является зеркальным отображением сценария с удаленным источником, описанным в связи с фиг.6-9.
При определении распределенной топологии 1002 происходит обращение к программной компоненте 602 камеры и программной компоненте 604 отображения для камеры 108а, а также к устройству 124 воспроизведения, как было описано в предыдущем варианте реализации, показанном на фиг.6-9. Как и ранее, родительский DMS 126 сегментирует распределенную топологию 1002, создавая дочерний DMS 1004 на клиентском устройстве 104, которое отделено границей 404 устройств от устройства-источника 102, на котором размещен DMS 126. Дочерний DMS 1004 включает в себя часть 1006 распределенной топологии 1002. Распределенная топология 1002 обращается к передатчику 1008 и средству 1010 мультимедиа для включения в устройство-источник 102, а также к приемнику 1012 и средству 1014 мультимедиа для включения в клиентское устройство 104.
На фиг.11 показана иерархия управления 1100 программных компонентов, к которым обращаются в распределенной топологии 1000 с удаленным стоком, показанной на фиг.10. Родительский DMS 126 управляет распределенной программной инфраструктурой, которая может быть сформирована на основе распределенной топологии 1002 по фиг.10. Например, родительский DMS 126 напрямую управляет программной компонентой 602 камеры, средством 1010 мультимедиа и передатчиком 1008. Родительский DMS 126 также управляет приемником 1012, средством 1014 мультимедиа и программной компонентой 604 отображения, которые включены дочерним DMS 1004 в клиентское устройство 104, как показано на фиг.10. Таким образом, родительский DMS 126 управляет распределенной программной инфраструктурой, которая может быть построена на основе распределенной топологии 1002. Тогда приложение 208, взаимодействующее с родительским DMS 126 через средство 218 мультимедиа, также может управлять распределенной программной инфраструктурой, сформированной на основе распределенной топологии 1002 по фиг.10.
В обоих предыдущих вариантах реализации распределенной топологии – как с удаленным источником, так и с удаленным стоком – родительский DMS 126 обеспечивает управление всей распределенной программной инфраструктурой, построенной на основе распределенных топологий. Однако возможны случаи, когда управление всей распределенной программной инфраструктурой не обеспечивается, что обсуждается ниже в следующем разделе.
Посреднические программные компоненты источника и стока для использования в распределенных топологиях
На фиг.12 показана примерная реализация 1200 программы-посредника 1202. Программа-посредник 1202 является программной компонентой, посредством которой родительский DMS 126 (не показан) может обеспечить взаимодействие приложения 208 с программной компонентой 1204, которая находится в другом устройстве, например, за границей 404 устройств, отделяющей ее от приложения 208. Программа-посредник 1202 используется для предоставления потоковой передачи данных приложению 208, как если бы данные предоставлялись локально посредством использования локальной программной компоненты 210. Таким образом, приложение 208 может принимать потоковые данные от камеры 108а, как если бы камера 108а и ее соответствующая программная компонента исполнялась на клиентском устройстве 104.
На фиг.13 показан дополнительный примерный вариант 1300 реализации программы-посредника 1202. Программа-посредник 102 также может быть использована для приема и потоковой передачи данных через границу 404 устройств на программную компоненту 1302. Например, программа-посредник 1202 может осуществлять потоковую передачу данных на программную компоненту 1302 для отображения на устройстве 124 воспроизведения, как если бы программная компонента 1302 являлась локальной программной компонентой 210, исполняемой в устройстве-источнике 102.
Программа-посредник 1202 может быть использована в случаях, когда родительский DMS 126 (не показан) не обеспечивает управление всеми программными компонентами распределенной программной инфраструктуры. Таким образом, посредством применения программы-посредника 1202 интегрированную модель используют при определении распределенной топологии родительским DMS 126, но не используют при управлении в случае, описанном в связи с фигурами 6-11.
На фиг.14 показан примерный вариант 1400 реализации программы-посредника 1402 источника. Программа-посредник 1402 источника включает в себя родительский DMS 126 и приемник 1404. Родительский DMS 126 используется для управления удаленными программными компонентами, которые размещены в устройстве-источнике 102, показанном на фиг.12. Приемник 1404 принимает данные, которые передаются в потоке передатчиком (не показан) на приемник 1206, описанный выше.
На фиг.15 показан примерный вариант 1500 реализации программы-посредника 1502 стока. Программа-посредник 1502 стока включает в себя родительский DMS 126, который используется для управления программной компонентой 1302, находящейся в клиентском устройстве 104, показанном на фиг.13. Передатчик 1504 передает данные на приемник (не показан), как было описано выше. Программа-посредник 1502 стока может быть использована для потоковой передачи данных от программной компоненты без использования родительского DMS 126 для управления той программной компонентой, которая действует как источник данных.
На фиг.16 показан примерный вариант реализации распределенной топологии 1600 с удаленным источником, которая включает в себя программу-посредник 1602 источника. Приложение 208 и средство 218 мультимедиа исполняются на клиентском устройстве 104, как было описано в распределенной топологии с удаленным источником, показанной на фиг.6-9. Однако в этом случае родительский DMS 126, который принимает запрос от приложения 208 на потоковую передачу данных, не будет использован для управления каждой из программных компонент устройства-источника 102, которые включают в себя данные, подлежащие потоковой передаче. Другими словами, родительский DMS 126 не влияет на управление всей распределенной программной инфраструктурой, которая строится на основе распределенной топологии. Следовательно, при определении распределенной топологии родительский DMS 126 обращается к программе-посреднику 1602 источника, так что данные передаются в потоке на программную компоненту, которая не управляется родительским DMS 126.
Родительский DMS 126 обеспечивает управление программными компонентами, находящимися в устройстве-источнике 102, для потоковой передачи данных от устройства-источника 102 на клиентское устройство 104, на котором размещен родительский DMS 126. Например, родительский DMS 126 может управлять программной компонентой 1604 источника и передатчиком 1606 посредством использования средства 1608 мультимедиа. Передатчик 1606 осуществляет потоковую передачу данных на приемник 1610, как было описано выше. Однако родительский DMS 126 не управляет адресатом данных, к которому в этом случае будут обращаться как к стоку 1612. Сток 1612 является программной компонентой, которая показана для того, чтобы обозначить адресат для данных, который не управляется родительским DMS 126. Следовательно, родительский DMS 126 просто осуществляет потоковую передачу данных в сток 1612, не управляя им. Приложение 208 может взаимодействовать с программой-посредником 1602 источника, как если бы это была локальная программная компонента 1614, даже если родительский DMS 126 управляет программными компонентами, которые удалены по отношению к приложению 208, например находятся в устройстве-источнике 102.
На фиг.17 показана иерархия 1700 управления в распределенной топологии 1600 с удаленным источником, показанной на фиг.16. В распределенной топологии 1600 с удаленным источником родительский DMS 126 обеспечивает управление средством 1606 мультимедиа, программной компонентой 1604 источника, передатчиком 1606 и приемником 1610, как было описано выше. Поскольку родительский DMS 126 не влияет на управление стоком 1613, родительский DMS 126 определяет сток 1612 как вывод, на который должны передаваться данные в потоке, но без управления.
На фиг.18 показан примерный вариант реализации распределенной топологии 1800 с удаленным стоком, которая включает в себя программу-посредник 1802 стока. Распределенная топология 1800 с удаленным стоком аналогична распределенной топологии 1600 с удаленным источником. В этом варианте реализации приложение 208 и средство 218 мультимедиа исполняются на устройстве-источнике 102, как было описано в связи с распределенной топологией с удаленным стоком, показанной на фиг.10-11.
Родительский DMS 126, который принимает запрос от приложения 208 на потоковую передачу данных, не будет использован в распределенной программной инфраструктуре для управления всеми программными компонентами клиентского устройства 104, которые содержат потоковую передачу данных. Следовательно, в ответ на запрос родительский DMS 216 обращается к программе-посреднику 1802 стока, так что данные, подлежащие потоковой передаче, могут приниматься с использованием программной компоненты, на которую не распространяется управление со стороны родительского DMS 126.
Родительский DMS 126 обеспечивает управление программными компонентами, находящимися в клиентском устройстве 104, которое принимает данные, передаваемые в потоке от устройства-источника 102. Например, родительский DMS 126 может управлять приемником 1804 и клиентской программной компонентой 1806 посредством использования средства 1808 мультимедиа. Передатчик 1810, как было описано выше, используется для потоковой передачи данных на приемник 1804. Однако родительский DMS 126 не управляет всеми программными компонентами, осуществляющими потоковую передачу данных, к которым в этом случае будут обращаться как к первоисточнику 1812. Таким образом, родительский DMS 126 просто принимает данные от первоисточника 1812, не управляя ими. Приложение 208 может определить программу-посредник 1802 стока как локальную программную компоненту 1814.
На фиг.19 показана иерархия 1900 управления в распределенной топологии 1800 с удаленным стоком, показанной на фиг.18. Родительский DMS 126 обеспечивает управление средством 1808 мультимедиа, клиентской программной компонентой 1806, приемником 1804 и передатчиком 1810. Поскольку родительский DMS 126 не влияет на управление первоисточником 1812, родительский DMS 126 определяет первоисточник 1812 как ввод, из которого принимают данные, но на который не распространяется управление со стороны родительского DMS 126.
Распределенная топология с третьей стороной
На фиг.20 показан примерный вариант реализации, в котором система 2000 включает в себя устройство 2002 третьей стороны, имеющее соединение для связи с устройством-источником 102 и клиентским устройством 104 через сеть 106. В предыдущих вариантах реализации были описаны распределенные топологии, для которых определение и управление обеспечивались либо устройством-источником 102, либо клиентским устройством 104. Для исполнения родительского DMS 126 можно также применить устройство 2002 третьей стороны посредством использования интегрированного подхода, предоставляемого родительским DMS 126. Таким образом, устройство 2002 третьей стороны можно использовать для определения распределенной топологии для потоковой передачи данных от устройства-источника 102 на клиентское устройство 104.
На фиг.21 показан примерный вариант реализации с распределенной топологией 2100, где имеется третья сторона. Устройство 2002 третьей стороны исполняет родительский DMS 126, который принимает запрос от приложения 208 через средство 218 мультимедиа для потоковой передачи данных от устройства-источника 102 на клиентское устройство 104. Родительский DMS 126 создает первый дочерний DMS 2102 для определения части распределенной топологии, которая включает в себя устройство-источник 102. Первый дочерний DMS 2102 обеспечивает также управление программными компонентами, включенными в состав устройства-источника 102. Родительский DMS 126 создает также второй дочерний DMS 2104 для определения части распределенной топологии клиентского устройства 104. Второй дочерний DMS 2104 обеспечивает управление программными компонентами, включенными в состав клиентского устройства 104.
Первый дочерний DMS 2102 обращается к программной компоненте 2106 источника и передатчику 2108, управление которыми осуществляется средством 2110 мультимедиа. Второй дочерний DMS 2104 обращается к приемнику 2112 и клиентской программной компоненте 2114, управление которыми осуществляется средством 2116 мультимедиа. На фиг.22 показана иерархия 2200 управления в распределенной топологии 2100 с третьей стороной, изображенной на фиг.21. Из иерархии 2200 видно, что родительский DMS 126 обеспечивает управление первым дочерним DMS 2102 и вторым дочерним DMS 2104. Первый дочерний DMS 2102 обеспечивает управление программной компонентой 2106 источника, передатчиком 2108 и средством 2100 мультимедиа. Второй дочерний DMS 2104 обеспечивает управление приемником 2112, клиентской программной компонентой 2114 и средством 2116 мультимедиа.
Распределенная топология 2100 с управлением через третью сторону может быть сконфигурирована различными способами. В примере, показанном на фиг.21, родительский DMS 126 обеспечивает управление программными компонентами, которые находятся в устройстве-источнике 102 и клиентском устройстве 104. Устройство 2002 третьей стороны по фиг.20 также может исполнять родительский DMS 126 для определения распределенной топологии, где управление обеспечивается либо устройством-источником 102, либо клиентским устройством 104. Также следует заметить, что в иллюстративном варианте реализации, показанном на фиг.21, данные передаются в потоке от устройства-источника 102 на клиентское устройство 104 без прохождения потока через устройство 2002 третьей стороны. Таким путем устройство 2002 третьей стороны может определить распределенную топологию, которая осуществляет потоковую передачу данных, само при этом не выполняя в действительности потоковую передачу данных. В дополнительных вариантах реализации данные передаются в потоке от устройства-источника 102 на клиентское устройство 104 через устройство 2002 третьей стороны.
Распределенная топология, имеющая множество потоков
Хотя предыдущие варианты реализации для упрощения обсуждения были описаны применительно к одному потоку данных, родительский DMS 126 может осуществлять потоковую передачу множества потоков данных. Например, может быть использовано множество устройств-источников, где каждое из устройств-источников передает данные в потоке на одно клиентское устройство. Кроме того, одно устройство-источник может передавать множество потоков данных на одно или несколько клиентских устройств. Аналогичным образом множество клиентских устройств могут принимать один поток данных от устройства-источника. Хотя здесь будет обсуждаться один пример использования множества потоков данных, каждая из ранее обсужденных распределенных топологий и распределенных программных инфраструктур может поддерживать множество потоков данных.
На фиг.23 показан примерный вариант реализации системы 2300, в которой множество устройств-источников осуществляет потоковую передачу данных на клиентское устройство 104. Система 2300 может включать в себя первое устройство-источник 2302, которое сконфигурировано в виде камеры, готовой к работе в сети, например имеет функциональные возможности, позволяющие ей устанавливать связь с сетью 106. Система 2300 также включает в себя второе устройство-источник 2304, которое сконфигурировано в виде устройства аудиоввода, готового к работе в сети, такого как микрофон, приспособленный для работы в сети. Первое устройство-источник 2302 передает поток видеоданных, а второе устройство-источник 2304 передает поток аудиоданных для их использования клиентским устройством 104. Первое и второе устройства-источники 2302 и 2304 могут быть сконфигурированы различными способами, к примеру в виде устройств UPnP.
На фиг.24 показан примерный вариант реализации распределенной топологии для использования в системе 2300 по фиг.23. Клиентское устройство 104 включает в себя приложение 208, которое запрашивает потоковую передачу данных как от первого, так и от второго устройств-источников 2302, 2304 для воспроизведения в клиентском устройстве 104. Родительский DMS 126 принимает запрос через средство 218 мультимедиа и определяет распределенную топологию для потоковой передачи аудио- и видеоданных.
Родительский DMS 126 создает первый дочерний DMS 2402 для определения части распределенной топологии первого устройства-источника 2302. Первый дочерний DMS 2402 также обеспечивает управление программными компонентами, включенными в состав первого устройства-источника 2302. Кроме того, родительский DMS 126 создает второй дочерний DMS 2404 для определения части распределенной топологии второго устройства-источника 2302. Второй дочерний DMS 2404 также управляет программными компонентами, включенными в состав второго устройства-источника 2302.
Первый дочерний DMS 2402 обращается к программной компоненте 2406 камеры и передатчику 2408, управление которыми осуществляется средством 2410 мультимедиа. Второй дочерний DMS 2404 обращается к программной компоненте 2412 аудиоданных и передатчику 2414, управление которыми осуществляется средством 2416 мультимедиа. Родительский DMS 126 может управлять первым и вторым дочерними DMS 2402 и 2404 для координации потоковой передачи аудио- и видеоданных на клиентское устройство 104.
Оптимизация определения распределенных топологий
На фиг.25 показан примерный вариант реализации системы 2500, в которой родительский DMS 126 определяет распределенную топологию оптимальным образом на основе возможностей устройства-источника 102 и клиентского устройства 104 в отношении взаимодействия с потоковой передачей данных. Для локального воспроизведения данных устройство-источник 102 может создать необработанный поток данных 2502, то есть поток данных, которые не были обработаны либо не были подвергнуты анализу; причем эти данные поступают от включенного в состав системы периферийного устройства-источника 108. Необработанные данные 2502 уплотняются для формирования уплотненных данных 2504, так что эти данные можно эффективно передавать и сохранять. Для взаимодействия с уплотненными данными устройство-источник 102 разуплотняет сжатые данные 2504, чтобы получить разуплотненные данные 2506. Затем разуплотненные данные 2506 проходят этап воспроизведения для формирования воспроизведенных данных 2508, то есть данных, пригодных для вывода в воспринимаемой форме для взаимодействия с пользователем (например, отображаются, проигрываются на аудиоустройстве и т.д.).
Родительский DMS 126 может обеспечить оптимизированную распределенную программную топологию путем распознавания возможностей как устройства-источника 102, так и клиентского устройства 104. Например, как показано на фиг.25, родительский DMS 126 может определить распределенную топологию, в которой уплотненные данные 2504, полученные из необработанных данных 2502, передаются в потоке на клиентское устройство 104. Клиентское устройство 104 может затем разуплотнить сжатые данные 2504, сформировав разуплотненные данные 2510. Затем разуплотненные данные 2510 воспроизводят для формирования воспроизведенных данных 2512 для их использования устройством 124 воспроизведения.
Оптимизацию распределенной топологии можно использовать для создания распределенной программной инфраструктуры, которая распределяет ресурсы, используемые для потоковой передачи данных. Например, вместо того, чтобы обеспечить устройство-источник 102 достаточными аппаратными и программными ресурсами для разуплотнения и воспроизведения, эти функциональные возможности можно обеспечить в клиентском устройстве 104. Кроме того, уплотняемые данные можно уплотнять таким образом, чтобы обеспечивалось их шифрование. Если обеспечить шифрование уплотняемых данных 2504, то эти данные остаются закодированными и, следовательно, может быть обеспечена их безопасная потоковая передача через сеть 106.
Примерная процедура
На фиг.26 представлена блок-схема последовательности операций, изображающая примерную процедуру 2600, в ходе которой строится распределенная программная инфраструктура из программных компонент, которая осуществляет потоковую передачу данных от устройства-источника 102 на клиентское устройство 104. В блоке 2602 приложение 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 показаны компоненты типового примера компьютерной среды 2700, включающей в себя компьютер под ссылочной позицией 2702. В различных вариантах реализации устройство-источник 102, клиентское устройство 104 и/или устройство 2002 третьей стороны могут быть сконфигурированы в виде компьютера 2702. Компоненты, показанные на фиг.27, являются только примерами, при этом подразумевается, что они не накладывают какого-либо ограничения на объем функциональных возможностей изобретения; изобретение не обязательно зависит от показанных на фиг.27 признаков.
В общем случае можно использовать различные конфигурации вычислительных систем общего и специального назначения. Примеры известных вычислительных систем, сред и/или конфигураций, которые могут подойти для использования с данным изобретением, включают в себя, но не в ограничительном смысле, персональные компьютеры, компьютеры-серверы, карманные или портативные компьютеры, мультипроцессорные системы, системы на базе микропроцессоров, компьютерные приставки, программируемую бытовую электронную аппаратуру, сетевые персональные компьютеры, устройства, готовые к работе в сети, миникомпьютеры, универсальные компьютеры, распределенные вычислительные среды, которые включают в себя любые из вышеперечисленных систем или устройств, и т.п.
Функциональные возможности компьютеров во многих случаях воплощены в виде машиноисполняемых команд, таких как программные компоненты, которые исполняются компьютером. В общем случае программные компоненты включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.п., которые выполняют конкретные задания или реализуют определенные абстрактные типы данных. Задания также могут выполняться удаленными устройствами обработки данных, которые связаны через сеть связи. В распределенной вычислительной среде программные компоненты могут находиться как на локальных, так и на удаленных компьютерных носителях данных.
Команды и/или программные компоненты в разное время хранятся на разных машиносчитываемых носителях, которые либо являются частью компьютера, либо могут считываться компьютером. Программы обычно распространяются, например, на гибких дисках, компакт-дисках (CD-ROM), универсальных цифровых дисках (DVD), либо в среде передачи данных некоторого типа, например, в виде модулированного сигнала. С перечисленных носителей они устанавливаются или загружаются во вторичную память компьютера. При исполнении они загружаются, по меньшей мере частично, в главную электронную память компьютера.
В иллюстративных целях программы и другие исполняемые программные компоненты, такие как операционная система, показаны здесь в виде дискретных блоков, хотя очевидно, что такие программы и компоненты находятся в разные моменты времени в разных компонентах хранения данных компьютера и исполняются устройством (устройствами) обработки данных компьютера.
Обратимся к фиг.27, где компоненты компьютера 2702 могут включать в себя, но не в ограничительном смысле блок 2704 обработки данных, системную память 2706 и системную шину 2708, которая соединяет различные системные компоненты, включая системную память, с блоком 2704 обработки данных. Системная шина 2708 может быть реализована в виде шинной структуры любого из нескольких типов, в том числе в виде шины памяти или контроллера памяти, периферийной шины, и локальной шины с использованием любой из множества различных шинных архитектур. В качестве примера, а не ограничения такие архитектуры могут включать в себя шину с архитектурой промышленного стандарта (ISA), шину с микроканальной архитектурой (MCA), шину с расширенной архитектурой ISA (EISA), локальную шину Ассоциации по стандартам видеооборудования (VESA) и шину межсоединений периферийных компонентов (PCI), известную также как мезонинная шина.
Компьютер 2702 обычно включает в себя множество различных машиночитаемых носителей. Машиночитаемые носители могут представлять собой любые имеющиеся носители, к которым компьютер 2702 может осуществить доступ, и могут включать в себя как энергозависимые, так и энергонезависимые носители, а также как съемные, так и несъемные носители. В качестве примера, но не ограничения машиночитаемые носители могут содержать компьютерные носители данных и среды передачи. «Компьютерные носители данных» включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или по любой технологии для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули или другие данные. Компьютерные носители данных включают в себя, но не в ограничительном смысле, ОЗУ (RAM), ПЗУ (ROM), электрически стираемое программируемое ПЗУ (EEPORM), флэш-память, либо память, выполненную по другой технологии, ПЗУ на компакт-диске (CD ROM), цифровые универсальные диски (DVD), либо другое запоминающее устройство на оптическом диске, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитном диске или другие магнитные запоминающие устройства, либо любой другой носитель, который можно использовать для хранения требуемой информации и к которому компьютер 2702 может осуществить доступ. Среды передачи обычно воплощают машиночитаемые команды, структуры данных, программные модули либо другие данные в сигнале модулированном данными, таком как сигнал несущей или другой механизм транспортировки, и включают в себя любые среды для доставки информации. Термин «сигнал, модулированный данными» означает сигнал, имеющий одну или несколько характеристик, установленных или измененных таким образом, чтобы обеспечить кодирование информации в этом сигнале. В качестве примера, но не ограничения среды передачи включают в себя проводные среды, такие как проводная сеть или непосредственное проводное соединение, и беспроводные среды, такие как акустическая, радиочастотная (RF), инфракрасная и другие беспроводные среды. Комбинации из любых вышеперечисленных носителей и сред также охватываются понятием «машиночитаемый носитель».
Системная память 2706 включат в себя компьютерный носитель данных в виде энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство 2710 (ПЗУ) и оперативное запоминающее устройство 2712 (ОЗУ). В ПЗУ 2710 обычно находится базовая система 2714 ввода/вывода (BIOS), содержащая базовые процедуры, которые помогают пересылать информацию между элементами в компьютере 2702, к примеру, во время запуска. ОЗУ 2712 обычно содержит данные и/или программные компоненты, которые оперативно доступны для блока 2704 обработки данных и/или обрабатываются им в текущий момент. На фиг.27 в качестве примера, но не ограничения показаны операционная система 2716, прикладные программы 2718, программные компоненты 2720 и данные 2722 программ.
Компьютер 2702 может также включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители данных. Только в качестве примера на фиг.27 показаны: накопитель 2724 на жестких магнитных дисках, который осуществляет считывание или запись на несъемный энергонезависимый магнитный носитель; дисковод 2726 для магнитного диска, который осуществляет считывание или запись на съемный энергонезависимый магнитный диск 2728; и дисковод 2730 для оптического диска, который осуществляет считывание или запись на съемный энергонезависимый оптический диск 2732, такой как CD ROM либо другой оптический носитель. Другие съемные/несъемные энергозависимые/ энергонезависимые компьютерные носители данных, которые можно использовать в приведенной в качестве примера операционной среде, включают в себя, но не в ограничительном смысле кассеты с магнитной лентой, карты флэш-памяти, цифровые универсальные диски, цифровую видеоленту, твердотельное ОЗУ, твердотельное ПЗУ и т.п. Накопитель 2724 на жестких магнитных дисках обычно подсоединен к системной шине 2708 через интерфейс несъемной памяти, такой как интерфейс 2734 носителей данных, а дисковод 2726 для магнитного диска и дисковод 2730 для оптического диска обычно подсоединены к системной шине 2708 через интерфейс съемной памяти.
Накопители и дисководы и связанные с ними компьютерные носители данных, обсужденные выше и показанные на фиг.27, обеспечивают хранение машиночитаемых команд, структур данных, программных компонентов и других данных для компьютера 2702. На фиг.27 в качестве примера показано, что в накопителе 2724 на жестких магнитных дисках хранятся операционная система 2716′, прикладные программы 2718′, программные компоненты 2720′ и программные данные 2722′. Заметим, что эти компоненты могут совпадать либо отличаться от операционной системы 2716, прикладных программ 2718, программных компонент 2720 и данных 2722 программ. Операционная система 2716′, прикладные программы 2718′, программные компоненты 2720′ и программные данные 2722′ имеют здесь другие цифровые обозначения, чтобы показать, что они, как минимум, являются другими копиями. Пользователь может ввести в компьютер 2702 команды и информацию через устройства ввода, такие как клавиатура 2736 и указательное устройство (не показано), известное как «мышь», шаровой манипулятор или сенсорный планшет. Другие устройства ввода могут включать в себя периферийные устройства-источники (такие как микрофон 2738 или камеру 2740, обеспечивающие потоковую передачу данных), джойстик, игровую приставку, спутниковую антенну, сканер или т.п. Эти и другие устройства ввода часто подсоединены к блоку 2702 обработки через интерфейс 2742 ввода/вывода (I/O), который соединен с системной шиной, но могут быть подсоединены с помощью других интерфейсных и шинных структур, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). К системной шине 2708 через интерфейс, такой как видеоадаптер 2746, также подсоединен монитор 2744 либо устройство отображения другого типа. В дополнение к монитору 2744 компьютеры могут также включать в себя другие периферийные устройства воспроизведения (например, громкоговорители) и один или несколько принтеров 2748, которые могут быть подсоединены через интерфейс (I/O) 2742.
Компьютер может работать в сетевой среде, используя логические соединения с одним или несколькими удаленными компьютерами, такими как удаленный компьютер 2750. Удаленный компьютер 2750 может представлять собой персональный компьютер, устройство, готовое к работе в сети, сервер, маршрутизатор, сетевой персональный компьютер, одноранговое устройство либо другой обычный сетевой узел, причем такой компьютер обычно включает в себя многие или все элементы, описанные выше в связи с компьютером 2702. Логические соединения, изображенные на фиг.27, включают в себя локальную сеть (LAN) 2752 и глобальную сеть (WAN) 2754. Хотя на фиг.27 показано, что WAN 2754 является сетью Интернет, WAN 2754 также может включать в себя другие сети. Такие сетевые среды типичны для офисов, компьютерных сетей масштаба предприятия, интрасетей и т.п.
При использовании в сетевой среде LAN компьютер 2702 подсоединен к LAN 2752 через сетевой интерфейс или адаптер 2756. При использовании в сетевой среде WAN компьютер 2702 обычно включает в себя модем 2758 либо другое средство для установления связи через интернет 2754. Модем 2758, который может быть встроенным или внешним, может быть подсоединен к системной шине 2708 через интерфейс 2742 ввода/вывода либо другой подходящий механизм. В сетевой среде программные модули, показанные применительно к компьютеру 2702 или его частям, могут храниться в удаленном устройстве 2750. На фиг.27 в качестве примера, но не ограничения, показано, что удаленные прикладные компоненты 2760 находятся в удаленном устройстве 2750. Очевидно, что показанные сетевые соединения являются лишь примерами и что можно использовать другие средства для установления линии связи между компьютерами.
Заключение
Хотя изобретение было описано в терминах, специфичных для структурных признаков и/или методологических действий, должно быть ясно, что изобретение, определенное в прилагаемой формуле изобретения, не обязательно сводится к вышеописанным конкретным признакам или действиям. Вернее считать, что конкретные признаки и действия раскрыты здесь в качестве примерных форм реализации заявленного изобретения.
Формула изобретения
1. Способ построения распределенной программной инфраструктуры, содержащий этапы, на которых
запрашивают потоковую передачу данных от устройства-источника на клиентское устройство через сеть;
распознают возможности клиентского устройства в отношении воспроизведения потока данных;
распознают возможности устройства-источника в отношении осуществления потоковой передачи данных, подлежащих воспроизведению;
строят распределенную программную инфраструктуру на основе обеих упомянутых возможностей, включающую в себя множество программных компонент, которые при их исполнении удовлетворяют упомянутый запрос, при этом по меньшей мере одна из упомянутого множества программных компонент является исполняемой на каждом из устройства-источника и клиентского устройства.
2. Способ по п.1, в котором распределенная программная инфраструктура приспособлена для потоковой передачи данных от устройства-источника на клиентское устройство без воспроизведения данных устройством-источником перед потоковой передачей данных.
3. Способ по п.1, в котором:
на этапе запроса также запрашивают потоковую передачу данных от дополнительного устройства-источника на клиентское устройство; и
на этапе построения распределенную программную инфраструктуру строят таким образом, что упомянутое множество программных компонент при их исполнении удовлетворяет упомянутый запрос на потоковую передачу данных от каждого из устройства-источника и дополнительного устройства-источника соответственно на клиентское устройство.
4. Способ по п.1, в котором:
на этапе запроса также запрашивают потоковую передачу данных от устройства-источника на дополнительное клиентское устройство; и
на этапе построения распределенную программную инфраструктуру строят таким образом, что упомянутое множество программных компонент при их исполнении удовлетворяет упомянутый запрос на потоковую передачу данных от устройства-источника на каждое из клиентского устройства и дополнительного клиентского устройства.
5. Способ по п.1, в котором распределенная программная инфраструктура включает в себя распределенную мультимедийную программную компоненту, которая обеспечивает централизованное управление, с помощью которого:
управление упомянутой по меньшей мере одной программной компонентой, исполняемой на устройстве-источнике, может осуществляться этой распределенной мультимедийной программной компонентой; и
управление упомянутой по меньшей мере одной программной компонентой, исполняемой на клиентском устройстве, может осуществляться этой распределенной мультимедийной программной компонентой.
6. Способ по п.1, в котором построение выполняют без вмешательства пользователя на устройстве, выбранном из группы, которая состоит из устройства-источника, клиентского устройства и устройства третьей стороны.
7. Машиночитаемый носитель, содержащий машиноисполняемые команды, которые при их исполнении реализуют способ по п.1.
8. Способ построения распределенной программной инфраструктуры с целью удовлетворения запроса на потоковую передачу данных, содержащий этапы, на которых
принимают запрос на потоковую передачу данных от устройства-источника на клиентское устройство через сеть;
распознают возможности клиентского устройства в отношении воспроизведения потока данных;
распознают возможности устройства-источника в отношении осуществления потоковой передачи данных, подлежащих воспроизведению; и
строят распределенную программную инфраструктуру на основе обеих упомянутых возможностей, которая включает в себя программные компоненты для удовлетворения упомянутого запроса, причем по меньшей мере одна из упомянутых программных компонент является исполняемой на каждом из устройства-источника и клиентского устройства.
9. Способ по п.8, в котором распределенная программная инфраструктура приспособлена для потоковой передачи данных от устройства-источника на клиентское устройство без воспроизведения данных устройством-источником перед потоковой передачей данных.
10. Способ по п.8, в котором распределенная программная инфраструктура включает в себя распределенную мультимедийную компоненту, которая обеспечивает централизованное управление, так что:
управление упомянутой по меньшей мере одной программной компонентой, исполняемой на устройстве-источнике, может осуществляться этой распределенной мультимедийной программной компонентой; и
управление упомянутой по меньшей мере одной программной компонентой, исполняемой на клиентском устройстве, может осуществляться этой распределенной мультимедийной программной компонентой.
11. Способ по п.8, в котором прием и построение выполняют без вмешательства пользователя на устройстве, выбранном из группы, которая состоит из устройства-источника, клиентского устройства и устройства третьей стороны.
12. Машиночитаемый носитель, содержащий машиноисполняемые команды, которые при их выполнении реализуют способ по п.8.
13. Способ построения распределенной программной инфраструктуры на основе одной или большего количества возможностей устройства-источника, содержащий этапы, на которых распознают возможности клиентского устройства в отношении воспроизведения потока данных;
распознают возможности устройства-источника в отношении осуществления потоковой передачи данных, подлежащих воспроизведению; и
строят распределенную программную инфраструктуру на основе обеих упомянутых возможностей, включающую в себя множество программных компонент, которые при их исполнении осуществляют потоковую передачу данных от устройства-источника на клиентское устройство, при этом по меньшей мере одна из упомянутого множества программных компонент является исполняемой на каждом из устройства-источника и клиентского устройства.
14. Способ по п.13, в котором:
этап распознавания возможностей клиентского устройства дополнительно содержит этап, на котором анализируют клиентское устройство для нахождения программной компоненты, которая воспроизводит поток данных, и
этап распознавания возможностей устройства-источника дополнительно содержит этап, на котором анализируют устройство-источник для нахождения программной компоненты, которая осуществляет потоковую передачу данных.
15. Способ по п.13, в котором этапы распознавания возможностей клиентского устройства и устройства-источника соответственно дополнительно содержат этап, на котором выполняют запрос в справочную таблицу, которая содержит:
возможности клиентского устройства в отношении воспроизведения потока данных; и
возможности устройства-источника в отношении осуществления потоковой передачи данных, подлежащих воспроизведению.
16. Способ по п.13, в котором распределенная программная инфраструктура включает в себя распределенную мультимедийную программную компоненту, которая обеспечивает централизованное управление, так что:
управление упомянутой по меньшей мере одной программной компонентой, исполняемой на устройстве-источнике, может осуществляться этой распределенной мультимедийной программной компонентой; и
управление упомянутой по меньшей мере одной программной компонентой, исполняемой на клиентском устройстве, может осуществляться этой распределенной мультимедийной программной компонентой.
17. Способ по п.13, в котором построение выполняют без вмешательства пользователя на устройстве, выбранном из группы, которая состоит из устройства-источника, клиентского устройства и устройства третьей стороны.
18. Машиночитаемый носитель, содержащий машиноисполняемые команды, которые при их исполнении реализуют способ по п.13.
19. Способ потоковой передачи данных через сеть с целью их последующего воспроизведенеия, содержащий этапы, на которых принимают запрос на потоковую передачу данных от устройства-источника на клиентское устройство;
распознают возможности клиентского устройства в отношении воспроизведения потока данных;
распознают возможности устройства-источника в отношении осуществления потоковой передачи данных, подлежащих воспроизведению;
строят распределенную программную инфраструктуру на основе обеих упомянутых возможностей, включающую в себя множество программных компонент для удовлетворения упомянутого запроса;
осуществляют потоковую передачу данных от устройства-источника на клиентское устройство через сеть; и
воспроизводят данные клиентским устройством.
20. Машиночитаемый носитель, содержащий машиноисполняемые команды для построения распределенной программной инфраструктуры, которые при их исполнении предписывают вычислительному устройству выполнять действия, содержащие:
распознавание возможностей клиентского устройства в отношении воспроизведения потока данных;
распознавание возможностей устройства-источника в отношении осуществления потоковой передачи данных, подлежащих воспроизведению;
построение, без вмешательства пользователя, распределенной программной инфраструктуры на основе обеих упомянутых возможностей, включающей в себя множество программных компонент, которые при их исполнении осуществляют потоковую передачу данных от устройства-источника на клиентское устройство через сеть, при этом по меньшей мере одна из упомянутого множества программных компонент является исполняемой на каждом из устройства-источника и клиентского устройства.
21. Машиночитаемый носитель по п.20, в котором распределенная программная инфраструктура приспособлена для потоковой передачи данных от устройства-источника на клиентское устройство без воспроизведения данных устройством-источником перед потоковой передачей данных.
22. Система для построения распределенной программной инфраструктуры для потоковой передачи данных через сеть, содержащая:
устройство-источник, выполненное с возможностью осуществления потоковой передачи данных, подлежащих воспроизведению;
клиентское устройство, выполненное с возможностью воспроизведения потока данных; и
распределенную мультимедийную программную компоненту, которая при ее исполнении вызывает действия, подлежащие выполнению и включающие в себя:
распознавание возможностей клиентского устройства в отношении воспроизведения потока данных;
распознавание возможностей устройства-источника в отношении осуществления потоковой передачи данных, подлежащих воспроизведению; и
построение распределенной программной инфраструктуры на основе обеих упомянутых возможностей, включающей в себя множество программных компонент, которые при их исполнении осуществляют потоковую передачу данных от устройства-источника на клиентское устройство, при этом по меньшей мере одна из упомянутых программных компонент является исполняемой на каждом из устройства-источника и клиентского устройства.
23. Система по п.22, в которой устройство-источник выбирают из группы, состоящей из:
вычислительного устройства, которое локально соединено с периферийным устройством-источником; и
устройства, готового к работе в сети, которое выполнено с возможностью осуществлять потоковую передачу данных, подлежащих воспроизведению.
24. Система по п.22, в которой клиентское устройство выбирают из группы, состоящей из:
вычислительного устройства, которое локально соединено с устройством воспроизведения; и
устройства, готового к работе в сети и пригодного для воспроизведения данных.
25. Система по п.22, в которой построение дополнительно содержит предоставление по меньшей мере одной программной компоненты.
26. Система по п.22, в которой распределенная программная инфраструктура приспособлена для потоковой передачи данных от устройства-источника на клиентское устройство без воспроизведения данных устройством-источником перед потоковой передачей данных.
27. Система по п.22, в которой исполнение распределенной мультимедийной программной компоненты реализуется одним из устройства-источника, клиентского устройства и устройства третьей стороны.
28. Система для потоковой передачи и воспроизведения данных, содержащая:
устройство-источник, включающее в себя программную компоненту, которая при ее исполнении устройством-источником осуществляет потоковую передачу данных, подлежащих воспроизведению;
клиентское устройство, включающее в себя программную компоненту, которая при ее исполнении клиентским устройством воспроизводит поток данных; и
распределенную мультимедийную программную компоненту, которая при ее исполнении либо устройством-источником, либо клиентским устройством обеспечивает централизованное управление:
упомянутой программной компонентой, которая при ее исполнении устройством-источником осуществляет потоковую передачу данных, подлежащих воспроизведению;
упомянутой программной компонентой, которая при ее исполнении клиентским устройством воспроизводит поток данных.
29. Система по п.28, в которой устройство-источник выбирают из группы, состоящей из:
вычислительного устройства, которое локально соединено с периферийным устройством-источником; и
устройства, готового к работе в сети, которое выполнено с возможностью осуществлять потоковую передачу данных, подлежащих воспроизведению.
30. Система по п.28, в которой клиентское устройство выбирают из группы, состоящей из:
вычислительного устройства, которое локально соединено с устройством воспроизведения; и
устройства, готового к работе в сети и пригодного для воспроизведения данных.
РИСУНКИ
|
|