Crackling sound in the background
Во время RTSP стрима звук с микрофона воспроизводится с фоновым треском (похоже на гул трансформатора). Если уменьшить громкость, треск не пропадает, просто становится тише (как и полезные звуки). На родной прошивке такого не наблюдается, звук чистый.
https://github.com/OpenIPC/device-mjsxj02hl
Hardware Processor hi3518ev300 Family hi3516ev200 Sensor jxf22_i2c Flash 16 MB
Firmware Version 2.2.11.05-lite Build master+fe6cf7e8, 2022-11-05 Majestic HEAD+1c1718e, 2022-11-05
На камерах HS303 v1 такая-же проблема при уровне громкости 50+
На камерах HS303 v1 такая-же проблема при уровне громкости 50+
Здесь уменьшение уровня громкости не спасает - гул просто становится тише, но с ним и посторонние звуки тоже заглушаются. Например при 30% гул слабый, но присутствует. При этом, чувствительность микрофона такая, что камера с родной прошивкой, находящаяся в другой комнате, слышит лучше, чем эта, которая лежит на столе передо мной.
Сделайте дамп cat /proc/umap/a* на родной прошивке и сравните с настройками на OpenIPC, с большой долей вероятности на аудио входе применены разные настройки (в том числе, возможно, эквалайзер)
Родная прошивка https://pastebin.com/r9EphsF7 OpenIPC https://pastebin.com/ew1TaL0x
Разница как минимум в кодеке (на родной g711a) и в некоторых числовых значениях. А как все это изменить для OpenIPC?
Ключевая разница в уровне усиления сигнала и включенном голосовом эквалайзере:
-----ACODEC PARAM--------------------------------------------------------------
LGain(dB) RGain(dB) DacLVol(dB) DacRVol(dB) AdcLVol(dB) AdcRVol(dB) MicLMut MicRMut DacLMut DacRMut BoostL BoostR
- 30.0 30.0 0 0 10 10 0 0 0 0 1 1
+ 30.0 30.0 0 0 0 0 0 0 0 0 1 1
-----AI CHN VQE STATUS0---------------------------------------------------------
AiDev AiChn State bVqe workmod RATE PoiNum bAgc bEq bHpf bRnr bHdr bDrc WrFile
- 0 0 enable Y comm 8kHZ 320 N N N N N N N
+ 0 0 enable N comm (null) 0 N N N N N N N
Эквалайзер будет добавлен в ultimate прошивку в будущем в связи с отсутствием места в lite (проблема обсуждалась в группе Majestic tests), настроить параметры Acodec вы можете самостоятельно через вызов соответствующих ioctl, воспользовавшись кодом из SDK
Значения AdcLVol/AdcRVol влияют только на чувствительность, посторонний шум не убирают.
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include "acodec.h"
int main(int argc, char **argv) {
int acodec;
acodec = open("/dev/acodec", O_RDWR);
if(acodec < 0) {
printf("Error: can't open acodec device!\n");
} else {
/*
// Reset
if(ioctl(acodec, ACODEC_SOFT_RESET_CTRL)) {
printf("ioctl ACODEC_SOFT_RESET_CTRL error!\n");
}
unsigned int gain_mic = 0x0f;
// LGain
if(ioctl(acodec, ACODEC_SET_GAIN_MICL, &gain_mic)) {
printf("ioctl ACODEC_SET_GAIN_MICL error!\n");
}
// RGain
if(ioctl(acodec, ACODEC_SET_GAIN_MICR, &gain_mic)) {
printf("ioctl ACODEC_SET_GAIN_MICR error!\n");
}
*/
ACODEC_VOL_CTRL vol_ctrl;
vol_ctrl.vol_ctrl_mute = 0;
vol_ctrl.vol_ctrl = 0x14;
// AdcLVol
if(ioctl(acodec, ACODEC_SET_ADCL_VOL, &vol_ctrl)) {
printf("ioctl ACODEC_SET_ADCL_VOL error!\n");
}
// AdcRVol
if(ioctl(acodec, ACODEC_SET_ADCR_VOL, &vol_ctrl)) {
printf("ioctl ACODEC_SET_ADCR_VOL error!\n");
}
printf("End.\n");
close(acodec);
}
return 0;
}
Видимо, дело действительно в голосовом эквалайзере. Будем ждать релиза)
Необходимо добавить файлы libhive_RES.so, libhive_ANR.so, libhive_common.so, libhive_HPF.so в /usr/lib (полагаю, влезут только в ultimate релиз)
А в самом majestic поддержку эквалайзера уже реализовали?
Да, кто-то ее тестировал еще летом
Помимо добавления файлов, в конфиге majestic нужно что-то менять для его активации?
в секции audio параметр voiceEqualizer
Спасибо! Вечером буду пробовать. По результатам отпишусь здесь.
Спасибо! Вечером буду пробовать. По результатам отпишусь здесь.
Сначала прошивка должна будет собраться, что-бы через sysupgrade новый majestic автоматом залился. Ну или руками пробовать подкидывать majestic взяв его с канала dev
Majestic не нужно обновлять, он включает этот функционал, если есть библиотеки для эквалайзера. Нужен PR в firmware с этими файлами (лучше взять проверенные из https://t.me/c/1223369578/11700)
Тогда да, если это внешняя функция, то нужно будет включить во всех актуальных сборках сначала, а потом уже тесты..
Похоже, это работает! Спасибо! Файлы брал здесь https://github.com/OpenIPC/firmware/tree/master/general/package/hisilicon-osdrv-hi3516ev200/files/lib
Предлагаю закрыть этот тикет после того, как все начнет работать из коробки после установки firmware