Збираємо LAME прямо з вихідних джерел
Можливо, ви вже чули про те, як деякі ентузіасти збирають кодеки з вихідних кодів самі і таким чином мають доступ до найновіших кодеків.
Це нескладне завдання для мене колись здавалося непідйомним. Деколи дуже хотілося протестувати останні розробки кодека, незважаючи на те, що вони були нестабільні. По собі знаю, що нестабільність для ентузіастів – все одно, що олія у вогонь лише розпалює інтерес. Опанувавши вміння складання з вихідних кодів, я хотів би поділитися ним з вами. Йтиметься про складання кодеків під Windows 7.
Репозиторій, CVS та навіщо все це треба
Навіщо взагалі ця система контролю? Найпростіше можна сказати, що це сховище вихідних текстів, яке дозволяє легко розробляти проект кільком людям.
Встановлюємо TortoiseCVS, таким чином у вас з'являється можливість скачати собі останні вихідні коди кодека.
Вихідні тексти у EXE
Отже, припустимо, що у нас на руках є текст програми. А далі що? Просто так текст сам собою нічого не робить. Нам потрібно створити з нього виконуваний файл або, в народі, “екзешник”. Для різних мов програмування шлях цього перетворення різний. Але більшість кодеків пишуться мовою Сі через те, що кодекам дуже важлива продуктивність. Як відомо, програми, написані на Сі, в більшості випадків виявляються швидше за своїх побратимів, написаних іншими мовами. Зупинимося на тому, як перетворити текст програми, написаний мовою Сі у виконуваний файл (цей процес також називається компіляцією та складанням).
Але тут набуває чинності наступний аспект: переважно багато кодеків з ідейних міркувань мають відкритий вихідний код (як і LAME). Тому і розробляються вони не на Windows, а на Linux, знову ж такиз міркувань, що Linux безкоштовний і має відкриті вихідні коди. Так що спочатку кодеки написані для Linux і, як правило, насилу компілюються Windows-засобами від Microsoft (Visual C++). Виникає завдання: скомпілювати програму, спочатку написану в Linux для роботи у Windows. І тут є рішення: MinGW. Цей набір утиліт, який, якщо не вдаватися до нетрів, спеціально створений для таких завдань.
Нам потрібно завантажити MinGW та встановити його. Розташовується він також на SourceForge.net.

Отже, встановлення MinGW.

Погоджуємося з умовами GPL.

Я встановлюватиму на диск F:\ Ви ж можете вибрати будь-яке більш відповідне для вас місце.

Компілятор для мови Сі вже вибрано за замовчуванням. Нам ще знадобиться MSYS (набір утиліт Linux, скомпільованих під Windows).

Установка займає тривалий час, так як при установці MinGW викачує велику кількість необхідних бібліотек, тим самим роблячи за нас дуже велику та рутинну частину роботи.

Наприкінці на вашу думку можна проконтролювати логи установки MinGW. Я повірю йому на слово.

TortoiseCVS
Як тільки ви закінчите з MinGW, можна буде розпочати завантаження останньої версії вихідних даних LAME на ваш комп'ютер. Що для цього потрібно? Як я вже говорив вище, TortoiseCVS - це зручний клієнт для роботи з CVS. Я завантажуватиму вихідники в корінь диска F:\ в папку lame . Папку lame створювати не потрібно, про це дбає клієнт. Отже, через провідник заходимо на диск F: і натискаємо правою кнопкою в порожньому місці.

Виставляємо наступні налаштування та виконуємо дії послідовно

Після завершення, якщо ви все зробилиправильно, ви побачите приблизно таке

Отже, тепер у F:\lame лежить остання версія вихідників.
Конфігурація, компіляція, збирання
Усі ці три дії доведеться робити з консолі. Точніше сказати 2 події, т.к. компіляція та складання укладено в одне.
MSYS – це, власне кажучи, емулятор консолі Linux. Отже, запускаємо його. У моєму випадку файл для запуску розміщувався тут:
Отже, перед вами має з'явитися вікно такого вигляду:

Таким чином, ми потрапимо в папку з вихідними джерелами LAME, звідки і будемо робити всі дії. У цьому випадку F – ім'я диска, на який ви завантажили вихідні дані. Командою ls можна переконатись, що ми там, де потрібно, вона виведе список файлів у поточній директорії.

Конфігурація
Цей процес підготовляє проект до поточного оточення (у разі MinGW). Він також перевіряє, чи всі необхідні бібліотеки та утиліти у вас встановлені та чи можлива компіляція взагалі. Конфігурація запускається зазвичай командою:
Не ігноруйте./ Без них у вас нічого не вийде. Якщо ви все зробили правильно і зірки були прихильними до вас, то через деякий час ви побачите, що конфігурація завершилася успішно.

Компіляція та складання
Отже, настав час скомпілювати проект, за це відповідає команда make. Вводимо її, натискаємо Enter і бачимо…

Що ж, моє шоу зазнало фіаско. Я зіткнувся з помилкою компіляції. Мій досвід не дозволив мені розібратися, що було не так у вихідних кодах, та й не в цьому полягає мета статті. Просто це яскравий приклад того, як часом нестабільні версії можуть навідріз відмовлятися збиратися. Так, таке відбувається і сьогодні нам не пощастило, але з цим треба змиритися, можливо,один із розробників проекту найближчим часом виправить цей недолік.
Але щоб не залишати читача ні з чим, спробую продемонструвати метод до кінця, для цього я візьму вихідний код LAME стабільної версії і зроблю кілька кроків тому.
Повторюємо зі стабільною версією
Завантажити стабільну версію можна з головної сторінки проекту LAME:

Видаляємо папку F:\lame і розпаковуємо туди скачаний архів.
Переходимо до MSYS до папки F:\lame командою
І знову запускаємо конфігурування командою

Запускаємо копіляцю та складання командою
На цей раз все відбувається досить довго і це тому, що компілюється кодек. Якщо все пройде успішно, ви побачите наступне:

Тепер, перейшовши до папки
Ми можемо побачити, що наш файл, що виконується, лежить там, просто запустивши його:

Спробуємо на тестовому файлі (у моєму випадку a.wav ), як поведеться щойно скомпільований кодек LAME, запустивши команду

У результаті було створено файл a.mp3 128 kbit/s, який чудово відтворився у моєму foobar2000.
Висновок
На цьому я вважаю, що можна закінчувати цю статтю. Тема збірки LAME з вихідних джерел розкрита, незважаючи на те, що нам не вдалося зібрати його з найсвіжіших вихідних джерел. Хоча нам і не став у нагоді TortoiseCVS, проте, досвід його використання в нашій справі дуже корисний.
Також хочеться відзначити, що всі ці дії можна узагальнити та застосовувати їх не тільки для кодека LAME. Наступного разу я спробую розповісти вам про завдання дещо складніше: складання кодека CELT.