11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
19PROMEKI_NAMESPACE_BEGIN
52class PcmAudioPayload :
public AudioPayload {
54 PROMEKI_MEDIAPAYLOAD_LOOKUP_DISPATCH(PcmAudioPayload)
56 virtual PcmAudioPayload *_promeki_clone()
const override {
return new PcmAudioPayload(*
this); }
59 using Ptr = SharedPtr<PcmAudioPayload,
true, PcmAudioPayload>;
62 using PtrList = ::promeki::List<Ptr>;
65 using UPtr = UniquePtr<PcmAudioPayload>;
68 PcmAudioPayload() =
default;
74 explicit PcmAudioPayload(
const AudioDesc &desc,
size_t sampleCount = 0)
75 : AudioPayload(desc, sampleCount) {}
81 PcmAudioPayload(
const AudioDesc &desc,
size_t sampleCount,
const BufferView &data)
82 : AudioPayload(desc, sampleCount, data) {}
88 bool isCompressed()
const override {
return false; }
94 bool isKeyframe()
const override {
return true; }
100 bool isSafeCutPoint()
const override {
return true; }
117 Ptr convert(
const AudioFormat &dstFormat)
const;
120 static constexpr FourCC kSubclassFourCC{
'P',
'A',
'd',
'p'};
122 uint32_t subclassFourCC()
const override {
return kSubclassFourCC.value(); }
125 void serialisePayload(DataStream &s)
const override;
128 void deserialisePayload(DataStream &s)
override;
130 PcmAudioPayload(
const PcmAudioPayload &) =
default;
131 PcmAudioPayload(PcmAudioPayload &&) =
default;
132 PcmAudioPayload &operator=(
const PcmAudioPayload &) =
default;
133 PcmAudioPayload &operator=(PcmAudioPayload &&) =
default;