ILMMP42Encoder Interface

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

Interface Properties:

Type

Name

Description

long

QFactor

The quality factor used in compressing the video stream The portion of the file holding the video data. The video data might be compressed to save disk space. The data has to be decompressed using a video decompressor before you can play (see) it.; the lower the quality factor, the better the quality. Possible values range from 1 (best) to 31 (worst).

eQuantType

QuantType

The quantization method applied. Possible values are (members of the eQuantType enumeration):

Value

Meaning

LMP4_QUANTTYPE_Linear

Use H.263 quantization.

LMP4_QUANTTYPE_NonLinear

Use MPEG quantization.

 

double

OutputFrameRate

The desired output frame rate, in frames per second. Possible values range from 1.0 to 30.0. Pass -1 to make the output frame rate the same as the input frame rate.

eOutputFormat

OutputFormat

The encoder Also known as compressor, this is a module or algorithm to compress data. Playing that data back requires a decompressor, or decoder. output type. Possible values are (members of the eOutputFormat enumeration):

Value

Meaning

LMP4_OUTPUTFORMAT_mp4v

Make the encoder output type the Standard MPEG4 video media subtype.

LMP4_OUTPUTFORMAT_LMP4

Make the encoder output type the LEAD proprietary MPEG4 video subtype. This allows super compression to be used.

LMP4_OUTPUTFORMAT_XVID

Make the encoder output type the XVID video subtype.

 

VARIANT_BOOL

SuperCompression

Enables/disables super compression, LEAD’s improvement to the MPEG4 video compression. When super compression is used, compressed video size is reduced noticeably with almost the same quality, and the encoding and decoding speed is enhanced.

Files generated using this option, will not be MPEG4 compliant: they can be decoded only by the LEAD MPEG4 Video Decoder Also known as a decompressor, this is a module or algorithm to decompress data..

Possible values are:

Value

Meaning

VARIANT_TRUE

Enable super compression. This is allowed only if the output format is set to LMP4_OutputFormat_LMP4.

VARIANT_FALSE

Disable super compression.

 

long

PFrames

Specifies the number of P frames between two successive I frames *.

long

BFrames

Specifies the number of B frames between two successive P frames *.

long

SearchWidth

The search block width used when determining if motion is occurring. The larger the block, the slower the encoding process. It is not recommended to use large values. The range is from 2 to the video stream width, in pixels.

long

SearchHeight

The search block height used when determining if motion is occurring. The larger the block, the slower the encoding process. It is not recommended to use large values. The range is from 2 to the video stream height, in pixels.

eMotionAlgorithm

MotionAlgorithm

The algorithm to be used when determining if motion is occurring. Possible values are (members of the eMotionAlgorithm enumeration):

Value

Meaning

LMP4_MOTIONALGORITHM_FullSearch

Use the full motion search algorithm (testing all possibilities). This option slows down the encoding process considerably.

LMP4_MOTIONALGORITHM_FastSearch

Use fast motion search.

 

eMotionAccuracy

MotionAccuracy

Motion estimation accuracy. Possible values are (members of the eMotionAccuracy enumeration):

Value

Meaning

LMP4_MOTIONACCURACY_FullPixel

One pixel accuracy.

LMP4_MOTIONACCURACY_HalfPixel

Half pixel accuracy (faster).

 

eMotionVectorPerMacroblock

MotionVectorPerMacroblock

Specifies how many motion vectors are used in the motion estimation algorithm. Possible values are (members of the eMotionVectorPerMacroblock enumeration):

Value

Meaning

LMP4_MOTIONVECTOR_OnePerMacroblock

Use one motion vector (fast).

LMP4_MOTIONVECTOR_FourPerMacroblock

Use four motion vectors (better quality, slower encoding).

eEncodingThreads

EncodingThreads

The number of threads used during encoding. The maximum number of threads that can be used is 2. Using two threads with a dual core machine or 2 CPUs will increase the encoding speed significantly. Possible values are:

LMP4_THREAD_AUTO: Have the LEAD MPEG4 Encoder determine the appropriate number of threads.

LMP4_THREAD_1: Use 1 thread during encoding

LMP4_THREAD_2: Use 2 threads during encoding

VARIANT_BOOL

InsertVOL

Set to VARIANT_TRUE to insert a mpeg4 header before each I-frame. This is useful in a video broadcasting where the mpeg4 decoder might start decoding from the middle of the stream.

VARIANT_BOOL

InsertGOV

Set to VARIANT_TRUE to insert an optional header before I frames that indicates to the decoder the timestamp of the I frame and whether it is open/closed GOV. This helps the stream to be randomly seeked in some decoders. However, the LEAD MPEG4 decoder does not require it.

eCompressionMode

CompressionMode

Sets the compression mode. Possible values are:

LMP4_COMPRESSIONMODE_ConstantQuality: Uses the QFactor property value to regulate the image quality.

LMP4_COMPRESSIONMODE_VariableBitrate: Varies the quality over short durations. However, it will achieve an average rate matching the BitRate property value.

LMP4_COMPRESSIONMODE_ConstantBitrate: Strictly adheres to the rate specified in the BitRate property.

long

BitRate

This is the average or constant bitrate used when the CompressionMode is set to LMP4_COMPRESSIONMODE_VariableBitrate or LMP4_COMPRESSIONMODE_ConstantBitrate. The value is in bits per second.

Methods:

Name

Parameters

Description

WriteToRegistry

None

This method writes all of the encoder settings to the system registry. The next time the encoder is loaded, it retrieves the settings from the registry and applies them.

 

* To increase compression performance, MPEG4 uses Temporal Compression. Temporal compression is achieved by only encoding the difference between successive frames instead of the frames themselves. This means that frames cannot be considered in isolation. A given picture is constructed from the prediction from a previous picture, and may be used to predict the next picture. An MPEG-4 video stream is comprised of I Frames, B Frames and P Frames:

 

So to increase the compression of MPEG-4 more B and P frames should be used by adjusting PFrames and BFrames properties.