Страница 2 из 2

Re: Аудиоплеер Hikvision

Добавлено: 23 ноя 2022, 18:34
iTuneDVR
deadbeef писал(а):Снова здравствуйте. С 32-битной виндой всё выглядит гораздо лучше, но почему-то по завершении работы плеера выскакивает окно с ошибкой, на 64 битах такого не было. Видимо какую-то библиотеку нужно зарегистрировать?

Такого не попадалось точно в 32-ю битном случае и времени там было много проведено.

Re: Аудиоплеер Hikvision

Добавлено: 23 ноя 2022, 18:38
iTuneDVR
deadbeef писал(а):Я не Сишник, но как мне кажется нашёл обшибку в коде =)

Было:

Код: Выделить всё

   while (j=0 <= i) {

Стало:

Код: Выделить всё

   int j=0;
      while (j <= i) {


Треск пропал полностью и везде (ну ок, не везде, в начале небольшой щелчок есть). До этого исправления насколько я понимаю цикл выполнялся до тех пор, пока голосовая функция не вываливалась с ошибкой, потому что j на протяжении всего вывода всегда равнялось 161.



В оригинале было

Код: Выделить всё

    while (int j=0 <= i) {

Инициализация внутренней переменной и проверка до порогового значения..
Я тоже не сишник ;)

И не ругалось и не валилось и отрабатывало до длинны файла в i порциями N=160
Треск был от заголовков вначале и в конце, после конвертации из программ..

Re: Аудиоплеер Hikvision

Добавлено: 28 ноя 2022, 13:41
deadbeef
iTuneDVR писал(а):В оригинале было

Код: Выделить всё

    while (int j=0 <= i) {

Инициализация внутренней переменной и проверка до порогового значения..
Я тоже не сишник ;)

И не ругалось и не валилось и отрабатывало до длинны файла в i порциями N=160
Треск был от заголовков вначале и в конце, после конвертации из программ..

Да, мой косяк, когда описывал изменения не скопировал оригинал, а вписал по памяти. Но не суть. Если добавить внутрь цикла вывод в консоль значения о то в вашем варианте вывод будет таким:

Код: Выделить всё

j is: 0
j is: 1
j is: 1
...
j is: 1
j is: 1


а в моём таким:

Код: Выделить всё

j is: 0
j is: 160
j is: 320
j is: 480
j is: 640
j is: 800
...
j is: 47680
j is: 47840
j is: 48000


При этом на одном и том же файле в вашем варианте - треск, в моём - тишь да гладь.

Re: Аудиоплеер Hikvision

Добавлено: 28 ноя 2022, 22:56
iTuneDVR
Да, какой-то косяк вышел и треск понятен почему.
Исправил в посте на
while (int j=0 <= i) {
на
for (int j=0; j<= i;) {
Чтобы там ничего не менять далее.

Оптимизации после доводят до косяков ;)
Поведение компилятора непонятное, ведь при этом j увеличивалось явно в цикле, но значение не менялось.
Благодарствую за найденный баг.