This invention relates generally to the field of distributed multimedia streaming and more particularly to IPTV middleware architecture and storage structure definition for media content distribution which facilitate interaction between a media console or IPTV terminal and other network components in the distributed system.
High bit rate multimedia streaming, particularly high bit rate video streaming has evolved from handling thousands of simultaneous subscriber to millions of subscribers. The conventional system architecture based on a single powerful machine or a cluster system with central control can no longer meet the massive demands.
One of the most important aspects of a content distribution network is its effectiveness, i.e. how it performs better than centralized system and how different content distribution networks perform against one another. To help measure effectiveness of content distribution, a set of quantified indicators is needed.
Additionally, traditional telecom message based interfaces and the related interoperability between a media console or IPTV terminal and the content distribution system becomes a bottleneck restricting new service introduction and development. The messaged based interoperability is inflexible, and is unable to expediently support new service development. A middleware based interoperability between IPTV terminal and distributed components of the IPTV system is therefore desirable to provide a flexible and expandable solution. This is also desirable to allow application vendors to conveniently develop various new service and applications without paying attention to the detailed parameter and message format of the interface, and reduce the time-to-market to launch new services.
A media content distribution system for distributed multimedia streaming communicates over a network and incorporates multiple independent media stations, each having a media director and a number of media engines. Each media engine includes storage for media content, retrieval system to obtain media content over the network and interconnection for streaming media content over the network. The media director controls the media station and is employed for directing retrieval over the network of media content by a selected media engine and tracking content stored on the media engines. A content request from a media console connected to the network is redirected by the media director to a selected one of the media engines storing content corresponding to the request for streaming. In exemplary embodiments, the media stations with associated media engines are interconnected in a dual hierarchy to provide physical proximity to users for storage of initial streaming segments of the media content.
At least one distribution center communicating over the network is provided and includes media content downloading capability and a media location registry communicating with the media director in each media station. The media location registry stores the location of all media content in the media stations.
In exemplary embodiments of the invention, a plurality of service processes for interaction between the media stations, content distribution components of providers, communications elements and system elements are coupled through a middleware system for control of the service processes. The middleware system incorporates a network layer providing a framework to support data exchange or network access within middleware system, a process layer having a middleware kernel and core server processes; and an Application Programming Interface (API).
The middleware Application Programming Interface (API) structure is provided for flexible interfacing between media consoles and content distribution system components. For the embodiment disclosed herein, a plurality of application programming interface (API) modules are provided for Security and Authentication management; upgrade and download; media play and control; Digital Rights Management (DRM) terminal management; and, Information display and control.
These and other features and advantages of the present invention will be better understood by reference to the following detailed description when considered in connection with the accompanying drawings wherein:
a is a diagram of the hardware interaction and process for streaming data to a subscriber's media console;
b is a flow diagram of the process for streaming data as shown in
a is a block diagram of the high level data flow for the integrated media switch incorporating the invention;
b is a flow diagram of Statistical indicators for measuring effectiveness of the content distribution network;
A media content distribution system incorporating the present invention employs two tiers, a media station that covers a district, and the media switch, consisting of a number of media stations, that covers a metropolitan area or several metropolitan areas.
The media station layer 110 provides multiple media stations for data streaming. A Media Station 112 is a self-sufficient streaming unit communicating with a set of subscribers having media consoles/terminals. Media Stations are typically installed in a Central Office (CO) in a broadband network. The placement of Media Services is determined according to the number of customers to be covered, network topology, and available bandwidth of the backbone network.
As will be described in greater detail subsequently, a Media Station has sufficient storage to store most frequently accessed programs and associated metadata. A subscriber's streaming request is sent to a Media Station. The Media Station will take appropriate actions and start the stream. Other requests from the subscriber such as trick-mode operations and EPG navigations are also sent to Media Station.
Media Stations interact with the Online support Layer 114 to obtain subscriber information, content management information, billing related information, and EPG related information. They also interact with the Online Support Layer as well as other Media Stations to copy or move program data among the media Stations and between a Media Station and the Data Center.
Each Media Station has a number of Media Engines 116. A Media Engine can be a blade in a chassis as will be described in greater detail subsequently. The Media Engine is responsible to streaming program data to the subscribers. The specific configuration of the Media Engine depends on the number of subscribers covered and the amount of program data stored in the Media Station.
A Media Director 118 is the control unit of a Media Station. All subscribers' initial streaming requests are sent to Media Director. In addition, the Media Director controls load balance, storage balance, and media data replication within the Media Station. In certain hardware applications as described in greater detail subsequently, one of the Media Engines will be used as a backup Media Director. It mirrors data from the Media Director during normal operation and takes over the role when the Media Director is out of service.
An Online Support layer 114 manages content information for the entire Media Switch system and controls the media data distribution among Media Stations. In exemplary embodiments, the Online Support layer also provides billing and subscriber management services to Media Stations and network management functions.
A Home Media Station 120 in the online support layer stores media data for all programs that are currently in service. A Content Engine 122 in this layer is the introduction point for media data into the system. The Content Engine obtains instructions from the Media Assets Management System (MAM) 124 in the back-office layer 126 and performs necessary encoding, trans-coding, or uploading from various sources such as digital video tapes, DVD, live TV, etc., stores this data in the Home media Station and distributes it to the Media Stations in the media station layer.
A Customer Self-service system 128 is also incorporated into the online support layer, through which a customer can check account status, pay subscription fees, purchase service plans for special programs, register service requests, as well as configure EPG settings.
The back office layer 126 provides offline support operations and generation of control data for the other layers. The Media Assets Management (MAM) system 124 is used to keep track of and control the life cycle of each media program. It assigns a system-wide unique Program ID for each new media program, and generates work orders for the Media Acquisition Control module 128, which in turn interacts with a human operator to start and control the operation of Content Engine in the online support layer. A Billing System 130 and the Subscriber Management System 132 manage back-end databases, and support user interfaces for setting up billing policies and entering or modifying subscriber information.
The MAM determines when and where to distribute a program. The CM publishes the program at the time specified by the MAM and the MLR identifies the location of the data for distribution. Logically, the resulting content distribution system is hierarchical as shown in
As previously described, a media station is a self-sufficient streaming unit covering a set of subscribers. Media stations in a typical application are installed in a CO of a broadband network. The placement of media stations is determined according to the number of subscribers to be covered, network topology and available bandwidth of the network.
As shown in
Each media program (a move, a documentary, a TV program, a music clip, etc.) is partitioned into smaller segments. Such partition provides a small granularity for media data units and makes data movement, replications, staging and management much easier and more efficient. Distribution of the content to the media stations is accomplished as shown in
A new program is loaded and distributed by the MAM transferring metadata 502 of the new program to Content Manager (CM) 212. The MAM then instructs Content Engine (CE) 122, by means of a work order 504, to transfer the program data 506 into Home Media Station (HMS) 120. The MAM updates the state of the program to “inactive” and specifies a publish time 508. The MAM sends distribution parameters 510 to the MLR to trigger the distribution of the program 512. The MLR starts the operation sequence to distribute contents to Media Stations 112 as will be described in greater detail subsequently. The CM sends the “publish” commands to all Media Stations at a specified time to start the serve of the program 514.
To provide content to the media stations to be available for subscriber access, content is “pushed” to the media stations as shown in
The MLR can plan the push sequence from Media Station to Media Station so the push operation can be done in shortest time to all Media Stations. For example, the logical tree structure shown in
For content which is not yet present on a media stations but published for distribution as shown in
For streaming content to subscribers, the media director in each of the media stations employs a load balancing scheme to keep track of the task load of the media engines in the media station. Load balance is achieved by directing streaming requests according to current system states and load distribution. An example of the communications sequence for data transfer under the command of the media director is shown in
A flow diagram of the sequence described with respect to
As a portion of the load balancing scheme, a rapid replication scheme is used to copy a segment from one media engine to another. When a media engine exceeds its capacity of streaming, a highly demanded segment can be replicated to another media engine and further requests for the segment are directed to the new media engine. The extra delay observed by the streaming request that triggered the replication is less than 30 milliseconds in exemplary embodiments.
The communications sequence is shown in
A stream swapping method is used to exchange two streams of the same segment, one on a first media engine ME2 that has a complete copy of the segment and a second on a second media engine ME1 which is currently receiving the same segment. Where the subscriber attempts a fast-forward while streaming from ME1 with the incomplete segment, the media director swaps the fast-forwarding stream from ME1 to ME2 (with the complete segment). The stream using the same segment running at normal rate is swapped from the first media engine to the second media engine thereby avoiding a failure of the fast forwarding operation.
The media engines in the media station are symmetrical with respect to input and output thereby allowing data to be taken into the media engine substantially as rapidly as streaming data is sent out. Therefore, the media station can be used as a high bit rate, massive storage repository. This architecture is specifically beneficial in live broadcast transmission where the program segments are transferred to the media stations in real time and streamed to the media consoles. Details of an embodiment of the media stations employed in the present invention are disclosed in copending patent application Attorney Docket No. U001 100085 entitled METHOD AND APPARATUS FOR A LOOSELY COUPLED, SCALABLE DISTRIBUTED MULTIMEDIA STREAMING SYSTEM having a common assignee with the present application, the disclosure of which is incorporated by reference as though fully set forth herein.
In addition to acquiring program segments, segments which are not requested from a media station will age out and be removed.
In certain instances, it is desirable to retain one copy of a program being deleted by media stations for storage reasons. This instance is also shown in
High level data flow for the overall media switch is shown in
Statistical indicators for measuring effectiveness of the content distribution network are shown in
Number of requests satisfied by pulling remote contents 1238 is defined by remote contents are not locally present and become locally present as result of the pulling operation triggered by the request. These are the requests that triggered pulling operation. The smaller proportion this number accounts for among total number of requests, the more effective the content push is. An alternative criterion, Number of requests satisfied by locally present contents 1240, is determined by locally present contents including pushed contents and pulled contents. The greater proportion this number accounts for, the more effective the combination of push and pull is. The value of Number of requests satisfied by locally present contents 1242 is the sum of Number of requests satisfied by pushed contents 1234 and Number of requests satisfied by pulled contents 1236.
Number of requests for remote contents 1246 is measured and the smaller proportion this number accounts for among total number of requests, the more effective the content push is. Number of unsatisfied requests for remote contents 1248 is created when the system is overloaded and requests cannot be satisfied regardless of whether the content is locally present or remote. Since content distribution is one of the contributors to system load, the smaller proportion this number accounts for among total number of requests, the less intrusive the overall content distribution is. The value of Number of requests for remote contents 1246 should be sum of Number of requests satisfied by pulling remote contents 1238 and Number of unsatisfied requests for remote contents 1248.
Similarly, Number of unsatisfied requests for locally present contents 1250 is also measured since when the system is overloaded these requests also can not be satisfied regardless of whether the content is locally present or remote. As with unsatisfied requests for remote contents, since content distribution is one of the contributors to system load, the smaller proportion this number accounts for among total number of requests, the less intrusive the overall content distribution is.
The total number of requests, Number of requests for contents 1232, should be sum of Number of requests satisfied by pulling remote contents 1238, Number of requests satisfied by locally present contents 1240, Number of unsatisfied requests for remote contents 1248 and Number of unsatisfied requests for locally present contents 1250.
Number of push sessions 1252 is measured to provide a ratio with Number of requests satisfied by pushed contents 1234 to indicate the effectiveness of content push 1254. The greater the ratio, the more requests a push session satisfies therefore more effective.
Similarly, Number of pull sessions 1256 is measured. A request for remote content may trigger multiple pull sessions. The ratio between Number of requests satisfied by pulled contents 1236 and Number of pull sessions 1256 indicates the effectiveness of content pull 1258. The greater the ratio, the more requests a pull session satisfies, therefore more effective it is.
To measure the total push traffic generated by the content distribution network and the total pull traffic generated by the content distribution network, Number of pushed bytes 1260 and Number of pulled bytes 1262 are measured.
The number of bytes actually consumed by users—the effective bytes, is measured by Number of served bytes 1264. The sum of Number of pushed bytes 1260 and Number of pulled bytes 1262 indicates the number of bytes made available to users. The ratio between the effective byes and the available bytes indicates effectiveness of content push and pull 1266. The greater the ratio is, the more effective the content push and pull are. The statistical measurements discussed herein are employed for analysis and modification of the storage requirements for the media stations and the amount and timing of cached data for content segments using the various system elements as described to maximize the system efficiency.
Returning to
An integrated billing system 1222 operates similarly through the cache 1216 providing billing data to a distributed billing function 1224 within the media stations, each having a subscriber and billing cache 1226 for data storage. Billing information is then transmitted to the media console for the subscriber.
The customer care self care system is also accessible by the subscriber through the media console. The customer self care system communicates through the cache to the billing and subscriber management systems.
A network management system (NMS) 1228 enables control of the hardware elements of the entire system. An exemplary NMS would be UTStarcom's MediaSwitch NMS.
From a hardware standpoint in a representative embodiment, the Media Switch system is hierarchical with four tiers; the entire system as represented in FIGS.2 and 12, as previously described, the Media Station, the chassis, and individual blades. From the top level as shown in
In the embodiment shown, the Media Station is a level of abstraction, with its state represented by its MD. Therefore, the MS is an entity in the management structure and a three-tier management system is employed.
network management is the first level and provides a full set of management functionalities and GUI. System load and other operational parameters such as temperature and fan speed are monitored. Automatic alarms can be configured to send email or call to the system operator.
Chassis management is the second level and provides blade presence detection, automatic blade power up, remote blade power up and power down, managed blade power up to avoid current surge during disk drive spin up, chassis id reading and chassis control fail-over.
Blade self-management and monitoring is the third level and allows temperature, fan speed, and power supply voltage monitoring and alarm through SNMP to the NMS, self-health monitoring including critical threads monitoring, storage level monitoring, load monitoring, etc. All alarm thresholds can be set remotely by NMS. For software related failures, software restart of OS reboot will be attempted automatically, and the event will be reported to NMS.
As shown in
All blades in a chassis are equipped with a control unit or Chassis Blade Controller (CBC) 1406. For the exemplary embodiment, each CBC consists of an Intel 8501 chip implementing the control logic and an FPGA configured to act as the control target. The 8501 chip also communicates with the main board 1408 through a UART interface 1410. The main board can issue control commands or relay control commands received from NMS through the network to the CBC.
For the exemplary embodiment, blades located in slot 5 and 6 are the control blades. One active and one standby determined by the arbitration logic at power up. When the chassis is being powered up, the blades in slots 5 and slot 6 arbitrate and one becomes the active controller. The CBC on the active control blade scans the backplane and powers up the blades in a controlled sequence with a pre-determined interval to avoid current surge caused by disk drive spin up on the individual blades.
The CBC on the active control blade then scans all slots on the backplate and detects the presence and status of each blade. The standby control blade monitors the status of the active control blade. When the active control blade gives up the control, the standby automatically takes over and become the active control blade.
During normal operation, the CBC on the active control blade periodically scans the backplane. If a new blade is plugged in, it will be automatically powered up.
The active control blade register itself with NMS, and can take commands from NMS for controlling other blades in the chassis, such as checking their presence and status, power up/down or power cycle a blade, etc. The non-controlling blades also register themselves to NMS and can take commands from NMS to reboot or power down.
From the management point of view, each blade is a standalone computer. Besides its application functionalities, each blade has management software to monitor the health of the application software, system load and performance, as well as hardware related parameters such as CPU temperature, fan speed, and power supply voltage. The blade management software functionality is shown in
The streaming application threads 1502 put their health and load information into a shared memory area periodically. The management monitor thread 1504 scans the area to analyze the status of the threads and the system. In addition to periodically reporting the state information to NMS through a SNMP agent 1506, appropriate actions as known in the art are taken when an abnormal state is detected.
As previously described, a service token based authentication scheme is employed as the precursor for any data transfer requested by a subscriber's media console.
A media console possesses two numbers, MC_ID and MC_Key. Those numbers can be either burned into a chip in the box, be on a Smartcard, or be on some form of non-volatile memory in the box. When a subscriber signs up for the service, the Subscriber Management system records the numbers and associates them with the user account. MC_ID and MC_Key will be subsequently passed to the Authentication Server.
A media console 104 when it powers up, after obtaining IP, sends an authentication request 1702 [which for the embodiment disclosed comprises MD_ID, {MD_ID, MC_IP, Other info, salt, checksum}_MC_Key] to the Authentication Server 1218. Note: {x}_k denotes that the message x is encrypted by k.
The Authentication Server finds the record of the media console using MC_ID, decrypts the message, and generates a session key, MC_SK, and an access_token for the media console. For an exemplary embodiment access_token={MC_SK, service code, timestamp, checksum}_MS_SK, where MS_SK is a secret key established previously between the authentication servier and the media station that serves the media console; “service code” indicates what services the token can be used for. The Authentication Server calculates the “seed key” for MC_SK. The Authentication Server replies 1704 to the media console with [{access_token, MS_IP, salt, checksum}_MC_Key]. The MC decrypts the message with MC_Key and obtains mc_token and the IP address of the Media Director that it should contact. The mc_token will be kept until the media console shuts down, or the authentication Server sends a new one. The media console sends 1706 mc_token to the application Server in the media station when requesting a media program, or the EPG server for browsing the EPG.
Middleware Application Programming Interfaces (APIs) are the enabling service functions which facilitate interaction between the media console or IPTV terminal and other content distribution network components. These services employ an open standard program interface, and can be used on different OS and hardware platforms. A middleware API module can be implemented based on various modes, but its basic function is to isolate applications from resources. Any application developed according to a specific middleware and its API can run on that middleware.
Middleware APIs are based on modularized software components. corresponding middleware functions are implemented through a transplantable sub-layer to call OS resources, drivers and lower layer hardware resources. At the same time, the middleware core modules provide various services to upper application layer, including all services related protocols and service implementation at a client media console, such as media play and control, media stream transmission control, user authentication, system resource management, download service and security management as exemplary functions.
An application is an integration of service functions of the middleware API. The middleware API module isolates the application from the hardware and operation system, enabling portability of the application. The embodiment disclosed herein defines the middleware core module by function. The following are the defining functions: stream rendering and control by different sources; commands and events; user authentication; system resources, such as file system, timer, etc; hardware resources, such as hard disk, memory, interface, and etc; network and transport protocol management; DRM and security management; startup and initialization; processes for security and authentications; software download and upgrades. Function of the middleware API is also extendable through use of a UltraWideBand (UWB) or WiFi chip in the media console capable of distributing content to a UWB or WiFi enabled home remote programmable device such as a PC or game controller, which operates with similar API stack to enable content distribution over dissimilar media to non-network controlled devices. Elements of the API can be distributed or derived from the signal distribution thus enabling applications at the remote programmable device to interact with the network at some or all of the API layers.
Exemplary API modules for the media content distribution system described are shown in
For the embodiment disclosed herein a Security and Authentication management API module 1802 is provided. The module is responsible for the security mechanism of whole system, including subscriber authentication, network security, software upgrade, and service application security, etc. Its main functions include Subscriber authentication; Service application authorization; Software upgrade and download authentication; Network security policy; Key and token management.
When the media console or IPTV terminal signs on to the content distribution system, the security and authentication management module initiates an IPTV terminal install procedure and subscriber authentication procedure. At the same time, through this procedure, the IPTV terminal receives and manages a corresponding key and token from system as previously described.
When the IPTV terminal upgrades and downloads software, the security and authentication management module authenticates the software. The user performs a Digital Signature for the application software, and the security and authentication management module checks the Digital Signature and ensures application was not changed. If the application software has not been verified with a digital signature, it will have only basic rights running in the IPTV terminal.
As shown in
A media play and control module 1806 is the streaming service controller. It provides media control and stream service operation functions for upper layer applications, such as play, pause, stop, fast forward, rapid return, etc. It is mainly responsible for screening signalling alternation and media implementation procedures of media console or IPTV terminal and media deliver system, and provide the API interface for upper applications. Consequently, media encapsulation format and signalling alternation procedure are not required by the applications. This module includes functions to create media stream control session, and be responsible for service control procedure of Video on Demand (VOD), multicast live TV, unicast live TV, and time shift; receive and decode media stream; media control, including play, stop, pause, resume, and other trick functions; media buffer management; trigger DRM process; hot key, stream control event and command handling; and Personal Video Recorder (PVR) control command;
A Digital Rights Management (DRM) API Module 1808 provides an unattached interface for upper layer applications, and admits applications to access the DRM system. The low layer DRM module will transparently process right control messages and right management messages, so the DRM module screens the difference between different DRM elements or systems. The DRM module in the exemplary embodiment includes the functions for license management; key management; and decrypting the media stream and data stream.
A terminal management API module 1810 provides IPTV terminal management and configuration functions such as local configuration, remote management, log management, version upgrade, exception management, security management, and Quality of Service policy management, etc. This detail management function includes management and configuring of the IPTV terminal through SNMP or TR069; Command Line Interface (CLI) engine; module and function configuration; system configuration such as various server address, etc; access mode configuration; audio visual (A/V) parameter configuration; and subscriber confirmation such as ADSL access account or IPTV account.
An Information display and control API module 1812 is responsible for providing a user interface (UI) engine for application and receiving, processing and dispatching some special events of the content distribution system from middleware modules to applications. These events include keyboard events, mouse events and remote controller events, including applications on the media console or remote devices communicating through the media console such as the UWB/WiFi enabled home remote programmable device previously described. This API module supports the functionality to receive Information (Price, Program, Metadata, Instant Message, and etc) from the content distribution system and to receive Information from media console remotes (subscribers).
In an exemplary embodiment of the present invention the API is implemented as a portion of a middleware solution in the IPTV system side (server side) in order to facilitate development efforts from the service providers. An exemplary embodiment is shown in
Coupled by the middleware are the content distribution components of providers such as VOD, Live TV, PVR and Internet and the communications elements such as cable, DSLAM and ATM and system elements such as STBs/PCs and servers
The middleware system in the embodiment shown consists of at least three layers. A network layer 1904 provides a framework to support data exchange or network access within middleware system. A process layer 1906 consists of a middleware kernel 1908 and core server process 1910 to present service enabling process. The previously described Application Programming Interface (API), presented in
The Network access layer provides operating system dependent support for at least three scenarios and their combination. A middleware component installation to a physical device, such as streaming server 1914 or STB 1916, network access, such as DSLAM 1918 or ATM 1920 access for provisioning, and third party server connection 1922 for data exchanging and integration purposes. For the embodiment shown OS supported are Windows, WindowsCE, Linus factor OS with a network protocol of IP, SOAP/XML and a programming interface employing C/C++, Java, or PHP.
The Middleware Kernel and Process layer 1906 is a modular based middleware framework that works as an engine to streamline each core process to make a service enabling presentation. The server process 1924 provides streaming, EPG, DRM, auth/security, TV, NMS, and Ad server functions. BackOffice processes 1926 such as SMS and billing are supported. Client functions 1928 such as asset management, resource yellowpage, encoder/decoder are coupled through the layer. With a modular structure, the middleware Kernel and process layer greatly boosts middleware scalability. For example, it could easily disable built-in streaming server processes and integrate with a third party product.
Based on service enabling presented from middleware kernel, the applications programming interface defines an interface instruction set so that end-user can build up their specific service, as required. This layer for the embodiment shown provides three programming language calling conventions, C/C++, Java and PHP.
Operations enabled through the middleware system presented in the embodiment herein include, as an example, a traditional centralized VOD system as shown in
The middleware structure adds flexibility in service development while reducing development cost. Not every single IPTV system must carry a full array of service modules. Middleware provides a fast and easy method to manually select the modules that are required by the service providers. In other words, system middleware must achieve inter-service process independence.
Additionally, the middleware structure hides lower level system details from application development. When service providers are developing new applications, they do not need to concern themselves with what underlying system components are running, such as Operating System and network interfaces. The application developers, only need to see a list of available services that have already been provided by the system middleware.
A middleware structure as disclosed provides an array of service components that are available to assist application development. An IPTV system has a tremendous number of components from the server viewpoint. For example, billing, user account management, streaming servers, authentication and so on. It is not in the service provider's best interest to manually configure and control all these components. Therefore, system middleware provides basic functionalities to assist application developers without requiring interaction with all elements of the system.
finally, the middleware structure provides an easy interface through the API. It provides a comprehensive, but yet intuitive interface for service providers to use in their application development. These interfaces cover all service processes that are included in the system middleware.
As disclosed with respect to
Powered by content distribution protocol, the content delivery system media stations as shown in
Having now described the invention in detail as required by the patent statutes, those skilled in the art will recognize modifications and substitutions to the specific embodiments disclosed herein. Such modifications are within the scope and intent of the present invention as defined in the following claims.
This application is a continuation-in-part of U.S. patent application Ser. No. 11/626,430 entitled DISTRIBUTED MULTIMEDIA STREAMING SYSTEM filed on Jan. 24, 2007 which is in turn a continuation in part of U.S. patent application Ser. No. 10/826,519 filed on Apr. 16, 2004 entitled METHOD AND APPARATUS FOR A LARGE SCALE DISTRIBUTED MULTIMEDIA STREAMING SYSTEM AND ITS MEDIA CONTENT DISTRIBUTION and having a common assignee with the present application.
Number | Date | Country | |
---|---|---|---|
Parent | 11626430 | Jan 2007 | US |
Child | 11744924 | May 2007 | US |
Parent | 10826519 | Apr 2004 | US |
Child | 11626430 | Jan 2007 | US |