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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2016, 16:23   #1
an_private
Пользователь
 
Регистрация: 17.10.2014
Сообщений: 17
По умолчанию Пропуски при захвате звука через WaveIn

Делаю программу для дешифровки так называемого тайм-кода через звуковую карту. Тайм-код представляет собой по сути звуковой сигнал. На каждый кадр (25 к/с) приходится 80 бит, которые кодируются с помощью кода Biphase-M.
Для декодирования подаю тайм-код на вход звуковой карты, захватываю звуковой сигнал с помощью стандартных мультимедийных WaveIn и сообщений MM_WIM_DATA и дальше декодирую. Всё работает. Но периодически в читаемых данных возникает сбой. Выглядит это так, как будто из входного сигнала вырезали кусочек. Произвольной длины - где-то от 10 до 100 мс.
Сперва думал, что теряется один из буферов. Промониторил - нет, сбой может возникнуть посередине буфера. Пробовал две звуковых карты (правда обе внешние) - результат абсолютно идентичен.
Сбой редок (вот, например, на текущей тестовой сессии за 3 часа 4 сбоя) но для моих задач очень критичен.
Никто ни с чем подобным не сталкивался? На всякий случай - Win7 x64.
В приложении картинка - как это выглядит. Верхняя "полоса" - конец одного буфера, нижняя - тот же конец с уже подклеенным следующим буфером. Видно, что дырка (резкий скачок) не приходится на границу буферов.
Изображения
Тип файла: jpg Скриншот-2016-04-15-16.11.jpg (48.1 Кб, 123 просмотров)
an_private вне форума Ответить с цитированием
Старый 15.04.2016, 18:31   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Получается ваша вероятность ошибки на бит: 1,389e-7.
Ошибки это нормальное явление для любой техники. Может ошибки в записи?

Тот же Интел для своих процессоров гарантирует от 10^-12 до 10^-14
А взять микроконтроллер там от 10^-6 до 10^-9

В большинстве случаев находят решение как обойти ошибки, а не их причину.
Цитата:
но для моих задач очень критичен.
Делайте несколько проходов. Или восстанавливайте по соседним временным-кодам.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 16.04.2016, 19:44   #3
an_private
Пользователь
 
Регистрация: 17.10.2014
Сообщений: 17
По умолчанию

> Может ошибки в записи?
Источником является генератор - он ошибок не даёт. Я проверял с другим источником - видеомагнитофоном - ровно та же картина.

> А взять микроконтроллер
У меня микроконтроллерные платы работают по несколько лет без единой ошибки. При тактовой частоте современных микроконтроллеров в сотню мегагерц и вероятности ошибки 10Е-6 они бы сыпали по 100 ошибок в секунду.

> В большинстве случаев находят решение как обойти ошибки, а не их причину.
Это называется костыли и подпорки.

> Делайте несколько проходов.
Это невозможно - сигнал реального времени.

> Или восстанавливайте по соседним временным-кодам.
Это и так делается - на случай проблем в линии связи.
Мне интересно принципиально - какого черта в простейшей системе вдруг теряется кусок звука, причём не несколько семплов, а реально порядка сотни миллисекунд? Причём это не проблема драйверов - вчера специально поставил наворочанный Sound Blaster Audigy Rx - число провалов резко упало (до двух за сутки), но сама суть проблемы осталось.
То ли пытаться на ASIO уходить (вроде там bit accurate возведён в принцип), то ли здесь понять суть проблемы...
an_private вне форума Ответить с цитированием
Старый 16.04.2016, 20:15   #4
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Источником является генератор - он ошибок не даёт. Я проверял с другим источником - видеомагнитофоном - ровно та же картина.
Не надо мне нут сказки заливать. Откройте паспорт или формуляр на устройство там всё описано. Параметры надёжности являются основными характеристиками изделия. Даже у лампочки есть наработка до отказа 10 000 часов.

Цитата:
современных микроконтроллеров в сотню мегагерц и вероятности ошибки 10Е-6 они бы сыпали по 100 ошибок в секунду.
100 мегагерц это уже не микрононтроллер, а микропроцессор. Даже в Роскосмосе годами не проводят испытания.
Вы писали специальные тесты на проверки?

Цитата:
Мне интересно принципиально - какого черта в простейшей системе вдруг теряется кусок звука,
С каких пор Windows +ПК стало простейшей системой?

Простейшая система это TI микроконтроллер где все блоки расписаны. Да и то её простейшей не назовёшь.

Цитата:
Причём это не проблема драйверов - вчера специально поставил наворочанный Sound Blaster Audigy Rx - число провалов резко упало (до двух за сутки),
Ага. А что такое PnP вы не в курсе?

Цитата:
Это называется костыли и подпорки.
Это называется инженерным решением. Была бы система простая можно было бы докопаться до сути. Но система сложная и на поиск причин могут уйти годы.
Математик и инженер принимают участие в психологическом эксперименте.
Их посадили в с одной стороны комнаты и они ждут, не подозревая, что случится потом.
Дверь открывается и в комнату входит обнажённая женщина и встаёт вдали от них. Испытуемых предупреждают, что каждый раз, когда они слышат сигнал — они могут пересечь половину расстояния, оставшегося до женщины.
Тут же они слышат сигнал, инженер одним прыжком преодолевает половину расстояния, а математик, со скучающим видом остаётся сидеть. Когда и после второго сигнала математик не шевельнулся, инженер поинтересовался, почему он не бежит.
— Это от того, что я знаю, что никогда не достигну женщину.
Инженер на тот же вопрос ответил так:
— Потому что я знаю, что уже очень скоро я буду достаточно близок для любого практического применения!
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 16.04.2016 в 20:31.
Pavia вне форума Ответить с цитированием
Старый 18.04.2016, 16:13   #5
an_private
Пользователь
 
Регистрация: 17.10.2014
Сообщений: 17
По умолчанию

Извините, мне не интересно разводить здесь оффтопик. Кратко:
> STM32F4 - 180 МГц. Копеечные STM32F1 - 72МГц.
> MTBF не имеет никакого отношения к вероятности ошибки
На остальное ответы не столь краткие, поэтому продолжать не буду.
Может кто-нибудь всё-таки скажет что-то по существу вопроса.
an_private вне форума Ответить с цитированием
Старый 18.04.2016, 19:45   #6
kutani
Форумчанин
 
Регистрация: 23.01.2016
Сообщений: 608
По умолчанию

...в стороннем ПО пропуски тоже есть? Audacity на примерку?
Что с приоритетом вашего процесса?

Цитата:
ASIO
если проблема в стороннем ПО будет себя тоже проявлять.

Но честно говоря, использование аудиокарты для сбора данных с требованиями как к промышленной нецелесообразно. Возможно стоит подойти к задаче с другой стороны, перейти на другие интерфейсы.
kutani вне форума Ответить с цитированием
Старый 19.04.2016, 09:40   #7
an_private
Пользователь
 
Регистрация: 17.10.2014
Сообщений: 17
По умолчанию

Цитата:
Сообщение от kutani Посмотреть сообщение
...в стороннем ПО пропуски тоже есть? Audacity на примерку?
Не могу себе представить - как проверить. Это надо часов 10-12 непрерывно писать и потом чем-то анализировать записанное. Отдельная, очень немаленькая задача.
Цитата:
Что с приоритетом вашего процесса?
Сама читалка - отдельный thread, крутящийся независимо от основного процесса. Менял его приоритет от tpNormal до tpTimeCritical - абсолютно безрезультатно. Да и это логично, если подрыв присутствует в середине получаемого буфера, то значит дело не в пропуске буферов.

Цитата:
Но честно говоря, использование аудиокарты для сбора данных с требованиями как к промышленной нецелесообразно. Возможно стоит подойти к задаче с другой стороны, перейти на другие интерфейсы.
Да у меня есть Давным-давно уже сделана система с внешним ридером на микроконтроллере. Задача была упростить разворот программы на произвольном компе (звуковая карта есть сейчас везде).
В принципе, для моих задач этот пропуск действительно некритичен - у меня в любом случае контролируется корректность тайм-кода и в случае подрывов он регенерируется. Но просто сама по себе проблема забавная - думал, может кто встречался и как-то решил.
an_private вне форума Ответить с цитированием
Старый 19.04.2016, 11:42   #8
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Попробуйте на win200. Там такого глюка недолжно быть.И directx выше 6 версии неставить.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 19.04.2016 в 11:49.
Pavia вне форума Ответить с цитированием
Старый 19.04.2016, 14:18   #9
kutani
Форумчанин
 
Регистрация: 23.01.2016
Сообщений: 608
По умолчанию

Цитата:
Не могу себе представить - как проверить. Это надо часов 10-12 непрерывно писать и потом чем-то анализировать записанное. Отдельная, очень немаленькая задача.
тогда согласитесь, проблема вполне может быть и в вашем ПО, ведь кода его не видно, мало ли чего написано и какие глюки заложены. Анализировать, это уже второй вопрос. Там и спектроанализатор есть, можно по всплескам посмотреть.

Цитата:
Сама читалка - отдельный thread, крутящийся независимо от основного процесса. Менял его приоритет от tpNormal до tpTimeCritical - абсолютно безрезультатно. Да и это логично, если подрыв присутствует в середине получаемого буфера, то значит дело не в пропуске буферов.
не только ваше ПО может менять приоритет процесса. Антивирусы например много чем страдают. Были случаи блокировок USB программаторов.

Цитата:
упростить разворот программы на произвольном компе
моя пока не видит задачу в комплексе, без этого решение частностей видится нецелесообразной.

X, Y и Z.
kutani вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Sc_DragMove мерцание при первом захвате HellMercenariess Общие вопросы Delphi 4 26.01.2017 07:22
Отчисление за пропуски в ВУЗе, могут ли? Алексей_2012 Свободное общение 19 31.10.2014 22:17
Запись звука через микрофон если есть шум.... casio23 Мультимедиа в Delphi 1 14.05.2012 07:58
ubuntu 10.10 нет звука через alsa CodeNOT Операционные системы общие вопросы 3 20.12.2011 15:53
Программа для воспроизведения тонового звука через промежуток времени Vl-sn Помощь студентам 9 12.03.2010 20:27