/// <summary> /// Creates an MediaObject from the effect DMO. /// </summary> /// <param name="inputFormat">The input format of the <see cref="MediaObject" /> to create.</param> /// <param name="outputFormat">The output format of the <see cref="MediaObject" /> to create.</param> /// <returns> /// The created <see cref="MediaObject" /> to use for processing audio data. /// </returns> protected override MediaObject CreateMediaObject(WaveFormat inputFormat, WaveFormat outputFormat) { _comObj = CreateComObject(); var mediaObject = new MediaObject(Marshal.GetComInterfaceForObject(_comObj, typeof(IMediaObject))); _effect = mediaObject.QueryInterface <TDXEffect>(); return(mediaObject); }
/// <summary> /// Creates an MediaObject from the effect DMO. /// </summary> /// <param name="inputFormat">The input format of the <see cref="MediaObject" /> to create.</param> /// <param name="outputFormat">The output format of the <see cref="MediaObject" /> to create.</param> /// <returns> /// The created <see cref="MediaObject" /> to use for processing audio data. /// </returns> protected override MediaObject CreateMediaObject(WaveFormat inputFormat, WaveFormat outputFormat) { _comObj = CreateComObject(); var ptr = Marshal.GetComInterfaceForObject(_comObj, typeof(IMediaObject)); try { var mediaObject = new MediaObject(ptr); _effect = mediaObject.QueryInterface <TDXEffect>(); return(mediaObject); } catch (Exception) { Marshal.Release(ptr); Marshal.ReleaseComObject(_comObj); throw; } }