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, each of the key frames representing an entire screen image, each of the delta frames representing image changes relative to a previous frame, the process comprising the steps of:
- receiving a newly arrived packet;
determining whether the newly arrived packet is a key frame; and
if the packet is a key frame;
detecting whether a buffer has reached a predetermined limit and deleting packets in the buffer if the predetermined limit has been reached; and
adding the newly arrived packet to the buffer;
discarding the newly arrived packet if the packet is a delta frame and if the buffer contents have reached the predetermined limit; and
determining whether the previous packet was discarded, and if so, discarding each newly arrived packet which contains delta frame if until another packet containing key frame arrives.
2 Assignments
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.
56 Citations
17 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, each of the key frames representing an entire screen image, each of the delta frames representing image changes relative to a previous frame, the process comprising the steps of:
-
receiving a newly arrived packet; determining whether the newly arrived packet is a key frame; and
if the packet is a key frame;detecting whether a buffer has reached a predetermined limit and deleting packets in the buffer if the predetermined limit has been reached; and adding the newly arrived packet to the buffer; discarding the newly arrived packet if the packet is a delta frame and if the buffer contents have reached the predetermined limit; and determining whether the previous packet was discarded, and if so, discarding each newly arrived packet which contains delta frame if until another packet containing key frame arrives. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. 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, each of the key frames representing an entire screen image, each of the delta frames representing image changes relative to a previous frame, the process comprising the steps of:
-
receiving a newly arrived packet; determining whether the newly arrived packet is a delta frame, and if so; detecting whether the previous packet was discarded, discarding the newly arrived delta frame if the previous packet was discarded; detecting whether a buffer have reached a predetermined limit; and discarding the newly arrived packet if the buffer has reached the predetermined limit. - View Dependent Claims (9, 10)
-
-
11. 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 packets defining respective key frames and a delta frames, each of the key frames representing an entire screen image, each of the delta frames representing image changes relative to a previous frame; and
for each of the buffers;determining whether the newly arrived packet is a key frame;
if the packet is a key frame;deleting the packets in the buffer if the buffer contents have reached a predetermined limit; adding the key frame to the buffer; forwarding non-deleted packets from the buffer to the corresponding attendee destination; discarding the newly arrived frame if the frame is a delta frame and if the buffer contents have reached the predetermined limit; and determining whether the previous packet was discarded, and if so, discarding each newly arrived delta frame packet if until a new key frame packet arrives. - View Dependent Claims (12, 13, 14, 15)
-
-
16. 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 packets defining respective key frames and a delta frames, each of the key frames representing an entire screen image, each of the delta frames representing image changes relative to a previous frame; and
for each of the buffers;determining whether the newly arrived packet is a key frame;
if the packet is a key frame;deleting the packets in the buffer if the buffer contents have reached a predetermined limit; adding the key frame to the buffer; forwarding non-deleted packets from the buffer to the corresponding attendee destination; and providing at least one buffer at at least one of the attendee computers, the attendee computer performing said receiving, determining, deleting, adding and forwarding steps on the packets prior to the receiving of packets by the server.
-
-
17. A computer-readable medium having computer-executable instructions for performing a process for managing a buffer, the process comprising:
-
receiving packets of a video stream data, the packets defining a plurality of key frames and delta frames, each of the key frames representing an entire screen, each of the delta frames representing image changes relative to a previous frame; 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 deleting packets in the buffer if the predetermined limit has been reached; and adding the key frame to the buffer; discarding each packet not containing a key frame which arrives after the buffer contents have reached said predetermined limit; determining whether the previous packet was discarded; and discarding each packet not containing a key frame which arrives subsequent to a discarded packet until the arrival of a new key frame.
-
Specification