In This Topic ▼

ILMDVRSink Interface

Data Types

LMDVRSink_EVENT_NOTIFICATIONS

typedef enum  
{ 
   LMDVRSink_EC_ERROR_RECORDING_TO_FILE, 
} LMDVRSink_EVENT_NOTIFICATIONS; 

Lists the possible values of the additional MediaEvents that can be notified by the filter.

Enumeration Description
LMDVRSink_EC_ERROR_RECORDING_TO_FILE Writing to file specified in StartBackupToFile failed.

DVRStatusConstants

typedef enum 
{ 
   DVRStatus_Writing       = 0, 
   DVRStatus_Paused        = 1, 
   DVRStatus_Stopped       = 2 
} DVRStatusConstants; 

LMDVRSink_APILEVEL

typedef enum 
{ 
   LMDVRSink_APILEVEL_1 = 0 
} LMDVRSink_APILEVEL; 

Properties

Type Name Description
long FolderCount Gets or sets the number of buffer folder locations. Use this to determine the number of DVR buffer folder locations on the system.
BSTR FolderName( long nFolderIndex) Gets or sets the name of the fully qualified folder path for the specified buffer location. Use this to determine the full pathname of the specified DVR buffer folder location.
BSTR BaseName Gets or sets the name of the base file name of the buffer list file and recording chunk files. Use this to determine the file name of the DVR buffer files.
VARIANT_BOOL IsGrowing (Read only) Indicates whether the DVR buffer is still growing. If VARIANT_TRUE, the file is still growing and the final duration is unknown. If VARIANT_FALSE, the buffer is not being updated anymore.

Methods

HRESULT GetAvailabilityInfo(double * pStartOffset, double * pEndOffset, double * pTotalSize)

Description

Gets the availability information for data for the current playback range.

Parameters

pStartOffset

A pointer to a double type that receives the first offset of available video.

pEndOffset

A pointer to a double type that receives the last offset of available video.

pTotalSize

Total size of all video data available.

Returns

Return Description
S_OK Successful.
E_UNEXPECTED Unexpected invalid file handle.
LTMM_E_DVR_NO_RECORDINGS No .LRC recording files exist.
LTMM_E_DVR_CORRUPT_STUB_FILE Corrupted .LBL file.

HRESULT SetBufferSize(long nFolderIndex, long nFiles, double fileSize)

Description

Sets the number of buffer (.LRC) files and the allowed size per buffer file for the specified buffer location.

Parameters

nFolderIndex

The index of the desired buffer location.

nFiles

The maximum number of .LRC files allowed to be created in this location.

fileSize

The maximum file size (in bytes) of each individual .LRC file.

Returns

Return Description
S_OK Successful.
E_UNEXPECTED Unexpected invalid file handle.
DISP_E_BADINDEX Index supplied is outside the range of currently valid indexes.
E_INVALIDARG Either the number of files or file size specified is not valid.

HRESULT GetBufferTotalSize(long nFolderIndex, long uFlags, long * pnFiles, double * pnTotalFileSize)

Description

Sets the number of buffer (.LRC) files and the allowed size per buffer file for the specified buffer location.

Parameters

nFolderIndex

The index of the desired buffer location.

uFlags

Flag specifying how to calculate the total size. Possible values are:

DVRGetTotalSize_Actual = 0x0000

DVRGetTotalSize_Allowed = 0x0001

pnFiles

Total number of files included in the buffer size calculation.

pnTotalFileSize

The total calculated buffer file size.

Returns

Return Description
S_OK Successful.
E_UNEXPECTED Unexpected invalid file handle.
DISP_E_BADINDEX Index supplied is outside the range of currently valid indexes.

HRESULT CopyBufferToFile(BSTR pszTargetFile, double startOffset, double endOffset)

Description

Copies the buffered recording data to the specified fully qualified file pathname.

Parameters

pszTargetFile

Fully qualified pathname of destination file.

startOffset

Starting offset of data to copy.

endOffset

Ending offset of data to copy.

Returns

Return Description
S_OK Successful.
E_UNEXPECTED Starting offset not found.
DISP_E_BADINDEX Index supplied is outside the range of currently valid indexes.
LTMM_E_DVR_NO_RECORDINGS No .LRC recording files exist.
E_INVALIDARG Either the number of files or file size specified is not valid.

HRESULT GetStatus(DVRStatusConstants * pStatus, long * pnCurrentFolderIndex, long * pnCurrentRecordingIndex, double * pnCurrentRecordingSize)

Description

Gets the DVRSink status, buffer files location and buffer file index, and total current recording size.

Parameters

pStatus

A pointer to an enumeration type that will receive the current DVR status.

pnCurrentFolderIndex

A pointer to a long type that will receive the current location index.

pnCurrentRecordingIndex

A pointer to a long type that will receive the current recording index. This index is the number of the current LRC file.

pnCurrentRecordingSize

A pointer to double type that will receive the current recording size in bytes.

Returns

Return Description
S_OK Successful.
S_FALSE Otherwise.

HRESULT CreateEvents(long nRegistrationID, long TargetProcessID, OLE_HANDLE * pDataWrittenEvent, OLE_HANDLE * pRecordingListChangedEvent)

Note: This method is now deprecated. Use CreateEvents2 instead.

Description

Creates the Windows Event objects used to signal data write and recording list changed events.

Parameters

nRegistrationID

A unique identifier for this event registration.

TargetProcessID

The process id of the event subscriber.

pDataWrittenEvent

A handle to the write event.

pRecordingListChangedEvent

A handle to the list changed event.

Returns

Return Description
S_OK Successful.
E_OUTOFMEMORY Memory allocation error was encountered.

HRESULT CreateEvents2(long nRegistrationID, long TargetProcessID, OLE_HANDLE * pDataWrittenEvent, OLE_HANDLE * pRecordingListChangedEvent, OLE_HANDLE *pOffsetReachedEvent)

Description

Creates the Windows Event objects used to signal the Data Was Written, the Recording List Changed, and the Offset Reached events.

Parameters

nRegistrationID

A unique identifier for this event registration.

TargetProcessID

The process id of the event subscriber.

pDataWrittenEvent

A handle to the write event.

pRecordingListChangedEvent

A handle to the list changed event.

pOffsetReachedEvent

A handle to the offset reached event.

Comments

This method is used internally by the LEAD DVR Source Filter.

The Offset Reached event is designed to work together with the SetOffsetToReach method.

Returns

Return Description
S_OK Successful.
E_OUTOFMEMORY Memory allocation error was encountered.

HRESULT FreeEvents(long nRegistrationID)

Description

Frees the windows event objects used by to signal data write and recording list changed events.

Parameters

nRegistrationID

A unique identifier for this event registration.

Returns

Return Description
S_OK Successful.
S_FALSE Otherwise.

HRESULT ResetToDefaultsEx(LMDVRSink_APILEVEL ApiLevel)

Description

Resets the DVRSink interface object to the default settings for the API level specified.

Parameters

ApiLevel

The desired API Level for reset. Possible value is: LMDVRSink_APILEVEL_1.

Returns

Return Description
S_OK Successful.
S_FALSE Otherwise.

HRESULT GetBufferInfo(long nBufferIndex, BSTR * pszFileName, double * pnUsefulSize, double * pnFileSize, long * pnPlayIndex, long * pnFlags)

Description

Gets the buffer information associated with the buffer file index specified.

Parameters

nBufferIndex

The index of the buffer file for which to get information.

pszFileName

A pointer to a string type that will receive the filename of the related buffer recording file.

pnUsefulSize

A pointer to a double type that will receive the used file size of this recording chunk file.

pnFileSize

A pointer to a double type that will receive the physical file size of this recording chunk file.

pnPlayIndex

A pointer to a long type that will receive the index in the play order (the first index might not be 0, but all files should have sequential and incrementing indexes after the first index value).

pnFlags

A pointer to a long type that will receive a DVRBufferFlagConstant setting. Possible values are:

DVRBuffer_Empty = 0x0001

DVRBuffer_Writing = 0x0002

DVRBuffer_Finished = 0x0004

Returns

Return Description
S_OK Successful.
E_INVALIDARG Buffer index supplied is outside the range of currently valid indexes.
LTMM_E_DVR_NO_RECORDINGS No .LRC recording files exist.
E_OUTOFMEMORY A memory allocation error occurred. Either the number of files or file size specified is not valid.

HRESULT SetOffsetToReach(long nRegistrationID, double Offset)

Description

Instructs the DVR sink object to set the offset reached event once it has written data past a certain offset.

Parameters

nRegistrationID

The identifier passed to CreateEvents2 when the Offset Reached event was created.

Offset

The offset to reach (in bytes). The Offset Reached event will be set when the DVR sink has written data past this offset. Must be > 0.

Comments

This method is used internally by the DVR source object.

For example, if an application wants to read N bytes from offset X, then it will do the following:

  1. Reset the offset reached event.
  2. Call SetOffsetToReach(X + N).
  3. Use a windows waiting function and wait for the offset reached event to be set. (This of course, assumes the event was created through an earlier call to CreateEvents2.

Returns

Return Description
S_OK Successful.
E_INVALIDARG The registration identifier is invalid or the offset is invalid.

HRESULT StartChangingAttributes ()

Description

Changes the DVRSink attributes.

Returns

Return Description
S_OK Successful.
S_FALSE Otherwise.

HRESULT StopChangingAttributes(VARIANT_BOOL bCancelChanges)

Description

Sets the DVRSink attributes.

Parameters

bCancelChanges

A BOOL value type specifying whether to cancel or apply the pending attribute changes. Possible values are:

Value Meaning
VARIANT_TRUE Discard changes and reset the attributes to their previous settings.
VARIANT_FALSE Set the attributes.

Returns

Return Description
S_OK Successful.
S_FALSE Otherwise.

HRESULT StartBackupToFile(BSTR pszFileName, long Flags)

Description

Starts writing the DVR recording data to the specified fully qualified backup filename.

Parameters

pszFileName

Fully qualified pathname of destination backup file.

Flags

Reserved for future use. Set value to 0.

Returns

Return Description
S_OK Successful.
E_UNEXPECTED Unexpected invalid file handle.

HRESULT StopBackupToFile()

Description

Stops writing the DVR recording data to the backup file.

Returns

Return Description
S_OK Successful.
E_UNEXPECTED Unexpected invalid file handle.

HRESULT GetFragmentAlignment(double startOffset, double endOffset, double *pAlignedStartOffset, double *pAlignedEndOffset);

Description

Takes the user-supplied byte range and scans for transport fragment boundaries.

Parameters

startOffset

Specifies the byte offset at which to begin scanning for transport fragments.

endOffset

Specifies the byte offset at which to stop scanning for transport fragments.

pAlignedStartOffset

A pointer to a double variable, storing the offset of the start of the first transport fragment found.

pAlignedEndOffset

A pointer to a double variable, storing the offset of the end of the last transport fragment.

Comments

Use this method along with CopyBufferToFile to save a completely intact MPEG transport fragment.

Set up the MPEG multiplexer used for recording to DVR by calling put_OutputType(Mpg2MxT_OutputType_HLS). Doing so guarantees that fragment boundaries start with synchronization frames. Specify the boundary time interval by calling put_ResyncInterval(intervalTime).

Returns

Return Description
S_OK Successful.
S_FALSE No transport fragment is found: pAlignedStartOffset and pAlignedEndOffset are set equal to startOffset, and indicate an empty search.

HRESULT GetTimedFragmentAlignment(double startOffset, double endOffset, double timeThreshold, double *pAlignedStartOffset, double *pAlignedEndOffset, double *pAlignedDuration);

Description

Takes the user-supplied byte range and scans for transport fragment boundaries. It will only return the minimum number of fragments that meet or exceed the timeThreshold.

Parameters

startOffset

Specifies the byte offset at which to begin scanning for transport fragments.

endOffset

Specifies the byte offset at which to stop scanning for transport fragments.

timeThreshold

Specifies the minimum time (in seconds) of the fragments to find.

pAlignedStartOffset

A pointer to a double variable, storing the offset of the start of the first transport fragment found.

pAlignedEndOffset

A pointer to a double variable, storing the offset of the end of the last transport fragment.

pAlignedDuration

A pointer to a double variable, storing the time (in seconds) of the transport fragments found.

Comments

Use this method along with CopyBufferToFile to save a completely intact MPEG transport fragment.

Set up the MPEG multiplexer used for recording to DVR by calling put_OutputType(Mpg2MxT_OutputType_HLS). Doing so guarantees that fragment boundaries start with synchronization frames. Specify the boundary time interval by calling put_ResyncInterval(intervalTime).

Returns

Return Description
S_OK Successful.
S_FALSE No transport fragment is found: pAlignedStartOffset and pAlignedEndOffset are set equal to startOffset, and indicate an empty search.
Help Version 22.0.2022.4.7
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2022 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Filters C API Help

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2022 LEAD Technologies, Inc. All Rights Reserved.