СИГНАЛИЗАЦИЯ ОПОРНОГО ИЗОБРАЖЕНИЯ
REFERENCE PICTURE SIGNALING

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Варианты осуществления в целом относятся к управлению опорным изображением в связи с кодированием и декодированием видеоизображений, и в частности, к сигнализации опорного изображения и управлению буфером.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Стандарт H.264, также называемый Усовершенствованным кодированием видеоизображений (AVC) Экспертной группы по вопросам движущегося изображения (MPEG-4), представляет стандарт кодирования видеоизображений, соответствующий современному уровню техники. Он заключается в основывающейся на блоках гибридной схеме кодирования видеоизображений, которая использует временное и пространственное предсказание.
Высокоэффективное кодирование видеоизображений (HEVC) является новым стандартом кодирования видеоизображений, в настоящий момент разрабатываемым в Объединенной группе совместных работ по кодированию видео (JCT-VC). JCT-VC является совместным проектом между MPEG и сектором стандартизации телекоммуникаций Международного союза электросвязи (ITU-T). В настоящий момент определен Рабочий проект (WD), который включает в себя большие макроблоки (сокращенно обозначаемые «LCU» от «Largest Coding Units» (наибольшие единицы кодирования)) и ряд других новых инструментальных средств, и является значительно более эффективным, чем H.264/AVC.
В приемнике декодер принимает битовый поток, представляющий изображения, то есть пакеты видеоданных из сжатых данных. Сжатые данные содержат полезную нагрузку и управляющую информацию. Управляющая информация содержит, например, информацию о том, какие опорные изображения следует сохранять в буфере декодированных изображений (DPB), также именуемом буфером опорных изображений. Эта информация является относительной ссылкой на предшествующие принятые изображения. Затем декодер декодирует принятый битовый поток и отображает декодированное изображение. Кроме того, декодированные изображения сохраняются в буфере декодированных изображений согласно управляющей информации. Эти сохраненные опорные изображения используются декодером при декодировании последующих изображений.
Рабочее допущение относительно процессов для операций буферизации декодированных изображений в рабочем проекте HEVC состоит в том, что они будут наследоваться от H.264/AVC в весьма значительной степени. Упрощенная блок-схема для схемы, как она спроектирована в H.264/AVC, показана на Фиг. 1.
До фактического декодирования изображения поле frame_num (номер кадра) в заголовке фрагмента синтаксически анализируется для обнаружения возможного пропуска в frame_num, если синтаксическим элементом gaps_in_frame_num_value_allowed_flag (флаг разрешения пропусков в значении номеров кадров) множества значений параметров последовательности (SPS) является 1. Элемент frame_num указывает порядок декодирования. При обнаружении пропуска в frame_num "несуществующие" кадры создают и вставляют в буфер декодированных изображений.
Независимо от того, был ли пропуск в frame_num или нет, следующим этапом является фактическое декодирование текущего изображения. Если заголовки фрагментов в изображении содержат команды «управляющие операции управления памятью» (MMCO), процесс адаптивного управления памятью применяется после декодирования изображения, чтобы получить относительную ссылку на изображения, подлежащие сохранению в буфере декодированных изображений; иначе применяется процесс «скользящего окна», чтобы получить относительную ссылку на изображения, подлежащие сохранению в буфере декодированных изображений. В качестве заключительного этапа применяется процесс "выталкивания", чтобы доставлять изображения в правильном порядке.
Проблемой стандарта H.264/AVC является его уязвимость к потерям изображений, которые содержат MMCO типа 2, 3, 4, 5 или 6, как описано в Таблице 1 ниже.
Таблица 1
Значения управляющей операции управления памятью для H.264/AVC
memory_management_control_operation
Управляющая операция управления памятью
0
Конец цикла синтаксического элемента memory_management_control_operation
1
Пометить кратковременное опорное изображение как "неиспользуемое для опорного"
2
Пометить долговременное опорное изображение как "неиспользуемое для опорного"
3
Пометить кратковременное опорное изображение как "используемое для долговременного опорного" и назначить ему индекс долговременного кадра
4
Указать максимальный индекс долговременного кадра и пометить все долговременные опорные изображения, имеющие индекс долговременного кадра больше, чем максимальное значение, как "неиспользуемые для опорного"
5
Пометить все опорные изображения как "неиспользуемые для опорного" и установить переменную MaxLongTermFrameIdx в "нет индексов долговременных кадров"
6
Пометить текущее изображение как "используемое для долговременного опорного" и назначить ему индекс долговременного кадра
Потеря изображения, которое не содержит MMCO, или изображения, которое содержит MMCO типа 0 или 1, несомненно, является серьезной для процесса декодирования. Значения пикселов для потерянного изображения не будут доступными и могут влиять на будущие изображения в течение длительного периода времени вследствие некорректного межкадрового предсказания. Также существует риск, что перечни опорных изображений для некоторого числа изображений, следующих за потерянным изображением, будут некорректными, например, если потерянное изображение содержало MMCO, которая пометила одно кратковременное опорное изображение как "неиспользуемое для опорного", которое иначе было бы включено в перечень опорных изображений для последующего изображения. Однако, процесс декодирования может обычно восстанавливать такую потерю посредством использования ограниченных блоков с внутренним кодированием, фрагментов с внутренним кодированием или другими средствами.
Но если теряется изображение, содержащее MMCO типа 2, 3, 4, 5 или 6, существует риск, что количество долговременных изображений в DPB отличается от того, каким было бы при приеме изображения, приводя к "некорректному" процессу скользящего окна для всех последующих изображений. То есть, кодер и декодер будут содержать различное число кратковременных изображений, приводя к асинхронному поведению процесса скользящего окна. Эту потерю нельзя восстановить посредством использования ограниченных блоков с внутренним кодированием, фрагментов с внутренним кодированием или подобных способов (даже и открытым изображением с внутренним кодированием Группы изображений (GOP)). Единственным способом обеспечить восстановление после такой потери - посредством изображения с Мгновенным обновлением при декодировании (IDR) или посредством MMCO, которая аннулирует эффект потерянной MMCO. Ситуацию еще более ухудшает то, что декодер не всегда будет иметь сведения, что процесс скользящего окна не синхронизирован, и таким образом не сможет выдать отчет о проблеме на кодер или запросить IDR изображение даже в приложениях, где канал обратной связи является доступным.
Один способ снижения риска потери важной информации MMCO состоит в использовании сообщений dec_ref_pic_marking_repetition (повторная пометка опорного изображения для декодирования) Дополнительной информации о расширении (SEI). Однако кодер не будет иметь сведения, способен ли декодер использовать SEI сообщения dec_ref_pic_marking_repetition. Кроме того, существует риск, что SEI сообщение dec_ref_pic_marking_repetition также потеряется.
Таким образом, существует необходимость эффективной сигнализации опорного изображения и управления буфером, не подверженных недостаткам и ограничениям решений предшествующего уровня техники.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Основная задача состоит в обеспечении эффективной сигнализации опорного изображения и управления буфером в связи с кодированием и декодированием видео.
Это и другие задачи выполняются согласно вариантам осуществления, раскрытым в документе.
Один аспект вариантов осуществления относится к способу декодирования кодированного представления изображения для видеопотока множества изображений. Способ содержит извлечение информации описания буфера, идентифицирующей описание буфера, задающее множество опорных изображений, из кодированного представления изображения. Идентификатор изображения, идентифицирующий опорное изображение в множестве опорных изображений, определяют на основании информации идентификатора изображения, извлеченной из описания буфера, для опорного изображения, и информации идентификатора изображения, извлеченной из описания буфера, для опорного изображения, предшествующего опорному изображению в соответствии с порядком по перечню в описании буфера. Буфер декодированных изображений в связи с этим обновляется на основании определенного идентификатора изображения.
Связанный аспект вариантов осуществления определяет декодер, сконфигурированный для декодирования кодированного представления изображения для видеопотока множества изображений. Декодер содержит блок извлечения данных, сконфигурированный для извлечения информации описания буфера, идентифицирующей описание буфера, задающее множество опорных изображений, из кодированного представления изображения. Определитель идентификатора изображения сконфигурирован для определения идентификатора изображения, идентифицирующего опорное изображение в множестве опорных изображений на основании информации идентификатора изображения, извлеченной блоком извлечения данных из описания буфера, для опорного изображения и информации идентификатора изображения, извлеченной блоком извлечения данных из описания буфера, для опорного изображения, предшествующего опорному изображению в соответствии с порядком по перечню в описании буфера. Декодер также содержит блок управления буфером, сконфигурированный для обновления буфера декодированных изображений на основании идентификатора изображения.
Другой связанный аспект вариантов осуществления определяет декодер, содержащий входную секцию, сконфигурированную для приема кодированных представлений множества изображений видеопотока. Декодер также содержит процессор, сконфигурированный для обработки средства программного кода компьютерной программы, хранимой в запоминающем устройстве. Средство программного кода при исполнении в процессоре предписывает процессору извлекать информацию описания буфера, идентифицирующую описание буфера, задающее множество опорных изображений, из кодированного представления изображения. Процессору также предписывается определять идентификатор изображения, идентифицирующий опорное изображение в множестве опорных изображений, на основании информации идентификатора изображения, извлеченной из описания буфера, для опорного изображения и информации идентификатора изображения, извлеченной из описания буфера, для опорного изображения, предшествующего опорному изображению в соответствии с порядком по перечню в описании буфера. Процессору далее предписывается обновлять буфер декодированных изображений на основании идентификатора изображения. Выходная секция декодера сконфигурирована для вывода декодированных изображений видеопотока.
Еще один аспект вариантов осуществления относится к способу кодирования изображения для видеопотока множества изображений. Способ содержит определение, для изображения, множества опорных изображений в множестве изображений в качестве опорного при кодировании для изображения и/или последующего изображения в видеопотоке. Способ также содержит обеспечение, для каждого опорного изображения, идентификатора изображения, идентифицирующего опорное изображение. Информацию идентификатора изображения определяют для каждого опорного изображения в, по меньшей мере, части множества опорных изображений, кроме первого опорного изображения в соответствии с порядком по перечню. Информацию идентификатора изображения определяют на основании идентификатора изображения, идентифицирующего опорное изображение, и на основании идентификатора изображения, идентифицирующего предшествующее опорное изображение в соответствии с порядком по перечню. Формируют информацию описания буфера, идентифицирующую описание буфера, задающее множество опорных изображений. Эту информацию описания буфера вставляют в кодированное представление изображения.
Связанный аспект вариантов осуществления определяет кодер, сконфигурированный для кодирования изображения для видеопотока множества изображений. Кодер содержит определитель опорного изображения, сконфигурированный, чтобы определять, для изображения, множество опорных изображений для видеопотока в качестве опорного при кодировании для изображения и/или любого последующего изображения видеопотока. Кодер также содержит блок обеспечения идентификатора изображения, сконфигурированный для обеспечения, для каждого опорного изображения, идентификатора изображения, идентифицирующего опорное изображение. Определитель информации сконфигурирован для формирования информации идентификатора изображения для каждого опорного изображения в, по меньшей мере, части множества опорных изображений, кроме первого опорного изображения в соответствии с порядком по перечню. Информация идентификатора изображения определяется на основании идентификатора изображения, идентифицирующего опорное изображение, и на основании идентификатора изображения, идентифицирующего предшествующее опорное изображение в соответствии с порядком по перечню. Кодер также содержит формирователь информации описания буфера, сконфигурированный для формирования на основании информации идентификатора изображения, информации описания буфера, идентифицирующей описание буфера, задающее множество опорных изображений. Блок вставки данных в кодере сконфигурирован, чтобы вставлять описание буфера в кодированное представление изображения.
Еще один связанный аспект вариантов осуществления определяет кодер, содержащий входную секцию, сконфигурированную для приема множества изображений видеопотока, и процессор, сконфигурированный для обработки средства программного кода компьютерной программы, хранимой в запоминающем устройстве. Средство программного кода при исполнении в процессоре предписывает процессору определять, для изображения в видеопотоке, множество опорных изображений в видеопотоке в качестве опорного при кодировании для изображения и/или любого последующего изображения в видеопотоке. Процессору также предписывается обеспечивать, для каждого опорного изображения, идентификатор изображения, идентифицирующий опорное изображение, и формировать информацию описания буфера на основании, по меньшей мере, одного идентификатора изображения. Средство программного кода при исполнении предписывает процессору определять информацию идентификатора изображения для каждого опорного изображения в, по меньшей мере, части множества опорных изображений, кроме первого опорного изображения в соответствии с порядком по перечню. Информация идентификатора изображения определяется на основании идентификатора изображения, идентифицирующего опорное изображение, и на основании идентификатора изображения, идентифицирующего предшествующее опорное изображение в соответствии с порядком по перечню. Средство программного кода также предписывает процессору формировать, на основании информации идентификатора изображения, информацию описания буфера, идентифицирующую описание буфера, задающее множество опорных изображений. Средство программного кода дополнительно предписывает процессору вставлять описание буфера в кодированное представление изображения. Кодер дополнительно содержит выходную секцию, сконфигурированную для вывода кодированных представлений изображений.
Явно противоположно по отношению к решениям предшествующего уровня техники, в которых корректное управление опорным изображением зависит от того, что ранее кодированные изображения были корректно приняты и декодированы, варианты осуществления предоставляют информацию описания буфера, которая используется для опорных изображений абсолютным и явным образом вместо относительного или неявного. Таким образом, кодированное представление изображения содержит информацию, какие опорные изображения использовать для ссылки в течение декодирования независимо от кодированных представлений предшествующих изображений в видеопотоке.
Варианты осуществления в связи с этим делают управление изображением и сигнализацию менее уязвимыми для ошибок, поскольку декодер будет полагаться только на информацию, содержащуюся в текущем изображении, для управления опорным изображением для текущего изображения вместо того, чтобы полагаться на корректно доставленные и интерпретированные операции буферизации в предшествующих изображениях.
Кроме того, кодирование и декодирование идентификаторов изображения относительно предшествующих опорных изображений в описании буфера дает возможность битово эффективного представления идентификаторов изображения, что снизит какие-либо издержки в сигнализации описания буфера. Варианты осуществления в связи с этим снижают скорость передачи битов, требуемую для сигнализации идентификационных значений в сигнализации изображения с абсолютными ссылками.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Изобретение, вместе с его дополнительными задачами и преимуществами, наилучшим образом можно понять путем обращения к последующему описанию вместе с сопроводительными чертежами, на которых:
Фиг. 1 - упрощенная блок-схема для схемы буфера ссылок по H.264/AVC;
Фиг. 2 - блок-схема способа декодирования кодированного представления изображения согласно варианту осуществления;
Фиг. 3 - видеопоток множества изображений согласно варианту осуществления;
Фиг. 4 - кодированное представление изображения согласно варианту осуществления;
Фиг. 5 - блок-схема этапа определения идентификатора первого изображения на Фиг. 2 согласно варианту осуществления;
Фиг. 6 - блок-схема этапа вычисления на Фиг. 5 и этапа определения идентификатора изображения на Фиг. 2 согласно варианту осуществления;
Фиг. 7 - блок-схема этапа определения идентификатора первого изображения и этапа определения идентификатора изображения по Фиг. 2 согласно варианту осуществления;
Фиг. 8 - блок-схема дополнительных, необязательных этапов способа по Фиг. 2;
Фиг. 9 - упрощенная блок-схема для схемы буфера ссылок согласно варианту осуществления;
Фиг. 10 - блок-схема способа кодирования изображения согласно варианту осуществления;
Фиг. 11 - блок-схема этапа определения информации идентификатора первого изображения и этапа определения информации идентификатора изображения по Фиг. 10 согласно варианту осуществления;
Фиг. 12 - блок-схема этапов S50 - S53 по Фиг. 10 согласно варианту осуществления;
Фиг. 13 - блок-схема дополнительного, необязательного этапа способа по Фиг. 10;
Фиг. 14 - структурная схема приемника согласно варианту осуществления;
Фиг. 15 - структурная схема декодера согласно варианту осуществления;
Фиг. 16 - структурная схема определителя идентификатора изображения по Фиг. 16 согласно варианту осуществления;
Фиг. 17 - структурная схема декодера согласно другому варианту осуществления;
Фиг. 18 - структурная схема передатчика согласно варианту осуществления;
Фиг. 19 - структурная схема кодера согласно варианту осуществления;
Фиг. 20 - структурная схема определителя информации по Фиг. 19 согласно варианту осуществления; и
Фиг. 21 - структурная схема кодера согласно другому варианту осуществления.
ПОДРОБНОЕ ОПИСАНИЕ
По всем чертежам одинаковые числовые ссылочные позиции используются для сходных или соответствующих элементов.
Настоящие варианты осуществления в целом относятся к кодированию и декодированию изображений, также называемых в данной области техники «кадрами», видеопотока. В частности варианты осуществления относятся к управлению опорными изображениями в связи с кодированием и декодированием видеоизображений и сигнализации таких опорных изображений из кодера на декодер.
Кодирование видеоизображений, такое как представлено согласно H.264/MPEG-4 AVC и HEVC, использует опорные изображения в качестве предсказаний или ссылок для кодирования и декодирования данных пикселов для текущего изображения. Это обычно в области техники называется «межкадровое кодирование», где изображение кодируется и декодируется относительно таких опорных изображений. Для способности декодировать кодированное изображение, декодер, таким образом, должен иметь сведения, какие опорные изображения использовать для текущего кодированного изображения, и должен иметь доступ к этим опорным изображениям. Обычно декодер использует буфер декодированных изображений (DPB), также именуемый «буфер опорных изображений», чтобы сохранять опорные изображения. Тогда является важным, чтобы опорные изображения, сохраненные в буфере декодированных изображений, были действительно корректными опорными изображениями при декодировании кодированного изображения, иначе декодер будет использовать некорректные опорные изображения в течение процесса декодирования, вызывая ухудшение качества представляемого видеоизображения.
Способы предшествующего уровня техники могут испытывать трудности относительно использования некорректных опорных изображений, когда изображение, несущее информацию MMCO, неумышленно теряется, что было обсуждено в параграфе уровня техники. Эту трудность предшествующего уровня техники можно проиллюстрировать следующим реализованным в H.264 примером. Можно допустить, что буфер декодированных изображений хранит три кратковременных изображения с идентификаторами 300, 302 и 303 изображений и два долговременных изображения с идентификаторами 0 и 3 изображений. Кодер затем может формировать новое кодированное изображение с помощью MMCO команды типа 2, устанавливающей, что долговременное изображение 0 следует пометить как "неиспользуемое для опорного". Если это кодированное изображение будет корректно принято в декодере, долговременное изображение 0 будет помечено как неиспользуемое для опорного, и перечнем опорных изображений, следовательно, вместо этого будет {300, 302, 303, 3}. Однако, если теряется кодированное изображение с MMCO командой типа 2, то декодер не информируется, что долговременное изображение 0 должно помечаться как неиспользуемое для опорного, и перечнем опорных изображений взамен будет {300, 302, 303, 0, 3}. Если следующее кодированное изображение, принятое в декодере, содержит информацию, что опорное изображение в позиции 3 в перечне опорных изображений подлежит использованию в качестве предсказания для макроблока в изображении, то будет проблема, если потеряна MMCO команда типа 2. Если MMCO команда типа 2 была корректно принята в декодере, опорное изображение в позиции 3 в перечне опорных изображений будет соответствовать долговременному изображению 3, поскольку это опорное изображение занимает позицию 3 (если начинать с 0) в перечне опорных изображений. Однако, при потерянной MMCO команде типа 2 позиция 3 в перечне опорных изображений вместо этого будет занята долговременным изображением 0. Это означает, что данные пикселов из долговременного изображения 0 будут использоваться в качестве базиса предсказания вместо корректных данных пиксела по идентификатору 3 долговременного изображения.
Таким образом, у решения предшествующего уровня техники имеется проблема, что корректное управление опорным изображением зависит от того, что ранее декодированные изображения были корректно приняты и декодированы.
Настоящие варианты осуществления не имеют этих трудностей способов предшествующего уровня техники согласно использованию принципиально другого подхода для сигнализации опорных изображений по сравнению с предшествующим уровнем техники. Настоящие варианты осуществления вместо этого указывают, какие декодированные изображения подлежат использованию для опорных изображений абсолютным или явным образом вместо относительного или неявного. Другой путь выражения этого состоит в том, что кодированное представление, то есть, битовый поток, для текущего изображения содержит информацию о том, какие изображения использовать для ссылки, то есть, опорных изображений, независимо от кодированных представлений предшествующих изображений. Следовательно, можно сказать, что логическая ответственность за поддержание корректного буфера декодированных изображений перемещается от декодера к битовому потоку. Один путь взгляда на это состоит в том, чтобы сообщить информацию о том, какие опорные изображения использовать для межкадрового предсказания и предсказания вектора движения для изображения, включать в управляющую информацию для изображения. Следовательно, состояние буфера декодированных изображений сигнализируется для каждого изображения, которое кодируется и декодируется относительно других изображений.
Согласно вариантам осуществления изображение связывается с описанием буфера, задающим опорные изображения, которые необходимы, чтобы кодировать и декодировать текущее изображение и/или необходимы, чтобы кодировать и декодировать последующее изображение в потоке согласно порядку вывода изображений в декодере. Информация описания буфера, задающая описание этого буфера, затем включается кодером в кодированное представление изображения, и является, следовательно, доступной декодеру вместе с кодированными данными для текущего изображения.
Варианты осуществления относятся к эффективному пути использования описания буфера для задания опорных изображений, что является битово эффективным.
Сигнализация идентификаторов изображения непосредственно в описании буфера обычно не является эффективной в частности при использовании кодирования с переменной длиной слова. Причина состоит в том, что идентификаторы изображения могут быть относительно большими числами, которые требуют много битов для кодирования. Кроме того, опорные изображения, используемые в качестве основы предсказания для текущего изображения и/или последующего изображения в видеопотоке, являются обычно смежными изображениями или, по меньшей мере, присутствуют близко к текущему изображению в видеопотоке. Следовательно, более битово эффективным подходом является задание идентификаторов изображения в описании буфера в виде «дельта» (разностных) идентификаторов изображения относительно идентификатора изображения для текущего изображения.
В таком подходе опорное изображение сигнализируется в описании буфера дельта идентификатором изображения, deltaPOC, относительно текущего изображения. Идентификатор изображения, POC(ref), для опорного изображения затем вычисляется в виде POC(ref)=POC(currPic)+deltaPOC, где POC(currPic) представляет идентификатор изображения для текущего изображения.
В конкретном варианте осуществления могут указываться ограничения так, что одинаковое изображение, то есть, одинаковое deltaPOC, может не появляться свыше одного раза в том же описании буфера. Это дает возможность, что описание буфера однозначно и явно задает каждое опорное изображение, которое подлежит сигнализации для текущего изображения. Однако, это может вести к неэффективной сигнализации идентификаторов изображения в описании буфера.
Например, можно допустить описание буфера, где все опорные изображения имеют отрицательные дельта идентификаторы изображения. Кроме того можно допустить, что первое опорное изображение в описании буфера для текущего изображения имеет дельта идентификатор изображения deltaPOC= -1, который кодируется одним битом при использовании кода переменной длины, такого как беззнаковый код переменной длины (UVLC). Дельта идентификатор изображения, соответствующий -1, затем будет самым коротким кодовым словом для следующего опорного изображения. Однако, если вышеупомянутое ограничение должно применяться к описаниям буфера, такое значение -1, представленное одним битом, является запрещенным для следующего опорного изображения, поскольку уже имеется опорное изображение с таким кодовым словом в описании буфера. Таким образом, второе опорное изображение в описании буфера должно тогда использовать, по меньшей мере, три бита, чтобы представить свой дельта идентификатор изображения, используя UVLC.
Варианты осуществления решают задачу этого ограничения в сигнализации опорных изображений.
Аспект вариантов осуществления декодирует идентификационное значение для опорного изображения, сигнализированное с помощью абсолютной сигнализации опорных изображений, используя уже декодированные идентификационные значения опорных изображений, сигнализированные абсолютной сигнализацией опорных изображений в описании буфера.
Таким образом, варианты осуществления используют порядок, в котором опорные изображения следуют в описании буфера. Следовательно, при декодировании идентификатора изображения для опорного изображения с индексом i в описании буфера, используют идентификатор(ы) изображения из уже декодированного опорного изображения(ий) в описании буфера. Это дает возможность снижения стоимости в битах битового потока для сигнализации идентификаторов изображения для опорного изображения с индексом i.
На Фиг. 2 показана блок-схема, иллюстрирующая способ декодирования кодированного представления изображения для видеопотока множества изображений, или кадров. Способ обычно начинается на этапе S1, где информация описания буфера, идентифицирующая описание буфера, извлекается из кодированного представления изображения.
Информация описания буфера может обеспечиваться в любой заданной части кодированного представления изображения, но обычно обеспечивается в поле управляющей информации в кодированном представлении изображения. Извлечение информации описания буфера может, следовательно, выполняться вместе с декодированием управляющей информации в кодированном представлении изображения и, следовательно, предпочтительно до декодирования фактических данных полезной нагрузки в кодированном представлении.
На Фиг. 4 схематично иллюстрируется пример кодированного представления 60 изображения. Кодированное представление 60 содержит данные 66 полезной нагрузки видео, которые представляют кодированные данные пикселов для блоков пикселов в фрагменте. Кодированное представление 60 также содержит заголовок 65 фрагмента, несущий управляющую информацию. Заголовок 65 фрагмента образует вместе с полезной нагрузкой видео и заголовком 64 Уровня сетевой абстракции (NAL) единичный элемент NAL, который представляет объект, являющийся выводимым из кодера. К этому элементу NAL могут добавляться дополнительные заголовки, такие как заголовок 63 Протокола передачи данных в реальном времени (RTP), заголовок 62 Протокола пользовательских дейтаграмм (UDP) и заголовок 61 протокола Internet (IP), чтобы сформировать пакет данных, который может передаваться из кодера на декодер. Эта форма пакетирования элементов NAL просто составляет пример применительно к транспорту видеоданных. Другие подходы для обработки элементов NAL, такие как файловый формат, транспортные потоки стандарта MPEG-2, программные потоки стандарта MPEG-2, и т.д. являются возможными.
Информация описания буфера затем может включаться в заголовок 65 фрагмента, другой заголовок изображения или другую структуру данных, оговоренную стандартом, которому соответствуют кодер и декодер.
Информация описания буфера, извлеченная на этапе S1, идентифицирует описание буфера, также называемое набором параметров опорных изображений (RPS), которое задает параметры множества опорных изображений. Следовательно, описание буфера задает опорные изображения, которые используются в качестве опорного при декодировании для текущего изображения, подлежащего декодированию. Это означает, что данные пикселов текущего изображения декодируются со ссылкой на одно или более опорных изображений. Альтернативно, или в дополнение, по меньшей мере, одно опорное изображение, заданное описанием буфера, может использоваться в качестве опорного при декодировании для последующего изображения в видеопотоке, то есть, изображения, подлежащего декодированию после текущего изображения. Таким образом, описание буфера задает все опорные изображения, которые находятся до текущего изображения в порядке декодирования, и которые могут использоваться для межкадрового предсказания для текущего изображения или любого изображения, называемого «последующее изображение» в документе, следующего после текущего изображения в соответствии с порядком декодирования.
Информация описания буфера может, следовательно, рассматриваться в качестве информации, идентифицирующей описание буфера, которое представляет набор опорных изображений, связанных с текущим изображением. Он состоит из всех опорных изображений, которые находятся до текущего изображения в порядке декодирования, и может использоваться для межкадрового предсказания относительно текущего изображения или любого изображения, следующего после текущего изображения в порядке декодирования.
На Фиг. 3 схематично иллюстрируется эта идея показом видеопотока 1 нескольких изображений 10, 40, 42, 50. Текущее изображение 10 может содержать один или более фрагментов 20, 22, содержащих блоки 30 пикселов, такие как макроблоки, также называемые древовидными блоками (treeblocks), или единицы кодирования, подлежащие декодированию. Стрелки ниже изображений 10, 40, 42, 50 указывают отношения декодирования. Текущее изображение 10 декодируется относительно предшествующего опорного изображения 40 и последующего опорного изображения 42. Предшествующее опорное изображение 40 является предшествующим, и последующее опорное изображение 42 является последующим по отношению к текущему изображению 10 в соответствии с порядком вывода, но оба являются предшествующими текущему изображению 10 в соответствии с порядком декодирования. Это последующее опорное изображение 42 кроме того используется в качестве опорного изображения для последующего, в соответствии с порядком декодирования, изображения 50 в видеопотоке 1.
Следующий необязательный, но предпочтительный этап S2 Фиг. 2 будет дополнительно описан ниже.
Следующий этап S3 использует описание буфера, полученное с использованием информации описания буфера, извлеченной на этапе S1, чтобы определить идентификатор изображения, идентифицирующий опорное изображение, заданное описанием буфера. Согласно вариантам осуществления идентификатор изображения для опорного изображения определяется на этапе S3 на основании информации идентификатора изображения, извлеченной из описания буфера, для опорного изображения, и информации идентификатора изображения, извлеченной из описания буфера, для опорного изображения, предшествующего опорному изображению в соответствии с порядком по перечню в описании буфера.
Следовательно, идентификатор изображения, соответствующий данному опорному изображению, заданному описанием буфера, определяется относительно информации идентификатора изображения для, по меньшей мере, одного предшествующего опорного изображения, заданного описанием буфера. Это предшествующее опорное изображение предшествует, или эти предшествующие опорные изображения предшествуют данному опорному изображению в соответствии с порядком по перечню, заданным в описании буфера. Следовательно, описание буфера дает перечень или идентифицирует опорные изображения в порядке по перечню. Варианты осуществления, следовательно, не только используют информацию идентификатора изображения для данного опорного изображения, извлеченную из описания буфера, но также и информацию идентификатора изображения для любого предшествующего опорного изображения(ий).
В конкретном варианте осуществления описание буфера задает, по меньшей мере, один перечень опорных изображений. В таком случае этап S3 предпочтительно выполняется для каждого опорного изображения в, по меньшей мере, одном перечне, кроме первого, в соответствии с порядком по перечню, опорного изображения в соответственном, по меньшей мере, одном перечне. Это схематично проиллюстрировано линией L1 на Фиг. 2. У первого опорного изображения в соответствии с порядком по перечню имеется свой идентификатор изображения, определенный на этапе S2, описанном дополнительно ниже. Таким образом, если описание буфера задает перечень из N опорных изображений в перечне, этап S3 предпочтительно выполняется N-1 раз.
Как только идентификаторы изображения опорных изображений, заданных описанием буфера, для текущего изображения были определены на этапе S3 (и этапе S2), способ переходит на этап S4, где буфер декодированных изображений обновляется в декодере на основании определенных идентификаторов изображения.
Следовательно, идентификаторы изображения, определенные с использованием описания буфера для текущего изображения, используются, чтобы обновлять буфер декодированных изображений, чтобы сохранять и содержать корректные опорные изображения, необходимые для декодирования текущего изображения и/или последующего, в соответствии с порядком декодирования изображения в видеопотоке. Это декодирование известно в области техники и обычно использует декодирование с межкадровым предсказанием и вектором движения.
Как только буфер декодированных изображений был обновлен, чтобы содержать корректные опорные изображения, необходимые для декодирования текущего изображения, изображение декодируется на основании кодированного представления изображения и, по меньшей мере, одного из опорных изображений, содержащихся, присутствующих или хранимых в буфере декодированных изображений, и идентифицированного на основании информации описания буфера, несомой в кодированном представлении изображения.
Обновление буфера декодированных изображений на этапе S4 предпочтительно подразумевает, что опорные изображения, идентифицированные определенными идентификаторами изображений, помечены как "используемое для опорного", или помечены как "используемое для предсказания", чтобы указать, что эти опорные изображения должны использоваться в качестве опорного при декодировании или предсказания для текущего изображения и/или любого последующего изображения. В конкретном варианте осуществления опорные изображения могут помечаться в качестве используемых для кратковременных опорных или в качестве используемых для долговременных опорных.
Может быть возможным, что буфер декодированных изображений содержит опорные изображения, которые не заданы описанием буфера для текущего изображения и, следовательно, имеют идентификаторы изображения, которые отличаются от идентификаторов изображения, определенных на этапах S2 и S3. В варианте осуществления изображения, которые являются доступными в буфере декодированных изображений, но не включенными в описание буфера, помечаются как "неиспользуемые для опорного" или "неиспользуемые для предсказания" или удаляются декодером из буфера декодированных изображений. Таким образом, в этом варианте осуществления пометка изображений как "неиспользуемые для опорного" или удаление опорных изображений из буфера декодированных изображений выполняется декодером в виде части обновления буфера декодированных изображений и, следовательно, до декодирования полезной нагрузки видео для текущего изображения.
В дополнительном варианте осуществления нуль или более изображений, которые помечены как неиспользуемые для опорного декодером согласно описанию буфера, выводятся для отображения декодером. Одним таким примерным процессом для вывода является процесс «выталкивания» (bumping) по H.264/MPEG-4 AVC. Вывод относится здесь к выводу для отображения. То, какие изображения использовать в качестве опорных изображений и какие изображения выводить, то есть, отображать, отличается в H.264 и HEVC. Это означает, что изображение может выводиться прежде, чем оно будет удалено как опорное изображение, то есть, помечено как неиспользуемое для опорного, или оно может удаляться как опорное изображение, пометкой его как неиспользуемого для опорного прежде его вывода.
Как обсуждено выше в связи с этапом S3, идентификатор изображения для опорного изображения определяется на основании информации идентификатора изображения, извлеченной из описания буфера, относительно релевантного опорного изображения, а также на основании информации идентификатора изображения относительно любого опорного изображения, предшествующего релевантному опорному изображению в соответствии с порядком по перечню в описании буфера.
Сначала, в соответствии с порядком по перечню, опорное изображение, заданное описанием буфера, идентифицированное на основе описания буфера, извлеченного на этапе S1 из кодированного представления изображения, конечно, не содержит какое-либо опорное изображение, предшествующее первому опорному изображению в соответствии с порядком по перечню в описании буфера.
Этап S2 по Фиг. 2 определяет вариант осуществления, каким образом определять идентификатор изображения для этого первого опорного изображения на основании информации описания буфера. Этап S2 определяет идентификатор изображения для первого опорного изображения на основании информации идентификатора изображения, извлеченной из описания буфера, для первого опорного изображения, и на основании идентификатора изображения для текущего изображения, подлежащего декодированию. Следовательно, информация идентификатора изображения, полученная из описания буфера, объединяется с фактическим идентификатором изображения текущего изображения для получения идентификатора изображения для первого опорного изображения в соответствии с порядком по перечню.
В конкретном варианте осуществления описание буфера может задавать несколько, то есть, по меньшей мере, два, перечня опорных изображений, которые далее обсуждаются в документе. В таком случае у каждого такого перечня имеется соответственное первое опорное изображение согласно соответствующему порядку по перечню. Этап S2 затем предпочтительно определяет идентификатор изображения для первого опорного изображения в каждом перечне. Обсуждение, приведенное ниже относительно конкретных вариантов осуществления для определения идентификатора изображения для идентификатора первого изображения, можно, следовательно, применять к соответственным первым опорным изображениям в каждом перечне.
На Фиг. 5 показана блок-схема, иллюстрирующая конкретный вариант осуществления определения идентификатора первого изображения. Способ продолжается от этапа S1 по Фиг. 2 и переходит на этап S10. Этот этап S10 извлекает дельта идентификатор изображения и идентификатор знака для первого опорного изображения из описания буфера. При этом, absolute_delta_poc(0) представляет дельта идентификатор изображения, и sign представляет идентификатора знака. Идентификатор знака указывает, находятся ли опорные изображения в порядке по возрастанию или в порядке по убыванию по отношению к текущему изображению в видеопотоке и по отношению к порядку вывода изображений. Таким образом, если идентификатор знака указывает "+", опорные изображения следуют за текущим изображением в соответствии с порядком вывода, но предшествуют текущему изображению в порядке декодирования, тогда как идентификатор знака, указывающий "-", указывает, что опорные изображения предшествуют текущему изображению в соответствии с порядком вывода и в соответствии с порядком декодирования.
Следующий этап S11 вычисляет идентификатор изображения для первого опорного изображения на основании дельта идентификатора, идентификатора знака и идентификатора изображения для текущего изображения, обозначаемого POC(currPic) в документе. Способ затем переходит на этап S3 про Фиг. 2, где могут быть определены идентификаторы изображений оставшихся опорных изображений, заданных описанием буфера.
На Фиг. 6 показана блок-схема, иллюстрирующая конкретный вариант осуществления этапа S11 по Фиг. 5 и конкретный вариант осуществления этапа S3 по Фиг. 2. Способ продолжается от этапа S10 по Фиг. 5. Следующий этап S20 вычисляет параметр deltaPOC(0) в виде deltaPOC(0) = sign x absolute_delta_poc(0). Идентификатор изображения, POC(0), для первого опорного изображения затем вычисляется на этапе S21 в виде POC(0)=POC(currPic)+deltaPOC(0).
Последующие этапы S22-S24 иллюстрируют вариант осуществления определения идентификатора изображения для любого оставшегося опорного изображения, то есть, непервого опорного изображения, заданного описанием буфера. Эти этапы S22-S24 выполняются для каждого перечня опорных изображений в описании буфера.
Этап S22 извлекает соответственный дельта идентификатор изображения, absolute_delta_poc(i), из описания буфера для каждого номера i опорного изображения, заданного описанием буфера, кроме первого опорного изображения в текущем перечне. Следующий этап S23 вычисляет параметр deltaPOC(i) в виде deltaPOC(i)=deltaPOC(i-1)+absolute_delta_poc(i), если перечень задает опорные изображения в порядке по возрастанию, или в виде deltaPOC(i)=deltaPOC(i-1)-absolute_delta_poc(i), если перечень задает опорные изображения в порядке по убыванию. В конкретном варианте осуществления кодер и декодер предпочтительно оба предварительно сконфигурированы для использования либо порядка по возрастанию, либо порядка по убыванию.
В заключение этап S24 вычисляет идентификатор изображения, POC(i), для опорного изображения с номером i в виде POC(i)=POC(currPic)+deltaPOC(i). Таким образом, идентификатор изображения для опорного изображения, заданного в описании буфера, определяется на основании информации идентификатора изображения, представленной в этом варианте осуществления дельта идентификатором изображения absolute_delta_poc(i), извлеченным из описания буфера, для опорного изображения и на основании информации идентификатора изображения, извлеченной из описания буфера, для предшествующих опорных изображений в соответствии с порядком по перечню. В конкретном варианте осуществления идентификатор изображения также определяется на основании идентификатора изображения для текущего изображения, подлежащего декодированию, то есть, POC(currPic). Таким образом, общей формулой вычисления идентификатора изображения, POC(i), является
где выбор между"+" и"-" зависит от значения знака.
Этапы S22 - S24 выполняются для каждого опорного изображения в перечне, кроме первого опорного изображения, что схематично обозначено линией L2. Способ затем переходит на этап S4 по Фиг. 2.
Порядок следования этапов S20 - S24 может отличаться от показанного на Фиг. 6. В варианте осуществления способ сначала выполняет этап S20, за которым следует цикл, образуемый этапами S22, S23. В заключение, идентификаторы изображения вычисляются для первого и всех следующих после опорного изображения на этапе, который объединяет процессы этапов S21 и S24.
В вышеописанном варианте осуществления опорные изображения в описании буфера упорядочены в порядке deltaPOC по возрастанию или убыванию. Знак для deltaPOC предпочтительно сигнализируется только для первого опорного изображения, и дельта идентификаторы изображения, absolute_delta_poc, сигнализируются относительно предшествующего опорного изображения в описании буфера. Для первого опорного изображения в описании буфера absolute_delta_poc сигнализируется относительно текущего изображения.
В этом варианте осуществления декодер декодирует знак первого опорного изображения в описании буфера на основании идентификатора знака. Декодер затем декодирует absolute_delta_poc для первого опорного изображения относительно текущего изображения. Затем вычисляется deltaPOC для первого опорного изображения. Декодер продолжает декодированием absolute_delta_poc для всех оставшихся изображений в описании буфера при индексе i в диапазоне от 1 (если первое опорное изображение имеет индекс 0) до конца описания буфера, то есть, до NrOfPicturesInBufferDescription -1 (количество изображений в описании буфера - 1), и вычисляет deltaPOC относительно текущего изображения, как изложено выше.
В конкретном варианте осуществления информация описания буфера, извлеченная на этапе S1 по Фиг. 2 из кодированного представления кодированного изображения, идентифицирует описание буфера, задающее первый перечень опорных изображений и второй перечень опорных изображений.
Таким образом, в этом варианте осуществления описание буфера состоит из конкатенации двух перечней опорных изображений. Один перечень содержит опорные изображения с положительным deltaPOC, и один перечень содержит изображения с отрицательным deltaPOC. Оба перечня предпочтительно упорядочены по идентификаторам изображения дельты, absolute_delta_poc, в порядке по возрастанию и значение дельта идентификатора изображения сигнализируется относительно предшествующего опорного изображения в соответствующем перечне.
В этом варианте осуществления декодер декодирует оба перечня, обозначаемые «перечень A» и «перечень B» ниже, каждый из которых может содержать нуль или более идентификаторов дельта изображения, absolute_delta_poc. Для каждого индекса в обоих перечнях синтаксически анализируется значение absolute_delta_poc.
На Фиг. 7 показана блок-схема, иллюстрирующая реализацию этапов S2 и S3 по Фиг. 2 согласно этому варианту осуществления. Способ продолжается от этапа S1 по Фиг. 7. Этап S30 вычисляет идентификатор изображений, идентифицирующий первое опорное изображение в первом перечне, на основании разности между идентификатором изображения для текущего изображения, подлежащего декодированию, и дельта идентификатором изображения, извлеченным из описания буфера для первого опорного изображения в первом перечне. Этап S31 соответственно вычисляет идентификатор изображения, идентифицирующий первое опорное изображение во втором перечне, на основании суммы идентификатора изображения для текущего изображения и дельта идентификатора изображения, извлеченного из описания буфера, для первого опорного изображения во втором перечне.
A
A
B
B
A
B
A
A
B
B
В конкретном варианте осуществления этап S30 вычисляет POC(0)=POC(currPic)-absolute_delta_poc(0), и этап S31 вычисляет POC(0)=POC(currPic)+absolute_delta_poc(0). В этом варианте осуществления идентификаторы дельта изображения absolute_delta_poc(0) и absolute_delta_poc(0) являются величинами без знака, то есть, неотрицательными значениями, в альтернативном варианте осуществления, идентификаторы дельта изображения могли быть величинами со знаком. В таком случае дельта идентификатор изображения первого опорного изображения в первом перечне - предпочтительно неположительное значение, тогда как дельта идентификатор изображения первого опорного изображения во втором перечне - предпочтительно неотрицательное значение. Этап S30 затем вычисляет POC(0)=POC(currPic)+absolute_delta_poc(0) и этап S31 вычисляет POC(0)=POC(currPic)+absolute_delta_poc(0).
Этапы S30 и S31 могут выполняться последовательно в любом порядке, то есть, сначала этап S30 и затем этап S31, или сначала этап S31 и затем этап S30. Альтернативно, эти два этапа S30 и S31 могут выполняться, по меньшей мере, частично параллельно.
Последующие этапы S32 и S33 вычисляют идентификаторы изображения для оставшихся опорных изображений в двух перечнях.
В варианте осуществления этап S32 вычисляет идентификатор изображения для каждого опорного изображения в первом перечне, кроме первого опорного изображения в первом перечне в соответствии с порядком по первому перечню, на основании разности между идентификатором изображения предшествующего опорного изображения в первом перечне и беззнаковым дельта идентификатором изображения, извлеченным из описания буфера, для опорного изображения. Этап S33 соответственно вычисляет идентификатор изображения для каждого опорного изображения во втором перечне, кроме первого опорного изображения во втором перечне в соответствии с порядком по второму перечню, на основании суммы идентификатора изображения предшествующего опорного изображения во втором перечне и беззнакового дельта идентификатора изображения, извлеченного из описания буфера, для опорных изображений. Порядок по первому перечню предпочтительно имеет форму убывающих значений идентификатора изображения, тогда как порядок по второму перечню предпочтительно имеет форму возрастающих значений идентификатора изображения. Например, если идентификаторы изображения указывают порядки вывода, опорные изображения в первом перечне выводятся для отображения до текущего изображения, тогда как опорные изображения во втором перечне выводятся для отображения после текущего изображения. Опорные изображения в первом перечне затем располагаются в порядке перечня по убыванию относительно значений идентификаторов изображения, и опорные изображения во втором перечне располагаются в порядке перечня по возрастанию относительно значений идентификатора изображения.
A
A
A
A
B
B
B
Конкретный вариант осуществления этапа S32 вычисляет идентификатор изображения, POC(i), для номера i изображения в первом перечне в виде POC(i)=POC(i-1)-absolute_delta_poc(i). Этап S33 соответственно вычисляет идентификатор изображения, POC(i), для номера i изображения во втором перечне в виде POC(i)=POC(i-1)+absolute_delta_pocB(i).
В альтернативном варианте осуществления идентификаторы дельта изображения, извлеченные из описания буфера, являются идентификаторами дельта изображения со знаком. В конкретной реализации идентификаторы дельта изображения для опорных изображений в первом наборе предпочтительно имеют неположительные значения, и дельта идентификаторы изображения для опорных изображений во втором наборе предпочтительно имеют ненулевые значения.
A
A
A
B
B
B
Реализация этапа S32 согласно этому варианту осуществления вычисляет идентификатор изображения для каждого опорного изображения в первом перечне, кроме первого опорного изображения в первом перечне, на основании суммы идентификатора изображения предшествующего опорного изображения в первом перечне и имеющего знак дельта идентификатора, извлеченного из описания буфера, для опорного изображения. Предпочтительно идентификатор изображения вычисляется на этапе S32 в виде POC(i)=POC(i-1)+absolute_delta_poc(i). Соответственно, этап S33 вычисляет идентификатор изображения для каждого опорного изображения во втором перечне, кроме первого опорного изображения во втором перечне, на основании суммы идентификатора изображения предшествующего опорного изображения во втором перечне и имеющего знак дельта идентификатора, извлеченного из описания буфера, для опорного изображения. Идентификатор изображения предпочтительно вычислен на этапе S33 в виде POC(i)=POC(i-1)+absolute_delta_poc(i).
Идентификатор изображения для предшествующего опорного изображения в первом или втором упомянутом выше перечне является предпочтительно идентификатором изображения ближайшего предшествующего опорного изображения, то есть, номером i-1 опорного изображения, если данное опорное изображение имеет номер i.
Этапы S32 и S33, как упомянуто выше, предпочтительно выполняются для каждого опорного изображения в первом и втором перечне, кроме первого изображения в первом и втором перечне, что схематично обозначено линиями L3 и L4 на Фиг. 7. Таким образом, этап S32 предпочтительно выполняется для каждого индекса i в диапазоне от 1 до NrOfValuesInListA - 1 (количество значений в перечне А -1) (если индекс 0 указывает первое опорное изображение в первом перечне), и этап S33 предпочтительно выполняется для каждого индекса i в диапазоне от 1 до NrOfValuesListB - 1 (если индекс 0 указывает первое опорное изображение во втором перечне).
Этапы S32 и S33 могут выполняться в любом последовательном порядке или действительно, по меньшей мере, частично параллельно. Способ затем переходит на этап S4 по Фиг. 2, где буфер декодированных изображений обновляется на основании идентификаторов изображений, вычисленных на этапах S30-S33.
В варианте осуществления этапы S30 и S32, относящиеся к первому перечню, составляют подпроцесс, и этапы S31 и S33, относящиеся к второму перечню, составляют подпроцесс. Два подпроцесса затем могут выполняться последовательно в любом порядке или, по меньшей мере, частично параллельно.
Вышеописанные варианты осуществления сигнализации опорных изображений в описании буфера путем кодирования и декодирования идентификаторов изображения относительно предшествующих опорных изображений в соответствии с порядком(ами) по перечню в описании буфера являются особенно подходящими в связи с кодированием с переменной длиной. В таком подходе малые величины информации идентификатора изображения, такие как дельта идентификаторы изображения, обычно представляются более короткими, в терминах количества символов или битов, кодовыми словами по сравнению с более высокими значениями для информации идентификатора изображения.
Например, при допущении, что текущее изображение имеет идентификатор изображения, соответствующий 48, и что текущее изображение кодируется со ссылкой на четыре опорные изображения с идентификаторами изображения, соответствующими 46, 47, 49 и 51. Кроме того, можно допустить, что наибольшим значением идентификатора изображения является 255. При применении кодирования с фиксированной длиной (слова) и без кодирования идентификаторов изображения относительно друг друга потребуется 4x8=32 битов для сигнализации этих четырех идентификаторов изображения. Если вместо этого использовать кодирование с переменной длиной для представления 46, 47, 49 и 51, то будет необходимым еще более длинное кодовое слово, чем суммарно 32 бита. Если вариант осуществления, изложенный выше в связи с Фиг. 7, используется с беззнаковыми дельта идентификаторами изображения, то первый перечень будет содержать дельта идентификаторы изображения 1, 1, и второй перечень будет содержать дельта идентификаторы изображения 1, 2. Эти значения 1, 1, 1, 2 могут эффективно кодироваться кодом с переменной длиной, используя меньшее количество битов, чем 32 бита, так 1+1+1+3=6 битов в итоге. Это значительное сокращение в битах имеет место только для описания одного буфера. В типичном видеопотоке может быть несколько сотен или тысяч описаний буферов, посылаемых из кодера на декодер.
Вышеописанная сигнализация идентификаторов изображения в описании буфера может дополняться перечнем, задающим, по меньшей мере, один идентификатор изображения абсолютным образом, например, используя кодирование с фиксированной длиной. Например, описание буфера может содержать вышеупомянутые четыре опорные изображения 46, 47, 49 и 51 и необязательно дополнительное опорное изображение, имеющее значение идентификатора изображения, которое значительно отличается от значений идентификаторов изображения этих четырех опорных изображений, такое как 2. В таком случае может быть более эффективным с точки зрения кодирования задавать описание буфера содержащим, по меньшей мере, один перечень опорных изображений, где идентификаторы изображения декодируются на основании информации идентификатора изображения, извлеченной из описания буфера, для текущего опорного изображения и любого опорного изображения, предшествующего текущему опорному изображению в перечне. В вышеупомянутом представленном примере первый перечень будет задавать опорные изображения 46 и 47, и второй перечень будет задавать опорные изображения 49 и 51. Этот, по меньшей мере, один перечень (в настоящем примере - два перечня) затем дополняется перечнем, содержащим, по меньшей мере, один идентификатор изображения соответственного опорного изображения, то есть, опорного изображения 2 в примере. Этот идентификатор изображения затем предпочтительно обеспечивается в коде с фиксированной длиной и не кодируется относительно какого-либо другого опорного изображения, заданного в описании буфера.
Альтернативно, этот дополнительный перечень задает, по меньшей мере, одно опорное изображение и содержит соответственный дельта идентификатор изображения, по меньшей мере, для одного опорного изображения. Этот дельта идентификатор изображения затем получают вычислением разности между идентификатором изображения для текущего изображения и идентификатором изображения для опорного изображения. Этот, по меньшей мере, один дельта идентификатор изображения затем предоставляется в дополнительном перечне в описании буфера, и может предпочтительно предоставляться в коде с фиксированной длиной или кодированным подобно перечням, упомянутым выше, то есть, относительно предшествующего дельта идентификатора изображения. В таком случае код с переменной длиной может использоваться, но с выборочной операцией по модулю, которая может применяться для экономии битов.
На Фиг. 8 показана блок-схема, иллюстрирующая дополнительные этапы способа по Фиг. 2 с описанием буфера, содержащим такой дополнительный перечень. Способ продолжается от этапа S3 по Фиг. 2. Следующий этап S40 обеспечивает перечень, содержащий, по меньшей мере, один идентификатор изображения соответственного опорного изображения. Этот этап S40 может быть реализован путем извлечения перечня из информации описания буфера, включенной в кодированное представление изображения. Альтернативно, перечень можно извлекать из заданного поля управляющей информации в кодированном представлении изображения.
Следующий этап S41 модифицирует описание буфера, используя перечень, обеспеченный на этапе S40. Это подразумевает, что, по меньшей мере, один идентификатор изображения, заданный в предоставленном перечне, добавляется к идентификаторам изображения, определенным из описания буфера, чтобы сформировать модифицированное или обновленное описание буфера.
Способ затем переходит на этап S4, где буфер декодированных изображений обновляется на основании модифицированного описания буфера.
Этот пример осуществления модифицирования описания буфера с использованием другого перечня, описывающего опорные изображения, кодированные абсолютным образом, предпочтительно с использованием кодирования с фиксированной длиной, может снизить скорость передачи битов для описания буфера, если описание буфера содержит опорные изображения с большими значениями дельта идентификатора изображения.
Информация описания буфера, извлеченная из кодированного представления изображения, в варианте осуществления, может составлять описание буфера как таковое. Следовательно, кодированное представление изображения, тем самым содержит информацию идентификатора изображения, такую как дельта идентификаторы изображения, для опорных изображений, заданных описанием буфера.
Это описание буфера затем может включаться в заголовок фрагмента, другой заголовок изображения или другую структуру данных, оговоренную стандартом, которому соответствуют кодер и декодер. Обычно, изображение 10, как показано на Фиг. 3, может быть разложено на один или более фрагментов 20, 22, где каждый фрагмент является независимо кодируемым и декодируемым относительно других фрагментов изображения 10. В варианте осуществления каждый заголовок фрагмента для данного изображения содержит одинаковую информацию описания буфера. Это означает, что, даже если пакет данных, несущий полезную нагрузку видео и управляющую информацию для одного из фрагментов изображения, теряется в передаче из кодера на декодер, оставшиеся фрагменты изображения могут быть декодируемыми декодером, поскольку каждый такой оставшийся фрагмент содержит соответственную копию информации описания буфера.
В другом варианте осуществления информация описания буфера, присутствующая в кодированном представлении изображения, не обязательно должна быть одинаковой с описанием буфера для текущего изображения, а предпочтительно дает возможность идентификации и извлечения описания буфера. Таким образом, в этом варианте осуществления информация описания буфера, присутствующая в кодированном представлении изображения, косвенно задает опорные изображения указанием на описание буфера, несущее информацию идентификатора изображения, такую как дельта идентификаторы изображения, давая возможность вычисления идентификаторов изображения опорных изображений, как изложено в документе.
В таком случае описание буфера может нести структура данных, связанная с кодированным представлением 60 изображения, см. Фиг. 4. Примеры таких структур данных включают в себя набор параметров изображения (PPS) 67 и набор параметров последовательности (SPS) 68. PPS 67 и/или SPS 68 могут непосредственно включаться в кодированное представление 60, но обычно связываются с ним включением идентификатора PPS и/или идентификатора SPS в кодированное представление 60. Например, каждый заголовок 65 фрагмента может включать в себя идентификатор PPS, уведомляющий какой PPS 67 применять для текущего изображения. Соответствующий PPS 67 может в свою очередь включать в себя идентификатор SPS, уведомляющий, какой SPS 68 применять для PPS 67 и, следовательно, для текущего изображения.
Описание буфера затем может вставляться в PPS 67 или SPS 68, назначенные текущему изображению. В таком случае, идентификатор PPS или идентификатор SPS, который присутствует в кодированном представлении 60, составляет информацию описания буфера, которая присутствует в кодированном представлении 60. Этот идентификатор PPS или идентификатор SPS затем дает возможность извлечения описания буфера, которое задает опорные изображения, и идентификатор PPS или идентификатор SPS, следовательно, косвенно задает опорное изображение.
PPS 67 и SPS 68 просто составляют примеры структур данных, связанных с кодированными представлениями 60 изображений, и которые может использоваться для переноса информации описания буфера согласно вариантам осуществления.
PPS и SPS обычно совместно используются между несколькими изображениями в видеопотоке. Следовательно, сигнализация описания буфера для изображения в PSS и SPS предпочтительно выполняется путем обеспечения структуры данных, такой как таблица, содержащей множество предварительно заданных описаний буфера, каждое задающее соответственные опорные изображения.
Каждое описание буфера в сформированной структуре данных затем задает опорные изображения, как изложено в документе, в терминах информации идентификатора изображения, исходя из которой идентификаторы изображения могут вычисляться на основании идентификатора изображения для текущего изображения и на основании информации идентификатора изображения предшествующих опорных изображений в описании буфера. Каждое описание буфера затем может обеспечиваться в виде элемента в структуре данных или таблице.
Структура данных сигнализируется из кодера на декодер. Эта сигнализация может выполняться в соответствии с различными исполнениями. Структура данных может переноситься в PPS, SPS, новом наборе параметров или в другой структуре данных, оговоренной стандартом, которому соответствуют кодер и декодер. В таком случае кодированное представление изображения содержит идентификатор PPS или идентификатор SPS, например, в заголовке фрагмента. Этот идентификатор PPS или идентификатор SPS, образующий часть информации описания буфера, дает возможность идентификации структуры данных, которая является доступной при декодировании текущего изображения.
Чтобы указать, какое описание буфера из структуры данных использовать для текущего изображения, идентификатор, образующий часть информации описания буфера, сигнализируется для текущего изображения и включается в кодированное представление изображения. Примером такого идентификатора является неотрицательное целое, сигнализируемое в заголовке(ах) фрагмента текущего изображения, представляющее номер описания буфера в порядке, в котором описания буфера содержаться в структуре данных.
Введение элементов описания буфера, например, в SPS, снижает издержки в битах для сигнализации описаний буфера явным образом в заголовке фрагмента. Эти описания буфера могут использоваться для множества фрагментов/изображений в той же последовательности, то есть, видеопотока, и таким образом сокращают количество битов, требуемых на одно изображение.
Согласно дополнительному варианту осуществления явную сигнализацию описания буфера и ссылочную сигнализацию по отношению к элементу в общей структуре данных с несколькими предварительно заданными описаниями буфера, такими как элемент в таблице выше, можно объединять. В таком случае они могут объединяться декодером, чтобы сформировать окончательное описание буфера для текущего изображения. Один способ объединить явную сигнализацию и ссылочную сигнализацию состоит в присоединении набора опорных изображений, описанных согласно явной сигнализации, с набором опорных изображений, описанных согласно ссылочной сигнализации, чтобы сформировать объединенный набор опорных изображений.
В конкретном варианте осуществления кодированное представление изображения предпочтительно содержит флаг, чтобы указывать, были ли выбрана явная сигнализация информации описания буфера и/или неявная сигнализация информации описания буфера для текущего изображения. Этот флаг может, например, включаться в заголовок фрагмента кодированного представления изображения или в некоторое другое поле управляющей информации.
A
A
A
A
A
A
В вариантах осуществления, раскрытых в документе, описание буфера может включать соответственные дельта идентификаторы изображения для опорных изображений, заданных описанием буфера. Вариантом осуществления таких дельта идентификаторов изображения является рассмотренный выше параметр absolute_delta_poc. В альтернативном варианте осуществления параметр absolute_delta_poc получают на основании дельта идентификатора изображения для опорного изображения. Например, дельта идентификатор изображения, включенный в описание буфера для опорного изображения, может быть параметром absolute_delta_poc_minus1. Параметр absolute_delta_poc затем получают в виде absolute_delta_poc_minus1 + 1. Следовательно, настоящие варианты осуществления также охватывают случай, где параметр absolute_delta_poc заменяется в раскрытых уравнениях параметром absolute_delta_poc_minus1 + 1 или подобной разновидностью. Например, уравнение POC(i)=POC(i-1)-absolute_delta_poc(i) тогда заменится на POC(i)=POC(i-1)-(absolute_delta_poc_minus1(i)+1).
На Фиг. 9 показана упрощенная блок-схема для схемы буфера ссылок согласно варианту осуществления. В этой схеме все операции буфера декодированных изображений применяют после синтаксического анализа заголовка первого фрагмента в изображении, но перед декодированием изображения, используя описание буфера декодированных изображений, как проиллюстрировано на Фиг. 9. Описание буфера, например, сигнализируется в заголовке фрагмента или явно или путем ссылки на предварительно заданную структуру данных, сигнализированную в PPS или SPS.
Варианты осуществления в связи с этим обеспечивают большие концептуальные изменения по отношению к процессу декодирования. В традиционном стандарте H.264/MPEG-4 AVC и предшествующих проектах HEVC, относительные операции даются декодеру либо неявно, то есть, скользящее окно, либо явно, MMCO, и декодер отвечает за применение этих относительных операций и отслеживание опорных изображений, то есть, какие изображения могут использоваться для опорных. В предложенной схеме опорные изображения, то есть, какие изображения могут использоваться для опорных, сигнализируется внутри текущего изображения, например, в заголовке фрагмента, таким образом устраняя необходимость неявно и явно сигнализировать относительные операции.
Это означает, что каждое изображение будет иметь абсолютное описание опорных изображений вместо относительного описания, как в H.264/MEPG-4 AVC, где разностная (дельта) информация извлекается из MMCO или на основе использования процесса скользящего окна.
Согласно конкретному варианту осуществления, описание буфера содержит информацию идентификатора изображения для всех необходимых опорных изображений, в буфере декодированных изображений, чтобы обеспечить абсолютную ссылку на изображения, подлежащие использованию в качестве опорных изображений. Информация идентификатора изображения используется для вычисления идентификаторов изображения для опорного изображения, как выше изложено в документе.
Все изображения в буфере декодированных изображений, которые не являются частью описания буфера, предпочтительно помечаются как неиспользуемые для опорного.
В H.264/MPEG-4 AVC процесс, который доставляет изображения для вывода (именуемый процессом "выталкивания" на Фиг. 1) иногда выполняется до декодирования, то есть, если был пропуск в номере кадра. Процесс "выталкивания" также выполняется после декодирования и пометки изображения.
В предложенной схеме по Фиг. 9 процесс "выталкивания" применяется до декодирования. Можно дискутировать, что это налагает дополнительную задержку в процесс декодирования до доставки изображений для вывода. Однако следует отметить, что первое изображение для отображения уникально задается после этапа процесса декодирования, как только число не отображенных изображений в буфере декодированных изображений будет больше или равно num_reorder_frames (число кадров повторного упорядочения). Таким образом, декодер может доставить это изображение для отображения непосредственно после этапа процесса декодирования. Таким образом, задержка для предложенной схемы является равной задержке в существующей схеме HEVC.
В необязательном подходе декодер может определять как отсутствующее опорное изображение, заданное описанием буфера, но не присутствующее в опорном изображении. По выбору скрытое или «несуществующее» изображение затем можно сформировать на основании описания буфера и посредством этого присвоить идентификатор изображения, определенный для отсутствующего изображения, скрытому или несуществующему изображению.
Вышеупомянутый процесс пометки изображения, процесс выталкивания и необязательное формирование несуществующих изображений предпочтительно выполняется до фактического декодирования данных полезной нагрузки видео для текущего изображения, как указано на Фиг. 9.
Имеются различные доступные альтернативы, которые могут использоваться в качестве идентификатора изображения согласно вариантам осуществления. Например, идентификатор изображения может быть порядковым номером декодирования, порядковым номером отображения, порядковым номером вывода или комбинацией порядкового номера отображения и дополнительного идентификатора или действительно любой другой информацией, которая может использоваться, чтобы однозначно идентифицировать изображение.
Примеры таких идентификаторов изображения включают в себя счетчик порядка изображения (Picture Order Count, POC), номер кадра (frame_num), или POC и дополнительный идентификатор (additional_picture_id).
В конкретном варианте осуществления фактическое значение идентификатора изображения используется вместе с дополнительной информацией или другими данными, такими как позиция (порядковая позиция в перечне) для опорного изображения в описании буфера, чтобы однозначно идентифицировать релевантное опорное изображение. Следовательно, описание буфера, идентифицированное или полученное согласно информации описания буфера, дает возможность однозначной идентификации релевантных опорных изображений. В варианте осуществления непосредственно идентификатор изображения, такой как POC или POC плюс дополнительный идентификатор, могут использоваться для однозначной идентификации опорного изображения.
«Однозначно идентифицировать опорное изображение» используется в документе для обозначения, что идентификатор изображения непосредственно или идентификатор изображения вместе с другой информацией в информации описания буфера, такой как порядок, в котором описание буфера задает опорные изображения, используются, чтобы явно идентифицировать опорное изображение. Следовательно, данный идентификатор изображения или идентификатор изображения и другая информация дают возможность идентификации релевантного опорного изображения среди изображений видеопотока.
На Фиг. 10 показана блок-схема, иллюстрирующая способ кодирования изображения в видеопотоке множества изображений. Способ обычно начинается на этапе S50, где опорные изображения видеопотока определяются в качестве опорного при кодировании. В варианте осуществления этап S50 определяет одно или более опорных изображений, которые используются в качестве опорного при кодировании для текущего изображения, подлежащего кодированию. Следовательно, данные пикселов текущего изображения затем кодируются со ссылкой на одно или более опорных изображений. Альтернативно, или в дополнение, по меньшей мере, одно опорное изображение, определенное на этапе S50, может использоваться в качестве опорного при кодировании для последующего изображения в видеопотоке, то есть, изображения, подлежащего кодированию и декодированию после текущего изображения. В конкретном варианте осуществления S50 определяет, для текущего изображения, какое-либо опорное изображение в видеопотоке в качестве опорного при кодировании для текущего изображения и какое-либо опорное изображение видеопотока в качестве опорного при кодировании для последующего изображения. Следовательно, в конкретном варианте осуществления этап S50 определяет все опорные изображения, которые находятся до текущего изображения в порядке декодирования, и это может использоваться для межкадрового предсказания для текущего изображения или любого изображения, следующего после текущего изображения в порядке декодирования.
Следующий этап S51 обеспечивает соответственный идентификатор изображения для каждого опорного изображения из опорных изображений, определенных на этапе S50. Идентификатор изображения используется, возможно вместе с другими данными, чтобы однозначно идентифицировать опорное изображение. Следовательно, идентификатор изображения может рассматриваться как абсолютная ссылка на изображения, подлежащие использованию как опорные изображения. Это означает, что возможно корректно идентифицировать релевантное опорное изображение, если дан его идентификатор изображения и необязательно другие данные.
Этап S51 предпочтительно выполняется для каждого опорного изображения, определенного на этапе S50, что схематично проиллюстрировано линией L5.
Идентификаторы изображения, обеспечиваемые на этапе S51, могут считываться из частей заголовков опорных изображений, определенных на этапе S50, или иным образом извлекаться из данных, представляющих опорные изображения, от этапа S50.
Этап S52, который относится к определению информации идентификатора изображения первого опорного изображения в каждом перечне в описании буфера, дополнительно описывается ниже.
Этап S53 выполняется для каждого опорного изображения в, по меньшей мере, части опорных изображений, определенных на этапе S50, кроме первого опорного изображения в соответствии с порядком по перечню опорных изображений. Если, как упомянуто выше, опорные изображения организованы в единственный перечень, этап S53 предпочтительно выполняется для каждого опорного изображения, кроме первого опорного изображения, что схематично проиллюстрировано линией L6. Однако, если опорные изображения организованы в несколько перечней, этап S53 предпочтительно выполняется для каждого опорного изображения, кроме соответственного первого опорного изображения в каждом перечне.
Этап S53 определяет информацию идентификатора изображения для "непервого" опорного изображения на основании идентификатора изображения, идентифицирующего опорное изображение, и на основании идентификатора изображения, идентифицирующего предшествующее опорное изображение в текущем перечне в соответствии с порядком по перечню.
Следующий этап S54 формирует информацию по описанию буфера, также называемому набором параметров опорных изображений (RPS). Эта информация обозначается «информация описания буфера» в документе. Информация описания буфера формируется на основании информации идентификатора изображения, определенной на этапе S53 (и на этапе S52). Эта информация описания буфера задает, предпочтительно однозначно задает, опорные изображения, определенные на этапе S50, и тем самым - идентификаторы изображения, обеспечиваемые на этапе S51. Следовательно, является возможным извлечь, по меньшей мере, один идентификатор изображения из информации описания буфера.
Сформированная информация описания буфера вставляется на этапе S55 в кодированное представление текущего изображения. Следовательно, кодированное изображение вследствие этого несет информацию описания буфера, которая может использоваться в декодере, чтобы определять и идентифицировать опорные изображения, необходимые для декодирования текущего изображения и/или любого последующее изображение в видеопотоке.
Способ по Фиг. 10 с этапами S50-S55 предпочтительно выполняется для каждого изображения в видеопотоке, кроме какого-либо изображения IDR, что заставляет обновляться буфер декодированных изображений, и тем самым не требует какой-либо информации описания буфера.
Этап S52 по Фиг. 10 определяет информацию идентификатора изображения для первого опорного изображения или для каждого первого опорного изображения на каждый перечень в описании буфера. Информация идентификатора изображения определяется на основании идентификатора изображения, идентифицирующего первое опорное изображение, и обеспечиваемого на этапе S51, и идентификатора изображения текущего изображения, подлежащего кодированию.
На Фиг. 11 показана блок-схема, иллюстрирующая конкретное осуществление этого этапа S52 и последующего этапа S53 по Фиг. 10. Способ продолжается от этапа S51 по Фиг. 10. Следующий этап S60 вычисляет величину дельта на основании разности между идентификатором изображения для первого опорного изображения и идентификатором изображения для текущего изображения. Последующий этап S61 определяет дельта идентификатор изображения на основании абсолютного значения величины дельта, и этап S62 определяет идентификатор знака на основании знака величины дельта. Информация идентификатора изображения для первого опорного изображения тем самым содержит дельта идентификатор изображения и идентификатор знака. Таким образом, в варианте осуществления deltaPOC(0)=POC(0)-POC(currPic) и absolute_delta_poc=|deltaPOC(0)| и sign представляет sign(deltaPOC(0)).
Этап S63 вычисляет величину дельта для каждого опорного изображения (в каждом перечне) кроме первого опорного изображения. Эту величину дельта вычисляют на основании разности между идентификатором изображения опорного изображения и идентификатором изображения, идентифицирующим предшествующее опорное изображение (в перечне) в соответствии с порядком по перечню. В конкретном осуществлении эту величину дельта вычисляют в виде deltaPOC(i)=POC(i)-POC(i-1) для опорного изображения с номером i.
Следующий этап S64 определяет дельта идентификатор изображения для опорного изображения. Этот дельта идентификатор изображения определяют на основании разности между величиной дельта, вычисленной на этапе S63, и дельта идентификатором изображения, определенным для предшествующего опорного изображения в соответствии с порядком по перечню, или на основании суммы величины дельта и дельта идентификатора изображения, определенного для предшествующего опорного изображения в соответствии с порядком по перечню. Выбор между использованием разности или суммы зависит в осуществлении от того, сконфигурированы ли кодер и декодер с возможностью организовывать опорные изображения в порядке по возрастанию или в порядке по убыванию. Таким образом, в варианте осуществления absolute_delta_poc(i)=deltaPOC(i)±absolute_delta_poc(i-1).
Этапы S63 и S64 таким образом выполняются для каждого опорного изображения на каждый перечень, кроме соответственных первых опорных изображений, что схематично иллюстрируется линией L7.
Способ затем переходит на этап S54 по Фиг. 10.
На Фиг. 12 показана блок-схема, иллюстрирующая конкретный вариант осуществления этапов S51-S53 по Фиг. 10. Способ продолжается от этапа S50 по Фиг. 10. Следующий этап S70 обеспечивает первый перечень идентификаторов изображения, идентифицирующих какое-либо опорное изображение, определенное на этапе S50 по Фиг. 10, предшествующее текущему изображению в соответствии с заданным порядком, таким как порядок вывода. Этап S71 соответственно обеспечивает второй перечень идентификаторов изображения, идентифицирующих какие-либо опорные изображения, определенные на этапе S50 по Фиг. 10, следующие после текущего изображения в соответствии с заданным порядком. Таким образом, этап S70 обеспечивает число элементов, то есть, идентификаторов изображения, в первом перечне, и этап S71 соответственно обеспечивает число элементов во втором перечне.
Этапы S70 и S71 могут выполняться последовательно в любом порядке или, по меньшей мере, частично параллельно.
A
A
B
B
Следующий этап S72 определяет дельта идентификатор изображения для первого опорного изображения в первом перечне на основании разности между идентификатором изображения текущего изображения и идентификатором изображения первого опорного изображения в первом перечне. В конкретном варианте осуществления этап S72 определяет absolute_delta_poc(0)=POC(currPic)-POC(0). Этап S73 соответственно определяет дельта идентификатор изображения для идентификатора первого опорного изображения во втором перечне на основании разности между идентификатором изображения первого опорного изображения во втором перечне и идентификатором изображения текущего изображения. В конкретном варианте осуществления этап S73 определяет absolute_delta_poc(0)=POC(0)-POC(currPic).
Этапы S72 и S73 могут выполняться последовательно в любом порядке или, по меньшей мере, частично параллельно.
A
A
A
B
B
B
Этап S74 выполняется для каждого оставшегося опорного изображения в первом перечне, кроме первого опорного изображения в первом перечне, что схематично иллюстрируется линией L8. Этап S74 определяет дельта идентификатор изображения на основании разности между идентификатором изображения предшествующего опорного изображения в первом перечне в соответствии с порядком по первому перечню и идентификатором изображения для опорного изображения. В конкретном варианте осуществления этап S74 определяет absolute_delta_poc(i)=POC(i-1)-POC(i). Этап S75 соответственно выполняется для каждого оставшегося опорного изображения во втором перечне, кроме первого опорного изображения во втором перечне, что схематично иллюстрируется линией L9. Этап S75 определяет дельта идентификатор изображения на основании разности между идентификатором изображения, идентифицирующим текущее изображение, и идентификатором изображения предшествующего опорного изображения во втором перечне в соответствии с порядком по второму перечню. В конкретном варианте осуществления этап S75 определяет absolute_delta_poc(i)=POC(i)-POC(i-1). Информация идентификатора изображения, определенная для опорных изображений, затем содержит дельта идентификаторы изображения.
В варианте осуществления этапы S70, S72, S74 образуют подпроцесс, относящийся к первому перечню, и этапы S71, S73, S75 образуют другой подпроцесс, относящийся ко второму перечню. Два подпроцесса затем могут выполняться последовательно в любом порядке или, по меньшей мере, частично параллельно.
Как обсуждено выше в связи с Фиг. 8, может использоваться перечень, содержащий явные идентификаторы изображения для, по меньшей мере, одного опорного изображения, или информация, дающая возможность вычисления такого идентификатора изображения с использованием идентификатора изображения для текущего изображения, но без какой-либо ссылки на предшествующие опорные изображения для изображений в описании буфера. На Фиг. 13 иллюстрируется этот подход в связи с кодером. Способ продолжается от этапа S54 по Фиг. 10. Следующий этап S80 обеспечивает перечень, содержащий, по меньшей мере, один идентификатор изображения для соответственного опорного изображения. Этот перечень сконфигурирован, чтобы использоваться для модифицирования описания буфера добавлением, по меньшей мере, одного идентификатора изображения к идентификаторам изображения, которые определяются из описания буфера, чтобы сформировать окончательные идентификаторы изображения для соответственных опорных изображений. Этот перечень может вставляться в заголовок фрагмента кодированного представления изображения, в другое поле управляющей информации кодированного представления, или в PPS или SPS, связанные с кодированным представлением изображения.
На Фиг. 15 показана структурная схема декодера 100 согласно варианту осуществления. Декодер 100 сконфигурирован с возможностью декодировать кодированное представление изображения для видеопотока множества изображений. Декодер 100 содержит блок 110 извлечения данных, сконфигурированный для извлечения информации описания буфера, идентифицирующей описание буфера, задающее идентификаторы изображения, из кодированного представления изображения. Определитель 120 идентификатора изображения сконфигурирован для определения идентификатора изображения, идентифицирующего опорное изображение, заданное в описании буфера, на основании информации идентификатора изображения, извлеченной блоком 110 извлечения данных из описания буфера, для опорного изображения и опорного изображения, предшествующего опорному изображению в соответствии с порядком по перечню в описании буфера. Декодер 100 также содержит блок 130 управления буфером, сконфигурированный, чтобы обновлять буфер декодированных изображений в декодере 100 или связанный с декодером 100 на основании идентификатора изображения, определенного определителем 120 идентификатора изображения.
В конкретном варианте осуществления определитель 120 идентификатора изображения сконфигурирован для определения идентификатора изображения для каждого опорного изображения из перечня в описании буфера, кроме первого опорного изображения в соответствии с порядком по перечню, в перечне. Идентификатор изображения определяется, как упомянуто выше, на основании информации идентификатора изображения, извлеченной блоком 110 извлечения данных из описания буфера, для опорного изображения и любого опорного изображения, предшествующего опорному изображению в соответствии с порядком по перечню в перечне.
Определитель 120 идентификатора изображения предпочтительно также сконфигурирован для определения идентификатора изображения, идентифицирующего первое опорное изображение в соответствии с порядком по перечню. Определитель 120 идентификатора изображения определяет этот идентификатор изображения на основании информации идентификатора изображения, извлеченной блоком 110 извлечения данных из описания буфера, для первого опорного изображения и на основании идентификатора изображения текущего изображения, подлежащего декодированию декодером 100.
В конкретном варианте осуществления блок 110 извлечения данных сконфигурирован, чтобы извлекать дельта идентификатор изображения и идентификатор знака для первого опорного изображения из описания буфера. В таком случае определитель 120 идентификатора изображения сконфигурирован, чтобы вычислять идентификатор изображения для первого опорного изображения на основании дельта идентификатора изображения, идентификатора знака и идентификатора изображения для текущего изображения.
На Фиг. 16 показана структурная схема реализации определителя 120 идентификатора изображения по Фиг. 15. Определитель 120 идентификатора изображения содержит вычислитель 122 дельта сконфигурированный, чтобы вычислять величину дельта deltaPOC(0)=sign×absolute_delta_poc(0) для первого опорного изображения на основании идентификатора знака и дельта идентификатора изображения, извлеченного блоком 110 извлечения данных по Фиг. 15. Вычислитель 124 идентификатора затем вычисляет идентификатор изображения в виде POC(0)=POC(currPic)+deltaPOC(0).
Блок 110 извлечения данных в этом варианте осуществления сконфигурирован, чтобы извлекать из описания буфера соответственный дельта идентификатор изображения для каждого опорного изображения с номером i, по меньшей мере, для одного перечня, заданного в описании буфера, кроме (соответственного) первого опорного изображения в, по меньшей мере, одном перечне. Вычислитель 122 дельта по Фиг. 16 тогда конфигурируется, чтобы вычислять величину дельта в виде deltaPOC(i)=deltaPOC(i-1)+absolute_delta_poc(i), если описание буфера задает опорные изображения в, по меньшей мере, одном перечне в порядке по возрастанию, или в виде deltaPOC(i)=deltaPOC(i-1)-absolute_delta_poc(i), если описание буфера задает опорные изображения в, по меньшей мере, одном перечне в порядке по убыванию. Конкретный порядок предпочтительно предварительно конфигурируется в декодере 100.
Вычислитель 124 идентификатора сконфигурирован, чтобы вычислять идентификатор изображения для опорного изображения с номером i в виде POC(i)=POC(currPic)+deltaPOC(i).
A
A
B
B
В конкретном варианте осуществления описание буфера задает первый перечень опорных изображений и второй перечень опорных изображений. Определитель 120 идентификатора изображения предпочтительно содержит первый вычислитель 126 идентификатора, сконфигурированный, чтобы вычислять идентификатор изображения первого опорного изображения в первом перечне на основании идентификатора изображения текущего изображения и дельта идентификатора изображения, извлеченного блоком 110 извлечения данных из описания буфера, для первого опорного изображения в первом перечне. Идентификатор изображения предпочтительно вычисляется в виде POC(0)=POC(currPic)-absolute_delta_poc(0). Соответственно, второй вычислитель 128 идентификатора сконфигурирован, чтобы вычислять идентификатор изображения, идентифицирующий первое опорное изображение во втором перечне, на основании идентификатора изображения текущего изображения и дельта идентификатора изображения, извлеченного блоком извлечения данных из описания буфера, для первого опорного изображения во втором перечне. Идентификатор изображения предпочтительно вычисляется в виде POC(0)=POC(currPic)+absolute_delta_poc(0). В вышеизложенном варианте осуществления предполагались беззнаковые дельта идентификаторы изображения. Если дельта идентификаторы изображения имеют величины со знаком, то идентификаторы изображения вычисляются в виде соответственных сумм идентификатора изображения для текущего изображения и имеющего знак дельта идентификатора изображения для первого опорного изображения в первом или втором перечне.
A
A
A
A
A
A
Первый вычислитель 126 идентификатора также сконфигурирован, чтобы вычислять идентификатор изображения для каждого опорного изображения с номером i в первом перечне, кроме первого опорного изображения в первом перечне. Этот идентификатор изображения вычисляют на основании идентификатора изображения предшествующего опорного изображения в первом перечне в соответствии с порядком по первому перечню и дельта идентификатора изображения, извлеченного блоком 110 извлечения данных из описания буфера, для опорного изображения с номером i. В конкретном варианте осуществления первый вычислитель 126 идентификатора вычисляет идентификатор изображения в виде POC(i)=POC(i-1)-absolute_delta_poc(i), если дельта идентификатор изображения является величиной без знака или в виде POC(i)=POC(i-1)+absolute_delta_poc(i), если дельта идентификатор изображения является величиной со знаком.
B
B
B
Второй вычислитель 128 идентификатора соответственно сконфигурирован, чтобы вычислять идентификатор изображения для каждого опорного изображения с номером i во втором перечне, кроме первого опорного изображения во втором перечне. Идентификатор изображения вычисляют на основании идентификатора изображения предшествующего опорного изображения во втором перечне в соответствии с порядком по второму перечню и дельта идентификатора изображения, извлеченного блоком 110 извлечения данных из описания буфера, для опорного изображения с номером i. В конкретном варианте осуществления второй вычислитель 128 идентификатора вычисляет идентификатор изображения в виде POC(i)=POC(i-1)+absolute_delta_poc(i). Дельта идентификатор изображения является либо величиной со знаком, либо величиной без знака.
Информация описания буфера, несомая кодированным представлением изображения, используется для идентификации, какому опорному изображению(ям) необходимо присутствовать в буфере декодированных изображений для декодирования текущего изображения и для декодирования любого последующего изображения в видеопотоке. Информация описания буфера тем самым предоставляет декодеру 100 информацию, требуемую для обновления буфера декодированных изображений, чтобы сохранять корректное опорное изображение(я).
В предпочтительном подходе блок 130 управления буфером сконфигурирован, чтобы помечать все опорные изображения, сохраненные в буфере декодированных изображений, но не связываемые с каким-либо из идентификаторов изображения из описания буфера в качестве неиспользуемых для опорных. Опорные изображения, присутствующие в буфере декодированных изображений и связанные с каким-либо из идентификаторов изображения из описания буфера, вместо этого предпочтительно помечаются в качестве используемых для опорных.
Блок 130 управления буфером в декодере 100 предпочтительно сконфигурирован, чтобы помечать любое опорное изображение до декодирования декодером 100 текущего изображения.
В конкретном варианте осуществления декодер 100 сконфигурирован, чтобы выводить нуль или более изображений из буфера декодированных изображений для отображения до того, как декодер 100 декодирует текущее изображение. В конкретном варианте осуществления, декодер 100 выводит какое-либо опорное изображение, помеченное как неиспользуемое для опорного блоком 130 управления буфером.
Как только блок 130 управления буфером обновил буфер декодированных изображений, декодер 100 может декодировать изображение, то есть, декодировать данные полезной нагрузки видео, на основании кодированного представления изображения и, по меньшей мере, одного опорного изображения, сохраненного в обновленном буфере декодированных изображений.
Информация описания буфера предпочтительно предоставляется в управляющей информации в кодированном представлении изображения. Например, блок 110 извлечения данных может быть сконфигурирован, чтобы извлекать информацию описания буфера из заголовка фрагмента в кодированном представлении изображения. В таком случае информация описания буфера предпочтительно извлекается из заголовка первого фрагмента, принятого для текущего изображения, поскольку любые оставшиеся заголовки фрагментов изображения предпочтительно будут нести такую же информацию описания буфера.
В конкретном варианте осуществления информация описания буфера составляет описание буфера с вышеупомянутой информацией идентификатора изображения. Эти данные, таким образом, непосредственно извлекаются блоком 110 извлечения данных из кодированного представления изображения.
В альтернативном варианте осуществления информацией описания буфера является идентификатор описания буфера. Блок 110 извлечения данных, таким образом, извлекает идентификатор из кодированного представления изображения и использует его для идентификации корректного описания буфера, чтобы использовать для кодированного представления изображения. Идентификатор может быть тогда идентификатором элемента в структуре данных или таблице, содержащей множество предварительно заданных описаний буфера. Эту структуру данных могут нести управляющие данные, связанные с видеопотоком, таким как предусмотрено в PPS или SPS. В таком случае информация описания буфера предпочтительно содержит идентификатор элемента в структуре данных и идентификатор PPS и/или SPS, позволяющий идентификацию конкретного PPS или SPS, который несет структуру данных.
В конкретном варианте осуществления декодер 100 содержит блок 140 обеспечения перечня, сконфигурированный для обеспечения перечня, содержащего, по меньшей мере, один идентификатор изображения для соответственного опорного изображения. Этот идентификатор изображения предпочтительно кодируется в коде с фиксированной длиной и без ссылки на какие-либо предшествующие опорные изображения в описании буфера. Этот перечень может, таким образом, содержать идентификаторы изображения для любого нечетного опорного изображения, имеющего идентификатор изображения, который значительно отличается от опорных изображений, по меньшей мере, в одном перечне в описании буфера, которые кодируются и декодируются относительно идентификаторов предшествующих опорных изображений.
По меньшей мере, один идентификатор изображения, обеспечиваемый блоком обеспечения перечня, такой как извлекаемый из заголовка фрагмента или действительно из отдельного перечня в описании буфера, используется модификатором 150 описания буфера, чтобы модифицировать описание буфера. Таким образом, по меньшей мере, один идентификатор изображения добавляется к идентификаторам изображения, заданным описанием буфера.
Декодер может быть реализован, по меньшей мере, частично в виде программного обеспечения. В таком варианте осуществления, как показано на Фиг. 17, декодер 300 содержит входную секцию 310, сконфигурированную для приема кодированных представлений для множества изображений видеопотока. Декодер 300 также содержит процессор 330, сконфигурированный для обработки средства программного кода компьютерной программы, хранимой в запоминающем устройстве 340. Средство программного кода при исполнении на процессоре 330 предписывает процессору 330 извлекать информацию описания буфера, идентифицирующую описание буфера, задающее множество опорных изображений, из кодированного представления изображения. Средство программного кода также предписывает процессору 330 определять идентификатор изображения, идентифицирующий опорное изображение, на основании информации идентификатора изображения, извлеченной из информации описания буфера, для опорного изображения и предшествующего опорного изображения, предшествующего опорному изображению в соответствии с порядком по перечню в описании буфера. Опорное изображение подлежит использованию в качестве опорного при декодировании для изображения и/или последующего изображения в видеопотоке. Процессору 330 дополнительно предписывается обновлять буфер декодированных изображений 330 на основании идентификатора изображения. Декодер 300 также содержит выходную секцию 320, сконфигурированную для вывода декодированных изображений видеопотока.
Процессор 330 может быть универсальным или специально приспособленным компьютером, процессором или микропроцессором, таким как центральный процессор (CPU). Программное обеспечение включает в себя элементы кода компьютерной программы или части программного кода, осуществляющие действие, по меньшей мере, блока 110 извлечения данных, определителя 120 идентификатора изображения и блока 130 управления буфером по Фиг. 15.
Программа может храниться полностью или частью, на или в одном или более подходящих энергозависимых читаемых компьютером носителях или средствах хранения данных, таких как оперативное запоминающее устройство (RAM), или одном или более энергонезависимых читаемых компьютером носителях или средствах хранения данных, таких как магнитные диски, ROM на компакт-дисках (CD-ROM), цифровые многофункциональные диски (DVD), накопители на жестких дисках, в ROM или флэш-памяти. Средство хранения данных может быть локальным средством хранения данных или обеспечиваемым удаленно, например, в сервере данных. Программное обеспечение таким образом может загружаться в рабочую память компьютера или эквивалентную систему обработки для исполнения процессором. Компьютер/процессор не подлежит выделению только для исполнения вышеописанных функций, а может также исполнять другие программные задачи. Неограничительный пример кода программы, используемого для задания декодера 300, включает в себя код «один поток команд, множество потоков данных» (SIMD).
Альтернативно декодер может быть реализован в виде аппаратных средств. Имеются многочисленные разновидности схемных элементов, которые могут использоваться и объединяться для осуществления функций блоков 110-150 декодера 100 по Фиг. 15. Такие разновидности охватываются вариантами осуществления. Конкретными примерами аппаратной реализации декодера 100 является реализация в аппаратных средствах цифрового процессора сигналов (DSP) и технологии интегральных схем, включая и универсальную электронную схему, и схему специализированного применения.
Согласно аспекту вариантов осуществления обеспечивается приемник 200, как показано на Фиг. 14. Приемник 200 содержит входную секцию 210, сконфигурированную для приема кодированных представлений для множества изображений видеопотока. Кодированное представление несет информацию описания буфера согласно вариантам осуществления. Кодированные представления пересылаются на декодер 100, такой как проиллюстрирован на Фиг. 15 или на Фиг. 17, который сконфигурирован для декодирования кодированных представлений множества изображений. Выходная секция 220 приемника 200 сконфигурирована для вывода декодированных изображений видеопотока. Приемник 200 также содержит буфер 230 декодированных изображений, хранящий опорные изображений, подлежащие использованию декодером 100 при декодировании изображений.
На Фиг. 19 показана структурная схема кодера 400 согласно варианту осуществления. Кодер 400 сконфигурирован для кодирования изображения для видеопотока множества изображений в кодированное представление изображения. Кодер 400 содержит определитель 410 опорного изображения, сконфигурированный для определения множества опорных изображений видеопотока в качестве опорного при кодировании для изображения и/или любого последующего изображения в видеопотоке. Блок 420 обеспечения идентификатора изображения в кодере 400 сконфигурирован для обеспечения соответственного идентификатора изображения для каждого опорного изображения, определенного определителем 410 опорного изображения. Идентификатор изображения, обеспеченный блоком 420 обеспечения идентификатора изображения, идентифицирует связанное с ним опорное изображение.
Кодер 400 также содержит определитель 430 информации, сконфигурированный для определения информации идентификатора изображения для каждого опорного изображения для, по меньшей мере, части опорных изображений, определенных определителем 410 опорного изображения, кроме первого опорного изображения, в соответствии с порядком по перечню. Информацию идентификатора изображения определяют на основании идентификатора изображения опорного изображения и на основании идентификатора изображения для предшествующего опорного изображения в соответствии с порядком по перечню. Формирователь 440 информации описания буфера сконфигурирован для формирования информации описания буфера на основании определенной информации идентификатора изображения. Информация описания буфера, сформированная формирователем 440 информации описания буфера, идентифицирует описание буфера, задающее множество опорных изображений, определенных определителем 410 опорного изображения.
Блок 450 вставки данных реализован в кодере 400, чтобы вставлять информацию описания буфера, сформированную формирователем 440 информации описания буфера, в кодированное представление текущего изображения. Следовательно, кодированный битовый поток для видеопотока относительно текущего изображения несет информацию описания буфера. Это означает, что кодированное представление изображения несет информацию описания буфера, которая задает релевантную информацию, то есть, идентификаторы изображения, требуемые декодером, чтобы обновлять буфер декодированных изображений для текущего изображения, чтобы тем самым давать возможность декодирования кодированного представления изображения.
Определитель 430 информации предпочтительно также сконфигурирован для определения информации идентификатора изображения для первого опорного изображения в соответствии с порядком по перечню. Эту информацию идентификатора изображения затем определяют на основании идентификатора изображения для первого опорного изображения и идентификатора изображения для текущего изображения.
На Фиг. 20 иллюстрируется конкретная реализация определителя 430 информации по Фиг. 19. Определитель 430 информации предпочтительно содержит вычислитель 432 дельта, сконфигурированный, чтобы вычислять величину дельта на основании разности между идентификатором изображения для первого опорного изображения и идентификатором изображения для текущего изображения, такую как deltaPOC(0)=POC(0)-POC(currPic). Определитель 434 дельта идентификатора тогда конфигурируется для определения дельта идентификатора изображения на основании абсолютного значения величины дельта, такого как absolute_delta_poc(0)=|delta_POC(0)|. Определитель 463 идентификатора знака сконфигурирован для определения идентификатора знака на основании знака величины дельта, например, знака представляющего sign(delta_POC(0)). Информация идентификатора изображения для первого опорного изображения тогда содержит дельта идентификатор изображения и идентификатор знака.
Описание буфера предпочтительно содержит, по меньшей мере, один перечень опорных изображений, и каждый имеет соответственное первое опорное изображение. В таком случае дельта идентификатор изображения и идентификатор знака могут определяться для каждого первого опорного изображения. Альтернативно, дельта идентификатор изображения и идентификатор знака определяются для первого опорного изображения для первого перечня, тогда как первое опорное изображение для второго перечня содержит только дельта идентификатор изображения в качестве своей информации идентификатора изображения, и это первое опорное изображение затем использует противоположный знак по сравнению со знаком для первого опорного изображения из первого перечня.
Вычислитель 432 дельта тогда предпочтительно конфигурируется, чтобы вычислять величину дельта для каждого опорного изображения с номером i для, по меньшей мере, одного перечня, кроме соответственного первого опорного изображения. Величину дельта вычисляют на основании идентификатора изображения для опорного изображения и идентификатора изображения, идентифицирующего предшествующее опорное изображение в перечне в соответствии с порядком по перечню, предпочтительно на основании разности между этими идентификаторами изображения, такую как deltaPOC(i) = POC(i) - POC(i-1). Определитель 434 дельта идентификатора тогда конфигурируется для определения дельта идентификатора изображения для опорного изображения с номером i на основании величины дельта и дельта идентификатора изображения, определенного для предшествующего опорного изображения. В конкретном варианте осуществления определитель 434 дельта идентификатора сконфигурирован для определения дельта идентификатора изображения на основании разности между величиной дельта и предшествующим дельта идентификатором изображения, такого как absolute_delta_poc(i)=deltaPOC(i)-absolute_delta_poc(i-1). Альтернативно, определитель 434 дельта идентификатора определяет дельта идентификатор изображения на основании суммы величины дельта и предшествующего дельта идентификатора изображения, такой как absolute_delta_poc(i)=deltaPOC(i)+absolute_delta_poc(i-1). Какую из этих альтернатив использовать - зависит от того, располагает ли перечень опорные изображения в порядке по возрастанию или в порядке по убыванию, и предпочтительно предварительно конфигурируется в кодере 400.
В конкретном варианте осуществления блок 420 обеспечения идентификатора изображения сконфигурирован для обеспечения первого перечня идентификаторов изображения для опорных изображений, предшествующих текущему изображению в соответствии с заданным порядком, таким как порядок вывода. Блок 420 обеспечения идентификатора изображения также сконфигурирован для обеспечения второго перечня идентификаторов изображения для опорных изображений после текущего изображения в соответствии с заданным порядком, таким как порядок вывода.
A
A
A
B
B
B
Определитель 434 дельта идентификатора тогда предпочтительно конфигурируется для определения дельта идентификатора изображения для каждого опорного изображения с номером i в первом перечне, кроме первого опорного изображения в первом перечне в соответствии с порядком по первому перечню. Дельта идентификатор изображения предпочтительно определяют на основании разности между идентификатором изображения для предшествующего опорного изображения в первом перечне в соответствии с порядком по первому перечню и идентификатора изображения, идентифицирующего опорное изображение, такой как absolute_delta_poc(i)=POC(i-1)-POC(i). Определитель 434 дельта идентификатора также определяет дельта идентификатор изображения для каждого опорного изображения с номером i во втором перечне, кроме первого опорного изображения во втором перечне в соответствии с порядком по второму перечню. Дельта идентификатор изображения предпочтительно определяют на основании разности между идентификатором упомянутого опорного изображения и идентификатором изображения, идентифицирующим предшествующее опорное изображение в упомянутом втором перечне в соответствии с порядком по второму перечню, такой как absolute_delta_poc(i)=POC(i)-POC(i-1). В альтернативном подходе имеющие знак дельта идентификаторы изображения определяются определителем 434 дельта идентификатора, как ранее изложено в документе.
A
A
B
B
Определитель 430 дельта идентификатора предпочтительно также сконфигурирован для определения дельта идентификатора изображения для первого опорного изображения в первом перечне на основании разности между идентификатором изображения для текущего изображения и идентификатором изображения для первого опорного изображения в первом перечне, такой как absolute_delta_poc(0)=POC(currPic)-POC(0). Определитель 430 дельта идентификатора также определяет дельта идентификатор изображения для первого опорного изображения во втором перечне на основании разности между идентификатором изображения для первого опорного изображения во втором перечне и идентификатором изображения для текущего изображения, такой как absolute_delta_poc(0)=POC(0)-POC(currPic).
Кодер 400 по Фиг. 19 необязательно содержит блок 460 обеспечения перечня, сконфигурированный для обеспечения перечня, содержащего, по меньшей мере, один идентификатор изображения соответственного опорного изображения. Этот перечень подлежит использованию декодером, чтобы модифицировать описание буфера, идентифицированное информацией описания буфера, сформированной для текущего изображения, как выше изложено в документе.
В предпочтительном варианте осуществления блок 450 вставки данных сконфигурирован для вставки информации описания буфера в соответственный заголовок фрагмента кодированного представления изображения. В таком случае каждый заголовок фрагмента для текущего изображения предпочтительно несет одинаковую информацию описания буфера. Это дает возможность декодирования данного фрагменте, даже если другой фрагмент изображения неумышленно потерян.
Также другие позиции помимо управляющей информации в кодированном представлении изображения являются возможными для несения информации описания буфера, как ранее обсуждено в документе.
Кодированное представление изображения может нести информацию идентификатора изображения, определенную определителем 430 информации в качестве информации описания буфера, например в заголовках фрагментов. Это обеспечивает явную сигнализацию описания буфера в кодированном представлении изображения.
В альтернативном варианте осуществления кодер 400 сконфигурирован, чтобы формировать структуру данных, содержащую множество предварительно заданных описаний буфера. Каждое такое предварительно заданное описание буфера, таким образом, задает опорные изображения. Структура данных может, таким образом, использоваться для множества изображений в видеопотоке с целью обеспечения описания буфера, подлежащего использованию в течение декодирования изображений. Формирователь 440 информации описания буфера, таким образом конфигурируется, чтобы выбирать описание буфера в структуре данных на основании идентификаторов изображения, обеспеченных блоком 420 обеспечения идентификатора изображения, для текущего изображения. Описание буфера, которое корректно соответствует идентификаторам изображения, посредством этого выбирается, и информация описания буфера, сформированная формирователем 440 информации описания буфера, содержит идентификатор выбранного описания буфера.
Структура данных затем может вставляться в поле управляющей информации, связанное с кодированным представлением видеопотока, такое как в PPS или SPS. Идентификатор релевантной управляющей информации, то есть идентификатор PPS или идентификатор SPS (могу быть в форме идентификатора PPS для PPS, который в свою очередь содержит идентификатор SPS для релевантного SPS), предпочтительно включается в управляющую информацию кодированного представления текущего изображения, такую как в заголовок фрагмента. В варианте осуществления, заголовок фрагмента или другое поле управляющей информации, таким образом, несет идентификатор управляющей информации и идентификатор выбранного описания буфера в виде информации описания буфера.
Кодер может быть реализован, по меньшей мере, частично в программном обеспечении. В таком варианте осуществления, как показано на Фиг. 21, кодер 600 содержит входную секцию 610, сконфигурированную для приема множества изображений видеопотока. Кодер 600 также содержит процессор 630, сконфигурированный для обработки средства программного кода компьютерной программы, хранимой в запоминающем устройстве 640. Средство программного кода при исполнении в процессоре 630 предписывает процессору 630 определять, для изображения в видеопотоке, опорные изображения видеопотока в качестве опорного при кодировании для изображения и/или последующего изображения в видеопотоке. Процессору 630 также предписывается обеспечивать, для каждого опорного изображения, идентификатор изображения, идентифицирующий опорное изображение и определять для каждого опорного изображения в, по меньшей мере, части определенных опорных изображений, кроме первого опорного изображения в соответствии с порядком по перечню, информацию идентификатора изображения на основании идентификатора изображения для опорного изображения и на основании идентификатора изображения предшествующего опорного изображения в соответствии с порядком по перечню. Процессору 630 далее предписывается формировать информацию описания буфера, идентифицирующую описание буфера, задающее опорные изображения, на основании информации идентификатора изображения. Процессору 630 также предписывается вставлять информацию описания буфера в кодированное представление изображения. Кодер 600 также содержит выходную секцию 620, сконфигурированную для вывода кодированных представлений изображений.
Процессор 630 может быть универсальным или специально приспособленным компьютером, процессором или микропроцессором, таким как центральный процессор (CPU). Программное обеспечение включает в себя элементы кода компьютерной программы или части программного кода, осуществляющие действия, по меньшей мере, определителя 410 опорного изображения, блока 420 обеспечения идентификатора изображения, определителя 430 информации, формирователя 440 информации описания буфера и блока 450 вставки данных по Фиг. 19.
Программа может быть хранимой полностью или частью, на или в одном или более подходящих энергозависимых читаемых компьютером носителях или средствах хранения данных, таких как RAM, или одном или более энергонезависимых читаемых компьютером носителях или средствах хранения данных, таких как магнитные диски, CD-ROM, DVD диски, накопители на жестких дисках, в ROM или флэш-памяти. Средство хранения данных может быть локальным средством хранения данных или обеспечиваться удаленно, например, в сервере данных. Программное обеспечение может таким образом загружаться в рабочую память компьютера или эквивалентную систему обработки для исполнения процессором. Компьютер/процессор не подлежит выделению только для выполнения вышеописанных функций, а может также исполнять другие программные задачи. Неограничительный пример программного кода, используемого для задания кодера 600, включает в себя код «один поток команд, множество потоков данных» (SIMD).
Альтернативно кодер может быть реализован в виде аппаратных средств. Имеются многочисленные разновидности схемных элементов, которые могут использоваться и объединяться для осуществления функций блоков 410-460 в кодере 400 по Фиг. 19. Такие разновидности охватываются вариантами осуществления. Конкретными примерами аппаратной реализации кодера 400 является реализация в аппаратных средствах цифрового процессора сигналов (DSP) и технологии интегральных схем, включая и универсальную электронную схему, и схему специализированного применения.
Согласно аспекту вариантов осуществления обеспечивается передатчик 500, как показано на Фиг. 18. Передатчик 500 содержит входную секцию 510, сконфигурированную для приема множества изображений 10 видеопотока. Изображения 10 пересылаются на кодер 400, такой как проиллюстрирован на Фиг. 19 или на Фиг. 21, который сконфигурирован для кодирования множества изображений 10, чтобы формировать соответствующие кодированные представления множества изображений. Выходная секция 520 передатчика 500 сконфигурирована для вывода соответственных кодированных представлений множества изображений в виде кодированного битового потока, несущего информацию описания буфера согласно вариантам осуществления.
Приложение
Настоящее приложение представляет предложенный синтаксис двух вариантов осуществления.
Вариант 1 осуществления
buffer_description() {
Дескриптор
buffer_description_reference_flag
u(1)
if(buffer_description_reference_flag==1) {
buffer_description_idx
ue(v)
} else {
ue(v)
number_of_lt_pictures
for(i=0; i<number_of_lt_pictures;i++){
lt_poc[i]
u(v)
if(max_temporal_layers_minus1>0)
lt_temporal_id[i]
u(v)
}
buffer_description_combination_flag
u(1)
if(buffer_description_combination_flag){
buffer_description_combination_idx
u(1)
} else {
number_of_negative_explicit_pictures
ue(v)
for(i=0; i<number_of_negative_explicit_pictures; i++){
n_absolute_delta_poc_minus_one[i]
ue(v)
if(max_temporal_layers_minus1>0)
n_temporal_id[i]
u(v)
}
if(num_reorder_frames>0){
number_of_positive_explicit_pictures
ue(v)
for(i=0; i<number_of_positive_explicit_pictures; i++) {
p_absolute_delta_poc_minus_one[i]
ue(v)
if(max_temporal_layers_minus1 > 0)
p_temporal_id[i]
u(v)
}
}
}
}
Вариант 2 осуществления
buffer_description() {
Дескриптор
buffer_description_reference_flag
u(1)
if(buffer_description_reference_flag==1) {
buffer_description_idx
ue(v)
} else {
number_of_lt_pictures
ue(v)
for(i=0; i<number_of_lt_pictures;i++){
lt_poc[i]
u(v)
if(max_temporal_layers_minus1>0)
lt_temporal_id[i]
u(v)
}
buffer_description_combination_flag
u(1)
if(buffer_description_combination_flag){
buffer_description_combination_idx
u(1)
} else {
number_of_st_pictures
ue(v)
if(number_of_st_pictures>0)
{
if(num_reorder_frames>0){
sign_first_st_picture
u(1)
for(i=0; i<number_of_st_pictures; i++) {
absolute_delta_poc_minus_one[i]
ue(v)
if(max_temporal_layers_minus1>0)
temporal_id[i]
u(v)
}
}
}
}
}
Варианты осуществления, описанные выше, должны пониматься в качестве нескольких иллюстративных примеров настоящего изобретения. Специалисты в данной области техники поймут, что различные модификации, комбинации и изменения могут выполняться по отношению к вариантам осуществления без выхода за рамки объема настоящего изобретения. В частности, различные частичные решения в различных вариантах осуществления могут объединяться в другие конфигурации, где это технически возможно. Объем настоящего изобретения, однако, определяется прилагаемой формулой изобретения.