sipxmedialib  Version 3.3
Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
MprFromFile Class Reference

The "Play audio from file" media processing resource. More...

#include <MprFromFile.h>

Inheritance diagram for MprFromFile:
Inheritance graph
[legend]
Collaboration diagram for MprFromFile:
Collaboration graph
[legend]

Static Public Member Functions

Manipulators
static OsStatus playBuffer (const UtlString &namedResource, OsMsgQ &fgQ, const char *audioBuffer, unsigned long bufSize, uint32_t inRate, uint32_t fgRate, int type, UtlBoolean repeat, OsProtectedEvent *notify, UtlBoolean autoStopAfterFinish=TRUE)
 Play sound from buffer w/repeat option. More...
 
static OsStatus playFile (const UtlString &namedResource, OsMsgQ &fgQ, uint32_t fgSampleRate, const UtlString &filename, const UtlBoolean &repeat, UtlBoolean autoStopAfterFinish=TRUE)
 Sends an MPRM_FROMFILE_START message to the named MprFromFile resource. More...
 
static OsStatus stopFile (const UtlString &namedResource, OsMsgQ &fgQ)
 Sends an MPRM_FROMFILE_STOP message to the named MprFromFile resource. More...
 
static OsStatus pauseFile (const UtlString &namedResource, OsMsgQ &fgQ)
 Sends an MPRM_FROMFILE_PAUSE message to the named MprFromFile resource. More...
 
static OsStatus resumeFile (const UtlString &namedResource, OsMsgQ &fgQ)
 Sends an MPRM_FROMFILE_RESUME message to the named MprFromFile resource. More...
 
static OsStatus sendProgressPeriod (const UtlString &namedResource, OsMsgQ &fgQ, int32_t updatePeriodMS)
 Sends an MPRM_FROMFILE_SEND_PROGRESS message to the named MprFromFile resource. More...
 
- Static Public Member Functions inherited from MpResource
static OsStatus disable (const UtlString &namedResource, OsMsgQ &fgQ)
 Post a message to disable the resource named. More...
 
static OsStatus enable (const UtlString &namedResource, OsMsgQ &fgQ)
 Post a message to enable the resource named. More...
 
static OsStatus setNotificationsEnabled (UtlBoolean enable, const UtlString &namedResource, OsMsgQ &fgQ)
 Post a message to enable or disable resource notifications on the named resource. More...
 
static void resourceInfo (MpResource *pResource, int index)
 Displays information on the console about the specified resource. More...
 

Private Types

enum  AddlMsgTypes {
  MPRM_FROMFILE_START = MpResourceMsg::MPRM_EXTERNAL_MESSAGE_START, MPRM_FROMFILE_PAUSE, MPRM_FROMFILE_RESUME, MPRM_FROMFILE_SEND_PROGRESS,
  MPRM_FROMFILE_STOP, MPRM_FROMFILE_ERROR
}
 
enum  State { STATE_IDLE, STATE_PLAYING, STATE_PAUSED, STATE_FINISHED }
 

Private Member Functions

virtual UtlBoolean doProcessFrame (MpBufPtr inBufs[], MpBufPtr outBufs[], int inBufsSize, int outBufsSize, UtlBoolean isEnabled, int samplesPerFrame, int samplesPerSecond)
 This method does the real work for the media processing resource and must be defined in each class derived from this one. More...
 
UtlBoolean handlePlay (UtlString *pBuffer, UtlBoolean repeat, UtlBoolean autoStopAfterFinish)
 Initialize things to start playing the given buffer, upon receiving request to start. More...
 
UtlBoolean handleFinish ()
 Handle playback finish when the end of file/buffer is reached. More...
 
UtlBoolean handleStop ()
 Perform resetting of state, etc. upon receiving request to stop playing. More...
 
UtlBoolean handlePause ()
 Pause playback upon receiving request to pause. More...
 
UtlBoolean handleResume ()
 Resume playback upon receiving request to resume. More...
 
UtlBoolean handleSetUpdatePeriod (int32_t periodMS)
 Set an update period for sending progress updates. More...
 
virtual UtlBoolean handleMessage (MpResourceMsg &rMsg)
 Handle resource messages for this resource (new messaging model - 2007). More...
 
 MprFromFile (const MprFromFile &rMprFromFile)
 Copy constructor (not implemented for this class) More...
 
MprFromFileoperator= (const MprFromFile &rhs)
 Assignment operator (not implemented for this class) More...
 

Static Private Member Functions

static OsStatus genericAudioBufToFGAudioBuf (UtlString *&fgAudioBuf, const char *audioBuffer, unsigned long bufSize, uint32_t inRate, uint32_t fgRate, int type)
 Convert generic audio data into flowgraph audio data. More...
 
static OsStatus readAudioFile (uint32_t fgSampleRate, UtlString *&audioBuffer, const char *audioFileName)
 Read in an audio file into a new UtlString audio buffer. More...
 
static UtlBoolean allocateAndResample (const char *inAudBuf, const uint32_t inAudBufSz, const uint32_t inRate, char *&outAudBuf, uint32_t &outAudBufSz, const uint32_t outRate)
 allocate enough space for the resampled data, and resample data passed in. More...
 

Private Attributes

UtlString * mpFileBuffer
 
int mFileBufferIndex
 
UtlBoolean mFileRepeat
 
State mState
 
UtlBoolean mAutoStopAfterFinish
 
OsTime mLastProgressUpdate
 
int32_t mProgressIntervalMS
 

Static Private Attributes

static const unsigned int sFromFileReadBufferSize = 8000
 

Creators

enum  Completion {
  PLAY_FINISHED, PLAY_STOPPED, PLAYING, READ_ERROR,
  PLAY_IDLE, INVALID_SETUP
}
 
 MprFromFile (const UtlString &rName)
 Constructor. More...
 
virtual ~MprFromFile ()
 Destructor. More...
 

Additional Inherited Members

- Public Types inherited from MpResource
enum  VisitState { NOT_VISITED, IN_PROGRESS, FINISHED }
 Graph traversal states that are used when running a topological sort to order resources within a flow graph. More...
 
enum  { ASSOCIATED_LATENCY =-1, INF_LATENCY =-1 }
 
- Public Member Functions inherited from MpAudioResource
 MpAudioResource (const UtlString &rName, int minInputs, int maxInputs, int minOutputs, int maxOutputs)
 Constructor. More...
 
virtual ~MpAudioResource ()
 Destructor. More...
 
virtual UtlBoolean processFrame (void)
 Wrapper around doProcessFrame(). More...
 
- Public Member Functions inherited from MpResource
 MpResource (const UtlString &rName, int minInputs, int maxInputs, int minOutputs, int maxOutputs)
 Constructor. More...
 
virtual ~MpResource ()
 Destructor. More...
 
virtual UtlBoolean disable ()
 Disable this resource. More...
 
virtual UtlBoolean enable ()
 Enable this resource. More...
 
virtual void reset ()
 This method is invoked for resources that care about stream discontinuities. More...
 
UtlBoolean handleMessages (OsMsgQ &msgQ)
 Handles a queue full of incoming messages for this media processing object. More...
 
void setVisitState (int newState)
 Sets the visit state for this resource. More...
 
OsStatus sendNotification (MpResNotificationMsg::RNMsgType msgType)
 Send a notification with the given message type if notifications are enabled. More...
 
OsStatus sendNotification (MpResNotificationMsg &msg)
 Send the given notification message if notifications are enabled. More...
 
virtual void setConnectionId (MpConnectionID connectionId)
 Set the ID of a connection this resource belongs to. More...
 
virtual void setStreamId (int streamId)
 Set the ID of a stream inside of the connection this resource belongs to. More...
 
virtual int getStreamId (void)
 Get the ID of a stream within the connection this resource belongs to. More...
 
virtual OsStatus pushBuffer (int inputPort, MpBufPtr &inputBuffer)
 Receive buffer asynchronously from resource at given input port. More...
 
virtual void reassignSSRC (void)
 Broadcast announcement that we are changing our SSRC. More...
 
MpFlowGraphBasegetFlowGraph () const
 Returns parent flowgraph. More...
 
void getInputInfo (int inPortIdx, MpResource *&rpUpstreamResource, int &rUpstreamPortIdx)
 Returns information about the upstream end of a connection. More...
 
const UtlString & getName () const
 Returns the name associated with this resource. More...
 
void getOutputInfo (int outPortIdx, MpResource *&rpDownstreamResource, int &rDownstreamPortIdx)
 Returns information about the downstream end of a connection. More...
 
int getVisitState ()
 Returns the current visit state for this resource. More...
 
int maxInputs () const
 Returns the maximum number of inputs supported by this resource. More...
 
int maxOutputs () const
 Returns the maximum number of outputs supported by this resource. More...
 
int minInputs () const
 Returns the minimum number of inputs required by this resource. More...
 
int minOutputs () const
 Returns the minimum number of outputs required by this resource. More...
 
int numInputs () const
 Returns the number of resource inputs that are currently connected. More...
 
int numOutputs () const
 Returns the number of resource outputs that are currently connected. More...
 
virtual MpConnectionID getConnectionId (void) const
 Get the ID of a connection this resource belongs to. More...
 
int reserveFirstUnconnectedInput ()
 Find the first unconnected input port and reserve it. More...
 
int reserveFirstUnconnectedOutput ()
 Find the first unconnected output port and reserve it. More...
 
UtlContainableType getContainableType () const
 Get the ContainableType for a UtlContainable derived class. More...
 
virtual OsStatus getCurrentLatency (int &latency, int input=0, int output=0) const
 Get current input to output latency (in samples) More...
 
UtlBoolean isEnabled () const
 Returns TRUE is this resource is currently enabled, FALSE otherwise. More...
 
UtlBoolean isInputConnected (int portIdx)
 Returns TRUE if portIdx is valid and the indicated input is connected, FALSE otherwise. More...
 
UtlBoolean isInputUnconnected (int portIdx)
 Returns TRUE if portIdx is valid and the indicated input is not connected, FALSE otherwise. More...
 
UtlBoolean isOutputConnected (int portIdx)
 Returns TRUE if portIdx is valid and the indicated output is connected, FALSE otherwise. More...
 
UtlBoolean isOutputUnconnected (int portIdx)
 Returns TRUE if portIdx is valid and the indicated output is not connected, FALSE otherwise. More...
 
UtlBoolean areNotificationsEnabled () const
 Returns TRUE if notification sending is enabled on this resource. More...
 
virtual UtlBoolean isAsynchInput (int inputIndex)
 Takes asynchronous input (pushBuffer). More...
 
- Static Public Attributes inherited from MpResource
static const UtlContainableType TYPE = "MpResource"
 Class name, used for run-time checks. More...
 
- Protected Member Functions inherited from MpResource
virtual UtlBoolean handleMessage (MpFlowGraphMsg &fgMsg)
 Handles an incoming flowgraph message for this media processing object. More...
 
virtual UtlBoolean handleEnable ()
 perform the enable operation on the resource More...
 
virtual UtlBoolean handleDisable ()
 perform the disable operation on the resource More...
 
void setInputBuffer (int inPortIdx, const MpBufPtr &pBuf)
 If there already is a buffer stored for this input port, delete it. Then store pBuf for the indicated input port. More...
 
OsStatus postMessage (MpFlowGraphMsg &rMsg)
 Post a message from this resource. More...
 
OsStatus postMessage (MpResourceMsg &rMsg)
 Post a message for this resource. More...
 
UtlBoolean pushBufferDownsream (int outPortIdx, const MpBufPtr &pBuf)
 Makes pBuf available to resource connected to the outPortIdx output port of this resource. More...
 
virtual OsStatus setFlowGraph (MpFlowGraphBase *pFlowGraph)
 Associates this resource with the indicated flow graph. More...
 
virtual OsStatus setNotificationsEnabled (UtlBoolean enable)
 Sets whether or not this resource should send notifications. More...
 
virtual UtlBoolean connectInput (MpResource &rFrom, int fromPortIdx, int toPortIdx)
 Connects the toPortIdx input port on this resource to the fromPortIdx output port of the rFrom resource. More...
 
virtual UtlBoolean connectOutput (MpResource &rTo, int toPortIdx, int fromPortIdx)
 Connects the fromPortIdx output port on this resource to the toPortIdx input port of the rTo resource. More...
 
virtual UtlBoolean disconnectInput (int inPortIdx)
 Removes the connection to the inPortIdx input port of this resource. More...
 
virtual UtlBoolean disconnectOutput (int outPortIdx)
 Removes the connection to the outPortIdx output port of this resource. More...
 
void setName (const UtlString &rName)
 Sets the name that is associated with this resource. More...
 
- Protected Attributes inherited from MpResource
MpFlowGraphBasempFlowGraph
 flow graph this resource belongs to More...
 
MpConnectionID mConnectionId
 The ID of connection this resource belongs to. More...
 
int mStreamId
 
UtlBoolean mIsEnabled
 TRUE if resource is enabled, FALSE otherwise. More...
 
OsRWMutex mRWMutex
 reader/writer lock for synchronization More...
 
MpBufPtrmpInBufs
 input buffers for this resource More...
 
MpBufPtrmpOutBufs
 output buffers for this resource More...
 
ConnmpInConns
 input connections for this resource More...
 
ConnmpOutConns
 output connections for this resource More...
 
int mMaxInputs
 maximum number of inputs More...
 
int mMaxOutputs
 maximum number of outputs More...
 
int mMinInputs
 number of required inputs More...
 
int mMinOutputs
 number of required outputs More...
 
int mNumActualInputs
 actual number of connected inputs More...
 
int mNumActualOutputs
 actual number of connected outputs More...
 
int mVisitState
 (used by flow graph topological sort alg.) More...
 
UtlBoolean mNotificationsEnabled
 Whether we should send notifications or not. More...
 
OsBSem mLock
 used mainly to make safe changes to ports More...
 
- Static Protected Attributes inherited from MpResource
static const OsTime sOperationQueueTimeout = OsTime::OS_INFINITY
 The timeout for message operations for all resources when posting to the flowgraph queue. More...
 

Detailed Description

The "Play audio from file" media processing resource.

Member Enumeration Documentation

enum Completion
Enumerator
PLAY_FINISHED 
PLAY_STOPPED 
PLAYING 
READ_ERROR 
PLAY_IDLE 
INVALID_SETUP 
enum AddlMsgTypes
private
Enumerator
MPRM_FROMFILE_START 

Start playing.

MPRM_FROMFILE_PAUSE 

Pause playing.

MPRM_FROMFILE_RESUME 

Resume playing that was paused.

MPRM_FROMFILE_SEND_PROGRESS 

Set progress updates period.

MPRM_FROMFILE_STOP 

Stop playing.

MPRM_FROMFILE_ERROR 

Report failed operation.

enum State
private
Enumerator
STATE_IDLE 

Playing is stopped.

STATE_PLAYING 

Playing is in process.

STATE_PAUSED 

Playing is in process, but paused.

STATE_FINISHED 

Playing has finished, but stopFile() hasn't called yet.

Constructor & Destructor Documentation

MprFromFile ( const UtlString &  rName)

Constructor.

~MprFromFile ( )
virtual

Destructor.

MprFromFile ( const MprFromFile rMprFromFile)
private

Copy constructor (not implemented for this class)

Member Function Documentation

OsStatus playBuffer ( const UtlString &  namedResource,
OsMsgQ &  fgQ,
const char *  audioBuffer,
unsigned long  bufSize,
uint32_t  inRate,
uint32_t  fgRate,
int  type,
UtlBoolean  repeat,
OsProtectedEvent *  notify,
UtlBoolean  autoStopAfterFinish = TRUE 
)
static

Play sound from buffer w/repeat option.

Parameters
[in]fgRate- the sample rate that the flowgraph is running at (this cannot determine that because it is a static method)
[in]type- can be one of following: (need a OsSoundType)
0 = RAW
1 = muLaw
[in]repeat- TRUE/FALSE after the fromFile reaches the end of the buffer, go back to the beginning and continue to play.
[in]autoStopAfterFinish- if set to TRUE, resource will automatically transition to IDLE state immediately after FINISHED state is reached. Otherwise you need to call stopFile() to transition to IDLE state.
Returns
the result of attempting to queue the message to this resource and/or converting the audio buffer data.
OsStatus playFile ( const UtlString &  namedResource,
OsMsgQ &  fgQ,
uint32_t  fgSampleRate,
const UtlString &  filename,
const UtlBoolean &  repeat,
UtlBoolean  autoStopAfterFinish = TRUE 
)
static

Sends an MPRM_FROMFILE_START message to the named MprFromFile resource.

Sends an MPRM_FROMFILE_START message to the named MprFromFile resource within the flowgraph who's queue is supplied. When the message is received, the above resource will then begin playing the file specified.

Parameters
[in]namedResource- the name of the resource to send a message to.
[in]fgQ- the queue of the flowgraph containing the resource which the message is to be received by.
[in]fgSampleRate- flowgraph sample rate – needed to check if read file is compatible with the flowgraph rate, and for resampling.
[in]filename- the filename of the file to start playing.
[in]repeat- boolean indicating whether to loop-play the file.
[in]autoStopAfterFinish- if set to TRUE, resource will automatically transition to IDLE state immediately after FINISHED state is reached. Otherwise you need to call stopFile() to transition to IDLE state.
Return values
Theresult of attempting to queue the message to this resource.
OsStatus stopFile ( const UtlString &  namedResource,
OsMsgQ &  fgQ 
)
static

Sends an MPRM_FROMFILE_STOP message to the named MprFromFile resource.

Sends an MPRM_FROMFILE_STOP message to the named MprFromFile resource within the flowgraph who's queue is supplied. When the message is received, the above resource will then stop playing the file it has been playing.

Parameters
[in]namedResource- the name of the resource to send a message to.
[in]fgQ- the queue of the flowgraph containing the resource which the message is to be received by.
Returns
the result of attempting to queue the message to this resource.
OsStatus pauseFile ( const UtlString &  namedResource,
OsMsgQ &  fgQ 
)
static

Sends an MPRM_FROMFILE_PAUSE message to the named MprFromFile resource.

Sends an MPRM_FROMFILE_PAUSE message to the named MprFromFile resource within the flowgraph who's queue is supplied. When the message is received, the above resource will then pause the file that has been playing.

Parameters
[in]namedResource- the name of the resource to send a message to.
[in]fgQ- the queue of the flowgraph containing the resource which the message is to be received by.
Returns
the result of attempting to queue the message to this resource.
OsStatus resumeFile ( const UtlString &  namedResource,
OsMsgQ &  fgQ 
)
static

Sends an MPRM_FROMFILE_RESUME message to the named MprFromFile resource.

Sends an MPRM_FROMFILE_RESUME message to the named MprFromFile resource within the flowgraph who's queue is supplied. When the message is received, the above resource, if in a paused state, will then resume playing it's buffer.

Parameters
[in]namedResource- the name of the resource to send a message to.
[in]fgQ- the queue of the flowgraph containing the resource which the message is to be received by.
Returns
the result of attempting to queue the message to this resource.
OsStatus sendProgressPeriod ( const UtlString &  namedResource,
OsMsgQ &  fgQ,
int32_t  updatePeriodMS 
)
static

Sends an MPRM_FROMFILE_SEND_PROGRESS message to the named MprFromFile resource.

Sends an MPRM_FROMFILE_SEND_PROGRESS message to the named MprFromFile resource within the flowgraph who's queue is supplied. When the message is received, the above resource will then begin to send progress updates at the interval specified by updatePeriodMS.

To stop progress updates, you must call this function again with an update period of 0.

Parameters
[in]namedResource- the name of the resource to send a message to.
[in]fgQ- the queue of the flowgraph containing the resource which the message is to be received by.
[in]updatePeriodMS- the period to wait between sending progress updates.
Returns
the result of attempting to queue the message to this resource.
OsStatus genericAudioBufToFGAudioBuf ( UtlString *&  fgAudioBuf,
const char *  audioBuffer,
unsigned long  bufSize,
uint32_t  inRate,
uint32_t  fgRate,
int  type 
)
staticprivate

Convert generic audio data into flowgraph audio data.

Method to convert a generic char* audio buffer, in one of several acceptable formats, to a format that can be passed through the flowgraph.

Parameters
[out]fgAudioBuf- a pointer to a string to store a newly allocated string with the processed audio suitable for the flowgraph.
[in]audioBuffer- the audio data to re-work for the flowgraph.
[in]bufSize- the size of /p audioBuffer, in bytes.
[in]inRate- the sample rate that /p audioBuffer was recorded at.
[in]fgRate- the sample rate that the flowgraph is running at (this cannot determine that because it is a static method)
[in]type- can be one of following: (need a OsSoundType)
0 = RAW
1 = muLaw
OsStatus readAudioFile ( uint32_t  fgSampleRate,
UtlString *&  audioBuffer,
const char *  audioFileName 
)
staticprivate

Read in an audio file into a new UtlString audio buffer.

Parameters
audioBuffer- a reference to a pointer that will be filled with a new buffer holding the audio data. Ownership will then transfer to the caller.

WARNING: This allocates a buffer for the whole file – thus, files read in should not be huge. This does occur outside of the media task, so the time it takes to resample should not incur any latency, but memory utilization with large files may become an issue. TODO: Replace this whole file reading code with some that happens in a separate file-reading thread that can happen while mediaTask is going on, so files of extremely large length can be used.

Parameters
[in]fgSampleRate- flowgraph sample rate – needed to check if read file is compatible with the flowgraph rate, and for resampling.
[in]audioFileName- the name of a file to read flowgraph audio data from. (exact format that the FG will accept - sample size, rate, & number of channels)
Return values
OS_INVALID_ARGUMENTif the filename was null, the file was unopenable, or the file contained less than one sample.
OS_SUCCESSif the file was read successfully.
UtlBoolean allocateAndResample ( const char *  inAudBuf,
const uint32_t  inAudBufSz,
const uint32_t  inRate,
char *&  outAudBuf,
uint32_t &  outAudBufSz,
const uint32_t  outRate 
)
staticprivate

allocate enough space for the resampled data, and resample data passed in.

Allocate enough space to store a resampled version of the audio passed in as /p audBuf. Indicate the sample rate of /p audBuf with /p inRate, and resample it to a rate of /p outRate.

Parameters
[in]inAudBuf- the audio buffer to resample - assumes 16bit signed.
[in]inAudBufSz- the size of the audio buffer, in bytes.
[in]inRate- the sample rate that audBuf was recorded at.
[out]outAudBuf- the audio buffer to allocate and store resampled audio into. (16bit signed)
[out]outAudBufSz- the place to store the size of the resampled audio buffer, in bytes.
[in]outRate- the sample rate that audBuf will be resampled to.
UtlBoolean doProcessFrame ( MpBufPtr  inBufs[],
MpBufPtr  outBufs[],
int  inBufsSize,
int  outBufsSize,
UtlBoolean  isEnabled,
int  samplesPerFrame,
int  samplesPerSecond 
)
privatevirtual

This method does the real work for the media processing resource and must be defined in each class derived from this one.

Parameters
inBufs(in) array of pointers to input buffers for the resource
outBufs(out) array of pointers to output buffers produce by the resource
inBufsSize(in) size of the inBufs array
outBufsSize(in) size of the outBufs array
isEnabled(in) indicates whether this resource has been enabled
samplesPerFrame(in) samples to produce per frame processing interval
samplesPerSecond(in) samples to produce per second
Returns
TRUE if successful, FALSE otherwise.

Implements MpAudioResource.

UtlBoolean handlePlay ( UtlString *  pBuffer,
UtlBoolean  repeat,
UtlBoolean  autoStopAfterFinish 
)
private

Initialize things to start playing the given buffer, upon receiving request to start.

UtlBoolean handleFinish ( )
private

Handle playback finish when the end of file/buffer is reached.

UtlBoolean handleStop ( void  )
private

Perform resetting of state, etc. upon receiving request to stop playing.

UtlBoolean handlePause ( )
private

Pause playback upon receiving request to pause.

UtlBoolean handleResume ( )
private

Resume playback upon receiving request to resume.

UtlBoolean handleSetUpdatePeriod ( int32_t  periodMS)
private

Set an update period for sending progress updates.

UtlBoolean handleMessage ( MpResourceMsg rMsg)
privatevirtual

Handle resource messages for this resource (new messaging model - 2007).

Reimplemented from MpResource.

MprFromFile& operator= ( const MprFromFile rhs)
private

Assignment operator (not implemented for this class)

Member Data Documentation

const unsigned int sFromFileReadBufferSize = 8000
staticprivate
UtlString* mpFileBuffer
private
int mFileBufferIndex
private
UtlBoolean mFileRepeat
private
State mState
private
UtlBoolean mAutoStopAfterFinish
private

If set to TRUE, resource will automatically transition to IDLE state immediately after FINISHED state is reached. Otherwise you need to call stopFile() to transition to IDLE state.

OsTime mLastProgressUpdate
private
int32_t mProgressIntervalMS
private

The progress interval for sending update notifications. A progress interval of 0 means send no progress updates.