7#include "resource/resource.h"
8#include "resource/resource_handle.h"
10namespace Vkm::Engine {
24 ClipSamples() =
default;
33 ~ClipSamples() =
default;
35 ClipSamples(
const ClipSamples& other) =
default;
36 ClipSamples& operator=(
const ClipSamples& other) =
default;
38 ClipSamples(ClipSamples && other) =
default;
39 ClipSamples& operator=(ClipSamples && other) =
default;
42 explicit operator bool() const noexcept {
return m_samples !=
nullptr; }
44 const std::vector<int16_t>& operator*()
const {
return *m_samples; }
45 const std::vector<int16_t>* operator->()
const {
return m_samples.get(); }
48 std::shared_ptr<const std::vector<int16_t>> m_samples;
80using AudioClipHandle = Handle<AudioClipAsset>;
A clip's interleaved PCM, shared with every voice playing it.
Definition audio_clip_asset.h:22
ClipSamples(std::vector< int16_t > samples)
Take samples as a clip's buffer, shared from vkm_core.
A sound: fully decoded interleaved PCM, plus the rate and layout it was written at.
Definition audio_clip_asset.h:58
uint64_t frameCount() const
Length in sample frames (one frame is one sample per channel).
Definition audio_clip_asset.h:72
uint32_t channels
1 = mono, 2 = stereo, up to MAX_AUDIO_CHANNELS; only a mono clip positions.
Definition audio_clip_asset.h:60
ClipSamples samples
Interleaved PCM, shared with the voices playing it.
Definition audio_clip_asset.h:62
float duration() const
Length in seconds, or 0 when the clip carries no rate.
Definition audio_clip_asset.h:75
uint32_t sampleRate
Frames per second, as authored; AudioDevice resamples if it differs.
Definition audio_clip_asset.h:59
size_t sampleCount() const
Total samples across all channels.
Definition audio_clip_asset.h:65