AcxRtStreamCreate, fonction (acxstreams.h)

AcxRtStreamCreate crée un flux audio ACX RTStream utilisé par le système d’exploitation pour diffuser des données audio.

Syntaxe

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

Paramètres

Device

Objet WDFDEVICE (décrit dans Résumé des objets Framework) associé à l’ACXCIRCUIT spécifié et à son flux.

Circuit

ACXCIRCUIT auquel ce flux sera associé.

Attributes

Attributs supplémentaires définis à l’aide d’un WDF_OBJECT_ATTRIBUTES qui sont utilisés pour définir les valeurs des différents objets : nettoyage et destruction des rappels, type de contexte et pour spécifier son objet parent.

Config

Une structure ACXSTREAM_INIT qui définit les paramètres d’initialisation du flux. Pour plus d’informations sur les objets ACX, consultez ACX - Résumé des objets ACX.

Stream

Pointeur vers un emplacement qui reçoit un handle vers le nouvel objet ACXSTREAM.

Un objet ACXSTREAM représente un flux audio créé par un circuit. Pour plus d’informations, consultez ACX - Résumé des objets ACX.

Valeur retournée

Retourne STATUS_SUCCESS si l’appel a réussi. Sinon, il retourne un code d’erreur approprié. Pour plus d’informations, consultez Utilisation de valeurs NTSTATUS.

Remarques

Une fois ACXSTREAM créé, le pilote peut ajouter un ou plusieurs éléments ACX au flux. Par défaut, les éléments ACX sont connectés dans le même ordre d’assembly. Un ACXSTREAM n’est associé qu’à un seul ACXCIRCUIT. ACX prend en charge deux types de flux : les objets de flux ACX de base utilisés par les circuits non de diffusion en continu et les objets de flux ACX RealTime (RT) utilisés par les circuits de streaming.

AcXSTREAM créé par AcxRtStreamCreate permet au pilote de recevoir les signaux de contrôle et les changements d’état associés à un flux. ACXSTREAM prend également en charge la diffusion en continu de données audio vers ou depuis le système d’exploitation. Un pilote qui prend en charge le streaming de données audio doit utiliser AcxRtStreamCreate pour créer un ACXSTREAM prenant en charge la diffusion en continu.

Pour un point de terminaison créé à partir de plusieurs ACXCIRCUITs sur plusieurs pilotes, l’ACXCIRCUIT qui héberge la broche de streaming crée un Stream ACX RT tandis que les autres ACXCIRCUIT dans le point de terminaison créent des flux ACX non RT.

Exemple

L’exemple de création de flux Rt est illustré ci-dessous.

    //
    // 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);

Configuration requise d’ACX

Version minimale d’ACX : 1.0

Pour plus d’informations sur les versions d’ACX, consultez Vue d’ensemble des versions d’ACX.

Configuration requise

Condition requise Valeur
En-tête acxstreams.h
IRQL PASSIVE_LEVEL

Voir aussi