ILMAACEncoder

This is the interface for the LEAD AAC Encoder.

Data Types:

eStreamFormat

typedef enum  
{ 
   LAAC_STREAMFORMAT_RAW, 
   LAAC_STREAMFORMAT_ADTS, 
} eStreamFormat; 

Lists the format values that can be set for the output stream.

LAAC_STREAMFORMAT_RAW The encoder will output raw compressed data; raw data blocks. Only one header at the beginning of the stream is output. Using this value, the MPEGVersion property is restricted to LAAC_MPEGVersion_MPEG4.
LAAC_STREAMFORMAT_ADTS The encoder output format is Audio Data Transport Stream, where each frame has its own header.

eRateControl

typedef enum 
{ 
   LAAC_RC_CONST_QUALITY, 
   LAAC_RC_CONST_BITRATE, 
} eRateControl; 

Lists the methods that can be used to control the output bitrate.

LAAC_RC_CONST_QUALITY [0] Constant quality, or variable bitrate. The output bitrate depends on the used quality factor and the nature of the input signal. If the encoder is connected to the AVI multiplexer, this option is disabled and the encoder will revert to the constant bitrate (LAAC_RC_CONST_BITRATE).
LAAC_RC_CONST_BITRATE [1] Average bitrate. The output bitrate is defined by the OutputBitrate property.

eBlockType

typedef enum 
{ 
   LAAC_BlockType_NORMAL, 
   LAAC_BlockType_NOSHORT, 
   LAAC_BlockType_NOLONG, 
} eBlockType; 

Lists the allowed block types (data window length).

LAAC_BlockType_NORMAL [0] Both long and short blocks are allowed.
LAAC_BlockType_NOSHORT [1] Only long blocks allowed. A long block is usually 1024 samples.
LAAC_BlockType_NOLONG [2] Only short blocks allowed. A short block is usually 128 samples.

eMPEGVersion

typedef enum 
{ 
   LAAC_MPEGVersion_MPEG4, 
   LAAC_MPEGVersion_MPEG2, 
} eMPEGVersion; 

Lists the possible AAC audio MPEG versions that can be set on the output stream.

LAAC_MPEGVersion_MPEG4 [0] MPEG-4 AAC.
LAAC_MPEGVersion_MPEG2 [1] MPEG-2 AAC. With this version, only LC and MAIN profiles (object types) are allowed.

eObjectType

typedef enum 
{ 
   LAAC_ObjType_MAIN, 
   LAAC_ObjType_LC, 
   LAAC_ObjType_LTP, 
} eObjectType; 

Lists the possible AAC profiles that can be used.

LAAC_ObjType_MAIN [0] Main profile. Greater coding efficiency on the expense of complexity (more resources).
LAAC_ObjType_LC [1] Low complexity profile. Requires lower CPU and Memory resources.
LAAC_ObjType_LTP [3] Long Term Prediction profile. Most suitable for speech and signals with clear pitch property. This profile can be used with MPEG4 AAC only; the MPEG4Version property must be LAAC_MPEGVersion_MPEG4.

eOutputChannels

typedef enum 
{ 
   LAAC_OC_UNCHANGED, 
   LAAC_OC_MONO, 
   LAAC_OC_STEREO, 
   LAAC_OC_6CHANNELS, 
} eOutputChannels; 

Lists the possible number of output channels that can be set on the output stream.

LAAC_OC_UNCHANGED [0x00] Same as input.
LAAC_OC_MONO [0x01] One channel; mono.
LAAC_OC_STEREO [0x02] Two channels; stereo.
LAAC_OC_6CHANNELS [0x03] Six channels; 5.1.

Interface Properties:

Type Name Description
long OutputBitrate The output bitrate, in kbps, of the compressed audio data. Bitrate denotes the average number of bits that one second of audio data will take up in the compressed bitstream. The output quality is related to the selected bitrate; the higher the bitrate, the better the quality.
Supported bitrates are: 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 448, 512, 576, and 640 kbps.
eOutputChannels OutputChannels The number of output channels. Possible values are (members of the eOutputChannels enumeration):
LAAC_OC_UNCHANGED:  [0x00] Same as input.
LAAC_OC_MONO:  [0x01] One channel; mono.
LAAC_OC_STEREO:  [0x02] Two channels; stereo.
LAAC_OC_6CHANNELS:  [0x03] Six channels; 5.1.
VARIANT_BOOL SimulateSurround Enables or disables surround feature simulation. Possible values are:
VARIANT_TRUE:  Enables surround feature simulation.
VARIANT_FALSE:  Disables surround feature simulation.
This property has effect only if the OutputChannels property was set to LAAC_OC_6CHANNELS.
eMPEGVersion MPEGVersion The AAC audio MPEG version. Possible values are (members of the eMPEGVersion enumeration):
LAAC_MPEGVersion_MPEG4:  [0] MPEG-4 AAC.
LAAC_MPEGVersion_MPEG2:  [1] MPEG-2 AAC. With this version, only LC and MAIN profiles (object types) are allowed.
eBlockType BlockType The allowed block type; data window length.
Possible values are (members of the eBlockType enumeration):

LAAC_BlockType_NORMAL:  [0] Both long and short blocks are allowed.
LAAC_BlockType_NOSHORT:  [1] Only long blocks allowed. A long block is usually 1024 samples.
LAAC_BlockType_NOLONG:  [2] Only short blocks allowed. A short block is usually 128 samples.

eObjectType ObjectType The AAC profile used. Possible values are (members of the eObjectType enumeration):
LAAC_ObjType_LC:  [1] Low complexity profile. Requires lower CPU and Memory resources.
LAAC_ObjType_MAIN:  [0] Main profile. Greater coding efficiency on the expense of complexity (more resources).
LAAC_ObjType_LTP:  [3] Long Term Prediction profile. Most suitable for speech and signals with clear pitch property. This profile can be used with MPEG4 AAC only; the MPEG4Version property must be LAAC_MPEGVersion_MPEG4.
long QFactor The quality factor used in compressing the audio stream; the higher the quality factor, the better the quality. Possible values range from 10 (worst) to 500 (best).
eRateControl RateControl The method used to control the output bitrate. Possible values are (members of the eRateControl enumeration):
LAAC_RC_CONST_QUALITY:  [0] Constant quality, or variable bitrate. The output bitrate depends on the used quality factor and the nature of the input signal. If the encoder is connected to the AVI multiplexer, this option is disabled and the encoder will revert to the constant bitrate (LAAC_RC_CONST_BITRATE).
LAAC_RC_CONST_BITRATE:  [1] Average bitrate. The output bitrate is defined by the OutputBitrate property.
long Cutoff The cutoff frequency, the frequency beyond which the audio signal is attenuated, in Hz. Possible values range from 3000 to 24000 Hz, and the value must be a multiple of 1000.
VARIANT_BOOL UseCutoff Determines whether the cutoff frequency specified by the Cutoff property will be used. Possible values are:
VARIANT_TRUE:  The cutoff frequency specified by the Cutoff property is used.
VARIANT_FALSE:  No cutoff frequency is used. The Cutoff property has no effect.
eStreamFormat StreamFormat The format of the output stream. Possible values are (members of the eStreamFormat enumeration):
LAAC_STREAMFORMAT_RAW:  The encoder will output raw compressed data; raw data blocks. Only one header at the beginning of the stream is output. Using this value, the MPEGVersion property is restricted to LAAC_MPEGVersion_MPEG4.
LAAC_STREAMFORMAT_ADTS:  The encoder output format is Audio Data Transport Stream, where each frame has its own header.
long OutputSampleRate The output sample rate, in samples per second.
Possible values range between 8000 and 96000 samples per second (Hz). Note: Changing the sample rate causes a change in the quality resulting from audio data resampling.
VARIANT_BOOL IgnoreTimeDiscontinuity If set to VARIANT_TRUE, this property will cause the encoder to ignore discontinuities in the timestamps (time gaps) of the incoming audio samples. Sometimes this is needed to work around audio source timing problems. This property is not active (VARIANT_FALSE) by default.
VARIANT_BOOL IgnoreTimeOverlapping If set to VARIANT_TRUE, this property will cause the encoder to ignore overlapping in the timestamps of the incoming audio samples. Sometimes this is needed to work around audio source timing problems. This property is not active (VARIANT_FALSE) by default.
VARIANT_BOOL EnableDriftCorrector Property indicating whether the encoder should automatically correct timestamp drifting. If VARIANT_FALSE, timestamps are not corrected. If VARIANT_TRUE, the encoder will automatically correct timestamps that drift over time.
If this property is enabled (set to VARIANT_TRUE), the encoder will work together with any other encoders in the current graph to correct drifts and synchronize audio and video. Currently, only the LEAD H264, H265 and AAC Encoders support this feature.
The default value for this property is VARIANT_FALSE (timestamp drifting is not corrected).
This is an advanced low-level setting that should be set to a VARIANT_TRUE value only if:
  1. you are in a capture situations (it will NOT work properly in file conversion situations)
  2. you are discovering that audio and video streams lose synchronization after running for a while (typically a few hours).

If you are unsure whether to use it or not, leave this property set to VARIANT_FALSE, because setting it incorrectly can cause big problems. See the Timestamp drifting in live capture situations topic for more details.
This property was added mainly to solve problems with some Decklink video capture cards. The problems were as follows:

  1. at the beginning of the capture, there was a slight drift (around 60-90ms) between the audio and video streams.
  2. the drift was increasing after a few hours.
Setting this property to VARIANT_TRUE (or True in some languages) solves these problems.

Interface Methods:

HRESULT ResetToDefaults();

Description

Resets the filter properties to their default values. Calling this method can cause the filter to reconnect its output pin.

The default values are:
QFactor = 100
StreamFormat = LAAC_STREAMFORMAT_RAW
ObjectType = LAAC_ObjType_MAIN
BlockType = LAAC_BlockType_NORMAL
MPEGVersion = LAAC_MPEGVersion_MPEG4
RateControl = LAAC_RC_CONST_BITRATE
Cutoff = 16000
UseCutoff = FALSE
OutputChannel = LAAC_OC_UNCHANGED
SimulateSurround = FALSE
IgnoreTimeDiscontinuity = FALSE
IgnoreTimeOverlapping = FALSE

Returns

S_OK if successful, < 0 if an error occurred.

Common error codes:

VFW_E_WRONG_STATE

The filter is in the wrong state.

Help Version 20.0.2020.3.31
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Filters C API Help