AudioBuffers Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Incapsula una serie di AudioBuffers.
public class AudioBuffers : IDisposable, ObjCRuntime.INativeObject
type AudioBuffers = class
interface IDisposable
interface INativeObject
- Ereditarietà
-
AudioBuffers
- Implementazioni
Commenti
La classe AudioBuffers incapsula una o più AudioBuffer strutture. Può essere usato per esaminare il contenuto di un Oggetto AudioBuffer quando si crea l'istanza da un IntPtr che punta alla matrice AudioBufferList basata su C o come modo per creare buffer che possono essere passati alle API basate su C quando si usa il costruttore che accetta un argomento count.
Se si esegue il cast di questo oggetto in un intPtr, si otterrà l'indirizzo alla struttura di dati sottostante che è possibile passare a qualsiasi API C che richiede un puntatore all'oggetto .
Per i buffer audio stereo interleaved ,ad esempio quando i pacchetti audio sinistro e destro si trovano in un singolo flusso, è presente un singolo audioBuffer che contiene sia l'esempio sinistro che destro nel buffer. Per i buffer stereo non interleaved, sono presenti due buffer, i campioni sinistro vengono archiviati in un buffer e gli esempi di destra vengono archiviati nell'altro.
Se si crea un oggetto con un numero di buffer impostati o si imposta il parametro "owns" nel costruttore su true, Dispose chiamerà Marshal.FreeHGlobal nel buffer sottostante.
//
// Consuming an AudioBufferList from a pointer provided by C code
//
void Process (IntPtr audioBufferListPtr)
{
var buffers = new AudioBuffers (audioBufferListPtr);
for (int i = 0; i < buffers.Count; i++){
var audioBuffer = buffers [i];
Console.WriteLine ("Data={0} DataByteSize={1}", audioBuffer.Data, audioBuffer.DataByteSize);
}
}
//
// Creating an AudioBuffers structure
//
AudioBuffers SetupBuffers (int n = 2, int size = 4096)
{
var buffers = new AudioBuffers (n);
for (int i = 0; i < n; i++){
var buffer = Marshal.AllocHGlobal (size);
buffers.SetData (i, buffer, size);
}
return buffers;
}
void ReleaseBuffers (AudioBuffers buffers)
{
for (int i = 0; i < buffers.Count; i++){
var buf = buffers [i];
Marshal.ReleaseHGlobal (buf.Data);
}
buffers.Dispose ();
}
void ProcessBuffers (AudioBuffers buffers)
{
// Call C-function that takes an AudioBufferList pointer:
// The cast extracts the data.
c_function ((IntPtr) buffers);
}
Costruttori
| Nome | Descrizione |
|---|---|
| AudioBuffers(Int32) |
Crea una struttura AudioBuffers che può contenere un numero fisso di AudioBuffer strutture. |
| AudioBuffers(IntPtr, Boolean) |
Crea un oggetto AudioBuffers che può essere utilizzato per eseguire query e modificare una struttura AudioBuffersList nativa. |
| AudioBuffers(IntPtr) |
Crea un oggetto AudioBuffers che può essere utilizzato per eseguire query e modificare una struttura AudioBuffersList nativa. |
Proprietà
| Nome | Descrizione |
|---|---|
| Count |
Restituisce il numero di buffer gestiti. |
| Handle |
Handle (puntatore) alla rappresentazione dell'oggetto non gestito. |
| Item[Int32] |
Incapsula una serie di AudioBuffers. |
Metodi
| Nome | Descrizione |
|---|---|
| Dispose() |
Rilascia le risorse usate dall'oggetto AudioBuffers. |
| Dispose(Boolean) |
Rilascia le risorse usate dall'oggetto AudioBuffers. |
| Finalize() |
Incapsula una serie di AudioBuffers. |
| SetData(Int32, IntPtr, Int32) |
Imposta il buffer di dati per uno dei buffer audio. |
| SetData(Int32, IntPtr) |
Imposta il buffer di dati per uno dei buffer audio, senza aggiornare le dimensioni del buffer. |
Operatori
| Nome | Descrizione |
|---|---|
| Explicit(AudioBuffers to IntPtr) |
Incapsula una serie di AudioBuffers. |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| GetHandle(INativeObject) |
Incapsula una serie di AudioBuffers. |
| GetNonNullHandle(INativeObject, String) |
Incapsula una serie di AudioBuffers. |