/// <summary>Adds new encoding audio stream.</summary> /// <param name="encoder">Encoder to be used.</param> /// <param name="ownsEncoder">Whether encoder should be disposed with the writer.</param> /// <returns>Newly added audio stream.</returns> /// <remarks> /// <para> /// Stream is initialized to be to be encoded with the specified encoder. /// Method <see cref="IAviAudioStream.WriteBlock"/> expects data in the same format as encoder (see encoder's docs). /// The data is passed to the encoder and the encoded result is written to the stream. /// </para> /// <para> /// The encoder defines the following properties of the stream: /// <see cref="IAviAudioStream.ChannelCount"/>, <see cref="IAviAudioStream.SamplesPerSecond"/>, /// <see cref="IAviAudioStream.BitsPerSample"/>, <see cref="IAviAudioStream.BytesPerSecond"/>, /// <see cref="IAviAudioStream.Granularity"/>, <see cref="IAviAudioStream.Format"/>, /// <see cref="IAviAudioStream.FormatSpecificData"/>. /// These properties cannot be modified. /// </para> /// </remarks> public IAviAudioStream AddEncodingAudioStream(IAudioEncoder encoder, bool ownsEncoder = true) { Argument.IsNotNull(encoder, nameof(encoder)); return(AddStream <IAviAudioStreamInternal>(index => { var stream = new AviAudioStream(index, this, 1, 44100, 16); var encodingStream = new EncodingAudioStreamWrapper(stream, encoder, ownsEncoder); var asyncStream = new AsyncAudioStreamWrapper(encodingStream); return asyncStream; })); }
/// <summary>Adds new encoding audio stream.</summary> /// <param name="encoder">Encoder to be used.</param> /// <param name="ownsEncoder">Whether encoder should be disposed with the writer.</param> /// <returns>Newly added audio stream.</returns> /// <remarks> /// <para> /// Stream is initialized to be to be encoded with the specified encoder. /// Method <see cref="IAviAudioStream.WriteBlock"/> expects data in the same format as encoder (see encoder's docs). /// The data is passed to the encoder and the encoded result is written to the stream. /// </para> /// <para> /// The encoder defines the following properties of the stream: /// <see cref="IAviAudioStream.ChannelCount"/>, <see cref="IAviAudioStream.SamplesPerSecond"/>, /// <see cref="IAviAudioStream.BitsPerSample"/>, <see cref="IAviAudioStream.BytesPerSecond"/>, /// <see cref="IAviAudioStream.Granularity"/>, <see cref="IAviAudioStream.Format"/>, /// <see cref="IAviAudioStream.FormatSpecificData"/>. /// These properties cannot be modified. /// </para> /// </remarks> public IAviAudioStream AddEncodingAudioStream(IAudioEncoder encoder, bool ownsEncoder = true) { Contract.Requires(encoder != null); Contract.Requires(Streams.Count < 100); Contract.Ensures(Contract.Result <IAviAudioStream>() != null); return(AddStream <IAviAudioStreamInternal>(index => { var stream = new AviAudioStream(index, this, 1, 44100, 16); var encodingStream = new EncodingAudioStreamWrapper(stream, encoder, ownsEncoder); var asyncStream = new AsyncAudioStreamWrapper(encodingStream); return asyncStream; })); }