Linguaggio

AudioBuffers Classe

Definizione

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.

Si applica a