Поделиться через


Класс CMediaSample

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Иерархия классов cmediasample

Класс 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 Задает свойства примера.

Требования

Требование Значение
Заголовок
Amfilter.h (включая Streams.h)
Библиотека
Strmbase.lib (розничные сборки);
Strmbasd.lib (отладочные сборки)