Software applications communicate business information in several formats and channels. One example of a software application for communicating business information is a presentation application. Presentation applications are used to create, edit and present presentation files. Presentation files are usually comprised of a number of slides or images, but may also include audio. Presentation applications can provide a series of slides as a “slideshow” for display on a local computer monitor, projectors connected to the local computer, or some other display device connected to the computer.
Instant messaging applications provide a communication channel for business and personal use. Instant messaging allows two or more users to communicate over the Internet. Once a connection is formed between messaging application users, the users may begin a “chat” session and send text to each other through their messaging applications. More recent messaging applications implement other communication channels as well, such as audio signal and webcam signal channels.
Though instant messaging is useful for instantly exchanging limited formats of information, the options for sharing business information instantly over large geographic instances are limited.
The present technology, roughly described, pertains to providing a presentation as a video stream over a messaging network. The presentation may be a slide show file, a collection of images, or some other file having images which can be navigated by a user. As a user navigates through images, pages or other content of the presentation, the presentation application generates a video feed signal. The video signal includes the user navigation through the presentation and is sent to a messaging application. The messaging application processes the video signal into a video stream that is compatible with the messaging application. The messaging application then broadcasts the video stream over a messaging network during a messaging session. The messaging application may also communicate any audio associated with the presentation over a messaging audio channel, as well as traditional text, a web cam signal, and other data.
In some embodiments, the presentation application generates a series of bitmaps in response to user navigation of a selected presentation file. In this case, a bitmap is generated for each new image or page of the presentation as it is accessed by a user in a presentation application. The bitmaps are then provided to the messaging application. The messaging application generates a video stream from the received bitmaps and sends the video stream to session members over the messaging network.
In some cases, a user who broadcasts a presentation file during a messaging session may also transmit a webcam video signal during the session. When a user webcam signal is broadcast over the messaging session in addition to the generated video stream, the generated video stream may be sent by a messaging application associated with the actual user or a virtual user. When a user's messaging application transmits the generated video, the video may be combined with the user webcam signal and/or other data by the messaging application. When a second instance of the messaging application is used, it is associated with a virtual user and transmits the generated video signal over the messaging session separately.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Technology is disclosed herein wherein a presentation can be broadcast over a messaging network as a video stream. A presenter may access and navigate through pages of a presentation. As the presenter navigates through presentation images, pages or other content of the presentation, the changing images or other content is shown in the video stream broadcast. As a result, a presenter may instantly communicate a presentation to users of the messaging service, without requiring additional servers or other hardware in addition to those included in the messaging network.
The presentation may be a slide show file, a collection of images, or some other file having images which can be navigated by a user. For example, a presentation file may include a number of images. A presenter may “navigate” through the presentation by providing input into a presentation application. In response to the input, the presentation application may display different images of the presentation. As a user navigates through the presentation, the presentation application can generate a video signal. The video signal reflects user navigation through the presentation and is transmitted to a messaging application. The messaging application receives the video signal from the presentation application. The received video signal is derived from presentation data. In this case, the received video signal may be processed to retrieve the images, pages or other content of the presentation as the user navigates the presentation.
The messaging application may process the received video signal, derive a video stream from the video signal, and transmit the video stream to one or more other users. The users receiving the video stream are located at client computers over a messaging network and engaged in a messaging session with the presenter.
The messaging application processes the video signal to convert it into a video stream. The video stream is one that is compatible with the messaging application and may be broadcast during a messaging session. The messaging application then broadcasts the video stream during a messaging session over a messaging network. The messaging application may also communicate any audio associated with the presentation over a messaging audio channel, as well as traditional text, a web cam signal, and other data.
In some embodiments, the presentation application generates one or more bitmaps in response to user (presenter) navigation of a selected presentation file. In this case, a bitmap is generated for each new image or page of the presentation as it is accessed by a user in a presentation application (or in response to any other change in the page of the presentation). The bitmaps are then provided to the messaging application. The messaging application generates a video stream from the received bitmaps and sends the video stream to session members over the messaging network. In generating the video stream, the messaging application may send images over a video channel associated with the messaging session at a particular video channel rate, for example one frame per second. In this case, the broadcast of the dynamic presentation content will be updated at the corresponding video channel rate. If the presentation does not change for a period of time, the presentation application may either send the same image over the video channel or wait until the image changes (e.g., until a new bitmap is received). The receiving messaging applications will either display the last received video frame or each (non-changing) video frame during the period in which the presentation does not change. In either case, the broadcast will appear the same until the next bitmap is received, processed, and corresponding video stream content is broadcast over the messaging network.
In some cases, a messaging application may broadcast a presentation file and a webcam signal during a messaging session. When broadcasting both the webcam signal presentation video stream, the presentation video stream may be sent by a messaging application associated with the actual presenter or a virtual presenter. When a presenter's messaging application transmits the generated video stream, the stream may be combined with the webcam signal by the messaging application.
When the presenter messaging application is not used to transmit the video stream, the video stream can be broadcast by a messaging application associated with a virtual presenter (or virtual user). The virtual user messaging application can run in the background of the client device operating system and transmit the generated video signal over the messaging session. In this case, the virtual user messaging application can have a separate login than that of the presenter, but may be implemented on the same machine as the user messaging application. Using a virtual presenter messaging application to broadcast a presentation allows the presentation to be shared within a messaging session without having to splice, interleave or otherwise combine a video signal associated with the presenter's messaging application (e.g., a web cam) with the presentation video stream. Use of a virtual presenter (or user) messaging application is discussed in more detail below.
In some embodiments, providing a presentation over a messaging network may be implemented using a client based application.
Client device 100 includes messaging application 104, presentation application 102 and presentation file 108. Messaging application 104 may communicate with presentation application 102. Both messaging application 104 and presentation application 102 may access presentation file 108.
Messaging application 104 is a client-based application which accesses a messaging service provided by messaging server 140. A presenter may use messaging application 104 to broadcast a presentation file to other users whom are members of a messaging session along with the presenter. In one embodiment, messaging application 104 may be implemented as “Windows Messenger” or “Microsoft Messenger for Mac”, both by Microsoft Corporation, of Redmond Wash.
Messaging application 104 may include video conversion engine 105 and video generation engine 106. Video conversion engine 105 may generate and/or encode a video stream from one or more received video signals. The video signals may be received from video generation engine 106, presentation application 102, webcam 363 or some other source. In one embodiment, the two or more received video signals are combined into one video stream by embedding a first video signal inside another video signal. In this case, the multiple video signals processed by video conversion engine 105 include a video signal generated from presentation application 102 and a webcam signal from webcam 363.
Video generation engine 106 may optionally be implemented in messaging application 104, as indicated by the dashed lines of engine 106. Video generation engine 106 may generate a video signal in response to user navigation through a presentation. In this case, a user may access, load and navigate through a presentation file using messaging application 104. In some embodiments, a user may access, load and navigate through a presentation file using presentation application 102. Accessing, loading and navigating through a presentation file are discussed in more detail below.
Messaging application 104 also implements messaging interface 109. Messaging interface 109 is an interface for implementing a messaging service. The interface may provide information such as a list of user contacts, online information for each contact, online information for the user, and other information. When a user provides input into the messaging interface to initiate a chat and create a messaging session, a second messaging interface may be provided. The second messaging interface allows the user to instant message with other users, as well as broadcast a presentation during the messaging session. An example of second messaging interface 109 is discussed in more detail below with respect to
Presentation application 102 enables a user to create, edit, manage and present presentation files. For example, presentation application 102 may be a slide show application, picture viewing application, or some other application. In one embodiment, presentation application 102 is implemented as “Microsoft PowerPoint” or “Microsoft PowerPoint for Mac,” both by Microsoft Corporation.
Presentation application 102 includes video generation engine 103. Video generation engine 103 may generate a video signal which captures user navigation through a presentation file. For example, presentation application may load presentation file 108. Once the file is loaded, a user may provide input that the file should be broadcast over a messaging network. After receiving this input, video generation engine will generate a video signal from the presentation image displayed to the user of presentation application 102. Thus, the generated video signal will first show an image of the first page of the presentation. As the user navigates through the presentation by proceeding to different presentation pages, the generated video signal will be updated by presenting those pages as the user selects them. Put another way, the generated video signal provides in video form what the user sees in a display interface of presentation application 102 while the user navigates through the presentation. The generated video signal is then sent from presentation application 102 to messaging application 104.
In some embodiments, the video signal generated by video generation engine 103 may be any video signal that is recognizable by the operating system of the computer on which presentation application 102 is running. In some embodiments, the operating system of the computer may be implemented by “Windows XP,” of Microsoft Corporation. In some embodiments, the operating system may be implemented by “Mac OS X Tiger,” of Apple Computer, Incorporated, of Cupertino, Calif. In some embodiments, other operating systems may be used. The video signal may be transmitted to messaging application 104 from presentation application 102 by inter-application communication channels implemented by the corresponding operating system.
In some embodiments, presentation application 102 can generate and transmit bitmaps to messaging application 104. In this case, as a user navigates between different pages of a presentation, a bitmap is generated each time the presentation display changes. The generated bitmaps are then sent to messaging application 104. Video conversion engine 105 then converts the bitmaps into a video stream compatible for broadcast over the messaging network.
Presentation file 108 may reside in local or remote memory associated with client device 100, and may be accessed by presentation application 102. In some embodiments, presentation file 108 may be accessed by browser application 104, as indicated by the dashed arrow between presentation file 108 and messaging application 104. In any case, presentation file 108 may be implemented as a Microsoft PowerPoint file (a ppt format). Presentation file 108 may include one or more pages of slides, images, audio content, and/or other data associated with a presentation.
Client device 110 includes messaging application 112, which provides messaging interface 113. Similar to messaging application 104, messaging application 112 is a client-based application for providing a messaging service to a user of client device 110. A user of client device 110 may enter a messaging session through messaging application 112 with the presenter using messaging application 104. The user of messaging application 112 may then receive a broadcast of a presentation from the presenter using messaging application 104.
One example of a process for establishing a messaging session using a browser based messaging system such as that of
After the user is logged into the messaging service, the user may initiate a messaging session with one or more other logged in users. To initiate a session, the user may select a contact from contacts listed in messaging interface 109. Upon selecting a contact, a second messaging interface can be provided. An example of the second messaging interface is shown in
In some embodiments, when a user wishes to share a presentation over a messaging network, the presentation is encoded as video and transmitted over the network by a messaging application associated with a virtual user.
Client device 200 includes browser application 204, presentation application 102 and presentation file 108. Presentation application 102 and presentation file 108 are the same as those in
Browser application 204 may provide content pages received from web server 130. The content pages may implement video conversion engine 205, video generation engine 206 and messaging interface 209. Video conversion engine 205 may generate and/or encode a video stream from one or more received video signals. Video generation engine 206 may optionally be implemented in browser application 204, as indicated by the dashed lines of engine 206. Video conversion engine 205 and video generation engine 206 may perform the same functionality as discussed above with respect to video conversion engine 105 and video generation engine 106, respectively, but may be implemented from a browser application. For example, video conversion engine 205 and video generation engine 106 may be implemented using script code or some other code included into a content page.
Messaging interface 209 is an interface for implementing a messaging service. The interface is similar to interface 109 of
Client device 210 is similar to client device 200. In particular, client device 210 includes browser application 112, which provides messaging interface 113. Browser application 112 may retrieve a content page provided by web server 130, in a manner similar to that described above for browser application 204. The content page may include code for providing messaging interface 113. While in a messaging session, a user may send and receive data over the messaging network through browser application 112. The data may be sent and received directly with client device 210 (as indicated by the dashed line between client device 200 and client device 210) or indirectly through web server 130.
Web server 130 implements a web service which may be accessed by browser applications 204 and 112. The web service may provide an instant messaging service. To implement the messaging service, web server 130 may access data from messaging server 140 and provide messaging data and other data to browser applications 204 and 112. Messaging server 140 may store data such as user login data, user account information, user contact lists, and other information associated with providing a messaging service to users.
One example of a process for establishing a messaging session using a browser based messaging system such as that of
After the user is logged into the messaging service, the user may initiate a messaging session with one or more other logged in users. To initiate a session, the user may select a contact from contacts listed in messaging interface 209. Upon selecting a contact, a second messaging interface can be provided. An example of the second messaging interface is shown in
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The invention may also 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 computer storage media including memory storage devices.
With reference to
Computer 310 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 310 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer 310. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
The system memory 330 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 331 and random access memory (RAM) 332. A basic input/output system 333 (BIOS), containing the basic routines that help to transfer information between elements within computer 310, such as during start-up, is typically stored in ROM 331. RAM 332 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 320. By way of example, and not limitation,
The computer 310 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
As mentioned above, camera 363 may provide input into user input interface 360. Camera 363 may be implemented as a digital camera, video camera, web camera or webcam, or other device which captures images and provides data regarding the images. A web camera may be implemented by a device which captures a series of images and provides data associated with those images as a video stream or video signal. The webcam may be compatible with PC, Mac, or Unix based systems, and connect to computing environment 300 through a USB, Firewire, RCA, RJ-45, terminal block, or other connector type.
The camera may capture digital images at a preset interval frame rate or some other frame rate. The video stream from the webcam may be sent via wired or wireless connections to computer 300. Once received, the video stream may be routed and processed by one or more applications stored in memory 330 of the computer. In one embodiment, a video stream captured by a webcam may be routed to a browser application or a client-based messaging application.
The computer 310 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 380. The remote computer 380 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 310, although only a memory storage device 381 has been illustrated in
When used in a LAN networking environment, the computer 310 is connected to the LAN 371 through a network interface or adapter 370. When used in a WAN networking environment, the computer 310 typically includes a modem 372 or other means for establishing communications over the WAN 373, such as the Internet. The modem 372, which may be internal or external, may be connected to the system bus 321 via the user input interface 360, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 310, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
After establishing a messaging session, a presenter may select presentation file 108 to broadcast during the session at step 420. Selecting presentation file 108 to be broadcast may be performed through messaging application 204 or presentation application 102. In one embodiment, messaging application 204 may invoke presentation application 102 for the user. In some cases, a user may separately invoke presentation application 102 in order to select presentation file 108. An embodiment of a process for selecting a presentation file 108 to broadcast is discussed in more detail below with respect to
Presentation application 102 constructs a video signal from presentation file 108 and provides the video signal to messaging application 204 at step 430. In some embodiments, the video signal generated by video generation engine 103 may be any video signal that is compatible with the operating system of the computer on which presentation application 102 is running. The video signal may be transmitted to messaging application 204 from presentation application 102 by inter-application communication channels implemented by the corresponding operating system. Generation of a video signal from presentation file 108 is discussed in more detail below with respect to
Messaging application 204 receives the video signal from presentation application 102 and encodes a video stream from the received signal at step 440. In this embodiment, the video signal generated from presentation file 108 is used for generation of a video stream to send over a messaging session video channel. Encoding the video stream may depend on the video CODEC used by messaging application 204, the protocols used by the video channel used in the messaging session, the number of streams to encode, and other information. For example, messaging application 204 may apply an instant messaging CODEC to the received signal to encode the video stream to broadcast during the messaging session. Examples of a suitable CODEC include H261, H263, H264, RT Video, and other CODECs. Processing the video stream with protocols associated with the messaging video channel may include specifying the CODEC used to encode the video stream, specifying the data type as video, indicating other communication information, and performing other processing. Encoding a video stream from one or more received video signals is discussed in more detail below with respect to
In one embodiment, video generation engine 103 of presentation application 102 may generate a bitmap from presentation file 108. The bitmap may be in one of several types of formats, including .JPG, .TIFF, .JIF, or some other format. In some embodiments, the bitmap may be generated by an image generation engine (not pictured in
After encoding the video stream, messaging application 204 sends the encoded video stream to session members at step 450. The encoded video stream is sent over the messaging network through a video channel associated with the messaging session. In one embodiment, audio data may also be sent. The audio may be sent over an audio channel or as part of the encoded video. Next, session members receive the video stream at their corresponding messaging applications at step 460. In one embodiment, upon receiving the video stream, the video is processed and displayed in a messaging interface associated with the receiving user's messenger application. An example of a messaging interface is discussed below with respect to
Other messaging communication data may be sent between session members at step 470. Other messaging communication data may include text, webcam video data, audio data, files or other data. In some embodiments, the additional messaging data may be sent during, before, or after the video steam is sent. This step is optional, as indicated by the dash line comprised in step 470 in the flowchart of
A determination is made at step 480 as to whether the user navigates through the presentation or the presentation otherwise changes at step 480. If the presentation does not change, the flowchart of
Input is received at presentation application 102 to select and broadcast a presentation file over a messaging network at step 540. In one embodiment, receiving input includes receiving a user selection of presentation file 108. The file may be selected through a presentation application interface provided by presentation application 102.
In some embodiments, messaging application 204 may access the selected presentation file 108. In this case, messaging application 204 may receive input through an interface selecting a shared presentation mode at step 510, provide an interface through which the presentation file 108 may be selected, and receive input to select the particular file at step 540.
A video signal is generated from the pixel values at step 620. In one embodiment, the video signal is in a format which is recognizable by the operating system of the computer. Examples of formats recognizable by a “Windows” operating system include audio video interleave format (avi), windows media format (wmf), motion picture experts group format (mpeg) and other formats.
After constructing the video signal, the video signal is sent to messaging application 204 at step 630. Transmission of the video signal may be performed by presentation application 102 or messaging application 204. In the case of a virtual user, the video signal is sent to messaging application 260 associated with the virtual user. In one embodiment, audio associated with presentation file 108 from which the pixel values are generated is sent to the appropriate messaging application as well.
In some embodiments, bitmaps are generated from the pixel values at step 620. Example formats for the bitmaps may include a .bmp, .tiff, .jif, .jpeg, or other image formats. The generated pixel values are then transmitted to messaging application 204.
Video window 822 provides the encoded video stream sent by a presenter from one messaging application to other session members at other messaging applications. In the embodiment illustrated in
Chat window 824 provides information regarding previous text messages sent and received by a recipient during the messaging session. In particular, a presenter has typed text of “here is my presentation.” In response, the recipient has typed “I have a question about the first slide.” Text entry window 825 allows a user to enter new text to be sent to other users within the session. The text in text entry window 825 reads “my question is . . . ” In addition to text, other instant messaging functions (e.g., audio sharing and file sharing) may be performed while broadcasting the video stream derived from the presentation file and webcam signal.
The foregoing detailed description of the technology herein has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the technology to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. The described embodiments were chosen in order to best explain the principles of the technology and its practical application to thereby enable others skilled in the art to best utilize the technology in various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of the technology be defined by the claims appended hereto.