Reducing videoconferencing bandwidth usage
View Patent ↗Systems and techniques to reduce bandwidth usage of video frames in a videoconferencing system are described. A computing device may receive a first frame of a first video stream from an imaging device and decompose the frame into a plurality of portions. The computing device may select a first portion of the plurality of portions, determine that the first portion matches a sent portion in a sent catalog, determine a first identifier associated with the first portion, and send the first identifier to a server. The computing device may select a second portion of the plurality of portions, determine that the second portion fails to match any of the sent portions in the sent catalog, create and associate a second identifier with the second portion, store the second portion with the second identifier in the sent catalog, and send the second portion to the server.
1. A computer-implemented method, comprising:
receiving, from an imaging device, a first frame of a first video stream;
decomposing the first frame into a plurality of portions;
selecting a first portion of the plurality of portions;
determining that the first portion matches, within a predetermined threshold, a sent portion that is stored in a sent catalog;
determining a first identifier associated with the first portion based at least in part on the sent catalog;
sending the first identifier, instead of the first portion, to a server;
selecting a second portion of the plurality of portions;
determining that the second portion fails to match any sent portions that are stored in the sent catalog;
creating a second identifier based at least in part on using the second portion as input to a hashing function;
sending the second identifier with the second portion to the server;
storing the second identifier and the second portion in the sent catalog;
receiving data from the server;
determining that the data includes a third portion of a second frame of a second video stream and an associated third identifier;
storing the third portion and the associated third identifier in a received portion catalog;
determining that the data includes a frame complete indicator; and
generating the second frame based on the received portion catalog, wherein the second frame includes at least the third portion of the second frame and a fourth portion of a third frame.
2. The computer-implemented method of claim 1 , further comprising:
sending the second portion to the server.
3. The computer-implemented method of claim 2 , further comprising:
associating the second identifier with the second portion.
4. The computer-implemented method of claim 1 , wherein the first video stream is H.264 compliant.
5. The computer-implemented method of claim 4 , further comprising:
determining that the data includes a fourth identifier; and
retrieving a fourth portion associated with the fourth identifier from the received portion catalog.
6. The computer-implemented method of claim 4 , wherein determining that the first portion matches, within the predetermined threshold, the sent portion that is stored in the sent catalog comprises:
comparing the first portion with the sent portion; and
determining that the first portion differs from the sent portion by less than a predetermined number of pixels.
7. The computer-implemented method of claim 4 , further comprising:
determining that the data includes a macro identifier; and
retrieving a plurality of received portions from the received portion catalog based at least in part on the macro identifier.
8. One or more non-transitory computer-readable media storing instructions that are executable by one or more processors to perform operations comprising:
receiving, from an imaging device, a first frame of a first video stream;
selecting a first portion of a plurality of portions of the first frame;
determining that the first portion matches, within a predetermined threshold, a sent portion that is included in a sent catalog;
determining a first identifier associated with the first portion based on the sent catalog;
sending the first identifier, instead of the first portion, to a server;
selecting a second portion of the plurality of portions;
determining that the second portion fails to match any sent portions that are stored in the sent catalog;
creating a second identifier based at least in part on using the second portion as input to a hashing function;
sending the second identifier with the second portion to the server;
storing the second identifier and the second portion in the sent catalog;
receiving data from the server;
determining that the data includes a third portion of a second frame of a second video stream and an associated third identifier;
storing the third portion and the associated third identifier in a received portion catalog;
determining that the data includes a frame complete indicator; and
generating the second frame based on the received portion catalog, wherein the second frame includes at least the third portion of the second frame and a fourth portion of a third frame.
9. The one or more non-transitory computer-readable media of claim 8 , the operations further comprising:
sending the second portion to the server.
10. The one or more non-transitory computer-readable media of claim 9 , the operations further comprising:
associating the second identifier with the second portion.
11. The one or more non-transitory computer-readable media of claim 8 , the operations further comprising:
receiving a selection to display complete frames before generating the second frame.
12. The one or more non-transitory computer-readable media of claim 11 , the operations further comprising:
determining that the data includes a fourth identifier; and
retrieving a fourth portion associated with the fourth identifier from the received portion catalog.
13. The one or more non-transitory computer-readable media of claim 11 , the operations further comprising:
determining that the data includes a macro identifier; and
retrieving a plurality of received portions from the received portion catalog based at least in part on the macro identifier.
14. A computing device, comprising:
one or more processors; and
one or more non-transitory computer-readable media storing instructions that are executable by the one or more processors to perform operations comprising:
receiving, from an imaging device, a first frame of a first video stream;
determining that a first portion of the first frame matches, within a predetermined threshold, a sent portion that is stored in a sent catalog;
determining a first identifier associated with the first portion based on the sent catalog;
sending the first identifier, instead of the first portion, to a server;
selecting a second portion of the first frame;
determining that the second portion fails to match any sent portions that are stored in the sent catalog;
creating a second identifier based at least in part on using the second portion as input to a hashing function;
sending the second identifier with the second portion to the server;
storing the second identifier and the second portion in the sent catalog;
receiving data from the server;
determining that the data includes a third portion of a second frame of a second video stream and an associated third identifier;
storing the third portion and the associated third identifier in a received portion catalog;
determining that the data includes a frame complete indicator; and
generating the second frame based on the received portion catalog, wherein the second frame includes the third portion of the second frame and a fourth portion of a third frame.
15. The computing device of claim 14 , the operations further comprising:
sending the second portion to the server.
16. The computing device of claim 15 , the operations further
associating the second identifier with the second portion.
17. The computing device of claim 14 , wherein determining that the first portion matches, within the predetermined threshold, the sent portion that is stored in the sent catalog comprises:
comparing the first portion with the sent portion; and
determining that the first portion differs from the sent portion by less than a predetermined number of pixels.
18. The computing device of claim 17 , the operations further comprising:
determining that the data includes a fifth identifier; and
retrieving a fifth portion associated with the fifth identifier from the received portion catalog.
19. The computing device of claim 17 , wherein the first video stream has a frame rate of one of fifteen frames per second, thirty frames per second, or sixty frames per second.
20. The computing device of claim 17 , the operations further comprising:
determining that the data includes a macro identifier; and
retrieving a plurality of received portions from the received portion catalog based at least in part on the macro identifier.