Share via


IMFSourceReader::ReadSample 메서드(mfreadwrite.h)

미디어 원본에서 다음 샘플을 읽습니다.

구문

HRESULT ReadSample(
  [in]  DWORD     dwStreamIndex,
  [in]  DWORD     dwControlFlags,
  [out] DWORD     *pdwActualStreamIndex,
  [out] DWORD     *pdwStreamFlags,
  [out] LONGLONG  *pllTimestamp,
  [out] IMFSample **ppSample
);

매개 변수

[in] dwStreamIndex

데이터를 끌어올 스트림입니다. 값은 다음 중 한 개일 수 있습니다.

의미
0-0xFFFFFFFB
스트림의 인덱스(0부터 시작)입니다.
MF_SOURCE_READER_FIRST_VIDEO_STREAM
0xFFFFFFFC
첫 번째 비디오 스트림입니다.
MF_SOURCE_READER_FIRST_AUDIO_STREAM
0xFFFFFFFD
첫 번째 오디오 스트림입니다.
MF_SOURCE_READER_ANY_STREAM
0xFFFFFFFE
스트림에 관계없이 사용 가능한 다음 샘플을 가져옵니다.

[in] dwControlFlags

MF_SOURCE_READER_CONTROL_FLAG 열거형에서 0개 이상의 플래그가 있는 비트 OR입니다.

[out] pdwActualStreamIndex

스트림의 인덱스(0부터 시작)를 받습니다.

[out] pdwStreamFlags

MF_SOURCE_READER_FLAG 열거형에서 비트 OR(0개 이상의 플래그)를 받습니다.

[out] pllTimestamp

샘플의 타임스탬프 또는 pdwStreamFlags에 표시된 스트림 이벤트의 시간을 받습니다. 시간은 100나노초 단위로 제공됩니다.

[out] ppSample

IMFSample 인터페이스 또는 NULL 값에 대한 포인터를 받습니다(설명 참조). 이 매개 변수가 NULL 이 아닌 포인터를 수신하는 경우 호출자는 인터페이스를 해제해야 합니다.

반환 값

이 메서드는 HRESULT를 반환합니다. 가능한 값에는 다음 표에 있는 값이 포함되지만, 이에 국한되는 것은 아닙니다.

반환 코드 설명
S_OK
메서드가 성공했습니다.
MF_E_INVALIDREQUEST
잘못된 요청입니다.
MF_E_INVALIDSTREAMNUMBER
dwStreamIndex 매개 변수가 잘못되었습니다.
MF_E_NOTACCEPTING
플러시 작업이 보류 중입니다. IMFSourceReader::Flush를 참조하세요.
E_INVALIDARG
인수가 잘못되었습니다. 설명 부분을 참조하세요.

설명

요청된 스트림을 선택하지 않으면 반환 코드가 MF_E_INVALIDREQUEST. IMFSourceReader::SetStreamSelection을 참조하세요.

이 메서드는 동기적으로 또는 비동기적으로 완료할 수 있습니다. 원본 판독기를 만들 때 콜백 포인터를 제공하는 경우 메서드는 비동기입니다. 그렇지 않으면 메서드가 동기식입니다. 콜백 포인터 설정에 대한 자세한 내용은 MF_SOURCE_READER_ASYNC_CALLBACK.

비동기 모드

비동기 모드:
  • 모든 매개 변수는 [out]NULL이어야 합니다. 그렇지 않으면 메서드는 E_INVALIDARG 반환합니다.
  • 메서드는 즉시 반환됩니다.
  • 작업이 완료되면 애플리케이션의 IMFSourceReaderCallback::OnReadSample 메서드가 호출됩니다.
  • 오류가 발생하면 메서드가 동기적으로 또는 비동기적으로 실패할 수 있습니다. ReadSample의 반환 값을 확인하고 IMFSourceReaderCallback::OnReadSamplehrStatus 매개 변수도 검사.

동기 모드

동기 모드에서:
  • pdwStreamFlagsppSample 매개 변수는 NULL일 수 없습니다. 그렇지 않으면 메서드는 E_POINTER 반환합니다.
  • pdwActualStreamIndexpllTimestamp 매개 변수는 NULL일 수 있습니다.
  • 메서드는 다음 샘플을 사용할 수 있게 될 때까지 차단합니다.
동기 모드에서 dwStreamIndex 매개 변수가 MF_SOURCE_READER_ANY_STREAM 경우 샘플을 배달한 스트림을 알 수 있도록 pdwActualStreamIndex대해 NULL이 아닌 값을 전달해야 합니다.

이 메서드는 ppSample에서 미디어 샘플을 반환하지 않고 pdwStreamFlags 매개 변수에 플래그를 반환할 수 있습니다. 따라서 ppSample 매개 변수는 메서드가 성공하더라도 NULL 포인터를 받을 수 있습니다. 예를 들어 원본 판독기가 스트림의 끝에 도달하면 pdwStreamFlags에서 MF_SOURCE_READERF_ENDOFSTREAM 플래그를 반환하고 ppSampleNULL로 설정합니다.

스트림에 간격이 있는 경우 pdwStreamFlags 는 MF_SOURCE_READERF_STREAMTICK 플래그를 수신하고 , ppSampleNULL이고, pllTimestamp 는 간격이 발생한 시간을 나타냅니다.

이 인터페이스는 Windows Vista용 플랫폼 업데이트 보충이 설치된 경우 Windows Vista에서 사용할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista용 Windows 7, Windows Vista 및 플랫폼 업데이트 보충 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 R2 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 mfreadwrite.h

추가 정보

IMFSourceReader

원본 판독기