libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
pcmaudiopayload.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
13#include <cstdint>
14#include <promeki/namespace.h>
15#include <promeki/uniqueptr.h>
18
19PROMEKI_NAMESPACE_BEGIN
20
52class PcmAudioPayload : public AudioPayload {
53 public:
54 PROMEKI_MEDIAPAYLOAD_LOOKUP_DISPATCH(PcmAudioPayload)
55
56 virtual PcmAudioPayload *_promeki_clone() const override { return new PcmAudioPayload(*this); }
57
59 using Ptr = SharedPtr<PcmAudioPayload, /*CopyOnWrite=*/true, PcmAudioPayload>;
60
62 using PtrList = ::promeki::List<Ptr>;
63
65 using UPtr = UniquePtr<PcmAudioPayload>;
66
68 PcmAudioPayload() = default;
69
74 explicit PcmAudioPayload(const AudioDesc &desc, size_t sampleCount = 0)
75 : AudioPayload(desc, sampleCount) {}
76
81 PcmAudioPayload(const AudioDesc &desc, size_t sampleCount, const BufferView &data)
82 : AudioPayload(desc, sampleCount, data) {}
83
88 bool isCompressed() const override { return false; }
89
94 bool isKeyframe() const override { return true; }
95
100 bool isSafeCutPoint() const override { return true; }
101
117 Ptr convert(const AudioFormat &dstFormat) const;
118
120 static constexpr FourCC kSubclassFourCC{'P', 'A', 'd', 'p'};
121
122 uint32_t subclassFourCC() const override { return kSubclassFourCC.value(); }
123
125 void serialisePayload(DataStream &s) const override;
126
128 void deserialisePayload(DataStream &s) override;
129
130 PcmAudioPayload(const PcmAudioPayload &) = default;
131 PcmAudioPayload(PcmAudioPayload &&) = default;
132 PcmAudioPayload &operator=(const PcmAudioPayload &) = default;
133 PcmAudioPayload &operator=(PcmAudioPayload &&) = default;
134};
135
136PROMEKI_NAMESPACE_END
137
138#endif // PROMEKI_ENABLE_PROAV