public MediaFoundationAudioWriter(MF.SinkWriter sinkWriter, ref WAVEFORMATEX waveFormat, int desiredBitRate = 192000) { var sharpWf = waveFormat.ToSharpDX(); // Information on configuring an AAC media type can be found here: // http://msdn.microsoft.com/en-gb/library/windows/desktop/dd742785%28v=vs.85%29.aspx var outputMediaType = SelectMediaType(AudioFormat, sharpWf, desiredBitRate); if (outputMediaType == null) throw new InvalidOperationException("No suitable encoders available"); var inputMediaType = new MF.MediaType(); var size = 18 + sharpWf.ExtraSize; sinkWriter.AddStream(outputMediaType, out streamIndex); MF.MediaFactory.InitMediaTypeFromWaveFormatEx(inputMediaType, new[] { sharpWf }, size); sinkWriter.SetInputMediaType(streamIndex, inputMediaType, null); }
/// <summary> /// Creates a media target. /// </summary> /// <param name="sinkWriter">The previously created SinkWriter.</param> /// <param name="videoPixelSize">The pixel size of the video.</param> /// <param name="streamIndex">The stream index for the new target.</param> protected abstract void CreateMediaTarget(MF.SinkWriter sinkWriter, SharpDX.Size2 videoPixelSize, out int streamIndex);