CMediaSample 클래스
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
클래스는 CMediaSample
IMediaSample2 인터페이스를 지원하는 미디어 샘플을 정의합니다. 미디어 샘플에는 메모리 버퍼에 대한 포인터와 보호된 멤버 변수로 저장된 다양한 속성이 포함되어 있습니다.
미디어 샘플은 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 | 샘플의 속성을 설정합니다. |
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|
라이브러리 |
|