mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-22 17:29:01 +00:00
LibAudio: Prefix AK::Duration with AK Namespace
This commit is contained in:
parent
7a1f3f7ae3
commit
6772d442e5
Notes:
sideshowbarker
2024-07-18 23:46:59 +09:00
Author: https://github.com/ADKaster
Commit: 6772d442e5
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/676
Reviewed-by: https://github.com/AtkinsSJ ✅
Reviewed-by: https://github.com/trflynn89 ✅
7 changed files with 24 additions and 24 deletions
|
@ -52,7 +52,7 @@ public:
|
||||||
//
|
//
|
||||||
// The value provided to the promise resolution will match the `total_time_played()` at the exact moment that
|
// The value provided to the promise resolution will match the `total_time_played()` at the exact moment that
|
||||||
// the stream was resumed.
|
// the stream was resumed.
|
||||||
virtual NonnullRefPtr<Core::ThreadedPromise<Duration>> resume() = 0;
|
virtual NonnullRefPtr<Core::ThreadedPromise<AK::Duration>> resume() = 0;
|
||||||
// Completes playback of any buffered audio data and then suspends playback and buffering.
|
// Completes playback of any buffered audio data and then suspends playback and buffering.
|
||||||
virtual NonnullRefPtr<Core::ThreadedPromise<void>> drain_buffer_and_suspend() = 0;
|
virtual NonnullRefPtr<Core::ThreadedPromise<void>> drain_buffer_and_suspend() = 0;
|
||||||
// Drops any buffered audio data and then suspends playback and buffering. This can used be to stop playback
|
// Drops any buffered audio data and then suspends playback and buffering. This can used be to stop playback
|
||||||
|
@ -64,7 +64,7 @@ public:
|
||||||
// whenever possible.
|
// whenever possible.
|
||||||
//
|
//
|
||||||
// This function should be able to run from any thread safely.
|
// This function should be able to run from any thread safely.
|
||||||
virtual ErrorOr<Duration> total_time_played() = 0;
|
virtual ErrorOr<AK::Duration> total_time_played() = 0;
|
||||||
|
|
||||||
virtual NonnullRefPtr<Core::ThreadedPromise<void>> set_volume(double volume) = 0;
|
virtual NonnullRefPtr<Core::ThreadedPromise<void>> set_volume(double volume) = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -42,14 +42,14 @@ struct AudioTask {
|
||||||
Volume,
|
Volume,
|
||||||
};
|
};
|
||||||
|
|
||||||
void resolve(Duration time)
|
void resolve(AK::Duration time)
|
||||||
{
|
{
|
||||||
promise.visit(
|
promise.visit(
|
||||||
[](Empty) { VERIFY_NOT_REACHED(); },
|
[](Empty) { VERIFY_NOT_REACHED(); },
|
||||||
[&](NonnullRefPtr<Core::ThreadedPromise<void>>& promise) {
|
[&](NonnullRefPtr<Core::ThreadedPromise<void>>& promise) {
|
||||||
promise->resolve();
|
promise->resolve();
|
||||||
},
|
},
|
||||||
[&](NonnullRefPtr<Core::ThreadedPromise<Duration>>& promise) {
|
[&](NonnullRefPtr<Core::ThreadedPromise<AK::Duration>>& promise) {
|
||||||
promise->resolve(move(time));
|
promise->resolve(move(time));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ struct AudioTask {
|
||||||
}
|
}
|
||||||
|
|
||||||
Type type;
|
Type type;
|
||||||
Variant<Empty, NonnullRefPtr<Core::ThreadedPromise<void>>, NonnullRefPtr<Core::ThreadedPromise<Duration>>> promise;
|
Variant<Empty, NonnullRefPtr<Core::ThreadedPromise<void>>, NonnullRefPtr<Core::ThreadedPromise<AK::Duration>>> promise;
|
||||||
Optional<double> data {};
|
Optional<double> data {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -128,9 +128,9 @@ public:
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Duration last_sample_time() const
|
AK::Duration last_sample_time() const
|
||||||
{
|
{
|
||||||
return Duration::from_milliseconds(m_last_sample_time.load());
|
return AK::Duration::from_milliseconds(m_last_sample_time.load());
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -182,7 +182,7 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (error == noErr)
|
if (error == noErr)
|
||||||
task.resolve(Duration::from_milliseconds(last_sample_time));
|
task.resolve(AK::Duration::from_milliseconds(last_sample_time));
|
||||||
else
|
else
|
||||||
task.reject(error);
|
task.reject(error);
|
||||||
}
|
}
|
||||||
|
@ -248,9 +248,9 @@ void PlaybackStreamAudioUnit::set_underrun_callback(Function<void()>)
|
||||||
// FIXME: Implement this.
|
// FIXME: Implement this.
|
||||||
}
|
}
|
||||||
|
|
||||||
NonnullRefPtr<Core::ThreadedPromise<Duration>> PlaybackStreamAudioUnit::resume()
|
NonnullRefPtr<Core::ThreadedPromise<AK::Duration>> PlaybackStreamAudioUnit::resume()
|
||||||
{
|
{
|
||||||
auto promise = Core::ThreadedPromise<Duration>::create();
|
auto promise = Core::ThreadedPromise<AK::Duration>::create();
|
||||||
AudioTask task { AudioTask::Type::Play, promise };
|
AudioTask task { AudioTask::Type::Play, promise };
|
||||||
|
|
||||||
if (auto result = m_state->queue_task(move(task)); result.is_error())
|
if (auto result = m_state->queue_task(move(task)); result.is_error())
|
||||||
|
@ -281,7 +281,7 @@ NonnullRefPtr<Core::ThreadedPromise<void>> PlaybackStreamAudioUnit::discard_buff
|
||||||
return promise;
|
return promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorOr<Duration> PlaybackStreamAudioUnit::total_time_played()
|
ErrorOr<AK::Duration> PlaybackStreamAudioUnit::total_time_played()
|
||||||
{
|
{
|
||||||
return m_state->last_sample_time();
|
return m_state->last_sample_time();
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,11 +21,11 @@ public:
|
||||||
|
|
||||||
virtual void set_underrun_callback(Function<void()>) override;
|
virtual void set_underrun_callback(Function<void()>) override;
|
||||||
|
|
||||||
virtual NonnullRefPtr<Core::ThreadedPromise<Duration>> resume() override;
|
virtual NonnullRefPtr<Core::ThreadedPromise<AK::Duration>> resume() override;
|
||||||
virtual NonnullRefPtr<Core::ThreadedPromise<void>> drain_buffer_and_suspend() override;
|
virtual NonnullRefPtr<Core::ThreadedPromise<void>> drain_buffer_and_suspend() override;
|
||||||
virtual NonnullRefPtr<Core::ThreadedPromise<void>> discard_buffer_and_suspend() override;
|
virtual NonnullRefPtr<Core::ThreadedPromise<void>> discard_buffer_and_suspend() override;
|
||||||
|
|
||||||
virtual ErrorOr<Duration> total_time_played() override;
|
virtual ErrorOr<AK::Duration> total_time_played() override;
|
||||||
|
|
||||||
virtual NonnullRefPtr<Core::ThreadedPromise<void>> set_volume(double) override;
|
virtual NonnullRefPtr<Core::ThreadedPromise<void>> set_volume(double) override;
|
||||||
|
|
||||||
|
|
|
@ -77,9 +77,9 @@ void PlaybackStreamPulseAudio::set_underrun_callback(Function<void()> callback)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
NonnullRefPtr<Core::ThreadedPromise<Duration>> PlaybackStreamPulseAudio::resume()
|
NonnullRefPtr<Core::ThreadedPromise<AK::Duration>> PlaybackStreamPulseAudio::resume()
|
||||||
{
|
{
|
||||||
auto promise = Core::ThreadedPromise<Duration>::create();
|
auto promise = Core::ThreadedPromise<AK::Duration>::create();
|
||||||
TRY_OR_REJECT(m_state->check_is_running(), promise);
|
TRY_OR_REJECT(m_state->check_is_running(), promise);
|
||||||
m_state->enqueue([this, promise]() {
|
m_state->enqueue([this, promise]() {
|
||||||
TRY_OR_REJECT(m_state->stream()->resume());
|
TRY_OR_REJECT(m_state->stream()->resume());
|
||||||
|
@ -110,11 +110,11 @@ NonnullRefPtr<Core::ThreadedPromise<void>> PlaybackStreamPulseAudio::discard_buf
|
||||||
return promise;
|
return promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorOr<Duration> PlaybackStreamPulseAudio::total_time_played()
|
ErrorOr<AK::Duration> PlaybackStreamPulseAudio::total_time_played()
|
||||||
{
|
{
|
||||||
if (m_state->stream() != nullptr)
|
if (m_state->stream() != nullptr)
|
||||||
return m_state->stream()->total_time_played();
|
return m_state->stream()->total_time_played();
|
||||||
return Duration::zero();
|
return AK::Duration::zero();
|
||||||
}
|
}
|
||||||
|
|
||||||
NonnullRefPtr<Core::ThreadedPromise<void>> PlaybackStreamPulseAudio::set_volume(double volume)
|
NonnullRefPtr<Core::ThreadedPromise<void>> PlaybackStreamPulseAudio::set_volume(double volume)
|
||||||
|
|
|
@ -18,11 +18,11 @@ public:
|
||||||
|
|
||||||
virtual void set_underrun_callback(Function<void()>) override;
|
virtual void set_underrun_callback(Function<void()>) override;
|
||||||
|
|
||||||
virtual NonnullRefPtr<Core::ThreadedPromise<Duration>> resume() override;
|
virtual NonnullRefPtr<Core::ThreadedPromise<AK::Duration>> resume() override;
|
||||||
virtual NonnullRefPtr<Core::ThreadedPromise<void>> drain_buffer_and_suspend() override;
|
virtual NonnullRefPtr<Core::ThreadedPromise<void>> drain_buffer_and_suspend() override;
|
||||||
virtual NonnullRefPtr<Core::ThreadedPromise<void>> discard_buffer_and_suspend() override;
|
virtual NonnullRefPtr<Core::ThreadedPromise<void>> discard_buffer_and_suspend() override;
|
||||||
|
|
||||||
virtual ErrorOr<Duration> total_time_played() override;
|
virtual ErrorOr<AK::Duration> total_time_played() override;
|
||||||
|
|
||||||
virtual NonnullRefPtr<Core::ThreadedPromise<void>> set_volume(double) override;
|
virtual NonnullRefPtr<Core::ThreadedPromise<void>> set_volume(double) override;
|
||||||
|
|
||||||
|
|
|
@ -452,7 +452,7 @@ ErrorOr<void> PulseAudioStream::resume()
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorOr<Duration> PulseAudioStream::total_time_played()
|
ErrorOr<AK::Duration> PulseAudioStream::total_time_played()
|
||||||
{
|
{
|
||||||
auto locker = m_context->main_loop_locker();
|
auto locker = m_context->main_loop_locker();
|
||||||
|
|
||||||
|
@ -465,19 +465,19 @@ ErrorOr<Duration> PulseAudioStream::total_time_played()
|
||||||
// last-returned time. If we never call pa_stream_get_time() until after giving
|
// last-returned time. If we never call pa_stream_get_time() until after giving
|
||||||
// the stream its first samples, the issue never occurs.
|
// the stream its first samples, the issue never occurs.
|
||||||
if (!m_started_playback)
|
if (!m_started_playback)
|
||||||
return Duration::zero();
|
return AK::Duration::zero();
|
||||||
|
|
||||||
pa_usec_t time = 0;
|
pa_usec_t time = 0;
|
||||||
auto error = pa_stream_get_time(m_stream, &time);
|
auto error = pa_stream_get_time(m_stream, &time);
|
||||||
if (error == -PA_ERR_NODATA)
|
if (error == -PA_ERR_NODATA)
|
||||||
return Duration::zero();
|
return AK::Duration::zero();
|
||||||
if (error != 0)
|
if (error != 0)
|
||||||
return Error::from_string_literal("Failed to get time from PulseAudio stream");
|
return Error::from_string_literal("Failed to get time from PulseAudio stream");
|
||||||
if (time > NumericLimits<i64>::max()) {
|
if (time > NumericLimits<i64>::max()) {
|
||||||
warnln("WARNING: Audio time is too large!");
|
warnln("WARNING: Audio time is too large!");
|
||||||
time -= NumericLimits<i64>::max();
|
time -= NumericLimits<i64>::max();
|
||||||
}
|
}
|
||||||
return Duration::from_microseconds(static_cast<i64>(time));
|
return AK::Duration::from_microseconds(static_cast<i64>(time));
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorOr<void> PulseAudioStream::set_volume(double volume)
|
ErrorOr<void> PulseAudioStream::set_volume(double volume)
|
||||||
|
|
|
@ -118,7 +118,7 @@ public:
|
||||||
// Uncorks the stream and forces data to be written to the buffers to force playback to
|
// Uncorks the stream and forces data to be written to the buffers to force playback to
|
||||||
// resume as soon as possible.
|
// resume as soon as possible.
|
||||||
ErrorOr<void> resume();
|
ErrorOr<void> resume();
|
||||||
ErrorOr<Duration> total_time_played();
|
ErrorOr<AK::Duration> total_time_played();
|
||||||
|
|
||||||
ErrorOr<void> set_volume(double volume);
|
ErrorOr<void> set_volume(double volume);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue