With the proliferation of high speed networks and Internet access, an increasing number of corporate entities now provide their employees with remote access to corporate computers. This allows employees to work from home or other locations during normal working hours (sometimes referred to as telecommuting), as well as after-hours and on weekends. Such remote access to computer resources is provided by a variety of software packages, such as, for example, Remote Desktop Client interacting with Terminal Services, both by Microsoft®. These and other similar software packages can provide access to a collection of terminal sessions and virtual computers selected from a pool, or access to specific individual computers. Users log into a “remote session” wherein the user's desktop appears as the desktop would appear if the user were logged in locally to an actual, distinct computer.
At least some remote access software programs allow a single user workstation to establish remote sessions with multiple remote computers. In such systems, the client side of the remote access program relies on the underlying windowing environment to control and re-direct the flow of inputs provided by the user to the remote computer, as well as the presentation of graphical displays and audio presented by the remote computer to the user. In such windowing environments, input is directed to a particular remote session window based on which window has the “focus,” i.e., which window is selected by the user, either in windowed or full-screen mode. But only input from the user is re-directed based on the current focus. Graphical displays are presented regardless of focus as long as the corresponding window is not minimized or hidden/occluded by another window. Audio is presented unconditionally, regardless of focus or the state of the window (i.e., minimized, restored or maximized). The parallel presentation of graphical displays in multiple windows does not generally create difficulties for the user, as a user can choose to look at or ignore individual windows. But this is not the case with multiple audio streams, since the user cannot simply listen to one audio stream when it is overlayed with one or more additional audio streams, all concurrently being presented to the user.
For a detailed description of exemplary embodiments of the invention, reference will now be made to the accompanying drawings in which:
Certain terms are used throughout the following description and claims to refer to particular system components. As one skilled in the art will appreciate, computer companies may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .” Also, the term “couple” or “couples” is intended to mean either an indirect, direct, optical or wireless electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct electrical connection, through an indirect electrical connection via other devices and connections, through an optical electrical connection, or through a wireless electrical connection. Additionally, the term “system” refers to a collection of two or more hardware and/or software components, and may be used to refer to an electronic device, such as a computer, a portion of a computer, a combination of computers, etc. Further, the term “software” includes any executable code capable of running on a processor, regardless of the media used to store the software. Thus, code stored in non-volatile memory, and sometimes referred to as “embedded firmware,” is included within the definition of software.
Receiving station 110 also comprises graphics subsystem 112 and display device 111, which provide graphical images to a user of receiving station 110; input/output subsystem 114 and input device 113 which receive input data from the user; audio subsystem 118 and audio device 117 which provide audio to the user of receiving station 110; and storage device 116, which may be used to store at least some configuration information used by receiver software 115. Receiver software 115 receives messages from sending station 120. The messages comprise video data that is forwarded to graphics subsystem 112, which displays the information to the user via display device 111, as well as audio data that is forwarded to audio subsystem 118 for presentation to the user via audio device 117. The user provides input via input device 113, which is forwarded by input/output subsystem 114 to receiver software 115. Receiver software 115 subsequently sends one or more messages to sending station 120 comprising the input data received from input/output subsystem 114. The input data comprises data that originates from input device 113, which in at least some illustrative embodiments includes a keyboard and mouse.
Continuing to refer to the illustrative embodiment of
Sender software 124 and receiver software 115 together act as an abstraction layer that hides the existence of the underlying network from both the user operating receiver station 110 and application program 126 executing on sending station 120. By hiding the underlying network, the user interacts with application 126 as if it were executing locally on receiving station 110, and application 126 interacts with the user as if the user were directly operating sending station 120 via locally-coupled devices. This infrastructure allows for the creation of one or more “remote sessions,” also sometimes referred to as “remote access sessions,” “remote desktop sessions,” “remote visualization sessions,” and “remote graphics sessions.” A remote session is a process by which two computers, a receiving station that initiates the session and a sending station that hosts the session, interact to provide a user at the receiving station with a computing environment that appears to the user as if the user were logged directly into the sending station.
The host sending station provides graphical information to the receiving station within one or more remote session messages, which displays the images represented by the information as the images would be displayed at the sending station if the user were logged-in locally to the sending station. The graphical information comprises sequential bits of data, grouped to represent pixels displayed on a display. The data is transmitted in the time-sequenced order in which the pixels are drawn on a display (e.g., left to right for each pixel within a scan line, and top to bottom for each scan line in sequence). Audio information is also transmitted in digital form within one or more remote session messages, with groupings of bits representing encoded audio that is decoded and presented as analog audio to the user as if the user were logged-in locally to the sending station. Likewise, the user operates the receiving station, which provides input data (e.g., keyboard characters and mouse coordinate data) to the sending station, and the input data is received and processed by the sending station in the same manner as inputs provided by a locally logged-in user.
The computer-readable media of both volatile storage 230 and non-volatile storage 232 comprise, for example, software that is executed by processor 226 and provides both receiving station 110 and sending station 120 with some or all of the functionality described herein. The system configuration 200 also comprises a network interface (Network I/F) 228 that enables the system configuration 200 to receive information via a local area network and/or a wired or wireless wide area network, represented in the example of
System 200 may be a bus-based computer, with the bus 234 interconnecting the various elements shown in
The processor 226 gathers information from other system elements, including input data from the peripheral interface 224, and program instructions and other data from non-volatile storage 232 or volatile storage 230, or from other systems (e.g., a server used to store and distribute copies of executable code) coupled to a local area network or a wide area network via the network interface 228. The processor 226 executes the program instructions and processes the data accordingly. The program instructions may further configure the processor 226 to send data to other system elements, such as information presented to the user via the display interface 222 and the display 204, and audio presented to the user via the audio interface 240 and the speaker 242. The network interface 228 enables the processor 226 to communicate with other systems via a network (e.g., network 140 of
The processor 226, and hence the system configuration 200 as a whole, operates in accordance with one or more programs stored on non-volatile storage 232 or received via the network interface 228. The processor 226 may copy portions of the programs into volatile storage 230 for faster access, and may switch between programs or carry out additional programs in response to user actuation of the input device. The additional programs may be retrieved from non-volatile storage 232 or may be retrieved or received from other locations via the network interface 228. One or more of these programs executes on system configuration 200 causing the configuration to perform at least some of the receiving and sending functions of receiving station 110 and sending station 120, respectively, as disclosed herein.
Although a fully equipped computer system is shown in the illustrative embodiment of
In at least some illustrative embodiments, receiver software 115 is capable of establishing multiple remote sessions, each with a separate sending station.
In at least some illustrative embodiments, the receiver software executes within a windowed operating system (e.g., Microsoft® Windows®), which allows a user operating the receiving station to control each session from a separate window. The user switches between sessions using the mechanisms provided by the operating system (e.g., clicking on a window using a mouse, or using an ALT-TAB shortcut key sequence). The receiver software 115 tracks which window, and thus which session, has been selected. This selection is sometimes referred to as the “window focus.” In a windowed operating system, inputs provided by the user (e.g., via the keyboard and mouse) are directed by the operating system to the window that has the window focus. Based on which window is selected and thus has the window focus, receiver software 115 decodes the audio data received from the sending station corresponding to the selected session and presents it to the user using the receiving station 110's audio software and hardware. In this manner, a user operating the receiving station 110 only hears audio streams associated with the session selected by the user. The receiver software 115 thus dynamically selects the audio stream matching the window/session that currently has the window focus.
In other illustrative embodiments, the user can choose between a dynamic selection of audio streams, as described above, and a static selection. If the user chooses a static selection, the receiver software 115 presents the audio streams corresponding to a list of selected sessions, regardless of the session selected (i.e., regardless of the window focus). A user selects which sessions are selected via a selection window, wherein the user enables the audio streams by selecting one or more checkboxes corresponding to sessions displayed in a list of sessions. The selection of a session causes the session to be added to the list of selected sessions. As audio stream data is sent to receiving station 110, receiver software 115 only forwards audio data for presentation to the user that corresponds to sessions that are on the list of selected sessions. In at least some illustrative embodiments, if only one remote session is active then the audio stream for the one remote session is always active, regardless of whether receiver software is configured for dynamic or static audio stream selection, and regardless of which window is selected.
If the user chooses static selection (block 504), the user is presented with a list of remote sessions currently active on receiving station 110. The user selects from the list (e.g., by selecting checkboxes associated with each listed session) which audio streams are to be enabled and presented to the user (block 506). The selection configuration is then saved (block 508) for subsequent use by the audio stream selection method (e.g., method 400), completing the method 500 (block 510). In at least some illustrative embodiments, the configuration is saved on a non-volatile storage device, such as storage 116 of
If receiver software 115 is configured for dynamic audio stream selection (block 604) and a remote session window is selected (block 606), then the audio stream associated with the remote session of the selected window is enabled (block 608), and the audio streams of all other active remote sessions are disabled (block 610), completing the method 600 (block 612). If receiver software 115 is configured for dynamic audio stream selection (block 604) but the window selected is not associated with a remote session (block 606), then the audio streams of all other active remote sessions are disable (block 610), which results in all audio streams associated with remotes session being disabled, completing the method 600 (block 612). If receiver software 115 is not configured for dynamic audio stream selection (block 604), no action is taken, completing the method 600 (block 612).
The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. For example, although the illustrative embodiments of the present disclosure describe software implementations of the methods described, other illustrative embodiments include hardware implementations, as well as combinations of hardware and software implementations. It is intended that the following claims be interpreted to embrace all such variations and modifications.