Sync up to v307
This commit is contained in:
parent
93d0ea8243
commit
04747ed5c6
@ -1,37 +0,0 @@
|
||||
From 624cfc90b8bedb024f289772960f3cd7072fa940 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Sat, 6 Mar 2021 19:15:24 -0500
|
||||
Subject: [PATCH 32/32] Fix AAC decoder failing to instantiate
|
||||
|
||||
This has been caused by I50fcc5ef35cb7e96592c2267652228b5fa074ba9
|
||||
Non-Android 11 vendors won't provide those calls, and will thus fail.
|
||||
---
|
||||
media/libstagefright/ACodec.cpp | 5 ++---
|
||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp
|
||||
index 0f8cd39edb..35cdf86319 100644
|
||||
--- a/media/libstagefright/ACodec.cpp
|
||||
+++ b/media/libstagefright/ACodec.cpp
|
||||
@@ -5340,9 +5340,7 @@ status_t ACodec::getPortFormat(OMX_U32 portIndex, sp<AMessage> ¬ify) {
|
||||
err = mOMXNode->getParameter(
|
||||
(OMX_INDEXTYPE)OMX_IndexParamAudioAndroidAacDrcPresentation,
|
||||
&presentation, sizeof(presentation));
|
||||
- if (err != OK) {
|
||||
- return err;
|
||||
- }
|
||||
+ if (err == OK) {
|
||||
notify->setInt32("aac-encoded-target-level",
|
||||
presentation.nEncodedTargetLevel);
|
||||
notify->setInt32("aac-drc-cut-level", presentation.nDrcCut);
|
||||
@@ -5355,6 +5353,7 @@ status_t ACodec::getPortFormat(OMX_U32 portIndex, sp<AMessage> ¬ify) {
|
||||
notify->setInt32("aac-drc-album-mode", presentation.nDrcAlbumMode);
|
||||
notify->setInt32("aac-drc-output-loudness",
|
||||
presentation.nDrcOutputLoudness);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
break;
|
||||
--
|
||||
2.25.1
|
||||
|
@ -0,0 +1,73 @@
|
||||
From 2fd4810ec5e6a453e980cacba2e1bcdd30b3f967 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Wed, 14 Apr 2021 10:20:22 +0800
|
||||
Subject: [PATCH 39/40] Revert "AudioPolicyManager: retry with SW bridge if
|
||||
hardware audio patch fails"
|
||||
|
||||
This reverts commit 5d869232d42a2fee6b7cb07b6a240aef5838021b.
|
||||
---
|
||||
.../managerdefault/AudioPolicyManager.cpp | 13 +++----------
|
||||
.../audiopolicy/managerdefault/AudioPolicyManager.h | 4 +---
|
||||
2 files changed, 4 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
||||
index 6d2c38811e..63dcd538b1 100644
|
||||
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
||||
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
||||
@@ -3490,8 +3490,7 @@ status_t AudioPolicyManager::getAudioPort(struct audio_port *port)
|
||||
status_t AudioPolicyManager::createAudioPatchInternal(const struct audio_patch *patch,
|
||||
audio_patch_handle_t *handle,
|
||||
uid_t uid, uint32_t delayMs,
|
||||
- const sp<SourceClientDescriptor>& sourceDesc,
|
||||
- bool forceSwBridge)
|
||||
+ const sp<SourceClientDescriptor>& sourceDesc)
|
||||
{
|
||||
ALOGV("%s", __func__);
|
||||
if (handle == NULL || patch == NULL) {
|
||||
@@ -3695,8 +3694,7 @@ status_t AudioPolicyManager::createAudioPatchInternal(const struct audio_patch *
|
||||
// - audio HAL version is >= 3.0 but no route has been declared between devices
|
||||
// - called from startAudioSource (aka sourceDesc != nullptr) and source device does
|
||||
// not have a gain controller
|
||||
- // - a previous attempt at using HW bridge failed (forceSwBridge)
|
||||
- if (forceSwBridge || !srcDevice->hasSameHwModuleAs(sinkDevice) ||
|
||||
+ if (!srcDevice->hasSameHwModuleAs(sinkDevice) ||
|
||||
(srcDevice->getModuleVersionMajor() < 3) ||
|
||||
!srcDevice->getModule()->supportsPatch(srcDevice, sinkDevice) ||
|
||||
(sourceDesc != nullptr &&
|
||||
@@ -3761,12 +3759,7 @@ status_t AudioPolicyManager::createAudioPatchInternal(const struct audio_patch *
|
||||
__func__, index, handle, patchBuilder.patch(), delayMs, uid, &patchDesc);
|
||||
if (status != NO_ERROR) {
|
||||
ALOGW("%s patch panel could not connect device patch, error %d", __func__, status);
|
||||
- if (forceSwBridge || patch->sinks[0].type != AUDIO_PORT_TYPE_DEVICE) {
|
||||
- return INVALID_OPERATION;
|
||||
- } else {
|
||||
- ALOGW("Retrying with software bridging.");
|
||||
- return createAudioPatchInternal(patch, handle, uid, delayMs, sourceDesc, true);
|
||||
- }
|
||||
+ return INVALID_OPERATION;
|
||||
}
|
||||
} else {
|
||||
return BAD_VALUE;
|
||||
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.h b/services/audiopolicy/managerdefault/AudioPolicyManager.h
|
||||
index 60cbd7175e..b588f898d4 100644
|
||||
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.h
|
||||
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.h
|
||||
@@ -910,14 +910,12 @@ private:
|
||||
* @param[in] delayMs if required
|
||||
* @param[in] sourceDesc [optional] in case of external source, source client to be
|
||||
* configured by the patch, i.e. assigning an Output (HW or SW)
|
||||
- * @param[in] forceSwBridge [optional] force the creation of a SW bridge (internal use only)
|
||||
* @return NO_ERROR if patch installed correctly, error code otherwise.
|
||||
*/
|
||||
status_t createAudioPatchInternal(const struct audio_patch *patch,
|
||||
audio_patch_handle_t *handle,
|
||||
uid_t uid, uint32_t delayMs = 0,
|
||||
- const sp<SourceClientDescriptor>& sourceDesc = nullptr,
|
||||
- bool forceSwBridge = false);
|
||||
+ const sp<SourceClientDescriptor>& sourceDesc = nullptr);
|
||||
/**
|
||||
* @brief releaseAudioPatchInternal internal function to remove an audio patch
|
||||
* @param[in] handle of the patch to be removed
|
||||
--
|
||||
2.25.1
|
||||
|
@ -0,0 +1,78 @@
|
||||
From 7bb3de067cec0c8c3bd5341bf9ad42b808fefd39 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Cai <peter@typeblog.net>
|
||||
Date: Wed, 14 Apr 2021 11:09:12 +0800
|
||||
Subject: [PATCH 40/40] APM: Fall back to legacy voice call routing if creating
|
||||
audio patch failed
|
||||
|
||||
* On some MT6771 Q vendor devices, in-call audio is broken due to APM
|
||||
failing to create an HW audio patch for RX / TX devices.
|
||||
|
||||
> 03-28 11:56:42.300 1345 1345 W DeviceHAL: Error from HAL Device in
|
||||
function create_audio_patch: Function not implemented
|
||||
> 03-28 11:56:42.301 1358 1374 W APM_AudioPolicyManager:
|
||||
createAudioPatchInternal patch panel could not connect device patch,
|
||||
error -38
|
||||
> 03-28 11:56:42.301 1358 1374 W APM_AudioPolicyManager:
|
||||
createTelephonyPatch() error -38 creating RX audio patch
|
||||
|
||||
* Our previous attempt at fixing this by falling back to SW bridging was
|
||||
wrong, because SW bridging requires a corresponding audio policy
|
||||
configuration that includes said SW bridges, which is not the case on
|
||||
these devices.
|
||||
|
||||
* The sole reason why this was broken at all is that the new R behavior
|
||||
tries to use the newer `createAudioPatch` interface of the audio HAL,
|
||||
which is broken on these devices for telephony inputs and outputs,
|
||||
even though the HAL claims to support it.
|
||||
|
||||
* Let's fall back to pre-R behavior (i.e. using the legacy
|
||||
setOutputDevices() interface) whenever the new method fails. The
|
||||
legacy method takes care of TX (Mic input) as well, so we don't need
|
||||
to create the TX patch either.
|
||||
---
|
||||
.../managerdefault/AudioPolicyManager.cpp | 23 +++++++++++++++----
|
||||
1 file changed, 18 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
||||
index 63dcd538b1..124c6ca6ef 100644
|
||||
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
||||
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
|
||||
@@ -575,17 +575,30 @@ uint32_t AudioPolicyManager::updateCallRouting(const DeviceVector &rxDevices, ui
|
||||
createTxPatch = !(availablePrimaryModuleInputDevices().contains(txSourceDevice)) &&
|
||||
(txSinkDevice != 0);
|
||||
}
|
||||
- // Use legacy routing method for voice calls via setOutputDevice() on primary output.
|
||||
- // Otherwise, create two audio patches for TX and RX path.
|
||||
- if (!createRxPatch) {
|
||||
- muteWaitMs = setOutputDevices(mPrimaryOutput, rxDevices, true, delayMs);
|
||||
- } else { // create RX path audio patch
|
||||
+ if (createRxPatch) { // create RX path audio patch
|
||||
mCallRxPatch = createTelephonyPatch(true /*isRx*/, rxDevices.itemAt(0), delayMs);
|
||||
|
||||
+ if (mCallRxPatch == nullptr) {
|
||||
+ // Fall back to legacy routing for voice calls if the new patching method
|
||||
+ // failed. setOutputDevice() will take care of TX in this case, so don't
|
||||
+ // create the TX patch either.
|
||||
+ // This is seen on some MT6771 devices on Q vendor, where the HAL claims
|
||||
+ // support for HW patch between telephony inputs and outputs, but fails
|
||||
+ // to create one when called with the createAudioPatch() method. SW audio
|
||||
+ // bridges are also broken on them due to improperly configured audio policy.
|
||||
+ ALOGW("Failed to create RX path audio patch, falling back to pre-R behavior");
|
||||
+ createRxPatch = false;
|
||||
+ createTxPatch = false;
|
||||
+ }
|
||||
+
|
||||
// If the TX device is on the primary HW module but RX device is
|
||||
// on other HW module, SinkMetaData of telephony input should handle it
|
||||
// assuming the device uses audio HAL V5.0 and above
|
||||
}
|
||||
+ // Use legacy routing method for voice calls via setOutputDevice() on primary output.
|
||||
+ if (!createRxPatch) {
|
||||
+ muteWaitMs = setOutputDevices(mPrimaryOutput, rxDevices, true, delayMs);
|
||||
+ }
|
||||
if (createTxPatch) { // create TX path audio patch
|
||||
// terminate active capture if on the same HW module as the call TX source device
|
||||
// FIXME: would be better to refine to only inputs whose profile connects to the
|
||||
--
|
||||
2.25.1
|
||||
|
24
patches/platform_frameworks_base/0049-Fix-build.patch
Normal file
24
patches/platform_frameworks_base/0049-Fix-build.patch
Normal file
@ -0,0 +1,24 @@
|
||||
From 50edb017dc10058835e178885d432eb89ec7e131 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Hugues Husson <phh@phh.me>
|
||||
Date: Mon, 19 Apr 2021 21:03:45 +0200
|
||||
Subject: [PATCH 49/49] Fix build
|
||||
|
||||
---
|
||||
.../java/com/android/server/display/DisplayPowerController.java | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
index 908c3b852fe1..550965ef7cd2 100644
|
||||
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
|
||||
@@ -62,6 +62,7 @@ import com.android.server.display.whitebalance.DisplayWhiteBalanceController;
|
||||
import com.android.server.display.whitebalance.DisplayWhiteBalanceFactory;
|
||||
import com.android.server.display.whitebalance.DisplayWhiteBalanceSettings;
|
||||
import com.android.server.lights.LightsManager;
|
||||
+import com.android.server.lights.LogicalLight;
|
||||
import com.android.server.policy.WindowManagerPolicy;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
--
|
||||
2.25.1
|
||||
|
Loading…
x
Reference in New Issue
Block a user