hello,
(between two business trips) I created a class ResamplerTransform(based on dmo.resamplermediaobject)
I wonder if this basis is correct
///<summary>/// From wmcodecsdp.h/// Implements:/// - IMediaObject /// - IMFTransform (Media foundation - we will leave this for now as there is loads of MF stuff)/// - IPropertyStore /// - IWMResamplerProps /// Can resample PCM or IEEE///</summary> [ComImport, Guid("f447b69e-1884-4a7e-8055-346f74d6edb3")]class CLSID_CResamplerMediaObject {// SAME DMO ResamplerMediaObjects, but rename :-) }///<summary>/// Resampler (base Dmo.ResamplerMediaObjects)///</summary>publicclass ResamplerTranform : IDisposable {/* * * TODO implante channelConversionMatrix * TODO implante Quality properties ???? * */ NAudio.Dmo.IWMResamplerProps resamplerPropsInterface; IMFTransform resamplerTransformInterface; CLSID_CResamplerMediaObject mediaComObject; public ResamplerTranform() : this(60) { }///<summary>/// Creates a new Resampler based on the DMO Resampler///</summary>public ResamplerTranform(int outputQuality) { mediaComObject = new CLSID_CResamplerMediaObject(); resamplerPropsInterface = (NAudio.Dmo.IWMResamplerProps)mediaComObject; // Quality resamplerPropsInterface.SetHalfFilterLength(outputQuality);// Channels// resamplerPropsInterface.SetUserChannelMtx(channelConversionMatrix); resamplerTransformInterface = (IMFTransform)mediaComObject; } public IMFTransform Transform {get { return resamplerTransformInterface; } }public NAudio.Dmo.IWMResamplerProps ResamplerProps {get { return resamplerPropsInterface; } }#region IDisposable Memberspublicvoid Dispose() {if (resamplerPropsInterface != null) { Marshal.ReleaseComObject(resamplerPropsInterface); resamplerPropsInterface = null; }if (resamplerTransformInterface != null) { Marshal.ReleaseComObject(resamplerTransformInterface); resamplerTransformInterface = null; }if (mediaComObject != null) { Marshal.ReleaseComObject(mediaComObject); mediaComObject = null; } }#endregion }