METHOD AND APPARATUS FOR SYNCHRONIZATION OF PARALLEL MEDIA NETWORKS
REFERENCE TO A SOURCE CODE APPENDIX
The present specification includes an Appendix containing computer source code which is referred to in the specification as APPENDLX A.
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
FIELD OF THE INVENTION
This invention relates generally to delivery of rich media in general and more specifically to delivery of rich media synchronized with broadcast media.
BACKGROUND OF THE INVENTION
Due to the vagaries in program start times across the United States, not to mention the planet, one of the great difficulties in linking or synchronizing non-broadcast media, such as rich media, with scheduled broadcasts has been the inability of rich media sources to be in sync with the associated broadcasts.
A further problem, especially on a global scale is that of bandwidth, where even if synchronization could be achieved, it would likely still be beyond the capability of lower bandwidth systems to utilize.
Finally, the vagaries of the Internet itself, where packet arrival times vary widely depending on traffic and many other conditions, have kept the dream of a truly global interactive experience involving the use of broadcast programming merely a dream.
Prior attempts to solve the problem of synchronize broadcast media with media delivered through a parallel network are exemplified by International Application NO. PCT/USOO/100032 (International Publication No. WO 00/64163) by Owen at al. Owen discloses a method of synchronizing a television broadcast signal with additional Web content. A Web server coupled to the television program generates URLs pointing to additional content that augments the television program. The additional content is suitable for display on a user's home computer. A synchronization client hosted by the user's home computer connects to the Web server via the Internet and retrieves the URLs. The synchronization client invokes a Web browser and passes the URLs to the Web browser and the Web browser retrieves the additional content using the URLs.
Owen discloses a loose synchronization system designed to be used with a singular broadcast system such as a radio station. Owen does not take into account the problems of a network broadcast system where start times can vary from station to station.
Owen discloses the use of two servers, a synchronization server as well as a content server, because the demand on the content server is such that latency on synchronization information caused by heavy traffic may throw the system out of synchronization.
The system of Owen is designed to deliver dynamically generated content from the Internet. For rich media, this inhibits Owen's system from use on low bandwidth systems. In addition, a typical problem is the latency created by dynamically generating content inhibits the ability to not only synchronize with the broadcast programming, but affects the ability to return to the synchronization server in a timely manner, thus throwing off the entire synchronization system. As such, the system disclosed by Owen is described as a method for placing ads or information during a broadcast where in the ads or information do not require a heavy degree of synchronization.
Additionally, the system disclosed by Owen refreshes on the order of several seconds as it searches for information which consists of a URL and the duration of its associated segment. Finally, the additional programming presented by the system of Owen is not accessed by Owen's system directly, but via URLS that are used during predefined broadcast program segments by a Web browser.
SUMMARY OF THE INVENTION
In one aspect of the invention, synchronization signals for synchronizing broadcast media and parallel media are provided using a communications network. A synchronization server is operably coupled to the communications network and is operably coupled to a broadcast media start time database. The synchronization server receives from a user client via the communications network a synchronization request. The synchronization server generates synchronization data using the synchronization request and the broadcast media start time database. The synchronization server also generates synchronization instructions and the synchronization server transmits to the user client via the communications network the synchronization instructions and the synchronization data.
In another aspect of the invention, the synchronization instructions further include retrieving parallel media from a parallel media source operably coupled to the user client. In one embodiment of a parallel media network according to this aspect of the invention, the parallel media source is a parallel media server operably coupled to the user client via the communications network. In this embodiment, the synchronization instructions further include transmitting by the user client to the parallel media server via the communications network a
parallel media request and receiving by the user client from the parallel media server parallel media in response to the parallel media request. In another embodiment of a parallel media network according to this aspect of the invention, the parallel media source is a local parallel media storage device operably coupled to the user client such as a CD-ROM or a hard disk. h another aspect of the invention, a broadcast media signal is synchronized with a parallel media signal transmitted via a parallel media network using synchronization signals transmitted via a synchronization network. The synchronization signals are transmitted independently of the broadcast signal. hi another aspect of the invention, a broadcast media signal is transmitted from a first device and received by a second device. A third device, operably coupled to the first device and the synchronization network, generates synchronization signals and parallel media signal retrieval instructions. A fourth device, operably coupled to the third device via the computer network, receives the synchronization signals from the third device. The fourth device uses the synchronization signals to synchronize the initiation of reception of a parallel media signal received from a fifth device with a broadcast media signal.
In another aspect of the invention, a broadcast media network for delivery of broadcast media signals to a user includes a television program broadcasting system for transmitting a television program to a user's television. A Web server is coupled to the television program broadcasting system and generates a synchronization cookie containing information on when to retrieve parallel media programming from another source that augments the television program. The parallel media programming is suitable for display on a user's home computer. A user client hosted by the user's home computer connects to the Web server via the Internet and retrieves the synchronization cookie and retrieves and displays the parallel media programming based on the information contained within the synchronization cookie. The parallel media programming may come from a Web server or may come from a local storage medium such as a CD-ROM or hard disk. The Web server may be coupled to the television program broadcasting system in a variety ofways.
BRIEF DESCRIPTION OF THE DRAWINGS
These and other features, aspects, and advantages of the present invention will become better understood with regard to the following description and accompanying drawings where:
FIG. 1 is a diagram depicting interactions between various components of two synchronized parallel media delivery networks;
FIG. 2 is a sequence diagram depicting in greater detail an embodiment of a sequence of actions during a setup operation within an embodiment of parallel media delivery networks according to the present invention;
FIG. 3 is a sequence diagram depicting an embodiment of a sequence of actions during presentation of parallel media synchronized with broadcast media according to the present invention; and
FIG.4 is a architecture diagram of an embodiment of a general purpose computer suitable for use as either a synchronization host or as a user host.
DETAILED DESCRIPTION
FIG. 1 is a diagram depicting interactions between various components of a synchronized parallel media delivery network. A user host 10 is operably coupled to a synchronization host 12 via a communications network such as the Internet 14. The user host may be any computing device, such as a general purpose computer, a personal digital assistant, a game console, or any device capable of requesting and receiving parallel media and presenting the parallel media to the user. The user host is also operably coupled to a parallel media source 16. The parallel media source maybe a media storage device such as a CD-ROM device adapted for transmission of media, such as rich media, to the user's host. In another embodiment of a parallel media network according to the present invention, the parallel media source is a Web server (not shown) operably coupled to the user host via the Internet.
Setup instructions transmitted from the parallel media source instruct a user client, such as a Web browser, hosted by the user host to couple via the communications network to a synchronization server hosted by the synchronization host. The user client receives a document, such as a document written in HTML, with a form for the user to fill with user data. The user data includes the identification of a broadcaster 18 from whom the user receives broadcast media. For example, the user may enter the name of a cable operator or of a broadcast network affiliate. The synchronization server receives the broadcaster identification and generates a small data file, herein termed a cookie, from the broadcaster information for storage on the user's host for later use.
A broadcaster 20 identified by the user stores broadcast media start times 22 in a broadcast media start time database 24 operably coupled to the synchronization server hosted by the synchronization host. The broadcast media start time data includes an identifier of the broadcast media and a broadcast start time for the broadcast media.
To receive synchronized broadcast media from the broadcaster and the parallel media from the parallel media source, the user client operably couples to the synchronization host and requests transmission of synchronization information 26 for a particular broadcast media transmission for which the user wants to receive synchronized media from the parallel media host. The synchronization information includes a synchronization cookie including a timestamp
generated by the synchronization server which the user's client compares to a local time base available on the user' s host. The synchronization cookie further includes a broadcast media start time. The synchronization information further include synchronization instructions, such as a software object declared in a Java script, that uses the timestamp and the local time base to determine when the broadcaster will begin transmission of the broadcast media relative to the local time base.
The broadcaster begins transmitting broadcast media 28 and the user uses a broadcast media receiver 30, such as a television, to receive the transmitted broadcast media. The user's client uses the synchronization instructions to determine when to begin reception of parallel media 32 from the parallel media source and transmits a request 34 to the parallel media source to been transmission of the parallel media from the parallel media source.
In one embodiment of a synchronized parallel media network according to the present invention, the broadcast media is encoded as a television programming signal. The television programming signal may be transmitted through the air, transmitted over a cable system, or transmitted and received via any suitable medium. In other embodiments, the transmitted broadcast media is encoded as a radio programming signal.
Either the broadcast media or the parallel media may be generated from either a live event or may be generated prior to the transmission of the broadcast media. In one embodiment of a synchronized parallel media network according to the present invention, the broadcast media is a live event such as a sporting event, h this case, the synchronized parallel media may be either pre-recorded background analysis or may come from another live event such as commentary by a sportscaster or other viewers.
In other embodiments, the broadcast media is pre-recorded, such as an episode in a dramatic series. In this case, the parallel programming provided by the parallel media may be different views of the action in the dramatic series generated by the producer of the dramatic series. For example, the broadcast media may contain a scene of an actor interacting with a computer. The parallel media may then contain screen shots of the material displayed on the actor's computer. As another example, the parallel media may contain alternate views of a scene or alternate storylines from another character's viewpoint.
In one embodiment of a synchronized parallel media network according to the present invention, the parallel media host is a content server operably coupled to the user client over a communications network such as the Internet, h another embodiment of a synchronized parallel media network according to the present invention, the parallel media is supplied in a peer-to-peer relationship wherein an application hosted by the user' s host presenting the parallel media to the user opens up a two-way communication link to another application over a communications network. The two applications then allow transmission and reception of parallel media
synchronized to the broadcast media. hi one embodiment of a synchronized parallel media network according to the present invention, the synchronization server is a Web server serving dynamically generated Web pages including functions written in Java scripting language. The user client is a Web browser capable of interpreting the dynamically generated Web pages including the functions written in Java scripting language. In this embodiment, the Web server transmits synchronization signals to the Web browser via cookies. The Web browser uses the synchronization signals and the functions written in Java scripting language to pull rich media from a CD-ROM. The rich media includes still and video images, audio signals, and instructions interpretable by the Web browser for linking to other parallel media providers.
In one embodiment of a synchronized parallel media network according to the present invention, the parallel media is distributed on a computer readable medium such as a CD-ROM before the broadcast content is made available. In this case, the content on the computer readable media is either encrypted or has a software lock placed on it so that the content cannot be read before the transmission of the broadcast content. In this case, a synchronization cookie further includes a parallel media software key for decrypting or unlocking the CD-ROM. h other embodiments, the synchronization instructions are withheld from distribution by the synchronization server until a short time before the transmission of the broadcast content.
FIG. 2 is a sequence diagram depicting in greater detail an embodiment of a sequence of actions during a setup operation within an embodiment of parallel media delivery network according to the present invention. A parallel media content distributed to users includes setup instructions 100 for invoking a setup client 102 such as a Web browser on the user's user host. An invocation message sent to the setup client includes a URL 104 and a request. The setup client uses the URL and the request to generate and transmit a broadcaster identification form request 106 to a synchronization server 108. The setup client receives the broadcaster identification form 110, presents the form to the user, and the user fills out the form 112 using the previously described broadcaster information. The setup client transmits the broadcaster information 114 to the synchronization server and the synchronization server generates 116 a broadcaster identification cookie 118 using the broadcaster identification data. The synchronization server transmits the broadcaster identification cookie back to the setup client and the setup client stores the cookie for later use by a user client.
In other embodiments of a setup process for a parallel media delivery network according to the present invention, other user data is collected from the user during the setup process such as data about the user's host and user client that the user intends to use to receive and present the parallel media with. In other embodiments, the user data including the broadcaster identification data are stored in a database operably coupled to the synchronization server.
FIG. 3 is a sequence diagram depicting an embodiment of a sequence of actions during
presentation of parallel media synchronized with broadcast media according to the present invention. A user client 200, hosted by a user host (not shown) transmits a synchronization request signal 202 to a synchronization server 204 hosted by a synchronization host (not shown). Information encoded in the synchronization request signal includes the previously described broadcaster identification cookie and an identification of the broadcast media that the user client wants synchronization signals for. The synchronization server uses the broadcaster identification cookie to determine a broadcaster and the broadcast media identification to transmit a query to a program start time database 208 to determine the start time of the requested broadcast media. The synchronization server receives the start time 210 and generates 212 a synchronization cookie using the start time and a timestamp from the synchronization server's realtime clock. The synchronization server generates a set of previously described synchronization instructions to be used by the user client. The synchronization cookie and synchronization instructions 214 are transmitted to the user's client. The user client uses the synchronization instructions, the synchronization cookie, and a user host's realtime clock to generate a countdown display that waits until the broadcast media start time before instructing the user' s client to transmit a parallel media request 218 for parallel media to a parallel media source 220. The parallel media source transmits a parallel media signal 222 to the user client and the user client presents 224 the parallel media to the user.
In one embodiment of a synchronized parallel network according to the present invention, the synchronization instructions embody a synchronization scanner that constantly requests and receives synchronization signals from the synchronization server.
FIG. 4 is a hardware architecture diagram of a general purpose computer suitable for use as a synchronization server host. A processor 300, comprising a Central Processing Unit (CPU) 310, a memory cache 320, and a bus interface 330, is operatively coupled via a system bus 335 to a main memory 340 and a I/O control unit 345. The I O interface control unit is operatively coupled via a I/O local bus 350 to a disk storage controller 395, and a network controller 380.
The disk storage controller is operatively coupled to a disk storage device 325. Computer program instructions 397 for implementing a synchronization server are stored on the disk storage device until the processor retrieves the computer program instructions and stores them in the main memory. The processor then executes the computer program instructions stored in the main memory to implement the features of a synchronization server.
The network controller is operatively coupled to communications device 396. The communications device is adapted to allow a synchronization server hosted by the general purpose computer to communicate via a computer network such as the Internet with other software objects such as a user client via the computer network.
Table 1 includes specification for a page that automatically pops up in a user's browser
when the user places media into a storage device such as a CD ROM drive in accordance with an exemplary embodiment of the present invention. The user selects an image and the browser is taken to a website and accesses a synchronization page.
TABLE 1 <html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-l "> <meta name- ' generator" content- ' Adobe GoLive 5"> <title>Welcome to NSite</title> </head>
<body bgcolor="#ffffff '> <div align="center">
<p><a href="http ://www.syncserver.com/Webz/movieSync.php" target="_self 'ximg src="images/NsiteLogo.jpg" width="150" height-" 102" border="0"x/a></p> </div> </body> </html>
Table 2 includes a specification for a server side script that stores a current server time as well as any synchronization file information that may need to be stored in a cookie in accordance with an exemplary embodiment of the present invention, hi addtion, access by a user to a synchronization file may be blocked until a desired time and date.
TABLE 2 <?php
@header ('Pragma: no-cache');
@header ('Cache-Control: no-cache, must-revalidate, max_age=0');
@header ('Expires: 0');
$CT = getdate(); if( $CT['mday'] = 25
&& $CT['mon'] = 6
&& $CT['hours'] >= 1
&& $CT['minutes'] >= 1) {setcookie('foundVAsync__Event2.mov',time()+3600);
setcookie('CurHr',date(G),time()+3600); setcookie('CurMin',date(i),time()+3600); setcookie('CurSec',date(s),time()+3600); header('Location:http://www.syι cserver.com/Webz/Start_Net_sync.htm );
} else { setcookie('foundVBlank',time()+3600); setcookie('previous','Blank',time()+3600); header('Location: http://www.syncserver.com/Webz/scanner.php ?Drv='.$Drv.'&Mov— .$Mov);
} exit; ?>
Table 3 includes a specification for a script used by a browser for comparison purposes in accordance with an exemplary embodiment of the present invention.
TABLE 3
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Comparator</TITLE> <script> function stopErrors() {return true;} window, onerror = stopErrors; </script> <SCRL?T LANGUAGE="JavaScript"> // var expDays = 1 ; // var exp = new Date(); // exp.setTime(exp.getTime() + (expDays*24*60*60*1000));
function getCookieVal (offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr = -l) endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie (name) { var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { varj = i + alen; if (document.cookie.substring(i, j) = arg) return getCookieVal (j); i = document.cookie.indexOf(" ", i) + 1; if(i = 0) break;
} return null;
}
function startTimer(){ shours = Number(GetCookie('CurHr')); smins = Number(GetCookie('CurMin')); ssecs = Number(GetCookie('CurSec')); phours = GetCookie('ProgHr'); pmins = GetCookie('ProgMin'); psecs = GetCookie('ProgSec'); document.timer.counter2.value = phours + " hours." document.timer.counter3. value = pmins + " mins." document.timer.counter4. value = psecs + " sees." document.timer.counterδ. value = shours + " hours." document.timer.counter9.value = smins + " mins." document.timer.counterlO.value = ssecs + " sees." ltime= new Date(); lhours= ltime.getHoursO; lmins= ltime.getMinutes(); lsecs= ltime.getSeconds(); locTime=lhours*3600+lmins*60+lsecs;
servTime=(shours-2)*3600+smins*60+ssecs; progTime=(phours-2)*3600+pmins*60+ρsecs; diffTime=servTime-locTime; progTime=progTime-dif£Time; Timer(); }
function Timer(){ time= new Date(); hours= time.getHours(); mins= time.getMinutes(); secs= time.getSeconds(); document.timer.counter5.value = hours + " hours." document.timer.counterό.value = mins + " mins." document.timer.counter7. value = sees + " sees." curTimeHb.ours*3600+mins*60+secs if(curTime>=progTime) document.TV.Play() end else timeLeft();
}
function timeLeft(){ count = progTime-curTime; document.timer.counter Lvalue = count + " sees." window.setTimeout("Timer()",1000)
}
</SCRIPT>
<STYLE TYPE="text/css"> just {text-align: justify;}
A {text-decoration: none} a:hover{color:000000; } a:hover{background-color:00FFFF; } </style>
<! <embed src="file:///E| Webz/images/Async_Event2.mov" name="TV" width="640" height="432" enablejavascript="true" controller="false" autoplay="false">
</head>
<bodybgcolor="#414141" text="#FFFFFF" link="#00FFFF" vlink="#00FFFF" alink="#FFFF00" onLoad="startTimer()">
<br><br>
<center>Program will start in:<form name="timer">
<input type-text value= 'counterl" size- '7"><br> <input type=text value- 'counter2" size="7"> <input type=text value= 'counter3" size="7"> <input type=text value= 'counter4" size="7"><br> <input type=text value= "counter5" size="7"> <input type=text value= "counterό" size="7"> <input type=text value= 'counter7" size="7"> <input type=text value=l 'counterδ" size="7"> <input type=text value 'counter9" size="7"> <input type=text value= 'counterlO" size="7">
</form> </center><br><br></BODY></HTML>
Table 4 includes a specification for a scanner process in accordance with an exemplary embodiment of the present invention.
TABLE 4 <?ρhp
Header("Cache-Control: must-revalidate, max-age=21600");
Header("Last-modified: ".gmdate("D, d M Y H:i:s", time())." GMT");
Header("Expires: ".gmdate("D, d M Y H:i:s", time() + 21600)." GMT"); ?>
<HTML><SCPJPT
LANGUAGE='JavaScript'>self.location.href="http://www.syncserver.com/Webz/movieSync. php"</SCRIPT></HTML>
Although this invention has been described in certain specific embodiments, many additional modifications and variations would be apparent to those skilled in the art. It is
therefore to be understood that this invention may be practiced otherwise than as specifically described. Thus, the present embodiments of the invention should be considered in all respects as illustrative and not restrictive, the scope of the invention to be determined by claims supported by this application and the claims' equivalents rather than the foregoing description.