понедельник, 27 мая 2024 г.

Динамічне завантаження бібліотеки libbass_fx.so у проєкт на Lazarus.

 Я створюю аудіоплеєр для Linux. Пишу я його на freepascal у Делфі-подібній IDE Lazarus з використанням аудіобібліотеки BASS. 

Але бібліотеки для Linux є, але знайти документацію по їх використанню у Linux вкрай складно.  І навіть на форумі підтримки цих бібліотек я не знайшов гідного рішення. 

Тому хочу поділитись з зацікавленими людьми моїми напрацюваннями.

З динамічною бібліотекою lazdynamic_bass в мене начебто склалося, але при спробі додати ще один ефект обробки каналу 'Compressor', виявилось що він відсутній у цій бібліотеці. Тому я вирішив підключити бібліотеку libbass_fx.so. Якщо завантаження бібліотек кодеків не викликало ніяких проблем, то з підключенням цієї бібліотеки виявилось не все так просто.

Динамічне завантаження за допомогою бібліотеки DynLibs це перше що дозволило якось завантажити цю бібліотеку.

lib:=LoadLibrary(Pchar(Path+'libbass_fx.so'));

Це спрацьовувало при шляху до бібліотеки '.../lib/libbass_fx.so' , але якщо додати додаткову теку до шляху цієї бібліотеки наприклад '.../lib/fx/libbass_fx.so', то вже бібліотека не завантажувалася. Звісно що файл бібліотеки знаходився у цій підтеці.

Але і це не найстрашніше. Мені вдалося додати до проєкту таким чином ефект Compressor2 з цієї бібліотеки і він навіть працював як треба, але мене занепокоїло, що виклик  функції  BASS_FX_GetVersion викликало виключення. 

І виявилося що мої занепокоєння не марні. При спробі додати до ефектів інший ефект  BASS_ATTRIB_TEMPO він також викликав виключення і мені довелося шукати відповіді на свої питання у тексті Dynamic_BassFX.pas

Виявилося що у цій бібліотеці є схожа функція для завантаження бібліотеки як і у lazdynamic_bass.pas

У lazdynamic_bass.pas ця функція Load_BASSDLL(PChar(fname)) завантажує бібліотеку BASS.

У Dynamic_BassFX.pas ця функція Load_BASSFXDLL(PChar(fname)) завантажує бібліотеку BASS_FX.

Тепер всі функції цієї бібліотеки працюють коректно!

Комментариев нет:

Отправить комментарий

AdSen

Популярные сообщения