Code:
/ DotNET / DotNET / 8.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AutoScrollExpandMessageFilter.cs
- ISessionStateStore.cs
- WorkflowDesignerColors.cs
- SettingsBase.cs
- RadioButtonPopupAdapter.cs
- SizeConverter.cs
- SmiContextFactory.cs
- TraceXPathNavigator.cs
- SQLBytes.cs
- SHA1.cs
- ListViewItem.cs
- Assign.cs
- Events.cs
- DataDesignUtil.cs
- ArgumentNullException.cs
- ToolStripDropDownClosedEventArgs.cs
- AlternateView.cs
- GregorianCalendar.cs
- TableLayoutPanelCellPosition.cs
- LabelLiteral.cs
- Int16AnimationBase.cs
- X500Name.cs
- TextRangeAdaptor.cs
- ApplicationCommands.cs
- HtmlInputImage.cs
- FontSourceCollection.cs
- _IPv6Address.cs
- CustomSignedXml.cs
- SessionIDManager.cs
- WindowsToolbarAsMenu.cs
- ResourceDefaultValueAttribute.cs
- DataTemplate.cs
- RegexMatchCollection.cs
- PolyQuadraticBezierSegment.cs
- CriticalHandle.cs
- ToggleButton.cs
- DeferredElementTreeState.cs
- ItemCheckEvent.cs
- XmlSchemaSubstitutionGroup.cs
- IIS7UserPrincipal.cs
- WebHttpDispatchOperationSelector.cs
- SrgsElementList.cs
- ParentUndoUnit.cs
- PostBackTrigger.cs
- DataSourceCacheDurationConverter.cs
- DictionaryBase.cs
- CodeStatement.cs
- sqlstateclientmanager.cs
- DebugControllerThread.cs
- ResetableIterator.cs
- ToolStripSettings.cs
- ProxySimple.cs
- FixedDocumentPaginator.cs
- PipeException.cs
- FormViewCommandEventArgs.cs
- DataServiceHostFactory.cs
- GPRECT.cs
- EastAsianLunisolarCalendar.cs
- StringSorter.cs
- RotationValidation.cs
- StaticDataManager.cs
- NoneExcludedImageIndexConverter.cs
- DefaultCommandConverter.cs
- MetadataSerializer.cs
- _SingleItemRequestCache.cs
- WebBrowserUriTypeConverter.cs
- ControlDesignerState.cs
- GridViewDeletedEventArgs.cs
- ContextItem.cs
- httpstaticobjectscollection.cs
- SchemaNamespaceManager.cs
- BindableTemplateBuilder.cs
- EdmMember.cs
- DrawingVisualDrawingContext.cs
- ResourcePart.cs
- WindowsUserNameCachingSecurityTokenAuthenticator.cs
- SimpleType.cs
- XmlObjectSerializerReadContextComplex.cs
- ContextQuery.cs
- XmlSchemaFacet.cs
- StringExpressionSet.cs
- CompiledXpathExpr.cs
- ArrangedElement.cs
- StatusBarPanelClickEvent.cs
- ToolStripOverflow.cs
- SpecialNameAttribute.cs
- PreservationFileWriter.cs
- DesignerToolboxInfo.cs
- TableStyle.cs
- TemplateComponentConnector.cs
- CheckBoxFlatAdapter.cs
- LinkButton.cs
- DataGridViewCellStyleChangedEventArgs.cs
- CodeParameterDeclarationExpression.cs
- Span.cs
- ContentPropertyAttribute.cs
- WizardSideBarListControlItemEventArgs.cs
- Trustee.cs
- SecureUICommand.cs
- SharedHttpTransportManager.cs