MAK Data Logger API Documentation for HLA
 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-2025 MAK Technologies, Inc
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  public:
303  bool myDoJumpSync;
304 
305  protected:
306 
307  typedef std::set<DtLgrPlaybackMediaToWindow*> PlaybackMediaToWindowSet;
308  typedef std::set<DtLgrPlaybackMediaToStream*> PlaybackMediaToStreamSet;
309 
310  static const unsigned short theDomain = DtLgrCommandType::Domain_Player;
311  static const unsigned short theProtocol = DtLgrCommandType::Protocol_None;
312 
313  std::deque<DtString> myFileStack;
314  DtString mySavedFileName;
315 
316  DtLgrFileInput* myFileInput;
317  DtLgrSystemDriver* myDriver;
318  DtMessagePipeline* myPipeline;
319 
320  //Playback Parameters
321  bool myPausedFlag;
322  bool myLoopAtEnd;
323  bool myPlayOnLoadFlag;
324  int mySendPlayCommandAfterTick;
325  bool myWindowExposed;
326  double myTimeScale;
327  DtLgrTimeSteppedClock* myPlaybackClock;
328  DtAbsoluteTime myStartTime;
329  DtAbsoluteTime myStopTime;
330  DtAbsoluteTime myCurrentTime;
331  bool myPlayingFlag;
332  bool myBackupFlag;
333  bool mySkippingPlayback;
334  double mySkippingPlaybackThreshold;
335  bool mySkippingPlaybackInteractions;
336  DtAbsoluteTime myNextSkipTime;
337  bool myTimeHasExtended;
338  DtTime myExtendedStopTimeout;
339  double myPacketViewInterval;
340  double myFollowingInterval;
341  double myFollowingExportInterval;
342  const DtAbsoluteTime myZeroTime;
343 
344  // Description
345  DtString myDescription;
346  bool myUpdateDescription;
347 
348  DtLgrMediaPipelineBuilder* myWindowPipelineBuilder;
349  DtLgrMediaPipelineBuilder* myStreamPipelineBuilder;
350  DtString myPlayToStreamConfiguration;
351  DtString myPlayInWindowConfiguration;
352  DtString myPlayToStreamPipeline;
353  DtString myPlayInWindowPipeline;
354  PlaybackMediaToWindowSet myPlaybackToWindowPipelines;
355  PlaybackMediaToStreamSet myPlaybackToStreamPipelines;
356  DtFilename myPlayInWindowFile;
357  DtFilename myPlayToStreamFile;
358  DtRelativeTime myMediaOffset;
359  double myMediaSpeedFactor;
360  bool myMediaPlayInWindowByDefault;
361  bool myMediaPlayToStreamByDefault;
362  DtString myMediaPlayHost;
363  int myMediaPlayPort;
364 
365  unsigned int myFileHistoryCount;
366  static const int theDefaultFileHistoryCount = 1;
367  };
368 
369 }
370 
371 #endif
The logger command which contains the command type and its parameters.
Definition: lgrCommand.h:110
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
Factory for creating playback-related commands and responses.
Definition: lgrPlaybackCommandFactory.h:23
Relative Time, an elapsed duration of time, no implied measurement, could be seconds/cycles or ticks ...
Definition: absoluteTime.h:28
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:308
The class responsible for controlling the logger playback functionality.
Definition: lgrPlaybackDriver.h:36
std::set< DtLgrPlaybackMediaToWindow * > PlaybackMediaToWindowSet
Definition: lgrPlaybackDriver.h:307
/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
std::shared_ptr< const DtCommand > DtResponse
Definition: lgrCommand.h:175
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 Thu Dec 18 15:35:09 EST 2025 from SVN revision 282494
Copyright © 2024 MAK Technologies. All Rights Reserved (www.mak.com)