mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-02 20:23:16 +00:00
audio: Align HAL buffer size logic with the framework am: 4120b99ab6
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2991989 Change-Id: I58035a7f9fa4a2640c728846f7f0ddfc5d47616a Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -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 =
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user