This is a workaround for b/130058564.
Test: adb shell stagefright -i | grep "c2.android"
Bug: 130254909
Change-Id: I8e8f7bbd9c1f777285cdcc58ea6610639122c928
Switch to using a dynamically-linked library function to initialize
ICU, not a statically-linked function. This means the knowledge of file
paths stays in the runtime module.
Bug: 120493361
Test: build/boot
Exempt-From-Owner-Approval: It's just a cherry-pick
Merged-In: Ibe1d5ffd50e5cce76b1b01788954dcfb4762b1c6
Change-Id: Ibe1d5ffd50e5cce76b1b01788954dcfb4762b1c6
Switch to using a dynamically-linked library function to initialize
ICU, not a statically-linked function. This means the knowledge of file
paths stays in the runtime module.
Bug: 120493361
Test: build/boot
Change-Id: Ibe1d5ffd50e5cce76b1b01788954dcfb4762b1c6
force mediaserver to 32-bits, 64-bit version failed wider testing.
Bug: 126502613
Bug: 16890215
Test: use camera app to record video
Test: android.media.cts.MediaPlayer2Test#testRecordedVideoPlayback0
Test: android.media.cts.MediaPlayerTest#testRecordedVideoPlayback0
mediaserver is no longer forced to 32-bit mode, floating to primary
architecture which is usually 64 bits.
Bug: 16890215
Test: boot, record video, android.media.cts.MediaPlayerTest
Change-Id: If5265e251a4201e7037ddaa2f36fa998936622aa
This converts mediaserver, mediametrics and screenrecord and the
libraries they depend on to Android.bp
See build/soong/README.md for more information.
Bug: 122331945
Bug: 80410283
Test: boot blueline
Test: youtube
Test: screenrecord
Change-Id: I132b8b4f7965449df68fb1544034a7241c594a63
Delay start of mediaserver and mediaextractor during boot until after the
Runtime APEX is mounted.
They depend on ICU / the ICU .dat file which are provided by the Runtime
APEX.
Test: flash & boot
Bug: 123275379
Bug: 113373927
Bug: 123176717
Change-Id: Idfe80054b6afe8f7449e698f59413ecefb280957
libicuuc and libicui18n are moved into APEX, but
they have no stable ABI due to the version suffix.
Use libandroidicu which provides stable symbol.
See http://go/apex-stable-icu4c-interface for the design.
See http://aosp/801855 for libandroidicu implementation.
Bug: 117094880
Test: m checkbuild
Merged-In: Ida6aac85dfb79bf8e7a3a2540e567ee211279e09
Change-Id: Ida6aac85dfb79bf8e7a3a2540e567ee211279e09
(cherry picked from commit b6826d9e88)
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
Various media components were linking against dynamic libraries that weren't needed.
Test: built and booted
Change-Id: I7379506fd06d4e28e0eff0001fd073a2d3860f8e
If multiple writepids, all must be in one line to take effect.
Else, only the last one will take effect.
bug: 30192722
bug: 28312446
Change-Id: I35eea3f604fb5f0c2c0a6bce9e22cfde9d5805a9
audioflinger, audiopolicy, (fm) radio, soundtrigger moved to audioserver.
medialog is removed from mediaserver.
audioserver has same permissions and rights as mediaserver.
mediaserver is allowed to specify client uid to audioserver.
Subsequent CL will add medialog to audioserver.
TBD: Pare down permissions.
Bug: 24511453
Change-Id: Iccaa08b874a502710d142e72f8abbb3d97c44cfa
A static library now exists in external/icu/android_utils.
Contains cherry-picks from commits:
4b60b068c22f3406517d
Bug: 21730722
Change-Id: Ibc264ed881465736ce74fa493deb83cc15f9fceb
In change 2b29e461c in external/icu, we stopped hardcoding the ICU
data path at compile time to avoid two sets of mappings in zygote forked
processes. This means we'll have to tell ICU where its data is if the
process in question isn't forked from the zygote.
bug: 21705078
Change-Id: I829d9fa34fe8209aa8a6d55145ca26fdf0d934e8
Using Sonic as backbone for time stretching algorithm.
Adding libsonic to needed makefiles.
bug: 19196501
Change-Id: I1ea9221d2f56e4e79fba8746ce0ad350b5079e82
This patch defines an interface for a new component: policy engine.
The APIs found under this interface are the one we may want to customize
and to configure easily.
This patch also split the current manager code into manager and engine to
provide a default version of the policy engine.
Change-Id: I97cf59760b53d248fe9efe466ae5e73bd7e5cc06
Signed-off-by: François Gaffie <francois.gaffie@intel.com>
This patch splits the managerdefault into a manager and a manager
defintion library that contains all pillar elements of a policy manager.
It renames the file with the name of the main class they contains.
It splits the AudioPort into AudioPort and AudioPatch.
Change-Id: I992cf0b8aed895805cc003ba0980d2c9e92c985b
Signed-off-by: François Gaffie <francois.gaffie@intel.com>
First implementation of broadcast radio service.
This native service runs in mediaserver process and
controls broadcast radio hardware modules.
There is one ihardware module per broadcast radio class.
The service allows serveral clients to control tuners
on hardware modules and manages resource conflicts.
Change-Id: I21469a084c7ccd65042b8ac5f724d060044c45ab
AudioPolicyManager implementation is now split into the
following files:
files managerdefault/Gains.*
class AudioGain
class VolumeCurvePoint
class StreamDescriptor
files managerdefault/Devices.*
class DeviceDescriptor
class DeviceVector
files managerdefault/Ports.*
class AudioPort
class AudioPortConfig
class AudioPatch
files managerdefault/IOProfile.*
class IOProfile
files managerdefault/HwModule.*
class HwModule
files managerdefault/AudioInputDescriptor.*
class AudioInputDescriptor
files managerdefault/AudioOutputDescriptor.*
class AudioOutputDescriptor
All files for libaudiopolicyservice are moved under service/
All files for libaudiopolicymanager are moved under manager/
Change-Id: I43758be1894e37d34db194b51a19ae24461e066e
Split audio policy library into a service part and a policy part.
This will allow OEMs to customize the policy part:
- libaudiopolicyservice for the service.
- libaudiopolicymanager for the policy.
Two build options can be defined in device make file to select
the policy library:
- USE_LEGACY_AUDIO_POLICY = 1: this will use the legacy policy
in hardware/libhardware_legacy implemented by AudioPolicyManagerBase class.
This policy is loaded as a harware module and exposes the audio policy HAL
defined in include/hardware/audio_policy.h and is in a library called
audio_policy.XXX.so (e.g audio_policy.default.so)
The legacy HAL will not be updated with new features.
If USE_LEGACY_AUDIO_POLICY is not defined, the policy is implemented by
a class named AudioPolicyManager exposing an interface defined in
AudioPolicyInterface.h.
The corresponding library is libaudiopolicymanager.so.
New features will be added only to AudioPolicyInterface.h
The default implementation is provided here in file AudioPolicyManager.cpp
OEMs wanting to cutomize the policy can implement the AudioPolicyManager class
and provide the libaudiopolicymanager.so library.
In this case the device make file should define:
- USE_CUSTOM_AUDIO_POLICY = 1
For now, USE_LEGACY_AUDIO_POLICY = 1 is forced in audio policy service make file.
This will be removed when the new audio policy is enabled.
Change-Id: I066799dacc9b182b468a43d48ff7798c9109a414
This will allow (eventually) a greater dynamic range for gains.
However there are still a few remaining places in effects and mixer
that will also need to be changed in order to get the full benefit.
Also fixes a minor bug: was not checking for NaN in AudioTrack C++.
Change-Id: I63bce9e82e0a61546d8ff475fb94bcb700d99c96