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

Как из потока DVB-ASI вытащить синхронизацию H,V,F ( в стиле стандарта ITU656 )?

Здравствуйте!

 

Как из потока DVB-ASI вытащить синхронизацию H,V,F ( в стиле стандарта ITU656 )?

DVB-ASI имеется уже в виде десериализированного 8-битного потока, который уже очищен от K28.5.

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


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

DVB-ASI в виде десериализированного 8-битного потока, который уже очищен от K28.5 - это фактически транспортный поток MPEG-2 TS?

Если так, то как из транспортного потока MPEG-2 TS вытащить синхронизацию видеопотока H,V,F?

Cинхронизация видеопотока H,V,F тоже закодирована в MPEG-2 или она идёт в незакодированном в MPEG-2 виде?

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


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

DVB-ASI в виде десериализированного 8-битного потока, который уже очищен от K28.5 - это фактически транспортный поток MPEG-2 TS?

Да, это транспортный поток. Можно ещё найти синхронизацию по началу пакета (сигнал PS) и добавить сигнал валидности данных (DV) особенно если входной DVB-ASI поток в режиме с длиной транспортного пакета 204 байта. Правда есть ещё один вариант транспортного потока - 204 байта с кодированием Рида-Соломона, но его я встречал только в своём оборудовании.

 

Если так, то как из транспортного потока MPEG-2 TS вытащить синхронизацию видеопотока H,V,F?

Cинхронизация видеопотока H,V,F тоже закодирована в MPEG-2 или она идёт в незакодированном в MPEG-2 виде?

Внутри транспортного потока передаётся таблица PAT с PID-ом 0x0000 в ней PID-ы таблиц PMT. В таблицах PMT передаются PID-ы транспортных пакетов с видео, звуком и т.п. В транспортных пакетах с видео передаются PES пакеты видео. В них элементарные потоки видео (как MPEG-2, так и MPEG-4). Декодировав их Вы получите видеокадр.

Частота 27 МГц с которой Вы будете вычитывать видеокадр из декодера видео (для разрешения SD) восстанавливается из полей PCR, передаваемых в транспортном потоке. Эти поля передаются в транспортных пакетах с PID-ом, указанным в поле PCR_PID в таблице PMT (обычно совпадает с PID-ом видео данной программы).

 

Если Вам нужны только H, V и F, то декодировать видео нет необходимости.

27 МГц Вы восстановите из PCR. Структуру полей видеопотока H, V и F внутри ITU-R BT.656 Вы знаете. Осталось только определиться с фазой кадра. Её можно получить из полей PTS и DTS PES пакетов видео.

 

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


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

Благодарю за разъяснения, буду разбираться.

27 МГц Вы восстановите из PCR.

Забыл в самом начале сказать, что имеется DVB-ASI в виде десериализированного 8-битного потока + его несущая частота 27МГц.

Правильно ли я понимаю, что в этом случае 27 МГц из PCR восстанавливать не надо?

Если Вам нужны только H, V и F, то декодировать видео нет необходимости.

Структуру полей видеопотока H, V и F внутри ITU-R BT.656 Вы знаете. Осталось только определиться с фазой кадра. Её можно получить из полей PTS и DTS PES пакетов видео.

Не понял, в каком смысле я знаю структуру полей видеопотока H, V и F внутри ITU-R BT.656?

Да, я знаю, какой должна быть структура полей видеопотока H, V и F согласно стандарту ITU-R BT.656, но как её всё-таки вытащить из транспортного потока MPEG-2 TS без декодирования видео?

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


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

Забыл в самом начале сказать, что имеется DVB-ASI в виде десериализированного 8-битного потока + его несущая частота 27МГц.

Правильно ли я понимаю, что в этом случае 27 МГц из PCR восстанавливать не надо?

27 МГц DVB-ASI и системная частота 27 МГЦ восстановленная из PCR не равны между собой.

27 МГц восстановленные из PCR совпадают по частоте с частотой 27 МГц видеосигнала ITU-R BT.656 поданного на вход видеокодера данной программы. Что позволяет при после декодирования получить ту же частоту строк и кадров, что на передающей стороне и избежать пропуска / повторения кадров.

Кроме того, в DVB-ASI может передаваться несколько видеопрограмм, и их системные частоты 27 МГц восстановленные из их полей PCR не будут равны.

В пункте 2.4.2.1 System clock frequency стандарта ISO/IEC 13818-1 написано, что системная частота должна быть в допуске ±30ppm:

The value of the system clock frequency is measured in Hz and shall meet the following constraints:

27 000 000 − 810 ≤ system_clock_frequency ≤ 27 000 000 + 810

Представьте что одна программа видео была у Вас с частотой 27 МГц + 810 Гц, а вторая с частотой 27 МГц - 810 Гц, что не противоречит стандарту ISO/IEC 13818-1.

Не понял, в каком смысле я знаю структуру полей видеопотока H, V и F внутри ITU-R BT.656?

Да, я знаю, какой должна быть структура полей видеопотока H, V и F согласно стандарту ITU-R BT.656, но как её всё-таки вытащить из транспортного потока MPEG-2 TS без декодирования видео?

Ну как же? Вы восстановили 27 МГц из поля PCR в точности равными 27 МГц на стороне кодера. Вы знаете что видео у Вас допустим PAL (формат видео передается в дескрипторах таблицы PMT программы) значит мы имеем 625 строк по 864*2 пикселя с частотой 25 кадров в секунду.

В стандарте ITU-R BT.656 написано в какой момент в строке сигнал строчной синхронизации H принимает значение 0, а в какой 1 (SAV / EAV). А также какой строке меняются сигналы кадровой синхронизации V и сигнал синхронизации полей F.

Если начать считать пиксели, строки и поля в произвольный момент времени, то максимум на что мы ошибёмся это ±0,5 кадра по сравнению с передающей стороной. И эта ошибка не будет меняться, т.к. частоты 27 МГц на передаче и приёме у нас равны.

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


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

Соответствуют ли стандарту ITU-R BT.656 видеокадры, полученные после декодирования из MPEG2 транспортного потока MPEG-2 TS?

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


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

Да, если на входе кодера было видео в соответствии с ITU-R BT.656 и если кодер и декодер в соответствии с ISO/IEC 13818-1 и ISO/IEC 13818-2.

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


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

А HD-потоки ( судя по всему в MPEG-4 ) также могут передаваться через DVB-ASI ?

Если да, то на какой тактовой частоте и какой стандарт описывает передачу HD через DVB-ASI?

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


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

А HD-потоки ( судя по всему в MPEG-4 ) также могут передаваться через DVB-ASI ?
Могут.

 

Если да, то на какой тактовой частоте и какой стандарт описывает передачу HD через DVB-ASI?
Всё тот же, ISO/IEC 13818-1.

 

Во всех стандартах MPEG-2 и производных от них стандартах DVB для синхронизации частот приёмной стороны с передающей используются метки времени передаваемые в поле PCR программы. Т.е. все частоты для одной программы (для звука, изображения, синхронных данных) на приёмной стороне получаются при помощи микросхем ФАПЧ (PLL) из восстановленной по меткам PCR частоты 27 МГц.

 

Для HD изображений для этих целей применяются микросхемы PLL наподобие MK2716 и её более навороченного собрата 664-03.

 

Для получения частот для звуковых ЦАП - MK2705.

 

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


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

Во всех стандартах MPEG-2 и производных от них стандартах DVB для синхронизации частот приёмной стороны с передающей используются метки времени передаваемые в поле PCR программы. Т.е. все частоты для одной программы (для звука, изображения, синхронных данных) на приёмной стороне получаются при помощи микросхем ФАПЧ (PLL) из восстановленной по меткам PCR частоты 27 МГц.

Ответы на многие вопросы нашёл здесь: http://www.telesputnik.ru/archive/144/article/112.html

 

А как практически по меткам PCR восстановить частоту 27 МГц?

Может для этого есть готовый модуль на VHDL, чтобы в ПЛИС разместить?

 

P.S.

Может для моей задачи это и не потребуется?

Вот что мне надо: транспортный поток MPEG-2 TS ( 8 бит + 27МГц ) заводится в ПК, там программно декодируется до ITU-R BT.656, некоторая информация в нём заменяется и далее обратно из ITU-R BT.656 кодируется в MPEG-2 TS и выводится из ПК.

Нужно ли в такой схеме восстанавливать 27 МГц по меткам PCR или можно работать с той частотой 27МГц, которая идёт как несущая для входного транспортного потока MPEG-2 TS ( 8 бит + 27МГц )?

 

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


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

А как практически по меткам PCR восстановить частоту 27 МГц?

Может для этого есть готовый модуль на VHDL, чтобы в ПЛИС разместить?

Про восстановление частоты из меток PCR написано в ISO/IEC 13818-1 D.0.3 System Time Clock recovery in the decoder.

Готового VHDL модуля не встречал. Писали сами. Там всё просто: вычитатель, ПИД фильтр, сигма-дельта ЦАП на одном выводе ПЛИС, ФНЧ и ГУН на 27 МГц.

 

Может для моей задачи это и не потребуется?

Вот что мне надо: транспортный поток MPEG-2 TS ( 8 бит + 27МГц ) заводится в ПК, там программно декодируется до ITU-R BT.656, некоторая информация в нём заменяется и далее обратно из ITU-R BT.656 кодируется в MPEG-2 TS и выводится из ПК.

Нужно ли в такой схеме восстанавливать 27 МГц по меткам PCR или можно работать с той частотой 27МГц, которая идёт как несущая для входного транспортного потока MPEG-2 TS ( 8 бит + 27МГц )?

Может восстанавливать 27 МГц и не потребуется, но по другой причине, чем указано у Вас.

27 МГц DVB-ASI, как я уже писал, никак не связана с частотой видео. Это просто скорость передачи слов по асинхронному интерфейсу. А нас интересуют 27 МГц связанные с видео.

 

Что Вам надо - это правильно сформировать метки времени PCR в выходном потоке, чтобы декодер, установленный далее, правильно восстановил частоту 27 МГц.

 

Проще всего это сделать не изменяя скорости выходного транспортного потока по отношению ко входному. Просто копируя поля PCR из входного потока в выходной. (Можно вместо копирования добавлять/вычитать константу к значениям входных полей PCR.)

Также просто копировать значения полей PCR из входного ТП в выходной можно при кратном увеличении скорости выходного ТП.

В общем виде это следует из формулы 2-4 ISO/IEC 13818-1, связывающей скорость ТП с временем прихода полей PCR, системной частотой 27 МГц и расстоянием в байтах между полями PCR.

 

При не кратном входному изменении скорости выходного ТП значения полей PCR придётся пересчитывать (как и при изменении расстояния в байтах между соседними полями PCR).

 

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


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

Проще всего это сделать не изменяя скорости выходного транспортного потока по отношению ко входному. Просто копируя поля PCR из входного потока в выходной. (Можно вместо копирования добавлять/вычитать константу к значениям входных полей PCR.)

Также просто копировать значения полей PCR из входного ТП в выходной можно при кратном увеличении скорости выходного ТП.

В общем виде это следует из формулы 2-4 ISO/IEC 13818-1, связывающей скорость ТП с временем прихода полей PCR, системной частотой 27 МГц и расстоянием в байтах между полями PCR.

 

При не кратном входному изменении скорости выходного ТП значения полей PCR придётся пересчитывать (как и при изменении расстояния в байтах между соседними полями PCR).

Я и не планировал менять скорость выходного транспортного потока по отношению ко входному.

 

Я не планировал трогать все служебные поля входного транспортного потока MPEG-2 TS при его прохождении через ПК.

Так действительно можно поступить для данной задачи и тогда тактовая частота 27МГц от входного транспортного потока MPEG-2 TS фактически и будет тактовой частотой 27МГц для выходного транспортного потока MPEG-2 TS?

Или какие-то служебные поля всё-таки придётся пересчитывать из-за того что при прохождении через ПК будут изменено содержание аудио-видеокадров?

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


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

Так действительно можно поступить для данной задачи и тогда тактовая частота 27МГц от входного транспортного потока MPEG-2 TS фактически и будет тактовой частотой 27МГц для выходного транспортного потока MPEG-2 TS?
Ещё раз повторюсь. Величина тактовой частоты 27 МГц ТП (как Вы её называете) не имеет никакого значения. Она может быть любой (в пределах ±100 ppm). На функционировании системы это не скажется, т.к. DVB-ASI асинхронный (по отношению к скорости ТП) интерфейс. И эта частота - просто частота переносчика. Важно лишь не изменять скорость транспортного потока (количество полезных байт, не K28.5, в секунду).

 

Я не планировал трогать все служебные поля входного транспортного потока MPEG-2 TS при его прохождении через ПК.

Или какие-то служебные поля всё-таки придётся пересчитывать из-за того что при прохождении через ПК будут изменено содержание аудио-видеокадров?

Навскидку, мне кажется, придется менять поля PTS и DTS в PES пакете видео, чтобы они соответствовали передаваемому в текущий момент значению поля PCR. Иначе произойдёт переполнение буферов T-STD. Или, что равнозначно, увеличивать на время декодирования - кодирования значения полей PCR.

 

И, конечно, если Вы измените PID-ы, название программы, формат видео или что-нибудь ещё, то придётся изменить соответствующие поля в соответствующих таблицах системной информации.

 

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


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

Навскидку, мне кажется, придется менять поля PTS и DTS в PES пакете видео, чтобы они соответствовали передаваемому в текущий момент значению поля PCR. Иначе произойдёт переполнение буферов T-STD. Или, что равнозначно, увеличивать на время декодирования - кодирования значения полей PCR.

Получается что менять содержание полей PTS и DTS в PES или PCR придётся не из-за изменения содержания аудио-видеокадров, а из-за транспортной задержки, возникающей при декодировании - кодировании ?

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


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

Да, это так.

 

В стандартах MPEG-2 и DVB механизм синхронизации звука, видео и данных для программы на приёмной стороне основан на использовании полей PTS и DTS.

Алгоритм работы декодера примерно таков. Восстанавливается системная частота 27 МГц по меткам PCR. От неё запускается счётчик системной частоты с начальным значением из метки PCR. Далее декодер разбирает транспортный поток до уровня PES пакетов, находит поле PTS запоминает его и начинает записывать payload PES пакета в буфер. Когда счётчик системной частоты досчитает до запомненного значения PTS, разрешается чтение из буфера с payload-ом PES пакетов. И так со всеми потоками программы.

При этом, если значение PTS слишком велико, по сравнению с проходящими в ТП значениями PCR, то ждать придётся долго и буфер переполнится. А если разница между PTS и PCR недостаточна, то данные начнут читаться слишком рано и декодеру элементарного потока их не хватит для декодирования кадра видео или пакета звука и он будет сбоить.

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


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

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

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

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

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

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

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

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

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

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