다음을 통해 공유


EVT_ACX_STREAM_GET_PRESENTATION_POSITION 콜백 함수(acxstreams.h)

EvtAcxStreamGetPresentationPosition 은 드라이버에 현재 위치가 계산된 시점의 QPC 값과 함께 현재 위치를 나타내도록 지시합니다.

구문

EVT_ACX_STREAM_GET_PRESENTATION_POSITION EvtAcxStreamGetPresentationPosition;

NTSTATUS EvtAcxStreamGetPresentationPosition(
  ACXSTREAM Stream,
  PULONGLONG PositionInBlocks,
  PULONGLONG QPCPosition
)
{...}

매개 변수

Stream

ACXSTREAM 개체는 회로에서 만든 오디오 스트림을 나타냅니다. 스트림은 부모 회로의 요소를 기반으로 만든 요소 목록으로 구성됩니다. 자세한 내용은 ACX - ACX 개체 요약을 참조하세요.

PositionInBlocks

스트림 시작부터 스트림의 압축되지 않은 현재 포스트 디코딩 위치까지 블록 오프셋을 지정합니다. "블록"은 동일한 샘플의 채널 그룹을 나타냅니다. 예를 들어 PCM 스트림에서 블록은 프레임과 동일합니다. 그러나 압축된 형식의 경우 블록은 프레임 내의 단일 샘플입니다. 즉, 프레임에 샘플이 1152개 있는 일반적인 MP3 스트림의 경우 1152개의 블록이 있습니다.

QPCPosition

오디오 드라이버가 KSAUDIO_PRESENTATION_POSITION 호출에 대한 응답으로 프레젠테이션 위치를 읽을 때 성능 카운터의 값을 지정합니다. 드라이버는 프레젠테이션 위치를 스냅샷 때 KeQueryPerformanceCounter 호출에서 읽은 값으로 이 필드에 씁니다.

반환 값

호출에 성공하면 를 반환합니다 STATUS_SUCCESS . 그렇지 않으면 적절한 오류 코드를 반환합니다. 자세한 내용은 NTSTATUS 값 사용을 참조하세요.

설명

예제

예제 사용법은 다음과 같습니다.

    //
    // Init streaming callbacks.
    //
    ACX_RT_STREAM_CALLBACKS rtCallbacks;
    ACX_RT_STREAM_CALLBACKS_INIT(&rtCallbacks);

    rtCallbacks.EvtAcxStreamGetPresentationPosition = EvtStreamGetPresentationPosition;

    status = AcxStreamInitAssignAcxRtStreamCallbacks(StreamInit, &rtCallbacks);
PAGED_CODE_SEG
NTSTATUS
EvtStreamGetPresentationPosition(
    _In_ ACXSTREAM      Stream,
    _Out_ PULONGLONG    PositionInBlocks,
    _Out_ PULONGLONG    QPCPosition
)
{
    PSTREAM_CONTEXT ctx;
    ULONG               blockAlign;
    LARGE_INTEGER       qpc;

    PAGED_CODE();

    ctx = GetStreamContext(Stream);

    blockAlign = AcxDataFormatGetBlockAlign(ctx->StreamFormat);

    // Recalculate the stream position that is stored in ctx->StreamPosition
    UpdateStreamPosition(Stream);
    qpc = KeQueryPerformanceCounter(NULL);

    *PositionInBlocks = ctx->StreamPosition / blockAlign;
    *QPCPosition = qpc;

    return STATUS_SUCCESS;
}

ACX 요구 사항

최소 ACX 버전: 1.0

ACX 버전에 대한 자세한 내용은 ACX 버전 개요를 참조하세요.

요구 사항

요구 사항
헤더 acxstreams.h
IRQL PASSIVE_LEVEL

추가 정보