AcxRtStreamCreate 函数 (acxstreams.h)
AcxRtStreamCreate 创建 OS 用于流式传输音频数据的 ACX RTStream 音频流。
语法
NTSTATUS AcxRtStreamCreate(
WDFDEVICE Device,
ACXCIRCUIT Circuit,
PWDF_OBJECT_ATTRIBUTES Attributes,
PACXSTREAM_INIT *Config,
ACXSTREAM *Stream
);
参数
Device
与指定的 ACXCIRCUIT 及其流关联的 WDFDEVICE 对象(Framework 对象摘要中所述)。
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) 流对象。
AcxRtStreamCreate 创建的 ACXSTREAM 将允许驱动程序接收与流关联的控制信号和状态更改。 ACXSTREAM 还支持向/从 OS 流式传输音频数据。 支持流式传输音频数据的驱动程序应使用 AcxRtStreamCreate 创建支持流式处理的 ACXSTREAM。
对于跨多个驱动程序从多个 ACXCIRCUIT 创建的终结点,承载流式传输引脚的 ACXCIRCUIT 将创建 ACX RT 流,而终结点中的其他 ACXCIRCUIT 将创建非 RT ACX 流。
例
下面显示了 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 |