Enable full migration of OMX to Treble.
1. Toggling between Treble and non-Treble OMX will now be controlled by two properties: "persist.hal.binderization" and "persist.media.treble_omx". (Before this CL, this was controlled by "debug.treble_omx".) - If persist.media.treble_omx is not set, it will assume a default value of -1. - If persist.media.treble_omx is -1, persist.hal.binderization will be used to determine whether OMX will be created as a Treble or non-Treble service. - If persist.media.treble_omx is 1, OMX will be created as a Treble service. - If persist.media.treble_omx has any other value, OMX will be created as a non-Treble service. - persist.media.treble_omx can be changed without rebooting, but it will only take effect after media.codec and mediaserver processes are killed. 2. Remove all dependencies on non-Treble service. This was not done for MediaCodec, MediaPlayerService::Client, MediaRecorderClient, stagefright command, and omx_tests command. OMXClient and media.codec process will now pick the right version of OMX based on properties mentioned above. Before this CL, media.codec would always present the non-Treble version of OMX regardless of the flag. 3. Provide workarounds for some HIDL issues. - A sequence of nested binder and hwbinder calls require many threads to handle. (b/35283480) The workaround is to increase the number of threads in the thread pool of media.codec process. - android.hidl.base@1.0::IBase::unlinkToDeath takes a strong pointer instead of a weak pointer. (b/35233970) This causes an infinite recursion in the destructor of ServiceDeathNotifier in MediaPlayerService::Client and MediaRecorderClient. The workaround moves calls to unlinkToDeath() outside of the destructor. Test: Recorded and played videos with Camera app. Ran stagefright and omx_tests commands. Bug: 31399200 Change-Id: Id1940ed982838e10bf10fe8ed5b7bb912a5a2d3a
Loading
Please register or sign in to comment