Recovering from dropped frames in real-time transmission of video over IP networks
First Claim
1. A computer-implemented method for recovering from a loss of a data packet while transmitting a sequence of video frames to a receiver over a network, the method comprising running computer-executable instructions on a computer to perform the operations of:
- receiving at the computer a notification from the receiver that a data packet has been lost, the notification specifying a sequence number of the lost data packet;
upon receiving the notification, determining from the sequence number of the lost data packet a type of a video frame conveyed by the lost data packet;
determining the sequence number of a last data packet of a most recent key frame of the sequence of video frames transmitted to the receiver;
determining if the video frame conveyed by the lost data packet comprises a B-frame type;
upon determining that the video frame conveyed by the lost data packet comprises the B-frame type, ignoring the notification;
upon determining that the video frame conveyed by the lost data packet does not comprise the B-frame type, determining if the sequence number of the lost data packet is greater than the sequence number of the last data packet of the most recent key frame of the sequence of video frames transmitted to the receiver;
upon determining that the sequence number of the lost data packet is greater than the sequence number of the last data packet of the most recent key frame, generating a new video frame of an SP-frame type and transmitting the new video frame of the SP-frame type from the computer to the receiver;
upon determining that the sequence number of the lost data packet is not greater than the sequence number of the last data packet of the most recent key frame, determining if the video frame conveyed by the lost data packet comprises the P-frame type;
upon determining that the video frame conveyed by the lost data packet comprises the P-frame type, ignoring the notification; and
upon determining that the video frame conveyed by the lost data packet does not comprise the P-frame type, generating a new video frame comprising a frame of an I-frame type or the SP-frame type, and transmitting the new video frame from the computer to the receiver.
2 Assignments
0 Petitions
Accused Products
Abstract
Technologies for recovering from dropped frames in the real-time transmission of video over an IP network are provided. A video streaming module receives a notification from a receiving module that a data packet has been lost. The video streaming module determines, based on the type of video frame conveyed in the lost packet and the timing of the lost packet in relation to the sequence of video frames transmitted to the receiving module, whether or not a replacement video frame should be sent to the receiving module. If the video streaming module determines a replacement video frame is warranted, then the video streaming module instructs a video encoding module to generate a replacement video frame and then transmits the replacement video frame to the receiving module.
19 Citations
20 Claims
-
1. A computer-implemented method for recovering from a loss of a data packet while transmitting a sequence of video frames to a receiver over a network, the method comprising running computer-executable instructions on a computer to perform the operations of:
-
receiving at the computer a notification from the receiver that a data packet has been lost, the notification specifying a sequence number of the lost data packet; upon receiving the notification, determining from the sequence number of the lost data packet a type of a video frame conveyed by the lost data packet; determining the sequence number of a last data packet of a most recent key frame of the sequence of video frames transmitted to the receiver; determining if the video frame conveyed by the lost data packet comprises a B-frame type; upon determining that the video frame conveyed by the lost data packet comprises the B-frame type, ignoring the notification; upon determining that the video frame conveyed by the lost data packet does not comprise the B-frame type, determining if the sequence number of the lost data packet is greater than the sequence number of the last data packet of the most recent key frame of the sequence of video frames transmitted to the receiver; upon determining that the sequence number of the lost data packet is greater than the sequence number of the last data packet of the most recent key frame, generating a new video frame of an SP-frame type and transmitting the new video frame of the SP-frame type from the computer to the receiver; upon determining that the sequence number of the lost data packet is not greater than the sequence number of the last data packet of the most recent key frame, determining if the video frame conveyed by the lost data packet comprises the P-frame type; upon determining that the video frame conveyed by the lost data packet comprises the P-frame type, ignoring the notification; and upon determining that the video frame conveyed by the lost data packet does not comprise the P-frame type, generating a new video frame comprising a frame of an I-frame type or the SP-frame type, and transmitting the new video frame from the computer to the receiver. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A system for recovering from a loss of a data packet in a transmission of a sequence of video frames to a destination computer over a network, the system comprising:
-
a source computer operatively connected to the network; and a video streaming module executing on the source computer and operative to receive a notification from the destination computer that the data packet has been lost, the notification specifying a sequence number of the lost data packet, determine from the sequence number of the lost data packet a type of a video frame conveyed by the lost data packet, determine the sequence number of a last data packet of a most recent key frame of the sequence of video frames transmitted to the destination computer, determine if the video frame conveyed by the lost data packet comprises a B-frame type, upon determining that the video frame conveyed by the lost data packet comprises the B-frame, type ignore the notification, upon determining that the video frame conveyed by the lost data packet does not coin rise the B-frame type, determine if the sequence number of the lost data packet is greater than the sequence number of the last data packet of the most recent key frame of the sequence of video frames transmitted to the destination computer, upon determining that the sequence number of the lost data packet is greater than the sequence number of the last data packet of the most recent key frame, generate a new video frame of an SP-frame type and transmit the new video frame of the SP-frame type to the destination computer, upon determining that the sequence number of the lost data packet is not greater than the sequence number of the last data packet of the most recent key frame, determine if the video frame conveyed by the lost data packet comprises a P-frame type, upon determining that the video frame conveyed by the lost data packet comprises the P-frame type, ignore the notification, and upon determining that the video frame conveyed by the lost data packet does not comprise the P-frame type, generate a new video frame comprising one of a frame of an I-frame type or a frame of the SP-frame type, and transmit the new video frame to the destination computer. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A computer-readable storage medium comprising one of an optical disk, a solid state storage device, or a magnetic storage device, having computer executable instructions stored thereon that, when executed by a computer operatively connected to a network, cause the computer to:
-
receive a notification from a destination computer operatively connected to the network that a data packet of a plurality of data packets conveying a sequence of video frames has been lost, the notification specifying a sequence number of the lost data packet; determine if a video frame conveyed by the lost data packet comprises a B-frame type; upon determining that the video frame conveyed by the lost data packet comprises the B-frame type, ignore the notification; upon determining that the video frame conveyed by the lost data packet is not the B-frame type, determine if the sequence number of the lost data packet is greater than a sequence number of a last data packet of a most recent video frame of an I-frame type or an SP-frame type transmitted to the destination computer; upon determining that the sequence number of the lost data packet is greater than the sequence number of the last data packet of the most recent video frame of the I-frame type or the SP-frame type transmitted to the destination computer, generate a new video frame of the SP-frame type to replace the video frame of the lost data packet and transmit the new video frame of the SP-frame type to the destination computer; upon determining that the sequence number of the lost data packet is not greater than the sequence number of the last data packet of the most recent video frame of the I-frame type or the SP-frame type transmitted to the destination computer, determine if the video frame conveyed by the lost data packet comprises a P-frame type; upon determining that the video frame conveyed by the lost data packet comprises the P-frame type, ignore the notification; and upon determining that the video frame conveyed by the lost data packet does not comprise the P-frame type, generate a new video frame of the I-frame type to replace the video frame of the lost data packet and transmit the new video frame of the I-frame type to the destination computer. - View Dependent Claims (18, 19, 20)
-
Specification