VR-Forces Developer's Guide
 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) 2022 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>
19 
21 
22 #include <osg/ref_ptr>
23 
24 namespace makVrv
25 {
26  class DtReadFramebufferCallback;
27  class DtVideoStreamManager;
28  class DtOsgChannel;
29  class DtChannelManager;
30  class DtChannel;
31 
36  {
37  public:
38 
40  {
48  Unavailable
49  };
51  friend class DtVideoStreamCreator;
52 
54  friend class DtVideoStreamManager;
55 
57  virtual ~DtVideoStream();
58 
60  virtual DtUnicode instanceName() const;
61 
66  virtual DtUnicode className() const;
67 
69  virtual bool start();
70 
75  virtual void notifyOtherStreamStarted( const DtVideoStream& startedStream );
76 
78  virtual bool stop();
79 
82  virtual void setAutoStart( bool autoStart );
83 
85  virtual bool autoStart() const;
86 
91  virtual void notifyOtherStreamStopped( const DtVideoStream& stoppedStream );
92 
94  virtual VideoStreamStatus status() const;
95 
97  virtual void setFromRecord(
98  const makArchives::DtVideoStreamRecord& vsRecord );
99 
101  virtual void setFromVideoStream( const DtVideoStream& stream );
102 
104 
108  virtual int channelWidth() const;
109 
111  virtual int channelHeight() const;
112 
114  virtual int channelX() const;
115 
117  virtual int channelY() const;
118 
120  virtual double horizontalFov() const;
121 
123  virtual double verticalFov() const;
125 
127 
132  virtual void setWindowName( const DtUnicode& windowName );
133 
135  virtual DtUnicode windowName() const;
136 
139  virtual void setChannelName( const DtUnicode& channelName );
140 
142  virtual DtUnicode channelName() const;
143 
151  virtual void setDataType( const DtUnicode& dataType );
152 
154  virtual DtUnicode dataType() const;
155 
157  virtual void setFrameRate( int frameRate );
158 
160  virtual int frameRate() const;
161 
169  virtual void setPixelFormat( const DtUnicode& pixelFormat );
170 
172  virtual DtUnicode pixelFormat() const;
173 
175  virtual void setNumBuffers( int numBuffers );
176 
178  virtual int numBuffers() const;
179 
183  virtual void setReadBuffer( const DtUnicode& readBuffer );
184 
188  virtual DtUnicode readBuffer() const;
189 
191  virtual void setUseGPUForEncoding( bool useGPU );
192 
194  virtual bool useGPUForEncoding() const;
195 
202  void setEncodingFormat(const DtUnicode& encodingFormat);
203 
210  DtUnicode encodingFormat() const;
211 
215  virtual void addImageTask(
216  const makArchives::DtImageTaskRecord& imageTask );
217 
220  virtual void removeImageTask(
221  const makArchives::DtImageTaskRecord& imageTask );
222 
227  virtual void setImageTask( int index,
228  const makArchives::DtImageTaskRecord& imageTask );
229 
231  virtual void setImageTasks(
233 
236  imageTasks() const;
237 
240 
243  virtual void setParameterInt( int taskElementIndex,
244  const DtUnicode& parameterName, int value );
245 
248  virtual void setParameterDouble( int taskElementIndex,
249  const DtUnicode& parameterName, double value );
250 
253  virtual void setParameterBool( int taskElementIndex,
254  const DtUnicode& parameterName, bool value );
255 
258  virtual void setParameterString( int taskElementIndex,
259  const DtUnicode& parameterName, const DtUnicode& value );
260 
263  virtual void setMetadataPublisher(
264  const makArchives::DtMetadataPublisherRecord& pubRecord );
265 
268  virtual void setMetadataPublisherType( const DtUnicode& pubType );
269 
272  virtual void setMetadataPublisherObserverName(
273  const DtUnicode& observer );
274 
276  virtual void setMetadataPublisherParameters(
277  const makArchives::DtNameValueLists& parameters );
278 
280  virtual const makArchives::DtMetadataPublisherRecord& metadataPublisher()
281  const;
283 
285  virtual void swapImageTasks( int index1, int index2 );
286 
288  virtual bool saveVideoStream( const DtUnicode& filePath ) const;
289 
291  virtual bool loadVideoStream( const DtUnicode& filePath );
292 
295  virtual void reportFramebufferCallbackFailure();
296 
298 
303  boost::signalslib::signal<void ( const DtUnicode& )> signal_windowNameChanged;
304 
306  boost::signalslib::signal<void ( const DtUnicode& )> signal_channelNameChanged;
307 
310  boost::signalslib::signal<void ( const DtUnicode& )> signal_dataTypeChanged;
311 
313  boost::signalslib::signal<void ( int )> signal_frameRateChanged;
314 
317  boost::signalslib::signal<void ( const DtUnicode& )> signal_pixelFormatChanged;
318 
320  boost::signalslib::signal<void ( int )> signal_numBuffersChanged;
321 
323  boost::signalslib::signal<void ( const DtUnicode& )> signal_readBufferChanged;
324 
326  boost::signalslib::signal<void ( bool )> signal_useGPUForEncodingChanged;
327 
329  boost::signalslib::signal<void(const DtUnicode&)> signal_encodingFormatChanged;
330 
332  boost::signalslib::signal<void ( const makArchives::DtImageTaskRecord& )>
334 
336  boost::signalslib::signal<void ( const makArchives::DtImageTaskRecord& )>
338 
340  boost::signalslib::signal<void ( int imageTaskIndex )> signal_imageTaskRemoved;
341 
343  boost::signalslib::signal<void (
346 
348  boost::signalslib::signal<void ( int index, const makArchives::DtImageTaskRecord& )>
350 
352  boost::signalslib::signal<void ( const makArchives::DtMetadataPublisherRecord& )>
354 
356  boost::signalslib::signal<void ( const DtUnicode& )>
358 
360  boost::signalslib::signal<void ( const DtUnicode& )>
362 
364  boost::signalslib::signal<void ( const makArchives::DtNameValueLists& )>
366 
368  boost::signalslib::signal<void ( int index1, int index2 )> signal_imageTasksSwapped;
369 
371  boost::signalslib::signal<void ( VideoStreamStatus )> signal_videoStreamStatusChanged;
372 
374  boost::signalslib::signal< void ( bool )> signal_videoStreamAutoStartChanged;
375 
378  boost::signalslib::signal<void (
379  int taskIndex, const DtUnicode& parameter, int value )>
381 
384  boost::signalslib::signal<void (
385  int taskIndex, const DtUnicode& parameter, double value )>
387 
390  boost::signalslib::signal<void (
391  int taskIndex, const DtUnicode& parameter, bool value )>
393 
396  boost::signalslib::signal<void (
397  int taskIndex, const DtUnicode& parameter, const DtUnicode& value )>
400 
401  protected:
402 
406  const DtUnicode& className, const DtUnicode& instanceName );
407 
409  virtual DtReadFramebufferCallback* createFramebufferReadbackIfNecessary();
410 
412  virtual void updateFov();
413 
415  virtual void updateChannelWidthAndHeight();
416 
420  virtual bool installFramebufferCallback();
421 
424  virtual void removeFrameReadback();
425 
427  virtual void slot_channelConfigurationModified(const std::string& displayName,
428  const std::string& windowName, const std::string& channelName );
429 
431  virtual void slot_windowConfigurationModified(const std::string& displayName,
432  const std::string& windowName );
433 
436  virtual void slot_channelToBeDestroyed(DtChannelManager* mgr, DtChannel* channel);
437 
439  virtual void slot_deleteReadFramebufferCallback();
440 
442  virtual void slot_updateReadFramebufferCallbackIfNeeded();
443 
445  virtual void cleanChannel(DtOsgChannel* channel);
446 
448  virtual DtOsgChannel* findMatchingOsgChannel(void) const;
449 
450  private:
451 
453  DtVideoStream();
454 
456  DtVideoStream( const DtVideoStream& rhs );
457 
459  DtVideoStream& operator=( const DtVideoStream& rhs );
460 
461  protected:
477 
478  boost::signalslib::connection myPreTickConnection;
479  boost::signalslib::connection myPostTickConnection;
480  boost::signalslib::connection myChannelConfigurationModifiedConnection;
481  boost::signalslib::connection myWindowConfigurationModifiedConnection;
482  };
483 
487  {
488  public:
490  friend class DtVideoStreamManager;
491 
494 
496  virtual ~DtVideoStreamCreator();
497 
498  protected:
500  virtual DtVideoStream* create( DtDe& de, DtVideoStreamManager& mgr,
501  const DtUnicode& className, const DtUnicode& instanceName ) const;
502  };
503 }
A DtVideoStream instance will create a single streaming video pipeline on the channel indicated by wi...
Definition: DtVideoStream.h:35
DtDe & myDe
Definition: DtVideoStream.h:466
Creator class for the Standard Video Stream.
Definition: DtVideoStream.h:486
A DtReadFramebufferCallback instance is installed as the draw callback of the camera attached to the ...
Definition: DtReadFramebufferCallback.h:33
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
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:386
DtUnicode myClassName
Definition: DtVideoStream.h:468
VideoStreamStatus
Definition: DtVideoStream.h:39
DtOsgChannel * myChannel
Definition: DtVideoStream.h:465
boost::signalslib::connection myPostTickConnection
Definition: DtVideoStream.h:479
int myChannelX
Definition: DtVideoStream.h:471
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:380
int myChannelHeight
Definition: DtVideoStream.h:470
boost::signalslib::connection myChannelConfigurationModifiedConnection
Definition: DtVideoStream.h:480
boost::signalslib::signal< void(int imageTaskIndex)> signal_imageTaskRemoved
emitted after a process image task element has been removed
Definition: DtVideoStream.h:340
Record for a sensor definition.
Definition: DtImageTaskRecord.h:20
#define DT_DLL_VRVVIDEOSTREAM
Definition: vrvVideoStream.h:20
boost::signalslib::connection myPreTickConnection
Definition: DtVideoStream.h:478
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:310
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:55
double myHorizontalFov
Definition: DtVideoStream.h:473
boost::signalslib::signal< void(const makArchives::DtNameValueLists &)> signal_metadataPublisherParametersChanged
emitted when metadatapublisher type-specific parameters change
Definition: DtVideoStream.h:365
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:317
boost::signalslib::signal< void(const DtUnicode &)> signal_metadataPublisherTypeChanged
emitted when the metadata publisher type has changed
Definition: DtVideoStream.h:357
The abstract Channel Class.
Definition: DtChannel.h:35
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:374
boost::signalslib::signal< void(const DtUnicode &)> signal_readBufferChanged
emitted when the read buffer type changes
Definition: DtVideoStream.h:323
makArchives::DtVideoStreamRecord myVideoStreamRecord
Definition: DtVideoStream.h:462
boost::signalslib::signal< void(int)> signal_frameRateChanged
emitted when the the capture frame rate changes
Definition: DtVideoStream.h:313
VideoStreamStatus myStatus
Definition: DtVideoStream.h:475
double myVerticalFov
Definition: DtVideoStream.h:474
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
boost::signalslib::signal< void(const makArchives::DtImageTaskRecord &)> signal_imageTaskToBeRemoved
emitted when a process image task element is about to be removed
Definition: DtVideoStream.h:337
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:392
stream is started but global video processing is disabled
Definition: DtVideoStream.h:46
DtSignalConnectionManager myConnections
Definition: DtVideoStream.h:476
boost::signalslib::signal< void(const DtUnicode &)> signal_metadataPublisherObserverNameChanged
emitted when the observer tracked by a metadata publisher changes
Definition: DtVideoStream.h:361
boost::signalslib::signal< void(int index, const makArchives::DtImageTaskRecord &)> signal_imageTaskChanged
emitted when the image task at index has changed
Definition: DtVideoStream.h:349
boost::signalslib::signal< void(const DtUnicode &)> signal_channelNameChanged
emitted when the channel that should be streamed changes
Definition: DtVideoStream.h:306
boost::signalslib::signal< void(const makArchives::DtMetadataPublisherRecord &)> signal_metadataPublisherChanged
emitted when the metadata publisher changes
Definition: DtVideoStream.h:353
voidpf stream
Definition: ioapi.h:39
Base class for handling DtChannels. Derived classes should override the tick() method and advance the...
Definition: DtChannelManager.h:32
osg::ref_ptr< DtReadFramebufferCallback > myChannelReadback
Definition: DtVideoStream.h:464
Base class to provide boost signal/slot management.
Record of a collection of sensor definitions.
Definition: DtVideoStreamRecord.h:17
int myChannelWidth
Definition: DtVideoStream.h:469
boost::signalslib::signal< void(const DtUnicode &)> signal_windowNameChanged
Signals raised when changes are made to the video stream configuration.
Definition: DtVideoStream.h:303
DtVideoStreamManager & myVideoStreamManager
Definition: DtVideoStream.h:463
boost::signalslib::signal< void(int)> signal_numBuffersChanged
emitted when the number of pixel buffer objects changes
Definition: DtVideoStream.h:320
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:72
stream is started and global video processing is enabled
Definition: DtVideoStream.h:44
boost::signalslib::signal< void(int index1, int index2)> signal_imageTasksSwapped
emitted when the order of two tasks are swapped
Definition: DtVideoStream.h:368
boost::signalslib::signal< void(const makArchives::DtImageTaskRecord &)> signal_imageTaskAdded
emitted when an process image task element is added
Definition: DtVideoStream.h:333
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:398
Contains DLL export macros.
boost::signalslib::connection myWindowConfigurationModifiedConnection
Definition: DtVideoStream.h:481
DtUnicode myInstanceName
Definition: DtVideoStream.h:467
boost::signalslib::signal< void(const DtUnicode &)> signal_encodingFormatChanged
emitted when the encoding format changes
Definition: DtVideoStream.h:329
boost::signalslib::signal< void(VideoStreamStatus)> signal_videoStreamStatusChanged
emitted when the video stream&#39;s status changes
Definition: DtVideoStream.h:371
Inherit this is you need a list of name/value pairs. Supports a list for each of int, double, string, and bool types.
Definition: DtNameValueLists.h:21
boost::signalslib::signal< void(bool)> signal_useGPUForEncodingChanged
emitted when the GPU vs CPU encoding setting changes
Definition: DtVideoStream.h:326
std::vector< DtImageTaskRecord > ImageTaskRecords
List of image task records.
Definition: DtVideoStreamRecord.h:112
stream is stopped
Definition: DtVideoStream.h:42
int myChannelY
Definition: DtVideoStream.h:472
boost::signalslib::signal< void(const makArchives::DtVideoStreamRecord::ImageTaskRecords &)> signal_imageTasksChanged
emitted when all image tasks have been replaced
Definition: DtVideoStream.h:345

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)