Peer-to-web broadcasting
Claim Score by NHIP
Abstract
A system for peer-to-web media broadcasting, including a plurality of publisher computers, for broadcasting media over the Internet, each publisher computer including a video transcoder, and an image processor, a plurality of HTTP web client computers for viewing broadcasted media, an application server for transmitting web page content to HTTP web client computers, including a database management system for storing and retrieving publisher authentication information, at least one switchboard server, for managing TCP/IP connections between online publisher computers and HTTP web client computers, a load balancer for distributing incoming client requests among the at least one switchboard server, and a storage volume that is mounted on each of the at least one switchboard servers, for caching portions of media received from publishing computers. A method and computer-readable storage media are also described and claimed.

Term
Projected expiry 27 February 2028.
- Priority and filed
- Published
- Today
- Projected expiry
21 claims: 9 independent, 12 dependent
- 1A system for peer-to-web media broadcasting, comprising:a plurality of publisher computers, for broadcasting media over the Internet, each publisher computer comprising: a video transcoder for streaming bit-rate targeted video data;and an image processor for applying graphical effects to images;a plurality of HTTP web client computers for viewing broadcasted media;an application server for transmitting web page content to HTTP web client computers, comprising a database management system for storing and retrieving publisher authentication information;at least one switchboard server, for managing TCP/IP connections between online publisher computers and HTTP web client computers;a load balancer for distributing incoming client requests among said at least one switchboard server;and a storage volume that is mounted on each of said at least one HTTP switchboard servers, for caching portions of media received from publishing computers.
- 6A system for peer-to-web media broadcasting, comprising:a plurality of publisher computers, for broadcasting media over the Internet, each publisher computer comprising: a video transcoder for streaming bit-rate targeted video data;and an image processor for applying graphical effects to images;a plurality of HTTP web client computers for viewing broadcasted media;an application server for transmitting web page content to HTTP web client computers, comprising a database management system for storing and retrieving publisher authentication information;a web proxy server, for managing TCP/IP connections between online publisher computers and HTTP web client computers;and a storage volume that is mounted on said web proxy server, for caching portions of media received from publishing computers.
- 11A method for peer-to-web media broadcasting, comprising:transmitting, via a first TCP/IP connection, a web page to a web client computer for display, the web page including a list of at least one channel, and each channel including at least one video clip, wherein the at least one video clip are stored on a publisher computer;receiving a request from the web client computer to view a designated one of the at least one video clip;determining whether or not the designated video clip resides on a cache;if the designated video clip resides on the cache, then streaming, via a second TCP/IP connection, the designated video clip from the cache to the client computer for viewing;and if the designated video clip does not reside on the cache, then requesting a stream for the designated video clip from the publisher computer, via a TCP/IP connection that the publisher computer previously established with a proxy server;and saving the designated video clip on the cache.
- 12A computer-readable storage medium storing program code for causing a computing device:to transmit, via a first TCP/IP connection, a web page to a web client computer for display, the web page including a list of at least one channel, and each channel including at least one video clip, wherein the at least one video clip are stored on a publisher computer;to receive a request from the web client computer to view a designated one of the at least one video clip;to determine whether or not the designated video clip resides on a cache;if the designated video clip resides on the cache, then to stream, via a second TCP/IP connection, the designated video clip from the cache to the client computer for viewing;and if the designated video clip does not reside on the cache, then to request a stream for the designated video clip from the publisher computer, via a TCP/IP connection that the publisher computer previously established with a proxy server;and to save the designated video clip on the cache.
- 13Broadest claimClaim Score 72, broad(NHIP)A method for multicasting of digital media, comprising:receiving a portion of media data from a media file, the media data being streamed from a publisher computer and intended for a first viewer;streaming the portion of media data to the first viewer, prior to the media data being received in its entirety;dynamically storing the portion of media data;receiving a request from a second viewer, to view the same media file;and streaming the stored portion of media data to the second viewer, prior to the media data being stored in its entirety.
- 15A computer-readable storage medium storing program code for causing a computing device:to receive a portion of media data from a media file, intended for a first viewer, the media data being streamed from a publisher computer;to stream the portion of media data to the first viewer, prior to the media data being received in its entirety;to dynamically store the portion of media data;to receive a request from a second viewer, to view the same media file;and to stream the stored portion of media data to the second viewer, prior to the media data being stored in its entirety.
- 16A method for generating a web page that assembles content from a local host and multiple remote hosts, comprising bridging multiple domain hosts to a single domain, comprising generating a domain name server (DNS) entry for localhost.servername.com that maps to IP address 127.0.0.1, where “servername” is a name of a web server, so that a local host and multiple remote hosts appear to originate from a single domain.
- 20A computer-readable storage medium storing program code for causing a computing device to bridge multiple domain hosts to a single domain, by generating a domain name server (DNS) entry for localhost.servername.com that maps to IP address 127.0.0.1, where “servername” is a name of a web server, so that a local host and multiple remote hosts appear to originate from a single domain.
- 21A system for peer-to-portal media broadcasting, comprising:a web portal including a portal web page, the portal web page including at least one inline frame for embedding external objects;a plurality of publisher computers, for broadcasting media over the Internet to said web portal, each publisher computer comprising a video transcoder for streaming bit-rate targeted video data;an application server for transmitting web pages to inline frames of said web portal;a web proxy server, for managing TCP/IP connections between online ones of said publisher computers and said web portal;and a storage volume that is mounted on said web proxy server, for caching portions of media received from said publishing computers.
Independent claims9
130 paragraphs in 5 sections, as filed
FIELD OF THE INVENTION
0001The subject invention relates to multimedia broadcasting over the Internet.
BACKGROUND OF THE INVENTION
0002Conventional digital video broadcasting systems operate by hosting individuals' video clips on a central server computer, and serving them to client computers for viewing upon request. News clips, video conferences and consumer videos are all distributed from a central host server.
0003Use of a central server for broadcasting video clips has several drawbacks. The owner of the video clips has limited control over the broadcast of his clips, and who is permitted to view them. Updating or replacing video clips requires upload of updated or replacement clips, and issuance of instructions to the server to remove the old clips and post the new ones. Seemingly simple tasks such as renaming or reorganizing of video clips requires sending accurate instructions to the server, and often such tasks only take effect after a time period such as 24 hours. Preferred ways of screening the public from viewing private video clips are generally not possible. Upload of large video clips to a central server can be very time consuming. Original video clips hosted on a central server can be pirated.
SUMMARY OF THE DESCRIPTION
0004The subject invention concerns a system and method for peer-to-web broadcasting. Using the subject invention, a user of a client computer can broadcast his media over the web. The user's media can be viewed within conventional web browsers that use conventional media players, such as a Windows Media Player or a Macromedia Flash player control. Media players are generally available on most platforms and web browsers. As such, the subject invention does not require additional viewing software. The broadcaster, also referred to as a publisher, can organize his media into multiple broadcast channels, which viewers can then select from for viewing.
0005The subject invention overcomes drawbacks of conventional video broadcasting technology that uses a central server. Using the subject invention, an owner of video clips has complete control over the broadcast of his clips, and the people who have viewing privileges. No upload to a central hosting server is required. No coordination of instructions with a hosting server is required. No time is wasted uploading videos to a central server. The subject invention does not copy source files or upload source files to a central server. Media is prepared on a local client computer for web delivery, and original video clips are protected against copyright piracy.
0006The subject invention is particularly advantageous for independent filmmakers, artists and musicians, who can use peer-to-web broadcasting to show their media to potential employers, licensees and other such business leads. Broadcasters can set their broadcast channels as public, in which case they can be searched and found by the general public. Alternatively, broadcasters can set their broadcast channels as unlisted, in which case they can be viewed by invitation only.
0007The subject invention is also particularly advantageous for consumers who wish to share their personal recorded video clips with friends and family. The invention enables them to establish private channels.
0008There is thus provided in accordance with an embodiment of the subject invention a system for peer-to-web media broadcasting, including a plurality of publisher computers, for broadcasting media over the Internet, each publisher computer including a video transcoder, and an image processor, a plurality of HTTP web client computers for viewing broadcasted media, an application server for transmitting web page content to HTTP web client computers, including a database management system for storing and retrieving publisher authentication information, at least one switchboard server, for managing TCP/IP connections between online publisher computers and HTTP web client computers, a load balancer for distributing incoming client requests among the at least one switchboard server, and a storage volume that is mounted on each of the at least one switchboard servers, for caching portions of media received from publishing computers.
0009There is further provided in accordance with an embodiment of the subject invention a system for peer-to-web media broadcasting, including a plurality of publisher computers, for broadcasting media over the Internet, each publisher computer including a video transcoder for streaming bit-rate targeted video data, and an image processor for applying graphical effects to images, a plurality of HTTP web client computers for viewing broadcasted media, an application server for transmitting web page content to HTTP web client computers, including a database management system for storing and retrieving publisher authentication information, a web proxy server, for managing TCP/IP connections between online publisher computers and HTTP web client computers, and a storage volume that is mounted on the web proxy server, for caching portions of media received from publishing computers.
0010There is yet further provided in accordance with an embodiment of the subject invention a method for peer-to-web media broadcasting, including transmitting, via a first TCP/IP connection, a web page to a web client computer for display, the web page including a list of at least one channel, and each channel including at least one video clip, wherein the at least one video clip are stored on a publisher computer, receiving a request from the web client computer to view a designated one of the at least one video clip, determining whether or not the designated video clip resides on a cache, if the designated video clip resides on the cache, then streaming, via a second TCP/IP connection, the designated video clip from the cache to the client computer for viewing, and if the designated video clip does not reside on the cache, requesting a stream for the designated video clip from the publisher computer via a TCP/IP connection which the publisher computer has previously established with a proxy computer, and saving the designated video clip on the cache.
0011There is additionally provided in accordance with an embodiment of the subject invention a computer-readable storage medium storing program code for causing a computing device to transmit, via a first TCP/IP connection, a web page to a web client computer for display, the web page including a list of at least one channel, and each channel including at least one video clip, wherein the at least one video clip are stored on a publisher computer, to receive a request from the web client computer to view a designated one of the at least one video clip, to determine whether or not the designated video clip resides on a cache, if the designated video clip resides on the cache, then to stream, via a second TCP/IP connection, the designated video clip from the cache to the client computer for viewing, and if the designated video clip does not reside on the cache, then to open a connection between the web client computer and the publisher computer, to cause the publisher computer to stream, via a second TCP/IP connection, the designated video clip to the web client computer for viewing, and to save the designated video clip on the cache.
0012There is moreover provided in accordance with an embodiment of the subject invention a method for multicasting of digital media, including receiving a portion of media data from a media file, the media data being streamed from a publisher computer and intended for a first viewer, streaming the portion of media data to the first viewer, prior to the media data being received in its entirety, dynamically storing the portion of media data, receiving a request from a second viewer, to view the same media file, and streaming the stored portion of media data to the second viewer, prior to the media data being stored in its entirety.
0013There is further provided in accordance with an embodiment of the subject invention a computer-readable storage medium storing program code for causing a computing device to receive a portion of media data from a media file, the media data being streamed from a publisher computer and intended for a first viewer, to stream the portion of media data to the first viewer, prior to the media data being received in its entirety, to dynamically store the portion of media data, prior to the media data being received in its entirety, to receive a request from a second viewer, to view the same media file, and to stream the stored portion of media data to the second viewer, prior to the media data being stored in its entirety.
0014There is yet further provided in accordance with an embodiment of the subject invention a method for generating a web page that assembles content from a local host and multiple remote hosts, including bridging multiple domain hosts to a single domain, including generating a domain name server (DNS) entry for localhost.servername.com that maps to IP address 127.0.0.1, where “servername” is a name of a web server, so that a local host and multiple remote hosts appear to originate from a single domain.
0015There is additionally provided in accordance with an embodiment of the subject invention a computer-readable storage medium storing program code for causing a computing device to bridge multiple domain hosts to a single domain, by generating a domain name server (DNS) entry for localhost.servername.com that maps to IP address 127.0.0.1, where “servername” is a name of a web server, so that a local host and multiple remote hosts appear to originate from a single domain.
0016There is moreover provided in accordance with an embodiment of the subject invention a system for peer-to-portal media broadcasting, including a web portal including a portal web page, the portal web page including at least one inline frame for embedding external objects, a plurality of publisher computers, for broadcasting media over the Internet to said web portal, each publisher computer including a video transcoder for streaming bit-rate targeted video data, an application server for transmitting web pages to inline frames of the web portal, a web proxy server, for managing TCP/IP connections between online ones of the publisher computers and the web portal, and a storage volume that is mounted on the web proxy server, for caching portions of media received from the publishing computers.
BRIEF DESCRIPTION OF THE DRAWINGS
0017The subject invention will be more fully understood and appreciated from the following detailed description, taken in conjunction with the drawings in which:
0018<figref idref="DRAWINGS">FIG. 1</figref> is a simplified block diagram of a peer-to-broadcast system, in accordance with an embodiment of the subject invention;
0019<figref idref="DRAWINGS">FIG. 2</figref> shows a sample web page for viewing media on a web client computer, the media being broadcast from a peer computer in accordance with an embodiment of the subject invention;
0020<figref idref="DRAWINGS">FIG. 3</figref> shows a sample video viewing area overlaid on a sample web page, in accordance with an embodiment of the subject invention;
0021<figref idref="DRAWINGS">FIG. 4</figref> is an illustration of a web page assembled from multiple sources, in accordance with an embodiment of the subject invention;
0022<figref idref="DRAWINGS">FIG. 5</figref> shows a sample web page for publishing media on a peer computer, for web broadcast, in accordance with an embodiment of the subject invention;
0023<figref idref="DRAWINGS">FIG. 6</figref> is a simplified block diagram of a two-tier communication system for publishing media within the peer-to-broadcast system of <figref idref="DRAWINGS">FIG. 1</figref>, in accordance with an embodiment of the subject invention;
0024<figref idref="DRAWINGS">FIG. 7</figref> is a simplified flow chart of a sequence of events within a peer-to-broadcast system, in accordance with an embodiment of the subject invention;
0025<figref idref="DRAWINGS">FIG. 8</figref> is a simplified block diagram of a publisher system, for publishing media within the peer-to-broadcast system of <figref idref="DRAWINGS">FIG. 1</figref>, in accordance with an embodiment of the subject invention;
0026<figref idref="DRAWINGS">FIG. 9</figref> shows a sample portal web page including an embedded portion broadcast from a publisher, in accordance with an embodiment of the subject invention;
0027<figref idref="DRAWINGS">FIG. 10</figref> is a simplified block diagram of a single-tier communication system for publishing media within the peer-to-broadcast system of <figref idref="DRAWINGS">FIG. 1</figref>, in accordance with an alternate embodiment of the subject invention; and
0028<figref idref="DRAWINGS">FIG. 11</figref> is a simplified flowchart of a method for delivering combined static and live content from publisher to web client, in accordance with an embodiment of the subject invention.
DETAILED DESCRIPTION
0029The subject invention concerns peer-to-web broadcasting. Using the subject invention, a publisher can broadcast his media to the web from his peer computer, without uploading the media to a central server. As such the publisher retains complete control over his media assets, and who is able to view them.
0030Reference is now made to <figref idref="DRAWINGS">FIG. 1</figref>, which is a simplified block diagram of a peer-to-broadcast system, in accordance with an embodiment of the subject Invention. Shown in <figref idref="DRAWINGS">FIG. 1</figref> is a broadcasting system <b>100</b> that enables peer computers, referred to as publishers, to broadcast media over the web. The publisher stores the media, and web clients can view the broadcast media using conventional web browsers, without requiring additional client software. The broadcast media can be live video, pre-recorded video, music, pictures, presentations, slideshows and other forms of media.
0031Media can be published on a mobile phone <b>112</b>, a video camera <b>114</b>, a wireless device <b>116</b>, a home computer <b>118</b> and other such computing devices. Published media can be viewed on a television <b>122</b>, a mobile phone <b>124</b>, a portable player <b>126</b>, a home computer <b>128</b> and other such computing devices that run a web browser.
0032Reference is now made to <figref idref="DRAWINGS">FIG. 2</figref>, which shows a sample web page <b>200</b> for viewing media on a web client computer, the media being broadcast from a peer computer in accordance with an embodiment of the subject invention. As can be seen in <figref idref="DRAWINGS">FIG. 2</figref>, web page <b>200</b> is displayed by a conventional web browser, such as Microsoft's Internet Explorer browser.
0033Shown in the upper left of web page <b>200</b> is a list of broadcast channels, each channel corresponding to a set of media related by a common theme that is generally the name of the channel. Channel <b>210</b> is named “Best Videos”, and is currently the channel being displayed in web page <b>200</b>. Channel <b>220</b> is named “Music” and channel <b>230</b> is named “Staff Pics”. To the right of the list of channels is the set of media for the currently selected channel. Each piece of media is represented by a thumbnail, which is a small image that designates the media. Thus thumbnails <b>240</b>, <b>250</b> and <b>260</b> correspond to videos from the “Best Videos” channel. By clicking on one of these thumbnails, a user can view the selected video within his web browser. The thumbnail images and the corresponding videos are stored on a peer computer of the publisher who created the channels.
0034Reference is now made to <figref idref="DRAWINGS">FIG. 3</figref>, which shows a sample video viewing area overlaid on a sample web page <b>300</b>, in accordance with an embodiment of the subject invention. When a user clicks on one of the video icons, such as icons <b>240</b>, <b>250</b> or <b>260</b> of <figref idref="DRAWINGS">FIG. 2</figref>, the corresponding video is streamed to the user and played within a viewing area <b>310</b>. Viewing area <b>310</b> includes typical video controls <b>320</b>, for play/pause, stop, fast forward, fast reverse and volume control.
0035Generally, the web page for viewing published media is assembled from multiple sources, including inter alia: <ul id="ul0001" list-style="none"><li id="ul0001-0001" num="0000"><ul id="ul0002" list-style="none"><li id="ul0002-0001" num="0036">(i) hosted programmatic and layout elements (graphics, CSS, JavaScript, HTML);</li><li id="ul0002-0002" num="0037">(ii) hosted content from broadcasting system <b>100</b> (<figref idref="DRAWINGS">FIG. 1</figref>);</li><li id="ul0002-0003" num="0038">(iii) local multi-media content (video, image thumbnails);</li><li id="ul0002-0004" num="0039">(iv) local data container elements (XML documents);</li><li id="ul0002-0005" num="0040">(v) multi-media content (video, image thumbnails) from multiple remote publisher computers; and</li><li id="ul0002-0006" num="0041">(vi) data container elements (XML documents) from multiple remote publisher computers. <br /> Reference is now made to <figref idref="DRAWINGS">FIG. 4</figref>, which is an illustration of a web page assembled from multiple sources (i)-(vi), in accordance with an embodiment of the subject invention. Shown at the top of <figref idref="DRAWINGS">FIG. 4</figref> is a web page, denoted by A, rendered by a standard browser. Web page A includes components assembled from multiple sources. </li></ul></li></ul>
0042A first source, denoted by <b>1</b>, is local broadcast content. A local host server, denoted by <b>4</b>, is treated as part of the domain for system <b>100</b> (<figref idref="DRAWINGS">FIG. 1</figref>), by including a DNS entry for “localhost.pixpo.com” which is mapped to 127.0.0.1, where “pixpo” is a web server name for system <b>100</b>. It will be appreciated by those skilled in the art that effectively this DNS entry enables an Internet browser to treat the local host server as part of the domain for system <b>100</b>. This is significant since web browser security policies generally require that dynamic content, such as iFrames and scripts, have a single domain of origin. The DNS entry thus enables web pages to be assembled from both local and remote endpoints without violating security policies enforced by the browser.
0043It will thus be appreciated by those skilled in the art that the subject invention bridges multiple domain hosts to a single domain, and facilitates communication between a local host and main page data through JavaScript. The subject invention enables access to information from any IP address via a sub-domain of an origin server. For example, if an HTML page is sent from www.mixpo.com, then that HTML page, via the subject invention's JavaScript bridge, can access any *.mixpo.com URL. Thus a DNS entry for “amazon.mixpo.com” can be mapped so that it resolves to Amazon's search API servers. JavaScript on a www.mixpo.com HTML page can then make remote data requests to Amazon's servers directly. Generally, such multiple calls to services from multiple domains are blocked by a browser's single origin security policy. Using the subject invention, however, a browser makes multiple connections to multiple services because of the JavaScript bridge, which maps an external domain, such as amazon.com, to an internal domain, such as amazon.mixpo.com. The browser then allows these connections, even though they connect to external domains.
0044In distinction, prior art technology, such as Google's “IG” pages, assembles multiple components into a page by assembling the page completely on central servers before sending it to a browser.
0045A second source, denoted by <b>2</b>, is content from a broadcasting system <b>100</b>. A third source, denoted by <b>3</b>A, <b>3</b>B and <b>3</b>C, is content from multiple remote broadcasters John, George and Ringo desktop computers or other computing devices. Source <b>3</b> also includes data content 3D.
0046Shown at the bottom right of <figref idref="DRAWINGS">FIG. 4</figref> is a web page, denoted by <b>5</b>, for a broadcaster. Web page <b>5</b> also includes components assembled from multiple sources. A first source, denoted by <b>6</b>, is local broadcast content. A second source, denoted by <b>7</b>, is content from broadcasting system <b>100</b>.
0047As shown in <figref idref="DRAWINGS">FIG. 4</figref>, source <b>1</b> for local content uses a Representational State Transfer (REST) application programming interface (API), for communicating with web page A and web page <b>5</b>. Information about REST is available on the Internet at http://en.wikipedia.org/wiki/Representational_State_Transfer.
0048Reference is now made to <figref idref="DRAWINGS">FIG. 5</figref>, which shows a sample web page <b>500</b> for publishing media on a peer computer, for web broadcast, in accordance with an embodiment of the subject invention. Web page <b>500</b> enables a publisher to create broadcast channels, such as the channels listed in <figref idref="DRAWINGS">FIG. 2</figref>, and to populate the channels with his media. As shown in <figref idref="DRAWINGS">FIG. 5</figref>, a publisher has created a new channel <b>510</b>, temporarily named “New Channel”, and an explorer-type window <b>520</b> enables the publisher to select media files from his file system to broadcast within the new channel. Channels can be designated as public, in which case they are made publicly available, or as unlisted, in which case they are only made available to friends that the publisher invites to see his media.
0049In accordance with an embodiment of the subject invention, information about publishers and their broadcast channels is stored in a central database, which can be queried by web clients in order to conduct searches for content.
0050Reference is now made to <figref idref="DRAWINGS">FIG. 6</figref>, which is a simplified block diagram of a two-tier communication system for publishing media within the peer-to-broadcast system of <figref idref="DRAWINGS">FIG. 1</figref>, in accordance with an embodiment of the subject invention. As described hereinabove with respect to <figref idref="DRAWINGS">FIG. 1</figref>, the peer-to-broadcast system enables HTTP web clients <b>612</b> and <b>618</b> to view channels of media content broadcast by publishers <b>622</b> and <b>628</b>.
0051The system shown in <figref idref="DRAWINGS">FIG. 6</figref> includes two tiers of HTTP proxy servers; namely, a first tier <b>630</b> of reverse proxy servers <b>632</b>, <b>635</b> and <b>638</b>, and a second tier <b>640</b> of switchboard servers <b>642</b>, <b>645</b> and <b>648</b>. Each proxy server caches responses, generally in accordance with the HTTP standard, which enables it to serve many clients while making only a small number of requests to another server.
0052When a publisher logs on to a switchboard server, the switchboard server writes a file to a master Andrew File System (AFS) directory. The file is named according to the username of the publisher, and the file contains the switchboard server's host name. Reverse proxy servers search the AFS directory for that file, to determine which switchboard server to contact for a designated publisher. It will be appreciated by those skilled in the art that the AFS directory is essentially being used here as a database. Because multiple switchboard servers are able to write to the same file, cooperative locking is used. It will further be appreciated by those skilled in the art that the subject invention may use an actual database, instead of a master AFS directory, for this purpose of maintaining a switchboard directory.
0053A distinction between the first tier servers and the second tier servers lies in the request to the next server. Specifically, the first tier reverse proxy servers extract a username from an HTTP request, and search the master directory for a file with that name. The file contains the name of a switchboard server. The second tier switchboard servers extract a username from an HTTP request, find a connected publisher with that username, and forward a request to the connected publisher. If a switchboard server receives a request for a publisher who is not connected, the switchboard server returns a <b>503</b> HTTP response code. JavaScript in the web client browser receives this response and handles it appropriately; e.g., redirecting to a “user not connected” page.
0054Each proxy server accepts regular HTTP connections on port <b>80</b>, and forwards HTTP requests to an upstream server. The origin server is a publisher computer, which returns either data or an error code.
0055As shown in <figref idref="DRAWINGS">FIG. 6</figref>, each proxy server has its own local cache. Cached items are indexed by URL, and each item has an expiration time and a cache validator. The cache validator is a last-modified date of an opaque identifier string, set by the origin server. If the URL is requested before it expires, its cached item is served right away from cache. Otherwise, if the URL has expired, a conditional request is made to the next server; i.e., to the switchboard server or to the origin server. The conditional request sends the cache validator to the next server. In turn, the next server uses the validator to determine whether the cached item for the URL is current. If the cached item is current, the next server returns an HTTP validation code, such as <b>304</b> Not Modified. Otherwise, if the cached data for the URL is not current, then the next server sends the updated data with an appropriate HTTP code, such as <b>200</b> OK.
0056In accordance with an embodiment of the subject invention, the HTTP proxy servers aggregate requests. When an HTTP proxy server receives three client requests for the same file, the file is fetched from the next server once, and served to all three clients. Aggregation occurs at each tier. Thus the reverse proxy servers aggregate many web clients, and the switchboard servers aggregate many reverse proxy servers. An HTTP proxy server does not invoke a second request for a specific URL while it is receiving a response for that URL. Instead, it adds a new client to the response being received. This mechanism protects publishers from receiving an excessive number of requests.
0057The HTTP proxy servers are indifferent as to content type. All requests are processed through the aggregation and caching mechanisms, and all responses are treated as data streams. HTTP supports “keep-alive connections” and reuses connections for different web clients.
0058A load balancer <b>660</b> is used to distribute web client requests among HTTP servers <b>632</b>, <b>635</b> and <b>638</b>.
0059A server <b>670</b> is used (i) to authenticate publishers, (ii) to manage the database of publishers, their broadcast channels, and their channel media content, and (iii) to serve up web content, such as HTML, XML and static graphic assets, to web clients and publishers, such as the web pages illustrated in <figref idref="DRAWINGS">FIG. 2-5</figref> hereinabove. The video streams themselves are transmitted via the two tiers <b>630</b> and <b>640</b>. Thus, referring to <figref idref="DRAWINGS">FIGS. 2 and 3</figref>, the content in web pages <b>200</b> and <b>300</b>, and the broadcast channel information is transmitted from server <b>670</b> to web clients <b>612</b> and <b>618</b>, and the video stream that is played in viewing area <b>310</b> is transmitted from the two tiers <b>630</b> and <b>640</b>.
0060Server <b>670</b> includes an application server <b>672</b>, a web server <b>675</b> and a database management system <b>678</b>.
0061It will thus be appreciated by those skilled in the art that web page <b>300</b> synthesizes live content, static assets and hosted content in the same context. Specifically, content data via XML documents, and media objects are transmitted to web clients <b>612</b> and <b>618</b>, and in turn the web clients transform and assemble the content, based on template pages served by server <b>670</b>. Transformations and page display are performed using XSLT, JavaScript and HTML code. The subject invention's web page assembly technology enables displaying live content from multiple remote sources into a single web page. Multiple publisher content is assembled and presented in what appears to a user as a single coherent entity, whereas in fact it is a composite entity, built from multiple live broadcast sources.
0062It will also be appreciated by those skilled in the art that the architecture of <figref idref="DRAWINGS">FIG. 6</figref> enables broadcast of multiple media streams from a single peer source; i.e., one-to-many broadcast from a single peer machine to multiple simultaneous viewers.
0063Details of operation of components of the system of <figref idref="DRAWINGS">FIG. 6</figref> are described hereinbelow.
HTTP Servers
632
,
635
and
638
0064Firewalls and NAT routers are being used in over 50% of home broadband users today. Nearly all firewalls and NAT routers block unsolicited inbound network traffic, which creates an obstacle for systems that involve peers on the Internet. One solution to overcoming this obstacle uses an intermediate Internet host to proxy network traffic. Firewalls and NAT routers generally block inbound traffic, but outbound traffic is allowed. Since TCP/IP is bidirectional, once a peer computer behind a firewall or NAT router establishes a connection to another host, that host can then send data back to the peer through the TCP/IP connection. Switchboard servers <b>642</b>, <b>645</b> and <b>648</b> function as intermediate hosts.
0065HTTP servers <b>632</b>, <b>635</b> and <b>638</b> also enable connections to publishers with dynamically assigned IP addresses. Specifically, these servers enable broadcasters to be connected to web clients using browsers that point to standard URLs. For example, if a publisher broadcasts from his home computer that has an internal IP address of 192.168.1.100 and a dynamically assigned IP address of 24.66.77.88, then HTTP servers enable the publisher to appear as http://liveweb.pixpo.com/john, and to serve content to a standard web client. The publisher does not have to run an HTTP server, and does not have to create a port for forwarding configurations for his NAT devices.
0066The architecture in <figref idref="DRAWINGS">FIG. 6</figref> does not rely on a “thread-per-connection” approach for publishers <b>622</b> and <b>628</b>. It has been found that a low commodity switchboard server can handle up to 20,000 simultaneous connections.
0067In accordance with an embodiment of the subject invention, HTTP servers <b>632</b>, <b>635</b> and <b>638</b> operate as a cluster, with automatic dynamic failover in the event of a proxy failure.
0068HTTP servers <b>632</b>, <b>635</b> and <b>638</b> run their proxies as a service. Proxy services have configurable options, including inter alia the options listed in TABLE I.
0000<tables id="TABLE-US-00001" num="00001"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217pt" align="center" /><thead><row><entry namest="1" nameend="1" rowsep="1">TABLE I</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Configurable options for HTTP servers</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="offset" colwidth="14pt" align="left" /><colspec colname="1" colwidth="49pt" align="left" /><colspec colname="2" colwidth="154pt" align="left" /><tbody valign="top"><row><entry /><entry>Ports for</entry><entry>HTTP listen port</entry></row><row><entry /><entry>the server</entry><entry>Reference to an AFS-hosted file which stores the</entry></row><row><entry /><entry>to listen on</entry><entry>switchboard server addresses</entry></row><row><entry /><entry>Log files</entry><entry>General (for general monitoring and debugging)</entry></row><row><entry /><entry /><entry>Access (Apache log file compatible)</entry></row><row><entry /><entry /><entry>Pid (for Linux service management)</entry></row><row><entry /><entry>Cache</entry><entry>Cache directory (path to a large volume)</entry></row><row><entry /><entry /><entry>Cache minimum expire time</entry></row><row><entry /><entry namest="offset" nameend="2" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
Switchboard Servers
642
,
645
and
648
0069Switchboard servers <b>642</b>, <b>645</b> and <b>648</b> maintain connection tables with records of connections between HTTP web clients and publishers.
0070A load-balancing algorithm, based on least-loaded switchboard, is used to designate a switchboard server for each publisher. As such, generally any given publisher can connect to any switchboard server.
0071Switchboard servers <b>642</b>, <b>645</b> and <b>648</b> run their switchboards as a service. Switchboard services have configurable options, including inter alia the options listed in TABLE II.
0000<tables id="TABLE-US-00002" num="00002"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217pt" align="center" /><thead><row><entry namest="1" nameend="1" rowsep="1">TABLE II</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Configurable options for switchboard servers</entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="42pt" align="left" /><colspec colname="2" colwidth="175pt" align="left" /><tbody valign="top"><row><entry>Ports for</entry><entry>HTTP (HTTP servers should be configured to use this port)</entry></row><row><entry>the server</entry><entry>Switchboard (logon server should direct publishers to use</entry></row><row><entry>to listen on</entry><entry>this port)</entry></row><row><entry /><entry>SOAPAdmin</entry></row><row><entry>Log files</entry><entry>General (for general monitoring and debugging)</entry></row><row><entry /><entry>Access (Apache log file compatible)</entry></row><row><entry /><entry>Pid (for Linux service management)</entry></row><row><entry>HTTP proxy</entry><entry>URLs for error page response lookups</entry></row><row><entry /><entry>Cache directory (path to a large volume)</entry></row><row><entry /><entry>Cache minimum expire time</entry></row><row><entry namest="1" nameend="2" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
Cache
650
0072Use of cache within the subject invention provides many advantages, including improved quality of service for web clients, and decreased load on publisher computers. In accordance with an embodiment of the subject invention, cache <b>650</b> is a large Andrew File System (AFS) volume, which all servers have access to. It has been found that a cache size of <b>200</b> GB suffices to hold several weeks' worth of data.
0073As shown in <figref idref="DRAWINGS">FIG. 6</figref>, each switchboard server and reverse proxy server features its own local cache. These caches reduce the amount of forwarded network requests necessary, and also support streaming incomplete portions of media files. In addition, the system includes the larger, global AFS cache <b>650</b>, which stores complete media files. Switchboard servers write to this cache, and reverse proxy servers read from this cache.
0074In accordance with am embodiment of the subject invention, when a switchboard server receives a complete media file, it copies the media file to AFS cache <b>650</b>, asynchronously from the HTTP request from the reverse proxy server. AFS cache <b>650</b> stores completely received media items from all switchboard servers. In general, dynamically generated items are not stored in AFS cache <b>650</b>. Whether a file is dynamic or static is determined by the HTTP compliant cache policy specified by the response from a publisher. AFS cache <b>650</b> stores complete media items, and generally is not used for streaming.
0075In accordance with an embodiment of the subject invention, cache <b>650</b> is a size-limited file system-based most recently used (MRU) cache. Each item of content in the cache has a “last used” timestamp. When a new data item is pulled from a publisher, it is added to the cache. When a requested item is found in the cache, the requested item is promoted to the top of the cache by resetting its “last used” timestamp to the current time.
0076Further in accordance with an embodiment of the subject invention, a cache utility program monitors the space occupied by contents of cache <b>650</b>. The cache utility program accepts as parameters a path to a cache directory and a pre-specified size. If the space occupied by the cache contents exceeds the pre-specified size, the cache utility program deletes least recently accessed items until the occupied space is sufficiently reduced. The cache utility program may be scheduled to run on a timer, such as once every 30 minutes.
0077Reference is now made to <figref idref="DRAWINGS">FIG. 7</figref>, which is a simplified flow chart of a sequence of events within a peer-to-broadcast system, in accordance with an embodiment of the subject invention. The flowchart of <figref idref="DRAWINGS">FIG. 7</figref> is divided into three columns. The leftmost column includes steps performed by a web client computer, such as web client <b>612</b> or <b>618</b> (<figref idref="DRAWINGS">FIG. 6</figref>), the middle column includes steps performed by a caching web proxy, such as HTTP server <b>632</b>, <b>635</b> or <b>638</b>, and the rightmost column includes steps performed by a publisher computer, such as publisher <b>622</b> or <b>628</b>.
0078At step <b>705</b> the publisher requests to log on to an application server using HTTPS/XML messaging, and the publisher is directed to a switchboard proxy server, such as switchboard server <b>642</b>, <b>645</b> and <b>648</b>. At step <b>710</b> the publisher logs into the appropriate switchboard server and registers an endpoint, such as “/username/”.
0079At step <b>715</b> a web client requests a publisher URL, such as http://live.pixpo.com/username/<media_file>. At step <b>720</b> the caching web proxy receives the request and checks its cache for the requested media item. If it is determined at step <b>725</b> that the media item is present in the cache, then at step <b>730</b> the item is delivered to the web client from the cache, and at step <b>735</b> the web client receives the data it requested. Otherwise, if it is determined at step <b>725</b> that the media item is not present in the cache, then a determination is made at step <b>740</b> whether or not the publisher is currently connected.
0080If the publisher is not connected, then at step <b>745</b> the caching web proxy returns a “not found” error, and at step <b>750</b> the web client receives the error message instead of the requested data. If the publisher is connected, then at step <b>755</b> the caching web proxy proxies the request to the publisher. At step <b>760</b> the publisher receives the request from the caching web proxy, and at step <b>765</b> the publisher streams a response back to the caching web proxy.
0081At step <b>770</b> the caching web proxy writes the response received from the publisher into its cache, and at step <b>775</b> the caching web proxy sends the response back to the web client. Finally, at step <b>780</b> the web client receives from the caching web proxy the data it requested.
0082In accordance with an embodiment of the subject invention, cached partially streamed files can be accessed from cache. I.e., a file does not have to be streamed to completion in cache and stored in its entirety as a file before it can be accessed from cache. If a viewer A starts watching a broadcast from publisher B, the proxy server begins streaming content to viewer A and caching it to file. If viewer C then starts watching the same content from publisher B, the proxy server detects this condition and begins streaming content to viewer C from the partially completed stream in the cache. It will be appreciated that this mechanism enables a “multi-cast” from a single source broadcast to a plurality of viewers.
Load Balancer
660
0083Load balancer <b>660</b> forwards requests to HTTP servers <b>632</b>, <b>635</b> and <b>638</b> based on a segmenting algorithm.
Server
670
, Application Server
672
, Web Server
675
and Database Management System
678
0084Server <b>670</b> is responsible for orchestrating the entire delivery of static and live content from publisher to web client. Application server <b>672</b> is responsible for authenticating publisher logins. Web server <b>675</b> is responsible for transmitting HTML pages to publishers <b>622</b> and <b>628</b> and to web clients <b>612</b> and <b>618</b>. Database management system <b>678</b> is responsible for managing a database that stores publisher broadcast channels and their media contents.
0085Reference is now made to <figref idref="DRAWINGS">FIG. 8</figref>, which is a simplified block diagram of a publisher system <b>800</b>, for publishing media within the peer-to-broadcast system of <figref idref="DRAWINGS">FIG. 1</figref>, in accordance with an embodiment of the subject invention. System <b>800</b> generally resides on publisher computers <b>622</b> and <b>628</b> (<figref idref="DRAWINGS">FIG. 6</figref>), although in an alternate embodiment system <b>800</b> may reside within web application <b>670</b>. As shown in <figref idref="DRAWINGS">FIG. 8</figref>, publisher system <b>800</b> includes a video transcoder <b>810</b>, for generating bit-rate targeted data streams, an image processor <b>820</b>, a network engine <b>830</b>, a database manager <b>840</b>, and a widget engine <b>850</b>. These components are described in detail hereinbelow.
0086In accordance with an embodiment of the subject invention, components <b>810</b>-<b>850</b> are accessed via an application programming interface (API). One such API is a Representational State Transfer (REST) interface. Information about REST is available on the Internet at http://en.wikipedia.org/wiki/Representational_State_Transfer. It will be appreciated by those skilled in the art that other APIs may also be used to interface components <b>810</b>-<b>850</b>.
Video Transcoder
810
0087Video transcoder <b>810</b> includes a transcoder that generates bit-rate targeted data streams in one or more formats, including inter alia Microsoft Advanced Streaming Format (WMV), Macromedia Flash VP6 (FLV) and DivX Networks v5.x (AVI).
Image Processor
820
0088Image processor <b>820</b> includes graphic effects such as alpha channels for transparency, gradients and shadows. Image processor <b>820</b> also includes decoders for conventional image formats, including the recently established RAW camera format.
Network Engine
830
0089Network engine <b>830</b> includes messaging engines for client-to-client and client-to-server connections.
Database Manager
840
0090Database manager <b>840</b> includes an implementation of SQL. Database manager <b>840</b> also includes a command generator and sequencer.
Widget Engine
850
0091Widget engine <b>850</b> supports widget layers such as vectors, strings and maps. Widget engine <b>850</b> also includes MAPI support. Optionally, widget engine <b>850</b> may also include support for third party widgets.
0092In reading the above description, persons skilled in the art will realize that there are many apparent variations that can be applied to the methods and systems described. An important such variation is the ability for a publisher to broadcast his media to a web portal. Reference is now made to <figref idref="DRAWINGS">FIG. 9</figref>, which shows a sample portal web page <b>900</b> including an embedded portion broadcast from a publisher, in accordance with an embodiment of the subject invention. Portal web page <b>900</b> includes an inline frame (iFrame) <b>910</b>, in which is displayed embedded media, broadcast by a publisher directly to the iFrame. In accordance with an embodiment of the subject invention, publisher system <b>800</b> enables broadcast of content into a portal iFrame.
0093An iFrame is an HTML construct that enables external objects to be included, such as an external HTML page. The source <ul id="ul0003" list-style="none"><li id="ul0003-0001" num="0000"><ul id="ul0004" list-style="none"><li id="ul0004-0001" num="0094"><IFRAME> SRC=URI </IFRAME> <br /> is used to embed content from a specified universal resource identifier (URI) into a web page. iFrames can act as targets for other links. </li></ul></li></ul>
0095When a user browsing portal web page <b>900</b> clicks on a media item in iFrame <b>910</b>, a media player pops up, similar to the media player displayed in viewing window <b>310</b> of <figref idref="DRAWINGS">FIG. 2</figref>, and enables the user to interactively view the media item. In addition to the media player, information about the media item and its publisher is also displayed to the user.
0096The content displayed in iFrame <b>910</b> includes three main tabs: a “Media” tab <b>920</b>, a “Search” tab <b>930</b> and a “MyBroadcast” tab <b>940</b>. Media tab <b>920</b> contains a subset of publisher generated content. Search tab <b>930</b> enables keyword searches of content broadcast to the portal. MyBroadcast tab <b>940</b> enables a publisher to publish content to the portal, and to remove content that was already published to the portal.
0097It will be appreciated that the system architecture shown in <figref idref="DRAWINGS">FIG. 6</figref> is but one example of an architecture that supports the peer-to-web broadcasting system of <figref idref="DRAWINGS">FIG. 1</figref>. Several other architectures can be used to implement the subject invention. To this end, reference is made to <figref idref="DRAWINGS">FIG. 10</figref>, which is a simplified block diagram of a single-tier communication system for publishing media within the peer-to-broadcast system of <figref idref="DRAWINGS">FIG. 1</figref>, in accordance with an alternate embodiment of the subject invention.
0098The system of <figref idref="DRAWINGS">FIG. 10</figref> differs from that of <figref idref="DRAWINGS">FIG. 6</figref> in that the two-tier communication system of <figref idref="DRAWINGS">FIG. 6</figref> is replaced by a single web proxy server that also functions as a switchboard that connects online publishers and viewers.
0099Reference is now made to <figref idref="DRAWINGS">FIG. 11</figref>, which is a simplified flowchart of a method used by server <b>1070</b> to deliver combined static and live content from publisher to web client, in accordance with an embodiment of the subject invention. At step <b>1110</b>, in response to an HTTP request from a web client, server <b>1070</b> transmits a web page to the web client for display to a user, the web page including a list of one or more video channels broadcast by a publisher, each channel including a list of one or more video clips, such as the web page illustrated in <figref idref="DRAWINGS">FIG. 2</figref>. The video clips are stored on the publisher computer, and the information for the channel names and for the names and thumbnails of the video clips is stored in a database, and retrieved by database management system <b>1078</b>. Listings of video clips from various designated channels are transmitted from server <b>1070</b> to the web client, in response to user requests for video channel information.
0100At step <b>1120</b> server <b>1070</b> receives a request from the web client to view a designated one of the video clips. At step <b>1130</b> server <b>1070</b> determines whether or not the designated video clip already resides in its cache. If so, then at step <b>1140</b> server <b>1070</b> streams the designated video clip from its cache to the web client for viewing by the user. Otherwise, at step <b>1150</b> server <b>1070</b> opens a connection between the web client computer and the publisher computer. At step <b>1160</b> server <b>1070</b> causes the publisher computer to stream the designated video clip to the web client, for viewing by the user. Finally, at step <b>1170</b> server <b>1070</b> stores the designated video clip in its cache for future access.
0101In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made to the specific exemplary embodiments without departing from the broader spirit and scope of the invention as set forth in the appended claims. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
Contents5
12 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US9166897B1 | Cited by | United States of America | Applicant |
| US9998512B2 | Cited by | United States of America | Applicant |
| US10986216B2 | Cited by | United States of America | Applicant |
| US10097650B2 | Cited by | United States of America | Applicant |
| US11044341B2 | Cited by | United States of America | Applicant |
| US8892631B2 | Cited by | United States of America | Search report |
| AU2013324640B2 | Cited by | Australia | Search report |
| US11012529B2 | Cited by | United States of America | Applicant |
| US8949463B2 | Cited by | United States of America | Search report |
| US11044342B2 | Cited by | United States of America | Applicant |
| WO2014048572A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US9245047B2 | Cited by | United States of America | Applicant |
| US2013007299A1 | Cited by | United States of America | Pre-grant |
| US10268332B2 | Cited by | United States of America | Applicant |
| US11044346B2 | Cited by | United States of America | Search report |
| US2012151373A1 | Cited by | United States of America | Pre-grant |
| US2012089687A1 | Cited by | United States of America | Pre-grant |
| US9535560B1 | Cited by | United States of America | Applicant |
| US2010131977A1 | Cited by | United States of America | Pre-grant |
| US9906575B2 | Cited by | United States of America | Applicant |
| US2014188978A1 | Cited by | United States of America | Pre-grant |
| US10645135B2 | Cited by | United States of America | Applicant |
| US11012530B2 | Cited by | United States of America | Applicant |
| US9430036B1 | Cited by | United States of America | Applicant |
| US11005967B2 | Cited by | United States of America | Applicant |
| US9244912B1 | Cited by | United States of America | Applicant |
| US9614884B2 | Cited by | United States of America | Applicant |
| US9591350B2 | Cited by | United States of America | Applicant |
| US10805429B1 | Cited by | United States of America | Search report |
| KR20150060747A | Cited by | Republic of Korea | Search report |
| US10542080B2 | Cited by | United States of America | Applicant |
| WO2012013893A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| CN107534750A | Cited by | China | Search report |
| US9553942B2 | Cited by | United States of America | Search report |
| US9167047B1 | Cited by | United States of America | Applicant |
| US2015052565A1 | Cited by | United States of America | Pre-grant |
| US9948690B2 | Cited by | United States of America | Search report |
| US10999342B2 | Cited by | United States of America | Applicant |
| US9185175B1 | Cited by | United States of America | Applicant |
| US8386954B2 | Cited by | United States of America | Search report |
| US10985934B2 | Cited by | United States of America | Applicant |
| US2010262645A1 | Cited by | United States of America | Pre-grant |
| US11044345B2 | Cited by | United States of America | Applicant |
| US9241130B2 | Cited by | United States of America | Search report |
| US10375144B2 | Cited by | United States of America | Applicant |
| US2010306401A1 | Cited by | United States of America | Pre-grant |
| US10248374B2 | Cited by | United States of America | Applicant |
| US9400699B2 | Cited by | United States of America | Applicant |
| US11044344B2 | Cited by | United States of America | Applicant |
| US9395885B1 | Cited by | United States of America | Applicant |
| US9148454B1 | Cited by | United States of America | Search report |
| US10200762B2 | Cited by | United States of America | Applicant |
| WO2016164076A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US8782267B2 | Cited by | United States of America | Search report |
| US10902080B2 | Cited by | United States of America | Applicant |
| US10084855B2 | Cited by | United States of America | Search report |
| US8996614B2 | Cited by | United States of America | Applicant |
| US2011258676A1 | Cited by | United States of America | Pre-grant |
| US2012242778A1 | Cited by | United States of America | Pre-grant |
| WO2012109377A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US10218756B2 | Cited by | United States of America | Search report |
| US10963531B2 | Cited by | United States of America | Applicant |
| US10924580B2 | Cited by | United States of America | Applicant |
| US2009094652A1 | Cited by | United States of America | Pre-grant |
| US9031891B2 | Cited by | United States of America | Applicant |
| US10979533B2 | Cited by | United States of America | Applicant |
| US8966376B2 | Cited by | United States of America | Applicant |
| US10165042B2 | Cited by | United States of America | Applicant |
| US10257249B1 | Cited by | United States of America | Search report |
| US10084864B2 | Cited by | United States of America | Applicant |
| US10931792B2 | Cited by | United States of America | Search report |
| US10657449B2 | Cited by | United States of America | Applicant |
| US10986208B2 | Cited by | United States of America | Applicant |
| US10999402B2 | Cited by | United States of America | Applicant |
| US11038989B2 | Cited by | United States of America | Applicant |
| US2005071240A1 | Cites | United States of America | Pre-grant |
| US2006031407A1 | Cites | United States of America | Pre-grant |
| US2006095471A1 | Cites | United States of America | Pre-grant |
| US2006174277A1 | Cites | United States of America | Pre-grant |
| US6249810B1 | Cites | United States of America | Pre-grant |
| US6332163B1 | Cites | United States of America | Pre-grant |
| US6442598B1 | Cites | United States of America | Pre-grant |
4 members in 1 office
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 58440506 | United States of America | A | |
| US20060584405 | – | – | – |
Members4
| Document | Office | Kind | |
|---|---|---|---|
| US2008098101A1 | United States of America | A1 | |
| US2008098301A1 | United States of America | A1 | |
| US7827298B2 | United States of America | B2 | |
| US8370732B2 | United States of America | B2 |
55 transactions on the USPTO file
Allowed after 2 non-final rejections, 1 final rejection and 1 RCE.
- Non-final rejections
- 2
- Final rejections
- 1
- RCEs
- 1
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 8th Yr, Small EntityM2552 | M2552 | |
| Applicant Has Filed a Verified Statement of Small Entity Status in Compliance with 37 CFR 1.27SMAL | SMAL | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Mail Examiner's AmendmentMEX.A | MEX.A | |
| Mail Examiner's AmendmentMEX.A | MEX.A | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Pubs Case Remand to TCPUBTC | PUBTC | |
| Receipt into PubsR1021 | R1021 | |
| Response to Reasons for AllowanceREAS | REAS | |
| Mail Examiner's AmendmentMEX.A | MEX.A | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Correspondence Address ChangeC.ADB | C.ADB | |
| Withdraw Flagged for 5/25W525 | W525 | |
| Flagged for 5/25F525 | F525 | |
| Transfer Inquiry to GAUTI1050 | TI1050 | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| A statement by one or more inventors satisfying the requirement under 35 USC 115, Oath of the ApplicOATHDECL | OATHDECL | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
19 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| AssignmentAS | AS | |
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Lapse for failure to pay maintenance feesLapsedPATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITYLAPS | LAPS | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Fee payment procedureMAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITYFEPP | FEPP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Fee payment procedurePAT HOLDER CLAIMS SMALL ENTITY STATUS, ENTITY STATUS SET TO SMALL (ORIGINAL EVENT CODE: LTOS); ENTITY STATUS OF PATENT OWNER: SMALL ENTITYFEPP | FEPP | |
| Fee paymentFPAY | FPAY | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: SMALL ENTITYFEPP | FEPP | |
| Fee payment procedurePAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: SMALL ENTITYFEPP | FEPP | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 20080098101
- Publication, DOCDB
- 2008098101
- Publication, EPODOC
- US2008098101
- Application
- 11584405
- Application, DOCDB
- 58440506
- Application, EPODOC
- US20060584405
Titles
- English
- Peer-to-web broadcasting
Classification
- CPC, 12
- H04L67/1008
- G06F2221/2119
- H04L63/08
- H04L67/2847
- H04L67/02
- H04L67/2842
- H04L67/1002
- H04L67/28
- H04L67/2833
- H04L67/2885
- H04L67/1023
- H04L67/2838
- IPC, 1
- G06F15 173
- USPC, 1
- 709223000