Pull to refresh
19
110
Гордиенко Роман@formeo

Программист Golang

Send message

Добрый день, ух)
По правде сказать - специально не сравнивал - разные задачи. 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-энкодером, а потом декодировать - результат должен быть полностью идентичен оригиналу

Сейчас планирую добавить побайтовое сравнение:

original.wav -> мой FLAC -> decoded.wav -> cmp original.wav decoded.wav

И проверку через flac --test и совместимость с другими плеерами (VLC, Audacity и т.д.).

Так что да — в ближайшее время сделаю полноценную валидацию и добавлю в Readme
Спасибо за напоминание

Добрый день, спасибо за комментарий, у меня было 2 цели
1. у меня есть несколько утилит по звуку, и хотелось замкнуть зависимости на свой репозиторий
2. академический интерес - написать свой конвертер, в процессе выяснилось, что для FLAC энкодера на го нет - было интересно свой попробовать написать

Добрый день, нет не пробовал, идея вообще спонтанно родилась, смотрел на хаос музыки и подумал - дай попробую python все разобрать, даже не гуглил особо что то готовое, инетерсно было самому попробовать.
Но спасибо за совет - посмотрю что там у MusicBrainz

Information

Rating
51-st
Location
Россия
Date of birth
Registered
Activity

Specialization

Бэкенд разработчик
Старший
Golang
Python
PostgreSQL
Kubernetes
SQL