IP Library Granted Patent US 10,523,939
Granted Patent B2
US 10,523,939 · App. 15/177,137 · Granted Dec 31, 2019

Dynamic codec adaption

Inventors: Yaming He (Redmond, WA); Zhengping Zuo (Medina, WA)
Assignee: Facebook, Inc.
H04N19/124H04N19/132H04N19/147H04N19/154H04N19/156H04N19/177
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,523,939
App. No.
15/177,137
Granted
Dec 31, 2019
Kind
B2
Abstract

Embodiments are described for dynamically adapting video encoding to maintain a nearly stable frame rate based on processor capabilities and bandwidth, for example, by varying a quantization parameter. The quality of the encoded video can be varied to maintain the nearly constant frame rate, which may be measured from the number of encoded video frames being transmitted over a network interface.

Claims (38)

1. A computer-implemented method comprising:

measuring a present output frame rate based on a number of encoded video frames transmitted via the network interface during an observation time period;

determining stability of the present output frame rate;

upon determining that the present output frame rate is stable:

checking whether a quality average for the number of encoded video frames transmitted via the network interface during the observation time period is above a quality threshold, wherein the checking includes calculating an average of quantization parameter values of the number of encoded video frames, wherein fidelity of encoding is inversely proportional to magnitudes of quantization parameter values; and

scaling, responsive to the checking, a quality of encoding in a next observation time period based on the average of quantization parameter values, wherein the scaling includes altering resolution of video frames before encoding the video frames; and

upon determining that the present output frame rate is not stable:

modifying at least one setting of the video encoding operation to cause a future output frame rate to become stable, wherein the modifying includes changing an amount of hardware acceleration used for the video encoding operation.

2. The method of claim 1 , wherein the altering the resolution includes at least one of increasing video resolution when the quality average is above the quality threshold or decreasing video resolution when the quality average is below the quality threshold.

3. The method of claim 1 , wherein the determining stability of the present output frame rate includes determining whether the present output frame rate is within a predetermined range of a target output frame rate.

4. A user device comprising:

at least a processor;

a network interface; a memory stores instructions which, when executed by the at least one processor, cause the system to perform:

measuring a present output frame rate based on a number of encoded video frames transmitted via the network interface during an observation time period;

determining stability of the present output frame rate; and

upon determining that the present output frame rate is stable:

checking whether a quality average for the number of encoded video frames transmitted via the network interface during the observation time period is above a quality threshold, wherein the checking includes calculating an average of quantization parameter values of the number of encoded video frames, wherein fidelity of encoding is inversely proportional to magnitudes of quantization parameter values; and

scaling, responsive to the checking, a quality of encoding in a next observation time period based on the average of quantization parameter values, wherein the scaling includes altering resolution of video frames before encoding the video frames; and

upon determining that the present output frame rate is not stable:

modifying at least one setting of the video encoding operation to cause a future output frame rate to become stable, wherein the modifying includes changing an amount of hardware acceleration used for the video encoding operation.

5. The user device of claim 4 , wherein the altering the resolution includes at least one of increasing video resolution when the quality average is above the quality threshold or decreasing video resolution when the quality average is below the quality threshold.

6. The user device of claim 4 , wherein the monitoring the output for the present output frame rate include determining whether the present output frame rate is within a predetermined range of the target output frame rate.

7. The method of claim 1 , wherein the altering of resolution of video frames further includes:

adjusting at least one of encoding parameter settings including a motion search window, a type of bit coding, or an encoding mode.

8. The user device of claim 4 , wherein the altering of resolution of video frames further includes:

adjusting at least one of encoding parameter settings including a motion search window, a type of bit coding, or an encoding mode.

9. A non-transitory computer-readable storage medium including instructions that, when executed by at least one processor of a computing system, cause the computing system to perform a method comprising:

measuring a present output frame rate based on a number of encoded video frames transmitted via the network interface during an observation time period;

determining stability of the present output frame rate;

upon determining that the present output frame rate is stable:

checking whether a quality average for the number of encoded video frames transmitted via the network interface during the observation time period is above a quality threshold, wherein the checking includes calculating an average of quantization parameter values of the number of encoded video frames, wherein fidelity of encoding is inversely proportional to magnitudes of quantization parameter values; and

scaling, responsive to the checking, a quality of encoding in a next observation time period based on the average of quantization parameter values, wherein the scaling includes altering resolution of video frames before encoding the video frames; and

upon determining that the present output frame rate is not stable:

modifying at least one setting of the video encoding operation to cause a future output frame rate to become stable, wherein the modifying includes changing an amount of hardware acceleration used for the video encoding operation.

10. The non-transitory computer-readable storage medium of claim 9 , wherein the altering the resolution includes at least one of increasing video resolution when the quality average is above the quality threshold or decreasing video resolution when the quality average is below the quality threshold.

11. The non-transitory computer-readable storage medium of claim 9 , wherein the determining stability of the present output frame rate includes determining whether the present output frame rate is within a predetermined range of a target output frame rate.

12. The non-transitory computer-readable storage medium of claim 9 , wherein the altering of resolution of video frames further includes:

adjusting at least one of encoding parameter settings including a motion search window, a type of bit coding, or an encoding mode.

Assignments (2)
CHANGE OF NAME Recorded Dec 1, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058294/0215 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2019
From: HE, YAMING; ZUO, ZHENGPING
To: FACEBOOK, INC.
Reel/Frame 048552/0167 →
Continuity (2)
Provisional Application 62274113 · Dec 31, 2015
Related Publication 20170195672A1 · Jul 6, 2017