VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtVideoStreamManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2020 VT-MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
13 
14 #include <vrvCore/DtDe.h>
16 #include <vrvUtil/DtUnicode.h>
17 
19 
20 #include <boost/unordered_map.hpp>
21 
22 namespace makVrv
23 {
24  class DtImageTaskElement;
25  class DtImageTaskElementCreator;
26  class DtMetadataPublisher;
27  class DtMetadataPublisherCreator;
28  class DtVideoStreamCreator;
29  class DtProcessImageTask;
30  class DtVideoStream;
31 
36  {
37  public:
39  typedef std::vector<DtVideoStream*> VideoStreamList;
40 
42  virtual ~DtVideoStreamManager();
43 
46  static DtVideoStreamManager& instance(DtDe& de);
47 
49  static void registerInstance(DtDe& de, DtVideoStreamManager* anInstance);
50 
52  virtual void addVideoStreamCreator( const DtUnicode& streamType,
53  const DtUnicode& typeDisplayName, DtVideoStreamCreator* creator );
54 
57  virtual void videoStreamTypesSupported( std::list<DtUnicode>& streamTypes,
58  std::list<DtUnicode>& displayNames ) const;
59 
65  virtual DtVideoStream* createVideoStream( const DtUnicode& streamType,
66  const DtUnicode& streamName );
67 
70  virtual bool destroyVideoStream( const DtUnicode& streamName );
71 
75  virtual bool renameVideoStream( const DtUnicode& oldName,
76  const DtUnicode& newName );
77 
79  virtual DtVideoStream* videoStream( const DtUnicode& streamName );
80 
82  virtual const VideoStreamList& videoStreams() const;
83 
86  virtual bool checkAvailability( const DtVideoStream& stream ) const;
87 
91  virtual void saveVideoStream( const DtVideoStream& stream ) const;
92 
94  virtual void loadVideoStream( const DtUnicode& filename );
95 
98  virtual void autoLoadVideoStreams();
99 
101  virtual void autoStartVideoStreams();
102 
103 
104 
106  virtual void addMetadataPublisherCreator( const DtUnicode& pubType,
107  const DtUnicode& typeDisplayName, DtMetadataPublisherCreator* creator);
108 
111  virtual void metadataPublisherTypesSupported(
112  std::list<DtUnicode>& displayNames,
113  std::list<DtUnicode>& pubTypes) const;
114 
117  virtual DtMetadataPublisher* createMetadataPublisher(
118  const DtUnicode& pubType, const DtVideoStream& videoStream ) const;
119 
120 
121 
123  virtual void addImageTaskElementCreator( const DtUnicode& imageTaskType,
124  const DtUnicode& displayName, DtImageTaskElementCreator* creator);
125 
128  virtual void imageTaskElementTypesSupported(
129  std::list<DtUnicode>& displayNames,
130  std::list<DtUnicode>& taskTypes) const;
131 
133  virtual DtImageTaskElement* createImageTaskElement( const DtUnicode& imageTaskType,
134  DtProcessImageTask* owningTask) const;
135 
136 
137 
139 
141  boost::signalslib::signal<void ( DtVideoStream& )> signal_videoStreamAdded;
142 
144  boost::signalslib::signal<void ( DtVideoStream& )> signal_videoStreamToBeDestroyed;
145 
147  boost::signalslib::signal<void ( const DtVideoStream& )> signal_videoStreamStatusChanged;
148 
150 
151  protected:
152 
153  // Only called by registerInstance for default
154  DtVideoStreamManager( DtDe& de );
155 
157  virtual void removeVideoStreamFile( const DtVideoStream& stream ) const;
158 
161  virtual void removeVideoStreamFromList( const DtVideoStream* streamPtr );
162 
165  virtual DtUnicode createVideoStreamFilename(const DtVideoStream& stream) const;
166 
168  virtual void connectToVideoStreamSignals( DtVideoStream& stream );
169 
171  virtual void disconnectFromVideoStreamSignals( DtVideoStream& stream );
172 
174  virtual void slot_videoStreamStatusChanged( const DtVideoStream& stream );
175 
176  protected:
177 
179  typedef boost::unordered_map<DtUnicode, DtVideoStream*>
181 
182  typedef std::pair<DtUnicode, DtVideoStreamCreator*>
184  typedef std::pair<DtUnicode, DtImageTaskElementCreator*>
186  typedef std::pair<DtUnicode, DtMetadataPublisherCreator*>
188 
189  typedef boost::unordered_map<DtUnicode, MetadataPublisherNameCreatorPair>
191  typedef boost::unordered_map<DtUnicode, ImageTaskNameCreatorPair>
193  typedef boost::unordered_map<DtUnicode, VideoStreamNameCreatorPair>
195 
199 
202 
204  };
205 }
A DtVideoStream instance will create a single streaming video pipeline on the channel indicated by wi...
Definition: DtVideoStream.h:34
Creator class for the Standard Video Stream.
Definition: DtVideoStream.h:471
Virtual base class.
Definition: DtVirtualBaseClass.h:19
A unicode string.
Definition: DtUnicode.h:33
ImageTaskElementCreators myImageTaskElementCreators
Definition: DtVideoStreamManager.h:197
DtMetadataPublisher defines the interface for all metadata publishers, as well as the implementation ...
Definition: DtMetadataPublisher.h:36
#define DT_DLL_VRVVIDEOSTREAM
Definition: vrvVideoStream.h:20
Contains makVrv::DtDe class.
DtDe & myDe
Definition: DtVideoStreamManager.h:203
boost::unordered_map< DtUnicode, MetadataPublisherNameCreatorPair > MetadataPublisherCreators
Definition: DtVideoStreamManager.h:190
boost::signalslib::signal< void(DtVideoStream &)> signal_videoStreamAdded
emitted when a video stream is added to the manager (through creation)
Definition: DtVideoStreamManager.h:141
VideoStreamMap myVideoStreams
Definition: DtVideoStreamManager.h:200
std::pair< DtUnicode, DtImageTaskElementCreator * > ImageTaskNameCreatorPair
Definition: DtVideoStreamManager.h:185
Contains makVrv::DtVirtualBaseClass class.
DtVideoStreamManager is a singleton class that manages DtVideoStreams in VR-Vantage.
Definition: DtVideoStreamManager.h:35
boost::unordered_map< DtUnicode, DtVideoStream * > VideoStreamMap
VideoStreamMap is a hash table of Video Stream Names to video streams.
Definition: DtVideoStreamManager.h:180
The DtImageTaskElement is an abstract base class for all image task elements.
Definition: DtImageTaskElement.h:25
VideoStreamCreators myVideoStreamCreators
Definition: DtVideoStreamManager.h:198
Definition: DtMetadataPublisher.h:169
voidpf stream
Definition: ioapi.h:39
DtImageTaskElementCreator is the common base class for all image task element creators.
Definition: DtImageTaskElement.h:95
std::pair< DtUnicode, DtVideoStreamCreator * > VideoStreamNameCreatorPair
Definition: DtVideoStreamManager.h:183
DtProcessImageTask creates and manages all the process image pipeline elements.
Definition: DtProcessImageTask.h:37
boost::signalslib::signal< void(DtVideoStream &)> signal_videoStreamToBeDestroyed
emitted when a video stream is about to be destroyed
Definition: DtVideoStreamManager.h:144
std::pair< DtUnicode, DtMetadataPublisherCreator * > MetadataPublisherNameCreatorPair
Definition: DtVideoStreamManager.h:187
VideoStreamList myVideoStreamList
Definition: DtVideoStreamManager.h:201
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
MetadataPublisherCreators myMetadataPublisherCreators
Definition: DtVideoStreamManager.h:196
std::vector< DtVideoStream * > VideoStreamList
List of video streams.
Definition: DtVideoStreamManager.h:39
Contains DLL export macros.
boost::signalslib::signal< void(const DtVideoStream &)> signal_videoStreamStatusChanged
emitted when the status of a video stream changes
Definition: DtVideoStreamManager.h:147
boost::unordered_map< DtUnicode, ImageTaskNameCreatorPair > ImageTaskElementCreators
Definition: DtVideoStreamManager.h:192
boost::unordered_map< DtUnicode, VideoStreamNameCreatorPair > VideoStreamCreators
Definition: DtVideoStreamManager.h:194

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)