ILMMPEG2Encoder Interface

This is the interface for the LEAD MPEG-2 Encoder.

Data Types

eMPEG2VIDEOTYPE

Summary

Specifies the MPEG2 video encoding type.

Syntax

typedef enum 
{ 
   MPEG2Type_MPEG1 = 0, 
   MPEG2Type_VCD = 1, 
   MPEG2Type_MPEG2 = 2, 
   MPEG2Type_SVCD = 3, 
   MPEG2Type_DVD = 4, 
   MPEG2Type_DICOM	= 5 
} eMPEG2VIDEOTYPE; 

eMPEG2FRAMERATE

Summary

Specifies the playback frame rates of the compressed video.

Syntax

typedef enum 
{ 
   FRAMERATE_23_98 = 0, 
   FRAMERATE_24_00 = 1, 
   FRAMERATE_25_00 = 2, 
   FRAMERATE_29_97 = 3, 
   FRAMERATE_30_00 = 4, 
   FRAMERATE_50_00 = 5, 
   FRAMERATE_59_94 = 6, 
   FRAMERATE_60_00 = 7 
} eMPEG2FRAMERATE; 

eMPEG2PROFILE

Summary

Specifies the MPEG2 profile.

Syntax

typedef enum 
{ 
   MPEG2Profile_Simple = 0, 
   MPEG2Profile_Main = 1, 
   MPEG2Profile_High = 2 
} eMPEG2PROFILE; 

eMPEG2LEVEL

Summary

Specifies the MPEG2 level.

Syntax

typedef enum 
{ 
   MPEG2Level_Low = 0, 
   MPEG2Level_Main = 1, 
   MPEG2Level_High1440 = 2, 
   MPEG2Level_High = 3 
} eMPEG2LEVEL; 

eMPEG2DEFAULTMODE

Summary

Specifies the default MPEG2 encoding mode.

Syntax

typedef enum 
{ 
   MPEG2MODE_GENERAL = 1, 
   MPEG2MODE_DVD = 2, 
   MPEG2MODE_DICOM = 3, 
   MPEG2MODE_MPEG1 = 4, 
   MPEG2MODE_VCD = 5, 
   MPEG2MODE_MPEG2 = 6, 
   MPEG2MODE_SVCD = 7 
} eMPEG2DEFAULTMODE; 

eMPEG2DISPLAYSCAN

Summary

Specifies the display device on which the MPEG file will be played.

Syntax

typedef enum 
{ 
   MPEG2_DS_PROGRESSIVE = 0, 
   MPEG2_DS_INTERLACED = 1 
} eMPEG2DISPLAYSCAN; 

eMPEG2VIDEOFORMAT

Summary

Specifies the TV system on which the MPEG file will be played (NTCS, PAL).

Syntax

typedef enum 
{ 
   MPEG2_VF_PAL = 1, 
   MPEG2_VF_NTSC = 2, 
   MPEG2_VF_HDTV_720 = 3, 
   MPEG2_VF_HDTV_1080 = 4 
} eMPEG2VIDEOFORMAT; 

eRATECONTROL

Summary

Controls the compression rate.

Syntax

typedef enum 
{ 
   MPEG2_VARIABLE_BITRATE, 
   MPEG2_CONSTANT_QUALITY, 
   MPEG2_CONSTANT_BITRATE, 
} eRATECONTROL; 

Members

MPEG2_CONSTANT_BITRATE

(Fixed output rate): The compression level is constant and the storage requirements are easily predicted. This may affect the video quality of more dynamic scenes and pictures with lots of detail. The bit rate describes the amount of data used or transferred per second. It is directly related to the compression level. For example, a DV video (approximately 1:5 compression) would need 25 Mbit (3.12MB) per second.

Using MPEG-2 compression at bit rate = 6 Mbit/sec, the compression level will be 1:27. Therefore, the higher the bit rate, the lower the compression and the better the quality. The bit rate can be adjusted using the Bitrate edit box. For both Variable Bitrate and Fixed Bitrate, the video quality also depends on the MPEG-2 profile used (4:2:2 or 4:2:0) and the distance between I frames and P frames.|

MPEG2_CONSTANT_QUALITY

(Variable bit rate and Fixed video quality). The compression rate varies with scene content. For more dynamic scenes a high bit rate (low compression) is used to maintain consistent video quality. Setting a quality value in the Quality drop down box can further control the quality.

MPEG2_VARIABLE_BITRATE

The compression rate varies with scene content. The MinQuantizerValue, MaxQuantizerValue, Bitrate will control the video quality. The video quality will vary between the Minimum and Maximum quality factors, and the rate will not exceed the Maximum Bitrate.

This option should be used when good video quality is required at a certain bit rate. (A common use for this is DVD creation). You achieve the best compression-quality performance when you use this option. For this option, the compressor increases or decreases the quality factor automatically to maintain the highest quality at the desired bit rate, specified in the Average Bitrate and the Maximum Bitrate edit boxes. However, the quality factor will not go below the Minimum Quality factor or exceed the Maximum Quality factor. MinQuantizerValue and MaxQuantizerValue properties indicate the range allowed for the quantizer. MinQuantizerValue must be less than MaxQuantizerValue. The quantizer is directly proportional with the compression ratio and inversely proportional with the quality. (A high quantizer value will generate a low size for the compressed stream but at a lower video quality).|

To give the compressor the whole range of possible compression, you can set MinQuantizerValue to 1 and MaxQuantizerValue to 31. But if you want to restrict it from generating video of bad quality, you can set MaxQuantizerValue to the highest quantizer you consider acceptable. For example, if you decide video generated with quantizers 20 and above generate video of unacceptable quality, you can set MaxQuantizerValue to 19 and you are guaranteed to generate video with quantizers of 19 or less. Therefore, high quantizer = high compression = small compressed video files = poor video quality. Low quantizer = low compression = large compressed video files = high quality.|

eMPEG2EncoderFlag

Summary

Specifies whether the encoder offers both media MEDIASUBTYPE_MPEG2_VIDEO and MEDIASUBTYPE_LMPG2 subtypes.

Syntax

typedef enum 
{ 
   MPEG2EncoderFlag_None = 0, 
   MPEG2EncoderFlag_DisableMediaTypeLMP2 = 0x00000001, 
} eMPEG2EncoderFlag; 

Members

MPEG2EncoderFlag_DisableMediaTypeLMP2

The encoder will not offer the MEDIASUBTYPE_LMPG2 subtype. Only the MEDIASUBTYPE_MPEG2_VIDEO subtype will be offered.

This is useful when using generic container formats like OGG that accept any media type. For example, if a conversion is performed with MPEG2EncoderFlag_DisableMediaTypeLMP2 set and OGG is used as an output format, then the MPEG2 stream will be saved using the MEDIASUBTYPE_MPEG2_VIDEO subtype.|

The MEDIASUBTYPE_MPEG2_VIDEO subtype can be moved to MPEG2 Program / Transport easily without video recompression.|

MPEG2EncoderFlag_None

The encoder will offer both media subtypes (MEDIASUBTYPE_MPEG2_VIDEO and MEDIASUBTYPE_LMPG2).

eMPEGASPECTRATIO

Summary

Specifies the desired aspect ratio during playback.

Syntax

typedef enum 
{ 
   MPEG1_AR_1_0000, 
   MPEG1_AR_0_6735, 
   MPEG1_AR_0_7031, 
   MPEG1_AR_0_7615, 
   MPEG1_AR_0_8055, 
   MPEG1_AR_0_8437, 
   MPEG1_AR_0_8935, 
   MPEG1_AR_0_9375, 
   MPEG1_AR_0_9815, 
   MPEG1_AR_1_0255, 
   MPEG1_AR_1_0695, 
   MPEG1_AR_1_1250, 
   MPEG1_AR_1_1575, 
   MPEG1_AR_1_2015, 
   MPEG2_AR_1_0000, 
   MPEG2_AR_4_3, 
   MPEG2_AR_16_9, 
   MPEG2_AR_2_21_1 
} eMPEGASPECTRATIO; 

eMpeg2ApiLevel

Summary

Lists the valid values for the ApiLevel parameter that can be passed to the ResetToDefaultsEx method.

Syntax

typedef enum 
{ 
   MPEG2_APILEVEL_1 = 0, 
   MPEG2_APILEVEL_2 = 1 
} eMpeg2ApiLevel; 

eMpeg2EncodingThreads

Summary

Specifies the number of threads used during encoding.

Syntax

typedef enum 
{ 
   MPEG2_THREAD_AUTO = 0, 
   MPEG2_THREAD_1 = 1, 
   MPEG2_THREAD_2 = 2, 
   MPEG2_THREAD_3 = 3, 
   MPEG2_THREAD_4 = 4, 
   MPEG2_THREAD_5 = 5, 
   MPEG2_THREAD_6 = 6, 
   MPEG2_THREAD_7 = 7, 
   MPEG2_THREAD_8 = 8, 
} eMpeg2EncodingThreads; 
Enumeration Description
MPEG2_THREAD_AUTO The encoder will pick the best number of threads for your computer.
MPEG2_THREAD_1 1
MPEG2_THREAD_2 2
MPEG2_THREAD_3 3
MPEG2_THREAD_4 4
MPEG2_THREAD_5 5
MPEG2_THREAD_6 6
MPEG2_THREAD_7 7
MPEG2_THREAD_8 8

Properties

Type Name Description
eMPEG2VIDEOTYPE MpegVideoType This option offers encoding parameters for VCD, SVCD, DVD and DICOM (if you select these, you cannot change most other options). If you choose MPEG1 or MPEG2, you can create a custom video stream by changing other options described below.
The encoder is capable of generating MPEG-1 or MPEG-2 video.
• When the MPEG-1 radio button is checked, MPEG-1 compression is used. In this case, only Custom MPEG-1 or VCD MPEG-1 options are available.
   • Custom MPEG-1 lets you control all the MPEG-1 compression options. A custom MPEG-1 file may or may not be compatible with VCD.
   • VCD (Video on CD) lets you create VCD-compatible files. VCD-compatible files use MPEG-1 compression, but have certain restrictions on compression options, the video size (must be 352x240 for NTSC or 352x288 for PAL) and frame rate. The encoder will automatically resize the video if VCD output type is selected and the size of the video being compressed is not correct.
• When the MPEG-2 radio button is checked, MPEG-2 compression is used. In this case, only Custom MPEG-2, SVCD, DVD 1 and DVD 2 are available.
    • Custom MPEG-2 lets you control all the MPEG-2 compression options. A custom MPEG-2 file may or may not be compatible with SVCD or DVD.
    • SVCD (Super Video CD) lets you create SVCD-compatible files. SVCD files use MPEG-2 compression, but have certain restrictions on compression options, video size (must be 480x480 for NTSC or 480x576 for PAL), aspect ratio (4:3 or 16:9) and frame rate (29.97fps for NTSC, 25fps for PAL). The encoder will automatically resize the video if SVCD output type is selected and the size of the video being compressed is not correct.
    • DVD lets you create DVD-compatible files that can be put on a 1-hour DVD. DVD files use MPEG-2 compression, but have certain restrictions on compression options, video size (must be 720x480 for NTSC or 720x576 for PAL), aspect ratio (16:9 or 4:3) and frame rate. The encoder will automatically resize the video if DVD output type is selected and the size of the video being compressed is not correct.
    • DICOM lets you create Digital Imaging and Communications in Medicine (DICOM), compatible mpeg2 file (SD or HD). The mpeg2 encoder setting is based on DICOM Part 5: Data Structures and Encoding (PS 3.5-2004), "Supplement 42: MPEG2 Transfer Syntax" and "Supplement 137: MPEG2 MP@HL Transfer Syntax".
     • For SD, the video size must be less than 720x480 (NTSC) or 720x576 (PAL). The encoder will automatically resize the video if DICOM output type is selected and the size of the video being compressed is not correct.
     • For HD, the video size must be 1920x1080 or 1280x720. The encoder will automatically resize the input video is not the right size. For 1920x1080, the frame rate can be 25, 29.97 or 30fps. For 1280x720, the frame rate can be 25, 29.97, 30, 50, 59.94 or 60fps. The aspect ratio is always 16:9.
eMPEG2FRAMERATE PlaybackFramerate This option sets the playback frame rates of the compressed video no matter what the input stream rate is. LEAD MPEG-2 Encoder will automatically adjust the input video to match the desired frame rate. The adjustment is done through dropping or duplicating input frames.
eMPEG2PROFILE MPEG2Profile Use this option to Set MPEG2 profile.
Default value is MPEG2Profile_Main.
All MPEG2 Profiles listed above are generated using the 4:2:0 Chroma Format. The LEADTOOLS MPEG2 Encoder MPEG2Profile_High does not support the 4:2:2 Chroma format.
eMPEG2LEVEL MPEG2Level Use this option to set MPEG2 level.
The default value is MPEG2Level_Main.
eRATECONTROL RateControlMethod The control methods that can be selected with this property.
long Options For possible values, refer to eMPEG2EncoderFlag.
The default value is MPEG2EncoderFlag_None.
long QuantizerValue This option is active only when RateControlMethod equal to MPEG2_CONSTANT_QUALITY.
Use this option to set the video quality.
A QuantizerValue of 1 gives the best quality and the biggest video size, while a QuantizerValue of 31 gives the smallest file size with low video quality. A QuantizerValue of 4 has been chosen as the default value.
long MinQuantizerValue This option is active only when RateControlMethod equal to MPEG2_VARIABLE_BITRATE.
For variable bitrates, the encoder will not use a quantizer below this value. This value range is 1 - 31.
long MaxQuantizerValue This option is active only when RateControlMethod equal to MPEG2_VARIABLE_BITRATE.
For variable bitrates, the encoder will not use a quantizer above this value. This value range is 1 - 31.
long Bitrate Set the bitrate for mpeg2 encoder in bits per second units.
Use this when RateControlMethod is set to MPEG2_CONSTANT_BITRATE or MPEG2_VARIABLE_BITRATE.
For MPEG2_VARIABLE_BITRATE this value will represent the average bitrate.
long I_FrameDistance This option set the distance between I frames or how many frames between each I frames. Note that all frames between I frames are P or B frames.
It is preferable to update P_FrameDistance before I_FrameDistance since updating one might change the other. Also notice that I_FrameDistance always should be multiple of P_FrameDistance.
long P_FrameDistance This option set the distance between P frames or how many frames between each P frames. Note that all frames between P frames are B frames.
It is preferable to update P_FrameDistance before I_FrameDistance since updating one might change the other. Also notice that I_FrameDistance always should be multiple of P_FrameDistance.
VARIANT_BOOL ShowWarningMessage This property is now obsolete. It is now ignored by the encoder and will be removed in future versions of the encoder.
eMPEG2VIDEOFORMAT VideoFormat Specifies the TV system on which the MPEG file will be played (NTCS, PAL). Use this property when producing a file to be played on TV, such as a DVD or VCD. For information about HDTV resolution, please see https://en.wikipedia.org/wiki/High-definition_television.
Also see "Supplement 137: MPEG2 MP@HL Transfer Syntax" of the DICOM specification for more information on the restrictions for the HDTV video that can be stored inside DICOM files.
eMPEGASPECTRATIO AspectRatio Sets the desired aspect ratio during playback. The video will be adjusted if it does not match this desired aspect ratio, unless the IgnoreInputAspectRatio property is set to VARIANT_TRUE.
eMPEG2DISPLAYSCAN DisplayScan This option should be set to -Interlaced- if the mpeg2 file needs to be played on an interlaced device, like a TV set. Otherwise set this option to "Progressive" if the mpeg2 file needs to be played on a progressive display device like a Computer Monitor.
VARIANT_BOOL IgnoreInputAspectRatio • VARIANT_TRUE - the input aspect ratio is assumed to be the same as the output aspect ratio. In this case, the encoder will not add black bars and the output video might be distorted.
• VARIANT_FALSE - the input aspect ratio is assumed to be correct and the encoder will preserve the input aspect ratio when resizing or adjusting the video. Black horizontal or vertical bars might be added if the input aspect ratio does not match the output aspect ratio.
eMPEG2DEFAULTMODE DefaultMpegMode This option set the default MPEG2 encoding mode, which decides the MpegVideoType to be applied by default when preparing the MPEG2 encoding options.
eMpeg2EncodingThreads EncodingThreads The number of threads used during encoding. The maximum number of threads that can be used is 8. Using multiple (X) threads on multi-core (X number of cores) machine or X CPUs will increase the encoding speed significantly.
This property allows you to tweak the speed of the compression depending on the number of processors in your system. Encoding is faster on multiprocessor computers if more than one thread is used.
VARIANT_BOOL PictureCodingType • VARIANT_TRUE - the Field coding will be used: the even rows are encoded as one field and the odd rows are encoded as another field.
This option can increase compression for interlaced videos.
• VARIANT_FALSE - the Frame coding will be used: each video frame is encoded one frame (both even and odd rows are encoded together).
unsigned long EstimatedBitrate (Read-only). Use this property to obtain the estimated bitrate (bit per second).
BSTR TimeQualityFactorFileName Set the Time / Quality factor file name, when this option used, the MPEG2 Encoder will set the quality according to Time/Quality records provided in the file.
VARIANT_BOOL EnablePrecisionTimeStamp Specifies whether precision time stamps should be added to the compressed stream. Possible values are:
• TRUE - precision time stamps are added to each compressed frame.
• FALSE - precision time stamps are not added.
The default value is FALSE (the presentation timestamps are not added to the stream). See the Precision Time Stamps topic for more information on precision time stamps.
double PrecisionTimeStampStartValue This property is used only if the EnablePrecisionTimeStamp property is set to TRUE. Represents the start value for the precision time stamp. This value is in microseconds since Jan 1, 1970 and is relative to Coordinates Universal Time (UTC). Use the ConvertDateToPrecisionTimeStamp method to convert a date string to this value.
If this property is set to -1, the start value will be the current time when the compression starts.
The default value for this property is -1 (the start time is the compression start time).

Methods

HRESULT ResetToDefaultsEx (eMpeg2ApiLevel ApiLevel)

Description

Resets encoder to default values.

Parameters

ApiLevel

Determines which default values to use. Current applications should set ApiLevel to MPEG2_APILEVEL_2 = 1.

Comments

The encoder might change in the future and have different properties or default behavior. Calling this method ensures the filter will have the same default values they had at the time you developed your application.

It is best to call ResetToDefaultsEx(MPEG2_APILEVEL_2) before setting any properties for this interface.

Returns

S_OK.

HRESULT ConvertDateToPrecisionTimeStamp ( BSTR pszDateString, BSTR pszFormatString, double *pPrecisionTimeStampValue);

Description

Converts a string containing the date and time to a number representing microseconds since Jan 1, 1970.

Parameters

pszDateString

The string containing the date and time.

pszFormatString

Optional string describing the format in pszDateString. Can be NULL or empty string (""), in which case the date string should be in one of the standard formats. See Custom Formats for more details on the custom format string.

pPrecisionTimeStampValue

Pointer to a value that will receive the time in microseconds since 1970.

Comments

The converted value can be used to set the PrecisionTimeStampStartValue property.

See the Precision Time Stamps topic for more information on precision time stamps and the format of the strings that can be converted.

Returns

Return Description
S_OK Successful.
< 0 An error occurred.

HRESULT WriteToRegistry();

Description

Writes the values of all of the properties listed above to the system registry, so that the decoder will remember these settings the next time it is used.

Comments

This method is automatically called by the property page when you apply modified settings by clicking on the Apply or OK button.

Returns

Return Description
S_OK Successful.
< 0 An error occurred.
Help Version 22.0.2023.2.15
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Filters C API Help
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.