Merge "Remove unused mediaswcodec.rc on system"
diff --git a/media/extractors/TEST_MAPPING b/media/extractors/TEST_MAPPING
index 038b99a..4984b8f 100644
--- a/media/extractors/TEST_MAPPING
+++ b/media/extractors/TEST_MAPPING
@@ -1,7 +1,5 @@
{
"presubmit": [
- // TODO(b/148094059): unit tests not allowed to download content
- // { "name": "ExtractorUnitTest" },
// TODO(b/153661591) enable test once the bug is fixed
// This tests the extractor path
@@ -16,5 +14,14 @@
// }
// ]
// }
+ ],
+
+ // tests which require dynamic content
+ // invoke with: atest -- --enable-module-dynamic-download=true
+ // TODO(b/148094059): unit tests not allowed to download content
+ "dynamic-presubmit": [
+ { "name": "ExtractorUnitTest" }
]
+
+
}
diff --git a/media/libaaudio/src/legacy/AudioStreamRecord.cpp b/media/libaaudio/src/legacy/AudioStreamRecord.cpp
index 43b63d6..a8ae0fb 100644
--- a/media/libaaudio/src/legacy/AudioStreamRecord.cpp
+++ b/media/libaaudio/src/legacy/AudioStreamRecord.cpp
@@ -118,6 +118,7 @@
setDeviceFormat(getFormat());
}
+ // To avoid glitching, let AudioFlinger pick the optimal burst size.
uint32_t notificationFrames = 0;
// Setup the callback if there is one.
@@ -128,7 +129,6 @@
streamTransferType = AudioRecord::transfer_type::TRANSFER_CALLBACK;
callback = getLegacyCallback();
callbackData = this;
- notificationFrames = builder.getFramesPerDataCallback();
}
mCallbackBufferSize = builder.getFramesPerDataCallback();
diff --git a/media/libaaudio/src/legacy/AudioStreamTrack.cpp b/media/libaaudio/src/legacy/AudioStreamTrack.cpp
index 55907b3..4ba08fd 100644
--- a/media/libaaudio/src/legacy/AudioStreamTrack.cpp
+++ b/media/libaaudio/src/legacy/AudioStreamTrack.cpp
@@ -96,6 +96,7 @@
size_t frameCount = (size_t)builder.getBufferCapacity();
+ // To avoid glitching, let AudioFlinger pick the optimal burst size.
int32_t notificationFrames = 0;
const audio_format_t format = (getFormat() == AUDIO_FORMAT_DEFAULT)
@@ -118,9 +119,6 @@
// Take advantage of a special trick that allows us to create a buffer
// that is some multiple of the burst size.
notificationFrames = 0 - DEFAULT_BURSTS_PER_BUFFER_CAPACITY;
- } else {
- // To avoid glitching, let AudioFlinger pick the optimal burst size.
- notificationFrames = 0;
}
}
mCallbackBufferSize = builder.getFramesPerDataCallback();
diff --git a/media/libaudioclient/AudioSystem.cpp b/media/libaudioclient/AudioSystem.cpp
index edb0889..2c20221 100644
--- a/media/libaudioclient/AudioSystem.cpp
+++ b/media/libaudioclient/AudioSystem.cpp
@@ -1635,59 +1635,6 @@
return aps->getDevicesForRoleAndStrategy(strategy, role, devices);
}
-status_t AudioSystem::setDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role,
- const AudioDeviceTypeAddrVector &devices)
-{
- const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
- if (aps == 0) {
- return PERMISSION_DENIED;
- }
- return aps->setDevicesRoleForCapturePreset(audioSource, role, devices);
-}
-
-status_t AudioSystem::addDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role,
- const AudioDeviceTypeAddrVector &devices)
-{
- const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
- if (aps == 0) {
- return PERMISSION_DENIED;
- }
- return aps->addDevicesRoleForCapturePreset(audioSource, role, devices);
-}
-
-status_t AudioSystem::removeDevicesRoleForCapturePreset(
- audio_source_t audioSource, device_role_t role, const AudioDeviceTypeAddrVector& devices)
-{
- const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
- if (aps == 0) {
- return PERMISSION_DENIED;
- }
- return aps->removeDevicesRoleForCapturePreset(audioSource, role, devices);
-}
-
-status_t AudioSystem::clearDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role)
-{
- const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
- if (aps == 0) {
- return PERMISSION_DENIED;
- }
- return aps->clearDevicesRoleForCapturePreset(audioSource, role);
-}
-
-status_t AudioSystem::getDevicesForRoleAndCapturePreset(audio_source_t audioSource,
- device_role_t role,
- AudioDeviceTypeAddrVector &devices)
-{
- const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
- if (aps == 0) {
- return PERMISSION_DENIED;
- }
- return aps->getDevicesForRoleAndCapturePreset(audioSource, role, devices);
-}
-
class CaptureStateListenerImpl : public media::BnCaptureStateListener,
public IBinder::DeathRecipient {
public:
diff --git a/media/libaudioclient/IAudioPolicyService.cpp b/media/libaudioclient/IAudioPolicyService.cpp
index 9d3212b..1491afe 100644
--- a/media/libaudioclient/IAudioPolicyService.cpp
+++ b/media/libaudioclient/IAudioPolicyService.cpp
@@ -119,11 +119,6 @@
AUDIO_MODULES_UPDATED, // oneway
SET_CURRENT_IME_UID,
REGISTER_SOUNDTRIGGER_CAPTURE_STATE_LISTENER,
- SET_DEVICES_ROLE_FOR_CAPTURE_PRESET,
- ADD_DEVICES_ROLE_FOR_CAPTURE_PRESET,
- REMOVE_DEVICES_ROLE_FOR_CAPTURE_PRESET,
- CLEAR_DEVICES_ROLE_FOR_CAPTURE_PRESET,
- GET_DEVICES_FOR_ROLE_AND_CAPTURE_PRESET,
};
#define MAX_ITEMS_PER_LIST 1024
@@ -1413,95 +1408,6 @@
return static_cast<status_t>(reply.readInt32());
}
- virtual status_t setDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role, const AudioDeviceTypeAddrVector &devices) {
- Parcel data, reply;
- data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
- data.writeUint32(static_cast<uint32_t>(audioSource));
- data.writeUint32(static_cast<uint32_t>(role));
- status_t status = data.writeParcelableVector(devices);
- if (status != NO_ERROR) {
- return status;
- }
- status = remote()->transact(SET_DEVICES_ROLE_FOR_CAPTURE_PRESET, data, &reply);
- if (status != NO_ERROR) {
- return status;
- }
- return static_cast<status_t>(reply.readInt32());
- }
-
- virtual status_t addDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role, const AudioDeviceTypeAddrVector &devices)
- {
- Parcel data, reply;
- data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
- data.writeUint32(static_cast<uint32_t>(audioSource));
- data.writeUint32(static_cast<uint32_t>(role));
- status_t status = data.writeParcelableVector(devices);
- if (status != NO_ERROR) {
- return status;
- }
- status = remote()->transact(ADD_DEVICES_ROLE_FOR_CAPTURE_PRESET, data, &reply);
- if (status != NO_ERROR) {
- return status;
- }
- return static_cast<status_t>(reply.readInt32());
- }
-
- virtual status_t removeDevicesRoleForCapturePreset(
- audio_source_t audioSource, device_role_t role,
- const AudioDeviceTypeAddrVector& devices)
- {
- Parcel data, reply;
- data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
- data.writeUint32(static_cast<uint32_t>(audioSource));
- data.writeUint32(static_cast<uint32_t>(role));
- status_t status = data.writeParcelableVector(devices);
- if (status != NO_ERROR) {
- return status;
- }
- status = remote()->transact(REMOVE_DEVICES_ROLE_FOR_CAPTURE_PRESET,
- data, &reply);
- if (status != NO_ERROR) {
- return status;
- }
- return static_cast<status_t>(reply.readInt32());
- }
-
- virtual status_t clearDevicesRoleForCapturePreset(
- audio_source_t audioSource, device_role_t role)
- {
- Parcel data, reply;
- data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
- data.writeUint32(static_cast<uint32_t>(audioSource));
- data.writeUint32(static_cast<uint32_t>(role));
- status_t status = remote()->transact(CLEAR_DEVICES_ROLE_FOR_CAPTURE_PRESET,
- data, &reply);
- if (status != NO_ERROR) {
- return status;
- }
- return static_cast<status_t>(reply.readInt32());
- }
-
- virtual status_t getDevicesForRoleAndCapturePreset(audio_source_t audioSource,
- device_role_t role, AudioDeviceTypeAddrVector &devices)
- {
- Parcel data, reply;
- data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
- data.writeUint32(static_cast<uint32_t>(audioSource));
- data.writeUint32(static_cast<uint32_t>(role));
- status_t status = remote()->transact(GET_DEVICES_FOR_ROLE_AND_CAPTURE_PRESET,
- data, &reply);
- if (status != NO_ERROR) {
- return status;
- }
- status = reply.readParcelableVector(&devices);
- if (status != NO_ERROR) {
- return status;
- }
- return static_cast<status_t>(reply.readInt32());
- }
-
virtual status_t getDevicesForAttributes(const AudioAttributes &aa,
AudioDeviceTypeAddrVector *devices) const
{
@@ -1638,12 +1544,7 @@
case SET_ALLOWED_CAPTURE_POLICY:
case AUDIO_MODULES_UPDATED:
case SET_CURRENT_IME_UID:
- case REGISTER_SOUNDTRIGGER_CAPTURE_STATE_LISTENER:
- case SET_DEVICES_ROLE_FOR_CAPTURE_PRESET:
- case ADD_DEVICES_ROLE_FOR_CAPTURE_PRESET:
- case REMOVE_DEVICES_ROLE_FOR_CAPTURE_PRESET:
- case CLEAR_DEVICES_ROLE_FOR_CAPTURE_PRESET:
- case GET_DEVICES_FOR_ROLE_AND_CAPTURE_PRESET: {
+ case REGISTER_SOUNDTRIGGER_CAPTURE_STATE_LISTENER: {
if (!isServiceUid(IPCThreadState::self()->getCallingUid())) {
ALOGW("%s: transaction %d received from PID %d unauthorized UID %d",
__func__, code, IPCThreadState::self()->getCallingPid(),
@@ -2828,71 +2729,6 @@
return NO_ERROR;
} break;
- case SET_DEVICES_ROLE_FOR_CAPTURE_PRESET: {
- CHECK_INTERFACE(IAudioPolicyService, data, reply);
- audio_source_t audioSource = (audio_source_t) data.readUint32();
- device_role_t role = (device_role_t) data.readUint32();
- AudioDeviceTypeAddrVector devices;
- status_t status = data.readParcelableVector(&devices);
- if (status != NO_ERROR) {
- return status;
- }
- status = setDevicesRoleForCapturePreset(audioSource, role, devices);
- reply->writeInt32(status);
- return NO_ERROR;
- }
-
- case ADD_DEVICES_ROLE_FOR_CAPTURE_PRESET: {
- CHECK_INTERFACE(IAudioPolicyService, data, reply);
- audio_source_t audioSource = (audio_source_t) data.readUint32();
- device_role_t role = (device_role_t) data.readUint32();
- AudioDeviceTypeAddrVector devices;
- status_t status = data.readParcelableVector(&devices);
- if (status != NO_ERROR) {
- return status;
- }
- status = addDevicesRoleForCapturePreset(audioSource, role, devices);
- reply->writeInt32(status);
- return NO_ERROR;
- }
-
- case REMOVE_DEVICES_ROLE_FOR_CAPTURE_PRESET: {
- CHECK_INTERFACE(IAudioPolicyService, data, reply);
- audio_source_t audioSource = (audio_source_t) data.readUint32();
- device_role_t role = (device_role_t) data.readUint32();
- AudioDeviceTypeAddrVector devices;
- status_t status = data.readParcelableVector(&devices);
- if (status != NO_ERROR) {
- return status;
- }
- status = removeDevicesRoleForCapturePreset(audioSource, role, devices);
- reply->writeInt32(status);
- return NO_ERROR;
- }
-
- case CLEAR_DEVICES_ROLE_FOR_CAPTURE_PRESET: {
- CHECK_INTERFACE(IAudioPolicyService, data, reply);
- audio_source_t audioSource = (audio_source_t) data.readUint32();
- device_role_t role = (device_role_t) data.readUint32();
- status_t status = clearDevicesRoleForCapturePreset(audioSource, role);
- reply->writeInt32(status);
- return NO_ERROR;
- }
-
- case GET_DEVICES_FOR_ROLE_AND_CAPTURE_PRESET: {
- CHECK_INTERFACE(IAudioPolicyService, data, reply);
- audio_source_t audioSource = (audio_source_t) data.readUint32();
- device_role_t role = (device_role_t) data.readUint32();
- AudioDeviceTypeAddrVector devices;
- status_t status = getDevicesForRoleAndCapturePreset(audioSource, role, devices);
- status_t marshall_status = reply->writeParcelableVector(devices);
- if (marshall_status != NO_ERROR) {
- return marshall_status;
- }
- reply->writeInt32(status);
- return NO_ERROR;
- }
-
default:
return BBinder::onTransact(code, data, reply, flags);
}
diff --git a/media/libaudioclient/include/media/AudioSystem.h b/media/libaudioclient/include/media/AudioSystem.h
index 848743a..09025d1 100644
--- a/media/libaudioclient/include/media/AudioSystem.h
+++ b/media/libaudioclient/include/media/AudioSystem.h
@@ -433,22 +433,6 @@
static status_t getDevicesForRoleAndStrategy(product_strategy_t strategy,
device_role_t role, AudioDeviceTypeAddrVector &devices);
- static status_t setDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role, const AudioDeviceTypeAddrVector &devices);
-
- static status_t addDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role, const AudioDeviceTypeAddrVector &devices);
-
- static status_t removeDevicesRoleForCapturePreset(
- audio_source_t audioSource, device_role_t role,
- const AudioDeviceTypeAddrVector& devices);
-
- static status_t clearDevicesRoleForCapturePreset(
- audio_source_t audioSource, device_role_t role);
-
- static status_t getDevicesForRoleAndCapturePreset(audio_source_t audioSource,
- device_role_t role, AudioDeviceTypeAddrVector &devices);
-
static status_t getDeviceForStrategy(product_strategy_t strategy,
AudioDeviceTypeAddr &device);
diff --git a/media/libaudioclient/include/media/IAudioPolicyService.h b/media/libaudioclient/include/media/IAudioPolicyService.h
index 2d5f687..afb0fda 100644
--- a/media/libaudioclient/include/media/IAudioPolicyService.h
+++ b/media/libaudioclient/include/media/IAudioPolicyService.h
@@ -252,25 +252,6 @@
device_role_t role,
AudioDeviceTypeAddrVector &devices) = 0;
- virtual status_t setDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role,
- const AudioDeviceTypeAddrVector &devices) = 0;
-
- virtual status_t addDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role,
- const AudioDeviceTypeAddrVector &devices) = 0;
-
- virtual status_t removeDevicesRoleForCapturePreset(
- audio_source_t audioSource, device_role_t role,
- const AudioDeviceTypeAddrVector& devices) = 0;
-
- virtual status_t clearDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role) = 0;
-
- virtual status_t getDevicesForRoleAndCapturePreset(audio_source_t audioSource,
- device_role_t role,
- AudioDeviceTypeAddrVector &devices) = 0;
-
// The return code here is only intended to represent transport errors. The
// actual server implementation should always return NO_ERROR.
virtual status_t registerSoundTriggerCaptureStateListener(
diff --git a/media/libaudiofoundation/AudioDeviceTypeAddr.cpp b/media/libaudiofoundation/AudioDeviceTypeAddr.cpp
index d8fce38..da2e109 100644
--- a/media/libaudiofoundation/AudioDeviceTypeAddr.cpp
+++ b/media/libaudiofoundation/AudioDeviceTypeAddr.cpp
@@ -19,7 +19,6 @@
#include <arpa/inet.h>
#include <iostream>
#include <regex>
-#include <set>
#include <sstream>
namespace android {
@@ -81,14 +80,6 @@
return false;
}
-bool AudioDeviceTypeAddr::operator==(const AudioDeviceTypeAddr &rhs) const {
- return equals(rhs);
-}
-
-bool AudioDeviceTypeAddr::operator!=(const AudioDeviceTypeAddr &rhs) const {
- return !operator==(rhs);
-}
-
void AudioDeviceTypeAddr::reset() {
mType = AUDIO_DEVICE_NONE;
setAddress("");
@@ -127,20 +118,6 @@
return deviceTypes;
}
-AudioDeviceTypeAddrVector excludeDeviceTypeAddrsFrom(
- const AudioDeviceTypeAddrVector& devices,
- const AudioDeviceTypeAddrVector& devicesToExclude) {
- std::set<AudioDeviceTypeAddr> devicesToExcludeSet(
- devicesToExclude.begin(), devicesToExclude.end());
- AudioDeviceTypeAddrVector remainedDevices;
- for (const auto& device : devices) {
- if (devicesToExcludeSet.count(device) == 0) {
- remainedDevices.push_back(device);
- }
- }
- return remainedDevices;
-}
-
std::string dumpAudioDeviceTypeAddrVector(const AudioDeviceTypeAddrVector& deviceTypeAddrs,
bool includeSensitiveInfo) {
std::stringstream stream;
diff --git a/media/libaudiofoundation/include/media/AudioDeviceTypeAddr.h b/media/libaudiofoundation/include/media/AudioDeviceTypeAddr.h
index 7497faf..3e03df7 100644
--- a/media/libaudiofoundation/include/media/AudioDeviceTypeAddr.h
+++ b/media/libaudiofoundation/include/media/AudioDeviceTypeAddr.h
@@ -47,10 +47,6 @@
bool operator<(const AudioDeviceTypeAddr& other) const;
- bool operator==(const AudioDeviceTypeAddr& rhs) const;
-
- bool operator!=(const AudioDeviceTypeAddr& rhs) const;
-
void reset();
std::string toString(bool includeSensitiveInfo=false) const;
@@ -73,14 +69,6 @@
*/
DeviceTypeSet getAudioDeviceTypes(const AudioDeviceTypeAddrVector& deviceTypeAddrs);
-/**
- * Return a collection of AudioDeviceTypeAddrs that are shown in `devices` but not
- * in `devicesToExclude`
- */
-AudioDeviceTypeAddrVector excludeDeviceTypeAddrsFrom(
- const AudioDeviceTypeAddrVector& devices,
- const AudioDeviceTypeAddrVector& devicesToExclude);
-
std::string dumpAudioDeviceTypeAddrVector(const AudioDeviceTypeAddrVector& deviceTypeAddrs,
bool includeSensitiveInfo=false);
diff --git a/media/libmedia/MediaProfiles.cpp b/media/libmedia/MediaProfiles.cpp
index 1be82d8..e8839ba 100644
--- a/media/libmedia/MediaProfiles.cpp
+++ b/media/libmedia/MediaProfiles.cpp
@@ -240,7 +240,10 @@
const size_t nMappings = sizeof(sVideoEncoderNameMap)/sizeof(sVideoEncoderNameMap[0]);
const int codec = findTagForName(sVideoEncoderNameMap, nMappings, atts[1]);
- CHECK(codec != -1);
+ if (codec == -1) {
+ ALOGE("MediaProfiles::createVideoCodec failed to locate codec %s", atts[1]);
+ return nullptr;
+ }
MediaProfiles::VideoCodec *videoCodec =
new MediaProfiles::VideoCodec(static_cast<video_encoder>(codec),
@@ -262,7 +265,10 @@
!strcmp("channels", atts[6]));
const size_t nMappings = sizeof(sAudioEncoderNameMap)/sizeof(sAudioEncoderNameMap[0]);
const int codec = findTagForName(sAudioEncoderNameMap, nMappings, atts[1]);
- CHECK(codec != -1);
+ if (codec == -1) {
+ ALOGE("MediaProfiles::createAudioCodec failed to locate codec %s", atts[1]);
+ return nullptr;
+ }
MediaProfiles::AudioCodec *audioCodec =
new MediaProfiles::AudioCodec(static_cast<audio_encoder>(codec),
@@ -282,7 +288,10 @@
const size_t nMappings = sizeof(sAudioDecoderNameMap)/sizeof(sAudioDecoderNameMap[0]);
const int codec = findTagForName(sAudioDecoderNameMap, nMappings, atts[1]);
- CHECK(codec != -1);
+ if (codec == -1) {
+ ALOGE("MediaProfiles::createAudioDecoderCap failed to locate codec %s", atts[1]);
+ return nullptr;
+ }
MediaProfiles::AudioDecoderCap *cap =
new MediaProfiles::AudioDecoderCap(static_cast<audio_decoder>(codec));
@@ -298,7 +307,10 @@
const size_t nMappings = sizeof(sVideoDecoderNameMap)/sizeof(sVideoDecoderNameMap[0]);
const int codec = findTagForName(sVideoDecoderNameMap, nMappings, atts[1]);
- CHECK(codec != -1);
+ if (codec == -1) {
+ ALOGE("MediaProfiles::createVideoDecoderCap failed to locate codec %s", atts[1]);
+ return nullptr;
+ }
MediaProfiles::VideoDecoderCap *cap =
new MediaProfiles::VideoDecoderCap(static_cast<video_decoder>(codec));
@@ -322,7 +334,10 @@
const size_t nMappings = sizeof(sVideoEncoderNameMap)/sizeof(sVideoEncoderNameMap[0]);
const int codec = findTagForName(sVideoEncoderNameMap, nMappings, atts[1]);
- CHECK(codec != -1);
+ if (codec == -1) {
+ ALOGE("MediaProfiles::createVideoEncoderCap failed to locate codec %s", atts[1]);
+ return nullptr;
+ }
MediaProfiles::VideoEncoderCap *cap =
new MediaProfiles::VideoEncoderCap(static_cast<video_encoder>(codec),
@@ -346,7 +361,10 @@
const size_t nMappings = sizeof(sAudioEncoderNameMap)/sizeof(sAudioEncoderNameMap[0]);
const int codec = findTagForName(sAudioEncoderNameMap, nMappings, atts[1]);
- CHECK(codec != -1);
+ if (codec == -1) {
+ ALOGE("MediaProfiles::createAudioEncoderCap failed to locate codec %s", atts[1]);
+ return nullptr;
+ }
MediaProfiles::AudioEncoderCap *cap =
new MediaProfiles::AudioEncoderCap(static_cast<audio_encoder>(codec), atoi(atts[5]),
@@ -386,11 +404,17 @@
const size_t nProfileMappings = sizeof(sCamcorderQualityNameMap)/
sizeof(sCamcorderQualityNameMap[0]);
const int quality = findTagForName(sCamcorderQualityNameMap, nProfileMappings, atts[1]);
- CHECK(quality != -1);
+ if (quality == -1) {
+ ALOGE("MediaProfiles::createCamcorderProfile failed to locate quality %s", atts[1]);
+ return nullptr;
+ }
const size_t nFormatMappings = sizeof(sFileFormatMap)/sizeof(sFileFormatMap[0]);
const int fileFormat = findTagForName(sFileFormatMap, nFormatMappings, atts[3]);
- CHECK(fileFormat != -1);
+ if (fileFormat == -1) {
+ ALOGE("MediaProfiles::createCamcorderProfile failed to locate file format %s", atts[1]);
+ return nullptr;
+ }
MediaProfiles::CamcorderProfile *profile = new MediaProfiles::CamcorderProfile;
profile->mCameraId = cameraId;
@@ -462,24 +486,39 @@
createAudioCodec(atts, profiles);
} else if (strcmp("VideoEncoderCap", name) == 0 &&
strcmp("true", atts[3]) == 0) {
- profiles->mVideoEncoders.add(createVideoEncoderCap(atts));
+ MediaProfiles::VideoEncoderCap* cap = createVideoEncoderCap(atts);
+ if (cap != nullptr) {
+ profiles->mVideoEncoders.add(cap);
+ }
} else if (strcmp("AudioEncoderCap", name) == 0 &&
strcmp("true", atts[3]) == 0) {
- profiles->mAudioEncoders.add(createAudioEncoderCap(atts));
+ MediaProfiles::AudioEncoderCap* cap = createAudioEncoderCap(atts);
+ if (cap != nullptr) {
+ profiles->mAudioEncoders.add(cap);
+ }
} else if (strcmp("VideoDecoderCap", name) == 0 &&
strcmp("true", atts[3]) == 0) {
- profiles->mVideoDecoders.add(createVideoDecoderCap(atts));
+ MediaProfiles::VideoDecoderCap* cap = createVideoDecoderCap(atts);
+ if (cap != nullptr) {
+ profiles->mVideoDecoders.add(cap);
+ }
} else if (strcmp("AudioDecoderCap", name) == 0 &&
strcmp("true", atts[3]) == 0) {
- profiles->mAudioDecoders.add(createAudioDecoderCap(atts));
+ MediaProfiles::AudioDecoderCap* cap = createAudioDecoderCap(atts);
+ if (cap != nullptr) {
+ profiles->mAudioDecoders.add(cap);
+ }
} else if (strcmp("EncoderOutputFileFormat", name) == 0) {
profiles->mEncoderOutputFileFormats.add(createEncoderOutputFileFormat(atts));
} else if (strcmp("CamcorderProfiles", name) == 0) {
profiles->mCurrentCameraId = getCameraId(atts);
profiles->addStartTimeOffset(profiles->mCurrentCameraId, atts);
} else if (strcmp("EncoderProfile", name) == 0) {
- profiles->mCamcorderProfiles.add(
- createCamcorderProfile(profiles->mCurrentCameraId, atts, profiles->mCameraIds));
+ MediaProfiles::CamcorderProfile* profile = createCamcorderProfile(
+ profiles->mCurrentCameraId, atts, profiles->mCameraIds);
+ if (profile != nullptr) {
+ profiles->mCamcorderProfiles.add(profile);
+ }
} else if (strcmp("ImageEncoding", name) == 0) {
profiles->addImageEncodingQualityLevel(profiles->mCurrentCameraId, atts);
}
diff --git a/media/libstagefright/TEST_MAPPING b/media/libstagefright/TEST_MAPPING
index 3dceef7..a95829c 100644
--- a/media/libstagefright/TEST_MAPPING
+++ b/media/libstagefright/TEST_MAPPING
@@ -1,12 +1,17 @@
{
- "presubmit": [
- // TODO(b/148094059): unit tests not allowed to download content
- // { "name": "HEVCUtilsUnitTest" },
- //{ "name": "ExtractorFactoryTest" },
+ // tests which require dynamic content
+ // invoke with: atest -- --enable-module-dynamic-download=true
+ // TODO(b/148094059): unit tests not allowed to download content
+ "dynamic-presubmit": [
// writerTest fails about 5 out of 66
- // in addition to needing the download ability
- //{ "name": "writerTest" },
+ // { "name": "writerTest" },
+ { "name": "HEVCUtilsUnitTest" },
+ { "name": "ExtractorFactoryTest" }
+
+ ],
+
+ "presubmit": [
{
"name": "CtsMediaTestCases",
"options": [
diff --git a/media/libstagefright/codecs/amrnb/TEST_MAPPING b/media/libstagefright/codecs/amrnb/TEST_MAPPING
index 2909099..343d08a 100644
--- a/media/libstagefright/codecs/amrnb/TEST_MAPPING
+++ b/media/libstagefright/codecs/amrnb/TEST_MAPPING
@@ -1,11 +1,10 @@
// mappings for frameworks/av/media/libstagefright/codecs/amrnb
{
- "presubmit": [
- // TODO(b/148094059): unit tests not allowed to download content
- // { "name": "AmrnbDecoderTest"},
-
- // TODO(b/148094059): unit tests not allowed to download content
- // { "name": "AmrnbEncoderTest"}
-
+ // tests which require dynamic content
+ // invoke with: atest -- --enable-module-dynamic-download=true
+ // TODO(b/148094059): unit tests not allowed to download content
+ "dynamic-presubmit": [
+ { "name": "AmrnbDecoderTest"},
+ { "name": "AmrnbEncoderTest"}
]
}
diff --git a/media/libstagefright/codecs/amrwb/TEST_MAPPING b/media/libstagefright/codecs/amrwb/TEST_MAPPING
index 3d58ba2..0278d26 100644
--- a/media/libstagefright/codecs/amrwb/TEST_MAPPING
+++ b/media/libstagefright/codecs/amrwb/TEST_MAPPING
@@ -1,8 +1,10 @@
// mappings for frameworks/av/media/libstagefright/codecs/amrwb
{
- "presubmit": [
- // TODO(b/148094059): unit tests not allowed to download content
- // { "name": "AmrwbDecoderTest"}
+ // tests which require dynamic content
+ // invoke with: atest -- --enable-module-dynamic-download=true
+ // TODO(b/148094059): unit tests not allowed to download content
+ "dynamic-presubmit": [
+ { "name": "AmrwbDecoderTest"}
]
}
diff --git a/media/libstagefright/codecs/amrwb/test/Android.bp b/media/libstagefright/codecs/amrwb/test/Android.bp
index 968215a..e8a2aa9 100644
--- a/media/libstagefright/codecs/amrwb/test/Android.bp
+++ b/media/libstagefright/codecs/amrwb/test/Android.bp
@@ -16,6 +16,7 @@
cc_test {
name: "AmrwbDecoderTest",
+ test_suites: ["device-tests"],
gtest: true,
srcs: [
diff --git a/media/libstagefright/codecs/amrwbenc/TEST_MAPPING b/media/libstagefright/codecs/amrwbenc/TEST_MAPPING
index d53d665..045e8b3 100644
--- a/media/libstagefright/codecs/amrwbenc/TEST_MAPPING
+++ b/media/libstagefright/codecs/amrwbenc/TEST_MAPPING
@@ -1,8 +1,10 @@
// mappings for frameworks/av/media/libstagefright/codecs/amrwbenc
{
- "presubmit": [
- // TODO(b/148094059): unit tests not allowed to download content
- // { "name": "AmrwbEncoderTest"}
+ // tests which require dynamic content
+ // invoke with: atest -- --enable-module-dynamic-download=true
+ // TODO(b/148094059): unit tests not allowed to download content
+ "dynamic-presubmit": [
+ { "name": "AmrwbEncoderTest"}
]
}
diff --git a/media/libstagefright/codecs/amrwbenc/test/Android.bp b/media/libstagefright/codecs/amrwbenc/test/Android.bp
index 7042bc5..0872570 100644
--- a/media/libstagefright/codecs/amrwbenc/test/Android.bp
+++ b/media/libstagefright/codecs/amrwbenc/test/Android.bp
@@ -16,6 +16,7 @@
cc_test {
name: "AmrwbEncoderTest",
+ test_suites: ["device-tests"],
gtest: true,
srcs: [
diff --git a/media/libstagefright/codecs/m4v_h263/TEST_MAPPING b/media/libstagefright/codecs/m4v_h263/TEST_MAPPING
index 6b42847..ba3ff1c 100644
--- a/media/libstagefright/codecs/m4v_h263/TEST_MAPPING
+++ b/media/libstagefright/codecs/m4v_h263/TEST_MAPPING
@@ -1,7 +1,9 @@
// mappings for frameworks/av/media/libstagefright/codecs/m4v_h263
{
- "presubmit": [
- // TODO(b/148094059): unit tests not allowed to download content
+ // tests which require dynamic content
+ // invoke with: atest -- --enable-module-dynamic-download=true
+ // TODO(b/148094059): unit tests not allowed to download content
+ "dynamic-presubmit": [
// the decoder reports something bad about an unexpected newline in the *config file
// and the config file looks like the AndroidTest.xml file that we put in there.
@@ -9,8 +11,8 @@
// between decode and encode AndroidTest.xml files -- except that encode does NOT
// finish with a newline.
// strange.
- // { "name": "Mpeg4H263DecoderTest"},
- // { "name": "Mpeg4H263EncoderTest"}
+ { "name": "Mpeg4H263DecoderTest"},
+ { "name": "Mpeg4H263EncoderTest"}
]
}
diff --git a/media/libstagefright/codecs/mp3dec/TEST_MAPPING b/media/libstagefright/codecs/mp3dec/TEST_MAPPING
index b237d65..4ef4317 100644
--- a/media/libstagefright/codecs/mp3dec/TEST_MAPPING
+++ b/media/libstagefright/codecs/mp3dec/TEST_MAPPING
@@ -1,7 +1,9 @@
// mappings for frameworks/av/media/libstagefright/codecs/mp3dec
{
- "presubmit": [
- // TODO(b/148094059): unit tests not allowed to download content
- // { "name": "Mp3DecoderTest"}
+ // tests which require dynamic content
+ // invoke with: atest -- --enable-module-dynamic-download=true
+ // TODO(b/148094059): unit tests not allowed to download content
+ "dynamic-presubmit": [
+ { "name": "Mp3DecoderTest"}
]
}
diff --git a/media/libstagefright/foundation/TEST_MAPPING b/media/libstagefright/foundation/TEST_MAPPING
index 0d6a6da..a70c352 100644
--- a/media/libstagefright/foundation/TEST_MAPPING
+++ b/media/libstagefright/foundation/TEST_MAPPING
@@ -1,9 +1,13 @@
// mappings for frameworks/av/media/libstagefright/foundation
{
- "presubmit": [
- // TODO(b/148094059): unit tests not allowed to download content
- //{ "name": "OpusHeaderTest" },
+ // tests which require dynamic content
+ // invoke with: atest -- --enable-module-dynamic-download=true
+ // TODO(b/148094059): unit tests not allowed to download content
+ "dynamic-presubmit": [
+ { "name": "OpusHeaderTest" }
+ ],
+ "presubmit": [
{ "name": "sf_foundation_test" },
{ "name": "MetaDataBaseUnitTest"}
]
diff --git a/media/libstagefright/foundation/tests/OpusHeader/Android.bp b/media/libstagefright/foundation/tests/OpusHeader/Android.bp
index c1251a8..ed3298c 100644
--- a/media/libstagefright/foundation/tests/OpusHeader/Android.bp
+++ b/media/libstagefright/foundation/tests/OpusHeader/Android.bp
@@ -16,6 +16,7 @@
cc_test {
name: "OpusHeaderTest",
+ test_suites: ["device-tests"],
gtest: true,
srcs: [
diff --git a/media/libstagefright/id3/TEST_MAPPING b/media/libstagefright/id3/TEST_MAPPING
index e4454c1..d070d25 100644
--- a/media/libstagefright/id3/TEST_MAPPING
+++ b/media/libstagefright/id3/TEST_MAPPING
@@ -1,9 +1,13 @@
// frameworks/av/media/libstagefright/id3
{
- "presubmit": [
- // TODO(b/148094059): unit tests not allowed to download content
- //{ "name": "ID3Test" },
+ // tests which require dynamic content
+ // invoke with: atest -- --enable-module-dynamic-download=true
+ // TODO(b/148094059): unit tests not allowed to download content
+ "dynamic-presubmit": [
+ { "name": "ID3Test" }
+ ],
+ "presubmit": [
// this doesn't seem to run any tests.
// but: cts-tradefed run -m CtsMediaTestCases -t android.media.cts.MediaMetadataRetrieverTest
// does run he 32 and 64 bit tests, but not the instant tests
diff --git a/media/libstagefright/id3/test/Android.bp b/media/libstagefright/id3/test/Android.bp
index 9d26eec..acf38e2 100644
--- a/media/libstagefright/id3/test/Android.bp
+++ b/media/libstagefright/id3/test/Android.bp
@@ -16,6 +16,7 @@
cc_test {
name: "ID3Test",
+ test_suites: ["device-tests"],
gtest: true,
srcs: ["ID3Test.cpp"],
diff --git a/media/libstagefright/mpeg2ts/TEST_MAPPING b/media/libstagefright/mpeg2ts/TEST_MAPPING
index b25d732..9f4bbdf 100644
--- a/media/libstagefright/mpeg2ts/TEST_MAPPING
+++ b/media/libstagefright/mpeg2ts/TEST_MAPPING
@@ -1,7 +1,9 @@
// frameworks/av/media/libstagefright/mpeg2ts
{
- "presubmit": [
- // TODO(b/148094059): unit tests not allowed to download content
- //{ "name": "Mpeg2tsUnitTest" }
+ // tests which require dynamic content
+ // invoke with: atest -- --enable-module-dynamic-download=true
+ // TODO(b/148094059): unit tests not allowed to download content
+ "dynamic-presubmit": [
+ { "name": "Mpeg2tsUnitTest" }
]
}
diff --git a/media/libstagefright/tests/HEVC/Android.bp b/media/libstagefright/tests/HEVC/Android.bp
index 7a6b959..3762553 100644
--- a/media/libstagefright/tests/HEVC/Android.bp
+++ b/media/libstagefright/tests/HEVC/Android.bp
@@ -16,6 +16,7 @@
cc_test {
name: "HEVCUtilsUnitTest",
+ test_suites: ["device-tests"],
gtest: true,
srcs: [
diff --git a/media/libstagefright/timedtext/TEST_MAPPING b/media/libstagefright/timedtext/TEST_MAPPING
index 185f824..35a5b11 100644
--- a/media/libstagefright/timedtext/TEST_MAPPING
+++ b/media/libstagefright/timedtext/TEST_MAPPING
@@ -1,7 +1,9 @@
// mappings for frameworks/av/media/libstagefright/timedtext
{
- "presubmit": [
- // TODO(b/148094059): unit tests not allowed to download content
- //{ "name": "TimedTextUnitTest" }
+ // tests which require dynamic content
+ // invoke with: atest -- --enable-module-dynamic-download=true
+ // TODO(b/148094059): unit tests not allowed to download content
+ "dynamic-presubmit": [
+ { "name": "TimedTextUnitTest" }
]
}
diff --git a/media/libstagefright/timedtext/test/Android.bp b/media/libstagefright/timedtext/test/Android.bp
index 36f8891..11e5077 100644
--- a/media/libstagefright/timedtext/test/Android.bp
+++ b/media/libstagefright/timedtext/test/Android.bp
@@ -16,6 +16,7 @@
cc_test {
name: "TimedTextUnitTest",
+ test_suites: ["device-tests"],
gtest: true,
srcs: [
diff --git a/services/audiopolicy/AudioPolicyInterface.h b/services/audiopolicy/AudioPolicyInterface.h
index 93819f5..0f3ed14 100644
--- a/services/audiopolicy/AudioPolicyInterface.h
+++ b/services/audiopolicy/AudioPolicyInterface.h
@@ -306,25 +306,6 @@
virtual status_t getDevicesForRoleAndStrategy(product_strategy_t strategy,
device_role_t role,
AudioDeviceTypeAddrVector &devices) = 0;
-
- virtual status_t setDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role,
- const AudioDeviceTypeAddrVector &devices) = 0;
-
- virtual status_t addDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role,
- const AudioDeviceTypeAddrVector &devices) = 0;
-
- virtual status_t removeDevicesRoleForCapturePreset(
- audio_source_t audioSource, device_role_t role,
- const AudioDeviceTypeAddrVector& devices) = 0;
-
- virtual status_t clearDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role) = 0;
-
- virtual status_t getDevicesForRoleAndCapturePreset(audio_source_t audioSource,
- device_role_t role,
- AudioDeviceTypeAddrVector &devices) = 0;
};
diff --git a/services/audiopolicy/engine/common/include/EngineBase.h b/services/audiopolicy/engine/common/include/EngineBase.h
index 4510f63..804a802 100644
--- a/services/audiopolicy/engine/common/include/EngineBase.h
+++ b/services/audiopolicy/engine/common/include/EngineBase.h
@@ -127,36 +127,11 @@
status_t restoreOriginVolumeCurve(audio_stream_type_t stream);
- status_t setDevicesRoleForCapturePreset(audio_source_t audioSource, device_role_t role,
- const AudioDeviceTypeAddrVector &devices) override;
-
- status_t addDevicesRoleForCapturePreset(audio_source_t audioSource, device_role_t role,
- const AudioDeviceTypeAddrVector &devices) override;
-
- /**
- * Remove devices role for capture preset. When `forceMatched` is true, the devices to be
- * removed must all show as role for the capture preset. Otherwise, only devices that has shown
- * as role for the capture preset will be remove.
- */
- status_t doRemoveDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role, const AudioDeviceTypeAddrVector& devices,
- bool forceMatched=true);
-
- status_t removeDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role, const AudioDeviceTypeAddrVector& devices) override;
-
- status_t clearDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role) override;
-
- status_t getDevicesForRoleAndCapturePreset(audio_source_t audioSource,
- device_role_t role, AudioDeviceTypeAddrVector &devices) const override;
-
private:
AudioPolicyManagerObserver *mApmObserver = nullptr;
ProductStrategyMap mProductStrategies;
ProductStrategyPreferredRoutingMap mProductStrategyPreferredDevices;
- CapturePresetDevicesRoleMap mCapturePresetDevicesRole;
VolumeGroupMap mVolumeGroups;
LastRemovableMediaDevices mLastRemovableMediaDevices;
audio_mode_t mPhoneState = AUDIO_MODE_NORMAL; /**< current phone state. */
diff --git a/services/audiopolicy/engine/common/src/EngineBase.cpp b/services/audiopolicy/engine/common/src/EngineBase.cpp
index 1875c10..ae4f7f4 100644
--- a/services/audiopolicy/engine/common/src/EngineBase.cpp
+++ b/services/audiopolicy/engine/common/src/EngineBase.cpp
@@ -19,7 +19,6 @@
#include "EngineBase.h"
#include "EngineDefaultConfig.h"
-#include "../include/EngineBase.h"
#include <TypeConverter.h>
namespace android {
@@ -424,171 +423,6 @@
return NO_ERROR;
}
-status_t EngineBase::setDevicesRoleForCapturePreset(audio_source_t audioSource, device_role_t role,
- const AudioDeviceTypeAddrVector &devices)
-{
- // verify if the audio source is valid
- if (!audio_is_valid_audio_source(audioSource)) {
- ALOGE("%s unknown audio source %u", __func__, audioSource);
- }
-
- switch (role) {
- case DEVICE_ROLE_PREFERRED:
- mCapturePresetDevicesRole[audioSource][role] = devices;
- // When the devices are set as preferred devices, remove them from the disabled devices.
- doRemoveDevicesRoleForCapturePreset(
- audioSource, DEVICE_ROLE_DISABLED, devices, false /*forceMatched*/);
- break;
- case DEVICE_ROLE_DISABLED:
- // TODO: support setting devices role as disabled for capture preset.
- ALOGI("%s no implemented for role as %d", __func__, role);
- break;
- case DEVICE_ROLE_NONE:
- // Intentionally fall-through as it is no need to set device role as none
- default:
- ALOGE("%s invalid role %d", __func__, role);
- return BAD_VALUE;
- }
- return NO_ERROR;
-}
-
-status_t EngineBase::addDevicesRoleForCapturePreset(audio_source_t audioSource, device_role_t role,
- const AudioDeviceTypeAddrVector &devices)
-{
- // verify if the audio source is valid
- if (!audio_is_valid_audio_source(audioSource)) {
- ALOGE("%s unknown audio source %u", __func__, audioSource);
- }
-
- switch (role) {
- case DEVICE_ROLE_PREFERRED:
- mCapturePresetDevicesRole[audioSource][role] = excludeDeviceTypeAddrsFrom(
- mCapturePresetDevicesRole[audioSource][role], devices);
- for (const auto& device : devices) {
- mCapturePresetDevicesRole[audioSource][role].push_back(device);
- }
- // When the devices are set as preferred devices, remove them from the disabled devices.
- doRemoveDevicesRoleForCapturePreset(
- audioSource, DEVICE_ROLE_DISABLED, devices, false /*forceMatched*/);
- break;
- case DEVICE_ROLE_DISABLED:
- // TODO: support setting devices role as disabled for capture preset.
- ALOGI("%s no implemented for role as %d", __func__, role);
- break;
- case DEVICE_ROLE_NONE:
- // Intentionally fall-through as it is no need to set device role as none
- default:
- ALOGE("%s invalid role %d", __func__, role);
- return BAD_VALUE;
- }
- return NO_ERROR;
-}
-
-status_t EngineBase::removeDevicesRoleForCapturePreset(
- audio_source_t audioSource, device_role_t role, const AudioDeviceTypeAddrVector& devices) {
- return doRemoveDevicesRoleForCapturePreset(audioSource, role, devices);
-}
-
-status_t EngineBase::doRemoveDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role, const AudioDeviceTypeAddrVector& devices, bool forceMatched)
-{
- // verify if the audio source is valid
- if (!audio_is_valid_audio_source(audioSource)) {
- ALOGE("%s unknown audio source %u", __func__, audioSource);
- }
-
- switch (role) {
- case DEVICE_ROLE_PREFERRED:
- case DEVICE_ROLE_DISABLED: {
- if (mCapturePresetDevicesRole.count(audioSource) == 0 ||
- mCapturePresetDevicesRole[audioSource].count(role) == 0) {
- return NAME_NOT_FOUND;
- }
- AudioDeviceTypeAddrVector remainingDevices = excludeDeviceTypeAddrsFrom(
- mCapturePresetDevicesRole[audioSource][role], devices);
- if (forceMatched && remainingDevices.size() !=
- mCapturePresetDevicesRole[audioSource][role].size() - devices.size()) {
- // There are some devices from `devicesToRemove` that are not shown in the cached record
- return BAD_VALUE;
- }
- mCapturePresetDevicesRole[audioSource][role] = remainingDevices;
- if (mCapturePresetDevicesRole[audioSource][role].empty()) {
- // Remove the role when device list is empty
- mCapturePresetDevicesRole[audioSource].erase(role);
- }
- } break;
- case DEVICE_ROLE_NONE:
- // Intentionally fall-through as it makes no sense to remove devices with
- // role as DEVICE_ROLE_NONE
- default:
- ALOGE("%s invalid role %d", __func__, role);
- return BAD_VALUE;
- }
- return NO_ERROR;
-}
-
-status_t EngineBase::clearDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role)
-{
- // verify if the audio source is valid
- if (!audio_is_valid_audio_source(audioSource)) {
- ALOGE("%s unknown audio source %u", __func__, audioSource);
- }
-
- switch (role) {
- case DEVICE_ROLE_PREFERRED:
- if (mCapturePresetDevicesRole.count(audioSource) == 0 ||
- mCapturePresetDevicesRole[audioSource].erase(role) == 0) {
- // no preferred device for the given audio source
- return NAME_NOT_FOUND;
- }
- break;
- case DEVICE_ROLE_DISABLED:
- // TODO: support remove devices role as disabled for strategy.
- ALOGI("%s no implemented for role as %d", __func__, role);
- break;
- case DEVICE_ROLE_NONE:
- // Intentionally fall-through as it makes no sense to remove devices with
- // role as DEVICE_ROLE_NONE for a strategy
- default:
- ALOGE("%s invalid role %d", __func__, role);
- return BAD_VALUE;
- }
- return NO_ERROR;
-}
-
-status_t EngineBase::getDevicesForRoleAndCapturePreset(audio_source_t audioSource,
- device_role_t role, AudioDeviceTypeAddrVector &devices) const
-{
- // verify if the audio source is valid
- if (!audio_is_valid_audio_source(audioSource)) {
- ALOGE("%s unknown audio source %u", __func__, audioSource);
- return BAD_VALUE;
- }
-
- switch (role) {
- case DEVICE_ROLE_PREFERRED:
- case DEVICE_ROLE_DISABLED: {
- if (mCapturePresetDevicesRole.count(audioSource) == 0) {
- return NAME_NOT_FOUND;
- }
- auto devIt = mCapturePresetDevicesRole.at(audioSource).find(role);
- if (devIt == mCapturePresetDevicesRole.at(audioSource).end()) {
- ALOGV("%s no devices role(%d) for capture preset %u", __func__, role, audioSource);
- return NAME_NOT_FOUND;
- }
-
- devices = devIt->second;
- } break;
- case DEVICE_ROLE_NONE:
- // Intentionally fall-through as the DEVICE_ROLE_NONE is never set
- default:
- ALOGE("%s invalid role %d", __func__, role);
- return BAD_VALUE;
- }
- return NO_ERROR;
-}
-
void EngineBase::dump(String8 *dst) const
{
mProductStrategies.dump(dst, 2);
diff --git a/services/audiopolicy/engine/interface/EngineInterface.h b/services/audiopolicy/engine/interface/EngineInterface.h
index f64608d..d45e71c 100644
--- a/services/audiopolicy/engine/interface/EngineInterface.h
+++ b/services/audiopolicy/engine/interface/EngineInterface.h
@@ -34,8 +34,6 @@
using DeviceStrategyMap = std::map<product_strategy_t, DeviceVector>;
using StrategyVector = std::vector<product_strategy_t>;
using VolumeGroupVector = std::vector<volume_group_t>;
-using CapturePresetDevicesRoleMap =
- std::map<audio_source_t, std::map<device_role_t, AudioDeviceTypeAddrVector>>;
/**
* This interface is dedicated to the policy manager that a Policy Engine shall implement.
@@ -334,75 +332,6 @@
virtual status_t getDevicesForRoleAndStrategy(product_strategy_t strategy, device_role_t role,
AudioDeviceTypeAddrVector &devices) const = 0;
- /**
- * @brief setDevicesRoleForCapturePreset sets devices role for a capture preset when available.
- * To remove devices role, removeDevicesRoleForCapturePreset must be called. Calling
- * clearDevicesRoleForCapturePreset will remove all devices as role. When devices role is set
- * successfully, previously set devices for the same role and capture preset will be removed.
- * @param audioSource the audio capture preset whose routing will be affected
- * @param role the role of the devices for the capture preset. All device roles are defined at
- * system/media/audio/include/system/audio_policy.h. DEVICE_ROLE_NONE is invalid
- * for setting.
- * @param devices the audio devices to be set
- * @return BAD_VALUE if the capture preset or role is invalid,
- * or NO_ERROR if the role of the devices for capture preset was set
- */
- virtual status_t setDevicesRoleForCapturePreset(audio_source_t audioSource, device_role_t role,
- const AudioDeviceTypeAddrVector &devices) = 0;
-
- /**
- * @brief addDevicesRoleForCapturePreset adds devices role for a capture preset when available.
- * To remove devices role, removeDevicesRoleForCapturePreset must be called. Calling
- * clearDevicesRoleForCapturePreset will remove all devices as role.
- * @param audioSource the audio capture preset whose routing will be affected
- * @param role the role of the devices for the capture preset. All device roles are defined at
- * system/media/audio/include/system/audio_policy.h. DEVICE_ROLE_NONE is invalid
- * for setting.
- * @param devices the audio devices to be added
- * @return BAD_VALUE if the capture preset or role is invalid,
- * or NO_ERROR if the role of the devices for capture preset was added
- */
- virtual status_t addDevicesRoleForCapturePreset(audio_source_t audioSource, device_role_t role,
- const AudioDeviceTypeAddrVector &devices) = 0;
-
- /**
- * @brief removeDevicesRoleForCapturePreset removes the role of device(s) previously set
- * for the given capture preset
- * @param audioSource the audio capture preset whose routing will be affected
- * @param role the role of the devices for the capture preset
- * @param devices the devices to be removed
- * @return BAD_VALUE if 1) the capture preset is invalid, 2) role is invalid or 3) the list of
- * devices to be removed are not all present as role for a capture preset
- * or NO_ERROR if the devices for this role was removed
- */
- virtual status_t removeDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role, const AudioDeviceTypeAddrVector& devices) = 0;
-
- /**
- * @brief clearDevicesRoleForCapturePreset removes the role of all device(s) previously set
- * for the given capture preset
- * @param audioSource the audio capture preset whose routing will be affected
- * @param role the role of the devices for the capture preset
- * @return BAD_VALUE if the capture preset or role is invalid,
- * or NO_ERROR if the devices for this role was removed
- */
- virtual status_t clearDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role);
-
- /**
- * @brief getDevicesForRoleAndCapturePreset queries which devices have the specified role for
- * the specified capture preset
- * @param audioSource the capture preset to query
- * @param role the role of the devices to query
- * @param devices returns list of devices with matching role for the specified capture preset.
- * DEVICE_ROLE_NONE is invalid as input.
- * @return BAD_VALUE if the capture preset or role is invalid,
- * or NAME_NOT_FOUND if no device for the role and capture preset was set
- * or NO_ERROR if the devices parameter contains a list of devices
- */
- virtual status_t getDevicesForRoleAndCapturePreset(audio_source_t audioSource,
- device_role_t role, AudioDeviceTypeAddrVector &devices) const = 0;
-
virtual void dump(String8 *dst) const = 0;
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
index 830b74c..f8122e8 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
@@ -3116,7 +3116,7 @@
devices[i].mType, devices[i].getAddress(), String8(),
AUDIO_FORMAT_DEFAULT, false /*allowToCreate*/, true /*matchAddress*/);
if (devDesc == nullptr || (predicate != nullptr && !predicate(devices[i].mType))) {
- ALOGE("%s: device type %#x address %s not supported or not match predicate",
+ ALOGE("%s: device type %#x address %s not supported or not an output device",
context, devices[i].mType, devices[i].getAddress());
return false;
}
@@ -3228,72 +3228,6 @@
return mEngine->getDevicesForRoleAndStrategy(strategy, role, devices);
}
-status_t AudioPolicyManager::setDevicesRoleForCapturePreset(
- audio_source_t audioSource, device_role_t role, const AudioDeviceTypeAddrVector &devices) {
- ALOGV("%s() audioSource=%d role=%d %s", __func__, audioSource, role,
- dumpAudioDeviceTypeAddrVector(devices).c_str());
-
- if (!areAllDevicesSupported(devices, audio_is_input_device, __func__)) {
- return BAD_VALUE;
- }
- status_t status = mEngine->setDevicesRoleForCapturePreset(audioSource, role, devices);
- ALOGW_IF(status != NO_ERROR,
- "Engine could not set preferred devices %s for audio source %d role %d",
- dumpAudioDeviceTypeAddrVector(devices).c_str(), audioSource, role);
-
- return status;
-}
-
-status_t AudioPolicyManager::addDevicesRoleForCapturePreset(
- audio_source_t audioSource, device_role_t role, const AudioDeviceTypeAddrVector &devices) {
- ALOGV("%s() audioSource=%d role=%d %s", __func__, audioSource, role,
- dumpAudioDeviceTypeAddrVector(devices).c_str());
-
- if (!areAllDevicesSupported(devices, audio_is_input_device, __func__)) {
- return BAD_VALUE;
- }
- status_t status = mEngine->addDevicesRoleForCapturePreset(audioSource, role, devices);
- ALOGW_IF(status != NO_ERROR,
- "Engine could not add preferred devices %s for audio source %d role %d",
- dumpAudioDeviceTypeAddrVector(devices).c_str(), audioSource, role);
-
- return status;
-}
-
-status_t AudioPolicyManager::removeDevicesRoleForCapturePreset(
- audio_source_t audioSource, device_role_t role, const AudioDeviceTypeAddrVector& devices)
-{
- ALOGV("%s() audioSource=%d role=%d devices=%s", __func__, audioSource, role,
- dumpAudioDeviceTypeAddrVector(devices).c_str());
-
- if (!areAllDevicesSupported(devices, audio_is_input_device, __func__)) {
- return BAD_VALUE;
- }
-
- status_t status = mEngine->removeDevicesRoleForCapturePreset(
- audioSource, role, devices);
- ALOGW_IF(status != NO_ERROR,
- "Engine could not remove devices role (%d) for capture preset %d", role, audioSource);
-
- return status;
-}
-
-status_t AudioPolicyManager::clearDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role) {
- ALOGV("%s() audioSource=%d role=%d", __func__, audioSource, role);
-
- status_t status = mEngine->clearDevicesRoleForCapturePreset(audioSource, role);
- ALOGW_IF(status != NO_ERROR,
- "Engine could not clear devices role (%d) for capture preset %d", role, audioSource);
-
- return status;
-}
-
-status_t AudioPolicyManager::getDevicesForRoleAndCapturePreset(
- audio_source_t audioSource, device_role_t role, AudioDeviceTypeAddrVector &devices) {
- return mEngine->getDevicesForRoleAndCapturePreset(audioSource, role, devices);
-}
-
status_t AudioPolicyManager::setUserIdDeviceAffinities(int userId,
const AudioDeviceTypeAddrVector& devices) {
ALOGI("%s() userId=%d num devices %zu", __func__, userId, devices.size());
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.h b/services/audiopolicy/managerdefault/AudioPolicyManager.h
index 217013f..11077f1 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.h
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.h
@@ -281,25 +281,6 @@
device_role_t role,
AudioDeviceTypeAddrVector &devices);
- virtual status_t setDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role,
- const AudioDeviceTypeAddrVector &devices);
-
- virtual status_t addDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role,
- const AudioDeviceTypeAddrVector &devices);
-
- virtual status_t removeDevicesRoleForCapturePreset(
- audio_source_t audioSource, device_role_t role,
- const AudioDeviceTypeAddrVector& devices);
-
- virtual status_t clearDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role);
-
- virtual status_t getDevicesForRoleAndCapturePreset(audio_source_t audioSource,
- device_role_t role,
- AudioDeviceTypeAddrVector &devices);
-
virtual status_t startAudioSource(const struct audio_port_config *source,
const audio_attributes_t *attributes,
audio_port_handle_t *portId,
diff --git a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
index 14e5236..7d1ad63 100644
--- a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
+++ b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
@@ -1534,55 +1534,4 @@
return NO_ERROR;
}
-status_t AudioPolicyService::setDevicesRoleForCapturePreset(
- audio_source_t audioSource, device_role_t role, const AudioDeviceTypeAddrVector &devices)
-{
- if (mAudioPolicyManager == nullptr) {
- return NO_INIT;
- }
- Mutex::Autolock _l(mLock);
- return mAudioPolicyManager->setDevicesRoleForCapturePreset(audioSource, role, devices);
-}
-
-status_t AudioPolicyService::addDevicesRoleForCapturePreset(
- audio_source_t audioSource, device_role_t role, const AudioDeviceTypeAddrVector &devices)
-{
- if (mAudioPolicyManager == nullptr) {
- return NO_INIT;
- }
- Mutex::Autolock _l(mLock);
- return mAudioPolicyManager->addDevicesRoleForCapturePreset(audioSource, role, devices);
-}
-
-status_t AudioPolicyService::removeDevicesRoleForCapturePreset(
- audio_source_t audioSource, device_role_t role, const AudioDeviceTypeAddrVector& devices)
-{
- if (mAudioPolicyManager == nullptr) {
- return NO_INIT;
- }
- Mutex::Autolock _l(mLock);
- return mAudioPolicyManager->removeDevicesRoleForCapturePreset(audioSource, role, devices);
-}
-
-status_t AudioPolicyService::clearDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role)
-{
- if (mAudioPolicyManager == nullptr) {
- return NO_INIT;
- }
- Mutex::Autolock _l(mLock);
- return mAudioPolicyManager->clearDevicesRoleForCapturePreset(audioSource, role);
-}
-
-status_t AudioPolicyService::getDevicesForRoleAndCapturePreset(audio_source_t audioSource,
- device_role_t role,
- AudioDeviceTypeAddrVector &devices)
-{
- if (mAudioPolicyManager == nullptr) {
- return NO_INIT;
- }
- Mutex::Autolock _l(mLock);
- return mAudioPolicyManager->getDevicesForRoleAndCapturePreset(audioSource, role, devices);
-}
-
} // namespace android
diff --git a/services/audiopolicy/service/AudioPolicyService.h b/services/audiopolicy/service/AudioPolicyService.h
index 0b218c2..a851863 100644
--- a/services/audiopolicy/service/AudioPolicyService.h
+++ b/services/audiopolicy/service/AudioPolicyService.h
@@ -240,25 +240,6 @@
device_role_t role,
AudioDeviceTypeAddrVector &devices);
- virtual status_t setDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role,
- const AudioDeviceTypeAddrVector &devices);
-
- virtual status_t addDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role,
- const AudioDeviceTypeAddrVector &devices);
-
- virtual status_t removeDevicesRoleForCapturePreset(
- audio_source_t audioSource, device_role_t role,
- const AudioDeviceTypeAddrVector& devices);
-
- virtual status_t clearDevicesRoleForCapturePreset(audio_source_t audioSource,
- device_role_t role);
-
- virtual status_t getDevicesForRoleAndCapturePreset(audio_source_t audioSource,
- device_role_t role,
- AudioDeviceTypeAddrVector &devices);
-
virtual status_t setUserIdDeviceAffinities(int userId,
const AudioDeviceTypeAddrVector& devices);
diff --git a/services/audiopolicy/tests/Android.bp b/services/audiopolicy/tests/Android.bp
index ca03e1f..efdb241 100644
--- a/services/audiopolicy/tests/Android.bp
+++ b/services/audiopolicy/tests/Android.bp
@@ -18,10 +18,7 @@
"libxml2",
],
- static_libs: [
- "libaudiopolicycomponents",
- "libgmock"
- ],
+ static_libs: ["libaudiopolicycomponents"],
header_libs: [
"libaudiopolicycommon",
diff --git a/services/audiopolicy/tests/audiopolicymanager_tests.cpp b/services/audiopolicy/tests/audiopolicymanager_tests.cpp
index ed9ec8c..a0074bc 100644
--- a/services/audiopolicy/tests/audiopolicymanager_tests.cpp
+++ b/services/audiopolicy/tests/audiopolicymanager_tests.cpp
@@ -20,7 +20,6 @@
#include <unistd.h>
#include <gtest/gtest.h>
-#include <gmock/gmock.h>
#define LOG_TAG "APM_Test"
#include <Serializer.h>
@@ -37,7 +36,6 @@
#include "AudioPolicyTestManager.h"
using namespace android;
-using testing::UnorderedElementsAre;
TEST(AudioPolicyManagerTestInit, EngineFailure) {
AudioPolicyTestClient client;
@@ -1190,109 +1188,3 @@
EXPECT_GT(mClient->getAudioPortListUpdateCount(), prevAudioPortListUpdateCount);
EXPECT_GT(mManager->getAudioPortGeneration(), prevAudioPortGeneration);
}
-
-using DevicesRoleForCapturePresetParam = std::tuple<audio_source_t, device_role_t>;
-
-class AudioPolicyManagerDevicesRoleForCapturePresetTest
- : public AudioPolicyManagerTestWithConfigurationFile,
- public testing::WithParamInterface<DevicesRoleForCapturePresetParam> {
-protected:
- // The `inputDevice` and `inputDevice2` indicate the audio devices type to be used for setting
- // device role. They must be declared in the test_audio_policy_configuration.xml
- AudioDeviceTypeAddr inputDevice = AudioDeviceTypeAddr(AUDIO_DEVICE_IN_BUILTIN_MIC, "");
- AudioDeviceTypeAddr inputDevice2 = AudioDeviceTypeAddr(AUDIO_DEVICE_IN_HDMI, "");
-};
-
-TEST_P(AudioPolicyManagerDevicesRoleForCapturePresetTest, DevicesRoleForCapturePreset) {
- const audio_source_t audioSource = std::get<0>(GetParam());
- const device_role_t role = std::get<1>(GetParam());
-
- // Test invalid device when setting
- const AudioDeviceTypeAddr outputDevice(AUDIO_DEVICE_OUT_SPEAKER, "");
- const AudioDeviceTypeAddrVector outputDevices = {outputDevice};
- ASSERT_EQ(BAD_VALUE,
- mManager->setDevicesRoleForCapturePreset(audioSource, role, outputDevices));
- ASSERT_EQ(BAD_VALUE,
- mManager->addDevicesRoleForCapturePreset(audioSource, role, outputDevices));
- AudioDeviceTypeAddrVector devices;
- ASSERT_EQ(NAME_NOT_FOUND,
- mManager->getDevicesForRoleAndCapturePreset(audioSource, role, devices));
- ASSERT_TRUE(devices.empty());
- ASSERT_EQ(BAD_VALUE,
- mManager->removeDevicesRoleForCapturePreset(audioSource, role, outputDevices));
-
- // Without setting, call get/remove/clear must fail
- ASSERT_EQ(NAME_NOT_FOUND,
- mManager->getDevicesForRoleAndCapturePreset(audioSource, role, devices));
- ASSERT_EQ(NAME_NOT_FOUND,
- mManager->removeDevicesRoleForCapturePreset(audioSource, role, devices));
- ASSERT_EQ(NAME_NOT_FOUND,
- mManager->clearDevicesRoleForCapturePreset(audioSource, role));
-
- // Test set/get devices role
- const AudioDeviceTypeAddrVector inputDevices = {inputDevice};
- ASSERT_EQ(NO_ERROR,
- mManager->setDevicesRoleForCapturePreset(audioSource, role, inputDevices));
- ASSERT_EQ(NO_ERROR, mManager->getDevicesForRoleAndCapturePreset(audioSource, role, devices));
- EXPECT_THAT(devices, UnorderedElementsAre(inputDevice));
-
- // Test setting will change the previously set devices
- const AudioDeviceTypeAddrVector inputDevices2 = {inputDevice2};
- ASSERT_EQ(NO_ERROR,
- mManager->setDevicesRoleForCapturePreset(audioSource, role, inputDevices2));
- devices.clear();
- ASSERT_EQ(NO_ERROR, mManager->getDevicesForRoleAndCapturePreset(audioSource, role, devices));
- EXPECT_THAT(devices, UnorderedElementsAre(inputDevice2));
-
- // Test add devices
- ASSERT_EQ(NO_ERROR,
- mManager->addDevicesRoleForCapturePreset(audioSource, role, inputDevices));
- devices.clear();
- ASSERT_EQ(NO_ERROR, mManager->getDevicesForRoleAndCapturePreset(audioSource, role, devices));
- EXPECT_THAT(devices, UnorderedElementsAre(inputDevice, inputDevice2));
-
- // Test remove devices
- ASSERT_EQ(NO_ERROR,
- mManager->removeDevicesRoleForCapturePreset(audioSource, role, inputDevices));
- devices.clear();
- ASSERT_EQ(NO_ERROR, mManager->getDevicesForRoleAndCapturePreset(audioSource, role, devices));
- EXPECT_THAT(devices, UnorderedElementsAre(inputDevice2));
-
- // Test remove devices that are not set as the device role
- ASSERT_EQ(BAD_VALUE,
- mManager->removeDevicesRoleForCapturePreset(audioSource, role, inputDevices));
-
- // Test clear devices
- ASSERT_EQ(NO_ERROR,
- mManager->clearDevicesRoleForCapturePreset(audioSource, role));
- devices.clear();
- ASSERT_EQ(NAME_NOT_FOUND,
- mManager->getDevicesForRoleAndCapturePreset(audioSource, role, devices));
-}
-
-INSTANTIATE_TEST_CASE_P(
- DevicesRoleForCapturePresetOperation,
- AudioPolicyManagerDevicesRoleForCapturePresetTest,
- testing::Values(
- DevicesRoleForCapturePresetParam({AUDIO_SOURCE_MIC, DEVICE_ROLE_PREFERRED}),
- DevicesRoleForCapturePresetParam({AUDIO_SOURCE_VOICE_UPLINK,
- DEVICE_ROLE_PREFERRED}),
- DevicesRoleForCapturePresetParam({AUDIO_SOURCE_VOICE_DOWNLINK,
- DEVICE_ROLE_PREFERRED}),
- DevicesRoleForCapturePresetParam({AUDIO_SOURCE_VOICE_CALL, DEVICE_ROLE_PREFERRED}),
- DevicesRoleForCapturePresetParam({AUDIO_SOURCE_CAMCORDER, DEVICE_ROLE_PREFERRED}),
- DevicesRoleForCapturePresetParam({AUDIO_SOURCE_VOICE_RECOGNITION,
- DEVICE_ROLE_PREFERRED}),
- DevicesRoleForCapturePresetParam({AUDIO_SOURCE_VOICE_COMMUNICATION,
- DEVICE_ROLE_PREFERRED}),
- DevicesRoleForCapturePresetParam({AUDIO_SOURCE_REMOTE_SUBMIX,
- DEVICE_ROLE_PREFERRED}),
- DevicesRoleForCapturePresetParam({AUDIO_SOURCE_UNPROCESSED, DEVICE_ROLE_PREFERRED}),
- DevicesRoleForCapturePresetParam({AUDIO_SOURCE_VOICE_PERFORMANCE,
- DEVICE_ROLE_PREFERRED}),
- DevicesRoleForCapturePresetParam({AUDIO_SOURCE_ECHO_REFERENCE,
- DEVICE_ROLE_PREFERRED}),
- DevicesRoleForCapturePresetParam({AUDIO_SOURCE_FM_TUNER, DEVICE_ROLE_PREFERRED}),
- DevicesRoleForCapturePresetParam({AUDIO_SOURCE_HOTWORD, DEVICE_ROLE_PREFERRED})
- )
- );
diff --git a/services/oboeservice/AAudioServiceEndpointCapture.cpp b/services/oboeservice/AAudioServiceEndpointCapture.cpp
index 206a264..1401120 100644
--- a/services/oboeservice/AAudioServiceEndpointCapture.cpp
+++ b/services/oboeservice/AAudioServiceEndpointCapture.cpp
@@ -65,7 +65,7 @@
result = getStreamInternal()->read(mDistributionBuffer.get(),
getFramesPerBurst(), timeoutNanos);
if (result == AAUDIO_ERROR_DISCONNECTED) {
- disconnectRegisteredStreams();
+ ALOGV("%s() read() returned AAUDIO_ERROR_DISCONNECTED, break", __func__);
break;
} else if (result != getFramesPerBurst()) {
ALOGW("callbackLoop() read %d / %d",
diff --git a/services/oboeservice/AAudioServiceEndpointPlay.cpp b/services/oboeservice/AAudioServiceEndpointPlay.cpp
index 730d161..08d2319 100644
--- a/services/oboeservice/AAudioServiceEndpointPlay.cpp
+++ b/services/oboeservice/AAudioServiceEndpointPlay.cpp
@@ -146,7 +146,7 @@
result = getStreamInternal()->write(mMixer.getOutputBuffer(),
getFramesPerBurst(), timeoutNanos);
if (result == AAUDIO_ERROR_DISCONNECTED) {
- AAudioServiceEndpointShared::disconnectRegisteredStreams();
+ ALOGV("%s() write() returned AAUDIO_ERROR_DISCONNECTED, break", __func__);
break;
} else if (result != getFramesPerBurst()) {
ALOGW("callbackLoop() wrote %d / %d",