Condividi tramite


Funzione AcxRtStreamCreate (acxstreams.h)

AcxRtStreamCreate crea un flusso audio ACX RTStream usato dal sistema operativo per trasmettere dati audio.

Sintassi

NTSTATUS AcxRtStreamCreate(
  WDFDEVICE              Device,
  ACXCIRCUIT             Circuit,
  PWDF_OBJECT_ATTRIBUTES Attributes,
  PACXSTREAM_INIT        *Config,
  ACXSTREAM              *Stream
);

Parametri

Device

Oggetto WDFDEVICE (descritto in Riepilogo degli oggetti Framework) associato al flusso ACXCIRCUIT specificato e al relativo flusso.

Circuit

ACXCIRCUIT a cui verrà associato questo flusso.

Attributes

Attributi aggiuntivi definiti usando un WDF_OBJECT_ATTRIBUTES utilizzato per impostare i valori dei vari oggetti: pulizia e eliminazione di callback, tipo di contesto e specificare l'oggetto padre.

Config

Struttura ACXSTREAM_INIT che definisce i parametri di inizializzazione del flusso. Per altre informazioni sugli oggetti ACX, vedere ACX - Riepilogo degli oggetti ACX.

Stream

Puntatore a una posizione che riceve un handle al nuovo oggetto ACXSTREAM.

Un oggetto ACXSTREAM rappresenta un flusso audio creato da un circuito. Per altre informazioni, vedere ACX - Riepilogo degli oggetti ACX.

Valore restituito

Restituisce STATUS_SUCCESS se la chiamata ha avuto esito positivo. In caso contrario, restituisce un codice di errore appropriato. Per altre informazioni, vedere Uso dei valori NTSTATUS.

Commenti

Dopo aver creato ACXSTREAM, il driver può aggiungere uno o più elementi ACX al flusso. Per impostazione predefinita, gli elementi ACX sono connessi nello stesso ordine di assembly. Un ACXSTREAM è associato a un solo ACXCIRCUIT. ACX supporta due tipi di flussi: oggetti di flusso ACX di base usati dai circuiti non di streaming e oggetti di flusso ACX RealTime (RT) usati dai circuiti di streaming.

AcXSTREAM creato da AcxRtStreamCreate consentirà al driver di ricevere segnali di controllo e modifiche dello stato associati a un flusso. ACXSTREAM supporta anche lo streaming di dati audio da o verso il sistema operativo. Un driver che supporta i dati audio di streaming deve usare AcxRtStreamCreate per creare un ACXSTREAM con supporto per lo streaming.

Per un endpoint creato da più ACXCIRCUITs in più driver, ACXCIRCUIT che ospita il pin di streaming creerebbe un Stream ACX RT mentre gli altri ACXCIRCUIT nell'endpoint creerebbero flussi NON RTX.

Esempio

Di seguito è riportato l'esempio di creazione del flusso Rt.

    //
    // Init streaming callbacks.
    //
    ACX_STREAM_CALLBACKS streamCallbacks;
    ACX_STREAM_CALLBACKS_INIT(&streamCallbacks);
    streamCallbacks.EvtAcxStreamPrepareHardware     = EvtStreamPrepareHardware;
    streamCallbacks.EvtAcxStreamReleaseHardware     = EvtStreamReleaseHardware;
    streamCallbacks.EvtAcxStreamRun                 = EvtStreamRun;
    streamCallbacks.EvtAcxStreamPause               = EvtStreamPause;
    streamCallbacks.EvtAcxStreamAssignDrmContentId  = EvtStreamAssignDrmContentId;

    status = AcxStreamInitAssignAcxStreamCallbacks(StreamInit, &streamCallbacks);

    //
    // Init RT Streaming callbacks.
    //
    ACX_RT_STREAM_CALLBACKS rtCallbacks;
    ACX_RT_STREAM_CALLBACKS_INIT(&rtCallbacks);
    rtCallbacks.EvtAcxStreamGetHwLatency = EvtStreamGetHwLatency;
    rtCallbacks.EvtAcxStreamAllocateRtPackets = EvtStreamAllocateRtPackets;
    rtCallbacks.EvtAcxStreamFreeRtPackets = EvtStreamFreeRtPackets;
    rtCallbacks.EvtAcxStreamSetRenderPacket = EvtStreamSetRenderPacket;
    rtCallbacks.EvtAcxStreamGetCurrentPacket = EvtStreamGetCurrentPacket;
    rtCallbacks.EvtAcxStreamGetPresentationPosition = EvtStreamGetPresentationPosition;

    status = AcxStreamInitAssignAcxRtStreamCallbacks(StreamInit, &rtCallbacks);

    //
    // Create the stream.
    //
    WDF_OBJECT_ATTRIBUTES attributes;
    ACXSTREAM stream;
    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, STREAM_CONTEXT);
    attributes.EvtCleanupCallback = EvtStreamContextCleanup;
    attributes.EvtDestroyCallback = EvtStreamDestroy;
    status = AcxRtStreamCreate(Device, Circuit, &attributes, &StreamInit, &stream);

Requisiti ACX

Versione minima DI ACX: 1.0

Per altre informazioni sulle versioni ACX, vedere Panoramica della versione di ACX.

Requisiti

Requisito Valore
Intestazione acxstreams.h
IRQL PASSIVE_LEVEL

Vedi anche