Поделиться через


Функция AcxRtStreamCreate (acxstreams.h)

AcxRtStreamCreate создает аудиопоток ACX RTStream, используемый ОС для потоковой передачи звуковых данных.

Синтаксис

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

Параметры

Device

Объект WDFDEVICE (описанный в сводке объектов платформы), связанный с указанным ACXCIRCUIT и его потоком.

Circuit

ACXCIRCUIT, с которым будет связан этот поток.

Attributes

Дополнительные атрибуты, определенные с помощью WDF_OBJECT_ATTRIBUTES, которые используются для задания значений различных объектов: очистки и уничтожения обратных вызовов, типа контекста и указания родительского объекта.

Config

Структура ACXSTREAM_INIT, которая определяет параметры инициализации потока. Дополнительные сведения о объектах ACX см. в ACX — сводка по объектам ACX.

Stream

Указатель на расположение, которое получает дескриптор к новому объекту ACXSTREAM.

Объект ACXSTREAM представляет звуковой поток, созданный каналом. Дополнительные сведения см. в разделе ACX — сводка по объектам ACX.

Возвращаемое значение

Возвращает STATUS_SUCCESS, если вызов выполнен успешно. В противном случае возвращается соответствующий код ошибки. Дополнительные сведения см. в использовании значений NTSTATUS.

Замечания

После создания ACXSTREAM драйвер может добавить в поток один или несколько элементов ACX. По умолчанию элементы ACX подключаются в том же порядке сборки. ACXSTREAM связан только с одним ACXCIRCUIT. ACX поддерживает два типа потоков: базовые объекты потока ACX, используемые не потоковыми каналами, и объекты потоковой передачи ACX RealTime (RT), используемые каналами потоковой передачи.

ACXSTREAM, созданный AcxRtStreamCreate, позволит драйверу получать сигналы управления и изменения состояния, связанные с потоком. ACXSTREAM также поддерживает потоковую передачу звуковых данных в ОС или из нее. Драйвер, поддерживающий потоковую передачу аудиоданных, должен использовать AcxRtStreamCreate для создания ACXSTREAM с поддержкой потоковой передачи.

Для конечной точки, состоящей из нескольких ACXCIRCUITs в нескольких драйверах, ACXCIRCUIT, на котором размещается пин-код потоковой передачи, создаст ПОТОК ACX RT, а другие ACXCIRCUITs в конечной точке будут создавать потоки ACX, отличные от RT.

Пример

Ниже показан пример создания потока 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);

Требования к ACX

минимальная версия ACX: 1.0

Дополнительные сведения о версиях ACX см. в обзоре версий ACX.

Требования

Требование Ценность
заголовка acxstreams.h
IRQL PASSIVE_LEVEL

См. также

  • заголовка acxstreams.h