| Written on: 22. 06. 2013 [23:07] | 
	
		| coderator vitaly koubarev Topic creator registered since: 20.03.2013 Posts: 3 | Стоит версия 0.8.0.6-1 для ubuntu. Создал в чистом проекте контроллер звуковой карты как по мануалу. Данные идут. Но также растет количество Потерянных_кадров. Подключаю архивацию значений с канала - график строится, но постоянно идут периодические разрывы в нем, это и есть потерянные_кадры, как я понимаю.
 Хотя по мануалу на скриншотах идет всё гладенько (но там явно более старая версия скады).
 
 Пробовал на двух разных машинах - результат тот же.
 Шестым чувством понимаю, что где-то что-то с приоритетами, но для меня это лес густой.
 Хотя бы скажите, это не только у меня? Или может так и должно теперь? Спасибо!
 
 | 
	
		| Written on: 24. 06. 2013 [09:58] | 
	
		| roman Roman Savochenko Moderator Contributor Developer   registered since: 12.12.2007 Posts: 3788 | "coderator" wrote:
 Стоит версия 0.8.0.6-1 для ubuntu. Создал в чистом проекте контроллер звуковой карты как по мануалу.
 Данные идут. Но также растет количество Потерянных_кадров. Подключаю архивацию значений с канала - график строится, но постоянно идут периодические разрывы в нем, это и есть потерянные_кадры, как я понимаю.
 
 Это проблема библиотеки portaudio и/или ALSA, поскольку API предусматривает вызов callback функции из потока этих библиотек и уже просто уведомление меня о факте потери. Т.е. этот поток не успевает вызываться достаточно, что-бы все кадры захватывать. В самой библиотеке это определяется параметром iParam.suggestedLatency, что фактически период этой задачи проверки данных в буфере звуковой карты, и который поставить более 0.2 секунд нельзя.
 
 У меня заметная потеря кадров начинается с частот 96000, а на 44100 очень редко.
 
 Поднятием приоритета через /etc/security/limits.conf решить эту проблему мне не удавалось, может конечно потому-что он берёт приоритет из вызывающего потока, который у меня всегда низкоприоритетен. В самом API возможности указать приоритет я не увидел.
 
 
       Learn, learn and learn better than work, work and work.       | 
	
		| Written on: 25. 06. 2013 [08:32] | 
	
		| roman Roman Savochenko Moderator Contributor Developer   registered since: 12.12.2007 Posts: 3788 | "roman" wrote:
 Это проблема библиотеки portaudio и/или ALSA, поскольку API предусматривает вызов callback функции из потока этих библиотек и уже просто уведомление меня о факте потери. Т.е. этот поток не успевает вызываться достаточно, что-бы все кадры захватывать. В самой библиотеке это определяется параметром iParam.suggestedLatency, что фактически период этой задачи проверки данных в буфере звуковой карты, и который поставить более 0.2 секунд нельзя.
 
 Точнее вообще 20мс. Из-за чего шанс выхода за этот цикл при записи в буфер увеличиваются.
 Собственно поднять приоритет для потока библиотеки, через функцию callback удалось. Теперь потери стали очень редкими.
 Планирую ещё оптимизировать процедуру записи в буфер до записи целыми блоками, что позволит ресурс захватывать только на блок и в целом, при правильных условиях, копировать блок целиком. Делаю это сейчас для DiamondBoards.
 
 P.S. Если до конца месяца сделаю то попадёт в 0.8.0.7 LTS
 
 
       Learn, learn and learn better than work, work and work.       | 
	
		| Written on: 27. 06. 2013 [12:22] | 
	
		| roman Roman Savochenko Moderator Contributor Developer   registered since: 12.12.2007 Posts: 3788 | "roman" wrote:
 P.S. Если до конца месяца сделаю то попадёт в 0.8.0.7 LTS
 
 В рабочей версии устанавливать приоритет уже можно и у меня на 96000 потерь кадров нет.
 
 
       Learn, learn and learn better than work, work and work.       |