CMediaSample 클래스

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngineMedia Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

cmediasample 클래스 계층 구조

클래스는 CMediaSampleIMediaSample2 인터페이스를 지원하는 미디어 샘플을 정의합니다. 미디어 샘플에는 메모리 버퍼에 대한 포인터와 보호된 멤버 변수로 저장된 다양한 속성이 포함되어 있습니다.

미디어 샘플은 CBaseAllocator 클래스에서 파생된 할당자에 의해 생성됩니다. CMediaSample 생성자는 버퍼 크기와 함께 할당된 버퍼에 대한 포인터를 받습니다. 다른 속성은 일반적으로 IMediaSample 인터페이스 메서드를 통해 설정되고 검색됩니다.

미디어 샘플의 수명 주기는 대부분의 COM 개체와 다릅니다.

  • 할당자는 무료 샘플 목록을 보유합니다. 필터에 새 샘플이 필요한 경우 할당자의 IMemAllocator::GetBuffer 메서드를 호출합니다. 할당자는 무료 목록에서 샘플을 검색하고, 샘플의 참조 수를 증가시키고, 샘플에 대한 포인터를 반환합니다.
  • 필터가 샘플로 완료되면 샘플에서 IUnknown::Release 메서드를 호출합니다. 대부분의 개체와 달리 샘플은 참조 수가 0에 도달하면 자체적으로 삭제되지 않습니다. 대신 할당자에서 IMemAllocator::ReleaseBuffer 메서드를 호출하고 할당자는 샘플을 무료 목록으로 반환합니다.
  • 할당자는 IMemAllocator::D ecommit 메서드가 호출될 때까지 샘플을 삭제하지 않습니다.
보호된 멤버 변수 Description
m_dwFlags 샘플 속성 플래그입니다.
m_dwTypeSpecificFlags 형식별 플래그입니다.
m_pBuffer 미디어 데이터가 포함된 메모리 버퍼에 대한 포인터입니다.
m_lActual 버퍼에 있는 유효한 데이터의 길이(바이트)입니다.
m_cbBuffer 버퍼의 크기(바이트)입니다.
m_pAllocator 이 샘플을 만든 할당자에 대한 포인터입니다.
m_pNext 할당자 샘플 목록의 다음 샘플에 대한 포인터입니다.
m_Start 샘플 시작 시간입니다.
m_End 샘플 종료 시간입니다.
m_MediaStart 미디어 시작 시간입니다.
m_MediaEnd 미디어 중지 시간.
m_pMediaType 형식이 데이터 스트림의 이전 샘플에서 변경된 경우 미디어 형식에 대한 포인터입니다.
m_dwStreamId 스트림 식별자입니다.
공용 멤버 변수 Description
m_cRef 참조 수입니다.
Public 메서드 Description
CMediaSample 생성자 메서드입니다.
~ CMediaSample 소멸자 메서드입니다. 가상.
SetPointer 메모리 버퍼에 대한 포인터를 설정합니다.
IMediaSample 메서드 Description
GetPointer 버퍼에 대한 읽기/쓰기 포인터를 검색합니다.
GetSize 버퍼의 크기를 검색합니다.
GetTime 이 샘플을 시작하고 완료해야 하는 스트림 시간을 검색합니다.
SetTime 이 샘플이 시작되고 완료되어야 하는 스트림 시간을 설정합니다.
IsSyncPoint 샘플의 시작이 동기화 지점인지 확인합니다.
SetSyncPoint 이 샘플의 시작이 동기화 지점인지 여부를 지정합니다.
IsPreroll 이 샘플이 사전 등록 샘플인지 확인합니다.
SetPreroll 이 샘플이 사전 등록 샘플인지 여부를 지정합니다.
GetActualDataLength 버퍼에서 유효한 데이터의 길이를 검색합니다.
SetActualDataLength 버퍼에서 유효한 데이터의 길이를 설정합니다.
GetMediaType 미디어 형식이 이전 샘플과 다른 경우 미디어 형식을 검색합니다.
SetMediaType 샘플의 미디어 형식을 설정합니다.
IsDiscontinuity 이 샘플이 데이터 스트림의 중단을 나타내는지 확인합니다.
SetDiscontinuity 이 샘플이 데이터 스트림의 중단을 나타내는지 여부를 지정합니다.
GetMediaTime 이 샘플의 미디어 시간을 검색합니다.
SetMediaTime 이 샘플의 미디어 시간을 설정합니다.
IMediaSample2 메서드 Description
GetProperties 샘플의 속성을 검색합니다.
SetProperties 샘플의 속성을 설정합니다.

요구 사항

요구 사항
헤더
Amfilter.h(Streams.h 포함)
라이브러리
Strmbase.lib(소매 빌드);
Strmbasd.lib(디버그 빌드)