17 #include <QJsonObject>
21 #include <unordered_map>
41 struct tConversionFormat
43 QImage::Format eDestinationFormat;
45 QImage::InvertMode eInvertMode;
52 QImage convert(
const ISample& oSample);
56 tConversionFormat m_sOutputFormat;
59 inline tResult script_error_to_result(
const QJSValue& oScriptResult)
61 if (oScriptResult.isError())
64 oScriptResult.property(
"fileName").toString().toLocal8Bit().data(),
65 oScriptResult.property(
"lineNumber").toInt(),
66 oScriptResult.toString().toLocal8Bit().data());
71 oScriptResult.toString().toLocal8Bit().data());
75 class cSyncSignalRecievers:
public QObject
80 Q_INVOKABLE
void connect(QJSValue oReciever)
82 m_oRecievers.push_back(oReciever);
85 template <
typename ...Arguments>
86 tResult call(Arguments&& ... arguments)
88 QJSValueList oJSArgs{std::forward<Arguments>(arguments)...};
89 for (
auto& oReciever: m_oRecievers)
91 auto oScriptResult = oReciever.call(oJSArgs);
92 if (!oScriptResult.isNull() && !oScriptResult.isUndefined())
94 return script_error_to_result(oScriptResult);
101 bool isConnected()
const
103 return !m_oRecievers.empty();
107 std::vector<QJSValue> m_oRecievers;
217 void DiscardSamples();
218 std::string GetName();
219 virtual tResult ForwardStreamTypeToScriptHandler(QObject* oType) = 0;
220 virtual std::pair<bool, bool> TriggerAndSampleCallbacks()
const = 0;
221 QJSEngine& m_oEngine;
227 std::mutex m_oSubStreamsLock;
232 std::unique_ptr<cImageConverter> pImageConverter;
234 bool m_bUseSampleSubStreamId =
false;
235 std::unordered_map<uint32_t, tSubStream> m_oSubStreams;
236 std::unordered_map<std::string, object_ptr<IStreamingRequest>> m_oRequestedSubStreams;
248 class cAsyncScriptReader:
public cScriptReader
253 using cScriptReader::cScriptReader;
257 void streamTypeChanged(QObject* type);
258 void trigger(qint64 timestamp);
259 void sample(
const QVariant& sample);
260 void triggerProcessed(qint64 timestamp);
263 tResult ForwardStreamTypeToScriptHandler(QObject* oType)
override;
264 std::pair<bool, bool> TriggerAndSampleCallbacks()
const override;
272 class cSyncScriptReader:
public cScriptReader
275 Q_PROPERTY(QObject* streamTypeChanged READ getSyncStreamTypes)
276 Q_PROPERTY(QObject*
trigger READ getSyncTrigger)
277 Q_PROPERTY(QObject* sample READ getSyncSample)
284 tResult ForwardStreamTypeToScriptHandler(QObject* oType)
override;
285 std::pair<bool, bool> TriggerAndSampleCallbacks()
const override;
288 QObject* getSyncStreamTypes()
290 return &m_oSyncStreamTypeRecievers;
293 QObject* getSyncTrigger()
295 return &m_oSyncTriggerRecievers;
298 QObject* getSyncSample()
300 return &m_oSyncSampleRecievers;
303 cSyncSignalRecievers m_oSyncStreamTypeRecievers;
304 cSyncSignalRecievers m_oSyncTriggerRecievers;
305 cSyncSignalRecievers m_oSyncSampleRecievers;
#define RETURN_ERROR_DESC(_code,...)
Same as RETURN_ERROR(_error) using a printf like parameter list for detailed error description.
#define RETURN_NOERROR
Return status ERR_NOERROR, which requires the calling function's return type to be tResult.
A common result class usable as return value throughout.
A Reader that is returned by cScriptFilter::createInputPin.
Q_INVOKABLE void cancelRequest(const QString &strSubStream)
Cancels a request for samples from a given Substream.
void sample(const QVariant &sample)
Connect to this signal to handle Samples received via the associated Pin.
Q_INVOKABLE void requestSamples(const QString &strSubStream)
Request samples from a given Substream.
void trigger(qint64 timestamp)
Connect to this signal to handle Data In Triggers in the associated Pin.
void streamTypeChanged(QObject *type)
Connect to this signal to handle new Stream Types recieved via the associated Pin.
Q_INVOKABLE QVariant getLastSample()
Returns the last available sample.
Q_INVOKABLE QVariant getNextSample()
Returns the next available sample.
The ISample interface sets and retrieves properties on samples .
Defines access methods for the interface of a Stream Type - see also Stream Type and Stream Meta Type...
Base object pointer to realize binary compatible reference counting in interface methods.
Object pointer implementation used for reference counting on objects of type IObject.
Namespace for the ADTF Base SDK.
WRITER_TYPE & trigger(WRITER_TYPE &oWriter)
Global function template to trigger a writers sample stream manually.
sample_reader< cDynamicSampleReaderQueue > cDynamicSampleReader
The cDynamicSampleReader will create a sample reader which will create a internal sample queue with u...
Namespace for the ADTF Streaming SDK.
Namespace for the ADTF uCOM3 SDK.
alias namespace for the A_UTILS Library.
Namespace for entire ADTF SDK.
Copyright © Audi Electronics Venture GmbH.
Copyright © Audi Electronics Venture GmbH.
A timestamp with nanosecond precision.