Задержка I-кадра - I-Frame Delay

Задержка I-кадра (IFD) - это метод планирования для адаптивной потоковой передачи MPEG видео. Идея заключается в том, что планировщик потоковой передачи отбрасывает видеокадры, когда буфер передачи заполнен из-за недостаточной пропускной способности, чтобы уменьшить передаваемую скорость передачи битов. Характеристики алгоритма:[1]

  1. количество кадров, находящихся в данный момент в буфере (а не количество байтов), указывает на заполнение буфера,
  2. менее важные кадры (B-образная рама ) из буфера удаляются перед более важными кадрами (I-рамка и П-образная рама ),
  3. передача I-кадров задерживается при плохих условиях, даже если они устарели по сравнению с время отображения (их все еще можно использовать для декодирования последующих интерпрогнозируемых кадров).

Алгоритм задержки I-кадра

Механизм IFD разделен на две части:[1]

  1. по мере того, как поток анализируется и пакетируется в сетевые пакеты, он также анализируется, и пакеты маркируются номером приоритета, отражающим тип кадра (I-кадр, P-кадр или B-кадр). Пакеты, не относящиеся к видео, получают номер наивысшего приоритета, поэтому звук никогда не будет отброшен.
  2. во время передачи пакеты отбрасываются планировщиком IFD, когда пропускная способность недостаточна.

Размер буфера IFD должен быть достаточно большим, чтобы вместить некоторое количество кадров, но минимум требуется два кадра: один для хранения кадра, отправляемого в данный момент (обозначен ниже как ScheduledFrame), и один, ожидающий отправки (обозначенный как WaitingFrame) . Увеличение размера буфера IFD потенциально может позволить более сложную приоритизацию, однако это может вызвать увеличение задержки и использования памяти.[1] На рисунке ниже показан пример заполнения буфера. Цифры представляют приоритет пакета.

Ifd buffer.png

Здесь номера приоритета видеокадров 10 и выше. Пакеты с номером приоритета 12 относятся к запланированному для отправки кадру, а пакеты с номером 11 относятся к ожидающему кадру. На рисунке пакет, принадлежащий следующему кадру, вот-вот войдет в буфер.

Как видно, возможно чередование пакетов видео с пакетами, не являющимися видео (аудио или система с номерами приоритета 2 и 0 соответственно). Когда пакет, принадлежащий следующему кадру, должен быть записан в буфер IFD, а буфер заполнен, планировщик IFD отбрасывает кадр на основе приоритета, назначенного ранее. Когда пропускная способность сети настолько мала, что также необходимо отбрасывать P-кадры, тогда GOP (Группа картинок ) устанавливается как "нарушенный", а остальная часть GOP (которая зависит от P-кадра) также отбрасывается.

Если отбрасываются только B-кадры, в изображении кадра не должно быть искажений, потому что от них не зависит никаких последующих кадров.[1] Удаление кадров с помощью IFD вызывает эффект временного замораживания воспроизведения видео, продолжительность которого зависит от количества потерянных кадров, после которого воспроизведение возобновляется со следующего пройденного кадра.[1] Для реализации IFD с буфером размером в два кадра алгоритм показан на рисунке ниже.

процедура Enqueue (NextFrame), если DisturbedGOP == True, тогда если NextFrame имеет тип I, то # Обнаружена новая GOP DisturbedGOP = False # Сбросить конец флага нарушенной GOP end if DisturbedGOP == True then Drop NextFrame # Отменить остальную часть нарушенной GOP return end if WaitingFrame пусто, то WaitingFrame = NextFrame иначе, если NextFrame имеет тип I, то WaitingFrame = NextFrame иначе, если NextFrame имеет тип B, затем отбрасывает NextFrame, иначе, если WaitingFrame имеет тип I или P, то отбрасывает NextFrame, если NextFrame имеет тип P, то # Отброшенный кадр - это P-кадр DisturbedGOP = True # Установить флаг нарушенной группы изображений end else WaitingFrame = конец следующего кадра конец конец конец

Рекомендации

  1. ^ а б c d е Марек Бурза, Джеффри Канг, Питер ван дер Сток; Адаптивная потоковая передача аудио / видео контента на основе MPEG по беспроводным сетям; Журнал мультимедиа об. 2, вып. 2 апреля 2007 г .; ISSN  1796-2048