Currently, when streaming UPnP or Google Cast (or Apple TV) a client can see and stream to all receivers. While this may be acceptable in a secure home environment with only authorized users, it might not be ideal in a business environment or an environment that may have guest users (where the technologies are increasingly being used).
As an example, an office might set up multiple stream receiving TVs (or separate boxes) in an office building including locations such as conference rooms, executive offices, etc. The current technology could enable screen hijacking or mistakes by transmitting parties. For example, an employee who attempts to stream a PowerPoint presentation to a screen in the local conference room might accidentally stream the presentation to the CEOs office; or a presentation to be viewed by the CEO may mistakenly be streamed to a public conference room.
The inventor recognized that it would be helpful to have a way for a stream receiver to force the caster to enter identifying information such as a password before the stream receiver accepts a stream. This could prevent unauthorized persons from sending a stream to a stream receiver which may have an inappropriate audience.
Embodiments are disclosed that allow stream receivers to be optionally configured with a password so that sensitive content is not accidentally streamed to the wrong stream receiver.
An embodiment forces a user to provide an access password or a password that identifies the stream caster and an embodiment that allows a stream of a high priority to cause the termination of a lower priority stream.
in the drawings:
In a preferred embodiment, a stream receiver is disclosed which has an assigned password and a protocol for requesting that password from a stream caster. In this embodiment, the stream receiver does not broadcast its name. In an embodiment, the stream caster gains knowledge of the stream receiver's name through a callable function 104 depicted in
The transport protocol between the stream caster and the stream receiver is normally Wifi (802.11 a/b/g/n). Two additional protocols are also available which are part of the 802.11 standard. The first is 802.11z and referred to as Tunneled Direct Link Setup (TDLS) and the second is a peer-to-peer wireless screen casting standard formed via Wi-Fi Direct and referred to as Miracast. Other wireless protocols can also be used.
The present invention is intended to be compatible to both TDLS and Miracast and other protocols such as Bluetooth and proprietary communications protocols.
Now referencing
In another scenario, stream caster 506 and stream receiver 502 perform a password exchange as described in the detailed description of the invention below.
In another scenario, stream caster 506 may cast a stream from its own internal storage to stream receiver 502 wirelessly via TDLS and bypass wireless router 508. In this scenario, stream receiver 502 will receive content stream data directly from stream caster 506 via communications link 518. In another scenario, stream caster 506 may cast a content stream residing on local content server 514 with a URL directly to stream receiver via wireless router 508 to stream receiver 502 where stream receiver 502 will connect with local content server via TDLS after which stream receiver 502 will receive the specified content stream from local content server 514 over TDLS communication link 516 and bypassing wireless router 508. In the described scenarios where TDLS is employed, local content server 514 and stream caster 506 may transfer content streams to stream receiver 502 via Miracast instead of TDLS.
Now referencing
User selection of one stream receiver by the user results in signal 114 “selected stream receiver” being sent to attempt processing block 116 “attempt to contact user selected stream receiver”. This processing block uses the address of the user selected stream receiver to attempt contacting the selected stream receiver. If the stream receiver responds, decision processing block 118 “stream receiver respond?” within a predetermined period of time, control falls through to response processing block 120 “YES” after which control falls through to return processing block 122 “return: stream receiver responded”.
If the stream receiver did not respond to decision processing block within a predetermined period of time or returned a “BUSY” status indicating that another stream is currently being received decision processing block 118 “stream receiver respond?” control will fall through to response processing block 124 “NO/BUSY” after which control will fall through to return processing block 126 “return: stream receiver timed out”. This therefore returns a busy status to the requester if the previous user is already using the stream receiver, rather than simply preempting the current user for a new user.
In one embodiment, the stream or the password can be associated with a priority, so that a higher priority stream can in fact override the busy status, even if the previous user is already using the stream receiver. For example, one password, called herein a “CEO password” may have higher priority than other passwords, and may automatically terminate any previous session (other than a session that is of similar priority to the CEO password).
Either return processing block (122 or 126) of function 104 results in control transferring to
If the return from called function 104 was “YES”, control transfer to call function processing block 30 “call function: get password for stream receiver”. This carries out the Function to Get Password For Stream Receiver shown in
This processing block will, using the selected stream receiver's name and address contained in list 400, send user entered password to the selected stream receiver after which control falls through to decision processing block 164 “stream receiver validated password?”. This processing block waits for a predetermined period of time for the selected stream receiver to either validate or not validate the password. If the stream receiver does not validate the password control falls through to response processing block 166 “NO” after which control falls through to return processing block 168 “return: password not validated”. Otherwise, control transfers to response processing block 170 “YES” after which control falls through to return processing block 172 “return: password validated”.
Either return processing block (168 or 172) of function 152 will result in control transferring to
The Function: Get Stream Source from User is shown in
Control transfers to call function processing block 38 “call function: initiate stream to stream receiver”. Function: Initiate Stream to Stream Receiver is shown in
Either return block (314 or 318) of function 302 results in control being transferred to decision processing block 40 “stream started?”. If the stream has not started, control falls through to results processing block 42 “NO” after which control will be transferred to notify processing block 28 “notify user: session terminated”. If the stream was started, control is transferred to notify processing block 44 “notify user: stream started”.
Although only a few embodiments have been disclosed in detail above, other embodiments are possible and the inventors intend these to be encompassed within this specification. The specification describes certain technological solutions to solve the technical problems that are described expressly and inherently in this application. This disclosure describes embodiments, and the claims are intended to cover any modification or alternative or generalization of these embodiments which might be predictable to a person having ordinary skill in the art. For example, the techniques described herein can be used with other kinds of shapes and sounds, and with different kinds of external sensors.
Note also that the above has described operation with a digital television. However, more generally, this can be used on any kind of device that displays videos, such as television sets, Set top boxes, Game consoles, Tuner dongles, Personal computers, and any other device having the ability to display AV content. Also, while this describes only a few specific kinds of encryption keys and key exchanges, it should be understood that this can be used with other kinds of systems that perform a key exchange.
Other kinds of content receivers and content servers are also contemplated, it being understood that each of these can be carried out by a computer that has a processor that executes stored instructions of any known type.
Those of skill would further appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software running on a specific purpose machine that is programmed to carry out the operations described in this application, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the exemplary embodiments.
The various illustrative logical blocks, modules, and circuits described in connection with the embodiments disclosed herein, may be controlled by a general or specific purpose processor, or with hardware that carries out these functions, e.g., a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. The processor can be part of a computer system that also has an internal bus connecting to cards or other hardware, running based on a system BIOS or equivalent that contains startup and boot software, system memory which provides temporary storage for an operating system, drivers for the hardware and for application programs, disk interface which provides an interface between internal storage device(s) and the other hardware, an external peripheral controller which interfaces to external devices such as a backup storage device, and a network that connects to a hard wired network cable such as Ethernet or may be a wireless connection such as a RF link running under a wireless protocol such as 802.11. Likewise, external bus 18 may be any of but not limited to hard wired external busses such as IEEE-1394 or USB. The computer system can also have a user interface port that communicates with a user interface, and which receives commands entered by a user, and a video output that produces its output via any kind of video output format, e.g., VGA, DVI, HDMI, displayport, or any other form. This may include laptop or desktop computers, and may also include portable computers, including cell phones, tablets such as the IPAD™ and Android platform tablet, and all other kinds of computers and computing platforms.
A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. These devices may also be used to select values for devices as described herein.
The steps of a method or algorithm described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, using cloud computing, or in combinations. A software module may reside in Random Access Memory (RAM), flash memory, Read Only Memory (ROM), Electrically Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), registers, hard disk, a removable disk, a CD-ROM, or any other form of tangible storage medium that stores tangible, non transitory computer based instructions. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in reconfigurable logic of any type.
In one or more exemplary embodiments, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Computer-readable media includes both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. A storage media may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer.
The memory storage can also be rotating magnetic hard disk drives, optical disk drives, or flash memory based storage drives or other such solid state, magnetic, or optical storage devices. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media. The computer readable media can be an article comprising a machine-readable non-transitory tangible medium embodying information indicative of instructions that when performed by one or more machines result in computer implemented operations comprising the actions described throughout this specification.
Operations as described herein can be carried out on or over a website. The website can be operated on a server computer, or operated locally, e.g., by being downloaded to the client computer, or operated via a server farm. The website can be accessed over a mobile phone or a PDA, or on any other client. The website can use HTML code in any form, e.g., MHTML, or XML, and via any form such as cascading style sheets (“CSS”) or other.
The computers described herein may be any kind of computer, either general purpose, or some specific purpose computer such as a workstation. The programs may be written in C, or Java, Brew or any other programming language. The programs may be resident on a storage medium, e.g., magnetic or optical, e.g. the computer hard drive, a removable disk or media such as a memory stick or SD media, or other removable medium. The programs may also be run over a network, for example, with a server or other machine sending signals to the local machine, which allows the local machine to carry out the operations described herein.
Also, the inventor(s) intend that only those claims which use the words “means for” are intended to be interpreted under 35 USC 112, sixth paragraph. Moreover, no limitations from the specification are intended to be read into any claims, unless those limitations are expressly included in the claims.
Where a specific numerical value is mentioned herein, it should be considered that the value may be increased or decreased by 20%, while still staying within the teachings of the present application, unless some different range is specifically mentioned. Where a specified logical sense is used, the opposite logical sense is also intended to be encompassed.
The previous description of the disclosed exemplary embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these exemplary embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.
Number | Name | Date | Kind |
---|---|---|---|
6223292 | Dean et al. | Apr 2001 | B1 |
8170532 | Wan et al. | May 2012 | B2 |
20050071058 | Salande, Jr. | Mar 2005 | A1 |
20070136778 | Birger et al. | Jun 2007 | A1 |
20120079080 | Pishevar | Mar 2012 | A1 |
20120239916 | Malasani | Sep 2012 | A1 |
20130084905 | Ehara | Apr 2013 | A1 |
20130125225 | Candelore | May 2013 | A1 |
20130238702 | Sheth et al. | Sep 2013 | A1 |
20130268758 | Schrecker | Oct 2013 | A1 |
20130304860 | Yang | Nov 2013 | A1 |
20140362293 | Bakar | Dec 2014 | A1 |
20140373123 | Kang | Dec 2014 | A1 |
20150289005 | Holmquist | Oct 2015 | A1 |
Number | Date | Country | |
---|---|---|---|
20160088328 A1 | Mar 2016 | US |