Класс CMediaSample
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
Класс CMediaSample
определяет пример мультимедиа, поддерживающий интерфейс IMediaSample2 . Пример носителя содержит указатель на буфер памяти и различные свойства, хранящиеся в виде защищенных переменных-членов.
Примеры мультимедиа создаются распределителями, которые являются производными от класса CBaseAllocator . Конструктор CMediaSample
получает указатель на выделенный буфер вместе с размером буфера. Другие свойства обычно задаются и извлекаются с помощью методов интерфейса IMediaSample .
Жизненный цикл примера носителя отличается от цикла большинства COM-объектов:
- Распределитель содержит список бесплатных примеров. Когда фильтру требуется новый пример, он вызывает метод IMemAllocator::GetBuffer распределителя. Распределитель извлекает образец из свободного списка, увеличивает количество ссылок примера и возвращает указатель на образец.
- После завершения работы с примером фильтр вызывает метод IUnknown::Release в образце. В отличие от большинства объектов, образец не удаляется, когда количество ссылок достигает нуля. Вместо этого он вызывает метод IMemAllocator::ReleaseBuffer в распределителе, и распределитель возвращает образец в список свободных.
- Распределитель не уничтожает образцы до вызова метода IMemAllocator::D ecommit .
Защищенные переменные-члены | Описание |
---|---|
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 | Идентификатор потока. |
Открытые переменные-члены | Описание |
m_cRef | Количество ссылок. |
Открытые методы | Описание |
CMediaSample | Метод конструктора. |
~ CMediaSample | Метод деструктора. Виртуальной. |
SetPointer | Задает указатель на буфер памяти. |
Методы IMediaSample | Описание |
GetPointer | Извлекает указатель на чтение и запись на буфер. |
GetSize | Извлекает размер буфера. |
GetTime | Извлекает время потока, с которого этот пример должен начинаться и заканчиваться. |
SetTime | Задает время потока, с которого этот пример должен начинаться и заканчиваться. |
IsSyncPoint | Определяет, является ли начало примера точкой синхронизации. |
SetSyncPoint | Указывает, является ли начало этого примера точкой синхронизации. |
IsPreroll | Определяет, является ли этот пример примером предварительной подготовки. |
SetPreroll | Указывает, является ли этот пример примером предварительной подготовки. |
GetActualDataLength | Извлекает длину допустимых данных в буфере. |
SetActualDataLength | Задает длину допустимых данных в буфере. |
GetMediaType | Извлекает тип носителя, если тип носителя отличается от предыдущего примера. |
SetMediaType | Задает тип носителя для примера. |
IsDiscontinuity | Определяет, представляет ли этот пример перерыв в потоке данных. |
SetDiscontinuity | Указывает, представляет ли этот пример разрыв в потоке данных. |
GetMediaTime | Извлекает время мультимедиа для этого примера. |
SetMediaTime | Задает время мультимедиа для этого примера. |
Методы IMediaSample2 | Описание |
GetProperties | Извлекает свойства примера. |
SetProperties | Задает свойства примера. |
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|