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