Dynamic reference frame selection for video coding

The video encoder dynamically selects reference frames based on network quality to ensure high-quality real-time video playback in mixed reality devices by minimizing frame loss and latency.

JP2026507402APending Publication Date: 2026-03-04MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025538811
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-02-27
Filing Date
2024-02-20
Publication Date
2026-03-04

AI Technical Summary

Technical Problem

Real-time video transmission in mixed reality devices is challenged by varying network conditions, leading to poor video quality due to dropped frames and the inefficiency of traditional buffering techniques.

Method used

A video encoder dynamically selects a reference frame for encoding P-frames based on network connection quality, using probability thresholds to minimize latency and ensure successful frame transmission.

Benefits of technology

This approach maintains high-quality real-time video playback by reducing the need for large I-frames and minimizing frame loss, even in fluctuating network conditions.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026507402000001_ABST
    Figure 2026507402000001_ABST
Patent Text Reader

Abstract

The computer-implemented method includes obtaining a video frame to be transmitted. The video frame is encoded and transmitted over a network connection. A probability that the last video frame will be or was received is determined. A next frame is encoded and transmitted as a P-frame that identifies a change from a previously transmitted frame. The previously transmitted frame is selected according to the probability that the last transmitted video frame was received.
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] background Modern video coding works by transmitting a series of I and P frames. I frames, also known as intra-coded pictures, are essentially complete images and are therefore minimally compressible. P frames are predicted pictures that encode changes from previous frames, called reference frames. Reference frames can be either I or P frames. To minimize the amount of data transferred over a network connection, it is more efficient to send as many P frames and as few I frames as possible.

[0002] When network connection quality can change rapidly, such as while moving within a cellular network, frames may not be transmitted or received successfully. If the connection is poor and P frames are dropped, the encoder must then send I frames to reset the video stream. Because I frames are much larger, they can consume even more bandwidth than P frames, causing even more dropped frames.

[0003] Typically, to overcome this problem, applications employ buffering techniques. Specifically, an application may send 10 seconds of video frames to the device before starting to play the video. Then, when the connection is poor, the application can resend any P-frames that do not reach the device. This takes additional time, but thanks to the initial buffering stage, it is invisible to the end user. However, if real-time video is desired, buffering is not possible. Summary of the Invention

[0004] overview The computer-implemented method includes obtaining a video frame to be transmitted. The video frame is encoded and transmitted over a network connection. A probability that the last video frame was received is determined. A next frame is encoded and transmitted as a P-frame that identifies a change from a previously transmitted frame. The previously transmitted frame is selected according to the probability that the last transmitted video frame was received. [Brief explanation of the drawings]

[0005] BRIEF DESCRIPTION OF THE DRAWINGS [Figure 1] FIG. 1 is a block diagram illustrating a system for encoding and transmitting video frames with minimal latency despite varying network connection conditions, according to an exemplary embodiment. [Figure 2] FIG. 2 is a graph illustrating a series of video frames over time along with a representation of connection strength or quality, according to an example embodiment. [Figure 3] FIG. 3 is a block diagram generally illustrating two devices for transferring rendered video frames between each other, according to an exemplary embodiment. [Figure 4] FIG. 4 is a flowchart illustrating a computer-implemented method for dynamically selecting reference frames for encoding P frames based on network connection quality, according to an exemplary embodiment. [Figure 5] FIG. 5 is a flowchart illustrating a computer-implemented method for determining the probability that the last transmitted video frame was received, according to an exemplary embodiment. [Figure 6] FIG. 6 is a flowchart of an alternative computer-implemented method for dynamically selecting reference frames for encoding P frames based on network connection quality, according to an exemplary embodiment. [Figure 7] FIG. 7 is a block diagram of a computer system for implementing one or more exemplary embodiments. DETAILED DESCRIPTION OF THE INVENTION

[0006] Detailed Description In the following description, reference is made to the accompanying drawings, which form a part hereof, and in which is shown, by way of illustration, specific embodiments that may be implemented. These embodiments have been described in sufficient detail to enable those skilled in the art to practice the invention, but it should be understood that other embodiments may be utilized and that structural, logical, and electrical changes may be made without departing from the scope of the present invention. Therefore, the following description of exemplary embodiments should not be construed in a limiting sense, and the scope of the present invention is defined by the appended claims. Real-time video rendering and transmission is accomplished using video coding to reduce transmission bandwidth requirements. Modern video coding works by transmitting a series of I-frames and P-frames. I-frames, also known as intra-coded pictures, are essentially complete images and are therefore minimally compressible. P-frames are predicted images that encode changes from a previous frame, called a reference frame. Reference frames can be either I-frames or P-frames. To minimize the amount of data transferred over a network connection, it is more efficient to transmit as many P-frames and as few I-frames as possible.

[0007] While initial buffering and retransmission of P frames works fine for stored video content being viewed, such buffering techniques will not work for real-time video, such as that used in mixed reality devices, which may include graphics and other temporal visual information, which may be in two-dimensional or three-dimensional representations suitable for mixed reality devices.

[0008] Video content can be rendered in cloud-based resources and transmitted to a mixed reality device such as a user headset, where it is important that such video be played back in real time to synchronize with the real-world events being viewed.

[0009] Many mixed reality devices are mobile in nature and utilize wireless communication networks. As a user of a mixed reality device moves, network bandwidth conditions can change. If network bandwidth conditions result in insufficient bandwidth to ensure successful transmission of a frame, the next received frame may be based on a change from the frame that was likely not received. This can result in very poor video quality for the user.

[0010] The improved video encoder acquires network connection quality information while transmitting encoded video frames. The network connection quality information is used to dynamically select a reference frame for encoding the next P frame. Such dynamic selection allows the video encoder to transmit a P frame from the last confirmed received reference frame instead of a previously transmitted frame that was most likely not received.

[0011] The improved encoder can be used in any device or networked computing resource to transmit and receive video for playback or processing in near real time. Near real time means that the delay between transmission and processing or playback of the video must not degrade the user experience. A typical tolerable delay, or latency, in some embodiments is less than one second, while other examples may tolerate delays of 100 msec or less, typically within 40-60 msec.

[0012] 1 is a block diagram illustrating a system 100 for encoding and transmitting video frames with minimal latency despite varying network connection conditions. A video frame 110 is provided to a video encoder 115. The video encoder 115 will begin by encoding an I-frame and then encode a P-frame based on changes from the previous frame. The frames will be transmitted over a network 120 to a decoder 125 for display on a display 130, in one example. The encoder 115 and the decoder 125 are on different systems. Such a system may include both an encoder and a decoder, in one example, for transferring video frames in both directions.

[0013] In one example, a network monitor 135 is coupled to provide an indication of network quality. The indication may be, in one example, an estimate of future network quality or current network quality. In the case of a cellular connection, signal strength may be used as an indication of network quality. In a further example, the probability that a frame has been received may be based on receipt of an acknowledgment of frame reception from a system including the decoder 125. If the acknowledgment of reception is not received within, in one example, 5 msec, it is assumed that the frame was not received, and encoding of the next P frame is performed based on the previously transmitted frame.

[0014] In further examples, the probability that a frame was received may be based on one or more factors, including the factors mentioned above, as well as receiving congestion signaling from a network management system, packet error rate, or buffering occurring due to failed transmissions.

[0015] Historical signal strength may also be used to help predict future signal strength, such as when a user moves further away from a tower or signal beam edge. An indication of network quality indicates whether a frame will be successfully transmitted and received. In one example, the indication may be used to generate a probability of successful reception of a frame.

[0016] The probability, or signal strength, can be compared to a threshold to make a decision.

[0017] Various probability thresholds may be used and may be user-specified or application-specific. For applications where accurate image presentation is desired, for example, in a first-person shooter game, a success probability of 99% or higher may be used. Images used for wandering around as a scenic tourist may be acceptable with a much lower probability, such as 30% or less. Other applications may require a probability between 30% and 99%.

[0018] Based on the determination, the network monitor 135 may provide the encoder 115 with a decision or data on which a decision can be made. The encoder 115 would then determine which previous frame to use as a reference frame for encoding the next P frame, without having to generate and transmit an I frame, which is likely to be much larger. The next P frame would include or be transmitted with information identifying the reference frame to enable the encoder 115 to generate the next video frame for the display 130 using the correct reference frame. In one example, the selected reference frame is the previously transmitted frame that was most likely received. The selected reference frame could be the frame immediately preceding the frame that was likely not received. If several consecutive frames were likely not received, the reference frame could be several frames prior to the current frame to be encoded.

[0019] In one example, connection quality information may be temporally associated with each frame. This may result in a determination that two previously transmitted frames were likely not received. In this case, the next P frame would be encoded using the frame transmitted immediately before the two likely not received frames. If too many frames, such as three or more, are likely not received, the next frame may be encoded as an I-frame to ensure that video viewing quality is not significantly adversely affected. For example, it may be better to send an I-frame when there is a significant change in the visual image, as may occur in a rapidly panning camera or video capture from a sudden scene change or event.

[0020] In further embodiments, the determination may indicate future network quality and may be used to prevent encoding of a next video frame because such next video frame is likely not going to be received. The determination may be used to determine when to send a next P frame, which will then be encoded based on a previously received frame that is likely to be received.

[0021] FIG. 2 is a graph 200 showing a series of video frames over time along with a representation of connection strength or quality. At the top of graph 200, frames 210, 212, 214, 216, 218, 220, and 222 represent video frames to be transmitted. Frame 210 is an I-frame, and frames 212, 214, 216, 218, 220, and 222 are P-frames. At the bottom of graph 200, received frames are shown using the same reference numerals. Connection strength is shown by two lines 230 and 235, representing actual and predicted connection or signal strength, respectively. Both connection strength lines track each other quite closely, and the corresponding reference numerals are shown several times to compensate for the lack of color in lines 230 and 235.

[0022] While the connection strength appears higher, the received frames include frames 210, 212, and 214. The connection strength drops immediately after frame 214, meaning that there is a low probability that frame 216 was successfully transmitted and received, as indicated by the X at 240. Shortly thereafter, the actual connection strength line 230 rises, meaning that frame 218, transmitted at that time, is likely to have been received. Knowing that frame 216 was likely not received, frame 218 is a P-frame that uses frame 214 as a reference frame to encode the difference and transmit frame 214, as indicated by line 245.

[0023] In one example, frame 214 is shown as having been received. However, the predicted connection strength on line 235 is still low at the time frame 218 is transmitted and received. The encoding system may utilize the predicted connection strength and not rely on the fact that frame 218 was received. The encoding system would then encode frame 220 based on frame 214 being transmitted and received with a high probability based on both the actual and predicted connection strength lines 230 and 235. Note that at the time frame 220 is transmitted, both predicted connection strength lines 230 and 235 are in the higher range. Finally, because frame 222 is encoded when both the actual and predicted connection strengths are high, it is encoded based on the previous frame 220, which was encoded and transmitted when both connection strengths were in the same higher range.

[0024] FIG. 3 is a block diagram generally at 300 illustrating two devices for transferring rendered video frames between each other. The mixed reality headset 305 is a head-mounted device to be worn on a user's head and includes a display 310 and one or more cameras 315 and 320. The display 310 may be split into two separate displays, one for each user's eye. The display may be used to display video received from a network-connected computing resource 323, such as a cloud-based computing resource. Both the headset 305 and the computing resource 323 are connected via a wireless network and may wirelessly transmit and receive information, including video frames, as shown at 325 and 330. Both the headset 305 and the computing resource 323 may also include both an encoder and a decoder for dynamically encoding frames based on network quality. In further embodiments, the two devices transferring video may be other gaming devices or cellular phones, tablets, or other devices.

[0025] FIG. 4 is a flowchart illustrating a computer-implemented method 400 for dynamically selecting a reference frame for encoding a P frame based on network connection quality. In one example, frames may be transmitted exactly as they are received from the video source, allowing them to be received and displayed on the receiving device with as little delay as possible. Method 400 begins at operation 410 by obtaining a video frame to be transmitted. At operation 420, multiple frames are encoded and transmitted to a receiver over a network connection. At operation 430, a probability that the last video frame will be or was received is determined. At operation 440, a next frame is encoded as a P frame that identifies a change from a selected previously transmitted frame. The selected previously transmitted frame is used as a reference frame and is selected according to the probability that the last transmitted video frame will be or was received. At operation 450, the next encoded frame is transmitted.

[0026] 5 is a flow chart illustrating a computer-implemented method 500 for determining a probability that the last transmitted video frame was received at operation 430 of method 400. Method 500 begins at operation 510 by receiving network quality information. The received network quality information may include a cellular network signal strength received from the cellular network, receipt of an acknowledgment within a selected time, a network congestion signal, a network packet error rate, or buffering occurring due to a failed transmission. The network quality information may also be indicative of future network quality. A probability is determined based on the received network quality information, beginning at operation 520.

[0027] In one example, the probabilities may be selected from a table that may be empirically derived based on data from various network quality measures that correlate with information corresponding to actual received frames. For example, cellular network signal strength may be the network quality information. High signal strength correlates with a high probability of reception, while lower signal strength corresponds to a lower probability of reception.

[0028] Also, machine learning models may be trained to classify frames as successfully transmitted or received. Training data for such models may be based on one or more of such network quality measures and corresponding empirical data on whether a frame was received or not.

[0029] In operation 530, a probability threshold is obtained and compared to the determined probability in operation 540. Operation 550 selects the frame transmitted before the last transmitted frame in response to the probability threshold being greater than the generated probability.

[0030] The probability threshold may be user-configurable and application-specific. In one example, the probability threshold is at least 99 percent, and in a further example, it may be less. The previously transmitted frame may be the frame immediately prior to the last transmitted frame that was likely not received, or may be two or more frames prior to the last transmitted frame if network quality was poor for two or more transmitted frames.

[0031] In one example, prior to transmission of a frame, it may be known that the frame is likely not to be received. In such cases, the frame may not be transmitted to help reduce bandwidth utilization. If network quality is poor for some frames, the difference between the last successfully transmitted and likely received frame and the next frame may be significant, which would result in a very large P frame. In such cases, a new I frame may be encoded and transmitted. The decision to encode a P frame or an I frame may be made based on size, processing time, or video quality considerations, or in further examples, a combination of such considerations.

[0032] 6 is a flowchart of an alternative computer-implemented method 600 for dynamically selecting reference frames for encoding P frames based on network connection quality, according to an exemplary embodiment. Method 600 begins, at operation 610, by obtaining video frames to be transmitted. At operation 620, a plurality of such video frames are encoded and transmitted to a recipient over a network connection. At operation 630, a quality measure of the network connection is obtained. Operation 640 encodes and transmits the next frame as a P frame that identifies changes from a previously transmitted frame selected in response to the quality measure of the network connection.

[0033] The network quality measure represents the probability that a transmitted video frame is successfully received. In one example, the probability that a transmitted video frame is received is based on the received network quality information.

[0034] The previously transmitted frame may be selected as the frame transmitted before the last transmitted frame in response to a probability threshold obtained, the obtained probability being compared with the probability threshold, and the previously transmitted frame being selected in response to the probability threshold being greater than the generated probability.

[0035] 7 is a block schematic diagram of a computer system 700 used to encode and decode video frames and select reference frames based on network quality information for encoding P frames. The computer system 700 may also be used to perform methods and algorithms according to example embodiments. In various embodiments, not all components may be used.

[0036] One exemplary computing device in the form of a computer 700 may include a processing unit 702, memory 703, removable storage 710, and non-removable storage 712. Although the exemplary computing device is shown and described as a computer 700, in different embodiments, the computing device may be of different forms. For example, the computing device may instead be a smartphone, tablet, smartwatch, smart storage device (SSD), or other computing device that includes the same or similar elements as shown and described with respect to FIG. 7. Devices such as smartphones, tablets, and smartwatches are generally collectively referred to as mobile devices or user equipment.

[0037] While various data storage elements are shown as parts of computer 700, storage may additionally or alternatively include cloud-based storage accessible over a network, such as the Internet or server-based storage. It should also be noted that the SSD may include a processor on which the parser may execute, enabling transfer of parsed and filtered data over an I / O channel between the SSD and main memory.

[0038] Memory 703 may include volatile memory 714 and nonvolatile memory 708. Computer 700 may include or have access to a computing environment that includes a variety of computer-readable media, such as volatile memory 714 and nonvolatile memory 708, removable storage 710 and non-removable storage 712. Computer storage includes random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM) or electrically erasable programmable read-only memory (EEPROM), flash memory, or other memory technology, compact disc read-only memory (CDROM), digital versatile disk (DVD), or other optical disk storage, magnetic cassette, magnetic tape, magnetic disk storage, or other magnetic storage device, or any other medium capable of storing computer-readable instructions.

[0039] The computer 700 may include or have access to a computing environment that includes an input interface 706, an output interface 704, and a communication interface 716. The output interface 704 may include a display device, such as a touchscreen, which may also serve as an input device. The input interface 706 may include one or more of a touchscreen, a touchpad, a mouse, a keyboard, a camera, one or more device-specific buttons, one or more sensors integrated within the computer 700 or coupled to the computer 700 via a wired or wireless data connection, and other input devices. The computer may operate in a networked environment using communication connections to connect to one or more remote computers, such as a database server. The remote computers may include personal computers (PCs), servers, routers, network PCs, peer devices, or other common data flow network switches, or the like. The communication connections may include a local area network (LAN), a wide area network (WAN), cellular, Wi-Fi, Bluetooth, or other networks. According to one embodiment, the various components of the computer 700 are connected using a system bus 720 .

[0040] Computer-readable instructions stored on a computer-readable medium, such as program 718, are executable by the processing unit 702 of the computer 700. The program 718 in some embodiments includes software for implementing one or more methods described herein. Hard drives, CD-ROMs, and RAM are some examples of articles that include non-transitory computer-readable media, such as storage devices. The terms computer-readable medium, machine-readable medium, and storage device do not include carrier waves or signals, as long as the carrier waves and signals are considered highly transitory. Storage may also include networked storage, such as a storage area network (SAN). The computer program 718, together with the workspace manager 722, may be used to cause the processing unit 702 to perform one or more methods or algorithms described herein. [Example]

[0041] Example 1. A computer-implemented method includes obtaining a video frame to be transmitted. The video frame is encoded and transmitted over a network connection. A probability that the last video frame will be or was received is determined. A next frame is encoded and transmitted as a P-frame that identifies a change from a previously transmitted frame. The previously transmitted frame is selected according to the probability that the last transmitted video frame will be or was received.

[0042] 2. The method of embodiment 1, wherein determining the probability that the last transmitted video frame was received includes receiving network quality information and generating the probability based on the received network quality information.

[0043] 3. The method of embodiment 2, wherein the previously transmitted frame is selected as the frame transmitted before the last transmitted frame in accordance with obtaining a probability threshold, comparing the generated probability with the probability threshold, and selecting the frame transmitted before the last transmitted frame in accordance with the probability threshold being greater than the generated probability.

[0044] 4. The method of example 3, wherein the probability threshold is user-configurable.

[0045] 5. The method of example 4, wherein the probability threshold is application specific.

[0046] 6. The method of any one of Examples 3-5, wherein the probability threshold is at least 99 percent.

[0047] 7. The method of any one of embodiments 2 to 6, wherein the received network quality information includes a cellular network signal strength received from the cellular network, receipt of an acknowledgment within a selected time, a network congestion signal, a network packet error rate, or buffering occurring due to a transmission failure.

[0048] 8. The method of any one of embodiments 2-7, wherein the network quality information indicates future network quality.

[0049] 9. The method according to any one of embodiments 1 to 8, wherein the previously transmitted frame is at least two frames before the last transmitted frame.

[0050] 10. A computer-implemented method includes obtaining video frames to be transmitted, encoding and transmitting a plurality of frames over a network connection, obtaining a quality measure of the network connection, and encoding and transmitting a next frame as a P-frame that identifies changes from a previously transmitted frame selected in response to the quality measure of the network connection.

[0051] 11. The method of embodiment 10, wherein the network quality measure represents the probability that a transmitted video frame was successfully received.

[0052] 12. The method of any one of embodiments 10 to 11, further comprising generating a probability that the transmitted video frame was received based on the received network quality information.

[0053] 13. The method of embodiment 12, wherein the previously transmitted frame is selected as the frame transmitted before the last transmitted frame in accordance with obtaining a probability threshold, comparing the generated probability with the probability threshold, and selecting the frame transmitted before the last transmitted frame in accordance with the probability threshold being greater than the generated probability.

[0054] 14. A method according to any one of embodiments 10 to 13, wherein the received network quality information includes a cellular network signal strength received from the cellular network, receipt of an acknowledgment within a selected time, a network congestion signal, a network packet error rate, or buffering occurring due to a transmission failure.

[0055] 15. A machine-readable storage device having instructions for execution by a processor of a machine to cause the processor to perform operations to perform any of the methods of Examples 1-14.

[0056] 16. A device includes a processor and a memory device coupled to the processor, the memory device having stored thereon a program for execution by the processor to perform operations for performing any of the methods of Examples 1-14.

[0057] The functions or algorithms described herein may, in one embodiment, be implemented in the form of software. Software may consist of computer-executable instructions stored on a computer-readable medium or computer-readable storage device, such as one or more non-transitory memories or other types of hardware-based storage devices, either local or networked. Furthermore, such functions correspond to modules, which may be software, hardware, firmware, or any combination thereof. Multiple functions may be performed in one or more modules as desired, and the above-described embodiments are merely examples. Software may be executed on a digital signal processor, ASIC, microprocessor, or other type of processor operating on a computer system, such as a personal computer, server, or other computer system, transforming such a computer system into a specifically programmed machine.

[0058] Functionality may be configured to perform an operation using, for example, software, hardware, firmware, or the like. For example, "configured to" can refer to the logical circuitry of a hardware element that will implement the associated functionality. "Configured to" can also refer to the logical circuitry of a hardware element that will implement firmware or software coding design of the associated functionality. The term "module" refers to a structural element that can be implemented using any suitable hardware (e.g., a processor, among others), software (e.g., an application, among others), firmware, or any combination of hardware, software, and firmware. The term "logic" encompasses any functionality for performing a task. For example, each operation shown in a flowchart corresponds to logic for performing that operation. An operation may be performed using software, hardware, firmware, or the like. The terms "component," "system," and the like may refer to computer-related entities, hardware, and executing software, firmware, or a combination thereof. A component may be a process, object, executable, program, function, subroutine, computer, or combination of software and hardware executing on a processor. The term "processor" may refer to a hardware component, such as a processing unit of a computer system.

[0059] Furthermore, the claimed subject matter may be implemented as a method, apparatus, or article of manufacture using standard programming and engineering techniques to create software, firmware, hardware, or any combination thereof, to control a computing device to implement the subject matter of this disclosure. The term article of manufacture, as used herein, is intended to encompass a computer program accessible from any computer-readable storage device or medium. Computer-readable storage media may include, but are not limited to, magnetic storage devices, such as hard disks, floppy disks, magnetic stripes, optical disks, compact disks (CDs), digital versatile disks (DVDs), smart cards, and flash memory devices, among others. In contrast, computer-readable media, i.e., not storage media, may additionally include communication media, such as transmission media for wireless signals and the like.

[0060] While a few embodiments have been described in detail above, other variations are possible. For example, the logic flow depicted in the figures does not require the particular order shown, or sequential order, to achieve desired results. Other steps may be provided or steps may be excluded from the described flow, and other components may be added to or removed from the described system. Other embodiments may also fall within the scope of the appended claims.

Claims

1. 1. A computer-implemented method comprising: Obtaining a video frame to be transmitted; encoding and transmitting a plurality of frames over a network connection; determining the probability that the last video frame will be or has been received; encoding and transmitting a next frame as a P frame that identifies a change from a previously transmitted frame selected in response to the probability that the last transmitted video frame will be or was received; A method comprising:

2. determining the probability that the last transmitted video frame was received; receiving network quality information; generating the probability based on the received network quality information; The method of claim 1 , comprising:

3. the previously transmitted frame is obtaining a probability threshold; comparing the generated probability with a probability threshold; and selecting the frame transmitted before the last transmitted frame in response to the probability threshold being greater than the generated probability.

3. The method of claim 2, wherein the frame transmitted before the last transmitted frame is selected in response to:

4. The method of claim 3 , wherein the probability threshold is user-configurable.

5. The method of claim 4 , wherein the probability threshold is application specific.

6. The method of claim 3 , wherein the probability threshold is at least 99 percent.

7. 3. The method of claim 2, wherein the received network quality information includes a cellular network signal strength received from a cellular network, receipt of an acknowledgment within a selected time, a network congestion signal, a network packet error rate, or buffering occurring due to a failed transmission.

8. The method of claim 2 , wherein the network quality information indicates future network quality.

9. The method according to any one of claims 1 to 8, wherein the previously transmitted frame is two or more frames before the last transmitted frame.

10. 1. A computer-implemented method comprising: Obtaining a video frame to be transmitted; encoding and transmitting a plurality of frames over a network connection; obtaining a quality measure of the network connection; encoding and transmitting a next frame as a P frame identifying a change from a previously transmitted frame selected in response to the quality measure of the network connection; A method comprising:

11. The method of claim 10 , wherein the quality measure of the network represents the probability that a transmitted video frame was successfully received.

12. The method of claim 10 , further comprising generating a probability that the transmitted video frame was received based on received network quality information.

13. the previously transmitted frame is obtaining a probability threshold; comparing the generated probability to a probability threshold; selecting the frame transmitted before the last transmitted frame in response to the probability threshold being greater than the generated probability; 13. The method of claim 12, wherein the frame transmitted before the last transmitted frame is selected in response to:

14. 14. The method of any one of claims 10 to 13, wherein the received network quality information comprises a cellular network signal strength received from the cellular network, receipt of an acknowledgment within a selected time, a network congestion signal, a network packet error rate, or buffering occurring due to a failed transmission.

15. 1. A machine-readable storage device having instructions for execution by a processor of a machine to cause the processor to perform operations to perform a method, the operations comprising: Obtaining a video frame to be transmitted; encoding and transmitting a plurality of frames over a network connection; determining the probability that the last video frame will be or has been received; encoding and transmitting a next frame as a P frame that identifies a change from a previously transmitted frame selected in response to the probability that the last transmitted video frame will be or was received; 1. A machine-readable storage device comprising:

16. determining the probability that the last transmitted video frame was received; receiving network quality information; generating the probability based on the received network quality information; 16. The device of claim 15, comprising:

17. the previously transmitted frame is obtaining a probability threshold; comparing the generated probability to a probability threshold; selecting the frame transmitted before the last transmitted frame in response to the probability threshold being greater than the generated probability; 17. The device of claim 16, wherein the frame transmitted before the last transmitted frame is selected in response to:

18. The device of claim 17 , wherein the probability threshold is user-configurable and application-specific.

19. 19. The device of claim 16, wherein the received network quality information comprises a cellular network signal strength received from a cellular network, receipt of an acknowledgment within a selected time, a network congestion signal, a network packet error rate, or buffering occurring due to a failed transmission.

20. 19. The device of claim 16, wherein the previously transmitted frame is two or more frames before the last transmitted frame.