Перейти к содержанию
    

Защитить пакеты H264 при наземной подвижной радиосвязи.

Этот механизм реализован в нескольких изделиях, продающихся более 10 лет (без подробностей - NDA). Именно для речи. Все прекрасно работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

repstosw

CMT2300A

_

Это примитивный трансивер, проблемы интерференции на нём не решить, хоть киловатт закачивайте, селективные замирания не дадут демодулировать без ошибок с любыми кодами.

Решаться оно должно как должно, на уровне модулятора-демодулятора, готовых таких чипов нет, а значит только руками теория+матлаб+FPGA.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тоже не пойму, зачем CRC поверх RS. Штатные декодеры RS и так отлично детектируют ошибки. Для сжатого видео надо очень маленькие BLER иметь, так что лучше на какую-то составную схему смотреть - внешний кодек дочищает за внутренним. До появления турбокодов сверточный + RS были наилучшим вариантом. Жесткий вход внутреннего декодера конечно ухудшит ситуацию, но работать все равно будет неплохо. По крайней мере, гораздо лучше, чем просто RS с сопоставимой скоростью кодирования.

 

 

Изменено пользователем andyp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, andyp сказал:

CRC поверх RS

Зачем поверх? CRC32 - хеш-функция от данных. Данные и хеш-функция защищаются помехоустойчивым кодом: можно RS (просто), можно свёрточный код с большим K (сложно). Хоть ошибки, как указал уважаемый petrov, все равно будут, их уровень будет меньше, но вот только достаточно этого? Вот насчет каскадного кода не уверен, что для "жестких" решений даст существенный выигрыш. Уж лучше простое повторение (исходя из скорости).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CRC - обычный циклический код, предназначенный для детекции ошибок. Код Рида-Соломона сам по себе может детектировать еще очень много ошибочных паттернов, даже если его корректирующая способность используется на полную. В этих случаях декодер просто говорит, что не справился. Оценка способности кода Рида-Соломона одновременно с коррекцией детектировать ошибки (верхняя граница вероятности ошибочного детектирования) дана например здесь:

84F.PDF (nasa.gov)

Вот и встает вопрос, зачем еще и CRC, если код Рида-Соломона сам по себе вполне себе с детекцией справляется.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 hours ago, repstosw said:

Дано:   поток H264 - cжатые фреймы видео.   Они посылаются цифровым трансивером относительно короткими пакетами - к примеру - по 64+ байта (полезная нагрузка).

Скорость потока 96 - 128 кбит/с.  Модуляция - возможна 2FSK, 4FSK, MSK, GMSK, GFSK.

Вопрос: какие методы защиты пакета можно использовать?   Коды Рида-Соломона, Коды Хемминга, Файра, Витерби,  Турбо-коды? 

 

Рида-Соломона (с Interleaving-ом конечно)

P.S sorry, все ответы не читал
P.P.S обратите внимание на комментарий ув. petrov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 часов назад, andyp сказал:

Вот и встает вопрос, зачем еще и CRC, если код Рида-Соломона сам по себе вполне себе с детекцией справляется.

Все верно. Детектировать RS может при достаточной длине проверочных символов. И исправлять. А как обстоит дело с одновременным детектированием и исправлением? Сколько сможет детектировать дополнительные 4, а не 22 проверочных байта RS? Причем с учетом исправления. Речь о том, чтобы разделить задачи списочного декодирования и детектирования ошибки. Использование CRC более обобщенный метод. Я имел в виду возможность использования разных реализаций кодирования. Естественно, надо считать, где результат получиться лучше.

P.S. Не подскажите, а есть описание быстрого алгоритма проверки по RS? Не встречал просто, может плохо искал. Более быстрый, чем простое вычисление остатка от всей последовательности (а если вариантов много, то и вычисление остатка также будет много). Мне CRC нравится за  простой XOR. Есть что-то такое для RS?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 hours ago, petrov said:

CMT2300A

Это примитивный трансивер, проблемы интерференции на нём не решить, хоть киловатт закачивайте, селективные замирания не дадут демодулировать без ошибок с любыми кодами.

Решаться оно должно как должно, на уровне модулятора-демодулятора, готовых таких чипов нет, а значит только руками теория+матлаб+FPGA.

А если взять LoRa трансивер ?   Обнаружил, что есть модули LoRa на 62,5 кбит/c.  Параметры модема: SF=5, BW=500, CR=1 как раз дают скорость 62500 бит/c.

Взял видео 160x128 12.5 FPS. Пожал его H264 на CBR 56 кбит/c.  Результат приложил:

Смотрится довольно неплохо.

 

LoRa как раз позиционируется как решение против интерференционных гадостей...

Так как 62,5 кбит/c - это грязная скорость (с учётом преамбулы и CRC), но видео на 56 кбит/c + вокодер MELP 2400 + Рид-Соломон должны влезть .

FEC у LoRa свой аппаратный.

 

P.S. Кстати,  есть ли LoRa модули на скорость больше чем 62,5kbps ?

Или совсем чокнутая  идея - поставить тактирующий кварц в 2 раза больше по частоте , и установить частоту приема-передачи 432/2 = 216 МГц.  По факту будет 432 МГц, а всё что внутри будет быстрее в 2 раза, в том числе и битрейт.  Кто-нибудь так делал? :wink:

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, ASN said:

P.S. Не подскажите, а есть описание быстрого алгоритма проверки по RS? Не встречал просто, может плохо искал. Более быстрый, чем простое вычисление остатка от всей последовательности (а если вариантов много, то и вычисление остатка также будет много). Мне CRC нравится за  простой XOR. Есть что-то такое для RS?

эмм, может не так понял, но синдром посчитать и сразу сказать были ошибки или нет) или вы имеете в виду, заранее узнать сможет или нет декодировать? ну это тоже можно по порядку синдрома оценить) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, ASN said:

Все верно. Детектировать RS может при достаточной длине проверочных символов. И исправлять. А как обстоит дело с одновременным детектированием и исправлением? Сколько сможет детектировать дополнительные 4, а не 22 проверочных байта RS? 

С одновременным исправлением и детектированием дела обстоят так:

Если добавили к информационному блоку d проверочных символов, а исправляете t ошибок,  то детектироваться будут все ошибочные паттерны длиной d-t. И ещё много паттернов большей длины. Если исправляете d/2 паттернов (полная исправляющая способность кода) то уже начиная с длины d/2+1 будут детектироваться не все паттерны. Ну так и crc32 на блоках, скажем, в 400 байт будет детектировать не все ошибочные паттерны длины 4бита, что для многих является сюрпризом.

 

Что касается сложности, то сложность расчета синдромов и так линейная от размера блока - нужно посчитать значение полинома для d  элементов поля, что делается по схеме Горнера.

Сложение в конечном поле - xor, умножение -  по таблицам логарифмов и степеней.

 

 

Изменено пользователем andyp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за развернутый ответ по обнаруживающей способности. Я имел в виду практическую статическую вероятность неправильного детектирования. То есть, если на 100 млн. пакетов проскочит один искаженный, то это допустимая вероятность.

Про "заранее узнать". Есть набор возможных принятых последовательностей, которые отличаются определенными байтами, расположенными в произвольном порядке группами. Из эти групп можно сформировать отрезки. Так вот, для CRC можно подсчитать значение частичной CRC для этих отрезков и XOR'ом найти какая комбинация дает верную контрольную сумму.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, ASN said:

Спасибо за развернутый ответ по обнаруживающей способности. Я имел в виду практическую статическую вероятность неправильного детектирования. То есть, если на 100 млн. пакетов проскочит один искаженный, то это допустимая вероятность.

В статье, что я привел, есть формула (7с). Подставляете параметры кода и получаете верхнюю границу недетектируемой ошибки при условии, что уже исправляете t ошибок

 

1 hour ago, ASN said:

Про "заранее узнать". Есть набор возможных принятых последовательностей, которые отличаются определенными байтами, расположенными в произвольном порядке группами. Из эти групп можно сформировать отрезки. Так вот, для CRC можно подсчитать значение частичной CRC для этих отрезков и XOR'ом найти какая комбинация дает верную контрольную сумму.

Ну это собственно следует из того, что CRC - линейный код и будет работать в каких-то ограниченных сценариях. Только вот про коммутативность бы не забыть: CRC(a+b) = CRC(a) + CRC(b) = CRC(b + a)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

repstosw

FEC у LoRa свой аппаратный.

_

Для вашей задачи FEC будет ухудшать. FEC приводит к размножению ошибок, задержке.

Вот пример модема без FEC.

https://www.youtube.com/watch?v=YtDcg0HWxA0

В первую очередь нужно думать про устойчивую модуляцию, устойчивые к размножению ошибок кодеки, многоканальные приём и передачу.

_

LoRa как раз позиционируется как решение против интерференционных гадостей...

_

Насколько она действительно устойчива к селективным замираниям точно не известно.

_

Кстати,  есть ли LoRa модули на скорость больше чем 62,5kbps ?

_

Подобное можно сделать и вручную, модуляцию с низкой плотностью проще сделать устойчивой к селективным замираниям.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, petrov сказал:

repstosw

FEC у LoRa свой аппаратный.

_

Для вашей задачи FEC будет ухудшать. FEC приводит к размножению ошибок, задержке.

Вот пример модема без FEC.

https://www.youtube.com/watch?v=YtDcg0HWxA0

В первую очередь нужно думать про устойчивую модуляцию, устойчивые к размножению ошибок кодеки, многоканальные приём и передачу.

_

LoRa как раз позиционируется как решение против интерференционных гадостей...

_

Насколько она действительно устойчива к селективным замираниям точно не известно.

_

Кстати,  есть ли LoRa модули на скорость больше чем 62,5kbps ?

_

Подобное можно сделать и вручную, модуляцию с низкой плотностью проще сделать устойчивой к селективным замираниям.

Я так понял, что модем - черный ящик с побитовым вводом-выводом. Т е о модуляции и пр хрени уже подумали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 hours ago, petrov said:

Для вашей задачи FEC будет ухудшать. FEC приводит к размножению ошибок, задержке.

Серьёзно? )))  А я думал FEC делается с целью как раз устранить эти самые ошибки.

12 hours ago, petrov said:

Насколько она действительно устойчива к селективным замираниям точно не известно.

Зато мне точно известно, что с MELP2400, Codec2 -  LoRa - отличное решение.  Если сравнить её с обычной FSK, то FSK проигрывает в числе выпадания  и искажения пакетов.  Причём чем больше избыточности FEC (ниже коде-рейт), тем более устойчевее была связь. Плюс ещё установленные большие спред-факторы.

6 hours ago, thermit said:

Я так понял, что модем - черный ящик с побитовым вводом-выводом. Т е о модуляции и пр хрени уже подумали.

Выбирать не приходится. Исхожу из того, что существует на али экспресс.

Кубатурить приёмник на дискретке или ПЛИС пока не могу себе позволить, слишком много времени уйдёт.  А нужно решение "здесь и сейчас" и на готовых радио-модулях. )))

Основные требования к модулям:  диапазон длины волны 70 см  и открытая физика (возможность реализовать свои структуры пакетов и протоколы), дальность не ниже 1 км.

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...