feat: A2DP bluetooth audio working
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
#include <cstdint>
|
||||
#include <Drivers/Audio/IntelHda.hpp>
|
||||
#include <Drivers/Audio/Mixer.hpp>
|
||||
#include <Terminal/Terminal.hpp>
|
||||
#include <Drivers/USB/Bluetooth/Bluetooth.hpp>
|
||||
#include <Drivers/USB/Bluetooth/A2dp.hpp>
|
||||
#include <Sched/Scheduler.hpp>
|
||||
@@ -35,8 +36,15 @@ namespace Montauk {
|
||||
state == Drivers::USB::Bluetooth::A2dp::State::Streaming ||
|
||||
state == Drivers::USB::Bluetooth::A2dp::State::Configured) {
|
||||
Drivers::USB::Bluetooth::A2dp::ConfigureStream(sampleRate, channels, bitsPerSample);
|
||||
Drivers::USB::Bluetooth::A2dp::StartStream();
|
||||
return AUDIO_HANDLE_BT;
|
||||
if (Drivers::USB::Bluetooth::A2dp::StartStream()) {
|
||||
return AUDIO_HANDLE_BT;
|
||||
}
|
||||
// Stream would not start (sink unresponsive / state desync):
|
||||
// returning the BT handle anyway would make every write fail
|
||||
// with the app stuck reporting "playing" at 0:00. Fall through
|
||||
// to the speakers instead.
|
||||
Kt::KernelLogStream(Kt::WARNING, "Audio")
|
||||
<< "BT A2DP stream failed to start; falling back to HDA";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,7 +64,7 @@ namespace Montauk {
|
||||
|
||||
static int64_t Sys_AudioClose(int handle) {
|
||||
if (handle == AUDIO_HANDLE_BT) {
|
||||
Drivers::USB::Bluetooth::A2dp::StopStream();
|
||||
Drivers::USB::Bluetooth::A2dp::StopStream(true); // drop queued tail
|
||||
return 0;
|
||||
}
|
||||
Drivers::Audio::Mixer::Close(handle);
|
||||
@@ -79,7 +87,8 @@ namespace Montauk {
|
||||
case AUDIO_CTL_GET_VOLUME:
|
||||
return Drivers::USB::Bluetooth::A2dp::GetVolume();
|
||||
case AUDIO_CTL_PAUSE:
|
||||
if (value) Drivers::USB::Bluetooth::A2dp::StopStream();
|
||||
// Pause keeps the queued PCM so resume continues gaplessly.
|
||||
if (value) Drivers::USB::Bluetooth::A2dp::StopStream(false);
|
||||
else Drivers::USB::Bluetooth::A2dp::StartStream();
|
||||
return 0;
|
||||
case AUDIO_CTL_GET_OUTPUT:
|
||||
|
||||
@@ -12,4 +12,4 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#define MONTAUK_BUILD_NUMBER 3
|
||||
#define MONTAUK_BUILD_NUMBER 12
|
||||
|
||||
Reference in New Issue
Block a user