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 all'oggetto ACXCIRCUIT specificato e al relativo flusso.

Circuit

ACXCIRCUIT a cui verrà associato questo flusso.

Attributes

Attributi aggiuntivi definiti usando un WDF_OBJECT_ATTRIBUTES utilizzati per impostare i valori dei vari oggetti: pulizia ed eliminazione dei callback, tipo di contesto e per specificare il relativo oggetto padre.

Config

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

Stream

Puntatore a una posizione che riceve un handle per il 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 di valori NTSTATUS.

Osservazioni

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 flusso ACX RealTime (RT) usati dai circuiti di streaming.

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

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

Esempio

Di seguito è riportato un 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 di ACX, vedere panoramica della versione ACX.

Fabbisogno

Requisito Valore
intestazione acxstreams.h
IRQL PASSIVE_LEVEL

Vedere anche