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
데이터를 끌어올 스트림입니다. 값은 다음 중 한 개일 수 있습니다.
[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를 반환합니다. 가능한 값에는 다음 표에 있는 값이 포함되지만, 이에 국한되는 것은 아닙니다.
반환 코드 | 설명 |
---|---|
|
메서드가 성공했습니다. |
|
잘못된 요청입니다. |
|
dwStreamIndex 매개 변수가 잘못되었습니다. |
|
플러시 작업이 보류 중입니다. IMFSourceReader::Flush를 참조하세요. |
|
인수가 잘못되었습니다. 설명 부분을 참조하세요. |
설명
요청된 스트림을 선택하지 않으면 반환 코드가 MF_E_INVALIDREQUEST. IMFSourceReader::SetStreamSelection을 참조하세요.
이 메서드는 동기적으로 또는 비동기적으로 완료할 수 있습니다. 원본 판독기를 만들 때 콜백 포인터를 제공하는 경우 메서드는 비동기입니다. 그렇지 않으면 메서드가 동기식입니다. 콜백 포인터 설정에 대한 자세한 내용은 MF_SOURCE_READER_ASYNC_CALLBACK.
비동기 모드
비동기 모드:- 모든 매개 변수는
[out]
NULL이어야 합니다. 그렇지 않으면 메서드는 E_INVALIDARG 반환합니다. - 메서드는 즉시 반환됩니다.
- 작업이 완료되면 애플리케이션의 IMFSourceReaderCallback::OnReadSample 메서드가 호출됩니다.
- 오류가 발생하면 메서드가 동기적으로 또는 비동기적으로 실패할 수 있습니다. ReadSample의 반환 값을 확인하고 IMFSourceReaderCallback::OnReadSample의 hrStatus 매개 변수도 검사.
동기 모드
동기 모드에서:- pdwStreamFlags 및 ppSample 매개 변수는 NULL일 수 없습니다. 그렇지 않으면 메서드는 E_POINTER 반환합니다.
- pdwActualStreamIndex 및 pllTimestamp 매개 변수는 NULL일 수 있습니다.
- 메서드는 다음 샘플을 사용할 수 있게 될 때까지 차단합니다.
이 메서드는 ppSample에서 미디어 샘플을 반환하지 않고 pdwStreamFlags 매개 변수에 플래그를 반환할 수 있습니다. 따라서 ppSample 매개 변수는 메서드가 성공하더라도 NULL 포인터를 받을 수 있습니다. 예를 들어 원본 판독기가 스트림의 끝에 도달하면 pdwStreamFlags에서 MF_SOURCE_READERF_ENDOFSTREAM 플래그를 반환하고 ppSample을 NULL로 설정합니다.
스트림에 간격이 있는 경우 pdwStreamFlags 는 MF_SOURCE_READERF_STREAMTICK 플래그를 수신하고 , ppSample 은 NULL이고, pllTimestamp 는 간격이 발생한 시간을 나타냅니다.
이 인터페이스는 Windows Vista용 플랫폼 업데이트 보충이 설치된 경우 Windows Vista에서 사용할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista용 Windows 7, Windows Vista 및 플랫폼 업데이트 보충 [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2008 R2 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | mfreadwrite.h |