Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2013, 13:46   #11
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Да, это мы уже выяснили. Застрял на реализации алгоритма декодирования.

В начале идет пилот-тон, или "лидер" из 256 байт 0xFFh. То есть примерно 256*8 = 2048 "широких" импульсов - единиц. По нему вычисляю некую скорость, а если точнее, то интервал в байтах между сменой полярности с положительной на отрицательную. Дальше чего-то не выходит ничего...
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 27.01.2013, 13:48   #12
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Для начал нужно выяснить, как именно кодируется бит.
s-andriano вне форума Ответить с цитированием
Старый 27.01.2013, 14:19   #13
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Для начал нужно выяснить, как именно кодируется бит.
Единичный бит кодируется периодом в 1 мс, нулевой бит кодируется периодом в 0.5 мс. Частота у единицы - примерно 1000 гц, у нуля - 2000 гц соответственно.

На этой картинке выделенная область - это бит "0". За ним большой размах - это "1"

Чтобы понять рекурсию, сперва нужно понять рекурсию.

Последний раз редактировалось Tronix; 27.01.2013 в 14:22.
Tronix вне форума Ответить с цитированием
Старый 27.01.2013, 18:29   #14
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Ну, тогда осталось измерять длительности импульсов и преобразовывать их в биты.
s-andriano вне форума Ответить с цитированием
Старый 27.01.2013, 20:08   #15
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Ну, тогда осталось измерять длительности импульсов и преобразовывать их в биты.
Это понятно, не понятно как именно это сделать )
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 28.01.2013, 07:48   #16
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

А что именно непонятно?
Как измерить или как преобразовать?
s-andriano вне форума Ответить с цитированием
Старый 05.02.2013, 19:23   #17
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Не понятно, как "измерять". Первоначально, пробовал сделать так:

по пилот-тону (2048 импульсов с большим размахом) определить скорость. При этом следующий импульс мерил сменой полярности, то есть прохождением мимо 0x80h (относительного нуля). Далее уже зная скорость, смотрим сменилась ли полярность за указанную скорость. Если да - то это 0 иначе - 1.

В принципе, такой подход заработал, но только лишь для двух конкретных аудио записей. И то при условии смещения относительного нуля до границы 0x60h.

Почему такое происходит? Потому, как я начинаю мерять импульс не с его начала, а условно говоря - с его середины. Ща попробую изобразить:
Вот это нормальный целый импульс:


А вот так примерно получается меряет его моя прога:


Это как ни странно работает, но только на двух определенных записях. Тот же упомянутый в первой теме MP3 файл таким способом не декодируется, точнее пытается - но с многочиисленными ошибками.

Очевидно, что нужно честно полностью огибать полный импульс, но я не могу ваще. Такая хрень получается.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 05.02.2013, 20:33   #18
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А расстояние между двумя соседними минимумами или максимумами? Или между сменой знака, пропуская одну?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 05.02.2013 в 20:36.
Аватар вне форума Ответить с цитированием
Старый 06.02.2013, 08:02   #19
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Tronix Посмотреть сообщение
Тот же упомянутый в первой теме MP3 файл таким способом не декодируется, точнее пытается - но с многочиисленными ошибками.
Я надеюсь, перед анализом Вы не забываете преобразовать mp3 в wav?
s-andriano вне форума Ответить с цитированием
Старый 06.02.2013, 08:30   #20
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Я надеюсь, перед анализом Вы не забываете преобразовать mp3 в wav?
Конечно нет, не забываю. Я конечно нуб, но не настолько )
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос про запись данных в файл. pinkiller Общие вопросы C/C++ 4 05.01.2012 15:57
Вопрос про MaskEdit и воиспроизведение *.wav Deis C++ Builder 4 20.04.2011 20:07
Вопрос про воиспроизведение *.wav Deis Помощь студентам 3 18.03.2011 17:43
Вопрос про MaskEdit и воиспроизведение *.wav в C++ Builder 6 Deis Помощь студентам 0 11.03.2011 22:33
Вопрос про обработку исключений Ok-ei Общие вопросы C/C++ 17 19.08.2009 22:49