- •Омский государственный технический университет Пояснительная записка
- •Техническое задание
- •Студенту гр. В – 531 ОмГту Нагаеву Андрею Александровичу
- •Оглавление
- •Формат mp3-файла.
- •2.1 Выбор инструментальной среды разработки по
- •3.1 Разработка алгоритма основной программы
- •3.3 Модули id3v1, id3v2 Данные модули используются для работы с тэгами mp3-файла.
- •4.1. Подпрограмма mpeg frame header data
- •4.2. Подпрограмма GetFrameLength
- •4.3. Подпрограмма FindFrame
- •4.4. Подпрограмма ReadTag
- •4.5. Подпрограмма GetTagVersion
Формат mp3-файла.
Mp3-файл поделен на небольшие фрагменты, сжатые согласно психоакустической модели. Эти фрагменты затем собраны в 'кадры', каждый из которых имеет заголовок. Рассмотрим внутреннюю структуру заголовка.
Заголовок имеет длину 32 бита (4 байта) и схематически изображен на рисунке . Каждая клетка представляет собой 1 бит.
Заголовок начинается с некого элемента, называемого sync. Он используется для синхронизации а также для отличения файлов MP3 от других файлов. Согласно стандарту MPEG sync состоит из 12 установленных подряд битов. Некоторые модификации стандарта, созданные позднее используют 11 установленных бит и один сброшенный.
Сразу после синка находится бит ID, который позволяет отличить MPEG-1 от MPEG-2. 0=MPEG-2 и 1=MPEG-1
Следующие два бита определяют параметр layer, то есть уровень внутри стандарта MPEG.
Поле bitrate совместно с определенными ранее полями ID и layer позволяет определить поток аудиоданных в кбит/с. Смотрите таблицу:
Частота дискретизации определяется из поля frequency. Его значение зависит от того какая из версий стандарта MPEG используется и полностью может быть определено из следующей таблицы.
Padding bit – используется для уточнения битрейта
Private bit – используется для нужд приложения
Channel Mode – определяет режим воспроизведения
00 - Stereo
01 - Joint stereo (Stereo)
10 - Dual channel (2 mono channels)
11 - Single channel (Mono)
2.1 Выбор инструментальной среды разработки по
В качестве среды программирования используется программная оболочка фирмы Borland и язык программирования Delphi 6.
Разработанное программное обеспечение состоит из основной программы и 3 модулей, содержащих различные функции и подпрограммы. Описание и структурные схемы алгоритмов некоторых подпрограмм приведены далее. Приводить ССА всех подпрограмм не является целесообразным в силу некоторой однотипности последних.
3.1 Разработка алгоритма основной программы
Основная программа состоит из 2 процедур - чтения и записи. Входные данные передаются подпрограммам через действия пользователя, который выбирает файл-контейнер и файл для записи. На основании размера файла-контейнера и файла для записи программа рассчитывает шаг записи. Этот шаг записывается в определенное место mp3-файла, а затем с этим шагом вmp3 записывается побитно файл записи, изменяются 2 младших бита в байте файлаmp3.
При извлечении данных программа сначала считывает шаг, а затем с этим шагом спрятанные данные. На основе вышеизложенного разработан алгоритм, структурная схема которого приведена на рис.3.1.
Текст основной программы приведен в приложении.
3.2 Модуль MPEGaudio.
MPEGaudio– модуль содержащий функции и процедуры для работы сmp3-файлом.
Приведу некоторые из них:
MPEGframeheaderdata– подпрограмма чтения заголовка фреймаmp3-файла
(определения длины файла, битрейта, типа сжатия и т.п. )
GetFrameLength – подпрограмма определения длины фрейма
FindFrame – подпрограмма поиска фрейма
3.3 Модули id3v1, id3v2 Данные модули используются для работы с тэгами mp3-файла.
Основные функции:
ReadTag – чтение тэга
GetTagVersion – определение версии
GetTagSize – определение размера тэга
В описании остальных подпрограмм нет необходимости, поскольку они имеют незначительный объем и реализуют вспомогательные функции, необходимые для работы вышеназванных подпрограмм.