WO2001098920A1 - Method and apparatus for distributing video programs using partial caching - Google Patents

Method and apparatus for distributing video programs using partial caching Download PDF

Info

Publication number
WO2001098920A1
WO2001098920A1 PCT/US2001/019558 US0119558W WO0198920A1 WO 2001098920 A1 WO2001098920 A1 WO 2001098920A1 US 0119558 W US0119558 W US 0119558W WO 0198920 A1 WO0198920 A1 WO 0198920A1
Authority
WO
WIPO (PCT)
Prior art keywords
user
segments
program
programs
segment
Prior art date
Application number
PCT/US2001/019558
Other languages
French (fr)
Inventor
Daniel J. Mayer
Original Assignee
Idt Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Idt Corporation filed Critical Idt Corporation
Priority to AU2001268565A priority Critical patent/AU2001268565A1/en
Priority to US10/311,771 priority patent/US20040128343A1/en
Publication of WO2001098920A1 publication Critical patent/WO2001098920A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • H04N7/17309Transmission or handling of upstream communications
    • H04N7/17336Handling of requests in head-ends
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/764Media network packet handling at the destination 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5681Pre-fetching or pre-delivering data based on network characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/23406Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving management of server-side video buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2347Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving video stream encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4331Caching operations, e.g. of an advertisement for later insertion during playback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47202End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting content on demand, e.g. video on demand
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6125Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via Internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata

Definitions

  • This invention pertains to a method and apparatus for preparing and distributing content related programs (such as video or other multimedia programs) from servers to customer (end-user) devices over packet networks (e.g., the Internet). More particularly, the invention pertains to a system wherein some segments of at least one program are downloaded and/or pre-stored in a memory at the premises of the customer. When the customer activates a request, the remaining (complementary) segments of the requested program are streamed over the network from a designated server to the customer's device, where they are combined with the first, pre-stored segments, and rendered by the device to provide the consumer with an immediate, high-quality program experience.
  • content related programs such as video or other multimedia programs
  • Streamed content is characterized by the ability of the receiving device to render the content (e.g., video programs) to the consumer without waiting for the entire video file to be downloaded.
  • This near-real-time requirement of streaming normally requires the use of specialized connectionless protocols (i.e., UDP/IP) that emphasize speed at the expense of transmission quality and reliability.
  • UDP/IP connectionless protocols
  • streaming protocols do not guarantee that all transmitted packets are received by the consumer's device before rendering commences; another feature of such protocols is that, since packets may travel over diverse routes, the sequence of packets received is not necessarily equal to that transmitted; another feature of such protocols is that some packets may be dropped by equipment at network nodes along the way between the server and the customer's device.
  • Buffering (a temporary form of caching) is typically used to overcome some of the problems presented by streaming protocols.
  • the buffer (memory used for collecting and pre-processing packets) enables the device to collect lagging packets, and to rearrange the sequence of arriving packets before presenting them for rendering to the consumer. This causes the consumer to experience delay before the content requested is rendered, where the delay is proportional to the length of the buffer. The beginning of the program would then be rendered while the remainder of the program continues to stream into the buffer. This scheme works effectively only if, on average, the incoming streaming rate is at least equal to the rate used for rendering the program to the consumer.
  • Caching is used routinely to accelerate Internet browsing. For example, web pages are stored on a consumer's PC hard drive or in RAM, and retrieved on demand as required; in such application, cached pages are updated only when necessary.
  • caching is used in the network to accelerate Internet browsing of cached content; caching "edge" servers (located at the network's edge reasonably close to the end-user) are used to store content that is likely to be requested within a specific geographic area; the content typically mirrors source servers that are centrally located farther away from end-users; these edge caches are updated from the source server when necessary.
  • Inktomi and other equipment vendors provide caching platforms (edge servers) deployed by caching-service providers such as Akamai.
  • End-users requesting streaming media (normally compressed using some standard or proprietary method; e.g., MPEG-encoded video signals) generally receive better quality service if they receive the content from a local edge server than from a more 'distant' Internet location, where 'the distance' is determined by connectivity bandwidth and the number of router hops or similar criteria, and not necessarily geographic proximity.
  • Edge-located streaming-media servers cache by maintaining local copies of content that is most likely to be requested by "local" end-users. These types of edge servers generally improve the end-user's available bandwidth and quality of service for streaming media.
  • a frequently used technique to overcome these limitations comprises preloading entire video programs into the consumer's device (PC or TV Set-Top Box).
  • This technique has several shortcomings.
  • the consumer may not want to delay gratification (until the entire file is downloaded) before experiencing the program.
  • Content owners are apprehensive about the security of content saved on end-user devices, since such local accessibility increases the opportunity for consumers-hackers to break the encryption key associated with each program, and to experience the content without payment and/or license. This problem has been exacerbated by phenomena like Napster, and the fear that decrypted content may be freely shared across the Internet.
  • Content-service providers would like to predictively preload multiple programs on end- user devices, improving the probability that the end-user will actually request to experience a preloaded program.
  • a further objective is to provide a system that significantly increases a consumer's on-demand, high-quality program choices at any particular time.
  • a further objective is to provide a system and method of distributing media to customers that is flexible so that it can be adjusted easily and automatically for advances in Internet technology, media servers and caches, set-top-boxes, on-premises servers, and PC components.
  • Yet a further objective is to provide a system and method that provide increased capacity of network-based caching for serving an increased number of programs to customers sharing the same edge server.
  • a system for preparing and distributing programs includes a main library used to store a plurality of programs that are available to a set of end-users over the Internet, a process for creating program segments, and a plurality of local libraries, which are preferably implemented by caching edge servers.
  • Each local library is equipped with a subset of the programs also stored by the main library.
  • Programs are assigned to individual local libraries based in the demographics of the end-users being served, the interests expressed by the end-users, etc.
  • programs may be swapped in and out based on administrative "push” (based on predictive demand as projected by the operator of the service), or end-user "pull” (actual end-user demand, or the absence thereof).
  • the system can provide to any of the local-library programs on demand to the end-users.
  • the programs are split into at least two segments.
  • the local libraries store entire programs, but preferably store only some of the segments of each program.
  • the remainder segment(s) programs are sent to end-user devices, electronically through a network or on physical media (e.g., CDs, DVDs), for caching.
  • the program segments cached at end-user sites are selected in either of two ways: (1) using a predictive algorithm to maximize the chances that customers associated with the edge server will want these programs; or (2) in response to customers' explicit request for pre-delivery of segments of specific programs.
  • the appropriate program segment from the local edge server is streamed to the customer's site where it is combined with the other segment that has been previously cached at the end-user or customer site.
  • the combined segments are used by a media player to render the program to the customer.
  • An alternate embodiment is designed to increase the program capacity of servers that are sufficiently well-connected to end-users, so that programs can stream from the edge server to each consumer with high quality.
  • One such case is exemplified by sites associated with a plurality of customers connected to servers via a local network; the server(s) in such networks may cache program segments that can be shared among all customers of the local network.
  • This invention enables optimized tradeoff between many parameters, including customer-connectivity bandwidth, quality of program-experience, delay of program experience, server resources, and customer's device storage space. While the invention is described in conjunction with the distribution of video programs, it is applicable to audio programs and other programs that are transmitted over packet networks (e.g., the Internet) using streaming techniques.
  • packet networks e.g., the Internet
  • Fig. 1 shows a diagrammatic representation of an Internet system used to distribute programs in accordance with this invention
  • Fig. 2 shows the major components of the system of Fig. 1;
  • Fig. 3 shows a graph of a typical data transfer rate associated with streaming video signals as a function of time
  • Fig. 4 shows a block diagram of a PC used to receive and display programs in accordance with the invention
  • Fig. 5A shows a flow chart illustrating how programs are split and distributed to edge caches
  • Fig. 5B shows a flow chart illustrating how end-user caches are pre-populated
  • Fig. 5C shows a flow chart illustrating how an end-user receives requested programs
  • Fig. 6 shows a block diagram of the system for well-connected multiple end- users
  • Fig. 7A shows a first method of splitting a program
  • Fig. 7B shows a second method of splitting a program
  • Fig. 8 shows diagrammatically the delivery of each program segment to an end- user.
  • Fig. 3 shows a typical profile of data throughput from the edge server to the end-users (or customers). This figure depicts the average data rate available between a server and an end-user at an average of about 350 Kilobits/second (Kb/s). Assuming that entertainment-quality video requires encoding at a minimum rate of 700Kb/s (using an efficient data compression scheme, e.g., MPEG-4), then the end-user experiencing connectivity characterized by Fig. 3 will not obtain a satisfactory video- on-demand streaming experience. In order to obtain such experience, the end-user will have to wait for about V- ⁇ the duration of the program, until a sufficiently large buffer is filled and the device starts rendering the video.
  • Kb/s Kilobits/second
  • a distributed system 10 includes an Internet network 12 having a plurality of components including nodes managed by Internet Service Providers (ISPs) 14 through 14C.
  • the system further includes a production facility 7, a main library 13 and several local libraries, such as local library 15.
  • Production facility 7 contains a mass memory 36 and a program splitter 9.
  • Memory 36 consists of one or more mass-storage devices.
  • Program splitter 9 consists of one or more processors and associated equipment, and splits each program (i.e., PI, P2,...Pn) into at least two complementary program segments A and B.
  • the resulting program segments A of each program PI, P2, P3, ... Pn i.e., PI A, P2A, P3A, ...PnA
  • the program segments B i.e., P1B, P2B, P3B, ...PnB
  • the main library 13 consists of a download server 34A and media server 34.
  • Download server 34A is provided to downloading program segments A to end-user devices based either on explicit end-user requests, or on conjecture about future end-user requests.
  • Download server 34A downloads these program segments A through a connection provided by ISP 14A to Internet network 12.
  • program segments A can also be distributed to end users over storage media such as CDs and DVDs.
  • Media server 34B is provided to transmit program segments B using streaming over packet networks through the ISP 14A and Internet network 12 to the local libraries.
  • a main library may be easier to implement as a distributed storage network, however, it is shown here as a single central storage location for the sake of clarity.
  • Each of the local libraries 15 includes a media server 16 and an edge cache 38.
  • the edge cache 38 may be implemented by one or more mass-storage devices and is used to store program segments B received from the main library 13.
  • program segments A are distributed from the memory 36A everywhere, including the caches of end-users Ul through U4 and program segments B are distributed from memory 36B to the local libraries 15.
  • the local libraries 15 store the segments B of programs, and subsequently stream them on demand to its various end- users, such as Ul through U4, as described in more detail below.
  • the selection of what programs to transmit to each of the local libraries 15 is not part of this invention but it may be based on a number of criteria, such as the physical location and demographics of the customers of ISPs 14 and 14C, the popularity of various programs, and so on. All the programs and their segments are preferably stored and transmitted using known compression schemes such as MPEG-4.
  • end-users Ul and U2 may obtain their Internet access through cable-TV companies, while U3 and U4 may obtain access through standard telephone lines adapted to provide broadband services through (e.g.,) xDSL technology.
  • end-user Ul may own a PC 25 while end-user U2 may own a WebTV (or similar set-top box) 27.1n these examples, media server 16 is connected by high-bandwidth connections 17, 17A, and 17B to cable head 18, and through high-bandwidth connections 17, 17C, and 17D to a DSL Central Office 20 equipped with one or more DSLAM frames for providing xDSL services.
  • Cable head 18 is typically connected by an optical fiber 22 to an optical-cable node 24. Node 24 is then connected to the devices of end-users Ul and U2 over a shared coaxial cable 26.
  • the DSL Central Office 20 is connected by twisted copper pairs (standard telephone wire) 31 and 32 directly to connection devices on the premises of end-users U3 and U4.
  • Central Office 20 is also connected to a plain old telephone service or POTS (not shown). The telephone signals from the POTS are superimposed on the Internet signals for telephone signals. Filters used to separate POTS traffic from Internet data have been omitted for the sake of clarity.
  • end-user Ul uses a PC 25 having a user cache 40
  • end-user U2 uses a TV Set-Top Box (STB) that is capable of Internet connectivity, such as WebTV 27 having a user cache 42
  • STB TV Set-Top Box
  • End-user caches 40, 42 may be incorporated in the respective devices (i.e., PC 25 and WebTV 27), however they are shown here separately for the sake of clarity. Also for the sake of clarity, connections similar to 72, 74, and 82 to end-user U2 have been omitted.
  • the system may further include a Web host 76, which houses at least one Web server 78 and associated back-end system 80.
  • the back-end system includes processors, software and data designed to administer end-user requests, manage program segments, and assign end-user program requests for fulfillment by an appropriate, such as local library 15.
  • any end-user (of Ul through U4) may access content served by web server 78, which provides information on availability and locations of programs in general, and on the identification of segments A that have been pre-loaded at the end-users' sites.
  • the end-user may trigger a request (e.g., video-on-demand) for a specific program through web-server 78.
  • web server 78 When web server 78 receives a request for video-on-demand, it consults with back-end 80 to assure that the requesting end-user's site already has the respective segment A. If the end-user site does not have the required segment A, the web server transmits the request to download server 34A, which schedules delivery of the required segment A to the end- viewer's site depending on network conditions and the urgency of the request.
  • Back end 80 keeps track of all requested transactions for future use in billing, royalty payments, and customer service. Specific requests from end-users for segments A are handled by the Web-server 78 in the same manner.
  • back-end 80 also assigns a local library 15, and conveys this information to the end-user's device.
  • the user's device then accesses media server 16 of the respective local library 15, and the respective program segment B is streamed to the end-user's device.
  • the device e.g., PC 25
  • Methods for assigning local libraries to end- users is known in the art, and depends on such criteria as the availability of media server 16, particular content presence at a local library, expected bandwidth availability, and quality of service.
  • Figure 4 depicts the operation at the end user's site (in this case, PC 25) required to recombine segments PIA and PlB of aprogram Pl.
  • segment PlA is preloaded or pre-stored in the user cache 40.
  • bold arrows in this figure show content flow (e.g., the flow of the video program PI and its segments PIA and PIB) and regular arrows show the flow of control signals.
  • Buffer manager 56 instructs user cache 40 to pre- populate buffer 54 with the starting portion of program segment PIA.
  • the buffer manager 56 uses frame sequence numbers or rendering-clock values to keep empty buffer slots for PIB packets that are expected to stream-in shortly.
  • Media server 16 starts streaming packets carrying segment PIB to interface 52 of PC 25.
  • This stream is fed to a buffer 54, where buffer manager 56 inserts portions or packets of segment PIB between portions of segment PIA using frame sequence numbers or rendering-clock values so as to reconstruct the initial part of original program PI within the buffer 54.
  • the rendering clock begins operating as soon as the buffer is sufficiently full with program PI; as depicted in Fig. 4. Therefore it is not necessary for all streamed packets of the segment B to be received before rendering takes place, since video encoding schemes and streaming protocols are robust to some percentage of packet loss.
  • packets are moved through a decryption/decompression component 58 and then the rendered component 59 (e.g., video board/PC screen 63 and/or soundcard/speakers 61).
  • buffer manager 56 coordinates the movement of packets in and out of buffer 54. As the buffer fills up, buffer manager 56 sends a feedback message through interface 52 to media server 16 with instructions to pause or slow down the streaming of segment B of the program, so that buffer 54 does not overflow.
  • the buffer manager 56 uses feedback messages based on specific thresholds of buffer occupancy using a hysteresis band to optimizes the data transfer rate of segment B.
  • the threshold triggering the request for a pause/slow-down action is higher than the threshold triggering a request to resume/accelerate data transfer.
  • the lower threshold may be about 80% and a higher threshold may be about 90%.
  • the program can be played efficiently by end-user Ul even where the bandwidth/quality-of- service available between the end-user Ul and media server 16 would normally be considered inadequate.
  • An advantage of this arrangement is that the caches of the end-users can be used to store segments A of several programs.
  • the decision of which programs to store in the caches of the end-users may be made by back-end system 80 based on various demand prediction algorithms, statistical analyses of each end-user, as well as all the end-users, and/or other criteria.
  • the end-users can decide on their own what segments A to pre-store on their own caches.
  • the economic advantage of pre-loading is based on network economics, whereby at- leisure file transfer, which is performed when the network is underused, is far cheaper than realtime streaming performed when the network may be congested.
  • program segments A are encoded on physical media such as CDs and DVDs, and distributed to end-users via standard channels such as retail stores, magazine inserts, or through the mail. These physical media could be distributed freely, with payment (if any) for viewing provided (e.g., via credit-card through back-end system 80) before program segments B are delivered.
  • the programs are split so that the program segments A alone are as useless as possible.
  • program segments A may be embedded in executable programs.
  • his site e.g.,PC 25
  • back-end system 80 for registration, payment (if desired) is effected, and the matching program segment B is downloaded with the program being played on the fly.
  • program segments A are shared by end-users, interconnected by broadband, for example, through peer-to-peer technology.
  • end-user U2 may have received the segment PIA from end-user Ul.
  • back-end system 80 is not aware of the existence of PIA at cache 42 of end-user U2, and may have never encountered this end-user before.
  • segment PIA may be embedded within an executable program.
  • WebTV 27 is connected to back-end system 80 for registration, payment (if desired), and streaming of the PIB segment to complete the program PI.
  • Figure 6 shows an arrangement in which multiple end-users (represented by U5 through U8) are well connected to the local library 105, which house at least media server 107 and edge cache 109.
  • the local library 105 is collocated inside a Central Office having SLAM frames serve the end-users based, e.g., on xDSL technology.
  • the local library 105 is coupled to a high speed local area network, and end-users U5 through U8 are connected to the library 105 via the same high speed local area network, with the network having sufficient excess capacity.
  • the limiting factor is the capacity of edge cache 109 to hold all programs of interest.
  • edge cache 109 is pre-populated with segments "A" of multiple programs deemed of interest to end users U5 through U8, so that the end-users may share these "A" segments, and not require individual caches within their personal PCs (e.g., PC 125). Thus, if the segments A and B of each program are of equal size, twice as many programs can be populated in edge cache 109 than would otherwise be possible.
  • end user U5 requests a video (on demand) from Web server 78
  • back-end system 80 recognizes the environment of that end-user (e.g., from a user profile), and directs PC 125 to request the content from local library 105.
  • Media server 107 then checks to see whether edge cache 107 holds the entire requested content or just the segment A.
  • media server 106 streams it to PC 125 in the conventional manner. If only segment A of the requested program is available, media server 106 requests the streaming of the matching segment B from media server 34B in main library 13, or from some intermediate, "more local” library with sufficient connectivity bandwidth to local library 105. Media server 107 then combines the two segments (similarly to the manner described above and in Fig. 4), and stream the full content to PC 125 on the fly. Local library 105 may subsequently keep the full recombined program in edge cache 109 if heavy future demand is expected.
  • One important feature of the invention is the manner in which a program is split into its segments. If the average bandwidth between media server 16 and end-user Ul is about half that required for a high quality video experience, then the program may be split into two equally sized segments, each comprising half of the original program size. Depending on the average data rate bandwidth between media server 16 and the average end-user, the relative sizes of the program segments A and B may be selected to be 1/4, 3/4 or other ratios as well. A single ratio may be selected for the whole system, or alternatively, each program may be split several times, once for each typical data rate bandwidth between media server 16 and a class of end-users. Then, when preparing to download segment A of programs, a determination can be made of the expected available bandwidth the program P may be split with the ratio is selected that best compensates for these conditions.
  • Web server 78 can control the selection of segment B to be streamed from media server 16, based on split-ratio compatibility with the preloaded segment A.
  • step 100 of Fig. 5 A the main library 13 is established and various programs PI, PI, Pn...., are stored in memory 36 of production facility 7 preferably using a compressed, and, optionally, encrypted format.
  • step 102 the splitting ratios are determined according to the expected classes of end-user bandwidths availability to the end-users.
  • step 104 program splitter 9 splits each program to at least two segments A, B.
  • Various splitting schemes can be used that are selected based on the following criteria:
  • criteria (c) can be met, for example, by splitting streams at the transport layer.
  • a typical program PI can be represented as a sequence of binary packets m(l), m(2), m(3),...m(s).
  • the size of each member m does not matter as long as a preselected criteria, including for example the criteria discussed above, are met.
  • Each packet m may be an integer multiple of the size of data packets, using any of the well-known communication protocol, or some Other convenient size.
  • Fig. 7B instead of just splitting the program PI into sequential packets, the various packets are interleaved with each other.
  • two program segments are defined as follows. First the program PI is divided in two in a manner similar to Fig. 7A. Then some of the packets are switched between the sides. So, for instance, as shown in Fig. 7B, segment PIA may be formed of packets m(l), m(r+2), m(3), m(rt-4)... and segment Plb may be defined by packets m(r+l), m(2), m(r+3), m(4), m(r+5) etc.
  • packets can be arranged in many different ways, using simple or complex algorithms to generate the two segments PIA and PIB.
  • stream packets can be split in alternating order (packet 1, 3, 5, ... ) into segment A, and packets 2, 4, 6,... into segment "B").
  • all key frames (known in the art of video compression) are split into one segment, and all intermediate frames are split into the second segment.
  • one of the criteria for splitting the program is that at least one segment of a program is encrypted to insure that it is not viewed by unauthorized viewers.
  • program PI is first split into two segments PIA and PIB as discussed above.
  • segment PIA is cached.
  • Segment PIB is first encrypted and then stored in cache 38.
  • the encryption key can be sent to the end-user at the same time, or can be provided later, as discussed in more detail below.
  • the end-user then decrypts the segment PIB before combining it with segment PIA.
  • segment PIA may be encrypted, or in the alternative, both segments may be encrypted.
  • only a portion of the program PI may be encrypted.
  • the first ten minutes of the program PI ( or at least one of its segments) may be plain (i.e., not encrypted) to allow an end-user to watch the beginning of a program. If he likes it, he may decide to pay for the rest. After payment is received, the edge server sends the decryption key to the end-user.
  • media server 34B populates all local libraries (e.g., local library 15, and its cache 38) with program segments B appropriate to end- users being served therefrom.
  • back-end system 80 is updates with information on the content of all edge caches at all local libraries.
  • Fig. 5B describes the pre-loading of end-user caches with segments A of programs.
  • back-end system 80 assesses the caching space available on each end-user device (e.g., user cache 40) for pre-loading the program segments A.. This may be done automatically using, e.g., a client running on PC 25 and reporting through web server 78, or in cooperation with the end-users.
  • the programs most likely to be requested by each end user are determined. This can be done individually, by class of user (demographically determined), by past requests associated with the user, based upon explicit user request, or by other means.
  • the back-end system 80 determines the most appropriate time to download segments A to each end-user. This is done using economic and other considerations and prevailing network conditions. In one embodiment segments A are provided by mailing physical media to some end-users.
  • back-end system 80 instructs download server 34A to deliver the appropriate A segments A to each end-user who has not received the same on a physical media. Note that download server 34A may be implemented as a plurality of geographically distributed, multiple servers. Once, download completion is confirmed through some protocol (e.g., TCP/IP), the download server informs the back-end system, which updates its end-user records reflecting the change. In step 118, back-end system 80 instructs web server 78 to reflect the availability of the latest programs to the respective end-users and the web server.
  • TCP/IP some protocol
  • Fig. 5C describes the process of serving requested programs to end-users.
  • end-user Ul browses web server 78 for available programs, and requests to view one.
  • the back end system 80 ascertains the program is available, and that a segment A already resides in user cache 40. The back end system 80 then authorizes web server 78 to proceed with a business transaction (e.g., pay-per-view).
  • a business transaction e.g., pay-per-view
  • step 126 the business transaction (if any) is completed, and web server 78 provides to end-user PC 25 with the decryption key required to view the program (this key, and the decryption process are optional).
  • step 1208 the back end system 80 authorizes media server 16 to stream the selected segment B to end user Ul, and redirects PC 25 to media server 16 for requesting the stream. Segments A and B of the program are recombined in PC 25 as described in Fig. 4, and the end-user experiences (i.e., play) the program. Once the experience is complete, media server 16 updates back end system 80 for accounting and customer care purposes.
  • each program is split into two segments.
  • programs may be split into more than two segments and each segment may be cached at a different physical location.

Abstract

A method and system (10) wherein some segments (A) of at least one program are downloaded from a central location and/or pre-stored in a memory at the premises of the customer. When the customer activates a request, the remaining (complementary) segments of the requested program are streamed over the network from a designated server to the customer's device (25), where they are combined with the first, pre-stored segments, and rendered by the device (25) to provide the consumer with an immediate, high-quality program experience.

Description

METHOD AND APPARATUS FOR DISTRIBUTING VIDEO PROGRAMS
USING PARTIAL CACHING
BACKGROUND OF THE INVENTION
A. Field of Invention
This invention pertains to a method and apparatus for preparing and distributing content related programs (such as video or other multimedia programs) from servers to customer (end-user) devices over packet networks (e.g., the Internet). More particularly, the invention pertains to a system wherein some segments of at least one program are downloaded and/or pre-stored in a memory at the premises of the customer. When the customer activates a request, the remaining (complementary) segments of the requested program are streamed over the network from a designated server to the customer's device, where they are combined with the first, pre-stored segments, and rendered by the device to provide the consumer with an immediate, high-quality program experience.
B. Description of the Prior Art
As the technology and deployment of the Internet advances, the use of streaming technology increases. Streamed content is characterized by the ability of the receiving device to render the content (e.g., video programs) to the consumer without waiting for the entire video file to be downloaded. This near-real-time requirement of streaming normally requires the use of specialized connectionless protocols (i.e., UDP/IP) that emphasize speed at the expense of transmission quality and reliability. Typically, streaming protocols do not guarantee that all transmitted packets are received by the consumer's device before rendering commences; another feature of such protocols is that, since packets may travel over diverse routes, the sequence of packets received is not necessarily equal to that transmitted; another feature of such protocols is that some packets may be dropped by equipment at network nodes along the way between the server and the customer's device. Buffering (a temporary form of caching) is typically used to overcome some of the problems presented by streaming protocols. The buffer (memory used for collecting and pre-processing packets) enables the device to collect lagging packets, and to rearrange the sequence of arriving packets before presenting them for rendering to the consumer. This causes the consumer to experience delay before the content requested is rendered, where the delay is proportional to the length of the buffer. The beginning of the program would then be rendered while the remainder of the program continues to stream into the buffer. This scheme works effectively only if, on average, the incoming streaming rate is at least equal to the rate used for rendering the program to the consumer. Frequently this is not the case, and the buffer empties over time, resulting in rendering gaps due to packet drop-outs, which seriously degrade the consumer's experience. This problem is particularly acute in the transmission of video programs, where the consumer attempts to obtain the best program quality rather than the postage-size windows characteristic of video programs encoded for streaming at low bit-rates. The explosion in consumer adoption of broadband Internet access has exacerbated the problem, because the advertised obtainable bit rate is rarely achieved in practice.
Caching is used routinely to accelerate Internet browsing. For example, web pages are stored on a consumer's PC hard drive or in RAM, and retrieved on demand as required; in such application, cached pages are updated only when necessary. Similarly, caching is used in the network to accelerate Internet browsing of cached content; caching "edge" servers (located at the network's edge reasonably close to the end-user) are used to store content that is likely to be requested within a specific geographic area; the content typically mirrors source servers that are centrally located farther away from end-users; these edge caches are updated from the source server when necessary. For example, Inktomi and other equipment vendors provide caching platforms (edge servers) deployed by caching-service providers such as Akamai.
End-users requesting streaming media (normally compressed using some standard or proprietary method; e.g., MPEG-encoded video signals) generally receive better quality service if they receive the content from a local edge server than from a more 'distant' Internet location, where 'the distance' is determined by connectivity bandwidth and the number of router hops or similar criteria, and not necessarily geographic proximity. Edge-located streaming-media servers cache by maintaining local copies of content that is most likely to be requested by "local" end-users. These types of edge servers generally improve the end-user's available bandwidth and quality of service for streaming media.
Often, neither the caching done at the end-user's premises (for example in the PCs or Internet devices) nor caching at the edge server is sufficient to provide an end- user with high quality streaming media content.
A frequently used technique to overcome these limitations comprises preloading entire video programs into the consumer's device (PC or TV Set-Top Box). This technique has several shortcomings. The consumer may not want to delay gratification (until the entire file is downloaded) before experiencing the program. Content owners are apprehensive about the security of content saved on end-user devices, since such local accessibility increases the opportunity for consumers-hackers to break the encryption key associated with each program, and to experience the content without payment and/or license. This problem has been exacerbated by phenomena like Napster, and the fear that decrypted content may be freely shared across the Internet. Content-service providers would like to predictively preload multiple programs on end- user devices, improving the probability that the end-user will actually request to experience a preloaded program. A typical 90-minute movie occupies roughly 500 MB (Megabytes) of hard-drive space when encoded for NHS-quality at 700 Kbs (Kilobits per second); the availability of sufficient hard-drive space for multiple programs limits the service provider's ability to use this technique.
OBJECTIVES AND SUMMARY OF THE INVENTION
In view thereof, it is an objective of the present invention to provide a system for delivering programs, which can be tailored to provide the consumer with the desired quality of experience in spite of limits on bandwidth or quality of service.
A further objective is to provide a system that significantly increases a consumer's on-demand, high-quality program choices at any particular time.
A further objective is to provide a system and method of distributing media to customers that is flexible so that it can be adjusted easily and automatically for advances in Internet technology, media servers and caches, set-top-boxes, on-premises servers, and PC components.
Yet a further objective is to provide a system and method that provide increased capacity of network-based caching for serving an increased number of programs to customers sharing the same edge server. Other objectives and advantages of the invention will become apparent from the following description.
Briefly, a system for preparing and distributing programs includes a main library used to store a plurality of programs that are available to a set of end-users over the Internet, a process for creating program segments, and a plurality of local libraries, which are preferably implemented by caching edge servers. Each local library is equipped with a subset of the programs also stored by the main library. Programs are assigned to individual local libraries based in the demographics of the end-users being served, the interests expressed by the end-users, etc. As usual for such libraries, programs may be swapped in and out based on administrative "push" (based on predictive demand as projected by the operator of the service), or end-user "pull" (actual end-user demand, or the absence thereof). The system can provide to any of the local-library programs on demand to the end-users. Importantly, the programs are split into at least two segments. The local libraries store entire programs, but preferably store only some of the segments of each program. The remainder segment(s) programs are sent to end-user devices, electronically through a network or on physical media (e.g., CDs, DVDs), for caching. The program segments cached at end-user sites are selected in either of two ways: (1) using a predictive algorithm to maximize the chances that customers associated with the edge server will want these programs; or (2) in response to customers' explicit request for pre-delivery of segments of specific programs.
When the customer requests a program for viewing, the appropriate program segment from the local edge server is streamed to the customer's site where it is combined with the other segment that has been previously cached at the end-user or customer site. The combined segments are used by a media player to render the program to the customer.
An alternate embodiment is designed to increase the program capacity of servers that are sufficiently well-connected to end-users, so that programs can stream from the edge server to each consumer with high quality. One such case is exemplified by sites associated with a plurality of customers connected to servers via a local network; the server(s) in such networks may cache program segments that can be shared among all customers of the local network.
This invention enables optimized tradeoff between many parameters, including customer-connectivity bandwidth, quality of program-experience, delay of program experience, server resources, and customer's device storage space. While the invention is described in conjunction with the distribution of video programs, it is applicable to audio programs and other programs that are transmitted over packet networks (e.g., the Internet) using streaming techniques.
BRIEF DESCRIPTION OF THE INVENTION
Fig. 1 shows a diagrammatic representation of an Internet system used to distribute programs in accordance with this invention;
Fig. 2 shows the major components of the system of Fig. 1;
Fig. 3 shows a graph of a typical data transfer rate associated with streaming video signals as a function of time;
Fig. 4 shows a block diagram of a PC used to receive and display programs in accordance with the invention;
Fig. 5A shows a flow chart illustrating how programs are split and distributed to edge caches;
Fig. 5B shows a flow chart illustrating how end-user caches are pre-populated;
Fig. 5C shows a flow chart illustrating how an end-user receives requested programs;
Fig. 6 shows a block diagram of the system for well-connected multiple end- users;
Fig. 7A shows a first method of splitting a program;
Fig. 7B shows a second method of splitting a program; and
Fig. 8 shows diagrammatically the delivery of each program segment to an end- user.
DETAILED DESCRIPTION OF THE INVENTION
Fig. 3 shows a typical profile of data throughput from the edge server to the end-users (or customers). This figure depicts the average data rate available between a server and an end-user at an average of about 350 Kilobits/second (Kb/s). Assuming that entertainment-quality video requires encoding at a minimum rate of 700Kb/s (using an efficient data compression scheme, e.g., MPEG-4), then the end-user experiencing connectivity characterized by Fig. 3 will not obtain a satisfactory video- on-demand streaming experience. In order to obtain such experience, the end-user will have to wait for about V-∑ the duration of the program, until a sufficiently large buffer is filled and the device starts rendering the video. Thus, if a program is an hour long, data must be downloaded for half an hour before it can be played rendered for a satisfactory end-user experience. In order to overcome this problem, in one embodiment of the invention, some segments of the program are downloaded to, or otherwise present in, the device before the end-user decides to watch the same as discussed above.
Referring to Figs. 1 and 2, a distributed system 10 includes an Internet network 12 having a plurality of components including nodes managed by Internet Service Providers (ISPs) 14 through 14C. The system further includes a production facility 7, a main library 13 and several local libraries, such as local library 15.
Production facility 7 contains a mass memory 36 and a program splitter 9. Memory 36 consists of one or more mass-storage devices. Program splitter 9 consists of one or more processors and associated equipment, and splits each program (i.e., PI, P2,...Pn) into at least two complementary program segments A and B. The resulting program segments A of each program PI, P2, P3, ... Pn (i.e., PI A, P2A, P3A, ...PnA) are stored in memory 36A, and the program segments B (i.e., P1B, P2B, P3B, ...PnB) are stored in memory 36B of main library 13.
In addition to memories 36A and 36B, the main library 13 consists of a download server 34A and media server 34. Download server 34A is provided to downloading program segments A to end-user devices based either on explicit end-user requests, or on conjecture about future end-user requests. Download server 34A downloads these program segments A through a connection provided by ISP 14A to Internet network 12. Alternatively, program segments A can also be distributed to end users over storage media such as CDs and DVDs. Media server 34B is provided to transmit program segments B using streaming over packet networks through the ISP 14A and Internet network 12 to the local libraries. Of course, a main library may be easier to implement as a distributed storage network, however, it is shown here as a single central storage location for the sake of clarity.
Each of the local libraries 15 includes a media server 16 and an edge cache 38. The edge cache 38 may be implemented by one or more mass-storage devices and is used to store program segments B received from the main library 13.
In this manner, initially program segments A are distributed from the memory 36A everywhere, including the caches of end-users Ul through U4 and program segments B are distributed from memory 36B to the local libraries 15. The local libraries 15 store the segments B of programs, and subsequently stream them on demand to its various end- users, such as Ul through U4, as described in more detail below. The selection of what programs to transmit to each of the local libraries 15 is not part of this invention but it may be based on a number of criteria, such as the physical location and demographics of the customers of ISPs 14 and 14C, the popularity of various programs, and so on. All the programs and their segments are preferably stored and transmitted using known compression schemes such as MPEG-4.
Different end users may receive their services by different means. For example, end-users Ul and U2 may obtain their Internet access through cable-TV companies, while U3 and U4 may obtain access through standard telephone lines adapted to provide broadband services through (e.g.,) xDSL technology. In Fig. 1 end- user Ul may own a PC 25 while end-user U2 may own a WebTV (or similar set-top box) 27.1n these examples, media server 16 is connected by high-bandwidth connections 17, 17A, and 17B to cable head 18, and through high-bandwidth connections 17, 17C, and 17D to a DSL Central Office 20 equipped with one or more DSLAM frames for providing xDSL services.
Cable head 18 is typically connected by an optical fiber 22 to an optical-cable node 24. Node 24 is then connected to the devices of end-users Ul and U2 over a shared coaxial cable 26. Similarly, the DSL Central Office 20 is connected by twisted copper pairs (standard telephone wire) 31 and 32 directly to connection devices on the premises of end-users U3 and U4. Central Office 20 is also connected to a plain old telephone service or POTS (not shown). The telephone signals from the POTS are superimposed on the Internet signals for telephone signals. Filters used to separate POTS traffic from Internet data have been omitted for the sake of clarity.
As shown in Fig. 2, end-user Ul uses a PC 25 having a user cache 40, while end-user U2 uses a TV Set-Top Box (STB) that is capable of Internet connectivity, such as WebTV 27 having a user cache 42. End-user caches 40, 42 may be incorporated in the respective devices (i.e., PC 25 and WebTV 27), however they are shown here separately for the sake of clarity. Also for the sake of clarity, connections similar to 72, 74, and 82 to end-user U2 have been omitted.
The system may further include a Web host 76, which houses at least one Web server 78 and associated back-end system 80. The back-end system includes processors, software and data designed to administer end-user requests, manage program segments, and assign end-user program requests for fulfillment by an appropriate, such as local library 15. In one embodiment of the invention, any end-user (of Ul through U4) may access content served by web server 78, which provides information on availability and locations of programs in general, and on the identification of segments A that have been pre-loaded at the end-users' sites.
The end-user may trigger a request (e.g., video-on-demand) for a specific program through web-server 78. When web server 78 receives a request for video-on-demand, it consults with back-end 80 to assure that the requesting end-user's site already has the respective segment A. If the end-user site does not have the required segment A, the web server transmits the request to download server 34A, which schedules delivery of the required segment A to the end- viewer's site depending on network conditions and the urgency of the request. Back end 80 keeps track of all requested transactions for future use in billing, royalty payments, and customer service. Specific requests from end-users for segments A are handled by the Web-server 78 in the same manner.
If a whole program is requested, back-end 80 also assigns a local library 15, and conveys this information to the end-user's device. The user's device then accesses media server 16 of the respective local library 15, and the respective program segment B is streamed to the end-user's device. The device (e.g., PC 25) recombines segments A and B and renders the recombined program. Segments A and B are split in such a way that the recombined program is played in or near real time as the streamed segment B arrives. Methods for assigning local libraries to end- users is known in the art, and depends on such criteria as the availability of media server 16, particular content presence at a local library, expected bandwidth availability, and quality of service. Figure 4 depicts the operation at the end user's site (in this case, PC 25) required to recombine segments PIA and PlB of aprogram Pl. As discussed above, segment PlA is preloaded or pre-stored in the user cache 40. For clarity, bold arrows in this figure show content flow (e.g., the flow of the video program PI and its segments PIA and PIB) and regular arrows show the flow of control signals. Buffer manager 56 instructs user cache 40 to pre- populate buffer 54 with the starting portion of program segment PIA. The buffer manager 56 uses frame sequence numbers or rendering-clock values to keep empty buffer slots for PIB packets that are expected to stream-in shortly. Media server 16 starts streaming packets carrying segment PIB to interface 52 of PC 25. This stream is fed to a buffer 54, where buffer manager 56 inserts portions or packets of segment PIB between portions of segment PIA using frame sequence numbers or rendering-clock values so as to reconstruct the initial part of original program PI within the buffer 54. The rendering clock begins operating as soon as the buffer is sufficiently full with program PI; as depicted in Fig. 4. Therefore it is not necessary for all streamed packets of the segment B to be received before rendering takes place, since video encoding schemes and streaming protocols are robust to some percentage of packet loss. When the rendering clock begins, packets are moved through a decryption/decompression component 58 and then the rendered component 59 (e.g., video board/PC screen 63 and/or soundcard/speakers 61).
Once the stream begins to flow, and the end-user starts to experience the program, buffer manager 56 coordinates the movement of packets in and out of buffer 54. As the buffer fills up, buffer manager 56 sends a feedback message through interface 52 to media server 16 with instructions to pause or slow down the streaming of segment B of the program, so that buffer 54 does not overflow. Thus, as known in the art of adaptive systems, the buffer manager 56 uses feedback messages based on specific thresholds of buffer occupancy using a hysteresis band to optimizes the data transfer rate of segment B. Typically the threshold triggering the request for a pause/slow-down action is higher than the threshold triggering a request to resume/accelerate data transfer. For example, the lower threshold may be about 80% and a higher threshold may be about 90%.
Thus, by splitting program PI, and pre-storing segment PIA of the program into cache 40, the program can be played efficiently by end-user Ul even where the bandwidth/quality-of- service available between the end-user Ul and media server 16 would normally be considered inadequate.
An advantage of this arrangement is that the caches of the end-users can be used to store segments A of several programs. The decision of which programs to store in the caches of the end-users may be made by back-end system 80 based on various demand prediction algorithms, statistical analyses of each end-user, as well as all the end-users, and/or other criteria. Alternatively, the end-users can decide on their own what segments A to pre-store on their own caches. The economic advantage of pre-loading is based on network economics, whereby at- leisure file transfer, which is performed when the network is underused, is far cheaper than realtime streaming performed when the network may be congested. In another preferred embodiment, program segments A are encoded on physical media such as CDs and DVDs, and distributed to end-users via standard channels such as retail stores, magazine inserts, or through the mail. These physical media could be distributed freely, with payment (if any) for viewing provided (e.g., via credit-card through back-end system 80) before program segments B are delivered.
Preferably, the programs are split so that the program segments A alone are as useless as possible. For this preferred embodiment, program segments A may be embedded in executable programs. When an end-user is connected online, and invokes one such executable program, his site (e.g.,PC 25) is connected to back-end system 80 for registration, payment (if desired) is effected, and the matching program segment B is downloaded with the program being played on the fly.
In another preferred embodiment, program segments A are shared by end-users, interconnected by broadband, for example, through peer-to-peer technology. For example, end- user U2 may have received the segment PIA from end-user Ul. In this case, back-end system 80 is not aware of the existence of PIA at cache 42 of end-user U2, and may have never encountered this end-user before. As in the prior case, for this embodiment, segment PIA may be embedded within an executable program. When end-user U2 is connected online, and invokes this executable program, WebTV 27 is connected to back-end system 80 for registration, payment (if desired), and streaming of the PIB segment to complete the program PI.
Figure 6 shows an arrangement in which multiple end-users (represented by U5 through U8) are well connected to the local library 105, which house at least media server 107 and edge cache 109. In this arrangement, the local library 105 is collocated inside a Central Office having SLAM frames serve the end-users based, e.g., on xDSL technology. Alternatively, the local library 105 is coupled to a high speed local area network, and end-users U5 through U8 are connected to the library 105 via the same high speed local area network, with the network having sufficient excess capacity. In this case, the limiting factor is the capacity of edge cache 109 to hold all programs of interest. In a preferred embodiment, edge cache 109 is pre-populated with segments "A" of multiple programs deemed of interest to end users U5 through U8, so that the end-users may share these "A" segments, and not require individual caches within their personal PCs (e.g., PC 125). Thus, if the segments A and B of each program are of equal size, twice as many programs can be populated in edge cache 109 than would otherwise be possible. When end user U5 requests a video (on demand) from Web server 78, back-end system 80 recognizes the environment of that end-user (e.g., from a user profile), and directs PC 125 to request the content from local library 105. Media server 107 then checks to see whether edge cache 107 holds the entire requested content or just the segment A. If the entire requested program is available, media server 106 streams it to PC 125 in the conventional manner. If only segment A of the requested program is available, media server 106 requests the streaming of the matching segment B from media server 34B in main library 13, or from some intermediate, "more local" library with sufficient connectivity bandwidth to local library 105. Media server 107 then combines the two segments (similarly to the manner described above and in Fig. 4), and stream the full content to PC 125 on the fly. Local library 105 may subsequently keep the full recombined program in edge cache 109 if heavy future demand is expected.
One important feature of the invention is the manner in which a program is split into its segments. If the average bandwidth between media server 16 and end-user Ul is about half that required for a high quality video experience, then the program may be split into two equally sized segments, each comprising half of the original program size. Depending on the average data rate bandwidth between media server 16 and the average end-user, the relative sizes of the program segments A and B may be selected to be 1/4, 3/4 or other ratios as well. A single ratio may be selected for the whole system, or alternatively, each program may be split several times, once for each typical data rate bandwidth between media server 16 and a class of end-users. Then, when preparing to download segment A of programs, a determination can be made of the expected available bandwidth the program P may be split with the ratio is selected that best compensates for these conditions.
When the end-user requests a program video, Web server 78 can control the selection of segment B to be streamed from media server 16, based on split-ratio compatibility with the preloaded segment A.
The operation of the system is best summarized in conjunction with the flow charts of Fig. 5 A, 5B and 5C. Starting in step 100 of Fig. 5 A, the main library 13 is established and various programs PI, PI, Pn...., are stored in memory 36 of production facility 7 preferably using a compressed, and, optionally, encrypted format. In step 102 the splitting ratios are determined according to the expected classes of end-user bandwidths availability to the end-users. In step 104, program splitter 9 splits each program to at least two segments A, B. Various splitting schemes can be used that are selected based on the following criteria:
(a) make each program segment by itself as useless as possible, so that attempts to experience or hack at any individual segment are economically non- viable;
(b) make each segment compatible with standard media servers without modification;
(c) make each segment (in particular segments B robust to packet losses during transport over the packet network.
Those versed in the art will note that criteria (c) can be met, for example, by splitting streams at the transport layer.
Splitting of programs into their respective segments is shown in more detail in Fig 7A, 7B and 8. Referring first to Fig. 7A, a typical program PI can be represented as a sequence of binary packets m(l), m(2), m(3),...m(s). The size of each member m does not matter as long as a preselected criteria, including for example the criteria discussed above, are met. Each packet m may be an integer multiple of the size of data packets, using any of the well-known communication protocol, or some Other convenient size. The simplest way to split the program is to take the sequence and divide into two segments PIA, PIB where P1A= m(l), m(2), m(3)...m(r); and PIB =m(r+l),m(r+2) , m(r+3)....m(s). One disadvantage of this system is that it may not be practical because typically information is encoded using several plain text bytes to generate each encoded byte. However, the splitting may occur after encoding, and hence segments m may represent plain text or encoded program segments. Of course, after the program segments are re-assembled, they must be decoded.
In an alternate embodiment of the invention shown in Fig. 7B, instead of just splitting the program PI into sequential packets, the various packets are interleaved with each other. For example, in Fig. 7B two program segments are defined as follows. First the program PI is divided in two in a manner similar to Fig. 7A. Then some of the packets are switched between the sides. So, for instance, as shown in Fig. 7B, segment PIA may be formed of packets m(l), m(r+2), m(3), m(rt-4)... and segment Plb may be defined by packets m(r+l), m(2), m(r+3), m(4), m(r+5) etc.
Of course, the packets can be arranged in many different ways, using simple or complex algorithms to generate the two segments PIA and PIB. For example, stream packets can be split in alternating order (packet 1, 3, 5, ... ) into segment A, and packets 2, 4, 6,... into segment "B"). In yet another embodiment, all key frames (known in the art of video compression) are split into one segment, and all intermediate frames are split into the second segment.
In addition to the above-mentioned criteria, a further consideration for all these schemes is that they have to be reversible so that the packets of the segments can be rearranged in their original order.
As discussed above, one of the criteria for splitting the program is that at least one segment of a program is encrypted to insure that it is not viewed by unauthorized viewers. For example, as shown in Fig. 8, program PI is first split into two segments PIA and PIB as discussed above. Next, segment PIA is cached. Segment PIB is first encrypted and then stored in cache 38. When the end-user requests program PI, the encrypted segment PIB is sent to the end-user. The encryption key can be sent to the end-user at the same time, or can be provided later, as discussed in more detail below. The end-user then decrypts the segment PIB before combining it with segment PIA.
Again, many other variations may be used in conjunction with encryption. For example, instead of segment PIB, segment PIA may be encrypted, or in the alternative, both segments may be encrypted. In another embodiment of the invention, only a portion of the program PI may be encrypted. For example, the first ten minutes of the program PI ( or at least one of its segments) may be plain (i.e., not encrypted) to allow an end-user to watch the beginning of a program. If he likes it, he may decide to pay for the rest. After payment is received, the edge server sends the decryption key to the end-user.
Returning to the flow chart of Fig. 5 A, in step 106, media server 34B populates all local libraries (e.g., local library 15, and its cache 38) with program segments B appropriate to end- users being served therefrom. In step 108, back-end system 80 is updates with information on the content of all edge caches at all local libraries.
Fig. 5B describes the pre-loading of end-user caches with segments A of programs. In step 110, back-end system 80 assesses the caching space available on each end-user device (e.g., user cache 40) for pre-loading the program segments A.. This may be done automatically using, e.g., a client running on PC 25 and reporting through web server 78, or in cooperation with the end-users. In step 112, the programs most likely to be requested by each end user are determined. This can be done individually, by class of user (demographically determined), by past requests associated with the user, based upon explicit user request, or by other means.
Next, in step 114, the back-end system 80 determines the most appropriate time to download segments A to each end-user. This is done using economic and other considerations and prevailing network conditions. In one embodiment segments A are provided by mailing physical media to some end-users. In step 116, back-end system 80 instructs download server 34A to deliver the appropriate A segments A to each end-user who has not received the same on a physical media. Note that download server 34A may be implemented as a plurality of geographically distributed, multiple servers. Once, download completion is confirmed through some protocol (e.g., TCP/IP), the download server informs the back-end system, which updates its end-user records reflecting the change. In step 118, back-end system 80 instructs web server 78 to reflect the availability of the latest programs to the respective end-users and the web server.
Fig. 5C describes the process of serving requested programs to end-users. In step 120, end-user Ul browses web server 78 for available programs, and requests to view one. In step 124 the back end system 80 ascertains the program is available, and that a segment A already resides in user cache 40. The back end system 80 then authorizes web server 78 to proceed with a business transaction (e.g., pay-per-view). In step 126 the business transaction (if any) is completed, and web server 78 provides to end-user PC 25 with the decryption key required to view the program (this key, and the decryption process are optional). In step 128, the back end system 80 authorizes media server 16 to stream the selected segment B to end user Ul, and redirects PC 25 to media server 16 for requesting the stream. Segments A and B of the program are recombined in PC 25 as described in Fig. 4, and the end-user experiences (i.e., play) the program. Once the experience is complete, media server 16 updates back end system 80 for accounting and customer care purposes.
A similar process is used for populating servers and serving end users in the arrangement of Fig. 6.
While the invention is described in terms of audio/visual programs, it can be used for other types of programs such as audio programs and the like. Moreover, in the described embodiment, each program is split into two segments. However, programs may be split into more than two segments and each segment may be cached at a different physical location.
Obviously numerous modifications may be made to the invention without departing from its scope as defined in the appended claims.

Claims

CLAIMSI claim:
1. A method of distributing audio and/or visual programs comprising the steps of: splitting a program into a first and a second segment; storing said first segment for an end-user; storing said second segment at a server site; and combining said first and second segment to obtain a combined program at said end-user site.
2. The method of claim 1 further comprising playing said combined programs at an end-user ' site.
3. The method of claim 1 further comprising encrypting one of said first and second segments.
4. The method of claim 3 further comprising decrypting said one of said first and second segments.
5. The method of claim 1 wherein said first segment is cached at a user site.
6. The method of claim 1 wherein said first segment is cached at a site available for downloading to several users.
7. The method of claim 1 further comprising sending said second segment to said end-user site in response to a program request from the end-user.
8. A method of distributing a plurality programs to a plurality of end-users at end-users caches, some end-user sites including an apparatus for playing said programs, said method comprising: providing a plurality of programs; splitting each of said programs into a first and a second segment; pre-storing the first segments of a group of said programs at a server site; pre-storing the second segments of said group of said programs in the end-user caches; sending one of said second segments to one of said end-user sites in response to a program request; and combining said one second segment and a corresponding first segment to generate a combined program at said end-user site.
9. The method of claim 8 further comprising selecting said group of programs from said plurality of programs for access by said server site.
10. The method of claim 9 wherein said server site is associated with a plurality of end-users, wherein said step of selecting includes performing a predictive analysis of the programs and said plurality of end-users.
11. The method of claim 10 further comprising performing an analysis to determine what program segments are to be stored in which cache site.
12. The method of claim 11 further comprising prestoring the same program segment in several end-user caches.
13. The method of claim 11 further comprising prestoring different program segments in several end-user caches located at respective end-user sites.
14. The method of claim 12 further comprising transmitting program segments from one end- user site to another in response to a program request.
15. The method of claim 8 further comprising encoding said programs before splitting.
16. The method of claim 8 further comprising encrypting one of said program segments.
17. The method of claim 16 further comprising decrypting said program segments prior to combining the segments.
18. The method of claim 7 wherein said step of splitting includes dividing each said program into a sequence of segments and assigning each segment of said sequence to one of said segments.
19. The method of claim 18 further comprising interleaving said segments.
20. A distribution system for distributing a plurality of programs to a plurahty of end-users, comprising: a splitting device that splits said programs into corresponding first and second segments; a plurality of end-user caches holding a set of said first segments; a plurality of end-user sites; and a server site including a server cache holding a set of said second segments; wherein in response to a request for a program for a predetermined end-user, said server sends the corresponding second segment from said set of second segments to the corresponding cache; and wherein at the corresponding end-user site, the first and the second segments are combined to form a combined program.
21. The system of claim 20 wherein said end-user site includes a player that plays said combined program.
22. The system of claim 20 further comprising an analyzer adapted to perform an analysis of programs associated with said cache and end-users associated with said server site, said analyzer using said analysis to define said set of said first program segments.
23. The system of claim 20 further comprising a main library number of programs, programs associated with said server and said end-user sites.
24. The system of claim 23 further comprising an analyzer that analyzes the programs and determines the programs associated with said server site.
25. The system of claim 20 further comprising a first and a second end-user cache, each end- user cache being disposed at a corresponding end-user site and storing the same set of second segments.
26. The system of claim 20 further comprising a first and a second end-user cache, each end- user cache being disposed at a corresponding end-user site and storing a different set of second segments.
27. The system of claim 26 wherein said first and second caches are adapted to share second segments between said end-user sites.
28. The system of claim 20 further comprising a program control device disposed at some of said end-user sites, said program control devices being adapted to receive requests from end- users for programs.
29. The system of claim 28 wherein each program control device includes a first buffer arranged to receive said first segment from said end-user cache, a second buffer arranged to receive said second segment from said server cache and an accumulator adapted to combine said first and second segments into said combined program.
PCT/US2001/019558 2000-06-21 2001-06-19 Method and apparatus for distributing video programs using partial caching WO2001098920A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
AU2001268565A AU2001268565A1 (en) 2000-06-21 2001-06-19 Method and apparatus for distributing video programs using partial caching
US10/311,771 US20040128343A1 (en) 2001-06-19 2001-06-19 Method and apparatus for distributing video programs using partial caching

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US21298000P 2000-06-21 2000-06-21
US60/212,980 2000-06-21

Publications (1)

Publication Number Publication Date
WO2001098920A1 true WO2001098920A1 (en) 2001-12-27

Family

ID=22793230

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/019558 WO2001098920A1 (en) 2000-06-21 2001-06-19 Method and apparatus for distributing video programs using partial caching

Country Status (2)

Country Link
AU (1) AU2001268565A1 (en)
WO (1) WO2001098920A1 (en)

Cited By (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1331791A2 (en) * 2002-01-25 2003-07-30 DoCoMo Communications Laboratories USA, Inc. Method and system to support streaming proxy handoff during cacheable content delivery to mobile nodes in a packet based communication network
WO2003075496A2 (en) 2002-03-05 2003-09-12 Nokia Corporation Authenticated change of media provided over a dsl connection
WO2003085928A1 (en) * 2002-04-09 2003-10-16 Koninklijke Philips Electronics N.V. Transmission method combining downloading and streaming
EP1367818A2 (en) * 2002-05-27 2003-12-03 Matsushita Electric Industrial Co., Ltd. Stream distribution system, stream server device, cache server device, stream record/playback device, computer programs and related methods
WO2004017602A1 (en) * 2002-08-17 2004-02-26 Disney Enterprises, Inc. System for the delivery and dynamic presentation of large media assets over bandwidth constrained networks
WO2005004485A1 (en) * 2003-07-04 2005-01-13 Koninklijke Philips Electronics N.V. Method of broadcasting multimedia content via a distribution network
EP1504333A1 (en) * 2002-05-14 2005-02-09 LG Electronics Inc. System and method for synchronous reproduction of local and remote content in a communication network
WO2005069296A1 (en) 2004-01-17 2005-07-28 Daeyang Foundation Storage medium storing multimedia data, and method and apparatus for reproducing multimedia data
EP1571847A2 (en) * 2004-03-01 2005-09-07 The Directv Group, Inc. Video on demand in a broadcast network
WO2005083707A1 (en) 2004-02-27 2005-09-09 Daeyang Foundation Storage medium storing multimedia data, and method and apparatus for reproducing the multimedia data
WO2005124763A1 (en) * 2004-05-17 2005-12-29 Samsung Electronics Co., Ltd. Method of and apparatus for reproducing downloaded data along with data recorded on storage medium
EP1650927A2 (en) * 2004-10-25 2006-04-26 AT&T Corp. Broadcast video monitoring and alerting system
WO2006075875A1 (en) * 2005-01-12 2006-07-20 Samsung Electronics Co., Ltd. Method and apparatus for reproducing data recorded on storage medium along with downloaded data
WO2006061760A3 (en) * 2004-12-09 2006-09-14 Koninkl Philips Electronics Nv Method and apparatus for playing back a program
EP2194687A1 (en) * 2008-12-04 2010-06-09 T-Mobile International AG Combined rendering of digital media objects
EP2214371A1 (en) * 2009-01-30 2010-08-04 T-Mobile International AG Undelayed rendering of streamed media object
EP2348508A3 (en) * 2002-12-07 2011-10-05 LG Electronics Inc. Method for reproducing data recorded on an interactive recording medium in conjunction with associated auxiliary data
EP2249566A3 (en) * 2005-12-29 2012-09-19 United Video Properties, Inc. Systems and methods for resolving conflicts and managing system resources in multimedia delivery systems
US8327406B2 (en) 2003-07-04 2012-12-04 Nxp B.V. Method and server for downloading a broadcasted multimedia content over a distribution network
WO2014161968A1 (en) * 2013-04-03 2014-10-09 King.Com Limited Method and apparatus and system for data cache handling
US8924383B2 (en) 2001-04-06 2014-12-30 At&T Intellectual Property Ii, L.P. Broadcast video monitoring and alerting system
US8955013B2 (en) 1996-06-14 2015-02-10 Rovi Guides, Inc. Television schedule system and method of operation for multiple program occurrences
US9021538B2 (en) 1998-07-14 2015-04-28 Rovi Guides, Inc. Client-server based interactive guide with server recording
US9071872B2 (en) 2003-01-30 2015-06-30 Rovi Guides, Inc. Interactive television systems with digital video recording and adjustable reminders
US9125169B2 (en) 2011-12-23 2015-09-01 Rovi Guides, Inc. Methods and systems for performing actions based on location-based rules
US9178693B2 (en) 2006-08-04 2015-11-03 The Directv Group, Inc. Distributed media-protection systems and methods to operate the same
US9225761B2 (en) 2006-08-04 2015-12-29 The Directv Group, Inc. Distributed media-aggregation systems and methods to operate the same
EP2961133A1 (en) * 2014-06-24 2015-12-30 Intellicore Services Method for sending data relating to an event from an electronic device to a plurality of terminals in a network
US9294799B2 (en) 2000-10-11 2016-03-22 Rovi Guides, Inc. Systems and methods for providing storage of data on servers in an on-demand media delivery system
US9374560B2 (en) 2005-12-29 2016-06-21 Rovi Guides, Inc. Systems and methods for managing a status change of a multimedia asset in multimedia delivery systems
US10063934B2 (en) 2008-11-25 2018-08-28 Rovi Technologies Corporation Reducing unicast session duration with restart TV
CN109218749A (en) * 2018-09-13 2019-01-15 湖北鑫恒福科技发展有限公司 The method of Digital video storage

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5864671A (en) * 1996-07-01 1999-01-26 Sun Microsystems, Inc. Hybrid memory access protocol for servicing memory access request by ascertaining whether the memory block is currently cached in determining which protocols to be used
US6199107B1 (en) * 1998-07-22 2001-03-06 Microsoft Corporation Partial file caching and read range resume system and method
US6226667B1 (en) * 1998-05-26 2001-05-01 International Business Machines Corporation Method and apparatus for preloading data in a distributed data processing system
US6256632B1 (en) * 1998-02-17 2001-07-03 International Business Machines Corporation Method and system for enabling dynamic cache structures in a networked environment
US6275937B1 (en) * 1997-11-06 2001-08-14 International Business Machines Corporation Collaborative server processing of content and meta-information with application to virus checking in a server network

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5864671A (en) * 1996-07-01 1999-01-26 Sun Microsystems, Inc. Hybrid memory access protocol for servicing memory access request by ascertaining whether the memory block is currently cached in determining which protocols to be used
US6275937B1 (en) * 1997-11-06 2001-08-14 International Business Machines Corporation Collaborative server processing of content and meta-information with application to virus checking in a server network
US6256632B1 (en) * 1998-02-17 2001-07-03 International Business Machines Corporation Method and system for enabling dynamic cache structures in a networked environment
US6226667B1 (en) * 1998-05-26 2001-05-01 International Business Machines Corporation Method and apparatus for preloading data in a distributed data processing system
US6199107B1 (en) * 1998-07-22 2001-03-06 Microsoft Corporation Partial file caching and read range resume system and method

Cited By (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8955013B2 (en) 1996-06-14 2015-02-10 Rovi Guides, Inc. Television schedule system and method of operation for multiple program occurrences
US9154843B2 (en) 1998-07-14 2015-10-06 Rovi Guides, Inc. Client-server based interactive guide with server recording
US9055318B2 (en) 1998-07-14 2015-06-09 Rovi Guides, Inc. Client-server based interactive guide with server storage
US9118948B2 (en) 1998-07-14 2015-08-25 Rovi Guides, Inc. Client-server based interactive guide with server recording
US9226006B2 (en) 1998-07-14 2015-12-29 Rovi Guides, Inc. Client-server based interactive guide with server recording
US10075746B2 (en) 1998-07-14 2018-09-11 Rovi Guides, Inc. Client-server based interactive television guide with server recording
US9232254B2 (en) 1998-07-14 2016-01-05 Rovi Guides, Inc. Client-server based interactive television guide with server recording
US9021538B2 (en) 1998-07-14 2015-04-28 Rovi Guides, Inc. Client-server based interactive guide with server recording
US9055319B2 (en) 1998-07-14 2015-06-09 Rovi Guides, Inc. Interactive guide with recording
US9294799B2 (en) 2000-10-11 2016-03-22 Rovi Guides, Inc. Systems and methods for providing storage of data on servers in an on-demand media delivery system
US8924383B2 (en) 2001-04-06 2014-12-30 At&T Intellectual Property Ii, L.P. Broadcast video monitoring and alerting system
US6907501B2 (en) 2002-01-25 2005-06-14 Ntt Docomo Inc. System for management of cacheable streaming content in a packet based communication network with mobile hosts
EP1331791A3 (en) * 2002-01-25 2004-06-30 DoCoMo Communications Laboratories USA, Inc. Method and system to support streaming proxy handoff during cacheable content delivery to mobile nodes in a packet based communication network
EP1331791A2 (en) * 2002-01-25 2003-07-30 DoCoMo Communications Laboratories USA, Inc. Method and system to support streaming proxy handoff during cacheable content delivery to mobile nodes in a packet based communication network
EP1481501A2 (en) * 2002-03-05 2004-12-01 Nokia Corporation Authenticated change of media provided over a dsl connection
EP1998501A3 (en) * 2002-03-05 2010-02-24 WI-LAN Inc. Authenticated change of media provided over a DSL connection
WO2003075496A2 (en) 2002-03-05 2003-09-12 Nokia Corporation Authenticated change of media provided over a dsl connection
US8509223B2 (en) 2002-03-05 2013-08-13 Wi-Lan, Inc. Method and system for authenticated fast channel change of media provided over a DSL connection
EP1481501A4 (en) * 2002-03-05 2007-09-05 Nokia Corp Authenticated change of media provided over a dsl connection
US7809010B2 (en) 2002-03-05 2010-10-05 Wi-Lan, Inc. Method and system for authenticated fast channel change of media provided over a DSL connection
EP1998501A2 (en) * 2002-03-05 2008-12-03 WI-LAN Inc. Authenticated change of media provided over a DSL connection
WO2003085928A1 (en) * 2002-04-09 2003-10-16 Koninklijke Philips Electronics N.V. Transmission method combining downloading and streaming
EP1504333A1 (en) * 2002-05-14 2005-02-09 LG Electronics Inc. System and method for synchronous reproduction of local and remote content in a communication network
AU2003230315B2 (en) * 2002-05-14 2008-02-28 Lg Electronics Inc. System and method for synchronous reproduction of local and remote content in a communication network
EP1504333A4 (en) * 2002-05-14 2007-12-05 Lg Electronics Inc System and method for synchronous reproduction of local and remote content in a communication network
US7665110B2 (en) 2002-05-14 2010-02-16 Lg Electronics Inc. System and method for synchronous reproduction of local and remote content in a communication network
EP1367818A2 (en) * 2002-05-27 2003-12-03 Matsushita Electric Industrial Co., Ltd. Stream distribution system, stream server device, cache server device, stream record/playback device, computer programs and related methods
KR100997296B1 (en) 2002-08-17 2010-11-29 디즈니엔터프라이지즈,인크. System for the delivery and dynamic presentation of large media assets over band-width constrained networks
WO2004017602A1 (en) * 2002-08-17 2004-02-26 Disney Enterprises, Inc. System for the delivery and dynamic presentation of large media assets over bandwidth constrained networks
US8272020B2 (en) 2002-08-17 2012-09-18 Disney Enterprises, Inc. System for the delivery and dynamic presentation of large media assets over bandwidth constrained networks
EP2348508A3 (en) * 2002-12-07 2011-10-05 LG Electronics Inc. Method for reproducing data recorded on an interactive recording medium in conjunction with associated auxiliary data
US9369741B2 (en) 2003-01-30 2016-06-14 Rovi Guides, Inc. Interactive television systems with digital video recording and adjustable reminders
US9071872B2 (en) 2003-01-30 2015-06-30 Rovi Guides, Inc. Interactive television systems with digital video recording and adjustable reminders
US8327406B2 (en) 2003-07-04 2012-12-04 Nxp B.V. Method and server for downloading a broadcasted multimedia content over a distribution network
WO2005004485A1 (en) * 2003-07-04 2005-01-13 Koninklijke Philips Electronics N.V. Method of broadcasting multimedia content via a distribution network
US7912218B2 (en) 2003-07-04 2011-03-22 Nxp B.V. Method of broadcasting multimedia content via distribution network
EP1704564A1 (en) * 2004-01-17 2006-09-27 Daeyang Foundation Storage medium storing multimedia data, and method and apparatus for reproducing multimedia data
CN1764974B (en) * 2004-01-17 2010-12-15 世宗大学校产学协力团 Storage medium storing multimedia data, and method and apparatus for reproducing multimedia data
WO2005069296A1 (en) 2004-01-17 2005-07-28 Daeyang Foundation Storage medium storing multimedia data, and method and apparatus for reproducing multimedia data
EP1704564A4 (en) * 2004-01-17 2007-10-10 Daeyang Foundation Storage medium storing multimedia data, and method and apparatus for reproducing multimedia data
CN1985321B (en) * 2004-02-27 2010-11-24 学校法人大洋学园 Method and apparatus for reproducing the multimedia data
WO2005083707A1 (en) 2004-02-27 2005-09-09 Daeyang Foundation Storage medium storing multimedia data, and method and apparatus for reproducing the multimedia data
KR101145261B1 (en) * 2004-02-27 2012-05-24 삼성전자주식회사 Information storage medium containing multimedia data, reproducing method and apparatus thereof
EP1571847A2 (en) * 2004-03-01 2005-09-07 The Directv Group, Inc. Video on demand in a broadcast network
EP1571847A3 (en) * 2004-03-01 2008-03-26 The Directv Group, Inc. Video on demand in a broadcast network
WO2005124763A1 (en) * 2004-05-17 2005-12-29 Samsung Electronics Co., Ltd. Method of and apparatus for reproducing downloaded data along with data recorded on storage medium
EP1650927A2 (en) * 2004-10-25 2006-04-26 AT&T Corp. Broadcast video monitoring and alerting system
EP1650927A3 (en) * 2004-10-25 2006-05-17 AT&T Corp. Broadcast video monitoring and alerting system
WO2006061760A3 (en) * 2004-12-09 2006-09-14 Koninkl Philips Electronics Nv Method and apparatus for playing back a program
KR101135877B1 (en) * 2004-12-09 2012-04-19 코닌클리케 필립스 일렉트로닉스 엔.브이. Method and apparatus for playing back a program
CN101073261B (en) * 2004-12-09 2010-08-04 皇家飞利浦电子股份有限公司 Program broadcasting method and apparatus
WO2006075875A1 (en) * 2005-01-12 2006-07-20 Samsung Electronics Co., Ltd. Method and apparatus for reproducing data recorded on storage medium along with downloaded data
US9374560B2 (en) 2005-12-29 2016-06-21 Rovi Guides, Inc. Systems and methods for managing a status change of a multimedia asset in multimedia delivery systems
EP2249566A3 (en) * 2005-12-29 2012-09-19 United Video Properties, Inc. Systems and methods for resolving conflicts and managing system resources in multimedia delivery systems
US9178693B2 (en) 2006-08-04 2015-11-03 The Directv Group, Inc. Distributed media-protection systems and methods to operate the same
US9225761B2 (en) 2006-08-04 2015-12-29 The Directv Group, Inc. Distributed media-aggregation systems and methods to operate the same
US10063934B2 (en) 2008-11-25 2018-08-28 Rovi Technologies Corporation Reducing unicast session duration with restart TV
EP2194687A1 (en) * 2008-12-04 2010-06-09 T-Mobile International AG Combined rendering of digital media objects
WO2010063363A3 (en) * 2008-12-04 2010-10-07 Deutsche Telekom Ag Combined rendering of digital media objects
WO2010063363A2 (en) * 2008-12-04 2010-06-10 Deutsche Telekom Ag Combined rendering of digital media objects
WO2010086175A3 (en) * 2009-01-30 2010-10-21 Deutsche Telekom Ag Undelayed rendering of a streamed media object
EP2214371A1 (en) * 2009-01-30 2010-08-04 T-Mobile International AG Undelayed rendering of streamed media object
WO2010086175A2 (en) 2009-01-30 2010-08-05 Deutsche Telekom Ag Undelayed rendering of a streamed media object
US9125169B2 (en) 2011-12-23 2015-09-01 Rovi Guides, Inc. Methods and systems for performing actions based on location-based rules
WO2014161968A1 (en) * 2013-04-03 2014-10-09 King.Com Limited Method and apparatus and system for data cache handling
US10140332B2 (en) 2013-04-03 2018-11-27 King.Com Ltd. Method and system for data cache handling
WO2015197707A1 (en) * 2014-06-24 2015-12-30 Intellicore Services Method for sending data relating to an event from an electronic device to a plurality of terminals in a network
EP2961133A1 (en) * 2014-06-24 2015-12-30 Intellicore Services Method for sending data relating to an event from an electronic device to a plurality of terminals in a network
CN109218749A (en) * 2018-09-13 2019-01-15 湖北鑫恒福科技发展有限公司 The method of Digital video storage

Also Published As

Publication number Publication date
AU2001268565A1 (en) 2002-01-02

Similar Documents

Publication Publication Date Title
US20040128343A1 (en) Method and apparatus for distributing video programs using partial caching
WO2001098920A1 (en) Method and apparatus for distributing video programs using partial caching
US9705951B2 (en) Method and apparatus for instant playback of a movie
US10257246B2 (en) Content distribution via a distribution network and an access network
KR100994948B1 (en) A method of distributing a digital content file and a digital content distribution system
US20030093799A1 (en) Streamed content Delivery
US9176955B2 (en) Method and apparatus for sharing media files among network nodes
EP1842337B1 (en) Multicast distribution of streaming multimedia content
US6405256B1 (en) Data streaming using caching servers with expandable buffers and adjustable rate of data transmission to absorb network congestion
US20030093515A1 (en) Quality of service control of streamed content delivery
US8719886B2 (en) Dynamic processing of streamed content
US7092999B2 (en) Data broadcast network for congestion-free internet access
US20160294911A1 (en) Optimizing video clarity
US20090019468A1 (en) Access control of media services over an open network
CA2397975C (en) Method and apparatus for content distribution via non-homogeneous access networks
US20050132101A1 (en) Data switch
EP1250651B1 (en) Method and apparatus for content distribution via non-homogeneous access networks

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWE Wipo information: entry into national phase

Ref document number: 10311771

Country of ref document: US

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP