Merge "Revist C2HandleGralloc::WrapNativeHandle"
diff --git a/media/ndk/NdkImageReader.cpp b/media/ndk/NdkImageReader.cpp
index 1a0c3b1..010c1aa 100644
--- a/media/ndk/NdkImageReader.cpp
+++ b/media/ndk/NdkImageReader.cpp
@@ -308,6 +308,9 @@
ALOGE("Failed to set BufferItemConsumer buffer dataSpace");
return AMEDIA_ERROR_UNKNOWN;
}
+ if (mUsage & AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT) {
+ gbConsumer->setConsumerIsProtected(true);
+ }
mSurface = new Surface(mProducer, /*controlledByApp*/true);
if (mSurface == nullptr) {
diff --git a/services/audiopolicy/common/managerdefinitions/include/IOProfile.h b/services/audiopolicy/common/managerdefinitions/include/IOProfile.h
index dc409a7..e0b56d4 100644
--- a/services/audiopolicy/common/managerdefinitions/include/IOProfile.h
+++ b/services/audiopolicy/common/managerdefinitions/include/IOProfile.h
@@ -121,6 +121,9 @@
bool deviceSupportsEncodedFormats(audio_devices_t device) const
{
+ if (device == AUDIO_DEVICE_NONE) {
+ return true; // required for isOffloadSupported() check
+ }
DeviceVector deviceList =
mSupportedDevices.getDevicesFromTypeMask(device);
if (!deviceList.empty()) {
diff --git a/services/audiopolicy/common/managerdefinitions/src/AudioInputDescriptor.cpp b/services/audiopolicy/common/managerdefinitions/src/AudioInputDescriptor.cpp
index 55d4db4..c880e67 100644
--- a/services/audiopolicy/common/managerdefinitions/src/AudioInputDescriptor.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/AudioInputDescriptor.cpp
@@ -257,15 +257,21 @@
void AudioInputDescriptor::close()
{
if (mIoHandle != AUDIO_IO_HANDLE_NONE) {
+ // clean up active clients if any (can happen if close() is called to force
+ // clients to reconnect
+ for (const auto &client : getClientIterable()) {
+ if (client->active()) {
+ ALOGW("%s client with port ID %d still active on input %d",
+ __func__, client->portId(), mId);
+ setClientActive(client, false);
+ stop();
+ }
+ }
+
mClientInterface->closeInput(mIoHandle);
LOG_ALWAYS_FATAL_IF(mProfile->curOpenCount < 1, "%s profile open count %u",
__FUNCTION__, mProfile->curOpenCount);
- // do not call stop() here as stop() is supposed to be called after
- // setClientActive(client, false) and we don't know how many clients
- // are still active at this time
- if (isActive()) {
- mProfile->curActiveCount--;
- }
+
mProfile->curOpenCount--;
LOG_ALWAYS_FATAL_IF(mProfile->curOpenCount < mProfile->curActiveCount,
"%s(%d): mProfile->curOpenCount %d < mProfile->curActiveCount %d.",
diff --git a/services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp b/services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp
index 57328f0..78b3f45 100644
--- a/services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp
@@ -563,6 +563,17 @@
void SwAudioOutputDescriptor::close()
{
if (mIoHandle != AUDIO_IO_HANDLE_NONE) {
+ // clean up active clients if any (can happen if close() is called to force
+ // clients to reconnect
+ for (const auto &client : getClientIterable()) {
+ if (client->active()) {
+ ALOGW("%s client with port ID %d still active on output %d",
+ __func__, client->portId(), mId);
+ setClientActive(client, false);
+ stop();
+ }
+ }
+
AudioParameter param;
param.add(String8("closing"), String8("true"));
mClientInterface->setParameters(mIoHandle, param.toString());
@@ -571,11 +582,6 @@
LOG_ALWAYS_FATAL_IF(mProfile->curOpenCount < 1, "%s profile open count %u",
__FUNCTION__, mProfile->curOpenCount);
- // do not call stop() here as stop() is supposed to be called after setClientActive(false)
- // and we don't know how many streams are still active at this time
- if (isActive()) {
- mProfile->curActiveCount--;
- }
mProfile->curOpenCount--;
mIoHandle = AUDIO_IO_HANDLE_NONE;
}
diff --git a/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp b/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
index 1bc4ec8..dc5b238 100644
--- a/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/DeviceDescriptor.cpp
@@ -51,12 +51,6 @@
mEncodedFormats.add(AUDIO_FORMAT_AC3);
mEncodedFormats.add(AUDIO_FORMAT_IEC61937);
}
- // For backward compatibility always indicate support for SBC and AAC if no
- // supported format is listed in the configuration file
- if ((type & AUDIO_DEVICE_OUT_ALL_A2DP) != 0 && mEncodedFormats.isEmpty()) {
- mEncodedFormats.add(AUDIO_FORMAT_SBC);
- mEncodedFormats.add(AUDIO_FORMAT_AAC);
- }
}
audio_port_handle_t DeviceDescriptor::getId() const
@@ -102,11 +96,19 @@
if (!device_has_encoding_capability(type())) {
return true;
}
+ if (mEncodedFormats.isEmpty()) {
+ return true;
+ }
+
return (mCurrentEncodedFormat != AUDIO_FORMAT_DEFAULT);
}
bool DeviceDescriptor::supportsFormat(audio_format_t format)
{
+ if (mEncodedFormats.isEmpty()) {
+ return true;
+ }
+
for (const auto& devFormat : mEncodedFormats) {
if (devFormat == format) {
return true;
diff --git a/services/mediacodec/seccomp_policy/mediacodec-x86.policy b/services/mediacodec/seccomp_policy/mediacodec-x86.policy
index 966e214..6d88c84 100644
--- a/services/mediacodec/seccomp_policy/mediacodec-x86.policy
+++ b/services/mediacodec/seccomp_policy/mediacodec-x86.policy
@@ -18,15 +18,19 @@
openat: 1
open: 1
getuid32: 1
+getuid: 1
+getrlimit: 1
writev: 1
ioctl: 1
close: 1
mmap2: 1
+mmap: 1
fstat64: 1
stat64: 1
statfs64: 1
madvise: 1
fstatat64: 1
+newfstatat: 1
futex: 1
munmap: 1
faccessat: 1