Media Foundation AAC Encoder is a pure MFT, as opposed to legacy DSP’s which are made dual DMO/MFT interfaced and presumably have higher chances for smaller artifacts.
The transform is synchronous and is supposed to be simpler inside: fully passive and drives by input/output calls.
Nevertheles, advertising MFT_OUTPUT_STATUS_SAMPLE_READY
via IMFTransform::GetOutputStatus
call, if might falsely indicate availability of data. Subsequent ProcessOutput
call returns MF_E_TRANSFORM_NEED_MORE_INPUT
… Documented behavior:
If the method returns the
MFT_OUTPUT_STATUS_SAMPLE_READY
flag, it means you can generate one or more output samples by callingIMFTransform::ProcessOutput
.MFTs are not required to implement this method. If the method returns
E_NOTIMPL
, you must callProcessOutput
to determine whether the transform has output data.
The method is optional, but it is implemented on this particular MFT. Also, this MFT is one of the stock transforms that are documented for public use. Microsoft could apparently have done a better job implementing it cleanly.
See also: