КОДИРОВАНИЕ ВИДЕО С РАСШИРЕННОЙ ПОДДЕРЖКОЙ ДЛЯ АДАПТАЦИИ ПОТОКА И СТЫКОВКИ
VIDEO CODING WITH EXTENDED SUPPORT FOR ADAPTATION OF FLOW AND CONNECTION

[0001] Настоящая заявка испрашивает приоритет:
предварительной заявки на патент США № 61/636,566, поданной 20 апреля 2012;
предварительной заявки на патент США №61/643,100 поданной 4 мая 2012; и
предварительной заявки на патент США №61/667,371 поданной 2 июля 2012,
все содержимое каждой из которых тем самым включено в настоящее описание по ссылке.
ОБЛАСТЬ ТЕХНИКИ
[0002] Настоящее раскрытие относится к кодированию видео и, более подробно, к способам, относящимся к закодированным данным видео с произвольным доступом.
УРОВЕНЬ ТЕХНИКИ
[0003] Цифровые видео возможности могут быть включены в широкий диапазон устройств, включающий в себя цифровые телевизоры, цифровые системы прямого вещания, беспроводные системы вещания, персональные цифровые помощники (PDA), ноутбуки или настольные компьютеры, планшетные компьютеры, электронные книги, цифровые камеры, цифровые устройства регистрации, цифровые медиаплееры, видео игровые устройства, пульты видеоигр, сотовые или спутниковые радио-телефоны, так называемые “смартфоны”, видео устройства организации телеконференций, устройства потоковой передачи видео, и т.п. Эти цифровые видео устройства реализуют способы сжатия видео, определенные согласно стандартам кодирования видео. Цифровые видео устройства реализуют способы сжатия видео, такие как описаны в стандартах, определенных с помощью MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Часть 10, Усовершенствованное кодирование видео (AVC), стандарт высокоэффективного кодирования видео (HEVC), находящегося в настоящее время в развитии, и расширениях таких стандартов. Видео устройства могут передавать, принимать, кодировать, декодировать и/или хранить цифровую информацию видео более эффективно, реализуя такие способы сжатия видео.
[0004] Способы сжатия видео выполняют пространственное (внутри картинки) предсказание и/или временное (между картинками) предсказание, чтобы уменьшить или удалить избыточность, присущую видео последовательностям. Для основанного на блоке кодирования видео видео-вырезка (то есть, видео кадр или часть видео кадра) может быть разделена на блоки видео, которые могут также упоминаться как блоки дерева кодирования (CTU), единицы кодирования (CU) и/или узлы кодирования, единицы кодирования (CU) и/или узлы кодирования. Блоки видео во внутренне кодированной (I) вырезке картинки закодированы, используя пространственное предсказание относительно опорных выборок в соседних блоках в одной и той же картинке. Блоки видео во внешне кодированной (P или B) вырезке картинки могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в одной и той же картинке или временное предсказание относительно опорных выборок в других опорных картинках. Картинки могут упоминаться как кадры, и опорные картинки могут упоминаться как опорные кадры. Видео последовательность может также упоминаться как поток битов.
[0005] Пространственное или временное предсказание приводит к предсказывающему блоку для блока, который должен быть закодирован. Остаточные данные представляют пиксельные разности между первоначальным блоком, который должен быть закодирован, и предсказывающим блоком. Внешне кодированный блок кодируют согласно вектору движения, который указывает на блок опорных выборок, формирующих предсказывающий блок, и остаточным данным, указывающим разность между закодированным блоком и предсказывающим блоком. Внутренне кодированный блок кодируют согласно режиму внутреннего кодирования и остаточным данным. Для дальнейшего сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования, приводя к остаточным коэффициентам преобразования, которые затем могут быть квантованы. Квантованные коэффициенты преобразования, первоначально скомпонованные в двумерном массиве, могут быть сканированы, чтобы сформировать одномерный вектор коэффициентов преобразования, и энтропийное кодирование может быть применено, чтобы достигнуть еще большего сжатия.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] Настоящее раскрытие описывает различные способы для расширенной поддержки адаптации потока и стыковки на основании картинок со свободным произвольным доступом (CRA). Настоящее раскрытие предлагает, чтобы вместо того, чтобы использовать флаг в заголовке вырезки для указания, что присутствует картинка с разорванной ссылкой, отличный тип единицы уровня абстракции сети (NAL) мог быть использован для указания присутствия картинки с разорванной ссылкой. В некоторых реализациях способов этого раскрытия первый отличный тип единицы NAL может быть использован для указания присутствия картинки с разорванной ссылкой с опережающими картинками, в то время как второй отличный тип единицы NAL указывает присутствие картинки с разорванной ссылкой без опережающих картинок. Дополнительно, в некоторой реализации третий отличный тип единицы NAL может быть использован для указания присутствия картинки с разорванной ссылкой с декодируемыми опережающими картинками.
[0007] В одном примере способ для обработки видео данных включает в себя прием первой единицы уровня абстракции сети (NAL), содержащей часть видео данных, и на основании типа единицы NAL упомянутой первой единицы NAL, обнаружение картинки с разорванной ссылкой.
[0008] В другом примере способ для обработки видео данных включает в себя прием единицы уровня абстракции сети (NAL), содержащей часть видео данных, определение, что единица NAL содержит картинку с разорванной ссылкой, и установку типа единицы NAL для упомянутой единицы NAL в тип единицы NAL, который указывает, что единица NAL содержит картинку с разорванной ссылкой.
[0009] В другом примере устройство для обработки видео данных включает в себя один или более процессоров, сконфигурированных, чтобы принять первую единицу уровня абстракции сети (NAL), содержащую часть видео данных; и на основании типа единицы NAL упомянутой первой единицы NAL, обнаруживать картинку с разорванной ссылкой.
[0010] В другом примере устройство для обработки видео данных включает в себя один или более процессоров, сконфигурированных, чтобы принять единицу уровня абстракции сети (NAL), содержащую часть видео данных; определить, что единица NAL содержит картинку с разорванной ссылкой; и установить тип единицы NAL для упомянутой единицы NAL в тип единицы NAL, который указывает, что единица NAL содержит картинку с разорванной ссылкой.
[0011] В другом примере устройство для обработки видео данных включает в себя средство для приема первой единицы уровня абстракции сети (NAL), содержащей часть видео данных; и средство для обнаружения картинки с разорванной ссылкой на основании типа единицы NAL упомянутой первой единицы NAL.
[0012] В другом примере устройство для обработки видео данных включает в себя средство для приема единицы уровня абстракции сети (NAL), содержащей часть видео данных; средство для определения, что единица NAL содержит картинку с разорванной ссылкой; и средство для установки типа единицы NAL для упомянутой единицы NAL в тип единицы NAL, который указывает, что единица NAL содержит картинку с разорванной ссылкой.
[0013] В другом примере считываемый компьютером запоминающий носитель хранит инструкции, которые, когда выполняются одним или более процессорами, вынуждают один или более процессоров принимать первую единицу уровня абстракции сети (NAL), содержащую часть видео данных; и на основании типа единицы NAL упомянутой первой единицы NAL, обнаруживать картинку с разорванной ссылкой.
[0014] В другом примере считываемый компьютером запоминающий носитель хранит инструкции, которые когда выполняются одним или более процессорами, вынуждают один или более процессоров принимать единицу уровня абстракции сети (NAL), содержащую часть видео данных; определять, что единица NAL содержит картинку с разорванной ссылкой; и установить тип единицы NAL для упомянутой единицы NAL в тип единицы NAL, который указывает, что единица NAL содержит картинку с разорванной ссылкой.
[0015] Подробности одного или более примеров сформулированы в сопроводительных чертежах и описании ниже. Другие признаки, задачи и преимущества будут очевидны из описания и чертежей, и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0016] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может использовать способы, описанные в настоящем раскрытии.
[0017] Фиг. 2 A и 2B являются концептуальными диаграммами, иллюстрирующими понятие картинки со свободным произвольным доступом.
[0018] Фиг. 3 является блок-схемой, иллюстрирующей примерный кодер видео, который может реализовать способы, описанные в настоящем раскрытии.
[0019] Фиг. 4 является блок-схемой, иллюстрирующей примерный декодер видео, который может реализовать способы, описанные в настоящем раскрытии.
[0020] Фиг. 5 является блок-схемой, иллюстрирующей примерный набор устройств, которые являются частью сети для передачи данных видео.
[0021] Фиг. 6 является диаграммой, иллюстрирующей примерную последовательность видео, включающую в себя картинку RAP, в соответствии с способами, описанными в настоящем раскрытии.
[0022] Фиг. 7 является последовательностью операций, иллюстрирующей примерный способ для кодирования картинок RAP в соответствии с одним или более примерами, описанными в настоящем раскрытии.
[0023] Фиг. 8 является последовательностью операций, иллюстрирующей примерный способ для кодирования картинок RAP в соответствии с одним или более примерами, описанными в настоящем раскрытии.
[0024] Фиг. 9 является последовательностью операций, иллюстрирующей примерный способ для кодирования картинок RAP в соответствии с одним или более примерами, описанными в настоящем раскрытии.
[0025] Фиг. 10 является последовательностью операций, иллюстрирующей примерный способ для декодирования вырезки в соответствии с одним или более примерами, описанными в настоящем раскрытии.
[0026] Фиг. 11 является последовательностью операций, иллюстрирующей примерный способ для кодирования вырезки в соответствии с одним или более примерами, описанными в настоящем раскрытии.
[0027] Фиг. 12 является последовательностью операций, иллюстрирующей примерный способ обработки видео настоящего раскрытия.
ПОДРОБНОЕ ОПИСАНИЕ
[0028] Настоящее раскрытие описывает различные способы для расширенной поддержки адаптации потока и стыковки на основании картинок свободного произвольного доступа (CRA). Произвольный доступ в целом относится к декодированию потока битов видео, начиная с закодированной картинки, которая не является первой закодированной картинкой в потоке битов. Произвольный доступ к потоку битов может быть желательным для многих приложений видео, таким как вещание и потоковая передача. Например, произвольный доступ может позволить пользователю переключаться между различными каналами, переходить к конкретным частям видео, или переключаться на другой поток битов для адаптации потока (например, адаптации частоты следования битов, частоты кадров, пространственного разрешения, и т.д.). Произвольный доступ может быть разрешен посредством вставки картинок произвольного доступа, также называемых картинками с точками произвольного доступа (RAP), с регулярными или нерегулярными (но типично регулярными) интервалами в поток битов видео.
[0029] Предполагается, что способы настоящего раскрытия могут быть реализованы в соединении со множеством различных стандартов кодирования. В целях объяснения способы настоящего раскрытия будут описаны прежде всего в отношении появляющегося стандарта высокоэффективного кодирования видео (HEVC). Один промежуточный проект стандарта HEVC, названный “HEVC Working Draft 6” или "WD6", описан в документе JCTVC-H1003, Bross и др., “High efficiency video coding (HEVC) text specification draft 6,” Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 8th Meeting: San Jose, California, USA, февраль 2012, который, на 11 марта 2013, может быть загружен с http://phenix.int-evry.fr/jct/doc_end_user/documents/8_San%20Jose/wg11/JCTVC-H1003-v22.zip. Стандарт HEVC продолжает развиваться, и более новый проект стандарта, названный “HEVC Working Draft 10” или "WD10", который описан в документе JCTVC-L1003_v18, Bross и др., “High Efficiency Video Coding (HEVC) Text Specification Draft 10,” Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 12th Meeting: Geneva, Switzerland, 14-23 январь 2013, который, на 11 марта 2013, может быть загружен с http://phenix.it-sudparis.eu/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v18.zip. Все содержимое каждого из WD6 и WD10 тем самым включено в настоящее описание по ссылке.
[0030] Картинка мгновенного обновления декодирования (IDR) может использоваться для произвольного доступа. Однако, так как картинка IDR начинает закодированную видео последовательность и всегда очищает буфер декодированных картинок (DPB), картинки после IDR в порядке декодирования не могут использовать картинки, декодированные до картинки IDR в качестве опорных картинок. Следовательно, потоки битов, полагающиеся на картинки IDR для произвольного доступа, может иметь значительно более низкую эффективность кодирования. Чтобы улучшить эффективность кодирования, было введено понятие картинок CRA, чтобы разрешить картинкам, которые следуют за картинкой CRA в порядке декодирования, но предшествуют картинке CRA в порядке вывода, использовать картинки, декодированные перед картинкой CRA, в качестве опорных картинок (например, опорных картинок для внешнего предсказания).
[0031] Картинки, которые следуют за картинкой CRA в порядке декодирования, но предшествуют картинке CRA в порядке вывода, упоминаются как опережающие картинки для картинки CRA. Опережающие картинки для картинки CRA могут быть корректно декодированы, если декодирование начинается с картинки IDR или CRA перед текущей картинкой CRA. Однако, опережающие картинки для картинки CRA не могут быть корректно декодированы, когда имеет место произвольный доступ от картинки CRA. Соответственно, эти опережающие картинки обычно отбрасывают (то есть удаляют из битового потока) во время декодирования с произвольным доступом. Чтобы предотвратить распространение ошибки от опорных картинок, которые могут не быть доступны в зависимости от того, где декодирование начинается, все картинки, которые следуют за картинкой CRA и в порядке декодирования и в порядке вывода, не используют какую-либо картинку, которая предшествует картинке CRA или в порядке декодирования или в порядке вывода (который включает в себя опережающие картинки) в качестве опорных картинок.
[0032] Функциональные возможности произвольного доступа, подобные описанным выше, поддерживаются в H.264/AVC с использованием точек восстановления в сообщениях дополнительной информации расширения (SEI). Реализация декодера видео согласно H.264/AVC может или не может поддерживать такие функциональные возможности. В HEVC поток битов, начинающийся с картинки CRA, рассматривается как соответствующий потоку битов. Когда поток битов начинается с картинки CRA, опережающие картинки для картинки CRA могут ссылаться на недоступные опорные картинки и поэтому могут не быть в состоянии быть корректно декодированными. Однако, HEVC определяет, что опережающие картинки начальной картинки CRA не выводятся, следовательно, называются “со свободным произвольным доступом”. Для установления соответствия потока битов HEVC указывает процессу декодирования для генерирования недоступных опорных картинок для декодирования не выводящиеся опережающие картинки, но соответствующие реализации декодера не должны следовать этому процессу декодирования, пока декодер может генерировать идентичный вывод по сравнению с тем, когда процесс декодирования выполняется с начала закодированной последовательности видео.
[0033] В некоторых версиях появляющегося стандарта HEVC соответствующий поток битов может не содержать картинок IDR вообще, и следовательно, может содержать поднабор закодированной последовательности видео или неполной закодированной последовательности видео. В HEVC закодированная видео последовательность определена как последовательность единиц доступа, которая состоит, в порядке декодирования, из единицы доступа IDR, с последующими нулем или более не-IDR единицами доступа, включая все последующие единицы доступа вплоть до, но не включая, любую последующую единицу доступа IDR.
[0034] Понятие “картинок CRA с разорванными ссылками” было введено в различных предложениях HEVC. По сравнению с понятием CRA картинки CRA с разорванными ссылками предлагают дополнительно позволить картинкам CRA, которые не находятся в начале потока битов, иметь недекодируемые опережающие картинки, подобно тем, которые картинка CRA, которая начинает поток битов, может иметь. В HEVC WD6 картинке CRA, которая начинает поток битов, разрешено сопровождаться в порядке декодирования (также называемом порядком потока битов) опережающими картинками, которые не могут быть декодированы из-за отсутствующих предшествующих опорных картинок. Однако, картинке CRA, которая попадает в середину потока битов, не разрешено иметь такие недекодируемые опережающие картинки. Было предложено, чтобы это ограничение было удалено посредством добавления флага "разорванной ссылки", который указывает потенциальное присутствие таких недекодируемых опережающих картинок.
[0035] Флаг "разорванной ссылки" был предложен в качестве информации уровня картинок для картинок CRA в заголовке вырезки или некотором другом месте для информации уровня картинок - таком как набор параметров адаптации (APS). Когда флаг разорванной ссылки равен 1, потоку битов разрешено содержать опережающие картинки для картинки CRA, которые не являются декодируемыми из-за отсутствующих предыдущих опорных картинок даже при том, что поток битов начинается с картинки IDR или картинки CRA ранее в порядке потока битов.
[0036] Для картинки CRA с флагом «разорванная ссылка», равным 1, картинкам CRA дополнительно разрешено иметь недекодируемые опережающие картинки, как упомянуто выше. Существующие подходы “картинок CRA с разорванными ссылками”, и другие существующие подходы произвольного доступа видео, ассоциированы с различными потенциальными проблемами и недостатками. Например, сигнализация флага «разорванная ссылка» в заголовке вырезки или APS требует объекта (например, сервера, осведомленного о медиа элемента сети (MANE), или модуля редактирования/модуля стыковки видео), который изменяет нормальную картинку CRA на картинку CRA с разорванной ссылкой (BLC) когда необходимо, чтобы быть способным к энтропийному кодированию и синтаксически разбирать заголовок вырезки и/или APS, чтобы закодировать этот флаг. Это также требует объекта (например, сервер, MANE, или модуль редактирования видео), который идентифицирует картинку BLC, когда необходимо, чтобы быть способным к энтропийному декодированию и синтаксически разбирать заголовок вырезки и/или APS, чтобы найти этот флаг. Картинки BLC также иногда упоминаются как картинки доступа с разорванной ссылкой (BLA), например, в более новых версиях стандарта HEVC. В настоящем раскрытии эти термины можно рассматривать как являющиеся взаимозаменяемыми.
[0037] Настоящее раскрытие описывает способы, которые могут разрешить недостатки, описанные выше. Настоящее раскрытие предлагает, чтобы, вместо того, чтобы использовать флаг в заголовке вырезки для указания, что картинка BLC присутствует, отличный тип единицы уровня абстракции сети (NAL) мог быть использован для указания присутствия картинки BLC. В некоторых реализациях способов настоящего раскрытия первый отличный тип единицы NAL может быть использован для указания присутствия картинки BLC (также известной как BLA) с опережающими картинками, в то время как второй отличный тип единицы NAL указывает присутствие картинки BLC без опережающих картинок. Дополнительно, в некоторой реализации третий отличный тип единицы NAL может быть использован для указания присутствия картинки с разорванной ссылкой с декодируемыми опережающими картинками.
[0038] Закодированные видео данные организованы в единицы NAL, каждая из которых является по существу пакетом, который содержит целочисленное количество байтов. Первый байт каждой единицы NAL является байтом заголовка, который содержит индикацию типа данных в единице NAL, и оставшиеся байты содержат полезные данные типа, обозначенного заголовком. Единицы NAL могут в целом быть разделены на две главных категории, единицы NAL, которые содержат данные уровня кодирования видео, и единицы NAL, которые не включают в себя данные уровня кодирования видео. Эти две категории единиц NAL упомянуты в целом как единицы NAL VCL и единицы NAL не-VCL, соответственно. Единицы NAL не-VLC включают в себя, например, типы единиц NAL для дополнительной информации расширения и типы единицы NAL для информации набора параметров.
[0039] Согласно способам настоящего раскрытия, в одном примере тип единицы NAL, равный 2 (который зарезервирован в HEVC WD6), может быть использован для указания присутствия картинки с разорванной ссылкой, например, картинки BLC, иначе называемой картинкой BLA. Посредством использования специализированного типа единицы NAL, как описано в настоящем раскрытии, объект (например, сервер, MANE, или видео модуль редактирования/модуль стыковки) может изменить нормальную картинку CRA, для которой, если такая картинка не начинает поток битов, все ассоциированные опережающие картинки должны быть декодируемыми (то есть, могут быть корректно декодированы) на картинку BLC, когда необходимо, без энтропийного кодирования или декодирования синтаксиса заголовка вырезки, синтаксиса APS, или другого синтаксиса потока битов. Дополнительно, посредством реализации способов настоящего раскрытия, объект (например, сервер, MANE, или модуль редактирования видео) может идентифицировать картинку BLC, когда необходимо, без энтропийного декодирования синтаксиса заголовка вырезки, синтаксиса APS, или другого синтаксиса потока битов.
[0040] Использующим один или более типов различных единиц NAL, чтобы указывать присутствие картинки с разорванной ссылкой, является один способ, представленный в настоящем раскрытии. Дополнительные способы будут также представлены ниже. Эти дополнительные способы могут использоваться альтернативно к или в соединении со специализированными единицами NAL, уже введенными.
[0041] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может использовать способы, описанные в настоящем раскрытии. Как иллюстрировано на Фиг. 1, система 10 включает в себя исходное устройство 12, которое генерирует закодированные видео данные, которые устройство 14 назначения может декодировать позже. Исходное устройство 12 и устройство 14 назначения может содержать любое из широкого диапазона устройств, включая настольные компьютеры, портативный компьютер (то есть, ноутбук) компьютеры, планшетные компьютеры, телевизионные приставки, телефонные трубки, такие как так называемые "интеллектуальные" телефоны, так называемые "интеллектуальные" клавиатуры, телевизоры, камеры, устройства отображения, цифровые медиаплееры, пульты видео игр, устройство потоковой передачи видео или подобное. В некоторых случаях исходное устройство 12 и устройство 14 назначения может быть оборудовано для беспроводной связи.
[0042] В некоторых случаях видео кодер 20 может закодировать картинку или картинки, которые находятся после точки произвольного доступа или точки адаптации потока, такой как точка переключения временного уровня. Например, это может быть точкой переключения для адаптации частоты следования битов, частоты кадров или пространственного разрешения. Одна или более этих картинок могут быть опережающими картинками для картинки CRA в последовательности видео. Декодер может декодировать опережающие картинки для картинки CRA корректно, если декодирование последовательности видео начинается с картинки RAP перед текущей картинкой CRA в последовательности видео. Однако, опережающие картинки для картинки CRA не могут быть корректно декодированы, когда имеет место произвольный доступ из картинки CRA. Например, опережающие картинки могут указывать на блоки для опорного элемента предсказания, которые недоступны. Соответственно, опережающая картинка может не быть декодируемой в видео декодере 30. Соответственно, устройство 14 назначения может типично отбросить эти опережающие картинки во время декодирования с произвольным доступом.
[0043] В другом примере, для BLA, то есть, BLC, картинки, кодер 20 может закодировать флаг, например, no_output_of_prior_pics_flag (который может быть более корректно упоминаться как элемент синтаксиса) так, чтобы ни одна из предшествующих картинок в DPB не была выведена. В некоторых примерах этот флаг, или элемент синтаксиса, может быть ранним в заголовке вырезки перед энтропийным декодированием так, что он может быть более легко декодирован, и эта информация является доступной ранее в процессе кодирования. Например, так, что менее сложные устройства, такие как MANE, могут иметь доступ к информации, не требуя энтропийного декодера так как, например, no_output_of_prior_pics_flag не должен быть энтропийно декодирован. В качестве иллюстрации может быть представлен флаг no_output_of_prior_pics как не энтропийно закодированный элемент синтаксиса такой как, например, элемент u(1) фиксированной длины, вместо энтропийно кодированного элемента синтаксиса, такого как, например, элемент ue(v) переменной длины. Флаг no_output_of_prior_pics может быть представлен, например, немедленно после флага first_slice_segment_in_pic, и прежде любых энтропийно кодированных элементов синтаксиса.
[0044] В одном примере видео декодер 30 может отметить картинки, сохраненные в буфере опорных картинок как неиспользованные для ссылки, когда, например, использование этих картинок может привести к некорректно декодированной картинке. Например, опорная картинка, которая предшествует картинке BLA или BLC в порядке декодирования или порядке вывода, может быть неиспользуемой для ссылки для опережающей картинки, которая следует за картинкой BLA или BLC в порядке декодирования. Соответственно, эта опорная картинка может быть отмечена как неиспользованная для ссылки видео декодером 30 в ответ на прием опорной картинки, которая предшествует картинке BLA или BLC в порядке декодирования или порядке вывода, может быть неиспользуемой для ссылки для опережающей картинки, которая следует за картинкой BLA или BLC в порядке декодирования.
[0045] В примере видео кодер 20 может быть сконфигурирован, чтобы включать в себя типы единицы NAL, назначенные для указания, когда картинки BLA или BLC имеют и не имеют опережающих картинок. Например, в одном стандарте, типы единицы NAL 16, BLA_W_LP (BLA с опережающей картинкой); 17, BLA_W_DLP (BLA с декодируемой опережающей картинкой); и 18, BLA_N_LP (BLA нет опережающей картинки) включены. Картинка BLA, имеющая тип единицы NAL, равный BLA_W_LP, может иметь ассоциированные декодируемые или недекодируемые опережающие картинки, присутствиующие в потоке битов. Картинка BLA, имеющая тип единицы NAL, равный BLA_W_DLP, не имеет ассоциированных недекодируемых опережающих картинок, присутствующих в потоке битов, но может иметь ассоциированные декодируемые опережающие картинки в потоке битов. Картинка BLA, имеющая тип единицы NAL, равный BLA_N_LP, может не иметь ассоциированных опережающих картинок (или декодируемых или недекодируемых), присутствующих в потоке битов.
[0046] В примере видео кодер 20 может обрабатывать типы единицы NAL, назначенные для указания, когда картинки BLA имеют и не имеют опережающих картинок. Например, видео кодер 20 может закодировать картинки согласно одному из множества различных типов единиц уровня абстракции сети (NAL). Множество типов единиц NAL включает в себя одно или более из (1) закодированной вырезки картинки доступа с разорванной ссылкой (BLA), в котором картинка BLA является картинкой BLA с ассоциированными опережающими картинками в потоке битов, (2) закодированной вырезки картинки BLA, в котором картинка BLA является картинкой BLA с ассоциированными декодируемыми опережающими картинками в потоке битов, и (3) закодированной вырезки картинки BLA, в котором картинка BLA является картинкой BLA без ассоциированных опережающих картинок в потоке битов.
[0047] Устройство 14 назначения может принять закодированные видео данные. Устройство назначения может декодировать принятые данные через линию связи 16. Линия связи 16 может содержать любой тип носителя или устройства, способного устройства 12 к устройству 14 назначения. В одном примере линия связи 16 может содержать коммуникационный носитель, чтобы разрешить исходному устройству 12 передать закодированные видео данные непосредственно к устройству 14 назначения в реальном времени. Закодированные видео данные могут модулироваться согласно стандарту связи, такому как протокол беспроводной связи, и передаваться к устройству 14 назначения. Коммуникационный носитель может содержать любой беспроводной или проводной коммуникационный носитель, такой как радиочастотного (RF) спектра или одна или более физических линий передачи. Коммуникационный носитель может быть частью основанной на пакетной передаче сети, такой как локальная сеть, региональная сеть, или глобальная сеть, такая как Интернет. Коммуникационный носитель может включать в себя маршрутизаторы, коммутаторы, базовые станции, или любое другое оборудование, которое может быть полезным, чтобы облегчить связь от исходного устройства 12 к устройству 14 назначения.
[0048] Альтернативно, закодированные данные могут быть выведены из интерфейса 22 вывода на устройство 34 хранения. Точно так же, к закодированным данным можно получить доступ от устройства 34 хранения с помощью интерфейса ввода. Устройство 34 хранения может включать в себя любое из множество распределенных или запоминающих носителей данных, к которым локально получают доступ, таких как накопитель на жестких дисках, диски Blu-ray, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память, или любые другие подходящие цифровые носители данных для того, чтобы хранить закодированные видео данные. В дальнейшем примере устройство 34 хранения может соответствовать файловому серверу или другому промежуточному устройству хранения, которое может считать закодированное видео, сгенерированное исходным устройством 12. Устройство 14 назначения может получить доступ к сохраненным видео данным от устройства 34 хранения через потоковую передачу или загрузку. Файловый сервер может быть любым типом сервера, способного к тому, чтобы хранить закодированные видео данные и передавать эти закодированные видео данные к устройству 14 назначения. Примерные файловые серверы включают в себя web-сервер (например, для вебсайта), сервер FTP, устройства сетевого хранения (NAS), или локальный дисковый накопитель. Устройство 14 назначения может получить доступ к закодированным данным видео через любое стандартное соединение данных, включая интернет-соединение. Оно может включать в себя беспроводный канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, и т.д.), или комбинацию обоих, которые являются подходящими для того, чтобы получить доступ к закодированным данным видео, хранящимся на файловом сервере. Передача закодированных видео данных от устройства 34 хранения может быть потоковой передачей, передачей загрузки, или комбинацией обоих.
[0049] Способы настоящего раскрытия не обязательно ограничены беспроводными приложениями или параметрами настройки. Способы могут быть применены к кодированию видео в поддержку любого из множества мультимедийных приложений, таких как эфирное телевидение, передачи кабельного телевидения, передачи спутникового телевидения, потоковые передачи видео, например, через Интернет, кодирование цифрового видео для сохранения на запоминающем носителе данных, декодирования цифрового видео, сохраненного на запоминающем носителе данных, или других приложениях. В некоторых примерах система 10 может быть сконфигурирована, чтобы поддерживать одностороннюю или двухстороннюю передачу видео, чтобы поддерживать приложения, такие как потоковая передача видео, воспроизведение видео, вещание видео, и/или видео телефония.
[0050] В примере на Фиг. 1 исходное устройство 12 включает в себя видео источник 18, видео кодер 20 и интерфейс 22 вывода. В некоторых случаях интерфейс 22 вывода может включать в себя модулятор/демодулятор (модем) и/или передатчик. В исходном устройстве 12 видео источник 18 может включать в себя источник, такой как устройство захвата видео, например, видео камера, видео архив, содержащий ранее захваченное видео, интерфейс подачи видео, чтобы принять видео от поставщика видео контента, и/или систему компьютерной графики для того, чтобы генерировать данные компьютерной графики в качестве исходного видео, или комбинацию таких источников. В качестве одного примера, если видео источник 18 является видео камерой, исходное устройство 12 и устройство 14 назначения может сформировать так называемые камерофоны или видео телефоны. Однако, способы, описанные в настоящем раскрытии, могут быть применимыми к кодированию видео в целом, и могут быть применены к беспроводным и/или проводным приложениям.
[0051] Захваченное, предварительно захваченное или генерируемое компьютером видео может быть закодировано видео кодером 20. Закодированные видео данные могут быть переданы непосредственно к устройству 14 назначения через интерфейс 22 вывода из исходного устройства 12. Закодированные видео данные могут также (или альтернативно) сохраняться на устройство 34 хранения для более позднего доступа устройством 14 назначения или другими устройствами, для декодирования и/или воспроизведения.
[0052] Устройство 14 назначения включает в себя интерфейс 28 ввода, видео декодер 30, и устройство 32 отображения. В некоторых случаях интерфейс 28 ввода может включать в себя приемник и/или модем. Интерфейс 28 ввода из устройства 14 назначения принимает закодированные видео данные по линии связи 16. Закодированные видео данные, переданные по линии связи 16, или предоставленные на устройстве 34 хранения, могут включать в себя множество элементов синтаксиса, генерируемых видео кодером 20 для использования видео декодером, таких как видео декодер 30, при декодировании видео данных. Такие элементы синтаксиса могут быть включены с закодированными данными видео, переданными на коммуникационном носителе, сохраненными на запоминающем носителе, или сохраненными на файловом сервере.
[0053] В некоторых примерах видео декодер 30 из устройства 14 назначения может декодировать картинку или картинки, которые находятся после точки произвольного доступа или точки адаптации потока, такой как точка переключения временного уровня. Например, она может быть точкой переключения для адаптации частоты следования битов, частоты кадров (то есть, точкой переключения временного уровня), или пространственного разрешения. Одна или более этих картинок могут быть опережающими картинками. Опережающие картинки не могут быть корректно декодированы, когда имеет место произвольный доступ от картинки с разорванной ссылкой (то есть, BLA или BLC).
[0054] В одном примере, чтобы предотвратить распространение ошибки от опорных картинок, которые могут не быть доступны в зависимости от того, где декодирование начинается, видео декодер 30 может не использовать какую-либо картинку, которая предшествует картинке с разорванной ссылкой или в порядке декодирования или в порядке вывода (который включает в себя опережающие картинки) в качестве опорных картинок.
[0055] В различных примерах видео декодер 30 может отметить все опорные картинки в DPB как неиспользованные для ссылки, прежде чем декодировать картинку BLA, при декодировании картинки BLC или BLA. Например, видео декодер 30 может отметить опорные картинки в буфере декодированных картинок (DPB) как неиспользованные для ссылки.
[0056] В другом примере кодер 20 может включать в поток битов, и декодер 30 может принимать, флаг или другой элемент синтаксиса, например, no_output_of_prior_pics_flag, для картинки BLA, которая должна быть декодирована. Флаг, когда равен 1, указывает, что ни одна из предшествующих картинок в DPB не выводится для отображения. В частности, когда no_output_of_prior_pics_flag равен 1, декодер 30 опустошает все буферы хранения картинок в буфере декодированных картинок без вывода картинок, которые они содержат. В некоторых примерах этот флаг или элемент синтаксиса могут быть представлены очень рано в заголовке вырезки перед энтропийным декодированием так, что он может быть более легко декодирован без потребности в энтропийном кодировании, и эта информация доступна ранее в процессе кодирования. Например, так, что менее сложные устройства, такие как MANE, могут иметь доступ к информации, не требуя декодера, так как, например, no_output_of_prior_pics_flag не должен быть энтропийно декодирован.
[0057] В другом примере видео декодер 30 может обрабатывать типы единицы NAL, назначенные для указания, когда картинки BLA или BLC имеют и не имеют опережающих картинок. Снова, как упомянуто выше, картинки BLA являются концептуально такими же как картинки BLC в том, что картинки BLA и BLC указывают картинки CRA с разорванной ссылкой, но различными по терминологии. В одном примере видео декодер 30 может декодировать картинки согласно одному из множества различных типов единиц уровня абстракции сети (NAL). Множество типов единиц NAL включает в себя один или более из (1) закодированной вырезки картинки доступа с разорванной ссылкой (BLA), причем картинка BLA является картинкой BLA с ассоциированными опережающими картинками в потоке битов, (2) закодированной вырезки картинки BLA, причем картинка BLA является картинкой BLA с ассоциированными декодируемыми опережающими картинками в потоке битов, и (3) закодированной вырезки картинки BLA, в котором картинка BLA является картинкой BLA без ассоциированных опережающих картинок в потоке битов. В ответ на обнаружение картинки BLA видео декодер 30 может активировать один или более новых наборов параметров. Наборы параметров будут объяснены более подробно ниже в настоящем раскрытии.
[0058] В некоторых примерах видео декодер 30 конфигурируется, чтобы отметить все опорные картинки как неиспользованные для ссылки, если он обнаруживает тип единицы NAL BLA. Если тип единицы NAL BLA обнаружен декодером 30, опорные картинки не являются действительными для декодирования картинку BLA или любые картинки после картинки BLA в порядке вывода или декодирования.
[0059] Устройство 32 отображения может интегрироваться с, или быть внешним к, устройством 14 назначения. В некоторых примерах устройство 14 назначения может включать в себя интегрированное устройство отображения и также конфигурироваться, чтобы взаимодействовать с внешним устройством отображения. В других примерах устройство 14 назначения может быть устройством отображения. В целом, устройство 32 отображения отображает декодированные видео данные пользователю и может содержать любое из множества устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED), или другой тип устройства отображения.
[0060] Видео кодер 20 и видео декодер 30 могут работать согласно стандарту сжатия видео, такому как стандарт высокоэффективного кодирования видео (HEVC), развиваемого в настоящее время, и могут соответствовать Тестовой Модели HEVC (HM). Альтернативно, видео кодер 20 и видео декодер 30 могут работать согласно другим составляющим собственность стандартам или стандартам промышленности, таким как стандарт ITU-T H.264, альтернативно названный MPEG-4, Часть 10, Усовершенствованное видео кодирование (AVC), или расширения таких стандартов. Способы настоящего раскрытия, однако, не ограничены никаким конкретным стандартом кодирования. Другие примеры стандартов сжатия видео включают в себя MPEG-2 и ITU-T H.263. HM предполагает несколько дополнительных способностей устройств кодирования видео относительно существующих устройств согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 обеспечивает девять режимов кодирования с внутренним предсказанием, HM может обеспечить целых тридцать три режима кодирования с внутренним предсказанием.
[0061] Хотя не показано на Фиг. 1, в некоторых аспектах видео кодер 20 и видео декодер 30 могут каждый быть интегрированными с аудио кодером и декодером, и могут включать в себя соответствующие блоки MUX-DEMUX, или другое аппаратное обеспечение и программное обеспечение, относящиеся к кодированию и аудио и видео в общем потоке данных или отдельных потоках данных. Если применимо, в некоторых примерах блоки MUX-DEMUX могут соответствовать протоколу ITU H.223 мультиплексора, или другим протоколам, таким как протокол дейтаграмм пользователя (UDP).
[0062] Видео кодер 20 и видео декодер 30 каждый может быть реализован как любое из множества подходящих схем кодера, таких как один или более микропроцессоров, цифровые сигнальные процессоры (DSPs), специализированные интегральные схемы (ASICs), программируемые пользователем вентильные матрицы (FPGAs), дискретная логика, программное обеспечение, аппаратное обеспечение, программно-аппаратные средства или любые их комбинации. Когда способы реализованы частично в программном обеспечении, устройство может сохранить инструкции для программного обеспечения в подходящем невременном считываемом компьютером носителе и выполнить инструкции в аппаратном обеспечении, используя один или более процессоров, чтобы выполнить способы настоящего раскрытия. Каждый из видео кодера 20 и видео декодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может интегрироваться как часть объединенного кодера/декодера (кодек) в соответствующем устройстве.
[0063] В целом, рабочая модель HM описывает, что видео кадр или картинка могут быть разделены на последовательность блоков дерева или наибольших единиц кодирования (LCU), которые включают в себя выборки как яркости так и насыщенности цвета. Блок дерева имеет подобную цель как макроблок стандарта H.264. Вырезка включает в себя множество последовательных блоков дерева в порядке кодирования. Видео кадр или картинка могут быть разделены на одну или более вырезок. Каждый блок дерева может быть разделен на единицы кодирования (CUs) согласно квадродереву. Например, блок дерева, в качестве корневого узла квадродерева, может быть разделен на четыре дочерних узла, и каждый дочерний узел может в свою очередь быть родительским узлом и быть разделен еще на четыре дочерних узла. Наконец, неразделеный дочерний узел, в качестве листового узла квадродерева, содержит узел кодирования, то есть, закодированный блок видео. Данные синтаксиса, ассоциированные с закодированным потоком битов, могут определить максимальное количество раз, сколько блок дерева может быть разделен, и могут также определить минимальный размер узлов кодирования.
[0064] CU включает в себя узел кодирования и единицы (PU) предсказания и единицы (TU) преобразования, ассоциированные с узлом кодирования. Размер CU соответствует размеру узла кодирования и должен быть квадратным по форме. Размер CU может ранжироваться от 8×8 пикселей вплоть до размера блока дерева с максимумом 64×64 пикселей или больше. Каждая CU может содержать одну или более PU и одну или более TU. Данные синтаксиса, ассоциированные с CU, могут описывать, например, разделение CU в одну или более PU. Режимы разделения могут отличаться между тем, является ли CU закодированной в режиме пропуска или прямом, закодированной в режиме внутреннего предсказания, или закодированной в режиме внешнего предсказания. PU могут быть разделены, чтобы быть неквадратными по форме. Данные синтаксиса, ассоциированные с CU, могут также описывать, например, разделение CU в одну или более TU согласно квадродереву. TU может быть квадратной или неквадратной по форме.
[0065] Стандарт HEVC обеспечивает преобразования согласно единицам TU, которые могут быть различными для различных единиц CU. Единицы TU типично имеют размеры на основании размера единиц PU в пределах заданной CU, хотя это может не всегда иметь место. Размер TU может быть таким же как размер CU, или меньшим чем PU. В некоторых примерах остаточные выборки, соответствующие CU, могут быть подразделены на меньшие блоки, используя структуру квадродерева, известную как “остаточное квадродерево” (RQT). Листовые узлы RQT могут называться как единицы преобразования (TU). Значения пиксельной разности, ассоциированные с TU, могут быть преобразованы, чтобы сформировать коэффициенты преобразования, которые могут быть квантованы.
[0066] В целом, PU включает в себя данные, относящиеся к процессу предсказания. Например, когда PU является закодированной во внутреннем режиме, PU может включать в себя данные, описывающие режим внутреннего предсказания для PU. В качестве другого примера, когда PU является закодированной во внешнем режиме, PU может включать в себя данные, определяющие вектор движения для PU. Данные, определяющие вектор движения для PU, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешения для вектора движения (например, пиксельную точность в одну четверть или пиксельную точность в одну восьмую), опорную картинку, на которую вектор движения указывает, и/или список опорных картинок (например, Список 0, Список 1, или Список C) для вектора движения.
[0067] В целом, TU используется для процессов квантования и преобразования. Заданная CU, имеющая одну или более PU, может также включать в себя одну или более единиц преобразования (TU). Следуя предсказанию, видео кодер 20 может вычислить остаточные значения, соответствующие PU. Остаточные значения содержат значения пиксельной разности, которые могут быть преобразованы в коэффициенты преобразования, квантованы и сканированы, используя единицы TU, чтобы сформировать преобразованные в последовательную форму коэффициенты преобразования для энтропийного кодирования. Настоящее раскрытие типично использует термин "блок видео", чтобы обратиться к узлу кодирования CU. В некоторых конкретных случаях настоящее раскрытие может также использовать термин "блок видео", чтобы ссылаться на блок дерева, то есть, LCU, или CU, который включает в себя узел кодирования и единицы PU и TU.
[0068] Видео последовательность типично включает в себя последовательность видео кадров или картинок. Группа картинок (GOP) в целом содержит последовательность из одной или более картинок видео. GOP может включать в себя данные синтаксиса в заголовке GOP, заголовке одной или более картинок, или в другом месте, который описывает множество картинок, включенных в GOP. Каждая вырезка картинки может включать в себя данные синтаксиса вырезки, которые описывают режим кодирования для соответствующей вырезки. Видео кодер 20 типично оперирует над блоками видео в пределах индивидуальных видео вырезок, чтобы закодировать видео данные. Блок видео может соответствовать узлу кодирования в пределах CU. Блоки видео могут иметь фиксированный или переменный размеры, и могут отличаться по размеру согласно указанному стандарту кодирования.
[0069] В качестве примера, HM поддерживает предсказание в различных размерах PU. Предполагая, что размер конкретной CU равен 2N×2N, HM поддерживает внутреннее предсказание в размерах PU, равных 2N×2N или N×N, и внешнее предсказание в симметричных размерах PU, равных 2N×2N, 2N×N, N×2N, или N×N. HM также поддерживает асимметричное разделение для внешнего предсказания в размерах PU, равных 2N×nU, 2N×nD, nL×2N и nR×2N. При асимметричном разделении одно направление CU не разделяется, в то время как другое направление разделяется на 25% и 75%. Часть CU, соответствующая 25%-ому разделению, обозначена “n”, сопровождаемым индикацией «Верхний», «Нижний» "Левый", или "Правый". Таким образом, например, “2N×nU” относится к CU 2N×2N, которая разделена горизонтально с 2N×0,5N PU сверху и 2N×1,5N PU внизу.
[0070] В настоящем раскрытии “N××N” и “N на N” может использоваться взаимозаменяемо, чтобы ссылаться на пиксельные измерения блока видео в терминах вертикальных и горизонтальных измерений, например, 16×16 пикселей или 16×16 пикселей. В целом, блок 16×16 имеет 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Аналогично, блок N×N в целом имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет неотрицательное целочисленное значение. Пиксели в блоке могут быть скомпонованы в строки и столбцы. Кроме того, блоки должны иметь не обязательно то же количество пикселей в горизонтальном направлении, как в вертикальном направлении. Например, блоки могут содержать N×M пикселей, где М не обязательно равно N.
[0071] После внутренне предсказывающего или внешне предсказывающего кодирования, используя единицы PU в CU, видео кодер 20 может вычислить остаточные данные для единицы TU в CU. Единицы PU могут содержать пиксельные данные в пространственной области (также называемой пиксельной областью), и единицы TU могут содержать коэффициенты в области преобразования после применения преобразования, такого как дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет преобразование, или концептуально подобное преобразование, к остаточным данным видео. Остаточные данные могут соответствовать пиксельным разностям между пикселями незакодированной картинки и значениями предсказания, соответствующими единицам PU. Видео кодер 20 может сформировать единицы TU, включающие в себя остаточные данные для CU, и затем преобразовать эти единицы TU, чтобы сформировать коэффициенты преобразования для CU.
[0072] После любого преобразования, чтобы сформировать коэффициенты преобразования, видео кодер 20 может выполнить квантование коэффициентов преобразования. Квантование в целом относится к процессу, в котором коэффициенты преобразования квантуются, чтобы возможно уменьшить объем данных, использованных для представления коэффициентов, обеспечивая дальнейшее сжатие. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, значение в n-битов может быть округлено в меньшую сторону до m - битового значения во время квантования, где n более чем m.
[0073] В некоторых примерах видео кодер 20 может использовать заранее заданный порядок сканирования, чтобы сканировать квантованные коэффициенты преобразования, чтобы сформировать преобразованный в последовательную форму вектор, который может быть энтропийно кодирован. В других примерах видео кодер 20 может выполнить адаптивное сканирование. После просмотра квантованных коэффициентов преобразования, чтобы сформировать одномерный вектор, видео кодер 20 может энтропийно кодировать одномерный вектор, например, согласно контекстно-адаптивному кодированию с переменной длиной кода (CAVLC), контекстно-адаптивному двоичному арифметическому кодированию (CABAC), основанному на синтаксисе контекстно-адаптивному двоичному арифметическому кодированию (SBAC), энтропийному кодированию с разделением интервала вероятности (PIPE) или другому способу энтропийного кодирования. Видео кодер 20 может также энтропийно кодировать элементы синтаксиса, ассоциированные с закодированными данными видео, для использования видео декодером 30 при декодировании видео данных.
[0074] Чтобы выполнить CABAC, видео кодер 20 может назначить контекст в пределах контекстной модели символу, который должен быть передан. Контекст может относится к тому, например, являются ли соседние значения символа ненулевыми или нет. Чтобы выполнить CAVLC, видео кодер 20 может выбрать код с переменной длиной слова для символа, который должен быть передан. Кодовые слова в VLC могут быть построены таким образом, что относительно более короткие коды соответствуют более вероятным символам, в то время как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может достигнуть экономии битов, например, используя кодовые слова равной длины для каждого символа, который должен быть передан. Определение вероятности может быть основано на контексте, назначенном на символ.
[0075] Видео кодер 20 может быть сконфигурирован, чтобы закодировать видео данные иерархическим способом. Например, видео кодер 20 может иерархически категоризировать видео данные как включающую в себя множество уровней последовательность картинок в пределах заданного уровня, картинку в пределах последовательности, вырезки в пределах картинки, и блоки (например, макроблоки или единицы дерева кодирования) в пределах вырезки. Набор параметров видео (VPS) может сигнализировать нечасто изменяющиеся параметры для множества последовательностей через соответствующие уровни. Наборы параметров последовательности (SPS) могут быть использованы для сигнализации нечасто изменяющихся параметров для последовательности картинок, и наборы параметров картинки (PPS) могут быть использованы для сигнализации нечасто изменяющихся параметров для индивидуальных картинок.
[0076] Как указано выше, настоящее раскрытие описывает способы для расширенной поддержки адаптации потока и стыковки на основании картинок CRA. Картинка CRA является картинкой, закодированной с использованием способов внутреннего кодирования, таким образом, что декодирование картинок CRA не зависит от информации от других картинок.
[0077] Произвольный доступ в целом относится к способности начать декодировать поток битов видео, начиная с закодированной картинки, которая не является первой закодированной картинкой в потоке битов. Произвольный доступ к потоку битов закодированных видео данных может быть желательным во многих видео приложениях, таких как вещание и потоковая передача. Потоковая передача видео данных по сети может быть выполнена, например, используя динамическую адаптивную потоковую передачу по HTTP (DASH). Например, зрители видео данных могут желать переключаться между различными каналами, переходить к конкретным частям видео, чтобы выполнить так называемый “режим спецэффекта” такой как быстрый переход вперед или перемотка, или переключаться на другой поток битов (например, другое представление в DASH) для адаптации потока (например, адаптации частоты следования битов (например, адаптации флуктуирующей полосы пропускания сети), частоты кадров, пространственного разрешения, и т.д.).
[0078] Признак произвольного доступа может быть разрешен, вставляя картинки произвольного доступа или точки произвольного доступа множество раз с регулярными интервалами в поток битов видео данных. Единица IDR может использоваться для произвольного доступа. Однако, так как единица IDR типично начинает закодированную видео последовательность и очищает DPB, картинки после единицы IDR в порядке декодирования не могут использовать картинки, декодированные до единицы IDR в качестве ссылки. Следовательно, потоки битов, полагающиеся на единицы IDR для произвольного доступа, иногда имеют значительно более низкую эффективность кодирования. Чтобы улучшить эффективность кодирования, ассоциированную с блоками IDR, понятие картинок CRA было введено в HEVC, чтобы позволить картинкам, которые следуют за картинкой CRA в порядке декодирования, но предшествуют ей в порядке вывода, использовать картинки, декодированные перед картинкой CRA, в качестве ссылок.
[0079] Фиг. 2A и 2B являются концептуальными диаграммами, иллюстрирующими понятие картинок CRA. Фиг. 2A показывает последовательность картинок 202, где порядок слева направо указывает порядок, в котором декодируются картинки. Каждая картинка также имеет значение счета картинки по порядку (POC), показывающее порядок отображения для картинок. Значение POC показано относительно картинки CRA 204, таким образом что отрицательные значения указывают картинки, которые отображаются прежде, чем картинка CRA 204, и положительные значения указывает картинки, которые отображаются после картинки CRA 204. Последовательность картинок 202 включает в себя картинку CRA 204. Последовательность картинок 202 далее включает в себя последовательность запаздывающих картинок 206, последовательность опережающих картинок 208, и последовательность нормальных картинок 210. Запаздывающие картинки 206 находятся до картинки CRA 204 в порядке декодирования, но следует за ней в порядке отображения (то есть POC запаздывающих картинок 206 больше, чем POC картинки CRA 204). Опережающие картинки 208 следуют за картинкой CRA 204 в порядке декодирования, но предшествуют картинке CRA 204 в порядке вывода. Нормальные картинки 210 следуют за картинкой CRA 204 и в порядке декодирования и в порядке вывода.
[0080] Фиг. 2B показывает последовательность картинок 203. Последовательность картинок 203 содержит те же самые картинки как последовательность картинок 202, но последовательность картинок 203 показывает картинки в порядке отображения, таким образом, что порядок картинок слева направо соответствует порядку, в котором будут выведены картинки. Картинки, которые следуют за картинкой CRA в порядке декодирования, но предшествуют картинке CRA в порядке вывода, упоминаются как опережающие картинки для картинки CRA (например, опережающие картинки 208). Опережающие картинки для картинки CRA могут быть корректно декодированы, если декодирование начинается с единицы IDR или картинки CRA перед текущей картинкой CRA. Однако, опережающие картинки для картинки CRA не могут быть корректно декодированы, когда имеет место произвольный доступ из картинки CRA. Таким образом, от этих опережающих картинок типично отказываются (отбрасывают) во время декодирования с произвольным доступом. Чтобы предотвратить распространение ошибки от опорных картинок, которые могут не быть доступны в зависимости от того, где декодирование начинается, все картинки, которые следуют за картинкой CRA и в порядке декодирования и порядке вывода, не должны использовать картинку, которая предшествует картинке CRA или в порядке декодирования или в порядке вывода (который включает в себя опережающие картинки) в качестве ссылки.
[0081] Подобные функциональные возможности произвольного доступа поддерживаются в H.264/AVC сообщением дополнительной информации расширения точки восстановления (SEI). Реализация декодера H.264/AVC может или не может поддерживать эти функциональные возможности. В HEVC поток битов, начинающийся с картинки CRA, рассматривают как соответствовавший потоку битов. Когда поток битов начинается с картинки CRA, опережающие картинки для картинки CRA могут ссылаться на недоступные опорные картинки, и следовательно, не могут быть корректно декодированы. Однако, HEVC задает, что опережающие картинки начальной картинки CRA не выводятся, следовательно название “свободный произвольный доступ”. Для установления требования согласования потока битов HEVC указывает процессу декодирования генерировать недоступные опорные картинки для декодирования невыводимых опережающих картинок. Однако, согласующиеся реализации декодера не должны следовать этому процессу декодирования, пока декодер может, чтобы они генерировали идентичный вывод по сравнению с тем, когда процесс декодирования выполняется с начала закодированной последовательности видео.
[0082] Следует особо отметить, что в HEVC согласующийся поток битов может не содержать единицы IDR вообще, и следовательно может содержать поднабор закодированной последовательности видео или не полностью закодированной последовательности видео. В HEVC закодированная видео последовательность определена как последовательность единиц доступа, которые состоят, в порядке декодирования, из единиц доступа IDR с последующими нулем или более не-IDR единицами доступа, включающими в себя все последующие единицы доступа вплоть до, но включая, последующих единиц доступа IDR.
[0083] Понятие “картинки CRA с разорванными ссылками” было введено в JCTVC-I0404 (доступно на http://phenix.int-evry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I0404-v1.zip). По сравнению с понятием CRA, включенным в HEVC WD6, в JCTVC-I0404 предложено дополнительно позволить картинкам CRA, которые не находятся в начале потока битов, иметь недекодируемые опережающие картинки, подобные тем, которые картинка CRA, которая начинает поток битов, может иметь. В HEVC WD6 картинке CRA, которая начинает поток битов, разрешено сопровождаться (в порядке потока битов, также называемом порядком декодирования) опережающими картинками, которые не могут быть декодированы из-за отсутствующих предшествующих опорных картинок. Однако, картинке CRA, которая попадает в середину потока битов, или куда-нибудь кроме начала потока битов, не разрешено иметь такие недекодируемые опережающие картинки. Предложено в JCTVC-I0404 удалить это ограничение посредством добавления флага «разорванная ссылка», который может указывать потенциальное присутствие таких недекодируемых опережающих картинок.
[0084] Флаг «разорванная ссылка» предложен в JCTVC-I0404 как информация уровня картинок для картинок CRA в заголовке вырезки или некотором другом месте для информации уровня картинок, таком как набор параметров адаптации (APS). Когда этот флаг равен 1, потоку битов может быть разрешено содержать опережающие картинки для картинки CRA, которые не являются декодируемыми из-за отсутствующих предыдущих опорных картинок, даже при том, что поток битов начинается с картинки IDR или картинки CRA ранее в порядке потока битов.
[0085] Для картинки CRA с флагом «разорванная ссылка», равным 1, в дополнение к разрешению иметь недекодируемые опережающие картинки, как упомянуто выше, старший значащий бит (MSB) счета картинки по порядку (POC) может быть установлен в 0, он содержит no_output_of_prior_pics_flag, который действует таким же образом как для картинки IDR, и random_access_pic_id, который действует таким же образом как idr_pic_id картинок IDR. Кроме того, поток idr_pic_id (как в HEVC WD 6) переименован в random_access_pic_id, и его ограничения должны быть сделаны для применения как к картинкам CRA так и к картинкам IDR, а не только к картинкам IDR. Подобно картинке IDR, картинка CRA с broken_link_flag равным 1, может активировать другой набор параметров последовательности (SPS), изменить размер картинки, и т.д.
[0086] Подход “картинок CRA с разорванными ссылками” в JCTVC-I0404 и другие существующие видео подходы произвольного доступа могут в некоторых случаях быть ассоциированы с несколькими проблемами или недостатками. Например, сигнализация флага «разорванная ссылка» в заголовке вырезки или APS требует объекта (например, сервер, MANE, или видео модуль редактирования/модуль стыковки), который изменяет нормальную картинку CRA на картинку BLC, когда необходимо, чтобы быть способным к энтропийному кодированию и синтаксически разобрать заголовок вырезки и/или APS, чтобы закодировать флаг. Это также требует объекта, который идентифицирует картинку BLC, когда необходимо, как способную к энтропийному декодированию и синтаксическому разбору заголовка вырезки и/или APS, чтобы найти флаг.
[0087] В качестве другого примера, картинке с разорванной ссылкой CRA (BLC) разрешено не активировать SPS, набор параметров картинки (PPS), или APS (когда на нее ссылаются с помощью картинки), если ID набора параметров является тем же самым как активный SPS, PPS или APS. Однако, так как картинка BLC обычно происходит из другого потока битов, чем предыдущая картинка в порядке декодирования, картинка BLC в целом использует другие полезные данные последовательности необработанных битов SPS (RBSP), PPS RBSP, и APS RBSP, и вероятно, что и картинка BLC и предыдущая картинка в порядке декодирования ссылаются на (прямо или косвенно) одно и то же значение ID для SPS или PPS. Для них также возможно ссылаться на одно и то же значение ID APS. Используя активный SPS, PPS, или APS для предыдущей картинки при декодировании может в некоторых случаях вынудить декодирование картинки BLC и следующих картинок (не только опережающих картинок) быть некорректным.
[0088] В качестве другого примера, не включение random_access_pic_id и no_output_of_prior_pics_flag в нормальные картинки CRA требует объекта, который изменяет нормальную картинку CRA на картинку BLC, когда необходимо, чтобы быть способным к энтропийному кодированию и синтаксически разобрать заголовок вырезки и/или APS, чтобы закодировать элементы синтаксиса. В качестве еще одного примера, так как картинка BLC обычно порождается из другого потока битов, чем предыдущая картинка в порядке декодирования, если no_output_of_prior_pics_flag равен 0, буфер декодированных картинок может переполниться; таким образом все следующие картинки в порядке декодирования могут быть декодированы некорректно, или декодер может даже потерпеть неудачу.
[0089] В качестве другого примера, когда часть первого потока битов и часть второго потока битов, в котором часть второго потока битов начинается с картинки picA CRA, стыкуются или конкатенируются, можно не менять картинку CRA на картинку BLC, а вместо этого хранить picA как картинку CRA в случае, если декодирование начинается от предыдущей картинки CRA или картинки IDR или картинки BLC, причем качество декодирования опережающих картинок картинки picA CRA является приемлемым, хотя и не совершенным, (например, когда контрольные суммы одной или более опережающих картинок не соответствуют контрольным суммам, сообщенным в сообщениях SEI хэш-значения декодированной картинки, как в HVEC WD6). Однако, отсутствует механизм, чтобы указывать вышеупомянутую информацию в потоке битов.
[0090] Настоящее раскрытие описывает способы, которые могут в некоторых случаях преодолеть некоторые из недостатков, описанных выше. Различные способы, описанные здесь, могут быть реализованы или индивидуально или в комбинации с другими описанными способами. Следующие способы основаны на понятии картинок CRA с разорванными ссылками, как сформулировано в JCTVC-I0404.
[0091] Согласно одному способу, вместо того, чтобы использовать флаг в заголовке вырезки, чтобы указывать картинку CRA с разорванной ссылкой (то есть картинку BLC), отличный тип единицы уровня абстракции сети (NAL) (например, тип единицы NAL, равный 2, который зарезервирован в HEVC WD6), может быть использован для указания, что единица NAL принадлежит картинке с разорванной ссылкой, которая может упоминаться как картинка BLC или BLA. Одна картинка BLC может содержать более, чем одну единицу NAL. Такой способ может быть менее сложным для сетевого объекта, так как способ может не требовать, чтобы энтропийное кодирование или декодирование для объекта изменяло нормальную картинку CRA (например, изменяя тип единицы NAL) на картинку BLC, когда необходимо. Дополнительно, это может не требовать энтропийного кодирования для объекта, чтобы идентифицировать картинку BLC, когда необходимо. Для нормальной картинки CRA, которая не начинает поток битов, все ассоциированные опережающие картинки могут быть необходимыми быть декодируемыми (то есть, могут быть корректно декодированы).
[0092] Согласно другому способу, вместо того, чтобы позволить картинке BLC активировать отличный SPS, требуется, чтобы картинка BLC активировала SPS, даже если ID SPS, на которую ссылается картинка BLC (косвенно через PPS как в HEVC WD6, или любым другим образом, например, косвенно через набор параметров группы, как описано в JCTVC-I0338, или непосредственно, например, когда ID SPS непосредственно включен в заголовок вырезки, или косвенно через сообщение SEI периода буферизации), является тем же самым как ID SPS активного SPS для предыдущей картинки в порядке декодирования. Это имеет место потому, что картинка BLC типично была из отличного потока битов, чем предыдущая картинка в порядке декодирования, и типично отличные RBSP SPS применяются, с идентичными или отличными ID SPS.
[0093] Картинка BLC также должна активировать PPS, даже если ID PPS, на который ссылается картинка BLC (косвенно через набор параметров группы, как описано в JCTVC-I0338, или непосредственно, например, когда ID PPS непосредственно включен в заголовок вырезки, как в HEVC WD6), является тем же самым, как ID PPS активного PPS для предыдущей картинки в порядке декодирования. Это снова имеет место потому, что картинка BLC типично была из другого потока битов, чем предыдущая картинка в порядке декодирования, и типично различные RBSP PPS применяются с идентичными или различными ID PPS.
[0094] Картинка BLC также должна активировать APS, если она относится к APS, даже если ID APS, на который ссылается BLC, является тем же самым как ID APS активного PPS для предыдущей картинки в порядке декодирования. Это снова имеет место потому, что картинка BLC типично была из другого потока битов, чем предыдущая картинка в порядке декодирования, и типично различные RBSP APS применяются, с идентичными или отличными ID APS.
[0095] Как используется в настоящем раскрытии, картинка BLC может быть определена как закодированная картинка, для которой тип единицы NAL является таким же как для картинки BLC (например, тип единицы NAL, равный 2, который зарезервирован в HEVC WD6). Картинка BLC может рассматриваться как имеющая специальный тип картинки CRA. Тот же самый процесс декодирования для картинки CRA не-BLC, когда она начинает поток битов, и ассоциированных опережающих картинок применяется для декодирования картинки BLC и ассоциированных опережающих картинок, даже если картинка BLC не является первой картинкой в потоке битов. Альтернативно, картинки BLC могут быть исключены из картинок CRA, то есть, картинка BLC может рассматриваться не как картинка CRA. В этом случае, один и тот же процесс декодирования для картинки CRA, когда она начинает поток битов, и ассоциированных опережающих картинок применяется для декодирования картинки BLC и ассоциированных опережающих картинок, даже если картинка BLC не является первой картинкой в потоке битов. В последующем описании этого документа предполагается, что эта альтернатива применяется. Единица доступа BLC может быть определена как единица доступа, в которой закодированная картинка является картинкой BLC. Определение закодированной последовательности видео может быть изменено, чтобы быть следующим: последовательность единиц доступа, которая включает в себя, в порядке декодирования, единицу доступа IDR или единицу доступа BLC, сопровождаемую нулем или более единицами доступа не-IDR и не-BLC, включая все последующие единицы доступа вплоть до, но не включая, любой последующей единицы доступа IDR или BLC.
[0096] Согласно другому способу, вместо того, чтобы иметь или один или оба из random_access_pic_id и no_output_of_prior_pics_flag для только картинок IDR и картинок BLC как в JCTVC-I0404, любое из обоих из этих двух полей может всегда присутствовать для всех картинок IDR, картинок BLC, и всех картинок CRA. Для каждой картинки CRA no_output_of_prior_pics_flag может потребоваться, чтобы быть равным 0. Такой способ может в некоторых случаях облегчить для сетевого объекта изменять картинку CRA на картинку BLC, когда необходимо. Альтернативно, для картинки BLC может не требоваться, чтобы no_output_of_prior_pics_flag был равен 1. Альтернативно, каждая картинка BLC может не иметь сигнализированного no_output_of_prior_pics_flag, но поведение вывода картинки может быть таким же, как будто она имела no_output_of_prior_pics_flag равный 1. Альтернативно, каждая картинка BLC может иметь сигнализированный no_output_of_prior_pics_flag, но поведение вывода картинки может быть таким же, как будто она имела no_output_of_prior_pics_flag равный 1, независимо от значения сигнализированного no_output_of_prior_pics_flag.
[0097] Согласно другому способу, значение MSB POC для картинки BLC может быть сигнализировано, например, в заголовке вырезки. Если оно сигнализировано, это значение все еще рассматривается как равное 0 в процессе декодирования, независимо от этого значения. Альтернативно, сигнализированное значение MSB POC используется в процессе декодирования, но затем модуль стыковки должен проверить и возможно изменить это значение, чтобы было совместимым со значениями POC более ранних картинок в порядке декодирования.
[0098] Согласно другому способу, когда часть первого потока битов и часть второго потока битов, в котором часть второго потока битов начинается от картинки picA CRA, стыкуются или конкатенируются, модуль стыковки может хранить picA как картинку CRA в случае, когда декодирование начинается от предыдущей картинки CRA или картинки IDR или картинки BLC, качество декодирования опережающих картинок картинки picA CRA является приемлемым, хотя и не совершенным (прекрасным) (например, когда контрольные суммы одной или более опережающих картинок не совпадают с контрольными суммами, сигнализированными в сообщениях SEI хэш-значения декодированной картинки, как в HVEC WD6). Индикация вышеупомянутой информации может быть сигнализирована в потоке битов. Информация может быть сигнализирована с помощью индикации, ассоциированной с picA, например, как флаг в заголовке единицы NAL или заголовке вырезки или APS, на которую ссылаются, или сообщение SEI, ассоциированное с picA. Этот флаг можно назвать exact_match_flag, значение 1 указывает, что контрольная сумма каждой опережающей картинки, ассоциированной с picA, совпадает с контрольной суммой, сигнализированной в сообщениях SEI хэш-значения декодированной картинки, если присутствует, и значение 0 указывают, что контрольная сумма каждой опережающей картинки, ассоциированной с picA, может совпадать или может не совпадать с контрольной суммой, сигнализированной в сообщениях SEI хэш-значения декодированной картинки, если присутствует.
[0099] Фиг. 3 является блок-схемой, иллюстрирующей примерный кодер 20 видео, который может реализовать способы, описанные в настоящем раскрытии. Видео кодер 20 может быть сконфигурирован, чтобы выводить видео на объект 27 пост-обработки. Объект 27 пост-обработки предназначен, чтобы представить пример видео объекта, такого как устройство стыковки/редактирования или MANE, которое может обрабатывать закодированные видео данные от видео кодера 20. В некоторых случаях объект пост-обработки может быть примером сетевого объекта. В некоторых системах кодирования видео объект 27 пост-обработки и видео кодер 20 могут быть частями отдельных устройств, в то время как в других случаях функциональные возможности, описанные относительно объекта 27 пост-обработки, могут быть выполнены тем же устройством, которое содержит видео кодер 20.
[0100] Видео кодер 20 может выполнять внутреннее и внешнее кодирование блоков видео в пределах видео вырезок. Внутреннее кодирование полагается на пространственное предсказание, чтобы уменьшить или удалить пространственную избыточность в видео в пределах заданного видео кадра или картинки. Внешнее кодирование полагается на временное предсказание, чтобы уменьшить или удалить временную избыточность в видео в пределах смежных кадров или картинок последовательности видео. Внутренний режим (I режим) может ссылаться на любой из нескольких пространственно основанных режимов сжатия. Внешние режимы, такие как однонаправленное предсказание (P режим) или bi-предсказание (B режим), могут ссылаться на любой из нескольких временно основанных режимов сжатия.
[0101] В примере на Фиг. 3 видео кодер 20 включает в себя модуль 35 разделения, модуль 41 обработки предсказания, блок 63 фильтров, память 64 картинок, сумматор 50, модуль 52 обработки преобразования, модуль 54 квантования и модуль 56 энтропийного кодирования. Модуль 41 обработки предсказания включает в себя модуль 42 оценки движения, модуль 44 компенсации движения и модуль 46 обработки внутреннего предсказания. Для реконструкции блока видео, видео кодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обработки обратного преобразования и сумматор 62. Блок 63 фильтров предназначен, чтобы предоставить один или более контурных фильтров, такие как фильтр удаления блочности, адаптивный контурный фильтр (ALF), и фильтр адаптивного смещения выборки (САО). Хотя блок 63 фильтров иллюстрирован на Фиг. 3 как находящийся в контурном фильтре, в других конфигурациях блок 63 фильтров может быть реализован как пост-контурный фильтр.
[0102] Как иллюстрировано на Фиг. 3, видео кодер 20 принимает видео данные, и модуль 35 разделения разделяет данные на блоки видео. Это разделение может также включать в себя разделение на вырезки, неперекрывающиеся части, или другие большие блоки, в также как разделение блока видео, например, согласно структуре квадродерева для единиц LCU и единиц CU. Видео кодер 20 в целом иллюстрирует компоненты, которые кодируют блоки видео в пределах видео вырезки, которая должна быть закодирована. Вырезка может быть разделена на множественные блоки видео (и возможно на наборы блоков видео, называемых неперекрывающимися частями). Модуль 41 обработки предсказания может выбрать один из множества возможных режимов кодирования, таких как один из множества режимов внутреннего кодирования или один из множества внешних режимов кодирования, для текущего блока видео, на основании результатов ошибки (например, скорость кодирования и уровень искажения). Модуль 41 обработки предсказания может выдать результирующий внутренне или внешне кодированный блок к сумматору 50, чтобы генерировать остаточные данные блока, и к сумматору 62, чтобы восстановить закодированный блок для использования в качестве опорной картинки.
[0103] Как описано выше, в некоторых случаях видео кодер 20 может закодировать точку произвольного доступа или точку адаптации потока, такую как точка переключения временного уровня, такую как картинка BLC или BLA. Например, кодирование может иметь место в пределах модуля 56 энтропийного кодирования, который может выполнить и энтропийное и неэнтропийное кодирование. Одна или более этих картинок может быть опережающей картинкой для картинки CRA. Опережающие картинки для картинки CRA могут быть корректно декодированы, если декодирование начинается с картинки RAP перед текущей картинкой CRA. Однако, опережающие картинки для картинки CRA не могут быть корректно декодированы, когда имеет место произвольный доступ из картинки CRA. Например, опережающие картинки могут указывать на блоки для опорного элемента предсказания, которые являются недоступными. Соответственно, опережающая картинка может не быть декодируемой в видео декодере 30. Соответственно, эти опережающие картинки типично отбрасываются во время декодирования с произвольным доступом.
[0104] В примере видео кодер 20 может обеспечить флаг в заголовке вырезки, например, no_output_of_prior_pics_flag или элементе синтаксиса так, чтобы ни одна из предшествующих картинок, то есть, картинок до картинки BLA или BLC, в DPB не была выведена. В некоторых примерах этот флаг (или элемент синтаксиса) может быть раньше в заголовке вырезки перед энтропийным кодированием так, чтобы он мог быть более легко декодирован в декодере 30, например, и эта информация может быть доступной ранее в процессе кодирования. Элемент синтаксиса или флаг могут быть закодированы, например, в заголовке вырезки для картинки BLA или BLC, модулем 56 энтропийного кодирования (который может выполнить неэнтропийное кодирование). Это может быть полезно, например, для промежуточных устройств, таких как MANE, так, чтобы информация, предоставленная элементом синтаксиса или флагом, могла быть доступной для промежуточного устройства без энтропийного декодирования, хотя для декодера также может быть полезно иметь доступ к такой информации до энтропийного декодирования.
[0105] Например, видео кодер 20 (например, модуль 56 энтропийного кодирования) может включать в себя элемент синтаксиса, который указывает, что буфер хранения картинок опустошен без вывода картинок из буфера хранения картинок. Этот элемент синтаксиса, когда установлен, может вынудить картинки до текущей картинки в порядке декодирования и постоянно находящиеся в буфере хранения картинок во время декодирования текущей картинки, освободить буфер хранения картинок без того, чтобы быть выведенным. В некоторых примерах элемент синтаксиса может быть одним из множества элементов синтаксиса. Дополнительно, множество элементов синтаксиса может включать в себя энтропийно закодированные элементы синтаксиса заголовка вырезки и неэнтропийно закодированные элементы синтаксиса заголовка вырезки. В одном примере элемент синтаксиса, который указывает, что буфер хранения картинок опустошен без вывода каких-либо картинок из буфера хранения картинок, включен в заголовок вырезки прежде любого энтропийно закодированного элемента синтаксиса заголовка вырезки так, чтобы сам этот элемент синтаксиса не был энтропийно кодирован.
[0106] В некоторых примерах этот элемент синтаксиса может быть no_output_of_prior_pics_flag, и no_output_of_prior_pics_flag может быть включен в заголовок вырезки немедленно после first_slice_in_pic_flag. first_slice_in_pic_flag может быть флагом, который указывает, является ли вырезка первой вырезкой в порядке декодирования картинки.
[0107] В одном примере видео кодер 20 может быть сконфигурирован, чтобы включать в себя типы единицы NAL, назначенные для указания, когда картинки BLA или BLC имеют и не имеют опережающих картинок. Например, в одном стандарте типы 16, BLA_W_LP (BLA с опережающей картинкой); 17, BLA_W_DLP (BLA с декодируемой опережающей картинкой); и 18, BLA_N_LP (BLA нет опережающей картинки) единицы NAL включены. Эти типы единицы NAL могут быть закодированы модулем 56 энтропийного кодирования (который может выполнить неэнтропийное кодирование). Соответственно, на основании типа единицы NAL декодер может знать, когда картинка BLA имеет опережающую картинку и когда опережающая картинка не является декодируемой, например, декодирование начинается от более ранней картинки RAP. Соответственно, эта информация может быть использована для определения, когда опережающие картинки могут быть отмечены как неиспользуемые для ссылки, что может вынудить декодер пометить опорные картинки в буфере декодированных картинок как неиспользуемые для ссылки.
[0108] Модуль 46 обработки внутреннего предсказания в пределах модуля 41 обработки предсказания может выполнить внутренне предсказывающее кодирование текущего блока видео относительно одного или более соседних блоков в том же самом кадре или вырезке, что и текущий блок, который должен быть закодирован, чтобы обеспечить пространственное сжатие. Модуль 42 оценки движения и модуль 44 компенсации движения в пределах модуля 41 обработки предсказания выполняют внешне предсказывающее кодирование текущего блока видео относительно одного или более блоков для ссылки для предсказания в одной или более опорных картинках, чтобы обеспечить временное сжатие.
[0109] Модуль 42 оценки движения может быть сконфигурирован, чтобы определить режим внешнего предсказания для видео вырезки согласно заранее определенному шаблону для последовательности видео. Заранее определенный шаблон может обозначить видео вырезки в последовательности как P вырезки, B вырезки или вырезки GPB. Модуль 42 оценки движения и модуль 44 компенсации движения могут быть высоко интегрированными, но иллюстрированы отдельно в концептуальных целях. Оценка движения, выполненная модулем 42 оценки движения, является процессом генерирования векторов движения, которые оценивают движение для блоков видео. Вектор движения, например, может указывать смещение PU блока видео в пределах текущего видео кадра или картинки относительно предсказывающего блока в пределах опорной картинки.
[0110] Предсказывающий блок является блоком, который обнаружен как близко соответствующий к PU блока видео, который должен быть закодирован, в терминах пиксельной разности, которая может быть определена суммой абсолютных разностей (SAD), сумма разностей квадратов (SSD) или другими метриками разности. В некоторых примерах видео кодер 20 может вычислить значения для суб-целочисленных позиций пикселя опорных картинок, сохраненных в памяти 64 картинок. Например, видео кодер 20 может интерполировать значения пиксельных позиций с одной четвертью, пиксельных позиций с одной восьмой или других фракционных пиксельных позиций опорной картинки. Поэтому модуль 42 оценки движения может выполнить поиск движения относительно полных пиксельных позиций и фракционных пиксельных позиций и вывести вектор движения с фракционной пиксельной точностью.
[0111] Модуль 42 оценки движения вычисляет вектор движения для PU блока видео во внешне кодированной вырезке посредством сравнения позиции PU с позицией предсказывающего блока опорной картинки. Опорная картинка может быть выбрана из первого списка опорных картинок (Список 0) или второго списка опорных картинок (Список 1), каждый из которых идентифицируют одну или более опорных картинок, сохраненных в памяти 64 картинок. Модуль 42 оценки движения посылает вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения.
[0112] Компенсация движения, выполненная модулем 44 компенсации движения, может включать выборку или генерирование предсказывающего блока на основании вектора движения, определенного посредством оценки движения, возможно выполняя интерполяции до суб-пиксельной точности. После приема вектора движения для PU текущего блока видео модуль 44 компенсации движения может определить местонахождение предсказывающего блока, на который вектор движения указывает, в одном из списков опорных картинок. Видео кодер 20 формирует остаточный блок видео, вычитая пиксельные значения предсказывающего блока из пиксельных значений текущего закодированного блока видео, формируя значения пиксельной разности. Значения пиксельной разности формируют остаточные данные для блока, и могут включать в себя компоненты различия и яркости и насыщенности цвета. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 44 компенсации движения может также генерировать элементы синтаксиса, ассоциированные с блоками видео и видео вырезкой для использования видео декодером 30 при декодировании блоков видео для видео вырезки.
[0113] Модуль 46 внутреннего предсказания может внутренне предсказывать текущий блок в качестве альтернативы внешнему предсказанию, выполняемому модулем 42 оценки движения и модулем 44 компенсации движения, как описано выше. В частности, модуль 46 внутреннего предсказания может определить режим внутреннего предсказания, чтобы использовать, чтобы закодировать текущий блок. В некоторых примерах модуль 46 внутреннего предсказания может закодировать текущий блок, используя другие режимы внутреннего предсказания, например, во время отдельных проходов кодирования, и модуль 46 внутреннего предсказания (или модуль 40 выбора режима, в некоторых примерах) может выбрать соответствующий режим внутреннего предсказания для использования из протестированных режимов. Например, модуль 46 внутреннего предсказания может вычислить значения скорость передачи - искажение, используя анализ скорость передачи - искажение для различных протестированных режимов внутреннего предсказания, и выбрать режим внутреннего предсказания, имеющий лучшие характеристики скорость передачи - искажение среди протестированных режимов. Анализ скорость передачи - искажение в целом определяет величину искажения (или ошибку) между закодированным блоком и первоначальным незакодированным блоком, который был закодирован, чтобы сформировать закодированный блок, а так же частоту следования битов (то есть, количество битов), использованных для получения закодированного блока. Модуль 46 внутреннего предсказания может вычислить отношения из искажений и скоростей передачи для различных закодированных блоков, чтобы определить, какой режим внутреннего предсказания показывает лучшее значение скорость передачи - искажение для блока.
[0114] В любом случае, после выбора режима внутреннего предсказания для блока, модуль 46 внутреннего предсказания может предоставить информацию, указывающую выбранный режим внутреннего предсказания для блока, к модулю 56 энтропийного кодирования. Модуль 56 энтропийного кодирования может закодировать информацию, указывающую выбранный режим внутреннего предсказания, в соответствии со способами настоящего раскрытия. Видео кодер 20 может включать в переданный поток битов данные конфигурации. Поток битов может включать в себя множество таблиц индексов режима внутреннего предсказания, и множество модифицированных таблиц индексов режима внутреннего предсказания (также называемых таблицы отображения кодового слова), определения контекстов кодирования для различных блоков, и индикации наиболее вероятного режима внутреннего предсказания, таблицы индексов режима внутреннего предсказания, и модифицированные таблицы индексов режима внутреннего предсказания, чтобы использовать для каждого из контекстов.
[0115] После того, как модуль 41 обработки предсказания генерирует предсказывающий блок для текущего блока видео или через внешнее предсказание или через внутреннее предсказание, видео кодер 20 формирует остаточный блок видео, вычитая предсказывающий блок из текущего блока видео. Остаточные видео данные в остаточном блоке могут быть включены в одну или более единиц TU и поданы на модуль 52 обработки преобразования. Модуль 52 обработки преобразования преобразует остаточные видео данные в остаточные коэффициенты преобразования, используя преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально подобный преобразование. Модуль 52 обработки преобразования может преобразовать остаточные видео данные из пиксельной области в область преобразования, такую как частотная область.
[0116] Модуль 52 обработки преобразования может послать результирующие коэффициенты преобразования в модуль 54 квантования. Модуль 54 квантования квантует коэффициенты преобразования, чтобы далее уменьшить частоту следования битов. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть модифицирована, регулируя параметр квантования. В некоторых примерах модуль 54 квантования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Альтернативно, модуль 56 энтропийного кодирования может выполнить сканирование.
[0117] Вслед за квантованием модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнить контекстно-адаптивное кодирование с переменной длиной кода (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование с разделением интервала вероятности (PIPE) или другую методику или способ энтропийного кодирования. После энтропийного кодирования модулем 56 энтропийного кодирования, закодированный поток битов может быть передан к видео декодеру 30, или заархивирован для более поздней передачи или поиска видео декодером 30. Модуль 56 энтропийного кодирования может также энтропийно кодировать вектора движения и другие элементы синтаксиса для текущей видео закодированной вырезки.
[0118] Модуль 58 обратного квантования и модуль 60 обработки обратного преобразования применяет обратное квантование и обратное преобразование, соответственно, чтобы восстановить остаточный блок в пиксельной области для более позднего использования в качестве опорного блока опорной картинки. Модуль 44 компенсации движения может вычислить опорный блок посредством суммирования остаточного блока с предсказывающим блоком одной из опорных картинок в одном из списков опорных картинок. Модуль 44 компенсации движения может также применить один или более фильтров интерполяции к восстановленному остаточному блоку, чтобы вычислить суб-целочисленные пиксельные значения для использования в оценке движения. Сумматор 62 суммирует восстановленный остаточный блок с блоком предсказания со скомпенсированным движением, сформированному модулем 44 компенсации движения, чтобы сформировать опорный блок для хранения в памяти 64 картинок. Опорный блок может использоваться модулем 42 оценки движения и модулем 44 компенсации движения как опорный блок, чтобы внешне предсказать блок в последующем видео кадре или картинке.
[0119] Фиг. 4 является блок-схемой, иллюстрирующей примерный видео декодер 30, который может реализовать способы, описанные для расширенной поддержки адаптации потока и стыковки на основании картинок RAP с разорванной ссылкой, описанные выше. В примере на Фиг. 4, видео декодер 30 включает в себя модуль 80 энтропийного декодирования, модуль 81 обработки предсказания, модуль 86 обратного квантования, модуль 88 обратного преобразования, сумматор 90, блок 91 фильтров и память 92 картинок. Модуль 81 обработки предсказания включает в себя модуль 82 компенсации движения и модуль 84 обработки внутреннего предсказания. Видео декодер 30 в некоторых примерах может выполнить проход декодирования, в целом обратный к проходу кодирования, описанному относительно видео кодера 20 на Фиг. 3.
[0120] Во время процесса декодирования видео декодер 30 принимает закодированный поток битов видео, который представляет блоки видео закодированной видео вырезки и ассоциированные элементы синтаксиса, от видео кодера 20. Видео декодер 30 может принять закодированный поток битов видео от сетевого объекта 29. Сетевой объект 29 может, например, быть сервером, MANE, модулем редактирования/модулем стыковки видео, или другим таким устройством, сконфигурированным, чтобы реализовать один или более способов, описанных выше. Сетевой объект 29 может или не может включать в себя видео кодер 20. Как описано выше, некоторые из способов, описанных в настоящем раскрытии, могут быть реализованы сетевым объектом 29 до того, как сеть 29 передаст закодированный видео поток битов к видео декодеру 30. В некоторых системах декодирования видео сетевой объект 29 и видео декодер 30 может быть частями отдельных устройств, в то время как в других случаях функциональные возможности, описанные относительно сетевого объекта 29, могут быть выполнены тем же устройством, которое содержит видео декодер 30.
[0121] Сетевой объект 29 представляет пример устройства обработки видео, сконфигурированного, чтобы принять первую единицу уровня абстракции сети (NAL), содержащую часть видео данных, и на основании типа единицы NAL упомянутой первой единицы NAL, обнаружить картинку с разорванной ссылкой. Сетевой объект 29 также может представить пример устройства обработки видео, сконфигурированного, чтобы принять единицу уровня абстракции сети (NAL), содержащую часть видео данных; определить, что единица NAL содержит картинку с разорванной ссылкой; и установить тип единицы NAL для упомянутой единицы NAL в тип единицы NAL, который указывает, что единица NAL содержит картинку с разорванной ссылкой.
[0122] Как описано выше, в некоторых примерах видео декодер 30 может декодировать картинку RAP с разорванной ссылкой, такую как картинка BLA, или картинки, которые находятся после точки произвольного доступа или точки адаптации потока, такой как точка переключения временного уровня, такую как опережающие картинки. Опережающие картинки не могут быть корректно декодированы, когда происходит произвольный доступ от картинки RAP с разорванной ссылкой.
[0123] В примере, чтобы предотвратить распространение ошибки от опорных картинок, которые могут не быть доступны в зависимости от того, где декодирование начинается, видео декодер 30 может не использовать какую-либо картинку, которая предшествует картинке RAP с разорванной ссылкой или в порядке декодирования или в порядке вывода (который включает в себя опережающие картинки) в качестве опорных картинок. Например, модуль 81 обработки предсказания может не использовать какую-либо картинку, сохраненную в памяти 92 картинок, которая предшествует картинке RAP с разорванной ссылкой или в порядке декодирования или в порядке вывода (который включает в себя опережающие картинки) в качестве опорных картинок.
[0124] В различных примерах видео декодер 30 может отметить все опорные картинки в DPB как неиспользуемые для ссылки прежде, чем декодировать картинку BLA как неиспользуемую для ссылки. Например, модуль 80 энтропийного декодирования, который может выполнить энтропийное и неэнтропийное декодирование, может отметить опорные картинки в памяти 92 картинок, иногда называемой буфером декодированных картинок (DPB), как неиспользуемые для ссылки. Видео декодер 30 (например, модуль 80 энтропийного декодирования) может определить, что текущая картинка является картинкой BLA или BLC и отметить опорные картинки в буфере хранения картинок как неиспользуемые для ссылки до декодирования картинки BLC или BLA. Определение, что текущая картинка является картинкой BLA или BLC, может включать в себя определение, что текущая картинка является картинкой CRA, и определение, что текущая картинка является картинкой RAP. Текущая картинка CRA является картинкой BLA, когда текущая картинка является и картинкой CRA и картинкой RAP. В некоторых примерах это определение декодером 30 может быть сделано на основании картинки, имеющей тип единицы NAL BLA.
[0125] В другом примере при декодировании картинки BLA декодер 30 может принять флаг или элемент синтаксиса в закодированном потоке битов, например, no_output_of_prior_pics_flag, так, чтобы ни одна из предшествующих картинок в DPB не была выведена. В некоторых примерах этот флаг может быть представлен ранее в заголовке вырезки, вырезке картинки BLA, перед энтропийным декодированием так, чтобы она могла быть более легко декодирована, и эта информация была доступна ранее в процессе кодирования. Флаг или элемент синтаксиса могут быть декодированы модулем 80 энтропийного декодирования, который может выполнить и энтропийное и неэнтропийное декодирование. Помещая флаг или другой элемент синтаксиса ранее в заголовке вырезки до энтропийного кодирования может обеспечить, чтобы менее сложные устройства, такие как MANE, имели доступ к этой информации, не требуя энтропийного декодера так как, например, no_output_of_prior_pics_flag не должен быть энтропийно декодирован в этом примере.
[0126] В одном примере видео декодер 30 может поместить элемент синтаксиса, например, no_output_of_prior_pics_flag, в потоке битов для приема декодером. Этот элемент синтаксиса может указывать, что буфер хранения картинок опустошен, не выводя какой-либо картинки из буфера хранения картинок. Элемент синтаксиса, когда установлен, может вынудить картинки до текущей картинки в порядке декодирования и находящиеся в буфере хранения картинок во время декодирования текущей картинки быть удаленными из буфера хранения картинок без их вывода. В некоторых примерах этим элементом синтаксиса может быть один из множества элементов синтаксиса. Дополнительно, множество элементов синтаксиса может включать в себя один или более энтропийно закодированных элементов синтаксиса заголовка вырезки, и один или более неэнтропийно закодированных элементов синтаксиса заголовка вырезки. В одном примере элемент синтаксиса, который указывает, что буфер хранения картинок опустошен без вывода какой-либо картинки из буфера хранения картинок, включен в заголовок вырезки, например, как u(1) элемент), перед любым энтропийно закодированным элементом синтаксиса заголовка вырезки, например, перед любым ue(v) элементом. В некоторых примерах элемент синтаксиса может быть no_output_of_prior_pics_flag, и no_output_of_prior_pics_flag может быть включен в заголовок вырезки немедленно после first_slice_in_pic_flag и перед любыми энтропийно кодированными элементами. first_slice_in_pic_flag может быть флагом, который указывает, является ли вырезка первой вырезкой, в порядке декодирования, картинки.
[0127] В другом примере видео декодер 30 может обрабатывать типы единицы NAL, назначенные для указания, когда картинки BLA имеют и не имеют опережающих картинок. Видео декодер 30 может быть сконфигурирован, чтобы включать в себя типы единицы NAL, назначенные для указания, когда картинки BLA имеют и не имеют опережающих картинок. Например, модуль 80 энтропийного декодирования, который может выполнить энтропийное и неэнтропийное декодирование, может обрабатывать типы единицы NAL.
[0128] В одном примере видео декодер 30 (например, модуль 80 энтропийного декодирования) может декодировать картинки согласно одному из множества различных типов единиц уровня абстракции сети (NAL). Множество типов единиц NAL включает в себя одно или более из (1) закодированной вырезки картинки с разорванной ссылкой (например, называемой BLA или BLC), при этом картинка с разорванной ссылкой является картинкой с разорванной ссылкой с ассоциированными опережающими картинками (или декодируемыми или недекодируемыми) в потоке битов, (2) закодированной вырезки картинки с разорванной ссылкой, при этом картинка с разорванной ссылкой является картинкой BLA с ассоциированными декодируемыми опережающими картинками в потоке битов, и (3) закодированной вырезки картинки с разорванной ссылкой, при этом картинка с разорванной ссылкой является картинкой с разорванной ссылкой без ассоциированных опережающих картинок в потоке битов. В одном примере опережающая картинка содержит картинку, которая предшествует картинке произвольного доступа (RAP) в порядке отображения, но следует за картинкой произвольного доступа в порядке декодирования.
[0129] Модуль 80 энтропийного декодирования из видео декодера 30 энтропийно декодирует поток битов, чтобы генерировать квантованные коэффициенты, вектора движения, и другие элементы синтаксиса. Модуль 80 энтропийного декодирования направляет вектора движения и другие элементы синтаксиса к модулю 81 обработки предсказания. Видео декодер 30 может принять элементы синтаксиса на уровне вырезки видео и/или уровне блока видео.
[0130] Когда видео вырезка закодирована как внутренне кодированная (I) вырезка, модуль 84 обработки внутреннего предсказания из модуля 81 обработки предсказания может генерировать данные предсказания для блока видео текущей видео вырезки на основании сигнализированного режима внутреннего предсказания и данных от ранее декодированных блоков текущего кадра или картинки. Когда видео кадр закодирован как внешне кодированная (то есть, B, P или GPB) вырезка, модуль 82 компенсации движения из модуля 81 обработки предсказания формирует блоки для опорного элемента предсказания для блока видео текущей видео вырезки на основании векторов движения и других элементов синтаксиса, принятых от модуля 80 энтропийного декодирования. Блоки для опорного элемента предсказания могут быть сформированы из одной из опорных картинок в пределах одного из списков опорных картинок. Видео декодер 30 может построить списки опорных кадров, Список 0 и Список 1, используя способы конструирования по умолчанию, на основании опорных картинок, сохраненных в памяти 92 картинок.
[0131] Модуль 82 компенсации движения определяет информацию предсказания для блока видео текущей видео вырезки посредством синтаксического разбора вектора движения и других элементов синтаксиса, и использует эту информацию предсказания, чтобы сформировать блоки для опорного элемента предсказания для текущего декодируемого блока видео. Например, модуль 82 компенсации движения использует некоторые из принятых элементов синтаксиса, чтобы определить режим предсказания (например, внутреннее или внешнее предсказание), использованный для кодирования блоков видео для видео вырезки, тип вырезки внешнего предсказания (например, B вырезка, P вырезка, или вырезка GPB), информацию конструирования для одного или более списков опорных картинок для вырезки, векторы движения для каждого внешне кодированного блока видео вырезки, статус внешнего предсказания для каждого внешне кодированного блока видео вырезки, и другую информацию, чтобы декодировать блоки видео в текущей видео вырезке. Когда картинки в DPB отмечены как неиспользуемые для ссылки, не имеется доступных опорных картинок. Соответственно, видео декодер 30 будет не в состоянии декодировать опережающую картинку, ссылающуюся на более раннюю опорную картинку для внешнего предсказания.
[0132] Модуль 82 компенсации движения может также выполнить интерполяцию, на основании фильтров интерполяции. Модуль 82 компенсации движения может использовать фильтры интерполяции, которые используются видео кодером 20 во время кодирования блоков видео, чтобы вычислить интерполированные значения для суб-целочисленных пикселей опорных блоков. В этом случае модуль 82 компенсации движения может определить фильтры интерполяции, используемые видео кодером 20 из принятых элементов синтаксиса, и использовать эти фильтры интерполяции, чтобы сформировать блоки для опорного элемента предсказания.
[0133] Модуль 86 обратного квантования выполняет обратное квантование, то есть, деквантует, квантованные коэффициенты преобразования, предоставленные в потоке битов и декодированные модулем 80 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного видео кодером 20 для каждого блока видео в видео вырезке, чтобы определить степень квантования и, аналогично, степень обратного квантования, которое должно быть применено. Модуль 88 обработки обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование, или концептуально подобный процесс обратного преобразования, к коэффициентам преобразования, чтобы сформировать остаточные блоки в пиксельной области.
[0134] После того, как модуль 82 компенсации движения генерирует предсказывающий блок для текущего блока видео на основании вектора движения и других элементов синтаксиса, видео декодер 30 формирует декодированный блок видео, суммируя остаточные блоки от модуля 88 обработки обратного преобразования с соответствующими блоками для опорного элемента предсказания, генерируемого модулем 82 компенсации движения. Сумматор 90 представляет компонент или компоненты, которые выполняют эту операцию суммирования. Если желательно, контурные фильтры (или в контуре кодирования или после контура кодирования) могут также быть использованы для сглаживания пиксельных переходов, или иначе улучшить качество видео. Блок 91 фильтров предназначен, чтобы представить один или более контурных фильтров, такие как фильтр удаления блочности, адаптивный контурный фильтр (ALF), и фильтр адаптивного смещения выборки (САО). Хотя блок 91 фильтров иллюстрирован на Фиг. 4 как находящийся в контурном фильтре, в других конфигурациях блок 91 фильтров может быть реализован как пост-контурный фильтр. Декодированные блоки видео в заданном кадре или картинке затем сохраняются в памяти 92 картинок, которая хранит опорные картинки, используемые для последующей компенсации движения. Память 92 картинок также хранит декодированное видео для более позднего представления на устройстве отображения, таком как устройство 32 отображения из Фиг. 1.
[0135] В этом способе видео декодер 30 из Фиг. 4 представляет пример видео декодера, конфигурируемого, чтобы принять первую единицу уровня абстракции сети (NAL), содержащую часть видео данных и, на основании типа единицы NAL упомянутой первой единицы NAL, обнаружить картинку с разорванной ссылкой.
[0136] Фиг. 5 является блок-схемой, иллюстрирующей примерный набор устройств, которые формируют часть сети 100. В этом примере сеть 10 включает в себя устройства 104A, 104B маршрутизации (устройства 104 маршрутизации) и транскодирующее устройство 106. Устройства 104 маршрутизации и транскодирующее устройство 106 предназначены, чтобы представить небольшое количество устройств, которые могут формировать часть сети 100. Другие устройства сети, такие как коммутаторы, концентраторы, шлюзы, брандмауэры, мосты, и другие такие устройства могут также быть включены в сеть 100. Кроме того, дополнительные устройства сети могут быть предоставлены вдоль пути сети между серверным устройством 102 и клиентским устройством 108. Серверное устройство 102 может соответствовать исходному устройству 12 (Фиг. 1), в то время как клиентское устройство 108 может соответствовать устройству 14 назначения (Фиг. 1) в некоторых примерах.
[0137] В целом, устройства 104 маршрутизации реализуют один или более протоколов маршрутизации, чтобы обмениваться данными сети через сеть 100. В некоторых примерах устройства 104 маршрутизации могут быть сконфигурированы, чтобы выполнить операции кэша или посредника (прокси-). Поэтому, в некоторых примерах устройства 104 маршрутизации могут упоминаться как устройства-посредники. В целом, устройства 104 маршрутизации выполняют протоколы маршрутизации, чтобы обнаружить маршруты через сеть 100. Выполняя такие протоколы маршрутизации, устройство 104B маршрутизации может обнаружить маршрут сети от себя до серверного устройства 102 через устройство 104A маршрутизации.
[0138] Способы настоящего раскрытия могут быть реализованы сетевыми устройствами такие устройства 104 маршрутизации и транскодирующее устройство 106, но также и могут быть реализованы клиентским устройством 108. В этом способе устройства 104 маршрутизации, транскодирующее устройство 106, и клиентское устройство 108 представляют примеры устройств, конфигурируемых, чтобы выполнить способы настоящего раскрытия. Кроме того, устройства согласно Фиг. 1, и кодер, иллюстрированный на Фиг. 3 и декодер, иллюстрированный на Фиг. 4, являются также примерными устройствами, которые могут быть сконфигурированы, чтобы выполнить способы настоящего раскрытия.
[0139] Для примеров серверное устройство 102 может включать в себя кодер, чтобы закодировать картинку или картинки, которые находятся после точки произвольного доступа или точки адаптации потока, такой как точка переключения временного уровня, или другая точка адаптации потока. Например, эта точка может быть точкой переключения для адаптации частоты следования битов, частоты кадров (то есть, точкой переключения временного уровня), или пространственного разрешения. Аналогично, клиентское устройство 108 может декодировать картинку или картинки, которые находятся после точки произвольного доступа или точки адаптации потока, такой как точка переключения временного уровня. Снова, это может быть точкой переключения для адаптации частоты следования битов, частоты кадров (то есть, точкой переключения временного уровня), или пространственного разрешения. Одна или более этих картинок могут быть опережающими картинками. Опережающие картинки не могут быть корректно декодированы в клиентском устройстве 108, когда имеет место произвольный доступ из картинки BLA.
[0140] В примере, чтобы предотвратить распространение ошибки от опорных картинок, которые могут не быть доступны в зависимости от того, где декодирование начинается, клиентское устройство 108 может не применять картинки, сохраненные в буфере декодированных картинок (DPB), который предшествует картинке BLA или в порядке декодирования или в порядке вывода (который включает в себя опережающие картинки) в качестве опорных картинок.
[0141] В различных примерах клиентское устройство 108 может отметить все опорные картинки в DPB как неиспользуемые для ссылки прежде, чем декодировать картинку BLA. Например, клиентское устройство 108 может отметить опорные картинки в буфере декодированных картинок (DPB) как неиспользуемые для ссылки.
[0142] В другом примере, серверное устройство 102, клиентское устройство 108, или оба, может включать в себя элемент синтаксиса или флаг в заголовке вырезки и закодировать флаг в поток битов, например, no_output_of_prior_pics_flag, так, чтобы ни одна из предшествующих картинок в DPB, обработанных видео декодером 30 для декодирования опережающих картинок, не была выведена из DPB, например, для представления на монитор отображения. В некоторых примерах этот флаг может быть ранним в заголовке вырезки перед энтропийным декодированием так, чтобы он мог быть более легко декодирован, и эта информация доступна ранее в процессе кодирования. В одном примере одно из этих устройств элемента сети может преобразовать CRA в картинку с разорванной ссылкой, когда, например, необходимо стыковка или переключение канала или адаптация потока, такое как временное переключение уровня. Наличие флага, который может быть доступным без энтропийного кодирования, обеспечивает элементы сети без способности энтропийного декодирования, чтобы иметь доступ к флагу.
[0143] Множество типов единиц NAL включает в себя один или более из (1) закодированной вырезки картинки с разорванной ссылкой, при этом картинка с разорванной ссылкой является картинкой с разорванной ссылкой с ассоциированными опережающими картинками (или декодируемыми или недекодируемыми) в потоке битов, (2) закодированной вырезки картинки с разорванной ссылкой, при этом картинка с разорванной ссылкой является картинкой с разорванной ссылкой с ассоциированными декодируемыми опережающими картинками в потоке битов, и (3) закодированной вырезки картинки с разорванной ссылкой, при этом картинка с разорванной ссылкой является картинкой с разорванной ссылкой без ассоциированных опережающих картинок в потоке битов. В одном примере опережающая картинка содержит картинку, которая предшествует картинке произвольного доступа (RAP) в порядке отображения, но следует за картинкой произвольного доступа в порядке декодирования.
[0144] В различных примерах устройства 104A, 104B маршрутизации и транскодирующее устройство 106, которые составляют сеть 100, могут также выполнить некоторую обработку в отношении картинки или картинок, которые находятся после точки произвольного доступа или точки адаптации потока, такой как точка переключения временного уровня. Например, это может быть точкой переключения для адаптации частоты следования битов, частоты кадров (то есть, точкой переключения временного уровня), или пространственного разрешения. Как описано выше, одна или более этих картинок могут быть опережающими картинками, которые не могут быть корректно декодированы.
[0145] В одном примере, одно или более устройств 104A, 104B маршрутизации и транскодирующее устройство 106 могут не использовать картинки, которая предшествует картинке CRA или в порядке декодирования или в порядке вывода (который включает в себя опережающие картинки) в качестве опорных картинок. В другом примере одно или более устройств 104A, 104B маршрутизации и транскодирующее устройство 106 могут отметить все опорные картинки в DPB как неиспользуемые для ссылки прежде, чем декодировать картинку BLA. Например, одно или более устройств 104A, 104B маршрутизации и транскодирующее устройство 106 могут отметить опорные картинки в буфере декодированных картинок (DPB) как неиспользуемые для ссылки. В другом примере одно или более устройств 104A, 104B маршрутизации и транскодирующее устройство 106 или сервер потоковой передачи может использовать флаг, например, no_output_of_prior_pics_flag так, чтобы ни одна из предшествующих картинок в DPB не была выведена. Дополнительно, устройства 104A, 104B маршрутизации и транскодирующее устройство 106 могут обрабатывать типы единицы NAL, назначенные для указания, когда картинки BLA имеют и не имеют опережающих картинок.
[0146] Фиг. 6 является диаграммой, иллюстрирующей пример в соответствии с способами, описанными в настоящем раскрытии. Фиг. 6 иллюстрирует примеры случаев, когда опережающие картинки являются декодируемыми и недекодируемыми. Декодируемость опережающих картинок может быть основана на местоположении предсказывающего блока. Дополнительно, декодируемость опережающих картинок может быть основана на том, является ли текущая картинка CRA картинкой CRA, которая не является картинкой BLA, или текущая картинка CRA является картинкой CRA, которая является также картинкой BLA. (Картинки BLA являются поднабором картинок CRA).
[0147] Часть 200 из Фиг. 6 иллюстрируют последовательность картинок в порядке декодирования. Первоначально, видео декодер 30 (Фиг. 1 и 4) или клиентское устройство 108 (Фиг. 5) например, может декодировать картинку RAP в местоположении 202 в качестве первой картинки в последовательности видео. Видео декодер 30 или клиентское устройство 108 может затем декодировать картинку или часть картинки, которая может действовать в качестве опорной картинки в местоположении 204. Как иллюстрировано на Фиг. 6, местоположение 204 является возможным местоположением опорной картинки в порядке декодирования. Если опорная картинка будет расположена в местоположении 204, и картинка в местоположении 206 является картинкой CRA, которая не является картинкой BLA, то опережающая картинка в местоположении 208 будет декодируемой. Наоборот, если опорная картинка будет расположена в местоположении 204, и картинка в местоположении 206 является картинкой CRA, которая является также картинкой с разорванной ссылкой, то опережающая картинка в местоположении 208 не будет декодируемой (картинки с разорванной ссылкой, называемые картинками BLA или BLC, являются поднабором картинок CRA).
[0148] Если картинка RAP в местоположении 202 является картинкой RAP, где декодирование начинается и текущая картинка CRA в местоположении 206 не является картинкой с разорванной ссылкой, то, как описано выше, опережающая картинка в местоположении 208 является декодируемой. Наоборот, если текущая картинка CRA в местоположении 206 является RAP, то текущая картинка CRA в местоположении 206 является также картинкой с разорванной ссылкой, и опережающая картинка в местоположении 208 является не декодируемой. Это имеет место потому, что предсказывающий блок в местоположении 204 не является доступным для картинки с разорванной ссылкой, которая является текущей картинкой CRA в местоположении 206. Соответственно, предсказывающий блок в местоположении 204 может быть (1) отмечен как неиспользуемый для ссылки и (2), no_output_of_prior_pics_flag может указывать, что предшествующие картинки, вплоть до и включая опережающую картинку в местоположение 208, не должны быть выведены.
[0149] Как иллюстрировано на Фиг. 6, местоположение 210 является другим возможным местоположением опорной картинки в порядке декодирования. Если опорная картинка будет расположена в местоположении 210, то опережающие картинки в местоположении 208 будут декодируемыми.
[0150] Часть 212 из Фиг. 6 иллюстрирует последовательность картинок в порядке вывода. Первоначально, видео декодер 30 (Фиг. 1 и 4) или клиентское устройство 108 (Фиг. 5) картинка RAP 202. Видео декодер 30 или клиентское устройство 108 может затем декодировать картинку или часть картинки, которая может действовать как предсказывающий блок в местоположении 204. Как иллюстрировано на Фиг. 6, местоположение 204 является возможным местоположением предсказывающего блока в порядке вывода.
[0151] В порядке вывода опережающая картинка 208 может быть выведена перед текущей картинкой CRA в местоположении 206, как иллюстрировано на Фиг. 6. Как иллюстрировано на Фиг. 6, местоположение 210 является другим возможным местоположением предсказывающего блока в порядке вывода.
[0152] Фиг. 7 является последовательностью операций, иллюстрирующей примерный способ для кодирования картинок RAP в соответствии с одним или более примерами, описанными в настоящем раскрытии. Как иллюстрировано на Фиг. 7, в некоторых примерах видео кодировщик, например, видео кодер 20 или видео декодер 30, может закодировать картинку BLA для точки произвольного доступа или точки адаптации потока, такой как точка переключения временного уровня в видео последовательности. Например, это может быть точкой переключения для адаптации частоты следования битов, частоты кадров или пространственного разрешения. Картинка BLA может включать в себя одну или более опережающих картинок. Опережающие картинки не могут быть корректно декодированы (например, декодером 30, MANE, или другим устройством декодирования), когда произвольный доступ происходит из картинки BLA.
[0153] В одном примере, чтобы предотвратить распространение ошибки от опорных картинок, которые могут не быть доступны в зависимости от того, где декодирование начинается, видео кодировщик может не использовать какую-либо картинку, которая предшествует картинке BLA или в порядке декодирования или в порядке вывода (который включает в себя опережающие картинки) в качестве опорных картинок.
[0154] Например, видео декодер 30 может принять и декодировать элемент синтаксиса, который указывает, что буфер хранения картинок опустошен без вывода какой-либо картинки из буфера хранения картинок (700). Элемент синтаксиса может быть включен в закодированный поток битов видео кодером 20 или промежуточным элементом сети. Видео декодер 30 может определить, указывает ли элемент синтаксиса, что вывод предшествующих картинок не должен произойти; например, видео декодер 30 может проверить элемент синтаксиса (702), чтобы определить, установлен ли он, то есть, равен 1. Когда видео декодер 30 принимает элемент синтаксиса, который установлен, видео декодер 30 может вынудить картинки до текущей картинки в порядке декодирования и постоянно находящегося в буфере хранения картинок во время декодирования текущей картинки быть удаленными из буфера хранения картинок, не будучи выведенными (704).
[0155] В некоторых примерах элемент синтаксиса может быть одним из множества элементов синтаксиса. Дополнительно, множество элементов синтаксиса может включать в себя энтропийно закодированные элементы синтаксиса заголовка вырезки, и неэнтропийно закодированные элементы синтаксиса заголовка вырезки. В одном примере элемент синтаксиса может указывать, что буфер хранения картинок пуст без вывода какой-либо картинки из буфера декодированных картинок, включен в заголовок вырезки до любого энтропийно кодированного элемента синтаксиса заголовка вырезки. В другом примере элемент синтаксиса может указывать, что данные в буфере хранения картинок должны быть проигнорированы и/или перезаписаны без вывода какой-либо картинки из буфера хранения картинок, включен в заголовок вырезки до любого энтропийно кодированного элемента синтаксиса заголовка вырезки. В некоторых примерах элементом синтаксиса может быть no_output_of_prior_pics_flag, и no_output_of_prior_pics_flag может быть включен в заголовок вырезки немедленно после first_slice_in_pic_flag. first_slice_in_pic_flag может быть флагом, который указывает, является ли вырезка первой вырезкой, в порядке декодирования, картинки.
[0156] Фиг. 8 является последовательностью операций, иллюстрирующей примерный способ в соответствии с одним или более примерами, описанными в настоящем раскрытии. В иллюстрированном примере видео кодировщик может определить, что текущая картинка является картинкой CRA (800). Видео кодировщик может также определить, что текущая картинка является картинкой RAP (802). Видео кодировщик может определить, что текущая картинка является картинкой BLA, когда текущая картинка является и картинкой CRA и картинкой RAP (804). В некоторых примерах видео кодировщик может использовать тип единицы NAL, чтобы определить, является ли эта текущая картинка картинкой BLA. Видео кодировщик может отметить опорные картинки как неиспользуемые для ссылки (806).
[0157] В различных примерах видео кодировщик может отметить все опорные картинки в DPB как неиспользуемые для ссылки прежде, чем декодировать картинку BLA. Например, видео декодер 30 может отметить опорные картинки в памяти 92 картинок, иногда называемой буфером декодированных картинок (DPB), как неиспользуемые для ссылки. Соответственно, эти картинки не будут использоваться для внешнего кодирования, что избежит возможные ошибки, и в некоторых примерах могут решить проблемы с пространственной адаптацией. Дополнительно, в целом эти картинки не будут выведены на, например, монитор или экран, где они могут быть просмотрены.
[0158] Видео декодер 30 может определить, что текущая картинка является картинкой с разорванной ссылкой и маркировать опорную картинку в буфере хранения картинок как неиспользуемую для ссылки до декодирования картинки BLA. В одном примере может иметь место маркировка опорной картинки в буфере хранения картинок, когда картинка с разорванной ссылкой содержит недекодируемую картинку с разорванной ссылкой, которая может быть определена в некоторых примерах, на основании типа единицы NAL. В некоторых примерах одно или более из (1) маркировки картинок в DPB как неиспользуемых для ссылки, (2) использования элемента синтаксиса, такого как no_output_of_prior_pics_flag, и (3) использования типов единицы NAL, которые указывают типы картинок с разорванной ссылкой, могут использоваться независимо или в любой комбинации.
[0159] Фиг. 9 является последовательностью операций, иллюстрирующей примерный способ в соответствии с одним или более примерами, описанными в настоящем раскрытии. Способы согласно Фиг. 9 могут быть выполнены устройством обработки видео, таким как видео декодер 30, сетевой объект 29, устройство 104 маршрутизации, транскодирующее устройство 106 или некоторым другим таким устройством обработки видео. Устройство обработки видео может обрабатывать единицы NAL, где типам единицы NAL для единиц NAL назначено указывать, когда картинки BLA имеют и не имеют опережающих картинок. В некоторых случаях устройство обработки видео может, например, обнаружить, что картинка является картинкой CRA, и определять, является ли картинка CRA картинкой BLA без опережающих картинок, картинкой BLA с декодируемыми опережающими картинками, или картинкой BLA с недекодируемыми опережающими картинками. На основании этого определения устройство обработки видео может вынудить тип единицы NAL для видео данных указывать, что единица NAL включает в себя картинку BLA без опережающих картинок, картинку BLA с декодируемыми опережающими картинками, или картинку BLA с недекодируемыми опережающими картинками.
[0160] В одном примере устройство обработки видео может закодировать картинки согласно одному из множества различных типов единиц уровня абстракции сети (NAL), включая одно или более из следующего. Устройство обработки видео может определить, что картинка BLA не имеет ассоциированных опережающих картинок (900) и установить единицу NAL в тип единицы NAL, который указывает, что единица NAL содержит картинку BLA без ассоциированных опережающих картинок (902). Устройство обработки видео может, например, закодировать закодированную вырезку картинки BLA или всю картинку BLA, используя тип единицы NAL, который указывает, что картинка BLA является картинкой BLA без ассоциированных опережающих картинок в потоке битов. Устройство обработки видео может определить, что картинка BLA имеет ассоциированные декодируемые опережающие картинки (904) и установить единицу NAL в тип единицы NAL, который указывает, что единица NAL содержит картинку BLA с ассоциированными декодируемыми опережающими картинками (906). Устройство обработки видео может, например, закодировать закодированную вырезку или всю картинку BLA, используя тип единицы NAL, который указывает, что картинка BLA является картинкой BLA с ассоциированными декодируемыми опережающими картинками в потоке битов. Устройство обработки видео может определить, что картинка BLA имеет ассоциированные опережающие картинки (908) и установить единицу NAL в тип единицы NAL, который указывает, что единица NAL содержит картинку BLA с ассоциированными опережающими картинками (910). Устройство обработки видео может, например, закодировать закодированную вырезку картинки BLA или всю картинку BLA, используя тип единицы NAL, который указывает, что картинка BLA является картинкой BLA с ассоциированными опережающими картинками в потоке битов. В одном примере, если видео декодер 30 обнаруживает тип единицы NAL BLA, то видео декодер 30 может, например, отметить картинки в DPB как неиспользуемые для ссылки.
[0161] В некоторых примерах одно или более из (1) маркировки картинки в DPB как неиспользуемой для ссылки, (2) использования элемента синтаксиса, такого как no_output_of_prior_pics_flag, и (3) использования типов единицы NAL, которые указывают картинки BLA, могут использоваться независимо или в любой комбинации. Например, в некоторых случаях все три из них могут использоваться. В других примерах примерные типы единицы NAL могут использоваться в соединении с маркировкой картинок в DPB как неиспользуемых для ссылки. В другом примере могут не использоваться вывод элемента синтаксиса предшествующей картинки и маркировка картинок как неиспользуемых для ссылки. В другом примере могут не использоваться вывод элементов синтаксиса предшествующей картинки и типов единиц NAL.
[0162] Как используется здесь, BLC относится к свободному произвольному доступу с разорванной ссылкой, BLCL относится к картинке BLC с ассоциированными опережающими картинками в потоке битов, и BLCNL относится к картинке BLC без ассоциированных опережающих картинок в потоке битов. Как также описано здесь, картинки BLC в целом являются тем же самым, как картинки BLA. CRA относится к свободному произвольному доступу, CRAL относится к картинке CRA с ассоциированными опережающими картинками в потоке битов, и CRANL относится к картинке CRA без ассоциированных опережающих картинок в потоке битов. IDR относится к мгновенному обновлению декодирования, LPR относится к опережающей картинке, ассоциированной со случайной картинкой точки доступа, NSP относится к «простой без чего-либо особенного», RAP относится к точке произвольного доступа, и RPS относится к набору опорных картинок. Как используется здесь, TLA относится к доступу временного уровня, TLAL относится к картинке TLA, которая является также картинкой LRP, TLANL относится к картинке TLA, которая не является картинкой LRP.
[0163] Единица доступа BLA относится к единице доступа, в которой закодированная картинка является картинкой BLA. Картинка BLC является картинкой RAP, в которой заголовок вырезки закодированных вырезок включает в себя синтаксис RPS, в то время как RPS выводится как пустой без использования синтаксиса RPS. Единица доступа BLCL является единицей доступа, в которой закодированная картинка является картинкой BLCL. Картинки BLCL являются картинками BLA, для которых ассоциированные картинки LPR присутствуют в потоке битов. В некоторых примерах единица доступа BLCL может быть эквивалентной комбинации BLA_W_DLP и BLA_W_LP. Единица доступа BLCNL является единицей доступа, в которой закодированная картинка является картинкой BLCNL. В некоторых примерах единица доступа BLCNL может быть эквивалентной BLA_N_LP. Картинки BLCNL являются картинками BLA, для которых ассоциированные картинки LPR не присутствуют в потоке битов.
[0164] В одном примере единица доступа CRA является единицей доступа, в которой закодированная картинка является картинкой CRA. Картинки CRA являются картинкой RAP, в которой заголовок вырезки закодированных вырезок включает в себя синтаксис RPS, и этот синтаксис RPS используется для выведения RPS. Единица доступа CRAL является единицей доступа, в которой закодированная картинка является картинкой CRAL. Картинки CRAL является картинкой CRA, для которой ассоциированные картинки LPR присутствуют в потоке битов. Единица доступа CRANL является единицей доступа, в которой закодированная картинка является картинкой CRANL. Картинки CRANL являются картинками CRA, для которых ассоциированные картинки LPR не присутствуют в потоке битов.
[0165] В одном примере единица доступа IDR является единицей доступа, в которой закодированная картинка является картинкой IDR. Картинки IDR являются картинками RAP, в которых заголовок вырезки закодированных вырезок не включает в себя синтаксис RPS, и RPS выводится как пустой.
[0166] В одном примере, если все предыдущие единицы доступа в порядке декодирования не присутствуют, при условии, что каждый набор параметров, на который ссылаются упомянутые закодированная картинка и все последующие закодированные картинки в порядке декодирования, присутствует перед его активацией, могут быть корректно декодированы картинка IDR и все последующие закодированные картинки в порядке декодирования. Альтернативно, в другом примере, картинки IDR могут быть как определены в HEVC с дополнением предшествования.
[0167] В других примерах картинка IDR может быть закодированной картинкой, содержащей, только I вырезки. Дополнительно, для примерной картинки IDR, все закодированные картинки, которые следуют за картинкой IDR в порядке декодирования, не используют внешнее предсказание от какой-либо картинки, которая предшествует этой картинке IDR в порядке декодирования. В одном примере любая картинка, которая предшествует картинке IDR в порядке декодирования, также предшествует картинке IDR в порядке вывода.
[0168] Опережающая картинка является закодированной картинкой, которая не является картинкой RAP, и которая следует за некоторой другой конкретной картинкой в порядке декодирования и предшествует этой конкретной картинке в порядке вывода. Картинка LPR является опережающей картинкой, которая ассоциирована с картинкой RAP или опережающей картинкой картинки RAP.
[0169] Счет по порядку картинки может быть переменной, которая ассоциирована с каждой закодированной картинкой и имеет значение, которое увеличивается с увеличивающейся позицией картинки в порядке вывода относительно предыдущей картинки RAP в порядке декодирования.
[0170] В одном примере единица доступа RAP является единицей доступа, в которой закодированная картинка является картинкой RAP. Картинка RAP может быть закодированной картинкой, содержащей только I вырезки. Для картинки RAP все закодированные картинки, которые следуют за картинкой RAP и в порядке декодирования и порядке вывода, не используют внешнее предсказание от какой-либо картинки, которая предшествует картинке RAP или в порядке декодирования или в порядке вывода. Вывод любой картинки, которая предшествует картинке RAP в порядке декодирования, должен предшествовать выводу картинки RAP. Если все предыдущие единицы доступа в порядке декодирования не присутствуют, при условии, что каждый набор параметров, на который ссылаются упомянутая закодированная картинка и все последующие закодированные картинки в порядке декодирования, присутствует перед его активацией, картинка RAP и все последующие закодированные картинки и в порядке декодирования и в порядке вывода могут быть корректно декодированы.
[0171] Альтернативно, картинка RAP может быть определена совместимой с предшествующим описанием и следующим образом. Картинка RAP может быть закодированной картинкой, содержащей, только I вырезки и для которой все закодированные картинки, которые следуют за картинкой RAP и в порядке декодирования и порядке вывода, не используют внешнее предсказание от какой-либо картинки, которая предшествует картинке RAP или в порядке декодирования или в порядке вывода. Любая картинка, которая предшествует картинке RAP в порядке декодирования, также предшествует картинке RAP в порядке вывода.
[0172] Единица доступа TLA является единицей доступа, в которой закодированная картинка является картинкой TLA. Картинка TLA является закодированной картинкой, для которой картинка TLA и все закодированные картинки имеют temporal_id больший чем или равный temporal_id картинки TLA. Картинка TLA, которая следует за картинкой TLA в порядке декодирования, не должна использовать внешнее предсказание от какой-либо картинки с temporal_id большим чем или равным temporal_id картинки TLA, которая предшествует картинке TLA в порядке декодирования. Единица доступа TLAL является единицей доступа, в которой закодированная картинка является картинкой TLA.
[0173] В некоторых примерах могут быть определены следующие различные типы единицы NAL VCL. В качестве первого примера, тип единицы NAL может быть предоставлен для закодированной вырезки картинки IDR (например, nal_unit_type=5). Для этого типа единицы NAL применяется концепция картинки IDR в HEVC WD6. Уникальным признаком этого типа единицы NAL VCL по сравнению с другими типами единиц NAL VCL является тот, что не имеется синтаксиса набора опорных картинок (RPS), включенного в заголовок вырезки.
[0174] Некоторые примеры включают в себя закодированную вырезку картинки BLCNL (картинка BLC без ассоциированных опережающих картинок в потоке битов, например, nal_unit_type=2). По сравнению с закодированной вырезкой картинки IDR закодированная вырезка картинки BLCNL включает в себя синтаксис RPS в заголовке вырезки, но синтаксис RPS не используется для выведения RPS, а вместо этого все поднаборы RPS выводятся, чтобы быть пустыми.
[0175] Некоторые примеры включают в себя закодированную вырезку картинки BLCL (картинка BLC с ассоциированными опережающими картинками в потоке битов, например, nal_unit_type=3) По сравнению с картинкой BLCNL, существуют опережающие картинки, ассоциированные с картинкой BLCL в потоке битов.
[0176] Некоторые примеры включают в себя закодированную вырезку картинки CRANL (CRA без ассоциированных опережающих картинок в потоке битов, например, nal_unit_type=15). По сравнению с закодированной вырезкой картинки BLCNL закодированная вырезка картинки CRANL включает в себя синтаксис RPS в заголовке вырезки, и синтаксис RPS используется для выведения RPS.
[0177] Некоторые примеры включают в себя закодированную вырезку картинки CRAL (картинка CRA с ассоциированными опережающими картинками в потоке битов, например, nal_unit_type = 4). По сравнению с картинкой CRANL, существуют опережающие картинки, ассоциированные с картинкой CRAL в потоке битов.
[0178] Некоторые примеры включают в себя закодированную вырезку картинки TLANL (картинка TLA, которая не является картинкой LFR, например, nal_unit_type=16). Некоторые примеры включают в себя закодированную вырезку картинки TLAL (картинка TLA, которая является также картинкой LPR, например, nal_unit_type=17). Некоторые примеры включают в себя закодированную вырезку картинки NSP (простой картинки без чего-либо особенного, ни одна из вышеупомянутых, nal_unit_type=1).
[0179] Прежде, чем декодировать данные вырезки каждой картинки BLC (BLCL или BLCNL) картинки, все опорные картинки в буфере декодированных картинок (DPB) должны быть отмечены как "неиспользуемые для ссылки” декодером 30, как описано выше. Только с этим на месте, текущий процесс декодирования, как в настоящее время определено в HEVC WD 6 для опережающих картинок картинки CRA, которая начинает поток битов, может быть непосредственно применен декодером 30 для опережающих картинок картинки BLA, независимо от того, изменяет ли картинка BLA пространственное разрешение.
[0180] Без вышеупомянутого, если картинка BLA не изменяет пространственное разрешение, текущий процесс декодирования, как в настоящее время определено в HEVC WD 6 для опережающих картинок картинки CRA, которая начинает поток битов, может быть непосредственно применен декодером 30 для опережающих картинок картинки BLA. Однако, если картинка BLA изменяет пространственное разрешение, то текущий процесс декодирования, как в настоящее время определено в HEVC WD 6 для опережающих картинок картинки CRA, которая начинает поток битов, не может непосредственно применяться для опережающих картинок картинки BLA, поскольку может оказаться ситуация, что пространственное разрешение различно для текущей картинки и опорной картинки для текущей картинки.
[0181] Один способ гарантировать, что все опорные картинки в DPB должны быть отмечены как "неиспользуемые для ссылки" прежде, чем декодировать данные вырезки каждой картинки BLA, состоит в том, чтобы вывести RPS каждой картинки BLA как пустой, независимо от того, указывает ли сигнализация RPS в заголовке вырезки непустой RPS. Например, даже если имеется RPS, видео декодер 30 может отвергнуть это и вывести или обработать RPS как пустой, если картинка является картинкой BLA.
[0182] Фактически, если сигнализация RPS в заголовке вырезки действительно указывает пустой RPS для картинки BLA или CRA (CRAL или CRANL) картинки, то картинка должна была быть закодирована как картинка IDR.
[0183] В некоторых примерах картинка RAP может быть определена как закодированная картинка, содержащая только I вырезки. Для картинки RAP все закодированные картинки, которые следуют за картинкой RAP и в порядке декодирования и порядке вывода, не используют внешнее предсказание от какой-либо картинки, которая предшествует картинке RAP или в порядке декодирования или в порядке вывода. Дополнительно, вывод любой картинки, которая предшествует картинке RAP в порядке декодирования, может предшествовать выводу картинки RAP.
[0184] Чтобы гарантировать, что вывод любой картинки, которая предшествует картинке RAP в порядке декодирования, должен предшествовать выводу картинки RAP, один путь для видео кодера 20 является установить no_output_of_prior_pics_flag равным 1 в закодированном потоке битов, переданном к, например, видео декодеру 30, как описано выше. В другом примере видео декодер 30 может логически вывести no_output_of_prior_pics_flag, чтобы быть равным 1 (независимо от его значения) для картинки BLA. Таким образом, стыковка операций в картинке BLA, при этом в стыкованном потоке битов значение POC картинки ранней, чем картинка BLA, является большим чем значение POC картинки BLA, разрешается. В частности, если значение POC картинки BLA выводится как равная ее LSB POC (принимая MSB POC равным 0), вышеупомянутое может легко иметь место. Другой способ гарантировать это состоит в том, чтобы удостовериться, что времена вывода картинок, которые предшествуют картинке BLA в порядке декодирования, являются более ранними чем таковые картинки BLA.
[0185] Некоторые примеры позволяют видео кодеру 20 и/или модулю стыковки потока битов определять, какой из путей, описанных здесь, использовать. Соответственно, видео кодер 20, например, может включать no_output_of_prior_pics_flag в заголовок вырезки картинок BLA в некоторых примерах. В других примерах видео кодер 20 может включать в себя типы единицы NAL, которые указывают, могут ли картинки, сохраненные в буфере в видео декодере 30, использоваться для ссылки. Соответственно, видео декодер 30 может отметить картинки как неиспользуемые для ссылки, например, когда использование таких картинок при декодировании приведет к некорректному декодированию картинки.
[0186] Чтобы разрешить простую перезапись CRA на картинку BLA элементом сети, в дополнение к помещению no_output_of_prior_pics_flag в заголовок вырезки картинки CRA, no_output_of_prior_pics_flag может также быть включен как можно раньше в заголовке вырезки. Это может быть выполнено до любых энтропийно закодированных параметров заголовка вырезки, например, немедленно после first_slice_in_pic_flag в некоторых примерах, как описано выше.
[0187] В одном примере две картинки BLA бок-о-бок имеют одни и те же LSB POC, и только возможно дифференцировать их посредством random_access_pic_id (или переименованное как rap_pic_id). Таким образом, может быть предпочтительным использовать кодирование с фиксированной длиной кода для rap_pic_id, и поместить rap_pic_id относительно рано в заголовок вырезки, предпочтительно не после любых энтропийно закодированных параметров заголовка вырезки, например, немедленно после first_slice_in_pic_flag и no_output_of_prior_pics_flag, например, и для картинок CRA и для картинок BLA. Другие элементы синтаксиса заголовка вырезки, которые могут использоваться для обнаружения границы картинки, например, pic_parameter_set_id, и LSB POC (то есть, pic_order_cnt_lsb) могут быть аналогичными.
[0188] Все наборы параметров конкретного типа (например, SPS) или всех типов могут присутствовать в начале потока битов, то есть, включены в первую единицу доступа в потоке битов. Если это так, удобно осуществить выборку всех наборов параметров конкретного типа и послать их внеполосным образом. Например, кодировщик может включать в Протокол Описания Сеанса (SDP) параметр, который используется во время согласования сеанса. Поэтому, может быть выгодно для кодера включать индикацию в поток битов, что все наборы параметров конкретного типа или всех типов присутствуют в начале потока битов. Индикация может быть включена в сообщение SEI, разделитель единиц доступа, или набор параметров. Например, отличающийся тип единицы NAL может использоваться для SPS, набора параметров картинки (PPS), или набора параметров адаптации (APS), чтобы указывать, что все SPS (или PPS или APS) присутствуют в начале потока битов.
[0189] Элемент синтаксиса slice_type может условно присутствовать в заголовке вырезки, на основании того, указывает ли этот тип единицы NAL, что картинка, содержащая вырезку, является картинкой IDR, картинкой CRA, или картинкой BLA. Например, если тип единицы NAL указывает, что картинка, содержащая вырезку, является картинкой IDR, картинкой CRA, или картинкой BLA, slice_type не присутствует в заголовке вырезки. Иначе, кодер вставляет slice_type в заголовок вырезки. Если не присутствует, значение slice_type указывает, что вырезка является вырезкой I.
[0190] Фиг. 10 является последовательностью операций, иллюстрирующей примерный способ для декодирования вырезки в соответствии с одним или более примерами, описанными в настоящем раскрытии. В одном примере видео декодер 30 может декодировать видео данные, включая прием вырезки текущей картинки, которая должна быть декодирована для последовательности видео данных (1000). Видео декодер 30 может принять, в заголовке вырезки для вырезки, по меньшей мере один энтропийно закодированный элемент синтаксиса, и по меньшей мере один неэнтропийно закодированный элемент синтаксиса. Неэнтропийно закодированный элемент синтаксиса может быть до энтропийно закодированного элемента синтаксиса в заголовке вырезки. Дополнительно, неэнтропийно закодированный элемент синтаксиса может указывать, должны ли картинки до текущей картинки в порядке декодирования быть удалены из буфера хранения картинок, не будучи выведенными (1002). В одном примере элементом синтаксиса может быть no_output_of_prior_pics_flag. no_output_of_prior_pics_flag может быть установлен в "1", например, чтобы указывать, когда картинки до текущей картинки в порядке декодирования должны быть удалены из буфера хранения картинок без того, чтобы быть выведенным. Видео декодер 30 может декодировать вырезку на основании неэнтропийно закодированного элемента синтаксиса (1004).
[0191] Фиг. 11 является последовательностью операций, иллюстрирующей примерный способ для кодирования вырезки в соответствии с одним или более примерами, описанными в настоящем раскрытии. Кодер 20 может закодировать видео данные. Видео кодер 20 может закодировать вырезку текущей картинки для последовательности видео данных (1100).
[0192] Видео кодер 20 кодирует, в заголовке вырезки для вырезки, по меньшей мере один энтропийно кодированный элемент синтаксиса и по меньшей мере один не энтропийно кодированный элемент синтаксиса, в котором неэнтропийно кодированный элемент синтаксиса находится перед энтропийно кодированным элементом синтаксиса в заголовке вырезки и указывает, должны ли картинки до текущей картинки в порядке декодирования быть удалены из буфера хранения картинок, не будучи выведенными (1102). В одном примере элементом синтаксиса может быть no_output_of_prior_pics_flag. no_output_of_prior_pics_flag может быть установлен в "1", например, чтобы указывать, когда картинки до текущей картинки в порядке декодирования должны быть удалены из буфера хранения картинок без того, чтобы быть выведенными.
[0193] Фиг. 12 является последовательностью операций, иллюстрирующей примерный способ для обработки видео данных, как описано в настоящем раскрытии. Способы согласно Фиг. 12 могут быть выполнены устройством обработки видео, таким как видео декодер 30, сетевой объект 29, устройство 104 маршрутизации, транскодирующее устройство 106 или некоторым другим таким устройство обработки видео. Устройство обработки видео может принять в видео данных единицу NAL (1210), и на основании типа единицы NAL упомянутой первой единицы NAL, обнаружить картинку с разорванной ссылкой (1220). Тип единицы NAL может быть типом единицы NAL, указывающим, что картинка с разорванной ссылкой содержит картинку с разорванной ссылкой с опережающими картинками, или тип единицы NAL может быть другим типом единицы NAL, указывающим, что картинка с разорванной ссылкой содержит картинку с разорванной ссылкой без опережающих картинок. Объект обработки видео может обнаружить картинку с разорванной ссылкой, не выполняя энтропийное декодирование элементов синтаксиса видео данных потока битов в этой единице NAL.
[0194] На основании типа обнаруженной единицы NAL устройство обработки видео может выполнять одну или более из множества операций. MANE, например, может принять одно или более решений маршрутизации для единицы NAL на основании типа единицы NAL. В качестве одного примера, если устройством обработки видео является MANE, устройство обработки видео может, в ответ на единицу NAL, указывающую картинку с разорванной ссылкой с опережающими картинками, отбрасывать опережающие картинки и передавать единицу NAL без опережающих картинок. В случаях, когда единица NAL указывает картинку с разорванной ссылкой без опережающих картинок, устройство обработки видео может передавать единицу NAL, не имея необходимость отбрасывать какие-либо опережающие картинки. MANE может, например, передать единицу NAL к видео декодеру, потенциально через одно или более устройств маршрутизации.
[0195] Если, например, устройство обработки видео является видео декодером в противоположность MANE, то видео декодер может выполнять одну или более из множества различных операций. Например, в ответ на обнаружение картинки с разорванной ссылкой, видео декодер может активировать один или более новых наборов параметров для видео данных.
[0196] В один или более примерах описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратных средствах, или любой их комбинации. Если реализованы в программном обеспечении, функции могут быть сохранены на или переданы как одна или более инструкций или код, считываемом компьютером носителе и выполнены основанным на аппаратном обеспечении блоком обработки. Считываемый компьютером носитель может включать в себя считываемый компьютером запоминающий носитель, который соответствует материальному носителю, такому как запоминающие носители данных, или коммуникационные носители, включая любой носитель, который облегчает передачу компьютерной программы от одного места к другому, например, согласно протоколу связи. В этом способе считываемый компьютером носитель в целом может соответствовать (1) материальному считываемому компьютером запоминающему носителю, который является невременным, или (2) коммуникационному носителю, такому как сигнал или несущая. Запоминающие носители данных могут быть любым доступным носителем, к которому могут получить доступ один или более компьютеров или один или более процессоров, чтобы извлечь инструкции, код и/или структуры данных для реализации способов, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0197] В еще других примерах настоящее раскрытие рассматривает считываемый компьютером носитель, содержащий сохраненную на нем структуру данных, при этом структура данных включает в себя закодированный поток битов, совместимый с этим раскрытием. В частности, структуры данных могут включать в себя структуры единицы NAL, описанные здесь.
[0198] Посредством примера, а не ограничения, такие считываемые компьютером запоминающие носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое запоминающее устройство на оптических дисках, запоминающее устройство на магнитных дисках, или другие магнитные запоминающие устройства хранения, флэш-память, или любой другой носитель, который может быть использован для хранения желаемого программного кода в форме инструкций или структур данных, и к которому может получить доступ компьютер. Кроме того, любое соединение должным образом называют считываемым компьютером носителем. Например, если инструкции переданы от вебсайта, сервера, или другого удаленного источника, используя коаксиальный кабель, волоконно-оптический кабель, витую пару, цифровую абонентскую линию (DSL), или беспроводные технологии, такие как инфракрасное излучение, радио-излучение, и микроволновое излучение, то эти коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL, или беспроводные технологии, такие как инфракрасное излучение, радио-излучение, и микроволновое излучение включены в определение носителя. Нужно подразумевать, однако, что считываемые компьютером запоминающие носители и запоминающие носители данных не включают в себя соединения, несущие, сигналы, или другие временные носители, но вместо этого направлены на невременные, материальные запоминающие носители. Диск и диск, как используется здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитно, в то время как диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеупомянутого должны также быть включены в рамки считываемого компьютером носителя.
[0199] Инструкции могут быть выполнены одним или более процессорами, такими как одним или более цифровыми сигнальными процессорами (DSPs), микропроцессорами общего назначения, специализированными интегральными схемами (ASICs), программируемыми пользователем вентильными матрицами (FPGAs), или другими эквивалентными интегральными или дискретными логическими схемами. Соответственно, термин "процессор", как используется здесь, может относиться к любой предшествующей структуре или любой другой структуре, подходящей для реализации способов, описанных в настоящем описании. Кроме того, в некоторых аспектах функциональные возможности, описанные здесь, могут быть предоставлены в пределах специализированного аппаратного обеспечения и/или программных модулей, конфигурируемых для кодирования и декодирования, или объединены в объединенный кодек. Кроме того, способы могли быть полностью реализованы в одной или более схемах или логических элементах.
[0200] Способы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или аппаратов, включая беспроводную телефонную трубку, интегральную схему (IC) или набор IC (например, микропроцессорный набор). Различные компоненты, модули, или блоки описаны в настоящем раскрытии, чтобы подчеркнуть функциональные аспекты устройств, конфигурируемых, чтобы выполнить раскрытые способы, но не обязательно требовать реализации различными блоками аппаратного обеспечения. Вместо этого, как описано выше, различные блоки могут быть объединены в блоке аппаратного обеспечения кодека или предоставлены коллекцией взаимодействующих блоков аппаратного обеспечения, включая один или более процессоров, как описано выше, в соединении с подходящим программным обеспечением и/или программно-аппаратными средствами.
[0201] Были описаны различные примеры. Эти и другие примеры находятся в рамках нижеследующей формулы изобретения.