11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
20PROMEKI_NAMESPACE_BEGIN
63class AudioPayload :
public MediaPayload {
64 PROMEKI_SHARED_ABSTRACT(AudioPayload)
67 using Ptr = SharedPtr<AudioPayload,
true, AudioPayload>;
70 using PtrList = ::promeki::List<Ptr>;
73 AudioPayload() =
default;
79 explicit AudioPayload(
const AudioDesc &desc,
size_t sampleCount = 0)
80 : _desc(desc), _sampleCount(sampleCount) {}
86 AudioPayload(
const AudioDesc &desc,
size_t sampleCount,
const BufferView &data)
87 : MediaPayload(data), _desc(desc), _sampleCount(sampleCount) {}
90 const MediaPayloadKind &kind()
const override {
return MediaPayloadKind::Audio; }
93 const AudioDesc &desc()
const {
return _desc; }
96 AudioDesc &desc() {
return _desc; }
99 void setDesc(
const AudioDesc &d) { _desc = d; }
117 size_t sampleCount()
const {
return _sampleCount; }
120 void setSampleCount(
size_t n) { _sampleCount = n; }
127 Duration duration()
const override {
128 return Duration::fromSamples(
static_cast<int64_t
>(_sampleCount), _desc.sampleRate());
144 bool hasDuration()
const override {
return true; }
150 const Metadata &metadata()
const override {
return _desc.metadata(); }
153 Metadata &metadata()
override {
return _desc.metadata(); }
155 AudioPayload(
const AudioPayload &) =
default;
156 AudioPayload(AudioPayload &&) =
default;
157 AudioPayload &operator=(
const AudioPayload &) =
default;
158 AudioPayload &operator=(AudioPayload &&) =
default;
162 size_t _sampleCount = 0;