IP Library Granted Patent US 8,593,463
Granted Patent B2
US 8,593,463 · App. 12/606,559 · Granted Nov 26, 2013

Controlling animation frame rate of applications

Inventors: Robert Jarrett (Snohomish, WA); Sankhyayan Debnath (Seattle, WA); Paul Kwiatkowski (Redmond, WA); Martyn Lovell (Seattle, WA); Billie Sue Chafins (Seattle, WA); Paul Gildea (Seattle, WA); Jay Turney (Seattle, WA)
Assignee: Microsoft Corporation
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 8,593,463
App. No.
12/606,559
Granted
Nov 26, 2013
Kind
B2
Abstract

Many computer applications incorporate and support animation (e.g., interactive user interfaces). Unfortunately, it may be challenging for computer applications and rendering systems to render animation frames at a smooth and consistent rate while conserving system resources. Accordingly, a technique for controlling animation rendering frame rate of an application is disclosed herein. An animation rendering update interval of an animation timer may be adjusted based upon a rendering system state (e.g., a rate of compositing visual layouts from animation frames) of a rendering system and/or an application state (e.g., a rate at which an application renders frames) of an application. Adjusting the animation rendering update interval allows the animation timer to adjust the frequency of performing rendering callback notifications (work requests to an application to render animation frames) to an application based upon rendering system performance and application performance.

Claims (80)

1. A method for controlling an animation rendering frame rate of an application comprising:

determining a rendering system state of a rendering system, the rendering system state comprising a composite rate at which the rendering system composites rendered animation frames of one or more applications into a visual layout for display;

determining an application state of at least one application of the one or more applications, the application state based upon:

an animation rendering frame rate determined based upon an average frame rate at which the at least one application is rendering;

raw CPU usage associated with the at least one application; and

I/O activity associated with the at least one application;

determining a computer environment state of a computer running at least some of the one or more applications based upon:

a power supply setting of the computer indicative of a use of at least one of a battery or A/C power, the power supply setting indicative of whether the computer has additional computing power available for rendering animation frames at a rate greater than the animation rendering frame rate;

a hardware component state based upon whether one or more hardware based timers are available to facilitate animation frame rate rendering; and

a multimedia component state based upon whether one or more multimedia timers are available to facilitate animation frame rate rendering; and

adjusting an animation rendering update interval associated with the at least one application based upon the rendering system state, the application state and the computer environment state, the animation rendering update interval associated with a time period to wait before performing a rendering callback instruction to notify the at least one application to render an animation frame, the adjusting comprising:

when the rendering system is determined to be overstressed based upon a determination that the composite rate has fallen below a composite threshold, increasing the animation rendering update interval;

when the at least one application is determined to be overstressed based upon a determination that the animation rendering frame rate has fallen below a threshold, at least one of:

increasing the animation rendering update interval; or

instructing the at least one application to reduce a current rendering load of the at least one application; and

increasing or decreasing the animation rendering update interval based upon the power supply setting, the hardware component state and the multimedia component state.

2. The method of claim 1 , the rendering system configured to display one or more rendered animation frames on a monitor.

3. The method of claim 1 , at least some of the method performed by an application program interface (API).

4. The method of claim 1 , the I/O activity associated with network data transfer.

5. The method of claim 1 , comprising:

decreasing the animation rendering update interval after increasing the animation rendering update interval.

6. The method of claim 1 , the instructing the at least one application to reduce a current rendering load comprising:

notifying the at least one application to render one or more animation frames at a lower resolution.

7. The method of claim 1 , comprising:

responsive to receiving at least one of a disable signal or an idle signal from the rendering system, entering a sleep mode until receiving a wakeup signal from an application of the one or more applications.

8. The method of claim 1 , the adjusting performed by an animation timer.

9. The method of claim 8 , comprising:

notifying an application of the one or more applications of a pre-update event opportunity before the animation timer changes state.

10. The method of claim 8 , comprising:

notifying an application of the one or more applications of a post-update event opportunity after the animation timer changes state.

11. The method of claim 8 , comprising:

adjusting at least one of:

a resource usage of the animation timer based upon available system resources; or

a precision of the animation timer based upon the application state.

12. A system, implemented at least in part via a processing unit, for controlling an animation rendering frame rate of an application, the system comprising:

an animation timer comprising:

a monitoring component configured to determine:

a rendering system state of a rendering system, the rendering system state comprising a composite rate at which the rendering system composites rendered animation frames of one or more applications into a visual layout for display;

an application state of at least one application of the one or more applications, the application state based upon:

an animation rendering frame rate determined based upon an average frame rate at which the at least one application is rendering;

raw CPU usage associated with the at least one application; and

I/O activity associated with the at least one application; and

a computer environment state of a computer running at least some of the one or more applications, the computer environment state determined based upon:

a power supply setting of the computer indicative of a use of at least one of a battery or A/C power, the power supply setting indicative of whether the computer has additional computing power available for rendering animation frames at a rate greater than the animation rendering frame rate;

a hardware component state based upon whether one or more hardware based timers are available to facilitate animation frame rate rendering; and

a multimedia component state based upon whether one or more multimedia timers are available to facilitate animation frame rate rendering; and

a component configured to:

adjust an animation rendering update interval associated with the at least one application based upon the rendering system state, the application state and the computer environment state, the animation rendering update interval associated with a time period to wait before performing a rendering callback instruction to notify the at least one application to render an animation frame.

13. The system of claim 12 , comprising:

a sleep component configured to:

responsive to receiving at least one of a disable signal or an idle signal from the rendering system, instruct the animation timer to enter a sleep mode until receiving a wakeup signal from an application of the one or more applications.

14. The system of claim 12 , comprising:

an event component configured to at least one of:

notify an application of the one or more applications of a pre-update event opportunity before the animation timer changes state; or

notify an application of the one or more applications of a post-update event opportunity after the animation timer changes state.

15. The system of claim 12 , the rendering system configured to display one or more rendered animation frames on a monitor.

16. The system of claim 12 , the animation timer configured to:

adjust at least one of:

a resource usage of the animation timer based upon available system resources; or

a precision of the animation timer based upon the application state.

17. The system of claim 12 , the component configured to:

decrease the animation rendering update interval after increasing the animation rendering update interval.

18. The system of claim 12 , the I/O activity associated with disk data transfer.

19. The system of claim 12 , the animation timer configured to control respective animation rendering frame rates of a first application and a second application.

20. A computer readable storage device comprising instructions that when executed perform a method for controlling an animation rendering frame rate of an application, the method comprising:

determining a rendering system state of a rendering system, the rendering system state comprising a composite rate at which the rendering system composites rendered animation frames of one or more applications into a visual layout for display;

determining an application state of at least one application of the one or more applications, the application state based upon at least one of:

an animation rendering frame rate determined based upon an average frame rate at which the at least one application is rendering;

raw CPU usage associated with the at least one application; or

I/O activity associated with the at least one application;

determining a computer environment state of a computer running at least some of the one or more applications based upon at least one of:

a power supply setting of the computer indicative of a use of at least one of a battery or A/C power, the power supply setting indicative of whether the computer has additional computing power available for rendering animation frames at a rate greater than the animation rendering frame rate;

a hardware component state based upon whether one or more hardware based timers are available to facilitate animation frame rate rendering; or

a multimedia component state based upon whether one or more multimedia timers are available to facilitate animation frame rate rendering; and

adjusting an animation rendering update interval associated with the at least one application based upon at least one of the rendering system state, the application state or the computer environment state, the animation rendering update interval associated with a time period to wait before performing a rendering callback instruction to notify the at least one application to render an animation frame, the adjusting comprising at least one of:

when the rendering system is determined to be overstressed based upon a determination that the composite rate has fallen below a composite threshold, increasing the animation rendering update interval;

when the at least one application is determined to be overstressed based upon a determination that the animation rendering frame rate has fallen below a threshold, at least one of:

increasing the animation rendering update interval; or

instructing the at least one application to reduce a current rendering load of the at least one application; or

increasing or decreasing the animation rendering update interval based upon at least one of the power supply setting, the hardware component state or the multimedia component state.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2017
From: JARRETT, ROBERT J; DEHNATH, SANKHYAYAN; KWIATKOWSKI, PAUL J; LOVELL, MARTYN S; CHAFINS, BILLIE SUE; GILDEA, PAUL STEPHEN; TURNEY, JAY
To: MICROSOFT CORPORATION
Reel/Frame 041232/0641 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034564/0001 →
Continuity (1)
Related Publication 20110096077A1 · Apr 28, 2011