载入中...
搜索中...
未找到
AudioTransport.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
6
7#include <string>
8
9namespace eve::audio { class Source; }
10
11namespace eve::audio_editing {
12
15
18 StableId asset;
21 double position = 0.0;
22 double duration = 0.0;
23 bool loopEnabled = false;
24 double loopStart = 0.0;
25 double loopEnd = 0.0;
26};
27
30public:
32 virtual ~IAudioTransportBackend() = default;
34 virtual void play() = 0;
36 virtual void pause() = 0;
38 virtual void stop() = 0;
40 virtual Result<void> seek(double seconds) = 0;
42 virtual double tell() const = 0;
44 virtual double duration() const = 0;
46 virtual bool playing() const = 0;
48 virtual void setNativeLooping(bool enabled) = 0;
49};
50
53public:
55 Result<void> bind(StableId asset, Revision sourceRevision,
56 IAudioTransportBackend* backend);
58 Result<void> setLoop(Revision expectedRevision, bool enabled,
59 double startSeconds = 0.0, double endSeconds = 0.0);
61 Result<void> play(Revision expectedRevision);
63 Result<void> pause(Revision expectedRevision);
65 Result<void> stop(Revision expectedRevision);
67 Result<void> seek(Revision expectedRevision, double seconds);
69 Result<AudioTransportSnapshot> update(Revision expectedRevision);
71 Result<AudioTransportSnapshot> snapshot(Revision expectedRevision) const;
73 void unbind();
74
75private:
76 Result<void> validateRevision(Revision expectedRevision) const;
77 AudioTransportSnapshot observe() const;
78 StableId asset_;
79 Revision revision_ = 0;
80 IAudioTransportBackend* backend_ = nullptr;
81 AudioTransportState state_ = AudioTransportState::Stopped;
82 bool loopEnabled_ = false;
83 double loopStart_ = 0.0;
84 double loopEnd_ = 0.0;
85};
86
89public:
93 void play() override;
95 void pause() override;
97 void stop() override;
99 Result<void> seek(double seconds) override;
101 double tell() const override;
103 double duration() const override;
105 bool playing() const override;
107 void setNativeLooping(bool enabled) override;
108private:
109 audio::Source* source_ = nullptr;
110};
111
112} // namespace eve::audio_editing
float duration
#define EVENGINE_API_BACKENDS
Definition Export.h:108
const UnitySourceAsset & source
Move-only operation result carrying either a value or Status.
Definition Result.h:155
A playable audio source (static buffer or streaming decoder). Not thread-safe for playback control ex...
Definition Source.h:30
Revision-safe play/pause/seek/custom-loop state machine for asset audition.
Non-owning transport backend for a live OpenAL-backed audio Source.
AudioSourceTransportBackend(audio::Source *source)
Audio source transport backend.
Minimal playback backend boundary used by the deterministic transport controller.
virtual void setNativeLooping(bool enabled)=0
Sets the native looping.
virtual double duration() const =0
Duration.
virtual Result< void > seek(double seconds)=0
Seek the backend playhead.
virtual bool playing() const =0
Playing.
virtual ~IAudioTransportBackend()=default
Releases IAudioTransportBackend resources.
virtual double tell() const =0
Tell.
AudioTransportState
Playback state exposed to audio and dialogue editor presenters.
detail::StrongUint64< detail::RevisionTag > Revision
Monotonic content/state revision used for optimistic-concurrency checks.
Definition Revision.h:13
bool enabled
Immutable revision-tagged audition playhead observation.