libopus дает разные результаты на Windows и Linux - PullRequest
1 голос
/ 30 октября 2019

Я использую libopus для кодирования входного файла pcm в поток битов bit. Процесс довольно обыденный:

  1. Создание кодировщика: вызов opus_encoder_create
  2. Циклический просмотр входного файла pcm (в двоичном режиме) путем чтения фрагментов определенного размера кадраи закодировать их, используя opus_encode
  3. Записать закодированный вывод, фрагмент за фрагментом, в файл битового потока

Поскольку я управляю всеми из следующих параметров:

  • частота дискретизации (от звонка до opus_encoder_create)
  • голосовые каналы (от звонка до opus_encoder_create)
  • тип приложения (от звонка до opus_encoder_create)
  • битрейт (от вызова до opus_encoder_ctl)
  • размер кадра

Мне было интересно почему вывод (полученный двоичный файл) отличается в Linux (clang & Ubuntu) и windows (clang или cl в VS2019):

  • Есть ли еще параметры для кодировщика, которые я должен рассмотреть?
  • есть внутренние различия, которые мешают либопусу вести себя согласованно на разных платформах?
  • существует ли известный набор инструментов, который работаетпоможет мне проверить мой код? В настоящее время я использую ctl-вызовы с GET_BITRATE и т. д., чтобы узнать, какие настройки были применены к кодировщику
...