NickKolok,
Ну, не то чтобы я был борец против проприетарного mp3

Просто я придерживался бесплатного откытого ПО и оказался "в русле" решения принятого автором билиотеки (Erik de Castro Lopo).
Про ppa: можно подумать, почему нет. Сначала хотелось бы больше тестов.
sergey109,
Такой битрейт (192кГц), боюсь, катастрофически скажется на скорости работы программы

т.к. использованный алгоритм довольно затратен с точки зрения вычислительных ресурсов. На моей видеокарте обработка 1 минуты звука требует 8 минут при битрейте 44,1 кГц. С ростом битрейта время работы программы увеличится пропорционально.
peregrine,
Теоретически программе все равно на природу искажения звука. Может сработать. Хотя я тестировал ее именно на кликах, т.е. довольно коротких (50-150 сэмплов) шумах.
CUDA использована только потому, что я ее уже изучал. Если кто-нибудь возьмется подстроить код под OpenCL, я обязательно помогу.
У меня самого скорее всего не хватит времени на это. Готовлюсь поступать в универ.
Пользователь решил продолжить мысль 08 Февраля 2014, 18:02:51:
peregrine,
исходник
http://sourceforge.net/projects/declicker/files/declicker.cu/download
Пользователь решил продолжить мысль 08 Февраля 2014, 18:08:32:
Как работает опишу завтра. Рад, что у тебя есть желание помочь.
Пользователь решил продолжить мысль 08 Февраля 2014, 18:30:27:
"Error CUDA driver version is insufficient for CUDA runtime version "
Это похоже на несоответствие версий CUDA SDK (я брал последнюю версию - 5.5) и драйвера на твоем компьютере. Решения может быть два: перекомпилировать программу с более старой версией CUDA SDK или установить более позднюю версию драйвера.
Пользователь решил продолжить мысль 09 Февраля 2014, 07:38:19:
Описание работы программы начну с функций
burg_prediction_error(int * buf, int I, float * a_d, int * det3_sc, int rate, int channels, int bits, int buflen, int frames)
Входные параметры: buf - адрес массива аудио сэмплов в памяти видеокарты, I - номер исследуемого сэмпла
Выходной параметр: a_d - величина ошибки предсказания
Остальные параметры не используются.
Вычисляет ошибку (a_d) редсказания значения сэмпла номер I из буфера buf по методу Бурга.
Метод Бурга позволяет предсказать следующее значение в последовательности сэмплов. Предсказуемость у музыки выше чем у случайных помех (этим они и раздражают слух). Величина ошибки выше заданного порога будет указывать на на искажения.
Пороговое значение является плавающим и вычисляется в функции declick_file
Пользователь решил продолжить мысль 09 Февраля 2014, 07:47:36:
correction(int * buf, int I, int l)
Входные параметры: buf - адрес массива аудио сэмплов в памяти видеокарты, I - номер первого сэмпла из цепочки подлежащей коррекции, l -длинна этой цепочки
Коррекция производится непосредственно в массиве buf. Новые значения также вычисляются по методу Бурга, но с больше точностью, чем при детектировании.
Пользователь решил продолжить мысль 09 Февраля 2014, 08:30:55:
declick_file(path * in_p, path * out_p, path * scan_p)
Входные параметры: in_p - путь к входному файлу, out_p - путь к выходному файлу с аудио, scan_p - путь к выходному файлу с временнЫми метками по которым была произведена коррекция аудио
Строки 239-290: программа читает из аудио файла данные и размещает их в buffer_32 (и buffer_32_2, если сигнал стерео) в оперативной памяти ПК.
Затем данные из buffer_32 размещаются в память видеокарты по адресу sound.
По адресу det3_scan в памяти видеокарты размещается массив (изначально заполнен нулями), который будет использован для сохранения значений ошибок в предсказаниях в функции burg_prediction_error. Этот массив (det3_scan) сейчас не используется, но может стать полезен при отладке алгоритма обработки аудио сигнала, если он будет сбоить на каких-то типах аудио (битрейт, тип помех и т.д.).
Строки 334-417 выполняется последовательный поиск дефектов (кликов) в аудио с использованием функции burg_prediction_error и коррекция найденных дефектов с помощью функции correction. Места коррекции отмечаются в массиве det3_scan_analize значениями 10000 (Decimal) для последующего сохранения в файле временнЫх меток в каталоге SCAN.
Обработанный аудио сигнал возвращается из памяти видеокарты в массив buffer_32 (buffer_32_2) после чего сохраняется в выходном файле.
Продолжу позже.
Пользователь решил продолжить мысль 09 Февраля 2014, 12:44:29:
declick_dir(path * curr_path, path * output_path, path * scan_path)
Входные параметры: curr_path - текущий каталог аудио файлов, output_path - каталог для обработанных аудио файлов, scan_path - каталог для файлов с временнЫми метками.
Последовательно проверяет все элементы текущего каталога curr_path. Запускает функцию declick_file для файлов или рекурсивно саму себя для каталогов. Формирует структуру каталогов в директориях OUTPUT и SCAN.
main(int argc, char **argv)
Обрабатывает параметры с которыми запущена программа. Формирует структуру каталогов в директориях OUTPUT и SCAN, если программа запущена для обработки каталога.