Método CBaseAllocator.Alloc

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

El Alloc método asigna memoria para los búferes.

Sintaxis

virtual HRESULT Alloc();

Parámetros

Este método no tiene parámetros.

Valor devuelto

Devuelve uno de los siguientes valores HRESULT .

Código devuelto Descripción
S_FALSE
Los requisitos del búfer no han cambiado.
S_OK
Los requisitos del búfer han cambiado.
VFW_E_SIZENOTSET
No se establecieron los requisitos del búfer.

Observaciones

El método CBaseAllocator::Commit llama a este método.

En la clase base, este método no asigna ninguna memoria. Devuelve un error si no se establecieron los requisitos de búfer, S_FALSE si los requisitos no han cambiado y S_OK si los requisitos han cambiado.

Una clase derivada debe invalidar este método para realizar la asignación de memoria real. Normalmente, la clase derivada realizará los pasos siguientes:

  1. Llame a la implementación de la clase base para determinar si la memoria realmente necesita asignar.
  2. Asignar memoria.
  3. Cree objetos CMediaSample que contengan fragmentos de memoria del paso 2.
  4. Agregue cada objeto CMediaSample a la lista de ejemplos gratuitos (CBaseAllocator::m_lFree).

Para obtener un ejemplo, vea CMemAllocator::Alloc.

Requisitos

Requisito Value
Encabezado
Amfilter.h (include Streams.h)
Biblioteca
Strmbase.lib (compilaciones comerciales);
Strmbasd.lib (compilaciones de depuración)

Consulte también

CBaseAllocator (clase)