| page.title=SoC Vendor Dependencies for Media Resource Manager | |
| @jd:body | |
| <!-- | |
| Copyright 2015 The Android Open Source Project | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| --> | |
| <div id="qv-wrapper"> | |
| <div id="qv"> | |
| <h2>In this document</h2> | |
| <ol id="auto-toc"> | |
| </ol> | |
| </div> | |
| </div> | |
| <p>This document is intended to help system on chip vendors (SoCs) properly | |
| implement support for priority, operating rate and the hooks needed for Android | |
| media resource manager.</p> | |
| <h2 id=1_omx_errorinsufficientresources>1. OMX_ErrorInsufficientResources</h2> | |
| <p>The codec component should return | |
| <code>OMX_ErrorInsufficientResources</code> on <code>GetHandle</code>, | |
| <code>Init</code>, <code>UseBuffer</code>, <code>AllocateBuffer</code> or a | |
| state transition if the failure is due to insufficient resource. The error code | |
| will be used by the media resource manager as the indicator to potentially | |
| preempt media resource from other lower priority process.</p> | |
| <p>An Android Compatibility Test Suite (CTS) test exists to allocate, configure | |
| and start each codec repeatedly until <code>catching | |
| OMX_ErrorInsufficientResources</code> (pass) or any other error (fail).</p> | |
| <h2 id=2_omx_indexconfigpriority>2. OMX_IndexConfigPriority</h2> | |
| <p>This configuration lets the application describe desired codec priority.</p> | |
| <p>The associated value is an integer. Higher value means lower priority. | |
| Currently, only two levels are supported:</p> | |
| <ul> | |
| <li>0: realtime priority - meaning that the codec shall support the given | |
| performance configuration (e.g. framerate) at realtime. This will only be used | |
| by media playback, capture, and possibly by realtime communication scenarios if | |
| best effort performance is not suitable.</li> | |
| <li>1: non-realtime priority (best effort). This is the default value.</li> | |
| </ul> | |
| <p>Vendor is suggested to use this as a hint used at codec configuration and | |
| resource planning - to understand the realtime requirements of the application.</p> | |
| <p>Don’t assume realtime priority unless it is configured to 0.</p> | |
| <h2 id=3_omx_indexconfigoperatingrate>3. OMX_IndexConfigOperatingRate</h2> | |
| <p>This configuration lets the application describe operating frame rate for | |
| video or sample rate for audio at which the codec will need to operate.</p> | |
| <p>This is used for cases like high-speed/slow-motion video capture, where the | |
| video encoder format contains the target playback rate (e.g. 30fps), but the | |
| component must be able to handle the high operating capture rate (e.g. 240fps).</p> | |
| <p>This rate should be used for resource planning and setting the operating | |
| points.</p> |