Systems, methods, and apparatuses for accepting late joiners with screen sharing
First Claim
1. A method comprising:
- receiving, at a server, a key frame from a publishing client sharing its screen, the key frame defining the screen of the publishing client in its entirety at the beginning of a screen sharing session with one or more viewing clients;
transmitting, with the server, the key frame to the one or more viewing clients;
iteratively processing, with the server, each of a plurality of delta frames, wherein the delta frames specify changes to the screen of the publishing client since the key frame or since a previous delta frame and the iterative processing comprises;
(i) maintaining a queue for each of the one or more viewing clients,(ii) receiving each delta frame from the publishing client,(iii) storing either a received delta frame or an aggregated delta frame in each queue,(iv) maintaining an aggregated current key frame that corresponds to the key frame updated with each delta frame received, and(v) sending the delta frames from the queues to each of the one or more viewing clients;
accepting, with the server, a late joiner viewing client for the screen sharing session;
sending, with the server, the aggregated current key frame to the late joiner viewing client; and
sending, with the server, subsequently received delta frames to the one or more viewing clients and to the late joiner viewing client.
1 Assignment
0 Petitions
Accused Products
Abstract
In accordance with disclosed embodiments, there are provided methods, systems, and apparatuses for accepting late joiners with screen sharing including, for example, means for receiving, at a server, a key frame from a publishing client sharing its screen, the key frame defining the screen of the publishing client in its entirety at the beginning of a screen sharing session with one or more viewing clients; transmitting the key frame to the one or more viewing clients; iteratively processing each of a plurality of delta frames from the publishing client specifying changes to the screen of the publishing client, wherein the iterative processing includes: (i) receiving each delta frame, (ii) updating an aggregated current key frame with the delta frame received, and (iii) sending the delta frame to the one or more viewing clients. Such means further include: accepting a late joiner viewing client for the screen sharing session; sending the aggregated current key frame to the late joiner viewing client; and sending subsequently received delta frames to the one or more viewing clients and to the late joiner viewing client. Other related embodiments are disclosed.
137 Citations
22 Claims
-
1. A method comprising:
-
receiving, at a server, a key frame from a publishing client sharing its screen, the key frame defining the screen of the publishing client in its entirety at the beginning of a screen sharing session with one or more viewing clients; transmitting, with the server, the key frame to the one or more viewing clients; iteratively processing, with the server, each of a plurality of delta frames, wherein the delta frames specify changes to the screen of the publishing client since the key frame or since a previous delta frame and the iterative processing comprises; (i) maintaining a queue for each of the one or more viewing clients, (ii) receiving each delta frame from the publishing client, (iii) storing either a received delta frame or an aggregated delta frame in each queue, (iv) maintaining an aggregated current key frame that corresponds to the key frame updated with each delta frame received, and (v) sending the delta frames from the queues to each of the one or more viewing clients; accepting, with the server, a late joiner viewing client for the screen sharing session; sending, with the server, the aggregated current key frame to the late joiner viewing client; and sending, with the server, subsequently received delta frames to the one or more viewing clients and to the late joiner viewing client. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A method at a host organization, the method comprising:
-
establishing a communications interface with a publishing client, the publishing client to share a screen with one or more viewing clients via the host organization; establishing a communications interface with the one or more viewing clients to share the screen from the publishing client; receiving a key frame from the publishing client, the key frame defining the screen of the publishing client in its entirety at time0; transmitting the key frame to the one or more viewing clients; receiving a plurality of delta frames from the publishing client, the plurality of delta frames defining a subset of the screen of the publishing client at time1 through timen; generating an aggregated current key frame at the host organization by updating the key frame with changes specified by the delta frames; sending the plurality of delta frames to the one or more viewing clients to update the screen shared by the publishing client; receiving a new communications interface from a late joiner viewing client, the late joiner viewing client having missed the key frame and one or more of the delta frames; sending the aggregated current key frame to the late joiner viewing client defining the screen of the publishing client in its entirety at timen according to the key frame and all subsequent delta frames; receiving delta frames from the publishing client after timen; aggregating the delta frames to generate an aggregated delta frame; and sending the aggregated delta frame after timen to the one or more viewing clients and to the late joiner viewing client.
-
-
15. Non-transitory computer readable storage media having instructions stored thereon that, when executed by a processor in a server, the instructions cause the server to perform operations comprising:
-
receiving, at a server, a key frame from a publishing client sharing its screen, the key frame defining the screen of the publishing client in its entirety at the beginning of a screen sharing session with one or more viewing clients; transmitting, with the server, the key frame to the one or more viewing clients; iteratively processing, with the server, each of a plurality of delta frames, wherein the delta frames specify changes to the screen of the publishing client since the key frame or since a previous delta frame and the iterative processing comprises; (i) maintaining a queue for each of the one or more viewing clients, (ii) receiving each delta frame from the publishing client, (iii) storing either a received delta frame or an aggregated delta frame in each queue, (iv) maintaining an aggregated current key frame that corresponds to the key frame updated with each delta frame received, and (v) sending the delta frames from the queues to each of the one or more viewing clients; accepting, with the server, a late joiner viewing client for the screen sharing session; sending, with the server, the aggregated current key frame to the late joiner viewing client; and sending, with the server, subsequently received delta frames to the one or more viewing clients and to the late joiner viewing client. - View Dependent Claims (16, 17)
-
-
18. A server comprising:
-
a processor to execute a screen sharing service on behalf of a plurality of clients; a receive interface of the server to receive a key frame from a publishing client sharing its screen with one or more viewing clients via the screen sharing service, the key frame defining the screen of the publishing client in its entirety at the beginning of a screen sharing session; a transmitter to transmit the key frame to the one or more viewing clients; the screen sharing service to iteratively process each of a plurality of delta frames, wherein the delta frames specify changes to the screen of the publishing client since the key frame or since a previous delta frame and the iterative processing comprises; (i) maintaining a queue for each of the one or more viewing clients, (ii) receiving each delta frame from the publishing client, (iii) storing either a received delta frame or an aggregated delta frame in each queue, (iv) maintaining an aggregated current key frame that corresponds to the key frame updated with each delta frame received, and (v) sending the delta frames from the queues to each of the one or more viewing clients; wherein the screen sharing service is to accept a late joiner viewing client for the screen sharing session; the transmitter to send the aggregated current key frame to the late joiner viewing client; and the transmitter to subsequently send received delta frames to the one or more viewing clients and to the late joiner viewing client. - View Dependent Claims (19, 20, 21, 22)
-
Specification