Intelligent buffering process for network conference video
First Claim
1. An intelligent buffering process to reduce lag in a conference video stream after a data forwarding delay, the stream including a plurality of packets defining either a key frame or a delta frame, the process comprising the steps of:
- providing a plurality of buffers at a conference server, each of the buffers corresponding to a respective attendee destination;
receiving a newly arrived packet;
for each of the plurality of buffers, determining, at a computer, whether the newly arrived packet is a key frame, wherein the key frame contains data to construct an entire frame image; and
if the packet is a key frame;
detecting whether a buffer has reached a predetermined limit and discarding all of a number of currently buffered packets in the buffer if the predetermined limit has been reached; and
adding the newly arrived packet as the only packet in the buffer;
determining that the newly arrived packet is a delta frame;
automatically discarding the delta frame when the buffer contents have reached the predetermined limit;
forwarding at least one packet from the buffer to reduce the buffer contents below the predetermined limit; and
upon forwarding the at least one packet from the buffer to reduce the buffer contents below the predetermined limit, preventing distortion by continuing to discard subsequent consecutively arriving delta frames until a new key frame has been added to the buffer, wherein the new key frame prevents distortion by containing the data to construct an entire frame image, and wherein the delta frames cause the distortion by being encrypted to contain data representing only changes relative to an immediately preceding key frame or delta frame.
1 Assignment
0 Petitions
Accused Products
Abstract
In order to minimize the delay of the video images viewed by a network conference attendee, an intelligent buffering process (IB process) selectively discards video frames from at least one point, and in an embodiment, many network points, such as at “in” and/or “out” buffers of clients, servers, routers, etc. Packets of video frame data arrive at a buffer, which can fill to a predetermined limit if the packets cannot be forwarded due to delays or slow connections. To forward the most current video images, old frames in the buffer are discarded rather than forwarded. In a particular embodiment, when the buffer is full, the next arriving delta frame packet is discarded. To avoid distortion, each subsequent delta frame is discarded until a new key frame eventually arrives. If the buffer is still full when the key frame arrives, the buffer is purged and the new key frame is added.
38 Citations
15 Claims
-
1. An intelligent buffering process to reduce lag in a conference video stream after a data forwarding delay, the stream including a plurality of packets defining either a key frame or a delta frame, the process comprising the steps of:
-
providing a plurality of buffers at a conference server, each of the buffers corresponding to a respective attendee destination; receiving a newly arrived packet; for each of the plurality of buffers, determining, at a computer, whether the newly arrived packet is a key frame, wherein the key frame contains data to construct an entire frame image; and
if the packet is a key frame;detecting whether a buffer has reached a predetermined limit and discarding all of a number of currently buffered packets in the buffer if the predetermined limit has been reached; and adding the newly arrived packet as the only packet in the buffer; determining that the newly arrived packet is a delta frame; automatically discarding the delta frame when the buffer contents have reached the predetermined limit; forwarding at least one packet from the buffer to reduce the buffer contents below the predetermined limit; and upon forwarding the at least one packet from the buffer to reduce the buffer contents below the predetermined limit, preventing distortion by continuing to discard subsequent consecutively arriving delta frames until a new key frame has been added to the buffer, wherein the new key frame prevents distortion by containing the data to construct an entire frame image, and wherein the delta frames cause the distortion by being encrypted to contain data representing only changes relative to an immediately preceding key frame or delta frame. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. An intelligent buffering process to reduce lag in a conference video stream after a data forwarding delay, the stream including a plurality of packets defining either a key frame or a delta frame, the process comprising the steps of:
-
providing a plurality of buffers at a conference server, each of the buffers corresponding to a respective attendee destination; receiving a newly arrived packet; for each of the plurality of buffers, determining, at a computer, whether the newly arrived packet is a delta frame, and if so; detecting whether the previous packet was discarded, and, if so, discarding the newly arrived delta frame if the previous packet was discarded; detecting whether a buffer has reached a predetermined limit; and discarding the newly arrived packet if the buffer has reached the predetermined limit; forwarding at least one packet from the buffer to reduce the buffer below the predetermined limit; and upon forwarding the at least one packet from the buffer to reduce the buffer below the predetermined limit, preventing distortion by continuing to discard subsequent consecutively arriving delta frames until a new key frame has been added to the buffer, wherein the new key frame prevents distortion by containing the data to construct an entire frame image, and wherein the delta frames cause the distortion by being encrypted to contain data representing only changes relative to an immediately preceding key frame or delta frame. - View Dependent Claims (8, 9)
-
-
10. A process for managing a video conference among a plurality of attendee computers, the process comprising:
-
providing a plurality of buffers at a conference server, each of the buffers corresponding to a respective attendee destination; receiving a newly arrived packet of a video stream, the packet defining respective key frames and delta frames, each of the key frames containing data to construct an entire frame image; determining whether the newly arrived packet is a key frame;
if the packet is a key frame;discarding all of a number of currently buffered packets in the buffer if the buffer contents have reached a predetermined limit; adding the key frame as the only packet in the buffer; forwarding non-discarded packets from the buffer to the corresponding attendee destination; determining that the newly arrived packet is a delta frame; automatically discarding the delta frame when the buffer contents have reached the predetermined limit; forwarding at least one packet from the buffer to reduce the buffer contents below the predetermined limit; and upon forwarding the at least one packet from the buffer to reduce the buffer contents below the predetermined limit, preventing distortion by continuing to discard subsequent consecutively arriving delta frames until a new key frame has been added to the buffer, wherein the new key frame prevents distortion by containing the data to construct an entire frame image, and wherein the delta frames cause the distortion by being encrypted to contain data representing only changes relative to an immediately preceding key frame or delta frame. - View Dependent Claims (11, 12, 13, 14)
-
-
15. A non-signal computer-readable medium having computer-executable instructions for performing a process for managing a buffer, the process comprising:
-
providing a plurality of buffers at a conference server, each of the buffers corresponding to a respective attendee destination; receiving packets of a video stream data, the packets defining a plurality of key frames and delta frames, each of the key frames containing data to construct an entire frame image; for each of the plurality of buffers, determining whether a newly arrived packet contains a key frame; and
if the packet is a key frame;detecting whether the buffer contents have reached a predetermined limit and discarding all of a number of currently buffered packets in the buffer if the predetermined limit has been reached; adding the key frame as the only packet in the buffer, determining that the newly arrived packet is a delta frame; automatically discarding the delta frame when the buffer contents have reached the predetermined limit; forwarding at least one packet from the buffer to reduce the buffer contents below the predetermined limit; and upon forwarding the at least one packet from the buffer to reduce the buffer contents below the predetermined limit, preventing distortion by continuing to discard subsequent consecutively arriving delta frames until a new key frame has been added to the buffer, wherein the new key frame prevents distortion by containing the data to construct an entire frame image, and wherein the delta frames cause the distortion by being encrypted to contain data representing only changes relative to an immediately preceding key frame or delta frame.
-
Specification