Управление буферизацией видеоинформации, декодированной из циклических структур
- Авторы: Звездочкин М.Ю.1, Миронов В.В.2
-
Учреждения:
- Филиал акционерного общества «Ракетно-космический центр «Прогресс» – особое конструкторское бюро «Спектр»
- Рязанский государственный радиотехнический университет имени В.Ф. Уткина
- Выпуск: № 2 (2024)
- Страницы: 143-153
- Раздел: СИСТЕМНЫЙ АНАЛИЗ И ИССЛЕДОВАНИЕ ОПЕРАЦИЙ
- URL: https://journal-vniispk.ru/0002-3388/article/view/264496
- DOI: https://doi.org/10.31857/S0002338824020124
- EDN: https://elibrary.ru/VODEYE
- ID: 264496
Цитировать
Полный текст
Аннотация
Поставлена задача соблюдения временных междукадровых интервалов при извлечении видеокадров из входного потока, сгруппированного в циклические квазителеметрические структуры. Рассмотрена организация программного буфера либо совокупности буферов видеокадров как общий подход к решению указанной задачи. Описано несколько способов организации таких буферов и управления их работой в системе обработки и передачи видеоинформации. Проведена экспериментальная проверка описанных способов, предложены рекомендации по применению.
Ключевые слова
Полный текст
Введение. Среди всего многообразия систем видеоконтроля и видеонаблюдения особняком находятся системы, передающие видеоинформацию (ВИ) поверх циклических информационных структур. В роли циклических структур могут выступать, в частности, структуры, используемые в телеметрии. Применение телеметрических структур для ВИ характерно для космической отрасли при совместной передаче телеметрической информации и ВИ [1–3].
Циклы входной ВИ и видеокадры асинхронны. Один цикл может содержать один или несколько видеокадров, при этом видеокадр может быть «разорван» между соседними циклами. И циклы, и кадры имеют свои собственные маркеры (синхрогруппы).
Для подобных систем также характерны следующие особенности:
один информационный поток содержит комбинированный видеопоток от нескольких камер, каждый кадр включает в себя идентификатор видеокамеры;
частота кадров по отдельно взятой камере является переменной;
частота циклов объединенного информационного потока фиксирована;
каждый кадр имеет индивидуальную метку времени.
Переменная частота кадров долгое время являлась достаточно редким решением для потокового видео, публикации на данную тему редки и носят разрозненный характер [4]. Лишь в последнее время переменная частота стала получать популярность с распространением кодека H.265. Из форматов медиафайлов переменная частота кадров поддерживается форматом MKV (Matroska).
Для рассматриваемого класса систем на конкретном временном участке (в космических запусках — участок циклограммы полета) переменная частота кадров находится в окрестности некоторого среднего значения. При переходе к следующему участку это среднее значение существенно меняется.
- Постановка задачи. В системе обработки и передачи (СОП) ВИ, принятая в циклических структурах, должна быть преобразована в общепринятые видеоформаты и отправлена конечным потребителям, а также зарегистрирована в видеофайлы общепринятых форматов. Отправка конечным потребителям может осуществляться, например, по протоколам RTSP/RTP (real-time streaming protocol / real-time transport protocol) либо как поток пакетов протокола UDP (user datagram protocol). Зарегистрированная ВИ в дальнейшем может подвергаться дополнительной обработке [5].
При отправке конечным потребителям междукадровые интервалы каждого потока должны соответствовать исходным интервалам, сформированным видеокамерой. В противном случае потребитель будет наблюдать артефакты в виде неравномерного по времени, «дерганого» видеоряда.
Для формирования достоверных междукадровых интервалов видеокадры, декодированные из комбинированного сигнала, должны помещаться в программный буфер (буферы) и извлекаться из него непосредственно перед отправкой ВИ потребителям. Буферизация видеопотока широко применяется в передаче потоковой ВИ [6, 7]. При этом могут варьироваться такие параметры, как количество буферов (один буфер на все кадры либо отдельные буферы по каждой камере), размер каждого буфера (в видеокадрах), время жизни (lifetime) буфера (буфер может быть как циклическим, так и формироваться на заранее заданное время), метод определения времени извлечения кадров из буфера.
В статье будет рассмотрено несколько методов управления программным буфером видеокадров, их достоинства, недостатки, проведена экспериментальная проверка перечисленных методов и сформулированы рекомендации по их применению.
- Циклический кадровый буфер. Простейшим способом буферизации является организация единого буфера выделенных кадров. Буфер представляет собой N кадровых массивов Fr1, ..., FrN, в каждом из которых размещается один кадр ВИ в сжатом либо несжатом виде.
Буфер заполняется по мере получения циклов ВИ в СОП. Кадры изымаются из буфера и отправляются на обработку по таймеру, с задержкой, вычисленной на основании временных меток текущего и предыдущего кадра:
. (2.1)
Буфер является кольцевым: по достижении конца буфера следующие кадры записываются в массивы с наименьшими номерами. Таким образом, следующий за FrN кадр будет записан в массив Fr1 (рис. 1). Здесь FrLast — последний по времени записанный кадр, FrCur — последний считанный, FrPrev — предыдущий считанный.
Рис. 1. Простейший циклический буфер
Достоинство простейшего буфера — универсальность: его можно применять не только для циклических структур, но и для любого видеопотока с переменной частотой кадров. Недостатком этого способа является его чрезвычайная уязвимость к искажениям временных меток. Искажение одной временной метки может привести к длительному перерыву или вообще прекращению передачи.
Второй, не столь фатальный, но во многих случаях также неприемлемый недостаток — накопление погрешности расчета временных задержек. Поскольку интервал между кадрами вычисляется с конечной точностью, результатом накопления может быть либо запаздывание обработки вплоть до переполнения буфера и потери кадров, либо опустошение буфера, равнозначное отключению буферизации как таковой.
Разновидностью этого способа является организация раздельных буферов по каждой видеокамере. По мере вычленения кадров из цикла определяется, к какой камере относится кадр, после чего кадр помещается в соответствующий буфер (рис. 2).
Рис. 2. Раздельные циклические буферы
Задержка в этом случае вычисляется для каждого буфера отдельно, относительно предыдущего кадра по этой же камере.
Организация раздельных буферов снижает риск прекращения передачи из-за единичной ошибки временной метки и упрощает расчет задержек, поскольку этот метод обеспечивает положительность временных интервалов между соседними кадрами:
. (2.2)
Однако при этом отмеченное выше накопление погрешности расчета временных задержек приводит к визуально заметной рассинхронизации ВИ с разных камер. В частности, на практике, если заполненность буфера приближается к 100%, то в течение минуты «разбежка» по времени между двумя одновременно отображаемыми камерами из трех может достигать 3–5 с, что неприемлемо.
Отмеченный выше недостаток варианта с одним буфером (влияние существенного искажения одной временной метки) смягчается, но не устраняется полностью: длительный перерыв (прекращение) передачи может произойти не по всем камерам, а только по одной. Практика показала, что это также неприемлемо.
- Привязка к времени начала приема. Один из методов борьбы с основной проблемой простейшего кадрового буфера — накоплением погрешности расчета временных задержек — состоит в принципиальном изменении метода вычисления задержки.
В начале приема ВИ фиксируется текущее системное время СОП Ts и сопоставляется с временем метки первого полученного кадра Tv:
. (3.1)
После выделения очередного кадра также фиксируется текущее значение системного времени . После этого задержка для показа этого кадра определяется как
. (3.2)
Таким образом, время показа следующего кадра не зависит от времени показа предыдущего, а определяется исключительно системным временем.
Данный метод решает проблему программного расчета временных интервалов, т.е. исключаются предпосылки к накоплению погрешности расчета временных задержек. Однако остается проблема неточности программного таймера. Кроме этого, метод предполагает, что расхождение приращения времени на передающей стороне (устанавливающей временные метки) и на обрабатывающей стороне (СОП) невелико. Как правило, при исправных технических средствах это условие соблюдается. Оно может быть нарушено при воспроизведении ВИ различного рода программными имитаторами. Поэтому применение этого метода требует, чтобы программный имитатор применял таймер высокой точности (см. ниже).
- Применение ОС реального времени. Дальнейшее повышение точности буферизации возможно с помощью операционных систем реального времени (ОСРВ). Особенностью ОСРВ является гарантированное время отклика при обработке событий.
Этот метод способен дать наилучшие результаты по достижению заявленных временных характеристик. Однако для этого необходимо использовать инструментарий и библиотеки, специфичные для выбранной ОСРВ. Отсюда вытекают два недостатка данного подхода:
высокая трудоемкость разработки;
плохая переносимость кода — созданное программное обеспечение (ПО) невозможно с минимальными усилиями перенести с одной ОСРВ на другую, трудоемкость переноса приближается к разработке с нуля.
- Использование таймера высокой точности. Компромиссным методом (по сравнению с предыдущим) является применение таймера высокой точности, присутствующего на всех современных вычислительных средствах. Однако несмотря на компромиссность данного решения, недостатки его те же, что и в предыдущем случае — высокая трудоемкость разработки (хотя и в меньшей степени) и плохая переносимость кода. Дело в том, что прикладной программный интерфейс (API, application programming interface) для вызова таймера высокой точности индивидуален для каждой ОС.
- Внесение поправок в вычисление временных интервалов. Все рассмотренные выше методы предполагали детерминированное определение задержек на базе поступающей ВИ. Теперь рассмотрим адаптивный алгоритм, предусматривающий явное управление и основанный на внесении отрицательной обратной связи в работу буфера (буферов).
Для каждого буфера в каждый момент времени известна заполненность, т.е. отношение количества помещенных и неизвлеченных кадров к емкости буфера:
. (6.1)
Здесь NLast — номер последнего занесенного в буфер кадра, NCur — номер наиболее старого кадра (извлекаемого в первую очередь), N — максимальное количество кадров в буфере.
Если NCur > NLast, т.е. заполненная часть кольцевого буфера преодолела его границу, (6.1) видоизменяется следующим образом:
. (6.2)
Суть алгоритма состоит в коррекции временной задержки таймера относительно вычисленного предыдущими методами значения в зависимости от заполненности буфера.
Для буфера определяются четыре пороговых значения:
Raon — если Rb превышает это значение, вычисленная временная задержка уменьшается (включается ускорение выборки);
Raoff — если Rb опускается ниже этого значения, ускорение выборки перестает применяться;
Rdon — если Rb опускается ниже этого значения, вычисленная временная задержка увеличивается (включается замедление выборки);
Rdoff — если Rb превышает это значение, замедление выборки перестает использоваться.
Перечисленные пороговые значения должны подчиняться условию
. (6.3)
Исходя из этих пороговых значений, буфер может находиться в трех состояниях.
Состояние нормальной передачи Sn. Задержка, устанавливаемая для таймера, равна вычисленной. При этом контролируется соблюдение двух условий:
, (6.4)
. (6.5)
При нарушении условия (6.4) буфер переводится в состояние ускорения выборки. При нарушении условия (6.5) — в состояние замедления выборки.
Состояние ускорения выборки Sa. Задержка уменьшается умножением на коэффициент Ka. В этом режиме условия (6.4) и (6.5) не контролируются. Контролируется условие
. (6.6)
Если Rb уменьшилось настолько, что (5.6) перестало выполняться, буфер переводится в состояние нормальной передачи.
Состояние замедления выборки Sd. Это есть начальный режим работы буфера (буфер пуст). Задержка уменьшается умножением на коэффициент Kd. В этом режиме условия (6.4)–(6.6) не контролируются. Контролируется условие
. (6.7)
Если Rb увеличилось настолько, что (6.7) перестало выполняться, буфер переводится в состояние нормальной передачи. Пороговые значения Raon, Raoff, Rdon и Rdoff, а также коэффициенты Ka и Kd устанавливаются до начала сеанса обработки. Состояния буфера и переходы между ними можно выразить в виде графа (рис. 3).
Рис. 3. Состояния буфера и переходы между ними
Более продвинутый вариант этого метода можно получить, если вместо введения коэффициентов Ka и Kd плавно варьировать изменение задержки в диапазонах 0 < Rb < Rdon и Raon < Rb < 1.
Описанный в этом пункте метод хорошо справляется с погрешностями таймера низкой точности; для исправления грубых ошибок его целесообразно дополнять другими методами. Метод работает при допущении, что усредненная частота кадров на входе соответствует реальному масштабу времени. Для правильного расчета поправок буфер должен быть единым для всех видеопотоков.
- Привязка к циклам входной информации. При работе с принимаемой извне информацией (не воспроизводимой!) можно опереться на то, что поступление телеметрических циклов на вход наземного оборудования происходит с периодичностью, соответствующей времени записи. Это позволяет создавать буфер сокращенного размера и буферизовать только кадры в пределах одного цикла или совокупности циклов (например, если известно, что в 1с приходит четыре цикла, можно помещать в буфер все кадры в пределах 1с).
Рассмотрим реализацию такого подхода. В памяти организуется два буфера, приемный и передающий (рис. 4). Размер каждого буфера на единицу больше, чем максимальное количество целых кадров, которые могут быть переданы в цикле. В отличие от рассмотренного ранее, эти буферы не являются кольцевыми, и все кадры из них должны быть извлечены за время, не превышающее длительности двух циклов.
Рис. 4. Буфер с привязкой к циклам входной информации
По приходу информационного цикла из него извлекаются кадры, в том числе (при наличии) остаток кадра, начало которого содержалось в предыдущем цикле. Кадры помещаются в приемный буфер, для каждого из них вычисляется задержка относительно начала цикла. Общая задержка для каждого кадра определяется как
. (7.1)
Здесь tcycle — время, соответствующее началу цикла, Δtb — задержка, необходимая для отображения последнего неоконченного кадра из предыдущего цикла. Время начала цикла может определяется либо по внешнему счетчику (при его наличии), либо как наименьшее из времен, выделенных из цикла кадров.
Если не вводить задержку Δtb, возможна неравномерность выдачи изображения («подергивания») на границах циклов. Значение Δtb должно удовлетворять условию
. (7.2)
Здесь fmin — наименьшее значение общей частоты кадров от всех источников. Это гарантирует, что при отсутствии ошибок во временных метках задержки между переданными кадрами будут соответствовать задержкам исходного видеопотока (первым передается кадр, который не был завершен в предыдущем цикле). При оценке Δtb также следует учитывать, что принятый цикл в ряде систем должен быть подвергнут декодированию с применением помехоустойчивого кода Рида-Соломона [8, 9], что влечет за собой значительные траты процессорного времени.
Ошибки во временных метках должны обрабатываться отдельно. Если время одного из кадров не удается прочитать, либо оно лежит за пределами цикла, кадру принудительно присваивается то же время, что и предыдущему, и он отправляется потребителям одновременно с предыдущим. Альтернативное решение для кадров с некорректным временем состоит в том, чтобы такие кадры браковать полностью и не отправлять в выходном видеопотоке. Однако для кадров, время которых лежит за пределами цикла, это решение не подходит.
Каждый из кадров, помещенных в буфер, отсылается потребителю по отдельному таймеру, отрабатывающему индивидуальную задержку. Заметим, что, поскольку кадры передаются с задержкой, часть кадров текущего цикла будет передаваться уже во время обработки следующего. Следовательно, в программной реализации метода должны быть созданы два множества (комплекта) таймеров, инициируемых по очереди.
Кроме того, в момент начала обработки следующего цикла приемному буферу присваивается статус передающего, на роль приемного назначается второй буфер. Если во втором буфере к моменту смены ролей оставались кадры (например, за счет искаженных временных задержек), они либо удаляются, либо незамедлительно передаются. Второй подход предпочтительнее, если отклонение временной метки незначительно.
Описанная простейшая реализация предполагает, что время разбиения принятого цикла на кадры пренебрежимо мало по сравнению с длительностью цикла, а следовательно, все временные задержки могут быть корректно посчитаны в начале обработки цикла. Если это условие не выполняется, для сохранения достоверных временных задержек между кадрами при установке интервалов таймеров следует придерживаться одного из следующих подходов:
либо запускать таймеры только по окончании выделения всех кадров из цикла;
либо при запуске каждого таймера вносить в значение задержки поправку, равную времени, прошедшему с начала обработки цикла (для каждого кадра это время индивидуально).
Первый подход проще в реализации, но означает внесение дополнительной общей временной задержки по отношению к указанной выше. Второй подход сложнее, но для используемых в настоящее время вычислительных средств более надежен. Важнейшим преимуществом метода привязки к циклам входной информации является гарантированная синхронизация выходных видеопотоков с входным информационным потоком. Расхождение по времени выходных потоков с входным, а также выходных потоков между собой не накапливается. Явных недостатков метод не имеет, но существуют ограничения по применимости:
метод применим только для работы воспроизведения необработанного циклического потока (не для извлеченных из него видеопотоков);
метод неприменим, если для передачи конечным потребителям требуется обеспечение задержки меньшей, чем длительность цикла.
Следует заметить, что эффективность буферизации по циклам зависит от среднего количества кадров в цикле. Если в цикле передается 1 кадр, метод вырождается и эквивалентен отсутствию буферизации вообще. При 4–6 кадрах в цикле (в среднем) метод обеспечивает высокую плавность отображения ВИ.
- Экспериментальная проверка. С учетом проблем, обозначенных выше, для оценки методов буферизации введем следующие временные характеристики (все интервалы измеряются в миллисекундах, если не оговорено противное).
Расхождение между теоретическим и практическим интервалом следования циклов – ΔTcyc. Характеризует достоверность главного временного интервала, на котором основано применение методов. В частности, если фактический интервал окажется существенно выше заявленного, то для метода привязки к циклам на стыке циклов воспроизведение потеряет плавность, будет «рваным». А для метода циклических буферов перерывы между кадрами будут возникать по мере опустошения буферов.
Для i-го цикла ΔTcyc определяется как
. (8.1)
Здесь Tct и Tcr — время цикла по временной метке и время поступления цикла на вход СОП соответственно.
Модуль разности между интервалом двух соседних кадров от одной камеры, вычисленным по их временным меткам, и интервалом отсылки этих кадров потребителю – ΔT1. Характеризует плавность воспроизведения видеопотока. Для i-го кадра определяется как
. (8.2)
Здесь Ts,i и Ts,i–1 — время отсылки текущего и предыдущего кадров, Tf,i и Tf,i–1 — их временные метки.
Расхождение между временем декодирования очередного кадра и временем его отсылки потребителям – ΔTsend. Характеризует задержку обработки видеопотока в системе в целом и ее вероятное накопление. Данный параметр следует контролировать как в статике (усредненный по кадрам), так и в динамике (в течение процесса регистрации), с целью выявить возможное накопление указанного расхождения:
. (8.3)
Здесь Td – время декодирования кадра, Ts – время его отсылки потребителям.
Разность интервала между временными метками двух соседних кадров по разным камерам, вычисленных по временным меткам, и интервала отсылки этих кадров потребителю – ΔTpair. Характеризует временное расхождение видеоряда от разных камер, что актуально при организации независимых буферов по каждой камере. Неоднозначность представляет определение, какой кадр от другой камеры считать «соседним», учитывая, что кадры передаются асинхронно и с переменной частотой. Мы для каждого кадра от камеры C2 находили кадр с наибольшим временем от камеры C1, время которого Tf,c1 меньше или совпадает с временем кадра от C2 Tf,c1, и фиксировали время отсылки этих кадров, Ts,c1 и Ts,c2 соответственно:
. (8.4)
Как и ΔTsend, задержка ΔTpair тоже может накапливаться. Соответственно, для ΔTpair также следует не только найти усредненное значение, но и построить зависимость от времени.
Поскольку, как отмечено во Введении, средняя частота кадров на различных участках полета может отличаться, характеристики ΔT1, ΔTpair и ΔTsend целесообразно рассчитывать не только в абсолютных величинах, но и в процентах – δT1, δTpair и δTsend соответственно. Среднее значение ΔTcyc постоянно, для него достаточно дать усредненную оценку в миллисекундах.
Кроме временных, вводятся количественные характеристики:
Tbg — длительность эксперимента на основании временных меток событий прихода циклов ИИ, декодирования и отправки кадров;
Tfr — длительность видеопотока на основании временных меток видеокадров;
Nfs — общее количество видеокадров, зарегистрированных во время сеанса;
Nbst — количество потерянных кадров, в частности за счет переполнения буферов.
В ходе экспериментов для каждого декодированного кадра фиксировались:
временная метка, сопутствовавшая кадру;
номер камеры;
время декодирования кадра;
время отсылки кадра потребителю по ЛВС;
номер кадра в последовательности кадров от данной камеры;
номер кадра в общей последовательности кадров от всех камер.
Для каждого цикла фиксировались:
время прихода цикла;
уникальный номер цикла в общей последовательности циклов.
После получения экспериментальных данных для каждого цикла вычислялось ΔTcyc с последующим нахождением среднего значения. Для каждого кадра, кроме первых кадров по каждой из камер, были вычислены характеристики ΔT1 и ΔTsend. Пары соседних кадров строились по первой и второй камерам, для каждой пары было найдено ΔTpair.
Далее для каждой из характеристик находилось минимальное, среднее и максимальное значение. Для ΔTsend и ΔTpair, кроме того, была построена зависимость данной величины от времени, прошедшего с начала регистрации.
Всего проведено две серии экспериментов на различных входных данных (разные участки ВИ). Для одних и тех же технических средств (компьютер под управлением ОС AstraLinux) по очереди испытывались следующие методы:
«нет буфера» — буферизация отключена, каждый декодированный кадр немедленно передается потребителям; в экспериментальную проверку этот вырожденный псевдометод включен для сравнения;
«3 буфера» — кольцевые буферы, по каждому буферу на камеру;
«адаптивный» — то же, но с внесением поправкой в вычисление временных интервалов;
«по циклам» — буферизация с привязкой к циклам входной информации.
Усредненные результаты экспериментальной проверки приведены в табл. 1, 2. Все интервалы, кроме общих длительностей экспериментов и фрагментов (Tbg и Tfr), приведены в миллисекундах, значения Tbg и Tfr — в формате «часы – минуты – секунды – миллисекунды».
Таблица 1. Эксперименты на участке с двумя камерами
Эксперимент | Tbg | Tfr | Nfs | Nbst | ΔTcyc | ΔT1 | ΔTsend | ΔTpair |
Нет буфера | 00:08:06.829 | 00:08:13.017 | 10734 | 675 | 253.342 | 125.311 | 0.148394 | 11.7404 |
» | 00:08:07.866 | 00:08:13.017 | 10734 | 675 | 253.342 | 125.487 | 0.138554 | 11.6884 |
» | 00:08:08.157 | 00:08:13.017 | 10733 | 675 | 253.342 | 125.459 | 0.14762 | 11.6265 |
Три буфера | 00:08:36.818 | 00:08:13.017 | 10734 | 7148 | 253.342 | 31.7017 | 2220.84 | –1504.76 |
» | 00:08:44.192 | 00:08:13.017 | 10734 | 6886 | 253.342 | 34.9509 | 1947.72 | –1683.05 |
» | 00:08:46.216 | 00:08:13.017 | 10734 | 6879 | 253.342 | 36.1681 | 1899.18 | –565.845 |
Адаптивный | 00:06:24.488 | 00:08:13.017 | 10730 | 4181 | 253.472 | 67.8703 | 6581.13 | –24.9392 |
» | 00:06:22.552 | 00:08:13.017 | 10733 | 4048 | 253.472 | 68.0483 | 6521.6 | –56.6006 |
» | 00:06:24.143 | 00:08:13.017 | 10733 | 4156 | 253.342 | 68.4624 | 6579.88 | –84.1589 |
По циклам | 00:08:13.449 | 00:08:07.759 | 10633 | 746 | 253.212 | 28.4431 | 130.099 | 16.3416 |
» | 00:07:59.726 | 00:08:13.017 | 10734 | 762 | 253.342 | 27.2222 | 129.416 | 18.1065 |
» | 00:08:12.786 | 00:08:13.017 | 10733 | 747 | 253.342 | 28.0204 | 130.363 | 16.5853 |
Таблица 2. Эксперименты на участке с тремя камерами
Эксперимент | Tbg | Tfr | Nfs | Nbst | ΔTcyc | ΔT1 | ΔTsend | ΔTpair |
Нет буфера | 00:07:39.018 | 00:07:47.717 | 5814 | 0 | 250.939 | 39.709 | 0.0568475 | –155.542 |
» | 00:07:44.917 | 00:07:47.717 | 5814 | 0 | 250.939 | 39.6419 | 0.103359 | –158.524 |
Три буфера | 00:07:48.990 | 00:07:47.717 | 5813 | 215 | 250.939 | 0.523661 | 3751.85 | –162.488 |
» | 00:07:49.982 | 00:07:47.717 | 5814 | 163 | 250.939 | 1.25091 | 2686.22 | –163.82 |
Адаптивный | 00:06:03.167 | 00:07:47.717 | 5814 | 552 | 250.939 | 59.8665 | 8767.76 | –68.4793 |
» | 00:06:02.728 | 00:07:47.717 | 5814 | 557 | 250.939 | 60.0424 | 8783.41 | –43.8476 |
По циклам | 00:07:45.483 | 00:07:47.717 | 5814 | 8 | 250.939 | 36.9659 | 19.7576 | –16.2115 |
» | 00:07:42.857 | 00:07:47.717 | 5814 | 10 | 250.939 | 36.9597 | 19.0631 | –14.4581 |
Для величин ΔTsend и ΔTpair измерена их динамика во времени. Зависимость ΔTsend (мс) от номера кадра приведена на рис. 5. Зависимость ΔTpair (мс) от номера кадра представлена на рис. 6.
Рис. 5. Зависимость задержки обработки от номера кадра
Рис. 6. Зависимость синхронности видеоряда от номера кадра
По итогам представленных результатов можно сделать следующие выводы.
Значение ΔTcyc отличается от теоретического (250 мс) всего на 3 мс (1.2%) на одном участке и на 0.9 мс (существенно менее 1%) — на другом. Таким образом, достоверность главного временного интервала, на котором основано применение методов, подтверждена.
По количеству потерянных кадров наихудшие результаты показал метод трех кольцевых буферов. Это объясняется предсказанным выше накоплением задержки и переполнением буфера. Адаптивная поправка может улучшить этот результат, но может и ухудшить.
По плавности воспроизведения потока ΔT1 метод трех буферов и метод с привязкой к циклам показывают примерно одинаковый результат с незначительным перевесом в сторону последнего, поскольку оба этих метода учитывают заявленные в видеопотоке интервалы между кадрами. Отсутствие буфера резко ухудшает картину по этому критерию, поскольку декодированные кадры выдаются потребителям «пакетно» с небольшой задержкой. Метод трех буферов с адаптивной поправкой занимает промежуточное положение.
По расхождению между временем декодирования и временем отправки кадра ΔTsend предпочтительнее всего оказывается полное отсутствие буферизации по очевидным причинам (кадр отсылается сразу же после его выделения). Метод привязки к циклам показывает в среднем небольшое (и как показывают опыты) незаметное для глаза отставание. Результаты же для метода трех буферов даже в среднем демонстрируют существенную задержку (более 2 с). В динамике же видно, что в то время как два других метода дают колебание в районе нуля, у метода трех буферов сразу начинает нарастать задержка, однако адаптивный метод ограничивает эту задержку (рис. 5, 6).
Наконец, по синхронности видеоряда от разных камер ΔTpair метод привязки к циклам незначительно хуже, чем отсутствие буферизации. Метод трех буферов демонстрирует значительное заметное для глаза расхождение камер по времени. В динамике у него видны регулярные отклонения от оси абсцисс в обе стороны. Для потребителей ВИ это означает отставание изображения сначала по одной камере, потом по другой. Для адаптивного метода поведение зависимости аналогично. Метод привязки к циклам на этом фоне показывает колебание в районе нуля.
По совокупности всех перечисленных факторов метод привязки к циклам входной информации дает наилучший результат. Метод же трех буферов без принятия дополнительных мер по большинству показателей оказывается даже хуже, чем полное отсутствие буферизации, хотя по плавности воспроизведения он успешно конкурирует с методом привязки к циклам входной информации.
Заключение. Некоторые из решений, изложенных в статье, могут применяться в сочетании. Для циклического кадрового буфера допустимо использование одного из дополнительных методов: либо привязки к времени начала приема, либо внесения поправок в вычисление временных интервалов. В то же время буфер с привязкой к циклам входной информации не требует применения этих дополнительных методов (и не совместим с ними).
Если создаваемая СОП ВИ удовлетворяет ограничениям, указанным в разделе 7, мы рекомендуем использовать привязку к циклам входной информации как наиболее надежный метод.
Внешние решения, такие как применение операционных систем реального времени, могут использоваться, если к точности временных характеристик предъявляются повышенные требования, в частности, гарантированное время отклика.
Об авторах
М. Ю. Звездочкин
Филиал акционерного общества «Ракетно-космический центр «Прогресс» – особое конструкторское бюро «Спектр»
Email: mironov1vv@mail.ru
Россия, Рязань
В. В. Миронов
Рязанский государственный радиотехнический университет имени В.Ф. Уткина
Автор, ответственный за переписку.
Email: mironov1vv@mail.ru
Россия, Рязань
Список литературы
- Грибков Н.В., Бобылев А.В., Юрков Ю.А., Жуковский С.Ю., Грибков В.Н. Радиопередающее устройство с частотной модуляцией и временным разделением каналов для высокоинформативных телеметрических систем // Ракетно-космическое приборостроение и информационные системы. 2017. Т. 4. № 2. С. 61–67.
- Климов Д.И., Мамедов Т.Т., Губайдуллин И.Р. Тенденции развития видеотелеметрических систем для измерения температуры термонагруженных областей средств выведения // Ракетно-космическое приборостроение и информационные системы. 2020. Т. 7. № 4. С. 90–96.
- Бортовая система видеоконтроля для ракет-носителей и разгонных блоков БСВК // Сайт ООО «ИРЗ». https://www.irz.ru/products/11/500.htm (дата обращения 10.03.2021).
- Yu Yuan, D. Feng, Yuzhuo Zhong Fast Adaptive Variable Frame-rate Coding // IEEE 59th Vehicular Technology Conference. VTC 2004-Spring (IEEE Cat. No.04CH37514). Milan, Italy, 2004. 17–19 May.
- Бочкарева В.Г., Матвеев И.А., Мурынин А.Б., Цурков В.И. Методы улучшения изображений, основанные на пространственном спектральном анализе // Изв. РАН. ТиСУ. 2015. № 6. С. 62–70.
- Гайдамака Ю., Самуйлов А. Анализ стратегий заполнения буфера оборудования пользователя при предоставлении услуги потокового видео в одноранговой сети // T-Comm: Телекоммуникации и транспорт. 2013. № 2. С. 30–32.
- Гребёнкина Т.Ю. Сегментация рынка программного обеспечения для потоковой передачи видеоданных // Электронные средства и системы управления. Материалы докладов международной научно-практической конференции. 2019. № 1–2. С. 185–188.
- Блейхут Р. Теория и практика кодов, контролирующих ошибки / Пер. с англ. М.: Мир, 1986. 576 с.
- Золотарев В.В., Овечкин Г.В. Помехоустойчивое кодирование. Методы и алгоритмы. М. : Горячая Линия – Телеком, 2004.
Дополнительные файлы
