Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a20aa84 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 7775125 from b72b699a to sc-v2-release

Change-Id: I0aad6ef6f2fdf0a5d2072b279a85af9b18a62dcb
parents 91c699a3 b72b699a
Loading
Loading
Loading
Loading
+11 −17
Original line number Diff line number Diff line
@@ -38,14 +38,13 @@ void JitterCalc::init(uint32_t rtpTime, int64_t arrivalTimeUs, int32_t base, int
    mInterArrivalJitterUs = inter;
}

void JitterCalc::putBaseData(int64_t rtpTime, int64_t arrivalTimeUs) {
    // A RTP time wraps around after UINT32_MAX. We must consider this case.
    const int64_t UINT32_MSB = 0x80000000;
    int64_t overflowMask = (mFirstTimeStamp & UINT32_MSB & ~rtpTime) << 1;
    int64_t tempRtpTime = overflowMask | rtpTime;
void JitterCalc::putBaseData(uint32_t rtpTime, int64_t arrivalTimeUs) {
    // A RTP time wraps around after UINT32_MAX. Overflow can present.
    uint32_t diff = 0;
    __builtin_usub_overflow(rtpTime, mFirstTimeStamp, &diff);

    // Base jitter implementation can be various
    int64_t scheduledTimeUs = (tempRtpTime - (int64_t)mFirstTimeStamp) * 1000000ll / mClockRate;
    int64_t scheduledTimeUs = ((int32_t)diff) * 1000000ll / mClockRate;
    int64_t elapsedTimeUs = arrivalTimeUs - mFirstArrivalTimeUs;
    int64_t correctionTimeUs = elapsedTimeUs - scheduledTimeUs; // additional propagation delay;
    mBaseJitterUs = (mBaseJitterUs * 15 + correctionTimeUs) / 16;
@@ -53,18 +52,13 @@ void JitterCalc::putBaseData(int64_t rtpTime, int64_t arrivalTimeUs) {
            (long long)mBaseJitterUs, (long long)correctionTimeUs);
}

void JitterCalc::putInterArrivalData(int64_t rtpTime, int64_t arrivalTimeUs) {
    const int64_t UINT32_MSB = 0x80000000;
    int64_t tempRtpTime = rtpTime;
    int64_t tempLastTimeStamp = mLastTimeStamp;

    // A RTP time wraps around after UINT32_MAX. We must consider this case.
    int64_t overflowMask = (mLastTimeStamp ^ rtpTime) & UINT32_MSB;
    tempRtpTime |= ((overflowMask & ~rtpTime) << 1);
    tempLastTimeStamp |= ((overflowMask & ~mLastTimeStamp) << 1);
void JitterCalc::putInterArrivalData(uint32_t rtpTime, int64_t arrivalTimeUs) {
    // A RTP time wraps around after UINT32_MAX. Overflow can present.
    uint32_t diff = 0;
    __builtin_usub_overflow(rtpTime, mLastTimeStamp, &diff);

    // 6.4.1 of RFC3550 defines this interarrival jitter value.
    int64_t diffTimeStampUs = abs(tempRtpTime - tempLastTimeStamp) * 1000000ll / mClockRate;
    int64_t diffTimeStampUs = abs((int32_t)diff) * 1000000ll / mClockRate;
    int64_t diffArrivalUs = arrivalTimeUs - mLastArrivalTimeUs; // Can't be minus
    ALOGV("diffTimeStampUs %lld \t\t diffArrivalUs %lld",
            (long long)diffTimeStampUs, (long long)diffArrivalUs);
@@ -72,7 +66,7 @@ void JitterCalc::putInterArrivalData(int64_t rtpTime, int64_t arrivalTimeUs) {
    int64_t varianceUs = diffArrivalUs - diffTimeStampUs;
    mInterArrivalJitterUs = (mInterArrivalJitterUs * 15 + abs(varianceUs)) / 16;

    mLastTimeStamp = (uint32_t)rtpTime;
    mLastTimeStamp = rtpTime;
    mLastArrivalTimeUs = arrivalTimeUs;
}

+2 −2
Original line number Diff line number Diff line
@@ -40,8 +40,8 @@ public:
    JitterCalc(int32_t clockRate);

    void init(uint32_t rtpTime, int64_t arrivalTimeUs, int32_t base, int32_t inter);
    void putInterArrivalData(int64_t rtpTime, int64_t arrivalTime);
    void putBaseData(int64_t rtpTime, int64_t arrivalTimeUs);
    void putInterArrivalData(uint32_t rtpTime, int64_t arrivalTime);
    void putBaseData(uint32_t rtpTime, int64_t arrivalTimeUs);
    int32_t getBaseJitterMs();
    int32_t getInterArrivalJitterMs();
};
+9 −5
Original line number Diff line number Diff line
@@ -142,12 +142,15 @@ void AudioPolicyService::onFirstRef()
    sensorPrivacyPolicy->registerSelf();

    // Create spatializer if supported
    if (mAudioPolicyManager != nullptr) {
        Mutex::Autolock _l(mLock);
        const audio_attributes_t attr = attributes_initializer(AUDIO_USAGE_MEDIA);
        AudioDeviceTypeAddrVector devices;
        bool hasSpatializer = mAudioPolicyManager->canBeSpatialized(&attr, nullptr, devices);
        if (hasSpatializer) {
            mSpatializer = Spatializer::create(this);
        }
    }
    AudioSystem::audioPolicyReady();
}

@@ -381,6 +384,7 @@ void AudioPolicyService::doOnCheckSpatializer()
    Mutex::Autolock _l(mLock);

    if (mSpatializer != nullptr) {
        // Note: mSpatializer != nullptr =>  mAudioPolicyManager != nullptr
        if (mSpatializer->getLevel() != media::SpatializationLevel::NONE) {
            audio_io_handle_t currentOutput = mSpatializer->getOutput();
            audio_io_handle_t newOutput;