In another exemplary embodiment, any digital and analog conversions may be performed within STB 130. In general it is to be understood that video distribution network 120 could provide video data to STB 130 in any of a variety of ways, e.g., asynchronously, point-to-point, multicast, etc. Further, video data could be provided to STB 130 from sources other than video source 110, such as a digital video recorder (DVR) included within or attached to STB 130, some other home media storage device accessible via a home network, or even a content server remote from STB 130, but accessible through a network such as network 160, which is illustrated in
STB 130 is a computing device that includes server application 140. STB 130 is generally attached to a television set or video receiver belonging to a subscriber for video services that are delivered via video distribution network 120. STB 130 may provide a variety of functions, including allowing a user to select video channels, purchase pay-per-view video, see a directory of programs available for viewing and/or pay-per-view purchase, etc. In many embodiments, STB 130 includes one or more output jacks and is configured to provide video outputs, such as RGB outputs, S-video outputs, or composite video outputs to video display 150. Display 150 in many embodiments is a conventional or high definition television receiver or display monitor.
Server application 140 generally includes computer software stored in a computer-readable medium such as a computer memory included in STB 130, and executed by a processor included in STB 130. However, embodiments are possible in which server application 140 is included on a computing device separate from but in communication with STB 130. Server application 140 receives requests for video content from client 180 through network 160 and IP Multimedia Subsystem (IMS) 170, which is included within network 160, when that network is an IP network. Client 180 includes client application 190 through which users may make requests for video content. In response to such requests, server application 140 causes STB 130 to transmit video to client 180 via IP network 160.
Network 160 may be the Internet. Moreover, embodiments are possible in which network 160 is a packet-switched network using protocols other than IP.
IMS 170 is known to those skilled in the art for providing an architecture in an IP network facilitating the provision of multimedia services to users at network devices, such services including photographs, video, instant messages, telephony, etc. IMS is discussed in a variety of specifications, such as 3rd Generation Partnership Project, Technical Specification Group Services and System Aspects; IP Multimedia Subsystem (IMS), Stage 2 (Release 7), 3GPP TS 23.228 V7.0.0 (2005-06), fully incorporated herein by reference and available from the 3rd Generation Partnership Project of Valbonne, France. IMS 170 uses session initiation protocol (SIP) to establish communications for providing video services from STB 130 to client 180. SIP is well known to those skilled in the art and is discussed in, among other publications, J. Rosenberg. et al., RFC 3261—SIP: Session Initiation Protocol (June 2002), fully incorporated herein by reference, published by the Internet Society of Reston, Va., and available on the Word Wide Web at the faqs.org website. Other Requests for Comment relating to SIP published by the Internet Society are known to those skilled in the art, including M. Garcia-Martin et al., RFC 3455—Private Header (P-Header) Extensions to the Session Initiation Protocol (SIP) for the 3rd-Generation Partnership Project (3GPP) (January 2003) and J. Rosenberg et al., RFC 3264—An Offer/Answer Model with Session Description Protocol (SDP) (June 2002), which are also fully incorporated herein by reference. SDP is described in M. Handley and V. Jacobson, RFC 2327—SDP: Session Description Protocol (April 1998), also published by the Internet Society and also fully incorporated herein by reference.
Client 180 hosts client application 190, which allows a user to request and view video received in STB 130. Client 180 may include any one of a number of computing devices known to those skilled in the art, including, without limitation, a computer workstation, a desktop, notebook, laptop, or handheld computer, or some other computing device known to those skilled in the art, such as a Java-enabled cellular telephone or similar device. Computing devices such as the foregoing may employ any of a number of computer operating systems known to those skilled in the art, including, but by no means limited to, known versions and/or varieties of the Microsoft Windows® operating system, the Unix operating system (e.g., the Solaris® operating system distributed by Sun Microsystems of Menlo Park, Calif.), the AIX UNIX operating system distributed by International Business Machines of Armonk, N.Y., and the Linux operating system. While STB 130 generally is a specialized device for receiving video signals from video source 110 via network 120 and providing video signals to display 150, it is to be understood that STB 130 may be a computing device such as one of those enumerated above, so long as the computing device is capable of receiving video signals from network 120 and providing signals to display 150, as well as network 160.
STB 130 and client 180 generally each include instructions executable by one or more computing devices such as those listed above. For example, server application 140 and client application 190 generally comprise one or more sets of computer executable instructions for performing a variety of tasks. Such tasks may include using SIP to negotiate a session for sending and receiving a video stream, establishing such a session, and starting the transmission of the video stream. In cases in which STB 130 is sending stored video content, e.g., from a DVR, to client 180, server application 140 and client application 190 may include instructions for establishing a control channel according to Real Time Streaming Protocol (RTSP), described in H. Schulzrinne, RFC 2326—Real Time Streaming Protocol (RTSP) (April 1998), published by the Internet Society of Reston, Va. and available on the world wide web at the faqs.org website, and fully incorporated by reference herein. It is possible to implement extensions to SIP that provide for RTSP. Further, STB 130 and client 180 may include hardware and/or software for decoding and/or encoding a stream of video data. Those skilled in the art will understand that the need for such hardware and/or software will depend on the format of video data provided to and by STB 130. Moreover, known media players, such as the Real Player, provided by RealNetworks, Inc., of Seattle, Wash., or the Windows Media Player, provided by Microsoft Corp. of Redmond, Wash., may be included on client 180 and used in conjunction with client application 190 to display video accessed from STB 130.
Computer-executable instructions may be compiled or interpreted from computer programs created using a variety of programming languages and/or technologies known to those skilled in the art, including, without limitation, and either alone or in combination, Java™, C, C++, Visual Basic, Java Script, Perl, etc. In general, a processor (e.g., a microprocessor) receives instructions, e.g., from a memory, a computer-readable medium, etc., and executes these instructions, thereby performing one or more processes, including one or more of the processes described herein. Such instructions and other data may be stored and transmitted using a variety of known computer-readable media.
A computer-readable medium includes any medium that participates in providing data (e.g., instructions), which may be read by a computer. Such a medium may take many forms, including, but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media include, for example, optical or magnetic disks and other persistent memory. Volatile media include dynamic random access memory (DRAM), which typically constitutes a main memory. Transmission media include coaxial cables, copper wire and fiber optics, including the wires that comprise a system bus coupled to the processor. Transmission media may include or convey acoustic waves, light waves and electromagnetic emissions, such as those generated during radio frequency (RF) and infrared (IR) data communications. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, any other magnetic medium, a CD-ROM, DVD, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, an EPROM, a FLASH-EEPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.
Client application 190 further includes a user interface, generally graphical user interface (GUI) 220, for allowing users to request content from STB 130, and for displaying requested content that is received at client 180. GUI 220 is displayed on a display included in or associated with client 180, and may be accessed through input devices included in or associated with client 180, such as a computer keyboard, touchpad, mouse or other pointing device, etc. It is to be understood that embodiments are possible in which client application 190 does not include a graphical user interface but rather includes some other type of interface such as a text-based interface.
GUI 220 includes client menu 225 that presents options that a user may select to view content available from STB 130, and to request such content from STB 130. Menu 225 could take a variety of forms, and present a variety of options. For example, in one embodiment, menu 225 presents a list of predetermined channels of video content provided by STB 130 from which a user may select a channel for viewing. Such channels could be simply listed, or could be presented hierarchically in a tree or the like. Further, menu 225 could be populated by a media guide downloaded from STB 130. In such event, SIP may be used to establish a session for downloading the media guide, it may be provided in a data stream sent according to hyper-text transfer protocol (HTTP) or the like. Generally selection of video content from menu 225 causes client application 190 to generate a SIP INVITE message, discussed in more detail below. In addition to menu 225, GUI 220 generally includes arrows or some other control for changing channels. Further, controls for controlling streaming media, such pause, play, etc., may be included.
GUI 220 further includes video display area 230 for displaying video received from STB 130.
Accordingly, in certain embodiments, to support place-shifting of video content, server application 140 includes a SIP user agent module 250 that at a minimum implements the functionality specified for a SIP user agent in RFC 3261. Among other things, user agent module 250 implements functions to allow STB 130 to register itself with a SIP registrar, as specified in RFC 3261. As mentioned above, a SIP registrar is generally included in the infrastructure of IMS 170. Server application 140 also implements functions to generate, send, and receive, as appropriate, requests and responses as specified in RFC 3261.
Server application 140 further includes a user interface, generally graphical user interface (GUI) 260 for allowing users to configure STB 130. GUI 260 may be displayed on video display 150 and accessed using an infrared (IR) control device such as is known in the art, although embodiments are possible in which GUI 260 is accessed using a computer keyboard, mouse or other pointing device, etc.
GUI 260 includes STB menu 265 providing options that a user may select to choose devices that may receive content from STB 130, and also to select the content that may be received by particular devices. For example, as explained below, both STB 130 and client 180 register with a SIP registrar. Accordingly, a user of STB 130 could be provided with a menu to select SIP addresses of record, preferably through identifiers associated with each address of record, from which STB 130 may accept requests for video content. It is to be understood that embodiments are possible in which server application 140 does not include a graphical user interface but rather includes some other type of interface such as a text-based interface.
In step 305, STB 130 registers itself with the registrar in network 160, e.g., in IMS 170.
Next, in step 310, upon instantiation of client application 190, client 180 registers itself with a registrar in network 160, e.g., in IMS 170.
Next, in step 315, upon selection of a user in GUI 220 of a menu option for receiving content from STB 130, client application 190 included in client 180 sends an INVITE request to STB 130. Session description protocol (SDP) may be used to transport metadata including information about video content. For client 180 to request video content from STB 130, client application 190 generates a SIP INVITE message. Such a SIP INVITE message may include an “offer” formatted according to SDP as described in RFC 3264. Generally this offer will specify parameters including the type of media being requested (video, audio, etc.), transport protocols to be used (e.g., UDP), the format of the media being requested (e.g., MPEG-2. MPEG-4, etc.), an address for the media to be received, e.g., an IP address for client 190, and a transport port for the media, e.g., a port on client 190. Such parameters may be provided as options in GUI 220, or may be specified in the program code for client application 190.
Next, in step 320, server application 140 sends a response to client application 190. Server 140 generally responds to the INVITE message sent in step 315 with a SIP ANSWER, e.g., 200 OK, message that may further negotiate some of the foregoing parameters, to which client application 190 in turn responds with a SIP ACK message. Further, in cases in which RTSP is desirable because stored content is being requested from STB 130, the INVITE message may also include a request and parameters for setting up a control channel that is logically coupled to the data channels providing requested video content.
It is to be understood that the negotiation of a SIP session could occur differently than described with respect to steps 315 and 320. For example, it is possible for client 180 to send a SIP INVITE message that essentially requests that STB 130 provide session parameters such as available media formats, possible transport protocols, etc., whereupon client 180 responds with a SIP message selecting the options provided by STB 130.
Next, in step 325, STB 130 sends content to client 180.
Next, in step 330, the session initiated in step 315 is terminated, e.g., using a SIP BYE message and its associated signaling sequence.
Following step 330, process 300 ends.
In step 405, client application 190 causes client 180 to display menu options. Such menu options in one embodiment include a list of predetermined channels of video content provided by STB 130 from which a user may select a channel for viewing, as described above.
Next, in step 410, client 180 receives input, e.g., by a user action on a keyboard or pointing device attached to client 180. Such input in an embodiment includes a user selection of a video channel for viewing.
Next, process 400 invokes step 315 of process 300, and continues as described above with reference to process 300 beginning with step 315.
In step 505, a display associated with STB 130, e.g., a television or video monitor attached to STB 130, displays menu 265. In an embodiment menu 265 includes an option to specify a client or clients 180 to which STB 130 may provide video content, e.g., by specifying client or clients 180 associated with SIP addresses of record with which SIP may be used to initiate sessions and to which video may be provided. Menu 265 may also include an option whereby particular content, e.g., certain video channels, may be specified for a particular client or clients 180. Menu 265 also generally includes an option to exit menu 265 for a more general menu included in STB 130 or to view video content, e.g., a menu for selecting video channels for viewing, pay-per-view content for downloading, etc.
Next, in step 510, server application 140 determines whether input has been received indicating that a user would like to specify client or clients 180 that may receive video content from STB 130. If so, process 500 proceeds to step 515. Otherwise, process 500 proceeds to step 520.
In step 515, server application 140 receives input indicating client or clients 180 to receive video content from STB 130. Such input may be received in a variety of known ways, e.g., by a user identifying client or clients 180 by name, e.g., clients 180 associated with SIP addresses of record, by using a cursor controlled with a pointing device to mark names in list of one or more clients 180 presented in GUI 260. Following step 515, process 500 returns to step 505.
In step 520, server application 140 determines whether input has been received indicating that a user would like to specify video content that client or clients 180 may receive from STB 130. If so, process 500 proceeds to step 525. Otherwise, process 500 proceeds to step 530.
In step 525, server application 140 receives input indicating particular video content that a particular client or clients 180 will be permitted (or, in some embodiments, forbidden) to receive from STB 130. Again, such input may be received in a variety of known ways, e.g., by a user identifying content that a client or clients 180 may receive from STB 130 by marking such client or clients 180 and such video content by using a known pointing device to mark items in a list or lists presented in GUI 260. For example, clients 180 may be identified by name, by a network address, by a SIP address of record, etc. Video content may be identified by a number for a video channel, the name of a video program, etc. Following step 525, process 500 proceeds to step 530.
In step 530, server application 140 determines whether it has received input indicating that a user wishes to exit menu 265. If yes, process 500 ends. Otherwise, process 500 returns to step 505.
Because the IMS architecture includes SIP proxies, it is further advantageously possible to use SIP to integrate with other IMS services and to signal for QoS. For example, as SIP messages traverse SIP proxies within the IMS, it is possible to use the proxies to request QoS information. Further, because other media services are provided through the IMS, such as messaging, telephony, etc., it is advantageously possible for client application 140 to be integrated with applications that provide such services, or for such services to be provided through a common interface with client GUI 220. For example, a user watching video on a cellular telephone could have the video automatically paused when an incoming call is received.
With regard to the processes, systems, methods, heuristics, etc. described herein, it should be understood that, although the steps of such processes, etc. have been described as occurring according to a certain ordered sequence, such processes could be practiced with the described steps performed in an order other than the order described herein. It further should be understood that certain steps could be performed simultaneously, that other steps could be added, or that certain steps described herein could be omitted. In other words, the descriptions of processes herein are provided for the purpose of illustrating certain embodiments, and should in no way be construed so as to limit the claimed invention.
Accordingly, it is to be understood that the above description is intended to be illustrative and not restrictive. Many embodiments and applications other than the examples provided would be apparent to those of skill in the art upon reading the above description. For example, although embodiments are described above with reference to STB 130, it should be understood that server application 140 could be included in embodiments including hardware devices other than STB 130. Further, although embodiments used herein disclose use of SIP, it is to be understood that some other standard protocol for initiating sessions could be used in other embodiments.
The scope of the invention should be determined, not with reference to the above description, but should instead be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled. It is anticipated and intended that future developments will occur in the arts discussed herein, and that the disclosed systems and methods will be incorporated into such future embodiments. In sum, it should be understood that the invention is capable of modification and variation and is limited only by the following claims.
All terms used in the claims are intended to be given their broadest reasonable constructions and their ordinary meanings as understood by those skilled in the art unless an explicit indication to the contrary in made herein. In particular, use of the singular articles such as “a,” “the,” “said,” etc. should be read to recite one or more of the indicated elements unless a claim recites an explicit limitation to the contrary.