СИГНАЛИЗАЦИЯ ДОЛГОСРОЧНЫХ ЭТАЛОННЫХ ИЗОБРАЖЕНИЙ ПРИ КОДИРОВАНИИ ВИДЕО
SIGNALIZATION OF LONG-TERM REFERENCE IMAGES IN CODING VIDEO

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
[0001] По данной заявке испрашивается приоритет предварительной заявки на патент США № 61/706510, поданной 27 сентября 2012 г., и предварительной заявки на патент США № 61/708442, поданной 1 октября 2012 г., все содержание каждой из которых включено в этот документ посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Данное раскрытие изобретения относится к кодированию видео (то есть кодированию и/или декодированию видеоданных).
УРОВЕНЬ ТЕХНИКИ
[0003] Возможности цифрового видео могут встраиваться в широкий диапазон устройств, включая цифровые телевизоры, системы цифрового прямого вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), переносные или настольные компьютеры, планшетные компьютеры, электронные книги, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные проигрыватели, видеоигровые устройства, игровые приставки, сотовые или спутниковые радиотелефоны, так называемые "смартфоны", устройства для видеоконференцсвязи, устройства для потокового видео и т.п. Цифровые видеоустройства реализуют методики сжатия видео, например описанные в стандартах, заданных MPEG-2, MPEG-4, H.263 ITU-T, H.264/MPEG-4 ITU-T, часть 10, Улучшенное кодирование видео (AVC), стандартом Высокоэффективного кодирования видео (HEVC), и расширениях таких стандартов. Видеоустройства могут эффективнее передавать, принимать, кодировать, декодировать и/или хранить цифровую видеоинформацию с помощью реализации таких методик сжатия видео.
[0004] Методики сжатия видео выполняют пространственное (внутреннее, intra-picture) предсказание и/или временное (внешнее, inter-picture) предсказание для уменьшения или устранения избыточности, присущей видеопоследовательностям. Для блочного кодирования видео можно разбить секцию (slice) видео (например, видеокадр или часть видеокадра) на видеоблоки. Видеоблоки в секции с внутренним кодированием (intra-coded, I) изображения кодируются с использованием пространственного предсказания относительно эталонных выборок в соседних блоках в том же изображении. Видеоблоки в секции с внешним кодированием (inter-coded, P или B) изображения могут использовать пространственное предсказание относительно эталонных выборок в соседних блоках в том же изображении или временное предсказание относительно эталонных выборок в других эталонных изображениях. Изображения могут называться кадрами, а эталонные изображения могут называться эталонными кадрами.
[0005] Пространственное или временное предсказание приводит к блоку с предсказанием для блока, который будет кодироваться. Остаточные данные представляют собой разности пикселей между исходным блоком, который будет кодироваться, и блоком с предсказанием. Блок с внешним кодированием кодируется в соответствии с вектором движения, который указывает на блок эталонных выборок, образующих блок с предсказанием, а остаточные данные указывают разность между кодированным блоком и блоком с предсказанием. Блок с внутренним кодированием кодируется в соответствии с режимом внутреннего кодирования и остаточными данными. Для дополнительного сжатия остаточные данные могут быть преобразованы из области пикселей в область преобразования, что приводит к остаточным коэффициентам, которые затем можно квантовать. Квантованные коэффициенты, организованные первоначально в двумерный массив, можно сканировать для создания одномерного вектора коэффициентов, и может применяться энтропийное кодирование для достижения еще большего сжатия.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
[0006] Вообще, данное раскрытие изобретения описывает сигнализацию долгосрочных эталонных изображений (LTRP) при кодировании видео. Видеокодер сигнализирует первую запись LTRP в заголовке секции для текущей секции текущего изображения. Первая запись LTRP указывает, что конкретное эталонное изображение является LTRP у текущего изображения. Кроме того, видеокодер сигнализирует вторую запись LTRP в заголовке секции, только если вторая запись LTRP не указывает, что конкретное эталонное изображение является долгосрочным эталонным изображением у текущего изображения. Аналогичным образом видеодекодер может декодировать заголовок секции и может сформировать список эталонных изображений для текущего изображения, по меньшей мере, частично на основе одной или более записей LTRP, сигнализированных в заголовках секций. Видеодекодер может восстановить текущее изображение, по меньшей мере, частично на основе одного или более эталонных изображений в списке эталонных изображений для текущего изображения.
[0007] В одном примере данное раскрытие изобретения описывает способ декодирования видеоданных, содержащий: получение заголовка секции у текущей секции текущего изображения из потока двоичных сигналов, где в заголовке секции сигнализируется набор из одной или более записей LTRP, где набор из одной или более записей LTRP включает в себя первую запись LTRP, указывающую, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения, и где набор из одной или более записей LTRP включает в себя вторую запись LTRP, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения; формирование списка эталонных изображений для текущего изображения по меньшей мере частично на основе одной или более записей LTRP; и восстановление текущего изображения по меньшей мере частично на основе одного или более эталонных изображений в списке эталонных изображений для текущего изображения.
[0008] В другом примере данное раскрытие изобретения описывает устройство декодирования видео, содержащее один или более процессоров, сконфигурированных для: получения заголовка секции у текущей секции текущего изображения из потока двоичных сигналов, где в заголовке секции сигнализируется набор из одной или более записей LTRP, где набор из одной или более записей LTRP включает в себя первую запись LTRP, указывающую, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения, и где набор из одной или более записей LTRP включает в себя вторую запись LTRP, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения; формирования списка эталонных изображений для текущего изображения по меньшей мере частично на основе одной или более записей LTRP; и восстановления текущего изображения по меньшей мере частично на основе одного или более эталонных изображений в списке эталонных изображений для текущего изображения.
[0009] В другом примере данное раскрытие изобретения описывает устройство декодирования видео, содержащее: средство для получения заголовка секции у текущей секции текущего изображения из потока двоичных сигналов, где в заголовке секции сигнализируется набор из одной или более записей LTRP, где набор из одной или более записей LTRP включает в себя первую запись LTRP, указывающую, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения, и где набор из одной или более записей LTRP включает в себя вторую запись LTRP, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения; средство для формирования списка эталонных изображений для текущего изображения по меньшей мере частично на основе одной или более записей LTRP; и средство для восстановления текущего изображения по меньшей мере частично на основе одного или более эталонных изображений в списке эталонных изображений для текущего изображения.
[0010] В другом примере данное раскрытие изобретения описывает машиночитаемый носитель информации, имеющий сохраненные на нем команды, которые при исполнении устройством декодирования видео конфигурируют устройство декодирования видео для: получения заголовка секции у текущей секции текущего изображения из потока двоичных сигналов, где в заголовке секции сигнализируется набор из одной или более записей LTRP, где набор из одной или более записей LTRP включает в себя первую запись LTRP, указывающую, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения, и где набор из одной или более записей LTRP включает в себя вторую запись LTRP, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения; формирования списка эталонных изображений для текущего изображения по меньшей мере частично на основе одной или более записей LTRP; и восстановления текущего изображения по меньшей мере частично на основе одного или более эталонных изображений в списке эталонных изображений для текущего изображения.
[0011] В другом примере данное раскрытие изобретения описывает способ кодирования видеоданных, содержащий: сигнализацию первой записи LTRP в заголовке секции для текущей секции текущего изображения, причем первая запись LTRP указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения; и сигнализацию второй записи LTRP в заголовке секции, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения.
[0012] В другом примере данное раскрытие изобретения описывает устройство кодирования видео, содержащее один или более процессоров, сконфигурированных для: сигнализации первой записи LTRP в заголовке секции для текущей секции текущего изображения, причем первая запись LTRP указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения; и сигнализации второй записи LTRP в заголовке секции, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения.
[0013] В другом примере данное раскрытие изобретения описывает устройство кодирования видео, содержащее: средство для сигнализации первой записи LTRP в заголовке секции для текущей секции текущего изображения, причем первая запись LTRP указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения; и средство для сигнализации второй записи LTRP в заголовке секции, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения.
[0014] Машиночитаемый носитель информации, имеющий сохраненные на нем команды, которые при исполнении устройством кодирования видео конфигурируют устройство кодирования видео для: сигнализации первой записи LTRP в заголовке секции для текущей секции текущего изображения, причем первая запись LTRP указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения; и сигнализации второй записи LTRP в заголовке секции, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения.
[0015] Подробности одного или более примеров из раскрытия изобретения излагаются на прилагаемых чертежах и в описании ниже. Другие признаки, цели и преимущества станут очевидны из описания, чертежей и формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0016] Фиг. 1 – блок-схема, иллюстрирующая примерную систему кодирования видео, которая может использовать методики, описанные в данном раскрытии изобретения.
[0017] Фиг. 2 – блок-схема, иллюстрирующая примерный видеокодер, который может реализовать методики, описанные в данном раскрытии изобретения.
[0018] Фиг. 3 – блок-схема, иллюстрирующая примерный видеодекодер, который может реализовать методики, описанные в данном раскрытии изобретения.
[0019] Фиг. 4 – блок-схема алгоритма, иллюстрирующая примерную работу видеокодера в соответствии с одной или более методиками из данного раскрытия изобретения.
[0020] Фиг. 5 – блок-схема алгоритма, иллюстрирующая примерную работу видеодекодера в соответствии с одной или более методиками из данного раскрытия изобретения.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[0021] Видеокодер может сформировать поток двоичных сигналов, который включает в себя кодированные видеоданные. Каждое изображение в видеоданных может включать в себя массив выборок яркости, а также может включать в себя два соответствующих массива выборок цветности, например, организованных в блоки. Чтобы кодировать изображение в видеоданных, видеокодер может сформировать множество единиц дерева кодирования (CTU) для этого изображения. Каждая из CTU может ассоциироваться с разным блоком одинакового размера выборок яркости на изображении, а также может ассоциироваться с соответствующими блоками выборок цветности. Видеокодер может сформировать одну или более единиц кодирования (CU) для каждой CTU. Каждая из CU в CTU может ассоциироваться с блоком яркости в рамках блока яркости в CTU, а также может ассоциироваться с двумя соответствующими блоками цветности в рамках блоков цветности в CTU.
[0022] Кроме того, видеокодер может сформировать одну или более единиц предсказания (PU) для каждой CU. Видеокодер может сформировать блоки яркости и цветности с предсказанием для каждой PU в CU. Видеокодер может использовать внутреннее предсказание или внешнее предсказание для формирования блоков с предсказанием для PU. После того, как видеокодер сформирует блоки с предсказанием для одной или более PU в CU, видеокодер может сформировать остаточные блоки яркости и цветности, ассоциированные с CU. Остаточные блоки яркости и цветности в CU могут указывать разницы между выборками в предсказанных блоках яркости и цветности для PU в CU и исходных блоках яркости и цветности в CU соответственно. Видеокодер может разбить остаточные блоки CU на блоки преобразования. Кроме того, видеокодер может применить одно или более преобразований к каждому блоку преобразования, чтобы сформировать блоки коэффициентов преобразования. Видеокодер может квантовать блоки коэффициентов преобразования и может применить энтропийное кодирование к синтаксическим элементам, которые представляют коэффициенты преобразования в блоке коэффициентов преобразования. Видеокодер может вывести поток двоичных сигналов, который включает в себя энтропийно кодированные синтаксические элементы.
[0023] Когда видеокодер начинает кодирование текущего изображения в видеоданных, видеокодер может определить набор эталонных изображений (RPS) для текущего изображения. RPS для текущего изображения может иметь пять подмножеств (то есть подмножеств эталонных изображений). Этими пятью подмножествами эталонных изображений являются: RefPicSetStCurrBefore, RefPicSetStCurrAfter, RefPicSetStFoll, RefPicSetLtCurr и RefPicSetLtFoll. Эталонные изображения в RefPicSetStCurrBefore, RefPicSetStCurrAfter, RefPicSetStFoll называются "краткосрочными эталонными изображениями", или "STRP". Эталонные изображения в RefPicSetLtCurr и RefPicSetLtFoll называются "долгосрочными эталонными изображениями", или "LTRP". В некоторых случаях LTRP могут оставаться доступными для использования во внешнем предсказании в течение более длительных периодов времени, нежели STRP. Видеокодер может восстановить пять подмножеств эталонных изображений для каждого изображения в видеоданных.
[0024] Кроме того, когда текущая секция текущего изображения является P-секцией, видеокодер может использовать эталонные изображения из подмножеств RefPicStCurrAfter, RefPicStCurrBefore и RefPicStLtCurr эталонных изображений у текущего изображения, чтобы сформировать для текущей секции один список эталонных изображений, RefPicList0. Когда текущая секция является B-секцией, видеокодер может использовать эталонные изображения из подмножеств RefPicStCurrAfter, RefPicStCurrBefore и RefPicStLtCurr эталонных изображений у текущего изображения, чтобы сформировать для текущей секции два списка эталонных изображений, RefPicList0 и RefPicList1. Когда видеокодер использует внешнее предсказание, чтобы сформировать блок с предсказанием в PU текущего изображения, видеокодер может формировать блоки с предсказанием в PU на основе выборок в рамках одного или более эталонных изображений в одном или более списках эталонных изображений для текущей секции.
[0025] Видеокодер может сигнализировать набор записей LTRP в наборе параметров последовательности (SPS). Другими словами, SPS может явно указывать набор записей LTRP. Каждая из записей LTRP может указывать эталонное изображение как находящееся в наборе долгосрочных эталонных изображений (либо в RefPicStLtCurr, либо в RefPicStLtFoll) для текущего изображения. Кроме того, видеокодер может сигнализировать индексы к записям LTRP, указанным в SPS, применимом к текущему изображению, в заголовке секции у первой (в порядке кодирования) секции текущего изображения. Таким образом, заголовок секции может "неявно" сигнализировать записи LTRP или "индекс к" записям LTRP. К тому же видеокодер может сигнализировать в заголовке секции у первой секции текущего изображения дополнительный набор записей LTRP. Другими словами, заголовок секции может явно сигнализировать дополнительные записи LTRP.
[0026] Для каждой соответствующей записи LTRP, явно указанной в SPS, видеокодер может сигнализировать, используется ли текущим изображением эталонное изображение, указанное соответствующей записью LTRP. Эталонные изображения, указанные записями LTRP, явно сигнализированными в SPS, которые используются текущим изображением, в этом документе могут называться текущими LTRP в SPS. Эталонные изображения, указанные записями LTRP, явно сигнализированными в SPS, которые не используются текущим изображением, в этом документе могут называться нетекущими LTRP в SPS. Аналогичным образом для каждой соответствующей записи LTRP, неявно и явно сигнализированной в заголовке секции, заголовок секции может указывать, используется ли текущим изображением эталонное изображение, указанное соответствующей записью LTRP. Эталонные изображения, указанные записями LTRP, неявно и явно сигнализированными в заголовке секции, которые используются текущим изображением, в этом документе могут называться текущими LTRP заголовка секции. Эталонные изображения, указанные записями LTRP, неявно и явно сигнализированными в заголовке секции, которые не используются текущим изображением, в этом документе могут называться нетекущими LTRP заголовка секции.
[0027] Подмножество RefPicStLtCurr эталонных изображений для текущего изображения может включать в себя текущие LTRP первого заголовка секции у текущего изображения и текущие LTRP в SPS, применимом к текущему изображению. Подмножество RefPicStLtFoll эталонных изображений у текущего изображения может включать в себя нетекущие LTRP в SPS, применимом к текущему изображению, и нетекущие LTRP первого заголовка секции у текущего изображения.
[0028] Вышеописанная схема сигнализации может обладать несколькими недостатками. Например, видеокодер потенциально может сформировать заголовок секции, который явно сигнализирует запись LTRP, которая указывает эталонное изображение, а также неявно сигнализирует запись LTRP, которая указывает такое же эталонное изображение. Таким образом, RefPicStLtCurr и/или RefPicStLtFoll у текущего изображения потенциально могут дважды включать в себя одно и то же эталонное изображение. В другом примерном недостатке вышеописанной схемы сигнализации сам заголовок секции может явно сигнализировать одну и ту же запись LTRP несколько раз. Аналогичным образом SPS может явно сигнализировать одну и ту же запись LTRP несколько раз. Явная сигнализация одной и той же записи LTRP несколько раз либо в SPS, либо в заголовке секции может уменьшить эффективность кодирования. В другом примерном недостатке вышеописанной схемы сигнализации SPS может включать в себя запись LTRP, которая указывает, что конкретное эталонное изображение не используется для эталона текущим изображением, и одновременно заголовок секции (или SPS) может включать в себя запись LTRP, которая указывает, что конкретное LTRP используется для эталона текущим изображением, или наоборот. Эта путаница в том, используется ли конкретное эталонное изображение для эталона текущим изображением, может вызвать проблемы декодирования для видеодекодера.
[0029] В соответствии с методиками из данного раскрытия изобретения видеокодер можно ограничить в сигнализации (явной либо неявной) в заголовке секции нескольких записей LTRP, которые указывают, что одно и то же эталонное изображение находится в наборе долгосрочных эталонных изображений текущего изображения. Точнее, видеокодер конфигурируется так, что заголовок секции соответствует ограничению, которое не дает заголовку секции сигнализировать две записи LTRP, которые указывают одно и то же эталонное изображение. Поскольку видеокодер ограничивается в сигнализации нескольких записей LTRP, которые указывают одно и то же эталонное изображение, записи LTRP не могут включать в себя противоречащие синтаксические элементы касательно того, используется ли эталонное изображение для эталона текущим изображением. Кроме того, в соответствии с методиками из данного раскрытия изобретения видеокодер можно ограничить в формировании заголовка секции, который указывает одну и ту же запись LTRP несколько раз. То есть видеокодер можно ограничить в неявной сигнализации одной и той же записи LTRP несколько раз, ограничить в явной сигнализации одной и той же записи LTRP несколько раз и ограничить в неявной и явной сигнализации одной и той же записи LTRP. Поэтому видеокодер может сигнализировать запись LTRP не более одного раза, неявно либо явно. Эти ограничения потенциально могут увеличить эффективность кодирования, поскольку видеокодер может не иметь возможности включить синтаксические элементы в SPS или заголовок секции для явной и неявной сигнализации одной и той же записи LTRP.
[0030] Поэтому видеодекодер может декодировать заголовок секции у текущей секции текущего изображения. В заголовке секции можно сигнализировать набор из одной или более записей LTRP. Набор из одной или более записей LTRP может включать в себя первую запись LTRP, указывающую, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения. Набор из одной или более записей LTRP может включать в себя вторую запись LTRP, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения. Видеодекодер может сформировать список эталонных изображений для текущего изображения по меньшей мере частично на основе одной или более записей LTRP и может восстановить текущее изображение по меньшей мере частично на основе одного или более эталонных изображений в списке эталонных изображений для текущего изображения.
[0031] Фиг. 1 – блок-схема, иллюстрирующая примерную систему 10 кодирования видео, которая может использовать методики из данного раскрытия изобретения. При использовании в данном документе термин "кодировщик видео" в общем относится к видеокодерам и видеодекодерам. В данном раскрытии изобретения термины "кодирование видео" или "кодирование" могут относиться в общем к кодированию видео или декодированию видео.
[0032] Как показано на фиг. 1, система 10 кодирования видео включает в себя устройство-источник 12 и устройство-адресат 14. Устройство-источник 12 формирует кодированные видеоданные. Соответственно, устройство-источник 12 может называться устройством кодирования видео или аппаратом кодирования видео. Устройство-адресат 14 может декодировать кодированные видеоданные, сформированные устройством-источником 12. Соответственно, устройство-адресат 14 может называться устройством декодирования видео или аппаратом декодирования видео. Устройство-источник 12 и устройство-адресат 14 могут быть примерами устройств кодирования видео или аппаратов кодирования видео.
[0033] Устройство-источник 12 и устройство-адресат 14 могут быть выполнены в виде любого из широкого диапазона устройств, включающего в себя настольные компьютеры, мобильные вычислительные устройства, блокнотные (например, переносные) компьютеры, планшетные компьютеры, телевизионные приставки, телефонные трубки, например, так называемые "интеллектуальные" телефоны, телевизоры, камеры, устройства отображения, цифровые мультимедийные проигрыватели, игровые приставки, автомобильные компьютеры или т.п.
[0034] Устройство-адресат 14 может принимать кодированные видеоданные от устройства-источника 12 по каналу 16. Канал 16 может быть выполнен в виде одного или более носителей либо устройств, допускающих перемещение кодированных видеоданных от устройства-источника 12 к устройству-адресату 14. В одном примере канал 16 может быть выполнен в виде одного или более средств связи, которые дают устройству-источнику 12 возможность передавать кодированные видеоданные непосредственно к устройству-адресату 14 в реальном масштабе времени. В этом примере устройство-источник 12 может модулировать кодированные видеоданные в соответствии с неким стандартом связи, например протоколом беспроводной связи, и может передавать модулированные видеоданные устройству-адресату 14. Одно или более средств связи могут включать в себя средства беспроводной и/или проводной связи, например радиочастотный (RF) спектр либо одна или более физических линий передачи. Одно или более средств связи могут образовывать часть пакетной сети, например локальной сети, региональной сети или глобальной сети (например, Интернет). Одно или более средств связи могут включать в себя маршрутизаторы, коммутаторы, базовые станции или другое оборудование, которое упрощает связь от устройства-источника 12 к устройству-адресату 14.
[0035] В другом примере канал 16 может включать в себя носитель информации, который хранит кодированные видеоданные, сформированные устройством-источником 12. В этом примере устройство-адресат 14 может обращаться к носителю информации посредством дискового доступа или карточного доступа. Носитель информации может включать в себя ряд локально доступных носителей информации, например диски Blu-ray, DVD, CD-ROM, флэш-память или другие подходящие цифровые носители информации для хранения кодированных видеоданных.
[0036] В дополнительном примере канал 16 может включать в себя файловый сервер или другое промежуточное запоминающее устройство, которое хранит кодированные видеоданные, сформированные устройством-источником 12. В этом примере устройство-адресат 14 может обращаться к кодированным видеоданным, сохраненным на файловом сервере или другом промежуточном запоминающем устройстве, посредством потоковой передачи или загрузки. Файловый сервер может быть неким типом сервера, допускающим хранение кодированных видеоданных и передачу кодированных видеоданных устройству-адресату 14. Примерные файловые серверы включают в себя веб-серверы (например, для веб-сайта), серверы на протоколе передачи файлов (FTP), сетевые устройства хранения (NAS) и локальные накопители на дисках.
[0037] Устройство-адресат 14 может обращаться к кодированным видеоданным посредством стандартного информационного соединения, например Интернет-соединения. Примерные типы информационных соединений могут включать в себя радиоканалы (например, соединения Wi-Fi), проводные соединения (например, DSL, кабельный модем и т.п.) или их сочетания, которые подходят для обращения к кодированным видеоданным, сохраненным на файловом сервере. Передача кодированных видеоданных от файлового сервера может быть потоковой передачей, загрузкой или их сочетанием.
[0038] Методики из данного раскрытия изобретения не ограничиваются беспроводными приложениями или настройками. Методики могут применяться к кодированию видео в поддержку ряда мультимедийных приложений, таких как эфирные телевизионные передачи, кабельные телевизионные передачи, спутниковые телевизионные передачи, передачи потокового видео, например по Интернету, кодирование видеоданных для сохранения на носитель информации, декодирование видеоданных, сохраненных на носителе информации, или других приложений. В некоторых примерах система 10 кодирования видео может конфигурироваться для поддержки однонаправленной или двунаправленной передачи видео для поддержки таких приложений, как потоковая передача видео, воспроизведение видео, телевизионное вещание и/или видеотелефония.
[0039] Фиг. 1 является всего лишь примером, и методики из данного раскрытия изобретения могут применяться к настройкам кодирования видео (например, кодирования видео или декодирования видео), которые не обязательно включают в себя какую-либо передачу данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локального запоминающего устройства, передаются в потоке по сети или т.п. Устройство кодирования видео может кодировать и сохранять данные в запоминающем устройстве, и/или устройство декодирования видео может извлекать и декодировать данные из запоминающего устройства. Во многих примерах кодирование и декодирование выполняется устройствами, которые не взаимодействуют друг с другом, а просто кодируют данные в запоминающем устройстве и/или извлекают и декодируют данные из запоминающего устройства.
[0040] В примере из фиг. 1 устройство-источник 12 включает в себя источник 18 видео, видеокодер 20 и интерфейс 22 вывода. В некоторых примерах интерфейс 22 вывода может включать в себя модулятор/демодулятор (модем) и/или передатчик. Источник 18 видео может включать в себя устройство видеозахвата, например, видеокамеру, видеоархив, содержащий ранее захваченные видеоданные, интерфейс источника видеосигнала для приема видеоданных от поставщика видеоконтента и/или систему компьютерной графики для формирования видеоданных, либо сочетание таких источников видеоданных.
[0041] Видеокодер 20 может кодировать видеоданные от источника 18 видео. В некоторых примерах устройство-источник 12 передает кодированные видеоданные напрямую устройству-адресату 14 через интерфейс 22 вывода. В других примерах кодированные видеоданные также можно сохранить на носителе информации или файловом сервере для последующего обращения устройства-адресата 14 для декодирования и/или воспроизведения.
[0042] В примере из фиг. 1 устройство-адресат 14 включает в себя интерфейс 28 ввода, видеодекодер 30 и устройство 32 отображения. В некоторых примерах интерфейс 28 ввода включает в себя приемник и/или модем. Интерфейс 28 ввода может принимать кодированные видеоданные по каналу 16. Устройство 32 отображения может объединяться с устройством-адресатом 14 или может быть внешним по отношению к нему. Обычно устройство 32 отображения отображает декодированные видеоданные. Устройство 32 отображения может быть выполнено в виде ряда устройств отображения, например жидкокристаллического дисплея (LCD), плазменного дисплея, дисплея на органических светоизлучающих диодах (OLED) или другого типа устройства отображения.
[0043] Видеокодер 20 и видеодекодер 30 могут быть реализованы в виде любой из ряда подходящих схем, например одного или более микропроцессоров, цифровых процессоров сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретной логики, аппаратных средств или любых их сочетаний. Если методики частично реализуются в программном обеспечении, то устройство может хранить команды для программного обеспечения на подходящем долговременном машиночитаемом носителе информации и может исполнять команды на аппаратных средствах, использующих один или более процессоров, для выполнения методик из данного раскрытия изобретения. Любое из вышеупомянутого (включая аппаратные средства, программное обеспечение, сочетание аппаратных средств и программного обеспечения, и т.п.) может считаться одним или более процессорами. Каждый из видеокодера 20 и видеодекодера 30 может включаться в один или более кодеров или декодеров, любой из которых может встраиваться как часть объединенного кодера/декодера (кодека) в соответствующем устройстве.
[0044] Данное раскрытие изобретения в целом может ссылаться на видеокодер 20, "сигнализирующий" некоторую информацию другому устройству, например видеодекодеру 30. Термин "сигнализация" в целом может относиться к передаче синтаксических элементов и/или других данных, используемых для декодирования сжатых видеоданных. Такая передача может происходить в реальном масштабе времени или почти в реальном масштабе времени. Наоборот, такая передача может происходить за некий промежуток времени, например, она могла бы происходить при сохранении синтаксических элементов на машиночитаемый носитель информации в кодированном потоке двоичных сигналов во время кодирования, который [поток] затем может извлекаться устройством декодирования в любое время после сохранения на этот носитель.
[0045] В некоторых примерах видеокодер 20 и видеодекодер 30 работают в соответствии со стандартом сжатия видео, например, MPEG-4 Visual ISO/IEC и H.264 ITU-T (также известным как MPEG-4 AVC ISO/IEC), включающим его расширение по масштабируемому кодированию видео (SVC), расширение по многовидовому кодированию видео (MVC) и расширение 3DV на основе MVC. В некоторых случаях любой допустимый поток двоичных сигналов, соответствующий 3DV на основе MVC, всегда содержит субпоток двоичных сигналов, который соответствует профилю MVC, например, профилю Stereo High. В других примерах видеокодер 20 и видеодекодер 30 могут работать в соответствии с H.261 ITU-T, MPEG-1 Visual ISO/IEC, H.262 ITU-T или MPEG-2 Visual ISO/IEC, и H.264 ITU-T, Visual ISO/IEC.
ое
[0046] В других примерах видеокодер 20 и видеодекодер 30 могут работать в соответствии со стандартом Высокоэффективного кодирования видео (HEVC), разработанным Объединенной командой по кодированию видео (JCT-VC) из Экспертной группы в области кодирования видео (VCEG) ITU-T и Экспертной группы по движущимся изображениям (MPEG) ISO/IEC. Вариант стандарта HEVC, называемый "HEVC Working Draft 8", описывается в документе "High Efficiency Video Coding (HEVC) text specification draft 8" под авторством Бросс (Bross) и др., Объединенная команда по кодированию видео (JCT-VC) из SG16 WP3 ITU-T и JTC1/SC29/WG11 ISO/IEC, 10 заседание в Стокгольме, Швеция, июль 2012 г., который по состоянию на 20 июня 2013 г. доступен по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zip, все содержание которого включается в этот документ путем отсылки.
L
Cb
Cr
L
Cb
Cr
[0047] В HEVC и других спецификациях кодирования видео видеопоследовательность обычно включает в себя последовательность изображений. Изображения также могут называться "кадрами". Изображение может включать в себя три массива выборок, обозначенные S, S и S. S является двумерным массивом (то есть, блоком) выборок яркости. S является двумерным массивом выборок цветности Cb. S является двумерным массивом выборок цветности Cr. Выборки цветности в этом документе также могут называться выборками "цветности". В иных случаях изображение может быть монохромным и может включать в себя только массив выборок яркости.
[0048] Чтобы сформировать кодированное представление изображения, видеокодер 20 может сформировать набор единиц дерева кодирования (CTU). Каждая из CTU может быть блоком дерева кодирования из выборок яркости, двумя соответствующими блоками дерева кодирования из выборок цветности и синтаксическими структурами, используемыми для кодирования выборок блоков дерева кодирования. Блок дерева кодирования может быть блоком выборок NxN. CTU также может называться "блоком дерева" или "наибольшей единицей кодирования" (LCU). CTU в HEVC могут быть аналогичны в общих чертах макроблокам из других стандартов, например H.264/AVC. Однако CTU не обязательно ограничивается конкретным размером и может включать в себя одну или более единиц кодирования (CU). Секция может включать в себя целое число CTU, упорядоченных последовательно при растровом сканировании.
[0049] Чтобы сформировать кодированную CTU, видеокодер 20 может рекурсивно выполнить разбиение квадродерева над блоками дерева кодирования у CTU, чтобы разделить блоки дерева кодирования на блоки кодирования, отсюда название "единицы дерева кодирования". Блок кодирования является блоком выборок NxN. CU может быть блоком кодирования из выборок яркости и двумя соответствующими блоками кодирования из выборок цветности изображения, которое имеет массив выборок яркости, массив выборок Cb и массив выборок Cr, и синтаксическими структурами, используемыми для кодирования выборок блоков кодирования. В случаях, где изображение является монохромным, или где изображение представляется в виде трех обособленных цветовых плоскостей, CU может быть блоком кодирования выборок и синтаксическими структурами, используемыми для кодирования выборок блока кодирования. Видеокодер 20 может разбить блок кодирования у CU на один или более блоков предсказания. Блок предсказания может быть прямоугольным (то есть квадратным или неквадратным) блоком выборок, к которому применяется одинаковое предсказание. Единица предсказания (PU) у CU может быть блоком предсказания из выборок яркости, двумя соответствующими блоками предсказания из выборок цветности изображения и синтаксическими структурами, используемыми для предсказания выборок блока предсказания. Видеокодер 20 может формировать блоки яркости, Cb и Cr с предсказанием для блоков предсказания яркости, Cb и Cr у каждой PU в CU.
[0050] Видеокодер 20 может использовать внутреннее предсказание или внешнее предсказание для формирования блоков с предсказанием для PU. Если видеокодер 20 использует внутреннее предсказание для формирования блоков с предсказанием в PU, то видеокодер 20 может формировать блоки с предсказанием в PU на основе декодированных выборок изображения, ассоциированного с PU.
[0051] Если видеокодер 20 использует внешнее предсказание для формирования блоков с предсказанием в PU, то видеокодер 20 может формировать блоки с предсказанием в PU на основе декодированных выборок одного или более изображений помимо изображения, ассоциированного с PU. Видеокодер 20 может использовать однонаправленное предсказание или двунаправленное предсказание для формирования блоков с предсказанием в PU. Когда видеокодер 20 использует однонаправленное предсказание для формирования блоков с предсказанием для PU, PU может иметь один вектор движения. Когда видеокодер 20 использует двунаправленное предсказание для формирования блоков с предсказанием для PU, PU может иметь два вектора движения.
[0052] После того, как видеокодер 20 формирует блоки яркости, Cb и Cr с предсказанием для одной или более PU в CU, видеокодер 20 может сформировать остаточный блок яркости для CU. Каждая выборка в остаточном блоке яркости у CU указывает разность между выборкой яркости в одном из блоков яркости с предсказанием у CU и соответствующей выборкой в исходном блоке кодирования яркости у CU. К тому же видеокодер 20 может формировать остаточный блок Cb для CU. Каждая выборка в остаточном блоке Cb у CU может указывать разность между выборкой Cb в одном из блоков Cb с предсказанием у CU и соответствующей выборкой в исходном блоке кодирования Cb у CU. Видеокодер 20 также может формировать остаточный блок Cr для CU. Каждая выборка в остаточном блоке Cr у CU может указывать разность между выборкой Cr в одном из блоков Cr с предсказанием у CU и соответствующей выборкой в исходном блоке кодирования Cr у CU.
[0053] Кроме того, видеокодер 20 может использовать разбиение квадродерева для разложения остаточных блоков яркости, Cb и Cr в CU на один или более блоков преобразования яркости, Cb и Cr. Блок преобразования может быть прямоугольным блоком выборок, к которому применяется одинаковое преобразование. Единица преобразования (TU) в CU может быть блоком преобразования из выборок яркости, двумя соответствующими блоками преобразования из выборок цветности и синтаксическими структурами, используемыми для преобразования выборок блока преобразования. Таким образом, каждая TU в CU может ассоциироваться с блоком преобразования яркости, блоком преобразования Cb и блоком преобразования Cr. Блок преобразования яркости, ассоциированный с TU, может быть субблоком остаточного блока яркости у CU. Блок преобразования Cb может быть субблоком остаточного блока Cb у CU. Блок преобразования Cr может быть субблоком остаточного блока Cr у CU.
[0054] Видеокодер 20 может применить одно или более преобразований к блоку преобразования яркости у TU, чтобы сформировать блок коэффициентов яркости для TU. Блок коэффициентов может быть двумерным массивом коэффициентов преобразования. Коэффициент преобразования может быть скалярной величиной. Видеокодер 20 может применить одно или более преобразований к блоку преобразования Cb у TU, чтобы сформировать блок коэффициентов Cb для TU. Видеокодер 20 может применить одно или более преобразований к блоку преобразования Cr у TU, чтобы сформировать блок коэффициентов Cr для TU.
[0055] После формирования блока коэффициентов (например, блока коэффициентов яркости, блока коэффициентов Cb или блока коэффициентов Cr) видеокодер 20 может квантовать блок коэффициентов. Квантование в целом относится к процессу, в котором коэффициенты преобразования квантуются, чтобы уменьшить по возможности объем данных, используемый для представления коэффициентов преобразования, обеспечивая дополнительное сжатие. После того, как видеокодер 20 квантует блок коэффициентов, видеокодер 20 может энтропийно кодировать синтаксические элементы, указывающие квантованные коэффициенты преобразования. Например, видеокодер 20 может выполнить контекстно-адаптивное двоичное арифметическое кодирование (CABAC) над синтаксическими элементами, указывающими квантованные коэффициенты преобразования. Видеокодер 20 может вывести энтропийно кодированные синтаксические элементы в поток двоичных сигналов.
[0056] Кроме того, видеодекодер 30 может выполнить обратное квантование и может применить обратное преобразование к блокам коэффициентов, чтобы восстановить блоки преобразования у CU. Видеокодер 20 по меньшей мере частично на основе восстановленных блоков преобразования у CU и блоков с предсказанием у PU в CU может восстановить блоки кодирования у CU. Буфер декодированных изображений (DPB) в видеокодере 20 может хранить восстановленные блоки кодирования у CU нескольких изображений. Видеокодер 20 может использовать изображения, сохраненные в DPB (то есть эталонные изображения), для выполнения внешнего предсказания над PU других изображений.
[0057] Видеокодер 20 может вывести поток двоичных сигналов, который включает в себя последовательность разрядов, которая образует представление кодированных изображений и ассоциированных данных. Поток двоичных сигналов может содержать последовательность единиц на уровне абстракции сети (NAL). Каждая из единиц NAL включает в себя заголовок единицы NAL и заключает в себя полезную нагрузку необработанной последовательности байтов (RBSP). Заголовок единицы NAL может включать в себя синтаксический элемент, который указывает код типа единицы NAL. Код типа единицы NAL, заданный заголовком единицы NAL у единицы NAL, указывает тип единицы NAL. RBSP может быть синтаксической структурой, содержащей целое число байтов, которая заключается в единицу NAL. В некоторых случаях RBSP включает в себя нулевые разряды.
[0058] Разные типы единиц NAL могут заключать в себя разные типы RBSP. Например, первый тип единицы NAL может заключать в себя RBSP для набора параметров изображения (PPS), второй тип единицы NAL может заключать в себя RBSP для кодированной секции, третий тип единицы NAL может заключать в себя RBSP для дополнительной информации расширения (SEI), и так далее. Единицы NAL, которые заключают в себя RBSP для данных кодирования видео (в отличие от RBSP для наборов параметров и сообщений SEI), могут называться единицами NAL на уровне видеокодирования (VCL).
[0059] Видеодекодер 30 может принять поток двоичных сигналов, сформированный видеокодером 20. К тому же видеодекодер 30 может проанализировать поток двоичных сигналов, чтобы получить синтаксические элементы из этого потока двоичных сигналов. Видеодекодер 30 может восстановить изображения в видеоданных по меньшей мере частично на основе синтаксических элементов, полученных из потока двоичных сигналов. Процесс для восстановления видеоданных в целом может быть обратным процессу, выполненному видеокодером 20. Например, видеодекодер 30 может использовать векторы движения PU для определения блоков с предсказанием для PU в текущей CU. К тому же видеодекодер 30 может обратно квантовать блоки коэффициентов, ассоциированные с TU в текущей CU. Видеодекодер 30 может выполнить обратные преобразования над блоками коэффициентов, чтобы восстановить блоки преобразования, ассоциированные с TU в текущей CU. Видеодекодер 30 может восстановить блоки кодирования в текущей CU путем сложения выборок блоков с предсказанием для PU в текущей CU с соответствующими выборками блоков преобразования у TU в текущей CU. Путем восстановления блоков кодирования для каждой CU текущего изображения видеодекодер 30 может восстановить текущее изображение. Видеодекодер 30 может сохранить восстановленное текущее изображение в DPB для использования при внешнем предсказании PU в других изображениях.
[0060] Значение счетчика последовательности изображений (POC) является значением, которое идентифицирует одно или более изображений, возникающих в один момент времени (то есть в одной единице доступа). В базовом HEVC только одно изображение возникает в единице доступа. В масштабируемом, многовидовом или 3-мерном кодировании видео несколько изображений могут возникать в один момент времени, и поэтому значение POC может идентифицировать несколько изображений, то есть на разных уровнях. Видеокодер 20 и видеодекодер 30 могут использовать значения POC изображений, чтобы идентифицировать изображения (например, для использования при внешнем предсказании).
[0061] Когда видеокодер 20 начинает кодирование текущего изображения в видеоданных, видеокодер 20 может сформировать пять списков значений POC: PocStCurrBefore, PocStCurrAfter, PocStFoll, PocLtCurr и PocLtFoll. Видеокодер 20 может использовать эти пять списков значений POC для формирования пяти соответствующих подмножеств эталонных изображений для текущего изображения: RefPicSetStCurrBefore, RefPicSetStCurrAfter, RefPicSetStFoll, RefPicSetLtCurr и RefPicSetLtFoll. Для каждого значения POC в списке значений POC (например, PocStCurrBefore, PocStCurrAfter, PocStFoll, PocLtCurr и PocLtFoll) видеокодер 20 может определить, включает ли DPB в себя эталонное изображение, которое имеет значение POC, и если это так, то видеокодер 20 включает эталонное изображение в набор эталонных изображений, соответствующий списку значений POC.
[0062] Эталонные изображения в RefPicSetStCurrBefore, RefPicSetStCurrAfter, RefPicSetStFoll называются "краткосрочными эталонными изображениями", или "STRP". Эталонные изображения в RefPicSetLtCurr и RefPicSetLtFoll называются "долгосрочными эталонными изображениями", или "LTRP". В некоторых случаях LTRP могут оставаться доступными для использования во внешнем предсказании в течение более длительных периодов времени, нежели STRP. Видеокодер 20 может восстановить пять списков значений POC и соответствующие наборы эталонных изображений для каждого изображения в видеоданных.
[0063] Кроме того, когда текущая секция текущего изображения является P-секцией, видеокодер 20 может использовать эталонные изображения из подмножеств RefPicStCurrAfter, RefPicStCurrBefore и RefPicStLtCurr эталонных изображений у текущего изображения, чтобы сформировать для текущей секции один список эталонных изображений, RefPicList0. Когда текущая секция является B-секцией, видеокодер 20 может использовать эталонные изображения из подмножеств RefPicStCurrAfter, RefPicStCurrBefore и RefPicStLtCurr эталонных изображений у текущего изображения, чтобы сформировать для текущей секции два списка эталонных изображений, RefPicList0 и RefPicList1. Когда видеокодер 20 использует внешнее предсказание, чтобы сформировать блок с предсказанием в PU текущего изображения, видеокодер 20 может формировать блоки с предсказанием в PU по меньшей мере частично на основе одного или более эталонных изображений в одном или более списках эталонных изображений для текущей секции.
[0064] Видеокодер 20 может сигнализировать набор записей LTRP в наборе параметров последовательности (SPS). Другими словами, SPS может явно сигнализировать набор записей LTRP. Каждая из записей LTRP может указывать эталонное изображение и может указывать, используется ли эталонное изображение для эталона текущим изображением. Кроме того, видеокодер 20 может сигнализировать индексы к записям LTRP, сигнализированным в SPS, который применим к текущему изображению, в заголовке секции у первой (в порядке кодирования) секции текущего изображения. Таким образом, заголовок секции может неявно сигнализировать записи LTRP (то есть индекс к ним). К тому же видеокодер 20 может сигнализировать в заголовке секции у первой секции текущего изображения дополнительные записи LTRP. Другими словами, заголовок секции может явно сигнализировать дополнительные записи LTRP.
[0065] Таблица 1 ниже показывает синтаксис части касательно LTRP в рамках SPS.
ТАБЛИЦА 1Синтаксис SPS, связанный с LTRP
…
long_term_ref_pics_present_flag
u(1)
if( long_term_ref_pics_present_flag ) {
num_long_term_ref_pics_sps
ue(v)
for( i = 0; i < num_long_term_ref_pics_sps; i++ ) {
lt_ref_pic_poc_lsb_sps[ i ]
u(v)
used_by_curr_pic_lt_sps_flag[ i ]
u(1)
}
}
…
го
[0066] В примерном синтаксисе из Таблицы 1 выше и других синтаксических таблиц в данном раскрытии изобретения синтаксические элементы с дескриптором типа ue(v) могут быть беззнаковыми целыми числами переменной длины, кодированными с использованием экспоненциального кодирования Голомба (Exp-Golomb) 0 порядка с первым левым разрядом. В примере из Таблицы 1 и следующих таблиц синтаксические элементы, имеющие дескрипторы вида u(n), где n – неотрицательное целое число, являются беззнаковыми значениями с длиной n.
[0067] В Таблице 1 синтаксический элемент long_term_ref_pics_present_flag указывает, включает ли SPS в себя синтаксические элементы, которые указывают набор LTRP. Синтаксический элемент num_long_term_ref_pics_sps указывает количество LTRP, сигнализированных в SPS. Синтаксический элемент lt_ref_pic_poc_lsb_sps[i] указывает самые младшие разряды (LSB) значения POC у LTRP в положении i в наборе LTRP. В некоторых примерах SPS включает в себя синтаксический элемент (например, log2_max_pic_order_cnt_lsb_minus4), который указывает максимальное значение POC, которое можно представить с использованием лишь LSB. В таких примерах максимальное значение POC, которое можно представить с использованием только LSB (например, MaxPicOrderCntLsb), может быть равно:
(log2_max_pic_order_cnt_lsb_minus4+4)
MaxPicOrderCntLsb=2
[0068] В Таблице 1 выше синтаксический элемент used_by_curr_pic_lt_sps_flag[i] указывает, используется ли в наборе эталонных изображений текущего изображения запись LTRP в положении i в наборе записей LTRP. Запись LTRP в SPS можно задать как кортеж, состоящий из lt_ref_pic_poc_lsb_sps[i] и used_by_curr_pic_lt_sps_flag[i]. Другими словами, запись LTRP может быть синтаксическим элементом LSB и синтаксическим элементом использования, где синтаксический элемент LSB указывает LSB у значения POC эталонного изображения, а синтаксический элемент использования указывает, используется ли эталонное изображение для эталона текущим изображением.
[0069] Таблица 2 ниже показывает синтаксис части заголовка секции касательно LTRP.
ТАБЛИЦА 2Синтаксис заголовок секции, связанный с LTRP
…
if( long_term_ref_pics_present_flag ) {
if( num_long_term_ref_pics_sps > 0 )
num_long_term_sps
ue(v)
num_long_term_pics
ue(v)
for( i = 0; i < num_long_term_sps + num_long_term_pics; i++ ) {
if( i < num_long_term_sps )
lt_idx_sps[ i ]
u(v)
else {
poc_lsb_lt[ i ]
u(v)
used_by_curr_pic_lt_flag[ i ]
u(1)
}
delta_poc_msb_present_flag[ i ]
u(1)
if( delta_poc_msb_present_flag[ i ] )
delta_poc_msb_cycle_lt[ i ]
ue(v)
}
}
…
[0070] В Таблице 2 синтаксический элемент num_long_term_sps указывает количество возможных LTRP, заданных в применимом SPS для текущего изображения. Синтаксический элемент num_long_term_pics указывает количество записей LTRP, заданных в заголовке секции, которые включаются в набор LTRP текущего изображения. Синтаксический элемент lt_idx_sps[i] задает индекс к записям LTRP, заданным применимым SPS для текущего изображения. Синтаксический элемент poc_lsb_lt[i] может задавать значение самых младших разрядов значения POC у i-го LTRP в наборе LTRP текущего изображения. Синтаксический элемент used_by_curr_pic_lt_flag[i] может задавать, используется ли i-ое LTRP, которое будет включено в набор LTRP текущего изображения, для эталона текущим изображением.
[0071] Синтаксический элемент delta_poc_msb_present_flag[i] указывает, присутствует ли синтаксический элемент delta_poc_msb_cycle_lt[i] в заголовке секции. Синтаксический элемент delta_poc_msb_cycle_lt[i] используется для определения значения самых старших разрядов (MSB) у i-го LTRP в наборе LTRP текущего изображения. Как правило, STRP не остаются в DPB для расширенных последовательностей изображений. Соответственно, LSB значений POC у STRP может быть достаточно для проведения различия между разными STRP. В отличие от этого LTRP могут оставаться в DPB для более длинных последовательностей изображений. Соответственно, полные значения POC (то есть MSB и LSB значений POC) у LTRP могут быть нужны для проведения различия между разными LTRP в DPB и для отличия LTRP от STRP в DPB.
[0072] Поскольку относительно маловероятно, что количество изображений между разными LTRP, сигнализированными в заголовке секции, значительно больше количества других изображений, которые могут указываться с использованием только LSB у значений POC, количество разрядов, необходимых для указания разности между MSB значений POC у разных LTRP, скорее всего, меньше количества разрядов, необходимых для явного указания MSB значений POC у разных LTRP. Соответственно, синтаксические элементы delta_poc_msb_cycle_lt могут указывать разницы между MSB значений POC у LTRP. Кроме того, если нет разницы между LSB значений POC у первого LTRP и второго LTRP, то синтаксический элемент delta_poc_msb_present_flag может указывать, что заголовок секции включает в себя синтаксический элемент delta_poc_msb_cycle_lt для второго LTRP, который представляет разность между MSB значений POC у первого и второго LTRP. Другими словами, синтаксический элемент delta_pos_msb_present_flag[i] может указывать, что синтаксический элемент delta_poc_msb_cycle_lt[i] указывает разность MSB или i-го и (i–1)-го LTRP, когда LSB значения POC у i-го LTRP равны LSB значения POC у (i–1)-го LTRP.
[0073] Таким образом, в синтаксисах Таблиц 1 и 2 сигнализация LTRP может включать в себя сигнализацию LSB значений POC у LTRP в SPS или в заголовке секции и, в некоторых случаях, сигнализацию разности цикла MSB в заголовке секции.
[0074] Запись LTRP в заголовке секции можно задать либо как LSB и признак, сигнализированный синтаксическим элементом poc_lsb_lt[i] и синтаксическим элементом used_by_curr_pic_lt_flag[i], либо LSB и признак, соответствующий записи в SPS, указанном синтаксическим элементом lt_idx_sps[i]. Когда запись LTRP сигнализируется в заголовке секции с использованием синтаксического элемента lt_idx_sps[i], данное раскрытие изобретения обращается к записи LTRP как к индексируемой в заголовке секции, и соответствующие записи выводятся из SPS. Когда запись LTRP сигнализируется в заголовке секции с использованием синтаксического элемента poc_lsb_lt[i] и синтаксического элемента used_by_curr_pic_lt_flag[i], данное раскрытие изобретения обращается к записи LTRP как к явно сигнализируемой в заголовке секции.
[0075] Для каждой соответствующей записи LTRP, явно сигнализированной в SPS, видеокодер 20 может сигнализировать, используется ли текущим изображением эталонное изображение, указанное соответствующей записью LTRP. Подмножество RefPicStLtCurr эталонных изображений для текущего изображения включает в себя эталонные изображения, указанные записями LTRP, сигнализированными в заголовке секции, которые могут использоваться текущим изображением для эталона. Подмножество RefPicStLtFoll эталонных изображений у текущего изображения может включать в себя эталонные изображения, указанные записями LTRP, сигнализированными в заголовке секции, которые не используются текущим изображением для эталона.
[0076] Видеодекодер 30 может получить SPS и заголовок секции из потока двоичных сигналов. Когда видеодекодер 30 начинает декодирование первой секции текущего изображения, видеодекодер 30 может определить, что конкретный SPS является применимым к текущему изображению. Кроме того, видеодекодер 30 по меньшей мере частично на основе синтаксических элементов в применимом SPS и/или синтаксических элементов в заголовке секции может определить значения POC, которые будут включены в PocStCurrBefore, PocStCurrAfter, PocStFoll, PocLtCurr и PocLtFoll. Видеодекодер 30 затем может использовать PocStCurrBefore, PocStCurrAfter, PocStFoll, PocLtCurr и PocLtFoll для определения подмножеств эталонных изображений для текущего изображения: RefPicSetStCurrBefore, RefPicSetStCurrAfter, RefPicSetStFoll, RefPicSetLtCurr и RefPicSetLtFoll. Впоследствии видеодекодер 30 может использовать RefPicStCurrBefore, RefPicSetStCurrAfter и RefPicSetLtCurr для определения одного или более списков эталонных изображений (например, RefPicList0 и RefPicList1) для текущего изображения. Как описано выше, видеодекодер 30 может использовать эталонные изображения в списках эталонных изображений для внешнего предсказания PU.
[0077] Вышеописанная схема сигнализации обладает несколькими недостатками. В одном примерном недостатке вышеописанной схемы сигнализации сам заголовок секции может явно сигнализировать одну и ту же запись LTRP несколько раз. Другими словами, в вышеописанной семантике отсутствует ограничение, которое запрещает сигнализировать одну и ту же запись LTRP (явно или в виде индекса) больше одного раза в одном заголовке секции. В другом примерном недостатке вышеописанной схемы сигнализации SPS может указывать, что конкретное LTRP не используется текущим изображением, и одновременно заголовок секции может указывать, что конкретное LTRP используется текущим изображением, или наоборот. Например, заголовок секции может явно сигнализировать и/или давать индекс к записям LTRP, которые указывают одно и то же эталонное изображение, но имеют разные значения для синтаксического элемента used_by_curr_pic_flag. Следовательно, вышеописанный синтаксис и семантика допускают заголовок секции, который сигнализирует записи LTRP, которые указывают, что конкретное эталонное изображение находится одновременно в подмножестве RefPicSetLtCurr и в подмножестве RefPicSetLtFoll. Эта путаница в том, используется ли конкретное LTRP для эталона текущим изображением, может вызвать проблемы декодирования для видеодекодера 30.
[0078] Поэтому в соответствии с одной или более методиками из данного раскрытия изобретения можно добавить ограничения, так что каждое LTRP, которое сигнализируется в заголовке секции (явно или в виде индекса), обязано ссылаться на отдельное эталонное изображение среди всех LTRP, которые сигнализируются в заголовке секции (явно или в виде индекса). Например, видеокодер 20 ограничивается в неявной сигнализации (то есть индексировании) нескольких записей LTRP, которые указывают одно и то же LTRP, ограничивается в явной сигнализации нескольких записей LTRP, которые указывают одно и то же LTRP несколько раз, и ограничивается в неявной и явной сигнализации записей LTRP, которые указывают одно и то же LTRP.
[0079] Таким образом, видеокодер 20 может сигнализировать первую запись LTRP в заголовке секции для текущей секции текущего изображения. Первая запись LTRP может указывать, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений текущего изображения. Набор долгосрочных эталонных изображений текущего изображения может включать в себя эталонные изображения в RefPicSetLtCurr и RefPicSetLtFoll. Кроме того, видеокодер 20 может сигнализировать вторую запись LTRP в заголовке секции, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения. В некоторых примерах поток двоичных сигналов может не пройти проверку соответствия потока двоичных сигналов, если две записи LTRP, сигнализированные в заголовке секции в потоке двоичных сигналов, указывают, что одно и то же эталонное изображение находится в наборе долгосрочных эталонных изображений текущего изображения.
[0080] В некоторых примерах видеокодер 20 может сигнализировать первую запись LTRP путем включения индекса к первой записи LTRP в заголовок секции. В этом примере видеокодер 20 может сигнализировать вторую запись LTRP путем включения второй записи LTRP в заголовок секции, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе эталонных изображений текущего изображения. Например, видеокодер 20 может сформировать заголовок секции так, что заголовок секции соответствует ограничению, которое не дает заголовку секции явно включать в себя конкретную запись LTRP, если заголовок секции включает в себя индекс к эквивалентной записи LTRP в SPS. Таким образом, поток двоичных сигналов может не пройти проверку соответствия потока двоичных сигналов, если заголовок секции включает в себя конкретное LTRP и включает в себя индекс к эквивалентной записи LTRP в SPS. В этом примере конкретная запись LTRP включает в себя синтаксический элемент LSB и синтаксический элемент использования. Кроме того, в этом примере эквивалентная запись LTRP включает в себя синтаксический элемент LSB, который совпадает с синтаксическим элементом LSB у конкретной записи LTRP, и эквивалентная запись LTRP включает в себя синтаксический элемент использования, который совпадает с синтаксическим элементом использования у конкретного LTRP. Синтаксический элемент LSB у конкретной записи LTRP и синтаксический элемент LSB у эквивалентной записи LTRP указывают LSB у значений POC. Синтаксический элемент использования у конкретной записи LTRP и синтаксический элемент использования у эквивалентной записи LTRP указывают, могут ли эталонные изображения использоваться текущим изображением для эталона.
[0081] В другом примере набор записей LTRP в SPS может включать в себя первую запись LTRP и вторую запись LTRP. В этом примере видеокодер 20 может включить индекс к первому LTRP в заголовок секции и может включить индекс ко второй записи LTRP в заголовок секции, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений текущего изображения.
[0082] В еще одном примере видеокодер 20 может сигнализировать первую запись LTRP путем включения первой записи LTRP в заголовок секции. Кроме того, видеокодер 20 может сигнализировать вторую запись LTRP путем включения второй записи LTRP в заголовок секции. Таким образом, видеокодер 20 может включить первую запись LTRP в заголовок секции и может включить вторую запись LTRP в заголовок секции, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений текущего изображения. Таким образом, видеокодер 20 может формировать заголовок секции так, что заголовок секции соответствует ограничению, которое не дает заголовку секции включать в себя две записи LTRP, которые указывают эталонные изображения, имеющие одинаковое значение POC. Таким образом, поток двоичных сигналов может не пройти проверку соответствия потока двоичных сигналов, если заголовок секции в потоке двоичных сигналов включает в себя две записи LTRP, которые указывают эталонные изображения, имеющие одинаковое значение POC.
[0083] Как указано выше, набор долгосрочных эталонных изображений текущего изображения может включать в себя первое подмножество (например, RefPicStLtCurr) и второе подмножество (например, RefPicStLtFoll). Первое подмножество может включать в себя LTRP, используемые для эталона текущим изображением, а второе подмножество может включать в себя LTRP, используемые для эталона другими изображениями. В соответствии с методиками из данного раскрытия изобретения видеокодер 20 может формировать заголовок секции так, что заголовок секции соответствует ограничению, которое не дает первому подмножеству включать в себя два эталонных изображения с одинаковым значением POC, ограничению, которое не дает второму подмножеству включать в себя два эталонных изображения с одинаковым значением POC, и ограничению, которое не дает первому и второму подмножествам включать в себя эталонные изображения с одинаковым значением POC. Таким образом, поток двоичных сигналов может не пройти проверку соответствия потока двоичных сигналов, если первое подмножество включает в себя два эталонных изображения с одинаковым значением POC, и/или если второе подмножество включает в себя два эталонных изображения с одинаковым значением POC.
[0084] Кроме того, в некоторых примерах для каждой соответствующей записи LTRP в наборе из одной или более записей LTRP в SPS заголовок секции включает в себя индекс к соответствующей записи LTRP, только если заголовок секции еще не включает в себя копию индекса к соответствующей записи LTRP. Таким образом, видеокодер 20 может формировать заголовок секции в соответствии с ограничением, которое не дает заголовку секции включать в себя два индекса к одной записи LTRP в SPS. Таким образом, поток двоичных сигналов может не пройти проверку соответствия потока двоичных сигналов, если заголовок секции включает в себя два индекса к одной записи LTRP в SPS.
[0085] В другом примерном недостатке схемы сигнализации из Рабочего варианта 8 HEVC SPS может явно сигнализировать одну и ту же запись LTRP несколько раз. Явная сигнализация одной и той же записи LTRP несколько раз либо в SPS, либо в заголовке секции может уменьшить эффективность кодирования. Другими словами, в вышеописанной семантике отсутствует ограничение для сигнализации одной и той же записи LTRP в SPS больше одного раза.
[0086] В соответствии с одной или более методиками из данного раскрытия изобретения можно добавить ограничение, которое запрещает дублирующие записи LTRP среди записей LTRP, сигнализированных в SPS. Другими словами, видеокодер 20 ограничивается в формировании SPS, который явно сигнализирует одну и ту же запись LTRP несколько раз. Например, видеокодер 20 может формировать SPS так, что SPS включает в себя конкретную запись LTRP, только если SPS еще не включает в себя копию конкретной записи LTRP. Таким образом, видеокодер 20 может формировать SPS так, что SPS соответствует ограничению, которое не дает SPS включать в себя две или более копии одной и той же записи LTRP. В некоторых случаях устройство (например, видеокодер 20 или видеодекодер 30) может выполнить проверку соответствия потока двоичных сигналов, чтобы определить, соответствует ли поток двоичных сигналов стандарту кодирования видео, например HEVC. Поток двоичных сигналов может не пройти проверку соответствия потока двоичных сигналов, если SPS включает в себя две или более копии одной и той же записи LTRP.
[0087] В другом примерном недостатке схемы сигнализации из Рабочего варианта 8 HEVC видеокодер 20 потенциально может сформировать заголовок секции, который явно указывает запись LTRP, а также указывает такую же запись LTRP неявно. Таким образом, RefPicStLtCurr и/или RefPicStLtFoll у текущего изображения потенциально могут дважды включать в себя одну и ту же запись LTRP. Другими словами, записи LTRP можно сигнализировать в SPS и индексировать (то есть указывать неявно) в заголовке секции. Однако вышеописанная семантика может позволить любой записи LTRP, сигнализированной в SPS, также явно сигнализироваться в заголовке секции. Такая гибкость может быть излишней.
[0088] Поэтому в соответствии с одной или более методиками из данного раскрытия изобретения можно добавить ограничение, так что запись LTRP не сигнализируется непосредственно ни в каком заголовке секции, когда эквивалентная запись LTRP включается в SPS. Таким образом, для каждой соответствующей записи LTRP в SPS заголовок секции не включает в себя конкретную запись LTRP, если конкретная запись LTRP совпадает с соответствующей записью LTRP в SPS. Например, поток двоичных сигналов может не пройти проверку соответствия потока двоичных сигналов, если SPS включает в себя две совпадающие записи LTRP.
[0089] В другом примерном недостатке схемы сигнализации из Рабочего варианта 8 HEVC значение синтаксического элемента delta_poc_msb_present_flag[i] определяет сигнализацию синтаксического элемента delta_poc_msb_cycle_lt[i]. Другими словами, сигнализация синтаксического элемента delta_poc_msb_cycle_lt[i] зависит от значения синтаксического элемента delta_poc_msb_present_flag[i]. Как объяснялось выше, синтаксический элемент delta_poc_msb_present_flag[i] может указывать, что синтаксический элемент delta_poc_msb_cycle_lt[i] отсутствует, если MSB значения POC у i-го LTRP равны MSB значения POC у (i–1)-го LTRP. Синтаксический элемент delta_poc_msb_cycle_lt[i] кодируется экспоненциальным кодом Голомба (то есть ue(v)-кодируется). Однако явная сигнализация синтаксического элемента delta_poc_msb_present_flag[i] может быть не нужна, и синтаксический элемент delta_poc_msb_cycle_lt[i] можно изменить для охвата всех случаев (то есть случая, где сигнализируются MSB значения POC, и случая, где MSB значения POC не сигнализируются).
[0090] Поэтому в соответствии с одной или более методиками из данного раскрытия изобретения синтаксический элемент delta_poc_msb_present_flag[i] удаляется из синтаксиса заголовка секции, а семантика синтаксического элемента delta_poc_msb_cycle_lt[i] изменяется для охвата всех возможных случаев. Как описано в этом документе, может быть необходимо, чтобы значение синтаксического элемента delta_poc_msb_cycle_lt (или эквивалентного синтаксического элемента) для i-го LTRP для текущего изображения было больше 0, когда имеется несколько эталонных изображений в DPB, исключая те изображения, которые сигнализируются в качестве STRP для текущего изображения, со значениями POC по модулю MaxPicOrderCntLsb, равными LSB значения POC у i-го LTRP, где MaxPicOrderCntLsb является наибольшим значением, которое можно представить с использованием только LSB значения POC.
[0091] В другом примерном недостатке схемы сигнализации из Рабочего варианта 8 HEVC, когда в DPB имеется два эталонных изображения с одинаковыми LSB, и одно из изображений сигнализируется в качестве STRP, а другое изображение – в качестве LTRP, семантика Рабочего варианта 8 HEVC предписывает, чтобы сигнализировалась информация MSB у LTRP. Однако в этом случае информацию MSB для LTRP сигнализировать не нужно. Поэтому в соответствии с одной или более методиками из данного раскрытия изобретения семантику и процесс выведения набора эталонных изображений можно изменить так, что когда в DPB имеется n (где n>1) эталонных изображений со значениями POC, имеющими одинаковые LSB, и (n–1) из тех изображений сигнализируются в качестве STRP, а n-ое изображение сигнализируется в качестве LTRP, тогда MSB значения POC у LTRP не разрешено сигнализировать.
[0092] В Рабочем варианте 8 HEVC SPS может включать в себя множество синтаксических структур набора краткосрочных эталонных изображений (STRPS) (например, синтаксических структур short_term_ref_pic_set). Заголовок секции может включать в себя либо синтаксическую структуру STRPS, либо включать в себя один или более синтаксических элементов, указывающих одну из синтаксических структур STRPS в применимом SPS. Наборы STRP (то есть RefPicSetStCurrBefore, RefPicSetStCurrAfter и RefPicSetStFoll) для текущего изображения можно сигнализировать в синтаксической структуре STRPS.
[0093] Точнее говоря, наборы STRP для текущего изображения можно сигнализировать в синтаксической структуре STRPS одним из двух способов. В первом способе синтаксическая структура STRPS включает в себя синтаксические элементы, которые дают видеодекодеру 30 возможность определить, по меньшей мере частично на основе синтаксических элементов в эталонной синтаксической структуре STRPS в применимом SPS, массив значений DeltaPocS0 и массив значений DeltaPocS1. Во втором способе синтаксическая структура STRPS включает в себя синтаксические элементы, которые дают видеодекодеру 30 возможность определить массив значений DeltaPocS0 и массив значений DeltaPocS1 без обращения к какой-либо другой синтаксической структуре STRPS. Массив значений DeltaPocS0 указывает значения для добавления к значению POC текущего изображения, чтобы определить значения POC в PocStCurrBefore и PocStFoll. Массив значений DeltaPocS1 указывает значения для вычитания из значения POC текущего изображения, чтобы определить значения POC в PocStCurrAfter и PocStFoll. Как указано выше, видеодекодер 30 может определить RefPicSetStCurrBefore по меньшей мере частично на основе PocStCurrBefore. Видеодекодер 30 может определить RefPicSetStCurrAfter по меньшей мере частично на основе PocStCurrAfter. Видеодекодер 30 может определить RefPicStFoll по меньшей мере частично на основе PocStFoll.
[0094] Другой примерный недостаток схемы сигнализации из Рабочего варианта 8 HEVC состоит в том, что можно повторять одни и те же STRP в списке STRP, что следует запретить. Другими словами, SPS может включать в себя несколько идентичных синтаксических структур STRPS. Также возможно, что синтаксическая структура STRPS, явно сигнализированная в заголовке секции, идентична синтаксической структуре STRPS, сигнализированной в SPS, что также следует запретить. Поэтому одна или более методик из данного раскрытия изобретения могут ограничить видеокодер 20 так, что никакие два варианта набора краткосрочных эталонных изображений (то есть никакие две синтаксические структуры STRPS), сигнализированные в SPS, не являются идентичными. Кроме того, в соответствии с одной или более методиками из данного раскрытия изобретения видеокодер 20 ограничивается в сигнализации синтаксической структуры STRPS в заголовке секции, если идентичный шаблон (то есть синтаксическая структура STRPS) сигнализируется среди вариантов краткосрочных RPS (то есть синтаксических структур STRPS) в SPS. А именно, шаблон набора краткосрочных эталонных изображений (то есть синтаксическую структуру STRPS) нельзя явно сигнализировать в заголовке секции, если идентичный вариант (то есть идентичная синтаксическая структура STRPS) присутствует в списке вариантов в SPS.
[0095] Фиг. 2 – блок-схема, иллюстрирующая примерный видеокодер 20, который может реализовать методики из данного раскрытия изобретения. Фиг. 2 предоставляется с целью объяснения, и ее не следует рассматривать как ограничивающую методики, которые в общих чертах иллюстрируются и описываются в данном раскрытии изобретения. С целью объяснения данное раскрытие изобретения описывает видеокодер 20 применительно к кодированию HEVC. Однако методики из данного раскрытия изобретения могут быть применимы к другим стандартам или способам кодирования.
[0096] В примере из фиг. 2 видеокодер 20 включает в себя модуль 100 обработки с предсказанием, модуль 102 формирования остатка, модуль 104 обработки с преобразованием, модуль 106 квантования, модуль 108 обратного квантования, модуль 110 обработки с обратным преобразованием, модуль 112 восстановления, модуль 114 фильтров, буфер 116 декодированных изображений и модуль 118 энтропийного кодирования. Модуль 100 обработки с предсказанием включает в себя модуль 120 обработки с внешним предсказанием и модуль 126 обработки с внутренним предсказанием. Модуль 120 обработки с внешним предсказанием включает в себя модуль 122 оценки движения и модуль 124 компенсации движения. В других примерах видеокодер 20 может включать в себя больше, меньше компонентов или другие функциональные компоненты.
[0097] Видеокодер 20 может принять видеоданные. Видеокодер 20 может кодировать каждую CTU в секции изображения в видеоданных. Каждая из CTU может ассоциироваться с блоками дерева кодирования (CTB) яркости одинакового размера и соответствующими CTB изображения. Модуль 100 обработки с предсказанием может выполнить разбиение квадродерева как часть кодирования CTU, чтобы разделить CTB в CTU на постепенно более мелкие блоки. Более мелкие блоки могут быть блоками кодирования CU. Например, модуль 100 обработки с предсказанием может разбить CTB, ассоциированный с CTU, на четыре субблока одинакового размера, разбить один или более субблоков на четыре под-субблока одинакового размера, и так далее.
[0098] Видеокодер 20 может кодировать CU в CTU, чтобы сформировать кодированные представления CU (то есть кодированные CU). Как часть кодирования CU модуль 100 обработки с предсказанием может распределить блоки кодирования, ассоциированные с CU, между одной или более PU в CU. Таким образом, каждая PU может ассоциироваться с блоком предсказания яркости и соответствующими блоками предсказания цветности. Видеокодер 20 и видеодекодер 30 могут поддерживать PU, имеющие различные размеры. Как указано выше, размер CU может относиться к размеру блока кодирования яркости в CU, а размер PU может относиться к размеру блока предсказания яркости в PU. Предполагая размер конкретной CU равным 2Nx2N, видеокодер 20 и видеодекодер 30 могут поддерживать размеры PU в 2Nx2N или NxN для внутреннего предсказания и симметричные размеры PU в 2Nx2N, 2NxN, Nx2N, NxN или аналогичные для внешнего предсказания. Видеокодер 20 и видеодекодер 30 также могут поддерживать асимметричное разбиение для размеров PU в 2NxnU, 2NxnD, nLx2N и nRx2N для внешнего предсказания.
[0099] Модуль 120 обработки с внешним предсказанием может сформировать данные с предсказанием для PU путем выполнения внешнего предсказания над каждой PU в CU. Данные с предсказанием для PU могут включать в себя блоки с предсказанием из PU и информацию о движении для PU. Модуль 120 обработки с внешним предсказанием может выполнять разные операции для PU в CU в зависимости от того, находится ли PU в I-секции, P-секции или B-секции. В I-секции все PU имеют внутреннее предсказание. Поэтому, если PU находится в I-секции, то модуль 120 обработки с внешним предсказанием не выполняет внешнее предсказание над этой PU.
[0100] Когда видеокодер 20 начинает кодирование текущего изображения, модуль 120 обработки с внешним предсказанием может определить подмножества эталонных изображений для текущего изображения. Кроме того, модуль 120 обработки с внешним предсказанием по меньшей мере частично на основе подмножеств эталонных изображений для текущего изображения может определить один или более списков эталонных изображений для текущего изображения. Модуль 120 обработки с внешним предсказанием может сигнализировать подмножества эталонных изображений для текущего изображения с использованием синтаксических элементов в SPS, применимом к текущему изображению, и одном или более заголовках секций у одной или более секций текущего изображения.
[0101] В соответствии с одной или более методиками из данного раскрытия изобретения модуль 120 обработки с внешним предсказанием может сформировать заголовок секции для текущей секции текущего изображения так, что заголовок секции не сигнализирует (явно либо посредством индексирования) две записи LTRP, ассоциированные с одним и тем же эталонным изображением. Например, модуль 120 обработки с внешним предсказанием может сигнализировать первую запись LTRP в заголовке секции. В этом примере первая запись LTRP может указывать, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений текущего изображения. Кроме того, в этом примере модуль 120 обработки с внешним предсказанием может сигнализировать вторую запись LTRP в заголовке секции, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения.
[0102] Если PU находится в P-секции, то модуль 122 оценки движения может искать эталонную область для PU в эталонных изображениях в списке эталонных изображений (например, "RefPicList0"). Эталонная область для PU может быть областью в эталонном изображении, которая содержит выборочные блоки, которые точнее всего соответствуют блокам предсказания в PU. Модуль 122 оценки движения может сформировать индекс эталона, который указывает положение в RefPicList0 эталонного изображения, содержащего эталонную область для PU. К тому же модуль 122 оценки движения может сформировать вектор движения, который указывает пространственное смещение между блоком кодирования в PU и эталонным местоположением, ассоциированным с эталонной областью. Например, вектор движения может быть двумерным вектором, который предоставляет смещение от координат в текущем декодированном изображении к координатам в эталонном изображении. Модуль 122 оценки движения может вывести индекс эталона и вектор движения в качестве информации о движении PU. Модуль 124 компенсации движения может сформировать блоки с предсказанием в PU на основе фактических или интерполированных выборок в эталонном местоположении, указанном вектором движения PU.
[0103] Если PU находится в B-секции, то модуль 122 оценки движения может выполнить однонаправленное предсказание или двунаправленное предсказание для PU. Чтобы выполнить однонаправленное предсказание для PU, модуль 122 оценки движения может искать эталонную область для PU в эталонных изображениях из RefPicList0 или второго списка эталонных изображений ("RefPicList1"). Модуль 122 оценки движения в качестве информации о движении PU может вывести индекс эталона, который указывает положение эталонного изображения, которое содержит эталонную область, в RefPicList0 или RefPicList1, вектор движения, который указывает пространственное смещение между выборочным блоком в PU и эталонным местоположением, ассоциированным с эталонной областью, и один или более индикаторов направления предсказания, которые указывают, находится ли эталонное изображение в RefPicList0 либо в RefPicList1. Модуль 124 компенсации движения может сформировать блоки с предсказанием в PU по меньшей мере частично на основе фактических или интерполированных выборок в эталонной области, указанной вектором движения PU.
[0104] Чтобы выполнить двунаправленное внешнее предсказание для PU, модуль 122 оценки движения может искать эталонную область для PU в эталонных изображениях в RefPicList0, а также может искать другую эталонную область для PU в эталонных изображениях в RefPicList1. Модуль 122 оценки движения может сформировать индексы эталона, которые указывают положения эталонных изображений, которые содержат эталонные области, в RefPicList0 и RefPicList1. К тому же модуль 122 оценки движения может сформировать векторы движения, которые указывают пространственные смещения между эталонными местоположениями, ассоциированными с эталонными областями, и блоком предсказания в PU. Информация о движении PU может включать в себя индексы эталона и векторы движения PU. Модуль 124 компенсации движения может сформировать выборочные блоки с предсказанием в PU по меньшей мере частично на основе фактических или интерполированных выборок в эталонной области, указанной векторами движения PU.
[0105] Модуль 126 обработки с внутренним предсказанием может сформировать данные с предсказанием для PU путем выполнения внутреннего предсказания над PU. Данные с предсказанием для PU могут включать в себя выборочные блоки с предсказанием для PU и различные синтаксические элементы. Модуль 126 обработки с внутренним предсказанием может выполнять внутреннее предсказание над PU в I-секциях, P-секциях и B-секциях.
[0106] Чтобы выполнить внутреннее предсказание над PU, модуль 126 обработки с внутренним предсказанием может использовать несколько режимов внутреннего предсказания для формирования нескольких наборов данных с предсказанием для PU. Модуль 126 обработки с внутренним предсказанием может использовать выборки из пространственно-соседних блоков, чтобы формировать блоки с предсказанием в PU. Соседние PU могут находиться выше, выше и справа, выше и слева или слева от PU, предполагая порядок кодирования слева-направо, сверху-вниз для PU, CU и CTU. Модуль 126 обработки с внутренним предсказанием может использовать различные количества режимов внутреннего предсказания, например 33 режима направленного внутреннего предсказания. В некоторых примерах количество режимов внутреннего предсказания может зависеть от размера блоков предсказания, ассоциированных с PU.
[0107] Модуль 100 обработки с предсказанием может выбирать данные с предсказанием для PU в CU из данных с предсказанием, сформированных для PU модулем 120 обработки с внешним предсказанием, или данных с предсказанием, сформированных для PU модулем 126 обработки с внутренним предсказанием. В некоторых примерах модуль 100 обработки с предсказанием выбирает данные с предсказанием для PU в CU на основе показателей искажения в зависимости от скорости передачи у наборов данных с предсказанием. Блоки с предсказанием в выбранных данных с предсказанием в этом документе могут называться выбранными блоками с предсказанием.
[0108] Модуль 102 формирования остатка на основе блоков кодирования яркости, Cb и Cr у CU и выбранных блоков яркости, Cb и Cr с предсказанием у PU в CU может сформировать остаточные блоки яркости, Cb и Cr у CU. Например, модуль 102 формирования остатка может сформировать остаточные блоки у CU так, что каждая выборка в остаточных блоках имеет значение, равное разности между выборкой в блоке кодирования у CU и соответствующей выборкой в соответствующем выбранном блоке с предсказанием у PU в CU.
[0109] Модуль 104 обработки с преобразованием может выполнить разбиение квадродерева для разбиения остаточных блоков, ассоциированных с CU, на блоки преобразования, ассоциированные с TU в CU. Таким образом, TU может ассоциироваться с блоком преобразования яркости и двумя соответствующими блоки преобразования цветности. Размеры и положения блоков преобразования яркости и цветности у TU в CU могут основываться или не основываться на размерах и положениях блоков предсказания у PU в CU. Структура квадродерева, известная как "остаточное квадродерево" (RQT), может включать в себя узлы, ассоциированные с каждой из областей. TU в CU могут соответствовать листам в RQT.
[0110] Модуль 104 обработки с преобразованием может сформировать блоки коэффициентов для каждой TU в CU путем применения одного или более преобразований к блокам преобразования в TU. Модуль 104 обработки с преобразованием может применять различные преобразования к блоку преобразования, ассоциированному с TU. Например, модуль 104 обработки с преобразованием может применять к блоку преобразования дискретное косинусное преобразование (DCT), направленное преобразование или концептуально сходное преобразование. В некоторых примерах модуль 104 обработки с преобразованием не применяет преобразования к блоку преобразования. В таких примерах блок преобразования может рассматриваться в качестве блока коэффициентов.
[0111] Модуль 106 квантования может квантовать коэффициенты преобразования в блоке коэффициентов. Процесс квантования может уменьшить разрядную глубину, ассоциированную с некоторыми или всеми коэффициентами преобразования. Например, n-разрядный коэффициент преобразования во время квантования можно округлить в меньшую сторону до m-разрядного коэффициента преобразования, где n больше m. Модуль 106 квантования может квантовать блок коэффициентов, ассоциированный с TU в CU, на основе значения параметра квантования (QP), ассоциированного с CU. Видеокодер 20 может регулировать степень квантования, применяемого к блокам коэффициентов, ассоциированным с CU, путем регулирования значения QP, ассоциированного с CU. Квантование может привносить потерю информации, таким образом, квантованные коэффициенты преобразования могут обладать меньшей точностью, нежели исходные коэффициенты преобразования.
[0112] Модуль 108 обратного квантования и модуль 110 обработки с обратным преобразованием могут применить к блоку коэффициентов соответственно обратное квантование и обратные преобразования, чтобы восстановить остаточный блок из блока коэффициентов. Модуль 112 восстановления может сложить выборки восстановленного остаточного блока с соответствующими выборками из одного или более блоков с предсказанием, сформированных модулем 100 обработки с предсказанием, чтобы создать восстановленный блок преобразования, ассоциированный с TU. Путем восстановления таким образом блоков преобразования для каждой TU в CU видеокодер 20 может восстановить блоки кодирования в CU.
[0113] Модуль 114 фильтров может выполнить одну или более операций уменьшения блочности, чтобы уменьшить блочные артефакты в блоках кодирования, ассоциированных с CU. Буфер 116 декодированных изображений может сохранить восстановленные блоки кодирования после того, как модуль 114 фильтров выполняет одну или более операций уменьшения блочности над восстановленными блоками кодирования. Модуль 120 обработки с внешним предсказанием может использовать эталонное изображение, которое содержит восстановленные блоки кодирования, чтобы выполнить внешнее предсказание над PU других изображений. К тому же модуль 126 обработки с внутренним предсказанием может использовать восстановленные блоки кодирования в буфере 116 декодированных изображений, чтобы выполнить внутреннее предсказание над другими PU в том же изображении, что и CU.
[0114] Модуль 118 энтропийного кодирования может принимать данные от других функциональных компонентов видеокодера 20. Например, модуль 118 энтропийного кодирования может принимать блоки коэффициентов от модуля 106 квантования и может принимать синтаксические элементы от модуля 100 обработки с предсказанием. Модуль 118 энтропийного кодирования может выполнить одну или более операций энтропийного кодирования над данными, чтобы сформировать энтропийно кодированные данные. Например, модуль 118 энтропийного кодирования может выполнить операцию контекстно-адаптивного кодирования с переменной длиной (CAVLC), операцию CABAC, операцию кодирования переменной длины с неравномерным кодом (V2V), операцию синтаксического контекстно-адаптивного двоичного арифметического кодирования (SBAC), операцию энтропийного кодирования с разбиением на интервалы вероятности (PIPE), операцию экспоненциального кодирования Голомба или другой тип операции энтропийного кодирования над данными. Видеокодер 20 может вывести поток двоичных сигналов, который включает в себя энтропийно кодированные данные, сформированные модулем 118 энтропийного кодирования. Например, поток двоичных сигналов может включать в себя данные, которые представляют RQT для CU.
[0115] Фиг. 3 – блок-схема, иллюстрирующая примерный видеодекодер 30, который конфигурируется для реализации методик из данного раскрытия изобретения. Фиг. 3 предоставляется с целью объяснения и не ограничивает методики, которые в общих чертах иллюстрируются и описываются в данном раскрытии изобретения. С целью объяснения данное раскрытие изобретения описывает видеодекодер 30 применительно к кодированию HEVC. Однако методики из данного раскрытия изобретения могут быть применимы к другим стандартам или способам кодирования. Поток двоичных сигналов также может включать в себя синтаксические элементы, которые не кодируются энтропийно.
[0116] В примере из фиг. 3 видеодекодер 30 включает в себя модуль 150 энтропийного декодирования, модуль 152 обработки с предсказанием, модуль 154 обратного квантования, модуль 156 обработки с обратным преобразованием, модуль 158 восстановления, модуль 160 фильтров и буфер 162 декодированных изображений. Модуль 152 обработки с предсказанием включает в себя модуль 164 компенсации движения и модуль 166 обработки с внутренним предсказанием. В других примерах видеодекодер 30 может включать в себя больше, меньше компонентов или другие функциональные компоненты.
[0117] Видеодекодер 30 может принять поток двоичных сигналов. Модуль 150 энтропийного декодирования может проанализировать поток двоичных сигналов, чтобы получить синтаксические элементы из потока двоичных сигналов. Модуль 150 энтропийного декодирования может энтропийно декодировать энтропийно кодированные синтаксические элементы в потоке двоичных сигналов. Модуль 152 обработки с предсказанием, модуль 154 обратного квантования, модуль 156 обработки с обратным преобразованием, модуль 158 восстановления и модуль 160 фильтров могут сформировать декодированные видеоданные на основе синтаксических элементов, полученных из потока двоичных сигналов.
[0118] Поток двоичных сигналов может содержать последовательность единиц NAL. Единицы NAL в потоке двоичных сигналов могут включать в себя единицы NAL кодированной секции. Модуль 150 энтропийного декодирования может получить и энтропийно декодировать синтаксические элементы из единиц NAL кодированной секции как часть декодирования потока двоичных сигналов. Каждая из кодированных секций может включать в себя заголовок секции и данные секции. Заголовок секции может содержать синтаксические элементы, имеющие отношение к секции. Синтаксические элементы в заголовке секции могут включать в себя синтаксический элемент, который идентифицирует PPS, ассоциированный с изображением (то есть применимый к нему), которое содержит секцию.
[0119] В дополнение к получению синтаксических элементов из потока двоичных сигналов видеодекодер 30 может выполнить операцию восстановления над CU. Чтобы выполнить операцию восстановления над CU, видеодекодер 30 может выполнить операцию восстановления над каждой TU в CU. Путем выполнения операции восстановления для каждой TU в CU видеодекодер 30 может восстановить остаточные блоки в CU.
[0120] Как часть выполнения операции восстановления над TU в CU модуль 154 обратного квантования может обратно квантовать, то есть, деквантовать, блоки коэффициентов, ассоциированные с TU. Модуль 154 обратного квантования может использовать значение QP, ассоциированное с CU, чтобы определить степень квантования, а также степень обратного квантования для применения модулем 154 обратного квантования. То есть можно управлять коэффициентом сжатия, то есть отношением количества разрядов, используемых для представления исходной последовательности и сжатой последовательности, путем регулирования значения QP, используемого при квантовании коэффициентов преобразования. Коэффициент сжатия также может зависеть от применяемого способа энтропийного кодирования, при наличии такового.
[0121] После того, как модуль 154 обратного квантования обратно квантует блок коэффициентов, модуль 156 обработки с обратным преобразованием может применить одно или более обратных преобразований к блоку коэффициентов, чтобы сформировать остаточный блок, ассоциированный с TU. Например, модуль 156 обработки с обратным преобразованием может применить обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное вращательное преобразование, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов.
[0122] Если PU кодируется с использованием внутреннего предсказания, то модуль 166 обработки с внутренним предсказанием может выполнить внутреннее предсказание, чтобы сформировать блоки с предсказанием для PU. Модуль 166 обработки с внутренним предсказанием может использовать режим внутреннего предсказания, чтобы сформировать блоки яркости, Cb и Cr с предсказанием для PU на основе блоков предсказания пространственно-соседних PU. Модуль 166 обработки с внутренним предсказанием может определить режим внутреннего предсказания для PU на основе одного или более синтаксических элементов, полученных из потока двоичных сигналов.
[0123] Когда видеодекодер 30 начинает декодирование текущего изображения, модуль 152 обработки с предсказанием может определить подмножества эталонных изображений для текущего изображения на основе синтаксических элементов в SPS, применимом к текущему изображению, и синтаксических элементов в заголовке секции у секции текущего изображения. Подмножества эталонных изображений для текущего изображения могут включать в себя RefPicSetStCurrBefore, RefPicSetStCurrAfter, RefPicSetStFoll, RefPicSetLtCurr и RefPicSetLtFoll.
[0124] В заголовке секции можно сигнализировать одну или более записей LTRP. Записи LTRP можно сигнализировать в заголовке секции с использованием индексов и/или явно сигнализировать в заголовке секции. Каждая из записей LTRP, сигнализированных в заголовке секции, указывает эталонное изображение в подмножестве долгосрочных эталонных изображений у текущего изображения (например, RefPicSetLtCurr и RefPicSetLtFoll). В соответствии с одной или более методиками из данного раскрытия изобретения две записи LTRP, сигнализированные в заголовке секции, не могут указывать, что одно и то же эталонное изображение включается в набор долгосрочных эталонных изображений текущего изображения. Например, когда набор из одной или более записей LTRP включает в себя первую запись LTRP, указывающую, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений текущего изображения, набор из одной или более записей LTRP включает в себя вторую запись LTRP, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений текущего изображения.
[0125] Модуль 152 обработки с предсказанием может построить первый список эталонных изображений (RefPicList0) и второй список эталонных изображений (RefPicList1) по меньшей мере частично на основе эталонных изображений в буфере 162 декодированных изображений и эталонных изображений в RefPicSetStCurrBefore, RefPicSetStCurrAfter и RefPicSetLtCurr. Кроме того, если PU кодируется с использованием внешнего предсказания, то модуль 150 энтропийного декодирования может извлечь информацию о движении для PU. Модуль 164 компенсации движения на основе информации о движении PU может определить одну или более эталонных областей для PU. Модуль 164 компенсации движения на основе выборочных блоков в одном или более эталонных блоках для PU может сформировать блоки яркости, Cb и Cr с предсказанием для PU.
[0126] Модуль 158 восстановления может использовать блоки преобразования яркости, Cb и Cr, ассоциированные с TU в CU, и блоки яркости, Cb и Cr с предсказанием у PU в CU, то есть данные внутреннего предсказания либо данные внешнего предсказания, в зависимости от обстоятельств, чтобы восстановить блоки кодирования яркости, Cb и Cr в CU. Например, модуль 158 восстановления может сложить выборки блоков преобразования яркости, Cb и Cr с соответствующими выборками блоков яркости, Cb и Cr с предсказанием, чтобы восстановить блоки кодирования яркости, Cb и Cr в CU.
[0127] Модуль 160 фильтров может выполнить операцию уменьшения блочности, чтобы уменьшить блочные артефакты, ассоциированные с блоками кодирования яркости, Cb и Cr в CU. Видеодекодер 30 может сохранить в буфере 162 декодированных изображений блоки кодирования яркости, Cb и Cr в CU. Буфер 162 декодированных изображений может предоставлять эталонные изображения для последующей компенсации движения, внутреннего предсказания и представления на устройстве отображения, например устройстве 32 отображения из фиг. 1. Например, видеодекодер 30 на основе блоков яркости, Cb и Cr в буфере 162 декодированных изображений может выполнить операции внутреннего предсказания или внешнего предсказания над PU других CU. Таким образом, видеодекодер 30 может получить из потока двоичных сигналов уровни коэффициентов преобразования у важного блока коэффициентов яркости, обратно квантовать уровни коэффициентов преобразования, применить преобразование к уровням коэффициентов преобразования для формирования блока преобразования, сформировать, по меньшей мере частично на основе блока преобразования, блок кодирования и вывести блок кодирования для отображения.
[0128] Фиг. 4 – блок-схема алгоритма, иллюстрирующая примерную работу 200 видеокодера 20 в соответствии с одной или более методиками из данного раскрытия изобретения. Как показано в примере из фиг. 4, видеокодер 20 может сформировать SPS (202). К тому же видеокодер 20 может сигнализировать первую запись LTRP в заголовке секции для текущей секции текущего изображения (204). Первая запись LTRP указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений текущего изображения. Кроме того, видеокодер 20 может сигнализировать вторую запись LTRP в заголовке секции, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения (206).
[0129] В некоторых примерах SPS включает в себя набор из одной или более записей LTRP, который включает в себя первую запись LTRP. В некоторых таких примерах видеокодер 20 формирует SPS так, что SPS включает в себя первую запись LTRP, только если SPS еще не включает в себя копию первой записи LTRP. То есть видеокодер 20 может формировать SPS так, что SPS соответствует ограничению, которое не дает SPS включать в себя две или более копии одной и той же записи LTRP. Например, поток двоичных сигналов может не пройти проверку соответствия потока двоичных сигналов, если SPS включает в себя две или более копии одной и той же записи LTRP.
[0130] Фиг. 5 – блок-схема алгоритма, иллюстрирующая примерную работу 250 видеодекодера 30 в соответствии с одной или более методиками из данного раскрытия изобретения. Как проиллюстрировано в примере из фиг. 5, видеодекодер 30 может получить из потока двоичных сигналов SPS, который применим к текущему изображению (252). К тому же видеодекодер 30 может получить из потока двоичных сигналов заголовок секции у текущей секции текущего изображения (254). В заголовке секции сигнализируется набор из одной или более записей LTRP. Набор из одной или более записей LTRP может включать в себя первую запись LTRP, указывающую, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения. Кроме того, набор из одной или более записей LTRP может включать в себя вторую запись LTRP, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений у текущего изображения.
[0131] Видеодекодер 30 может сформировать список эталонных изображений для текущего изображения по меньшей мере частично на основе одной или более записей LTRP (256). К тому же видеодекодер 30 может восстановить текущее изображение по меньшей мере частично на основе одного или более эталонных изображений в списке эталонных изображений для текущего изображения (258).
[0132] В некоторых примерах SPS может включать в себя первую запись LTRP, а заголовок секции может включать в себя индекс к первой записи LTRP. Кроме того, в некоторых таких примерах заголовок секции может включать в себя вторую запись LTRP, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений текущего изображения. Например, заголовок секции может соответствовать ограничению, которое не дает заголовку секции включать в себя конкретную запись LTRP, если заголовок секции включает в себя индекс к эквивалентной записи LTRP в SPS. Таким образом, поток двоичных сигналов может не пройти проверку соответствия потока двоичных сигналов, если заголовок секции включает в себя конкретную запись LTRP, и имеется эквивалентная запись LTRP в SPS. В этом примере конкретная запись LTRP включает в себя синтаксический элемент LSB и синтаксический элемент использования. Кроме того, в этом примере эквивалентная запись LTRP включает в себя синтаксический элемент LSB, который совпадает с синтаксическим элементом LSB у конкретной записи LTRP, и эквивалентная запись LTRP включает в себя синтаксический элемент использования, который совпадает с синтаксическим элементом использования у конкретного LTRP.
[0133] В других примерах, где SPS включает в себя первую запись LTRP, SPS также может включать в себя вторую запись LTRP, а заголовок секции может включать в себя индекс ко второй записи LTRP, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений текущего изображения.
[0134] В некоторых примерах SPS может соответствовать ограничению, которое не дает SPS включать в себя две или более копии одной и той же записи LTRP. Таким образом, SPS запрещается включать в себя две записи LTRP, которые имеют одинаковые синтаксические элементы LSB и синтаксические элементы признака использования. Кроме того, заголовок секции может соответствовать ограничению, которое не дает заголовку секции включать в себя два индекса к одной записи LTRP в SPS. Например, если SPS включает в себя запись LTRP, ассоциированную с индексом ассоциированную с индексом "2", то заголовок секции не может включать в себя значение индекса "2" больше одного раза.
[0135] В других примерах заголовок секции может включать в себя первую запись LTRP. В таких примерах заголовок секции может включать в себя вторую запись LTRP, только если вторая запись LTRP не указывает, что конкретное эталонное изображение находится в наборе долгосрочных эталонных изображений текущего изображения. Таким образом, заголовок секции может соответствовать ограничению, которое не дает заголовку секции включать в себя две записи LTRP, которое указывают эталонные изображения, имеющие одинаковое значение POC.
[0136] Следующий раздел описывает изменения в Рабочем варианте 8 HEVC, которые могут реализовать одну или более методик из данного раскрытия изобретения. В следующем разделе текст, вставленный в Рабочий вариант 8 HEVC, показан ниже курсивом, а текст, удаленный из Рабочего варианта 8 HEVC, показан ниже зачеркнутым. Другие части, не упомянутые ниже, могут быть такими же, как в Рабочем варианте 8 HEVC.
[0137] В разделе 7.4.2.2 Рабочего варианта 8 HEVC семантика для used_by_curr_pic_lt_sps_flag[i] изменяется следующим образом:
used_by_curr_pic_lt_sps_flag[ i ], равный 0, задает, что i-ое возможное долгосрочное эталонное изображение, заданное в наборе параметров последовательности, не используется для эталона изображением, которое включает в свой набор эталонных изображений i-ое возможное долгосрочное эталонное изображение, заданное в наборе параметров последовательности. Для любых i и j в диапазоне от 0 до num_long_term_ref_pics_sps – 1 включительно, если i не равно j, а lt_ref_pic_poc_lsb_sps[i] равен lt_ref_pic_poc_lsb_sps[j], то used_by_curr_pic_lt_sps_flag[i] не должен не быть равен used_by_curr_pic_lt_sps_flag[j].
[0138] Это изменение раздела 7.4.2.2 в Рабочем варианте 8 HEVC в соответствии с одной или более методиками из данного раскрытия изобретения может реализовать ограничение, которое запрещает заголовку секции сигнализировать дублирующие LTRP (явно или в виде индекса).
[0139] В разделе 7.3.5.1 в WD 8 HEVC синтаксис заголовка секции можно изменить, как указано в Таблице 3 ниже.
ТАБЛИЦА 3Синтаксис заголовка секции
…
short_term_ref_pic_set_idx
u(v)
if( long_term_ref_pics_present_flag ) {
if( num_long_term_ref_pics_sps > 0 )
num_long_term_sps
ue(v)
num_long_term_pics
ue(v)
for(i=0; i<num_long_term_sps + num_long_term_pics; i++) {
if(i<num_long_term_sps )
lt_idx_sps[ i ]
u(v)
else {
poc_lsb_lt[ i ]
u(v)
used_by_curr_pic_lt_flag[ i ]
u(1)
}
[[delta_poc_msb_present_flag[ i ]]]
[[if( delta_poc_msb_present_flag[ i ])]]
delta_poc_msb_cycle_lt_plus1[ i ]
ue(v)
}
}
…
Это изменение раздела 7.3.5.1 в WD 8 HEVC в соответствии с одной или более методиками из данного раскрытия изобретения может реализовать удаление синтаксического элемента delta_poc_msb_present_flag[i] и изменение синтаксического элемента delta_poc_msb_cycle_lt для охвата всех случаев.
[0140] В разделе 7.4.5.1 в WD 8 HEVC семантику заголовка секции можно изменить следующим образом:
poc_lsb_lt[i] задает значение самых младших разрядов значения счетчика последовательности изображений у i-го долгосрочного эталонного изображения, которое включается в набор долгосрочных эталонных изображений в текущем изображении. Длина синтаксического элемента poc_lsb_lt[i] равна log2_max_pic_order_cnt_lsb_minus4 + 4 разряда. Для любых значений j и k в диапазоне от num_long_term_sps до num_long_term_sps + num_long_term_pics – 1 включительно, если j меньше k, то poc_lsb_lt[j] не должен быть меньше poc_lsb_lt[k].
used_by_curr_pic_lt_flag[i], равный 0, задает, что i-ое долгосрочное эталонное изображение, включенное в набор долгосрочных эталонных изображений в текущем изображении, не используется текущим изображением для эталона. Для любого значения j в диапазоне от 0 до num_long_term_ref_pics_sps – 1 включительно, если poc_lsb_lt[i] равен lt_ref_pic_poc_lsb_sps[j], то used_by_curr_pic_lt_flag[i] не должен быть равен used_by_curr_pic_lt_sps_flag[j].
Переменные PocLsbLt[i] и UsedByCurrPicLt[i] выводятся следующим образом.
– Если i меньше num_long_term_sps, то PocLsbLt[i] устанавливается равной lt_ref_pic_poc_lsb_sps[ lt_idx_sps[i]], а UsedByCurrPicLt[i] устанавливается равной used_by_curr_pic_lt_sps_flag[ lt_idx_sps[i]].
– В противном случае PocLsbLt[i] устанавливается равной poc_lsb_lt[i], а UsedByCurrPicLt[i] устанавливается равной used_by_curr_pic_lt_flag[i].
[[delta_poc_msb_present_flag[i], равный 1, задает, что присутствует delta_poc_msb_cycle_lt[i]. delta_poc_msb_present_flag[i], равный 0, задает, что delta_poc_msb_cycle_lt[i] отсутствует. delta_poc_msb_present_flag[i] должен быть равен 1, когда имеется больше одного эталонного изображения в буфере декодированных изображений с самыми младшими разрядами значения счетчика последовательности изображений, равными poc_lsb_lt[i]]].
delta_poc_msb_cycle_lt_plus1[i] минус 1 используется для определения значения самых старших разрядов значения счетчика последовательности изображений у i-го долгосрочного эталонного изображения, которое включается в набор долгосрочных эталонных изображений в текущем изображении. delta_poc_msb_cycle_lt_plus1[ i ] должен быть больше 0, когда имеется более одного эталонного изображения в буфере декодированных изображений, исключая те изображения, которые сигнализируются в качестве краткосрочного эталонного изображения для текущего изображения, со счетчиком последовательности изображений по модулю MaxPicOrderCntLsb, равным PocLsbLt[i].
ПРИМЕЧАНИЕ – Когда значение delta_poc_msb_cycle_lt_plus1[i] равно 0, цикл MSB считается не сигнализированным для i-го долгосрочного эталонного изображения.
Переменная DeltaPocMSBCycleLt[i] выводится следующим образом.
if(i= =0| | i = = num_long_term_sps | | PocLsbLt[i−1] ! = PocLsbLt[i])
DeltaPocMSBCycleLt[i] = delta_poc_msb_cycle_lt_plus1[i]-1
else (7-33)
DeltaPocMSBCycleLt[i] = delta_poc_msb_cycle_lt_plus1[i] - 1 + DeltaPocMSBCycleLt[i−1]
24
Значение DeltaPocMSBCycleLt[i]* MaxPicOrderCntLsb + pic_order_cnt_lsb – PocLsbLt[ i ] должно находиться в диапазоне от 1 до 2 – 1 включительно. Для i и j в диапазоне от 0 до num_long_term_sps + num_long_term_pics – 1 включительно, если i не равно j, а PocLsbLt[i] равна PocLsbLt[j], то DeltaPocMSBCycleLt[i] не должна быть равна DeltaPocMSBCycleLt[j].
[0141] Изменение семантики синтаксического элемента used_by_curr_pic_lt_flag[i] в соответствии с одной или более методиками из данного раскрытия изобретения может реализовать ограничение, что заголовок секции не должен явно указывать LTRP, когда применимый SPS указывает эквивалентное LTRP. Кроме того, показанные выше изменения в разделе 7.4.5.1 Рабочего варианта 8 HEVC удаляют семантику синтаксического элемента delta_poc_msb_present_flag[i] в соответствии с одной или более методиками из данного раскрытия изобретения. Кроме того, показанные выше изменения в разделе 7.4.5.1 Рабочего варианта 8 HEVC изменяют семантику синтаксического элемента delta_poc_msb_cycle_lt в соответствии с одной или более методиками из данного раскрытия изобретения. К тому же условие "исключая те изображения, которые сигнализируются в качестве краткосрочного эталонного изображения для текущего изображения" в семантике для синтаксического элемента delta_poc_msb_cycle_lt_plus1 может быть частью реализации методик из данного раскрытия изобретения для ограничения видеокодера 20 в сигнализации MSB у LTRP, когда в DPB имеется n (где n>1) эталонных изображений с одинаковыми LSB, и n–1 из тех эталонных изображений сигнализируются в качестве STRP, а n-ое изображение сигнализируется в качестве LTRP. Кроме того, условие "для i и j в диапазоне от 0 до num_long_term_sps + num_long_term_pics – 1 включительно, если i не равно j, а PocLsbLt[i] равна PocLsbLt[j], то DeltaPocMSBCycleLt[i] не должна быть равна DeltaPocMSBCycleLt[j]" может быть частью реализации методик из данного раскрытия изобретения, которые предписывают, что каждое LTRP, сигнализированное в заголовке секции, обязано ссылаться на отдельное эталонное изображение среди всех LTRP, сигнализированных в заголовке секции.
[0142] В альтернативных примерах семантика заголовка секции может быть такой же, как показана в примере выше, за исключением того, что условие "для i и j в диапазоне от 0 до num_long_term_sps + num_long_term_pics – 1 включительно, если i не равно j, а PocLsbLt[i] равна PocLsbLt[j], то DeltaPocMSBCycleLt[i] не должна быть равна DeltaPocMSBCycleLt[j]" исключается из семантики синтаксического элемента delta_poc_msb_cycle_lt_plus1[i].
[0143] В разделе 8.3.2 Рабочего варианта 8 HEVC процесс декодирования для набора эталонных изображений можно изменить следующим образом:
…Строится пять списков значений счетчика последовательности изображений для выведения набора эталонных изображений; PocStCurrBefore, PocStCurrAfter, PocStFoll, PocLtCurr и PocLtFoll с количеством элементов NumPocStCurrBefore, NumPocStCurrAfter, NumPocStFoll, NumPocLtCurr и NumPocLtFoll соответственно.[0144] – Если текущее изображение является IDR-изображением, то PocStCurrBefore, PocStCurrAfter, PocStFoll, PocLtCurr и PocLtFoll все устанавливаются пустыми, а NumPocStCurrBefore, NumPocStCurrAfter, NumPocStFoll, NumPocLtCurr и NumPocLtFoll все устанавливаются в 0.[0145] – В противном случае для выведения пяти списков значений счетчика последовательности изображений и количеств записей применяется следующее.– for(i=0, j=0, k=0; i<NumNegativePics[StRpsIdx]; i++)if(UsedByCurrPicS0[StRpsIdx][i])PocStCurrBefore[j++] = PicOrderCntVal + DeltaPocS0[StRpsIdx][i]elsePocStFoll[k++] = PicOrderCntVal + DeltaPocS0[StRpsIdx][i]NumPocStCurrBefore = jfor(i=0, j=0; i<NumPositivePics[StRpsIdx]; i++)if( UsedByCurrPicS1[StRpsIdx][i])PocStCurrAfter[j++] = PicOrderCntVal + DeltaPocS1[StRpsIdx][i]elsePocStFoll[k++] = PicOrderCntVal + DeltaPocS1[StRpsIdx][i]NumPocStCurrAfter = jNumPocStFoll = k(8-5)for(i=0, j=0, k=0; i<num_long_term_sps + num_long_term_pics;i++) {pocLt = PocLsbLt[i]
if(delta_poc_msb_[[present_flag]]cycle_lt_plus1[i]>0)
(А)
pocLt += PicOrderCntVal − DeltaPocMSBCycleLt[i]* MaxPicOrderCntLsb − pic_order_cnt_lsbif( UsedByCurrPicLt[i]) {PocLtCurr[j] = pocLtCurrDeltaPocMsbPresentFlag[j++]=(delta_poc_msb_[[present_flag]]cycle_lt_plus1[i]>0)} else {PocLtFoll[ k ] = pocLtFollDeltaPocMsbPresentFlag[k++] =(delta_poc_msb_[[present_flag]]cycle_lt_plus1[i]>0)}}NumPocLtCurr = jNumPocLtFoll = k– где PicOrderCntVal является счетчиком последовательности изображений у текущего изображения, как задано в подпункте 8.3.1.– ПРИМЕЧАНИЕ 2 – Значение StRpsIdx в диапазоне от 0 до num_short_term_ref_pic_sets - 1 включительно указывает, что используется набор краткосрочных эталонных изображений из активного набора параметров последовательности, где StRpsIdx является индексом набора краткосрочных эталонных изображений к списку наборов краткосрочных эталонных изображений в порядке, в котором они сигнализируются в наборе параметров последовательности. StRpsIdx, равный num_short_term_ref_pic_sets, указывает, что используется набор краткосрочных эталонных изображений, явно сигнализированный в заголовке секции.
[[Для каждого i в диапазоне от 0 до NumPocLtCurr - 1 включительно, когда
(В)
CurrDeltaPocMsbPresentFlag[i] равен 1, требованием соответствия потока двоичных сигналов является то, что применяются следующие условия:]]– [[Не должно быть j в диапазоне от 0 до NumPocStCurrBefore - 1 включительно, для которого PocLtCurr[ i ] равен PocStCurrBefore[j].– Не должно быть j в диапазоне от 0 до NumPocStCurrAfter - 1 включительно, для которого PocLtCurr[i] равен PocStCurrAfter[j].– Не должно быть j в диапазоне от 0 до NumPocStFoll - 1 включительно, для которого PocLtCurr[i] равен PocStFoll[j].Для каждого i в диапазоне от 0 до NumPocLtFoll - 1 включительно, когда FollDeltaPocMsbPresentFlag[i] равен 1, требованием соответствия потока двоичных сигналов является то, что применяются следующие условия:– Не должно быть j в диапазоне от 0 до NumPocStCurrBefore - 1 включительно, для которого PocLtFoll[i] равен PocStCurrBefore[j].– Не должно быть j в диапазоне от 0 до NumPocStCurrAfter - 1 включительно, для которого PocLtFoll[i] равен PocStCurrAfter[j].– Не должно быть j в диапазоне от 0 до NumPocStFoll - 1 включительно, для которого PocLtFoll[i] равен PocStFoll[j].Для каждого i в диапазоне от 0 до NumPocLtCurr - 1 включительно, когда CurrDeltaPocMsbPresentFlag[i] равен 0, требованием соответствия потока двоичных сигналов является то, что применяются следующие условия:– [[Не должно быть j в диапазоне от 0 до NumPocStCurrBefore - 1 включительно, для которого PocLtCurr[i] равен (PocStCurrBefore[j] & (MaxPicOrderCntLsb - 1)).– Не должно быть j в диапазоне от 0 до NumPocStCurrAfter - 1 включительно, для которого PocLtCurr[i] равен (PocStCurrAfter[j] & (MaxPicOrderCntLsb - 1)).– Не должно быть j в диапазоне от 0 до NumPocStFoll - 1 включительно, для которого PocLtCurr[i] равен (PocStFoll[j] & (MaxPicOrderCntLsb - 1)).Для каждого i в диапазоне от 0 до NumPocLtFoll - 1 включительно, когда FollDeltaPocMsbPresentFlag[i] равен 0, требованием соответствия потока двоичных сигналов является то, что применяются следующие условия:]]– [[Не должно быть j в диапазоне от 0 до NumPocStCurrBefore - 1 включительно, для которого PocLtFoll[i] равен (PocStCurrBefore[j] & (MaxPicOrderCntLsb - 1)).– Не должно быть j в диапазоне от 0 до NumPocStCurrAfter - 1 включительно, для которого PocLtFoll[i] равен (PocStCurrAfter[j] & (MaxPicOrderCntLsb - 1)).– Не должно быть j в диапазоне от 0 до NumPocStFoll - 1 включительно, для которого PocLtFoll[i] равен (PocStFoll[j] & (MaxPicOrderCntLsb - 1))]].Набор эталонных изображений состоит из пяти списков записей эталонных изображений; RefPicSetStCurrBefore, RefPicSetStCurrAfter, RefPicSetStFoll, RefPicSetLtCurr и RefPicSetLtFoll. Переменная NumPocTotalCurr устанавливается равной NumPocStCurrBefore + NumPocStCurrAfter + NumPocLtCurr.Требованием соответствия потока двоичных сигналов является то, что к значению NumPocTotalCurr применяется следующее:– Если текущее изображение является BLA- или CRA-изображением, то значение NumPocTotalCurr должно быть равно 0.– В противном случае, когда текущее изображение содержит P- или B-секцию, значение NumPocTotalCurr не должно быть равно 0.– ПРИМЕЧАНИЕ 3 – RefPicSetStCurrBefore, RefPicSetStCurrAfter и RefPicSetLtCurr содержат все эталонные изображения, которые могут использоваться при внешнем предсказании текущего изображения и которые могут использоваться при внешнем предсказании одного или более изображений после текущего изображения в порядке декодирования. RefPicSetStFoll и RefPicSetLtFoll состоят из всех эталонных изображений, которые не используются при внешнем предсказании текущего изображения, но могут использоваться при внешнем предсказании одного или более изображений после текущего изображения в порядке декодирования.Процесс выведения для набора эталонных изображений и пометка изображений выполняются в соответствии со следующими упорядоченными этапами, где DPB относится к буферу декодированных изображений, который описан в Приложении C:1. Применяется следующее:– for(i=0; i< NumPocLtCurr; i++)if(!CurrDeltaPocMsbPresentFlag[i])if( в DPB имеется [[долгосрочное]] эталонное изображение picX [[[Ред. (JB): Следует уточнить. (GJS): Навскидку выглядит правильно.]]]с pic_order_cnt_lsb, равным PocLtCurr[i]
и с PicOrderCntVal ни в одном из PocStCurrBefore[ ], PocStCurrAfter[ ] и PocStFoll[])
(С)
RefPicSetLtCurr[i] = picX[[else if(в DPB имеется краткосрочное эталонное изображение picYс pic_order_cnt_lsb, равным PocLtCurr[i])RefPicSetLtCurr[i] = picY]]elseRefPicSetLtCurr[i] = "нет эталонного изображения"elseif(в DPB имеется [[долгосрочное]] эталонное изображение picXс PicOrderCntVal, равным PocLtCurr[i])RefPicSetLtCurr[i] = picX[[else if(в DPB имеется краткосрочное эталонное изображение picYс PicOrderCntVal, равным PocLtCurr[i])RefPicSetLtCurr[i] = picY]]elseRefPicSetLtCurr[i] = "нет эталонного изображения"for(i=0; i<NumPocLtFoll; i++)if(!FollDeltaPocMsbPresentFlag[i])if(в DPB имеется [[долгосрочное]] эталонное изображение picXс pic_order_cnt_lsb, равным PocLtFoll[i]и с PicOrderCntVal ни в одном из PocStCurrBefore[ ], PocStCurrAfter[ ] и PocStFoll[ ])RefPicSetLtFoll[i] = picX[[else if(в DPB имеется краткосрочное эталонное изображение picYс pic_order_cnt_lsb, равным PocLtFoll[i])RefPicSetLtFoll[ i ] = picY]]elseRefPicSetLtFoll[i] = "нет эталонного изображения"elseif(в DPB имеется [[долгосрочное]] эталонное изображение picX с PicOrderCntVal, равным PocLtFoll[i])RefPicSetLtFoll[i] = picX[[else if(в DPB имеется краткосрочное эталонное изображение picYс PicOrderCntVal, равным PocLtFoll[i])RefPicSetLtFoll[i] = picY]]elseRefPicSetLtFoll[ i ] = "нет эталонного изображения"2. Все эталонные изображения, включенные в RefPicSetLtCurr и RefPicSetLtFoll, помечаются как "используемые для долгосрочного эталона", и применяются следующие ограничения.
Для каждого i в диапазоне от 0 до NumPocLtCurr – 1 включительно требованием соответствия потока двоичных сигналов является то, что применяются следующие условия:
(D)
o Не должно быть j в диапазоне от 0 до NumPocStCurrBefore - 1 включительно, для которого PicOrderCntVal у RefPicSetLtCurr[i] равен PocStCurrBefore[j].o Не должно быть j в диапазоне от 0 до NumPocStCurrAfter - 1 включительно, для которого PicOrderCntVal у RefPicSetLtCurr[i] равен PocStCurrAfter[j].o Не должно быть j в диапазоне от 0 до NumPocStFoll - 1 включительно, для которого PicOrderCntVal у RefPicSetLtCurr[i] равен PocStFoll[j].Для каждого i в диапазоне от 0 до NumPocLtFoll - 1 включительно, когда RefPicSetLtFoll[i] не равно "нет эталонного изображения", требованием соответствия потока двоичных сигналов является то, что применяются следующие условия:o Не должно быть j в диапазоне от 0 до NumPocStCurrBefore - 1 включительно, для которого PicOrderCntVal у RefPicSetLtFoll[i] равен PocStCurrBefore[j].o Не должно быть j в диапазоне от 0 до NumPocStCurrAfter - 1 включительно, для которого PicOrderCntVal у RefPicSetLtFoll[i] равен PocStCurrAfter[j].o Не должно быть j в диапазоне от 0 до NumPocStFoll - 1 включительно, для которого PicOrderCntVal у RefPicSetLtFoll[i] равен PocStFoll[j].3. Применяется следующее:– for(i=0; i< NumPocStCurrBefore; i++)if(в DPB имеется краткосрочное эталонное изображение picXс PicOrderCntVal, равным PocStCurrBefore[i])RefPicSetStCurrBefore[i] = picXelseRefPicSetStCurrBefore[i] = "нет эталонного изображения"– for(i=0; i<NumPocStCurrAfter; i++)if(в DPB имеется краткосрочное эталонное изображение picXс PicOrderCntVal, равным PocStCurrAfter[i])RefPicSetStCurrAfter[i] = picXelseRefPicSetStCurrAfter[i] = "нет эталонного изображения" (8-7)– for(i=0; i< NumPocStFoll; i++)if( в DPB имеется краткосрочное эталонное изображение picXс PicOrderCntVal, равным PocStFoll[i])RefPicSetStFoll[i] = picXelseRefPicSetStFoll[i] = "нет эталонного изображения"4. Все эталонные изображения в буфере декодированных изображений, которые не включаются в RefPicSetLtCurr, RefPicSetLtFoll, RefPicSetStCurrBefore, RefPicSetStCurrAfter или RefPicSetStFoll, помечаются как "неиспользуемые для эталона".– ПРИМЕЧАНИЕ 4 – Может существовать одна или более [[эталонных изображений, которые включаются]] записей в наборе эталонных изображений, [[но]] равных "нет эталонного изображения", потому что соответствующие изображения отсутствуют в буфере декодированных изображений. Следует игнорировать записи в RefPicSetStFoll или RefPicSetLtFoll, которые равны "нет эталонного изображения". Для каждой записи в RefPicSetStCurrBefore, RefPicSetStCurrAfter [[и]] или RefPicSetLtCurr, которая равна "нет эталонного изображения", должна подразумеваться непреднамеренная потеря изображения.Требованием соответствия потока двоичных сигналов является то, что набор эталонных изображений ограничивается следующим образом:– Не должно быть записи в RefPicSetStCurrBefore, RefPicSetStCurrAfter или RefPicSetLtCurr, для которой справедливо одно или более из следующего.– Запись равна "нет эталонного изображения".– Запись является изображением, которое имеет nal_unit_type, равный TRAIL_N, TSA_N или STSA_N, и TemporalId, равный таковому у текущего изображения.– Запись является изображением, которое имеет TemporalId больше такового у текущего изображения.– Когда текущее изображение является TSA-изображением, не должно быть изображения, включенного в набор эталонных изображений, с TemporalId, равным либо больше такового [[TemporalId]] у текущего изображения.– Когда текущее изображение является STSA-изображением, не должно быть изображения, включенного в RefPicSetStCurrBefore, RefPicSetStCurrAfter или RefPicSetLtCurr, которое имеет TemporalId, равный таковому у текущего изображения.– Когда текущее изображение является изображением, которое в порядке декодирования идет после STSA-изображения, которое имеет TemporalId, равный таковому у текущего изображения, не должно быть изображения, которое имеет TemporalId, равный таковому у текущего изображения, включенного в RefPicSetStCurrBefore, RefPicSetStCurrAfter или RefPicSetLtCurr, которое [[предшествовало]] предшествует STSA-изображению в порядке декодирования.– Когда текущее изображение является CRA-изображением, не должно быть изображения, включенного в набор эталонных изображений, которое в порядке декодирования предшествует любому предыдущему RAP-изображению в порядке декодирования (когда имеется).– Когда текущее изображение является замыкающим изображением, не должно быть изображения в RefPicSetStCurrBefore, RefPicSetStCurrAfter или RefPicSetLtCurr, которое формировалось с помощью процесса декодирования для формирования недоступных эталонных изображений, как задано в подпункте 8.3.3.– Когда текущее изображение является замыкающим изображением, не должно быть изображения в наборе эталонных изображений, которое предшествует ассоциированному RAP-изображению в порядке вывода или в порядке декодирования.– Когда текущее изображение является DLP-изображением, не должно быть изображения, включенного в RefPicSetStCurrBefore, RefPicSetStCurrAfter или RefPicSetLtCurr, которое является любым из следующих типов изображений.– TFD-изображение.– Изображение, которое формировалось с помощью процесса декодирования для формирования недоступных эталонных изображений, как задано в подпункте 8.3.3.– Изображение, которое предшествует ассоциированному RAP-изображению в порядке декодирования.– Когда sps_temporal_id_nesting_flag равен 1, применяется следующее. Пусть tIdA будет значением TemporalId у текущего изображения picA. Любое изображение picB с TemporalId, равным tIdB, которое меньше либо равно tIdA, не должно включаться в RefPicSetStCurrBefore, RefPicSetStCurrAfter или RefPicSetLtCurr у picA, когда существует изображение picC с TemporalId, равным tIdC, которое меньше tIdB, которое идет после изображения picB в порядке декодирования и предшествует изображению picA в порядке декодирования.– ПРИМЕЧАНИЕ 5 – Изображение нельзя включать более чем в один из пяти списков наборов эталонных изображений.
– Для любых двух разных значений idxA и idxB в диапазоне от 0 до num_short_term_ref_pic_sets включительно должно быть справедливо одно или более из следующего.
(E)
– NumNegativePics[idxA] не равно NumNegativePics[idxB].– NumPositivePics[idxA] не равно NumPositivePics[idxB].– Когда NumNegativePics[idxA] и NumPositivePics[idxA] равны NumNegativePics[idxB] и NumPositivePics[idxB] соответственно, существует либо i в диапазоне от 0 до NumNegativePics[idxB] – 1 включительно, для которого UsedByCurrPicS0[idxA][i] не равно UsedByCurrPicS0[ idxB][i] или DeltaPocS0[idxA][i] не равно DeltaPocS0[ idxB ][i], либо существует j в диапазоне от 0 до NumPositivePics[idxB] - 1 включительно, для которого UsedByCurrPicS1[idxA][j] не равно UsedByCurrPicS1[idxB][j] или DeltaPocS1[idxA][j] не равно DeltaPocS1[idxB][j], либо оба таких i и j.ПРИМЕЧАНИЕ – Никакие два варианта набора краткосрочных эталонных изображений, сигнализированные в наборе параметров последовательности, не могут быть идентичными, и шаблон набора краткосрочных эталонных изображений нельзя явно сигнализировать в заголовке секции, если идентичный вариант присутствует в списке вариантов в наборе параметров последовательности.В качестве альтернативы в процесс выведения набора эталонных изображений добавляется следующее условие.
– Для каждого i в диапазоне от 0 до NumPocLtFoll – 1 включительно, когда RefPicSetLtFoll[i] не равно "нет эталонного изображения", требованием соответствия потока двоичных сигналов является то, что не должно быть j в диапазоне от 0 до NumPocLtCurr – 1 включительно, для которого PicOrderCntVal у RefPicSetLtFoll[i] равен PicOrderCntVal у RefPicSetLtCurr[j]
(F)
[0144] Изменение, обозначенное (A) в разделе 8.3.2 Рабочего варианта 8 HEVC, может быть частью реализации методик из данного раскрытия изобретения для удаления синтаксического элемента delta_poc_msb_present_flag[i] и изменения синтаксического элемента delta_poc_msb_cycle_lt[i] для охвата всех возможных случаев (то есть случая, где сигнализируются MSB значения POC, и случая, где MSB значения POC не сигнализируются). Изменения, обозначенные (B), (C), (D) и (F), могут быть частью реализации методик из данного раскрытия изобретения для ограничения видеокодера 20 в сигнализации MSB у LTRP, когда в DPB имеется n (где n>1) эталонных изображений с одинаковыми LSB, и n–1 из тех эталонных изображений сигнализируются в качестве STRP, а n-ое изображение сигнализируется в качестве LTRP.
[0145] Изменение, обозначенное (E) выше, может быть частью реализации методик из данного раскрытия изобретения для ограничения видеокодера 20 так, что никакие два варианта STRP, которые сигнализируются в SPS, не являются идентичными, и шаблон STRPS не должен явно сигнализироваться в заголовке секции, если идентичный шаблон сигнализируется среди вариантов краткосрочных RPS в SPS.
[0146] В некоторых примерах элемент 2 в показанном выше процессе декодирования для набора эталонных изображений можно заменить следующим:
2. Все эталонные изображения, включенные в RefPicSetLtCurr и RefPicSetLtFoll, помечаются как "используемые для долгосрочного эталона", и применяются следующие ограничения.
Для каждого i в диапазоне от 0 до NumPocLtCurr – 1 включительно требованием соответствия потока двоичных сигналов является то, что применяются следующие условия:
o Не должно быть j в диапазоне от 0 до NumPocStCurrBefore - 1 включительно, для которого PicOrderCntVal у RefPicSetLtCurr[i] равен PocStCurrBefore[j].
o Не должно быть j в диапазоне от 0 до NumPocStCurrAfter - 1 включительно, для которого PicOrderCntVal у RefPicSetLtCurr[i] равен PocStCurrAfter[j].
o Не должно быть j в диапазоне от 0 до NumPocStFoll - 1 включительно, для которого PicOrderCntVal у RefPicSetLtCurr[i] равен PocStFoll[j].
o Не должно быть j в диапазоне от 0 до NumPocLtCurr – 1 включительно, где j не равно i, для которого PicOrderCntVal у RefPicSetLtCurr[i] равен PicOrderCntVal у RefPicSetLtCurr[j].
Для каждого i в диапазоне от 0 до NumPocLtFoll - 1 включительно, когда RefPicSetLtFoll[i] не равно "нет эталонного изображения", требованием соответствия потока двоичных сигналов является то, что применяются следующие условия:
o Не должно быть j в диапазоне от 0 до NumPocStCurrBefore - 1 включительно, для которого PicOrderCntVal у RefPicSetLtFoll[i] равен PocStCurrBefore[j].
o Не должно быть j в диапазоне от 0 до NumPocStCurrAfter - 1 включительно, для которого PicOrderCntVal у RefPicSetLtFoll[i] равен PocStCurrAfter[j].
o Не должно быть j в диапазоне от 0 до NumPocStFoll - 1 включительно, для которого PicOrderCntVal у RefPicSetLtFoll[i] равен PocStFoll[].
o Не должно быть j в диапазоне от 0 до NumPocLtCurr – 1 включительно, для которого PicOrderCntVal у RefPicSetLtFoll[i] равен PicOrderCntVal у RefPicSetLtCurr[j].
o Не должно быть j в диапазоне от 0 до NumPocLtFoll – 1 включительно, где j не равно i и RefPicSetLtFoll[j] не равно "нет эталонного изображения", для которого PicOrderCntVal у RefPicSetLtFoll[i] равен PicOrderCntVal у RefPicSetLtFoll[j].
[0147] Условия, показанные выше полужирным курсивом, являются условиями, которых нет в показанном выше примерном процессе декодирования для наборов эталонных изображений. Условия, показанные выше полужирным курсивом, могут предписывать, что каждое LTRP, которое сигнализируется в заголовке секции (явно или в виде индекса), обязано ссылаться на отдельное эталонное изображение среди всех LTRP, которые сигнализируются в заголовке секции (явно или в виде индекса).
[0148] В альтернативном примере условие "Для каждого i в диапазоне от 0 до NumPocLtFoll – 1 включительно, когда RefPicSetLtFoll[ i ] не равно "нет эталонного изображения", требованием соответствия потока двоичных сигналов является то, что не должно быть j в диапазоне от 0 до NumPocLtCurr – 1 включительно, для которого PicOrderCntVal у RefPicSetLtFoll[i] равен PicOrderCntVal у RefPicSetLtCurr[ j ]" можно исключить из примера выше и заменить следующим:
В качестве альтернативы при выведении DeltaPocMSBCycleLt[i] в уравнении 7-33 "delta_poc_msb_cycle_lt_plus1[i] – 1" заменяется "Max(0, delta_poc_msb_cycle_lt_plus1[i]–1)". Результирующее выведение DeltaPocMSBCycleLt[i] приводится ниже.
Переменная DeltaPocMSBCycleLt[i] выводится следующим образом.
if(i= =0| | i= = num_long_term_sps | | PocLsbLt[i−1] ! =PocLsbLt[i])
DeltaPocMSBCycleLt[i] = Max(0, delta_poc_msb_cycle_lt_plus1[i]–1)
else (7-33)
DeltaPocMSBCycleLt[i] = Max(0, delta_poc_msb_cycle_lt_plus1[i]–1)+DeltaPocMSBCycleLt[i−1]
Примерный способ определения DeltaPocMSBCycleLt[i] может быть частью реализации удаления синтаксического элемента delta_poc_msb_present_flag[i] и изменения синтаксического элемента delta_poc_msb_cycle_lt[i] для охвата всех возможных случаев (то есть случая, где сигнализируются MSB значения POC, и случая, где MSB значения POC не сигнализируются).
[0149] В одном или более примерах описываемые функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любом их сочетании. Если они реализованы в программном обеспечении, то функции могут храниться или передаваться в виде одной или более команд либо кода на машиночитаемом носителе и исполняться аппаратным модулем обработки. Машиночитаемые носители могут включать в себя машиночитаемые носители информации, которые соответствуют материальному носителю, такому как носители информации, или средства связи, включающие в себя любой носитель, который облегчает перенос компьютерной программы из одного места в другое, например, в соответствии с неким протоколом связи. Таким образом, машиночитаемые носители в целом могут соответствовать (1) материальным машиночитаемым носителям информации, которые являются долговременными, или (2) средству связи, такому как сигнал или несущая. Носители информации могут быть любыми доступными носителями, к которым можно обращаться с помощью одного или более компьютеров либо одного или более процессоров для извлечения команд, кода и/или структур данных для реализации методик, описанных в данном раскрытии изобретения. Компьютерный программный продукт может включать в себя машиночитаемый носитель.
[0150] В качестве примера, а не ограничения, такие машиночитаемые носители информации могут быть выполнены в виде RAM, ROM, EEPROM, компакт-диска или другого накопителя на оптических дисках, накопителя на магнитных дисках или других магнитных запоминающих устройств, флэш-памяти или любого другого носителя, который может использоваться для хранения нужного программного кода в виде команд или структур данных и к которому [носителю] можно обращаться с помощью компьютера. Также любое соединение корректно называть машиночитаемым носителем. Например, если команды передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, например ИК-связи, радиочастотной связи и СВЧ-связи, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, например ИК-связь, радиочастотная связь и СВЧ-связь, включаются в определение носителя. Однако следует понимать, что машиночитаемые носители информации и носители информации не включают в себя соединения, несущие, сигналы или другие кратковременные носители, а вместо этого ориентированы на долговременные, материальные носители информации. Диски при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий диск и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитным способом, тогда как диски (discs) воспроизводят данные оптически с помощью лазеров. Сочетания вышеперечисленного также следует включить в область машиночитаемых носителей.
[0151] Команды могут исполняться одним или более процессорами, например одним или более цифровыми процессорами сигналов (DSP), универсальными микропроцессорами, специализированными интегральными схемами (ASIC), программируемыми пользователем логическими матрицами (FPGA) или другими эквивалентными интегральными либо дискретными логическими схемами. Соответственно, термин "процессор" при использовании в данном документе может относиться к любой вышеупомянутой структуре или к любой другой структуре, подходящей для реализации описанных в этом документе методик. К тому же в некоторых особенностях функциональные возможности, описанные в этом документе, могут быть предоставлены в специализированных аппаратных и/или программных модулях, сконфигурированных для кодирования и декодирования, или встроены в объединенный кодек. Также методики можно было бы полностью реализовать в одной или более схемах или логических элементах.
[0152] Методики из данного раскрытия изобретения могут быть реализованы в широком спектре устройств, включая беспроводную телефонную трубку, интегральную схему (ИС) или набор ИС (например, набор микросхем). Различные компоненты, модули или блоки описываются в данном раскрытии изобретения для подчеркивания функциональных особенностей устройств, сконфигурированных для выполнения раскрытых методик, но не обязательно требуют реализации с помощью разных аппаратных модулей. Точнее, как описано выше, различные модули могут объединяться в аппаратный модуль кодека или предоставляться с помощью совокупности взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с подходящим программным обеспечением и/или микропрограммным обеспечением.
[0153] Описаны различные примеры. Эти и другие примеры входят в объем нижеследующей формулы изобретения.