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


Метод CBaseAllocator.ReleaseBuffer

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

Метод ReleaseBuffer возвращает пример носителя в список примеров свободных носителей. Этот метод реализует метод IMemAllocator::ReleaseBuffer .

Синтаксис

HRESULT ReleaseBuffer(
   IMediaSample *pSample
);

Параметры

pSample

Указатель на интерфейс IMediaSample примера объекта мультимедиа.

Возвращаемое значение

Возвращает S_OK.

Комментарии

Когда число ссылок примера мультимедиа достигает нуля, образец вызывает ReleaseBuffer с самим собой в качестве параметра . Этот метод выполняет следующие действия.

  • Возвращает образец мультимедиа в свободный список (CBaseAllocator::m_lFree).
  • Вызывает метод CBaseAllocator::NotifySample , который освобождает все потоки, заблокированные при вызовах метода CBaseAllocator::GetBuffer .
  • Если метод CBaseAllocator::SetNotify был вызван ранее, вызывает метод IMemAllocatorNotifyCallbackTemp::NotifyRelease .
  • При выпуске последнего примера при наличии ожидающего вызова CBaseAllocator::D ecommit вызывает метод CBaseAllocator::Free , чтобы освободить буферную память. (В базовом классе Free — это чистый виртуальный метод.)

Требования

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

См. также раздел

Класс CBaseAllocator