This document generally relates to processing of digital media, and particularly relates to systems and techniques for automating the processes for distributing media programs on a network.
An online media distribution service typically distributes media programming to viewers over the Internet or a similar network. Media programs distributed by such services may include television programs, movies, other audio/visual content, audio content and/or the like that are obtained from one or more sources. Typically, viewers can connect to the online distribution service using a conventional web browser or other client program to obtain streaming or file-based programming as desired.
Media distribution services often receive their distributed content from any number of different production sources, syndicators, web-based services and/or other media sources as appropriate. Providing content from multiple sources, however, can create a number of challenges. Often, each content source has its own set of techniques and formats for delivering new material. Media files may be delivered, for example, using any number of different transport techniques and channels. Moreover, files may be received in any number of different compressed and/or uncompressed formats that may be transcoded or otherwise converted before the content is made available for distribution to viewers. Further, as viewers use an increasing variety of client devices (e.g., mobile phones, video game players, and other portable devices), it may be desirable to encode/transcode received content into any number of different distribution formats (e.g., different formats, and/or other files of different sizes, bit rates, frame rates, resolutions and/or other parameters) to accommodate a variety of viewers and viewing devices. Hence, the types and amounts of transcoding or other processing that may be performed on the received content prior to distribution can be significant.
Moreover, many different content providers have unique formats for the metadata that describes the media content itself. Most websites provide at least some description of the content that is distributed: this description may include the name of the program, names of actors/actresses, a brief description of the programming, any ratings or parental control information, and/or any other information as desired. This “metadata” information about the programming content may be provided by the content provider with the media content itself, or it may be retrieved from any other source. In either case, formatting of the metadata can be a significant challenge due to the wide variety of formats that may be used by any number of different data sources.
Content distributors therefore frequently encounter any number of challenges in converting received programming into formats that are suitable for distribution to customers. Typically, the large volume of content received, the relative frequency of content delivery and the desire to make content available as quickly as possible makes manual processing of received programming impractical, or at least undesirable in many implementations.
It is therefore desirable to create systems, methods and/or devices that automate at least some of the process for encoding media programs from any number of sources and/or for processing the metadata associated with such sources. These and other desirable features and characteristics will become apparent from the subsequent detailed description and the appended claims, taken in conjunction with the accompanying drawings and this background section.
Systems and methods are described to process media programs for distribution on a network. In various embodiments, a system to process a plurality of media programs suitably comprises a queue, a number of servers, and control logic. The queue is configured to receive each of the plurality of media programs in a predetermined format. Each of the number of servers is configured to retrieve at least one of the plurality of media programs from the queue and to process the at least one of the plurality of media programs. The control logic is configured to monitor a utilization of the queue and to adjust the number of servers based upon the utilization of the queue.
In other embodiments, a method to process a plurality of media programs is provided. The method suitably comprises placing each of the plurality of media programs on a queue, retrieving the media programs from the queue with each of a number of servers, processing the retrieved media programs with each of the servers, monitoring a utilization of the queue, and adjusting the number of servers based upon the utilization of the queue.
Still other embodiments provide a system to distribute a plurality of media programs on a network. The system comprises a receiving server, a processing system and a host. The receiving server is configured to receive each of the media programs and to format each of the media programs using a pre-determined format. The processing system comprises a queue and a number of servers each compatible with the pre-determined format, wherein the queue is configured to receive each of the media programs in the pre-determined format from the receiving server, and wherein each of the plurality of servers is configured to retrieve at least one of the media programs from the queue and to transcode the media program. The host is configured to receive the transcoded media programs and to make the transcoded media programs available on the network.
Various other embodiments, aspects and other features are described in more detail below.
Exemplary embodiments will hereinafter be described in conjunction with the following drawing figures, wherein like numerals denote like elements, and wherein:
The following detailed description is merely exemplary in nature and is not intended to limit the invention or the application and uses of the invention. Furthermore, there is no intention to be bound by any theory presented in the preceding background or the following detailed description.
Systems and methods are provided for automating the processing of media programming that is received from one or more sources. Received media programs are initially placed on a queue until a server is available to process the media program. A server retrieves the program from the queue, and provides any number of processing services to the received program. Services may include, for example, encode/transcode services, upload services, metadata formatting services, metadata upload services, and/or the like. The server therefore provides appropriate processing to make the program available for distribution from a network host or the like.
Various embodiments may adjust the number of servers available for processing by monitoring the number of programming jobs currently held by the queue. As the queue fills, additional servers may be requested from a cloud computing service or the like. Similarly, as the queue empties, servers may be released to conserve cost.
Various other embodiments may initially format received programming and any associated metadata into a pre-determined format prior to storage on the queue. The pre-determined format suitably allows processing by a service-oriented architecture (SOA) implemented on each server in which a media service bus (MSB) routes the received program obtained from the queue between any number of data processing services. To that end, some embodiments of the pre-determined format may include any sort of service request (e.g., an XML, SOAP or other message) that is compatible with the MSB architecture. This request may be provided with a decorator structure or the like that allows for information sharing between services on the MSB and/or that provides additional data about the programming and/or its metadata. Various other embodiments, enhancements and features are described in additional detail below.
Turning now to the drawing figures,
Network 112 is any digital or other communications network capable of transmitting data between senders (e.g., host 100) and receivers (e.g., client devices 114). In various embodiments, network 112 includes any number of public or private data connections, links and/or networks supporting any number of communications protocols. Network 112 may include the Internet, for example, or any other network based upon TCP/IP or other conventional protocols. In some implementations, network 112 may also represent a wireless and/or wired telephone network, such as a cellular communications network for communicating with mobile phones, personal digital assistants, and/or the like. Various embodiments of network 112 may also incorporate any sort of wireless or wired local area networks, such as one or more IEEE 802.3 and/or IEEE 802.11 networks, as well as any wider area links capable of inter-connecting such networks.
Network host 110 is any server or collection of servers capable of providing a front-end or other portal to system 100 that allows viewers to access media programs. In various embodiments, host 110 provides a conventional web-type server that provides program data to web browsers or other standard or proprietary client applications. Such data may be provided over network 112 using conventional TCP/IP, HTTP and/or other protocols as desired. Generally, host 110 will be implemented across any number of physical and logical server devices. For example, metadata and other visual content may be provided via a typical web portal residing at a well-known URL or other address, whereas streamed or other distributed content may be delivered from a separate server associated with a content delivery network or other provider. To receive a desired program, then, a user typically contacts network host 110 using a conventional browser or the like. The user then identifies the desired program by providing search criteria, navigating a user interface, and/or any other technique. In various embodiments, host 110 is able to search metadata associated with each program distributed to allow the user to search for programs based upon title, network, actor/actress names, genre and/or any other search criteria as desired. After the user has identified a desired program for viewing, host 110 may provide the program to a media player associated with one or more playback devices 114A-C. The program may be provided from host 110 itself, or from a server located at a content delivery network (CDN) or other backend location using any sort of streaming, file-based or other delivery techniques. Conventional web hosting and development techniques may therefore be applied in any manner to create a network host 110 that makes use of one or more server devices as appropriate.
Media programs may be received, formatted and made available on host 110 in any manner. In various embodiments, programming is received from any number of different content sources 102A-C at a receiving server 106. Content sources 102A-C may include studios or other content creators, syndicators or other content distributors, television networks, production houses, web or other network-based distributors, and/or any number of other sources 102 as desired. Program content may be delivered across any medium, including any sort of point-to-point or networked link. In various embodiments, the Internet or a similar network 112 may be used to receive programming from one or more sources 102A-C as well as to distribute processed programs to viewers.
Although
Metadata about the received content may be obtained from any source. In various embodiments, metadata is obtained from the content sources 102 with the delivered content itself. Alternatively, metadata may be obtained from any sort of database 104 that may or may not be associated with the provider of the programming itself. To that end, database 104 may be a web-based or other networked source of information (e.g., a database that can support queries across network 112). Alternately, database 104 may be a local database that is accessible to receiving server 106 and/or processing system 108, but that may not be otherwise available on network 112. Additional metadata about a particular program may be obtained from database 104 even when metadata is provided from the program source, particularly if the metadata provided from the source is incomplete, out-of-date, or in a less desirable format than metadata contained within database 104.
Received content and metadata may be processed in any manner. To that end, programming and/or metadata may be obtained from any number of programming sources, in any number of program formats, and using any number of transport techniques (e.g., FTP, TFTP, HTML, RSS and/or the like). In various embodiments, a common receiving server 106 transforms the received content (and its associated metadata, if appropriate) received in any manner from any number of different sources into a common format that is pre-determined and that is compatible with system 108.
The pre-determined format allows system 108 to process the received programming and/or its metadata without regard to the manner or format in which the content was received. To that end, the pre-determined format typically encompasses the received program data (or a pointer to the received data in other storage), as well as any associated metadata (or a pointer to the metadata) and/or any information about the program data and/or its metadata to enable system 108 to perform transcoding and/or other processing as appropriate. In various embodiments, transformation applications or other routines may be executed (e.g., at receiving server 106) to perform transport and format normalization so that the received data and/or metadata is placed into a format that is suitable for processing by system 108. In one embodiment, the pre-determined format provides a request for services in system 108 in the form of an XML, SOAP or similar message that includes (or references) the associated program content, metadata and/or other information as desired.
Again, in some embodiments receiving server 106 may be partially or wholly eliminated, and content providers 102A-C could simply provide some or all of their content in the appropriate format directly to system 108 for subsequent processing. Content providers 102 could provide programming and/or metadata in the pre-determined format, for example, and could provide the formatted content/metadata directly to system 108, thereby bypassing receiving server 106. Content could alternately be delivered in any proprietary, open or other agreed-upon structure to reduce the need for pre-processing by receiving server 106, as desired.
Received programming may be processed using any sort of processing system 108. Processing system 108 suitably performs transcoding, uploading, metadata processing and/or any other tasks to allow the received program to be distributed from host 110. To that end, processing system 108 suitably receives program data formatted according to the pre-determined job structure and processes each job as appropriate. Various embodiments of system 108 may be implemented using dedicated or shared hardware servers; other implementations may make use of virtual server features as part of a “cloud computing” service, such as any of the cloud computing services provided by AMAZON, GOOGLE, MICROSOFT, IBM, UBUNTU, SUN MICROSYSTEMS and/or any number of other providers. The Amazon Web Services (AWS) products and services available from Amazon.com, for example, could be used to implement some or all of processing system 108 in some embodiments, although other embodiments may use any other products or services as desired.
Program content and metadata are therefore received in any manner from any number of sources 112A-C, 114 and as desired. The received programs are appropriately transformed into in a pre-determined format to allow for transcoding and/or other processing. Each job is processed using system 108 to properly format or otherwise prepare the content for distribution from host 110 on network 112 to any number of clients 114A-C, as desired.
Queue 202 is any structure or service capable of maintaining jobs 206 in an orderly fashion. In various embodiments, queue 202 is a logical structure that is arranged for parallel processing, first-in-first-out (FIFO) processing, last-in-first-out (LIFO) processing, or any other processing scheme as desired. Job queue 202 may be implemented using, for example, the Amazon Simple Queue Service (SQS), although other embodiments may use any sort of queue, stack, array or other structure, or any service capable of providing queuing, messaging and/or the like. To that end, queue 202 may be physically provided on any sort of cloud service (e.g., SQS), or on any locally- or remotely-located hardware.
Each job 206A-E may be represented in queue 202 with any appropriate data structure or other format as desired. In the exemplary embodiment shown in
Jobs 206 on queue 202 may be processed in any manner. In various embodiments, any number of actual or virtual servers 204A-C are provided for parallel processing of jobs 206 as needed. In the exemplary embodiment shown in
In the embodiment shown in
Processing of each job 206 may proceed in any manner. As jobs 206 are retrieved from the queue by a connector 207 associated with a particular server 204, the jobs will typically become unavailable to other servers 204. The exemplary server 204 shown in
Server 204 appropriately performs each task sequentially by routing the job 206 from service to service on the media service bus 215. Other embodiments may provide additional services (e.g., additional encoding services 208 to support different formats, bit rates and/or other parameters) to those shown in
Each service 208-214 may be implemented in any format using any coding or scripting language. In various embodiments, each service 208-214 separately performs its processing of a job 206 without regard to the actions of other services. That is, each service 208-214 independently and sequentially performs its various functions on the particular job 206 as the job is routed from service to service on the media service bus 215. In such embodiments, each service 208-214 may provide status information (e.g., as information 224 in the decorator 220 associated with job 206) that can be accessed by other services. Each service, however, is typically isolated from the other services by the routing provided by media service bus 215, with information being shared through structure 220 as appropriate. For example, any number of jobs 206 may be routed between services 208-214 available on the media service bus 215 by MULE or another routing/messaging service. During processing by a service 208-214, the routing/messaging service may restrict processing by other services 208-214, thereby providing improved data integrity and reliability. This routing may be performed, for example, using MULE or any other enterprise service bus implementation that allows server 204 to be implemented using a service oriented architecture (SOA) or the like.
In some embodiments, different types of servers 204 may process different types of jobs 206, as desired. Some jobs 206 may need additional or reduced processing, for example (e.g., jobs 206 that are received in a displayable format from source 102 may not need particular transcoding features, or the like), and different servers 204 may be formulated to address the different needs of different types of jobs 206. In other embodiments, jobs 206 that do not need processing by all of the available services may simply be processed using server 204, with service bus 215 simply not directing the job 206 to services that are not needed. If transcoding is not needed for a particular job, for example (e.g., because content is already received in the desired display format), the job 206 may simply be routed from connector 207 to upload service 210 (or any other appropriate service) using the features of the media service bus 215. The routing may, in some embodiments, be altered according to attributes or other parameters of the particular job 206. These parameters may be determined from information 224 stored in MBR 222, in decorator 220, or in any other location. Some or all of services 208-214 may also add or change information 224 in decorator 220, as desired, to update the status of the job 206 or for any other purpose. Certain services 208-214 may be granted rights or privileges for altering or adding information 224 in some embodiments, or access control may be restricted in any other manner.
Control logic 205 represents any control features that may be available for managing system 108. In various embodiments, control logic 205 may be implemented with any monitoring, control or other software that is compatible with queue 202, servers 204 and/or any other features used within system 108. The RIGHTSCALE cloud management platform, for example, could be used alone or in conjunction with other programming in some embodiments to manage and control various aspects of system 108, although other embodiments may use other products or services as desired. Control logic 205 may be used in some embodiments to adjust the number of servers 204 that are available at any particular time.
To that end, various embodiments may provide any static or dynamic number of servers 204A-C. Each server 204 may process any number of jobs; in some embodiments, each server 204 simply consumes jobs 206 from queue 202 and processes the single job to completion before retrieving another job 206 from the queue 202. Jobs 206 are assigned from queue 202 to servers 204 based upon any appropriate criteria or scheme (e.g., FIFO, LIFO, priority assignment, etc.). In other embodiments, servers 204 may be able to multi-process more than one job 206 at a time.
In either case, some embodiments could allow the number of available servers 204A-C to be upwardly and/or downwardly adjusted as processing needs fluctuate over time. If the processing loads remain relatively constant, for example, a static number of actual or virtual servers 204 may be maintained. In various embodiments that make use of cloud computing systems or the like, however, it may be beneficial to adjust the number of servers 204 that are in use at any particular time. If processing loads are variable, for example, it may be beneficial to have sufficient server capability to process even peak loads in a relatively short period of time. A cloud computing provider may charge for services that are currently in use, however, thereby making excess capacity undesirably expensive during periods of time when the excess capacity is not needed. Hence, it may be beneficial in some embodiments to allow scaling of server resources so that adequate numbers of servers 204 are available during peak demand times, yet excess capacity is not consumed (and paid for) during times that the capacity is not needed.
The utilization or loading of queue 202 may be determined in any manner (function 302). In various embodiments, control logic 205 is able to determine the a metric of queue loading, such as the number of active jobs 206 in queue 202, as appropriate. The RIGHTSCALE products mentioned above, for example, may be used to determine metrics for scaling, including the size and utilization of an SQS or other queue 202. Other embodiments may determine queue fullness in any other manner (e.g., by monitoring respective rates that jobs are added or completed, by counting the number of jobs 206 as they are added and removed from queue 202, or though any other technique).
The loading of queue 202 may be determined to be “too full” (function 304) or “too empty” (function 308) according to any parameters or techniques. In various embodiments, the queue loading statistics obtained in function 302 are simply compared to appropriate threshold values, and the number of servers are adjusted as the loading passes a threshold value. As the number of jobs 206 on queue 202 passes an upper threshold, for example, an additional server 204 may be obtained from the “cloud” or another source. Similarly as the number of jobs 206 on queue 202 passes a lower threshold, one or more servers 204 may be released to conserve costs. Appropriate threshold values may be empirically determined, determined through trial-and-error, or determined by any other technique. In various embodiments, the threshold values may be adjusted upwardly or downwardly through the actions of an administrator.
The above discussion therefore presents a system 100 that is able to efficiently and effectively process content received from any number of sources 102A-C. Content is processed by system 108, which incorporates queuing 202 and any number of virtual or actual servers 204, each with a media service bus 215 that effectively routes processing jobs 206 between processing services 208, 210, 212, 214. In some embodiments, the number of servers 204 may be scaled upwardly and/or downwardly as desired to ensure adequate processing capabilities during periods of relatively high demand without undue costs of excess capability during periods of relatively low demand. The processed content may be distributed over a network 112 from a portal or other host 110 to any number of viewers operating any number of different client devices 114, as desired.
Accordingly, a distribution system 100 has been described that allows content to be received from multiple sources 102 in any format, using any transport mechanism, and having metadata in any format. This received content may be pre-processed, if needed, and then further processed by a system 108 to automate the encoding, transcoding and/or metadata formatting processes. That is, content can be formulated as a job 206 that can be placed on a queue 202 and retrieved for subsequent processing by one or more servers 204. Each server 204 may have a media service bus 215 or the like that is capable of routing the job 206 between services 208-214 as appropriate. The processed jobs 206 may then be delivered to a web host 110 in any manner so that viewers operating any sort of client devices 114 can retrieve the associated programming via network 112. Various additions, deletions or changes may be provided in any number of alternate but equivalent embodiments.
As used herein, the word “exemplary” means “serving as an example, instance, or illustration.” Any implementation described herein as exemplary is not necessarily to be construed as preferred or advantageous over other implementations.
While the foregoing detailed description will provide those skilled in the art with a convenient road map for implementing various embodiments of the invention, it should be appreciated that the particular embodiments described above are only examples, and are not intended to limit the scope, applicability, or configuration of the invention in any way. To the contrary, various changes may be made in the function and arrangement of elements described without departing from the scope of the invention.
This application claims priority to U.S. Provisional Patent Application Ser. No. 61/244,360 filed on Sep. 21, 2009, which is incorporated herein by reference in its entirety.
| Number | Name | Date | Kind |
|---|---|---|---|
| 5237648 | Mills et al. | Aug 1993 | A |
| 5434678 | Abecassis | Jul 1995 | A |
| 5438423 | Lynch et al. | Aug 1995 | A |
| 5610653 | Abecassis | Mar 1997 | A |
| 5684918 | Abecassis | Nov 1997 | A |
| 5696869 | Abecassis | Dec 1997 | A |
| 5892536 | Logan et al. | Apr 1999 | A |
| 5953485 | Abecassis | Sep 1999 | A |
| 6036601 | Heckel | Mar 2000 | A |
| 6088455 | Logan et al. | Jul 2000 | A |
| 6091886 | Abecassis | Jul 2000 | A |
| 6151444 | Abecassis | Nov 2000 | A |
| 6208805 | Abecassis | Mar 2001 | B1 |
| 6389467 | Eyal | May 2002 | B1 |
| 6408128 | Abecassis | Jun 2002 | B1 |
| 6421429 | Merritt et al. | Jul 2002 | B1 |
| 6476826 | Plotkin et al. | Nov 2002 | B1 |
| 6505169 | Bhagavath et al. | Jan 2003 | B1 |
| 6529506 | Yamamoto et al. | Mar 2003 | B1 |
| 6553178 | Abecassis | Apr 2003 | B2 |
| 6597375 | Yawitz | Jul 2003 | B1 |
| 6609253 | Swix et al. | Aug 2003 | B1 |
| 6795638 | Skelley, Jr. | Sep 2004 | B1 |
| 6931451 | Logan et al. | Aug 2005 | B1 |
| 6941575 | Allen | Sep 2005 | B2 |
| 7032000 | Tripp | Apr 2006 | B2 |
| 7055166 | Logan et al. | May 2006 | B1 |
| 7058376 | Logan et al. | Jun 2006 | B2 |
| 7124366 | Foreman et al. | Oct 2006 | B2 |
| 7127507 | Clark et al. | Oct 2006 | B1 |
| 7155735 | Ngo et al. | Dec 2006 | B1 |
| 7239800 | Bilbrey | Jul 2007 | B2 |
| 7430360 | Abecassis | Sep 2008 | B2 |
| 7478164 | Lango et al. | Jan 2009 | B1 |
| 7478166 | Agnoli et al. | Jan 2009 | B2 |
| 7516136 | Lee et al. | Apr 2009 | B2 |
| 7549160 | Podar et al. | Jun 2009 | B1 |
| 7558862 | Tyukasz et al. | Jul 2009 | B1 |
| 7565681 | Ngo et al. | Jul 2009 | B2 |
| 7594218 | Lozben | Sep 2009 | B1 |
| 7661121 | Smith et al. | Feb 2010 | B2 |
| 7676590 | Silverman et al. | Mar 2010 | B2 |
| 7720432 | Colby et al. | May 2010 | B1 |
| 7721300 | Tipton et al. | May 2010 | B2 |
| 7721315 | Brown et al. | May 2010 | B2 |
| 7895275 | Evans et al. | Feb 2011 | B1 |
| 7921150 | Schwartz | Apr 2011 | B1 |
| 7945688 | Lango et al. | May 2011 | B1 |
| 7975047 | Dongre | Jul 2011 | B2 |
| 8082545 | Prakash | Dec 2011 | B2 |
| 8171148 | Lucas et al. | May 2012 | B2 |
| 8194681 | Kaarela et al. | Jun 2012 | B2 |
| 20020004839 | Wine et al. | Jan 2002 | A1 |
| 20020031333 | Mano et al. | Mar 2002 | A1 |
| 20020105529 | Bowser et al. | Aug 2002 | A1 |
| 20020120925 | Logan | Aug 2002 | A1 |
| 20020138843 | Samaan et al. | Sep 2002 | A1 |
| 20020143972 | Christopoulos et al. | Oct 2002 | A1 |
| 20020151992 | Hoffberg et al. | Oct 2002 | A1 |
| 20030074660 | McCormack et al. | Apr 2003 | A1 |
| 20030078973 | Przekop et al. | Apr 2003 | A1 |
| 20030088686 | Jennings | May 2003 | A1 |
| 20030093260 | Dagtas et al. | May 2003 | A1 |
| 20030093790 | Logan et al. | May 2003 | A1 |
| 20030187657 | Erhart et al. | Oct 2003 | A1 |
| 20030192054 | Birks et al. | Oct 2003 | A1 |
| 20030198243 | Yamada | Oct 2003 | A1 |
| 20030208612 | Harris et al. | Nov 2003 | A1 |
| 20030231868 | Herley | Dec 2003 | A1 |
| 20030234803 | Toyama et al. | Dec 2003 | A1 |
| 20040003406 | Billmaier | Jan 2004 | A1 |
| 20040101271 | Boston et al. | May 2004 | A1 |
| 20040139047 | Rechsteiner et al. | Jul 2004 | A1 |
| 20040162845 | Kim et al. | Aug 2004 | A1 |
| 20040177151 | Kryeziu | Sep 2004 | A1 |
| 20040194141 | Sanders | Sep 2004 | A1 |
| 20040205830 | Kaneko | Oct 2004 | A1 |
| 20040216173 | Horoszowski et al. | Oct 2004 | A1 |
| 20040221029 | Jenkins et al. | Nov 2004 | A1 |
| 20040236844 | Kocherlakota | Nov 2004 | A1 |
| 20040255330 | Logan | Dec 2004 | A1 |
| 20040255334 | Logan | Dec 2004 | A1 |
| 20040255336 | Logan et al. | Dec 2004 | A1 |
| 20050005308 | Logan et al. | Jan 2005 | A1 |
| 20050021398 | McCleskey et al. | Jan 2005 | A1 |
| 20050027821 | Alexander et al. | Feb 2005 | A1 |
| 20050053356 | Mate et al. | Mar 2005 | A1 |
| 20050155077 | Lawrence et al. | Jul 2005 | A1 |
| 20050204046 | Watanabe | Sep 2005 | A1 |
| 20050216851 | Hull et al. | Sep 2005 | A1 |
| 20050262539 | Barton et al. | Nov 2005 | A1 |
| 20050288999 | Lerner et al. | Dec 2005 | A1 |
| 20060015925 | Logan | Jan 2006 | A1 |
| 20060031381 | Van Luijt et al. | Feb 2006 | A1 |
| 20060095401 | Krikorian et al. | May 2006 | A1 |
| 20060095471 | Krikorian et al. | May 2006 | A1 |
| 20060095472 | Krikorian et al. | May 2006 | A1 |
| 20060171395 | Deshpande | Aug 2006 | A1 |
| 20060190616 | Mayerhofer et al. | Aug 2006 | A1 |
| 20060206526 | Sitomer | Sep 2006 | A1 |
| 20060230345 | Weng et al. | Oct 2006 | A1 |
| 20060280177 | Gupta et al. | Dec 2006 | A1 |
| 20060280437 | Logan et al. | Dec 2006 | A1 |
| 20060294183 | Agnoli et al. | Dec 2006 | A1 |
| 20070019545 | Alt et al. | Jan 2007 | A1 |
| 20070043792 | O'Brien | Feb 2007 | A1 |
| 20070067390 | Agnoli et al. | Mar 2007 | A1 |
| 20070073767 | Springer et al. | Mar 2007 | A1 |
| 20070074115 | Patten et al. | Mar 2007 | A1 |
| 20070113250 | Logan et al. | May 2007 | A1 |
| 20070136778 | Birger et al. | Jun 2007 | A1 |
| 20070147263 | Liao et al. | Jun 2007 | A1 |
| 20070157237 | Cordray et al. | Jul 2007 | A1 |
| 20070168543 | Krikorian et al. | Jul 2007 | A1 |
| 20070183436 | Hunter | Aug 2007 | A1 |
| 20070198532 | Krikorian et al. | Aug 2007 | A1 |
| 20070217407 | Yuan et al. | Sep 2007 | A1 |
| 20070234213 | Krikorian et al. | Oct 2007 | A1 |
| 20070288550 | Ise et al. | Dec 2007 | A1 |
| 20070300258 | O'Connor et al. | Dec 2007 | A1 |
| 20080007651 | Bennett | Jan 2008 | A1 |
| 20080036917 | Pascarella et al. | Feb 2008 | A1 |
| 20080059533 | Krikorian | Mar 2008 | A1 |
| 20080060035 | Tsang et al. | Mar 2008 | A1 |
| 20080195698 | Stefanovic et al. | Aug 2008 | A1 |
| 20080199150 | Candelore | Aug 2008 | A1 |
| 20080215392 | Rajan | Sep 2008 | A1 |
| 20080229404 | Siegrist et al. | Sep 2008 | A1 |
| 20080301233 | Choi | Dec 2008 | A1 |
| 20090074380 | Boston et al. | Mar 2009 | A1 |
| 20090103607 | Bajpai et al. | Apr 2009 | A1 |
| 20090133088 | Kim et al. | May 2009 | A1 |
| 20090157697 | Conway et al. | Jun 2009 | A1 |
| 20090157777 | Golwalkar et al. | Jun 2009 | A1 |
| 20090199248 | Ngo et al. | Aug 2009 | A1 |
| 20090254672 | Zhang | Oct 2009 | A1 |
| 20090268740 | Sindhu et al. | Oct 2009 | A1 |
| 20090282445 | Yang et al. | Nov 2009 | A1 |
| 20100005483 | Rao | Jan 2010 | A1 |
| 20100023642 | Ladd et al. | Jan 2010 | A1 |
| 20100030880 | Joshi et al. | Feb 2010 | A1 |
| 20100046513 | Park et al. | Feb 2010 | A1 |
| 20100070925 | Einaudi et al. | Mar 2010 | A1 |
| 20100100898 | Pfleging et al. | Apr 2010 | A1 |
| 20100169477 | Stienhans et al. | Jul 2010 | A1 |
| 20100226444 | Thevathasan et al. | Sep 2010 | A1 |
| 20100269144 | Forsman et al. | Oct 2010 | A1 |
| 20100281042 | Windes et al. | Nov 2010 | A1 |
| 20100309916 | Oskouy et al. | Dec 2010 | A1 |
| 20100333162 | Lloyd et al. | Dec 2010 | A1 |
| 20110002381 | Yang et al. | Jan 2011 | A1 |
| 20110047079 | Du et al. | Feb 2011 | A1 |
| 20110050908 | Nam | Mar 2011 | A1 |
| 20110125861 | Evans et al. | May 2011 | A1 |
| 20110307608 | Chang et al. | Dec 2011 | A1 |
| 20120039580 | Sweatt, III et al. | Feb 2012 | A1 |
| 20120166669 | Price | Jun 2012 | A1 |
| 20120219001 | Sindhu et al. | Aug 2012 | A1 |
| Number | Date | Country |
|---|---|---|
| 2071839 | Jun 2009 | EP |
| 200703018 | Jan 2007 | TW |
| 0147248 | Jun 2001 | WO |
| 2007096001 | Aug 2007 | WO |
| Entry |
|---|
| USPTO “Final Office Action” mailed Apr. 27, 2012; U.S. Appl. No. 12/347,465, filed Dec. 31, 2008. |
| USPTO “Non-Final Office Action” mailed Apr. 27, 2012; U.S. Appl. No. 12/821,983, filed Jun. 23, 2010. |
| Taiwan Intellectual Property Office “Office Action” mailed Feb. 23, 2012 for Taiwan Application 097137393. |
| USPTO Non-Final Office Action mailed Mar. 31, 2010; U.S. Appl. No. 11/620,707, filed Jan. 7, 2007. |
| Liu, Qiong et al. “digital Rights Management for Content Distribution,” Proceedings of the Australiasian Information Se3curity Workshop Conference on ACSW Frontiers 2003, vol. 21, 2003, XP002571073, Adelaide, Australia, ISSN: 1445-1336, ISBN: 1-920682-00-7, sections 2 and 2.1.1. |
| USPTO “Non-Final Office Action” mailed Mar. 21, 2011; U.S. Appl. No. 12/426,103, filed Apr. 17, 2009. |
| European Patent Office, International Searching Authority, “International Search Report” mailed Mar. 18, 2011; International Appln. No. PCT/US2010/060797, filed Dec. 16, 2010. |
| European Patent Office “EPO Communication” dated Nov. 29, 2010; Application No. 08 167 880.7-2202. |
| USPTO “Non-Final Office Action” mailed Jan. 10, 2012; U.S. Appl. No. 12/827,964, filed Jun. 30, 2010. |
| Chinese Office Action, dated Dec. 31, 2011, for Chinese Patent Application No. 200810161874.X. |
| USPTO “Notice of Allowance” mailed Jan. 10, 2012; U.S. Appl. No. 12/426,103, filed Apr. 17, 2009. |
| USPTO, Non-Final Office Action mailed May 15, 2009; U.S. Appl. No. 11/147,664, filed Jun. 7, 2005. |
| USPTO, Final Office Action mailed Dec. 30, 2009; U.S. Appl. No. 11/147,664, filed Jun. 7, 2005. |
| USPTO, Non-Final Office Action mailed Jun. 26, 2008; U.S. Appl. No. 11/620,707, filed Jan. 7, 2007. |
| USPTO, Final Office Action mailed Oct. 21, 2008; U.S. Appl. No. 11/620,707, filed Jan. 7, 2007. |
| USPTO, Non-Final Office Action mailed Mar. 25, 2009; U.S. Appl. No. 11/620,707, filed Jan. 7, 2007. |
| USPTO, Final Office Action mailed Nov. 12, 2009; U.S. Appl. No. 11/620,707, filed Jan. 7, 2007. |
| USPTO, Non-Final Office Action mailed Aug. 7, 2008; U.S. Appl. No. 11/620,711, filed Jan. 7, 2007. |
| USPTO, Final Office Action mailed Feb. 9, 2009; U.S. Appl. No. 11/620,711, filed Jan. 7, 2007. |
| USPTO, Non-Final Office Action mailed Sep. 3, 2009; U.S. Appl. No. 11/620,711, filed Jan. 7, 2007. |
| USPTO, Non-Final Office Action mailed Feb. 25, 2009; U.S. Appl. No. 11/683,862, filed Mar. 8, 2007. |
| USPTO, Non-Final Office Action mailed Nov. 23, 2009; U.S. Appl. No. 11/683,862, filed Mar. 8, 2007. |
| USPTO, Non-Final Office Action mailed Jul. 31, 2009; U.S. Appl. No. 11/683,862, filed Mar. 8, 2007. |
| The Authoritative Dictionary of IEEE Standard Terms, 7th ed. 2000. |
| Newton's Telcom Dictionary, 20th ed., Mar. 2004. |
| Newton's Telcom Dictionary, 21st ed., Mar. 2005. |
| Sonic Blue “ReplayTV 5000 User's Guide,” 2002, entire document. |
| Meyer, Derrick “MyReplayTV™ Creates First-Ever Online Portal to Personal TI! Service; Gives Viewers Whole New Way to Interact With Programming,” http://web.archive.org/web/20000815052751/http://www.myreplaytv.com/, Aug. 15, 2000. |
| USPTO Non-Final Office Action mailed Mar. 19, 2010; U.S. Appl. No. 11/147,664, filed Jun. 7, 2005. |
| USPTO Final Office Action mailed Mar. 12, 2010; U.S. Appl. No. 11/620,711, filed Jan. 7, 2007. |
| USPTO Non-Final Office Action mailed Jun. 23, 2010; U.S. Appl. No. 11/933,969, filed Nov. 1, 2007. |
| USPTO “Non-Final Office Action” mailed Jun. 27, 2012 for U.S. Appl. No. 13/458,852, filed Apr. 27, 2012. |
| USPTO “Final Office Action” mailed Aug. 7, 2012 for U.S. Appl. No. 12/821,983, filed Jun. 23, 2010. |
| USPTO “Non-Final Office Action” mailed Jul. 19, 2012 for U.S. Appl. No. 12/619,192, filed Nov. 16, 2009. |
| USPTO “Non-Final Office Action” mailed Sep. 6, 2011; U.S. Appl. No. 12/347,465, filed Dec. 31, 2008. |
| USPTO “Notice of Allowance” mailed Sep. 22, 2011; U.S. Appl. No. 12/979,145, filed Dec. 27, 2010. |
| USPTO “Final Office Action” mailed Oct. 17, 2011; U.S. Appl. No. 12/426,103, filed Apr. 17, 2009. |
| USPTO Final Office Action mailed Sep. 24, 2010; U.S. Appl. No. 11/620,707, filed Jan. 7, 2007. |
| Carlson, T. “Mule 2.x Getting Started Guide,” Apr. 15, 2008, 134 pages. |
| USPTO “Non-Final Office Action” mailed Oct. 12, 2012 for U.S. Appl. No. 12/645,870, filed Dec. 23, 2009. |
| China Patent Office “Office Action” issued Aug. 3, 2012 for Chinese Patent Appln. No. 200810161874.X. |
| USPTO “Notice of Allowance” mailed Aug. 31, 2012 for U.S. Appl. No. 11/620,711, filed Jan. 7, 2007. |
| USPTO “Final Office Action” mailed Jun. 6, 2012 for U.S. Appl. No. 12/827,964, filed Jun. 30, 2010. |
| Intellectual Property Office “Office Action” dated Feb. 25, 2013 for Taiwan Patent Appln. No. 098146025. |
| USPTO “Non-Final Office Action” dated Mar. 5, 2013 for U.S. Appl. No. 13/107,341. |
| China State Intellectual Property Office “Fourth Office Action” dated Mar. 5, 2013 for Chinese Patent Appln. No. 20081016874.X. |
| USPTO “Non-Final Office Action” dated Feb. 25, 2013 for U.S. Appl. No. 13/458,852. |
| Intellectual Property Office of Singapore “Search Report and Written Opinion” dated Nov. 8, 2012 for Singapore Appln. No. 201107539-7. |
| USPTO “Final Office Action” mailed Feb. 21, 2013 for U.S. Appl. No. 12/619,192, filed Nov. 16, 2009. |
| USPTO “Non-Final Office Action” mailed Dec. 21, 2012 for U.S. Appl. No. 12/648,024, filed Dec. 28, 2009. |
| USPTO “Non-Final Office Action” mailed Feb. 5, 2013 for U.S. Appl. No. 13/098,192, filed Apr. 29, 2011. |
| Japan Patent Office “Notice of Rejection Ground” dated Mar. 26, 2013 for Japanese Patent Appln. No. 2012-506055. |
| Canadian Intellectual Property Office, “Office Action” mailed May 17, 2013 for Canadian Patent Application No. 2,758,791. |
| Intellectual Property Office of Singapore, “Search Report and Written Opinion,” mailed May 30, 2013 for Singapore Patent Application No. 201204603-3. |
| Intellectual Property Office, “Office Action” mailed Apr. 26, 2013 for Taiwan Patent Application No. 099111307. |
| Number | Date | Country | |
|---|---|---|---|
| 20110072073 A1 | Mar 2011 | US |
| Number | Date | Country | |
|---|---|---|---|
| 61244360 | Sep 2009 | US |