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.
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_READYflag, it means you can generate one or more output samples by calling
MFTs are not required to implement this method. If the method returns
E_NOTIMPL, you must call
ProcessOutputto 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.