Область техники, к которой относится изобретение
Варианты осуществления, в общем, относятся к управлению опорными изображениями в связи с кодированием и декодированием видео и, в частности, к сигнализации опорных изображений и управлению буфером.
Уровень техники
H.264, также называемый Усовершенствованным кодированием видео (AVC) Экспертной группы по киноизображению 4 (MPEG-4), является стандартом кодирования видео предшествующего уровня техники. Он состоит из схемы гибридного кодирования видео на основе блоков, которая использует временное и пространственное прогнозирование.
Стандарт высокоэффективного кодирования видео (HEVC) является новым стандартом кодирования видео, в данный момент разрабатываемым в объединенной группе для совместной работы над видеостандартами (JCT-VC). JCT-VC является совместным проектом MPEG и Сектора стандартизации связи международного союза по телекоммуникациям (ITU-T). В настоящее время определен рабочий проект (WD), который включает в себя большие макроблоки (сокращенно LCU для наибольших единиц кодирования) и ряд других новых инструментальных средств и является значительно более эффективным, чем 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 обнаруживается, "несуществующие" кадры создаются и вставляются в буфер декодированных изображений (DPB).
Независимо от того, имеется или нет пропуск в frame_num, следующий этап представляет собой фактическое декодирование текущего изображения. Если заголовки серий последовательных макроблоков изображения содержат команды в формате операций управления запоминающим устройством (MMCO), процесс адаптивного управления запоминающим устройством применяется после декодирования изображения для того, чтобы получать относительную ссылку на изображения, которые должны быть сохранены в буфере декодированных изображений; в противном случае процесс с окном переменной длительности применяется для того, чтобы получать относительную ссылку на изображения, которые должны быть сохранены в буфере декодированных изображений. В качестве конечного этапа, процесс скачкообразного вывода применяется для того, чтобы доставлять изображения в корректном порядке.
Проблема H.264/AVC заключается в его уязвимости к потерям изображений, которые содержат MMCO типа 2, 3, 4, 5 или 6, как описано в нижеприведенной таблице 1.
Потери изображения, которое не содержит MMCO, или изображения, которое содержит MMCO типа 0 или 1, разумеется, являются существенными для процесса декодирования. Пикселные значения потерянного изображения недоступны и могут влиять на будущие изображения в течение длительного периода времени вследствие некорректного взаимного прогнозирования. Также есть риск того, что списки опорных изображений для нескольких изображений после потерянного изображения являются неправильными, например, если потерянное изображение содержит MMCO, которая помечает одно кратковременное опорное изображение как "неиспользуемое для ссылки", которое в ином случае должно быть включено в список опорных изображений для следующего изображения. Тем не менее, процесс декодирования может, в общем, восстанавливать такие потери посредством использования ограниченных внутренних блоков, внутренних серий последовательных макроблоков или посредством другого средства.
Но если изображение, содержащее MMCO типа 2, 3, 4, 5 или 6, потеряно, есть риск того, что число долговременных изображений в DPB отличается от числа, которое должно быть, если изображение принято, приводя к "некорректному" процессу с окном переменной длительности для всех следующих изображений. Иными словами, кодер и декодер должны содержать различное число кратковременных изображений, что приводит к асинхронному режиму работы процесса с окном переменной длительности. Эти потери не могут быть восстановлены посредством использования ограниченных внутренних блоков, внутренних серий последовательных макроблоков или аналогичных технологий (даже открытого внутреннего изображения группы изображений (GOP)). Единственный способ обеспечивать восстановление после таких потерь - через изображение на основе мгновенного обновления декодера (IDR) или через MMCO, которая подавляет эффект потерянной MMCO. Еще более ухудшает ситуацию то, что декодер не должен обязательно знать то, что процесс с окном переменной длительности является рассинхронизированным, и в силу этого не может сообщить относительно проблемы в кодер или запрашивать IDR-изображение даже в вариантах осуществления, в которых доступен канал обратной связи.
Один способ снижать риск потери важной MMCO-информации состоит в том, чтобы использовать сообщения с дополнительной улучшающей информацией (SEI) dec_ref_pic_marking_repetition. Тем не менее, кодер не знает то, допускает или нет декодер использование SEI-сообщений dec_ref_pic_marking_repetition. Дополнительно, есть риск того, что SEI-сообщение dec_ref_pic_marking_repetition также теряется.
Таким образом, существует потребность в эффективной сигнализации опорных изображений и управлении буфером, которые не подвержены недостаткам и ограничениям решений предшествующего уровня техники.
Сущность изобретения
Общая цель заключается в том, чтобы предоставлять эффективную сигнализацию опорных изображений и управление буфером в связи с кодированием и декодированием видео.
Эта и другие цели удовлетворяются посредством вариантов осуществления, раскрытых в данном документе.
Аспект вариантов осуществления относится к способу декодирования кодированного представления изображения видеопотока из нескольких изображений, как заявлено в независимых пунктах формулы изобретения.
В отличие от решений предшествующего уровня техники, в которых корректное управление опорными изображениями зависит от того, что ранее кодированные изображения корректно приняты и декодированы, варианты осуществления предоставляют информацию описания буфера, которая используется для опорных изображений, абсолютным и явным способом вместо относительного или неявного способа. Таким образом, кодированное представление изображения содержит информацию относительно того, какие опорные изображения следует использовать для ссылки в ходе декодирования, независимо от кодированных представлений предыдущих изображений в видеопотоке.
Варианты осуществления в силу этого снижают уязвимость управления и сигнализации опорных изображений к ошибкам, поскольку декодер должен базироваться только на информации, содержащейся в текущем изображении, для управления опорными изображениями текущего изображения вместо базирования на корректно доставляемых и интерпретируемых операциях буфера в предыдущих изображениях.
Краткое описание чертежей
Изобретение вместе с дополнительными целями и преимуществами может лучше всего пониматься посредством обращения к последующему описанию, рассматриваемому вместе с прилагаемыми чертежами, на которых:
Фиг. 1 является упрощенной блок-схемой последовательности операций способа для схемы работы опорного буфера H.264/AVC;
Фиг. 2 является примером структуры кодирования с двумя временными слоями;
Фиг. 3 является блок-схемой последовательности операций способа кодирования изображения согласно варианту осуществления;
Фиг. 4 является видеопотоком из нескольких изображений согласно варианту осуществления;
Фиг. 5 является кодированным представлением изображения согласно варианту осуществления;
Фиг. 6 является блок-схемой последовательности операций для дополнительного, необязательного этапа способа на фиг. 3;
Фиг. 7 является блок-схемой последовательности операций для дополнительных, необязательных этапов способа на фиг. 3 и для варианта осуществления для формирования информации описания буфера на фиг. 3;
Фиг. 8 является примером структуры кодирования с размером (суб-)GOP 8;
Фиг. 9 является блок-схемой последовательности операций способа декодирования кодированного представления изображения согласно варианту осуществления;
Фиг. 10 является блок-схемой последовательности операций способа для варианта осуществления определения идентификатора изображения на фиг. 9;
Фиг. 11 является блок-схемой последовательности операций способа для варианта осуществления извлечения информации описания буфера на фиг. 9;
Фиг. 12 является блок-схемой последовательности операций способа для другого варианта осуществления определения идентификатора изображения на фиг. 9;
Фиг. 13 является блок-схемой последовательности операций для дополнительных, необязательных этапов способа на фиг. 9;
Фиг. 14 является блок-схемой последовательности операций для дополнительного, необязательного этапа способа на фиг. 9;
Фиг. 15 является примером структуры кодирования;
Фиг. 16 является упрощенной блок-схемой последовательности операций способа для схемы работы опорного буфера согласно варианту осуществления;
Фиг. 17 является принципиальной блок-схемой передающего устройства согласно варианту осуществления;
Фиг. 18 является принципиальной блок-схемой кодера согласно варианту осуществления;
Фиг. 19 является принципиальной блок-схемой кодера согласно другому варианту осуществления;
Фиг. 20 является принципиальной блок-схемой приемного устройства согласно варианту осуществления;
Фиг. 21 является принципиальной блок-схемой декодера согласно варианту осуществления; и
Фиг. 22 является принципиальной блок-схемой декодера согласно другому варианту осуществления.
Осуществление изобретения
На всех чертежах идентичные ссылочные позиции используются для аналогичных или соответствующих элементов.
Настоящие варианты осуществления, в общем, относятся к кодированию и декодированию изображений, также называемых "кадрами" в данной области техники, видеопотока. В частности, варианты осуществления относятся к управлению опорными изображениями в связи с кодированием и декодированием видео и сигнализации таких опорных изображений из кодера в декодер.
Кодирование видео, к примеру, представленное посредством 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 долговременного изображения.
Таким образом, решение предшествующего уровня техники имеет такую проблему, что, корректное управление опорными изображениями является зависимым от того, что ранее декодированные изображения корректно приняты и декодированы.
Настоящие варианты осуществления не имеют этих проблем технологий предшествующего уровня техники посредством использования фундаментально отличного подхода к сигнализации опорных изображений по сравнению с предшествующим уровнем техники. Настоящие варианты осуществления вместо этого указывают то, какие декодированные изображения должны использоваться для опорных изображений, абсолютным или явным способом вместо относительного или неявного пути. Другой способ указать это состоит в том, что кодированное представление, т.е. поток битов, для текущего изображения содержит информацию относительно того, какие изображения следует использовать для ссылки, т.е. опорные изображения, независимо от кодированных представлений предыдущих изображений. Следовательно, можно сказать, что логическое управление поддержанием корректного буфера декодированных изображений переносится с декодера на поток битов. Один способ трактовки этого заключается в том, что информация относительно того, какие опорные изображения следует использовать для взаимного прогнозирования и прогнозирования векторов движения для изображения, включается в управляющую информацию изображения. Следовательно, состояние буфера декодированных изображений сигнализируется для каждого изображения, которое кодируется и декодируется относительно других изображений.
Согласно аспекту вариантов осуществления, предоставляется способ, который создает информацию описания буфера, например, структуру данных, такую как общая таблица с абсолютной информацией относительно того, какие изображения должны быть использованы для опорных изображений, т.е. сохраненную в буфере декодированных изображений (также называемом "буфером опорных изображений"), которая должна использоваться для последующего кодирования. По меньшей мере, часть информации описания буфера вставляется в поток битов, кодированный посредством кодера.
Фиг. 3 является блок-схемой последовательности операций способа кодирования изображения согласно варианту осуществления. Способ, в общем, начинается на этапе S1, на котором, по меньшей мере, одно опорное изображение видеопотока из нескольких изображений определяется в качестве ссылки для кодирования. В варианте осуществления, этап S1 определяет одно или более опорных изображений, которые используются в качестве ссылки для кодирования для текущего изображения, которое должно быть кодировано. Следовательно, пикселные данные текущего изображения затем кодируются в отношении одного или более опорных изображений. Альтернативно или помимо этого, по меньшей мере, одно опорное изображение, определенное на этапе S1, может быть использовано в качестве ссылки для кодирования для последующего изображения видеопотока, т.е. изображения, которое должно быть кодировано и декодировано после текущего изображения. Это последующее изображение в силу этого находится после текущего изображения согласно порядку декодирования (и порядку кодирования). В конкретном варианте осуществления, S1 определяет, для текущего изображения, любое опорное изображение видеопотока в качестве ссылки для кодирования для текущего изображения и любое опорное изображение видеопотока в качестве ссылки для кодирования для последующего изображения. Следовательно, в конкретном варианте осуществления, этап S1 определяет все опорные изображения, которые находятся до текущего изображения в порядке декодирования и которые могут использоваться для взаимного прогнозирования для текущего изображения или любого изображения после текущего изображения согласно порядку декодирования.
Фиг. 4 схематично иллюстрирует этот принцип посредством показа видеопотока 1 из нескольких изображений 10, 40, 42, 50. Текущее изображение 10 может содержать одну или более серий 20, 22 последовательных макроблоков, содержащих пикселные блоки 30, такие как макроблоки, также называемые "древовидными блоками" или "единицами кодирования, которые должны быть декодированы". Стрелки под изображениями 10, 40, 42, 50 указывают на взаимосвязь при декодировании. Текущее изображение 10 декодируется относительно предыдущего опорного изображения 40 и последующего опорного изображения 42. Предыдущее опорное изображение 40 является предшествующим, и последующее опорное изображение 42 является последующим относительно текущего изображения 10 согласно порядку вывода, но оба являются предшествующими текущему изображению 10 согласно порядку декодирования. Кроме того, это последующее опорное изображение 42 используется в качестве опорного изображения для последующего изображения 50 в видеопотоке 1. Следовательно, в конкретном варианте осуществления, этап S1 может определять опорные изображения в качестве изображений 40, 42 на фиг. 4.
Следующий этап S2 по фиг. 3 предоставляет соответствующий идентификатор изображения для каждого опорного изображения, по меньшей мере, из одного опорного изображения, определенного на этапе S1. Идентификатор изображения используется, возможно вместе с другими данными, для того чтобы однозначно идентифицировать опорное изображение. Следовательно, идентификатор изображения может рассматриваться в качестве абсолютной ссылки на изображения, которые должны быть использованы в качестве опорных изображений. Это означает то, что можно корректно идентифицировать релевантное опорное изображение с учетом его идентификатора изображения и необязательно других данных.
Доступны различные альтернативы, которые могут быть использованы в качестве идентификатора изображения согласно вариантам осуществления. Например, идентификатор изображения может представлять собой порядковый номер декодирования, порядковый номер отображения, порядковый номер вывода или комбинацию порядкового номера отображения и дополнительного идентификатора либо фактически любую другую информацию, которая может быть использована для того, чтобы однозначно идентифицировать изображение.
Примеры таких идентификаторов изображений включают в себя номер в последовательности изображений (POC), номер (frame_num) кадра или POC и дополнительный идентификатор (additional_picture_id).
В конкретном варианте осуществления, фактическое значение идентификатора изображения используется вместе с дополнительной информацией или другими данными, такими как позиция идентификатора изображения в информации описания буфера, которая формируется на этапе S3, чтобы однозначно идентифицировать релевантное опорное изображение. Следовательно, описание буфера, идентифицированное или полученное посредством информации описания буфера, обеспечивает однозначную идентификацию релевантного опорного изображения(й). В варианте осуществления, идентификатор изображения непосредственно, к примеру, POC или POC плюс дополнительный идентификатор может быть использован для того, чтобы однозначно идентифицировать опорное изображение.
Однозначная идентификация опорного изображения используется в данном документе для того, чтобы обозначать, что непосредственно идентификатор изображения или идентификатор изображения вместе с другой информацией в информации описания буфера, такой как порядок, в котором информация описания буфера задает идентификаторы изображений, используется для того, чтобы явно идентифицировать опорное изображение. Следовательно, задание идентификатора изображения или идентификатора изображения и другой информации обеспечивает идентификацию релевантного опорного изображения из изображений видеопотока.
В конкретном варианте осуществления этапа S1, общее число опорных изображений, определенных для текущего изображения, может ограничиваться посредством параметра, который может сигнализироваться из кодера в декодер, такого как параметр, обозначенный max_num_ref_frames.
Этап S2 предпочтительно выполняется для каждого опорного изображения, определенного на этапе S1, который схематично иллюстрируется посредством линии L1.
Идентификатор(ы) изображения, предоставленный на этапе S2, может считываться из частей заголовка опорного изображения(й), определенного на этапе S1, или иным образом извлекаться из данных, представляющих опорное изображение(я), из этапа S1.
Следующий этап S3 формирует информацию описания буфера, также называемого набором опорных изображений (RPS). Эта информация обозначается информацией описания буфера в данном документе. Информация описания буфера формируется на основе идентификатора(ов) изображения, предоставленного на этапе S2. Эта информация описания буфера задает, предпочтительно однозначно задает, по меньшей мере, одно опорное изображение, определенное на этапе S1. Следовательно, можно извлекать соответствующий идентификатор изображения, по меньшей мере, одного опорного изображения из информации описания буфера.
Сформированная информация описания буфера вставляется на этапе S4 в кодированное представление текущего изображения. Следовательно, кодированное изображение переносит информацию описания буфера, которая может быть использована в декодере для того, чтобы задавать и идентифицировать опорные изображения, которые необходимы для того, чтобы декодировать текущее изображение и/или любое последующее изображение видеопотока.
Следовательно, информация описания буфера предоставляется в управляющей информации кодированного изображения, предоставленного из кодера в декодер. Минимально, информация описания буфера содержит информацию, необходимую посредством декодера для того, чтобы идентифицировать опорные изображения, которые должны быть использованы в буфере декодированных изображений.
Как следствие, информация описания буфера может рассматриваться в качестве информации, идентифицирующей описание буфера, которое является набором опорных изображений, ассоциированных с текущим изображением. Оно состоит из всех опорных изображений, которые находятся до текущего изображения в порядке декодирования и которые могут использоваться для взаимного прогнозирования текущего изображения или любого изображения после текущего изображения в порядке декодирования.
В варианте осуществления, информация описания буфера содержит или задает информацию относительно каждого изображения, которое используется посредством декодера в процессе декодирования, даже если изображение не используется для взаимного прогнозирования или прогнозирования векторов движения либо какого-либо другого прогнозирования. Эта информация может включать в себя, но не только, порядок декодирования, порядок отображения, информацию временных слоев и информацию видов.
Как упомянуто выше, число опорных изображений, которые могут сигнализироваться посредством информации описания буфера, может ограничиваться посредством параметра max_num_ref_frames. Тем не менее, информация описания буфера может задавать меньше этого максимального числа изображений, и в этом случае оставшиеся изображения интерпретируются как "пустые".
Способ по фиг. 3 с этапами S1-S4 предпочтительно выполняется для каждого изображения в видеопотоке, за исключением изображений на основе мгновенного обновления декодера (IDR), которые приводят к обновлению буфера декодированных изображений и в силу этого не требуют информации описания буфера, что схематично иллюстрируется посредством линии L2. Следовательно, каждое кодированное представление, сформированное посредством кодера, предпочтительно переносит информацию описания буфера, задающую опорные изображения, используемые для кодирования и декодирования текущего изображения и/или любого последующего изображения в видеопотоке.
Этот подход согласно вариантам осуществления предоставляет значительное преимущество по сравнению с сигнализацией относительных опорных изображений предшествующего уровня техники с использованием MMCO-команды. Явная сигнализация опорных изображений через информацию описания буфера в каждом кодированном представлении изображений в видеопотоке снижает уязвимость к ошибкам управления опорными изображениями и повышает уровень устойчивости к ошибкам декодера. Таким образом, вместо базирования на корректно доставляемых и интерпретируемых операциях буфера в предыдущих изображениях, декодер должен базироваться только на информации, содержащейся в кодированном представлении текущего изображения.
В конкретном варианте осуществления, информация описания буфера, вставленная в кодированное представление изображения на этапе S4, фактически является непосредственно описанием буфера. Таким образом, информация описания буфера затем содержит перечень идентификатора(ов) изображения, предоставленных на этапе S2 или данных, предоставляющих возможность вычисления идентификатора(ов) изображения, предоставленных на этапе S2. Этот второй случай дополнительно описывается ниже в связи с фиг. 6.
Например, описание буфера может задавать список с идентификаторами 3, 5 и 6 изображений в качестве опорных изображений для текущего изображения. Информация описания буфера, вставленная в кодированное представление на этапе S4, в таком случае должна включать в себя эти идентификаторы 3, 5 и 6 изображений.
Альтернативный подход, который, в общем, является более эффективным по битам, т.е. в общем, требует меньшего числа битов или символов для задания идентификаторов изображений, заключается в том, чтобы сигнализировать свойства опорных изображений, т.е. идентификаторы изображений, относительно значения этих свойств, сигнализируемых для текущего изображения. Например, если текущее изображение имеет идентификатор 7 изображения, список опорных изображений с идентификаторами 3, 5 и 6 может задаваться как -1, -2 и -4, что типично может представляться посредством меньшего числа битов по сравнению с 3, 5 и 6, в частности, если кодирование переменной длины используется для идентификаторов изображений.
Фиг. 6 схематично иллюстрирует этот подход. Способ продолжается от этапа S2 по фиг. 3. На следующем этапе S10 разность вычисляется для каждого идентификатора изображения, предоставленного на этапе S2, между идентификатором изображения и идентификатором изображения, идентифицирующим текущее изображение. В результате этого вычисления получается разностный или дельта-идентификатор либо значение. Способ затем переходит к этапу S3 по фиг. 3, на котором информация описания буфера формируется на основе вычисленного разностного или дельта-идентификатора(ов).
Следовательно, информация описания буфера в этом случае может включать в себя дельта-идентификаторы -1, -2 и -4 вместо 3, 5 и 6.
В варианте осуществления, дельта-информация порядка отображения, или deltaPOC, включается в описание буфера, кодированное с помощью кода переменной длины (VLC). В конкретном варианте осуществления, deltaPOC кодируется с помощью VLC для absolute_delta_POC_minus_one и флага, т.е. одного бита, для deltaPOC_sign, сигнализируемого, только если number_of_reorder_frames>0, в противном случае знак логически выводится как отрицательный.
В вышеописанных вариантах осуществления, предоставляющих явную сигнализацию идентификаторов изображений, либо непосредственно идентификаторов изображений, либо дельта-идентификаторов, информация описания буфера фактически должна составлять описание буфера текущего изображения. Эта информация описания буфера затем вставляется в кодированное представление изображения.
Информация описания буфера может быть включена в качестве управляющей информации в подходящую позицию в кодированном представлении. Фиг. 5 схематично иллюстрирует пример кодированного представления 60 изображения. Кодированное представление 60 содержит рабочие видеоданные 66, которые представляют кодированные пикселные данные пикселных блоков в серии последовательных макроблоков. Кодированное представление 60 также содержит заголовок 65 серии последовательных макроблоков, переносящий управляющую информацию. Заголовок 65 серии последовательных макроблоков формирует вместе с рабочими данными видео и заголовком 64 в формате уровня абстрагирования от сети (NAL) NAL-единицу, которая является объектом, который выводится из кодера. В эту NAL-единицу могут добавляться дополнительные заголовки, к примеру, заголовок 63 в формате транспортного протокола реального времени (RTP), заголовок 62 в формате протокола пользовательских дейтаграмм (UDP) и заголовок 61 в формате Интернет-протокола (IP), с тем чтобы формировать пакет данных, который может быть передан из кодера в декодер. Эта форма пакетирования NAL-единиц составляет просто пример в связи с транспортировкой видео. Возможны другие подходы к обработке NAL-единиц, такие как формат файла, транспортные потоки MPEG-2, программные потоки MPEG-2 и т.д.
Информация описания буфера затем может быть включена в заголовок 65 серии последовательных макроблоков, другой заголовок изображения или другую структуру данных, указываемую посредством стандарта, которому соответствуют кодер и декодер.
В другом варианте осуществления, информация описания буфера, вставленная в кодированное представление 60 изображения, не обязательно должна быть идентичной описанию буфера текущего изображения, а вместо этого обеспечивает идентификацию и извлечение описания буфера. Таким образом, в этом варианте осуществления информация описания буфера, вставленная в кодированное представление 60 изображения, косвенно задает, по меньшей мере, одно опорное изображение, определенное на этапе S1, посредством указания на описание буфера, которое переносит идентификаторы изображений или данные, к примеру, дельта-идентификаторы, обеспечивая вычисление идентификаторов изображений.
В таком случае, описание буфера может переноситься посредством структуры данных, ассоциированной с кодированным представлением 60 изображения. Примеры таких структур данных включают в себя набор 67 параметров изображения (PPS) и набор 68 параметров последовательности (SPS). 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 изображений, которые могут быть использованы для того, чтобы переносить информацию описания буфера согласно вариантам осуществления.
Фиг. 7 иллюстрирует альтернативный вариант осуществления, в котором одно или более описаний буфера сигнализируются в структуре данных, так что идентичное описание буфера может использоваться для нескольких изображений.
Способ начинается на этапе S20, на котором формируется структура данных, такая как таблица. Структура данных содержит несколько предварительно заданных описаний буфера, каждое из которых задает, по меньшей мере, одно опорное изображение.
Каждое описание буфера сформированной структуры данных может задавать идентификаторы изображений непосредственно, т.е. включать в себя список идентификаторов изображений. Тем не менее, такой подход, в общем, требует достаточно небольшого предварительно заданного описания буфера в структуре данных. Более эффективный подход заключается в том, чтобы комбинировать использование нескольких предварительно заданных описаний буфера с сигнализацией дельта-идентификаторов, как пояснено выше. В таком случае, каждое предварительно заданное описание буфера содержит, по меньшей мере, один соответствующий дельта-идентификатор, который используется в декодере вместе с идентификатором изображения для текущего изображения для того, чтобы вычислять идентификатор(ы) изображения предварительно заданного описания буфера.
Нижеприведенная таблица 1 иллюстрирует пример такой структуры данных с дельта-идентификаторами, которые могут использоваться для видеопотока, как проиллюстрировано на фиг. 8. Видеопоток по фиг. 8 начинается с IDR-изображения, которое является внутренним (I) кадром, который удаляет все зависимости в данных, передаваемых до IDR-изображения, т.е. который помечает все опорные изображения как "неиспользуемые для ссылки". IDR-изображению не требуется описание буфера, поскольку оно освобождает буфер декодированных изображений. Видеопоток по фиг. 8 имеет форму многослойного видео, предоставляющего изображения в различных временных слоях, идентифицированных посредством временных идентификаторов (temporal_id) n, n+1 и n+2 на фиг. 8.
Таблица 1 показывает пример таблицы описания буфера, в которой указываются deltaPOC(dP) и temporal_id(tId). Таблица составляется с использованием схемы включения двух ближайших опорных изображений (POC(current)-1 и POC(current)-2) и двух из наименьшего временного слоя в диапазоне от POC(current)-3 до POC(current)-10.
Примерное использование этой таблицы посредством кодера заключается в том, чтобы, для изображения с POC=n, сигнализировать запись таблицы (n%4), т.е. n по модулю 4, в декодер. В этом примере, буфер декодированных изображений состоит из четырех изображений (буфер 1 изображений - буфер 4 изображений). То, какие изображения, зависит от POC текущего изображения и от того, какая запись используется. Например, если изображение с POC=7 использует запись 3, то опорные изображения в буфере декодированных изображений должны состоять из изображений с POC {6, 5, 4, 0}.
Структура данных, сформированная на этапе S20, сигнализируется из кодера в декодер. Эта сигнализация может быть выполнена согласно различным вариантам осуществления. Структура данных может переноситься в PPS, SPS, новом наборе параметров или в другой структуре данных, специфицируемой стандартом, которому соответствуют кодер и декодер. Это схематично иллюстрируется посредством этапа S21, на котором структура данных вставляется в PPS или SPS, ассоциированный с кодированным представлением видеопотока. В таком случае, этап S22 предпочтительно вставляет PPS-идентификатор или SPS-идентификатор в кодированное представление изображения, к примеру, в заголовок серии последовательных макроблоков. Этот PPS-идентификатор или SPS-идентификатор затем обеспечивает идентификацию структуры данных, которая доступна при декодировании текущего изображения.
Способ переходит к этапам S1 и S2 по фиг. 7, на которых определяются опорные изображения, и идентификаторы изображений предоставляются для текущего изображения. Следующий этап S23 выбирает, на основе, по меньшей мере, одного идентификатора изображения, предоставленного на этапе S2, описание буфера из структуры данных, сформированной на этапе S20.
После того, как это описание буфера, к примеру, запись в таблице 1, выбрано, этап S24 формирует информацию описания буфера, содержащую идентификатор, такой как номер записи, выбранного описания буфера. Способ переходит к этапу S4, на котором информация описания буфера вставляется в кодированное представление изображения.
Таким образом, чтобы указывать то, какое описание буфера следует использовать для текущего изображения, идентификатор может сигнализироваться для текущего изображения. Примером этого идентификатора является неотрицательное целое число, сигнализируемое в заголовке(ках) серии последовательных макроблоков текущего изображения, представляющее номер описания буфера в порядке, в котором сигнализируются описания буфера.
В типичной реализации этап S20 выполняется один раз для видеопотока или один раз для набора из нескольких изображений видеопотока. Это означает то, что одна такая структура данных затем формируется для видеопотока или для набора из нескольких изображений. Следующие этапы S21-S24 по фиг. 7 предпочтительно выполняются для каждого изображения в видеопотоке или в наборе из нескольких изображений.
Таким образом, такая структура данных, как таблица может быть создана в кодере и передана в декодер. В управляющей информации кодированного потока битов предоставляется номер записи, который должен быть использован. Посредством использования такой таблицы декодер может получать абсолютную информацию относительно того, какие изображения должны быть использованы в качестве опорных изображений, посредством обнаружения номера записи в декодированном потоке битов и использования этого номера записи, чтобы выполнять поиск записи в таблице. Запись затем используется для того, чтобы определять то, какие изображения должны быть сохранены в буфере декодированных изображений.
Ввод записи описания буфера, например, в SPS уменьшает дополнительное число битов для явной сигнализации описаний буфера в заголовке серии последовательных макроблоков. Эти описания буфера могут использоваться для нескольких серий последовательных макроблоков/изображений в идентичной последовательности, т.е. в видеопотоке, и за счет этого уменьшать число битов, требуемое в расчете на изображение.
Для каждой записи описания буфера в PPS, delta_POC и temporal_id всех опорных изображений могут присутствовать в варианте осуществления. Необязательный additional_picture_id предпочтительно логически выводится как равный 0 для изображений, описанных посредством записи в PPS.
Согласно дополнительному варианту осуществления, явная сигнализация описания буфера и опорная сигнализация в записи в общей структуре данных с несколькими предварительно заданными описаниями буфера, к примеру, в записи в вышеприведенной таблице могут комбинироваться. В таком случае, они могут комбинироваться посредством декодера для того, чтобы формировать конечное описание буфера для текущего изображения. Один способ комбинировать явную сигнализацию и опорную сигнализацию состоит в том, чтобы объединять набор опорных изображений, описанных посредством явной сигнализации, с набором опорных изображений, описанных посредством опорной сигнализации, чтобы формировать объединенный набор опорных изображений.
В таком случае, этап S3 по фиг. 3 предпочтительно содержит формирование информации описания буфера так, что она содержит идентификатор описания буфера, выбранного на этапе S23, и содержит информацию, задающую, по меньшей мере, одно опорное изображение. Эта информация, задающая, по меньшей мере, одно опорное изображение, может представлять собой идентификатор изображения для самого опорного изображения или дельта-идентификатор, из которого может быть вычислен идентификатор изображения.
Изображение, которое используется для ссылки в течение длительного периода времени (долговременное опорное изображение), предпочтительно предваряется посредством явного описания в заголовках серий последовательных макроблоков изображений, для которых оно доступно для ссылки. Причина состоит в том, что неудобно включать каждое расстояние в POC-номера в предварительно заданных описаниях буфера, сигнализируемых в PPS или SPS.
В конкретном варианте осуществления, кодированное представление изображения предпочтительно содержит флаг, чтобы указывать, выбрана ли явная сигнализация информации описания буфера и/или неявная сигнализация информации описания буфера для текущего изображения. Этот флаг, например, может быть включен в заголовок серии последовательных макроблоков кодированного представления изображения или в некоторое другое поле управляющей информации.
В конкретном варианте осуществления, изображение 10 может состоять из одной или нескольких серий 20, 22 последовательных макроблоков, как показано на фиг. 4. В таком случае, серия 20, 22 последовательных макроблоков является независимо декодируемой частью изображения 10. Другими словами, кодированная серия последовательных макроблоков может быть декодирована, даже если данные другой кодированной серии последовательных макроблоков идентичного изображения 10 потеряны.
В таком подходе, этап S1 по фиг. 3 предпочтительно определяет, по меньшей мере, одно опорное изображение видеопотока для каждой серии последовательных макроблоков в изображении. В таком случае может быть возможным, что первая серия последовательных макроблоков использует первый набор из одного или более опорных изображений, а вторая серия последовательных макроблоков использует второй набор из одного или более опорных изображений. Второй набор может быть идентичными первому набору или отличаться от первого набора. Также возможно, что, по меньшей мере, одно из опорных изображений является общим для первого набора и второго набора.
Этап S2 предпочтительно определяет идентификаторы изображений для всех опорных изображений, определенных на этапе S1, по меньшей мере, для одной серии последовательных макроблоков, предпочтительно для всех серий последовательных макроблоков, в изображении. Информация описания буфера затем формируется на этапе S3 на основе этих идентификаторов изображений и за счет этого задает опорные изображения. В варианте осуществления, описание буфера, сформированное на этапе S3, вставляется в соответствующий заголовок серии последовательных макроблоков кодированного представления изображения для каждой серии последовательных макроблоков. Таким образом, каждый заголовок серии последовательных макроблоков кодированного представления изображения предпочтительно переносит соответствующий экземпляр информации описания буфера. Более предпочтительно, информация описания буфера, переносимая в заголовке серии последовательных макроблоков для первой серии последовательных макроблоков изображения, является идентичной информации описания буфера, переносимой в заголовке серии последовательных макроблоков второй серии последовательных макроблоков изображения.
Кодирование и декодирование видео также может применяться к так называемому масштабируемому или многослойному видео. Например, временная масштабируемость поддерживается в H.264/MPEG-4 AVC и масштабируемом кодировании видео (SVC) через задание подпоследовательностей и использование temporal_id в SVC и вставку "несуществующих" кадров. Тем не менее, чтобы поддерживать временную масштабируемость, изображения в верхних временных слоях ограничены при использовании MMCO. Кодер управляет проверкой того, что MMCO в одном временном слое не влияют на изображения нижних временных слоев, по-иному по сравнению с тем, когда отбрасывается временной слой, и вставляются "несуществующие" изображения, и применяется процесс с окном переменной длительности.
Это налагает ограничения на кодер при выборе структуры кодирования и использовании опорных изображений. Например, рассмотрим пример на фиг. 2. Допустим, что максимальное число опорных кадров в буфере декодированных изображений (max_num_ref_frames) равно трем, даже если каждое изображение использует только два опорных изображения для взаимного прогнозирования. Причина состоит в том, что каждое изображение должно хранить одно дополнительное изображение из другого временного слоя, которое должно использоваться для взаимного прогнозирования посредством следующего изображения.
Чтобы иметь доступными изображение POC=0 и изображение POC=2 при декодировании изображения POC=4, изображение POC=3 должно иметь явную команду пометки опорных изображений (MMCO), помечающую изображение 1 в качестве недоступного.
Тем не менее, если временной слой 1 удаляется (например, посредством сетевого узла), возникают пропуски в frame_num для всех изображений с нечетным номером. "Несуществующие" изображения создаются для этих изображений, и применяется процесс с окном переменной длительности. Это приводит к наличию "несуществующего" изображения изображение POC=3, и POC=0 помечается в качестве недоступного. Таким образом, оно недоступно для прогнозирования, когда декодируется изображение POC=4. Поскольку кодер не может обеспечивать идентичный процесс декодирования для двух случаев: когда все изображения декодируются и когда только самый нижний слой декодируется, то пример структуры кодирования на фиг. 2 не может использоваться для временной масштабируемости согласно предшествующему уровню техники.
Таким образом, решения предшествующего уровня техники имеют проблемы с временной масштабируемостью для определенных структур кодирования, поскольку на информацию относительно опорных изображений для текущего изображения оказывает влияние удаление предыдущего изображения из потока битов, когда информация опорного изображения сигнализируется относительным способом. С использованием вариантов осуществления временная масштабируемость не должна быть ограничена, как в предшествующем уровне техники, поскольку на опорное изображение для текущего изображения не оказывает влияние удаление предыдущих изображений из потока битов, поскольку оно сигнализируется абсолютным способом.
В случае масштабируемого видеопотока с изображениями, сгруппированными в несколько слоев, этап S2 по фиг. 3 предпочтительно содержит предоставление идентификатора изображения и информации временных слоев, идентифицирующей слой из нескольких слоев, которому принадлежит опорное изображение. Информация описания буфера затем формируется на этапе S3 на основе, по меньшей мере, одного идентификатора изображения и информации временных слоев. Это означает то, что информация описания буфера в силу этого задает, по меньшей мере, один идентификатор изображения и информацию временных слоев.
Например, информация временных слоев, к примеру, temporal_id, включается для каждого изображения в описании буфера, сигнализируемом с использованием ceil(log2(max_temporal_layers_minus1)) битов для сигнализации temporal_id. Временная масштабируемость является просто примером многослойного видео, к которому могут применяться варианты осуществления. Другие типы включают в себя многослойное видео, в котором каждое изображение имеет идентификатор изображения и идентификатор вида. Дополнительные примеры масштабируемости включают в себя пространственную масштабируемость, масштабируемость отношения "сигнал-шум" (SNR), масштабируемость битовой глубины и масштабируемость формата сигнала цветности.
Варианты осуществления подразумевают, что переключение вниз во времени всегда является возможным. Каждый временной слой вместе с нижними слоями должны составлять подпоследовательность. Таким подпоследовательностям не требуется явная сигнализация.
В общем, кодер свободно выбирает то, какие изображения следует включать в описание буфера, и может основывать свой выбор на любом аспекте, таком как ближайшие изображения в порядке отображения. Типично, кодер выбирает описание буфера для того, чтобы пытаться достигать максимального сжатия в соответствии с набором побочных ограничений. Одним примером такого ограничения является максимальное число опорных изображений вследствие емкости запоминающего устройства. Другой пример заключается в том, что видеопоток также должен быть декодируемым тогда, когда определенные кодированные изображения в потоке битов удаляются из потока битов перед декодированием. Дополнительный пример заключается в том, что только изображения, которые доступны для ссылки в буфере декодированных изображений, могут быть выбраны в качестве опорных изображений.
Таким образом, в варианте осуществления этап S1 по фиг. 3 содержит определение, по меньшей мере, одного опорного изображения для текущего изображения посредством максимизации эффективности сжатия кодированного представления изображения в соответствии, по меньшей мере, с одним побочным ограничением. По меньшей мере, одно побочное ограничение затем предпочтительно выбирается из предварительно заданного максимального числа опорных изображений, а также из формирования декодируемого кодированного представления видеопотока, когда, по меньшей мере, одно кодированное представление изображения удаляется из кодированного представления видеопотока.
Согласно другому аспекту вариантов осуществления, предоставляется способ, в котором принимается кодированное видео или поток данных, информация описания буфера обнаруживается в кодированном видеопотоке, и абсолютная ссылка на изображения, которые должны быть использованы в качестве опорных изображений для декодирования текущего изображения или в качестве опорных изображений для будущего декодирования, определяется на основе информации описания буфера. Изображения, которые должны быть использованы в качестве опорных изображений, сохраняются в буфере декодированных изображений.
Фиг. 9 является блок-схемой последовательности операций способа декодирования кодированного представления изображения согласно варианту осуществления. Способ начинается на этапе S30, на котором информация описания буфера, задающая, по меньшей мере, одно опорное изображение, извлекается из кодированного представления изображения. Информация описания буфера используется на этапе S31, чтобы определять, по меньшей мере, один идентификатор изображения, который, предпочтительно однозначно, идентифицирует соответствующее опорное изображение в качестве ссылки для декодирования для изображения. По меньшей мере, один идентификатор опорного изображения, определенный на этапе S31, используется на этапе S32 для того, чтобы обновлять буфер декодированных изображений.
После того, как буфер декодированных изображений обновлен так, что он содержит корректные опорные изображения, необходимые для декодирования изображения способ типично переходит к этапу S33, на котором изображение декодируется на основе кодированного представления изображения и, по меньшей мере, одного из опорных изображений, содержащихся, присутствующих или сохраненных в буфере декодированных изображений и идентифицированных на основе информации описания буфера.
В предпочтительном варианте осуществления, этап декодирования S33 выполняется после обновления буфера декодированных изображений, как указано на фиг. 9.
Обновление буфера декодированных изображений на этапе S32 предпочтительно подразумевает, что опорное изображение, идентифицированное посредством определенного идентификатора изображения, помечается как "используемое для ссылки" или помечается как "используемое для прогнозирования", чтобы указывать то, что это опорное изображение должно быть использовано в качестве ссылки для декодирования или прогнозирования для текущего изображения и/или любого последующего изображения. В конкретном варианте осуществления, опорные изображения могут помечаться как используемые для кратковременной ссылки или как используемые для долговременной ссылки.
В конкретном варианте осуществления, этап S30 извлекает информацию описания буфера, задающую несколько опорных изображений из кодированного представления изображения. В этом варианте осуществления, этап S31 может определять на основе информации описания буфера i) по меньшей мере, один идентификатор изображения, идентифицирующий соответствующее опорное изображение в качестве ссылки для декодирования для изображения, и ii) по меньшей мере, один идентификатор изображения, идентифицирующий соответствующее опорное изображение в качестве ссылки для декодирования для последующего, согласно порядку декодирования, изображения видеопотока. В альтернативных вариантах осуществления, информация описания буфера идентифицирует один или более идентификаторов изображений соответствующего опорного изображения(й) в качестве ссылки для декодирования для текущего изображения и/или один или более идентификаторов изображений соответствующего опорного изображения(й) в качестве ссылки для декодирования для последующего, согласно порядку декодирования, изображения видеопотока.
Этап S32 предпочтительно обновляет буфер декодированных изображений так, что он содержит соответствующее опорное изображение, идентифицированное посредством, по меньшей мере, одного идентификатора изображения, определенного на этапе S31.
Как пояснено выше в данном документе, информация описания буфера может предоставляться в заголовке серии последовательных макроблоков или другом поле управляющей информации кодированного представления изображения. В таком случае, этап S30 по фиг. 9 содержит извлечение информации описания буфера из заголовка серии последовательных макроблоков кодированного представления изображения. Изображение с несколькими сериями последовательных макроблоков, в общем, содержит несколько заголовков серий последовательных макроблоков. В таком случае, каждый заголовок серии последовательных макроблоков предпочтительно содержит идентичную информацию описания буфера. В таком случае достаточно на этапе S30 извлекать информацию описания буфера из первого заголовка серии последовательных макроблоков изображения, поскольку все оставшиеся заголовки серий последовательных макроблоков изображения должны включать в себя идентичную информацию описания буфера. Информация описания буфера в других заголовках серий последовательных макроблоков затем может использоваться для обеспечения устойчивости к ошибкам, если первая серия последовательных макроблоков потеряна.
Информация описания буфера может явно включать в себя идентификатор(ы) изображения для опорного изображения(й). В таком случае, этап S30 просто извлекает, по меньшей мере, один идентификатор изображения из информации описания буфера.
В альтернативном варианте осуществления, информация описания буфера содержит дельта-значения или дельта-идентификаторы. Фиг. 10 является блок-схемой последовательности операций способа, иллюстрирующей вариант осуществления этапа S31 на фиг. 9 для такого случая. Способ затем продолжается от этапа S30 по фиг. 9. Следующий этап S40 извлекает соответствующий дельта-идентификатор на основе информации описания буфера. Дельта-идентификатор(ы) используются на этапе S41 вместе с идентификатором изображения для текущего изображения для того, чтобы вычислять идентификатор(ы) изображения для опорного изображения(й). Способ затем переходит к этапу S32 фиг. 10.
Таким образом, в этом варианте осуществления информация, доступная для текущего изображения, используется посредством декодера для того, чтобы составлять конечное описание буфера для текущего изображения из сигнализируемой информации описания буфера. Эта информация включает в себя, но не только, текущий POC (POC(curr)), который вместе с сигнализируемым deltaPOC может быть использован для того, чтобы вычислять POC опорного изображения (POC(ref)) в качестве POC(ref)=POC(curr)+deltaPOC.
Другой вариант осуществления относится к использованию нескольких предварительно заданных описаний буфера. Фиг. 11 схематично иллюстрирует такой подход. На первом этапе S50 извлекается структура данных, содержащая несколько предварительно заданных описаний буфера. В предпочтительном варианте осуществления, структура данных извлекается на основе информации, переносимой в кодированном представлении изображения. Например, структура данных может сигнализироваться от стороны кодера к стороне декодера как части PPS или SPS кодированного представления изображения. В таком случае, структура данных извлекается из PPS или SPS на этапе S50 на основе PPS-идентификатора или SPS-идентификатора, используемого в качестве части информации описания буфера в кодированном представлении изображения, к примеру, в заголовке серии последовательных макроблоков. Альтернативно, PPS-идентификатор извлекается из заголовка серии последовательных макроблоков, и PPS, в свою очередь, содержит SPS-идентификатор, который может быть использован, если структура данных сигнализируется как часть SPS.
Следующий этап S51 извлекает идентификатор описания буфера в качестве части информации описания буфера из кодированного представления изображения, к примеру, из заголовка серии последовательных макроблоков. Этот идентификатор используется для того, чтобы идентифицировать то, какое предварительно заданное описание буфера из структуры данных, извлеченной на этапе S50, следует использовать для текущего изображения на этапе S52. Способ затем переходит к этапу S31 по фиг. 1, на котором идентификаторы изображений определяются из идентифицированного предварительно заданного описания буфера.
С использованием вариантов осуществления можно применять оптимальную схему работы буфера для любой структуры кодирования с очень небольшим объемом служебной нагрузки. В заголовке серии последовательных макроблоков необходима просто ссылка на корректное описание буфера в PPS и т.п. Следует отметить, что описание буфера также может быть помещено в заголовок изображения и т.п. либо в набор параметров, совместно используемый всеми сериями последовательных макроблоков в изображении. Важное свойство заключается в том, что описание буфера, которое должно быть использовано для того, чтобы декодировать конкретное изображение, отправляется с изображением, а не с предыдущим изображением в порядке декодирования, как в предшествующем уровне техники. Помимо этого, информация описания буфера используется для сигнализации всех опорных изображений в буфере декодированных изображений, которые должны сохраняться для декодирования каждого соответствующего изображения в видеопотоке, вместо сигнализации дельта-информации, что может приводить к долговременным рассогласованиям между стороной кодера и стороной декодирования, когда один пакет данных непреднамеренно теряется.
Как раскрыто выше в данном документе, явная сигнализация описания буфера в кодированном представлении изображения и опорная сигнализация для предварительно заданного описания буфера в структуре данных могут комбинироваться. Один способ комбинировать явную сигнализацию и опорную сигнализацию состоит в том, чтобы объединять набор опорных изображений, описанных посредством явной сигнализации, с набором опорных изображений, описанных посредством опорной сигнализации, чтобы сформировать объединенный набор опорных изображений. Затем одно или более опорных изображений, включенных в набор опорных изображений, описанных посредством опорной сигнализации, но не включенных в явную сигнализацию, возможно удаляются из объединенного набора опорных изображений, так что имеется конечное описание буфера с не более максимального числа (max_num_ref_frames) опорных изображений. Предпочтительно изображения удаляются в порядке, в котором они перечисляются в общем описании буфера, т.е. в предварительно заданном описании буфера, начиная с последнего и далее.
Фиг. 12 является блок-схемой последовательности операций способа, иллюстрирующей такой подход. Способ продолжается от этапа S30 на фиг. 9 и этапа S52 на фиг. S31. Следовательно, в этом варианте осуществления информация описания буфера содержит как идентификатор описания буфера, извлеченного на этапе S51 по фиг. 11, так и информацию, задающую, по меньшей мере, одно опорное изображение, извлеченное на этапе S30 по фиг. 9. Эта информация, извлеченная на этапе S30, может быть фактическим идентификатором(ами) изображения или вышеуказанным дельта-идентификатором(ами).
Следующий этап S60 определяет первый набор, по меньшей мере, из одного идентификатора изображения, идентифицирующего соответствующее опорное изображение, из предварительно заданного описания буфера, идентифицированного на этапе S52 на фиг. 11. Соответственно, второй набор, по меньшей мере, из одного идентификатора изображения, идентифицирующего соответствующее опорное изображение, определяется на этапе S61 из информации, извлеченной на этапе S30 по фиг. 9. Этапы S60 и S61 могут быть выполнены последовательно в любом порядке или, по меньшей мере, частично параллельно.
Следующий этап S62 формирует объединенный набор идентификаторов изображений на основе первого набора, определенного на этапе S60, и второго набора, определенного на этапе S61.
Необязательный, но предпочтительный следующий этап S63 сравнивает общее число идентификаторов изображений (IDS) в объединенном наборе с максимальным числом опорных изображений (MAX), т.е. с параметром max_num_ref_frames, типично сигнализируемым в SPS. Если общее число идентификаторов изображений в объединенном наборе превышает максимальное число опорных изображений, которые могут быть сохранены в буфере декодированных изображений, способ переходит к этапу S64. Этот этап S64 удаляет один или более идентификаторов изображений, включенных в первый набор, но не во второй набор, до тех пор, пока общее число идентификаторов изображений в объединенном наборе больше не превысит максимальное число опорных изображений. Таким образом, объединенный набор в силу этого обновляется посредством удаления идентификаторов изображений, определенных на этапе S60. Идентификаторы изображений предпочтительно удаляются в порядке, в котором они перечисляются в предварительно заданном описании буфера, идентифицированном на этапе S52 по фиг. 11, начиная с последнего идентификатора изображения и далее.
В конкретном варианте осуществления, кодированное представление изображения предпочтительно содержит флаг, чтобы указывать, выбрана ли явная сигнализация информации описания буфера и/или неявная сигнализация информации описания буфера для текущего изображения. В таком случае, декодер извлекает флаг из кодированного представления изображения, к примеру, из заголовка серии последовательных макроблоков или из некоторого другого поля управляющей информации, чтобы определять, какой тип сигнализации информации описания буфера использован для текущего изображения.
Фиг. 13 является блок-схемой последовательности операций способа, иллюстрирующей дополнительные этапы способа на фиг. 9, посредством которых буфер декодированных изображений, обновленный на этапе S32, используется для целей декодирования.
После того, как буфер декодированных изображений обновлен на этапе, изображения S32 могут быть доступными в буфере декодированных изображений, но не включаются в описание буфера. Следовательно, в варианте осуществления, изображения, которые доступны в буфере декодированных изображений, но не включены в описание буфера, удаляются посредством декодера из буфера декодированных изображений или помечаются как "неиспользуемые для ссылки" или "неиспользуемые для прогнозирования". Таким образом, в этом варианте осуществления удаление опорных изображений из буфера декодированных изображений или пометка изображений как "неиспользуемых для ссылки" выполняется посредством декодера до процесса декодирования изображений изображения, содержащего описание буфера.
Этап S70 иллюстрирует эту процедуру посредством удаления, из буфера декодированных изображений, всех опорных изображений, сохраненных в буфере декодированных изображений и не ассоциированных с каким-либо, по меньшей мере, из одного идентификатора изображения, определенного из информации описания буфера. В альтернативном варианте осуществления этого этапа S70 опорное изображение(я) не обязательно удаляется из буфера декодированных изображений. Этот вариант осуществления этапа S70 помечает все опорные изображения, сохраненные в буфере декодированных изображений и не ассоциированные с каким-либо, по меньшей мере, из одного идентификатора изображения, определенного из информации описания буфера, как неиспользуемые для ссылки или неиспользуемые для прогнозирования. Это означает то, что помеченное опорное изображение не должно использоваться в качестве основы прогнозирования для текущего изображения или для какого-либо последующего изображения в видеопотоке. Следовательно, декодер может выводить помеченное опорное изображение, если имеется потребность получать доступную позицию в буфере декодированных изображений. В конкретном варианте осуществления, изображение, помеченное как неиспользуемое для ссылки, не может быть включено в описание буфера и заново помечено как используемое для ссылки.
В конкретном варианте осуществления, все опорные изображения, присутствующие в буфере декодированных изображений и ассоциированные с каким-либо из идентификаторов изображений, определенных на основе информации описания буфера, предпочтительно помечаются на этапе S70 как используемые для ссылки. В варианте осуществления, опорное изображение может помечаться как используемое для кратковременной ссылки или как используемое для долговременной ссылки. Выбор между этими двумя конкретными альтернативами предпочтительно выполняется на основе информации описания буфера.
Этап S71 иллюстрирует дополнительный необязательный вариант осуществления. Этот вариант осуществления выводит нуль или более изображений, которые помечаются как неиспользуемые для ссылки посредством декодера согласно описанию буфера для отображения посредством декодера. Один такой примерный процесс для вывода является процессом скачкообразного вывода из H.264/MPEG-4 AVC. Вывод означает в данном документе вывод для отображения. То, какие изображения использовать в качестве опорных изображений и какие изображения выводить, т.е. отображать, разделяется в H.264 и HEVC. Это означает то, что изображение может выводиться до того, как оно удаляется в качестве опорного изображения, т.е. помечается как неиспользуемое для ссылки, или оно может удаляться в качестве опорного кадра посредством пометки его как неиспользуемого для ссылки до того, как оно выводится.
В ходе процесса декодирования может возникать такая ситуация, что описание буфера содержит информацию относительно изображений (также называемых "кадрами"), которые недоступны и, как следствие, не могут использоваться для опорных изображений. В варианте осуществления, определенное число "несуществующих" изображений формируется посредством декодера, если описание буфера содержит информацию относительно изображений, которые недоступны в буфере декодированных изображений. Для каждого такого изображения могут предоставляться значения для переменных, хранящих информацию, которая используется посредством декодера в процессе декодирования, даже если изображение не используется для взаимного прогнозирования или прогнозирования векторов движения. Эта информация может включать в себя, но не только, порядковый номер декодирования, порядковый номер отображения, информацию временных слоев, информацию видов, т.е. такие параметры, как frame_num, POC, termporal_id и view_id.
В варианте осуществления, формирование несуществующих изображений выполняется посредством декодера до процесса декодирования изображений изображения, содержащего информацию описания буфера.
Этапы S72 и S73 иллюстрируют этот вариант осуществления. Этап S72 сравнивает, по меньшей мере, один идентификатор изображения, определенный из информации описания буфера, с идентификаторами изображений, ассоциированными с опорными изображениями, уже сохраненными в буфере декодированных изображений. Если определенный идентификатор изображения не находится в числе идентификаторов изображений опорных изображений, сохраненных в буфере декодированных изображений, изображение, ассоциированное с определенным идентификатором изображения, определяется как отсутствующее или несуществующее. В варианте осуществления, несуществующее изображение необязательно формируется на этапе S73 и сохраняется в буфере декодированных изображений. Этому несуществующему изображению затем назначаются любые параметры, к примеру, идентификатор изображения, полученный из информации описания буфера относительно этого конкретного изображения. Способ затем переходит к этапу S33 по фиг. 9, на котором может начинаться процесс декодирования.
Изображения, которые сигнализируются в описании буфера, но не существуют в буфере декодированных изображений, предпочтительно помечаются как "несуществующие". Тем не менее, поскольку POC и temporal_id таких изображений включаются в описание буфера, явная сигнализация модификации списка опорных изображений не требуется. Если "несуществующее" изображение не используется для ссылки, то процесс декодирования должен продолжаться корректно без дополнительной сигнализации (и без дополнительного объема служебной нагрузки, связанного с явной сигнализацией модификаций списка опорных изображений).
В варианте осуществления, пометка нуля или более изображений на этапе S70 выполняется посредством декодера на первом этапе. На втором этапе нуль или более изображений выводятся посредством декодера на этапе S71. На третьем этапе нуль или более "несуществующих" изображений формируются посредством декодера на этапе S73.
В альтернативном варианте осуществления, пометка нуля или более изображений выполняется посредством декодера на первом этапе на этапе S70. Затем итеративный процесс вывода изображений (S71) и формирования несуществующих изображений (S73) выполняется посредством декодера для каждого изображения, описанного в описании буфера, которое недоступно в буфере декодированных изображений.
Варианты осуществления дополнительно улучшаются посредством применения операций буфера, например, процесса пометки изображений, перед декодированием изображений текущего изображения, и таким образом, результирующего применения явного описания буфера к текущему изображению. Это еще более снижает уязвимость к ошибкам управления опорными изображениями, повышает возможности для временной масштабируемости и уменьшает объем служебной нагрузки, введенный посредством сигнализации списка опорных изображений.
В варианте осуществления, описание буфера может содержать информацию, которая используется декодером при инициализации списка опорных изображений или модификации списка опорных изображений, или комбинировании списков опорных изображений. Пример заключается в том, что порядок, в котором изображения перечисляются в описании буфера, может быть использован в качестве начального порядка относительно одного из списков опорных изображений при инициализации списка опорных изображений. Следовательно, информация описания буфера может быть использована, когда список опорных изображений создается.
Фиг. 14 является блок-схемой последовательности операций способа, иллюстрирующей такой подход. Способ продолжается от этапа S32 по фиг. 9. Следующий этап S80 выполняет инициализацию списка опорных изображений на основе информации описания буфера. В конкретном варианте осуществления этапа S80, инициализация списка опорных изображений выполняется на основе информации описания буфера посредством упорядочения опорных изображений в списке опорных изображений согласно порядку, при котором информация описания буфера задает, по меньшей мере, один идентификатор изображения, определенный на этапе S31 по фиг. 9.
В варианте осуществления, ограничения указываются для изображений, включенных в описание буфера. Примерное ограничение заключается в том, что изображение A с temporal_id tId(A), описанным в описании буфера для изображения B с temporal_id tId(B), может не быть несуществующим изображением, если tId(A)<tId(B).
В варианте осуществления также можно сигнализировать изменения в свойствах изображений в буфере декодированных изображений через описания буфера. Пример состоит в том, чтобы изменять временной слой и/или порядок отображения изображений посредством сигнализации нового значения для временного слоя и/или порядка отображения в описании буфера.
Фиг. 16 является упрощенной блок-схемой последовательности операций способа для схемы работы опорного буфера согласно варианту осуществления. В этой схеме все операции буфера декодированных изображений применяются после синтаксического анализа первого заголовка серии последовательных макроблоков изображения, но до декодирования изображений с использованием описания буфера декодированных изображений, как проиллюстрировано на фиг. 16. Описание буфера, например, сигнализируется в заголовке серии последовательных макроблоков либо явно, либо со ссылкой на предварительно заданную структуру, сигнализируемую в PPS.
Варианты осуществления в силу этого предоставляют существенные концептуальные изменения процесса декодирования. В традиционном H.264/MPEG-4 AVC и текущей схеме HEVC, относительные операции предоставляются декодеру либо неявно, т.е. в окне переменной длительности, либо явно, в MMCO, и декодер управляет применением этих относительных операций и отслеживанием опорных изображений, т.е. тем, какие изображения могут использоваться для ссылки. В предложенной схеме опорные изображения, т.е. то, какие изображения могут использоваться для ссылки, сигнализируется в текущем изображении, к примеру, в заголовке серии последовательных макроблоков, в силу этого устраняя необходимость неявно и явно сигнализируемых относительных операций.
Это означает то, что каждое изображение должно иметь абсолютное описание опорных изображений вместо относительного описания, аналогично H.264/MEPG-4 AVC, в котором дельта-информация извлекается из MMCO либо из использования процесса с окном переменной длительности.
Согласно конкретному варианту осуществления, описание буфера содержит delta_POC, termporal_id и additional_picture_id всех опорных изображений в буфере декодированных изображений, чтобы предоставлять абсолютную ссылку на изображения, которые должны быть использованы в качестве опорных изображений. Delta_POC используется для того, чтобы вычислять POC опорного изображения в качестве POC(ref)=POC(current)+delta_POC. В варианте осуществления, изображения должны быть идентифицированы посредством пары POC и additional_picture_id. Temporal_id включается в описание буфера, чтобы обеспечивать корректную модификацию списка опорных изображений в случае потерянных или удаленных изображений, например, временную масштабируемость. Тем не менее, схема не ограничена кодовыми словами delta_POC, temporal_id и additional_picture_id. Любое кодовое слово, которое ассоциировано с изображением и используется при обработке опорного изображения, может быть использовано в качестве идентификатора изображения и может быть включено в описание буфера, либо относительного для значения текущего изображения, например, POC и delta_POC, либо абсолютного, например, temporal_id.
Все изображения в буфере декодированных изображений, которые не являются частью описания буфера, предпочтительно помечаются как неиспользуемые для ссылки.
В H.264/MPEG-4 AVC процесс, который доставляет изображения для вывода (называемый "процессом скачкообразного вывода" на фиг. 1), иногда выполняется до декодирования, т.е. если возникает пропуск в frame_num. Процесс скачкообразного вывода также выполняется после декодирования и пометки изображений.
В предложенной схеме по фиг. 16 процесс скачкообразного вывода применяется до декодирования. Можно утверждать, что это налагает дополнительную задержку в процессе декодирования перед доставкой изображений для вывода. Тем не менее, следует отметить, что первое изображение для отображения уже уникально задано после этапа процесса декодирования, как только число неотображаемых изображений в буфере декодированных изображений превышает или равно num_reorder_frames. Таким образом, декодер может доставлять это изображение для отображения непосредственно после этапа процесса декодирования. Таким образом, задержка предложенной схемы равна задержке текущей HEVC-схемы.
В H.264/MPEG-4 AVC, элемент frame_num синтаксиса используется для того, чтобы идентифицировать изображения в буфере декодированных изображений и обнаруживать пропуски в frame_num. Если gaps_in_frame_num_allowed равен 1, то декодер должен вставлять "несуществующие" кадры в буфер декодированных изображений для корректной работы процесса с окном переменной длительности.
В предложенной схеме, проиллюстрированной на фиг. 16, комбинация POC и additional_picture_id может быть использована, чтобы идентифицировать изображения в буфере декодированных изображений. Предложенная схема не должна обязательно содержать процесс с окном переменной длительности. Следовательно, предлагается удалять элементы frame_num и gaps_in_frame_num_allowed синтаксиса.
Фиг. 15 является примером структуры кодирования, к которой могут применяться варианты осуществления. В примере на фиг. 15, второе изображение в порядке декодирования должно включать POC 0 в свое описание буфера, в то время как третье изображение в порядке декодирования должно включать POC 0 и POC 4 в свое описание буфера. Четвертое изображение в порядке декодирования должно включать в свое описание буфера не только POC 0 и POC 2, но также и POC 4, поскольку это изображение должно использоваться для ссылки в будущем. Пятое изображение в порядке декодирования не должно включать POC 0 в свое описание буфера, если оно не должно использоваться для ссылки в будущем. Если POC 0 не включается в описание буфера, то он становится неиспользуемым для ссылки.
В примере на фиг. 15 additional_picture_id (или additional_id) равен 0 для всех изображений. Рекомендуется задавать additional_picture_id равным 0, если нет двух различных изображений, доступных для ссылки, с идентичным POC вследствие циклического возврата POC. Если POC является идентичным для двух различных изображений, additional_picture_id предпочтительно является отличающимся, чтобы не заменять безусловно устаревшее изображение на более новое. Additional_picture_id может быть использован, чтобы предоставлять все функциональности и возможности, которые предоставляются посредством долговременных изображений в H.264/MPEG-4 AVC. Следовательно, в конкретном варианте осуществления additional_picture_id, составляющий часть идентификатора изображения, может быть использован для сигнализации, должно ли опорное изображение использоваться для долговременной ссылки или для кратковременной ссылки.
Рассмотрим пример, в котором кодер предпочитает использовать изображение A с POC 14 и additional_picture_id, заданным равным 0, в качестве "долговременного изображения". Кодер должен затем проверять, что изображение A включается в описание буфера в заголовке серии последовательных макроблоков всех изображений после A в течение всего времени, пока кодеру желательно, чтобы изображение A было доступно для ссылки. Если кодер предпочитает кодировать другое изображение с помощью POC 14 (вследствие циклического возврата POC), в то время как A по-прежнему доступен для ссылки, кодер должен выбирать другое значение additional_picture_id, например, 1, чтобы не допускать того, что A заменяется в качестве опорного изображения.
Для изображений, которые должны использоваться для ссылки в течение короткого периода времени (кратковременных опорных изображений), рекомендуется задавать additional_picture_id равным 0, чтобы минимизировать дополнительное число битов. Для изображений, которые должны использоваться для ссылки в течение длительного периода времени (долговременных изображений), рекомендуется, чтобы кодер проверял то, что два изображения с идентичным POC и идентичным additional_picture_id недоступны для прогнозирования одновременно.
Дополнительный аспект вариантов осуществления задает кодер, выполненный с возможностью создавать информацию описания буфера, задающую, какие изображения должны быть использованы для опорных изображений, т.е. сохранены в буфере декодированных изображений, который должен использоваться для последующего декодирования. По меньшей мере, часть информации описания буфера вставляется в поток битов, кодированный посредством кодера.
Фиг. 18 является принципиальной блок-схемой варианта осуществления кодера 100. Кодер 100 выполнен с возможностью кодировать изображение видеопотока, содержащего несколько изображений. Кодер 100 содержит модуль 110 определения опорных изображений, выполненный с возможностью определять, по меньшей мере, одно опорное изображение для текущего изображения из нескольких изображений видеопотока. По меньшей мере, одно опорное изображение используется в качестве ссылки для кодирования для текущего изображения. Модуль 120 предоставления идентификаторов изображений кодера 100 выполнен с возможностью предоставлять соответствующий идентификатор изображения каждого опорного изображения, определенного посредством модуля 110 определения опорных изображений. Идентификатор изображения, предоставленный посредством модуля 120 предоставления идентификаторов изображений, идентифицирует свое ассоциированное опорное изображение. Идентификатор(ы) изображения, предоставленные посредством модуля 120 предоставления идентификаторов изображений, совместно составляют описание буфера для текущего изображения посредством перечисления идентификатора(ов) изображения для опорного изображения(й), требуемых для кодирования и декодирования текущего изображения, и необязательно также всех предыдущих опорных изображений видеопотока, требуемых для кодирования и декодирования последующего изображения видеопотока.
Кодер 100 также содержит формирователь 130 информации описания буфера, выполненный с возможностью формировать информацию описания буфера, т.е. информацию описания буфера, задающую, по меньшей мере, одно опорное изображение, определенное посредством модуля 110 определения опорных изображений. Формирователь 130 информации описания буфера выполнен с возможностью формировать эту информацию описания буфера на основе, по меньшей мере, одного идентификатора изображения из модуля 120 предоставления идентификаторов изображений.
Модуль 140 вставки данных реализуется в кодере 100 для того, чтобы вставлять информацию описания буфера, сформированную посредством формирователя 130 информации описания буфера, в кодированное представление текущего изображения. Следовательно, кодированный поток битов видеопотока относительно текущего изображения переносит информацию описания буфера. Это означает, что кодированное представление изображения должно переносить информацию описания буфера, которая задает релевантную информацию, т.е. идентификаторы изображений, требуемые декодером, чтобы обновлять буфер декодированных изображений для текущего изображения, чтобы за счет этого обеспечивать декодирование кодированного представления изображения.
Как пояснено выше, модуль 110 определения опорных изображений предпочтительно выполнен с возможностью определять любое опорное изображение видеопотока в качестве ссылки для кодирования не только для текущего изображения, но также и для всех опорных изображений, предпочтительно присутствующих в видеопотоке до текущего изображения в порядке декодирования, в качестве ссылки для кодирования для одного или более последующих изображений согласно порядку декодирования.
В конкретном варианте осуществления, каждое изображение может состоять из одной или более серий последовательных макроблоков. Каждая такая серия последовательных макроблоков затем может кодироваться и декодироваться независимо от других серий последовательных макроблоков идентичного изображения. Следовательно, модуль 110 определения опорных изображений предпочтительно определяет, по меньшей мере, для одной серии последовательных макроблоков, предпочтительно для каждой серии последовательных макроблоков изображения, по меньшей мере, одно опорное изображение, которое должно быть использовано для кодирования и декодирования конкретной серии последовательных макроблоков. Модуль 120 предоставления идентификаторов изображений предпочтительно предоставляет соответствующие идентификаторы изображений для всех опорных изображений, определенных посредством модуля 110 определения опорных изображений для текущего изображения, т.е. для всех своих серий последовательных макроблоков. Информация описания буфера в силу этого формируется посредством формирователя 130 информации описания буфера на основе этих предоставленных идентификаторов изображений. В предпочтительном варианте осуществления, модуль 140 вставки данных выполнен с возможностью вставлять информацию описания буфера в соответствующий заголовок серии последовательных макроблоков кодированного представления изображения. В таком случае, каждый заголовок серии последовательных макроблоков текущего изображения предпочтительно переносит идентичную информацию описания буфера. Это обеспечивает декодирование данной серии последовательных макроблоков, даже если другая серия последовательных макроблоков изображения непреднамеренно теряется.
Так же, другие позиции в управляющей информации в кодированном представлении изображения являются возможными для переноса информации описания буфера, как пояснено выше.
Описание буфера вариантов осуществления может включать в себя идентификатор(ы) изображения для опорного изображения(й). Альтернативно, описание буфера содержит ранее поясненный дельта-идентификатор(ы), который может быть использован вместе с идентификатором изображения для текущего изображения, чтобы вычислять идентификатор(ы) изображения для опорного изображения(й).
В таком случае, кодер 100 предпочтительно содержит модуль 150 вычисления идентификаторов, который выполнен с возможностью вычислять, для каждого идентификатора изображения, предоставленного посредством модуля 120 предоставления идентификаторов изображений, разность между идентификатором изображения и идентификатором изображения для текущего изображения. Эта разность соответствует дельта-идентификатору для опорного изображения. Формирователь 130 информации описания буфера выполнен с возможностью формировать информацию описания буфера на основе, по меньшей мере, одного разностного/дельта-идентификатора, вычисленного посредством модуля 150 вычисления идентификаторов. Информация описания буфера в силу этого задает, по меньшей мере, один идентификатор изображения для опорного изображения(й) относительно идентификатора изображения для текущего изображения.
Кодированное представление изображения может переносить идентификаторы изображений, предоставленные посредством модуля 120 предоставления идентификаторов изображений, или дельта-идентификаторы, вычисленные посредством модуля 150 вычисления идентификаторов, в качестве информации описания буфера, например, в заголовках серий последовательных макроблоков. Это предоставляет явную сигнализацию описания буфера в кодированном представлении изображения.
В альтернативном варианте осуществления, кодер 100 содержит формирователь 160 структур данных, выполненный с возможностью формировать структуру данных, содержащую несколько предварительно заданных описаний буфера. Каждое такое предварительно заданное описание буфера за счет этого задает, по меньшей мере, одно опорное изображение. Структура данных в силу этого может использоваться для нескольких изображений в видеопотоке в целях предоставления описания буфера, которое должно быть использовано в ходе декодирования для изображений. Формирователь 130 информации описания буфера в силу этого выполнен с возможностью выбирать описание буфера структуры данных на основе, по меньшей мере, одного идентификатора изображения, предоставленного посредством модуля 120 предоставления идентификаторов изображений для текущего изображения. Описание буфера, которое корректно совпадает, по меньшей мере, с идентификатором опорного изображения, в силу этого выбирается, и информация описания буфера, сформированная посредством формирователя 130 информации описания буфера, содержит идентификатор выбранного описания буфера.
Структура данных, сформированная посредством формирователя 160 структур данных, затем может быть вставлена в поле управляющей информации, ассоциированное с кодированным представлением видеопотока, к примеру, в PPS или SPS. Идентификатор релевантной управляющей информации, т.е. PPS-идентификатор или SPS-идентификатор (может иметь форму PPS-идентификатора для PPS, который, в свою очередь, содержит SPS-идентификатор для релевантного SPS), предпочтительно включается в управляющую информацию кодированного представления текущего изображения, к примеру, в заголовок серии последовательных макроблоков. В варианте осуществления, заголовок серии последовательных макроблоков или другое поле управляющей информации в силу этого переносит идентификатор управляющей информации и идентификатор выбранного описания буфера в качестве информации описания буфера.
В вышеприведенном описании варианты осуществления явной сигнализации идентификаторов изображений и опорной сигнализации идентификаторов изображений могут комбинироваться. В таком случае, формирователь 130 информации описания буфера выполнен с возможностью формировать информацию описания буфера, содержащую идентификатор выбранного описания буфера, предпочтительно также идентификатор управляющей информации, и содержащую информацию, такую как дельта-идентификатор или явный идентификатор изображения, задающую идентификатор изображения для опорного изображения.
Кодер 100 может использовать любой из ранее поясненных примеров идентификаторов изображений, к примеру, POC-значение, которое однозначно идентифицирует опорное изображение, либо POC-значение и дополнительный идентификатор.
Видеопоток может быть масштабируемым видеопотоком, в котором изображения группируются в несколько слоев. В таком случае, модуль 120 предоставления идентификаторов изображений выполнен с возможностью предоставлять, для каждого опорного изображения, идентификатор изображения и информацию временных слоев либо идентификатор, идентифицирующий слой, которому принадлежит опорное изображение. Формирователь 130 информации описания буфера затем формирует информацию описания буфера на основе, по меньшей мере, одного идентификатора изображения и на основе информации временных слоев. Таким образом, информация описания буфера предпочтительно задает, по меньшей мере, один идентификатор изображения и информацию временных слоев.
Модуль 110 определения опорных изображений предпочтительно выполнен с возможностью определять, по меньшей мере, одно опорное изображение в качестве ссылки для кодирования для взаимного прогнозирования и/или прогнозирования векторов движения для текущего изображения. По меньшей мере, одно опорное изображение в силу этого может быть определено посредством максимизации эффективности сжатия или кодирования кодированного представления изображения, т.е. минимизации числа символов, к примеру, биты, требуемые для представления кодированного представления. Эта максимизация сжатия предпочтительно выполняется в соответствии, по меньшей мере, с одним побочным ограничением, выбранным из наличия предварительно заданного максимального числа опорных изображений, а также из формирования декодируемого представления видеопотока, когда, по меньшей мере, одно кодированное представление изображения удаляется из кодированного представления видеопотока. Дополнительное альтернативное или дополнительное побочное ограничение состоит в том, что выбранное опорное изображение должно быть доступным для ссылки и прогнозирования в буфере декодированных изображений.
Кодер может быть реализован, по меньшей мере, частично в программном обеспечении. В этом варианте осуществления, как показано на фиг. 19, кодер 300 содержит модуль 310 ввода, выполненный с возможностью принимать несколько изображений видеопотока. Кодер 300 также содержит процессор 330, выполненный с возможностью обрабатывать кодовое средство компьютерной программы, сохраненной в запоминающем устройстве 340. Кодовое средство побуждает, при выполнении в процессоре 330, процессор 330 определять, для изображения видеопотока, по меньшей мере, одно опорное изображение видеопотока в качестве ссылки для кодирования для изображения. Процессор 330 также побуждают предоставлять, для каждого опорного изображения, идентификатор изображения, идентифицирующий опорное изображение, и формировать на основе, по меньшей мере, одного идентификатора изображения информацию описания буфера, задающую, по меньшей мере, одно опорное изображение. Процессор 330 дополнительно побуждают вставлять информацию описания буфера в кодированное представление изображения. Кодер 300 также содержит модуль 320 вывода, выполненный с возможностью выводить кодированные представления изображений.
Процессор 330 может быть компьютером, процессором или микропроцессором общего назначения или специального назначения, таким как центральный процессор (CPU). Программное обеспечение включает в себя элементы компьютерного программного кода или фрагменты программного кода, осуществляющие работу, по меньшей мере, модуля 110 определения опорных изображений, модуля 120 предоставления идентификаторов изображений, формирователя 130 информации описания буфера и модуля 140 вставки данных по фиг. 18.
Программа может быть сохранена полностью или частично на одном или более подходящих энергозависимых машиночитаемых носителей или средств хранения данных, таких как RAM, либо на одном или более энергонезависимых машиночитаемых носителей или средств хранения данных, таких как магнитные диски, CD-ROM, DVD-диски, жесткие диски, ROM или флэш-память. Средство хранения данных может быть локальным средством хранения данных или предоставляется удаленно, к примеру, на сервере данных. Таким образом, программное обеспечение может загружаться в оперативное запоминающее устройство компьютера или эквивалентной системы обработки для выполнения посредством процессора. Компьютер/процессор не должен быть обязательно выделенным для того, чтобы выполнять только вышеописанные функции, и также может выполнять другие программные задачи. Неограничивающий пример программного кода, используемого для того, чтобы задавать кодер 300, включает в себя код с одним потоком инструкций и несколькими потоками данных (SIMD).
Альтернативно кодер может быть реализован в аппаратных средствах. Предусмотрено множество разновидностей схемных элементов, которые могут быть использованы и комбинированы для того, чтобы осуществлять функции модулей 110-160 кодера 100 на фиг. 18. Такие разновидности охватываются посредством вариантов осуществления. Конкретные примеры аппаратной реализации кодера 100 представляют собой реализацию в аппаратных средствах процессора цифровых сигналов (DSP) и технологию изготовления интегральных схем, включающих в себя как электронные схемы общего назначения, так и специализированные схемы.
Согласно аспекту вариантов осуществления, предоставляется передающее устройство 200, как показано на фиг. 17. Передающее устройство 200 содержит модуль 210 ввода, выполненный с возможностью принимать несколько изображений 10 видеопотока. Изображения 10 перенаправляются в кодер 100, к примеру, проиллюстрированный на фиг. 18 или на фиг. 19, который выполнен с возможностью кодировать несколько изображений 10, чтобы формировать соответствующие кодированные представления нескольких изображений. Модуль 220 вывода передающего устройства 200 выполнен с возможностью выводить соответствующие кодированные представления нескольких изображений в качестве кодированного потока битов, переносящего информацию описания буфера вариантов осуществления.
Аспект вариантов осуществления относится к декодеру для обнаружения информации описания буфера и для определения абсолютной ссылки на изображения, которые должны быть использованы в качестве опорных изображений для декодирования на основе обнаруженного описания буфера, и к буферу для сохранения изображений, которые должны быть использованы в качестве опорных изображений.
Фиг. 21 является принципиальной блок-схемой декодера 400 согласно варианту осуществления. Декодер 400 выполнен с возможностью декодировать кодированное представление изображения видеопотока, содержащего несколько изображений. Декодер 400 содержит модуль 410 извлечения данных, выполненный с возможностью извлекать информацию описания буфера, задающую, по меньшей мере, одно опорное изображение, из кодированного представления изображения. Информация описания буфера используется посредством модуля 420 определения идентификаторов изображений, который выполнен с возможностью определять, по меньшей мере, один идентификатор изображения, идентифицирующий соответствующее опорное изображение в качестве ссылки для декодирования для изображения. Декодер 400 также содержит диспетчер 430 буфера, выполненный с возможностью обновлять буфер декодированных изображений или ассоциированный с декодером 400, на основе, по меньшей мере, одного идентификатора изображения, определенного посредством модуля 420 определения идентификаторов изображений.
В конкретном варианте осуществления, модуль 410 извлечения данных выполнен с возможностью извлекать информацию описания буфера, задающую несколько идентификаторов изображений, из кодированного представления изображения. Модуль 420 определения идентификаторов изображений затем выполнен с возможностью определять на основе извлеченной информации описания буфера, по меньшей мере, один идентификатор изображения, идентифицирующий соответствующее опорное изображение в качестве ссылки для декодирования для изображения, и, по меньшей мере, один идентификатор изображения, идентифицирующий соответствующее опорное изображение в качестве ссылки для декодирования для последующего, согласно порядку декодирования, изображения видеопотока.
Диспетчер 430 буфера предпочтительно выполнен с возможностью обновлять буфер декодированных изображений так, что он содержит соответствующее опорное изображение, идентифицированное посредством, по меньшей мере, одного идентификатора изображения.
Таким образом, информация описания буфера, переносимая посредством кодированного представления изображения, используется для того, чтобы идентифицировать то, какое опорное изображение(е) должно быть сохранено в буфере декодированных изображений для декодирования текущего изображения и для декодирования последующего изображения видеопотока. Информация описания буфера в силу этого предоставляет в декодер 400 информацию, требуемую для того, чтобы обновлять буфер декодированных изображений, чтобы сохранять корректное опорное изображение(я).
После того, как диспетчер 430 буфера обновляет буфер декодированных изображений, декодер 400 может декодировать изображение на основе кодированного представления изображения и, по меньшей мере, одного опорного изображения, сохраненного в обновленном буфере декодированных изображений.
Информация описания буфера предпочтительно предоставляется в управляющей информации кодированного представления изображения. Например, модуль 410 извлечения данных может быть выполнен с возможностью извлекать информацию описания буфера из заголовка серии последовательных макроблоков кодированного представления изображения. В таком случае, информация описания буфера предпочтительно извлекается из первого заголовка серии последовательных макроблоков, принимаемого для текущего изображения, поскольку все оставшиеся заголовки серий последовательных макроблоков изображения предпочтительно должны переносить идентичную информацию описания буфера.
Извлеченная информация описания буфера может включать в себя явные идентификаторы изображений опорных изображений, которые должны быть сохранены в буфере декодированных изображений. В альтернативном варианте осуществления, информация описания буфера задает соответствующий дельта-идентификатор для опорных изображений. Модуль 420 определения идентификаторов изображений затем выполнен с возможностью извлекать, по меньшей мере, один дельта-идентификатор из информации описания буфера и вычислять, по меньшей мере, один идентификатор изображения на основе соответствующего дельта-идентификатора и идентификатора изображения для текущего изображения, предпочтительно в качестве суммы дельта-идентификатора и идентификатора изображения для текущего изображения.
Вместо явной сигнализации идентификаторов изображений или дельта-идентификаторов в кодированном представлении изображения может быть использована опорная сигнализация. Модуль 410 извлечения данных в этом варианте осуществления выполнен с возможностью извлекать идентификатор описания буфера из кодированного представления изображения. Декодер 400 предпочтительно содержит модуль 480 идентификации описания буфера, выполненный с возможностью идентифицировать описание буфера из структуры данных, содержащей несколько предварительно заданных описаний буфера, с использованием извлеченного идентификатора описания буфера.
Модуль 410 извлечения данных предпочтительно в этом варианте осуществления также выполнен с возможностью извлекать структуру данных, задающую несколько предварительно заданных описаний буфера, из поля управляющей информации, или ассоциированную с кодированным представлением видеопотока, к примеру, из PPS или SPS.
В конкретном варианте осуществления, поле управляющей информации кодированного представления изображения, к примеру, заголовок серии последовательных макроблоков, предпочтительно содержит идентификатор поля управляющей информации, к примеру, PPS или SPS, переносящий структуру данных. Модуль 410 извлечения данных в силу этого извлекает этот идентификатор и использует его для того, чтобы идентифицировать релевантное поле управляющей информации со структурой данных.
В другом варианте осуществления, информация описания буфера содержит идентификатор описания буфера и такую информацию, как идентификатор изображения или дельта-идентификатор, идентифицирующий, по меньшей мере, один идентификатор изображения. Модуль 420 определения идентификаторов изображений затем выполнен с возможностью определять первый набор, по меньшей мере, из одного идентификатора изображения из идентифицированного описания буфера, предпочтительно из структуры данных. Модуль 420 определения идентификаторов изображений также определяет второй набор, по меньшей мере, из одного идентификатора изображения из информации, задающей, по меньшей мере, один идентификатор изображения, причем эта информация явно сигнализируется в кодированном представлении изображения, к примеру, в форме идентификатора изображения или дельта-идентификатора. Объединенный набор идентификаторов изображений затем формируется из первого набора и второго набора посредством модуля 420 определения идентификаторов изображений.
В конкретном варианте осуществления, декодер 400 содержит модуль 440 сравнения чисел, выполненный с возможностью сравнивать общее число идентификаторов изображений в объединенном наборе с максимальным числом опорных изображений, которые могут быть сохранены в буфере декодированных изображений. Если общее число идентификаторов изображений в объединенном наборе превышает максимальное число опорных изображений, модуль 420 определения идентификаторов изображений выполнен с возможностью удалять один или более идентификаторов изображений, включенных в первый набор, но не во второй набор, до тех пор, пока общее число идентификаторов изображений в объединенном наборе больше не превысит максимальное число опорных изображений.
Диспетчер 430 буфера декодера 400 выполнен с возможностью, в конкретном варианте осуществления, удалять все опорные изображения, присутствующие в буфере декодированных изображений, но не ассоциированные с каким-либо, по меньшей мере, из одного идентификатора изображения, определенного из информации описания буфера. Следовательно, все опорные изображения, которые сохраняются в буфере декодированных изображений, но не идентифицируются из информации описания буфера, предпочтительно удаляются из буфера декодированных изображений посредством диспетчера 430 буфера.
В альтернативном и предпочтительном подходе, диспетчер 430 буфера выполнен с возможностью помечать все опорные изображения, сохраненные в буфере декодированных изображений, но не ассоциированные с каким-либо, по меньшей мере, из одного идентификатора изображения из информации описания буфера, как неиспользуемые для ссылки, что также называется как "неиспользуемые для прогнозирования".
В конкретном варианте осуществления, все опорные изображения, присутствующие в буфере декодированных изображений и ассоциированные с каким-либо из идентификаторов изображений, определенных на основе информации описания буфера, предпочтительно помечаются посредством диспетчера 430 буфера как используемые для ссылки. В варианте осуществления, опорное изображение может помечаться как используемое для кратковременной ссылки или как используемое для долговременной ссылки. Выбор между этими двумя конкретными альтернативами предпочтительно выполняется на основе информации описания буфера.
Диспетчер 430 буфера декодера 400 предпочтительно выполнен с возможностью помечать все опорные изображения до декодирования текущего изображения посредством декодера 400.
В конкретном варианте осуществления, декодер 400 содержит модуль 450 вывода, выполненный с возможностью выводить нуль или более изображений из буфера декодированных изображений для отображения до того, как декодер 400 декодирует текущее изображение. В конкретном варианте осуществления, модуль 450 вывода выводит все опорные изображения, помеченные как неиспользуемые для ссылки посредством диспетчера 430 буфера.
Необязательный вариант осуществления декодера 400 содержит модуль 460 сравнения идентификаторов, выполненный с возможностью сравнивать, по меньшей мере, один идентификатор изображения, определенный посредством модуля 420 определения идентификаторов изображений, с идентификатором(ами) изображения для опорного изображения(й), сохраненного в буфере декодированных изображений. Если какой-либо, по меньшей мере, из одного идентификатора изображения, заданного посредством информации описания буфера, не имеет совпадающего опорного изображения в буфере декодированных изображений, изображение, ассоциированное с данным идентификатором изображения, определяется посредством модуля 420 определения идентификаторов изображений как несуществующее или пропущенное.
В необязательном варианте осуществления модуль 420 определения идентификаторов изображений выполнен с возможностью формировать любое несуществующее изображение и сохранять такое сформированное изображение в буфере декодированных изображений. Идентификатор изображения и любая другая информация, получаемая из информации описания буфера относительно несуществующего изображения, предпочтительно назначаются сформированному изображению посредством модуля 420 определения идентификаторов изображений.
Декодер 400 также может содержать диспетчер 470 списков, выполненный с возможностью осуществлять инициализацию списка опорных изображений на основе информации описания буфера. В конкретном варианте осуществления, диспетчер 470 списков выполнен с возможностью осуществлять инициализацию списка опорных изображений посредством упорядочения опорных изображений в списке опорных изображений согласно порядку, при котором информация описания буфера задает, по меньшей мере, один идентификатор изображения. Следовательно, информация описания буфера задает не только идентификаторы изображений опорных изображений, но и порядок, в котором они задаются в информации описания буфера, также предоставляет инструкции в диспетчер 470 списков относительно формирования списка опорных изображений.
Декодер может быть реализован, по меньшей мере, частично в программном обеспечении. В этом варианте осуществления, как показано на фиг. 22, декодер 600 содержит модуль 610 ввода, выполненный с возможностью принимать кодированные представления нескольких изображений видеопотока. Декодер 600 также содержит процессор 630, выполненный с возможностью обрабатывать кодовое средство компьютерной программы, сохраненной в запоминающем устройстве 640. Кодовое средство побуждает, при выполнении в процессоре 630, процессор 630 извлекать информацию описания буфера, задающую, по меньшей мере, одно опорное изображение, из кодированного представления изображения. Кодовое средство также побуждает процессор 630 определять, по меньшей мере, один идентификатор изображения, идентифицирующий соответствующее опорное изображение, из информации описания буфера. Соответствующее опорное изображение должно быть использовано в качестве ссылки для декодирования для изображения. Процессор 630 дополнительно побуждают обновлять буфер 650 декодированных изображений на основе, по меньшей мере, одного идентификатора изображения. Декодер 600 также содержит модуль 620 вывода, выполненный с возможностью выводить декодированные изображения видеопотока.
Процессор 630 может быть компьютером, процессором или микропроцессором общего назначения или специального назначения, таким как центральный процессор (CPU). Программное обеспечение включает в себя элементы компьютерного программного кода или фрагменты программного кода, осуществляющие работу, по меньшей мере, модуля 410 извлечения данных, модуля 420 определения идентификаторов изображений и диспетчера 430 буфера по фиг. 21.
Программа может быть сохранена полностью или частично на одном или более подходящих энергозависимых машиночитаемых носителей или средств хранения данных, таких как RAM, либо на одном или более энергонезависимых машиночитаемых носителей или средств хранения данных, таких как магнитные диски, CD-ROM, DVD-диски, жесткие диски, ROM или флэш-память. Средство хранения данных может быть локальным средством хранения данных или предоставляется удаленно, к примеру, на сервере данных. Таким образом, программное обеспечение может загружаться в оперативное запоминающее устройство компьютера или эквивалентной системы обработки для выполнения посредством процессора. Компьютер/процессор не должен быть обязательно выделенным для того, чтобы выполнять только вышеописанные функции, и также может выполнять другие программные задачи. Неограничивающий пример программного кода, используемого для того, чтобы задавать декодер 600, включает в себя код с одним потоком инструкций и несколькими потоками данных (SIMD).
Альтернативно декодер может быть реализован в аппаратных средствах. Предусмотрено множество разновидностей схемных элементов, которые могут использоваться и комбинироваться, чтобы осуществлять функции модулей 410-480 декодера 400 на фиг. 21. Такие разновидности охватываются посредством вариантов осуществления. Конкретные примеры аппаратной реализации декодера 400 представляют собой реализацию в аппаратных средствах процессора цифровых сигналов (DSP) и технологию изготовления интегральных схем, включающих в себя как электронные схемы общего назначения, так и специализированные схемы.
Согласно аспекту вариантов осуществления, предоставляется приемное устройство 500, как показано на фиг. 20. Приемное устройство 500 содержит модуль 510 ввода, выполненный с возможностью принимать кодированные представления нескольких изображений видеопотока. Кодированное представление переносит информацию описания буфера согласно вариантам осуществления. Кодированные представления перенаправляются в декодер 400, к примеру, проиллюстрированный на фиг. 21 или на фиг. 22, который выполнен с возможностью декодировать кодированные представления нескольких изображений. Модуль 520 вывода приемного устройства 500 выполнен с возможностью выводить декодированные изображения видеопотока. Приемное устройство 500 также содержит буфер 530 декодированных изображений, сохраняющий опорные изображения, которые должны быть использованы посредством декодера 400 при декодировании изображений.
ПРИЛОЖЕНИЕ
Настоящее приложение представляет предлагаемый синтаксис варианта осуществления. В приложении, добавленный элемент синтаксиса относительно HEVC-проекта предшествующего уровня техники помечается подчеркиванием, а удаленные элементы синтаксиса помечаются перечеркиванием.
Заголовок серии последовательных макроблоков
Набор параметров изображения
Предлагаемая семантика
Процесс декодирования для применения описания буфера
Этот процесс активируется в начале процесса декодирования для каждого I-, P- или B-изображения до декодирования первой единицы кодирования в первой серии последовательных макроблоков изображения и до процесса декодирования для составления списка опорных изображений.
Процесс может приводить к пометке одного или более изображений как "неиспользуемых для ссылки".
Процесс может приводить к составлению "несуществующих" изображений, как описано в разделе "Создание несуществующих изображений".
Опорное изображение идентифицируется для использования в процессе декодирования посредством переменных POC и additional_picture_id.
Считается, что опорное изображение r в буфере декодированных изображений является частью описания буфера исключительно в том случае, если POC(r)=POC(curr)+delta_POC(i) и additional_picture_id(r)=additional_picture_id(i) для любого i в диапазоне от 0 до number_pictures_in_buffer_description.
Последовательность операций для применения описания буфера
Применение описания буфера продолжается на следующих упорядоченных этапах:
1. В зависимости от того, является или нет текущее изображение IDR-изображением, применяется следующее.
- Если текущее изображение является IDR-изображением, все опорные изображения помечаются как неиспользуемые для ссылки.
- В противном случае (текущее изображение не является IDR-изображением), применяются следующие упорядоченные этапы:
I. Информация описания буфера в заголовке серии последовательных макроблоков для первой серии последовательных макроблоков текущего изображения используется для того, чтобы создавать список опорных изображений, называемый "описанием буфера", как описано в разделе "Создание описания буфера".
II. Все опорные изображения (в буфере декодированных изображений), которые не являются частью описания буфера, помечаются как "неиспользуемые для ссылки".
III. Если одно или более изображений, которые включаются в описание буфера, недоступны для ссылки (т.е. существуют в опорном буфере, помеченном как "используемый для ссылки"), активируется процесс, описанный в разделе "Создание несуществующих изображений".
2. Серии последовательных макроблоков текущего изображения декодируются.
Создание описания буфера
Если buffer_description_reference_flag равен 1, описание буфера создается с заданием deltaPOC равным deltaPOC записи описания PPS-буфера, идентифицированной посредством buffer_description_id, temporal_id равным temporal_id записи описания PPS-буфера, идентифицированной посредством buffer_description_id, и additional_picture_id равным 0 для каждого изображения i в диапазоне от 0 до number_of_pictures_in_buffer_description-1.
Если buffer_description_reference_flag равен 0, описание буфера создается с заданием deltaPOC равным deltaPOC явно сигнализируемого описания буфера, temporal_id равным temporal_id явно сигнализируемого описания буфера и additional_picture_id равным additional_picture_id явно сигнализируемого описания буфера для каждого изображения i в диапазоне от 0 до number_of_explicitly_signaled_pictures-1.
Создание несуществующих изображений
Этот процесс предпочтительно активируется для каждого изображения, которое включается в описание буфера текущего изображения, но недоступно в буфере декодированных изображений. Иными словами, если описание буфера текущего изображения содержит запись i с POC(i) и additional_picture_id(i), так что отсутствует изображение j в буфере декодированных изображений, помеченное как "используемое для ссылки", с POC(j)==POC(i) и additional_picture_id(j)==additional_picture_id(i).
Для каждого такого описания "несуществующее" изображение формируется с POC, заданным равным POC(i), additional_picture_id, заданным равным additional_picture_id(i), temporal_id, заданным равным temporal_id(i), и помечается как "несуществующее" и "используемое для ссылки". Выборочные значения сформированных кадров могут задаваться равными любому значению. К этим сформированным кадрам, которые помечаются в качестве "несуществующих", не следует обращаться в процессе взаимного прогнозирования.
Вышеописанные варианты осуществления следует рассматривать как несколько иллюстративных примеров настоящего изобретения. Специалисты в данной области техники должны понимать, что различные модификации, комбинации и изменения могут быть выполнены в вариантах осуществления.
В частности, решения по различным частям в различных вариантах осуществления могут комбинироваться в другие конфигурации, если технически осуществимо. Тем не менее, объем настоящего изобретения задается посредством прилагаемой формулы изобретения.
Изобретение относится к средствам для сигнализации опорных изображений. Технический результат заключается в повышении эффективности сигнализации опорных изображений. Извлекают информацию описания буфера, задающую по меньшей мере одно опорное изображение, из упомянутого кодированного представления упомянутого изображения. Определяют, на основе упомянутой информации описания буфера, по меньшей мере один идентификатор изображения, идентифицирующий соответствующее опорное изображение, из упомянутого по меньшей мере одного опорного изображения, в качестве ссылки для декодирования для упомянутого изображения. Обновляют буфер декодированных изображений на основе упомянутого идентификатора изображения, для чего помечают все опорные изображения, присутствующие в упомянутом буфере декодированных изображений и не ассоциированные с каким-либо из упомянутого по меньшей мере одного идентификатора изображения, как неиспользуемые для ссылки. 3 н. и 4 з.п. ф-лы, 22 ил., 2 табл.
1. Способ декодирования кодированного представления (60) изображения (10) видеопотока (1) из нескольких изображений (10, 40, 42, 50), причем упомянутый способ содержит этапы, на которых:
извлекают (S30) информацию описания буфера, задающую по меньшей мере одно опорное изображение (40, 42), из структуры данных упомянутого кодированного представления (60) упомянутого изображения (10); и
определяют (S31), на основе упомянутой информации описания буфера, по меньшей мере один идентификатор изображения, идентифицирующий соответствующее опорное изображение (40, 42), из упомянутого по меньшей мере одного опорного изображения (40, 42), в качестве ссылки для декодирования для упомянутого изображения (10);
обновляют (S32) буфер (530, 650) декодированных изображений на основе упомянутого по меньшей мере одного идентификатора изображения, для чего помечают (S70) все опорные изображения, присутствующие в упомянутом буфере (530, 650) декодированных изображений и не ассоциированные с каким-либо из упомянутого по меньшей мере одного идентификатора изображения, определенного на основе упомянутой информации описания буфера, как неиспользуемые для ссылки,
декодируют (S33) упомянутое изображение (10) на основе упомянутого кодированного представления (60) упомянутого изображения (10) и по меньшей мере одного опорного изображения (40, 42), присутствующего в упомянутом буфере (530, 650) декодированных изображений, при этом декодирование упомянутого изображения (10) выполняется после обновления упомянутого буфера (530, 650) декодированных изображений,
отличающийся тем, что
информация описания буфера задает указанное по меньшей мере одно опорное изображение (40, 42) абсолютным и явным способом посредством упомянутого кодированного представления (60) упомянутого изображения (10), которое содержит в указанной структуре данных информацию относительно того, какое опорное изображение следует использовать для ссылки во время декодирования независимо от закодированного представления предыдущих изображений в видеопотоке.
2. Способ по п. 1, в котором обновление (S32) упомянутого буфера (530, 650) декодированных изображений содержит этап, на котором обновляют (S32) упомянутый буфер (530, 650) декодированных изображений так, что он содержит упомянутое опорное изображение (40, 42), идентифицированное посредством упомянутого по меньшей мере одного идентификатора изображения.
3. Способ по п. 1 или 2, в котором:
извлечение (S30) упомянутой информации описания буфера содержит этап, на котором извлекают (S30) упомянутую информацию описания буфера, задающую несколько опорных изображений (40, 42), из упомянутого кодированного представления (60) упомянутого изображения (10);
определение (S31) упомянутого по меньшей мере одного идентификатора изображения содержит этап, на котором определяют (S31), на основе упомянутой информации описания буфера, i) по меньшей мере один идентификатор изображения, идентифицирующий соответствующее опорное изображение (40, 42) из упомянутых нескольких опорных изображений (40, 42) в качестве ссылки для декодирования для упомянутого изображения (10), и ii) по меньшей мере один идентификатор изображения, идентифицирующий соответствующее опорное изображение (42) из упомянутых нескольких опорных изображений (40, 42) в качестве ссылки для декодирования для последующего, согласно порядку декодирования, изображения (50) упомянутого видеопотока (1).
4. Декодер (400), выполненный с возможностью декодировать кодированное представление (60) изображения (10) видеопотока (1) из нескольких изображений (10, 40, 42, 50), причем упомянутый декодер (400) содержит:
модуль (410) извлечения данных, выполненный с возможностью извлекать информацию описания буфера, задающую по меньшей мере одно опорное изображение (40, 42), из структуры данных упомянутого кодированного представления (60) упомянутого изображения (10);
модуль (420) определения идентификаторов изображений, выполненный с возможностью определять на основе упомянутой информации описания буфера по меньшей мере один идентификатор изображения, идентифицирующий соответствующее опорное изображение (40, 42), из упомянутого по меньшей мере одного опорного изображения (40, 42), в качестве ссылки для декодирования для упомянутого изображения (10); диспетчер (430) буфера, выполненный с возможностью обновлять буфер (530) декодированных изображений на основе упомянутого по меньшей мере одного идентификатора изображения, для чего помечают (S70) все опорные изображения, присутствующие в упомянутом буфере (530) декодированных изображений и не ассоциированные с каким-либо из упомянутого по меньшей мере одного идентификатора изображения, определенного на основе упомянутой информации описания буфера, как неиспользуемые для ссылки, при этом
указанный декодер (400) выполнен с возможностью декодирования, после того, как диспетчер (430) буфера обновил буфер (530) декодированных изображений, указанного изображения (10) на основе упомянутого кодированного представления (60) упомянутого изображения (10) и по меньшей мере одного опорного изображения (40, 42), присутствующего в упомянутом буфере (530) декодированных изображений,
отличающийся тем, что
информация описания буфера задает указанное по меньшей мере одно опорное изображение (40, 42) абсолютным и явным способом посредством упомянутого кодированного представления (60) упомянутого изображения (10), которое содержит в указанной структуре данных информацию относительно того, какое опорное изображение следует использовать для ссылки во время декодирования независимо от закодированного представления предыдущих изображений в видеопотоке.
5. Декодер по п. 4, в котором упомянутый диспетчер (430) буфера выполнен с возможностью обновлять упомянутый буфер (530) декодированных изображений так, что он содержит упомянутое опорное изображение (40, 42), идентифицированное посредством упомянутого по меньшей мере одного идентификатора изображения.
6. Декодер по п. 4 или 5, в котором:
упомянутый модуль (410) извлечения данных выполнен с возможностью извлекать упомянутую информацию описания буфера, задающую несколько опорных изображений (40, 42), из упомянутого кодированного представления (60) упомянутого изображения (10); и
упомянутый модуль (420) определения идентификаторов изображений выполнен с возможностью определять на основе упомянутой информации описания буфера, i) по меньшей мере один идентификатор изображения, идентифицирующий соответствующее опорное изображение (40, 42) из упомянутых нескольких опорных изображений (40, 42) в качестве ссылки для декодирования для упомянутого изображения (10), и ii) по меньшей мере один идентификатор изображения, идентифицирующий соответствующее опорное изображение (42) из упомянутых нескольких опорных изображений (40, 42) в качестве ссылки для декодирования для последующего, согласно порядку декодирования, изображения (50) упомянутого видеопотока (1).
7. Приемное устройство (500), содержащее:
модуль (510) ввода, выполненный с возможностью принимать кодированные представления (60) нескольких изображений (10, 40, 42, 50) видеопотока (1);
декодер (400) по любому из пп. 4-6, выполненный с возможностью декодировать упомянутые кодированные представления (60) упомянутых нескольких изображений (10, 40, 42, 50); и
модуль (520) вывода, выполненный с возможностью выводить декодированные изображения упомянутого видеопотока (1).
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок | 1923 |
|
SU2008A1 |
Приспособление для суммирования отрезков прямых линий | 1923 |
|
SU2010A1 |
Пресс для выдавливания из деревянных дисков заготовок для ниточных катушек | 1923 |
|
SU2007A1 |
СПОСОБ ВЫБОРА ОПОРНОГО ИЗОБРАЖЕНИЯ | 2005 |
|
RU2328090C2 |
Пресс для выдавливания из деревянных дисков заготовок для ниточных катушек | 1923 |
|
SU2007A1 |
ЭФФЕКТИВНОЕ ПО ИСПОЛЬЗОВАНИЮ ПАМЯТИ АДАПТИВНОЕ БЛОЧНОЕ КОДИРОВАНИЕ | 2007 |
|
RU2413360C1 |
Авторы
Даты
2022-02-02—Публикация
2019-11-25—Подача