Фильтр ошибок для различения между ошибками в видеоданных обратной линии связи и прямой линии связи
Иллюстрации
Показать всеИзобретение относится к кодированию видео и, в частности, к технологиям контроля ошибок в видео. Техническим результатом является создание способа контроля ошибок в видеоданных, который позволяет повышать эффективность видеокодера. Указанный технический результат достигается тем, что осуществляют прием индикации относительно ошибки в видеоданных от видеодекодера, определение того, произошла ли ошибка в видеоданных в обратной линии связи беспроводной сети между видеокодером и сетевым устройством, и применение контроля ошибок в ответ на ошибку в видеоданных, если ошибка в видеоданных произошла не в обратной линии связи. Например, индикация относительно ошибки в видеоданных может включать в себя первый порядковый номер (SN) пакета, содержащего потерянные данные, и определение того, произошла ли ошибка в видеоданных в обратной линии связи, может включать в себя сравнение первого SN со вторым SN пакета, ассоциированного с последней ошибкой в обратной линии связи. 4 н. и 29 з.п ф-лы, 4 ил.
Реферат
Область техники, к которой относится изобретение
Данное раскрытие относится к кодированию видео, а более конкретно к технологиям эффективного контроля ошибок в видео.
Уровень техники
Видеотелефония (VT) заключает в себе передачу в реальном времени пакетов, переносящих аудио- и видеоданные. Каждое VT-устройство включает в себя видеокодер, который получает видео из устройства видеозахвата, такого как видеокамера или видеоархив, и формирует пакеты видеоданных ("видеопакеты"). Аналогично, аудиокодер в каждом VT-устройстве получает аудио из устройства аудиозаписи, такого как микрофон или синтезатор речи, и формирует пакеты аудиоданных ("аудиопакеты"). Видеопакеты и аудиопакеты помещаются в очередь протокола линии радиосвязи (RLP). Модуль уровня управления доступом к среде (MAC) формирует пакеты уровня управления доступом к среде (MAC) из содержимого RLP-очереди. Пакеты MAC-уровня преобразуются в пакеты физического (PHY) уровня для передачи по каналу связи в другое VT-устройство.
В мобильных VT-приложениях, VT-устройство принимает пакеты физического уровня через беспроводную прямую линию связи (FL) (или "нисходящую линию связи") от базовой станции к VT-устройству, которое может быть мобильным беспроводным терминалом, таким как сотовый радиотелефон. VT-устройство передает пакеты PHY-уровня через беспроводную обратную линию связи (RL) (или "восходящую линию связи") от VT-устройства к базовой станции. Каждое VT-устройство включает в себя PHY- и MAC-уровни, чтобы преобразовывать принимаемые пакеты PHY- и MAC-уровня и повторно формировать рабочие данные пакета в аудиопакеты и видеопакеты. Видеодекодер в рамках VT-устройства декодирует видеоданные для представления пользователю через устройство отображения. Аудиодекодер в рамках VT-устройства декодирует аудиоданные для представления через звуковой динамик. Аналогично, VT-устройство может включать в себя видеокодер и аудиокодер, чтобы кодировать видео и аудио, соответственно, для передачи в другое VT-устройство.
Ошибки в видеоданных могут возникать в ходе передачи видеопакетов от видеокодера в видеодекодер. Например, ошибка может возникать в ходе передачи по RL (от видеокодера к базовой станции), в базовой станции или в ходе передачи по FL (от базовой станции к видеодекодеру). Ошибки могут нарушать визуальное качество видео, представляемого пользователю. Тем не менее, множество технологий коррекции или маскирования ошибок может быть применено, когда ошибки обнаруживаются.
Сущность изобретения
В общем, раскрытие сущности направлено на технологии для контроля ошибок в видеоданных, которые позволяют повышать эффективность видеокодера. Видеокодер выполнен с возможностью применять контроль ошибок к ошибкам в RL до приема отчета об ошибке от приемного устройства через сквозную (E2E) обратную связь по ошибкам. Ошибка, сообщаемая в E2E-обратной связи по ошибкам, может быть ошибкой обратной линии связи (RL) или ошибкой прямой линии связи (FL), которая включает в себя ошибки, относящиеся к сети доступа. Согласно раскрытым технологиям, фильтр ошибок отличает ошибки в RL от ошибок в FL или ошибок в сети доступа, указанных посредством E2E-обратной связи по ошибкам. Таким образом, раскрытые технологии могут исключать повторное применение посредством видеокодера контроля ошибок к ошибке в RL, которую видеокодер уже разрешил.
Применение контроля ошибок к одной ошибке в RL дважды может снижать эффективность кодирования видеокодера и также может быть неэффективным использованием полосы пропускания канала передачи, поскольку некоторые технологии контроля ошибок могут вносить дополнительную полосу пропускания. Посредством определения того, является ли ошибка, сообщаемая в E2E-обратной связи по ошибкам, ошибкой в RL, фильтр ошибок может предоставлять возможность системе кодера определять то, применен ли уже контроль ошибок к ошибке, сообщаемой в E2E-обратной связи по ошибкам, или видеокодер должен применять контроль ошибок к сообщаемой ошибке. Следовательно, раскрытые технологии уменьшают или исключают избыточную коррекцию ошибок и ассоциированную неэффективность.
В некоторых аспектах, система кодера также содержит модуль для адаптации контроля ошибок, применяемый посредством видеокодера к условиям полосы пропускания канала. В некоторых вариантах применения, например в сети с коммутацией пакетов, полоса пропускания беспроводного канала может варьироваться, к примеру, вследствие местоположения, окружения или нагрузки по трафику канала. Соответственно, чтобы помогать не допускать перегрузки беспроводного канала, система кодера может включать модуль, чтобы отслеживать условия полосы пропускания канала, и выбирать технологию контроля ошибок на основе условий полосы пропускания канала. В качестве иллюстрации внутрикадровое обновление может быть применено, когда полоса пропускания канала выше, тогда как случайное обновление внутри макроблока (MB) (RIR) может быть применено, когда полоса пропускания канала ниже.
В одном аспекте, раскрытие сущности направлено на способ, содержащий прием индикации относительно ошибки в видеоданных, обнаруженной посредством видеодекодера, определение того, произошла ли ошибка в видеоданных в обратной линии связи беспроводной сети между видеокодером и сетевым устройством, и применение контроля ошибок в ответ на индикацию относительно ошибки в видеоданных, если ошибка в видеоданных произошла не в обратной линии связи, и не применение контроля ошибок в ответ на ошибку в видеоданных, если ошибка в видеоданных произошла в обратной линии связи.
В другом аспекте, раскрытие сущности направлено на систему, содержащую приемопередающее устройство, чтобы принимать индикацию относительно ошибки в видеоданных, обнаруженной посредством видеодекодера, видеокодера и фильтра ошибок, чтобы определять то, произошла ли ошибка в видеоданных в обратной линии связи беспроводной сети между видеокодером и сетевым устройством, при этом видеоустройство выполнено с возможностью применять контроль ошибок в ответ на индикацию относительно ошибки в видеоданных, если ошибка в видеоданных произошла не в обратной линии связи.
В еще одном аспекте, раскрытие сущности направлено на компьютерный программный продукт, содержащий машиночитаемый носитель, содержащий инструкции. Инструкции инструктируют компьютеру принимать индикацию относительно ошибки в видеоданных, обнаруженной посредством видеодекодера, определять то, произошла ли ошибка в видеоданных в обратной линии связи беспроводной сети между видеокодером и сетевым устройством, и применять контроль ошибок в ответ на ошибку в видеоданных, если ошибка в видеоданных произошла не в обратной линии связи, и не применять контроль ошибок в ответ на ошибку в видеоданных, если ошибка в видеоданных произошла в обратной линии связи.
В другом аспекте, раскрытие сущности направлено на систему, содержащую средство приема индикации относительно ошибки в видеоданных, обнаруженной посредством видеодекодера, средство определения того, произошла ли ошибка в видеоданных в обратной линии связи беспроводной сети между видеокодером и сетевым устройством, и средство применения контроля ошибок в ответ на ошибку в видеоданных, если ошибка в видеоданных произошла не в обратной линии связи, и не применения контроля ошибок в ответ на ошибку в видеоданных, если ошибка в видеоданных произошла в обратной линии связи.
Подробности одного или более примеров данного раскрытия сущности изложены на прилагаемых чертежах и в нижеприведенном описании.
Краткое описание чертежей
Фиг. 1 является схемой, иллюстрирующей систему кодирования и декодирования видео/аудио для приложений видеотелефонии.
Фиг. 2 является схемой, иллюстрирующей систему кодирования и декодирования видео/аудио, реализующую технологию фильтрации ошибок.
Фиг. 3 является блок-схемой последовательности операций, иллюстрирующей технологию для фильтрации ошибок в обратной линии связи из сквозной обратной связи по ошибкам.
Фиг. 4 является блок-схемой последовательности операций, иллюстрирующей другую технологию для фильтрации ошибок в обратной линии связи из сквозной обратной связи по ошибкам.
Подробное описание изобретения
Фиг. 1 является блок-схемой, иллюстрирующей систему 10 кодирования и декодирования видео. Как показано на фиг. 1, система 10 включает в себя систему 12 кодера и систему 14 декодера, соединенные посредством канала передачи 16, который включает в себя один или более компонентов 15 сети доступа (AN). Система 12 кодера и система 14 декодера могут представлять различные типы устройств, такие как беспроводные телефоны, сотовые телефоны, портативные компьютеры, беспроводные мультимедийные устройства, устройства видеоигр, цифровые музыкальные проигрыватели, цифровые видеопроигрыватели, серверы цифровой широковещательной передачи, платы персонального компьютера для беспроводной связи, персональные цифровые устройства (PDA), внешние или внутренние модемы или любое устройство, которое обменивается данными через беспроводной канал.
AN-компонент 15 может упоминаться как сетевая часть системы связи и может включать в себя или реализовывать функцию базовой станции (BS), системы приемопередающего устройства базовой станции (BTS), точки доступа (AP), приемопередающего устройства модемного пула (MPT), узла B (к примеру, в системе типа WCDMA) и т.д. Система 12 кодера и система 14 декодера обмениваются данными с AN-компонентом 15 по прямой линии связи (FL) и/или обратной линии связи (RL). FL, которая также упоминается как "нисходящая линия связи", означает передачу от AN-компонента 15 в систему 12 или 14. Обратная линия связи, которая также упоминается как "восходящая линия связи", означает передачу от системы 12 или 14 в AN-компонент 15.
Система 10 может предоставлять двунаправленную передачу аудио и видео, к примеру, для видеотелефонии (VT) по каналу передачи 16. VT упоминается как передача в реальном времени аудио- и видеопакетов, по меньшей мере, между двумя устройствами, такими как системы 12 и 14. Соответственно, в общем, взаимно-обратные модули кодирования, декодирования и преобразования могут быть предоставлены в системах 12 и 14 на противоположных концах канала 16. Альтернативно, одна или обе из систем 12 могут быть выделены только кодированию и передаче аудио и видео или только приему и декодированию аудио и видео. В некоторых примерах, система 12 кодера и система 14 декодера могут быть осуществлены в устройствах видеосвязи, таких как беспроводные мобильные терминалы, оснащенные для потоковой передачи видео, видеотелефонии или и того, и другого. Мобильные терминалы могут поддерживать VT согласно стандартам с коммутацией пакетов, таким как транспортный протокол реального времени (RTP), протокол пользовательских датаграмм (UDP), Интернет-протокол (IP) или протокол соединения "точка-точка" (PPP).
Система 10 может быть выполнена с возможностью поддерживать одну или более технологий беспроводной связи, таких как множественный доступ с кодовым разделением каналов (CDMA), множественный доступ с частотным разделением каналов (FDMA), множественный доступ с временным разделением каналов (TDMA) или мультиплексирование с ортогональным частотным разделением каналов (OFDM) либо другую подходящую беспроводную технологию. Вышеупомянутые технологии беспроводной связи могут доставляться согласно любой из множества технологий радиодоступа. Например, CDMA может доставляться согласно стандартам cdma2000 или широкополосного CDMA (WCDMA). TDMA может доставляться согласно стандарту глобальной системы мобильной связи (GSM). Стандарт универсальной системы мобильных телекоммуникаций (UMTS) разрешает работу в режиме WCDMA или GSM. Как правило, для VT-приложений система 10 должна быть выполнена с возможностью поддерживать технологии по стандарту высокоскоростной передачи данных (HDR), такие как cdma2000 1x EV-DO версия 0 и редакция A.
Система 12 кодера ассоциирована с первым устройством видеосвязи и включает в себя аудиоисточник 17, видеоисточник 18, видеокодер 20, аудиокодер 22, модуль 26 преобразования транспортного протокола реального времени (RTP)/протокола пользовательских датаграмм (UDP)/Интернет-протокола (IP)/протокола соединения "точка-точка" (PPP), очередь 28 согласно протоколу линии радиосвязи (RLP), модуль 30 MAC-уровня и модуль 32 PHY-уровня. Как описано далее, система 12 кодера также может включать в себя фильтр ошибок, чтобы различать между ошибками, относящимися к различным источникам, а также модуль для адаптации контроля ошибок к доступной полосе пропускания канала 16. Система 14 декодера ассоциирована с другим устройством видеосвязи и включает в себя модуль 34 PHY-уровня, модуль 36 MAC-уровня, RLP-очередь 38, модуль 40 преобразования RTP/UDP/IP/PPP, видеодекодер 42 и аудиодекодер 44.
Видеоисточник 18 может быть устройством видеозахвата, таким как видеокамера, один или более видеоархивов или комбинация видеокамеры и видеоархивов, или источник прямой широковещательной передачи от поставщика содержимого. Система 10 может поддерживать видеотелефонию или потоковую передачу видео согласно протоколу инициирования сеанса (SIP), стандарту ITU-T H.323, стандарту ITU-T H.324 или другим стандартам. Видеокодер 20 формирует кодированные видеоданные согласно стандарту сжатия видео, такому как MPEG-2, MPEG-4, ITU-T H.263 или ITU-T H.264 и его прототипу, ISO/IEC MPEG-4, Часть 10, т.е. усовершенствованное кодирование видео. Система 10 также может быть выполнена с возможностью поддерживать усовершенствованное кодирование видео H.264 для доставки видеоуслуг реального времени в системах наземной мобильной многоадресной передачи мультимедиа (TM3), использующих спецификацию радиоинтерфейса только прямой линии связи (FLO), "Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast", которая должна быть опубликована как Технический стандарт TIA-1099 ("FLO Specification").
Видеокодер 20 и видеодекодер 42 могут быть реализованы как один или более процессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем матричных БИС (FPGA), дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение или любые комбинации вышеозначенного. Каждый из видеокодера 20 и видеодекодера 42 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующем абонентском устройстве, широковещательном устройстве, сервере и т.п. Помимо этого система 12 и система 14 могут включать в себя соответствующие компоненты модуляции, демодуляции, частотного преобразования, фильтрации и усилителя для передачи и приема кодированного видео, в зависимости от необходимости, включая радиочастотные (RF) беспроводные компоненты и антенны. Тем не менее, для упрощения иллюстрации эти компоненты не показаны на фиг. 1.
Аудиоисточник 17 может быть устройством аудиозаписи, таким как микрофон или устройство синтезатора речи, которое захватывает аудиоданные, чтобы сопровождать видеоданные из видеоисточника 18. Альтернативно, аудиоисточник 17 может включать в себя аудиоархив или источник прямой широковещательной передачи аудио от поставщика содержимого. Аудиокодер 22 может кодировать аудиоданные согласно способу сжатия звука, такому как узкополосное адаптивное многоскоростное кодирование (AMR-NB) или другие технологии. Для VT-приложений видео должно предоставлять возможность видеть участника VT-конференции, а аудио должно предоставлять возможность слышать речь этого участника. Для других приложений, таких как потоковая передача мультимедиа или передача в широковещательном режиме, аудио и видео являются частью мультимедийного содержимого, такого как презентация, показ или фильм.
При работе модуль 26 преобразования RTP/UDP/IP/PPP получает кодированный кадр видеоданных и кодированные аудиоданные от видеокодера 20 и аудиокодера 22 и добавляет соответствующую информацию заголовка (к примеру, информацию маршрутизации и упорядочения) в видео- и аудиопакеты и вставляет результирующие данные в RLP-очередь 28. Как правило, RTP выполняется поверх UDP, тогда как UDP выполняется поверх IP, а IP выполняется поверх PPP. RTP - это протокол, разработанный для передачи данных реального времени, таких как мультимедийные данные. В RTP вывод видеокодера 20, а также аудиокодера 22 группируется в пакеты данных. Таким образом, кадр видеоданных может быть разделен на один или более пакетов данных для передачи кадра по каналу 16 в систему 14 декодера, и множество кадров типично передается как несколько пакетов данных. Каждый пакет включает в себя порядковый номер (SN) для целей упорядочения и идентификации. SN может быть включен, например, в информацию заголовка RTP/UDP/IP/PPP.
Модуль 30 MAC-уровня извлекает данные из RLP-очереди 28 и формирует пакеты MAC-уровня из содержимого RLP-очереди 28. Каждый пакет MAC-уровня переносит информацию заголовка RTP/UDP/IP/PPP и данные аудио- или видеопакетов, которые содержатся в RLP-очереди 28. Аудиопакеты могут вставляться в RLP-очередь 28 независимо от видеопакетов. В некоторых случаях, пакет MAC-уровня, сформированный из содержимого RLP-очереди 28, должен переносить только информацию заголовка и данные видеопакетов. В других случаях, пакет MAC-уровня должен переносить информацию заголовка, данные аудиопакетов и данные видеопакетов, в зависимости от содержимого RLP-очереди 28. Пакеты MAC-уровня могут быть выполнены согласно RLP и также могут упоминаться как MAC RLP-пакеты.
Модуль 32 PHY-уровня преобразует MAC RLP-пакеты в пакеты PHY-уровня для передачи по каналу 16. В частности, приемопередающее устройство в системе 12 кодера передает пакеты PHY-уровня в AN-компонент 15 по каналу 16. Канал 16 переносит пакеты PHY-уровня в систему 14 декодера. Канал 16 может быть любым физическим соединением между системой 12 кодера и системой 14 декодера. Например, канал 16 может быть проводным соединением, таким как локальная или глобальная проводная сеть. Альтернативно, как описано в данном документе, канал 16 может быть беспроводным соединением, таким как сотовое, спутниковое или оптическое соединение. Более типично, канал 16 может включать в себя комбинацию проводных и беспроводных сред.
Модуль 34 PHY-уровня и модуль 36 MAC-уровня системы декодирования 14 работают взаимно-обратным способом. Модуль 34 PHY-уровня преобразует/повторно формирует пакеты PHY-уровня, принимаемые от канала 16, в MAC RLP-пакеты. Модуль 36 MAC-уровня повторно формирует содержимое MAC RLP-пакетов, чтобы предоставлять видео- и аудиопакеты для вставки MAC RLP-пакетов в RLP-очередь 38. Модуль 40 преобразования RTP/UDP/IP/PPP выделяет информацию заголовка из данных в RLP-очереди 38 и повторно формирует видео- и аудиоданные для доставки в видеодекодер 42 и аудиодекодер 44, соответственно.
Видеодекодер 42 декодирует кадры видеоданных, чтобы формировать поток видеоданных для использования в запуске устройства отображения (видеовывода) 48. SN, ассоциированный с каждым пакетом, может помогать видеодекодеру 42 переупорядочивать и повторно формировать пакеты видеоданных в кадры. Например, пакеты могут быть приняты из последовательности с временной перспективы, требуя переупорядочивания в надлежащую временную последовательность. Аудиодекодер 44 декодирует аудиоданные, чтобы формировать аудиоинформацию для представления пользователю (к примеру, через звуковой динамик (аудиовывод) 46).
Ошибки могут возникать в ходе передачи кадра видеоданных от системы 12 кодера в систему 14 декодера. Ошибки могут включать в себя потерянный пакет или пакет, содержащий потерянные данные. В дальнейшем в этом документе "потерянный пакет" упоминается и как потеря всего пакета, и как потеря данных в рамках пакета. Ошибка в видеоданных может возникать в RL (к примеру, от системы 12 кодера в AN-компонент 15), в FL (к примеру, от AN-компонента 15 в систему 14 декодера) или в рамках AN-компонента 15. Следовательно, ошибки могут рассматриваться как ошибки в RL или ошибки в FL. В общем, ошибки, возникающие в рамках AN-компонента 15, также должны упоминаться как ошибки в FL. Ошибки могут возникать в рамках AN-компонента 15 по многим причинам. Например, если AN-компонент 15 состоит из более чем одной базовой сети, потеря одного или более видеопакетов или данных в рамках пакетов может возникать, когда видеоданные передаются между базовыми сетями.
Система 12 кодера может идентифицировать ошибки в RL через одну или более технологий. В одной технологии идентификации ошибок, видеокодер 20 выполняет запрос к одному или более нижних уровней системы 12 кодера, чтобы определять то, произошла ли ошибка в ходе передачи последнего кодированного видеокадра, до того как видеокодер 20 кодирует новый видеокадр. Обнаружение ошибки до кодирования нового видеокадра позволяет видеокодеру 20 (или модулю контроля ошибок в системе 12 кодера) выполнять контроль ошибок для текущего, последнего кодированного кадра относительно быстро, не дожидаясь обратной связи от системы 14 декодера.
Фиг. 2 является схемой, иллюстрирующей устройство 12 кодера, реализующее технологию фильтрации ошибок. В примере, показанном на фиг.2, устройство 12 кодера включает в себя UDP/IP/PPP-уровень 26B, MAC-уровень 30, модуль 50 фильтра ошибок, модуль 55 протокола линии радиосвязи (RLP), модуль 56 протокола консолидации пакетов (PCP), модуль 58 адаптации скорости RL и модуль 60 адаптивного контроля ошибок по полосе пропускания канала. Некоторые компоненты системы 12 кодера, которые показаны на фиг. 1, такие как аудиокодер 22 и PHY-уровень 32, исключены из схемы по фиг. 2 для ясности иллюстрации.
Как описано подробнее ниже, модуль 50 фильтра ошибок, который определяет то, скорректирована ли уже ошибка, сообщаемая в E2E-обратной связи по ошибкам от системы 14 декодера. Таким образом, фильтр 50 ошибок отфильтровывает ошибки в RL из ошибок, сообщаемых в E2E-обратной связи по ошибкам, что может помогать видеокодеру 20 избегать излишнего применения контроля ошибок к ошибкам в RL, сообщаемым в E2E-обратной связи. В примере системы 12 кодера, показанной на фиг. 2, фильтр 50 ошибок находится в том же самом уровне, что и RTP 26A. Фильтр 50 ошибок включает в себя модуль 52 извлечения SN ошибок в RL и модуль 54 определения ошибок передачи (TX).
В одном примере, нижние уровни системы 12 кодера следят за состоянием передачи видеокадра посредством флага, такого как двоичное битовое поле. Например, когда ошибка возникает между системой 12 кодирования и AN-компонентом 15, AN-компонент 15 может отправлять отрицательное квитирование (NAK) в MAC-уровень 30. MAC-уровень 30 может сообщать PCP-модулю 56 о MAC-пакете, ассоциированном с NAK. PCP-модуль 56 определяет то, содержит ли потерянный MAC-пакет какие-либо данные видеопотока. Аудио- и видеоданные могут быть помещены в один MAC-пакет, даже если качество обслуживания (QoS) поддерживается в обратной линии связи по EV-DO Rev A. Если имеются видеоданные в потерянном MAC-пакете, то PCP-модуль 56 должен сообщать RLP-модулю 55 (показанному на фиг. 2) о потерянных данных и идентифицировать конкретную RLP-очередь (может быть несколько RLP-очередей), которая содержит пакет, который подвергнут ошибке при передаче, с помощью NAK RLP-пакета.
RLP-модуль 55 определяет то, какой пакет содержит потерянные данные. Затем RLP-модуль 55 сообщает RTP-уровню 26A в прикладном уровне то, какой пакет включает в себя потерянные данные, с помощью NAK пакета видеопотока. RTP-уровень 26A может хранить карту или таблицу, которая преобразует потерянный пакет в потерянные MB в кадре. Информация, идентифицирующая потерянные MB, передается в видеокодер 20 (или модуль контроля ошибок) для дополнительного контроля ошибок. Например, видеокодер 20 может применять внутрикадровое обновление или случайное обновление внутри MB для того, чтобы маскировать ошибку.
В другом подходе для идентификации ошибок в RL, при котором нижние уровни системы 12 кодера следят за состоянием передачи видеокадра посредством флага, видеокодер 20 может выполнять запрос в RLP-модуль 55 перед кодированием каждого нового кадра видеоданных, и сведения об ошибке могут передаваться непосредственно в видеокодер 20 для контроля ошибок. MAC-уровень 30 может автоматически отправлять NAK в PCP-модуль 56, если ошибка в RL возникает, и PCP-модуль может отправлять NAK в RLP-модуль 55, который задает флаг.
В любом из подходов, поясненных выше, если пакет видеокадра потерян, задается флаг в рамках нижнего уровня системы 12 кодера. После того как видеокодер 20 выполняет запрос в RLP-модуль 55, чтобы проверять флаг, флаг сбрасывается для следующего кодированного видеокадра. Видеокодер 20 применяет контроль ошибок к следующему кодированному кадру видеоданных, если флаг задан. Флаг указывает только то, произошла ли ошибка в RL при передаче последнего кодированного видеокадра, а не конкретный пакет, который потерян. Таким образом, видеокодер 20 может не знать, какая часть кадра потеряна, и применяет контроль ошибок с допущением, что ошибка произошла в любой части кадра. Поскольку контроль ошибок применяется ко всему кадру, сведения о том, произошла ли какая-либо ошибка, может быть столь же полезными, как сведения о том, какой пакет видеоданных потерян.
Технологии контроля ошибок в видео на основе нижнего уровня, описанные выше, разрешают ошибки, которые возникают в видеоданных в ходе передачи по RL (т.е. ошибки в RL). Технологии могут давать возможность видеокодеру 20 использовать сведения об ошибке из MAC-уровня 30 и немедленно применять контроль ошибок, не дожидаясь обратной связи от системы 14 декодера (т.е. приемного устройства).
Другая технология идентифицирует ошибки как в RL, так и в FL, которые включают в себя ошибки, возникающие в рамках AN-компонента 15. Например, система 14 декодера может предоставлять обратную связь в видеокодер 20 из системы 12 кодера, указывающую то, что ошибка возникла. Приемопередающее устройство (не показано) системы 12 кодера может принимать обратную связь от системы 14 декодера. Видеокодер 20 затем может применять контроль ошибок к следующему кодированному кадру, чтобы предотвращать распространение ошибки. Ошибки, сообщаемые из системы 14 декодера в систему 12 кодера, могут упоминаться "как сквозная (E2E) обратная связь".
Использование E2E-обратной связи может быть основано на RFC 4585 по обратной связи по аудио-видеопрофилю (AVPF), который предоставляет основанный на протоколе управления передачей в реальном времени (RTCP) механизм обратной связи, который дает возможность приемному устройству видеоданных (т.е. системе 14 декодера) предоставлять немедленную обратную связь в систему 12 кодера. E2E-обратная связь типично содержит SN потерянного RTP-пакета или RTP-пакета, содержащего потерянные данные. Например, если пакет RTP с SN 100 потерян, система 14 декодера обнаруживает потерю и отправляет обратную связь RTCP с SN 100
в систему 12 кодера с рабочими данными AVPF.
Как только видеокодер 20 обнаруживает ошибку, видеокодер 20 может применять контроль ошибок согласно любой подходящей технологии. Примеры подходящих технологий контроля ошибок включают в себя использование другого опорного кадра для следующего видеокадра, который кодируется, повышение внутренней частоты обновления в макроблоках (MB) (т.е. "обновление внутри макроблока") или вставку информационного кадра (I-кадра), чтобы останавливать распространение ошибки в устройстве 14 декодера (т.е. "вставку информационного кадра"). В I-кадре каждый MB является внутренне кодированным, т.е. каждый MB не зависит от предыдущего кадра, что может останавливать распространение ошибки. Для внутреннего обновления в MB только некоторые MB внутренне кодируются. Вставка информационного кадра может предоставлять лучшее качество видео, когда ошибки возникают, но потребляет больше полосы пропускания, поскольку передается весь I-кадр, а не MB, формирующие только часть кадра. В одном типе технологии контроля ошибок, которая использует опорный кадр для того, чтобы кодировать следующий кадр, MB кадра видеоданных могут быть кодированы посредством кодирования на основе движения. Кодирование на основе движения заключает в себе идентификацию MB предыдущего кадра, который является аналогичным (прогнозирующего MB), и отправку вектора движения, чтобы идентифицировать прогнозирующий MB в предыдущем кадре (или в последующем кадре в двунаправленном кодировании), и отправку разностного блока, служащего признаком различий между текущим MB и прогнозирующим MB. Вектор движения, в общем, характеризует расстояние между MB наилучшего совпадения (т.е. прогнозирующим MB) в ранее кодированном кадре и данным MB. Когда видеокодер 20 обнаруживает ошибку, видеокодер 20 может использовать кадр, кодированный перед кадром, включающим в себя ошибку, в качестве опорного кадра для следующего видеокадра, который кодируется.
Видеокодер 20 выполнен с возможностью применять контроль ошибок на основе двух источников информации: обратная связь по ошибкам в RL и E2E-обратная связь по ошибкам. Как пояснено выше, в беспроводной видеосвязи, ошибка, сообщаемая в E2E-обратной связи по ошибкам, может относиться к ошибке, возникающей в RL или FL. E2E-обратная связь не включает в себя индикацию относительно того, где ошибка произошла, и таким образом видеокодер 20 типично неспособен определять источник потерянного пакета.
В некоторых случаях, E2E-обратная связь по ошибкам может сообщать об ошибке в RL, которую видеокодер 20 уже идентифицировал посредством выполнения запроса к одному или более нижних уровней, таких как RLP-модуль 55, системы 12 кодера. Поскольку видеокодер 20 применяет контроль ошибок к ошибке в RL при идентификации ошибки в RL, видеокодер 20 типично разрешает RL к тому времени, когда ошибка в RL сообщена посредством E2E-обратной связи по ошибкам. Тем не менее, поскольку видеокодер 20 неспособен определять источник ошибки, сообщаемой в E2E-обратной связи по ошибкам, и различать ошибки в RL и ошибки в FL, видеокодер 20 может применять контроль ошибок к одной ошибке в RL больше одного раза, что может быть неэффективным использованием ресурсов и полосы пропускания. Например, применение контроля ошибок к одной ошибке дважды может снижать эффективность кодирования видеокодера 20 и приводить к ухудшению качества видеовывода 48.
Видеокодер 20 корректирует ошибки в RL до приема отчета об ошибке в RL от системы 14 декодера (через E2E-обратную связь по ошибкам). Корректирование ошибки в RL относительно быстро после обнаружения ошибки в RL помогает уменьшать артефакты, вызываемые посредством потерянного пакета или пакета, содержащего потерянные данные. В примере, показанном на фиг. 2, видеодекодер 42 предоставляет E2E-обратную связь по ошибкам. В других примерах, тем не менее, другие компоненты системы 14 декодера могут предоставлять E2E-обратную связь по ошибкам в систему 12 кодера. Как пояснено выше, видеокодер 20 может использовать любую подходящую технологию для идентификации ошибок в RL. В примере, показанном на фиг. 2, видеокодер 20 выполняет запрос в RLP-модуль 55 и считывает флаг, заданный в рамках модуля RLP 55, для того чтобы идентифицировать, произошла ли ошибка в RL в ходе передачи недавно кодированного видеокадра, в AN-компонент 15 (т.е. в ходе передачи по RL).
Фильтр 50 ошибок выполнен с возможностью принимать E2E-обратную связь по ошибкам от видеодекодера 42 и определять источник ошибки. Если фильтр 50 ошибок определяет то, что сообщаемая по E2E ошибка произошла в RL, может быть необязательным для видеокодера 20 корректировать ошибку в RL во второй раз. Тем не менее, если фильтр 50 ошибок определяет то, что ошибка, сообщаемая в E2E-обратной связи по ошибкам, произошла в FL, видеокодер 20 может корректировать ошибку в FL для того, чтобы останавливать распространение ошибки. Другими словами, фильтр 50 ошибок определяет то, скорректирована ли уже сообщаемая E2E ошибка как часть ошибки в RL, или видеокодер 20 должен корректировать ошибку.
Фильтр 50 ошибок может следить за ошибками в RL, которые корректируются посредством видеокодера 20, по меньшей мере, через две технологии. В первой технологии фильтр 50 ошибок принимает порядковый номер (SN) видеопакета видеокадра, который потерян в RL. Во второй технологии фильтр 50 ошибок принимает информацию, которая указывает, имеет ли недавно кодированный видеокадр ошибку в RL. Фильтр 50 ошибок в соответствии со второй технологией показан на фиг. 2. В одном примере второй технологии для идентификации ошибок в RL, RTP-уровень 26A назначает SN последнему пакету недавно кодированного видеокадра и предоставляет этот SN в модуль 52 извлечения SN ошибок в RL из 50 фильтра ошибок. Модуль 52 извлечения SN ошибок в RL определяет то, произошла ли ошибка в RL (т.е. потеряны ли один или более пакетов или данные в рамках пакетов), когда кодированный кадр, ассоциированный с SN, передан в AN-компонент 15, посредством считывания флага (к примеру, двоичного битового поля), заданного на нижнем уровне системы 12 кодера. Флаг, считываемый посредством модуля 52 извлечения SN ошибок в RL, является тем же флагом, считываемым посредством видеокодера 20, чтобы идентифицировать ошибку в RL. Флаг указывает, потеряны ли какие-либо данные в видеопотоке с момента, когда последний раз выполнялся запрос в нижний уровень. Если кадр, ассоциированный с SN, имеет ошибку, модуль 52 извлечения SN ошибок в RL сохраняет SN. Если кадр, ассоциированный с SN, не имеет ошибки, модуль 52 извлечения SN ошибок в RL продолжает хранить SN последнего кадра, который имел ошибку при передаче. SN, сохраненный в рамках модуля 52 извлечения SN ошибок в RL, упоминается как SN1.
В некоторых аспектах, если любой из пакетов, переносящих данные для кодированного кадра, потерян, видеокодер 20 применяет коррекцию ошибок ко всему видеокадру. Соответственно, посредством слежения за SN1 последнего пакета последнего кодированного видеокадра, который включает в себя одну или более ошибок в RL, модуль 52 извлечения SN ошибок в RL может отслеживать ошибки в RL, которые корректировал видеокодер 20. Например, если кодированный кадр разделен на пакеты с SN 101-115, и пакет, идентифицированный посредством SN 105, потерян в RL, видеокодер 20 применяет контроль ошибок к кодированному кадру. Таким образом, даже если передача пакета, идентифицированного посредством SN 115, не приводила к ошибке в RL, и поскольку SN типично являются последовательными, контроль ошибок также применяется к пакету, идентифицированному посредством SN 115. Таким образом, фильтр 50 ошибок отслеживает ошибки в RL, которые скорректированы, вместо точного отслеживания того, какие пакеты потеряны в RL. Фильтр 50 ошибок также может отслеживать ошибки в RL, которые скорректированы, посредством отслеживания SN точно соответствующего пакета(ов), которые потеряны или содержали ошибку.
В других аспектах, вместо применения коррекции ошибок ко всему видеокадру видеокодер 20 применяет коррекцию ошибок к части кадра видеоданных, в которой произошла ошибка. Например, видеокодер 20 может применять коррекцию ошибок к макроблоку в кадре или пакете, который переносит несколько макроблоков. Соответственно, посредством слежения за порядковым номером SN1 пакета, который скорректирован, или пакета, содержащего макроблок, который фактически скорректирован, модуль 52 извлечения SN ошибок в RL может отслеживать ошибки в RL, которые корректировал видеокодер 20.
Видеодекодер 42 сообщает E2E-обратную связь по ошибкам в модуль 54 определения ошибок TX фильтра 50 ошибок в форме порядкового номера SN2 потерянного RTP-пакета. Видеодекодер 42 отправляет E2E-обратную связь по ошибкам только тогда, когда имеется ошибка, и идентифицирует точно соответствующий пакет, который потерян. E2E-обратная связь по ошибкам может включать в себя более одного SN, если более одного пакета потеряно. В одном примере, модуль 54 определения ошибок TX отслеживает наибольший SN, сообщаемый посредством видеодекодера 42 как SN2, поскольку видеокодер 20 должен применять контроль ошибок ко всему кадру, и наибольший SN является характерным для видеокадра. Другими словами, только наибольший SN последнего пакета, используемого для того, чтобы кодировать видеокадр, требуется, чтобы уникально идентифицировать кадр.
Чтобы определять то, является ли ошибка, сообщаемая в E2E-обратной связи по ошибкам, ошибкой в RL, которая уже скорректирована, или ошибкой в FL, модуль 54 определения ошибок TX сравнивает SN2, принимаемый в E2E-обратной связи по ошибкам с SN1 последнего пакета последнего кодированного видеокадра, который имеет ошибки. Если SN2 больше, чем SN1, ошибка, сообщаемая в E2E-обратной связи по ошибкам, является ошибкой в FL, поскольку более высокий SN2 указывает то, что пакет, идентифицированный