es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El filtro de captura de audio de DirectShow genera solo 1 muestra por segundo.

Estoy haciendo una pequeña aplicación de audio y video en tiempo real utilizando Directshow. Utilizo SampleGrabber para obtener muestras del filtro de captura de audio. El callback de SampleGrabber se llama cada segundo y cada muestra tiene un tamaño de 88200 bytes. Imprimí el WAVEFORMATEX:
WAVEFORMATPCM: verdadero
nChannels: 2
nSamplesPerSec: 44100
nAvgBytesPerSec: 176400
nBlockAlign: 4
wBitsPerSample: 16
cbSize: 0

así que tengo 2 preguntas:
1. ¿Es diferente el “sample” en el aspecto de Directshow al “sample” en la grabación de audio? Porque según mi conocimiento, hay 44100 muestras por segundo (cada una de 16 bits), mientras que el SampleGrabber de Directshow solo captura 1 muestra por segundo (cada una de 88200 bytes). ¿Se agregan muchas muestras y se colocan en un “buffer”?

  1. Si se colocan muchas muestras de audio en un buffer, entonces el tamaño del buffer debería ser de 176400 bytes por segundo. ¿Por qué es solo de 88200 bytes por buffer? ¿Solo se utiliza 1 canal?
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Respuesta

    1. En Directshow, el término ‘muestra’ se refiere a una unidad de datos que es procesada por el flujo de trabajo al capturar o renderizar medios. En el contexto del audio, la muestra representa un punto de datos único de una señal continua. El SampleGrabber en Directshow está diseñado para recolectar muestras a una tasa particular, que es determinada por el tipo de medio establecido en el pin de entrada.
      En tu caso, el tipo de medio tiene una frecuencia de muestra de 44100 Hz y una profundidad de bits de 16 bits. Sin embargo, el SampleGrabber solo está recolectando una muestra por segundo, cada una con un tamaño de 88200 bytes. Esto sugiere que el SampleGrabber está recolectando cuadros de audio completos (cada uno con una duración de 1 segundo) en lugar de muestras individuales.

    2. El tamaño del búfer utilizado por el SampleGrabber es determinado por el asignador en su pin de entrada. El asignador es responsable de asignar memoria para los búferes y gestionarlos. Es posible que el asignador esté configurado para proporcionar solo 88200 bytes por búfer, lo cual corresponde al tamaño de un solo cuadro de audio en tu caso. El uso de un canal o dos canales no debería afectar el tamaño del búfer, ya que el número de canales se tiene en cuenta en el tipo de medio.

Comments are closed.