Using double buffering for screen sharing
First Claim
1. A method, comprising:
- receiving, at an intermediate computer, a session request from a host computer to initiate a screen sharing session;
in response to receiving the session request, establishing the requested screen sharing session on the intermediary computer;
receiving an encoded key frame from the host computer;
decoding the encoded key frame and storing the decoded key frame in a first buffer on the intermediary computer;
receiving a differential screen image update from the host computer;
decoding the differential screen image update and applying the decoded differential screen image update to the stored key frame in the first buffer to generate and store a near live host screen image in the first buffer;
receiving a communication from at least one client computer of a plurality of client computers, requesting to join the screen sharing session on the intermediary computer;
for each client computer of the plurality of client computers from whom a session join request is received,transmitting a version of the near live host screen image in the first buffer to the client computer,generating an instance of an encoder in a second buffer on the intermediary computer, andstoring a copy of the transmitted version of the near live host screen image in the second buffer; and
in response to receiving an update request from the at least one client computer, encoding a differential screen image update at the intermediate computer using the instance of the encoder in the second buffer corresponding to the at least one client computer and transmitting the encoded differential screen image update to the at least one client computer, the differential screen image update comprising a difference between the stored copy of the transmitted version of the near live host screen image in the second buffer and a current version of the near live host screen image stored in the first buffer.
2 Assignments
0 Petitions
Accused Products
Abstract
Remote desktop sharing allows a user to access applications and data on a remote computer over a network. An intermediary computer can communicate with a host computer and one or more client computers to facilitate remote desktop sharing. The host can send the intermediary computer an encoded key frame and encoded updates. The intermediary computer can decode the host screen data, and apply subsequent updates to the decoded image so that the intermediary computer has a near live host screen image in a first buffer. A second buffer on the intermediary computer can store an instance of a screen encoder for each client computer that has joined the session and the most current host image that the client computer has. The encoder compares the near live screen image and the stored client computer host image to create an encoded differential screen image update to pass to the client computer.
16 Citations
20 Claims
-
1. A method, comprising:
-
receiving, at an intermediate computer, a session request from a host computer to initiate a screen sharing session; in response to receiving the session request, establishing the requested screen sharing session on the intermediary computer; receiving an encoded key frame from the host computer; decoding the encoded key frame and storing the decoded key frame in a first buffer on the intermediary computer; receiving a differential screen image update from the host computer; decoding the differential screen image update and applying the decoded differential screen image update to the stored key frame in the first buffer to generate and store a near live host screen image in the first buffer; receiving a communication from at least one client computer of a plurality of client computers, requesting to join the screen sharing session on the intermediary computer; for each client computer of the plurality of client computers from whom a session join request is received, transmitting a version of the near live host screen image in the first buffer to the client computer, generating an instance of an encoder in a second buffer on the intermediary computer, and storing a copy of the transmitted version of the near live host screen image in the second buffer; and in response to receiving an update request from the at least one client computer, encoding a differential screen image update at the intermediate computer using the instance of the encoder in the second buffer corresponding to the at least one client computer and transmitting the encoded differential screen image update to the at least one client computer, the differential screen image update comprising a difference between the stored copy of the transmitted version of the near live host screen image in the second buffer and a current version of the near live host screen image stored in the first buffer. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A computer system having at least one processor and a memory containing computer-executable instructions which when executed by the processor, cause the at least one processor to:
-
receive, at an intermediate computer, a session request from a host computer to initiate a screen sharing session; in response to receiving the session request, establish the requested screen sharing session on the intermediary computer; receive an encoded key frame from the host computer; decode the encoded key frame and storing the decoded key frame in a first buffer on the intermediary computer; receive a differential screen image update from the host computer; decode the differential screen image update and applying the decoded differential screen image update to the stored key frame in the first buffer to generate and store a near live host screen image in the first buffer; receive a communication from at least one client computer of a plurality of client computers, requesting to join the screen sharing session on the intermediary computer; for each client computer of the plurality of client computers from whom a session join request is received, transmit a version of the near live host screen image to the client computer, generate an instance of an encoder in a second buffer on the intermediary computer, and store a copy of the transmitted version of the near live host screen image in the second buffer; and in response to receive an update request from the at least one client computer, encode a differential screen image update at the intermediate computer using the instance of the encoder in the second buffer corresponding to the at least one client computer and transmit the encoded differential screen image update to the at least one client computer, the differential screen image update comprising a difference between the stored copy of the transmitted version of the near live host screen image in the second buffer and a current version of the near live host screen image stored in the first buffer. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A method, comprising:
-
receiving, at an intermediate computer, a key frame and a sequence of differential screen image updates from a host computer during a screen sharing session; applying the received differential screen image updates to the key frame to generate versions of a host screen image of the host computer in a first buffer; receiving, at the intermediate computer, a join request from a client computer to join the screen sharing session; in response to receiving the join request, transmitting a version of the host screen image in the first buffer to the client computer, generating and storing an instance of an encoder in a second buffer of the intermediary computer, and storing the transmitted version of the host screen image in the second buffer; receiving, at the intermediate computer, an update request from the client computer; and in response to receiving the update request, encoding a differential screen image update at the intermediate computer using the instance of the encoder in the second buffer and transmitting the encoded differential screen image update to the client computer, the differential screen image update comprising a difference between a current version of the host screen image in the first buffer and the stored version of the host screen image in the second buffer. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
Specification