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


функция обратного вызова EVT_ACX_STREAMAUDIOENGINE_RETRIEVE_PRESENTATION_POSITION (acxelements.h)

Функция обратного вызова EVT_ACX_STREAMAUDIOENGINE_RETRIEVE_PRESENTATION_POSITION реализуется драйвером и вызывается для получения текущей позиции в аудиоданных, отрисовываемых в узле подсистемы потоковой передачи.

Синтаксис

EVT_ACX_STREAMAUDIOENGINE_RETRIEVE_PRESENTATION_POSITION EvtAcxStreamaudioengineRetrievePresentationPosition;

NTSTATUS EvtAcxStreamaudioengineRetrievePresentationPosition(
  ACXSTREAMAUDIOENGINE StreamAudioEngine,
  PULONGLONG PositionInBlocks,
  PULONGLONG QPCPosition
)
{...}

Параметры

StreamAudioEngine

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

PositionInBlocks

Указывает смещение блока от начала потока до текущей после декодированного, несжатой позиции в потоке. Дополнительные сведения об этом значении см. в KSAUDIO_PRESENTATION_POSITION структуре.

QPCPosition

Указывает значение счетчика производительности в то время, когда звуковой драйвер считывает позицию презентации в ответ на обратный вызов. Дополнительные сведения об этом значении см. в KSAUDIO_PRESENTATION_POSITION структуре.

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

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

Замечания

Пример

Ниже показан пример использования.

EVT_ACX_STREAMAUDIOENGINE_RETRIEVE_PRESENTATION_POSITION    CodecR_EvtAcxStreamAudioEngineRetrievePresentationPosition;

NTSTATUS
CodecR_EvtAcxStreamAudioEngineRetrievePresentationPosition(
    _In_    ACXSTREAMAUDIOENGINE    StreamAudioEngine,
    _Out_   PULONGLONG              PositionInBlocks,
    _Out_   PULONGLONG              QPCPosition
)
{
    NTSTATUS status = STATUS_INVALID_PARAMETER;
    ACXSTREAM stream;
    PCODEC_STREAM_CONTEXT ctx;
    CRenderStreamEngine * streamEngine = NULL;

    PAGED_CODE();

    stream = AcxStreamAudioEngineGetStream(StreamAudioEngine);
    if (stream)
    {
        ctx = GetCodecStreamContext(stream);

        streamEngine = static_cast<CRenderStreamEngine*>(ctx->StreamEngine);

        status = streamEngine->GetPresentationPosition(PositionInBlocks, QPCPosition);
    }

    return status;
}

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

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

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

Требования

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

См. также