Определение распределенной топологии для потоковой передачи данных

Иллюстрации

Показать все

Изобретение относится к области сочетания двух и более вычислительных машин, в частности способам инициализации потоковой передачи данных между этими устройствами. Технический результат, заключающийся в потоковой передаче данных через сеть, достигается за счет того, что вычислительные машины под управлением программных компонент устанавливают между собой сеанс связи через сеть, в ходе которого распознают возможности обоих устройств по обработке потока данных. На основе информации о возможностях устройств формируют распределенную программную среду обработки потоковых данных. Причем одно из устройств под управлением программной компоненты осуществляет передачу потоковых данных (устройство-источник), а другое - клиентское устройство под управление программной компоненты - осуществляет воспроизведение принятых потоковых данных. Кроме того, возможно централизованное управление работой упомянутых программных компонент посредством дополнительной программной компоненты, исполняемой либо устройством-источником, либо клиентским устройством. 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 включает в себя часть