Добрый день, ух) По правде сказать - специально не сравнивал - разные задачи. FFmpeg быстрее, но тянет зависимости. Тут цель была - один бинарник, скачал и работает. Бенчмарки показывают что хватает с запасом.
Добрый день, спасибо за коммент, Табличный метод уже используется - lookup table 256 байт для CRC-8 и CRC-16, один XOR + lookup на байт: crc8 = crc8Table[crc8 ^ byteVal] crc16 = (crc16 << 8) ^ crc16Table[(crc16>>8) ^ byteVal]
По профайлеру основное время в Rice coding, а не в CRC. Но если найдутся кейсы где CRC станет узким местом - попробую slicing-by-4.
Добрый день, спасибо за комментарий Вы правы FLAC это lossless, поэтому правильная реализация должна восстанавливать аудиоданные бит-в-бит. Получается если взять исходный WAV-файл, закодировать его в FLAC go-энкодером, а потом декодировать - результат должен быть полностью идентичен оригиналу
Добрый день, спасибо за комментарий, у меня было 2 цели 1. у меня есть несколько утилит по звуку, и хотелось замкнуть зависимости на свой репозиторий 2. академический интерес - написать свой конвертер, в процессе выяснилось, что для FLAC энкодера на го нет - было интересно свой попробовать написать
Добрый день, нет не пробовал, идея вообще спонтанно родилась, смотрел на хаос музыки и подумал - дай попробую python все разобрать, даже не гуглил особо что то готовое, инетерсно было самому попробовать. Но спасибо за совет - посмотрю что там у MusicBrainz
Добрый день, ух)
По правде сказать - специально не сравнивал - разные задачи. FFmpeg быстрее, но тянет зависимости. Тут цель была - один бинарник, скачал и работает. Бенчмарки показывают что хватает с запасом.
Добрый день, спасибо за коммент,
Табличный метод уже используется - lookup table 256 байт для CRC-8 и CRC-16, один XOR + lookup на байт:
crc8 = crc8Table[crc8 ^ byteVal]
crc16 = (crc16 << 8) ^ crc16Table[(crc16>>8) ^ byteVal]
По профайлеру основное время в Rice coding, а не в CRC. Но если найдутся кейсы где CRC станет узким местом - попробую slicing-by-4.
Добрый день, спасибо за комментарий
Вы правы FLAC это lossless, поэтому правильная реализация должна восстанавливать аудиоданные бит-в-бит. Получается если взять исходный WAV-файл, закодировать его в FLAC go-энкодером, а потом декодировать - результат должен быть полностью идентичен оригиналу
Сейчас планирую добавить побайтовое сравнение:
И проверку через
flac --testи совместимость с другими плеерами (VLC, Audacity и т.д.).Так что да — в ближайшее время сделаю полноценную валидацию и добавлю в Readme
Спасибо за напоминание
Добрый день, спасибо за комментарий, у меня было 2 цели
1. у меня есть несколько утилит по звуку, и хотелось замкнуть зависимости на свой репозиторий
2. академический интерес - написать свой конвертер, в процессе выяснилось, что для FLAC энкодера на го нет - было интересно свой попробовать написать
Добрый день, нет не пробовал, идея вообще спонтанно родилась, смотрел на хаос музыки и подумал - дай попробую python все разобрать, даже не гуглил особо что то готовое, инетерсно было самому попробовать.
Но спасибо за совет - посмотрю что там у MusicBrainz