US20060069797A1 - Systems and methods for multimedia remoting over terminal server connections - Google Patents
Systems and methods for multimedia remoting over terminal server connections Download PDFInfo
- Publication number
- US20060069797A1 US20060069797A1 US11/047,362 US4736205A US2006069797A1 US 20060069797 A1 US20060069797 A1 US 20060069797A1 US 4736205 A US4736205 A US 4736205A US 2006069797 A1 US2006069797 A1 US 2006069797A1
- Authority
- US
- United States
- Prior art keywords
- media
- client
- window
- server
- recited
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 100
- 239000012092 media component Substances 0.000 claims abstract description 22
- 230000005540 biological transmission Effects 0.000 abstract description 15
- 230000008859 change Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 230000003287 optical effect Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 241000197200 Gallinago media Species 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/612—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1101—Session protocols
Definitions
- the present invention relates to computer software and communication networks, and in particular, to a system and method for managing multimedia transmissions to terminal services connections.
- Terminal Services provides for a desktop remoting experience where a client such as a thin-client, or a rich client can connect remotely over a network to another computer, which functions as a server computer to achieve a remote desktop experience.
- the applications run on the server, remoting just their ‘output’ (i.e. graphics or user-interface) to the client over the network.
- RDP remote desktop protocol
- a method sends a user-interface component from a server to a remote client.
- the method further streams a media component for presentation on the remote client in combination with the user-interface component.
- the media presentation is tracked but not displayed by the server.
- FIGS. 1-5 illustrate a system for managing multimedia transmissions in terminal services scenarios.
- FIG. 6 illustrates portions of an exemplary system for managing multimedia transmissions in terminal services scenarios in more detail.
- FIG. 7 illustrates a block diagram of one system configuration for managing multimedia transmissions in terminal services scenarios.
- FIG. 8 illustrates exemplary systems, devices, and components in an environment for managing multimedia transmissions in terminal services scenarios.
- FIG. 9 illustrates a flow diagram for managing multimedia transmissions in terminal services scenarios.
- the methods and systems described below relate to managing multimedia transmissions in terminal services scenarios.
- One terminal services scenario involves a first computing device networked to a second computing device such that the first computing device functions as a server and the second computer functions as a client.
- a user on the client is able to see a representation of a desktop (hereinafter “remote desktop”) of the server on the client via a terminal services session.
- the terminal services session allows a user at the client to see and interact with the remote desktop as though the user was sitting in front of the server and viewing the server desktop.
- User commands at the remote desktop are relayed to the server where the commands can cause various actions to be taken at the server.
- FIG. 1 illustrates an operating environment 100 which includes server 102 coupled to a client 104 via a network 106 .
- a server desktop 110 can be displayed on server 102 .
- a client desktop 112 can be displayed on client 104 .
- a terminal services session can allow a remote desktop 114 representing the server desktop to be generated on the client's desktop 112 .
- a user at client device 104 wants to see a media presentation and clicks on a media player icon 120 on the remote desktop.
- the terminal services session then relays the user's command to the server.
- the media player application is opened and media player window 202 corresponding to the media player icon is opened on the server desktop 110 .
- the updated server desktop is transmitted, such as in a bit map format, to the client which then updates remote desktop 114 .
- a user may issue a media presentation command, such as by clicking on a play button 204 , on remote desktop 114 .
- the presentation command is sent back to server 102 .
- the server may locate media associated with the presentation command. Rather than processing the media to create an image on the server's desktop, the server transmits the media to the client device in an unprocessed or only partially processed form.
- the client processes the media and generates a media presentation 302 on the remote desktop 114 .
- the media presentation 302 corresponds to a media presentation window or video render window which is situated within the media player window.
- the server meanwhile tracks the media presentation, but does not generate the associated images on the server desktop.
- the server may be thought of as creating a placeholder 304 which corresponds to the media presentation window on the client and which can be tracked relative to the remainder of the remote desktop. Tracking provides a notification system for actions and/or events which affect the media presentation 302 .
- FIG. 4 illustrates one such example where, as indicated generally at 402 , a user drags the media player window 202 to a different region of the remote desktop.
- the position changes are tracked and sent to the server which updates the server desktop.
- the changes are also reflected on the server's placeholder 304 .
- the changes to the placeholder are tracked on the server and relayed to the client such that the location of the media presentation can be correspondingly updated.
- this information is conveyed between the server and the client such that the remote desktop with the media presentation reflects the new condition. This feature is referred to below as geometry tracking.
- Geometry tracking is a feature of terminal services that provides a notification system for window geometry changes. Whenever a window's geometry changes, events containing the new geometry will be generated and sent to notification sinks at the source. In this instance, the client acts as the source. Window geometry can change when a window is moved, minimized/maximized, or clipped by another window.
- Geometry tracking is used in scenarios where an application or framework is made aware of a terminal services session and is distributed across the client and server.
- One such scenario can occur when an application decides to render media on the client instead of transmitting a pre-rendered bitmaps from the server.
- the application creates a window on both the server and client ends.
- the server window acts as a placeholder, and is able to accept all input, and the actual media would be rendered and painted by the application on the client end.
- the client window is painted right over the server window for the distribution to be transparent to the user. Since all input actually acts upon the server window, geometry changes will be reflected at the server.
- the application tracks these changes to the server window and updates the client window accordingly for both windows to be geometrically synchronized.
- the above implementation generates a remote desktop by bifurcating data delivery relating to the remote desktop.
- Relatively low data-intensive components of the server desktop are processed on the server and then transmitted to the client.
- Relatively highly data-intensive components are transmitted to the client in an unprocessed or less processed form.
- the processing is then completed by the client and combined with the low data intensive components to create the remote desktop.
- Events which affect the media presentation are tracked at the server so that a relative relationship of the media presentation to other portions of the remote desktop can be maintained.
- media presentation 302 is a relatively dynamic, relatively highly data intensive component, while the remainder of the remote desktop is a relatively static, relatively low data intensive component. Streaming the media component to the client in a compressed and unprocessed form creates an enhanced user experience and/or saves system resources to name but a few potential advantages.
- the server desktop is illustrated as being displayed as a visual image in FIGS. 1-4 .
- the server desktop may not actually be displayed, e.g. the implementations would work satisfactorily even if the server altogether lacked a display means.
- the concepts described above and below can improve a user-experience involving a remote desktop experience involving media playback and/or other similar high data consumption actions by allowing the media infrastructure on the system, e.g. such as a Media Foundation API set or other media platform, to detect that the media infrastructure is running in a terminal services session and to efficiently stream the compressed media to the client before it is decompressed at the server.
- the media infrastructure on the system e.g. such as a Media Foundation API set or other media platform
- audio/video sync is maintained as timing information that allows the media playback components at the client to preserve synchronization remain in the streams. This allows for excellent synchronization of audio and video.
- this technique works for both AV (audio/video) streams or streams that consist of just audio or just video.
- various implementations allow transparent efficient media streaming in terminal services, without changing the media application.
- the applications do not need to be aware of the terminal services session or associated processes. Instead the applications run as they would if there was no remote desktop.
- general applications such as media players can gain access to the uncompressed stream down in the media playback infrastructure.
- various techniques described below allow for ‘transparent’ media streaming with any application running in a terminal server session as long as the application uses appropriate Media API's (e.g. media foundation or other media platforms).
- implementations described below further allow geometry synchronization. For instance, these implementations allow seamless integration of a media stream playing back at the client with the rest of the RDP display surface. For instance, a media stream's target window can be moved around, clipped or have a size of the target window changed on the server and still result in a seamless integration.
- Past solutions have been more limited in scope e.g. only allowing the media window to take on one or two ‘valid’ positions. In some implementations of this solution any transforms of the media window are allowed.
- program modules include routines, programs, objects, components, data structures and the like that perform particular tasks or implement particular abstract data types.
- various examples may be implemented in computer system configurations other than a PC.
- various embodiments may be realized in hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, cell phones and the like.
- various implementations may be realized on yet to be identified classes of devices. For example, as the cost of a unit of processing power continues to drop and wireless technologies expand, computing devices resembling today's cell phones may perform the functionalities of today's PC, video camera, cell phone, and more in a single mobile device. This single device may in one scenario act as a server and in another scenario act as a client. This is but one of many existing and developing examples for the described implementations.
- Various examples may be practiced in distributed computing environments, where tasks are performed by remote processing devices that are linked through a communications network.
- program modules may be located in both local and remote memory storage devices.
- server and client as used herein do not connotate any relative capabilities of the two devices.
- the client may have more, less, or equal processing capabilities than the server. Rather, in this document, the names server and client describe the relative relationship of the two components.
- a computing experience of a first or server device is remoted to a second or client device.
- the examples provided in this document relate to a single server and a single client. However, this is but one potential configuration.
- other implementations may have one server and multiple clients.
- a first computer may act as a server for a second computer which then acts as a server for a third computer.
- FIG. 5 provides a high-level overview of an exemplary operating environment 100 suitable for managing multimedia transmissions in a distributed environment such as a terminal services or remote desktop protocol (RDP) scenario.
- server 102 sends data relating to the server's desktop 110 to client 104 to generate a remote experience, such as remote desktop 114 , at client 104 .
- remote desktop 114 includes a user-interface component 502 and a media component 504 .
- User-interface-component 502 includes graphics and images that typically compose a user-interface.
- User-interface component 502 includes icons, host audio, background images and applications such as word-processing applications, spreadsheet applications, database applications, media applications and so forth. Virtually any components that are not media components are part of user-interface component 502 . When compared to the media component, the user-interface component is relatively static and relatively low data-intensive.
- Media component 504 includes media-rich or bandwidth-intensive elements that compose a media presentation or media event.
- the media component is relatively dynamic and relatively highly data-intensive when compared to the user-interface component.
- the following is a non-exhaustive list of exemplary media components: a streaming media presentation, including a video and/or audio presentation; a television program, including a cable television (CATV), satellite, pay-per-view, or broadcast program; a digitally compressed media experience; a radio program; a recorded media event (sourced by a VCR, DVD player, CD player, Personal Video Recorder and the like); a real-time media event; and a camera feed.
- CATV cable television
- the data for the remote desktop is sent from server 102 to client 104 over network 106 .
- the remote desktop data is bifurcated at the server 104 with data relating to user interface component 502 transmitted over user-interface channel 506 and data relating to media components 504 transmitted over media channel 508 .
- User-interface channel 506 communicates user-interface component 502 to client 104 .
- Terminal Server and Terminal Client Services offered by Microsoft Corporation of Redmond, Wash., provide an exemplary user-interface channel 506 .
- Any remotable protocol can be used to transmit data through user-interface channel 506 .
- Exemplary protocols and data formats include, remote desktop protocols (RDP), the T-120 series protocol or HTML (hypertext markup language and its many variations), among others.
- Media channel 508 is separate from user-interface channel 506 .
- Media channel 508 is used to transmit bandwidth-intensive experiences such as video and others listed above.
- Media channel 508 provides a communications conduit for media component 504 to flow separately from user-interface component 502 .
- the media component 504 is sent out of band with respect to the user-interface component, but synchronized.
- An exemplary protocol to transmit data through media component 508 includes, but is not limited to, Transmission Control Protocol (TCP), and a virtual channel over an RDP connection.
- TCP Transmission Control Protocol
- user-interface component 502 is combined with media component 504 to generate remote desktop 114 at the client 104 .
- a user at client 104 can remotely operate server 102 by interacting with remote desktop 114 .
- the user can move his/her mouse cursor over an application on the remote desktop and open an application by clicking on a corresponding icon.
- the user can issue commands to an application through the remote desktop.
- the user may utilize mouse clicks to play, stop, fast forward, and rewind.
- the user can minimize an application window, move the window or open a second application over the first application.
- Such changes are tracked by the geometry tracking feature described above and below.
- the examples described above include an easily discernable user-interface component and an easily discernable media component.
- the media component may occupy the entire client display such that the user does not perceive the user-interface component.
- the user-interface component may be visible to the user on the client display only intermittently.
- the media component may occupy the entire client display until such time as the user enters a command such as “pause”.
- the word “pause” and/or an associated symbol may then appear in combination with the media component so that the word “pause” appears superimposed over the media component to the user.
- FIG. 6 represents selective components of system 100 for generating an enhanced remote desktop experience.
- FIG. 6 relates to a media component of a terminal services session between client 104 and server 102 .
- the terminal services session entails a remote desktop protocol (RDP) configuration, examples of which are illustrated above.
- RDP remote desktop protocol
- a media platform 602 operates on server 102 and similarly a version of media platform 602 operates upon client 104 .
- the media platform exists as part of an operating system of an individual device such as server 102 and/or client 104 to allow playback of media such that applications, such as media player 202 , that interact with the operating system may control playback of media without “knowing” the particular details of the media formats.
- the media platform running on the server may be identical to the media platform running on the client. In other instances the media platform on the server may be a different product and/or version than the media platform operating on the client.
- media platform 602 running on server 102 can detect that the media platform is running in a terminal server session via a destination component or destination 604 .
- the destination is an object that defines where a presentation is to be presented (e.g. a window, disk file, and the like) and what happens to the presentation.
- the source's media platform 602 determines that the source is connected to a client that has the capabilities to render media locally.
- a distribution manager component or distribution manager 606 determines that the source's media platform is connected to client 104 that has the capabilities to render media locally.
- Distribution manager 606 further establishes terminal services policies to enable remoting media to the client 104 .
- Distribution manager 606 establishes a virtual channel connection with a multimedia client plugin or multimedia component 610 . The virtual channel connection allows for the exchange of control information relating to the terminal services session between the source 102 and the client 104 .
- Communications over the virtual channel connection between the distribution manager 606 and the multimedia component 610 allow supported media formats to be negotiated between the source and the client. Further, utilizing the virtual channel connection allows the distribution manager 606 and the multimedia component 610 to establish a distributed topology. Examples of such techniques are described in more detail in a patent application of the present assignee, titled “Resolving a Distributed Topology To Stream Data” filed on Jul. 11, 2003, and having attorney docket No. MS1-1538 which is incorporated by reference herein.
- the distributed topology performs various functionalities.
- the distributed topology can insert a network transmitter at the server side and a network receiver at the client side.
- the network receiver is connected in turn to audio and/or video renderers at the client side.
- a video transmitter 620 and an audio transmitter 622 are illustrated on server 102 while a corresponding video receiver 624 and an audio receiver 626 are illustrated on the client side.
- media can be directed to the client in an unprocessed or partially processed form which is streamed to client 104 .
- media foundation 602 can intercept media that would otherwise be processed at the server, such as by server video decoder 630 , server video effect 632 , server video renderer 634 , server audio decoder 636 , server audio effects 638 and server audio renderer 640 .
- the media is redirected to the respective video and audio transmitters 620 , 622 for streaming to client 104 .
- Streaming may be over various channels. For instance, the media may be streamed in band with the RDP over a virtual channel.
- Such a configuration re-uses the existing RDP connection and allows RDP to handle various details of punching thru firewalls, and establishing a secure, authenticated context, among other tasks.
- the media may be streamed over a side-band user datagram protocol (UDP) or transmission control protocol (TCP) connection.
- UDP user datagram protocol
- TCP transmission control protocol
- an out of band configuration may be more performant. For instance, in a particular configuration, an out of band connection may be available with greater bandwidth than is available in that particular instance through the RDP.
- the streamed media is received at the multimedia component 610 which in turn passes it to video and audio receivers 624 , 626 .
- the video and audio receivers pass the media to the client-side transforms and sinks, which in this illustrated configuration comprise client video decoder 650 , client video effect 652 , client video renderer 654 , client audio decoder 656 , client audio effects 658 and client audio renderer 660 .
- the media is then decoded and rendered at the client. Since the audio and video are streamed in their encoded form, any synchronization tools contained in the encoded media will be available at the client to maintain proper audio video synchronization. For ease of explanation, unprocessed media is streamed from the server to the client in this example.
- processing of the media may occur in other implementations.
- a user requests to play media which is encoded at the source in hypothetical codec ‘AA’.
- the source contains the components to decode hypothetical codec AA, but the client does not, but that both the source and the client have codec capability for a second hypothetical codec format ‘BB’.
- the source may decode the media and then recode the media into BB format before streaming the media to the client.
- This is but one example, which represents various levels of processing to the media which may occur at system components consistent with the concepts described above and below.
- a geometry tracking component or geometry tracker 664 can register and track any changes relating to a target window of the terminal services session. For instance, geometry tracker 664 can register a unique identifier for a target window and track the target window on the remote desktop described above. The geometry tracker tracks changes relating to clipping of the target window by another window, position of the target window, and size of the target window at the server side. These changes are then relayed to the client-side by the remote desktop protocols where the changes are directed to the client side multimedia component 610 .
- any geometry changes or updates to the client media presentation window such as media presentation window 302 described above in relation to FIGS. 3-4 which are relayed to the client multimedia component 610 are applied to the client media presentation window at the remote desktop.
- relaying the geometry updates allows a user to click-drag the media player window in the terminal services session and have the resultant movement be accurately reflected at the client by the video presentation moving around to follow the media player window on the remote desktop.
- FIGS. 3-4 Such an example is illustrated and described above in relation to FIGS. 3-4 .
- a more detailed example of geometry tracking is described below under the section titled “geometry tracking”.
- the above described scheme can be repeated for multiple player applications on the server playing within one terminal services session to a terminal services client. In such a case, a single terminal services client multimedia component 610 services the requests of multiple server-side applications.
- FIG. 7 illustrates various levels of abstraction of various system components configured to implement an exemplary terminal services session. In some implementations, this configuration can be employed on both the server and the remote client, such as in a distributed scenario.
- a user mode process boundary 702 are a media player 704 , a media platform in the form of media foundation 706 , and a media engine 708 .
- a media source 710 Also within the user mode process boundary 702 are a media source 710 , a directx media object (DMO) 712 and a net sink 714 .
- Media engine 708 serves as a central focal point for media player 704 to participate in a media presentation.
- a terminal server application program interface 716 also resides within user mode process boundary 702 .
- the terminal server application program interfaces provide geometry tracking virtual channels as are discussed in more detail in relation to a section below under the heading “geometry tracking”.
- terminal services drivers 722 In a kernel mode 720 of the operating system occurs terminal services drivers 722 .
- the terminal services drivers relate to a remote desktop display device (RDPDD) and a remote desktop winstation driver (RDPWD).
- RPDD remote desktop display device
- RDPWD remote desktop winstation driver
- FIG. 8 represents an exemplary system or computing environment 800 for managing multimedia transmissions to terminal services connections.
- System environment 800 includes a general-purpose computing system in the form of a server device or server 102 .
- the components of server 102 can include, but are not limited to, one or more processors 804 (e.g., any of microprocessors, controllers, and the like), a system memory 806 , and a system bus 808 that couples the various system components.
- the one or more processors 804 process various computer executable instructions to control the operation of server 102 and to communicate with other electronic and computing devices.
- the system bus 808 represents any number of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures.
- Computing environment 800 includes a variety of computer readable media which can be any media that is accessible by server 102 and includes both volatile and non-volatile media, removable and non-removable media.
- the system memory 506 includes computer-readable media in the form of volatile memory, such as random access memory (RAM) 810 , and/or non-volatile memory, such as read only memory (ROM) 812 .
- RAM random access memory
- ROM read only memory
- a basic input/output system (BIOS) 814 maintains the basic routines that facilitate information transfer between components within server 102 , such as during start-up, and is stored in ROM 812 .
- BIOS basic input/output system
- RAM 810 typically contains data and/or program modules that are immediately accessible to and/or presently operated on by one or more of the processors 804 .
- Server 102 may include other removable/non-removable, volatile/non-volatile computer storage media.
- a hard disk drive 816 reads from and writes to a non-removable, non-volatile magnetic media (not shown)
- a magnetic disk drive 818 reads from and writes to a removable, non-volatile magnetic disk 820 (e.g., a “floppy disk”)
- an optical disk drive 822 reads from and/or writes to a removable, non-volatile optical disk 824 such as a CD-ROM, digital versatile disk (DVD), or any other type of optical media.
- DVD digital versatile disk
- the hard disk drive 816 , magnetic disk drive 818 , and optical disk drive 822 are each connected to the system bus 808 by one or more data media interfaces 826 .
- the disk drives and associated computer readable media provide non-volatile storage of computer readable instructions, data structures, program modules, and other data for server 102 .
- Any number of program modules can be stored on the hard disk 816 , magnetic disk 820 , optical disk 824 , ROM 812 , and/or RAM 810 , including by way of example, an operating system 826 , one or more application programs 828 , other program modules 830 , and program data 832 .
- an operating system 826 may include an embodiment of the systems and methods described herein.
- a user can interface with server 102 via any number of different input devices such as a keyboard 834 and pointing device 836 (e.g., a “mouse”).
- Other input devices 838 may include a microphone, joystick, game pad, controller, satellite dish, serial port, scanner, and/or the like.
- input/output interfaces 840 are coupled to the system bus 808 , but may be connected by other interface and bus structures, such as a parallel port, game port, and/or a universal serial bus (USB).
- USB universal serial bus
- a monitor 842 or other type of display device can be connected to the system bus 808 via an interface, such as a video adapter 844 .
- other output peripheral devices can include components such as speakers (not shown) and a printer 846 which can be connected to server 102 via the input/output interfaces 840 .
- Server 102 can operate in a networked environment using logical connections to one or more remote computers, such as remote client device or client 104 .
- the remote client 104 can be a personal computer, portable computer, a server, a router, a network computer, a peer device or other common network node, and the like.
- the remote client 104 is illustrated as a portable computer that can include many or all of the elements and features described herein relative to server 102 .
- Logical connections between server 102 and the remote client 104 are depicted as a local area network (LAN) 850 and a general wide area network (WAN) 852 .
- LAN local area network
- WAN wide area network
- Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.
- the server 102 When implemented in a LAN networking environment, the server 102 is connected to a local network 850 via a network interface or adapter 854 .
- the server 102 When implemented in a WAN networking environment, the server 102 typically includes a modem 856 or other means for establishing communications over the wide area network 852 .
- the modem 856 which can be internal or external to server 102 , can be connected to the system bus 808 via the input/output interfaces 840 or other appropriate mechanisms.
- the illustrated network connections are exemplary and other means of establishing communication link(s) between the computing devices 802 and 848 can be utilized.
- program modules depicted relative to the server 102 may be stored in a remote memory storage device.
- remote application programs 858 are maintained with a memory device of remote client 104 .
- application programs and other executable program components, such as the operating system 826 are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the server 102 , and are executed by the processors 804 of the server.
- Geometry tracking consist of three different components. There is a server side component, the RDP Display Device (RDPDD) driver, and a client side component.
- RDP Display Device RDP Display Device
- the server component is responsible for the registration of window tracking.
- the RDPDD driver is responsible for detecting geometry changes, and transmitting new geometry information to the client.
- the client component is responsible for delegating geometry change notifications to geometry notify sinks.
- the TSGeoTrack static library provides the server side geometry tracking component. It provides the necessary classes to register a window with geometry tracking.
- Distributed media foundation (DMF) should statically link to this library. DMF is an example of a media platform remoting technology, such as can be employed by the Media Foundation media platform.
- the library is published cross-depot in the termsrv depot, so getting access to it should not be a problem.
- the RDPMM plugin is the multimedia plugin for the terminal services (TS) client.
- the RDPMM plugin receives geometry change notifications from the RDPDD driver, and propagates them to the appropriate notification sink on the DMF client.
- the RDPMM plugin will be statically linked to the TS client.
- the multimedia (MM) plugin is a sink plugin for RDPMM.
- the MM plugin will host the geometry notify sinks. It has to be implemented as a DLL and registered in an appropriate manner. RDPMM will automatically load this DLL when multimedia capabilities are required.
- the MM plugin dynamic link library (DLL) has to implement a specific entry point method in order for RDPMM to initialize it.
- MF Media foundation
- MF can use the MM plugin to the DMF client within the TS Client Core.
- MF has to register itself as an MM plugin and implement the required entry point method.
- the DMF server will be the component that requests the tracking of specific windows.
- RDPDD.DLL is the RDP Display Device driver library. Provides the facility of generating geometry change events and transporting them to the client.
- the DMF client will provide geometry notify sinks that will be registered with the RDPMM plugin. This component will actually be seen by RDPMM as the MM plugin.
- the MSTSCAX.DLL is an ActiveX version of the TS RDP client application.
- Table 1 describes the communication sequence involved in registering for track events of a window. DMF plays an important role in this process, as it transmits the track ID of the window from its server component to its client component and register a sink for it. This entire process must be repeated in order to track another window.
- Table 2 describes the communication sequence involved when a window that is registered for geometry tracking, changes its geometry.
- ITSServerGeometryTracker is the server side geometry tracking interface. It provides the methods that are needed to initialize geometry tracking, and register windows for tracking.
- TSGEOTRACK.LIB provides an implementation of this interface through CTSServerGeometryTracker. User's of geometry tracking should use CTSServerGeometryTracker through the ITSServerGeometryTracker interface.
- ITSServerGeometryTracker is an interface that provides the necessary methods to start, and stop geometry tracking, and register allow the registration of windows to be tracked. This interface should only be used to track server side windows.
- the initialize method is responsible for initializing the geometry tracker.
- the Terminate method is responsible for terminating the geometry tracker.
- the StartGeometryTracking method registers a window for geometry tracking. This method registers the given window with the RDPDD driver for geometry tracking notifications. This method will return a track ID to the caller.
- the track ID is a unique identifier for the particular registration that can be used to register a notification sink for geometry events from the window and to stop tracking itself.
- the track ID is actually the HWND of the server side window that is being tracked.
- the EndGeometryTracking method unregisters a window for geometry tracking. This method unregisters the given window with the RDPDD driver for geometry tracking notifications.
- the CTSServerGeometryTracker class provides the implementation of window tracking registration.
- CTSServerGeometryTracker also implements the IUnknown interface to provide reference counting.
- the CTSServerGeometryTracker class registered the given window with the RDPDD driver.
- _refCount is the reference count associated to an instance of CTSServerGeometryTracker.
- the SendToDriver method is used to register and unregister for geometry tracking events with the RDPDD driver.
- the SendToDriver method is written in a generic way, and can be used to send other commands to the RDPDD driver.
- nEscapeCode The driver operation to perform (for tracking the value should be WNDOBJ_SETUP) nSizeData The size, in bytes, of the buffer provided by pData pData Buffer containing setup data for operation. Should point to WNDOBJ_SETUP_DATA structure.
- WNDOBJ_SETUP_DATA should be set to: WNDOBJ_SETUP_FLAG_CREATE
- the ITSMultimediaPluginHost interface In order to be a multimedia plugin on the TS client, the ITSMultimediaPluginHost interface must be implemented.
- the RDPMM plugin is an implementation ITSMultimediaPluginHost. TABLE 5
- ITSMultimediaPluginHost is an interface implemented on the client side that provides the necessary methods to register and unregister a geometry tracking notification sink, and to get to a handle to the renderer's parent window.
- GetRendererParentWindow returns a handle to the renderer's parent window.
- SetGeometryTrackerNotifySink registers the given geometry tracker notification sink. Whenever notifications with the given track ID arrive at the RDPMM plugin, they will be forwarded to the registered sink. If a track ID is registered more than once, this method will return an error.
- RemoveGeometryTrackerNotifySink unregisters the given geometry tracker notification sink. Whenever notifications with the given track ID arrive at the RDPMM plugin, they will be forwarded to the registered sink.
- CRDPMMWindowInformation is a utility class that stores information regarding a window.
- CRDPMMWindowInformation holds a pointer to the corresponding notification sink, track ID, the latest clipping region and rectangle. This class has no relationship with ITSWindowInformation.
- _spGeomtryNotifySink is a smart pointer to the geometry tracking notification sink corresponding to the particular window.
- _dwTrackId is the track ID of the particular window.
- _fWindowVisible is a flag that specifies whether the window is visible or not. If the window is visible, this value will be TRUE, otherwise it will be false.
- this value does not set the visibility of the window, but holds the value of the current state of the window.
- _rcLastRect represents the last rectangle the particular window occupied.
- _rgnLastRegion represents the last clipping region the particular window occupied.
- GetGeometryNotifySink returns a pointer to the geometry notification sink for this particular window. If there is no sink associated the particular window, this method will return NULL.
- SetGeometryNotifySink sets the geometry notification sink for the particular window. Setting the notify sink to a value of NULL means the window has no sink associated to it.
- IsWindowVisible determines if the window is current visible.
- SetWindowVisible is used to set the current visibility state of the window.
- GetLastRect returns the rectangle that the window last occupied.
- SetLastRect is used to set the rectangle that the window last occupied.
- GetLastSetRegion returns the clipping region that the window last occupied.
- SetLastRect is used to set the rectangle that the window last occupied.
- CRDPMultimediaPlugin is the implementation of the RDP Multimedia plugin. It implements ITSClientPlugin so it can be a TS Client plugin, ITSMultimediaPluginHost so that it can handle geometry tracking. This class provides mechanism for the DMF client to register geometry notify sinks.
- spInstance is a pointer to an instance of TS Client.
- _spCoreApi is a pointer to the TS Core API.
- the Core API is needed to register for notifications (of all types).
- spOnPluginInitialized is a pointer to the plugin initialization notification sink.
- the OnPluginnitialized event handler will be called when the MF plugin is initialized.
- spOnShellInformation is a pointer to the shell information notification sink.
- the OnShellInformation event handler will be called when a shell information event is received.
- Window information events can be geometry tracking events.
- mapWindowInformation is a hash table that maps a track ID to window information about the corresponding window. This structure can be used to look up a sink for a given track ID. The current window properties will also be stored.
- NotifyGeometryChange is a utility method that accepts the geometry information of a window, and generates a geometry tracking notification at the appropriate sink. This method uses the track ID sink map to find the appropriate sink given a track ID of the window.
- IsPolicyMMEnabled is a utility method that determines whether the MF plugin should be loaded. The MF plugin will be loaded if the EnableMedia policy is set. This method checks with the registry to determine if EnableMedia policy is set.
- InitializeMMPluginDLL is a utility method that loads the MF plugin.
- the MF plugin must be registered as the MM plugin in the registery.
- TerminateMMPluginDLL is a utility method that unloads the MF plugin. This method also removes all geometry notification sinks that have been registered. The plugin notification sink is also removed.
- TerminateMMPluginDll( ) Parameters Returns S_OK if success, appropriate error otherwise
- the geometry notify sink interface should be implemented by anyone that wants to receive geometry change notifications.
- the MF plugin should have an implementation of this interface.
- OnNotifyGeometryChange is a method that is invoked when a windows geometry changes.
- the windows new geometry (rectangle and clipping region) will be given to this method.
- OnNotifyVisibilityChange is a method that is invoked when a windows visibility is changed.
- OnNotifyEndTracking is a method that is invoked when the server requests that the window no longer be tracked. No further events will be passed to this sink once this method has been called.
- OnNotifyEndTracking is a method that is invoked when the server wants the window destroyed.
- the RDPMM plugin notifies the MM plugin of geometry changes by directly invoking the methods defined in the ITSMultimediaGeometryNotifySink interface.
- the RDPMM will manage geometry notifications through a map containing CRDPMMWindowInformation objects.
- the entries in the map can be partially filled, meaning that they only contain partial information regarding the window.
- Either the notification sink, or the window's geometry information could be missing.
- the notification sink could be missing because the MM plugin has yet to register a sink for the window.
- the geometry information could be missing if RDPMM has yet to receive any geometry information for the window.
- Entries in the map can be added in one of two ways:
- Entries in the map can be removed in two ways:
- MF plays an important role in transporting the track ID from the DMF server to the DMF client.
- a window for tracking it must be registered with the server side geometry tracker, and then a notification sink must be set up with the RDPMM which lives on the client.
- the server side geometry tracker will return a track ID to the DMF server upon registration.
- the DMF server In order for the DMF client to set up the notification sink with RDPMM, the DMF server must communicate the track ID to the DMF client. This should be done through virtual channels.
- the geometry tracking system can tolerate a delay between window registrations on the server side and sink registrations client side.
- RDPMM will maintain updates from a window that has no sink associated, so that when the sink is eventually registered, the latest information will be immediately available.
- the above sequence of table 12 describes the object communication flow during geometry change notification when visibility of the window changes from visible to invisible.
- a global method is provided to get a reference of the geometry tracker. This method is responsible for the construction and the destruction of the geometry tracker.
- the method has the following prototype:
- the return value is S_OK if successful, otherwise an appropriate error code.
- This section provides but one example for achieving geometry tracking of a media presentation consistent with the concepts described above and below.
- FIG. 9 illustrates an exemplary method 900 for remote desktop presentation tracking.
- the order in which the method is described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the method.
- the method can be implemented in any suitable hardware, software, firmware, or combination thereof.
- the method sends a user-interface component of a server desktop during a terminal services session.
- the user-interface component simply comprises an application window, such as media player window.
- the user-interface comprises a server desktop.
- a server desktop may include one or more icons and one or more toolbars superimposed over a background image.
- One or more windows may be open on the server desktop.
- the user-interface component is sent over a network channel established by the terminal services session.
- the method receives the user-interface component at the client side during the terminal services session.
- the method streams media to the client.
- the media is streamed responsive to receiving, from the remote client, a media presentation request for a media application on the user-interface component.
- the media can be streamed over a separate network channel from the interface component.
- the network channel utilized for streaming the media can be established by the terminal services session or can be established by the method outside of the terminal services session.
- the media is streamed in a compressed or only partially processed format to the client.
- the method negotiates between the server and the client to determine what media formats are supported by the client. If the media is accessed in a format which is not supported by the client then the method may decode the media and re-encode the media into a format supported by the client before streaming the media to the client.
- the method accepts the media stream corresponding to the media presentation request.
- the media can be processed such as by one or more transforms before being rendered on the client.
- the components at the source which process the media need not be aware of the terminal services session to achieve their functionalities.
- the method generates a remote desktop experience by combining a media presentation with the user-interface component.
- the media presentation is generated from the streamed media.
- the media may be presented in a window within an application window.
- the media may be presented in a media presentation window within a media player window.
- the method tracks presentation of the media on a remote desktop at the remote client without presenting the media on the server desktop.
- any changes at the remote desktop are first reflected at the server.
- the changes to the user-interface are reflected when an updated user-interface is sent to the client.
- Changes to the media presentation are tracked separately since the media is not actually being presented at the server.
- the method can assign a unique identifier to a region which acts as a placeholder for the media presentation on the server. In one instance, the unique identifier is assigned to the media presentation window where the media presentation window is represented by the placeholder at the server. Any actions affecting the media presentation window can then be tracked.
- Such actions can include the user at the remote desktop clicking and dragging the media player window across the remote desktop, the user reducing or enlarging the size of the media player window, and/or other actions. For instance, another window may be opened which clips the media presentation window.
- Such actions can be tracked at the server and relayed to the client so that the remote desktop can be updated accordingly.
- the method acquires geometry updates regarding the media presentation relative to the remote desktop. For instance, if the user clicked and dragged the media player window, then the geometry updates can cause the client to move the media presentation accordingly so that its media presentation window follows the media player window to its new location.
- the client presents the media on the remote desktop over the placeholder wherever the placeholder moves on the remote desktop
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
- This application claims priority to U.S. Provisional Application Ser. No. 60/608,786, filed Sep. 10, 2004, entitled “System and Method For Multimedia Remoting Over Terminal Services Connections” to Abdo et al., the disclosure of which is incorporated by reference herein.
- In general, the present invention relates to computer software and communication networks, and in particular, to a system and method for managing multimedia transmissions to terminal services connections.
- Terminal Services provides for a desktop remoting experience where a client such as a thin-client, or a rich client can connect remotely over a network to another computer, which functions as a server computer to achieve a remote desktop experience. In this scenario, the applications run on the server, remoting just their ‘output’ (i.e. graphics or user-interface) to the client over the network.
- Previously, if the user tried to play media such as videos or music over a terminal server connection they experienced a degraded user experience. For instance, video was transferred over from the server to the client very inefficiently as a sequence of bitmaps, which do not compress very well. This resulted in huge bandwidth consumption and very slow playback e.g. a 24 FPS (frames per second) video may play back as a 2 FPS video over a relatively fast network connection, such as digital subscriber line (DSL), if played in the existing terminal services scenario. Another factor which contributed to the degraded user experience is that no provisions are made for synchronizing the audio and the video stream at the client device, resulting in visible problems such as loss of lip-sync in videos involving “talking”. The graphics are traditionally remoted over a remote desktop protocol (RDP). Some existing techniques utilized a minimal audio remoting solution in RDP but did not produce a desired user experience. For example, prior solutions had a set configuration with which streaming had to conform, thereby affecting various performance parameters and system applications.
- The methods and systems described below relate to managing multimedia transmissions in terminal services scenarios. In one instance, a method sends a user-interface component from a server to a remote client. The method further streams a media component for presentation on the remote client in combination with the user-interface component. The media presentation is tracked but not displayed by the server.
-
FIGS. 1-5 illustrate a system for managing multimedia transmissions in terminal services scenarios. -
FIG. 6 illustrates portions of an exemplary system for managing multimedia transmissions in terminal services scenarios in more detail. -
FIG. 7 illustrates a block diagram of one system configuration for managing multimedia transmissions in terminal services scenarios. -
FIG. 8 illustrates exemplary systems, devices, and components in an environment for managing multimedia transmissions in terminal services scenarios. -
FIG. 9 illustrates a flow diagram for managing multimedia transmissions in terminal services scenarios. - Overview
- The methods and systems described below relate to managing multimedia transmissions in terminal services scenarios.
- One terminal services scenario involves a first computing device networked to a second computing device such that the first computing device functions as a server and the second computer functions as a client. A user on the client is able to see a representation of a desktop (hereinafter “remote desktop”) of the server on the client via a terminal services session. The terminal services session allows a user at the client to see and interact with the remote desktop as though the user was sitting in front of the server and viewing the server desktop. User commands at the remote desktop are relayed to the server where the commands can cause various actions to be taken at the server.
- For instance, and by way of example, consider
FIGS. 1-4 .FIG. 1 illustrates anoperating environment 100 which includesserver 102 coupled to aclient 104 via anetwork 106. Aserver desktop 110 can be displayed onserver 102. Similarly, aclient desktop 112 can be displayed onclient 104. A terminal services session can allow aremote desktop 114 representing the server desktop to be generated on the client'sdesktop 112. - Assume that a user at
client device 104 wants to see a media presentation and clicks on amedia player icon 120 on the remote desktop. The terminal services session then relays the user's command to the server. As illustrated inFIG. 2 , responsive to the user command, the media player application is opened andmedia player window 202 corresponding to the media player icon is opened on theserver desktop 110. The updated server desktop is transmitted, such as in a bit map format, to the client which then updatesremote desktop 114. - A user may issue a media presentation command, such as by clicking on a
play button 204, onremote desktop 114. The presentation command is sent back toserver 102. Upon detecting the presentation command, the server may locate media associated with the presentation command. Rather than processing the media to create an image on the server's desktop, the server transmits the media to the client device in an unprocessed or only partially processed form. - As can be appreciated from
FIG. 3 , the client processes the media and generates amedia presentation 302 on theremote desktop 114. In this instance, themedia presentation 302 corresponds to a media presentation window or video render window which is situated within the media player window. The server meanwhile tracks the media presentation, but does not generate the associated images on the server desktop. In some instances, the server may be thought of as creating aplaceholder 304 which corresponds to the media presentation window on the client and which can be tracked relative to the remainder of the remote desktop. Tracking provides a notification system for actions and/or events which affect themedia presentation 302. -
FIG. 4 illustrates one such example where, as indicated generally at 402, a user drags themedia player window 202 to a different region of the remote desktop. The position changes are tracked and sent to the server which updates the server desktop. The changes are also reflected on the server'splaceholder 304. The changes to the placeholder are tracked on the server and relayed to the client such that the location of the media presentation can be correspondingly updated. In another example, if another window is opened on the server desktop over a portion of the media presentation, then this information is conveyed between the server and the client such that the remote desktop with the media presentation reflects the new condition. This feature is referred to below as geometry tracking. - Geometry tracking is a feature of terminal services that provides a notification system for window geometry changes. Whenever a window's geometry changes, events containing the new geometry will be generated and sent to notification sinks at the source. In this instance, the client acts as the source. Window geometry can change when a window is moved, minimized/maximized, or clipped by another window.
- Geometry tracking is used in scenarios where an application or framework is made aware of a terminal services session and is distributed across the client and server. One such scenario can occur when an application decides to render media on the client instead of transmitting a pre-rendered bitmaps from the server. In order to do this, the application creates a window on both the server and client ends. The server window acts as a placeholder, and is able to accept all input, and the actual media would be rendered and painted by the application on the client end. The client window is painted right over the server window for the distribution to be transparent to the user. Since all input actually acts upon the server window, geometry changes will be reflected at the server. The application tracks these changes to the server window and updates the client window accordingly for both windows to be geometrically synchronized.
- The above implementation generates a remote desktop by bifurcating data delivery relating to the remote desktop. Relatively low data-intensive components of the server desktop are processed on the server and then transmitted to the client. Relatively highly data-intensive components are transmitted to the client in an unprocessed or less processed form. The processing is then completed by the client and combined with the low data intensive components to create the remote desktop. Events which affect the media presentation are tracked at the server so that a relative relationship of the media presentation to other portions of the remote desktop can be maintained. In this example,
media presentation 302 is a relatively dynamic, relatively highly data intensive component, while the remainder of the remote desktop is a relatively static, relatively low data intensive component. Streaming the media component to the client in a compressed and unprocessed form creates an enhanced user experience and/or saves system resources to name but a few potential advantages. - The above implementations described in relation to
FIGS. 1-4 are but examples of potential implementations. Other exemplary implementations are described below. Further, for purposes of explanation, the server desktop is illustrated as being displayed as a visual image inFIGS. 1-4 . In many implementations, the server desktop may not actually be displayed, e.g. the implementations would work satisfactorily even if the server altogether lacked a display means. - The concepts described above and below can improve a user-experience involving a remote desktop experience involving media playback and/or other similar high data consumption actions by allowing the media infrastructure on the system, e.g. such as a Media Foundation API set or other media platform, to detect that the media infrastructure is running in a terminal services session and to efficiently stream the compressed media to the client before it is decompressed at the server. This results in the following advantages, among others. First, the bandwidth savings are dramatic, a 300 Kbps media stream consumes about 300 Kbps to stream, as it is sent down before decompressing. Previously, the resulting decompressed sequence of bitmaps may have taken several megabits to stream. Second, audio/video sync is maintained as timing information that allows the media playback components at the client to preserve synchronization remain in the streams. This allows for excellent synchronization of audio and video. Third, this technique works for both AV (audio/video) streams or streams that consist of just audio or just video.
- Several techniques are described in more detail below. For instance, various implementations allow transparent efficient media streaming in terminal services, without changing the media application. The applications do not need to be aware of the terminal services session or associated processes. Instead the applications run as they would if there was no remote desktop. Further, general applications, such as media players can gain access to the uncompressed stream down in the media playback infrastructure. In contrast to prior scenarios, various techniques described below allow for ‘transparent’ media streaming with any application running in a terminal server session as long as the application uses appropriate Media API's (e.g. media foundation or other media platforms).
- Various implementations described below further allow geometry synchronization. For instance, these implementations allow seamless integration of a media stream playing back at the client with the rest of the RDP display surface. For instance, a media stream's target window can be moved around, clipped or have a size of the target window changed on the server and still result in a seamless integration. Past solutions have been more limited in scope e.g. only allowing the media window to take on one or two ‘valid’ positions. In some implementations of this solution any transforms of the media window are allowed.
- The implementations described above and below are described in the context of a computing environment as commonly encountered at the present point in time. Various examples can be implemented by computer-executable instructions or code means, such as program modules, that are executed by a computer, such as a personal computer or PC. Generally, program modules include routines, programs, objects, components, data structures and the like that perform particular tasks or implement particular abstract data types.
- Various examples may be implemented in computer system configurations other than a PC. For example, various embodiments may be realized in hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, cell phones and the like. Further, as technology continues to evolve, various implementations may be realized on yet to be identified classes of devices. For example, as the cost of a unit of processing power continues to drop and wireless technologies expand, computing devices resembling today's cell phones may perform the functionalities of today's PC, video camera, cell phone, and more in a single mobile device. This single device may in one scenario act as a server and in another scenario act as a client. This is but one of many existing and developing examples for the described implementations.
- Various examples may be practiced in distributed computing environments, where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices. Further, the terms server and client as used herein do not connotate any relative capabilities of the two devices. The client may have more, less, or equal processing capabilities than the server. Rather, in this document, the names server and client describe the relative relationship of the two components. For example, a computing experience of a first or server device is remoted to a second or client device. Further, for ease of explanation the examples provided in this document relate to a single server and a single client. However, this is but one potential configuration. For instance, other implementations may have one server and multiple clients. Further, in some implementations a first computer may act as a server for a second computer which then acts as a server for a third computer.
- Although the various implementations may be incorporated into many types of operating environments as suggested above, a description of but one exemplary environment appears in
FIG. 8 in the context of an exemplary general-purpose computing device and which is described in more detail later in this document under the heading “Exemplary Operating Environment”. - Exemplary Implementations and Processes
-
FIG. 5 provides a high-level overview of anexemplary operating environment 100 suitable for managing multimedia transmissions in a distributed environment such as a terminal services or remote desktop protocol (RDP) scenario. In this implementation,server 102 sends data relating to the server'sdesktop 110 toclient 104 to generate a remote experience, such asremote desktop 114, atclient 104. In this instanceremote desktop 114 includes a user-interface component 502 and amedia component 504. - User-interface-
component 502 includes graphics and images that typically compose a user-interface. User-interface component 502 includes icons, host audio, background images and applications such as word-processing applications, spreadsheet applications, database applications, media applications and so forth. Virtually any components that are not media components are part of user-interface component 502. When compared to the media component, the user-interface component is relatively static and relatively low data-intensive. -
Media component 504 includes media-rich or bandwidth-intensive elements that compose a media presentation or media event. The media component is relatively dynamic and relatively highly data-intensive when compared to the user-interface component. The following is a non-exhaustive list of exemplary media components: a streaming media presentation, including a video and/or audio presentation; a television program, including a cable television (CATV), satellite, pay-per-view, or broadcast program; a digitally compressed media experience; a radio program; a recorded media event (sourced by a VCR, DVD player, CD player, Personal Video Recorder and the like); a real-time media event; and a camera feed. - The data for the remote desktop is sent from
server 102 toclient 104 overnetwork 106. The remote desktop data is bifurcated at theserver 104 with data relating touser interface component 502 transmitted over user-interface channel 506 and data relating tomedia components 504 transmitted overmedia channel 508. - User-interface channel 506 communicates user-
interface component 502 toclient 104. Terminal Server and Terminal Client Services, offered by Microsoft Corporation of Redmond, Wash., provide an exemplary user-interface channel 506. Any remotable protocol can be used to transmit data through user-interface channel 506. Exemplary protocols and data formats include, remote desktop protocols (RDP), the T-120 series protocol or HTML (hypertext markup language and its many variations), among others. -
Media channel 508 is separate from user-interface channel 506.Media channel 508 is used to transmit bandwidth-intensive experiences such as video and others listed above.Media channel 508 provides a communications conduit formedia component 504 to flow separately from user-interface component 502. Thus, themedia component 504 is sent out of band with respect to the user-interface component, but synchronized. An exemplary protocol to transmit data throughmedia component 508 includes, but is not limited to, Transmission Control Protocol (TCP), and a virtual channel over an RDP connection. - In each of the scenarios mentioned above, user-
interface component 502 is combined withmedia component 504 to generateremote desktop 114 at theclient 104. A user atclient 104 can remotely operateserver 102 by interacting withremote desktop 114. For instance, the user can move his/her mouse cursor over an application on the remote desktop and open an application by clicking on a corresponding icon. Similarly, the user can issue commands to an application through the remote desktop. For instance, in relation to a media application, the user may utilize mouse clicks to play, stop, fast forward, and rewind. Further, the user can minimize an application window, move the window or open a second application over the first application. Such changes are tracked by the geometry tracking feature described above and below. - For purposes of explanation, the examples described above include an easily discernable user-interface component and an easily discernable media component. Such however need not be the case. For instance, in one example, the media component may occupy the entire client display such that the user does not perceive the user-interface component. Alternatively or additionally, the user-interface component may be visible to the user on the client display only intermittently. For instance, the media component may occupy the entire client display until such time as the user enters a command such as “pause”. The word “pause” and/or an associated symbol may then appear in combination with the media component so that the word “pause” appears superimposed over the media component to the user. The skilled artisan should recognize these examples as illustrations of many possible configurations.
-
FIG. 6 represents selective components ofsystem 100 for generating an enhanced remote desktop experience.FIG. 6 relates to a media component of a terminal services session betweenclient 104 andserver 102. In this particular instance, the terminal services session entails a remote desktop protocol (RDP) configuration, examples of which are illustrated above. - A
media platform 602 operates onserver 102 and similarly a version ofmedia platform 602 operates uponclient 104. The media platform exists as part of an operating system of an individual device such asserver 102 and/orclient 104 to allow playback of media such that applications, such asmedia player 202, that interact with the operating system may control playback of media without “knowing” the particular details of the media formats. The media platform running on the server may be identical to the media platform running on the client. In other instances the media platform on the server may be a different product and/or version than the media platform operating on the client. - In this
instance media platform 602 running onserver 102 can detect that the media platform is running in a terminal server session via a destination component ordestination 604. The destination is an object that defines where a presentation is to be presented (e.g. a window, disk file, and the like) and what happens to the presentation. Further, the source'smedia platform 602 determines that the source is connected to a client that has the capabilities to render media locally. In this instance, a distribution manager component ordistribution manager 606 determines that the source's media platform is connected toclient 104 that has the capabilities to render media locally.Distribution manager 606 further establishes terminal services policies to enable remoting media to theclient 104.Distribution manager 606 establishes a virtual channel connection with a multimedia client plugin ormultimedia component 610. The virtual channel connection allows for the exchange of control information relating to the terminal services session between thesource 102 and theclient 104. - Communications over the virtual channel connection between the
distribution manager 606 and themultimedia component 610 allow supported media formats to be negotiated between the source and the client. Further, utilizing the virtual channel connection allows thedistribution manager 606 and themultimedia component 610 to establish a distributed topology. Examples of such techniques are described in more detail in a patent application of the present assignee, titled “Resolving a Distributed Topology To Stream Data” filed on Jul. 11, 2003, and having attorney docket No. MS1-1538 which is incorporated by reference herein. - The distributed topology performs various functionalities. For example, the distributed topology can insert a network transmitter at the server side and a network receiver at the client side. The network receiver is connected in turn to audio and/or video renderers at the client side. In this particular configuration a
video transmitter 620 and anaudio transmitter 622 are illustrated onserver 102 while acorresponding video receiver 624 and anaudio receiver 626 are illustrated on the client side. - During a remote desktop media presentation scenario, media can be directed to the client in an unprocessed or partially processed form which is streamed to
client 104. For instance, atserver 102,media foundation 602 can intercept media that would otherwise be processed at the server, such as byserver video decoder 630,server video effect 632,server video renderer 634,server audio decoder 636,server audio effects 638 andserver audio renderer 640. The media is redirected to the respective video andaudio transmitters client 104. Streaming may be over various channels. For instance, the media may be streamed in band with the RDP over a virtual channel. Such a configuration re-uses the existing RDP connection and allows RDP to handle various details of punching thru firewalls, and establishing a secure, authenticated context, among other tasks. Alternatively or additionally, the media may be streamed over a side-band user datagram protocol (UDP) or transmission control protocol (TCP) connection. In some instances an out of band configuration may be more performant. For instance, in a particular configuration, an out of band connection may be available with greater bandwidth than is available in that particular instance through the RDP. - On the client side, the streamed media is received at the
multimedia component 610 which in turn passes it to video andaudio receivers client video decoder 650,client video effect 652,client video renderer 654,client audio decoder 656, clientaudio effects 658 andclient audio renderer 660. The media is then decoded and rendered at the client. Since the audio and video are streamed in their encoded form, any synchronization tools contained in the encoded media will be available at the client to maintain proper audio video synchronization. For ease of explanation, unprocessed media is streamed from the server to the client in this example. However, some processing of the media may occur in other implementations. For instance, assume that consistent with the above described remote desktop scenario, a user requests to play media which is encoded at the source in hypothetical codec ‘AA’. Assume further, that the source contains the components to decode hypothetical codec AA, but the client does not, but that both the source and the client have codec capability for a second hypothetical codec format ‘BB’. In such an instance, the source may decode the media and then recode the media into BB format before streaming the media to the client. This is but one example, which represents various levels of processing to the media which may occur at system components consistent with the concepts described above and below. - A geometry tracking component or
geometry tracker 664 can register and track any changes relating to a target window of the terminal services session. For instance,geometry tracker 664 can register a unique identifier for a target window and track the target window on the remote desktop described above. The geometry tracker tracks changes relating to clipping of the target window by another window, position of the target window, and size of the target window at the server side. These changes are then relayed to the client-side by the remote desktop protocols where the changes are directed to the clientside multimedia component 610. - So for example, any geometry changes or updates to the client media presentation window such as
media presentation window 302 described above in relation toFIGS. 3-4 which are relayed to theclient multimedia component 610 are applied to the client media presentation window at the remote desktop. For example, relaying the geometry updates allows a user to click-drag the media player window in the terminal services session and have the resultant movement be accurately reflected at the client by the video presentation moving around to follow the media player window on the remote desktop. Such an example is illustrated and described above in relation toFIGS. 3-4 . A more detailed example of geometry tracking is described below under the section titled “geometry tracking”. The above described scheme can be repeated for multiple player applications on the server playing within one terminal services session to a terminal services client. In such a case, a single terminal servicesclient multimedia component 610 services the requests of multiple server-side applications. -
FIG. 7 illustrates various levels of abstraction of various system components configured to implement an exemplary terminal services session. In some implementations, this configuration can be employed on both the server and the remote client, such as in a distributed scenario. In a user mode process boundary 702 are amedia player 704, a media platform in the form ofmedia foundation 706, and amedia engine 708. - Also within the user mode process boundary 702 are a
media source 710, a directx media object (DMO) 712 and anet sink 714.Media engine 708 serves as a central focal point formedia player 704 to participate in a media presentation. A terminal serverapplication program interface 716 also resides within user mode process boundary 702. The terminal server application program interfaces provide geometry tracking virtual channels as are discussed in more detail in relation to a section below under the heading “geometry tracking”. In akernel mode 720 of the operating system occursterminal services drivers 722. Specifically, the terminal services drivers relate to a remote desktop display device (RDPDD) and a remote desktop winstation driver (RDPWD). An exemplary system configuration which can support the above described components is described below in relation toFIG. 8 . - Exemplary System Environment
-
FIG. 8 represents an exemplary system or computing environment 800 for managing multimedia transmissions to terminal services connections. System environment 800 includes a general-purpose computing system in the form of a server device orserver 102. The components ofserver 102 can include, but are not limited to, one or more processors 804 (e.g., any of microprocessors, controllers, and the like), asystem memory 806, and asystem bus 808 that couples the various system components. The one ormore processors 804 process various computer executable instructions to control the operation ofserver 102 and to communicate with other electronic and computing devices. Thesystem bus 808 represents any number of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. - Computing environment 800 includes a variety of computer readable media which can be any media that is accessible by
server 102 and includes both volatile and non-volatile media, removable and non-removable media. The system memory 506 includes computer-readable media in the form of volatile memory, such as random access memory (RAM) 810, and/or non-volatile memory, such as read only memory (ROM) 812. A basic input/output system (BIOS) 814 maintains the basic routines that facilitate information transfer between components withinserver 102, such as during start-up, and is stored inROM 812.RAM 810 typically contains data and/or program modules that are immediately accessible to and/or presently operated on by one or more of theprocessors 804. -
Server 102 may include other removable/non-removable, volatile/non-volatile computer storage media. By way of example, ahard disk drive 816 reads from and writes to a non-removable, non-volatile magnetic media (not shown), amagnetic disk drive 818 reads from and writes to a removable, non-volatile magnetic disk 820 (e.g., a “floppy disk”), and anoptical disk drive 822 reads from and/or writes to a removable, non-volatileoptical disk 824 such as a CD-ROM, digital versatile disk (DVD), or any other type of optical media. In this example, thehard disk drive 816,magnetic disk drive 818, andoptical disk drive 822 are each connected to thesystem bus 808 by one or more data media interfaces 826. The disk drives and associated computer readable media provide non-volatile storage of computer readable instructions, data structures, program modules, and other data forserver 102. - Any number of program modules can be stored on the
hard disk 816,magnetic disk 820,optical disk 824,ROM 812, and/orRAM 810, including by way of example, anoperating system 826, one ormore application programs 828,other program modules 830, andprogram data 832. Each ofsuch operating system 826,application programs 828,other program modules 830, and program data 832 (or some combination thereof) may include an embodiment of the systems and methods described herein. - A user can interface with
server 102 via any number of different input devices such as akeyboard 834 and pointing device 836 (e.g., a “mouse”). Other input devices 838 (not shown specifically) may include a microphone, joystick, game pad, controller, satellite dish, serial port, scanner, and/or the like. These and other input devices are connected to theprocessors 804 via input/output interfaces 840 that are coupled to thesystem bus 808, but may be connected by other interface and bus structures, such as a parallel port, game port, and/or a universal serial bus (USB). - A
monitor 842 or other type of display device can be connected to thesystem bus 808 via an interface, such as avideo adapter 844. In addition to themonitor 842, other output peripheral devices can include components such as speakers (not shown) and aprinter 846 which can be connected toserver 102 via the input/output interfaces 840. -
Server 102 can operate in a networked environment using logical connections to one or more remote computers, such as remote client device orclient 104. By way of example, theremote client 104 can be a personal computer, portable computer, a server, a router, a network computer, a peer device or other common network node, and the like. Theremote client 104 is illustrated as a portable computer that can include many or all of the elements and features described herein relative toserver 102. - Logical connections between
server 102 and theremote client 104 are depicted as a local area network (LAN) 850 and a general wide area network (WAN) 852. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet. When implemented in a LAN networking environment, theserver 102 is connected to alocal network 850 via a network interface oradapter 854. When implemented in a WAN networking environment, theserver 102 typically includes amodem 856 or other means for establishing communications over thewide area network 852. Themodem 856, which can be internal or external toserver 102, can be connected to thesystem bus 808 via the input/output interfaces 840 or other appropriate mechanisms. The illustrated network connections are exemplary and other means of establishing communication link(s) between the computing devices 802 and 848 can be utilized. - In a networked environment, such as that illustrated with computing environment 800, program modules depicted relative to the
server 102, or portions thereof, may be stored in a remote memory storage device. By way of example,remote application programs 858 are maintained with a memory device ofremote client 104. For purposes of illustration, application programs and other executable program components, such as theoperating system 826, are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of theserver 102, and are executed by theprocessors 804 of the server. - Geometry Tracking
- An example of but one implementation of a geometry tracking technique for use in managing multimedia transmissions to terminal services connections is described below.
- Architecture—Deployment Level (Physical) View of the System
- Geometry tracking consist of three different components. There is a server side component, the RDP Display Device (RDPDD) driver, and a client side component.
- The server component is responsible for the registration of window tracking. The RDPDD driver is responsible for detecting geometry changes, and transmitting new geometry information to the client. The client component is responsible for delegating geometry change notifications to geometry notify sinks.
- Geometry Tracking-Specific Server Components
- TSGEOTRACK.LIB
- The TSGeoTrack static library provides the server side geometry tracking component. It provides the necessary classes to register a window with geometry tracking. Distributed media foundation (DMF) should statically link to this library. DMF is an example of a media platform remoting technology, such as can be employed by the Media Foundation media platform. The library is published cross-depot in the termsrv depot, so getting access to it should not be a problem.
- Geometry Tracking-Specific Client Components
- RDPMM Plugin
- The RDPMM plugin is the multimedia plugin for the terminal services (TS) client. The RDPMM plugin receives geometry change notifications from the RDPDD driver, and propagates them to the appropriate notification sink on the DMF client. The RDPMM plugin will be statically linked to the TS client.
- MM Plugin
- The multimedia (MM) plugin is a sink plugin for RDPMM. The MM plugin will host the geometry notify sinks. It has to be implemented as a DLL and registered in an appropriate manner. RDPMM will automatically load this DLL when multimedia capabilities are required. The MM plugin dynamic link library (DLL) has to implement a specific entry point method in order for RDPMM to initialize it.
- Media foundation (MF) can use the MM plugin to the DMF client within the TS Client Core. MF has to register itself as an MM plugin and implement the required entry point method.
- Supporting Server Components External to Geometry Tracking
- DMF Server
- The DMF server will be the component that requests the tracking of specific windows.
- RDPDD.DLL
- RDPDD.DLL is the RDP Display Device driver library. Provides the facility of generating geometry change events and transporting them to the client.
- Supporting Client Components External to Geometry Tracking
- DMF Client
- The DMF client will provide geometry notify sinks that will be registered with the RDPMM plugin. This component will actually be seen by RDPMM as the MM plugin.
- MSTSCAX.DLL
- The MSTSCAX.DLL is an ActiveX version of the TS RDP client application.
- Architecture—Architectural Component Interaction
-
- Table 1 describes the communication sequence involved in registering for track events of a window. DMF plays an important role in this process, as it transmits the track ID of the window from its server component to its client component and register a sink for it. This entire process must be repeated in order to track another window.
-
- Table 2 describes the communication sequence involved when a window that is registered for geometry tracking, changes its geometry.
- Class/Module Relationships
- Server Side Geometry Tracking Interface
- ITSServerGeometryTracker is the server side geometry tracking interface. It provides the methods that are needed to initialize geometry tracking, and register windows for tracking.
-
- ITSServerGeometryTracker
- ITSServerGeometryTracker is an interface that provides the necessary methods to start, and stop geometry tracking, and register allow the registration of windows to be tracked. This interface should only be used to track server side windows.
- Initialize
-
- Terminate
- StartGeometryTracking
- EndGeometryTracking
Initialize
- The initialize method is responsible for initializing the geometry tracker.
- public virtual HRESULT Initialize( )
Parameters Returns S_OK if success, appropriate error otherwise
Terminate - The Terminate method is responsible for terminating the geometry tracker.
- public virtual HRESULT Terminate( )
Parameters Returns S_OK if success, appropriate error otherwise
Start Geometry Tracking - The StartGeometryTracking method registers a window for geometry tracking. This method registers the given window with the RDPDD driver for geometry tracking notifications. This method will return a track ID to the caller. The track ID is a unique identifier for the particular registration that can be used to register a notification sink for geometry events from the window and to stop tracking itself.
- The track ID is actually the HWND of the server side window that is being tracked.
- public virtual HRESULT StartGeometryTracking( IN HWND hwndToTrack, IN DWORDdwTrackFlags, OUT DWORD* pdwTrackId)
Parameters hwndToTrack The HWND of the server side window to track dwTrackFlags Special tracking instructions pdwTrackId The track ID of the registered window Returns S_OK if success, appropriate error otherwise
End Geometry Tracking - The EndGeometryTracking method unregisters a window for geometry tracking. This method unregisters the given window with the RDPDD driver for geometry tracking notifications.
- public virtual HRESULT EndGeometryTracking( IN HWND hwndToTrack, IN DWORD dwTrackId)
Parameters hwndToTrack The HWND of the server side window unregister for tracking pdwTrackId The track ID of the window to unregistered (as returned from StartGeometryTracking) Returns S_OK if success, appropriate error otherwise -
- CTSServerGeometryTracker
- The CTSServerGeometryTracker class provides the implementation of window tracking registration. CTSServerGeometryTracker also implements the IUnknown interface to provide reference counting. When windows are registered for geometry tracking, the CTSServerGeometryTracker class registered the given window with the RDPDD driver.
-
- _refCount
- fInitialized
- GetServerSideGeometryTracker( )
- SendToDriver( )
refCount
- _refCount is the reference count associated to an instance of CTSServerGeometryTracker.
-
- private BOOL _refCount
fInitialized - fInitialized is a flag that keeps track if an instance of CTSServerGeometryTracker is initialized. No operations will be allowed to be performed on an instance of CTSServerGeometryTracker until it has be initialize by calling the Initialize( ) method.
- private BOOL _fInitalized
SendToDriver
- private BOOL _refCount
- The SendToDriver method is used to register and unregister for geometry tracking events with the RDPDD driver. The SendToDriver method is written in a generic way, and can be used to send other commands to the RDPDD driver.
- protected virtual HRESULT SendToDriver( IN INT nEscapeCode, IN INT nSizeData, IN LPCSTR pData)
Parameters nEscapeCode The driver operation to perform (for tracking the value should be WNDOBJ_SETUP) nSizeData The size, in bytes, of the buffer provided by pData pData Buffer containing setup data for operation. Should point to WNDOBJ_SETUP_DATA structure. Flags field of WNDOBJ_SETUP_DATA should be set to: WNDOBJ_SETUP_FLAG_CREATE | WNDOBJ_SETUP_FLAG_TRACK - for registration WNDOBJ_SETUP_FLAG_STOPTRACK - for unregisteration Returns S_OK if success, appropriate error otherwise
RDP Multimedia Plugin Host Interface - In order to be a multimedia plugin on the TS client, the ITSMultimediaPluginHost interface must be implemented.
-
- ITSMultimediaPluginHost
- ITSMultimediaPluginHost is an interface implemented on the client side that provides the necessary methods to register and unregister a geometry tracking notification sink, and to get to a handle to the renderer's parent window.
-
- GetRendererParentWindow
- SetGeometryTrackerNotifySink
- RemoveGeometryTrackerNotifySink
Get Renderer Parent Window
- GetRendererParentWindow returns a handle to the renderer's parent window.
- public virtual HWND GetRendererParentWindow( )
Parameters Returns HWND of renderer's parent window
SetGeometryTrackerNotifySink - SetGeometryTrackerNotifySink registers the given geometry tracker notification sink. Whenever notifications with the given track ID arrive at the RDPMM plugin, they will be forwarded to the registered sink. If a track ID is registered more than once, this method will return an error.
- public virtual HRESULT SetGeometryTrackerNotifySink( IN DWORD dwTrackId, IN ITSMultimediaGeometryNotifySink *pGeometryNotifySink)
Parameters dwTrackId The track ID of the window that will generate events at the given sink pGeometryNotifySink Pointer to the geometry notification sink that will handle notifications from the given track ID Returns S_OK if success, appropriate error otherwise
RemoveGeometryTrackerNotifySink - RemoveGeometryTrackerNotifySink unregisters the given geometry tracker notification sink. Whenever notifications with the given track ID arrive at the RDPMM plugin, they will be forwarded to the registered sink.
- public virtual HRESULT RemoveGeometryTrackerNotifySink IN DWORD dwTrackId, IN ITSMultimediaGeometryNotifySink *pGeometryNotifySink)
Parameters dwTrackId The track ID of the sink to remove pGeometryNotifySink Pointer to the geometry notification sink to remove Returns S_OK if success, appropriate error otherwise - Window Information Implementation
TABLE 6 CRDPMMWindowInformation #_pGeomtryNotifySink #_dwTrackId #_fWindowVisible #_rcLastSetRegion #_fPendingGeomtryUPdate +GetMFPluginNotifySink( ) +GetTrackId( ) +IsWindowVisiible( ) +SetWindowVisible( ) +GetRcLastSetRegion( ) +SetRcLastSetRegion( ) +IsUpdatePending( ) +SetUpdatePending( ) - CRDPMMWindowInformation
- CRDPMMWindowInformation is a utility class that stores information regarding a window. CRDPMMWindowInformation holds a pointer to the corresponding notification sink, track ID, the latest clipping region and rectangle. This class has no relationship with ITSWindowInformation.
-
- _pGeomtryNotifySink
- _dwTrackId
- _fWindowVisible
- _rcLastRect
- _rgnLastSetRegion
- GetGeometryNotifySink
- SetGeometryNotifySink
- GetTrackId
- IsWindowVisible
- Set Window Visible
- GetLastRect
- SetLastRect
- GetLastSetRegion
- SetLastSetRegion
spGeomtryNotifySink
- _spGeomtryNotifySink is a smart pointer to the geometry tracking notification sink corresponding to the particular window.
-
- ProtectedITSMultimediaGeometryNotifySink _spGeometryNotifySink
dwTrackId
- ProtectedITSMultimediaGeometryNotifySink _spGeometryNotifySink
- _dwTrackId is the track ID of the particular window.
-
- protected DWORD _dwTrackId
fWindowVisible
- protected DWORD _dwTrackId
- _fWindowVisible is a flag that specifies whether the window is visible or not. If the window is visible, this value will be TRUE, otherwise it will be false.
- Note: this value does not set the visibility of the window, but holds the value of the current state of the window.
-
- protected DWORD _fWindowVisible
rcLastRect
- protected DWORD _fWindowVisible
- _rcLastRect represents the last rectangle the particular window occupied.
-
- protected RECT _rcLastRect
rgnLastRegion
- protected RECT _rcLastRect
- _rgnLastRegion represents the last clipping region the particular window occupied.
-
- protected CTSRegion _rgnLastRegion
GetGeometryNotifySink
- protected CTSRegion _rgnLastRegion
- GetGeometryNotifySink returns a pointer to the geometry notification sink for this particular window. If there is no sink associated the particular window, this method will return NULL.
- public virtual ITSMultimediaGeometryNotifySink GetGeometryNotifySink( )
Parameters Returns Pointer to geometry notification sink. If no sink is associated, NULL is returned.
SetGeometryNotifySink - SetGeometryNotifySink sets the geometry notification sink for the particular window. Setting the notify sink to a value of NULL means the window has no sink associated to it.
- public virtual HRESULT SetGeometryNotifySink(IN ITSMultimediaGeometryNotifySink*pGeometryNotif ySink)
Parameters pGeometryNotifySink Pointer to the geometry notification sink Returns S_OK if success, appropriate error otherwise
IsWindowVisible - IsWindowVisible determines if the window is current visible.
- public virtual BOOL IsWindowVisible( )
Parameters pGeometryNotifySink Pointer to the geometry notification sink Returns S_OK if success, appropriate error otherwise
SetWindowVisible - SetWindowVisible is used to set the current visibility state of the window.
- public virtual HRESULT SetWindowVisible( IN INT fIsVisible)
Parameters fVisible TRUE to for VISIBLE, FALSE for NOT VISIBLE Returns TRUE if window is visible, and FALSE otherwise
GetLastRect - GetLastRect returns the rectangle that the window last occupied.
- public virtual HRESULT GetLastRect(RECT &rc)
Parameters rc Reference to rectangle. The last rect will be stored into the given rectangle. Returns S_OK if success, appropriate error otherwise
SetLastRect - SetLastRect is used to set the rectangle that the window last occupied.
- public virtual HRESULT SetLastRect(RECT &rc)
Parameters rc Reference to a rectangle the window last occupied. Returns S_OK if success, appropriate error otherwise
GetLastSetRegion - GetLastSetRegion returns the clipping region that the window last occupied.
- public virtual HRESULT GetLastSetRegion(CTSRegion &rc)
Parameters rc Reference to region. The last set region will be stored into the given region. Returns S_OK if success, appropriate error otherwise
SetLastSetRegion - SetLastRect is used to set the rectangle that the window last occupied.
- public virtual HRESULT SetLastRect(RECT &rc)
Parameters rc Reference to a region the window last occupied. Returns S_OK if success, appropriate error otherwise -
- CRDPMultimediaPlugin
- CRDPMultimediaPlugin is the implementation of the RDP Multimedia plugin. It implements ITSClientPlugin so it can be a TS Client plugin, ITSMultimediaPluginHost so that it can handle geometry tracking. This class provides mechanism for the DMF client to register geometry notify sinks.
-
- _spInstance
- _spCoreApi
- _spOnPluginInitialized
- _spOnWindowInformation
- _spOnShellInformation
- _mapTrackIdSink
- _mapWindowInformation
- _hInstanceMultimediaDll
- _spPluginNotifySink
- NotifyGeometryChange( )
- IsPolicyMMEnabled( )
- InitializeMMPluginDLL( )
- TerminateMMPluginDLL( )
spnInstance
- spInstance is a pointer to an instance of TS Client.
-
- private ComSmartPtr<ITSInstance>_spInstance
spCoreApi
- private ComSmartPtr<ITSInstance>_spInstance
- _spCoreApi is a pointer to the TS Core API. The Core API is needed to register for notifications (of all types).
-
- private ComSmartPtr<ITSCoreApi>_spCoreApi
spOnPluginInitialized
- private ComSmartPtr<ITSCoreApi>_spCoreApi
- spOnPluginInitialized is a pointer to the plugin initialization notification sink. The OnPluginnitialized event handler will be called when the MF plugin is initialized.
-
- privateComSmartPtr<ITSCoreEventSink>_spOnPluginInitialized
spOnWindowInformation - spOnWindowInformation is a pointer to the window information notification sink. The OnWindowInformation event handler will be called when a window information event is received. Window information events can be geometry tracking events.
- PrivateComSmartPtr<ITSCoreEventSink>_sponWindowInformation
spOnShellInformation
- privateComSmartPtr<ITSCoreEventSink>_spOnPluginInitialized
- spOnShellInformation is a pointer to the shell information notification sink. The OnShellInformation event handler will be called when a shell information event is received. Window information events can be geometry tracking events.
-
- private ComSmartPtr<ITSCoreEventSink>_sponShellInformation
mapWindowInformation
- private ComSmartPtr<ITSCoreEventSink>_sponShellInformation
- mapWindowInformation is a hash table that maps a track ID to window information about the corresponding window. This structure can be used to look up a sink for a given track ID. The current window properties will also be stored.
-
- privateCRDPMMHashTable<DWORD,CRDPMMWindowInformation _mapWindowInformation
hInstanceMultimediaDll - hInstanceMultimediaDll is a handle to the MF plugin for the TS client.
- private HANDLE _hInstanceMultimediaDll
spMFPluginNotifySink - spMFPluginNotifySink is pointer to the plugin notification sink for the MF plugin. Notifications generated by the MF plugin will arrive at this sink.
- privateCRDPMMHashTable<DWORD,CRDPMMWindowInformation _mapWindowInformation
- private
-
- ComPlainSmartPtr<ITSMultimediaPluginNotifySink >_spMFPluginNotifySink;
NotifyGeometryChange
- ComPlainSmartPtr<ITSMultimediaPluginNotifySink >_spMFPluginNotifySink;
- NotifyGeometryChange is a utility method that accepts the geometry information of a window, and generates a geometry tracking notification at the appropriate sink. This method uses the track ID sink map to find the appropriate sink given a track ID of the window.
- private HRESULT NotifyGeometryChange( IN DWORDdwTrackId, IN HRGN hrgnNew, IN RECT rc)
Parameters dwTrackId Track ID of window that generated event hrgnNew New clipping region of window rc Rectangle that the window encompasses Returns S_OK if success, appropriate error otherwise
IsPolicyMMEnabled - IsPolicyMMEnabled is a utility method that determines whether the MF plugin should be loaded. The MF plugin will be loaded if the EnableMedia policy is set. This method checks with the registry to determine if EnableMedia policy is set.
- Please refer to the registry section of this document to find the necessary keys that need to be set.
- private BOOL IsPolicyMMEnabled( )
Parameters Returns TRUE if EnableMedia policy is set, FALSE otherwise
InitializeMMPluginDLL - InitializeMMPluginDLL is a utility method that loads the MF plugin. The MF plugin must be registered as the MM plugin in the registery.
- Please refer to the registry section of this document to find the necessary keys that need to be set.
- private HRESULT InitializeMMPluginDll( )
Parameters Returns S_OK if success, appropriate error otherwise
TerminateMMPluginDLL - TerminateMMPluginDLL is a utility method that unloads the MF plugin. This method also removes all geometry notification sinks that have been registered. The plugin notification sink is also removed.
- private HRESULT TerminateMMPluginDll( )
Parameters Returns S_OK if success, appropriate error otherwise -
- The geometry notify sink interface should be implemented by anyone that wants to receive geometry change notifications. The MF plugin should have an implementation of this interface.
-
- OnNotifyGeometryChange
- OnNotifyVisibilityChange
- OnNotifyEndTracking
- OnNotifyDestroyWindow
OnNotifyGeometryChange
- OnNotifyGeometryChange is a method that is invoked when a windows geometry changes. The windows new geometry (rectangle and clipping region) will be given to this method.
- private HRESULT OnNotifyGeometryChange( IN HRGN hrgnUpdatedVizRegion, IN LPRECT prcBoundingRect)
Parameters hrgnUpdatedVizRegion The window's new clipping region prcBoundingRect The rectangle that the window is contained in Returns S_OK if success, appropriate error otherwise
OnNotifyVisibilityChange - OnNotifyVisibilityChange is a method that is invoked when a windows visibility is changed.
- private HRESULT OnNotifyGeometryChange( IN BOOL fVisible)
Parameters fVisible TRUE if the window is now visible, FALSE otherwise Returns S_OK if success, appropriate error otherwise
OnNotifyEndTracking - OnNotifyEndTracking is a method that is invoked when the server requests that the window no longer be tracked. No further events will be passed to this sink once this method has been called.
- private HRESULT OnNotifyEndTracking( )
Parameters Returns S_OK if success, appropriate error otherwise
OnNotifyDestroyWindow - OnNotifyEndTracking is a method that is invoked when the server wants the window destroyed.
- private HRESULT OnNotifyDestroyWindow( )
Parameters Returns S_OK if success, appropriate error otherwise - Class/Module Interaction
- Notification Threading Model
- All geometry change notifications will occur on the RDPMM thread. The RDPMM plugin notifies the MM plugin of geometry changes by directly invoking the methods defined in the ITSMultimediaGeometryNotifySink interface.
- Managing the Window Information Map
- The RDPMM will manage geometry notifications through a map containing CRDPMMWindowInformation objects. The entries in the map can be partially filled, meaning that they only contain partial information regarding the window. Either the notification sink, or the window's geometry information could be missing. The notification sink could be missing because the MM plugin has yet to register a sink for the window. The geometry information could be missing if RDPMM has yet to receive any geometry information for the window.
- Entries in the map can be added in one of two ways:
-
- 1. The MM plugin explicitly registers a notification sink for a track ID.
- 2. The TS client core sends RDPMM a geometry change notification for a track ID that has no sink registered for it.
- The following algorithm is followed during when the MM plugin registers a notification sink with RDPMM:
-
- 1. Look up given track ID in window information map.
- 2. If entry is found go to step 4.
- a. If an entry was found then it must have been added by some geometry information that RDPMM received in the past or have already registered a sink for it.
- 3. Create a map entry.
- 4. Check to see if entries sink pointer has already been set. If it has been set return a duplicate registration error to the caller.
- a. We do not support the re-registration of track IDs (the sink has to be explicitly removed first).
- 5. Set sink pointer of entry to given sink.
- The following algorithm is followed when the RDPMM receives geometry information:
-
- 1. Look up given track ID in window information map.
- 2. If entry is found go to step 4.
- a. If no entry is found that means there is no sink registered to it, and this is the first update we have received for this window.
- 3. Create a map entry.
- 4. Update entries geometry information.
- Entries in the map can be removed in two ways:
-
- 1. The MM plugin explicitly unregisters a notification sink for a track ID.
- 2. The TS client core notifies RDPMM that a window has been deleted.
MF's Role in Transporting the Track ID
- MF plays an important role in transporting the track ID from the DMF server to the DMF client. In order to register a window for tracking, it must be registered with the server side geometry tracker, and then a notification sink must be set up with the RDPMM which lives on the client.
- The server side geometry tracker will return a track ID to the DMF server upon registration. In order for the DMF client to set up the notification sink with RDPMM, the DMF server must communicate the track ID to the DMF client. This should be done through virtual channels.
- The geometry tracking system can tolerate a delay between window registrations on the server side and sink registrations client side. RDPMM will maintain updates from a window that has no sink associated, so that when the sink is eventually registered, the latest information will be immediately available.
-
- The above sequence of table 9 describes the object communication flow during geometry tracking and notification sink registration.
-
- The above sequence of Table 10 describes the object communication flow during geometry change notification when the visibility of the window does not change.
-
-
- The above sequence of table 12 describes the object communication flow during geometry change notification when visibility of the window changes from visible to invisible.
- Named Objects
- Obtaining a Reference to the Server Side Geometry Tracker
- A global method is provided to get a reference of the geometry tracker. This method is responsible for the construction and the destruction of the geometry tracker.
- The method has the following prototype:
-
- HRESULT TSCreateServerSideGeometryTracker( OUT ITSServerGeometryTracker** ppGeoTracker)
- The return value is S_OK if successful, otherwise an appropriate error code.
- This method will be exposed in TSGEOTRACK.LIB.
- This section provides but one example for achieving geometry tracking of a media presentation consistent with the concepts described above and below.
- Exemplary Methods
-
FIG. 9 illustrates anexemplary method 900 for remote desktop presentation tracking. The order in which the method is described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the method. Furthermore, the method can be implemented in any suitable hardware, software, firmware, or combination thereof. - At
block 902, on the server side, the method sends a user-interface component of a server desktop during a terminal services session. In one instance the user-interface component simply comprises an application window, such as media player window. In another instance, the user-interface comprises a server desktop. For instance a server desktop may include one or more icons and one or more toolbars superimposed over a background image. One or more windows may be open on the server desktop. The user-interface component is sent over a network channel established by the terminal services session. - At
block 904, the method receives the user-interface component at the client side during the terminal services session. - At
block 906, on the server side the method streams media to the client. The media is streamed responsive to receiving, from the remote client, a media presentation request for a media application on the user-interface component. The media can be streamed over a separate network channel from the interface component. The network channel utilized for streaming the media can be established by the terminal services session or can be established by the method outside of the terminal services session. The media is streamed in a compressed or only partially processed format to the client. In some instances the method negotiates between the server and the client to determine what media formats are supported by the client. If the media is accessed in a format which is not supported by the client then the method may decode the media and re-encode the media into a format supported by the client before streaming the media to the client. - At
block 908, on the client side, the method accepts the media stream corresponding to the media presentation request. The media can be processed such as by one or more transforms before being rendered on the client. In at least some methods, the components at the source which process the media need not be aware of the terminal services session to achieve their functionalities. - At
block 910, on the client side the method generates a remote desktop experience by combining a media presentation with the user-interface component. The media presentation is generated from the streamed media. In some instances, the media may be presented in a window within an application window. For instance, the media may be presented in a media presentation window within a media player window. - At
block 912, on the server side the method tracks presentation of the media on a remote desktop at the remote client without presenting the media on the server desktop. Note that in at least some instances, any changes at the remote desktop are first reflected at the server. The changes to the user-interface are reflected when an updated user-interface is sent to the client. Changes to the media presentation are tracked separately since the media is not actually being presented at the server. The method can assign a unique identifier to a region which acts as a placeholder for the media presentation on the server. In one instance, the unique identifier is assigned to the media presentation window where the media presentation window is represented by the placeholder at the server. Any actions affecting the media presentation window can then be tracked. Such actions can include the user at the remote desktop clicking and dragging the media player window across the remote desktop, the user reducing or enlarging the size of the media player window, and/or other actions. For instance, another window may be opened which clips the media presentation window. Such actions can be tracked at the server and relayed to the client so that the remote desktop can be updated accordingly. - At
block 914, on the client side the method acquires geometry updates regarding the media presentation relative to the remote desktop. For instance, if the user clicked and dragged the media player window, then the geometry updates can cause the client to move the media presentation accordingly so that its media presentation window follows the media player window to its new location. In configurations where the server creates a placeholder on the server desktop, the client presents the media on the remote desktop over the placeholder wherever the placeholder moves on the remote desktop - Although embodiments relating to managing multimedia transmissions to terminal services connections have been described in language specific to structural features and/or methods, it is to be understood that the subject of the appended claims is not necessarily limited to the specific features or methods described. Rather, the specific features and methods provide examples of implementations for the concepts described above and below.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/047,362 US7590750B2 (en) | 2004-09-10 | 2005-01-31 | Systems and methods for multimedia remoting over terminal server connections |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US60878604P | 2004-09-10 | 2004-09-10 | |
US11/047,362 US7590750B2 (en) | 2004-09-10 | 2005-01-31 | Systems and methods for multimedia remoting over terminal server connections |
Publications (2)
Publication Number | Publication Date |
---|---|
US20060069797A1 true US20060069797A1 (en) | 2006-03-30 |
US7590750B2 US7590750B2 (en) | 2009-09-15 |
Family
ID=36100504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/047,362 Expired - Fee Related US7590750B2 (en) | 2004-09-10 | 2005-01-31 | Systems and methods for multimedia remoting over terminal server connections |
Country Status (1)
Country | Link |
---|---|
US (1) | US7590750B2 (en) |
Cited By (109)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060103508A1 (en) * | 2004-11-18 | 2006-05-18 | Canon Kabushiki Kaisha | Remote-control system, remote-control apparatus, apparatus to be controlled, remote-control method, computer program, and storage medium |
US20070136491A1 (en) * | 2005-12-13 | 2007-06-14 | Min Di | Computing system, method and computer readable medium for group interactive multicast using UPnP AV architecture |
WO2008005235A1 (en) * | 2006-06-29 | 2008-01-10 | Microsoft Corporation | Composition of local user interface with remotely generated user interface and media |
US20080034029A1 (en) * | 2006-06-15 | 2008-02-07 | Microsoft Corporation | Composition of local media playback with remotely generated user interface |
US20080037506A1 (en) * | 2006-05-26 | 2008-02-14 | Dinesh Dharmaraju | Wireless architecture for a traditional wire-based protocol |
US20080045149A1 (en) * | 2006-05-26 | 2008-02-21 | Dinesh Dharmaraju | Wireless architecture for a traditional wire-based protocol |
US20080104652A1 (en) * | 2006-11-01 | 2008-05-01 | Swenson Erik R | Architecture for delivery of video content responsive to remote interaction |
US20080101466A1 (en) * | 2006-11-01 | 2008-05-01 | Swenson Erik R | Network-Based Dynamic Encoding |
US20080184128A1 (en) * | 2007-01-25 | 2008-07-31 | Swenson Erik R | Mobile device user interface for remote interaction |
US20080205270A1 (en) * | 2007-02-28 | 2008-08-28 | Microsoft Corporation | Strategies for Selecting a Format for Data Transmission Based on Measured Bandwidth |
US20080209538A1 (en) * | 2007-02-28 | 2008-08-28 | Microsoft Corporation | Strategies for Securely Applying Connection Policies via a Gateway |
US20080263178A1 (en) * | 2007-04-18 | 2008-10-23 | Alcatel Lucent | Cell phone remote access to personal computer applications |
US20080288519A1 (en) * | 2007-05-16 | 2008-11-20 | Microsoft Corporation | Format Negotiation for Media Remoting Scenarios |
US20090006537A1 (en) * | 2007-06-29 | 2009-01-01 | Microsoft Corporation | Virtual Desktop Integration with Terminal Services |
US20090031035A1 (en) * | 2007-07-25 | 2009-01-29 | Qualcomm Incorporated | Wireless architecture for traditional wire based protocol |
US20090210817A1 (en) * | 2008-02-15 | 2009-08-20 | Microsoft Corporation | Mechanism for increasing remote desktop responsiveness |
US20090210811A1 (en) * | 2006-06-09 | 2009-08-20 | Microsoft Corporation | Dragging and dropping objects between local and remote modules |
US20090222739A1 (en) * | 2008-03-03 | 2009-09-03 | Microsoft Corporation | Privacy modes in a remote desktop environment |
US20090222531A1 (en) * | 2008-02-28 | 2009-09-03 | Microsoft Corporation | XML-based web feed for web access of remote resources |
US20090248802A1 (en) * | 2008-04-01 | 2009-10-01 | Microsoft Corporation | Systems and Methods for Managing Multimedia Operations in Remote Sessions |
US20090252130A1 (en) * | 2008-04-04 | 2009-10-08 | Qualcomm Incorporated | Apparatus and methods for establishing client-host associations within a wireless network |
US20090307428A1 (en) * | 2008-06-06 | 2009-12-10 | Microsoft Corporation | Increasing remote desktop performance with video caching |
US20090327905A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Integrated client for access to remote resources |
US20100026608A1 (en) * | 2008-07-30 | 2010-02-04 | Research In Motion Limited | Remote desktop client peephole movement |
US7664993B2 (en) | 2007-02-27 | 2010-02-16 | Microsoft Corporation | Automation of testing in remote sessions |
US20100077019A1 (en) * | 2008-09-22 | 2010-03-25 | Microsoft Corporation | Redirection of multiple remote devices |
US20100082733A1 (en) * | 2008-09-30 | 2010-04-01 | Microsoft Corporation | Extensible remote programmatic access to user interface |
US20100106766A1 (en) * | 2008-10-23 | 2010-04-29 | Canon Kabushiki Kaisha | Remote control of a host computer |
US20100107113A1 (en) * | 2008-10-24 | 2010-04-29 | Andrew Innes | Methods and systems for providing a modifiable machine base image with a personalized desktop environment in a combined computing environment |
US20100125644A1 (en) * | 2008-11-14 | 2010-05-20 | Microsoft Corporation | Managing media content |
US20100131654A1 (en) * | 2008-11-25 | 2010-05-27 | Microsoft Corporation | Platform for enabling terminal services virtualization |
US20100141650A1 (en) * | 2008-12-08 | 2010-06-10 | Microsoft Corporation | Command remoting techniques |
US20100146127A1 (en) * | 2008-12-09 | 2010-06-10 | Microsoft Corporation | User-mode based remote desktop protocol (rdp) encoding architecture |
US20100153553A1 (en) * | 2008-12-11 | 2010-06-17 | Qualcomm Incorporated | Dynamic resource sharing among multiple wireless devices |
WO2010114512A1 (en) * | 2009-03-30 | 2010-10-07 | Displaylink Corporation | System and method of transmitting display data to a remote display |
US20100306813A1 (en) * | 2009-06-01 | 2010-12-02 | David Perry | Qualified Video Delivery |
WO2010141492A1 (en) * | 2009-06-01 | 2010-12-09 | Andrew Buchanan Gault | Game execution environments |
US20110002255A1 (en) * | 2009-07-02 | 2011-01-06 | Qualcomm Incorporated | System and method for avoiding and resolving conflicts in a wireless mobile display digital interface multicast environment |
US20110099497A1 (en) * | 2008-06-04 | 2011-04-28 | Nec Corporation | Method for enabling a mobile user equipment to drag and drop data objects between distributed applications |
US7937452B2 (en) | 2008-02-19 | 2011-05-03 | Microsoft Corporation | Framework for rendering plug-ins in remote access services |
US20110145879A1 (en) * | 2009-12-14 | 2011-06-16 | Qualcomm Incorporated | Decomposed multi-stream (dms) techniques for video display systems |
US20110150433A1 (en) * | 2009-12-22 | 2011-06-23 | Albert Alexandrov | Systems and methods for video-aware screen capture and compression |
US20110216829A1 (en) * | 2010-03-02 | 2011-09-08 | Qualcomm Incorporated | Enabling delta compression and modification of motion estimation and metadata for rendering images to a remote display |
US20110219122A1 (en) * | 2010-03-08 | 2011-09-08 | Microsoft Corpoation | Remote content classification and transmission using multiple transport channels |
US20110227935A1 (en) * | 2007-05-31 | 2011-09-22 | Microsoft Corpoartion | Bitmap Transfer-Based Display Remoting |
US8147339B1 (en) | 2007-12-15 | 2012-04-03 | Gaikai Inc. | Systems and methods of serving game video |
US20120151008A1 (en) * | 2010-12-14 | 2012-06-14 | Microsoft Corporation | Real-Time Media Optimization Over Remoted Sessions |
US8203566B2 (en) | 2009-05-29 | 2012-06-19 | Microsoft Corporation | Fixed function pipeline application remoting through a shader pipeline conversion layer |
EP2484091A2 (en) * | 2009-09-29 | 2012-08-08 | Net Power And Light, Inc. | Method and system for low-latency transfer protocol |
US20120311457A1 (en) * | 2011-06-06 | 2012-12-06 | Cisco Technology, Inc. | Merging Remote and Local Interfaces for Application Integration |
US20120317301A1 (en) * | 2011-06-08 | 2012-12-13 | Hon Hai Precision Industry Co., Ltd. | System and method for transmitting streaming media based on desktop sharing |
WO2012170118A1 (en) * | 2011-06-08 | 2012-12-13 | Cisco Technology, Inc. | Virtual meeting video sharing |
US8375304B2 (en) | 2006-11-01 | 2013-02-12 | Skyfire Labs, Inc. | Maintaining state of a web page |
WO2012170237A3 (en) * | 2011-06-10 | 2013-02-21 | Microsoft Corporation | Web-browser based desktop and application remoting solution |
WO2013043420A1 (en) | 2011-09-20 | 2013-03-28 | Microsoft Corporation | Low-complexity remote presentation session encoder |
US8433747B2 (en) | 2008-02-01 | 2013-04-30 | Microsoft Corporation | Graphics remoting architecture |
US20130151351A1 (en) * | 2006-11-21 | 2013-06-13 | Daniel E. Tsai | Ad-hoc web content player |
US8560331B1 (en) | 2010-08-02 | 2013-10-15 | Sony Computer Entertainment America Llc | Audio acceleration |
US8613673B2 (en) | 2008-12-15 | 2013-12-24 | Sony Computer Entertainment America Llc | Intelligent game loading |
US20140026063A1 (en) * | 2008-08-20 | 2014-01-23 | Red Hat, Inc. | Full-screen heterogeneous desktop display and control |
US8648858B1 (en) | 2009-03-25 | 2014-02-11 | Skyfire Labs, Inc. | Hybrid text and image based encoding |
US20140075377A1 (en) * | 2012-09-10 | 2014-03-13 | Samsung Electronics Co. Ltd. | Method for connecting mobile terminal and external display and apparatus implementing the same |
US8674957B2 (en) | 2011-02-04 | 2014-03-18 | Qualcomm Incorporated | User input device for wireless back channel |
US8683062B2 (en) | 2008-02-28 | 2014-03-25 | Microsoft Corporation | Centralized publishing of network resources |
WO2014113684A1 (en) | 2013-01-17 | 2014-07-24 | Futurewei Technologies, Inc. | System, apparatus and method for sharing a screen having multiple visual components |
US20140244787A1 (en) * | 2013-02-23 | 2014-08-28 | Wistron Corporation | Digital signage playback system, monitoring system, and monitoring method thereof |
CN104040946A (en) * | 2011-11-23 | 2014-09-10 | 卡尔加里科学公司 | Methods and systems for collaborative remote application sharing and conferencing |
US8840476B2 (en) | 2008-12-15 | 2014-09-23 | Sony Computer Entertainment America Llc | Dual-mode program execution |
US8888592B1 (en) | 2009-06-01 | 2014-11-18 | Sony Computer Entertainment America Llc | Voice overlay |
US8926435B2 (en) | 2008-12-15 | 2015-01-06 | Sony Computer Entertainment America Llc | Dual-mode program execution |
US8964783B2 (en) | 2011-01-21 | 2015-02-24 | Qualcomm Incorporated | User input back channel for wireless displays |
US8968087B1 (en) | 2009-06-01 | 2015-03-03 | Sony Computer Entertainment America Llc | Video game overlay |
US9065876B2 (en) | 2011-01-21 | 2015-06-23 | Qualcomm Incorporated | User input back channel from a wireless sink device to a wireless source device for multi-touch gesture wireless displays |
EP2513807A4 (en) * | 2009-12-18 | 2015-12-09 | Microsoft Technology Licensing Llc | Offloading content retrieval and decoding in pluggable content-handling systems |
US20150365500A1 (en) * | 2013-01-31 | 2015-12-17 | Hewlett-Packard Development Company, L.P. | Remote client application |
EP2946554A4 (en) * | 2013-01-17 | 2015-12-30 | Huawei Tech Co Ltd | SYSTEM, APPARATUS AND METHOD FOR SHARING A SCREEN HAVING MULTIPLE VISUAL COMPONENTS |
US9247260B1 (en) | 2006-11-01 | 2016-01-26 | Opera Software Ireland Limited | Hybrid bitmap-mode encoding |
US9413803B2 (en) | 2011-01-21 | 2016-08-09 | Qualcomm Incorporated | User input back channel for wireless displays |
US9503771B2 (en) | 2011-02-04 | 2016-11-22 | Qualcomm Incorporated | Low latency wireless display for graphics |
US20160342313A1 (en) * | 2015-05-20 | 2016-11-24 | Vmware, Inc. | Optimizing window move actions for remoted applications |
EP2996344A4 (en) * | 2013-12-16 | 2016-11-30 | Samsung Electronics Co Ltd | Server apparatus and client apparatus for sharing contents and method for sharing contents |
US9525712B1 (en) * | 2010-07-30 | 2016-12-20 | Western Digital Technologies, Inc. | Dynamic auto-registration and transcoding of media content devices via network attached storage |
US9525998B2 (en) | 2012-01-06 | 2016-12-20 | Qualcomm Incorporated | Wireless display with multiscreen service |
US9565227B1 (en) * | 2014-06-16 | 2017-02-07 | Teradici Corporation | Composition control method for remote application delivery |
US9582272B1 (en) * | 2009-01-26 | 2017-02-28 | Teradici Corporation | Method and system for remote computing session management |
US9582239B2 (en) | 2011-01-21 | 2017-02-28 | Qualcomm Incorporated | User input back channel for wireless displays |
US9787725B2 (en) | 2011-01-21 | 2017-10-10 | Qualcomm Incorporated | User input back channel for wireless displays |
US9878240B2 (en) | 2010-09-13 | 2018-01-30 | Sony Interactive Entertainment America Llc | Add-on management methods |
US10108386B2 (en) | 2011-02-04 | 2018-10-23 | Qualcomm Incorporated | Content provisioning for wireless back channel |
US10135900B2 (en) | 2011-01-21 | 2018-11-20 | Qualcomm Incorporated | User input back channel for wireless displays |
US10284688B2 (en) | 2011-09-30 | 2019-05-07 | Calgary Scientific Inc. | Tiered framework for proving remote access to an application accessible at a uniform resource locator (URL) |
US20190158559A1 (en) * | 2012-02-08 | 2019-05-23 | Vmware, Inc. | Video stream management for remote graphical user interfaces |
US10334042B2 (en) | 2008-11-26 | 2019-06-25 | Calgary Scientific Inc. | Method and system for providing remote access to a state of an application program |
US10410306B1 (en) | 2011-01-04 | 2019-09-10 | Calgary Scientific Inc. | Method and system for providing remote access to data for display on a mobile device |
US20200027470A1 (en) * | 2018-07-20 | 2020-01-23 | Logitech Europe S.A. | Content streaming apparatus and method |
US10564829B2 (en) | 2016-03-25 | 2020-02-18 | Vmware, Inc. | Optimizing window resize actions for remoted applications |
US10693940B2 (en) | 2011-08-15 | 2020-06-23 | Calgary Scientific Inc. | Remote access to an application program |
US20200252473A1 (en) * | 2019-02-04 | 2020-08-06 | Dell Products L.P. | Html5 multimedia redirection |
US10904446B1 (en) | 2020-03-30 | 2021-01-26 | Logitech Europe S.A. | Advanced video conferencing systems and methods |
US10951858B1 (en) | 2020-03-30 | 2021-03-16 | Logitech Europe S.A. | Advanced video conferencing systems and methods |
US10965908B1 (en) | 2020-03-30 | 2021-03-30 | Logitech Europe S.A. | Advanced video conferencing systems and methods |
US10972655B1 (en) | 2020-03-30 | 2021-04-06 | Logitech Europe S.A. | Advanced video conferencing systems and methods |
US11038704B2 (en) | 2019-08-16 | 2021-06-15 | Logitech Europe S.A. | Video conference system |
US11088861B2 (en) | 2019-08-16 | 2021-08-10 | Logitech Europe S.A. | Video conference system |
US11095467B2 (en) | 2019-08-16 | 2021-08-17 | Logitech Europe S.A. | Video conference system |
US11258982B2 (en) | 2019-08-16 | 2022-02-22 | Logitech Europe S.A. | Video conference system |
US11418559B2 (en) | 2020-09-21 | 2022-08-16 | Logitech Europe S.A. | Content distribution system |
US11445457B2 (en) | 2020-09-21 | 2022-09-13 | Logitech Europe S.A. | Content distribution system |
EP4250088A4 (en) * | 2020-12-31 | 2024-06-12 | Huawei Technologies Co., Ltd. | Screen projection method and electronic device |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8230096B2 (en) * | 2005-01-14 | 2012-07-24 | Citrix Systems, Inc. | Methods and systems for generating playback instructions for playback of a recorded computer session |
US20080120570A1 (en) * | 2006-11-22 | 2008-05-22 | Bluetie, Inc. | Methods for managing windows within an internet environment and systems thereof |
US7949741B2 (en) * | 2007-02-20 | 2011-05-24 | Microsoft Corporation | Printer user interface redirection over a terminal services session |
US8281377B1 (en) | 2008-04-15 | 2012-10-02 | Desktone, Inc. | Remote access manager for virtual computing services |
JP2010056966A (en) * | 2008-08-28 | 2010-03-11 | Toshiba Corp | Server for transmitting image content, image display device, method of transmitting image content, and method of displaying image |
JP5347441B2 (en) * | 2008-11-10 | 2013-11-20 | 日本電気株式会社 | Moving image processing device |
US8195768B2 (en) * | 2008-12-29 | 2012-06-05 | Apple Inc. | Remote slide presentation |
US9342231B2 (en) * | 2008-12-29 | 2016-05-17 | Apple Inc. | Remote control of a presentation |
US8862766B2 (en) * | 2009-07-24 | 2014-10-14 | Broadcom Corporation | Customized data delivery and network configuration via aggregation of device attributes |
US20110202845A1 (en) * | 2010-02-17 | 2011-08-18 | Anthony Jon Mountjoy | System and method for generating and distributing three dimensional interactive content |
TW201249135A (en) * | 2011-05-30 | 2012-12-01 | Wistron Corp | Remote management method and remote management system |
US9396197B2 (en) | 2011-11-17 | 2016-07-19 | Microsoft Technology Licensing, Llc | Inserting media content from multiple repositories |
US9467305B2 (en) | 2012-03-07 | 2016-10-11 | Vmware, Inc. | Multitenant access to multiple desktops on host machine partitions in a service provider network |
US9253158B2 (en) | 2013-08-23 | 2016-02-02 | Vmware, Inc. | Remote access manager for virtual computing services |
CN111124332B (en) * | 2019-11-18 | 2024-03-01 | 北京小米移动软件有限公司 | Control method, control device and storage medium for device presentation content |
Citations (92)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5140437A (en) * | 1989-04-02 | 1992-08-18 | Sony Corporation | Recording/reproducing compressed data on a rotatable record medium in which at least one intraframe code signal and at least (n-1) interframe code signals are recorded in each track |
US5420801A (en) * | 1992-11-13 | 1995-05-30 | International Business Machines Corporation | System and method for synchronization of multimedia streams |
US5528281A (en) * | 1991-09-27 | 1996-06-18 | Bell Atlantic Network Services | Method and system for accessing multimedia data over public switched telephone network |
US5539886A (en) * | 1992-11-10 | 1996-07-23 | International Business Machines Corp. | Call management in a collaborative working network |
US5546584A (en) * | 1992-07-01 | 1996-08-13 | Lundin; Kenneth | System and method for establishing communication protocols between application programs |
US5574934A (en) * | 1993-11-24 | 1996-11-12 | Intel Corporation | Preemptive priority-based transmission of signals using virtual channels |
US5577258A (en) * | 1994-07-13 | 1996-11-19 | Bell Communications Research, Inc. | Apparatus and method for preprocessing multimedia presentations to generate a delivery schedule |
US5604843A (en) * | 1992-12-23 | 1997-02-18 | Microsoft Corporation | Method and system for interfacing with a computer output device |
US5765011A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
US5764965A (en) * | 1996-09-23 | 1998-06-09 | Silicon Graphics, Inc. | Synchronization infrastructure for use in a computer system |
US5815689A (en) * | 1997-04-04 | 1998-09-29 | Microsoft Corporation | Method and computer program product for synchronizing the processing of multiple data streams and matching disparate processing rates using a standardized clock mechanism |
US5886274A (en) * | 1997-07-11 | 1999-03-23 | Seer Systems, Inc. | System and method for generating, distributing, storing and performing musical work files |
US5887139A (en) * | 1996-08-19 | 1999-03-23 | 3Com Corporation | Configurable graphical user interface useful in managing devices connected to a network |
US5892767A (en) * | 1997-03-11 | 1999-04-06 | Selsius Systems Inc. | Systems and method for multicasting a video stream and communications network employing the same |
US5936643A (en) * | 1993-09-13 | 1999-08-10 | Object Technology Licensing Corp. | Method and apparatus for graphical data |
US5987628A (en) * | 1997-11-26 | 1999-11-16 | Intel Corporation | Method and apparatus for automatically correcting errors detected in a memory subsystem |
US5996015A (en) * | 1997-10-31 | 1999-11-30 | International Business Machines Corporation | Method of delivering seamless and continuous presentation of multimedia data files to a target device by assembling and concatenating multimedia segments in memory |
US5995512A (en) * | 1997-01-17 | 1999-11-30 | Delco Electronics Corporation | High speed multimedia data network |
US6014706A (en) * | 1997-01-30 | 2000-01-11 | Microsoft Corporation | Methods and apparatus for implementing control functions in a streamed video display system |
US6038625A (en) * | 1998-01-06 | 2000-03-14 | Sony Corporation Of Japan | Method and system for providing a device identification mechanism within a consumer audio/video network |
US6044408A (en) * | 1996-04-25 | 2000-03-28 | Microsoft Corporation | Multimedia device interface for retrieving and exploiting software and hardware capabilities |
US6192354B1 (en) * | 1997-03-21 | 2001-02-20 | International Business Machines Corporation | Apparatus and method for optimizing the performance of computer tasks using multiple intelligent agents having varied degrees of domain knowledge |
US6209041B1 (en) * | 1997-04-04 | 2001-03-27 | Microsoft Corporation | Method and computer program product for reducing inter-buffer data transfers between separate processing components |
US6243753B1 (en) * | 1998-06-12 | 2001-06-05 | Microsoft Corporation | Method, system, and computer program product for creating a raw data channel form an integrating component to a series of kernel mode filters |
US6262776B1 (en) * | 1996-12-13 | 2001-07-17 | Microsoft Corporation | System and method for maintaining synchronization between audio and video |
US6263486B1 (en) * | 1996-11-22 | 2001-07-17 | International Business Machines Corp. | Method and system for dynamic connections with intelligent default events and actions in an application development environment |
US6266053B1 (en) * | 1998-04-03 | 2001-07-24 | Synapix, Inc. | Time inheritance scene graph for representation of media content |
US6279029B1 (en) * | 1993-10-12 | 2001-08-21 | Intel Corporation | Server/client architecture and method for multicasting on a computer network |
US20010024455A1 (en) * | 2000-02-18 | 2001-09-27 | Thomas Thaler | Reference time distribution over a network |
US6308216B1 (en) * | 1997-11-14 | 2001-10-23 | International Business Machines Corporation | Service request routing using quality-of-service data and network resource information |
US6317131B2 (en) * | 1997-07-15 | 2001-11-13 | At&T Corp. | Interaction modalities for multimedia delivery and presentation using nodes |
US6321252B1 (en) * | 1998-07-17 | 2001-11-20 | International Business Machines Corporation | System and method for data streaming and synchronization in multimedia groupware applications |
US6343313B1 (en) * | 1996-03-26 | 2002-01-29 | Pixion, Inc. | Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability |
US6347079B1 (en) * | 1998-05-08 | 2002-02-12 | Nortel Networks Limited | Apparatus and methods for path identification in a communication network |
US6369835B1 (en) * | 1999-05-18 | 2002-04-09 | Microsoft Corporation | Method and system for generating a movie file from a slide show presentation |
US20020051017A1 (en) * | 2000-07-13 | 2002-05-02 | Clayton Wishoff | Notification device for a graphical user environment |
US20020099842A1 (en) * | 2001-01-19 | 2002-07-25 | Chuck Jennings | System and method for routing media |
US6430526B1 (en) * | 1998-12-22 | 2002-08-06 | Intel Corporation | Computer processable interconnect topology |
US6466971B1 (en) * | 1998-05-07 | 2002-10-15 | Samsung Electronics Co., Ltd. | Method and system for device to device command and control in a network |
US20020158897A1 (en) * | 2001-04-30 | 2002-10-31 | Besaw Lawrence M. | System for displaying topology map information through the web |
US20030028643A1 (en) * | 2001-03-13 | 2003-02-06 | Dilithium Networks, Inc. | Method and apparatus for transcoding video and speech signals |
US6536043B1 (en) * | 1996-02-14 | 2003-03-18 | Roxio, Inc. | Method and systems for scalable representation of multimedia data for progressive asynchronous transmission |
US20030056029A1 (en) * | 2001-09-19 | 2003-03-20 | Sun Microsystems, Inc. | Method and apparatus for customizing Java API implementations |
US6539163B1 (en) * | 1999-04-16 | 2003-03-25 | Avid Technology, Inc. | Non-linear editing system and method employing reference clips in edit sequences |
US6546426B1 (en) * | 1997-03-21 | 2003-04-08 | International Business Machines Corporation | Method and apparatus for efficiently processing an audio and video data stream |
US20030093568A1 (en) * | 2001-11-14 | 2003-05-15 | Sharp Laboratories Of America, Inc. | Remote desktop protocol compression system |
US20030101253A1 (en) * | 2001-11-29 | 2003-05-29 | Takayuki Saito | Method and system for distributing data in a network |
US6581102B1 (en) * | 1999-05-27 | 2003-06-17 | International Business Machines Corporation | System and method for integrating arbitrary isochronous processing algorithms in general media processing systems |
US20030123659A1 (en) * | 2001-12-28 | 2003-07-03 | Forstrom Howard Scott | Digital multimedia watermarking for source identification |
US6594773B1 (en) * | 1999-11-12 | 2003-07-15 | Microsoft Corporation | Adaptive control of streaming data in a graph |
US6594699B1 (en) * | 1997-10-10 | 2003-07-15 | Kasenna, Inc. | System for capability based multimedia streaming over a network |
US20030149772A1 (en) * | 2002-02-04 | 2003-08-07 | Hsu Raymond T. | Method and apparatus for session release in a communication system |
US20030146915A1 (en) * | 2001-10-12 | 2003-08-07 | Brook John Charles | Interactive animation of sprites in a video production |
US20030158957A1 (en) * | 2002-01-23 | 2003-08-21 | Ali Abdolsalehi | Interactive internet browser based media broadcast |
US6618752B1 (en) * | 2000-04-18 | 2003-09-09 | International Business Machines Corporation | Software and method for multicasting on a network |
US6625643B1 (en) * | 1998-11-13 | 2003-09-23 | Akamai Technologies, Inc. | System and method for resource management on a data network |
US20030215214A1 (en) * | 2002-03-21 | 2003-11-20 | Canon Kabushiki Kaisha | Dual mode timeline interface |
US6658477B1 (en) * | 1999-05-12 | 2003-12-02 | Microsoft Corporation | Improving the control of streaming data through multiple processing modules |
US20030231867A1 (en) * | 2002-06-14 | 2003-12-18 | Gates Matthijs A. | Programmable video recorder having flexiable trick play |
US20030236892A1 (en) * | 2002-05-31 | 2003-12-25 | Stephane Coulombe | System for adaptation of SIP messages based on recipient's terminal capabilities and preferences |
US20040001106A1 (en) * | 2002-06-26 | 2004-01-01 | John Deutscher | System and process for creating an interactive presentation employing multi-media components |
US20040004631A1 (en) * | 2002-06-28 | 2004-01-08 | Kirt Debique | Application programming interface for utilizing multimedia data |
US6687664B1 (en) * | 1999-10-15 | 2004-02-03 | Creative Technology, Ltd. | Audio-visual scrubbing system |
US6691312B1 (en) * | 1999-03-19 | 2004-02-10 | University Of Massachusetts | Multicasting video |
US6694368B1 (en) * | 1999-12-28 | 2004-02-17 | Korea Telecommunication Authority | Communication apparatus and method between distributed objects |
US20040042413A1 (en) * | 2001-07-30 | 2004-03-04 | Harumi Kawamura | Radio communication system, radio communication control apparatus, radio communication control method,recording medium, and computer program |
US6711171B1 (en) * | 1995-11-15 | 2004-03-23 | Enterasys Networks, Inc. | Distributed connection-oriented services for switched communications networks |
US20040073912A1 (en) * | 2000-10-27 | 2004-04-15 | Meza Joseph R. | Automatic embedded host configuration system and method |
US20040073596A1 (en) * | 2002-05-14 | 2004-04-15 | Kloninger John Josef | Enterprise content delivery network having a central controller for coordinating a set of content servers |
US6725274B1 (en) * | 2000-03-29 | 2004-04-20 | Bycast Inc. | Fail-safe system for distributing streaming media having a dynamically reconfigurable hierarchy of ring or mesh topologies |
US6757735B2 (en) * | 2001-07-03 | 2004-06-29 | Hewlett-Packard Development Company, L.P. | Method for distributing multiple description streams on servers in fixed and mobile streaming media systems |
US20040177162A1 (en) * | 2001-06-29 | 2004-09-09 | Wetzel Daniel Thomas | Multi-media jitter removal in an asynchronous digital home network |
US20040208132A1 (en) * | 2003-04-21 | 2004-10-21 | Lucent Technologies Inc. | Wireless media gateway with bearer path control and tone allocation |
US20040207723A1 (en) * | 2003-04-15 | 2004-10-21 | Davis Jeffrey Alan | UI remoting with synchronized out-of-band media |
US20040220926A1 (en) * | 2000-01-03 | 2004-11-04 | Interactual Technologies, Inc., A California Cpr[P | Personalization services for entities from multiple sources |
US20040236945A1 (en) * | 2003-05-21 | 2004-11-25 | Hank Risan | Method and system for controlled media sharing in a network |
US20040268357A1 (en) * | 2003-06-30 | 2004-12-30 | Joy Joseph M. | Network load balancing with session information |
US20040268407A1 (en) * | 2001-09-20 | 2004-12-30 | Sparrell Carlton J | Centralized resource manager |
US20050005025A1 (en) * | 2003-07-04 | 2005-01-06 | Michael Harville | Method for managing a streaming media service |
US20050055517A1 (en) * | 2001-09-14 | 2005-03-10 | Seagate Technology Llc, A Delaware Corporation | Prioritizing commands in a data storage device |
US20050066082A1 (en) * | 1998-09-09 | 2005-03-24 | Microsoft Corporation | Non-blocking concurrent queues with direct node access by threads |
US20050081158A1 (en) * | 2003-10-08 | 2005-04-14 | Samsung Electronics Co., Ltd. | Apparatus and method for remote controlling |
US20050132168A1 (en) * | 2003-12-11 | 2005-06-16 | Microsoft Corporation | Destination application program interfaces |
US6920181B1 (en) * | 2000-09-19 | 2005-07-19 | Todd Porter | Method for synchronizing audio and video streams |
US20050198189A1 (en) * | 2002-03-14 | 2005-09-08 | Citrix Systems, Inc. | Methods and apparatus for generating graphical and media displays at a client |
US20050226324A1 (en) * | 2001-07-31 | 2005-10-13 | He Ouyang | Multiple format video compression |
US20050262254A1 (en) * | 2004-04-20 | 2005-11-24 | Microsoft Corporation | Dynamic redirection of streaming media between computing devices |
US6975752B2 (en) * | 2001-01-31 | 2005-12-13 | General Electric Company | Imaging system including detector framing node |
US7076564B2 (en) * | 2001-09-17 | 2006-07-11 | Micromuse Ltd. | Method and apparatus for determining and resolving missing topology features of a network for improved topology accuracy |
US20070011321A1 (en) * | 2001-07-17 | 2007-01-11 | Huntington Stephen G | Network Data Retrieval and Filter Systems and Methods |
US7330542B2 (en) * | 2000-12-22 | 2008-02-12 | Nokia Corporation | Method and system for establishing a multimedia connection by negotiating capability in an outband control channel |
US7415537B1 (en) * | 2000-04-07 | 2008-08-19 | International Business Machines Corporation | Conversational portal for providing conversational browsing and multimedia broadcast on demand |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5675752A (en) | 1994-09-15 | 1997-10-07 | Sony Corporation | Interactive applications generator for an interactive presentation environment |
US6976266B1 (en) | 1994-12-23 | 2005-12-13 | Thomson Licensing S.A. | Apparatus and method for processing a program guide in a digital video system |
US5786814A (en) | 1995-11-03 | 1998-07-28 | Xerox Corporation | Computer controlled display system activities using correlated graphical and timeline interfaces for controlling replay of temporal data representing collaborative activities |
CA2183280C (en) | 1996-08-14 | 2009-04-14 | Rob Menard | Centralized broadcast channel real-time search system |
US5878431A (en) | 1996-10-04 | 1999-03-02 | Hewlett-Packard Company | Method and apparatus for providing topology based enterprise management services |
US6823225B1 (en) | 1997-02-12 | 2004-11-23 | Im Networks, Inc. | Apparatus for distributing and playing audio information |
JP3063721B2 (en) | 1997-04-30 | 2000-07-12 | 日本電気株式会社 | Topology information exchange device and machine-readable recording medium recording program |
US6178172B1 (en) | 1998-03-24 | 2001-01-23 | 3Com Corporation | Method of topology database synchronization in an asynchronous transfer mode network |
US6549932B1 (en) | 1998-06-03 | 2003-04-15 | International Business Machines Corporation | System, method and computer program product for discovery in a distributed computing environment |
GB2340361B (en) | 1998-07-31 | 2002-11-06 | Sony Uk Ltd | Digital video processing |
US6185612B1 (en) | 1998-10-29 | 2001-02-06 | Novell, Inc. | Secure distribution and use of weighted network topology information |
US7047554B1 (en) | 1998-12-09 | 2006-05-16 | Intel Corporation | System and method for integrating and controlling audio/video devices |
US6820144B2 (en) | 1999-04-06 | 2004-11-16 | Microsoft Corporation | Data format for a streaming information appliance |
EP1065589A1 (en) | 1999-06-28 | 2001-01-03 | Lucent Technologies Inc. | Multimedia processing system architecture |
EP1117240A1 (en) | 2000-01-14 | 2001-07-18 | TRT Lucent Technologies (SA) | Method for resource management of a multimedia platform and a multimedia platform for implementing the same |
US6389467B1 (en) | 2000-01-24 | 2002-05-14 | Friskit, Inc. | Streaming media search and continuous playback system of media resources located by multiple network addresses |
US7725812B1 (en) | 2000-03-31 | 2010-05-25 | Avid Technology, Inc. | Authoring system for combining temporal and nontemporal digital media |
US6802019B1 (en) | 2000-06-15 | 2004-10-05 | Genesys Conferencing, Ltd. | Method and system for synchronizing data |
US7031288B2 (en) | 2000-09-12 | 2006-04-18 | Sri International | Reduced-overhead protocol for discovering new neighbor nodes and detecting the loss of existing neighbor nodes in a network |
US7124424B2 (en) | 2000-11-27 | 2006-10-17 | Sedna Patent Services, Llc | Method and apparatus for providing interactive program guide (IPG) and video-on-demand (VOD) user interfaces |
US7206854B2 (en) | 2000-12-11 | 2007-04-17 | General Instrument Corporation | Seamless arbitrary data insertion for streaming media |
US6968538B2 (en) | 2001-06-01 | 2005-11-22 | Symyx Technologies, Inc. | System and methods for integration of custom classes into pre-existing objects models |
US7024483B2 (en) | 2002-04-29 | 2006-04-04 | Sun Microsystems, Inc. | System and method for topology manager employing finite state automata for dynamic cluster formation |
US7035858B2 (en) | 2002-04-29 | 2006-04-25 | Sun Microsystems, Inc. | System and method dynamic cluster membership in a distributed data system |
US7139925B2 (en) | 2002-04-29 | 2006-11-21 | Sun Microsystems, Inc. | System and method for dynamic cluster adjustment to node failures in a distributed data system |
US7725557B2 (en) | 2002-06-24 | 2010-05-25 | Microsoft Corporation | Client-side caching of streaming media content |
US7240325B2 (en) | 2002-09-11 | 2007-07-03 | International Business Machines Corporation | Methods and apparatus for topology discovery and representation of distributed applications and services |
US7269623B2 (en) | 2003-01-09 | 2007-09-11 | Raytheon Company | System and method for distributed multimodal collaboration using a tuple-space |
US7555540B2 (en) | 2003-06-25 | 2009-06-30 | Microsoft Corporation | Media foundation media processor |
US20040267778A1 (en) | 2003-06-27 | 2004-12-30 | Microsoft Corporation | Media foundation topology application programming interface |
-
2005
- 2005-01-31 US US11/047,362 patent/US7590750B2/en not_active Expired - Fee Related
Patent Citations (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5140437A (en) * | 1989-04-02 | 1992-08-18 | Sony Corporation | Recording/reproducing compressed data on a rotatable record medium in which at least one intraframe code signal and at least (n-1) interframe code signals are recorded in each track |
US5765011A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
US5802283A (en) * | 1991-09-27 | 1998-09-01 | Bell Atlantic Network Services, Inc. | Method and system for accessing multimedia data over public switched telephone network |
US5625404A (en) * | 1991-09-27 | 1997-04-29 | Bell Atlantic Network Services | Method and system for accessing multimedia data over public switched telephone network |
US5528281A (en) * | 1991-09-27 | 1996-06-18 | Bell Atlantic Network Services | Method and system for accessing multimedia data over public switched telephone network |
US5712906A (en) * | 1991-09-27 | 1998-01-27 | Bell Atlantic Network Services | Communications systems supporting shared multimedia session |
US5546584A (en) * | 1992-07-01 | 1996-08-13 | Lundin; Kenneth | System and method for establishing communication protocols between application programs |
US5539886A (en) * | 1992-11-10 | 1996-07-23 | International Business Machines Corp. | Call management in a collaborative working network |
US5420801A (en) * | 1992-11-13 | 1995-05-30 | International Business Machines Corporation | System and method for synchronization of multimedia streams |
US5604843A (en) * | 1992-12-23 | 1997-02-18 | Microsoft Corporation | Method and system for interfacing with a computer output device |
US5936643A (en) * | 1993-09-13 | 1999-08-10 | Object Technology Licensing Corp. | Method and apparatus for graphical data |
US6279029B1 (en) * | 1993-10-12 | 2001-08-21 | Intel Corporation | Server/client architecture and method for multicasting on a computer network |
US5574934A (en) * | 1993-11-24 | 1996-11-12 | Intel Corporation | Preemptive priority-based transmission of signals using virtual channels |
US5577258A (en) * | 1994-07-13 | 1996-11-19 | Bell Communications Research, Inc. | Apparatus and method for preprocessing multimedia presentations to generate a delivery schedule |
US6711171B1 (en) * | 1995-11-15 | 2004-03-23 | Enterasys Networks, Inc. | Distributed connection-oriented services for switched communications networks |
US6536043B1 (en) * | 1996-02-14 | 2003-03-18 | Roxio, Inc. | Method and systems for scalable representation of multimedia data for progressive asynchronous transmission |
US7197535B2 (en) * | 1996-03-26 | 2007-03-27 | Pixion, Inc. | System and method for frame image capture |
US20040080504A1 (en) * | 1996-03-26 | 2004-04-29 | Pixion, Inc. | Real-time, multi-point, multi-speed, multi-stream scalable computer network communications system |
US6343313B1 (en) * | 1996-03-26 | 2002-01-29 | Pixion, Inc. | Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability |
US6044408A (en) * | 1996-04-25 | 2000-03-28 | Microsoft Corporation | Multimedia device interface for retrieving and exploiting software and hardware capabilities |
US5887139A (en) * | 1996-08-19 | 1999-03-23 | 3Com Corporation | Configurable graphical user interface useful in managing devices connected to a network |
US5764965A (en) * | 1996-09-23 | 1998-06-09 | Silicon Graphics, Inc. | Synchronization infrastructure for use in a computer system |
US6263486B1 (en) * | 1996-11-22 | 2001-07-17 | International Business Machines Corp. | Method and system for dynamic connections with intelligent default events and actions in an application development environment |
US6262776B1 (en) * | 1996-12-13 | 2001-07-17 | Microsoft Corporation | System and method for maintaining synchronization between audio and video |
US5995512A (en) * | 1997-01-17 | 1999-11-30 | Delco Electronics Corporation | High speed multimedia data network |
US6014706A (en) * | 1997-01-30 | 2000-01-11 | Microsoft Corporation | Methods and apparatus for implementing control functions in a streamed video display system |
US5892767A (en) * | 1997-03-11 | 1999-04-06 | Selsius Systems Inc. | Systems and method for multicasting a video stream and communications network employing the same |
US6192354B1 (en) * | 1997-03-21 | 2001-02-20 | International Business Machines Corporation | Apparatus and method for optimizing the performance of computer tasks using multiple intelligent agents having varied degrees of domain knowledge |
US6546426B1 (en) * | 1997-03-21 | 2003-04-08 | International Business Machines Corporation | Method and apparatus for efficiently processing an audio and video data stream |
US5815689A (en) * | 1997-04-04 | 1998-09-29 | Microsoft Corporation | Method and computer program product for synchronizing the processing of multiple data streams and matching disparate processing rates using a standardized clock mechanism |
US6209041B1 (en) * | 1997-04-04 | 2001-03-27 | Microsoft Corporation | Method and computer program product for reducing inter-buffer data transfers between separate processing components |
US5886274A (en) * | 1997-07-11 | 1999-03-23 | Seer Systems, Inc. | System and method for generating, distributing, storing and performing musical work files |
US6317131B2 (en) * | 1997-07-15 | 2001-11-13 | At&T Corp. | Interaction modalities for multimedia delivery and presentation using nodes |
US6594699B1 (en) * | 1997-10-10 | 2003-07-15 | Kasenna, Inc. | System for capability based multimedia streaming over a network |
US5996015A (en) * | 1997-10-31 | 1999-11-30 | International Business Machines Corporation | Method of delivering seamless and continuous presentation of multimedia data files to a target device by assembling and concatenating multimedia segments in memory |
US6308216B1 (en) * | 1997-11-14 | 2001-10-23 | International Business Machines Corporation | Service request routing using quality-of-service data and network resource information |
US5987628A (en) * | 1997-11-26 | 1999-11-16 | Intel Corporation | Method and apparatus for automatically correcting errors detected in a memory subsystem |
US6038625A (en) * | 1998-01-06 | 2000-03-14 | Sony Corporation Of Japan | Method and system for providing a device identification mechanism within a consumer audio/video network |
US6266053B1 (en) * | 1998-04-03 | 2001-07-24 | Synapix, Inc. | Time inheritance scene graph for representation of media content |
US6466971B1 (en) * | 1998-05-07 | 2002-10-15 | Samsung Electronics Co., Ltd. | Method and system for device to device command and control in a network |
US6347079B1 (en) * | 1998-05-08 | 2002-02-12 | Nortel Networks Limited | Apparatus and methods for path identification in a communication network |
US6243753B1 (en) * | 1998-06-12 | 2001-06-05 | Microsoft Corporation | Method, system, and computer program product for creating a raw data channel form an integrating component to a series of kernel mode filters |
US6321252B1 (en) * | 1998-07-17 | 2001-11-20 | International Business Machines Corporation | System and method for data streaming and synchronization in multimedia groupware applications |
US20050066082A1 (en) * | 1998-09-09 | 2005-03-24 | Microsoft Corporation | Non-blocking concurrent queues with direct node access by threads |
US6625643B1 (en) * | 1998-11-13 | 2003-09-23 | Akamai Technologies, Inc. | System and method for resource management on a data network |
US6430526B1 (en) * | 1998-12-22 | 2002-08-06 | Intel Corporation | Computer processable interconnect topology |
US6691312B1 (en) * | 1999-03-19 | 2004-02-10 | University Of Massachusetts | Multicasting video |
US6539163B1 (en) * | 1999-04-16 | 2003-03-25 | Avid Technology, Inc. | Non-linear editing system and method employing reference clips in edit sequences |
US6658477B1 (en) * | 1999-05-12 | 2003-12-02 | Microsoft Corporation | Improving the control of streaming data through multiple processing modules |
US6369835B1 (en) * | 1999-05-18 | 2002-04-09 | Microsoft Corporation | Method and system for generating a movie file from a slide show presentation |
US6581102B1 (en) * | 1999-05-27 | 2003-06-17 | International Business Machines Corporation | System and method for integrating arbitrary isochronous processing algorithms in general media processing systems |
US6687664B1 (en) * | 1999-10-15 | 2004-02-03 | Creative Technology, Ltd. | Audio-visual scrubbing system |
US6594773B1 (en) * | 1999-11-12 | 2003-07-15 | Microsoft Corporation | Adaptive control of streaming data in a graph |
US6694368B1 (en) * | 1999-12-28 | 2004-02-17 | Korea Telecommunication Authority | Communication apparatus and method between distributed objects |
US20040220926A1 (en) * | 2000-01-03 | 2004-11-04 | Interactual Technologies, Inc., A California Cpr[P | Personalization services for entities from multiple sources |
US20010024455A1 (en) * | 2000-02-18 | 2001-09-27 | Thomas Thaler | Reference time distribution over a network |
US6725274B1 (en) * | 2000-03-29 | 2004-04-20 | Bycast Inc. | Fail-safe system for distributing streaming media having a dynamically reconfigurable hierarchy of ring or mesh topologies |
US7415537B1 (en) * | 2000-04-07 | 2008-08-19 | International Business Machines Corporation | Conversational portal for providing conversational browsing and multimedia broadcast on demand |
US6618752B1 (en) * | 2000-04-18 | 2003-09-09 | International Business Machines Corporation | Software and method for multicasting on a network |
US20020051017A1 (en) * | 2000-07-13 | 2002-05-02 | Clayton Wishoff | Notification device for a graphical user environment |
US6920181B1 (en) * | 2000-09-19 | 2005-07-19 | Todd Porter | Method for synchronizing audio and video streams |
US20040073912A1 (en) * | 2000-10-27 | 2004-04-15 | Meza Joseph R. | Automatic embedded host configuration system and method |
US7330542B2 (en) * | 2000-12-22 | 2008-02-12 | Nokia Corporation | Method and system for establishing a multimedia connection by negotiating capability in an outband control channel |
US20020099842A1 (en) * | 2001-01-19 | 2002-07-25 | Chuck Jennings | System and method for routing media |
US6975752B2 (en) * | 2001-01-31 | 2005-12-13 | General Electric Company | Imaging system including detector framing node |
US20030028643A1 (en) * | 2001-03-13 | 2003-02-06 | Dilithium Networks, Inc. | Method and apparatus for transcoding video and speech signals |
US20020158897A1 (en) * | 2001-04-30 | 2002-10-31 | Besaw Lawrence M. | System for displaying topology map information through the web |
US20040177162A1 (en) * | 2001-06-29 | 2004-09-09 | Wetzel Daniel Thomas | Multi-media jitter removal in an asynchronous digital home network |
US6757735B2 (en) * | 2001-07-03 | 2004-06-29 | Hewlett-Packard Development Company, L.P. | Method for distributing multiple description streams on servers in fixed and mobile streaming media systems |
US20070011321A1 (en) * | 2001-07-17 | 2007-01-11 | Huntington Stephen G | Network Data Retrieval and Filter Systems and Methods |
US20040042413A1 (en) * | 2001-07-30 | 2004-03-04 | Harumi Kawamura | Radio communication system, radio communication control apparatus, radio communication control method,recording medium, and computer program |
US20050226324A1 (en) * | 2001-07-31 | 2005-10-13 | He Ouyang | Multiple format video compression |
US20050055517A1 (en) * | 2001-09-14 | 2005-03-10 | Seagate Technology Llc, A Delaware Corporation | Prioritizing commands in a data storage device |
US7076564B2 (en) * | 2001-09-17 | 2006-07-11 | Micromuse Ltd. | Method and apparatus for determining and resolving missing topology features of a network for improved topology accuracy |
US20030056029A1 (en) * | 2001-09-19 | 2003-03-20 | Sun Microsystems, Inc. | Method and apparatus for customizing Java API implementations |
US20040268407A1 (en) * | 2001-09-20 | 2004-12-30 | Sparrell Carlton J | Centralized resource manager |
US20030146915A1 (en) * | 2001-10-12 | 2003-08-07 | Brook John Charles | Interactive animation of sprites in a video production |
US20030093568A1 (en) * | 2001-11-14 | 2003-05-15 | Sharp Laboratories Of America, Inc. | Remote desktop protocol compression system |
US20030101253A1 (en) * | 2001-11-29 | 2003-05-29 | Takayuki Saito | Method and system for distributing data in a network |
US20030123659A1 (en) * | 2001-12-28 | 2003-07-03 | Forstrom Howard Scott | Digital multimedia watermarking for source identification |
US20030158957A1 (en) * | 2002-01-23 | 2003-08-21 | Ali Abdolsalehi | Interactive internet browser based media broadcast |
US20030149772A1 (en) * | 2002-02-04 | 2003-08-07 | Hsu Raymond T. | Method and apparatus for session release in a communication system |
US20050198189A1 (en) * | 2002-03-14 | 2005-09-08 | Citrix Systems, Inc. | Methods and apparatus for generating graphical and media displays at a client |
US20030215214A1 (en) * | 2002-03-21 | 2003-11-20 | Canon Kabushiki Kaisha | Dual mode timeline interface |
US20040073596A1 (en) * | 2002-05-14 | 2004-04-15 | Kloninger John Josef | Enterprise content delivery network having a central controller for coordinating a set of content servers |
US20030236892A1 (en) * | 2002-05-31 | 2003-12-25 | Stephane Coulombe | System for adaptation of SIP messages based on recipient's terminal capabilities and preferences |
US20030231867A1 (en) * | 2002-06-14 | 2003-12-18 | Gates Matthijs A. | Programmable video recorder having flexiable trick play |
US20040001106A1 (en) * | 2002-06-26 | 2004-01-01 | John Deutscher | System and process for creating an interactive presentation employing multi-media components |
US20040004631A1 (en) * | 2002-06-28 | 2004-01-08 | Kirt Debique | Application programming interface for utilizing multimedia data |
US7246318B2 (en) * | 2002-06-28 | 2007-07-17 | Microsoft Corporation | Application programming interface for utilizing multimedia data |
US20040207723A1 (en) * | 2003-04-15 | 2004-10-21 | Davis Jeffrey Alan | UI remoting with synchronized out-of-band media |
US20040208132A1 (en) * | 2003-04-21 | 2004-10-21 | Lucent Technologies Inc. | Wireless media gateway with bearer path control and tone allocation |
US20040236945A1 (en) * | 2003-05-21 | 2004-11-25 | Hank Risan | Method and system for controlled media sharing in a network |
US7426637B2 (en) * | 2003-05-21 | 2008-09-16 | Music Public Broadcasting, Inc. | Method and system for controlled media sharing in a network |
US20040268357A1 (en) * | 2003-06-30 | 2004-12-30 | Joy Joseph M. | Network load balancing with session information |
US20050005025A1 (en) * | 2003-07-04 | 2005-01-06 | Michael Harville | Method for managing a streaming media service |
US20050081158A1 (en) * | 2003-10-08 | 2005-04-14 | Samsung Electronics Co., Ltd. | Apparatus and method for remote controlling |
US20050132168A1 (en) * | 2003-12-11 | 2005-06-16 | Microsoft Corporation | Destination application program interfaces |
US20050262254A1 (en) * | 2004-04-20 | 2005-11-24 | Microsoft Corporation | Dynamic redirection of streaming media between computing devices |
Cited By (211)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060103508A1 (en) * | 2004-11-18 | 2006-05-18 | Canon Kabushiki Kaisha | Remote-control system, remote-control apparatus, apparatus to be controlled, remote-control method, computer program, and storage medium |
US8310445B2 (en) * | 2004-11-18 | 2012-11-13 | Canon Kabushiki Kaisha | Remote-control system, remote-control apparatus, apparatus to be controlled, remote-control method, computer program, and storage medium |
US20070136491A1 (en) * | 2005-12-13 | 2007-06-14 | Min Di | Computing system, method and computer readable medium for group interactive multicast using UPnP AV architecture |
US9198084B2 (en) | 2006-05-26 | 2015-11-24 | Qualcomm Incorporated | Wireless architecture for a traditional wire-based protocol |
US20080037506A1 (en) * | 2006-05-26 | 2008-02-14 | Dinesh Dharmaraju | Wireless architecture for a traditional wire-based protocol |
US20080045149A1 (en) * | 2006-05-26 | 2008-02-21 | Dinesh Dharmaraju | Wireless architecture for a traditional wire-based protocol |
US20090210811A1 (en) * | 2006-06-09 | 2009-08-20 | Microsoft Corporation | Dragging and dropping objects between local and remote modules |
US7802195B2 (en) | 2006-06-09 | 2010-09-21 | Microsoft Corporation | Dragging and dropping objects between local and remote modules |
US7844661B2 (en) | 2006-06-15 | 2010-11-30 | Microsoft Corporation | Composition of local media playback with remotely generated user interface |
US20110072081A1 (en) * | 2006-06-15 | 2011-03-24 | Microsoft Corporation | Composition of local media playback with remotely generated user interface |
US20080034029A1 (en) * | 2006-06-15 | 2008-02-07 | Microsoft Corporation | Composition of local media playback with remotely generated user interface |
US8352544B2 (en) | 2006-06-15 | 2013-01-08 | Microsoft Corporation | Composition of local media playback with remotely generated user interface |
US8793303B2 (en) | 2006-06-29 | 2014-07-29 | Microsoft Corporation | Composition of local user interface with remotely generated user interface and media |
WO2008005235A1 (en) * | 2006-06-29 | 2008-01-10 | Microsoft Corporation | Composition of local user interface with remotely generated user interface and media |
US20080104652A1 (en) * | 2006-11-01 | 2008-05-01 | Swenson Erik R | Architecture for delivery of video content responsive to remote interaction |
US9247260B1 (en) | 2006-11-01 | 2016-01-26 | Opera Software Ireland Limited | Hybrid bitmap-mode encoding |
US8711929B2 (en) | 2006-11-01 | 2014-04-29 | Skyfire Labs, Inc. | Network-based dynamic encoding |
US8375304B2 (en) | 2006-11-01 | 2013-02-12 | Skyfire Labs, Inc. | Maintaining state of a web page |
US8443398B2 (en) * | 2006-11-01 | 2013-05-14 | Skyfire Labs, Inc. | Architecture for delivery of video content responsive to remote interaction |
US20080101466A1 (en) * | 2006-11-01 | 2008-05-01 | Swenson Erik R | Network-Based Dynamic Encoding |
US9645700B2 (en) * | 2006-11-21 | 2017-05-09 | Daniel E. Tsai | Ad-hoc web content player |
US20130151351A1 (en) * | 2006-11-21 | 2013-06-13 | Daniel E. Tsai | Ad-hoc web content player |
US9417758B2 (en) | 2006-11-21 | 2016-08-16 | Daniel E. Tsai | AD-HOC web content player |
US20080184128A1 (en) * | 2007-01-25 | 2008-07-31 | Swenson Erik R | Mobile device user interface for remote interaction |
US8630512B2 (en) | 2007-01-25 | 2014-01-14 | Skyfire Labs, Inc. | Dynamic client-server video tiling streaming |
US20080181498A1 (en) * | 2007-01-25 | 2008-07-31 | Swenson Erik R | Dynamic client-server video tiling streaming |
US7664993B2 (en) | 2007-02-27 | 2010-02-16 | Microsoft Corporation | Automation of testing in remote sessions |
US8201218B2 (en) | 2007-02-28 | 2012-06-12 | Microsoft Corporation | Strategies for securely applying connection policies via a gateway |
US20080205270A1 (en) * | 2007-02-28 | 2008-08-28 | Microsoft Corporation | Strategies for Selecting a Format for Data Transmission Based on Measured Bandwidth |
US8139487B2 (en) * | 2007-02-28 | 2012-03-20 | Microsoft Corporation | Strategies for selecting a format for data transmission based on measured bandwidth |
US20080209538A1 (en) * | 2007-02-28 | 2008-08-28 | Microsoft Corporation | Strategies for Securely Applying Connection Policies via a Gateway |
US20080263178A1 (en) * | 2007-04-18 | 2008-10-23 | Alcatel Lucent | Cell phone remote access to personal computer applications |
US8234385B2 (en) * | 2007-05-16 | 2012-07-31 | Microsoft Corporation | Format negotiation for media remoting scenarios |
US10015233B2 (en) | 2007-05-16 | 2018-07-03 | Microsoft Technology Licensing, Llc | Format negotiation for media remoting scenarios |
US20080288519A1 (en) * | 2007-05-16 | 2008-11-20 | Microsoft Corporation | Format Negotiation for Media Remoting Scenarios |
US8140610B2 (en) | 2007-05-31 | 2012-03-20 | Microsoft Corporation | Bitmap-based display remoting |
US8209372B2 (en) | 2007-05-31 | 2012-06-26 | Microsoft Corporation | Bitmap transfer-based display remoting |
US20110227935A1 (en) * | 2007-05-31 | 2011-09-22 | Microsoft Corpoartion | Bitmap Transfer-Based Display Remoting |
US20090006537A1 (en) * | 2007-06-29 | 2009-01-01 | Microsoft Corporation | Virtual Desktop Integration with Terminal Services |
US20090031035A1 (en) * | 2007-07-25 | 2009-01-29 | Qualcomm Incorporated | Wireless architecture for traditional wire based protocol |
US8667144B2 (en) | 2007-07-25 | 2014-03-04 | Qualcomm Incorporated | Wireless architecture for traditional wire based protocol |
US8147339B1 (en) | 2007-12-15 | 2012-04-03 | Gaikai Inc. | Systems and methods of serving game video |
US8433747B2 (en) | 2008-02-01 | 2013-04-30 | Microsoft Corporation | Graphics remoting architecture |
US20090210817A1 (en) * | 2008-02-15 | 2009-08-20 | Microsoft Corporation | Mechanism for increasing remote desktop responsiveness |
US7937452B2 (en) | 2008-02-19 | 2011-05-03 | Microsoft Corporation | Framework for rendering plug-ins in remote access services |
US20090222531A1 (en) * | 2008-02-28 | 2009-09-03 | Microsoft Corporation | XML-based web feed for web access of remote resources |
US8683062B2 (en) | 2008-02-28 | 2014-03-25 | Microsoft Corporation | Centralized publishing of network resources |
US8161160B2 (en) | 2008-02-28 | 2012-04-17 | Microsoft Corporation | XML-based web feed for web access of remote resources |
US20090222739A1 (en) * | 2008-03-03 | 2009-09-03 | Microsoft Corporation | Privacy modes in a remote desktop environment |
US8266637B2 (en) | 2008-03-03 | 2012-09-11 | Microsoft Corporation | Privacy modes in a remote desktop environment |
EP2274682A4 (en) * | 2008-04-01 | 2012-08-22 | Microsoft Corp | METHOD AND SYSTEM FOR MANAGING MULTIMEDIA OPERATIONS IN REMOTE MEETINGS |
RU2504829C2 (en) * | 2008-04-01 | 2014-01-20 | Майкрософт Корпорейшн | Systems and methods for managing multimedia operations in remote sessions |
US20130275495A1 (en) * | 2008-04-01 | 2013-10-17 | Microsoft Corporation | Systems and Methods for Managing Multimedia Operations in Remote Sessions |
US8433812B2 (en) * | 2008-04-01 | 2013-04-30 | Microsoft Corporation | Systems and methods for managing multimedia operations in remote sessions |
KR20110007114A (en) * | 2008-04-01 | 2011-01-21 | 마이크로소프트 코포레이션 | System and method for managing multimedia operations in a remote session |
EP2274682A2 (en) * | 2008-04-01 | 2011-01-19 | Microsoft Corporation | Systems and methods for managing multimedia operations in remote sessions |
US20090248802A1 (en) * | 2008-04-01 | 2009-10-01 | Microsoft Corporation | Systems and Methods for Managing Multimedia Operations in Remote Sessions |
WO2009154816A2 (en) | 2008-04-01 | 2009-12-23 | Microsoft Corporation | Systems and methods for managing multimedia operations in remote sessions |
KR101596530B1 (en) | 2008-04-01 | 2016-02-22 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | Systems and methods for managing multimedia operations in remote sessions |
US20090252130A1 (en) * | 2008-04-04 | 2009-10-08 | Qualcomm Incorporated | Apparatus and methods for establishing client-host associations within a wireless network |
US8811294B2 (en) | 2008-04-04 | 2014-08-19 | Qualcomm Incorporated | Apparatus and methods for establishing client-host associations within a wireless network |
US20110099497A1 (en) * | 2008-06-04 | 2011-04-28 | Nec Corporation | Method for enabling a mobile user equipment to drag and drop data objects between distributed applications |
US8966386B2 (en) * | 2008-06-04 | 2015-02-24 | Lenovo Innovations Limited (Hong Kong) | Method for enabling a mobile user equipment to drag and drop data objects between distributed applications |
US8200896B2 (en) | 2008-06-06 | 2012-06-12 | Microsoft Corporation | Increasing remote desktop performance with video caching |
US20090307428A1 (en) * | 2008-06-06 | 2009-12-10 | Microsoft Corporation | Increasing remote desktop performance with video caching |
US20090327905A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Integrated client for access to remote resources |
US8612862B2 (en) | 2008-06-27 | 2013-12-17 | Microsoft Corporation | Integrated client for access to remote resources |
US20100026608A1 (en) * | 2008-07-30 | 2010-02-04 | Research In Motion Limited | Remote desktop client peephole movement |
US9013369B2 (en) * | 2008-07-30 | 2015-04-21 | Blackberry Limited | Remote desktop client peephole movement |
US20140026063A1 (en) * | 2008-08-20 | 2014-01-23 | Red Hat, Inc. | Full-screen heterogeneous desktop display and control |
US9798448B2 (en) * | 2008-08-20 | 2017-10-24 | Red Hat, Inc. | Full-screen heterogeneous desktop display and control |
US20100077019A1 (en) * | 2008-09-22 | 2010-03-25 | Microsoft Corporation | Redirection of multiple remote devices |
US8645559B2 (en) * | 2008-09-22 | 2014-02-04 | Microsoft Corporation | Redirection of multiple remote devices |
US20100082733A1 (en) * | 2008-09-30 | 2010-04-01 | Microsoft Corporation | Extensible remote programmatic access to user interface |
JP2012506592A (en) * | 2008-10-23 | 2012-03-15 | キヤノン株式会社 | Remote control of host computer |
US20100106766A1 (en) * | 2008-10-23 | 2010-04-29 | Canon Kabushiki Kaisha | Remote control of a host computer |
US20100107113A1 (en) * | 2008-10-24 | 2010-04-29 | Andrew Innes | Methods and systems for providing a modifiable machine base image with a personalized desktop environment in a combined computing environment |
US8140641B2 (en) * | 2008-11-14 | 2012-03-20 | Microsoft Corporation | Managing media synchronization |
US20100125644A1 (en) * | 2008-11-14 | 2010-05-20 | Microsoft Corporation | Managing media content |
US9009329B2 (en) * | 2008-11-25 | 2015-04-14 | Microsoft Technology Licensing, Llc | Platform for enabling terminal services virtualization |
US20100131654A1 (en) * | 2008-11-25 | 2010-05-27 | Microsoft Corporation | Platform for enabling terminal services virtualization |
US10965745B2 (en) | 2008-11-26 | 2021-03-30 | Calgary Scientific Inc. | Method and system for providing remote access to a state of an application program |
US10334042B2 (en) | 2008-11-26 | 2019-06-25 | Calgary Scientific Inc. | Method and system for providing remote access to a state of an application program |
US9639963B2 (en) | 2008-12-08 | 2017-05-02 | Microsoft Technology Licensing, Llc | Command remoting techniques |
US20100141650A1 (en) * | 2008-12-08 | 2010-06-10 | Microsoft Corporation | Command remoting techniques |
US20100146127A1 (en) * | 2008-12-09 | 2010-06-10 | Microsoft Corporation | User-mode based remote desktop protocol (rdp) encoding architecture |
US8180905B2 (en) | 2008-12-09 | 2012-05-15 | Microsoft Corporation | User-mode based remote desktop protocol (RDP) encoding architecture |
WO2010077446A3 (en) * | 2008-12-09 | 2010-08-26 | Microsoft Corporation | User-mode based remote desktop protocol (rdp) encoding architecture |
US20100153553A1 (en) * | 2008-12-11 | 2010-06-17 | Qualcomm Incorporated | Dynamic resource sharing among multiple wireless devices |
US9398089B2 (en) | 2008-12-11 | 2016-07-19 | Qualcomm Incorporated | Dynamic resource sharing among multiple wireless devices |
US8926435B2 (en) | 2008-12-15 | 2015-01-06 | Sony Computer Entertainment America Llc | Dual-mode program execution |
US8840476B2 (en) | 2008-12-15 | 2014-09-23 | Sony Computer Entertainment America Llc | Dual-mode program execution |
US8613673B2 (en) | 2008-12-15 | 2013-12-24 | Sony Computer Entertainment America Llc | Intelligent game loading |
US9582272B1 (en) * | 2009-01-26 | 2017-02-28 | Teradici Corporation | Method and system for remote computing session management |
US8648858B1 (en) | 2009-03-25 | 2014-02-11 | Skyfire Labs, Inc. | Hybrid text and image based encoding |
WO2010114512A1 (en) * | 2009-03-30 | 2010-10-07 | Displaylink Corporation | System and method of transmitting display data to a remote display |
US8203566B2 (en) | 2009-05-29 | 2012-06-19 | Microsoft Corporation | Fixed function pipeline application remoting through a shader pipeline conversion layer |
US20100304860A1 (en) * | 2009-06-01 | 2010-12-02 | Andrew Buchanan Gault | Game Execution Environments |
US9584575B2 (en) | 2009-06-01 | 2017-02-28 | Sony Interactive Entertainment America Llc | Qualified video delivery |
WO2010141492A1 (en) * | 2009-06-01 | 2010-12-09 | Andrew Buchanan Gault | Game execution environments |
US9723319B1 (en) | 2009-06-01 | 2017-08-01 | Sony Interactive Entertainment America Llc | Differentiation for achieving buffered decoding and bufferless decoding |
US8968087B1 (en) | 2009-06-01 | 2015-03-03 | Sony Computer Entertainment America Llc | Video game overlay |
GB2485687A (en) * | 2009-06-01 | 2012-05-23 | Andrew Buchanan Gault | Game execution environments |
US20100306813A1 (en) * | 2009-06-01 | 2010-12-02 | David Perry | Qualified Video Delivery |
GB2485687B (en) * | 2009-06-01 | 2017-11-01 | Sony Computer Entertainment America Llc | Game execution environments |
US8888592B1 (en) | 2009-06-01 | 2014-11-18 | Sony Computer Entertainment America Llc | Voice overlay |
US8506402B2 (en) | 2009-06-01 | 2013-08-13 | Sony Computer Entertainment America Llc | Game execution environments |
US9203685B1 (en) | 2009-06-01 | 2015-12-01 | Sony Computer Entertainment America Llc | Qualified video delivery methods |
US9264248B2 (en) | 2009-07-02 | 2016-02-16 | Qualcomm Incorporated | System and method for avoiding and resolving conflicts in a wireless mobile display digital interface multicast environment |
US20110002255A1 (en) * | 2009-07-02 | 2011-01-06 | Qualcomm Incorporated | System and method for avoiding and resolving conflicts in a wireless mobile display digital interface multicast environment |
EP2484091A2 (en) * | 2009-09-29 | 2012-08-08 | Net Power And Light, Inc. | Method and system for low-latency transfer protocol |
EP2484091A4 (en) * | 2009-09-29 | 2014-02-12 | Net Power & Light Inc | METHOD AND SYSTEM FOR LOW LATENCY TRANSFER PROTOCOL |
CN102656551A (en) * | 2009-12-14 | 2012-09-05 | 高通股份有限公司 | Streaming techniques for video display systems |
US9582238B2 (en) | 2009-12-14 | 2017-02-28 | Qualcomm Incorporated | Decomposed multi-stream (DMS) techniques for video display systems |
KR101523133B1 (en) * | 2009-12-14 | 2015-05-26 | 퀄컴 인코포레이티드 | Streaming techniques for video display systems |
WO2011075468A1 (en) * | 2009-12-14 | 2011-06-23 | Qualcomm Incorporated | Streaming techniques for video display systems |
US20110145879A1 (en) * | 2009-12-14 | 2011-06-16 | Qualcomm Incorporated | Decomposed multi-stream (dms) techniques for video display systems |
EP2513807A4 (en) * | 2009-12-18 | 2015-12-09 | Microsoft Technology Licensing Llc | Offloading content retrieval and decoding in pluggable content-handling systems |
WO2011087716A3 (en) * | 2009-12-22 | 2012-08-16 | Citrix Systems, Inc. | Systems and methods for video-aware screen capture and compression |
US8891939B2 (en) | 2009-12-22 | 2014-11-18 | Citrix Systems, Inc. | Systems and methods for video-aware screen capture and compression |
US20110150433A1 (en) * | 2009-12-22 | 2011-06-23 | Albert Alexandrov | Systems and methods for video-aware screen capture and compression |
US20110216829A1 (en) * | 2010-03-02 | 2011-09-08 | Qualcomm Incorporated | Enabling delta compression and modification of motion estimation and metadata for rendering images to a remote display |
CN102792689A (en) * | 2010-03-02 | 2012-11-21 | 高通股份有限公司 | Enabling delta compression and modification of motion estimation and metadata for rendering images to a remote display |
WO2011109555A1 (en) * | 2010-03-02 | 2011-09-09 | Qualcomm Incorporated | Enabling delta compression and modification of motion estimation and metadata for rendering images to a remote display |
US20110219122A1 (en) * | 2010-03-08 | 2011-09-08 | Microsoft Corpoation | Remote content classification and transmission using multiple transport channels |
US8504694B2 (en) * | 2010-03-08 | 2013-08-06 | Microsoft Corporation | Remote content classification and transmission using multiple transport channels |
CN102196033A (en) * | 2010-03-08 | 2011-09-21 | 微软公司 | Remote content classification and transmission using multiple transport channels |
US9525712B1 (en) * | 2010-07-30 | 2016-12-20 | Western Digital Technologies, Inc. | Dynamic auto-registration and transcoding of media content devices via network attached storage |
US8560331B1 (en) | 2010-08-02 | 2013-10-15 | Sony Computer Entertainment America Llc | Audio acceleration |
US8676591B1 (en) | 2010-08-02 | 2014-03-18 | Sony Computer Entertainment America Llc | Audio deceleration |
US9878240B2 (en) | 2010-09-13 | 2018-01-30 | Sony Interactive Entertainment America Llc | Add-on management methods |
US10039978B2 (en) | 2010-09-13 | 2018-08-07 | Sony Interactive Entertainment America Llc | Add-on management systems |
US9276972B2 (en) * | 2010-12-14 | 2016-03-01 | Microsoft Technology Licensing, Llc | Real-time media optimization over remoted sessions |
US9699225B2 (en) | 2010-12-14 | 2017-07-04 | Microsoft Technology Licensing, Llc | Real-time media optimization over remoted sessions |
US20120151008A1 (en) * | 2010-12-14 | 2012-06-14 | Microsoft Corporation | Real-Time Media Optimization Over Remoted Sessions |
US10410306B1 (en) | 2011-01-04 | 2019-09-10 | Calgary Scientific Inc. | Method and system for providing remote access to data for display on a mobile device |
US9582239B2 (en) | 2011-01-21 | 2017-02-28 | Qualcomm Incorporated | User input back channel for wireless displays |
US10911498B2 (en) | 2011-01-21 | 2021-02-02 | Qualcomm Incorporated | User input back channel for wireless displays |
US10135900B2 (en) | 2011-01-21 | 2018-11-20 | Qualcomm Incorporated | User input back channel for wireless displays |
US10382494B2 (en) | 2011-01-21 | 2019-08-13 | Qualcomm Incorporated | User input back channel for wireless displays |
US9787725B2 (en) | 2011-01-21 | 2017-10-10 | Qualcomm Incorporated | User input back channel for wireless displays |
US9413803B2 (en) | 2011-01-21 | 2016-08-09 | Qualcomm Incorporated | User input back channel for wireless displays |
US9065876B2 (en) | 2011-01-21 | 2015-06-23 | Qualcomm Incorporated | User input back channel from a wireless sink device to a wireless source device for multi-touch gesture wireless displays |
US8964783B2 (en) | 2011-01-21 | 2015-02-24 | Qualcomm Incorporated | User input back channel for wireless displays |
US9503771B2 (en) | 2011-02-04 | 2016-11-22 | Qualcomm Incorporated | Low latency wireless display for graphics |
US9723359B2 (en) | 2011-02-04 | 2017-08-01 | Qualcomm Incorporated | Low latency wireless display for graphics |
US10108386B2 (en) | 2011-02-04 | 2018-10-23 | Qualcomm Incorporated | Content provisioning for wireless back channel |
US8674957B2 (en) | 2011-02-04 | 2014-03-18 | Qualcomm Incorporated | User input device for wireless back channel |
US20120311457A1 (en) * | 2011-06-06 | 2012-12-06 | Cisco Technology, Inc. | Merging Remote and Local Interfaces for Application Integration |
CN103718152A (en) * | 2011-06-08 | 2014-04-09 | 思科技术公司 | Virtual meeting video sharing |
US8621352B2 (en) | 2011-06-08 | 2013-12-31 | Cisco Technology, Inc. | Virtual meeting video sharing |
WO2012170118A1 (en) * | 2011-06-08 | 2012-12-13 | Cisco Technology, Inc. | Virtual meeting video sharing |
US9571534B2 (en) * | 2011-06-08 | 2017-02-14 | Cisco Technology, Inc. | Virtual meeting video sharing |
US20120317301A1 (en) * | 2011-06-08 | 2012-12-13 | Hon Hai Precision Industry Co., Ltd. | System and method for transmitting streaming media based on desktop sharing |
US20140156756A1 (en) * | 2011-06-08 | 2014-06-05 | Cisco Technology, Inc. | Virtual Meeting Video Sharing |
WO2012170237A3 (en) * | 2011-06-10 | 2013-02-21 | Microsoft Corporation | Web-browser based desktop and application remoting solution |
US9167020B2 (en) | 2011-06-10 | 2015-10-20 | Microsoft Technology Licensing, Llc | Web-browser based desktop and application remoting solution |
US10693940B2 (en) | 2011-08-15 | 2020-06-23 | Calgary Scientific Inc. | Remote access to an application program |
WO2013043420A1 (en) | 2011-09-20 | 2013-03-28 | Microsoft Corporation | Low-complexity remote presentation session encoder |
US9712847B2 (en) | 2011-09-20 | 2017-07-18 | Microsoft Technology Licensing, Llc | Low-complexity remote presentation session encoder using subsampling in color conversion space |
EP2759140A4 (en) * | 2011-09-20 | 2015-05-20 | Microsoft Technology Licensing Llc | Low-complexity remote presentation session encoder |
US10904363B2 (en) | 2011-09-30 | 2021-01-26 | Calgary Scientific Inc. | Tiered framework for proving remote access to an application accessible at a uniform resource locator (URL) |
US10284688B2 (en) | 2011-09-30 | 2019-05-07 | Calgary Scientific Inc. | Tiered framework for proving remote access to an application accessible at a uniform resource locator (URL) |
US9648057B2 (en) | 2011-11-23 | 2017-05-09 | Calgary Scientific Inc. | Methods and systems for collaborative remote application sharing and conferencing |
CN104040946A (en) * | 2011-11-23 | 2014-09-10 | 卡尔加里科学公司 | Methods and systems for collaborative remote application sharing and conferencing |
US10454979B2 (en) | 2011-11-23 | 2019-10-22 | Calgary Scientific Inc. | Methods and systems for collaborative remote application sharing and conferencing |
US9525998B2 (en) | 2012-01-06 | 2016-12-20 | Qualcomm Incorporated | Wireless display with multiscreen service |
US20220255979A1 (en) * | 2012-02-08 | 2022-08-11 | Vmware, Inc. | Video stream management for remote graphical user interfaces |
US11343298B2 (en) * | 2012-02-08 | 2022-05-24 | Vmware, Inc. | Video stream management for remote graphical user interfaces |
US11824913B2 (en) * | 2012-02-08 | 2023-11-21 | Vmware, Inc. | Video stream management for remote graphical user interfaces |
US20190158559A1 (en) * | 2012-02-08 | 2019-05-23 | Vmware, Inc. | Video stream management for remote graphical user interfaces |
US20140075377A1 (en) * | 2012-09-10 | 2014-03-13 | Samsung Electronics Co. Ltd. | Method for connecting mobile terminal and external display and apparatus implementing the same |
US11698720B2 (en) | 2012-09-10 | 2023-07-11 | Samsung Electronics Co., Ltd. | Method for connecting mobile terminal and external display and apparatus implementing the same |
JP2016508679A (en) * | 2013-01-17 | 2016-03-22 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | System, apparatus, and method for sharing a screen having multiple visual components |
US9860285B2 (en) | 2013-01-17 | 2018-01-02 | Futurewei Technologies, Inc. | System, apparatus, and method for sharing a screen having multiple visual components |
WO2014113684A1 (en) | 2013-01-17 | 2014-07-24 | Futurewei Technologies, Inc. | System, apparatus and method for sharing a screen having multiple visual components |
KR20150110595A (en) * | 2013-01-17 | 2015-10-02 | 후아웨이 테크놀러지 컴퍼니 리미티드 | System, apparatus and method for sharing a screen having multiple visual components |
KR101698951B1 (en) * | 2013-01-17 | 2017-01-23 | 후아웨이 테크놀러지 컴퍼니 리미티드 | System, apparatus and method for sharing a screen having multiple visual components |
EP2946554A4 (en) * | 2013-01-17 | 2015-12-30 | Huawei Tech Co Ltd | SYSTEM, APPARATUS AND METHOD FOR SHARING A SCREEN HAVING MULTIPLE VISUAL COMPONENTS |
US20150365500A1 (en) * | 2013-01-31 | 2015-12-17 | Hewlett-Packard Development Company, L.P. | Remote client application |
US20140244787A1 (en) * | 2013-02-23 | 2014-08-28 | Wistron Corporation | Digital signage playback system, monitoring system, and monitoring method thereof |
US9497237B2 (en) * | 2013-02-23 | 2016-11-15 | Wistron Corporation | Digital signage playback system, monitoring system, and monitoring method thereof |
EP2996344A4 (en) * | 2013-12-16 | 2016-11-30 | Samsung Electronics Co Ltd | Server apparatus and client apparatus for sharing contents and method for sharing contents |
US10028002B2 (en) | 2013-12-16 | 2018-07-17 | Samsung Electronics Co., Ltd. | Server device for sharing contents, client device, and method for sharing contents |
US10019213B1 (en) * | 2014-06-16 | 2018-07-10 | Teradici Corporation | Composition control method for remote application delivery |
US9565227B1 (en) * | 2014-06-16 | 2017-02-07 | Teradici Corporation | Composition control method for remote application delivery |
US20160342313A1 (en) * | 2015-05-20 | 2016-11-24 | Vmware, Inc. | Optimizing window move actions for remoted applications |
US10579241B2 (en) | 2015-05-20 | 2020-03-03 | Vmware, Inc. | Optimizing window move actions for remoted applications |
US10082941B2 (en) * | 2015-05-20 | 2018-09-25 | Vmware, Inc. | Optimizing window move actions for remoted applications |
US10990259B2 (en) | 2015-05-20 | 2021-04-27 | Vmware, Inc. | Optimizing window move actions for remoted applications |
US10564829B2 (en) | 2016-03-25 | 2020-02-18 | Vmware, Inc. | Optimizing window resize actions for remoted applications |
US11467717B2 (en) | 2016-03-25 | 2022-10-11 | Vmware, Inc. | Optimizing window resize actions for remoted applications |
US10789038B2 (en) | 2018-07-20 | 2020-09-29 | Logitech Europe S.A. | Content streaming apparatus and method |
US20200027470A1 (en) * | 2018-07-20 | 2020-01-23 | Logitech Europe S.A. | Content streaming apparatus and method |
US10642573B2 (en) * | 2018-07-20 | 2020-05-05 | Logitech Europe S.A. | Content streaming apparatus and method |
US10606551B2 (en) * | 2018-07-20 | 2020-03-31 | Logitech Europe S.A. | Content streaming apparatus and method |
US10819817B2 (en) * | 2019-02-04 | 2020-10-27 | Dell Products L.P. | HTML5 multimedia redirection |
US20200252473A1 (en) * | 2019-02-04 | 2020-08-06 | Dell Products L.P. | Html5 multimedia redirection |
US11038704B2 (en) | 2019-08-16 | 2021-06-15 | Logitech Europe S.A. | Video conference system |
US11095467B2 (en) | 2019-08-16 | 2021-08-17 | Logitech Europe S.A. | Video conference system |
US11258982B2 (en) | 2019-08-16 | 2022-02-22 | Logitech Europe S.A. | Video conference system |
US11088861B2 (en) | 2019-08-16 | 2021-08-10 | Logitech Europe S.A. | Video conference system |
US11336817B2 (en) | 2020-03-30 | 2022-05-17 | Logitech Europe S.A. | Advanced video conferencing systems and methods |
US10972655B1 (en) | 2020-03-30 | 2021-04-06 | Logitech Europe S.A. | Advanced video conferencing systems and methods |
US10965908B1 (en) | 2020-03-30 | 2021-03-30 | Logitech Europe S.A. | Advanced video conferencing systems and methods |
US10951858B1 (en) | 2020-03-30 | 2021-03-16 | Logitech Europe S.A. | Advanced video conferencing systems and methods |
US11800213B2 (en) | 2020-03-30 | 2023-10-24 | Logitech Europe S.A. | Advanced video conferencing systems and methods |
US10904446B1 (en) | 2020-03-30 | 2021-01-26 | Logitech Europe S.A. | Advanced video conferencing systems and methods |
US11418559B2 (en) | 2020-09-21 | 2022-08-16 | Logitech Europe S.A. | Content distribution system |
US11445457B2 (en) | 2020-09-21 | 2022-09-13 | Logitech Europe S.A. | Content distribution system |
EP4250088A4 (en) * | 2020-12-31 | 2024-06-12 | Huawei Technologies Co., Ltd. | Screen projection method and electronic device |
Also Published As
Publication number | Publication date |
---|---|
US7590750B2 (en) | 2009-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7590750B2 (en) | Systems and methods for multimedia remoting over terminal server connections | |
US8433812B2 (en) | Systems and methods for managing multimedia operations in remote sessions | |
US10721282B2 (en) | Media acceleration for virtual computing services | |
US6185602B1 (en) | Multi-user interaction of multimedia communication | |
US10178160B2 (en) | Virtual application execution system and method | |
EP1695256B1 (en) | Synchronized graphic and region data for graphics remoting systems | |
KR101490548B1 (en) | Realtime kernel | |
EP2419833B1 (en) | Virtual desktop services | |
US8463912B2 (en) | Remote displays in mobile communication networks | |
US20040103438A1 (en) | Methods and systems for transferring events including multimedia data | |
US20090183085A1 (en) | Method and system for optimizing bandwidth usage in remote visualization | |
US8127036B2 (en) | Remote session media data flow and playback | |
US20090210482A1 (en) | Framework for Rendering Plug-ins in Remote Access Services | |
AU2011200152A1 (en) | Virtual user interface | |
KR20080055798A (en) | Method for filtering obscured data from remote client display | |
US8825737B2 (en) | Per-application remote volume control | |
KR20010028861A (en) | System and Method for Web Cataloging Dynamic Multimedia Using Java | |
US7711840B2 (en) | Protocol for remote visual composition | |
US20210154576A1 (en) | Vector graphics-based live streaming of video games | |
CN103618968A (en) | Network television playing method and system under cloud environment | |
CN111651422B (en) | Initiating and responding method for on-line multi-file multi-terminal synchronization and interactive system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ABDO, NADIM Y.;SHERWANI, ADIL A.;GRIGOROVITCH, ALEXANDRE V.;AND OTHERS;REEL/FRAME:015961/0725;SIGNING DATES FROM 20050314 TO 20050316 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction | ||
FPAY | Fee payment |
Year of fee payment: 4 |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034543/0001 Effective date: 20141014 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20210915 |