ADTF
Loading...
Searching...
No Matches
sample_intf.h
Go to the documentation of this file.
1
7#pragma once
8#include "samplebuffer_intf.h"
9#include "sampleinfo_intf.h"
11
13#include <adtfbase/chrono.h>
16
17namespace adtf
18{
19namespace streaming
20{
21namespace ant
22{
23
24
26#define CID_ADTF_SAMPLE_POOL "sample_pool.service.adtf.cid"
34{
35 protected:
37 ~ISample() = default;
38
39 public:
41 ADTF_IID(ISample, "sample.ant.streaming.adtf.iid");
42
43
44 public:
47 enum eFlags : uint32_t
48 {
50 SF_None = 0x0,
51
59
64
69
72
82 };
83
97
98
117 size_t szPreAllocateSize) = 0;
118
125 virtual tResult Set(const ISample& oSample) = 0;
126
133 virtual tResult Get(ISample& oSample) const = 0;
134
140 virtual tResult Reset() = 0;
141
149 virtual uint32_t GetFlags() const = 0;
150
160 virtual tResult SetFlags(uint32_t ui32Flags) = 0;
161
183 ADTF3_DEPRECATED("Use adtf::streaming::flash::ISample::Set(adtf::base::flash::tNanoSeconds tmTimeStamp, const void* pData, size_t szSize, uint32_t ui32Flags=0) instead.")
184 virtual tResult Set(tTimeStamp tmTimeStamp,
185 const void* pData,
186 size_t szSize,
187 uint32_t ui32Flags=0) = 0;
195 virtual tResult GetSampleBufferFactory(ucom::ant::iobject_ptr<ISampleBufferFactory>& oFactory) const = 0;
196
202 virtual tResult GetSampleInfo(ucom::ant::iobject_ptr<const ISampleInfo>& oSampleInfo) const = 0;
203
209 virtual tResult GetSampleInfo(ucom::ant::iobject_ptr<ISampleInfo>& oSampleInfo) = 0;
210
215 virtual tResult GetSampleLog(ucom::ant::iobject_ptr<ISampleLog>& oSampleLog) const = 0;
216
226 ADTF3_DEPRECATED("Use adtf::streaming::flash::ISample::GetTimeNs() instead.")
227 virtual tTimeStamp GetTime() const = 0;
228
240 ADTF3_DEPRECATED("Use adtf::streaming::flash::ISample::SetTime(adtf::base::flash::tNanoSeconds tmTimeStamp) instead.")
241 virtual tResult SetTime(tTimeStamp tmTimeStamp) = 0;
242};
243
258template<typename T>
259tResult read_from_sample(const ISample& oSample, T& oValue)
260{
262 RETURN_IF_FAILED(oSample.Lock(pSampleBuffer));
263 return pSampleBuffer->Read(adtf::base::adtf_memory<void, sizeof(oValue)>(&oValue));
264}
265
280template<typename T>
281tResult write_to_sample(ISample& oSample, const T& oValue)
282{
283 static_assert(std::is_trivially_copyable<T>::value, "The data type needs to be trivially copyable.");
285 RETURN_IF_FAILED(oSample.WriteLock(pSampleBuffer, sizeof(oValue)));
286 return pSampleBuffer->Write(adtf::base::adtf_memory<const void, sizeof(oValue)>(&oValue));
287}
288
289} //namespace ant
290
291namespace flash
292{
293
298{
299 protected:
301 ~ISample() = default;
302
303 public:
305 ADTF_IID(ISample, "sample.flash.streaming.adtf.iid");
306
307 public:
309 using ant::ISample::Set;
310
320
332 virtual tResult SetTime(base::flash::tNanoSeconds tmTimeStamp) = 0;
333
355 const void* pData,
356 size_t szSize,
357 uint32_t ui32Flags=0) = 0;
358
359};
360
361}
362
363namespace hollow
364{
365
370{
371 protected:
373 ~ISample() = default;
374
375 public:
377 ADTF_IID(ISample, "sample.hollow.streaming.adtf.iid");
378
379 public:
383 virtual uint32_t GetSubStreamId() const = 0;
384
389 virtual void SetSubStreamId(uint32_t nSubStreamId) = 0;
390};
391
392}
393
394namespace thor
395{
396
401{
402 protected:
404 ~ISample() = default;
405
406 public:
408 ADTF_IID(ISample, "sample.thor.streaming.adtf.iid");
409
410 public:
412
421 virtual tResult Set(const ant::ISample& oSample, size_t nOffset, size_t nSize) = 0;
422
430};
431
432}
433
434// we keep ant::ISample as default, as this is what the streaming architecture and interfaces are able to transport.
435using ant::ISample;
438
439} //namespace streaming
440} // namespace adtf
#define ADTF3_DEPRECATED(_depr_message_)
Definition adtf_base_deprecated.h:27
A_UTILS_NS::cResult tResult
For backwards compatibility and to bring latest version into scope.
Definition result.h:736
Definition rawmemory_base.h:412
Definition samplebuffer_intf.h:105
Definition sampleinfo_intf.h:35
Definition samplelog_intf.h:32
Definition sample_intf.h:34
virtual tResult GetSampleLog(ucom::ant::iobject_ptr< ISampleLog > &oSampleLog) const =0
virtual tResult Reset()=0
eFlags
Definition sample_intf.h:48
@ SF_SyncPoint
Definition sample_intf.h:58
@ SF_SampleLogEnabled
This flag marks that sample supports ISampleLog interface and it is enabled.
Definition sample_intf.h:74
@ SF_DataFromADTF1
Definition sample_intf.h:68
@ SF_None
No flags are set.
Definition sample_intf.h:50
@ SF_VideoKeyFrame
This flag marks key frames in video streams.
Definition sample_intf.h:71
@ SF_AbsoluteTime
Definition sample_intf.h:63
@ SF_SampleLogPresent
Definition sample_intf.h:77
@ SF_SampleInfoPresent
This flag marks the sample has the SampleInfo present.
Definition sample_intf.h:79
@ SF_AllowBufferSharing
mark that the buffer of this sample can be shared
Definition sample_intf.h:81
virtual tResult WriteLock(ucom::ant::iobject_ptr_locked< ISampleBuffer > &pSampleBuffer, size_t szPreAllocateSize)=0
virtual tResult GetSampleBufferFactory(ucom::ant::iobject_ptr< ISampleBufferFactory > &oFactory) const =0
virtual tResult SetTime(tTimeStamp tmTimeStamp)=0
virtual tResult Lock(ucom::ant::iobject_ptr_shared_locked< const ISampleBuffer > &oSampleBuffer) const =0
ADTF_IID(ISample, "sample.ant.streaming.adtf.iid")
definition of interface id
virtual tTimeStamp GetTime() const =0
virtual tResult Get(ISample &oSample) const =0
virtual tResult Set(const ISample &oSample)=0
virtual tResult GetSampleInfo(ucom::ant::iobject_ptr< const ISampleInfo > &oSampleInfo) const =0
virtual uint32_t GetFlags() const =0
~ISample()=default
not destructable
virtual tResult SetFlags(uint32_t ui32Flags)=0
Definition sample_intf.h:298
virtual tResult Set(base::flash::tNanoSeconds tmTimeStamp, const void *pData, size_t szSize, uint32_t ui32Flags=0)=0
ADTF_IID(ISample, "sample.flash.streaming.adtf.iid")
definition of interface id
~ISample()=default
not destructable
virtual tResult SetTime(base::flash::tNanoSeconds tmTimeStamp)=0
virtual base::flash::tNanoSeconds GetTimeNs() const =0
Definition sample_intf.h:370
ADTF_IID(ISample, "sample.hollow.streaming.adtf.iid")
definition of interface id
virtual uint32_t GetSubStreamId() const =0
~ISample()=default
not destructable
virtual void SetSubStreamId(uint32_t nSubStreamId)=0
Definition sample_intf.h:401
virtual tResult SetSampleBuffer(const ucom::ant::iobject_ptr< const ISampleBuffer > &pBuffer)=0
ADTF_IID(ISample, "sample.thor.streaming.adtf.iid")
definition of interface id
~ISample()=default
not destructable
virtual tResult Set(const ant::ISample &oSample, size_t nOffset, size_t nSize)=0
Definition object_intf.h:33
Definition lockedobject_intf.h:98
Definition lockedobject_intf.h:117
Base object pointer to realize binary compatible reference counting in interface methods.
Definition object_ptr_intf.h:112
Definition lockedobject_intf.h:207
Definition lockedobject_intf.h:273
Namespace for all functionality of the ADTF Streaming SDK provided since v3.0.
Definition bindingproxyoutport.h:16
tResult write_to_sample(ISample &oSample, const T &oValue)
Definition sample_intf.h:281
tResult read_from_sample(const ISample &oSample, T &oValue)
Definition sample_intf.h:259
Namespace for all functionality of the ADTF Streaming SDK provided since v3.7.
Definition filtergraphport.h:443
Namespace for all functionality of the ADTF Streaming SDK provided since v3.19.
Definition sample_intf.h:395
Namespace for the ADTF Streaming SDK.
Definition bindingproxyinport.h:14
Namespace for the ADTF uCOM SDK.
Definition adtf_system.h:324
Namespace for all functionality provided by ADTF and its SDKs.
Definition adtf_client_connector.h:14
A timestamp with nanosecond precision.
Definition chrono.h:23