12#include <promeki/config.h>
13#if PROMEKI_ENABLE_PROAV
30PROMEKI_NAMESPACE_BEGIN
68 using List = ::promeki::List<Frame>;
93 bool isValid()
const {
94 if (!_d.isValid())
return false;
95 return !_d->_payloads.isEmpty() || !_d->_metadata.isEmpty()
96 || _d->_captureTime.isValid() || !_d->_configUpdate.isEmpty();
103 const MediaPayload::PtrList &payloadList()
const {
return _d->_payloads; }
114 MediaPayload::PtrList &payloadList() {
return _d.modify()->_payloads; }
119 void addPayload(MediaPayload::Ptr p) { _d.modify()->_payloads.pushToBack(std::move(p)); }
141 VideoPayload::PtrList videoPayloads()
const;
151 AudioPayload::PtrList audioPayloads()
const;
167 AncPayload::PtrList ancPayloads()
const;
173 const Metadata &metadata()
const {
return _d->_metadata; }
183 Metadata &metadata() {
return _d.modify()->_metadata; }
199 VideoFormat videoFormat(
size_t index)
const;
217 MediaDesc mediaDesc()
const;
254 const MediaTimeStamp &captureTime()
const {
return _d->_captureTime; }
270 void setCaptureTime(
const MediaTimeStamp &ts) { _d.modify()->_captureTime = ts; }
283 const MediaConfig &configUpdate()
const {
return _d->_configUpdate; }
286 MediaConfig &configUpdate() {
return _d.modify()->_configUpdate; }
289 void setConfigUpdate(MediaConfig cfg) { _d.modify()->_configUpdate = std::move(cfg); }
301 CutPointVideoOnly = 0,
302 CutPointAudioOnly = 1,
303 CutPointAudioVideo = 2
327 bool isSafeCutPoint(CutPointScope scope = CutPointAudioVideo)
const;
355 StringList dump(
const String &indent = String())
const;
370 PROMEKI_SHARED_FINAL(Data)
371 MediaPayload::PtrList _payloads;
373 MediaConfig _configUpdate;
374 MediaTimeStamp _captureTime;
376 SharedPtr<Data> _d = SharedPtr<Data>::create();