Merge "aaudio: free endpoint to prevent crashes" into rvc-dev
diff --git a/media/codec2/components/vpx/C2SoftVpxEnc.cpp b/media/codec2/components/vpx/C2SoftVpxEnc.cpp
index ebc7a8f..74e105e 100644
--- a/media/codec2/components/vpx/C2SoftVpxEnc.cpp
+++ b/media/codec2/components/vpx/C2SoftVpxEnc.cpp
@@ -67,8 +67,9 @@
mLastTimestamp(0x7FFFFFFFFFFFFFFFull),
mSignalledOutputEos(false),
mSignalledError(false) {
- memset(mTemporalLayerBitrateRatio, 0, sizeof(mTemporalLayerBitrateRatio));
- mTemporalLayerBitrateRatio[0] = 100;
+ for (int i = 0; i < MAXTEMPORALLAYERS; i++) {
+ mTemporalLayerBitrateRatio[i] = 1.0f;
+ }
}
C2SoftVpxEnc::~C2SoftVpxEnc() {
@@ -123,7 +124,8 @@
mFrameRate = mIntf->getFrameRate_l();
mIntraRefresh = mIntf->getIntraRefresh_l();
mRequestSync = mIntf->getRequestSync_l();
- mTemporalLayers = mIntf->getTemporalLayers_l()->m.layerCount;
+ mLayering = mIntf->getTemporalLayers_l();
+ mTemporalLayers = mLayering->m.layerCount;
}
switch (mBitrateMode->value) {
@@ -225,6 +227,7 @@
mTemporalPattern[5] = kTemporalUpdateGoldenRefAltRef;
mTemporalPattern[6] = kTemporalUpdateLastRefAltRef;
mTemporalPattern[7] = kTemporalUpdateNone;
+ mTemporalLayerBitrateRatio[0] = mLayering->m.bitrateRatios[0];
mTemporalPatternLength = 8;
break;
case 3:
@@ -245,6 +248,8 @@
mTemporalPattern[5] = kTemporalUpdateNone;
mTemporalPattern[6] = kTemporalUpdateGoldenRefAltRef;
mTemporalPattern[7] = kTemporalUpdateNone;
+ mTemporalLayerBitrateRatio[0] = mLayering->m.bitrateRatios[0];
+ mTemporalLayerBitrateRatio[1] = mLayering->m.bitrateRatios[1];
mTemporalPatternLength = 8;
break;
default:
@@ -255,7 +260,7 @@
for (size_t i = 0; i < mCodecConfiguration->ts_number_layers; i++) {
mCodecConfiguration->ts_target_bitrate[i] =
mCodecConfiguration->rc_target_bitrate *
- mTemporalLayerBitrateRatio[i] / 100;
+ mTemporalLayerBitrateRatio[i];
}
if (mIntf->getSyncFramePeriod() >= 0) {
mCodecConfiguration->kf_max_dist = mIntf->getSyncFramePeriod();
diff --git a/media/codec2/components/vpx/C2SoftVpxEnc.h b/media/codec2/components/vpx/C2SoftVpxEnc.h
index 62ccd1b..5e34b8a 100644
--- a/media/codec2/components/vpx/C2SoftVpxEnc.h
+++ b/media/codec2/components/vpx/C2SoftVpxEnc.h
@@ -180,7 +180,7 @@
size_t mTemporalLayers;
// Temporal layer bitrare ratio in percentage
- uint32_t mTemporalLayerBitrateRatio[MAXTEMPORALLAYERS];
+ float_t mTemporalLayerBitrateRatio[MAXTEMPORALLAYERS];
// Temporal pattern type
TemporalPatternType mTemporalPatternType;
@@ -218,6 +218,7 @@
std::shared_ptr<C2StreamBitrateInfo::output> mBitrate;
std::shared_ptr<C2StreamBitrateModeTuning::output> mBitrateMode;
std::shared_ptr<C2StreamRequestSyncFrameTuning::output> mRequestSync;
+ std::shared_ptr<C2StreamTemporalLayeringTuning::output> mLayering;
C2_DO_NOT_COPY(C2SoftVpxEnc);
};
diff --git a/services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp b/services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp
index aaa28bc..d5272bc 100644
--- a/services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp
+++ b/services/audiopolicy/common/managerdefinitions/src/AudioOutputDescriptor.cpp
@@ -152,10 +152,16 @@
bool AudioOutputDescriptor::setVolume(float volumeDb,
VolumeSource volumeSource,
const StreamTypeVector &/*streams*/,
- const DeviceTypeSet& /*deviceTypes*/,
+ const DeviceTypeSet& deviceTypes,
uint32_t delayMs,
bool force)
{
+
+ if (!supportedDevices().containsDeviceAmongTypes(deviceTypes)) {
+ ALOGV("%s output ID %d unsupported device %s",
+ __func__, getId(), toString(deviceTypes).c_str());
+ return false;
+ }
// We actually change the volume if:
// - the float value returned by computeVolume() changed
// - the force flag is set