MAK Data Logger API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
lgrPlaybackDriver.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
9 #ifndef lgrPlaybackDriver_H_
10 #define lgrPlaybackDriver_H_
11 
12 #include <lgrCore/lgrDriver.h>
13 #include <lgrCore/lgrClock.h>
15 
16 #include <vlutil/vlFilename.h>
17 
18 #include <deque>
19 
20 namespace MAKLogger
21 {
22  class DtLgrFileInput;
23  class DtMessagePipeline;
24  class DtLgrSystemDriver;
25  class DtLgrPlaybackCommandFactory;
26  class DtLgrPlaybackInterface;
27  class DtLgrEntityTracker;
28  class DtLgrPlaybackMediaToWindow;
29  class DtLgrPlaybackMediaToStream;
30  class DtLgrMediaPipelineBuilder;
31 
37  {
38  public:
39 
42 
44  virtual ~DtLgrPlaybackDriver();
45 
46  virtual void tick();
47 
48  virtual bool getPipeline();
49  virtual bool hasPipeline() const;
50  virtual bool releasePipeline();
51 
54  virtual void setUnsavedFile(const DtString& filename, bool selectAll);
55 
58  virtual void openVirtualFile(const DtString& actualFileName, const DtString& desiredName,
59  bool checkMediaFile=false);
60 
62  virtual void configurePipeline();
63 
65  virtual bool isFileSaved() const;
66 
68  virtual bool isFileOpen() const;
69 
71  virtual bool isPlaying() const;
72 
74  virtual bool isStopped() const;
75 
77  virtual bool isPaused() const;
78 
80  virtual bool isFileIncomplete() const;
81 
83  virtual double playbackSpeed() const;
84 
86  virtual bool skippingPlayback() const;
87 
89  virtual double skippingPlaybackThreshold() const;
90 
92  virtual bool skippingPlaybackInteractions() const;
93 
95  virtual DtAbsoluteTime currentTime() const;
96 
98  virtual DtAbsoluteTime startTime() const;
99 
101  virtual DtAbsoluteTime stopTime() const;
102 
104  virtual DtAbsoluteTime firstMessageTime() const;
105 
107  virtual DtAbsoluteTime lastTime() const;
108 
110  virtual const DtString& currentFilename() const;
111 
114  virtual const DtString& savedFilename() const;
115 
117  virtual bool loopAtEnd() const;
118 
120  virtual bool playOnLoad() const;
121 
123  virtual bool fileFormatCurrent() const;
124 
126  virtual int fileVersion() const;
127 
129  virtual bool backupOnSave() const;
130 
132  virtual DtLgrEntityTracker* entityTracker() const;
133 
135  virtual void addTemporaryTrackedEntity(const DtString& name);
136 
138  virtual double packetViewInterval() const;
139 
141  virtual double followingInterval() const;
142 
144  virtual double followingExportInterval() const;
145 
147  virtual const DtString& streamPipeline() const;
148 
150  virtual const DtString& windowPipeline() const;
151 
153  virtual const DtString& streamConfiguration() const;
154 
156  virtual const DtString& windowConfiguration() const;
157 
159  virtual double mediaSpeedFactor() const;
160 
162  virtual DtRelativeTime mediaOffset() const;
163 
165  virtual bool mediaPlayInWindowByDefault() const;
166 
168  virtual bool mediaPlayToStreamByDefault() const;
169 
171  virtual const DtString& mediaPlayStreamHost() const;
172 
174  virtual int mediaPlayStreamPort() const;
175 
177  virtual void stopAllThreads();
178 
180  virtual void stopThread( DtLgrCommandThread* commandThread );
181 
182  protected:
183 
185  bool prepareDriverForOpen();
186 
188 
189  virtual void tickStopPlayback();
190  virtual void tickNormalPlayback();
191  virtual void tickPausePlayback();
192  virtual void tickSkippingPlayback();
193  virtual void tickExtendedStopPlayback();
195 
197  virtual bool doSwapInFile(const DtString& filename, bool selectAll);
198 
199  virtual bool doPlay();
200  virtual bool doStop();
201  virtual bool doPause();
202  virtual bool doUnpause();
203  virtual bool doPlaybackSpeedChange(double speed);
204  virtual void doTimeJump(const DtAbsoluteTime& time);
205  virtual void doSkippingPlay(const DtAbsoluteTime& time);
206  virtual bool doRecoverLastPacket();
207 
209  virtual void buildMediaPipelines(const DtString& filename);
210 
212  virtual void createMediaPipelineOperations(const DtString& filename);
213 
216  virtual bool doOpenFile( DtString filename, bool checkMediaFile=false );
217 
221  virtual bool doCloseFile(bool resetTimeStatus);
222 
224  void sendFileInputChangedResponses(const DtString& filename);
225 
228  virtual bool writeDescriptionToFile(const DtString& filename,
229  const DtString& description, const bool writeDesc);
230 
232  virtual bool openFileInput(const DtString& filename, DtString& failureReason);
233 
235  virtual void closeFileInput(bool clearHistory);
236 
238  virtual void setFileHistoryCount(int count);
239 
241  virtual void addFileToHistory(const DtString& filename);
242 
244  virtual void clearFileHistory();
245 
248  virtual void createWindowMediaPipelineOperation(const DtString& pipelinConfiguration,
249  const DtString& tapeFilePath);
250 
253  virtual void createStreamMediaPipelineOperation(const DtString& pipelinConfiguration,
254  const DtString& tapeFilePath);
255 
257  virtual void startMediaThreads();
258 
260  virtual void stopMediaThreads();
261 
263 
264  DtResponse openFile(const DtCommand& command);
265  DtResponse closeFile(const DtCommand& command);
266  DtResponse saveFile(const DtCommand& command);
267  DtResponse saveFileAs(const DtCommand& command);
268  DtResponse revertFile(const DtCommand& command);
269  DtResponse play(const DtCommand& command);
270  DtResponse playPause(const DtCommand& command);
271  DtResponse stop(const DtCommand& command);
272  DtResponse restart(const DtCommand& command);
273  DtResponse setStartStopTimes(const DtCommand& command);
274  DtResponse setPlaybackSpeed(const DtCommand& command);
275  DtResponse setCurrentTime(const DtCommand& command);
276  DtResponse skipTime(const DtCommand& command);
277  DtResponse pause(const DtCommand& command);
278  DtResponse unpause(const DtCommand& command);
279  DtResponse setLoopAtEnd(const DtCommand& command);
280  DtResponse setPlayOnLoad(const DtCommand& command);
281  DtResponse setBackupOnSave(const DtCommand& command);
282  DtResponse setSkippingPlaybackThreshold(const DtCommand& command);
283  DtResponse setSkippingPlaybackInteractions(const DtCommand& command);
284  DtResponse setPacketViewInterval(const DtCommand& command);
285  DtResponse setFollowingInterval(const DtCommand& command);
286  DtResponse setFollowingExportInterval(const DtCommand& command);
287  DtResponse requestFileList(const DtCommand& command);
288  DtResponse recoverLastPacket(const DtCommand& command);
289  DtResponse updateDescription( const DtCommand& command );
290  DtResponse setMediaPlaybackAdjustments( const DtCommand& command );
291  DtResponse setMediaWindowHandle( const DtCommand& command );
292  DtResponse setMediaPlayToStreamConfiguration( const DtCommand& command );
293  DtResponse setMediaPlayInWindowConfiguration( const DtCommand& command );
294  DtResponse setPlayToStreamPipeline( const DtCommand& command );
295  DtResponse setPlayInWindowPipeline(const DtCommand& command);
296  DtResponse setMediaPlayByDefault(const DtCommand& command);
297  DtResponse setMediaPlayToStreamParameters(const DtCommand& command);
298  DtResponse exposePlaybackMedia( const DtCommand& command );
300 
301  protected:
302 
303  typedef std::set<DtLgrPlaybackMediaToWindow*> PlaybackMediaToWindowSet;
304  typedef std::set<DtLgrPlaybackMediaToStream*> PlaybackMediaToStreamSet;
305 
306  static const unsigned short theDomain = DtLgrCommandType::Domain_Player;
307  static const unsigned short theProtocol = DtLgrCommandType::Protocol_None;
308 
309  std::deque<DtString> myFileStack;
310  DtString mySavedFileName;
311 
312  DtLgrFileInput* myFileInput;
313  DtLgrSystemDriver* myDriver;
314  DtMessagePipeline* myPipeline;
315 
316  //Playback Parameters
317  bool myPausedFlag;
318  bool myLoopAtEnd;
319  bool myPlayOnLoadFlag;
320  int mySendPlayCommandAfterTick;
321  bool myWindowExposed;
322  double myTimeScale;
323  DtLgrTimeSteppedClock* myPlaybackClock;
324  DtAbsoluteTime myStartTime;
325  DtAbsoluteTime myStopTime;
326  DtAbsoluteTime myCurrentTime;
327  bool myPlayingFlag;
328  bool myBackupFlag;
329  bool mySkippingPlayback;
330  double mySkippingPlaybackThreshold;
331  bool mySkippingPlaybackInteractions;
332  DtAbsoluteTime myNextSkipTime;
333  bool myTimeHasExtended;
334  DtTime myExtendedStopTimeout;
335  double myPacketViewInterval;
336  double myFollowingInterval;
337  double myFollowingExportInterval;
338  const DtAbsoluteTime myZeroTime;
339 
340  // Description
341  DtString myDescription;
342  bool myUpdateDescription;
343 
344  DtLgrMediaPipelineBuilder* myWindowPipelineBuilder;
345  DtLgrMediaPipelineBuilder* myStreamPipelineBuilder;
346  DtString myPlayToStreamConfiguration;
347  DtString myPlayInWindowConfiguration;
348  DtString myPlayToStreamPipeline;
349  DtString myPlayInWindowPipeline;
350  PlaybackMediaToWindowSet myPlaybackToWindowPipelines;
351  PlaybackMediaToStreamSet myPlaybackToStreamPipelines;
352  DtFilename myPlayInWindowFile;
353  DtFilename myPlayToStreamFile;
354  DtRelativeTime myMediaOffset;
355  double myMediaSpeedFactor;
356  bool myMediaPlayInWindowByDefault;
357  bool myMediaPlayToStreamByDefault;
358  DtString myMediaPlayHost;
359  int myMediaPlayPort;
360 
361  unsigned int myFileHistoryCount;
362  static const int theDefaultFileHistoryCount = 1;
363  };
364 
365 }
366 
367 #endif
The logger command which contains the command type and its parameters.
Definition: lgrCommand.h:109
The command type structure.
Definition: lgrCommand.h:29
A clock which provides time steps via a time provider and with optional scaling.
Definition: lgrClock.h:184
This class provides the base interface for DtLgrCommandHandler.
Definition: lgrDriver.h:35
#define DT_VIRTUAL_CTR(CLASS_NAME, ARG_TYPES_LIST)
Declare a Virtual Constructor Create using DT_VIRTUAL_CTR(CLASS_NAME,ARG_TYPES_LIST) Where CLASS_NAME...
Definition: virtualConstructor.h:34
The class responsible for creating playback commands.
Definition: lgrPlaybackCommandFactory.h:23
Relative Time, an elapsed duration of time, no implied measurement, could be seconds/cycles or ticks ...
Definition: absoluteTime.h:28
DtBoost::shared_ptr< const DtCommand > DtResponse
Definition: lgrCommand.h:174
Contains DT_VIRTUAL_CTR DT_VIRTUAL_CTR_DEFAULTS DT_VIRTUAL_COPY_ASSIGN DT_VIRTUAL_BASE_CTR DT_PURE_VI...
An abstract interface for message input from a file.
Definition: lgrFileInput.h:26
The class responsible for interfacing with the logger playback functionality.
Definition: lgrPlaybackInterface.h:35
DtLgrPlaybackInterface Interface
Definition: lgrPlaybackDriver.h:41
std::set< DtLgrPlaybackMediaToStream * > PlaybackMediaToStreamSet
Definition: lgrPlaybackDriver.h:304
The class responsible for controlling the logger playback functionality.
Definition: lgrPlaybackDriver.h:36
std::set< DtLgrPlaybackMediaToWindow * > PlaybackMediaToWindowSet
Definition: lgrPlaybackDriver.h:303
/brief Base class for defining command operations that run in a separate thread.
Definition: lgrCommandThread.h:26
DtLgrPlaybackCommandFactory Factory
Definition: lgrPlaybackDriver.h:40
Contains MAKLogger::DtTimeProvider and MAKLogger::DtWallClockTimeProvider and MAKLogger::DtLgrClock c...
The media pipeline build class stores pipeline configurations by media type and constructs gstreamer ...
Definition: lgrMediaPipelineBuilder.h:25
#define DT_DLL_LGRCORE
Definition: lgrCore.h:19
Indexes packets in a file.
Definition: lgrEntityTracker.h:32
The message pipeline which takes messages from the input, passes them through the state and ultimatel...
Definition: messagePipeline.h:28
Contains MAKLogger::DtLgrCommandHandler class.
DtLgrSystemDrive defines the lowest level driver which controls the logger.
Definition: lgrSystemDriver.h:43
Absolute Time, a particular measured instance in time, could be thought of as a set of relative times...
Definition: absoluteTime.h:82

Document ID: Generated on Mon Mar 22 15:30:17 EDT 2021 from SVN revision 226440
Copyright © 2021 MAK Technologies. All Rights Reserved (www.mak.com)