using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Text;
using System.Security.Permissions;
using System.Globalization;
using BSE.Platten.Ripper.Properties;
namespace BSE.Platten.Ripper
{
[Serializable]
public class AudioWriterConfiguration : ISerializable
{
#region FieldsProtected
protected CWaveFormat m_waveFormat;
#endregion
#region Properties
public CWaveFormat WaveFormat
{
get { return this.m_waveFormat; }
set { this.m_waveFormat = value; }
}
#endregion
#region MethodsPublic
public AudioWriterConfiguration(CWaveFormat waveFormat)
{
if (waveFormat == null)
{
throw new ArgumentNullException(
string.Format(
CultureInfo.InvariantCulture,
Resources.IDS_ArgumentNullException,
"waveFormat"));
}
this.m_waveFormat = new CWaveFormat(waveFormat.nSamplesPerSec, waveFormat.wBitsPerSample, waveFormat.nChannels);
}
public AudioWriterConfiguration()
: this(new CWaveFormat(44100, 16, 2))
{
}
#region ISerializable
[SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)]
public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
{
if (info == null)
{
throw new ArgumentNullException(
string.Format(
CultureInfo.InvariantCulture,
Resources.IDS_ArgumentNullException,
"info"));
}
info.AddValue("Format.Rate", this.m_waveFormat.nSamplesPerSec);
info.AddValue("Format.Bits", this.m_waveFormat.wBitsPerSample);
info.AddValue("Format.Channels", this.m_waveFormat.nChannels);
}
#endregion
#endregion
#region MethodsProtected
protected AudioWriterConfiguration(SerializationInfo info, StreamingContext context)
{
if (info == null)
{
throw new ArgumentNullException(
string.Format(
CultureInfo.InvariantCulture,
Resources.IDS_ArgumentNullException,
"info"));
}
int rate = info.GetInt32("Format.Rate");
int bits = info.GetInt32("Format.Bits");
int channels = info.GetInt32("Format.Channels");
this.m_waveFormat = new CWaveFormat(rate, bits, channels);
}
#endregion
}
#region Interfaces
public interface IAudioWriterConfig : BSE.Platten.Common.IOptionsConfiguration
{
AudioWriterConfiguration AudioWriterConfiguration { get; set; }
}
public interface IEditFormat : BSE.Platten.Common.IOptionsConfiguration
{
CWaveFormat WaveFormat { get; set; }
}
#endregion
}