ОБЛАСТЬ ТЕХНИКИ
[0001] Настоящее изобретение относится в общем к области масштабируемого видеокодирования. Более конкретно, настоящее изобретение относится к обеспечению обратной связи посредством использования кодов проверки целостности.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
[0002] В данном разделе описываются предпосылки или условия создания изобретения, изложенного в прилагаемой формуле изобретения. Данное описание может включать идеи, которые могли быть осуществлены, но необязательно являются идеями, которые ранее были сформулированы или осуществлены. Поэтому если не указано другое, то информация, представленная в данном разделе, не является известным уровнем техники по отношению к данному описанию и формуле в данной заявке и не признается известным уровнем техники вследствие включения в данный раздел.
[0003] Стандарты видеокодирования включают ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (известный так же как ISO/IEC MPEG-4 AVC). Кроме того, существуют проекты разработки новых стандартов видеокодирования. Одним из таких стандартов, находящимся в разработке, является стандарт SVC (scalable video coding, масштабируемое видеокодирование), который станет расширением стандарта H.264/AVC. Другим стандартом на стадии разработки является стандарт MVC (Multiview Coding, многоракурсное кодирование), который также является расширением стандарта H.264/AVC. Еще существуют разработки китайских стандартов видеокодирования.
[0004] Проект стандарта SVC описывается в документе JVT-U202 «Joint Draft 8 with proposed changes» 21 заседание JVT, HangZhou, Китай, октябрь, 2006, который доступен на ресурсе: http://ftp3.itu.ch/av-arch/ivt-site/2006 10 Hanqzhou/JVT-U202.zip. Проект стандарта MVC описывается в документе JVT-U209, "Joint Draft 1.0 on Multiview Video Coding", 21 заседание JVT, HangZhou, Китай, октябрь, 2006, который доступен на ресурсе: ftp3.itu.ch/av-arch/ivt-site/2006 10 Hancizhou/JVT-U209.zip.
[0005] Масштабируемый мультимедийный сигнал обычно упорядочивается в иерархические уровни данных, где видеосигнал кодируется в базовый уровень и один или более уровней расширения. Базовый уровень может включать отдельное представление кодированного мультимедийного потока, такое как последовательность видеоизображений. Уровни расширения могут включать данные для повышения качества относительно предыдущих уровней в иерархии уровней. Качество декодированного мультимедийного потока постепенно улучшается при добавлении уровней расширения к базовому уровню. Уровень расширения улучшает временное разрешение (т.е. частоту кадров), пространственное разрешение и/или просто качество видеоконтента, представляемое другим уровнем или его частью. Каждый уровень вместе со всеми зависимыми уровнями является представлением видеосигнала при конкретном пространственном разрешении, временном разрешении и/или уровне качества. Поэтому термин «представление масштабируемого уровня» используется в данном документе для описания масштабируемого уровня вместе со всеми зависимыми уровнями. Часть масштабируемого потока битов, соответствующая представлению масштабируемого уровня, может быть выделена и декодирована для получения представления исходного сигнала с определенной точностью.
[0006] Концепции VLC (Video Coding Layer - уровень видеокодирования) и NAL (Network Abstraction Layer - сетевой абстрактный уровень) пришла из стандарта AVC (Advanced Video Coding - усовершенствованное видеокодирование). VLC включает функциональные возможности кодека по обработке сигнала, например алгоритмы, такие как преобразование, квантование, предсказание с компенсацией движения, контурный фильтр и межуровневое предсказание. Кодированное изображение базового уровня или уровня расширения включает один или более слоев ("слайсов"). NAL инкапсулирует каждый слой, сформированный VLC, в один или более блоков NAL.
[0007] Каждый уровень SVC формируется из блоков NAL, представляющих собой кодированные видеобиты на данном уровне. Поток RTP (Real Time Transport Protocol - протокол реального времени), передающий только один уровень, может передавать блоки NAL, принадлежащие только этому уровню. Поток RTP, передающий полный масштабируемый поток видеобитов, может передавать блоки NAL базового уровня и один или более уровней расширения. SVC определяет порядок декодирования блоков NAL.
[0008] В некоторых случаях данные на уровне расширения могут отбрасываться после определенной позиции или на случайных позициях, где каждая позиция отбрасывания может включать дополнительные данные, предоставляющие все более улучшающееся визуальное качество. В случаях когда точки отбрасывания расположены часто, масштабируемость называется «мелкозернистой», далее используется термин FGS (Fine Grained Scalability - мелкозернистая масштабируемость). В отличие от FGS масштабируемость, которая обеспечивается уровнями расширения, которые могут усекаться только в определенных редких позициях, называется CGS (Coarse-grained Scalability - крупнозернистая масштабируемость). Кроме того, проект стандарта кодирования SVC, указанный выше, может также поддерживать масштабируемость, обычно называемую MGS (Medium Grained Scalability - среднезернистая масштабируемость). В соответствии с MGS изображения повышенного качества кодируются аналогично изображениям масштабируемого уровня CGS, но отображаются элементами синтаксиса высокого уровня, так же как и изображения уровня FGS. Необходимо отметить, что уровни расширения могут включать одновременно масштабирование качества (отношение сигнал/шум) CGS, MGS и FGS и пространственную масштабируемость.
[0009] В соответствии с H.264/AVC блок доступа включает одно первичное кодированное изображение. В некоторых системах обнаружение границ блока доступа упрощается путем вставки в поток битов разделительного блока NAL. В SVC блок доступа может включать множество первичных кодированных изображений, но не более одного изображения на каждую уникальную комбинацию значений dependency_id, temporal_id и quality_id. Кодированное изображение здесь может относиться ко всем блокам NAL в блоке доступа, имеющем конкретные значения dependency_id и quality_id. Необходимо отметить, что термины, используемые в SVC, могут быть изменены. Поэтому понятие, обозначаемое здесь как кодированное изображение, впоследствии может обозначаться другим термином, например представление уровня.
[0010] В SVC используется алгоритм, аналогичный используемому в H.264/AVC, для обеспечения иерархической временной масштабируемости. В SVC определенный набор опорных и неопорных изображений может отбрасываться из кодированного потока битов без влияния на декодирование остального потока битов. При иерархической временной масштабируемости требуется несколько опорных изображений для компенсации движения, т.е. существует буфер опорных изображений, включающий множество декодированных изображений, из которых кодер может выбрать опорное изображение для интер-предсказания. В H.264/AVC функция, называемая подпоследовательностями, обеспечивает иерархическую временную масштабируемость, где каждый уровень расширения включает подпоследовательности, а каждая подпоследовательность включает несколько опорных и/или неопорных изображений. Подпоследовательность также включает несколько взаимозависимых изображений, которые могут быть отброшены без нарушения любой другой подпоследовательности на любом более низком уровне подпоследовательностей. Уровни подпоследовательностей иерархически организованы на основе зависимости друг от друга и являются аналогом временных уровней в SVC. Поэтому когда подпоследовательность отбрасывается на самом верхнем уровне, остальной поток битов остается полноценным. В H.264/AVC передача информации о временной масштабируемости осуществляется посредством связанных с подпоследовательностями сообщений SEI (Supplemental Enhancement Information - дополнительная информация оптимизации). В SVC иерархия временных уровней указывается в заголовке блоков NAL.
[0011] Помимо этого в SVC используется механизм межуровневого предсказания, в котором определенная информация может быть предсказана на базе уровней, отличных от текущего воспроизводимого уровня или следующего более низкого уровня. Информация, которую можно предсказать между уровнями, включает внутреннюю текстуру, движение и данные остатков. Межуровневое предсказание движения также включает предсказание режима кодирования блоков, информацию заголовка и т.п., причем информация о движении на более низком уровне используется для предсказания более высокого уровня. Возможно также использовать внутреннее кодирование в SVC, т.е. предсказание на базе соседних макроблоков или на базе расположенных рядом макроблоков более низких уровней. В таких способах предсказания не используется информация о движении и поэтому их относят к способам внутреннего предсказания. Кроме того, данные остатков на более низких уровнях также могут использоваться для предсказания текущего уровня.
[0012] По сравнению с предыдущими стандартами сжатия видеоизображения пространственная масштабируемость SVC была расширена так, что базовый уровень может являться обрезанной и увеличенной в масштабе версией уровня расширения. Кроме того, модули квантования и энтропийного кодирования также были откорректированы для обеспечения поддержки FGS. Такой режим кодирования называется прогрессивной детализацией, когда последовательное уточнение коэффициентов преобразования кодируется при многократном уменьшении размера шага квантования с применением «циклического» энтропийного кодирования, сходного с кодированием битовой подплоскости.
[0013] SVC также определяет принцип декодирования за один цикл. Декодирование за один цикл может обеспечиваться на базе режима ограниченного предсказания внутренней текстуры, когда межуровневое предсказание внутренней текстуры применяется к макроблокам, для которых соответствующий блок базового уровня размещается во внутренних макроблоках. Одновременно внутренние макроблоки базового уровня используют ограниченное внутреннее предсказание. Поэтому при декодировании за один цикл декодеру требуется производить компенсацию движения и воссоздание полного изображения только для масштабируемого уровня, необходимого для воспроизведения (т.е. желаемого уровня), что снижает сложность декодирования. Все уровни, отличные от желаемого уровня, не требуется декодировать полностью, поскольку все или часть данных в макроблоках, не используемых для межуровневого предсказания (будь это межуровневое предсказание внутренней текстуры, межуровневое предсказание движения или межуровневое предсказание остаточных данных), не требуется для воссоздания нужного уровня.
[0014] Обычно для декодирования большинства изображений требуется один цикл декодирования, тогда как второй цикл декодирования применяется для воссоздания базовых представлений. Необходимо отметить, что расширение FGS или MGS блока доступа не используется при воссоздании базового представления блока доступа. Базовые представления требуются как опорные данные для предсказания, но не для вывода или отображения, и воссоздаются только для «ключевых изображений». Базовое представление обычно используется для интер-предсказания базового представления следующего ключевого изображения. Периодическое использование базовых представлений при интер-предсказании устраняет потенциальный дрейф и его временное распространение, вызываемое блоками NAL уровня расширения FGS или MGS, которые были отброшены или потеряны в тракте передачи от кодера к декодеру.
[0015] Масштабируемая структура в проекте SVC, указанном выше, характеризуется тремя элементами синтаксиса: temporal_id; dependency_id и quality_id. Элемент синтаксиса temporal_id используется для указания иерархии временной масштабируемости или косвенно частоты кадров. Представление масштабируемого уровня, включающее изображения с меньшим максимальным значением temporal_id, имеет меньшую скорость кадров, чем представление масштабируемого уровня, включающее изображения с большим максимальным значением temporal_id. Данный временной уровень обычно зависит от более низких временных уровней (например, временные уровни с меньшими значениями temporal_id), но обычно не зависит от более высокого временного уровня.
[0016] Элемент синтаксиса dependency_id используется для указания иерархии зависимостей межуровневого кодирования CGS (которая включает и масштабируемость отношения сигнал/шум и пространственную масштабируемость). При любом положении временного уровня изображение с меньшим значением dependency_id может использоваться для межуровневого предсказания при кодировании изображения с большим значением dependency_id.
[0017] Элемент синтаксиса quality_id используется для указания иерархии уровней качества на уровне FGS или MGS. При любом временном положении и с одинаковым значением dependency_id изображение со значением quality_id равным QL (Quality Level - уровень качества) использует изображение со значением quality_id равным QL-1 для межуровневого предсказания. Кодированный слой со значением quality_id больше нуля может кодироваться либо как отбрасываемый слой FGS, либо как неотбрасываемый слой MGS.
[0018] Для упрощения все блоки данных (например, блоки NAL или блоки NAL в SVC) в одном блоке доступа, имеющие одинаковое или совпадающее значение dependency_id, называются блоком зависимостей, причем иерархия временных уровней указывается в заголовке блока NAL.
[0019] Характерной особенностью SVC является то, что блоки FGS NAL можно легко отбрасывать или усекать, а блоки MGS NAL легко отбрасывать без влияния на пригодность потока битов. Тем не менее, когда данные FGS или MGS используются в качестве опорных данных для интерпредсказания при кодировании, то отбрасывание или усечение этих данных приведет к несоответствию между сигналом воспроизведения на стороне декодера и сигналом воспроизведения на стороне кодера. Такое несоответствие называется дрейфом, как указано выше.
[0020] Для управления дрейфом вследствие отбрасывания или усечения данных FGS или MGS стандарт SVC позволяет в определенном блоке зависимостей хранить базовое представление (путем декодирования только изображения CGS со значением quality_id равным нулю и всех зависимых данных более низкого уровня) в буфере декодированных изображений. При кодировании последующего блока зависимостей с таким же значением dependency_id все блоки NAL, включающие блоки NAL FGS или MGS, используют базовое представление как опорные данные для интер-предсказания. В результате полный дрейф вследствие отбрасывания или усечения блоков NAL FGS или MGS в предыдущем блоке доступа сохраняется в данном блоке доступа. Для других блоков зависимостей с таким же значением dependency_id все блоки NAL используют расширенные представления (декодированные из блоков NAL с самым большим значением quality_id и зависимых данных более низкого уровня) как опорные данные для интер-предсказания. Такая технология приводит к высокой эффективности кодирования.
[0021] В соответствии с проектом SVC, представленным в документе JVT-U202, как указано выше, каждый блок NAL включает в заголовке блока NAL элемент синтаксиса с именем use_base_prediction_flag. Если значение use_base_prediction_flag равно единице, это указывает, что для декодирования данного блока NAL используются базовые представления опорных изображений во время процесса интер-предсказания. Элемент синтаксиса store_base_rep_flag (может принимать значение ноль или единица) указывает, следует ли хранить базовое представление текущего изображения для следующих изображений, чтобы использовать для интерпредсказания, в дополнение к расширенному представлению.
[0022] В системах двухсторонней видеосвязи, например видеотелефонии, обычно существует канал обратной связи от приемника к передатчику. Канал обратной связи может использоваться помимо всего прочего для восстановления после ошибок передачи. Интерактивные сообщения контроля ошибок от приемника к передатчику можно классифицировать как запросы внутреннего обновления, индикацию потерь и положительное подтверждение правильного приема и декодирования данных. Кодер может реагировать на такие сообщения посредством внутреннего кодирования или выполнением кодирования с использованием опорных изображений, которые являются правильными по содержанию. Кодер также может далее повышать эффективность сжатия и степень коррекции ошибок, если он отслеживает пространственное распространение ошибок на стороне декодера. Кроме того, кодер может восстанавливать области, которые искажены из-за пространственного распространения ошибок, и использовать неискаженные области в качестве опорных данных для интер-предсказания.
[0023] Существует различная документация и стандарты по вопросу интерактивного контроля ошибок для видеосвязи с малым временем ожидания, где рассматриваются системы видеоконференцсвязи на базе ITU-T H.323/H.324, а также системы конференцсвязи на базе RTP.
[0024] Рекомендация ITU-T H.245 - это протокол управления для систем видеоконференцсвязи на базе ITU-T H.323/H.324. Помимо других вопросов в этой рекомендации определены команды и индикация, используемые в канале обратной связи от приемника к передатчику. Согласно H.245 команда может представлять собой сообщение, которое требует выполнения действия, но не явный ответ. В другом варианте согласно H.245 индикация может включать информацию, которая не требует действия или ответа. В рекомендации H.245 определяются сообщения для Н.261, Н.263, MPEG-1, MPEG-2. Кроме того, использование H.264/AVC в системах видеоконференцсвязи Н.323/324 описывается в рекомендации ITU-ТН.241.
[0025] Протокол RTP может использоваться для передачи аналоговых мультимедийных отсчетов, например кодированных аудио- и видеопотоков в сетях на базе протокола Интернета (IP). Протокол RTCP (Real-time Transport Protocol - протокол управления передачей в реальном времени) является сопутствующим протоколом RTP, т.е. RTCP может использоваться для дополнения RTP, когда это позволяет инфраструктура сети и приложения. Протоколы RTP и RTCP обычно передаются по протоколу UDP (User Datagram Protocol - протокол дейтаграмм пользователя), который в свою очередь передается по протоколу IP. Существует две версии IP, т.е. IPv4 и IPv6, причем одним из различий между этими двумя версиями является число адресуемых конечных точек.
[0026] Протокол RTCP может использоваться для контроля качества услуги, предоставляемой сетью, и для передачи информации об участниках текущего сеанса связи. RTP и RTCP разработаны для различных сеансов связи: от соединения между двумя конечными пунктами до многоадресной передачи, включающей тысячи конечных пунктов. Для управления общей скоростью потока битов, вызванного пакетами RTCP при многостороннем сеансе связи, интервал передачи пакетов RTCP, передаваемых одним конечным пунктом, соответствует числу участников данного сеанса связи. Любой формат кодирования мультимедийных отсчетов имеет специальный формат полезной нагрузки RTP, который определяет структуру мультимедийных отсчетов в полезной нагрузке пакета RTP.
[0027] Для RTP установлено несколько конфигураций, каждая из которых определяет расширения и модификации RTP, которые являются специфическими для конкретного семейства приложений. Распространенную конфигурацию называют конфигурацией (профилем) RTP для аудио- и видеоконференций с минимальным управлением (RTP/AVP). Данная спецификация обеспечивает семантику типовых полей в заголовке RTP для использования в аудио- и видеоконференциях. Данная спецификация также определяет формат полезной нагрузки RTP для некоторых аудио- и видеокодеков.
[0028] Другая конфигурация RTP известна как аудиовизуальная конфигурация с обратной связью (RTP/AVPF). RTP/AVPF позволяет терминалам посылать сигнал обратной связи быстрее, чем позволяет исходный протокол RTCP, и поэтому может использоваться для передачи сообщений с целью интерактивного исправления ошибок. Если число участников сеанса связи меньше, чем некоторое пороговое значение, можно использовать режим немедленной обратной связи RTP/AVPF. Режим немедленной обратной связи позволяет каждому участнику сообщать о событиях обратной связи практически немедленно. Первый режим RTCP в RTP/AVPF применяется, когда число участников такое, что режим немедленной обратной связи использовать невозможно. Поэтому обеспечивается более быстрая обратная связь, чем позволяет простой RTCP, но менее быстрая по сравнению с немедленной обратной связью RTP/AVPF.
[0029] Простым способом восстановления после ошибок передачи является отправка кодеру дальнего конца запроса на кодирование ошибочных областей в режиме внутреннего кодирования. Помимо исправления ошибок передачи блоком MCU (Multipoint Conference Control Unit - блок управления многосторонней связью) может быть подана команда быстрого обновления изображения, когда существует потребность переключиться от одного видеоисточника к другому в течение централизованной многостанционной конференции. Н.245 обеспечивает три команды быстрого обновления видеосигнала: команды быстрого обновления для изображения, команды быстрого обновления для GOB (Group of Blocks - группа блоков) Н.261 и Н.263 и команды быстрого обновления для некоторого числа MB (MackroBlock - макроблок) в последовательности растровой развертки. Такие команды быстрого обновления обычно называются videoFastUpdatePicture, videoFastUpdateGOB и videoFastUpdateMB соответственно.
[0030] Эти команды быстрого обновления требуют, чтобы кодер обновил указанную область изображения, что практически выполняется как внутреннее кодирование, хотя ответ кодера на команды быстрого обновления в спецификации Н.245 явно не определен. В отличие от Н.245, Н.241 обеспечивает только команду быстрого обновления изображения для H.264/AVC и определяет две альтернативные процедуры для ответа на принятую команду быстрого обновления изображения. В первой процедуре передается изображение IDR (Instantaneous Decoding Refresh - мгновенное обновление декодирования) и любые связанные наборы параметров. Во второй процедуре область изображения обновляется постепенно, например, за определенное число последовательных изображений. При внутреннем кодировании посылается сообщение SEI с точкой восстановления для указания момента, когда вся область изображения является правильной по содержанию, а также передаются любые связанные наборы параметров. Такая процедура постепенного восстановления может быть использована в средах передачи, подверженных ошибкам, в которых изображение IDR, вероятно, подвергнется ошибкам передачи вследствие своего большого размера относительно типового интер-кодированного изображения. Сообщения управления кодеком RTP/AVPF включают команду полного внутреннего запроса, которая является эквивалентной команде быстрого обновления изображения Н.245.
[0031] При внутреннем кодировании вследствие команд быстрого обновления снижается эффективность сжатия по сравнению с интеркодированием. Для повышения эффективности сжатия кодер может выбрать опорное изображение для интер-предсказания, в отношении которого известно, что оно является правильным, и которое доступно на базе обратной связи от декодера дальнего конца. Такой способ часто называют NEWPRED, как описывается в работе "Study on Adaptive Reference Picture Selection Coding Scheme For the NEWPRED-Receiver-Oriented Mobile Visual Communication System", автор Kimata и другие. Этот способ требует, чтобы схема видеокодирования допускала использование множества опорных изображений. Поэтому могут использоваться, например, Н.263, Приложение N, Приложение U или H.264/AVC. В соответствии с NEWPRED используется два типа сообщений обратной связи: NACK (Negative Acknowledgement - отрицательное подтверждение приема), которое указывает, что определенный пакет, определенное изображение или определенная область конкретного изображения приняты с ошибками; и ASK (Positive Acknowledgement - положительное подтверждение приема), которое указывает, какие изображения или части изображений либо приняты без ошибок либо являются правильными по содержанию. Изображение или часть изображения является правильным по содержанию, если кодированные данные приняты безошибочно и все данные, используемые для предсказания, являются правильными.
[0032] При применении NACK кодер обычно использует для интерпредсказания любое доступное опорное изображение, за исключением изображений, про которые известно, что они содержат ошибки в результате полученных сообщений NACK. Поскольку задержка сквозной передачи может быть больше, чем интервал между двумя кодируемыми изображениями, кодер может не знать, что некоторые из последних кодированных опорных изображений приняты с ошибками на момент кодирования нового изображения. Таким образом, режим NACK в NEWPRED устраняет распространение ошибок примерно за период времени, необходимый для передачи и подтверждения приема, что аналогично запросам на быстрое обновление. При применении ASK кодер обычно использует для интерпредсказания только те опорные изображения, про которые известно, что они являются правильными по содержанию в результате полученных сообщений АСК.
[0033] Существуют различные способы передачи сообщений о выборе опорного изображения. Синтаксис для таких сообщений может указываться в используемом протоколе управления. В другом варианте протокол управления может обеспечивать общий механизм формирования кадров для передачи сообщений о выборе опорного изображения, которые определяются как внешние для протоколов управления. В соответствии с установленным протоколом управления сообщениями спецификация Н.245 включает команды потери, которые относятся к полным изображениям (т.е. команда lostPicture). H.245 также включает команды потери, которые указывают число потерянных макроблоков в последовательности растровой развертки (т.е. команда videoBadMB для использования с Приложением N спецификации Н.263). Наконец H.245 также включает команды потери, которые явно указывают изображение, в котором произошли потери (т.е. команда lostPartialPicture для использования с Приложением U спецификации Н.263).
[0034] Видеокодер на удаленном конце должен выполнить корректирующее действие, такое как внутреннее кодирование или выбор безошибочного опорного изображения, в качестве ответа на принятую команду потери. Команда восстановления опорного изображения H.245 требует, чтобы кодер на удаленном конце использовал для предсказания только указанные изображения. Другими словами, это аналогично сообщению ASK, упомянутому выше. Необходимо отметить, что RTP/AVPF включает универсальное сообщение NACK, которое способно указывать потерю одного или более пакетов RTP, индикацию потери изображения, индикацию потери слоя. Индикация потери изображения является равнозначной команде H.245 lostPicture, а индикация потери слоя является равнозначной команде H.245 lostPartialPicture.
[0035] Как указано выше, синтаксис полезной нагрузки сообщений обратного канала может быть специальным для конкретного кодека, или синтаксис может быть универсальным для любого кодека, а семантика универсального синтаксиса определяется для каждого кодека отдельно. Примеры синтаксиса обратного канала для конкретного кодека включают сообщения, определяемые в Приложении N и Приложении U спецификации Н.263 и обратное сообщение NEWPRED в MPEG-4 Visual, указанном выше. В другом варианте рекомендация ITU-T H.271 определяет универсальный синтаксис сообщения обратного канала для использования с любым видеокодеком. В H.271 определяется шесть сообщений, включающих:
индикацию того, что декодирование одного или более изображений выполнено без обнаружения ошибок; индикацию того, что одно или более изображений полностью или частично потеряны, и индикацию того, что все или конкретные разделы данных из набора блоков кодирования какого-либо изображения потеряны. Кроме того, в Н.271 также определены следующие сообщения: значение CRC (Cyclical Redundancy Check - контроль циклическим избыточным кодом) для одного набора параметров; значение CRC для всех наборов параметров определенного типа и запрос на восстановление, который указывает, что кодер на удаленном конце должен полностью обновить передаваемый поток битов, как будто предыдущие видеоданные не были приняты.
[0036] Семантика, используемая для идентификации изображения, размер блока кодирования, выраженный в отсчетах, и определение набора параметров являются специальными для каждого формата кодирования. Поэтому Н.271 определяет семантику универсального синтаксиса сообщений для Н.261, Н263 и H.264/AVC. Сообщения обратного канала, установленные в Приложении N и Приложении U рекомендации Н.263, а также в Н.271, передаются в отдельном логическом канале поверх Н.245. Аналогично RTP/AVPF включает индикацию выбора опорного изображения, которая включает сообщение обратного канала в соответствии со стандартом видеокодирования, при этом расширение RTP/AVPF для сообщений управления кодеком включает сообщение обратного видеоканала, который передает сообщения в соответствии с Н.271.
[0037] Контроль ошибок включает определение того, что изображение или часть изображения является правильным по содержанию. В другом варианте контроль ошибок включает определение того, что изображение или часть изображения так или иначе не соответствует связанной информации о потере данных, искажениям при передаче и/или схеме предсказания кодирования. Схема предсказания кодирования включает стандартное интер-предсказание (т.е. предсказание с компенсацией движения), стандартное предсказание внутри изображения (т.е. внутренний отсчет изображения или коэффициент предсказания, предсказание векторов движения и контурная фильтрация) и межуровневое предсказание в соответствии с SVC. Контроль ошибок может выполняться кодером или декодером.
[0038] Например, если кадр n имеет искажения, и соответствующее сообщение канала обратной связи поступает в кодер в момент кодирования кадра n+d, кодер восстанавливает положение искаженных областей в кадрах от n до n+d-1 в декодере. Восстановление производится на базе векторов движения в кадрах от n+1 до n+d-1. Следовательно, кодер может устранить использование искаженных областей для интер-предсказания в кадрах от n до n+d-1. Пример алгоритма контроля ошибок обеспечивается в Н.263.
[0039] Качество контроля ошибок может быть повышено, если сообщения обратной связи содержат информацию о том, какой способ маскирования ошибок использует декодер, или какой способ маскирования ошибок задан в системе. В ответ на прием сообщения обратной связи относительно кадра n кодер должен восстановить процесс декодирования для кадров от n до n+d-1, чтобы опорные изображения в кодере точно соответствовали опорным изображениям в декодере. Поддержка маскирования ошибок и контроля ошибок включена в Н.245. Конкретнее, сигналы Н.245 «non-decoded MBs indication» могут указывать, какие макроблоки приняты с ошибками и обработаны как некодированные данные. Другими словами, такое сообщение указывает, что копия совмещенных макроблоков в предыдущем кадре была использована для маскирования ошибок. Однако вследствие вычислительных требований и сложности контроля ошибок, связанного с известным маскированием ошибок, не существует подходящих механизмов, отличных от индикации недекодированных макроблоков Н.245. Кроме того, индикация недекодированных макроблоков не является широко распространенной.
[0040] Использование сообщения обратной связи совместно с изображениями, хранящимися в качестве опорных изображений, но не выходных данных, аналогично базовым представлениям для FGS и MGS, описывается в заявках на патент США №09/935.119 и №11/369.321. Однако в вышеупомянутых традиционных системах и способах существуют проблемы. Такая проблема показана в следующем примере для системы видеосвязи с кодированием и каналом обратной связи в реальном времени от декодера на удаленном конце до кодера. Рассмотрим два блока доступа в потоке битов:
Q1, n … Q1, n+m
Q0, n … Q0, n+m, где применяются следующие обозначения:
Q0, n - кодированное изображение со значением qualityjd равным нулю в блоке доступа n
Q1, n - кодированное изображение со значением quality_id равным единице в блоке доступа n
Q0, n+m - кодированное изображение со значением quality_id равным нулю в блоке доступа n+m
Q1, n+m - кодированное изображение со значением quality_id равным единице в блоке доступа n+m
[0041] Блок доступа п является ключевым изображением, т.е. кодер устанавливает значение store_base_rep_flag равным 1. Допустим, что все уровни качества блока доступа n успешно декодированы и декодер удаленного конца посылает кодеру сообщение обратной связи, указывающее на успешное выполнение декодирования. Сообщение обратной связи принимается перед кодированием следующего «ключевого» блока доступа (n+m). Во время кодирования блока доступа n+m кодер может установить значение флага use_base_prediction_flag. Значение use_base_prediction_flag может быть установлено на ноль для (Q0, n+m) и (Q1, m+n), так что эти оба кодированных изображения предсказываются на базе (Q1, n) вместо (Q0, n) для повышения эффективности кодирования. В то же время флагу store_base_rep_flag может быть установлено значение единицы для обоих блоков (Q1, n+m) и (Q0, n+m), так что базовое представление сохраняется для последующего интер-предсказания изображений.
[0042] Поэтому существует проблема в том, что изображение (Q1,n) может быть потеряно во время передачи. В другом варианте элемент MANE (Media-Aware Network Element - сетевой элемент, осведомленный о медиаданных) или передатчик может сократить его путем отбрасывания некоторых или всех данных (Q1,n). А именно определение того, что декодирование блока доступа n выполнено полностью правильно, требуется для создания достоверного сообщения обратной связи от декодера на удаленном конце к кодеру. Однако в соответствии с проектом SVC в JVT-U202 декодер удаленного конца не имеет средств для определения того, что блок (Q1, n) первоначально присутствовал в потоке битов или содержал больше данных. Это происходит потому, что поток битов может быть полноценным независимо от присутствия изображения FGS или MGS (Q1, n). Кроме того, когда (Q1, n) включает слои FGS, не существует способа, чтобы определить, были ли усечены блоки NAL.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0043] Различные варианты осуществления данного изобретения обеспечивают систему и способ, в которой в кодере вычисляется/генерируется первый код проверки целостности по набору блоков NAL. Первый код проверки целостности затем пересылается декодеру в форме сообщения SEI. Декодер затем вычисляет второй код проверки целостности по фактически принятым блокам NAL. Этот второй код проверки целостности сравнивается с первым кодом проверки целостности, сгенерированным кодером и отправленным в сообщении SEI, чтобы указать, все ли фактически переданные блоки NAL, по которым был сгенерирован код проверки целостности, приняты без изменения их содержания. Кроме того, различные варианты осуществления обеспечивают способ контроля ошибок, который выполняется либо в кодере либо в декодере с целью определить, что блоки NAL являются правильными по содержанию на стороне декодера. Следовательно, изображения, которые передаются просто в виде кадров с внутренним кодированием, и изображения, которые передаются просто в виде кадров с интер-кодированием, проверяются на наличие ошибок. В соответствии с различными вариантами осуществления контроль ошибок обеспечивается в ситуациях, когда декодеру не удается предоставить кодеру достоверную информацию в отношении фактически декодированных данных.
[0044] Эти и другие преимущества и особенности настоящего изобретения вместе с устройством и способом работы станут очевидными из последующего подробного описания, которое сопровождается пояснительными чертежами, в которых одинаковые элементы имеют одинаковые обозначения на всех чертежах.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0045] На фиг.1 представлена типовая система мультимедийной связи для использования с настоящим изобретением.
[0046] На фиг.2 показан общий вид мобильного устройства, которое может быть использовано при осуществлении настоящего изобретения.
[0047] На фиг.3 представлена схема мобильного устройства, показанного на фиг.2.
[0048] На фиг.4 представлена схема операций процесса, осуществляемого в соответствии с одним вариантом осуществления.
[0049] На фиг.5 представлена схема операций процесса, осуществляемого в соответствии с другим вариантом осуществления.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0050] На фиг.1 представлена типовая система мультимедийной связи для использования с настоящим изобретением. Как показано на фиг.1, источник 100 данных обеспечивает исходный сигнал в аналоговом, несжатом цифровом или сжатом цифровом формате, или в любой комбинации этих форматов. Кодер 110 кодирует исходный сигнал в кодированный мультимедийный поток битов. Кодер 110 способен выполнять кодирование более одного типа данных, например аудио- и видеосигналов, или может потребоваться более одного кодера 110, чтобы кодировать различные типы данных в исходном сигнале. Кодер 110 также может принимать искусственно созданный входной сигнал, такой как графика или текст, или кодер может создавать кодированный поток битов из искусственно созданных разноформатных данных. В последующем описании для упрощения рассматривается обработка только одного кодированного мультимедийного потока битов с одним типом данных. Тем не менее, необходимо отметить, что типовые услуги вещания в реальном времени включают несколько потоков (обычно по меньшей мере аудиопоток, видеопоток и поток текстовых субтитров). Необходимо также отметить, что система может включать множество кодеров, но в последующем описании с целью упрощения рассматривается только один кодер 110 при сохранении универсальности описания.
[0051] Необходимо понимать, что хотя текст и примеры, содержащиеся в данном описании, описывают процесс кодирования, специалисту в данной области техники будет очевидно, что те же самые идеи и принципы также применимы к соответствующему процессу декодирования и наоборот.
[0052] Кодированный мультимедийный поток битов передается в запоминающее устройство 120. Запоминающее устройство 120 может включать память любого типа большой емкости для хранения кодированного мультимедийного потока битов. Формат кодированного мультимедийного потока битов в запоминающем устройстве 120 представляет собой простой независимый формат потока битов, или же один или более кодированных мультимедийных потоков битов инкапсулируются в контейнерный файл. Некоторые системы работают в режиме реального времени, т.е. пропускают хранение и передают кодированный мультимедийный поток битов от кодера 110 прямо на передатчик 130. Затем кодированный мультимедийный поток битов поступает на передатчик 130, также называемый сервером, по потребности. Форматом, используемым при передаче, может служить простой независимый формат потока битов, формат пакетного потока, или же один или более кодированных мультимедийных потоков могут инкапсулироваться в контейнерный файл. Кодер 110, запоминающее устройство 120 и передатчик 130 могут размещаться в одном физическом устройстве или могут входить в состав разных устройств. Кодер 110 и передатчик 130 могут работать с контентом реального времени, и в таком случае кодированный мультимедийный поток битов обычно долго не хранится, а сразу помещается в буфер на небольшие интервалы времени в кодере 110 контента и/или в передатчике 130 для выравнивания колебаний задержки при обработке, задержки при передаче и скорости кодированного мультимедийного потока.
[0053] Передатчик 130 передает кодированный мультимедийный поток битов с использованием стека протоколов связи. Стек протоколов может включать протоколы RTP (Real-Time Transport Protocol - транспортный протокол реального времени), UDP (User Datagram Protocol - протокол передачи дейтаграмм пользователя) и IP (Internet Protocol - протокол Интернета) и другие. Если стек протоколов связи является пакетно-ориентированным, то передатчик 130 инкапсулирует кодированный мультимедийный поток битов в пакеты. Например, при использовании RTP передатчик 130 инкапсулирует кодированный мультимедийный поток битов в пакеты RTP в соответствии с форматом полезной нагрузки RTP. Обычно каждый тип данных имеет специализированный формат RTP. Необходимо еще раз отметить, что система может включать более одного передатчика 130, но с целью упрощения в последующем описании рассматривается только один передатчик 130.
[0054] Передатчик подключается (необязательно) к шлюзу 140 через сеть связи. Шлюз 140 может выполнять различные виды функций, такие как преобразование потока пакетов, соответствующего одному стеку протоколов связи, в другой стек протоколов связи, объединение и разделение потоков данных, обработка потока данных в соответствии с нисходящим каналом и/или возможностями приемника, такая как управление скоростью битов пересылаемого потока в соответствии с действующими параметрами нисходящей сети. Примеры шлюзов 140 включают MCU (Multipoint Conference Control Unit - устройство управления многосторонней связью), шлюзы между сетями видеотелефонии с коммутацией каналов и коммутацией пакетов, серверы PoS (Push-to-talk over Cellular -полудуплексная сотовая связь), инкапсуляторы IP в системах DVB-H (Digital Video Broadcasting-handheld - стандарт цифрового вещания на мобильные устройства) или телеприставки, которые пересылают вещательные передачи локально в домашние беспроводные сети. При использовании RTP шлюз 140 называется микшером RTP и работает как конечная точка соединения RTP.
[0055] Система включает один или более приемников 150, которые обычно способны выполнять прием, демодуляцию и декапсуляцию передаваемого сигнала в кодированный мультимедийный поток битов. Кодированный мультимедийный поток битов затем обычно обрабатывается в декодере 160, на выход которого поступает один или более несжатых мультимедийных потоков. Наконец рендерер 170 воспроизводит несжатые мультимедийные потоки, например, в динамике или на дисплее. Приемник 150, декодер 160 и рендерер 170 могут размещаться в одном физическом устройстве или входить в состав разных устройств.
[0056] Необходимо отметить, что поток битов, подлежащий декодированию, может быть получен от удаленного устройства, расположенного в сети фактически любого типа. Кроме того, поток битов может быть получен от локального аппаратного или программного средства.
[0057] Масштабируемость с точки зрения скорости передачи битов, сложности декодирования и размера изображения является желательным свойством для неоднородной и подверженной ошибкам среды. Это свойство требуется для того, чтобы обойти ограничения, такие как ограничения на скорость передачи, разрешение дисплея, пропускную способность сети и вычислительные возможности приемного устройства.
[0058] Устройства связи в соответствии с настоящим изобретением могут взаимодействовать посредством различных технологий передачи, которые включают CDMA (Code Division Multiple Access - множественный доступ с кодовым разделением каналов), GSM (Global System for Mobile Communication - глобальная система мобильной связи), UMTS (Universal Mobile Telecommunication System - универсальная система мобильной связи), TDMA (Time Division Multiple Access - множественный доступ с временным разделением каналов, FDMA (Frequency Division Multiple Access -множественный доступ с частотным разделением каналов), TCP/IP (Transmission Control Protocol / Internet Protocol - стек протоколов IP), SMS (Short Messaging Service - служба коротких сообщений), MMS (Multimedia Messaging Service - служба мультимедийных сообщений), электронную почту, IMS (Instant Messaging Service - служба обмена мгновенными сообщениями), технологию Bluetooth, IEEE 802.11 и др., причем данные примеры не ограничивают настоящее изобретение. Устройства связи могут взаимодействовать через различные среды передачи, включающие беспроводные, инфракрасные, лазерные, кабельные соединения и т.п., причем данные примеры не ограничивают настоящее изобретение.
[0059] На фиг.2 и 3 представлено типовое мобильное устройство 12, в котором может быть осуществлено настоящее изобретение. Тем не менее необходимо понимать, что настоящее изобретение не ограничивается одним конкретным типом мобильного устройства 12 или другого электронного устройства. Некоторые или все функции, показанные на фиг.2 и 3, могут быть включены в любые или все устройства, представленные на фиг.1.
[0060] Мобильное устройство 12 на фиг.2 и 3 включает корпус 30, дисплей 32 в виде жидкокристаллического дисплея, клавиатуру 34, микрофон 36, динамик 38, батарею 40, инфракрасный порт 42, антенну 44, смарт-карту 46 в виде UISS в соответствии с вариантом осуществления данного изобретения, устройство 48 для чтения карт, схему 52 беспроводного интерфейса, схему 54 кодека, контроллер 56 и память 58. Эти отдельные схемы и элементы хорошо известны в данной области техники, например в линейке мобильных телефонов Nokia.
[0061] Как указано выше, потенциальная проблема существует для кодеков масштабируемого видеосигнала в применении к расширению существующего стандарта Н.264 (H.264/SVC), когда обратная связь с кодером при некоторых условиях не может обеспечить кодеру достоверную информацию относительно фактически декодированных данных. Это может происходить вследствие многоуровневой структуры потока битов, когда приемник не может принять все уровни данных (из-за усечения потока битов в тракте передачи). Декодер тогда не знает о том, что он принял не все уровни и декодирует только фактически полученные данные. Следовательно, качество выходного видеосигнала соответствует уровню принятого многоуровневого потока битов. Последняя версия проекта стандарта SVC в JVT, как указано выше, не предусматривает обеспечения обратной связи при таких условиях.
[0062] Различные варианты осуществления обеспечивают способ преодоления таких ограничений стандарта SVC посредством применения кодов проверки целостности. Первый код проверки целостности вычисляется/генерируется в кодере по набору блоков NAL. Необходимо отметить, что набор блоков NAL включает по меньшей мере один блок NAL со значением quality_id больше нуля. Первый код проверки целостности посылается декодеру в виде сообщения SEI. Затем декодер вычисляет второй код проверки целостности по фактически принятым блокам NAL. Этот второй код проверки целостности сравнивается первым кодом проверки целостности, сгенерированным кодером и переданным в сообщении SEI, чтобы принять решение относительно того, действительно ли все переданные блоки NAL, по которым был сгенерирован код проверки целостности, были приняты без изменения их содержания. Кроме того, различные варианты осуществления обеспечивают алгоритм контроля ошибок, который выполняется либо в кодере либо в декодере, чтобы определить, является ли содержание всех блоков NAL правильным на стороне декодера. Следовательно, изображения, которые передаются просто в виде кадров с внутренним кодированием, и изображения, которые передаются просто в виде кадров с интер-кодированием, проверяются на наличие ошибок.
[0063] На фиг.4 представлены операции, выполняемые кодером, таким как кодер 110 на фиг.1 и декодером, таким как декодер 160 на фиг.1. В соответствии с вариантом осуществления на шаге 400 кодер 110 кодирует входное изображение в блок доступа, включающий блоки NAL. Далее на шаге 410 кодер 110 генерирует первый код проверки целостности, который вычисляется по выбранному набору блоков NAL, включающих по меньшей мере один блок NAL со значением quality_id больше нуля. Первый код проверки целостности и его область действия (т.е., по какому блоку (блокам) доступа и расширяемым уровням вычислен данный код) передается декодеру, например, в форме сообщения SEI, встроенного в поток битов видеосигнала. На шаге 420 декодер 160 декодирует блок доступа из потока битов, поступающих от кодера 110. Далее на шаге 430 декодер принимает первый код проверки целостности и его область действия и вычисляет второй код проверки целостности по принятому набору блоков NAL, соответствующих указанной области. На шаге 440 декодер сравнивает первый и второй коды проверки целостности и определяет, все ли блоки NAL в пределах указанной области приняты безошибочно.
[0064] Далее на шаге 450 декодер 160 использует результат сравнения для генерирования сообщения обратной связи ASK или NACK с указанием области действия (которая указывает блок (блоки) доступа и расширяемые уровни, которых касается данное сообщение) для отправки кодеру 110. Сообщение обратной связи указывает, правильно ли приняты блоки NAL в пределах указанной области (например, сообщение обратной связи типа I) или правильно ли декодированы блоки по содержанию (например, сообщение обратной связи типа II). Для формирования сообщения обратной связи типа II декодер 160 выполняет процедуру контроля ошибок, чтобы определить, все ли блоки NAL являются правильными по содержанию (не показано). На шаге 460 кодер 110 принимает сообщение обратной связи. При приеме сообщения обратной связи типа I на шаге 470 кодер 110 выполняет процедуру контроля ошибок, чтобы определить, является ли расширенное представление правильным по содержанию. После этого кодер 110 кодирует другое входное изображение в другой блок доступа, повторяя операцию 400.
[0065] Простой алгоритм контроля ошибок на уровне изображения работает следующим образом. Для изображения с внутренним кодированием считается, что изображение с внутренним кодированием является верным по содержанию, если оно принято безошибочно. Для интеркодированного изображения считается, что если интеркодированное изображение принято без ошибок и связанные с ним опорные изображения являются правильными по содержанию, то интеркодированное изображение является правильным по содержанию.
[0066] На фиг.5 представлен другой вариант осуществления, в котором после того как кодер 110 на шаге 500 кодирует входное изображение в блок доступа, включающий блоки NAL, поток битов, включающий блоки доступа, пересылается в декодер 160. Декодер 160 на шаге 510 декодирует блок доступа из потока битов, и на шаге 520 декодер 160 генерирует сообщение обратной связи (например, сообщение обратной связи типа III), включающее область действия выбранных блоков NAL и первый код проверки целостности, вычисленный по принятому набору блоков NAL, соответствующих указанной области, помимо других элементов. На шаге 530 при приеме сообщения обратной связи типа III (включает область действия и первый код проверки целостности) кодер 110 вычисляет второй код проверки целостности по той же области блоков NAL и сравнивает первый и второй коды проверки целостности, чтобы на шаге 540 определить, все ли блоки NAL были приняты безошибочно. После этого, если сообщение обратной связи относится к интеркодированному изображению, кодер 110 на шаге 550 выполняет процедуру контроля ошибок, чтобы определить, что расширенное представление является правильным по содержанию.
[0067] Если принято решение, что расширенное представление является правильным по содержанию, кодер 110 кодирует следующий блок зависимостей на базе расширенного представления для блоков NAL со значением quality_id больше нуля с целью повышения эффективности кодирования путем повторения операции/цикла 500. Кроме того для блоков NAL в блоке зависимостей со значением quality_id равном нулю для интерпредсказания может использоваться либо базовое представление либо расширенное представление. Решение об использовании базового представления или расширенного представления основывается на том, какое представление обеспечивает лучшую эффективность кодирования. В то же время базовое представление блока зависимостей может храниться для будущего использования в качестве опорных данных для интерпредсказания.
[0068] В первом варианте осуществления код проверки целостности формируется из блоков VCL NA L со значением quality _id больше нуля в блоке зависимостей. Код проверки целостности считается необходимым только для блоков NAL, имеющих значение quality_id больше нуля. Это связано с тем, что потеря блоков NAL, которые имеют значение quality_id равное нулю и которые включают первичные кодированные слои опорных изображений, может быть обнаружена декодером.
[0069] В другом варианте осуществления код проверки целостности формируется для блоков VCL NAL блока зависимостей независимо от значения quality_id. Этот вариант осуществления позволяет обнаружение целостности без декодирования или разбора блоков NAL со значением quality_id равным нулю.
[0070] В следующем варианте осуществления код проверки целостности формируется для каждого набора блоков VCL NAL в блоке зависимостей, имеющего конкретное значение quality_id. Этот вариант осуществления позволяет определить целостность каждого уровня качества отдельно.
[0071] В следующем варианте осуществления код проверки целостности формируется для более чем одного блока доступа, причем каждый из более чем одного блоков доступа может быть частью любого подмножества блоков NAL, указанных выше. Другими словами, для набора блоков доступа, для которых вычисляется код проверки целостности, применяется соответствующий код проверки целостности, указанный выше. Этот вариант осуществления может использоваться для обеспечения более простого контроля ошибок.
[0072] Как указано выше, код проверки целостности связывается с областью, определяющей блоки NAL, используемые для формирования кода проверки целостности. Например, область действия может включать значение dependency_id и диапазон значений quality_id блоков NAL, которые были использованы для формирования кода проверки целостности.
[0073] Кроме того, кодер может включать данные проверки целостности (т.е. код проверки целостности и его область действия) в виде сообщения SEI в кодированный поток битов. В следующей таблице представлен пример синтаксиса и семантики сообщения SEI.
[0074] Информация, передаваемая в указанном сообщении SEI, относится к блоку доступа. Сообщение SEI может появляться перед любым блоком NAL кодированного слоя или любым блоком NAL разделения данных кодированного слоя соответствующего блока доступа. Элемент синтаксиса num_info_entries_minus1 (приращение 1) указывает число информационных записей, следующих за данным элементом синтаксиса. Значение может изменяться от 0 до 7 включительно. Элемент синтаксиса entry_dependency_id указывает значение dependency_id блока зависимостей, код проверки целостности уровня качества которого указывается в следующем элементе синтаксиса. Необходимо отметить, что записи entry_dependency_id могут появляться в порядке возрастания в соответствии со своими значениями. Элемент синтаксиса quality_layer_crc[i] представляет собой код CRC (Cyclic Redundancy Check - контроль циклическим избыточным кодом) для всех блоков NAL со значением quality_id больше нуля в блоке зависимостей.
[0075] Значение quality_layer_crc[i] может быть равным значению переменной crcVal, которое получается при выполнении следующего процесса с использованием псевдокода:
qNalUnits[pLen]=0
qNalUnits[pLen+1]=0
crcVal=OxFFFF
for(bitldx=0; bitldx<(pLen+2) * 8; bitldx++) {
crcMsb=(crcVal >> 15) & 1
bitVal=(qNalUnits[bitldx >> 3] >> (7 - (bitldx & 7))) & 1
crcVal=(((crcVal << 1)+bitVal) & OxFFFF) ∧ (crcMsb * 0×1021)
}
[0076] Необходимо отметить, что переменная qNalUnits является строкой байтов, причем начало строки байтов включает данные, для которых вычисляется CRC; переменную pLen, которая указывает число байтов данных, для которых вычисляется код CRC; и строку байтов переменной qNalUnits, где qNalUnits имеет достаточную длину, которая позволяет добавить два дополнительных байта с нулевым значением в конце данных, для которых вычисляется код CRC. Кроме того, переменная qNalUnits может включать конкатенацию в порядке расположения байтов в сети для байтов всех блоков NAL со значением quality_id больше нуля в блоке зависимостей, где сами байты находятся в порядке декодирования. Необходимо также отметить, что данные проверки целостности, т.е. контрольная сумма, могут вычисляться по другим вариантам CRC или в соответствии с другими контрольными суммами, включая SHA1 и MD5, причем данные примеры не ограничивают настоящее изобретение.
[0077] Наконец, сообщение обратной связи может передаваться либо в основной полосе либо посредством протокола передачи вне полосы. Примером такого протокола служит отчет приемника RTCP, где компоненты протокола поддерживают синхронизацию с передатчиком видеосигнала (например, RTCP в форме временной метки). В другом окружении сообщение обратной связи может включать идентификатор изображения или блока доступа, по которому была вычислена контрольная сумма.
[0078] Настоящее изобретение определяет общий смысл способа, который может быть реализован в одном из вариантов посредством программного продукта, который включает исполняемые компьютером команды, такие как программный код, исполняемый компьютерами в сетевом окружении. Как правило, программные модули включают операции, программы, объекты, компоненты, структуры данных и др., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Исполняемые компьютером программы, связанные структуры данных и программные модули представляют собой примеры программного кода для осуществления шагов, раскрываемых в данном описании способов. Конкретная последовательность таких исполняемых команд или связанных структур данных представляет собой примеры соответствующих действий для осуществления функций, описываемых такими шагами.
[0079] Программное обеспечение и веб-реализация настоящего изобретения могут быть осуществлены посредством стандартных способов программирования с использованием логики на базе логических правил и другой логики для осуществления различных операций поиска в базе данных, операций корреляции, операций сравнения и операций принятия решения. Необходимо также отметить, что термины «компонент» и «блок», используемые в данном описании и формуле изобретения, предназначены для включения вариантов осуществления на базе одной или более строк программного кода и/или аппаратного обеспечения и/или оборудования для приема ввода данных вручную.
[0080] Вышеизложенное описание вариантов осуществления настоящего изобретения предназначено для пояснения. Данное описание не является исчерпывающим и не ограничивает настоящее изобретение раскрытой в данном описании формой; модификации и варианты являются возможными в свете изложенных идей или могут быть получены при применении настоящего изобретения. Данные варианты осуществления были выбраны и представлены с целью пояснения принципов настоящего изобретения и его практического применения, чтобы позволить специалисту в данной области техники применять настоящее изобретение в различных вариантах осуществления и с различными модификациями, которые подходят для конкретного предполагаемого применения. В частности, настоящее изобретение может быть использовано с любым форматом кодирования мультимедийных отсчетов, обеспечивающим параметры, аналогичные FGS и MGS в SVC. Необходимо отметить, что параметры FGS и MGS, необходимые для различных вариантов осуществления, таковы, что имеется такой блок данных (блок NAL со значением quality_id больше нуля в FGS и MGS), что мультимедийные отсчеты могут быть декодированы даже в том случае, если этот блок данных отбрасывается или усекается.
Изобретение относится к области масштабируемого видеокодирования и, в частности, к обеспечению обратной связи посредством использования кодов проверки целостности. Техническим результатом является обеспечение контроля ошибок в ситуациях, когда декодеру не удается предоставить кодеру достоверную информацию в отношении фактически декодированных данных. Указанный технический результат достигается тем, что используют первый код проверки целостности, который вычисляется в кодере и затем передается декодеру в виде сообщения дополнительной информации оптимизации. Декодер вычисляет второй код проверки целостности по фактически принятым блокам сетевого абстрактного уровня, причем второй код проверки целостности сравнивается с первым кодом проверки целостности, генерированным кодером и отправленным в сообщении дополнительной информации оптимизации, чтобы определить, действительно ли все из переданных блоков сетевого абстрактного уровня (NAL), по которым был генерирован код проверки целостности, приняты без изменения их содержания. Кроме того, обеспечивается алгоритм контроля ошибок, который может выполняться в кодере или декодере, чтобы определить на стороне декодера, являются ли блоки сетевого абстрактного уровня правильными по содержанию. Следовательно, изображения, которые передаются только в виде кадров с внутренним кодированием, и изображения, которые передаются только в виде кадров с интеркодированием, проверяются на наличие ошибок. 9 н. и 24 з.п. ф-лы, 5 ил.
1. Способ масштабируемого видеокодирования, включающий: кодирование изображения в первый блок доступа путем генерирования
первого кода проверки целостности по первому набору блоков данных, причем первый набор блоков данных содержит по меньшей мере часть первого блока доступа, при этом первый набор блоков данных включает по меньшей мере один блок данных, имеющий значение quality_id больше нуля в блоке зависимостей, так что изображение может быть декодировано, даже если блок данных был отброшен и/или усечен, причем блок зависимостей является набором блоков данных в первом блоке доступа, который имеет совпадающее значение dependency_id.
2. Способ по п.1, также включающий кодирование второго изображения во второй блок доступа, причем второй блок доступа включает второй набор блоков данных, включающий по меньшей мере один блок данных, который зависит по меньшей мере от одного блока данных из первого блока доступа, при этом генерируют второй код проверки целостности в соответствии по меньшей мере с одним блоком данных, включенным во второй блок доступа, и по меньшей мере с одним блоком данных из первого блока доступа.
3. Способ по п.1, в котором каждый блок данных в первом наборе блоков данных имеет значение quality_id больше нуля в блоке зависимостей.
4. Способ по п.1, также включающий генерирование дополнительных кодов проверки целостности по дополнительным блокам доступа для дополнительных наборов мультимедийных отсчетов, причем первый блок доступа и каждый из дополнительных блоков доступа включает один блок из по меньшей мере одного блока данных, имеющего значение quality_id больше нуля в блоке зависимостей, блоков данных, имеющих переменные значения quality_id в блоке зависимостей, и блоков данных, имеющих совпадающие конкретные значения quality_id в блоке зависимостей.
5. Способ по п.1, в котором первый набор блоков данных характеризуется областью действия, которая характеризует первый набор блоков данных, используемых для получения первого кода проверки целостности, и указывается параметром dependency_id.
6. Способ по п.5, в котором область действия и первый код проверки целостности включают в первый блок доступа.
7. Способ по п.1, также включающий: прием области действия и либо сообщения обратной связи с положительным подтверждением приема, либо сообщения обратной связи с отрицательным подтверждением приема, причем либо сообщение обратной связи с положительным подтверждением, либо сообщение обратной связи с отрицательным подтверждением указывает, является ли первый набор блоков данных в пределах упомянутой области правильным по содержанию, при этом кодирование осуществляют в соответствии по меньшей мере с одним из сообщения обратной связи с положительным подтверждением и сообщения обратной связи с отрицательным подтверждением, при этом указанная область действия характеризует блоки данных набора блоков данных, по которым генерируется первый код проверки целостности, и указывается параметром dependency_id.
8. Способ по п.1, также включающий: прием области действия и либо сообщения обратной связи с положительным подтверждением приема, либо сообщения обратной связи с отрицательным подтверждением приема, причем либо сообщение обратной связи с положительным подтверждением, либо сообщение обратной связи с отрицательным подтверждением указывает, является ли первый набор блоков данных в пределах указанной области правильным по содержанию; и выполнение контроля ошибок, чтобы определить, является ли набор блоков данных правильным по содержанию, причем кодирование осуществляется в соответствии по меньшей мере с одним из сообщения обратной связи с положительным подтверждением, сообщения обратной связи с отрицательным подтверждением и контроля ошибок, при этом указанная область действия характеризует блоки данных набора блоков данных, по которым генерируется первый код проверки целостности, и указывается параметром dependency_id.
9. Машиночитаемый носитель информации, который включает компьютерный код, сконфигурированный для осуществления способа по любому из пп.1-8.
10. Кодирующее устройство, включающее: процессор; и
блок памяти, функционально соединенный с процессором и включающий: компьютерный код, сконфигурированный для масштабируемого видеокодирования изображения в первый блок доступа путем по меньшей мере генерирования первого кода проверки целостности по первому набору блоков данных, причем первый набор блоков данных содержит по меньшей мере часть первого блока доступа, при этом первый набор блоков данных включает по меньшей мере один блок данных, имеющий значение quality_id больше нуля в блоке зависимостей, так что изображение может быть декодировано, даже если блок данных был отброшен и/или усечен, причем блок зависимостей является набором блоков данных в первом блоке доступа, который имеет совпадающее значение dependency_id.
11. Устройство по п.10, в котором блок памяти также включает компьютерный код, сконфигурированный для кодирования второго изображения во второй блок доступа, причем второй блок доступа включает второй набор блоков данных, включающий по меньшей мере один блок данных, который зависит по меньшей мере от одного блока данных из первого блока доступа, при этом генерируется второй код проверки целостности в соответствии по меньшей мере с одним блоком данных, включенным во второй блок доступа, и по меньшей мере одним блоком данных из первого блока доступа.
12. Устройство по п.10, в котором каждый блок данных в первом наборе блоков данных имеет значение quality_id больше нуля в блоке зависимостей.
13. Устройство по п.10, в котором блок памяти также включает компьютерный код, сконфигурированный для генерирования дополнительных кодов проверки целостности по дополнительным блокам доступа для дополнительных наборов мультимедийных отсчетов, причем первый блок доступа и каждый из дополнительных блоков доступа включает один из по меньшей мере одного блока данных со значением quality_id больше нуля в блоке зависимостей, блоков данных с переменным значением quality_id в блоке зависимостей и блоков данных с совпадающими конкретными значениями quality_id в блоке зависимостей.
14. Устройство по п.10, в котором блок памяти также включает компьютерный код, сконфигурированный для: приема области действия и либо сообщения обратной связи с положительным подтверждением приема, либо сообщения обратной связи с отрицательным подтверждением приема, причем либо сообщение обратной связи с положительным подтверждением, либо сообщение обратной связи с отрицательным подтверждением указывает, является ли первый набор блоков данных в пределах упомянутой области правильным по содержанию, при этом кодирование осуществляется в соответствии по меньшей мере с одним из сообщения обратной связи с положительным подтверждением и сообщения обратной связи с отрицательным подтверждением, при этом указанная область действия характеризует блоки данных набора блоков данных, по которым генерируется первый код проверки целостности, и указывается параметром dependency_id.
15. Устройство по п.10, в котором блок памяти также включает компьютерный код, сконфигурированный для: приема области действия и либо сообщения обратной связи с положительным подтверждением приема, либо сообщения обратной связи с отрицательным подтверждением приема, причем либо сообщение обратной связи с положительным подтверждением, либо сообщение обратной связи с отрицательным подтверждением указывает, является ли первый набор блоков данных в пределах указанной области принятым без ошибок и/или правильным по содержанию, при этом указанная область действия характеризует блоки данных набора блоков данных, по которым генерируется первый код проверки целостности, и указывается параметром dependency_id; и выполнения контроля ошибок, чтобы определить, является ли набор блоков данных правильным по содержанию, причем кодирование выполняется в соответствии по меньшей мере с одним из сообщения обратной связи с положительным подтверждением, сообщения обратной связи с отрицательным подтверждением и контроля ошибок.
16. Способ декодирования первого блока доступа с получением изображения, включающий:
прием первой области действия, указывающей первый набор блоков данных, который содержит по меньшей мере часть первого блока доступа, и первого кода проверки целостности, связанного с первым блоком доступа, причем первый код проверки целостности генерирован по первому набору блоков данных, при этом указанная область действия указывается параметром dependency_id;
генерирование второго кода проверки целостности по первому набору блоков данных, причем первый набор блоков данных включает по меньшей мере один блок данных, имеющий значение quality_id больше нуля в блоке зависимостей, так что изображение может быть декодировано, даже если блок данных был отброшен и/или усечен, причем блок зависимостей является набором блоков данных в первом блоке доступа, который имеет совпадающее значение dependency_id.
17. Способ по п.16, также включающий выполнение контроля ошибок, чтобы определить, является ли первый набор блоков данных правильным по содержанию.
18. Способ по п.16, также включающий декодирование второго изображения, кодированного во второй блок доступа, причем второй блок доступа включает второй набор блоков данных, включающий по меньшей мере один блок данных, который зависит по меньшей мере от одного блока данных в первом блоке доступа, при этом генерируют третий код проверки целостности в соответствии по меньшей мере с одним блоком данных, включенным во второй блок доступа, и по меньшей мере с одним блоком данных из первого блока доступа.
19. Способ по п.16, в котором каждый блок данных в первом наборе блоков данных имеет значение quality_id больше нуля в блоке зависимостей.
20. Способ по п.16, также включающий декодирование дополнительных кодов проверки целостности по дополнительным блокам доступа для дополнительных наборов мультимедийных отсчетов, причем первый блок доступа и каждый из дополнительных блоков доступа включает один из по меньшей мере одного блока данных со значением quality_id больше нуля в блоке зависимостей, блоков данных с переменными значениями quality_id в блоке зависимостей и блоков данных с совпадающими конкретными значениями quality_id в блоке зависимостей.
21. Способ по п.16, также включающий: сравнение первого и второго кодов проверки целостности, чтобы определить, все ли блоки данных в наборе блоков данных приняты без ошибок; и генерирование в пределах последующей области действия либо сообщения обратной связи с положительным подтверждением приема, либо сообщения обратной связи с отрицательным подтверждением приема, причем либо сообщение обратной связи с положительным подтверждением, либо сообщение обратной связи с отрицательным подтверждением указывает, является ли первый набор блоков данных в пределах первой области принятым без ошибок и/или правильным по содержанию.
22. Машиночитаемый носитель информации, который включает компьютерный код, сконфигурированный для осуществления способа по любому из пп.16-21.
23. Декодирующее устройство, включающее: процессор; и
блок памяти, функционально соединенный с процессором и включающий:
компьютерный код, сконфигурированный для декодирования первого блока доступа с получением изображения путем приема первой области действия, указывающей первый набор блоков данных, содержащий по меньшей мере часть первого блока доступа, и первого кода проверки целостности, связанного с первым блоком доступа, причем первый код проверки целостности генерируется по первому набору блоков данных, при этом область действия указывается параметром dependency_id, а также для генерирования второго кода проверки целостности по первому набору блоков данных, при этом первый набор блоков данных включает по меньшей мере один блок данных, имеющий значение quality_id больше нуля в блоке зависимостей, так что изображение может быть декодировано, даже если блок данных был отброшен и/или усечен, причем блок зависимостей является набором блоков данных в первом блоке доступа, которые имеют совпадающее значение dependency_id.
24. Устройство по п.23, в котором блок памяти также включает компьютерный код, сконфигурированный для выполнения контроля ошибок, чтобы определить, является ли первый набор блоков данных правильным по содержанию.
25. Устройство по п.23, в котором блок памяти также включает компьютерный код, сконфигурированный для декодирования второго изображения, кодированного во второй блок доступа, причем второй блок доступа включает второй набор блоков данных, включающий по меньшей мере один блок данных, который зависит по меньшей мере от одного блока данных в первом блоке доступа, при этом генерируется третий код проверки целостности в соответствии по меньшей мере с одним блоком данных, включенным во второй блок доступа, и по меньшей мере с одним блоком данных из первого блока доступа.
26. Устройство по п.23, в котором каждый блок данных в первом наборе блоков данных имеет значение quality_id больше нуля в блоке зависимостей.
27. Устройство по п.23, в котором блок памяти также включает компьютерный код для декодирования дополнительных кодов проверки целостности по дополнительным блокам доступа для дополнительных наборов мультимедийных отсчетов, причем первый блок доступа и каждый из дополнительных блоков доступа включает по меньшей мере один из по меньшей мере одного блока данных со значением quality_id больше нуля в блоке зависимостей, блоков данных с переменными значениями quality_id в блоке зависимостей и блоков данных с совпадающими конкретными значениями quality_id в блоке зависимостей.
28. Устройство по п.23, в котором блок памяти также включает: компьютерный код, сконфигурированный для сравнения первого и второго кодов проверки целостности, чтобы определить, все ли блоки данных в наборе блоков данных приняты без ошибок; и компьютерный код, сконфигурированный для генерирования в пределах последующей области действия либо сообщения обратной связи с положительным подтверждением приема, либо сообщения обратной связи с отрицательным подтверждением приема, причем либо сообщение обратной связи с положительным подтверждением, либо сообщение обратной связи с отрицательным подтверждением указывает, является ли первый набор блоков данных в пределах первой области по меньшей мере принятым без ошибок или правильным по содержанию.
29. Способ декодирования первого блока доступа с получением изображения, включающий:
генерирование в соответствии с областью действия либо сообщения обратной связи с положительным подтверждением приема, либо сообщения обратной связи с отрицательным подтверждением приема, причем либо сообщение обратной связи с положительным подтверждением, либо сообщение обратной связи с отрицательным подтверждением указывает, является ли набор блоков данных, включающий первый блок доступа в пределах упомянутой области, правильным по содержанию, при этом указанная область действия характеризует набор блоков данных, содержащий по меньшей мере часть первого блока доступа, первый код проверки целостности связан с первым блоком доступа, при этом первый код проверки целостности генерируется по упомянутому набору блоков данных.
30. Способ по п.29, включающий, после приема области действия и либо сообщения обратной связи с положительным подтверждением приема, либо сообщения обратной связи с отрицательным подтверждением приема, генерирование в кодере второго кода проверки целостности по упомянутой области, сравнение первого и второго кодов проверки целостности для определения, принят ли набор блоков данных без ошибок, а также контроль ошибок в кодере для определения, является ли набор блоков данных правильным по содержанию.
31. Машиночитаемый носитель информации, включающий компьютерный код, сконфигурированный для осуществления способа по п.29 или 30.
32. Декодирующее устройство, включающее: процессор; и
блок памяти, функционально соединенный с процессором и включающий: компьютерный код, сконфигурированный для декодирования первого блока доступа с получением изображения;
компьютерный код, сконфигурированный для генерирования в соответствии с областью действия либо сообщения обратной связи с положительным подтверждением приема, либо сообщения обратной связи с отрицательным подтверждением приема, причем либо сообщение обратной связи с положительным подтверждением приема, либо сообщение обратной связи с отрицательным подтверждением указывает, является ли набор блоков данных, включающий первый блок доступа в пределах упомянутой области, правильным по содержанию, при этом указанная область действия характеризует набор блоков данных, содержащий по меньшей мере часть первого блока доступа, первый код проверки целостности связан с первым блоком доступа, при этом первый код проверки целостности генерируется по упомянутому набору блоков данных.
33. Устройство по п.32, где после приема области действия и либо сообщения обратной связи с положительным подтверждением приема, либо сообщения обратной связи с отрицательным подтверждением приема в кодере генерируется второй код проверки целостности по упомянутой области, сравнивается первый и второй код проверки целостности для определения, принят ли набор блоков данных без ошибок, а также в кодере выполняется контроль ошибок для определения, является ли набор блоков данных правильным по содержанию.
STOCKHAMMER Т | |||
et al | |||
Error control for wireless progressive video transmission, IEEE ICIP 2002, vol.1, 22 September 2002, c.545-548 | |||
МАСШТАБИРУЕМОЕ КОДИРОВАНИЕ ОБЪЕКТОВ МУЛЬТИМЕДИА | 2001 |
|
RU2284671C2 |
WO 2006111087 A1, 2006.10.26 | |||
СПОСОБ ИЗВЛЕЧЕНИЯ СЕЛЕНА | 0 |
|
SU217644A1 |
US 2002150158 A1, 2002.10.17 | |||
СПОСОБ ОБРАБОТКИ КОДА ОШИБКИ СЖАТОГО ИЗОБРАЖЕНИЯ ПРИ ПЕРЕДАЧЕ | 2002 |
|
RU2283543C2 |
RU 2005103827 A, 2005.09.10 | |||
SCHAAR VAN DER M | |||
et al, UNEQUAL PACKET LOSS |
Авторы
Даты
2011-10-27—Публикация
2008-04-15—Подача