1. A method, implemented by a computing device configured to perform the following, comprising: receiving a request to decode media data from an application; determining a state of the application; if the application is in a first state, routing the media data to a hardware media decoder; and if the application is in a second state, routing the media data to a software media decoder.