Функция 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 |