Quantcast
Channel: NAudio
Viewing all articles
Browse latest Browse all 5831

New Post: Resampler Transform

$
0
0

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
	}


Viewing all articles
Browse latest Browse all 5831

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>