Hatred's Log Place

DON'T PANIC!

Apr 2, 2021 - 1 minute read - programming linux

PCM Terminology and Concepts

Просто ссылка для мемориза:

Под катом краткий конспект (читать не обязательно).

  • Sample Амплитуда одного канала. При частоте дискритизации 48000Hz, для одного канала 48000 семплов дадут 1 секунду аудио. Размер может быть 8, 16, 24, 32 бит (больше?). Little Endian, Big Endian - в зависимости от системы/устройства. Размер определяет динамический диапазон: разница между самым тихим и самым громким сигналом, который может воспроизвестись.

  • Frame Один семпл, но для всех каналов. Для Mono Frame == Sample, для стерео Frame == 2xSample.

  • Frame size Размер фрейма в байтах. Для Stereo, PCM_S16LE:

    Frame size = 16/8 * 2 = 4
    
  • Rate Сколько фреймов в секунду у нас прилетает. Иными словами: с какой частотой у нас происходит семплирование сигнала. Нужен так же для того, что бы посчитать полосу пропускания:

    Bandwidth = Frame Size * Rate * 8, bits/s
    
  • Period Реальное железо обрабатывает данные блоками и выдаёт сразу несколько фреймов. Обычно это сигнализируется прерыванием. Временной интервал между очередными порциями данных и есть период. Период так же отражает задержку в аудио сигнале: звук в реальности будет отставать как раз на величину периода.

  • Period Size Размер периода… в герцах! Во внутренней кухне может встречаться и размерность в фреймах или даже байтах.