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

Commit ea70e4df authored by Mikhail Naganov's avatar Mikhail Naganov Committed by Automerger Merge Worker
Browse files

audio: Align HAL buffer size logic with the framework am: 4120b99a

parents e1fe87db 4120b99a
Loading
Loading
Loading
Loading
+2 −8
Original line number Diff line number Diff line
@@ -16,16 +16,13 @@

#include <algorithm>

#define ATRACE_TAG ATRACE_TAG_AUDIO
#define LOG_TAG "AHAL_StreamBluetooth"
#include <Utils.h>
#include <android-base/logging.h>
#include <audio_utils/clock.h>
#include <utils/Trace.h>

#include "core-impl/StreamBluetooth.h"

using aidl::android::hardware::audio::common::frameCountFromDurationUs;
using aidl::android::hardware::audio::common::SinkMetadata;
using aidl::android::hardware::audio::common::SourceMetadata;
using aidl::android::hardware::audio::core::VendorParameter;
@@ -67,8 +64,6 @@ StreamBluetooth::StreamBluetooth(StreamContext* context, const Metadata& metadat
                                       : (mIsInput ? kBluetoothDefaultInputBufferMs
                                                   : kBluetoothDefaultOutputBufferMs) *
                                                 1000),
      mPreferredFrameCount(
              frameCountFromDurationUs(mPreferredDataIntervalUs, pcmConfig.sampleRateHz)),
      mBtDeviceProxy(btDeviceProxy) {}

::android::status_t StreamBluetooth::init() {
@@ -77,6 +72,7 @@ StreamBluetooth::StreamBluetooth(StreamContext* context, const Metadata& metadat
        // This is a normal situation in VTS tests.
        LOG(INFO) << __func__ << ": no BT HAL proxy, stream is non-functional";
    }
    LOG(INFO) << __func__ << ": preferred data interval (us): " << mPreferredDataIntervalUs;
    return ::android::OK;
}

@@ -108,12 +104,10 @@ StreamBluetooth::StreamBluetooth(StreamContext* context, const Metadata& metadat
        LOG(ERROR) << __func__ << ": state= " << mBtDeviceProxy->getState() << " failed to start";
        return -EIO;
    }
    const size_t fc = std::min(frameCount, mPreferredFrameCount);
    const size_t bytesToTransfer = fc * mFrameSizeBytes;
    const size_t bytesToTransfer = frameCount * mFrameSizeBytes;
    const size_t bytesTransferred = mIsInput ? mBtDeviceProxy->readData(buffer, bytesToTransfer)
                                             : mBtDeviceProxy->writeData(buffer, bytesToTransfer);
    *actualFrameCount = bytesTransferred / mFrameSizeBytes;
    ATRACE_INT("BTdropped", bytesToTransfer - bytesTransferred);
    PresentationPosition presentation_position;
    if (!mBtDeviceProxy->getPresentationPosition(presentation_position)) {
        presentation_position.remoteDeviceAudioDelayNanos =
+2 −4
Original line number Diff line number Diff line
@@ -211,10 +211,8 @@ class Module : public BnModule {
        const int32_t rawSizeFrames =
                aidl::android::hardware::audio::common::frameCountFromDurationMs(latencyMs,
                                                                                 sampleRateHz);
        if (latencyMs >= 5) return rawSizeFrames;
        int32_t powerOf2 = 1;
        while (powerOf2 < rawSizeFrames) powerOf2 <<= 1;
        return powerOf2;
        // Round up to nearest 16 frames since in the framework this is the size of a mixer burst.
        return (rawSizeFrames + 15) & ~15;
    }

    ndk::ScopedAStatus bluetoothParametersUpdated();
+0 −1
Original line number Diff line number Diff line
@@ -63,7 +63,6 @@ class StreamBluetooth : public StreamCommonImpl {
    const std::weak_ptr<IBluetoothA2dp> mBluetoothA2dp;
    const std::weak_ptr<IBluetoothLe> mBluetoothLe;
    const size_t mPreferredDataIntervalUs;
    const size_t mPreferredFrameCount;
    mutable std::mutex mLock;
    // The lock is also used to serialize calls to the proxy.
    std::shared_ptr<::android::bluetooth::audio::aidl::BluetoothAudioPortAidl> mBtDeviceProxy