ДЕКОДИРОВАНИЕ И КОДИРОВАНИЕ ИЗОБРАЖЕНИЙ ВИДЕОПОСЛЕДОВАТЕЛЬНОСТИ
ENCODING AND DECODING VIDEO SEQUENCE IMAGES

Область техники
Настоящие варианты осуществления в общем относятся к декодированию и кодированию изображений видеопоследовательности, и, в частности, к выводу или выталкиванию “bumping” изображений из буфера декодированных изображений в связи с кодированием и декодированием изображений.
Уровень техники
Сжатие видео H.264
H.264 (Экспертная Группа-4 по Движущемуся Изображению, Усовершенствованное Кодирование Видео (MPEG-4 AVC)) является стандартом кодирования видео уровня техники. Он состоит из гибридной схемы кодирования видео на основе блоков, которая использует временные и пространственные избыточности. Стандарт Н.264/AVC определен в тексте спецификации, которая содержит множество процессов декодирования, которые должны быть исполнены в точно определенной последовательности для того, чтобы декодер был совместимым со стандартом. К кодеру нет никаких требований, но часто имеет место, что кодер также исполняет большинство из процессов для того, чтобы достичь хорошей эффективности сжатия.
H.264/AVC определяет буфер декодированных изображений (DPB), который сохраняет декодированные изображения после того как они были декодированы. Это означает, что декодеру необходимо использовать некоторый заданный объем памяти для того, чтобы декодировать последовательность. DPB содержит изображения, которые используются для ссылки (обращения) во время декодирования будущих изображений. "Используемое для ссылки" означает в данном документе, что некоторое конкретное изображение используется для предсказания, когда декодируется другое изображение. Пиксельные значения изображения, которое используется для ссылки, затем могут быть использованы для предсказания пиксельных значений изображения, которое декодируется в настоящее время. Это также называется внешним (интер-) предсказанием. DPB дополнительно содержит изображения, которые ожидают вывода. "Вывод" здесь означает функцию, где декодер выводит изображение за пределы декодера. Спецификация H.264 описывает, как битовый поток преобразуется в декодированные изображения, которые затем выводятся, см. Фиг. 1. Выводимые изображения могут, например, быть отображены или записаны на диск.
Одной традиционной причиной для изображения в DPB ожидать вывода, является то, что есть некоторое изображение, которое еще не было декодировано, которое будет выведено до упомянутого изображения.
Фиг. 2 показывает пример трех изображений: A, B, и C. Порядок декодирования является порядком, в котором изображения в сжатом формате подаются в декодер. Обычно он аналогичен порядку, в котором изображения кодируются кодером. Фиг. 2 показывает, что порядок декодирования в этом примере представляет собой A, B и C. Порядок вывода является порядком, в котором выводятся декодированные изображения. Порядок вывода не должен быть таким же, как порядок декодирования, как проиллюстрировано в примере на Фиг. 2, где порядок вывода представляет собой A, C, B. Стрелки на фигуре показывают для каждого изображения, какие изображения используются для ссылки: изображение A используется для ссылки и для изображения B, и для C.
На Фиг. 2, изображение C декодируется после B, но выводится до него. Когда изображение B было декодировано, оно не может быть незамедлительно выведено, поскольку изображение C еще не было декодировано и должно быть выведено до изображения B. Поэтому, изображение B должно быть сохранено в DPB после того как оно было декодировано, даже если оно не используется для ссылки любым другим изображением. При декодировании изображения C, изображение A также должно быть представлено в DPB, поскольку изображение C использует изображение A для ссылки.
Порядок вывода управляется сигнализацией значения PictureOrderCount (POC). В битовом потоке имеются синтаксические элементы для передачи POC каждого изображения и эти значения используются для того, чтобы задавать порядок вывода изображений.
В качестве продолжения описания DPB, H.264/AVC содержит три процесса, которые происходят после того, как изображение было декодировано: процесс маркирования изображения, процесс вывода изображения и процесс освобождения.
Процесс маркирования изображения маркирует изображения либо в качестве "используемого для ссылки", либо в качестве "неиспользуемого для ссылки". Изображение, маркированное в качестве "используемого для ссылки", доступно для ссылки, что означает, что последующее изображение в порядке декодирования может использовать изображение для ссылки в своих процессах декодирования. Изображение, маркированное в качестве "неиспользуемого для ссылки", не может быть использовано для ссылки последующими изображениями. Этот процесс управляется кодером через битовый поток. В битовом потоке H.264/AVC имеется необязательный синтаксис, который, если присутствует, указывает, какие изображения следует маркировать в качестве "неиспользуемых для ссылки". Эта операция часто упоминается как операция контроля управления памятью (MMCO). Если необязательного синтаксиса MMCO нет, определяется механизм первый на входе, первый на выходе, называемый процессом "скользящего окна". Процесс скользящего окна означает то, что когда последнее декодированное изображение привело бы к слишком большому количеству изображений в DPB, самое старое изображение в порядке декодирования автоматически маркируется в качестве "неиспользуемого для ссылки".
Процесс вывода изображения, который осуществляется после процесса маркирования изображения, маркирует изображения в качестве либо "необходимого для вывода", либо "не являющегося необходимым для вывода". Изображение, маркированное в качестве "необходимого для вывода", еще не было выведено, в то время как изображение, маркированное в качестве "не являющегося необходимым для вывода", было выведено и уже не ожидает вывода. Процесс вывода изображения также выводит изображения. Это означает, что процесс выбирает изображения, которые маркированы в качестве "необходимых для вывода", выводит их и после этого маркирует их в качестве "не являющихся необходимыми для вывода". Процесс вывода изображения определяет, в каком порядке выводятся изображения. Следует отметить, что процесс вывода изображения может выводить и маркировать ноль, одно или множество изображений после того как было декодировано одно конкретное изображение.
После того как эти два процесса были вызваны декодером, вызывается процесс освобождения. Изображения, которые маркированы и в качестве "неиспользуемых для ссылки", и в качестве "не являющихся необходимыми для вывода", выгружаются и удаляются из DPB. Это иногда называют освобождением одного из слотов изображения DPB.
Размер DPB в H.264/AVC ограничен. Это означает, что число изображений, которые могут быть сохранены, поскольку они ожидают вывода или стали доступными для ссылки, ограничено. Переменная max_dec_frame_buffering обозначает размер DPB, иногда упоминаемый как число слотов изображений, которые имеются в DPB. Кодер должен гарантировать, что размер DPB никогда не выходит за пределы.
Три процесса описываются в стандарте. Это означает, что декодер управляется кодером и поэтому декодер не имеет никакой свободы относительно порядка вывода. Это все определяется процессом вывода изображения и связанными элементами в битовом потоке, отправляемом кодером. Упрощенная блок-схема последовательности операций для этапов декодирования H.264/AVC показана на Фиг 3.
Процесс вывода изображения в H.264 задает порядок, в котором изображения должны быть выведены. Декодер, который выводит изображения в правильном порядке, является совместимым с порядком вывода. Декодер может следовать процессу вывода изображения, описанному в H.264, но иногда возможно использовать переменную num_reorder_frames, чтобы выводить изображения раньше, чем задано процессом вывода изображения. num_reorder_frames указывает максимальное число изображений, которые предшествуют какому-либо изображению в порядке декодирования и следуют за ним в порядке вывода.
Фиг. 4 показывает пример, где только что было декодировано изображение B. Но изображение B не может быть выведено поскольку неизвестно, должно ли изображение C быть выведено до или после изображения B. Если кодер решил, что порядок вывода является таким же, как порядок декодирования, он может указать декодеру значение num_reorder_frames равное 0. Кодер посредством этого обеспечил то, что изображение C в примере будет выведено после изображения B и декодер сможет незамедлительно вывести изображение B, когда оно будет декодировано. В этом случае, когда num_reorder_frames равно 0, в декодере отсутствует дополнительная задержка переупорядочения. Если num_reorder_frames в примере установлено в 1, возможно, что изображение C должно быть выведено до изображения B. С num_reorder_frames равным 1, имеется дополнительная задержка переупорядочения в 1 изображение, с num_reorder_frames равным 2, задержка переупорядочения будет составляет 2 изображения и так далее.
Сжатие видео HEVC
Высокоэффективное Видеокодирование (HEVC), также упоминаемое как H.265, является стандартом видеокодирования, разрабатываемым Объединенной Группой по Видеокодированию (JCT-VC). JCT-VC является совместным проектом между MPEG и Сектором Стандартизации Телекоммуникаций Международного Телеграфного Союза (ITU-T). HEVC включает в себя большое количество новых инструментальных средств и является значительно более эффективным, чем H.264/AVC. HEVC также задает temporal_id для каждого изображения в соответствии с временным уровнем, к которому принадлежит упомянутое изображение. Временные уровни упорядочены и имеют свойство, что более низкий временной уровень никогда не зависит от более высокого временного уровня. Таким образом, более высокие временные уровни могут быть удалены без оказания воздействия на более низкие временные уровни. Удаление временных уровней может упоминаться как временное масштабирование. Битовый поток HEVC содержит синтаксический элемент, max_sub_layers_minus1, который точно определяет максимальное число временных уровней, которые могут быть представлены в битовом потоке. Декодер может декодировать все временные уровни или декодировать только поднабор временных уровней. Наивысший временной уровень, который фактически декодирует декодер, упоминается, как наивысший временной подуровень и может быть установлен равным или более низким, чем максимальные количества уровней, которые точно определены посредством max_sub_layers_minus1. Декодер затем декодирует все уровни, которые равны или более низкие, чем наивысший временной подуровень. Наивысший временной подуровень может быть установлен внешним средством.
Следует отметить, что описание выше по тексту не является специфическим для временных уровней, но также справедливо для других типов уровней, таких как пространственные уровни и уровни качества, и так далее. Временной уровень, который затем декодирует декодер, упоминается как наивысший декодированный уровень.
Поток декодирования в соответствии с HEVC немного отличается от H.264/AVC. HEVC обладает DPB, процессом маркирования изображения, который маркирует изображения в качестве "используемых для ссылки" и "неиспользуемых для ссылки", процессом вывода изображения, который маркирует изображения в качестве "необходимых для вывода" и "не являющихся необходимыми для вывода" и процессом освобождения. Подобно H.264/AVC, HEVC также использует значения РОС для задания порядка вывода изображения. Значение POC в HEVC представлено переменной PicOrderCntVal, где изображения выводятся в порядке возрастания PicOrderCntVal.
HEVC, однако, не обладает MMCO или процессом скользящего окна. Вместо этого, HEVC точно определяет, что список изображений, которые маркированы в качестве "используемых для ссылки", явно отправляется в каждом заголовке слайса. Маркирование изображения в HEVC использует этот список и гарантирует, что все изображения в DPB, которые перечислены, маркируются в качестве "используемых для ссылки" и, что все изображения в DPB, которые не перечислены, маркируются в качестве "неиспользуемых для ссылки". Список называется набором опорных (ссылочных) изображений (RPS) и отправка одного в каждом заголовке слайса означает, что состояние маркирования опорного изображения в DPB является явным и повторяется в каждом слайсе, что не имеет место в H.264/AVC.
Поскольку RPS используются в HEVC, процесс маркирования изображения, процесс вывода изображения и процесс освобождения все осуществляются после анализа заголовка первого слайса изображения, см. Фиг. 5.
Функциональность num_reorder_frames, как описано для H.264/AVC, также представлена в HEVC. Битовый поток HEVC содержит синтаксический элемент для каждого временного уровня, обозначаемый max_num_reorder_pics[ i ], где i является временным уровнем. Функция max_num_reorder_pics[ i ] является такой же как num_reorder_frames, но каждое кодовое слово здесь указывает максимально допустимое число изображений в том же самом или более низком временном уровне, который предшествует изображению в порядке декодирования и следует за этим изображением в порядке вывода.
Рассмотрим пример на Фиг. 6, где порядок декодирования представляет собой A, B, C, D, E и порядок вывода представляет собой A, D, C, E, B. Он представляет собой структуру изображений, которая использует временные уровни, где изображения A и B принадлежат к низшему временному уровню (уровню 0), изображение C принадлежит к среднему временному уровню (уровню 1) и изображения D и E принадлежат к высшему временному уровню (уровню 2). Стрелки на фигуре показывают, какие изображения используются для ссылки другими изображениями. Например, изображение A используется для ссылки изображением B, поскольку имеется стрелка от изображения A к изображению B. Лучшим применением max_num_reorder_pics в HEVC является установить его настолько малым, насколько это возможно, для сокращения задержки вывода насколько это возможно. Наименьшие возможные значения max_num_reorder_pics для каждого временного уровня показаны на Фиг. 6. Причина 0 для низшего уровня состоит в том, что в уровне 0 отсутствует изображение, которое предшествует какому-либо изображению в порядке декодирования, но следует за ним в порядке вывода. Для уровня 1 мы имеем изображение B, которое предшествует изображению C в порядке декодирования, но следует за ним в порядке вывода, и для уровня 2 мы имеем изображения B и C, которые оба предшествуют изображению D в порядке декодирования, но следуют за ним в порядке вывода.
Если декодер знает, что он будет декодировать только временной уровень 0, потенциально он может выводить изображение B как только оно будет декодировано, но если декодер декодирует все уровни, он не может. Тогда ему придется ожидать до появления двух декодированных изображений, которые следуют за B в порядке вывода.
JCTVC-K0030_v3, Предложенное редакционное улучшение для проекта 8 текстовой спецификации Высокоэффективного Видеокодирования (HEVC), Bross и другие, JCT-VC ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG11, 11-ое Заседание: Шанхай, 10-19 октября 2012, которое опубликовано 12 сентября 2012, обсуждает использование max_num_reorder_pics в разделе 7.4.2.1 на странице 62 и разделе 7.4.2.2 на странице 64.
no_output_of_prior_pics_flag
И битовый поток H.264, и битовый поток HEVC точно определяют флаг, называемый no_output_of_prior_pics_flag. Этот флаг представляет в заголовке слайса изображений произвольного доступа (RAP). Изображения произвольного доступа являются изображениями, с которых возможно встроиться в поток. Они гарантируют, что декодирование будущих изображений может быть осуществлено корректно, если декодер начинает декодирование от точки произвольного доступа. Декодеру не необходимости обеспечивать какие-либо данные, содержащие изображения, которые предшествуют изображению произвольного доступа в порядке декодирования, для настройки работы.
no_output_of_prior_pics_flag точно определяет, как ранее декодированные изображения в буфере декодированных изображений обрабатываются после декодирования изображения произвольного доступа. Короче говоря, если no_output_of_prior_pics_flag равен 1, никакие изображения в DPB, которые маркированы в качестве "необходимых для вывода", не должны быть выведены, но если no_output_of_prior_pics_flag равен 0, они должны быть выведены.
Рассмотрим Фиг. 7, которая показывает пример, где max_num_reorder_pics равен 0 и изображение C является изображением произвольного доступа с no_output_of_prior_pics_flag равным 1. В H.264, было бы возможно вывести изображение B незамедлительно после того как оно было декодировано. В текущей спецификации HEVC дело обстоит не так, поскольку декодер не знает незамедлительно после того как изображение B было декодировано, является ли изображение C изображением RAP с no_output_of_prior_pics_flag равным 1 или нет. Если изображение C не является таким изображением, изображение B может быть выведено незамедлительно после того как оно было декодировано. Но если изображение C в самом деле является изображением RAP с no_output_of_prior_pics_flag равным 1, изображение B не должно быть выведено, поскольку изображение B маркируется в качестве "необходимого для вывода", когда декодируется заголовок слайса изображения C.
Поскольку процесс вывода изображения в HEVC осуществляется, когда анализируется заголовок слайса, а no_output_of_prior_pics_flag является важной особенностью, в текущем стандарте HEVC есть более высокая задержка вывода, чем в H.264/AVC.
Информация об использовании no_output_of_prior_pics_flag раскрыта в разделе 7.4.7.1 на странице 75 и в разделе C.5.2 на странице 26 в JCTVC-K0030_v3.
Преимущество использования RPS в HEVC заключается в том, что оно является гораздо более устойчивым к ошибкам по сравнению со способом H.264/AVC. Также, временная масштабируемость является более простой. Проблема с решением HEVC заключается в том, что оно вводит дополнительную задержку относительно вывода изображения в сравнении с H.264/AVC. В H.264/AVC, изображения могут быть выведены после того как изображение было декодировано. В HEVC, декодер должен ожидать анализа заголовка слайса следующего изображения до тех пор, пока не будут выведены изображения. Это вызывает задержку.
Следовательно, есть необходимость решить недостатки видеокодирования предшествующего уровня техники и, в частности, проблемы задержки, которая может возникать в видеокодировании согласно предшествующему уровню техники.
Сущность изобретения
Главной целью является обеспечение улучшенного декодирования и кодирования изображений видеопоследовательности.
Конкретной целью является обеспечение такого декодирования и кодирования, которое обеспечивает возможность малой задержки вывода для изображений.
Как раскрыто в этом документе, эти и другие цели достигаются вариантами осуществления.
Аспект вариантов осуществления относится к способу, выполняемому декодером. Способ содержит определение, после того как текущее изображение было декодировано и сохранено в буфере декодированных изображений (DPB), некоторого числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Способ также содержит сравнение числа со значением sps_max_num_reorder_pics[ HighestTid ]. HighestTid точно определяет наивысший уровень, который декодируется декодером видеопоследовательности. Способ дополнительно содержит вывод изображения, которое является первым изображением в порядке вывода изображений в DPB, которые маркированы в качестве необходимых для вывода, если число больше, чем значение. Изображение также маркируется в качестве не являющегося необходимым для вывода, если число больше, чем значение.
Связанный аспект вариантов осуществления определяет декодер, сконфигурированный для определения, после того как текущее изображение битового потока, представляющего изображения видеопоследовательности, было декодировано и сохранено в DPB, некоторого числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Декодер также сконфигурирован для сравнения числа со значением sps_max_num_reorder_pics[ HighestTid ]. Декодер дополнительно сконфигурирован для вывода изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, и маркирования изображения в качестве не являющегося необходимым для вывода, если число больше, чем значение.
Другой связанный аспект вариантов осуществления определяет декодер, содержащий модуль определения числа для определения, после того как текущее изображение битового потока, представляющего изображения видеопоследовательности, было декодировано и сохранено в DPB, некоторого числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Декодер также содержит модуль сравнения для сравнения числа со значением sps_max_num_reorder_pics[ HighestTid ]. Декодер дополнительно содержит модуль вывода для вывода изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, если число больше, чем значение. Декодер дополнительно содержит модуль маркирования для маркирования изображения в качестве не являющегося необходимым для вывода, если число больше, чем значение.
Другой аспект варианта осуществления относится к способу, выполняемому кодером. Способ содержит определение, после того как текущее изображение было декодировано и сохранено в DPB, некоторого числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Способ также содержит сравнение числа со значением sps_max_num_reorder_pics[ HighestTid ]. Способ дополнительно содержит маркирование изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, в качестве не являющегося необходимым для вывода, если число больше, чем значение.
Связанный аспект вариантов осуществления определяет кодер, сконфигурированный для определения, после того как текущее изображение было декодировано и сохранено в DPB, некоторого числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Кодер также сконфигурирован для сравнения числа со значением sps_max_num_reorder_pics[ HighestTid ]. Кодер дополнительно сконфигурирован для маркирования изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, в качестве не являющегося необходимым для вывода, если число больше, чем значение.
Другой связанный аспект вариантов осуществления определяет кодер, содержащий модуль определения числа для определения, после того как текущее изображение было декодировано и сохранено в DPB, некоторого числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Кодер также содержит модуль сравнения для сравнения числа со значением sps_max_num_reorder_pics[ HighestTid ]. Кодер дополнительно содержит модуль маркирования для маркирования изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, в качестве не являющегося необходимым для вывода, если число больше, чем значение.
Дополнительный аспект вариантов осуществления относится к способу, выполняемому декодером. Способ содержит анализ заголовка слайса текущего изображения, которое должно быть декодировано, видеопоследовательности. Способ также содержит определение набора опорных изображений (RPS) для текущего изображения на основании проанализированного заголовка слайса. Способ дополнительно содержит маркирование всех изображений в DPB, которые не представлены в RPS, в качестве неиспользуемых для ссылки. Ноль, одно или множество изображений, маркированных в качестве необходимых для вывода, из изображений в DPB, выводятся и маркируются в качестве не являющихся необходимыми для вывода. Способ также содержит выгрузку какого-либо изображения, из DPB, маркированного в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB. Способ дополнительно содержит декодирование текущего изображения и определение некоторого числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Число сравнивается со значением, полученным из по меньшей мере одного синтаксического элемента, представленного в битовом потоке, представляющем изображения видеопоследовательности. Если число больше, чем значение, изображение, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, выводится и маркируется в качестве не являющегося необходимым для вывода. В варианте осуществления, определение числа изображений, сравнение числа, вывод изображения и маркирование изображения выполняются после декодирования текущего изображения.
Связанный аспект вариантов осуществления определяет декодер, сконфигурированный для анализа заголовка слайса текущего изображения, которое должно быть декодировано, битового потока, представляющего изображения видеопоследовательности, и определения RPS для текущего изображения на основании проанализированного заголовка слайса. Декодер также сконфигурирован для маркирования всех изображений в DPB, которые не представлены в RPS, в качестве неиспользуемых для ссылки. Декодер дополнительно сконфигурирован для вывода нуля, одного или множества изображений, маркированных в качестве необходимых для вывода, из изображений в DPB, и маркирования упомянутых нуля, одного или множества изображений в качестве не являющихся необходимыми для вывода. Декодер дополнительно сконфигурирован для выгрузки, из DPB, какого-либо изображения, маркированного в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB. В этом варианте осуществления, декодер также сконфигурирован для декодирования текущего изображения. Декодер дополнительно сконфигурирован для определения некоторого числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Декодер дополнительно сконфигурирован для сравнения числа со значением, полученным из по меньшей мере одного синтаксического элемента, представленного в битовом потоке. В этом варианте осуществления, декодер сконфигурирован для вывода изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, и маркирования изображения в качестве не являющегося необходимым для вывода, если число больше, чем значение. Декодер предпочтительно сконфигурирован для определения числа изображений, сравнения числа, вывода изображения и маркирования изображения после декодирования текущего изображения.
Другой связанный аспект вариантов осуществления определяет декодер, содержащий модуль анализа для анализа заголовка слайса текущего изображения, которое должно быть декодировано, битового потока, представляющего изображения видеопоследовательности. Декодер дополнительно содержит модуль определения набора опорных изображений для определения RPS для текущего изображения на основании проанализированного заголовка слайса. Декодер также содержит модуль маркирования для маркирования всех изображений в DPB, которые не представлены в RPS, в качестве неиспользуемых для ссылки и модуль вывода для вывода нуля, одного или множества изображений, маркированных в качестве необходимых для вывода, из изображений в DPB. Модуль маркирования дополнительно предназначен для маркирования упомянутых нуля, одного или множества изображений в качестве не являющихся необходимыми для вывода. Декодер содержит модуль выгрузки изображения для выгрузки, из DPB, какого-либо изображения, маркированного в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB. Декодер также содержит модуль декодирования для декодирования текущего изображения. Декодер дополнительно содержит модуль определения числа для определения некоторого числа изображений в DPB, которые маркированы в качестве необходимых для вывода, и модуль сравнения для сравнения числа со значением, полученным из по меньшей мере одного синтаксического элемента, представленного в битовом потоке. В этом варианте осуществления, узел вывода дополнительно предназначен для вывода изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, если число больше, чем значение. Модуль маркирования дополнительно предназначен для маркирования изображения в качестве не являющегося необходимым для вывода, если число больше, чем значение. В предпочтительном варианте осуществления, модуль определения числа, определяющий число изображений, модуль сравнения, сравнивающий число, модуль вывода, выводящий изображение, и модуль маркирования, маркирующий изображение, после модуля декодирования, декодирующего текущее изображение.
Еще один аспект вариантов осуществления относится к способу, выполняемому кодером. Способ содержит маркирование всех изображений в DPB, которые не представлены в RPS для текущего изображения видеопоследовательности, в качестве неиспользуемых для ссылки и маркирование нуля, одного или множества изображений, маркированных в качестве необходимых для вывода, из изображений в DPB, в качестве не являющихся необходимыми для вывода. Способ также содержит выгрузку, из DPB, какого-либо изображения, маркированного в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB. Способ дополнительно содержит декодирование текущего изображения. Число изображений в DPB, которые маркированы в качестве необходимых для вывода, определяется и сравнивается со значением, полученным из по меньшей мере одного заданного синтаксического элемента. Способ также содержит маркирование изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, в качестве не являющегося необходимым для вывода, если число больше, чем значение. В предпочтительном варианте осуществления, определение числа изображений, сравнение числа и маркирование изображения выполняются после декодирования текущего изображения.
Связанный аспект вариантов осуществления определяет кодер, сконфигурированный для маркирования всех изображений в DPB, которые не представлены в RPS для текущего изображения видеопоследовательности, в качестве неиспользуемых для ссылки. Кодер также сконфигурирован для маркирования нуля, одного или множества изображений, маркированных в качестве необходимых для вывода, из изображений в DPB, в качестве не являющихся необходимыми для вывода, и выгрузки, из DPB, какого-либо изображения, маркированного в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB. Кодер дополнительно сконфигурирован для декодирования текущего изображения. Кодер дополнительно сконфигурирован для определения некоторого числа изображений в DPB, которые маркированы в качестве необходимых для вывода, и сравнения числа со значением, полученным из по меньшей мере одного заданного синтаксического элемента. Кодер также сконфигурирован для маркирования изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, в качестве не являющегося необходимым для вывода, если число больше, чем значение. В предпочтительном варианте осуществления, кодер сконфигурирован для определения числа изображений, сравнения числа и маркирования изображения после декодирования текущего изображения.
Другой связанный аспект вариантов осуществления определяет кодер, содержащий модуль маркирования для маркирования всех изображений в DPB, которые не представлены в RPS для текущего изображения видеопоследовательности, в качестве неиспользуемых для ссылки и маркирования нуля, одного или множества изображений, маркированных в качестве необходимых для вывода, из изображений в DPB, в качестве не являющихся необходимыми для вывода. Кодер также содержит модуль выгрузки изображения для выгрузки, из DPB, какого-либо изображения, маркированного в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB. Кодер дополнительно содержит модуль декодирования для декодирования текущего изображения. Кодер также содержит модуль определения числа для определения числа изображений в DPB, которые маркированы в качестве необходимых для вывода, и модуль сравнения для сравнения числа со значением, полученным из по меньшей мере одного заданного синтаксического элемента. В этом варианте осуществления, модуль маркирования дополнительно предназначен для маркирования изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, в качестве не являющегося необходимым для вывода, если число больше, чем значение. В предпочтительном варианте осуществления, модуль определения числа, определяющий число изображений, модуль сравнения, сравнивающий число, и модуль маркирования, маркирующий изображение, после модуля декодирования, декодирующего текущее изображение.
Дополнительные аспекты вариантов осуществления относятся к мобильному терминалу, содержащему декодер, согласно вышеуказанному, и/или кодер, согласно вышеуказанному, и сетевому узлу, содержащему декодер, согласно вышеуказанному, и/или кодер, согласно вышеуказанному.
Краткое описание чертежей
Варианты осуществления вместе с дополнительными целями и преимуществами настоящего изобретения легко понять со ссылкой на нижеследующее описание, рассматриваемое вместе с сопроводительными чертежами, на которых:
Фиг. 1 представляет собой схематический общий вид декодера H.264/AVC.
Фиг. 2 иллюстрирует порядок декодирования и вывода для примера многоуровневой видеопоследовательности.
Фиг. 3 представляет собой упрощенную блок-схему последовательности операций декодирования H.264/AVC.
Фиг. 4 иллюстрирует порядок декодирования и вывода для примера многоуровневой видеопоследовательности.
Фиг. 5 представляет собой упрощенную блок-схему последовательности операций декодирования HEVC.
Фиг. 6 иллюстрирует порядок декодирования и вывода и временные уровни для примера многоуровневой видеопоследовательности.
Фиг. 7 иллюстрирует порядок декодирования и вывода для примера видеопоследовательности.
Фиг. 8 представляет собой блок-схему последовательности операций способа, выполняемого декодером, согласно варианту осуществления.
Фиг. 9 представляет собой блок-схему последовательности операций дополнительных, необязательных этапов способа по Фиг. 8.
Фиг. 10 представляет собой блок-схему последовательности операций дополнительного, необязательного этапа способа по Фиг. 8.
Фиг. 11 представляет собой блок-схему последовательности операций способа, выполняемого декодером согласно другому варианту осуществления.
Фиг. 12 представляет собой блок-схему последовательности операций дополнительных, необязательных этапов способа по Фиг. 9 или 11.
Фиг. 13 представляет собой блок-схему последовательности операций дополнительного, необязательного этапа способа по Фиг. 8 или 11.
Фиг. 14 представляет собой упрощенную блок-схему последовательности операций декодирования варианта осуществления.
Фиг. 15 представляет собой упрощенную блок-схему последовательности операций декодирования другого варианта осуществления.
Фиг. 16 представляет собой схематическую блок-схему декодера согласно варианту осуществления.
Фиг. 17 представляет собой схематическую блок-схему декодера согласно другому варианту осуществления.
Фиг. 18 представляет собой схематическую блок-схему декодера согласно дополнительному варианту осуществления.
Фиг. 19 представляет собой схематическую блок-схему декодера согласно еще одному варианту осуществления.
Фиг. 20 представляет собой схематическую блок-схему декодера согласно дополнительному варианту осуществления.
Фиг. 21 представляет собой блок-схему последовательности операций способа, выполняемого кодером, согласно варианту осуществления.
Фиг. 22 представляет собой блок-схему последовательности операций способа, выполняемого кодером, согласно другому варианту осуществления.
Фиг. 23 представляет собой схематическую блок-схему кодера согласно варианту осуществления.
Фиг. 24 представляет собой схематическую блок-схему кодера согласно другому варианту осуществления.
Фиг. 25 представляет собой схематическую блок-схему кодера согласно дополнительному варианту осуществления.
Фиг. 26 представляет собой схематическую блок-схему кодера согласно еще одному варианту осуществления.
Фиг. 27 представляет собой схематическую блок-схему кодера согласно дополнительному варианту осуществления.
Фиг. 28 представляет собой схематическую блок-схему мобильного терминала согласно варианту осуществления.
Фиг. 29 представляет собой схематическую блок-схему сетевого узла согласно варианту осуществления.
Фиг. 30 иллюстрирует порядок декодирования и вывода для примера многоуровневой видеопоследовательности.
Подробное описание
По всем чертежам, используются одинаковые ссылочные позиции для аналогичных или соответствующих элементов.
Настоящие варианты осуществления в общем относятся к декодированию и кодированию изображений видеопоследовательности, и, в частности, к выводу или выталкиванию изображений из буфера декодированных изображений в связи с кодированием и декодированием изображений. Варианты осуществления посредством этого обеспечивают сокращение задержки вывода и делают возможным более ранний вывод изображений, чем в решениях из уровня техники.
В основном варианте осуществления, когда декодируется изображение, декодер или кодер (декодирование изображения также выполняется во время кодирования для того, чтобы получать восстановленные опорные изображения из ранее закодированных изображений) определяет число изображений в буфере декодированных изображений (DPB), которые маркированы в качестве необходимых для вывода, и сравнивает это число со значением, которое получается из синтаксических элементов в битовом потоке. Если число изображений в DPB, маркированных в качестве необходимых для вывода, больше, чем значение, которое получается из синтаксических элементов в битовом потоке, выполняется модифицированный процесс вывода или изображение из изображений в DPB, маркированных в качестве необходимых для вывода, которое является первым изображением в порядке вывода, выводится, обозначенный процесс #2 вывода изображения, и маркируется в качестве не являющегося необходимым для вывода.
Различные конкретные варианты осуществления реализации и аспекты будут дополнительно описаны в этом документе начиная со стороны декодирования и затем продолжая стороной кодирования.
bin
bin
bin
bin
Маркированное в качестве необходимого для вывода означает в этом документе, что изображение ожидает вывода, например, для отображения или сохранения. Соответственно, маркированное в качестве не являющегося необходимым для вывода означает в этом документе, что изображение не ожидает вывода, и может, например, уже быть выведено. Соответственно, маркированное в качестве используемого для ссылки означает, что изображение используется для предсказания, когда декодируется другое изображение. Маркированное в качестве неиспользуемого для ссылки означает, что изображение не может быть использовано для ссылки или предсказания последующими изображениями. Маркирование, как упомянуто выше по тексту, не должно быть интерпретировано буквально как маркирование изображений меткой "необходимое для вывода", "не являющееся необходимым для вывода", "используемое для ссылки" или "неиспользуемое для ссылки". Точнее, маркирование должно быть интерпретировано таким образом, что изображение идентифицируется некоторым образом, в соответствии с которым оно должно быть/не должно быть выведено и может быть использовано в качестве опорного изображения/не может быть использовано в качестве опорного изображения. Маркирование может быть реализовано в различных вариантах осуществления. Например, изображение может быть сохранено в конкретной части DPB, выделенной для изображений, которые должны быть выведены или которые не должны быть выведены, или изображений, которые могут быть использованы в качестве опорного изображения или которые не должны быть использованы в качестве опорного изображения. В качестве альтернативы, изображение может быть помечено или иначе ассоциировано с флагом или другим кодовым словом, идентифицирующим изображение в качестве необходимого для вывода, против, не являющегося необходимым для вывода и используемого для ссылки, против, неиспользуемого для ссылки. В случае реализации флага, флаг может иметь первое значение (0 или 1) (“bin” - бин) для указания одной из альтернатив и затем иметь второе значение (1 или 0) для указания другой альтернативы. Например, первый флаг может быть использован в отношении вывода изображений и второй флаг может быть использован в отношении ссылки.
Следовательно, главный аспект относится к способу, выполняемому декодером. В способе декодер определяет число изображений в DPB, которые маркированы в качестве необходимых для вывода, и сравнивает это число со значением, которое получается из синтаксических элементов в битовом потоке. Если число изображений в DPB, маркированных в качестве необходимых для вывода, больше, чем значение, которое получается из синтаксических элементов в битовом потоке, выполняется модифицированный процесс вывода или изображение из изображений в DPB, маркированных в качестве необходимых для вывода, которое является первым изображением в порядке вывода, выводится, в этом документе обозначенный процесс #2 вывода изображения, и маркируется в качестве не являющегося необходимым для вывода.
Этот главный аспект предпочтительно реализуется в совместимом с HEVC декодере, также упоминаемом в этом документе как совместимый с H.265 декодер. В таком случае, вариант осуществления реализации относится к способу, выполняемому совместимым с HEVC декодером, и содержащему следующие этапы. Совместимый с HEVC декодер определяет число изображений в DPB, которые маркированы в качестве необходимых для вывода. Совместимый с HEVC декодер также сравнивает число со значением, полученным из по меньшей мере одного синтаксического элемента, представленного в битовом потоке, представляющем изображения видеопоследовательности. Совместимый с HEVC декодер дополнительно выводит изображение, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, если число больше, чем значение. В дополнение, совместимый с HEVC декодер маркирует выводимое изображение в качестве не являющегося необходимым для вывода, если число больше, чем значение.
Фиг. 8 представляет собой блок-схему последовательности операций способа, выполняемого декодером, согласно варианту осуществления. Способ содержит определение, на этапе S1 и после того как текущее изображение было декодировано и сохранено в DPB, числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Следующий этап S2 содержит сравнение этого числа со значением sps_max_num_reorder_pics[ HighestTid ]. Если число больше, чем значение способ переходит к этапу S3. Этот этап S3 содержит вывод изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода. Изображение, которое было выведено на этапе S3, затем маркируется в качестве не являющегося необходимым для вывода на этапе S4. Следовательно, этот этап S4 выполняется, если число больше, чем значение.
В этом варианте осуществления, sps_max_num_reorder_pics[ HighestTid ] используется как предпочтительное представление значения, полученного из по меньшей мере одного синтаксического элемента, представленного в битовом потоке, представляющем изображения видеопоследовательности. Кроме того, HighestTid точно определяет наивысший уровень, который декодируется декодером видеопоследовательности. Следовательно, HighestTid указывает наивысший временной подуровень, если видеопоследовательность содержит один или более временных уровней, и указывает наивысший декодированный уровень, если видеопоследовательность вместо этого содержит другой тип уровней, например, один или более пространственных уровней, уровней качества и так далее.
В варианте осуществления, sps_max_num_reorder_pics[ i ] указывает максимально допустимое число изображений, которые могут предшествовать любому изображению в кодированной видеопоследовательности в порядке декодирования и следовать за этим изображением в порядке вывода, когда HighestTid равен i. Префикс sps у max_num_reorder_pics[ i ] указывает, что синтаксический элемент предпочтительно представляется в наборе параметров последовательности (SPS) битового потока.
Таким образом, в этом варианте осуществления может быть одно значение, полученное из расчета на уровень в битовом потоке, и причем значение для использования в сравнении, выполняемом на этапе S2, является значением, которое получается для наивысшего уровня, который фактически декодируется декодером видеопоследовательности. Следует отметить, что этот наивысший декодированный уровень может быть равным или более низким, чем максимальное число уровней в видеопоследовательности, что точно определено синтаксическим элементом max_sub_layers_minus1, таким как vps_max_sub_layers_minus1 или sps_max_sub_layers_minus1, в зависимости от того, извлекается ли синтаксический элемент из набора параметров видео (VPS) или SPS.
Следовательно, в конкретном варианте осуществления, видеопоследовательность является многоуровневой видеопоследовательностью, содержащей множество, то есть, по меньшей мере два уровня изображений. Каждый уровень из многочисленных уровней, затем предпочтительно имеет ассоциированный синтаксический элемент, задающий соответствующее значение. Значение, используемое в сравнении на этапе S2, является затем значением, полученным из синтаксического элемента, ассоциированного с, в этом варианте осуществления, наивысшим уровнем, который декодируется декодером упомянутых многочисленных уровней.
В конкретном варианте осуществления, sps_max_num_reorder_pics[ i ] указывает максимально допустимое число изображений в том же самом или более низком уровне, таком как тот же самый или более низкий временной уровень, в сравнении с уровнем i, который предшествует изображению в порядке декодирования и следует за этим изображением в порядке вывода.
В варианте осуществления, если число не больше, чем значение, что определено в сравнении на этапе S2, способ предпочтительно завершается и никакое изображение не выводится или не маркируется. Таким образом, в таком случае, этапы S3 и S4 пропускаются и не выполняются, см. пунктирную линию справа.
В варианте осуществления, этапы S2-S4 могут быть выполнены только один раз, после того как текущее изображение было декодировано и сохранено в DPB. В качестве альтернативы, цикл, сформированный этапами S2-S4, см. пунктирную линию слева, может быть выполнен до тех пор, пока число изображений в DPB, которые маркированы в качестве необходимых для вывода, уже не больше, чем значение sps_max_num_reorder_pics[ HighestTid ]. Каждый раз, когда выполняется цикл этапов S2-S4, число изображений в DPB, которые маркированы в качестве необходимых для вывода, сокращается на единицу посредством маркирования, на этапе S4, изображения, выведенного на этапе S3, в качестве не являющегося необходимым для вывода. Это означает, что этапы S3 или S4 могут быть выполнены, после того как текущее изображение было декодировано и сохранено в DPB, ноль раз, если число≤sps_max_num_reorder_pics[ HighestTid ]; один раз, если число=sps_max_num_reorder_pics[ HighestTid ]+1; или более, чем один раз, если число>sps_max_num_reorder_pics[ HighestTid ]+1, то есть, n раз, если число=sps_max_num_reorder_pics[ HighestTid ]+n. Как только сравнение на этапе S2 определяет, что число уже не больше, чем значение sps_max_num_reorder_pics[ HighestTid ], способ завершается.
Определение числа изображений в DPB, маркированных в качестве необходимых для вывода, на этапе S1 предпочтительно выполняется после того, как текущее изображение было декодировано и сохранено в DPB.
Способ, раскрытый выше по тексту и проиллюстрированный на Фиг. 8, предпочтительно выполняется один раз для каждого изображения видеопоследовательности, которое декодируется и сохраняется в DPB. Таким образом, способ предпочтительно выполняется мгновенно, как только текущее изображение считается декодированным, то есть, после того как декодирована последняя единица декодирования изображения, и текущее декодированное изображение сохраняется в пустом буфере хранения изображений, то есть, слоте изображения, в DPB.
Фиг. 9 представляет собой блок-схему последовательности операций дополнительных, необязательных этапов способа по Фиг. 8. Способ начинается на этапе S10, который содержит анализ заголовка слайса текущего изображения, которое должно быть декодировано, видеопоследовательности. Следующий этап S11 определяет набор опорных изображений (RPS) для текущего изображения на основании проанализированного заголовка слайса. Все изображения в DPB, которые не представлены в RPS, маркируются в качестве неиспользуемых для ссылки на этапе S12. Следующий этап S13 содержит вывод нуля, одного или множества, то есть более, чем одного, изображений, которые маркированы в качестве необходимых для вывода, из изображений в DPB. Этот этап S13 также содержит маркирование выводимых нуля, одного или множества изображений в качестве не являющихся необходимыми для вывода. Этап S14 содержит выгрузку или удаление, из DPB, какого-либо изображения, маркированного в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB. Текущее изображение затем декодируется на этапе S15. Способ затем переходит к этапу S1 на Фиг. 8. Следовательно, в этом варианте осуществления, определение числа изображений на этапе S1, сравнение числа на этапе S2, вывод изображения на этапе S3 и маркирование изображения на этапе S4 выполняются после декодирования текущего изображения на этапе S15.
В дополнение к декодированию текущего изображения на этапе S15, этот этап предпочтительно также содержит маркирование текущего изображения в качестве используемого для ссылки или, в необязательном варианте осуществления, маркирование текущего изображения в качестве используемого для кратковременной ссылки. Текущее изображение предпочтительно также маркируется в качестве необходимого для вывода или не являющегося необходимым для вывода согласно значению переменной PicOutputFlag, предпочтительно полученному на этапе S10.
В общем, кодированная видеопоследовательность, то есть, битовый поток, содержит единицы уровня абстракции сети (NAL). В основном, одна единица NAL содержит слайс с соответствующим заголовком слайса, включающим в себя информацию управления для этого слайса и данные полезной нагрузки видео, либо единица NAL содержит набор параметров, такой как VPS, SPS и набор параметров изображения (PPS). Набор параметров содержит информацию управления. Изображение видеопоследовательности может состоять из одного слайса или многочисленных слайсов. Этап S10 с Фиг. 9 таким образом содержит анализ части заголовка слайса единицы NAL, содержащей слайс изображения. Если изображение содержит многочисленные слайсы и в силу этого распределяется между многочисленными единицами NAL, содержащими соответствующий заголовок слайса, тогда этап S10 предпочтительно выполняется для каждого слайса изображения. Однако, этапы с S11 по S14 предпочтительно выполняются только для одного из слайсов в изображении, обычно первого слайса в изображении.
Заголовок слайса, анализируемый на этапе S10, содержит информацию, обеспечивающую возможность декодеру генерировать RPS. RPS является набором опорных изображений, ассоциированным с текущим изображением и состоящим из всех опорных изображений, которые находятся перед текущим изображением в порядке декодирования, и которые могут быть использованы для ссылки, то есть, внешнего предсказания, текущего изображения или какого-либо изображения в видеопоследовательности, следующего за текущим изображением в порядке декодирования.
Информация, получаемая на этапе S10 и используемая для определения RPS на этапе S11, может, например, содержать идентификатор для структуры синтаксиса RPS, включенной в набор параметров, такой как SPS, применимый к текущему слайсу. Примером такого идентификатора, применимого для HEVC, является short_term_ref_pic_set_idx. Набор параметров затем содержит синтаксические элементы, задающие один или более RPS, такие как num_short_term_ref_pic_sets, задающий число синтаксических элементов short_term_ref_pic_set( ), включенных в SPS, где синтаксический элемент short_term_ref_pic_set( ) задает возможный RPS для текущего изображения.
В качестве альтернативы, информация, получаемая на этапе S10, может быть использована непосредственно для определения RPS на этапе S11. Эта информация может, например, содержать синтаксический элемент short_term_ref_pic_set( ), где синтаксический элемент short_term_ref_pic_set( ) задает RPS текущего изображения.
Больше информации об определении RPS может быть найдено в WO 2013/002700 и разделах 7.3.2.2, 7.3.5.1, 7.3.5.2, 7.4.2.2, 7.4.5.1, 7.4.5.2 и 8.3.2 в JCTVC-J1003_d7, проекте 8 текстовой спецификации Высокоэффективного Видеокодирования (HEVC), В. Bross и другие, JCT-VC ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG11, 10-е Собрание: Стокгольм, 11-20 июля 2012.
RPS точно определяет, как упомянуто выше по тексу, изображения видеопоследовательности, которые должны быть удержаны в DPB, то есть, быть доступными для использования в качестве опорных изображений при декодировании текущего изображения и/или при декодировании изображений, следующих за текущим изображением в порядке декодирования. Это означает, что любые опорные изображения, сохраненные в DPB, но не перечисленные в RPS, больше не будут использованы в качестве опорного изображения. Следовательно, этап S12 в связи с этим содержит маркирование таких изображений в DPB, но не идентифицированных в RPS, в качестве неиспользуемых для ссылки.
Вывод изображений на этапе S13 может содержать вывод одного изображения, маркированного в качестве необходимого для вывода, вывод более, чем одного изображения, маркированного в качестве необходимого для вывода, или даже отсутствие вывода какого-либо изображения вовсе. Любые изображения, выводимые на этапе S13, выводятся согласно порядку вывода, предпочтительно выводятся в порядке от наименьшего значения счета порядка изображения (POC).
Любое изображение, выводимое на этапе S13, затем маркируется в качестве не являющегося необходимым для вывода, поскольку изображение затем выводится. Если выводятся ноль изображений, конечно, на этапе S13, никакое маркирование не выполняется.
Изображения, которые маркированы в качестве неиспользуемых для ссылки и не являющихся необходимыми для вывода, больше не нужны, ни в качестве опорных изображений, ни для вывода. Соответственно, этап S14 выгружает или удаляет любые маркированные таким образом изображения из DPB, чтобы посредством этого освободить буфер хранения изображений, то есть, слот изображения, в DPB.
Декодирование текущего изображения выполняется согласно хорошо известным способам декодирования изображений, таким, которые точно определены в стандарте HEVC/H.265. Следовательно, декодирование на этапе S35 влечет за собой генерирование пиксельных значений пикселей или отсчетов в текущем изображении, обычно с использованием пиксельных значений одного или более ранее декодированных изображений, сохраненных в DPB, в качестве опорных изображений.
В варианте осуществления, показанном на Фиг. 9, способ, показанный на Фиг. 8 и содержащий этапы S1-S4, может рассматриваться как дополнительный или вспомогательный процесс вывода изображения, который был упомянут выше по тексту как процесс #2 вывода изображения. Этот вариант осуществления в связи с этим обеспечивает возможность вывода изображений на этапе S3 даже после того, как текущее изображение было декодировано на этапе S15, но перед началом обработки следующего изображения в битовом потоке, то есть, перед выполнением этапа S10 для следующего изображения в порядке декодирования.
Фиг. 14 обобщает этот вариант осуществления. Следовательно, в одном варианте осуществления, после декодирования изображения добавляется дополнительный этап процесса вывода изображения для того, чтобы обеспечить более ранний вывод изображений, см. Фиг. 14. Способ декодера может содержать и/или декодер может быть сконфигурирован для выполнения следующих упорядоченных этапов согласно варианту осуществления:
1. Анализируется заголовок слайса, включающий в себя RPS, заголовка первого слайса изображения P.
2. Осуществляется процесс маркирования изображения, например, изображения могут быть маркированы неиспользуемыми для ссылки посредством RPS из заголовка слайса.
3. Осуществляется процесс вывода изображения, при котором могут быть выведены изображения.
4. Декодируется изображение P.
5. После того как изображение P декодировано, декодер определяет число изображений в DPB, которые маркированы в качестве необходимых для вывода, и сравнивает это число со значением, которое получается из синтаксических элементов, показанных на примере sps_max_num_reorder_pics[ HighestTid ], в битовом потоке.
6. Если число изображений в DPB, маркированных в качестве необходимых для вывода, больше, чем значение, которое получается из синтаксических элементов в битовом потоке, изображение из изображений в DPB, маркированных в качестве необходимых для вывода, которое является первым изображением в порядке вывода, выводится и маркируется в качестве не являющегося необходимым для вывода. Таким образом, согласно варианту осуществления вводится процесс #2 вывода изображения.
7. Следующее изображение Q декодируется повторением вышеуказанных этапов 1-6 для изображения Q.
Способ, раскрытый на Фиг. 8, также может быть реализован как часть модифицированного процесса вывода, например для HEVC. В этом подходе, модифицируется существующий этап процесса вывода изображения для того, чтобы позволить более ранний вывод изображений.
Модификация обеспечивает решение проблемы с no_output_of_prior_pics_flag, рассмотренной в разделе Уровень техники. Решение является аналогичным вариантам осуществления, рассмотренным выше по тексту, но с изменением, что вместо добавления дополнительного процесса вывода, существующий процесс вывода HEVC модифицируется, когда no_output_of_prior_pics_flag равен 1.
Фиг. 10 представляет собой блок-схему последовательности операций дополнительного, необязательного этапа способа по Фиг. 8, при реализации вышеупомянутого варианта осуществления. Этап S20 содержит анализ заголовка слайса изображения произвольного доступа (RAP), также упоминаемого как интра-изображение точки произвольного доступа (IRAP) в области техники, из видеопоследовательности для получения значения флага no_output_of_prior_pics_flag. Если значение флага no_output_of_prior_pics_flag равно 1, способ переходит к этапу S1 на Фиг. 8. Следовательно, в этом варианте осуществления, определение числа на этапе S1, сравнение числа на этапе S2, вывод изображения на этапе S3 и маркирование изображения на этапе S4 выполняются, если значение no_output_of_prior_pics_flag равно единице.
Соответственно, если значение у значения no_output_of_prior_pics_flag равно нулю (0), способ завершается и модифицированный процесс вывода не выполняется.
Когда этот вариант осуществления применяется к HEVC, способ предпочтительно содержит дополнительные этапы определения RPS для изображения произвольного доступа на основании заголовка слайса, проанализированного на этапе S20 (в сравнении с этапом S11 на Фиг. 9). Способ также содержит маркирование всех изображений в DPB, которые не перечислены в RPS, в качестве неиспользуемых для ссылки (в сравнении с этапом S12 на Фиг. 9). Декодируется изображение произвольного доступа (в сравнении с этапом S15 на Фиг. 9). В этом варианте осуществления, определение числа на этапе S1, сравнение числа на этапе S2, вывод изображения на этапе S3 и маркирование изображения на этапе S4 выполняются после маркирования изображений, не перечисленных в RPS, но перед декодированием изображения произвольного доступа.
Фиг. 15 представляет собой упрощенную блок-схему последовательности операций декодирования этого варианта осуществления. Способ декодера может содержать и/или декодер может быть сконфигурирован для выполнения следующих упорядоченных этапов согласно варианту осуществления:
1) Анализируется заголовок слайса заголовка первого слайса изображения P.
2) Осуществляется процесс маркирования изображения.
3) Осуществляется процесс вывода изображения, в котором могут быть выведены изображения. Процесс вывода изображения модифицируется так, что если no_output_of_prior_pics_flag равен 1, применяется следующее:
a. Декодер определяет число изображений в DPB, которые маркированы в качестве необходимых для вывода, и сравнивает это число со значением, которое получается из синтаксических элементов в битовом потоке.
b. Если число изображений в DPB, маркированных в качестве необходимых для вывода, больше, чем значение, которое получается из синтаксических элементов в битовом потоке, изображение из изображений в DPB, маркированных в качестве необходимых для вывода, которое является первым в порядке вывода, выводится и маркируется в качестве не являющегося необходимым для вывода.
c. Все оставшиеся изображения в DPB, которые маркированы в качестве необходимых для вывода, маркируются в качестве не являющихся необходимыми для вывода. Они не выводятся.
4) Декодируется изображение P.
Фиг. 11 представляет собой блок-схему последовательности операций способа, выполняемого декодером согласно другому варианту осуществления. Способ содержит анализ заголовка слайса текущего изображения, которое должно быть декодировано, видеопоследовательности на этапе S30. RPS определяется для текущего изображения на основании проанализированного заголовка слайса на этапе S31. Следующий этап S32 содержит маркирование всех изображений в DPB, которые не представлены в RPS, в качестве неиспользуемых для ссылки. Ноль, одно или множество изображений, маркированных в качестве необходимых для вывода, из изображений в DPB, выводятся и маркируются в качестве не являющихся необходимыми для вывода на этапе S33. Следующий этап S34 содержит выгрузку или удаление какого-либо изображения, из DPB, которое маркируется в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB. Текущее изображение затем декодируется на этапе S35.
Эти этапы с S30 по S35 по существу соответствуют этапам S10-S15, рассмотренным выше по тексту и проиллюстрированным на Фиг. 9.
Способ затем переходит к этапу S36, который содержит определение числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Это число сравнивается на этапе S37 со значением, полученным из по меньшей мере одного синтаксического элемента, представленного в битовом потоке, представляющем изображения видеопоследовательности. Если число больше, чем значение способ переходит к этапам S38 и S39. Этап S38 содержит вывод изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода. Этап S39 содержит маркирование изображения, выведенного на этапе S38, в качестве не являющегося необходимым для вывода.
В этом варианте осуществления, определение числа изображений на этапе S37, сравнение числа на этапе S38, вывод изображения на этапе S38 и маркирование изображения на этапе S39 выполняются после декодирования текущего изображения на этапе S35.
Этапы с S36 по S39 соответствуют этапам с S1 по S4, рассмотренным выше по тексту и показанным на Фиг. 8, но с отличием в том, что значение, с которым сравнивается определенное число на этапе S37, необязательно должно быть sps_max_num_reorder_pics[ HighestTid ], но вместо этого может быть значением, полученным из другого(их) синтаксического элемента(ов), имеющегося в битовом потоке, что дополнительно рассмотрено ниже по тексту.
В варианте осуществления, если число не больше, чем значение, что определено сравнением на этапе S37, способ предпочтительно завершается и никакое изображение не выводится или не маркируется. Таким образом, в таком случае, этапы S38 и S39 пропускаются и не выполняются, см. пунктирную линию справа.
В варианте осуществления, этапы с S37 по S39 могут быть выполнены только один раз после того как текущее изображение было декодировано и предпочтительно сохранено в DPB. В качестве альтернативы, цикл, сформированный этапами S37-S39, см. пунктирную линию слева, может быть выполнен до тех пор, когда число изображений в DPB, которые маркированы в качестве необходимых для вывода, уже не больше, чем значение. Каждый раз, когда выполняется цикл этапов S37-S39, число изображений в DPB, которые маркированы в качестве необходимых для вывода, сокращается на единицу посредством маркирования, на этапе S39, изображения, выведенного на этапе S38, в качестве не являющегося необходимым для вывода.
Фиг. 12 представляет собой блок-схему последовательности операций дополнительных, необязательных этапов способа по Фиг. 11, но также применимых к вариантам осуществления, показанным на Фиг. 8 и 9. Способ продолжается с этапа S35 на Фиг. 11 или этапа S15 на Фиг. 9, на которых было декодировано текущее изображение. Следующий этап S40 содержит сохранение декодированного текущего изображения в DPB в пустом буфере хранения изображений, то есть, слоте изображения. Декодированное текущее изображение маркируется на этапе S41 в качестве необходимого для вывода или в качестве не являющегося необходимым для вывода. Изображение также необязательно маркируется в качестве используемого для кратковременной ссылки, то есть, используемого в качестве опорного изображения. Этот этап S41 предпочтительно выполняется на основании PicOutputFlag, назначенного текущему изображению. Таким образом, если флаг имеет значение 1, декодированное текущее изображение затем маркируется в качестве необходимого для вывода и иначе, то есть, флаг имеет значение 0, декодированное текущее изображение маркируется в качестве не являющегося необходимым для вывода. PicOutputFlag может быть получен из синтаксического элемента в битовом потоке, применимого к настоящему текущему изображению, например, на основании синтаксического элемента pic_output_flag, который может быть представлен в заголовке слайса текущего изображения.
Способ затем переходит к этапу S36 с Фиг. 11 или этапу S1 с Фиг. 8, где определяется число изображений в DPB, маркированных в качестве необходимых для вывода.
В этом документе далее будут описаны различные варианты осуществления выбора значения, используемого в сравнении на этапе S37 с Фиг. 11 и на этапе S2 с Фиг. 8.
В варианте осуществления, видеопоследовательность является многоуровневой видеопоследовательностью, содержащей множество уровней изображений. Каждый уровень из упомянутого множества уровней, затем имеет ассоциированный синтаксический элемент, задающий соответствующее значение, используемое в процессе вывода. Способ дополнительно содержит дополнительный, необязательный этап, показанный на блок-схеме последовательности операций с Фиг. 13. Способ продолжается с этапа S35 на Фиг. 11 или с этапа S1 на Фиг. 8. Следующий этап S50 содержит выбор значения, полученного из синтаксического элемента, ассоциированного с наивысшим уровнем, который декодируется декодером, упомянутого множества уровней. Способ затем переходит к этапу S37 на Фиг. 11 или этапу S2 на Фиг. 8, где используется это выбранное значение.
Этап S37 и этап S2 предпочтительно содержат, в этом варианте осуществления, сравнение числа, определяемого на этапе S36 или S1, со значением sps_max_num_reorder_pics[ HighestTid ]. Если число больше, чем значение sps_max_num_reorder_pics[ HighestTid ], способ переходит к этапу S38 или S3, которые содержат, в этом варианте осуществления, вывод изображения в DPB с наименьшим значением PicOrderCntVal всех изображений в DPB, которые маркированы в качестве необходимых для вывода. PicOrderCntVal представляет значение счета порядка изображения у изображения, которое в свою очередь предпочтительно задает порядок вывода изображений, сохраненных в DPB.
В конкретном аспекте реализации этого варианта осуществления, видеопоследовательность является многоуровневой видеопоследовательностью, содержащей множество уровней изображений. В таком случае, каждый уровень имеет соответствующее значение, то есть, sps_max_num_reorder_pics[ i ] для уровня номер i. Значение для использования затем является значением, ассоциированным с наивысшим декодируемым уровнем, то есть, наивысшим уровнем, который декодируется декодером, таким как наивысший подуровень, если уровни являются различными временными уровнями.
В другом варианте осуществления, видеопоследовательность является многоуровневой видеопоследовательностью, содержащей множество уровней изображений. Каждый уровень из упомянутого множества уровней, затем имеет ассоциированный синтаксический элемент, задающий соответствующее значение. Способ дополнительно содержит дополнительный, необязательный этап, показанный на блок-схеме последовательности операций с Фиг. 13. Способ продолжается с этапа S36 на Фиг. 11. Следующий этап S50 содержит выбор значения, полученного из синтаксического элемента, ассоциированного с наивысшим уровнем из упомянутого множества уровней. Способ затем переходит к этапу S37, где используется это выбранное значение.
Этап S37 предпочтительно содержит, в этом варианте осуществления, сравнение числа, определяемого на этапе S36, со значением sps_max_num_reorder_pics[ sps_max_sub_layers_minus1 ]. Если число больше, чем значение sps_max_num_reorder_pics[ sps_max_sub_layers_minus1 ], способ переходит к этапу S38, который содержит, в этом варианте осуществления, вывод изображения в DPB с наименьшим значением PicOrderCntVal всех изображений в DPB, которые маркированы в качестве необходимых для вывода. Синтаксический элемент sps_max_sub_layers_minus1 точно определяет максимальное число уровней видеопоследовательности.
В конкретном аспекте реализации этого варианта осуществления, видеопоследовательность является многоуровневой видеопоследовательностью, содержащей множество уровней изображений. В таком случае, каждый уровень имеет соответствующее значение, то есть sps_max_num_reorder_pics[ i ] для уровня номер i. Значение для использования затем является значением, ассоциированным с наивысшим уровнем в битовом потоке.
В дополнительном варианте осуществления, видеопоследовательность является многоуровневой видеопоследовательностью, содержащей множество уровней изображений. Каждый уровень из упомянутого множества уровней, затем имеет ассоциированный синтаксический элемент, задающий соответствующее значение. Способ дополнительно содержит дополнительный, необязательный этап, показанный на блок-схеме последовательности операций с Фиг. 13. Способ продолжается с этапа S36 на Фиг. 11. Следующий этап S50 содержит выбор значения, полученного из синтаксического элемента, ассоциированного с уровнем из упомянутого множества уровней, к которому принадлежит декодированное текущее изображение. Способ затем переходит к этапу S37, где используется это выбранное значение.
Еще в одном варианте осуществления, видеопоследовательность является многоуровневой видеопоследовательностью, содержащей множество уровней изображений. Каждый уровень из упомянутого множества уровней, затем имеет ассоциированный синтаксический элемент, задающий соответствующее значение. Способ дополнительно содержит дополнительный, необязательный этап, как показано в блок-схеме последовательности операций с Фиг. 13. Способ продолжается с этапа S36 на Фиг. 11. Следующий этап S50 содержит выбор максимального значения из соответствующих значений.
Способ, как показано на Фиг. 11, может быть применен к текущему изображению, которое является изображением произвольного доступа видеопоследовательности. В таком случае, этап S30 предпочтительно содержит анализ заголовка слайса изображения произвольного доступа для получения значения флага no_output_prior_flag. В таком случае, определение числа на этапе S36, сравнение числа на этапе S37, вывод изображения на этапе S38 и маркирование изображения на этапе S39 могут быть обусловлены на основании значения этого флага. Следовательно, в необязательном варианте осуществления эти этапы S36-S39 выполняются, если значение флага no_output_prior_flag равно 1.
В варианте осуществления, маркирование изображения, как выполнено на этапе S12 с Фиг. 9 и S32 с Фиг. 11, предпочтительно содержит маркирование всех изображений в DPB, которые не представлены в RPS, в качестве неиспользуемых для ссылки. Эти этапы также необязательно содержат маркирование всех изображений в DPB, которые представлены в RPS, в качестве используемых для ссылки. Однако, в общем изображение маркируется в качестве используемого для ссылки как только оно декодируется и сохраняется в DPB. Следовательно, этап S12 и S32 типично влекут за собой перемаркирование изображений, которые уже не являются необходимыми для ссылки.
В варианте осуществления, вывод изображения, выполняемый на этапе S3 с Фиг. 8 и этапе S38 с Фиг. 11, предпочтительно содержит вывод изображения с наименьшим значением счета порядка изображения из изображений в DPB, которые маркированы в качестве необходимых для вывода, если число больше, чем значение, что определено на этапе S2 или S37. Значение счета порядка изображения предпочтительно представляется параметром PicOrderCntVal.
В варианте осуществления, вывод изображения, выполняемый на этапе S3 с Фиг. 8 и этапе S38 с Фиг. 11, предпочтительно выполняется до анализа заголовка слайса следующего изображения, которое должно быть декодировано, кодированной видеопоследовательности.
В варианте осуществления, способ, выполняемый так, как показано на Фиг. 8 или Фиг. 11, содержит дополнительный этап, на котором извлекают упомянутый по меньшей мере один синтаксический элемент, из набора параметров, ассоциированного с битовым потоком и выбранного из группы, состоящей из PPS, SPS и VPS. PPS идентифицируется на основании идентификатора PPS, присутствующего в заголовке слайса текущего изображения. SPS, который применяется к текущему изображению, идентифицируется идентификатором SPS, присутствующим в PPS, идентифицированном идентификатором PPS, присутствующим в заголовке слайса текущего изображения. Соответственно, VPS, который применяется к текущему изображению, идентифицируется идентификатором VPS, присутствующим в SPS, который применяется к текущему изображению. В конкретном варианте осуществления, упомянутый по меньшей мере один синтаксический элемент извлекается из SPS.
Конкретный вариант осуществления, который является применимым для реализации с использованием no_output_prior_pics_flag, содержит дополнительный этап, на котором предпочтительно маркируют все оставшиеся изображения в DPB, маркированные в качестве необходимых для вывода, в качестве не являющихся необходимыми для вывода, если флаг no_output_prior_pics_flag равен единице.
В связанном варианте осуществления, способ содержит дополнительный этап, на котором выгружают все изображения в DPB, без вывода каких-либо изображений, если флаг no_output_prior_pics_flag равен единице. Заполненность DPB затем устанавливается равной нулю для указания, что DPB является пустым.
Здесь ниже по тексту будут дополнительно рассматриваться различные примерные варианты осуществления.
Примерный вариант осуществления 1
В одном варианте осуществления, после декодирования изображения добавляется дополнительный этап процесса вывода изображения для того, чтобы обеспечить более ранний вывод изображений, см. Фиг. 14.
Способ декодера может содержать и/или декодер может быть сконфигурирован для выполнения следующих упорядоченных этапов согласно варианту осуществления:
1. Анализируется заголовок слайса заголовка первого слайса изображения P.
2. Осуществляется процесс маркирования изображения.
3. Осуществляется процесс вывода изображения, в котором могут быть выведены изображения.
4. Декодируется изображение P.
5. После того как декодируется изображение P, декодер определяет число изображений в DPB, которые маркированы "необходимыми для вывода", и сравнивает это число со значением, которое получается из синтаксических элементов (показано на примере варианта осуществления 9) в битовом потоке.
6. Если число изображений в DPB, маркированных "необходимыми для вывода", больше, чем значение, которое получается из синтаксических элементов в битовом потоке, изображение из изображений в DPB, маркированных "необходимыми для вывода", которое является первым изображением в порядке вывода, выводится и маркируется "не являющимся необходимым для вывода". Таким образом, согласно варианту осуществления вводится процесс #2 вывода изображения.
7. Декодируется следующее изображение Q.
Примерный вариант осуществления 2
Такой же, как примерный вариант осуществления 1, где значение представляется одним кодовым словом синтаксического элемента в битовом потоке.
Примерный вариант осуществления 3
Такой же, как примерный вариант осуществления 2, где значение представляется кодовым словом в наборе параметров последовательности, например, наборе параметров изображения (PPS), наборе параметров последовательности (SPS) или наборе параметров видео (VPS).
Примерный вариант осуществления 4
Такой же, как вариант осуществления 1-3, где есть одно зависящее от уровня значение, полученное из расчета на уровень в битовом потоке, и причем значение для использования в сравнении является значением, которое получается для того же самого уровня в качестве изображения P.
Примерный вариант осуществления 5
Такой же, как вариант осуществления 1-3, где есть одно значение, полученное из расчета на уровень в битовом потоке, и причем значение для использования в сравнении является значением, которое получается для наивысшего уровня в битовом потоке.
Примерный вариант осуществления 6
Такой же, как вариант осуществления 1-3, где есть одно значение, полученное из расчета на уровень в битовом потоке, и причем значение для использования в сравнении является максимальным значением для всех уровней.
Примерный вариант осуществления 7
Такой же, как вариант осуществления 5, где наивысший уровень задается в качестве наивысшего подуровня.
Примерный вариант осуществления 8
Такой же, как вариант осуществления 1-7, где первое изображение в порядке вывода задается в качестве изображения в DPB с наименьшим значением PicOrderCntVal. PicOrderCntVal задает POC и описывается выше по тексту.
Примерный вариант осуществления 9
Такой же, как вариант осуществления 4-8, где уровни являются временными уровнями.
Примерный вариант осуществления 10
Комбинация вариантов осуществления 1, 2, 3, 5, 8 и 9 является одним предпочтительным вариантом осуществления. Определение этого варианта осуществления в текущей спецификации HEVC (JCTVC-K0030_v3) может привести в результате к следующим изменения спецификации HEVC в разделе C.5.3 где жирный текст означает добавленный текст:
C.5.3 Декодирование изображения, маркирование и сохранение и возможный вывод одного изображения
Следующее происходит мгновенно, когда последняя единица декодирования единицы n доступа, содержащей текущее изображение, удаляется из CPB.
Текущее изображение считается декодированным после того, как декодирована последняя единица декодирования изображения. Текущее декодированное изображение сохраняется в пустом буфере хранения изображений в DPB, и применяется следующее.
1. - Если текущее декодированное изображение имеет PicOutputFlag равный 1, оно маркируется "необходимым для вывода".
2. - Иначе (текущее декодированное изображение имеет PicOutputFlag равный 0), оно маркируется "не являющимся необходимым для вывода".
Если текущее декодированное изображение является опорным изображением, оно маркируется "используемым для ссылки", иначе (текущее декодированное изображение является неопорным изображением), оно маркируется "неиспользуемым для ссылки".
Когда число изображений в DPB, которые маркированы "необходимыми для вывода" больше, чем sps_max_num_reorder_pics[ sps_max_sub_layers_minus1 ] после того, как текущее декодированное изображение было сохранено в DPB, изображение в DPB с наименьшим значением PicOrderCntVal из всех изображений в DPB кадрируется, выводится и маркируется "не являющимся необходимым для вывода".
Примерный вариант осуществления 11
Комбинация вариантов осуществления 1, 2, 3, 7, 8 и 9 является другим предпочтительным вариантом осуществления. Определение этого варианта осуществления в текущей спецификации HEVC (JCTVC-K0030_v3) может привести в результате к следующим изменениям спецификации HEVC в разделе C.5.3, где жирный текст означает добавленный текст:
C.5.3 Декодирование изображения, маркирование и сохранение и возможный вывод одного изображения
Следующее происходит мгновенно, когда последняя единица декодирования единицы n доступа, содержащей текущее изображение, удаляется из CPB.
Текущее изображение считается декодированным после того, как декодирована последняя единица декодирования изображения. Текущее декодированное изображение сохраняется в пустом буфере хранения изображений в DPB, и применяется следующее.
1. - Если текущее декодированное изображение имеет PicOutputFlag равный 1, оно маркируется "необходимым для вывода".
2. - Иначе (текущее декодированное изображение имеет PicOutputFlag равный 0), оно маркируется "не являющимся необходимым для вывода".
Если текущее декодированное изображение является опорным изображением, оно маркируется "используемым для ссылки", иначе (текущее декодированное изображение является неопорным изображением), оно маркируется "неиспользуемым для ссылки".
Когда число изображений в DPB, которые маркированы "необходимыми для вывода" больше, чем sps_max_num_reorder_pics[ HighestTid ] после того, как текущее декодированное изображение было сохранено в DPB, изображение в DPB с наименьшим значением PicOrderCntVal из всех изображений в DPB кадрируется, выводится и маркируется "не являющимся необходимым для вывода".
Примерный вариант осуществления 12
В одном варианте осуществления, модифицируется этап существующего процесса вывода изображения для того, чтобы обеспечить более ранний вывод изображений, см. Фиг. 15.
Модификация обеспечивает решение проблемы с no_output_of_prior_pics_flag, описанной выше по тексту. Решение является аналогичным примерным вариантам осуществления 1-11, но с изменением, что вместо добавления дополнительного процесса вывода, существующий процесс вывода HEVC модифицируется, когда no_output_of_prior_pics_flag равен 1, как показано ниже по тексту.
Способ декодера может содержать и/или декодер может быть сконфигурирован для выполнения следующих упорядоченных этапов согласно варианту осуществления:
1. Анализируется заголовок слайса заголовка первого слайса изображения P.
2. Осуществляется процесс маркирования изображения.
3. Осуществляется процесс вывода изображения, в котором могут быть выведены изображения. Процесс вывода изображения модифицируется, так что если no_output_of_prior_pics_flag равен 1, применяется следующее:
a. Декодер определяет число изображений в DPB, которые маркированы "необходимыми для вывода", и сравнивает это число со значением, которое получается из синтаксических элементов в битовом потоке.
b. Если число изображений в DPB, маркированных "необходимыми для вывода", больше, чем значение, которое получается из синтаксических элементов в битовом потоке, изображение из изображений в DPB, маркированных "необходимыми для вывода", которое является первым в порядке вывода, выводится и маркируется "не являющимся необходимым для вывода".
c. Все оставшиеся изображения в DPB, которые маркированы "необходимыми для вывода", маркируются "не являющимися необходимыми для вывода". Они не выводятся.
4. Декодируется изображение P.
Примерные варианты осуществления 2-12 также применяются к этому примерному варианту осуществления 12.
Примерный вариант осуществления 13
Комбинация примерного варианта осуществления 12 и примерных вариантов осуществления 2, 3, 7, 8 и 9 является предпочтительным вариантом осуществления. Определение этого варианта осуществления в текущей спецификации HEVC (JCTVC-K0030_v3) может привести в результате к следующим изменениям спецификации HEVC в разделе C.3.1, где жирный текст означает добавленный текст:
C.3.1 Удаление изображений из DPB
Удаление изображений из DPB до декодирования текущего изображения (но после анализа заголовка слайса первого слайса текущего изображения) происходит мгновенно во время удаления из CPB первой единицы декодирования единицы n доступа (содержащей текущее изображение) и продолжается следующим образом.
Вызывается процесс декодирования для набора опорных изображений, что точно определено в подпункте 8.3.2.
Если текущее изображение является изображением IDR или BLA, применяется следующее:
1. Когда изображение IDR или BLA не является первым декодированным изображением и значение pic_width_in_luma_samples или pic_height_in_luma_samples или sps_max_dec_pic_buffering[ i ] для какого-либо возможного значения i, полученного из активного набора параметров последовательности, отличается от значения pic_width_in_luma_samples или pic_height_in_luma_samples или sps_max_dec_pic_buffering[ i ], полученного из набора параметров последовательности, который был активным для предшествующего изображения, соответственно, no_output_of_prior_pics_flag подразумевается посредством HRD равным 1, независимо от фактического значения no_output_of_prior_pics_flag.
СЛЕДУЕТ ОТМЕТИТЬ, ЧТО - Реализации декодера должны пытаться обрабатывать изменения размера DPB или изображения более изящно, чем HRD в отношении изменений в pic_width_in_luma_samples, pic_height_in_luma_samples или sps_max_dec_pic_buffering[ i ].
2. Когда no_output_of_prior_pics_flag равен 1 или подразумевается равным 1, применяются следующие упорядоченные этапы:
1. Когда число изображений в DPB, которые маркированы "необходимыми для вывода" больше, чем sps_max_num_reorder_pics[ HighestTid ], изображение в DPB с наименьшим значением PicOrderCntVal из всех изображений в DPB кадрируется, выводится и маркируется "не являющимся необходимым для вывода".
2. Все буферы хранения изображений в DPB выгружаются без вывода изображений, которые они содержат, и заполненность DPB устанавливается на 0.
Все изображения k в DPB, для которых все из следующих условий истинны, удаляются из DPB:
- изображение k маркируется "неиспользуемым для ссылки",
o,dpb
r
- изображение k имеет PicOutputFlag равный 0 или время его вывода из DPB меньше, чем или равно времени удаления из CPB первой единицы декодирования (обозначенной единицей m декодирования) текущего изображения n; то есть, t( k ) <= t( m )
Когда изображение удаляется из DPB, заполненность DPB уменьшается на единицу.
Преимущество вариантов осуществления, раскрытых в этом документе, над уровнем техники, как представлено разделом C.5.1 на страницах 216-217 в JCTVC-K0030_v3 будет описано ниже по тексту со ссылкой на Фиг. 30. Решение уровня техники в JCTVC-K0030_v3 использует параметр sps_max_num_reorder_pics[ TemporalID ] для определения, выводить ли какое-либо изображение. В частности, JCTVC-K0030_v3 утверждает, что когда число изображений в DPB, которые маркированы в качестве необходимых для вывода, больше, чем sps_max_num_reorder_pics[ TemporalID ], тогда процесс выталкивания, точно определенный в подпункте C.5.2.1 вызывается многократно до тех пор пока не опустеет буфер хранения изображений для сохранения текущего декодированного изображения.
Числа, представленные на Фиг. 30, указывают порядок декодирования изображений в видеопоследовательности. Изображения должны быть выведены слева направо, то есть, I0, b5, B3, b6, B2, b7, B4, B8 и P1. Фигура также указывает номер уровня, то есть, TemporalId, для различных уровней и параметр sps_max_num_reorder_pics для каждого уровня. Если будет осуществляться выталкивание или вывод изображений в связи с анализом заголовков слайса с использованием sps_max_num_reorder_pics[ TemporalID ], как предложено в JCTVC-K0030_v3, тогда процесс вывода будет происходить в соответствии со следующим:
Изображение
Еще не выведено
sps_max_num_reorder_pics
Действие
I0
-
0
Нет действия
B1
I0
0
Вывод I0
B2
B1
1
Нет действия
B3
B1 B2
2
Нет действия
B4
B1 B2 B3
2
Вывод B3
Однако, вывод изображения B3 при обработке изображения B4 является неверным, поскольку изображение b5 должно быть выведено раньше, чем изображение B3.
При использовании варианта осуществления, раскрытого в этом документе, с выталкиванием, то есть, выводом, после декодирования текущего изображения и с использованием HighestTid=3, тогда достигается следующий результат.
Изображение
Еще не выведено
sps_max_num_reorder_pics
Действие
I0
I0
4
Нет действия
B1
I0 B2
4
Нет действия
B2
I0 B1 B2
4
Нет действия
B3
I0 B1 B2 B3
4
Нет действия
B4
I0 B1 B2 B3 B4
4
Вывод I0
B5
B1 B2 B3 B4 b5
4
Вывод b5
Если использовать временное масштабирование и декодировать только уровни 0-2, тогда HighestTid будет равен 2 и согласно варианту осуществления достигается следующий результат:
Изображение
Еще не выведено
sps_max_num_reorder_pics
Действие
I0
I0
2
Нет действия
B1
I0 B1
2
Нет действия
B2
I0 B1 B2
2
Вывод I0
B3
B1 B2 B3
2
Вывод B3
B4
B1 B2 B4
2
Вывод B2
Следовательно, варианты осуществления, раскрытые в этом документе, способны выводить изображения в правильном порядке в примере, проиллюстрированном на Фиг. 30, тогда как решение предшествующего уровня техники в JCTVC-K0030_v3 не обеспечивает правильного порядка вывода при вызове процесса выталкивания после анализа заголовков слайса.
Этапы, функции, процедуры, модули и/или блоки, описанные выше по тексту в связи с Фиг. 8-15 могут быть реализованы в аппаратном обеспечении с использованием любой традиционной технологии, такой как технология схем на дискретных компонентах или интегральных схем, в том числе электронная схема общего назначения и специализированная схема.
Конкретные примеры включают в себя один или более надлежащих сконфигурированных цифровых сигнальных процессоров и другие известные электронные схемы, например, взаимосвязанные дискретные логические вентили для выполнения специализированной функции или специализированные интегральные схемы (ASIC).
В качестве альтернативы, по меньшей мере некоторые из этапов, функций, процедур, модулей и/или блоков, описанных выше по тексту в связи с Фиг. 8-15 могут быть реализованы в программном обеспечении, таком как компьютерная программа, для исполнения подходящей схемой обработки, включающей в себя один или более процессоров.
Процессор способен исполнять инструкций программного обеспечения, содержащиеся в компьютерной программе, хранимой в компьютерном программном продукте, например, в форме элементов памяти. Соответствующий компьютерный программный продукт может быть памятью, являющейся любой комбинацией оперативного запоминающего устройства (RAM) и постоянного запоминающего устройства (ROM). Соответствующая память содержит устройство постоянного хранения, которое, например, может быть любым единым или комбинацией из магнитной памяти, оптической памяти, полупроводниковой памяти или даже удаленно монтируемой памяти.
Блок-схема последовательности операций или схемы, представленные выше по тексту и показанные на Фиг. 8-15, следовательно могут быть рассмотрены как блок-схема или блок-схемы последовательности операций компьютера, при выполнении одним или более процессорами. Соответствующий аппарат может быть определен как группа функциональных модулей, где каждый этап, выполняемый процессором, соответствует функциональному модулю. В этом случае, функциональные модули реализуются в качестве компьютерной программы, работающей на процессоре.
Примеры схем обработки включают в себя, но без ограничения упомянутым, один или более микропроцессоров, один или более процессоров цифровых сигналов (DSP), один или более центральных процессоров (CPU), аппаратное обеспечение ускорения обработки видео и/или любую подходящую программируемую логическую схему, такую как одна или более программируемых пользователем вентильных матриц (FPGA) или один или более программируемых логических контроллеров (PLC).
Также следует понимать, что возможно повторно использовать основные возможности обработки любого традиционного устройства или узла, в котором реализована предлагаемая технология. Также возможно заново использовать существующее программное обеспечение, например посредством перепрограммирования существующего программного обеспечения или добавления новых компонентов программного обеспечения.
Согласно аспекту, обеспечивается декодер, сконфигурированный для выполнения способа согласно любому из вариантов осуществления, раскрытых выше по тексту. Декодер сконфигурирован для определения, после того как текущее изображение битового потока, представляющего изображения видеопоследовательности, было декодировано и сохранено в DPB, некоторого числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Декодер также сконфигурирован для сравнения числа со значением sps_max_num_reorder_pics[ HighestTid ]. Декодер дополнительно сконфигурирован для вывода изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, если число больше, чем значение. Декодер дополнительно сконфигурирован для маркирования (вывода) изображения в качестве не являющегося необходимым для вывода, если число больше, чем значение.
Декодер 100 содержит, в варианте осуществления, процессор 110, сконфигурированный для выполнения этапов способа, ранее раскрытых в этом документе, см. Фиг. 8 и необязательно Фиг. 9, 10 и 12-14. Декодер 100 также может содержать память 120, соединенную с процессором 110, см. Фиг. 16.
Фиг. 16 представляет собой схематическую блок-схему декодера 100 согласно варианту осуществления. Декодер 100 сконфигурирован для приема битового потока 10, представляющего изображения видеопоследовательности, и декодирования битового потока 10. Декодер 100 содержит процессор 110 и память 120, содержащую DPB 125. Процессор 110 сконфигурирован для определения, после того как текущее изображение было декодировано и сохранено в DPB 125, числа изображений в DPB 125, которые маркированы в качестве необходимых для вывода. Процессор 110 также сконфигурирован для сравнения числа со значением sps_max_num_reorder_pics[ HighestTid ] 14. Процессор 110 дополнительно сконфигурирован для вывода изображения, которое является первым изображением в порядке вывода, из изображений в DPB 125, которые маркированы в качестве необходимых для вывода, если число больше, чем значение. Процессор 110 дополнительно сконфигурирован для маркирования изображения в качестве не являющегося необходимым для вывода, если число больше, чем значение.
На Фиг. 16, декодер 100 был проиллюстрирован как содержащий процессор 110. Этот процессор 110 может быть реализован в качестве одного процессора или множества процессоров, как например, в форме схемы обработки.
Фиг. 16 посредством этого иллюстрирует компьютерную реализацию декодера 100. В этом конкретном примере, по меньшей мере некоторые из этапов, функций, процедур, модулей и/или блоков, описанных выше по тексту, реализуются в компьютерной программе, которая загружается в память 120 для исполнения процессором 110. Процессор 110 и память 120 взаимосвязаны друг с другом для обеспечения возможности нормального исполнения программного обеспечения. Необязательное устройство ввода/вывода (не показано) также может быть взаимосвязано с процессором 110 и/или памятью 120 для обеспечения возможности ввода битового потока 10 кодированных изображений и вывода декодированных изображений.
Термин "компьютер" должен быть интерпретирован в общем смысле как любая система, устройство или аппарат, способный исполнять программный код или инструкции компьютерной программы для выполнения конкретной обработки, определения или вычислительной задачи.
В варианте осуществления, процессор 110 предпочтительно сконфигурирован для анализа заголовка 12 слайса текущего изображения, которое должно быть декодировано, видеопоследовательности. Процессор 110 также сконфигурирован для определения RPS для текущего изображения на основании проанализированного заголовка 12 слайса. Процессор 110 дополнительно сконфигурирован для маркирования всех изображений в DPB 125, которые не представлены в RPS, в качестве неиспользуемых для ссылки. Процессор 110 дополнительно сконфигурирован для вывода нуля, одного или множества изображений, маркированных в качестве необходимых для вывода, из изображений в DPB 125, и маркирования нуля, одного или множества изображений в качестве не являющихся необходимыми для вывода. Процессор 110 также предпочтительно сконфигурирован для выгрузки или удаления, из DPB 125, какого-либо изображения, маркированного в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB 125. Процессор 110 дополнительно сконфигурирован для декодирования текущего изображения, предпочтительно с использованием данных 16 полезной видеонагрузки, обеспеченных в кодированной форме. В этом варианте осуществления, процессор 110 сконфигурирован для определения числа изображений, сравнения числа, вывода изображения и маркирования изображения после декодирования текущего изображения.
В варианте осуществления, процессор 110 необязательно сконфигурирован для анализа заголовка 12 слайса изображения произвольного доступа видеопоследовательности для получения значения флага no_output_prior_pics_flag. В таком случае, процессор 110 необязательно сконфигурирован для определения числа, сравнения числа, вывода изображения и маркирования изображения, если (и только если) значение флага no_output_prior_pics_flag равно единице.
Другой аспект вариантов осуществления относится к декодеру, сконфигурированному для анализа заголовка слайса текущего изображения, которое должно быть декодировано, видеопоследовательности. Декодер также сконфигурирован для определения RPS для текущего изображения на основании проанализированного заголовка слайса. Декодер дополнительно сконфигурирован для маркирования всех изображений в DPB, которые не представлены в RPS, в качестве неиспользуемых для ссылки. Декодер дополнительно сконфигурирован для вывода нуля, одного или множества изображений, маркированных в качестве необходимых для вывода, из изображений в DPB, и маркирования нуля, одного или множества изображений в качестве не являющихся необходимыми для вывода. Декодер также предпочтительно сконфигурирован для выгрузки или удаления, из DPB, какого-либо изображения, маркированного в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB. Декодер дополнительно сконфигурирован для декодирования текущего изображения. В этом варианте осуществления, декодер сконфигурирован для определения некоторого числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Декодер также сконфигурирован для сравнения числа со значением, полученным из по меньшей мере одного синтаксического элемента, представленного в битовом потоке. Декодер дополнительно сконфигурирован для вывода изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, если число больше, чем значение. Декодер дополнительно сконфигурирован для маркирования изображения в качестве не являющегося необходимым для вывода, если число больше, чем значение. Это означает, что в этом варианте осуществления, декодер сконфигурирован для определения числа изображений, сравнения числа, вывода изображения и маркирования изображения после декодирования текущего изображения.
Кодер 100 содержит, в варианте осуществления, процессор 110, сконфигурированный для выполнения этапов способа, ранее раскрытых в этом документе, см. Фиг. 11 и необязательно Фиг. 12, 13 и 15. Кодер 100 также может содержать память 120, соединенную с процессором 110, см. Фиг. 16.
В этом варианте осуществления, декодер 100 поэтому содержит процессор 110 и память 120, содержащую DPB 125. Процессор 110 сконфигурирован для анализа заголовка 12 слайса текущего изображения, которое должно быть декодировано, видеопоследовательности. Процессор 110 также сконфигурирован для определения RPS для текущего изображения на основании проанализированного заголовка 12 слайса. Процессор 110 дополнительно сконфигурирован для маркирования всех изображений в DPB 125, которые не представлены в RPS, в качестве неиспользуемых для ссылки. Процессор 110 дополнительно сконфигурирован для вывода нуля, одного или множества изображений, маркированных в качестве необходимых для вывода, из изображений в DPB 125, и маркирования нуля, одного или множества изображений в качестве не являющихся необходимыми для вывода. Процессор 110 также предпочтительно сконфигурирован для выгрузки или удаления, из DPB 125, какого-либо изображения, маркированного в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB 125. Процессор 110 дополнительно сконфигурирован для декодирования текущего изображения. В этом варианте осуществления, процессор 110 сконфигурирован для определения числа изображений в DPB 125, которые маркированы в качестве необходимых для вывода. Процессор 110 также сконфигурирован для сравнения числа со значением, полученным из по меньшей мере одного синтаксического элемента 14, представленного в битовом потоке 10. Процессор 110 дополнительно сконфигурирован для вывода изображения, которое является первым изображением в порядке вывода, из изображений в DPB 125, которые маркированы в качестве необходимых для вывода, если число больше, чем значение. Процессор 110 дополнительно сконфигурирован для маркирования изображения в качестве не являющегося необходимым для вывода, если число больше, чем значение. Это означает, что в этом варианте осуществления, процессор 110 сконфигурирован для определения числа изображений, сравнения числа, вывода изображения и маркирования изображения после декодирования текущего изображения.
В варианте осуществления, процессор 110 предпочтительно сконфигурирован для сохранения декодированного текущего изображения в DPB 125 и маркирования декодированного текущего изображения в качестве необходимого для вывода или в качестве не являющегося необходимым для вывода, как ранее раскрыто в этом документе.
Процессор 110, в варианте осуществления реализации, предпочтительно сконфигурирован для сравнения числа со значением sps_max_num_reorder_pics[ HighestTid ]. В этом варианте осуществления реализации, процессор 110 сконфигурирован для вывода изображения в DPB 125 с наименьшим значением PicOrderCntVal из всех изображений в DPB 125, которые маркированы в качестве необходимых для вывода, если число больше, чем значение sps_max_num_reorder_pics[ HighestTid ].
В другом варианте осуществления реализации, текущее изображение является изображением произвольного доступа видеопоследовательности. В таком случае, процессор 110 необязательно сконфигурирован для анализа заголовка 12 слайса изображения произвольного доступа для получения значения флага no_output_prior_pics_flag. Тогда процессор 110 необязательно сконфигурирован для определения числа, сравнения числа, вывода изображения и маркирования изображения, если значение флага no_output_prior_pics_flag равно единице.
Если видеопоследовательность является многоуровневой видеопоследовательностью, содержащей множество уровней изображений, где каждый уровень из упомянутого множества уровней имеет ассоциированный синтаксический элемент, задающий соответствующее значение, тогда процессор 110 предпочтительно сконфигурирован для выбора значения, полученного из синтаксического элемента, предпочтительно sps_max_num_reorder_pics, ассоциированного с наивысшим уровнем, который декодируется декодером 100, упомянутого множества уровней.
В варианте осуществления, процессор 110 предпочтительно сконфигурирован для вывода изображения с наименьшим значением счета порядка изображения из изображений в DPB 125, которые маркированы в качестве необходимых для вывода, если число больше, чем значение.
В варианте осуществления, процессор 110 предпочтительно сконфигурирован для вывода изображения до анализа заголовка слайса следующего изображения, которое должно быть декодировано, видеопоследовательности.
Фиг. 17 является схематической блок-схемой другого примера реализации декодера 200. Этот пример в частности является подходящим для аппаратной реализации декодера 200. Декодер 200 содержит узел 210 ввода, сконфигурированный для приема битового потока, представляющего изображения видеопоследовательности, и сохранения битового потока в подсоединенной памяти 220, содержащей DPB 225. Декодер также содержит узел 230 определения числа, соединенный с памятью 220. Этот узел 230 определения числа сконфигурирован для определения, после того как текущее изображение было декодировано и сохранено в DPB 225, числа изображений в DPB 225, которые маркированы в качестве необходимых для вывода. Средство 240 сравнения соединено с узлом 230 определения числа и сконфигурировано для сравнения числа со значением sps_max_num_reorder_pics[ HighestTid ]. Декодер 200 также содержит узел 250 вывода, соединенный со средством 240 сравнения и предпочтительно с памятью 220. Узел 250 вывода сконфигурирован для вывода изображения, которое является первым изображением в порядке вывода, из изображений в DPB 225, которые маркированы в качестве необходимых для вывода, если число больше, чем значение. Узел 260 маркирования соединен с памятью 220 и сконфигурирован для маркирования изображения в качестве не являющегося необходимым для вывода, если число больше, чем значение.
Средство 240 сравнения предпочтительно соединено с узлом 230 определения числа для того, чтобы принимать число изображений, определяемое узлом 230 определения числа. Соответственно, узел 250 вывода предпочтительно соединен со средством 240 сравнения для того, чтобы принимать информацию, больше ли определенное число, чем значение sps_max_num_reorder_pics[ HighestTid ], от средства 240 сравнения. Узел 260 маркирования предпочтительно соединен с узлом 250 вывода для того, чтобы принимать информацию о том, какое изображение было выведено узлом 250 вывода.
Фиг. 18 является схематической блок-схемой еще одного примера реализации декодера 300. Этот пример в частности является подходящим для аппаратной реализации декодера 300. Декодер 300 содержит узел 310 ввода, сконфигурированный для приема битового потока, представляющего изображения видеопоследовательности, и сохранения битового потока в подсоединенной памяти 320, содержащей DPB 325. Узел 370 анализа, соединенный с памятью 320, сконфигурирован для анализа заголовка слайса текущего изображения, которое должно быть декодировано, видеопоследовательности. Декодер 300 содержит узел 380 определения набора опорных изображений, соединенный с узлом 370 анализа и предпочтительно с памятью 320. Узел 380 определения набора опорных изображений сконфигурирован для определения RPS для текущего изображения на основании проанализированного заголовка слайса. Узел 360 маркирования соединен с памятью 320 и сконфигурирован для маркирования всех изображений в DPB 325, которые не представлены в RPS, в качестве неиспользуемых для ссылки. Декодер 300 также содержит узел 350 вывода, соединенный с памятью 320 и предпочтительно со средством 340 сравнения. Узел 350 вывода сконфигурирован для вывода нуля, одного или множества изображений, маркированных в качестве необходимых для вывода, из изображений в DPB 325, при этом узел 360 маркирования сконфигурирован для маркирования упомянутых нуля, одного или множества изображений в качестве не являющихся необходимыми для вывода. Узел 390 выгрузки изображения соединен с памятью 320 и сконфигурирован для выгрузки или удаления, из DPB 325, какого-либо изображения, маркированного в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB 325. Узел 305 декодирования соединен с памятью 320 и сконфигурирован для декодирования текущего изображения.
Декодер 300 с Фиг. 18 также содержит узел 330 определения числа, соединенный с памятью 320 и также предпочтительно с узлом 370 анализа и средством 340 сравнения. Узел 330 определения числа сконфигурирован для определения числа изображений в DPB 325, которые маркированы в качестве необходимых для вывода. Ранее упомянутое средство 340 сравнения сконфигурировано для сравнения числа со значением, полученным из по меньшей мере одного синтаксического элемента, представленного в битовом потоке. В этом варианте осуществления узел 350 вывода также сконфигурирован для вывода изображения, которое является первым изображением в порядке вывода, из изображений в DPB 325, которые маркированы в качестве необходимых для вывода, если число больше, чем значение. Узел 360 маркирования также сконфигурирован для маркирования изображения в качестве не являющегося необходимым для вывода, если число больше, чем значение.
В предпочтительном варианте осуществления, узел 330 определения числа сконфигурирован для определения числа изображений, средство 340 сравнения сконфигурировано для сравнения числа, узел 350 вывода сконфигурирован для вывода изображения и узел 360 маркирования сконфигурирован для маркирования изображения после того как узел 305 декодирования декодировал текущее изображение.
Узел 380 определения набора опорных изображений предпочтительно соединен с узлом 370 анализа для того, чтобы принимать информацию, присутствующую в проанализированном заголовке слайса и используемую для того, чтобы определять RPS. Узел 380 определения набора опорных изображений также предпочтительно соединен с узлом 360 маркирования для того, чтобы обеспечивать RPS или информацию изображений, перечисленных в RPS, в узел 360 маркирования. Средство 340 сравнения предпочтительно соединено с узлом 330 определения числа для того, чтобы принимать число изображений, определяемое узлом 330 определения числа. Соответственно, узел 350 вывода предпочтительно соединен со средством 340 сравнения для того, чтобы принимать информацию, больше ли определенное число, чем значение, от средства 340 сравнения. Узел 360 маркирования предпочтительно соединен с узлом 350 вывода для того, чтобы принимать информацию о том, какое изображение было выведено узлом 350 вывода.
Как указано выше по тексту, декодер может в качестве альтернативы быть определен в качестве группы функциональных модулей, где функциональные модули реализованы в качестве компьютерной программы, работающей на процессоре.
Фиг. 16 представляет собой схематическую блок-схему, иллюстрирующую пример декодера 100, содержащего процессор 110 и ассоциированную память 120.
Компьютерная программа, находящаяся в памяти 120, таким образом, может быть организована как надлежащие функциональные модули, сконфигурированные для выполнения, при исполнении процессором 110, по меньшей мере части этапов и/или задач, описанных выше по тексту. Пример таких функциональных модулей, проиллюстрирован на Фиг. 19. Фиг. 19 посредством этого представляет собой схематическую блок-схему, иллюстрирующую пример декодера 400, содержащего группу функциональных модулей 410-440. Эти модули содержат модуль 410 определения числа для определения, после того как текущее изображение битового потока, представляющего изображения видеопоследовательности, было декодировано и сохранено в DPB, некоторого числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Декодер 400 также содержит модуль 420 сравнения для сравнения числа, предпочтительно по мере приема от модуля 410 определения числа, со значением sps_max_num_reorder_pics[ HighestTid ]. Модуль 430 вывода декодера 400 предназначен для вывода изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, если число больше, чем значение, что необязательно, но предпочтительно, определяется модулем 420 сравнения. Декодер 400 дополнительно содержит модуль 440 маркирования для маркирования изображения в качестве не являющегося необходимым для вывода, если число больше, чем значение, что необязательно, но предпочтительно, определяется модулем 420 сравнения.
Фиг. 20 представляет собой схематическую блок-схему, иллюстрирующую другой пример декодера 500 с группой функциональных модулей 510-580. Декодер 500 содержит модуль 510 анализа для анализа заголовка слайса текущего изображения, которое должно быть декодировано, битового потока, представляющего изображения видеопоследовательности. Модуль 520 определения набора опорных изображений декодера 500 предназначен для определения RPS для текущего изображения на основании заголовка слайса, предпочтительно проанализированного модулем 510 анализа. Декодер 500 также содержит модуль 530 маркирования для маркирования всех изображений в DPB, которые не представлены в RPS, необязательно, но предпочтительно, определенном модулем 520 определения набора опорных изображений, в качестве неиспользуемых для ссылки и модуль 540 вывода для вывода нуля, одного или множества изображений, маркированных в качестве необходимых для вывода, из изображений в DPB. В варианте осуществления, модуль 530 маркирования дополнительно предназначен для маркирования упомянутых нуля, одного или множества изображений в качестве не являющихся необходимыми для вывода. Декодер 500 дополнительно содержит модуль 550 выгрузки для выгрузки или удаления, из DPB, какого-либо изображения, маркированного в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB, и модуль 560 декодирования для декодирования текущего изображения. Декодер 500 дополнительно содержит модуль 560 определения числа для определения числа изображений в DPB, которые маркированы в качестве необходимых для вывода, и модуль 570 сравнения для сравнения числа, необязательно, но предпочтительно определенного модулем 560 определения числа, со значением, полученным из по меньшей мере одного синтаксического элемента, представленного в битовом потоке.
В варианте осуществления, модуль 540 вывода дополнительно предназначен для вывода изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, если число больше, чем значение, что необязательно, но предпочтительно определяется модулем 570 сравнения. Модуль 530 маркирования предназначен дополнительно для маркирования изображения в качестве не являющегося необходимым для вывода, если число больше, чем значение, что необязательно, но предпочтительно определяется модулем 570 сравнения.
В варианте осуществления, модуль 570 определения числа, определяющий число изображений, модуль 580 сравнения, сравнивающий число, модуль 540 вывода, выводящий изображение, и модуль 530 маркирования, маркирующий упомянутое изображение, после модуля 560 декодирования, декодирующего текущее изображение.
Варианты осуществления декодера 400, 500, как показано на Фиг. 19 и 20, могут необязательно также быть пригодными для выполнения этих различных вариантов осуществления реализации, как раскрыто выше по тексту этого документа, например, со ссылкой на Фиг. 9, 10, 12-15.
В варианте осуществления, компьютерная программа содержит программный код, который при исполнении процессором 110, см. Фиг. 16, или компьютером, побуждает процессор 110 или компьютер выполнять этапы, функции, процедуры и/или блоки, описанные выше по тексту и показанные на Фиг. 8-15.
Программное обеспечение или компьютерная программа могут быть реализованы как компьютерный программный продукт, который обычно переносится или сохраняется на считываемом компьютером носителе. Считываемый компьютером носитель может включать в себя одно или более съемных или несъемных запоминающих устройств, включающих в себя, но без ограничения упомянутым, ROM, RAM, компакт-диск (CD), универсальный цифровой диск (DVD), память с подключением через универсальную последовательную шину (USB), устройство хранения типа жесткого диска (HDD), флеш-память или любое другое традиционное запоминающее устройство. Компьютерная программа таким образом может быть загружена в операционную память компьютера или эквивалентного устройства обработки для исполнения его схемой обработки.
Декодер 100, 200, 300, 400, 500, показанный на Фиг. 16-20, предпочтительно является декодером совместимым с HEVC. Однако необходимо отметить, что варианты осуществления не ограничиваются HEVC.
Согласно аспекту, обеспечивается способ, выполняемый кодером. В способе, кодер определяет число изображений в DPB, которые маркированы в качестве необходимых для вывода, и сравнивает это число со значением, которое представлено синтаксическими элементами в битовом потоке. Если число изображений в DPB, маркированных в качестве необходимых для вывода, больше, чем значение, которое получается из синтаксических элементов в битовом потоке, модифицированный процесс маркирования вывода выполняется или изображение из изображений в DPB, маркированных в качестве необходимых для вывода, которое является первым изображением в порядке вывода, маркируется в качестве не являющегося необходимым для вывода.
Фиг. 21 представляет собой блок-схему последовательности операций способа, выполняемого кодером, согласно варианту осуществления. Способ содержит определение, на этапе S60 и после того как текущее изображение было декодировано и сохранено в DPB, числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Следующий этап S61 содержит сравнение числа со значением sps_max_num_reorder_pics[ HighestTid ], при этом HighestTid точно определяет наивысший уровень, который декодируется кодером видеопоследовательности. Если число больше, чем значение, способ продолжается на этапе S62, который содержит маркирование изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, в качестве не являющегося необходимым для вывода.
Способ, выполняемый в кодере на Фиг. 21, по существу является аналогичным соответствующему способу, выполняемому в соответствующем декодере, см. Фиг. 8. Хотя различие заключается в том, что кодер, в общем не выводит какие-либо изображения, что выполняется в декодере. Следовательно, варианту осуществления способа, показанного на Фиг. 21, предпочтительно недостает этапа S3 вывода соответствующего способа, выполняемого декодером, с Фиг. 8.
В варианте осуществления, когда текущее изображение было декодировано, предпочтительно произошло два маркирования, одно для вывода и одно для ссылки. Следовательно, в варианте осуществления эти маркирования предпочтительно осуществляются раньше, чем этап S60, поскольку это влияет на число изображений, которые маркированы в качестве необходимых для вывода. Если текущее изображение имеет PicOutputFlag=1, текущее изображение также предпочтительно подсчитывается.
В варианте осуществления, если число не больше, чем значение, что определено в сравнении на этапе S61, способ предпочтительно завершается и никакое изображение не маркируется. Таким образом, в этом случае, этап S62 пропускается и не выполняется, см. пунктирную линию справа.
В варианте осуществления, этапы S61-S62 с Фиг. 21 могут быть выполнены только один раз после того как текущее изображение было декодировано и сохранено в DPB. В качестве альтернативы, цикл, сформированный этапами S61-S62, см. пунктирную линию слева, может быть выполнен до тех пор, когда число изображений в DPB, которые маркированы в качестве необходимых для вывода, уже не больше sps_max_num_reorder_pics[ HighestTid ]. Каждый раз, когда выполняется цикл этапов S61-S62, число изображений в DPB, которые маркированы в качестве необходимых для вывода, сокращается на единицу посредством маркирования на этапе S62.
Фиг. 22 представляет собой блок-схему последовательности операций способа, выполняемого кодером, согласно другому варианту осуществления. Способ содержит маркирование, на этапе S70, всех изображений в DPB, которые не представлены в RPS для текущего изображения набора видеопоследовательности, в качестве неиспользуемых для ссылки. Способ также содержит маркирование, на этапе S71, нуля, одного или множества изображений, маркированных в качестве необходимых для вывода, из изображений в DPB, в качестве не являющихся необходимыми для вывода. Любое изображение, маркированное в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB, выгружается или удаляется на этапе S72 из DPB. Следующий этап S73 содержит декодирование текущего изображения. Способ дополнительно содержит определение, на этапе S74, числа изображений в DPB, которые маркированы в качестве необходимых для вывода, и сравнение, на этапе S75, числа со значением, полученным из по меньшей мере одного заданного синтаксического элемента. Если это число больше, чем значение, способ продолжается на этапе S76, который содержит маркирование изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, в качестве не являющегося необходимым для вывода. В предпочтительном варианте осуществления, определение числа изображений на этапе S74, сравнение числа на этапе S75 и маркирование изображения на этапе S76 выполняются после декодирования текущего изображения на этапе S73.
Способ, выполняемый в кодере, с Фиг. 22, по существу является аналогичным соответствующему способу, выполняемому в соответствующем декодере, см. Фиг. 11. Хотя различие заключается в том, что кодер, в общем, не выводит какие-либо изображения, что выполняется в декодере. Следовательно, варианту осуществления способа, показанного на Фиг. 22, предпочтительно недостает этапов S33 и S38 вывода соответствующего способа, выполняемого декодером, с Фиг. 11. Кроме того, в способе с Фиг. 22 кодер не принимает какой-либо битовый поток и вследствие этого нет необходимости в анализе заголовка слайса для того, чтобы получать информацию для определения RPS для текущего изображения. Для явного сравнения, кодер сам генерирует и определяет RPS для текущего изображения. Следовательно, этапы S30 и S31 соответствующего способа, выполняемого декодером на Фиг. 11, типично не выполняются кодером.
В варианте осуществления, если число не больше, чем значение, определенное в сравнении на этапе S75, способ предпочтительно завершается и никакое изображение не маркируется. Таким образом, в таком случае, этап S76 пропускается и не выполняется, см. пунктирную линию справа.
В варианте осуществления, этапы S75-S76 могут быть выполнены только один раз после того как текущее изображение было декодировано и сохранено в DPB. В качестве альтернативы, цикл, сформированный этапами S75-S76, см. пунктирную линию слева, может быть выполнен до тех пор, когда число изображений в DPB, которые маркированы в качестве необходимых для вывода, уже не больше, чем значение. Каждый раз, когда выполняется цикл этапов S75-S76, число изображений в DPB, которые маркированы в качестве необходимых для вывода, сокращается на единицу посредством маркирования на этапе S76.
Варианты осуществления, рассмотренные выше по тексту в связи со способами, выполняемыми декодером, также могут быть выполнены кодером.
Например, способ кодера может содержать и/или кодер может быть сконфигурирован для выполнения следующих упорядоченных этапов согласно варианту осуществления:
1 Кодируется изображение P.
2 После того как изображение P кодировано, кодер определяет число изображений в DPB, которые маркированы "необходимыми для вывода", и сравнивает это число со значением, которое может быть получено из синтаксических элементов в битовом потоке. Следует отметить, что это относится к DPB в кодере. Статус DPB в кодере и декодере является одним и тем же. Сравнение в декодере будет точно таким же. Спецификация HEVC точно определяет, что будет делать декодер, но кодер должен следить за этим, то есть, кодер делает то, что будет делать декодер.
3 Если число изображений в DPB, маркированных "необходимыми для вывода", больше, чем значение, которое может быть получено из синтаксических элементов в битовом потоке, изображение из изображений в DPB, маркированных "необходимыми для вывода", которое является первым в порядке вывода, маркируется "не являющимся необходимым для вывода". Изображение необязательно может быть выведено из кодера.
4 Кодируется следующее изображение Q.
Этапы, функции, процедуры, модули и/или блоки, описанные выше по тексту в связи с Фиг. 21 и 22, могут быть реализованы в аппаратном обеспечении с использованием любой традиционной технологии, такой как технология схем на дискретных компонентах или интегральных схем, в том числе электронная схема общего назначения и специализированная схема.
Конкретные примеры включают в себя один или более надлежащих сконфигурированных цифровых сигнальных процессоров и другие известные электронные схемы, например, взаимосвязанные дискретные логические вентили для выполнения специализированной функции или ASIC.
В качестве альтернативы, по меньшей мере некоторые из этапов, функций, процедур, модулей и/или блоков, описанных выше по тексту в связи с Фиг. 21 и 22, могут быть реализованы в программном обеспечении, таком как компьютерная программа, для исполнения подходящей схемой обработки, включающей в себя один или более процессоров.
Процессор способен на исполнение инструкций программного обеспечения, содержащихся в компьютерной программе, сохраненной в компьютерном программном продукте, например, в форме элементов памяти. Соответствующий компьютерный программный продукт может быть памятью, являющейся любой комбинацией RAM и ROM. Соответствующая память содержит устройство постоянного хранения, которое, например, может быть любым единым или комбинацией из магнитной памяти, оптической памяти, полупроводниковой памяти или даже удаленно монтируемой памяти.
Блок-схема последовательности операций или схемы, представленные выше по тексту и показанные на Фиг. 21 и 22, следовательно, могут быть рассмотрены как блок-схема или блок-схемы последовательности операций компьютера, при выполнении одним или более процессорами. Соответствующий аппарат может быть определен как группа функциональных модулей, где каждый этап, выполняемый процессором, соответствует функциональному модулю. В этом случае, функциональные модули реализуются в качестве компьютерной программы, работающей на процессоре.
Примеры схем обработки включают в себя, но без ограничения упомянутым, один или более микропроцессоров, один или более DSP, один или более CPU, аппаратное обеспечение ускорения обработки видео и/или какая-либо подходящая программируемая логическая схема, такая как одна или более FPGA или одна или более PLC.
Также следует понимать, что возможно повторно использовать основные возможности обработки любого традиционного устройства или узла, в котором реализуется предлагаемая технология. Также возможно заново использовать существующее программное обеспечение, например, посредством перепрограммирования существующего программного обеспечения или добавления новых компонентов программного обеспечения.
Согласно аспекту, обеспечивается кодер, сконфигурированный для выполнения способа. Кодер сконфигурирован для определения, после того как текущее изображение было декодировано и сохранено в DPB, числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Кодер также сконфигурирован для сравнения числа со значением sps_max_num_reorder_pics[ HighestTid ]. Кодер дополнительно сконфигурирован для маркирования изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, в качестве не являющегося необходимым для вывода, если число больше, чем значение.
Кодер 600 содержит, в варианте осуществления, процессор 610, сконфигурированный для выполнения этапов способа, ранее раскрытых в этом документе, см. Фиг. 21. Декодер 600 также может содержать память 620, соединенную с процессором 610, см. Фиг. 23.
Фиг. 23 представляет собой схематическую блок-схему кодера 600 согласно варианту осуществления. Кодер 600 сконфигурирован для кодирования изображений видеопоследовательности в битовый поток 10. Кодер 600 содержит процессор 610 и память 620. Память 620 содержит DPB 625. В варианте осуществления, процессор 610 сконфигурирован для определения, после того как текущее изображение было декодировано и сохранено в DPB 625, числа изображений в DPB 625, которые маркированы в качестве необходимых для вывода. Процессор 610 также сконфигурирован для сравнения числа со значением sps_max_num_reorder_pics[ HighestTid ]. Процессор 610 дополнительно сконфигурирован для маркирования изображения, которое является первым изображением в порядке вывода, из изображений в DPB 625, которые маркированы в качестве необходимых для вывода, в качестве не являющегося необходимым для вывода, если число больше, чем значение.
На Фиг. 23, кодер 600 был проиллюстрирован как содержащий процессор 610. Этот процессор 610 может быть реализован в качестве одного процессора или нескольких процессоров, как например, в форме схемы обработки.
Фиг. 23 посредством этого иллюстрирует компьютерную реализацию кодера 600. В этом конкретном примере, по меньшей мере некоторые из этапов, функций, процедур, модулей и/или блоков, описанных выше по тексту, реализуются в компьютерной программе, которая загружается в память 620 для исполнения процессором 610. Процессор 610 и память 620 взаимосвязаны друг с другом для обеспечения возможности нормального исполнения программного обеспечения. Необязательное устройство ввода/вывода (не показано) также может быть взаимосвязано с процессором 610 и/или памятью 620 для обеспечения возможности ввода изображений, которые должны быть кодированы, и вывода битового потока 10.
Другой аспект вариантов осуществления относится к кодеру, сконфигурированному для маркирования всех изображений в DPB, которые не представлены в RPS для текущего изображения видеопоследовательности, в качестве неиспользуемых для ссылки. Кодер также сконфигурирован для маркирования нуля, одного или множества изображений, маркированных в качестве необходимых для вывода, из изображений в DPB, в качестве не являющихся необходимыми для вывода, и выгрузки или удаления, из DPB, какого-либо изображения, маркированного в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB. Кодер дополнительно сконфигурирован для декодирования текущего изображения и определения числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Кодер дополнительно сконфигурирован для сравнения числа со значением, полученным из по меньшей мере одного заданного синтаксического элемента, и маркирования изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, в качестве не являющегося необходимым для вывода, если число больше, чем значение. В варианте осуществления, кодер сконфигурирован для определения числа изображений, сравнения числа и маркирования изображения после декодирования текущего изображения.
Кодер 600 содержит, в варианте осуществления, процессор 610, сконфигурированный для выполнения этапов способа, ранее раскрытых в этом документе, см. Фиг. 22. Декодер 600 также может содержать память 620, соединенную с процессором 610, смотреть Фиг. 23.
Фиг. 23 представляет собой схематическую блок-схему кодера 600 согласно варианту осуществления. Кодер 600 сконфигурирован для кодирования изображений видеопоследовательности в битовый поток 10. Кодер 600 содержит процессор 610 и память 620. Память 620 содержит DPB 625. В варианте осуществления, процессор 610, сконфигурированный для маркирования всех изображений в DPB 625, которые не представлены в RPS для текущего изображения видеопоследовательности, в качестве неиспользуемых для ссылки. Процессор 610 также сконфигурирован для маркирования нуля, одного или множества изображений, маркированных в качестве необходимых для вывода, из изображений в DPB 625 в качестве не являющихся необходимыми для вывода. Процессор 610 дополнительно сконфигурирован для выгрузки или удаления, из DPB 625, какого-либо изображения, маркированного в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB 625. В этом варианте осуществления, процессор 610 также сконфигурирован для декодирования текущего изображения и определения числа изображений в DPB 625, которые маркированы в качестве необходимых для вывода. Процессор 610 дополнительно сконфигурирован для сравнения числа со значением, полученным из по меньшей мере одного заданного синтаксического элемента. Процессор 610 дополнительно сконфигурирован для маркирования изображения, которое является первым изображением в порядке вывода, из изображений в DPB 625, которые маркированы в качестве необходимых для вывода, в качестве не являющегося необходимым для вывода, если число больше, чем значение. В этом варианте осуществления, процессор 610 сконфигурирован для определения числа изображений, сравнения числа и маркирования изображения после декодирования текущего изображения.
Фиг. 24 представляет собой схематическую блок-схему другого примера реализации кодера 700. Этот пример в частности является подходящим для аппаратной реализации кодера 700. Кодер 700 содержит узел 730 определения числа, соединенный с памятью 720, содержащей DPB 725. Узел 730 определения числа сконфигурирован для определения, после того как текущее изображение видеопоследовательности было декодировано и сохранено в DPB 725, некоторого числа изображений в DPB 725, которые маркированы в качестве необходимых для вывода. Кодер 700 также содержит средство 740 сравнения, соединенное с узлом 730 определения числа и предпочтительно с памятью 720. Средство 740 сравнения сконфигурировано для сравнения числа со значением sps_max_num_reorder_pics[ HighestTid ]. Узел 760 маркирования кодера соединен с памятью 720 и сконфигурирован для маркирования изображения, которое является первым изображением в порядке вывода, из изображений в DPB 725, которые маркированы в качестве необходимых для вывода, в качестве не являющегося необходимым для вывода, если число больше, чем значение.
Средство 740 сравнения предпочтительно соединено с узлом 730 определения числа для того, чтобы принимать число изображений, определяемое узлом 730 определения числа.
Фиг. 25 представляет собой схематическую блок-схему еще одного примера реализации кодера 800 в частности подходящего для аппаратной реализации. Кодер 800 содержит узел 860 маркирования, соединенный с памятью 820, содержащей DPB 825. Узел 860 маркирования сконфигурирован для i) маркирования всех изображений в DPB 825, которые не представлены в RPS для текущего изображения видеопоследовательности, в качестве неиспользуемых для ссылки и ii) маркирования нуля, одного или множества изображений, маркированных в качестве необходимых для вывода, из изображений в DPB 825, в качестве не являющихся необходимыми для вывода. Узел 890 выгрузки изображения соединен с памятью 820 и сконфигурирован для выгрузки или удаления, из DPB 825, какого-либо изображения, маркированного в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB 825. Кодер 800 также содержит узел 805 декодирования, соединенный с памятью 820 и сконфигурированный для декодирования текущего изображения. Узел 830 определения числа кодера 800 соединен с памятью 830 и сконфигурирован для определения числа изображений в DPB 825, которые маркированы в качестве необходимых для вывода. Кодер 800 дополнительно содержит средство 840 сравнения, соединенное с узлом 830 определения числа и предпочтительно с памятью 820. Средство 840 сравнения сконфигурировано для сравнения числа со значением, полученным из по меньшей мере одного заданного синтаксического элемента. В этом варианте осуществления, узел 860 маркирования также сконфигурирован для маркирования изображения, которое является первым изображением в порядке вывода, из изображений в DPB 825, которые маркированы в качестве необходимых для вывода, в качестве не являющегося необходимым для вывода, если число больше, чем значение. В предпочтительном варианте осуществления, узел 830 определения числа сконфигурирован для определения числа изображений, средство 840 сравнения сконфигурировано для сравнения числа и узел 840 маркирования сконфигурирован для маркирования изображения после того как узел 805 декодирования декодировал текущее изображение.
Средство 840 сравнения предпочтительно соединено с узлом 830 определения числа для того, чтобы принимать число изображений, определяемое узлом 830 определения числа.
Как указано в вышеприведенном, кодер может в качестве альтернативы быть задан в качестве группы функциональных модулей, где функциональные модули реализуются в качестве компьютерной программы, работающей на процессоре.
Фиг. 23 представляет собой схематическую блок-схему, иллюстрирующую пример кодера 600, содержащего процессор 610 и ассоциированную память 620.
Компьютерная программа, находящаяся в памяти 620 может быть таким образом организована как надлежащие функциональные модули, сконфигурированные для выполнения, при исполнении процессором 610, по меньшей мере части этапов и/или задач, описанных выше по тексту. Пример таких функциональных модулей иллюстрируется на Фиг. 26. Фиг. 26 в этой связи представляет собой схематическую блок-схему, иллюстрирующую пример кодера 900, содержащего группу функциональных модулей 910-930. Эти модули содержат модуль 910 определения числа для определения, после того как текущее изображение битового потока, представляющего изображения видеопоследовательности, было декодировано и сохранено в DPB, некоторого числа изображений в DPB, которые маркированы в качестве необходимых для вывода. Кодер 900 также содержит модуль 920 сравнения для сравнения числа, необязательно, но предпочтительно определенного модулем 910 определения числа, со значением sps_max_num_reorder_pics[ HighestTid ]. Кодер 900 дополнительно содержит модуль 930 маркирования для маркирования изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, в качестве не являющегося необходимым для вывода, если число больше, чем значение, что необязательно, но предпочтительно определяется модулем 920 сравнения.
Фиг. 27 представляет собой схематическую блок-схему, иллюстрирующую другой пример кодера 1000 с группой функциональных модулей 1000-1050. Кодер 1000 содержит модуль 1010 маркирования для маркирования всех изображений в DPB, которые не представлены в RPS для текущего изображения видеопоследовательности, в качестве неиспользуемых для ссылки и маркирования нуля, одного или множества изображений, маркированных в качестве необходимых для вывода, из изображений в DPB, в качестве не являющихся необходимыми для вывода. Кодер 1000 дополнительно содержит модуль 1020 выгрузки для выгрузки или удаления, из DPB, какого-либо изображения, маркированного в качестве неиспользуемого для ссылки и не являющегося необходимым для вывода, из изображений в DPB, и модуль 1030 декодирования для декодирования текущего изображения. Кодер 1000 дополнительно содержит модуль 1040 определения числа для определения числа изображений в DPB, которые маркированы в качестве необходимых для вывода, и модуль 1050 сравнения для сравнения числа, необязательно, но предпочтительно определенного модулем 1040 определения числа, со значением, полученным из по меньшей мере одного синтаксического элемента, представленного в битовом потоке.
В варианте осуществления, модуль 1010 маркирования предназначен дополнительно для маркирования изображения, которое является первым изображением в порядке вывода, из изображений в DPB, которые маркированы в качестве необходимых для вывода, в качестве не являющегося необходимым для вывода, если число больше, чем значение, что необязательно, но предпочтительно определено модулем 1050 сравнения.
В варианте осуществления, модуль 1040 определения числа, определяющий число изображений, модуль 1050 сравнения, сравнивающий число, и модуль 1010 маркирования, маркирующий упомянутое изображение, после модуля 1030 декодирования, декодирующего текущее изображение.
В варианте осуществления, компьютерная программа содержит программный код, который при исполнении процессором 610, см. Фиг. 23 или компьютером, побуждает процессор 610 или компьютер выполнять этапы, функции, процедуры и/или блоки, описанные выше по тексту и показанные на Фиг. 21 или 22.
Программное обеспечение или компьютерная программа могут быть реализованы как компьютерный программный продукт, который обычно переносится или сохраняется на считываемом компьютером носителе. Считываемый компьютером носитель может включать в себя одно или более съемных или несъемных запоминающих устройств, включающих в себя, но без ограничения упомянутым, ROM, RAM, CD, DVD, память USB, устройство хранения HDD, флэш-память или любое другое традиционное запоминающее устройство. Компьютерная программа может быть таким образом загружена в операционную память компьютера или эквивалентного устройства обработки для исполнения его схемой обработки.
Кодер 600, 700, 800, 900, 1000, как показано на Фиг. 23-27, предпочтительно является кодером совместимым с HEVC. Однако, необходимо отметить, что варианты осуществления не ограничиваются HEVC.
Декодер 100, 200, 300, 400, 500 на любой из Фиг. 16-20 и кодер 600, 700, 800, 900, 1000 на любой из Фиг. 23-27 могут быть реализованы, например, в мобильном терминале. Например, декодер 100, 200, 300, 400, 500 может, например, быть расположен в приемнике в видеокамере или любом другом устройстве для отображения видеопотока. Кодер 600, 700, 800, 900, 1000 может, например, быть расположен в передатчике в видеокамере в, например, мобильном устройстве.
Фиг. 28 представляет собой схематическую блок-схему мобильного терминала 1100 согласно варианту осуществления. Мобильный терминал 1100 содержит декодер 100, 200, 300, 400, 500 согласно вариантам осуществления и/или кодер 600, 700, 800, 900, 1000 согласно вариантам осуществления, например декодер, показанный на любой из Фигур 16-20 и/или кодер, показанный на любой из Фигур 23-27.
Мобильный терминал 1100 также предпочтительно содержит узел 1110 ввода и вывода (I/O) для обеспечения возможности связи, обычно беспроводной связи, но в качестве альтернативы или в дополнение, проводной связи с внешними узлами. Узел 1110 I/O может быть реализован в качестве передатчика и приемника или приемопередатчика для беспроводной связи. В качестве альтернативы, узел 1110 I/O может быть традиционным узлом I/O или портом 1110 способным выполнять проводную связь. Если мобильный терминал 1100 реализуется с кодером 600, 700, 800, 900, 1000, узел 1110 I/O предпочтительно сконфигурирован для передачи или вывода битового потока, представляющего кодированную видеопоследовательность, которая генерируется кодером 600, 700, 800, 900, 1000. Соответственно, если мобильный терминал 1100 содержит декодер 100, 200, 300, 400, 500, узел 1110 I/O предпочтительно сконфигурирован для приема или ввода битового потока, представляющего кодированную видеопоследовательность.
Мобильный терминал 1100 содержит память 1120, сконфигурированную для сохранения кодированных изображений кодированной видеопоследовательности. Эти кодированные изображения могут быть сгенерированы самим мобильным терминалом 1100. В таком случае, мобильный терминал 1100 предпочтительно содержит модуль мультимедиа или устройство записи (не показано) вместе с соединенным кодером 600, 700, 800, 900, 1000. В качестве альтернативы, кодированная видеопоследовательность генерируется некоторыми другими устройствами и передается мобильному терминалу 1100.
Кодированные изображения доставляются из памяти 1120 декодеру 100, 200, 300, 400, 500. Декодер 100, 200, 300, 400, 500 затем декодирует кодированные изображения в декодированные изображения. Декодированные изображения обеспечиваются мультимедийному проигрывателю 1130, который сконфигурирован для визуализации декодированных изображений видеопоследовательности в видеоданные, которые могут быть отображены на устройстве отображения или экране 1140 мобильного терминала 1100 или соединенном с ним.
На Фиг. 28, мобильный терминал 1100 был проиллюстрирован как содержащий и декодер 100, 200, 300, 400, 500 и мультимедийный проигрыватель 1130, с декодером 100, 200, 300, 400, 500, реализованным в качестве части мультимедийного проигрывателя 1130. Однако, это должно быть рассмотрено лишь в качестве иллюстративного, но неограничивающего примера варианта осуществления реализации для мобильного терминала 1100. Также распределенные реализации возможны, где декодер 100, 200, 300, 400, 500 и мультимедийный проигрыватель 1130 обеспечиваются в двух физически отделенных устройствах, возможны и в пределах объема мобильного терминала 1100, как использовано в этом документе. Устройство отображения 1140 также может быть обеспечено как отдельное устройство, соединенное с мобильным терминалом 1100, где происходит обработка фактических данных.
Мобильный терминал 1100 может быть любым устройством, имеющим функции декодирования мультимедиа, которые осуществляют операции над кодированной видеопоследовательностью кодированных изображений, чтобы посредством этого декодировать изображения и сделать доступными видеоданные. Неограничивающие примеры таких мобильных терминалов 1100 включают в себя мобильные телефоны и другие переносные мультимедийные проигрыватели, компьютеры, декодеры, игровые консоли и так далее.
Кодер 600, 700, 800, 900, 1000 вариантов осуществления, такой как показан на любой из Фиг. 23-27, и/или декодер 100, 200, 300, 400, 500 вариантов осуществления, такой как показан на любой из Фиг. 16-20, может быть реализован в сетевом узле 2, показанном на Фиг. 29.
Как проиллюстрировано на Фиг. 29, кодер 600, 700, 800, 900, 1000 и/или декодер 100, 200, 300, 400, 500 могут быть реализованы в сетевом узле 2 в сети 1 связи между узлом 3 отправки и узлом 4 приема. Такой сетевой узел 2 может быть устройством для преобразования видео между, например, различными разрешениями видео, частотами кадров, качествами, скоростями прохождения битов (битрейтами) и стандартами кодирования. Сетевой узел 2 может быть в форме базовой радиостанции, узла-B или любого другого сетевого узла в сети 1 связи, такой как радиосеть.
Кодер и/или декодер вариантов осуществления также может быть обеспечен в любом элементе, который осуществляет операции над битовым потоком, таком как осведомленный о среде элемент сети.
Варианты осуществления не ограничиваются HEVC, но могут быть применены к любому расширению HEVC, такому как масштабируемое расширение или многовидовое расширение, или к видеокодеку разницы.
Варианты осуществления, описанные выше по тексту, следует понимать как несколько иллюстративных примеров настоящего изобретения. Специалистам в данной области техники будет понятно, что различные модификации, комбинации и изменения могут быть сделаны для вариантов осуществления без отклонения от объема настоящего изобретения. В частности, решения различных частей в различных вариантах осуществления могут быть объединены в других конфигурациях, где это технически возможно. Объем настоящего изобретения, однако, задается заявленной формулой изобретения.