📄 vc25pro_doc_unavcide.html
字号:
Array of component consumers.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">property <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>.providers[]: <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>;</SPAN><P />
Array of providers for component.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">property <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>.active: bool;</SPAN><P />
Returns or sets the current state of the pipe.
Set to true to activate (open) the component. All other properties should be set to proper values before activation.
Set to false to deactivate (close) the component.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">property <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>.consumer: <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>;</SPAN><P />
Specifies the consumer of component.
When set, specified consumer will receive all the stream data from the component.
This allows chaining the components into data flow row.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">property <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>.dumpInput: string;</SPAN><P />
Specifies the file name to store the stream into.
dumpInput is be used to store the input stream, which is coming as input for component.
Stream will be saved in "as is" format.
For example, <A href="#class_TunavclWaveOutDevice">TunavclWaveOutDevice</A> will store input stream as sequence of PCM samples.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">property <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>.dumpOutput: string;</SPAN><P />
Specifies the file name to store the stream into.
dumpOutput is be used to store the output stream, which is coming as output from the component.
Stream will be saved in "as is" format.
For example, <A href="#class_TunavclWaveInDevice">TunavclWaveInDevice</A> will store output stream as sequence of PCM samples.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">property <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>.isFormatProvider: bool;</SPAN><P />
When true the component will assign stream format to the consumer (if any).
This simplifies the process of distributing stream format among linked components.
For example <A href="#class_TunavclWaveRiff">TunavclWaveRiff</A> component can assign PCM format for linked <A href="#class_TunavclWaveOutDevice">TunavclWaveOutDevice</A> component, so WAVe file will be played back correctly.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">property <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>.autoActivate: bool;</SPAN><P />
When true tells the component it must activate consumer (if any) before activating itself.
Same applies for deactivation. When false the component does not change the consumer state.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">property <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>.enableDataProxy: bool;</SPAN><P />
When true tells the component it must activate consumer (if any) before activating itself.
Same applies for deactivation. When false the component does not change the consumer state.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">property <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>.onDataAvailable: unavclPipeDataEvent;</SPAN><P />
This event is fired every time component has produced or received new chunk of data.
Use this event to access the raw stream data. Any modifications you made with data will not affect data consumers.
To modify data before it will passed to consumers, use onDataDSP() event.
<BR /><STRONG>NOTE</STRONG>: VCL is NOT multi-threading safe, and you should avoid using VCL routines and classes in this event.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">property <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>.onDataDSP: unavclPipeDataEvent;</SPAN><P />
This event is fired every time component has produced or received new chunk of data.
Use this event to access the raw stream data. Any modifications you made with data will be used by comsumers.
To modify data without affecting consumers, use onDataAvail() event.
<BR /><STRONG>NOTE</STRONG>: VCL is NOT multi-threading safe, and you should avoid using VCL routines and classes in this event.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">property <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>.onFormatChangeAfter: unavclPipeAfterFormatChangeEvent;</SPAN><P />
This event is fired after new format was applied to a pipe.
<BR /><STRONG>NOTE</STRONG>: VCL is NOT multi-threading safe, and you should avoid using VCL routines and classes in this event.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">property <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>.onFormatChangeBefore: unavclPipeBeforeFormatChangeEvent;</SPAN><P />
This event is fired before new format is about to be applied to a pipe.
Using allowFormatChange parameter it is possible to disable format's applying.
<BR /><STRONG>NOTE</STRONG>: VCL is NOT multi-threading safe, and you should avoid using VCL routines and classes in this event.
</TD></TR></TABLE></DIV>
<DIV><P /><H4>Class <A NAME="class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>(<A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>)</H4><P />
Base abstract class for wave devices.
<P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">procedure <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doSetDeviceId(value: int); virtual;</SPAN><P /></TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">procedure <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doSetFormatTag(value: unsigned); virtual;</SPAN><P /></TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">procedure <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doSetFormat(value: pWAVEFORMATEX); virtual;</SPAN><P /></TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">procedure <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doSetDriver(value: unaMsAcmDriver); virtual;</SPAN><P /></TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">procedure <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doSetSamplingParam(index: int; value: unsigned); virtual;</SPAN><P /></TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">procedure <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doSetAddSilence(value: bool); virtual;</SPAN><P /></TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">procedure <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doSetLoop(value: bool); virtual;</SPAN><P /></TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">procedure <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doSetDriverMode(value: unaAcmCodecDriverMode); virtual;</SPAN><P /></TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">procedure <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doSetDriverLibrary(const value: wideString); virtual;</SPAN><P /></TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">function <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doGetPosition(): int64; override;</SPAN><P /></TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">procedure <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.createNewDevice(); virtual;</SPAN><P />
Does all the job of device creation. Should be overriten with actual implementation.
Should not be called directly.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">procedure <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.destroyOldDevice(); virtual;</SPAN><P /></TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">function <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.applyDeviceFormat(const format: WAVEFORMATEX; isSrc: bool = true): bool; virtual; abstract;</SPAN><P />
Applies new stream format for the wave device.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">function <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doWrite(data: pointer; len: unsigned; provider: <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A> = nil): int; override;</SPAN><P />
Writes data into the wave device.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">function <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doRead(data: pointer; len: unsigned): unsigned; override;</SPAN><P />
Reads data from the wave device.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">function <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.getAvailableDataLen(index: int): unsigned; override;</SPAN><P />
Returns data size available to read from the wave device.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">function <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doOpen(): bool; override;</SPAN><P />
Opens the wave device.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">procedure <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doClose(); override;</SPAN><P />
Closes the wave device.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">function <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doEnter(timeOut: unsigned = 1000): bool; override;</SPAN><P />
Enters one-thread execution mode for the wave device.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">procedure <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doLeave(); override;</SPAN><P />
Leaves one-thread execution mode for the wave device.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">function <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.isActive(): bool; override;</SPAN><P />
Returns active state of the wave device.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">function <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.applyFormat(data: pointer; len: unsigned; provider: <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A> = nil; restoreActiveState: bool = false): bool; override;</SPAN><P />
Applies stream format on the pipe.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">function <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.getFormatExchangeData(out data: pointer): unsigned; override;</SPAN><P />
Returns format exchange data of the pipe stream.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">function <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.getChunkSize(): unsigned; virtual;</SPAN><P /></TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">function <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.getDstChunkSize(): unsigned; virtual;</SPAN><P /></TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">procedure <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.onDriverChanged(); virtual;</SPAN><P />
Triggers when device driver has been changed.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">procedure <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.Loaded(); override;</SPAN><P />
Initializes the wave device.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">function <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doAddProvider(provider: <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>): bool; override;</SPAN><P />
Adds provider to the wave device.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">procedure <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.doRemoveProvider(provider: <A HREF="#class_unavclInOutPipe"><SPAN class="class">unavclInOutPipe</SPAN></A>); override;</SPAN><P />
Removes provider from the wave device.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">property <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.deviceWasCreated: bool;</SPAN><P />
Internal.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">property <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.addSilence: bool;</SPAN><P />
Specifies whether device should add silence when it runs out of audio data.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">property <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.deviceId: int;</SPAN><P />
Specifies device ID for the wave device.
</TD></TR></TABLE><P /><TABLE BORDER="1" width="100%"><TR><TD><SPAN class="source">property <A HREF="#class_unavclInOutWavePipe"><SPAN class="class">unavclInOutWavePipe</SPAN></A>.formatTag: unsigned;</SPAN><P />
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -