VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtVideoStream.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2021 VT-MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
13 
14 #include <vrvCore/DtDe.h>
15 
16 #include <vrvUtil/DtUnicode.h>
17 #include <vrvUtil/signalslib.h>
18 
20 
21 #include <osg/ref_ptr>
22 
23 namespace makVrv
24 {
25  class DtReadFramebufferCallback;
26  class DtVideoStreamManager;
27  class DtOsgChannel;
28  class DtChannelManager;
29  class DtChannel;
30 
35  {
36  public:
37 
39  {
47  Unavailable
48  };
50  friend class DtVideoStreamCreator;
51 
53  friend class DtVideoStreamManager;
54 
56  virtual ~DtVideoStream();
57 
59  virtual DtUnicode instanceName() const;
60 
65  virtual DtUnicode className() const;
66 
68  virtual bool start();
69 
74  virtual void notifyOtherStreamStarted( const DtVideoStream& startedStream );
75 
77  virtual bool stop();
78 
81  virtual void setAutoStart( bool autoStart );
82 
84  virtual bool autoStart() const;
85 
90  virtual void notifyOtherStreamStopped( const DtVideoStream& stoppedStream );
91 
93  virtual VideoStreamStatus status() const;
94 
96  virtual void setFromRecord(
97  const makArchives::DtVideoStreamRecord& vsRecord );
98 
100  virtual void setFromVideoStream( const DtVideoStream& stream );
101 
103 
107  virtual int channelWidth() const;
108 
110  virtual int channelHeight() const;
111 
113  virtual int channelX() const;
114 
116  virtual int channelY() const;
117 
119  virtual double horizontalFov() const;
120 
122  virtual double verticalFov() const;
124 
126 
131  virtual void setWindowName( const DtUnicode& windowName );
132 
134  virtual DtUnicode windowName() const;
135 
138  virtual void setChannelName( const DtUnicode& channelName );
139 
141  virtual DtUnicode channelName() const;
142 
150  virtual void setDataType( const DtUnicode& dataType );
151 
153  virtual DtUnicode dataType() const;
154 
156  virtual void setFrameRate( int frameRate );
157 
159  virtual int frameRate() const;
160 
168  virtual void setPixelFormat( const DtUnicode& pixelFormat );
169 
171  virtual DtUnicode pixelFormat() const;
172 
174  virtual void setNumBuffers( int numBuffers );
175 
177  virtual int numBuffers() const;
178 
184  virtual void setReadBuffer( const DtUnicode& readBuffer );
185 
192  void setEncodingFormat(const DtUnicode& encodingFormat);
193 
200  DtUnicode encodingFormat() const;
201 
207  virtual DtUnicode readBuffer() const;
208 
212  virtual void addImageTask(
213  const makArchives::DtImageTaskRecord& imageTask );
214 
217  virtual void removeImageTask(
218  const makArchives::DtImageTaskRecord& imageTask );
219 
224  virtual void setImageTask( int index,
225  const makArchives::DtImageTaskRecord& imageTask );
226 
228  virtual void setImageTasks(
230 
233  imageTasks() const;
234 
237 
240  virtual void setParameterInt( int taskElementIndex,
241  const DtUnicode& parameterName, int value );
242 
245  virtual void setParameterDouble( int taskElementIndex,
246  const DtUnicode& parameterName, double value );
247 
250  virtual void setParameterBool( int taskElementIndex,
251  const DtUnicode& parameterName, bool value );
252 
255  virtual void setParameterString( int taskElementIndex,
256  const DtUnicode& parameterName, const DtUnicode& value );
257 
260  virtual void setMetadataPublisher(
261  const makArchives::DtMetadataPublisherRecord& pubRecord );
262 
265  virtual void setMetadataPublisherType( const DtUnicode& pubType );
266 
269  virtual void setMetadataPublisherObserverName(
270  const DtUnicode& observer );
271 
273  virtual void setMetadataPublisherParameters(
274  const makArchives::DtNameValueLists& parameters );
275 
277  virtual const makArchives::DtMetadataPublisherRecord& metadataPublisher()
278  const;
280 
282  virtual void swapImageTasks( int index1, int index2 );
283 
285  virtual bool saveVideoStream( const DtUnicode& filePath ) const;
286 
288  virtual bool loadVideoStream( const DtUnicode& filePath );
289 
292  virtual void reportFramebufferCallbackFailure();
293 
295 
300  boost::signalslib::signal<void ( const DtUnicode& )> signal_windowNameChanged;
301 
303  boost::signalslib::signal<void ( const DtUnicode& )> signal_channelNameChanged;
304 
307  boost::signalslib::signal<void ( const DtUnicode& )> signal_dataTypeChanged;
308 
310  boost::signalslib::signal<void ( int )> signal_frameRateChanged;
311 
314  boost::signalslib::signal<void ( const DtUnicode& )> signal_pixelFormatChanged;
315 
317  boost::signalslib::signal<void ( int )> signal_numBuffersChanged;
318 
320  boost::signalslib::signal<void ( const DtUnicode& )> signal_readBufferChanged;
321 
323  boost::signalslib::signal<void(const DtUnicode&)> signal_encodingFormatChanged;
324 
326  boost::signalslib::signal<void ( const makArchives::DtImageTaskRecord& )>
328 
330  boost::signalslib::signal<void ( const makArchives::DtImageTaskRecord& )>
332 
334  boost::signalslib::signal<void ( int imageTaskIndex )> signal_imageTaskRemoved;
335 
337  boost::signalslib::signal<void (
340 
342  boost::signalslib::signal<void ( int index, const makArchives::DtImageTaskRecord& )>
344 
346  boost::signalslib::signal<void ( const makArchives::DtMetadataPublisherRecord& )>
348 
350  boost::signalslib::signal<void ( const DtUnicode& )>
352 
354  boost::signalslib::signal<void ( const DtUnicode& )>
356 
358  boost::signalslib::signal<void ( const makArchives::DtNameValueLists& )>
360 
362  boost::signalslib::signal<void ( int index1, int index2 )> signal_imageTasksSwapped;
363 
365  boost::signalslib::signal<void ( VideoStreamStatus )> signal_videoStreamStatusChanged;
366 
368  boost::signalslib::signal< void ( bool )> signal_videoStreamAutoStartChanged;
369 
372  boost::signalslib::signal<void (
373  int taskIndex, const DtUnicode& parameter, int value )>
375 
378  boost::signalslib::signal<void (
379  int taskIndex, const DtUnicode& parameter, double value )>
381 
384  boost::signalslib::signal<void (
385  int taskIndex, const DtUnicode& parameter, bool value )>
387 
390  boost::signalslib::signal<void (
391  int taskIndex, const DtUnicode& parameter, const DtUnicode& value )>
394 
395  protected:
396 
400  const DtUnicode& className, const DtUnicode& instanceName );
401 
403  virtual DtReadFramebufferCallback* createFramebufferReadback();
404 
406  virtual void updateFov();
407 
409  virtual void updateChannelWidthAndHeight();
410 
414  virtual bool installFramebufferCallback();
415 
418  virtual void removeFrameReadback();
419 
421  virtual void slot_channelConfigurationModified(const std::string& displayName,
422  const std::string& windowName, const std::string& channelName );
423 
425  virtual void slot_windowConfigurationModified(const std::string& displayName,
426  const std::string& windowName );
427 
430  virtual void slot_channelToBeDestroyed(DtChannelManager* mgr, DtChannel* channel);
431 
433  virtual void slot_deleteReadFramebufferCallback();
434 
436  virtual void slot_updateReadFramebufferCallbackIfNeeded();
437 
439  virtual void cleanChannel(DtOsgChannel* channel);
440 
441  private:
442 
444  DtVideoStream();
445 
447  DtVideoStream( const DtVideoStream& rhs );
448 
450  DtVideoStream& operator=( const DtVideoStream& rhs );
451 
452  protected:
467  };
468 
472  {
473  public:
475  friend class DtVideoStreamManager;
476 
479 
481  virtual ~DtVideoStreamCreator();
482 
483  protected:
485  virtual DtVideoStream* create( DtDe& de, DtVideoStreamManager& mgr,
486  const DtUnicode& className, const DtUnicode& instanceName ) const;
487  };
488 }
A DtVideoStream instance will create a single streaming video pipeline on the channel indicated by wi...
Definition: DtVideoStream.h:34
DtDe & myDe
Definition: DtVideoStream.h:457
Creator class for the Standard Video Stream.
Definition: DtVideoStream.h:471
A DtReadFramebufferCallback instance is installed as the draw callback of the camera attached to the ...
Definition: DtReadFramebufferCallback.h:30
A unicode string.
Definition: DtUnicode.h:33
boost::signalslib::signal< void(int taskIndex, const DtUnicode &parameter, double value)> signal_doubleTaskParameterChanged
emitted when the specified double parameter/value is changed for the image task at task index ...
Definition: DtVideoStream.h:380
DtUnicode myClassName
Definition: DtVideoStream.h:459
VideoStreamStatus
Definition: DtVideoStream.h:38
DtOsgChannel * myChannel
Definition: DtVideoStream.h:456
int myChannelX
Definition: DtVideoStream.h:462
Definition: featureContext.h:37
boost::signalslib::signal< void(int taskIndex, const DtUnicode &parameter, int value)> signal_intTaskParameterChanged
emitted when the specified integer parameter/value is changed for the image task at task index ...
Definition: DtVideoStream.h:374
int myChannelHeight
Definition: DtVideoStream.h:461
boost::signalslib::signal< void(int imageTaskIndex)> signal_imageTaskRemoved
emitted after a process image task element has been removed
Definition: DtVideoStream.h:334
Record for a sensor definition.
Definition: DtImageTaskRecord.h:20
#define DT_DLL_VRVVIDEOSTREAM
Definition: vrvVideoStream.h:20
Contains makVrv::DtDe class.
boost::signalslib::signal< void(const DtUnicode &)> signal_dataTypeChanged
emitted when the data type of the osg::image used to capture a frame changes
Definition: DtVideoStream.h:307
Record for a metadata publisher Defines both the type and parameters.
Definition: DtMetadataPublisherRecord.h:21
This class provides the OSG-specific implementation of a DtChannel.
Definition: DtOsgChannel.h:77
double myHorizontalFov
Definition: DtVideoStream.h:464
boost::signalslib::signal< void(const makArchives::DtNameValueLists &)> signal_metadataPublisherParametersChanged
emitted when metadatapublisher type-specific parameters change
Definition: DtVideoStream.h:359
boost::signalslib::signal< void(const DtUnicode &)> signal_pixelFormatChanged
emitted when the pixel format of the osg::image used to capture a frame changes
Definition: DtVideoStream.h:314
boost::signalslib::signal< void(const DtUnicode &)> signal_metadataPublisherTypeChanged
emitted when the metadata publisher type has changed
Definition: DtVideoStream.h:351
The abstract Channel Class.
Definition: DtChannel.h:30
DtVideoStreamManager is a singleton class that manages DtVideoStreams in VR-Vantage.
Definition: DtVideoStreamManager.h:35
boost::signalslib::signal< void(bool)> signal_videoStreamAutoStartChanged
emitted when the video stream&#39;s autoStart parameter is changed
Definition: DtVideoStream.h:368
boost::signalslib::signal< void(const DtUnicode &)> signal_readBufferChanged
emitted when the read buffer type changes
Definition: DtVideoStream.h:320
makArchives::DtVideoStreamRecord myVideoStreamRecord
Definition: DtVideoStream.h:453
boost::signalslib::signal< void(int)> signal_frameRateChanged
emitted when the the capture frame rate changes
Definition: DtVideoStream.h:310
VideoStreamStatus myStatus
Definition: DtVideoStream.h:466
double myVerticalFov
Definition: DtVideoStream.h:465
boost::signalslib::signal< void(const makArchives::DtImageTaskRecord &)> signal_imageTaskToBeRemoved
emitted when a process image task element is about to be removed
Definition: DtVideoStream.h:331
boost::signalslib::signal< void(int taskIndex, const DtUnicode &parameter, bool value)> signal_boolTaskParameterChanged
emitted when the specified boolean parameter/value is changed for the image task at task index ...
Definition: DtVideoStream.h:386
stream is started but global video processing is disabled
Definition: DtVideoStream.h:45
boost::signalslib::signal< void(const DtUnicode &)> signal_metadataPublisherObserverNameChanged
emitted when the observer tracked by a metadata publisher changes
Definition: DtVideoStream.h:355
boost::signalslib::signal< void(int index, const makArchives::DtImageTaskRecord &)> signal_imageTaskChanged
emitted when the image task at index has changed
Definition: DtVideoStream.h:343
boost::signalslib::signal< void(const DtUnicode &)> signal_channelNameChanged
emitted when the channel that should be streamed changes
Definition: DtVideoStream.h:303
boost::signalslib::signal< void(const makArchives::DtMetadataPublisherRecord &)> signal_metadataPublisherChanged
emitted when the metadata publisher changes
Definition: DtVideoStream.h:347
voidpf stream
Definition: ioapi.h:39
Base class for handling DtChannels.
Definition: DtChannelManager.h:32
osg::ref_ptr< DtReadFramebufferCallback > myChannelReadback
Definition: DtVideoStream.h:455
Record of a collection of sensor definitions.
Definition: DtVideoStreamRecord.h:17
int myChannelWidth
Definition: DtVideoStream.h:460
boost::signalslib::signal< void(const DtUnicode &)> signal_windowNameChanged
Signals raised when changes are made to the video stream configuration.
Definition: DtVideoStream.h:300
DtVideoStreamManager & myVideoStreamManager
Definition: DtVideoStream.h:454
boost::signalslib::signal< void(int)> signal_numBuffersChanged
emitted when the number of pixel buffer objects changes
Definition: DtVideoStream.h:317
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
stream is started and global video processing is enabled
Definition: DtVideoStream.h:43
boost::signalslib::signal< void(int index1, int index2)> signal_imageTasksSwapped
emitted when the order of two tasks are swapped
Definition: DtVideoStream.h:362
boost::signalslib::signal< void(const makArchives::DtImageTaskRecord &)> signal_imageTaskAdded
emitted when an process image task element is added
Definition: DtVideoStream.h:327
boost::signalslib::signal< void(int taskIndex, const DtUnicode &parameter, const DtUnicode &value)> signal_stringTaskParameterChanged
emitted when the specified string parameter/value is changed for the image task at task index ...
Definition: DtVideoStream.h:392
Contains DLL export macros.
DtUnicode myInstanceName
Definition: DtVideoStream.h:458
boost::signalslib::signal< void(const DtUnicode &)> signal_encodingFormatChanged
emitted when the encoding format changes
Definition: DtVideoStream.h:323
boost::signalslib::signal< void(VideoStreamStatus)> signal_videoStreamStatusChanged
emitted when the video stream&#39;s status changes
Definition: DtVideoStream.h:365
Inherit this is you need a list of name/value pairs.
Definition: DtNameValueLists.h:21
std::vector< DtImageTaskRecord > ImageTaskRecords
List of image task records.
Definition: DtVideoStreamRecord.h:114
stream is stopped
Definition: DtVideoStream.h:41
int myChannelY
Definition: DtVideoStream.h:463
boost::signalslib::signal< void(const makArchives::DtVideoStreamRecord::ImageTaskRecords &)> signal_imageTasksChanged
emitted when all image tasks have been replaced
Definition: DtVideoStream.h:339

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)