Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Speech / Src / AudioFormat / SpeechAudioFormatInfo.cs / 1 / SpeechAudioFormatInfo.cs
//------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------
using System;
using System.ComponentModel;
using System.Speech.Internal.Synthesis;
namespace System.Speech.AudioFormat
{
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo"]/*' />
[Serializable]
#if !SPEECHSERVER
public
#else
internal
#endif
class SpeechAudioFormatInfo
{
//*******************************************************************
//
// Constructors
//
//*******************************************************************
#region Constructors
private SpeechAudioFormatInfo (EncodingFormat encodingFormat, int samplesPerSecond, short bitsPerSample, short channelCount, byte [] formatSpecificData)
{
if (encodingFormat == 0)
{
throw new ArgumentException (SR.Get (SRID.CannotUseCustomFormat), "encodingFormat");
}
if (samplesPerSecond <= 0)
{
throw new ArgumentOutOfRangeException ("samplesPerSecond", SR.Get (SRID.MustBeGreaterThanZero));
}
if (bitsPerSample <= 0)
{
throw new ArgumentOutOfRangeException ("bitsPerSample", SR.Get (SRID.MustBeGreaterThanZero));
}
if (channelCount <= 0)
{
throw new ArgumentOutOfRangeException ("channelCount", SR.Get (SRID.MustBeGreaterThanZero));
}
_encodingFormat = encodingFormat;
_samplesPerSecond = samplesPerSecond;
_bitsPerSample = bitsPerSample;
_channelCount = channelCount;
if (formatSpecificData == null)
{
_formatSpecificData = new byte [0];
}
else
{
_formatSpecificData = (byte []) formatSpecificData.Clone ();
}
switch (encodingFormat)
{
case EncodingFormat.ALaw:
case EncodingFormat.ULaw:
if (bitsPerSample != 8)
{
throw new ArgumentOutOfRangeException ("bitsPerSample");
}
if (formatSpecificData != null && formatSpecificData.Length != 0)
{
throw new ArgumentOutOfRangeException ("formatSpecificData");
}
break;
}
}
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.AudioFormatInfo1"]/*' />
[EditorBrowsable (EditorBrowsableState.Advanced)]
public SpeechAudioFormatInfo (EncodingFormat encodingFormat, int samplesPerSecond, int bitsPerSample, int channelCount, int averageBytesPerSecond, int blockAlign, byte [] formatSpecificData)
: this (encodingFormat, samplesPerSecond, (short) bitsPerSample, (short) channelCount, formatSpecificData)
{
// Don't explicitly check these are sensible values - allow flexibility here as some formats may do unexpected things here.
if (averageBytesPerSecond <= 0)
{
throw new ArgumentOutOfRangeException ("averageBytesPerSecond", SR.Get (SRID.MustBeGreaterThanZero));
}
if (blockAlign <= 0)
{
throw new ArgumentOutOfRangeException ("blockAlign", SR.Get (SRID.MustBeGreaterThanZero));
}
_averageBytesPerSecond = averageBytesPerSecond;
_blockAlign = (short) blockAlign;
}
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.AudioFormatInfo2"]/*' />
public SpeechAudioFormatInfo (int samplesPerSecond, AudioBitsPerSample bitsPerSample, AudioChannel channel)
: this (EncodingFormat.Pcm, samplesPerSecond, (short) bitsPerSample, (short) channel, null)
{
// Don't explicitly check these are sensible values - allow flexibility here as some formats may do unexpected things here.
_blockAlign = (short) (_channelCount * (_bitsPerSample / 8));
_averageBytesPerSecond = _samplesPerSecond * _blockAlign;
}
#endregion
//********************************************************************
//
// Public Properties
//
//*******************************************************************
#region Public Properties
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.AverageBytesPerSecond"]/*' />
[EditorBrowsable (EditorBrowsableState.Advanced)]
public int AverageBytesPerSecond { get { return _averageBytesPerSecond; } }
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.BitsPerSample"]/*' />
[EditorBrowsable (EditorBrowsableState.Advanced)]
public int BitsPerSample { get { return _bitsPerSample; } }
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.BlockAlign"]/*' />
[EditorBrowsable (EditorBrowsableState.Advanced)]
public int BlockAlign { get { return _blockAlign; } }
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.Format"]/*' />
public EncodingFormat EncodingFormat { get { return _encodingFormat; } }
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.NumberOfChannels"]/*' />
public int ChannelCount { get { return _channelCount; } }
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.SamplesPerSecond"]/*' />
public int SamplesPerSecond { get { return _samplesPerSecond; } }
#endregion
//********************************************************************
//
// Public Methods
//
//********************************************************************
#region Public Methods
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.FormatSpecificData"]/*' />
public byte [] FormatSpecificData () { return (byte []) _formatSpecificData.Clone (); }
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.Equals"]/*' />
public override bool Equals (object obj)
{
SpeechAudioFormatInfo refObj = obj as SpeechAudioFormatInfo;
if (refObj == null)
{
return false;
}
if (!(_averageBytesPerSecond.Equals (refObj._averageBytesPerSecond) &&
_bitsPerSample.Equals (refObj._bitsPerSample) &&
_blockAlign.Equals (refObj._blockAlign) &&
_encodingFormat.Equals (refObj._encodingFormat) &&
_channelCount.Equals (refObj._channelCount) &&
_samplesPerSecond.Equals (refObj._samplesPerSecond)))
{
return false;
}
if (_formatSpecificData.Length != refObj._formatSpecificData.Length)
{
return false;
}
for (int i = 0; i < _formatSpecificData.Length; i++)
{
if (_formatSpecificData [i] != refObj._formatSpecificData [i])
{
return false;
}
}
return true;
}
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.GetHashCode"]/*' />
public override int GetHashCode ()
{
return _averageBytesPerSecond.GetHashCode ();
}
#endregion
//*******************************************************************
//
// Internal Methods
//
//********************************************************************
#region Internal Methods
#if !SPEECHSERVER
internal byte [] WaveFormat
{
get
{
WAVEFORMATEX wfx = new WAVEFORMATEX ();
wfx.wFormatTag = (short) EncodingFormat;
wfx.nChannels = (short) ChannelCount;
wfx.nSamplesPerSec = SamplesPerSecond;
wfx.nAvgBytesPerSec = AverageBytesPerSecond;
wfx.nBlockAlign = (short) BlockAlign;
wfx.wBitsPerSample = (short) BitsPerSample;
wfx.cbSize = (short) FormatSpecificData ().Length;
byte [] abWfx = wfx.ToBytes ();
if (wfx.cbSize > 0)
{
byte [] wfxTemp = new byte [abWfx.Length + wfx.cbSize];
Array.Copy (abWfx, wfxTemp, abWfx.Length);
Array.Copy (FormatSpecificData (), 0, wfxTemp, abWfx.Length, wfx.cbSize);
abWfx = wfxTemp;
}
return abWfx;
}
}
#endif
#endregion
//*******************************************************************
//
// Private Fields
//
//*******************************************************************
#region Private Fields
private int _averageBytesPerSecond;
private short _bitsPerSample;
private short _blockAlign;
private EncodingFormat _encodingFormat;
private short _channelCount;
private int _samplesPerSecond;
private byte [] _formatSpecificData;
#endregion
}
//*******************************************************************
//
// Public Properties
//
//********************************************************************
#region Public Properties
///
/// TODOC
///
#if !SPEECHSERVER
public
#else
internal
#endif
enum AudioChannel
{
///
/// TODOC
///
Mono = 1,
///
/// TODOC
///
Stereo = 2
}
///
/// TODOC
///
#if !SPEECHSERVER
public
#else
internal
#endif
enum AudioBitsPerSample
{
///
/// TODOC
///
Eight = 8,
///
/// TODOC
///
Sixteen = 16
}
#endregion
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------
using System;
using System.ComponentModel;
using System.Speech.Internal.Synthesis;
namespace System.Speech.AudioFormat
{
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo"]/*' />
[Serializable]
#if !SPEECHSERVER
public
#else
internal
#endif
class SpeechAudioFormatInfo
{
//*******************************************************************
//
// Constructors
//
//*******************************************************************
#region Constructors
private SpeechAudioFormatInfo (EncodingFormat encodingFormat, int samplesPerSecond, short bitsPerSample, short channelCount, byte [] formatSpecificData)
{
if (encodingFormat == 0)
{
throw new ArgumentException (SR.Get (SRID.CannotUseCustomFormat), "encodingFormat");
}
if (samplesPerSecond <= 0)
{
throw new ArgumentOutOfRangeException ("samplesPerSecond", SR.Get (SRID.MustBeGreaterThanZero));
}
if (bitsPerSample <= 0)
{
throw new ArgumentOutOfRangeException ("bitsPerSample", SR.Get (SRID.MustBeGreaterThanZero));
}
if (channelCount <= 0)
{
throw new ArgumentOutOfRangeException ("channelCount", SR.Get (SRID.MustBeGreaterThanZero));
}
_encodingFormat = encodingFormat;
_samplesPerSecond = samplesPerSecond;
_bitsPerSample = bitsPerSample;
_channelCount = channelCount;
if (formatSpecificData == null)
{
_formatSpecificData = new byte [0];
}
else
{
_formatSpecificData = (byte []) formatSpecificData.Clone ();
}
switch (encodingFormat)
{
case EncodingFormat.ALaw:
case EncodingFormat.ULaw:
if (bitsPerSample != 8)
{
throw new ArgumentOutOfRangeException ("bitsPerSample");
}
if (formatSpecificData != null && formatSpecificData.Length != 0)
{
throw new ArgumentOutOfRangeException ("formatSpecificData");
}
break;
}
}
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.AudioFormatInfo1"]/*' />
[EditorBrowsable (EditorBrowsableState.Advanced)]
public SpeechAudioFormatInfo (EncodingFormat encodingFormat, int samplesPerSecond, int bitsPerSample, int channelCount, int averageBytesPerSecond, int blockAlign, byte [] formatSpecificData)
: this (encodingFormat, samplesPerSecond, (short) bitsPerSample, (short) channelCount, formatSpecificData)
{
// Don't explicitly check these are sensible values - allow flexibility here as some formats may do unexpected things here.
if (averageBytesPerSecond <= 0)
{
throw new ArgumentOutOfRangeException ("averageBytesPerSecond", SR.Get (SRID.MustBeGreaterThanZero));
}
if (blockAlign <= 0)
{
throw new ArgumentOutOfRangeException ("blockAlign", SR.Get (SRID.MustBeGreaterThanZero));
}
_averageBytesPerSecond = averageBytesPerSecond;
_blockAlign = (short) blockAlign;
}
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.AudioFormatInfo2"]/*' />
public SpeechAudioFormatInfo (int samplesPerSecond, AudioBitsPerSample bitsPerSample, AudioChannel channel)
: this (EncodingFormat.Pcm, samplesPerSecond, (short) bitsPerSample, (short) channel, null)
{
// Don't explicitly check these are sensible values - allow flexibility here as some formats may do unexpected things here.
_blockAlign = (short) (_channelCount * (_bitsPerSample / 8));
_averageBytesPerSecond = _samplesPerSecond * _blockAlign;
}
#endregion
//********************************************************************
//
// Public Properties
//
//*******************************************************************
#region Public Properties
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.AverageBytesPerSecond"]/*' />
[EditorBrowsable (EditorBrowsableState.Advanced)]
public int AverageBytesPerSecond { get { return _averageBytesPerSecond; } }
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.BitsPerSample"]/*' />
[EditorBrowsable (EditorBrowsableState.Advanced)]
public int BitsPerSample { get { return _bitsPerSample; } }
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.BlockAlign"]/*' />
[EditorBrowsable (EditorBrowsableState.Advanced)]
public int BlockAlign { get { return _blockAlign; } }
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.Format"]/*' />
public EncodingFormat EncodingFormat { get { return _encodingFormat; } }
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.NumberOfChannels"]/*' />
public int ChannelCount { get { return _channelCount; } }
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.SamplesPerSecond"]/*' />
public int SamplesPerSecond { get { return _samplesPerSecond; } }
#endregion
//********************************************************************
//
// Public Methods
//
//********************************************************************
#region Public Methods
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.FormatSpecificData"]/*' />
public byte [] FormatSpecificData () { return (byte []) _formatSpecificData.Clone (); }
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.Equals"]/*' />
public override bool Equals (object obj)
{
SpeechAudioFormatInfo refObj = obj as SpeechAudioFormatInfo;
if (refObj == null)
{
return false;
}
if (!(_averageBytesPerSecond.Equals (refObj._averageBytesPerSecond) &&
_bitsPerSample.Equals (refObj._bitsPerSample) &&
_blockAlign.Equals (refObj._blockAlign) &&
_encodingFormat.Equals (refObj._encodingFormat) &&
_channelCount.Equals (refObj._channelCount) &&
_samplesPerSecond.Equals (refObj._samplesPerSecond)))
{
return false;
}
if (_formatSpecificData.Length != refObj._formatSpecificData.Length)
{
return false;
}
for (int i = 0; i < _formatSpecificData.Length; i++)
{
if (_formatSpecificData [i] != refObj._formatSpecificData [i])
{
return false;
}
}
return true;
}
/// TODOC <_include file='doc\SpeechAudioFormatInfo.uex' path='docs/doc[@for="SpeechAudioFormatInfo.GetHashCode"]/*' />
public override int GetHashCode ()
{
return _averageBytesPerSecond.GetHashCode ();
}
#endregion
//*******************************************************************
//
// Internal Methods
//
//********************************************************************
#region Internal Methods
#if !SPEECHSERVER
internal byte [] WaveFormat
{
get
{
WAVEFORMATEX wfx = new WAVEFORMATEX ();
wfx.wFormatTag = (short) EncodingFormat;
wfx.nChannels = (short) ChannelCount;
wfx.nSamplesPerSec = SamplesPerSecond;
wfx.nAvgBytesPerSec = AverageBytesPerSecond;
wfx.nBlockAlign = (short) BlockAlign;
wfx.wBitsPerSample = (short) BitsPerSample;
wfx.cbSize = (short) FormatSpecificData ().Length;
byte [] abWfx = wfx.ToBytes ();
if (wfx.cbSize > 0)
{
byte [] wfxTemp = new byte [abWfx.Length + wfx.cbSize];
Array.Copy (abWfx, wfxTemp, abWfx.Length);
Array.Copy (FormatSpecificData (), 0, wfxTemp, abWfx.Length, wfx.cbSize);
abWfx = wfxTemp;
}
return abWfx;
}
}
#endif
#endregion
//*******************************************************************
//
// Private Fields
//
//*******************************************************************
#region Private Fields
private int _averageBytesPerSecond;
private short _bitsPerSample;
private short _blockAlign;
private EncodingFormat _encodingFormat;
private short _channelCount;
private int _samplesPerSecond;
private byte [] _formatSpecificData;
#endregion
}
//*******************************************************************
//
// Public Properties
//
//********************************************************************
#region Public Properties
///
/// TODOC
///
#if !SPEECHSERVER
public
#else
internal
#endif
enum AudioChannel
{
///
/// TODOC
///
Mono = 1,
///
/// TODOC
///
Stereo = 2
}
///
/// TODOC
///
#if !SPEECHSERVER
public
#else
internal
#endif
enum AudioBitsPerSample
{
///
/// TODOC
///
Eight = 8,
///
/// TODOC
///
Sixteen = 16
}
#endregion
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DefaultDiscoveryServiceExtension.cs
- OdbcCommandBuilder.cs
- ExpandedWrapper.cs
- AnchoredBlock.cs
- SqlNotificationEventArgs.cs
- TextStore.cs
- CachedFontFamily.cs
- Int32Storage.cs
- UIPermission.cs
- Descriptor.cs
- MailDefinition.cs
- Padding.cs
- XmlSchemaInfo.cs
- SoapSchemaImporter.cs
- AuthorizationContext.cs
- NameValueSectionHandler.cs
- EntitySqlQueryCacheEntry.cs
- Stack.cs
- WebPartCloseVerb.cs
- input.cs
- SelectionEditor.cs
- SystemIcmpV6Statistics.cs
- OdbcEnvironmentHandle.cs
- ZipIOExtraFieldElement.cs
- HostingEnvironmentWrapper.cs
- SymbolMethod.cs
- ResolvedKeyFrameEntry.cs
- ReferencedAssembly.cs
- Int32Animation.cs
- ActionFrame.cs
- CounterSet.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- DataGridColumn.cs
- DependencyPropertyKind.cs
- ObjRef.cs
- Int64Storage.cs
- WebDescriptionAttribute.cs
- EffectiveValueEntry.cs
- RSAProtectedConfigurationProvider.cs
- TabPage.cs
- XNodeNavigator.cs
- DbConnectionStringCommon.cs
- ConsumerConnectionPoint.cs
- QuaternionRotation3D.cs
- ADMembershipUser.cs
- RotateTransform3D.cs
- CurrentTimeZone.cs
- DbDataSourceEnumerator.cs
- TemplateManager.cs
- CellQuery.cs
- DataRelationPropertyDescriptor.cs
- HashCodeCombiner.cs
- HtmlObjectListAdapter.cs
- UserControlBuildProvider.cs
- ToolStripManager.cs
- MemberAssignmentAnalysis.cs
- PropertyGridEditorPart.cs
- BooleanStorage.cs
- Relationship.cs
- AuthenticatedStream.cs
- Journal.cs
- HttpSessionStateBase.cs
- XmlTextWriter.cs
- WebPartZoneDesigner.cs
- XPathMessageFilterElementComparer.cs
- ProviderCollection.cs
- WebServiceFault.cs
- _LazyAsyncResult.cs
- HttpCacheVary.cs
- IgnoreFileBuildProvider.cs
- BitmapScalingModeValidation.cs
- X509RawDataKeyIdentifierClause.cs
- WebPartConnectionsCancelEventArgs.cs
- EntityCommandExecutionException.cs
- _PooledStream.cs
- SessionPageStatePersister.cs
- AppliedDeviceFiltersEditor.cs
- StandardToolWindows.cs
- DragDeltaEventArgs.cs
- AutomationProperty.cs
- RoutedEventArgs.cs
- Margins.cs
- FlowDocumentPaginator.cs
- MulticastIPAddressInformationCollection.cs
- EncryptedKeyHashIdentifierClause.cs
- LayoutInformation.cs
- KeyManager.cs
- UndoManager.cs
- WorkItem.cs
- HttpListenerRequestUriBuilder.cs
- EmptyQuery.cs
- IriParsingElement.cs
- xmlsaver.cs
- _CookieModule.cs
- X509SecurityToken.cs
- ValidationPropertyAttribute.cs
- Compiler.cs
- CompilationPass2Task.cs
- FastPropertyAccessor.cs
- InstanceDescriptor.cs