Как изменить громкость потока PCM без плавающей запятой - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь представить способ изменения громкости потока PCM без использования чисел с плавающей запятой, чтобы иметь возможность выполнять работу на простом выделенном оборудовании. Я нашел очень интересным этот поток: Как изменить объем потока данных PCM (неудачный эксперимент) Но они используют числа с плавающей запятой.

Теперь образцы PCM подписаны int, так что еслиЯ бы суммировал или вычел значение для выборок, я должен увеличить или уменьшить абсолютное значение, иначе я просто смещаю волну вверх или вниз. Более того, я должен быть уверен, что положительные образцы не становятся отрицательными и наоборот (потому что они могут быть меньше, чем значение, которое я вычитаю). В этом случае значение выборки должно остановиться на 0.

Итак, вопрос: правильный ли это подход? Должен ли я ожидать потери качества?

Спасибо.

1 Ответ

0 голосов
/ 25 октября 2019

Хорошо, я думаю, что у меня есть ответ: так как я суммирую или вычитаю (даже с помощью трюков, чтобы сохранить знак), я просто смещаю волну вверх и вниз от фиксированного значения.

Длясделать работу, мне нужно умножить выборку до фиксированного значения, получив растяжение волны.

Теперь, если бы я попытался сделать это только с целочисленными значениями, скажем, с множителем от 0до 7 для объема на 24-битных выборках и смешивания 32 каналов, мне нужно будет выполнить операции с 32-битными целыми числами, чтобы избежать переполнения. В то время как с 64-битными вычислениями я мог бы обрабатывать 24-битные сэмплы 24-битные для объема и 65536 каналов. Если в моих расчетах нет ошибок.

...