ILMVDeinterlace Interface
This is the interface for the LEAD Video Deinterlace Filter.
typedef enum SEGMENT_OPERATION_MODE
{
MODE_NO_DEINTERLACE = 0,
MODE_DEINTERLACE_ALL,
MODE_ DEINTERLACE_PATTERN,
}SEGMENT_OPERATION_MODE
The SEGMENT_OPERATION_MODE constants describe how segment frames will be processed.
Member |
Description |
MODE_NO_DEINTERLACE |
Do not deinterlace any frame in the segment. |
MODE_DEINTERLACE_ALL |
Deinterlace all frames in the segment. |
MODE_ DEINTERLACE_PATTERN |
Deinterlacing pattern is used. A frame will be deinterlaced if it lies in a deinterlace section in the pattern. |
typedef enum sSEGMENT_TIME_FORMAT
{
SEGMENT_TIME_FORMAT_FRAME = 0,
SEGMENT_TIME_FORMAT_TIME,
}SEGMENT_TIME_FORMAT
The SEGMENT_TIME_FORMAT constants describe the time format used for all segments.
Member |
Description |
SEGMENT_TIME_FORMAT_FRAME |
Segment time format is frames. Frame numbering is zero-based and begins at the start of the stream. |
SEGMENT_TIME_FORMAT_TIME |
Segment time format is time, defined as hours, minutes, seconds, and milliseconds. |
Type |
Name |
Description |
|
BOOL |
Enabled |
Indicates whether deinterlacing is enabled (TRUE) or not (FALSE). |
|
BOOL |
Even |
Indicates whether to start with even lines (TRUE) or odd lines (FALSE). |
|
BOOL |
MergeFields |
Indicates whether to use merge even and odd fields into a single frame. |
|
BOOL |
DoubleFrameRate |
Indicates whether to double the output frame rate (TRUE) or not (FALSE). Currently, setting this property to TRUE overrides the pattern and segments settings, effectively ignoring all pattern and segment settings. |
|
BOOL |
StartWithEvenFrame |
Indicates whether to start with an even frame (TRUE) or an odd frame (FALSE) when the DoubleFrameRate property is set to TRUE. |
|
BOOL |
IsLEADInputPinConnected |
Read only; returns TRUE if the filters input pin is connected. |
|
BOOL |
IsLEADOutputPinConnected |
Read only; returns TRUE if the filters output pin is connected. |
|
long |
InWidth |
Read only; the input stream width. |
|
long |
InHeight |
Read only; the input stream height. |
|
long |
OutWidth |
Read only; the output stream width. |
|
long |
OutHeight |
Read only; the output stream height. |
|
long |
InBits |
Read only; the input stream bits per pixel. |
|
long |
OutBits |
Read only; the output stream bits per pixel. |
|
VARIANT_BOOL |
EnableROI |
Enables or disables the Region Of Interest. When an ROI is defined, the filter acts only on it, ignoring all pixels outside the region. Currently, the region is a rectangle defined by the ROILeft, ROITop, ROIRight and ROIBottom properties. |
|
long |
ROILeft |
The left boundary of the ROI rectangle. |
|
long |
ROITop |
The top boundary of the ROI rectangle. |
|
long |
ROIRight |
The right boundary of the ROI rectangle. |
|
long |
ROIBottom |
The bottom boundary of the ROI rectangle. |
|
long |
EnableGlobalPattern |
Enables or disables the global deinterlacing pattern. The global pattern affects all the frames in the stream. With patterns, either global or segment specific, you can define what frames will be deinterlaced or ignored.The pattern is defined using 3 parameters:1.The preamble frames: a group of frames at the beginning of the stream or segment. You can choose whether the preamble frames will be deinterlaced.2.No-Deinterlace frames: a group of frames, following the preamble frames, that will be ignored. No deinterlacing is applied.3.Deinterlace frames: a group of frames, following the No-Deinterlace frames, that will be deinterlaced.
|
|
SEGMENT_TIME_FORMAT |
SegmentsTimeFormat |
Value that specifies the time format used to define segments. Possible values are: |
|
|
|
Value |
Meaning |
|
|
SEGMENT_TIME_FORMAT_FRAME |
The time format is Frames, which is zero based. |
|
|
SEGMENT_TIME_FORMAT_TIME |
The time format is Time, defined by hours, minutes, seconds, and milliseconds. The time of the first frame is zero (all fields). |
long |
SegmentsCount |
(Read only) This property is updated with the number of available segments. |
|
VARIANT_BOOL |
EnableProtectedArea |
Enables or disables the protected area. The protected area, a rectangle, is defined by its 4 boundaries, and is an area that will be excluded from deinterlacing. The protected area is independent of the ROI and the 2 regions can have any settings in the allowed range. |
|
VARIANT_BOOL |
AutoDeinterlace |
Enable/Disable the auto deinterlace option. This will automatically deinterlace frames that need deinterlacing. |
Parameters
PreambleFrames |
The number of preamble frames of the global pattern. |
NoDeinterlaceFrames |
The number of No-Deinterlace frames of the global pattern. |
DeinterlaceFrames |
The number of Deinterlace frames of the global pattern. |
DeintPreamble |
A Boolean value that indicates whether to deinterlace the preamble frames (TRUE) or not (FALSE). |
Description
Sets the global pattern parameters.
Returns
S_OK if successful, S_FALSE otherwise.
Parameters
pPreambleFrames |
Pointer to a variable that will receive the number of preamble frames of the global pattern. |
pNoDeinterlaceFrames |
Pointer to a variable that will receive the number of No-Deinterlace frames of the global pattern. |
pDeinterlaceFrames |
Pointer to a variable that will receive the number of Deinterlace frames of the global pattern. |
pDeintPreamble |
Pointer to a variable that will receive the state of preamble frames deinterlacing; TRUE indicates that the preamble frames will be deinterlaced, and FALSE indicates that the preamble frames will not be deinterlaced (passed untouched). |
Description
Retrieves the global pattern parameters.
Returns
S_OK if successful, S_FALSE otherwise.
Parameters
Index |
Index of the segment before which the new segment will be added. Valid indexes range from zero to SegmentsCount - 1. If an invalid index is passed, the segment will be added to the end of the list. |
Description
Adds a new segment before the segment at the specified index.
Returns
Parameters
Index |
Index of the segment to remove. |
Description
Removes the segment at the specified index.
Returns
Parameters
Index |
The zero based index of the segment for which to set the data. |
SegmentData |
A 4-byte chunk of user data. The saved user data can be retrieved using the GetSegmentData method. |
Description
Attaches a 4-bytes user data to the segment whose index is passed.
Returns
S_OK if successful, S_FALSE otherwise.
Parameters
Index |
The zero based index of the segment. |
pSegmentData |
Pointer to a variable that will receive the user data saved using SetSegmentData, or zero if no data was attached to the segment. |
Description
Retrieves the user data attached to the segment whose index is passed.
Returns
S_OK if successful, S_FALSE otherwise.
HRESULT GetSegmentStartTime(long Index, long *pHours, long *pSeconds, long *pMinutes, long *pMilliSeconds)
Parameters
Index |
The zero based index of the segment. |
pHour |
Pointer to a variable that will receive the hours portion of the segment start time. |
pMinutes |
Pointer to a variable that will receive the minutes portion of the segment start time. |
pSeconds |
Pointer to a variable that will receive the seconds portion of the segment start time. |
pMilliSeconds |
Pointer to a variable that will receive the milliseconds portion of the segment start time. |
Description
Retrieves the start time of the segment whose index is passed. If the segments time format is not SEGMENT_TIME_FORMAT_TIME, then the provided values are undefined.
Returns
S_OK if successful, S_FALSE otherwise.
Parameters
Index |
The zero based index of the segment for which to set the start time. |
Hour |
The hours portion of the segment start time. |
Minutes |
The minutes portion of the segment start time. Valid values range from 0 to 59. |
Seconds |
The sconds portion of the segment start time. Valid values range from 0 to 59. |
MilliSeconds |
The milliseconds portion of the segment start time. Valid values range from 0 to 999. |
Description
Sets the start time for the segment at the specified index. If the SegmentsTimeFormat property is not SEGMENT_TIME_FORMAT_TIME, then changing the start time will not have any effect.
Returns
S_OK if successful, S_FALSE otherwise.
Parameters
Index |
The zero based index of the segment. |
pllStartFrame |
Pointer to a variable that will receive the position of the first frame in the segment. Zero based frame counting from the start of the stream, is used. |
Description
Retrieves the position of the first frame in the segment. If the SegmentsTimeFormat property is not SEGMENT_TIME_FORMAT_FRAME, then the provided value is undefined.
Returns
S_OK if successful, S_FALSE otherwise.
Parameters
Index |
The zero based index of the segment. |
StartFrame |
The position of the first frame in the segment. Frame numbering is zero-based and starts at the beginning of the stream. |
Description
Sets the position of the first frame in the segment. If the SegmentsTimeFormat property is not SEGMENT_TIME_FORMAT_FRAME, then changing the start frame will not have any effect.
Returns
S_OK if successful, S_FALSE otherwise.
Parameters
Index |
The zero based index of the segment. |
|
pOperationMode |
Pointer to a value that will receive the currently used segment operation mode. Possible values are: |
|
|
Mode |
Description |
|
MODE_NO_DEINTERLACE |
No frame in the segment will be deinterlaced. |
|
MODE_DEINTERLACE_ALL |
All frames in the segment will be deinterlaced. |
|
MODE_DEINTERLACE_PATTERN |
Deinterlace according to a pattern. A frame will be deinterlaced if it lies in a deinterlace section in the pattern. |
Description
Gets the operation mode of the segment whose index is passed.
Returns
S_OK if successful, S_FALSE otherwise.
Parameters
Index |
The zero based index of the segment. |
|
OperationMode |
The operation mode to set. Possible values are: |
|
|
Mode |
Description |
|
MODE_NO_DEINTERLACE |
Do not interlace any frame in the segment. |
|
MODE_DEINTERLACE_ALL |
Deinterlace all frames in the segment. |
|
MODE_DEINTERLACE_PATTERN |
Deinterlace according to a pattern. A frame will be deinterlaced if it lies in a deinterlace section in the pattern being used. |
Description
Gets the operation mode of the segment at the specified index.
Returns
S_OK if successful, S_FALSE otherwise.
Parameters
Index |
The zero based index of the segment. |
pPreambleFrames |
Pointer to a variable that will receive the number of preamble frames of the segment's pattern. |
pNoDeinterlaceFrames |
Pointer to a variable that will receive the number of No-Deinterlace frames of the segment's pattern. |
pDeinterlaceFrames |
Pointer to a variable that will receive the number of Deinterlace frames of the segment's pattern. |
*pDeintPreamble |
Pointer to a variable that will receive the state of preamble frames deinterlacing; TRUE indicates that the preamble frames will be deinterlaced, and FALSE indicates that the preamble frames will not be deinterlaced (passed untouched). |
Description
Retrieves the segment pattern parameters.
Returns
S_OK if successful, S_FALSE otherwise.
Parameters
PreambleFrames |
The number of preamble frames in the segment pattern. |
NoDeinterlaceFrames |
The number of No-Deinterlace frames in the segment pattern. |
DeinterlaceFrames |
The number of Deinterlace frames in the segment pattern. |
DeintPreamble |
A Boolean value that indicates whether to deinterlace the preamble frames (TRUE) or not (FALSE). |
Description
Sets the segment pattern parameters.
Returns
S_OK if successful, S_FALSE otherwise.
Parameters
Left |
Pointer to a variable to be updated with the left boundary of the protected area. The possible range for the left boundary is from zero to the right boundary minus one. |
Right |
Pointer to a variable to be updated with the right boundary of the protected area. The possible range for the right boundary is from the left boundary plus one to the current video width. |
Top |
Pointer to a variable that will receive the top boundary of the protected area. The possible range for the top boundary is from zero to the bottom boundary minus one. |
Bottom |
Pointer to a variable that will receive the bottom boundary of the protected area. The possible range for the bottom boundary is from the top boundary plus one to the current video height. |
Description
Retrieves the protected area boundaries.
Returns
S_OK if successful, an error code otherwise.
Parameters
Left |
Value that represents the left boundary of the protected area. The possible range for the left boundary is from zero to the right boundary minus one. Use -1 to keep the current left boundary value. |
Right |
Value that represents the right boundary of the protected area. The possible range for the right boundary is from the left boundary plus one to the current video width. Use -1 to keep the current right boundary value. |
Top |
Value that represents the top boundary of the protected area. The possible range for the top boundary is from zero to the bottom boundary minus one. Use -1 to keep the current top boundary value. |
Bottom |
Value that represents the bottom boundary of the protected area. The possible range for the bottom boundary is from the top boundary plus one to the current video height. Use -1 to keep the current bottom boundary value. |
Description
Sets the protected area boundaries. If the protected area is not enabled when this method is called, the new boundaries will be set and will take effect the next time the protected area is enabled.
Returns
S_OK if successful, an error code otherwise.