СИГНАЛИЗАЦИЯ ДОЛГОСРОЧНЫХ ОПОРНЫХ ИЗОБРАЖЕНИЙ ДЛЯ КОДИРОВАНИЯ ВИДЕО
ALARM OF LONG-TERM REFERENCE PICTURES FOR VIDEO CODING

[0001] Данная заявка испрашивает приоритет по предварительной патентной заявке США № 61/665784, поданной 28 июня 2012 г., содержание которой, таким образом, целиком включено в данный документ посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ
[0002] Настоящее изобретение относится к кодированию видеосигнала.
УРОВЕНЬ ТЕХНИКИ
[0003] Возможности обработки цифрового видеосигнала могут быть включены в самые разнообразные устройства, включающие в себя цифровые телевизоры, системы прямого цифрового вещания, беспроводные широковещательные системы, карманные персональные компьютеры (КПК), портативные или настольные компьютеры, планшетные компьютеры, устройства чтения электронных книг, цифровые камеры, цифровые устройства записи, цифровые медиапроигрыватели, устройства для видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны, так называемые “смартфоны”, устройства видеоконференцсвязи, устройства потоковой передачи видеосигнала и пр. Устройства обработки цифрового видеосигнала реализуют методы кодирования видеосигнала, например, описанные в стандартах, заданных в MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), стандарте High Efficiency Video Coding (HEVC) в настоящее время находящемся в разработке, и расширениях таких стандартов. Недавний проект перспективного стандарта HEVC, именуемый “HEVC Working Draft 7” или “WD7,” описан в документе JCTVC-I1003, Bross et al., “High efficiency video coding (HEVC) text specification draft 7,” Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 9th Meeting: San Jose, California, USA, 27 April to 7 May, 2012, который, с 13 мая 2013 г., можно загрузить по ссылке http://phenix.int-evry.fr/jct/doc_end_user/documents/8_San%20Jose/wg11/JCTVC-H1003-v22.zip. Устройства кодирования видеосигнала могут передавать, принимать, кодировать, декодировать и/или сохранять цифровую видеоинформацию более эффективно за счет реализации таких методов кодирования видеосигнала.
[0004] Методы кодирования видеосигнала включают в себя пространственное прогнозирование (внутри изображения) и/или временное прогнозирование (между изображениями) для снижения или устранения избыточности, присущей видеопоследовательностям. Для кодирования видеосигнала на основе блоков, слайс видео (например, кадр видео или часть кадра видео) можно разбивать на видеоблоки, которые также могут именоваться древовидными блоками, единицами кодирования (CU) и/или узлами кодирования. Видеоблоки в кодированном с интра-предсказанием (I) слайсе изображения кодируются с использованием пространственного прогнозирования в отношении опорных выборок в соседних блоках одного и того же изображения. Видеоблоки в кодированном с интер-предсказанием (P или B) слайсе изображения могут использовать пространственное прогнозирование в отношении опорных выборок в соседних блоках одного и того же изображения или временное прогнозирование в отношении опорных выборок в других опорных изображениях. Изображения могут именоваться кадрами, и опорные изображения могут относиться к опорным кадрам.
[0005] Пространственное или временное прогнозирование дает прогностический блок для блока, подлежащего кодированию. Остаточные данные представляют пиксельные разности между первоначальным блоком, подлежащим кодированию, и прогностическим блоком. Кодированный с интер-предсказанием блок кодируется согласно вектору движения, который указывает на блок опорных выборок, образующий прогностический блок, и остаточным данным, указывающим разность между кодированным блоком и прогностическим блоком. Кодированный с интра-предсказанием блок кодируется согласно режиму кодирования с интра-предсказанием и остаточным данным. Для дополнительного сжатия, остаточные данные можно преобразовывать из пиксельной области в преобразовательную область, полученную в остаточных коэффициентах преобразования, которые затем можно квантовать. Квантованные коэффициенты преобразования, первоначально размещенный в двухмерном массиве, можно сканировать для создания одномерного вектора коэффициентов преобразования, и для достижения еще большего сжатия можно применять энтропийное кодирование.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] В целом, в настоящем раскрытии описаны методы сигнализации долгосрочных опорных изображений для кодирования видеосигнала. Опорное изображение, в общем случае, соответствует изображению, которое можно использовать в качестве опорного для кодирования с временным прогнозированием данных других изображений. В целом, долгосрочные опорные изображения сохраняются в буфере декодированных изображений дольше, чем другие опорные изображения, например, краткосрочные опорные изображения. В настоящем раскрытии описаны различные методы, связанные с сигнализацией, относящейся к долгосрочным опорным изображениям, например, с сигнализацией долгосрочных опорных изображений в заголовках слайсов для слайсов изображений. Методы настоящего раскрытия могут обеспечивать усовершенствование способов сигнализации долгосрочных опорных изображений в заголовке слайса, например, в отношении эффективности и/или применимости.
[0007] В одном примере, способ включает в себя декодирование первого значения, представляющего разность между значением базовых старших битов (MSB) значения счетчика порядка изображений (POC) текущего изображения видеоданных и значением первых MSB первого значения POC первого долгосрочного опорного изображения видеоданных, декодирование второго значения, представляющего разность между значением вторых MSB второго значения POC второго долгосрочного опорного изображения видеоданных и значением первых MSB, причем первое значение POC и второе значение POC имеют разные значения младших битов (LSB), и декодирование по меньшей мере части текущего изображения видеоданных относительно по меньшей мере одного из первого долгосрочного опорного изображения с использованием первого значения и второго долгосрочного опорного изображения с использованием первого значения и второго значения.
[0008] В другом примере, устройство для декодирования видеоданных включает в себя видеодекодер, выполненный с возможностью декодирования первого значения, представляющего разность между значением базовых старших битов (MSB) значения счетчика порядка изображений (POC) текущего изображения видеоданных и значением первых MSB первого значения POC первого долгосрочного опорного изображения видеоданных, декодирования второго значения, представляющего разность между значением вторых MSB второго значения POC второго долгосрочного опорного изображения видеоданных и значением первых MSB, причем первое значение POC и второе значение POC имеют разные значения младших битов (LSB), и декодирования по меньшей мере части текущего изображения видеоданных относительно по меньшей мере одного из первого долгосрочного опорного изображения с использованием первого значения и второго долгосрочного опорного изображения с использованием первого значения и второго значения.
[0009] В другом примере, устройство включает в себя средство для декодирования первого значения, представляющего разность между значением базовых старших битов (MSB) значения счетчика порядка изображений (POC) текущего изображения видеоданных и значением первых MSB первого значения POC первого долгосрочного опорного изображения видеоданных, средство для декодирования второго значения, представляющего разность между значением вторых MSB второго значения POC второго долгосрочного опорного изображения видеоданных и значением первых MSB, причем первое значение POC и второе значение POC имеют разные значения младших битов (LSB), и средство для декодирования по меньшей мере части текущего изображения видеоданных относительно по меньшей мере одного из первого долгосрочного опорного изображения с использованием первого значения и второго долгосрочного опорного изображения с использованием первого значения и второго значения.
[0010] В другом примере, на компьютерно-читаемом носителе данных хранятся инструкции, которые, при выполнении, предписывают процессору декодировать первое значение, представляющее разность между значением базовых старших битов (MSB) значения счетчика порядка изображений (POC) текущего изображения видеоданных и значением первых MSB первого значения POC первого долгосрочного опорного изображения видеоданных, декодировать второе значение, представляющее разность между значением вторых MSB второго значения POC второго долгосрочного опорного изображения видеоданных и значением первых MSB, причем первое значение POC и второе значение POC имеют разные значения младших битов (LSB), и декодировать по меньшей мере часть текущего изображения видеоданных относительно по меньшей мере одного из первого долгосрочного опорного изображения с использованием первого значения и второго долгосрочного опорного изображения с использованием первого значения и второго значения.
[0011] В другом примере, способ кодирования видеоданных включает в себя кодирование по меньшей мере первой части текущего изображения видеоданных относительно первого долгосрочного опорного изображения и по меньшей мере вторая часть текущего изображения во второе долгосрочное опорное изображение, кодирование первого значения, представляющего разность между значением базовых старших битов (MSB) значения счетчика порядка изображений (POC) текущего изображения видеоданных и значением первых MSB первого значения POC первого долгосрочного опорного изображения видеоданных, и кодирование второго значения, представляющего разность между значением вторых MSB второго значения POC второго долгосрочного опорного изображения видеоданных и значением первых MSB, причем первое значение POC и второе значение POC имеют разные значения младших битов (LSB).
[0012] В другом примере, устройство для кодирования видеоданных включает в себя видеокодер, выполненный с возможностью кодирования по меньшей мере первой части текущего изображения видеоданных относительно первого долгосрочного опорного изображения и по меньшей мере второй части текущего изображения во второе долгосрочное опорное изображение, кодирования первого значения, представляющего разность между значением базовых старших битов (MSB) значения счетчика порядка изображений (POC) текущего изображения видеоданных и значением первых MSB первого значения POC первого долгосрочного опорного изображения видеоданных, и кодирования второго значения, представляющего разность между значением вторых MSB второго значения POC второго долгосрочного опорного изображения видеоданных и значением первых MSB, причем первое значение POC и второе значение POC имеют разные значения младших битов (LSB).
[0013] В другом примере, устройство для кодирования видеоданных включает в себя средство для кодирования по меньшей мере первой части текущего изображения видеоданных относительно первого долгосрочного опорного изображения и по меньшей мере второй части текущего изображения во второе долгосрочное опорное изображение, средство для кодирования первого значения, представляющего разность между значением базовых старших битов (MSB) значения счетчика порядка изображений (POC) текущего изображения видеоданных и значением первых MSB первого значения POC первого долгосрочного опорного изображения видеоданных, и средство для кодирования второго значения, представляющего разность между значением вторых MSB второго значения POC второго долгосрочного опорного изображения видеоданных и значением первых MSB, причем первое значение POC и второе значение POC имеют разные значения младших битов (LSB).
[0014] В другом примере, на компьютерно-читаемом носителе данных хранятся инструкции, которые предписывают процессору кодировать по меньшей мере первую часть текущего изображения видеоданных относительно первого долгосрочного опорного изображения и по меньшей мере вторую часть текущего изображения во второе долгосрочное опорное изображение, кодировать первое значение, представляющее разность между значением базовых старших битов (MSB) значения счетчика порядка изображений (POC) текущего изображения видеоданных и значением первых MSB первого значения POC первого долгосрочного опорного изображения видеоданных, и кодировать второе значение, представляющее разность между значением вторых MSB второго значения POC второго долгосрочного опорного изображения видеоданных и значением первых MSB, причем первое значение POC и второе значение POC имеют разные значения младших битов (LSB).
[0015] Детали одного или более примеров представлены в прилагаемых чертежах и нижеприведенном описании. Другие признаки, задачи и преимущества явствуют из описания и чертежей, а также их формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0016] Фиг. 1 - блок-схема, демонстрирующая иллюстративную систему кодирования и декодирования видеосигнала, которая может использовать методы улучшения сигнализации долгосрочных опорных изображений в заголовках слайсов.
[0017] Фиг. 2 - блок-схема, демонстрирующая пример видеокодера, который может реализовать методы улучшения сигнализации долгосрочных опорных изображений в заголовках слайсов.
[0018] Фиг. 3 - блок-схема, демонстрирующая пример видеодекодера, который может реализовать методы улучшения сигнализации долгосрочных опорных изображений в заголовках слайсов.
[0019] Фиг. 4 - принципиальная схема, демонстрирующая последовательность кодированных видеоизображений.
[0020] Фиг. 5 - блок-схема операций, демонстрирующая иллюстративный способ кодирования значения счетчика порядка изображений (POC) для долгосрочных опорных изображений в соответствии с методами настоящего раскрытия.
[0021] Фиг. 6 - блок-схема операций, демонстрирующая иллюстративный способ декодирования значений POC для долгосрочных опорных изображений в соответствии с методами настоящего раскрытия.
ПОДРОБНОЕ ОПИСАНИЕ
[0022] В общем случае, видеоданные представляется последовательностью изображений, которые захватываются или отображаются в быстрой последовательности. Следует понимать, что в некоторых примерах, изображения или части изображений могут генерироваться, например, с использованием компьютерной графики, вместо (или помимо) захвата. Порядок, в котором изображения подлежат отображению (который, в общем случае, может совпадать с порядком, в котором изображения захватываются или генерируются) может отличаться от порядка, в котором изображения кодируются. Порядок отображения изображений, в общем случае, представляется значениями счетчика порядка изображений (POC), тогда как порядок кодирования изображений, в общем случае, представляется значениями номера кадра (frame_num).
[0023] Кодирование изображений, в общем случае, предусматривает пользование преимуществом наличия избыточных данных в изображениях. Например, пространственное кодирование, также именуемое кодирование с интра-предсказанием, пользуется преимуществом избыточностей, возникающих между пространственно соседствующими блоками пиксельных значений общего изображения. В порядке другого примера, временное кодирование, также именуемое кодирование с интер-предсказанием, пользуется преимуществом избыточностей, возникающих между разными изображениями, которые захватываются, генерируются или отображаются в разные моменты времени. В частности, изображение может делиться на слайсы, которые могут быть предназначены для интра- или интер-предсказания. Кроме того, каждый слайс может делиться на блоки (например, наибольшие единицы кодирования (LCU)), и каждый из блоков может подвергаться либо дополнительному разбиению, либо кодированию на основании того, предназначен ли соответствующий слайс для интра- или интер-предсказания.
[0024] В связи с примером кодирования с интер-предсказанием, блоки кодируемого в данный момент изображения (также именуемого “текущим изображением”) можно прогнозировать из опорного изображения. WD7 определяет “опорное изображение” как изображение с nal_ref_flag равным 1. nal_ref_flag это элемент синтаксиса единицы уровня сетевых абстракций (NAL), указывающий, следует ли рассматривать данные, включенные в единицу NAL, как опорное изображение. WD7 также предусматривает, что опорное изображение содержит выборки (то есть пиксельные значения), который можно использовать для интер-предсказания в процессе декодирования следующих изображений в порядке декодирования.
[0025] Кроме того, WD7 отличает долгосрочные опорные изображения от краткосрочных опорных изображений. Например, WD7 определяет долгосрочное опорное изображение как опорное изображение, которое помечено как “используемое в качестве долгосрочного опорного”. WD7 предусматривает, что флаг в наборе параметров последовательности (SPS) указывает, полностью ли сигнализируются долгосрочные опорные изображения для кодированной видеопоследовательности. В соответствии с WD7, видеокодеры сигнализируют младшие биты (LSB) значений POC долгосрочных опорных изображений в заголовках слайсов для слайсов. Сигнализация LSB может приводить к экономии битов, по сравнению с сигнализацией полного значения POC. Видеокодеры, в соответствии с WD7, может сигнализировать старшие биты (MSB) значений POC долгосрочных опорных изображений, если в буфере декодированных изображений (DPB) присутствует более одного опорного изображения, имеющего такие же младшие биты, как долгосрочное опорное изображение. Кроме того, в соответствии с WD7, видеокодеры могут использовать флаг для указания, могут ли сигнализируемые долгосрочные опорные изображения использоваться текущим изображением в качестве опорного.
[0026] Видеокодеры могут поддерживать MSB текущего изображения, именуемые здесь “значением базового MSB”, и сигнализировать MSB долгосрочного опорного изображения i с использованием значений смещения относительно значений базовых MSB, например, с использованием элемента синтаксиса delta_poc_msb_cycle_lt[i] для изображения i. Этот элемент синтаксиса именуется ниже значением “цикла MSB”. Другими словами, для вычисления значения POC для конкретного изображения, видеокодер может вычислять: (базовый MSB + цикл MSB для изображения), сцепленный с (LSB для изображения).
[0027] В WD7, значение цикла MSB кодировалось как разность между значением базового MSB и MSB для изображения, для которого сигнализировался цикл MSB, т.е. изображения i. Только когда сигнализируется два или более долгосрочных опорных изображения с одинаковыми значениями LSB, цикл MSB первого такого долгосрочного опорного изображения будет сигнализироваться как таковой, и значения цикла MSB для остальных долгосрочных опорных изображений будет сигнализироваться как смещения относительно друг друга. Однако эта сигнализация долгосрочных опорных изображений, в соответствии с WD7, может страдать одним или более недостатками. Например, при наличии двух долгосрочных опорных изображений с разными значениями LSB, оба из которых сигнализируют delta_poc_msb_cycle_lt[i], текущий синтаксис будет сигнализировать delta_poc_msb_cycle_lt[i] как рассмотрено выше, т.е. как смещение относительно значения базового MSB. Однако из настоящего раскрытия следует, что сигнализация разности между значения цикла MSB для изображений может быть более эффективной.
[0028] Сигнализация идентификационных данных для долгосрочных опорных изображений в заголовке слайса, в соответствии с WD7, может страдать одним или более недостатками. Например, если текущее изображение имеет значение POC, равное MaxPicOrderCntLsb * N−1, и изображение, которое имеет значение POC, равное MaxPicOrderCntLsb * N, является первым долгосрочным опорным изображением, для которого сигнализируется delta_poc_msb_cycle_lt[i], то WD7 не обеспечивает методы сигнализации delta_poc_msb_cycle_lt[i]. В этом случае, значение delta_poc_msb_cycle_lt[i], должно быть равно, но не может, −1 (минус единице).
[0029] В порядке другого примера, при наличии двух долгосрочных опорных изображений с разными значениями LSB, оба из которых сигнализируют delta_poc_msb_cycle_lt[i], текущий синтаксис будет сигнализировать delta_poc_msb_cycle_lt[i] как таковой. Однако из настоящего раскрытия следует, что сигнализация разности для одного из изображений была бы более эффективной.
[0030] В порядке другого примера, при наличии в DPB более одного опорного изображения, имеющего такой же LSB, как и у сигнализируемого долгосрочного опорного изображения, WD7 требует, чтобы цикл MSB LTRP также сигнализировался с использованием элемента синтаксиса delta_poc_msb_cycle_lt[i]. Однако из настоящего раскрытия следует, что, если в DPB присутствует изображение, которое будет помечено текущим изображением как краткосрочное опорное изображение, то включение краткосрочного опорного изображения в набор кандидатов долгосрочных опорных изображений может препятствовать сигнализации старших битов сверх необходимости.
[0031] В порядке другого примера, когда в DPB присутствует n опорных изображений, для которых LSB POC равно poc_lsb_lt[i], и когда в текущем изображении сигнализируется k долгосрочных опорных изображений, где k меньше или равно n, которые имеют LSB, равные poc_lsb_lt[i], синтаксис, заданный в WD7 требует, чтобы все k изображений имели delta_poc_msb_present_flag[i], равный 1. Если же k=n, из настоящего раскрытия следует, что видеокодеру не нужно задавать delta_poc_msb_present_flag[i] равным 1 для всех k долгосрочных опорных изображений, но будет достаточно, если он задаст delta_poc_msb_present_flag[i] равным 1 для n-1 изображений. Методы настоящего раскрытия, более подробно описанные ниже со ссылками на фигуры, способны преодолеть любые или все из этих недостатков. В целом, в настоящем раскрытии описаны различные методы, которые позволяют улучшать сигнализацию для долгосрочных опорных изображений в заголовке слайса.
[0032] На фиг. 1 показана блок-схема, демонстрирующая иллюстративную систему 10 кодирования и декодирования видеосигнала, которая может использовать методы улучшения сигнализации долгосрочных опорных изображений в заголовках слайсов. Как показано на фиг. 1, система 10 включает в себя исходное устройство 12, которое обеспечивает кодированные видеоданные, подлежащие декодированию в более позднее время устройством 14 назначения. В частности, исходное устройство 12 подает видеоданные на устройство 14 назначения через компьютерно-читаемый носитель 16. Исходное устройство 12 и устройство 14 назначения могут содержать самые разнообразные устройства, включающие в себя настольные компьютеры, компьютеры-ноутбуки (т.е. портативные компьютеры), планшетные компьютеры, телевизионные приставки, телефонные трубки, например, так называемые “смартфоны”, так называемые “смартпэды”, телевизоры, камеры, устройства отображения, цифровые медиапроигрыватели, консоли для видеоигр, устройства потоковой передачи видеосигнала и т.п. В ряде случаев, исходное устройство 12 и устройство 14 назначения могут быть снабжены оборудованием для беспроводной связи.
[0033] Устройство 14 назначения может принимать кодированные видеоданные, подлежащие декодированию, через компьютерно-читаемый носитель 16. Компьютерно-читаемый носитель 16 может содержать любой тип носителя или устройства, способного перемещать кодированные видеоданные от исходного устройства 12 на устройство 14 назначения. В одном примере, компьютерно-читаемый носитель 16 может содержать среду передачи данных, чтобы исходное устройство 12 могло передавать кодированные видеоданные непосредственно на устройство 14 назначения в реальном времени. Кодированные видеоданные можно модулировать согласно стандарту связи, например, протоколу беспроводной связи, и передавать на устройство 14 назначения. Среда передачи данных может содержать любую беспроводную или проводную среду передачи данных, например, радиочастотный (РЧ) спектр или одну или более физических линий передачи. Среда передачи данных может образовывать часть сети с коммутацией пакетов, например, локальной сети, широкомасштабной сети или глобальной сети, например, интернета. Среда передачи данных может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для облегчения передачи от исходного устройства 12 на устройство 14 назначения.
[0034] В некоторых примерах, кодированные данные могут выводиться из выходного интерфейса 22 на запоминающее устройство. Аналогично, входной интерфейс может обращаться к запоминающему устройству за кодированными данными. запоминающее устройство может включать в себя любые носители данных распределенного или локального доступа, например, жесткий диск, диски Blu-ray, DVD, CD-ROM, флэш-память, энергозависимую или энергонезависимую память, или любые другие подходящие носители цифровых данных для хранения кодированных видеоданных. В дополнительном примере, запоминающее устройство может соответствовать файловому серверу или другому промежуточному запоминающему устройству, где может храниться кодированный видеосигнал, генерируемый исходным устройством 12.
[0035] Устройство 14 назначения может извлекать сохраненные видеоданные из запоминающего устройства посредством потоковой передачи или загрузки. Файловым сервером может быть сервер любого типа, способный хранить кодированные видеоданные и передавать эти кодированные видеоданные на устройство 14 назначения. Примером файлового сервера является веб-сервер (например, для веб-сайта), FTP-сервер, устройства типа сетевого хранилища данных (NAS) или локальный дисковод. Устройство 14 назначения может осуществлять доступ к кодированным видеоданным через любое стандартное соединение для передачи данных, в том числе, интернет-соединение. Оно может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем и т.д.) или их комбинацию, пригодный для осуществления доступа к кодированным видеоданным, хранящимся на файловом сервере. Передача кодированных видеоданных из запоминающего устройства может осуществляться в потоковом режиме, в режиме загрузки или в комбинированном режиме.
[0036] Методы настоящего раскрытия не ограничиваются беспроводными приложениями или установками. Методы могут применяться к кодированию видеосигнала для поддержки любого из различных мультимедийных приложений, например, эфирного телевизионного вещания, кабельных телевизионных передач, спутниковых телевизионных передач, передач потокового видео в интернете, например, динамической адаптивной потоковой передачи по HTTP (DASH), цифрового видеосигнала, который кодируется на носитель данных, декодирование цифрового видеосигнала хранящегося на носителе данных, или других приложений. В некоторых примерах, система 10 может быть выполнена с возможностью поддержки односторонней или двусторонней передачи видеосигнала для поддержки таких приложений, как потоковая передача видеосигнала, воспроизведение видео, видеовещание и/или видеотелефония.
[0037] В примере, показанном на фиг. 1, исходное устройство 12 включает в себя источник 18 видеосигнала, видеокодер 20 и выходной интерфейс 22. Устройство 14 назначения включает в себя входной интерфейс 28, видеодекодер 30 и устройство 32 отображения. В соответствии с настоящим раскрытием, видеокодер 20 исходного устройства 12 может быть выполнен с возможностью применения методов улучшения сигнализации долгосрочных опорных изображений в заголовках слайсов. В других примерах, исходное устройство и устройство назначения может включать в себя другие компоненты или компоновки. Например, исходное устройство 12 может принимать видеоданные от внешнего источника 18 видеосигнала, например, внешней камеры. Аналогично, устройство 14 назначения может сопрягаться с внешним устройством отображения, вместо того, чтобы включать в себя встроенное устройство отображения.
[0038] Система 10, проиллюстрированная на фиг. 1, является всего лишь одним примером. Методы улучшения сигнализации долгосрочных опорных изображений в заголовках слайсов может осуществляться любым устройством кодирования и/или декодирования цифрового видеосигнала. Хотя, в общем случае, методы настоящего раскрытия осуществляются устройством кодирования видеосигнала, методы также могут осуществляться видеокодером/декодером, обычно именуемым “кодеком”. Кроме того, методы настоящего раскрытия также могут осуществляться препроцессором видеосигнала. Исходное устройство 12 и устройство 14 назначения являются лишь примерами таких устройств кодирования, в которых исходное устройство 12 генерирует кодированные видеоданные для передачи на устройство 14 назначения. В некоторых примерах, устройства 12, 14 могут работать, по существу, симметричным образом, таким образом, что каждое из устройств 12, 14 включает в себя компоненты кодирования и декодирования видеосигнала. Поэтому, система 10 может поддерживать одностороннюю или двустороннюю передачу видеосигнала между устройствами 12, 14 обработки видеосигнала, например, для потоковой передачи видеосигнала, воспроизведения видео, видеовещания или видеотелефонии.
[0039] Источник 18 видеосигнала исходного устройства 12 может включать в себя устройство захвата видео, например, видеокамеру, архив видеозаписей, содержащий ранее захваченное видео и/или интерфейс подачи видео для приема видеосигнала от поставщика видеоконтента. В порядке дополнительной альтернативы, источник 18 видеосигнала может генерировать данные на основе компьютерной графики в качестве исходного видеосигнала или комбинацию видеосъемки в реальном времени, архивных видеозаписей и видео, создаваемого на компьютере. В ряде случаев, если источником 18 видеосигнала является видеокамера, исходное устройство 12 и устройство 14 назначения могут формировать так называемые камерофоны или видеофоны. Однако, как упомянуто выше, методы, описанные в настоящем раскрытии, можно применять к кодированию видеосигнала в целом и можно применять к беспроводным и/или проводным приложениям. В каждом случае, захваченное, предзахваченное видео или видео, создаваемое на компьютере, может кодироваться видеокодером 20. Затем кодированная видеоинформация может выводиться выходным интерфейсом 22 на компьютерно-читаемый носитель 16.
[0040] Компьютерно-читаемый носитель 16 может включать в себя переходные среды, например, беспроводное широковещание или передачу по проводной сети, или носители данных (то есть некратковременные, или нетранзиторные носители данных), например, жесткий диск, флэш-носитель, компакт-диск, цифровой видеодиск, диск Blu-ray или другие компьютерно-читаемые носители. В некоторых примерах, сетевой сервер (не показан) может принимать кодированные видеоданные от исходного устройства 12 и выдавать кодированные видеоданные на устройство 14 назначения, например, посредством сетевой передачи. Аналогично, вычислительное устройство установки по производству носителей, например, установки по штамповки дисков, может принимать кодированные видеоданные от исходного устройства 12 и изготавливать диск, содержащий кодированные видеоданные. Таким образом, компьютерно-читаемый носитель 16 можно рассматривать как включающий в себя один или более компьютерно-читаемых носителей различных типов, в различных примерах.
[0041] Входной интерфейс 28 устройства 14 назначения принимает информацию с компьютерно-читаемого носителя 16. Информация компьютерно-читаемого носителя 16 может включать в себя синтаксическую информацию, заданную видеокодером 20, которая также используется видеодекодером 30, который включает в себя элементы синтаксиса, которые описывают характеристики и/или обработку блоков и других кодированных единиц, например, GOP. Устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из различных устройств отображения, например, электронно-лучевую трубку (ЭЛТ), жидкокристаллический дисплей (ЖКД), плазменный дисплей, органо-светодиодный (ОСИД) или устройство отображения другого типа.
[0042] Видеокодер 20 и видеодекодер 30 может работать согласно стандарту кодирования видеосигнала, например, стандарту High Efficiency Video Coding (HEVC) в настоящее время находящемся в разработке, и может согласовываться с HEVC Test Model (HM). Альтернативно, видеокодер 20 и видеодекодер 30 могут работать согласно другим собственным или промышленным стандартам, например, стандарту ITU-T H.264, альтернативно именуемому MPEG-4, часть 10, Advanced Video Coding (AVC) или расширениям таких стандартов. Однако методы настоящего раскрытия не ограничиваются каким-либо конкретным стандартом кодирования. Другие примеры стандартов кодирования видеосигнала включают в себя MPEG-2 и ITU-T H.263. Хотя это не показано на фиг. 1, в некоторых аспектах, каждый из видеокодера 20 и видеодекодера 30 может быть объединен с аудиокодером и декодером, и может включать в себя надлежащие блоки мультиплексирования/демультиплексирования или другое аппаратное обеспечение и программное обеспечение, для осуществления кодирования аудиосигнала и видеосигнала в общем потоке данных или отдельных потоках данных. Если применимо, блоки мультиплексирования/демультиплексирования могут согласовываться с протоколом мультиплексора ITU H.223 или другими протоколами, например, протоколом пользовательских дейтаграмм (UDP).
[0043] Стандарт ITU-T H.264/MPEG-4 (AVC) был сформулирован ITU-T Video Coding Experts Group (VCEG) совместно с ISO/IEC Moving Picture Experts Group (MPEG) как продукта коллективного партнерств, известного как Joint Video Team (JVT). В некоторых аспектах, методы, описанные в настоящем раскрытии, могут применяться к устройствам, которые, в общем случае, согласуются со стандартом H.264. Стандарт H.264 описан в ITU-T Recommendation H.264, Advanced Video Coding для универсальных аудиовизуальных услуг, группой ITU-T Study Group и датирован мартом 2005 г., и может именоваться здесь стандартом H.264 или спецификацией H.264, или стандартом или спецификацией H.264/AVC. Joint Video Team (JVT) продолжает работать над расширениями H.264/MPEG-4 AVC.
[0044] Каждый из видеокодера 20 и видеодекодера 30 можно реализовать в виде любой из различных подходящих схем кодера, например, одном или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), вентильных матриц, программируемых пользователем (FPGA), дискретной логики, программном обеспечении, аппаратном обеспечении, программно-аппаратном обеспечении или любых их комбинациях. Когда методы реализуются частично в программном обеспечении, в устройстве могут храниться инструкции для программного обеспечения на пригодном некратковременном компьютерно-читаемом носителе и оно может выполнять инструкции аппаратными средствами с использованием одного или более процессоров для осуществления методов настоящего раскрытия. Каждый из видеокодера 20 и видеодекодера 30 может входить в состав одного или более кодеров или декодеров, любой из которых может входить в состав объединенного кодера/декодера (кодека) в соответствующем устройстве.
[0045] JCT-VC работает над разработкой стандарта HEVC. Усилия по стандартизации HEVC базируются на развивающейся модели устройства кодирования видеосигнала, именуемой HEVC Test Model (HM). HM предусматривает несколько дополнительных возможностей устройств кодирования видеосигнала по сравнению с существующими устройствами согласно, например, ITU-T H.264/AVC. Например, в то время, как H.264 обеспечивает девять режимов кодирования с интра-предсказанием, HM может обеспечивать целых тридцать три режима кодирования с интра-предсказанием.
[0046] В целом, рабочая модель HM описывает, что кадр видео или изображение может делиться на последовательность древовидных блоков или наибольших единиц кодирования (LCU), которые включают в себя яркостные и цветностные выборки. Данные синтаксиса в битовом потоке могут задавать размер LCU, которая является наибольшей единицей кодирования в отношении количества пикселей. Слайс включает в себя некоторое количество последовательных древовидных блоков в порядке кодирования. Кадр видео или изображение можно разбивать на один или более слайсов. Каждый древовидный блок можно разбивать на единицы кодирования (CU) согласно квадродереву. В целом, структура данных квадродерева включает в себя по одному узлу на CU, причем корневой узел соответствует древовидному блоку. Если CU разбивается на четыре под-CU, узел, соответствующий CU, включает в себя четыре краевых узла, каждый из которых соответствует одной из под-CU.
[0047] Каждый узел структуры данных квадродерева могут обеспечивать данные синтаксиса для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разбиения, указывающий, разбивается ли CU, соответствующая узлу, на под-CU. Элементы синтаксиса для CU можно задавать рекурсивно, и они могут зависеть от того, разбивается ли CU на под-CU. Если CU не подлежит дальнейшему разбиению, она называется краевой CU. В настоящем раскрытии, четыре под-CU краевой CU также будут именоваться краевыми CU, даже в отсутствие явного разбиения первоначальной краевой CU. Например, если CU размером 16x16 не подлежит дальнейшему разбиению, четыре под-CU размером 8x8 также будут именоваться краевыми CU, хотя CU размером 16x16 никогда не разбивалась.
[0048] CU преследует примерно такую же цель, как макроблок стандарта H.264, за исключением того, что CU не имеет различия в размере. Например, древовидный блок можно разбивать на четыре дочерних узла (также именуемых под-CU), и каждый дочерний узел, в свою очередь, может быть родительским узлом и разбиваться на другие четыре дочерних узла. Окончательный, неразбитый дочерний узел, именуемый краевым узлом квадродерева, содержит узел кодирования, также именуемый краевой CU. Данные синтаксиса, связанные с кодированным битовым потоком, могут задавать максимальную кратность разбиения древовидного блока, именуемую максимальной глубиной CU, и также может задавать минимальный размер узлов кодирования. Соответственно, битовый поток также может задавать наименьшую единицу кодирования (SCU). В настоящем раскрытии термин “блок” означает любую из CU, PU или TU, в контексте HEVC или аналогичные структуры данных в контексте других стандартов (например, их макроблоки и подблоки в H.264/AVC).
[0049] CU включает в себя узел кодирования и единицы прогнозирования (PU) и единицы преобразования (TU), связанные с узлом кодирования. CU имеет размер, соответствующий размеру узла кодирования, и должна иметь квадратную форму. Размер CU может составлять от 8x8 пикселей до размера древовидного блока максимум 64x64 пикселя или более. Каждая CU может содержать одну или более PU и одну или более TU. Данные синтаксиса, связанные с CU, могут описывать, например, разбиение CU на одну или более PU. Режимы разбиения могут отличаться в зависимости от того, кодирована ли CU в режиме пропуска или прямом режиме, в режиме интра-предсказания или в режиме интер-предсказания. PU можно разбивать не на квадраты. Данные синтаксиса, связанные с CU, также могут описывать, например, разбиение CU на одну или более TU согласно квадродереву. TU может иметь квадратную или неквадратную (например, прямоугольную) форму.
[0050] Стандарт HEVC допускает преобразования согласно TU, которые могут различаться для разных CU. Размеры TU обычно определяются на основании размера PU в данной CU, заданного для разбитой LCU, хотя так бывает не всегда. TU обычно имеют такой же размер, как PU, или меньший. В некоторых примерах, остаточные выборки, соответствующие CU, можно подразбить на меньшие единицы с использованием структуры квадродерева, известной как “остаточное квадродерево” (RQT). Краевые узлы RQT могут именоваться единицами преобразования (TU). Разностные значения пикселей, связанные с TU, можно преобразовывать для создания коэффициентов преобразования, которые можно квантовать.
[0051] Краевая CU может включать в себя одну или более единиц прогнозирования (PU). В целом, PU представляет пространственную область, соответствующую всей или части соответствующей CU и может включать в себя данные для извлечения опорной выборки для PU. Кроме того, PU включает в себя данные, связанные с прогнозированием. Например, когда PU кодируется в режиме интра-предсказания, данные для PU могут быть включены в остаточное квадродерево (RQT), которое может включать в себя данные, описывающие режим интра-предсказания для TU, соответствующей PU. В порядке другого примера, когда PU кодируется в режиме интер-предсказания, PU может включать в себя данные, задающие один или более векторов движения для PU. Данные, задающие вектор движения для PU могут описывать, например, горизонтальную компоненту вектора движения, вертикальную компоненту вектора движения, разрешение для вектора движения (например, точность в четверть пикселя или точность в одну восьмую пикселя), опорное изображение, на который указывает вектор движения, и/или список опорных изображений (например, список 0, список 1 или список C) для вектора движения.
[0052] Краевая CU, имеющая одну или более PU, также может включать в себя одну или более единиц преобразования (TU). Единицы преобразования можно задавать с использованием RQT (также именуемой структурой квадродерева TU), как рассмотрено выше. Например, флаг разбиения может указывать, разбивается ли краевая CU на четыре единицы преобразования. Затем, каждую единицу преобразования можно дополнительно разбивать на дополнительные под-TU. Когда TU не подлежит дальнейшему разбиению, она может именоваться краевой TU. В общем случае, для интракодирования, все краевые TU, принадлежащие краевой CU, совместно используют один и тот же режим интра-предсказания. Таким образом, один и тот же режим интра-предсказания, в общем случае, применяется для вычисления прогнозируемых значений для всех TU краевой CU. Для интракодирования, видеокодер может вычислять остаточное значение для каждой краевой TU с использованием режима интра-предсказания, как разность между частью CU, соответствующей TU и первоначальным блоком. TU не обязана ограничиваться размером PU. Таким образом, TU могут быть больше или меньше, чем PU. Для интракодирования, PU может быть совмещена с соответствующей краевой TU для одной и той же CU. В некоторых примерах, максимальный размер краевой TU может соответствовать размеру соответствующей краевой CU.
[0053] Кроме того, TU краевых CU также могут быть связаны с соответствующими структурами данных квадродерева, именуемыми остаточными квадродеревьями (RQT). Таким образом, краевая CU может включать в себя квадродерево, указывающее, как краевая CU разбивается на TU. Корневой узел квадродерева TU, в общем случае, соответствует краевой CU, тогда как корневой узел квадродерева CU, в общем случае, соответствует древовидному блоку (или LCU). TU RQT, которые не разбиваются, именуются краевыми TU. В целом, в настоящем раскрытии используется термины CU и TU для обозначения краевой CU и краевой TU, соответственно, если не указано обратное.
[0054] Видеопоследовательность обычно включает в себя несколько кадров видео или изображений. Группа изображений (GOP), в общем случае, содержит одно или более видеоизображений. GOP может включать в себя данные синтаксиса в заголовке GOP, заголовок одного или более изображений, или в другом месте, где описано количество изображений, включенных в GOP. Каждый слайс изображения может включать в себя данные синтаксиса слайса, которые описывают режим кодирования для соответствующего слайса. Видеокодер 20 обычно действует на видеоблоках в отдельных слайсах видео для кодирования видеоданных. Видеоблок может соответствовать узлу кодирования в CU. Видеоблоки могут иметь постоянные или изменяющиеся размеры и могут отличаться размером согласно указанному стандарту кодирования.
[0055] В порядке примера, HM поддерживает прогнозирование в PU различных размеров. Исходя из того, что размер конкретной CU равен 2Nx2N, HM поддерживает интра-предсказание в PU размерами 2Nx2N или NxN, и интер-предсказание в PU симметричных размеров 2Nx2N, 2NxN, Nx2N или NxN. HM также поддерживает асимметричное разбиение для интер-предсказания в PU размерами 2NxnU, 2NxnD, nLx2N и nRx2N. В асимметричном разбиении CU не разбивается в одном направлении, а в другом направлении разбивается в отношении 25% и 75%. Часть CU, соответствующая 25%-му разбиению, обозначена “n” сопровождаемой указанием “вверх”, “вниз”, “влево” или “вправо”. Таким образом, например, “2NxnU” означает CU 2Nx2N, разбитую по горизонтали на PU 2Nx0,5N сверху и PU 2Nx1,5N снизу.
[0056] В настоящем раскрытии, “NxN” и “N на N” может использоваться взаимозаменяемо для обозначения размеров видеоблока в пикселях по вертикали и горизонтали, например, 16x16 пикселей или 16 на 16 пикселей. В целом, блок 16x16 будет иметь 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Аналогично, блок NxN, в общем случае, имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет неотрицательное целочисленное значение. Пиксели в блоке могут располагаться строками и столбцами. Кроме того, блоки не обязательно имеют одинаковое количество пикселей в горизонтальном направлении и в вертикальном направлении. Например, блоки могут содержать NxM пикселей, где M не обязательно равно N.
[0057] После кодирования с интра-предсказанием или с интер-предсказанием с использованием PU CU, видеокодер 20 может вычислять остаточные данные для TU CU. PU могут содержать данные синтаксиса, описывающие способ или режим генерации с прогнозированием пиксельных данных в пространственной области (также именуемой пиксельной областью) и TU могут содержать коэффициенты в преобразовательной области после применения преобразования, например, дискретного косинусного преобразования (DCT), целочисленного преобразования, вейвлетного преобразования или принципиально аналогичного преобразования к остаточным видеоданным. Остаточные данные могут соответствовать пиксельным разностям между пикселями некодированного изображения и значениями прогнозирования, соответствующими PU. Видеокодер 20 могут формировать TU, включающие в себя остаточные данные для CU, и затем преобразовывать TU для создания коэффициентов преобразования для CU.
[0058] После любых преобразований для создания коэффициентов преобразования, видеокодер 20 может осуществлять квантование коэффициентов преобразования. Квантование, в общем случае, означает процесс, в котором коэффициенты преобразования квантуются, возможно, для сокращения объема данных, используемых для представления коэффициентов, обеспечивая дополнительное сжатие. Процесс квантования может уменьшать битовую глубину, связанную с некоторыми или всеми из коэффициентов. Например, n-битовое значение может округляться до m-битового значения в ходе квантования, где n больше m.
[0059] После квантования, видеокодер может сканировать коэффициенты преобразования, создавая одномерный вектор из двухмерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может осуществляться с целью помещения коэффициентов более высокой энергии (и, таким образом, более низкой частоты) в передней части массива и помещения коэффициентов более низкой энергии (и, таким образом, более высокой частоты) в задней части массива. В некоторых примерах, видеокодер 20 может использовать заранее заданный порядок сканирования для сканирования квантованных коэффициентов преобразования для создания сериализованного вектора, который можно энтропийно кодировать. В других примерах, видеокодер 20 может осуществлять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для формирования одномерного вектора, видеокодер 20 может энтропийно кодировать одномерный вектор, например, согласно контекстно-адаптивному кодированию с переменной длиной слова (CAVLC), контекстно-адаптивному двоичному арифметическому кодированию (CABAC), контекстно-адаптивному двоичному арифметическому кодированию на основе синтаксиса (SBAC), энтропийному кодированию с разбиением интервала вероятности (PIPE) или другой методологии энтропийного кодирования. Видеокодер 20 также может энтропийно кодировать элементы синтаксиса, связанные с кодированными видеоданными, для использования видеодекодером 30 при декодировании видеоданных.
[0060] Для осуществления CABAC, видеокодер 20 может назначать контекст в контекстной модели символу, подлежащему передаче. Контекст может указывать, например, являются ли соседние значения символа ненулевыми. Для осуществления CAVLC, видеокодер 20 может выбирать код переменной длины для символа, подлежащего передаче. Кодовые слова в VLC можно построить таким образом, чтобы относительно более короткие коды соответствовали более вероятным символам, а более длинные коды соответствовали менее вероятным символам. Таким образом, использование VLC может обеспечивать экономию битов по сравнению, например, с использованием кодовых слов равной длины для каждого символа, подлежащего передаче. Определение вероятности может базироваться на контексте, назначенном символу.
[0061] В соответствии с методами настоящего раскрытия, видеокодер 20 и видеодекодер 30 могут быть выполнены с возможностью использования усовершенствованных методов сигнализации данных для идентификации долгосрочных опорных изображений, например, в заголовках слайсов, наборов параметров (включающих в себя наборы параметров изображения (PPS) и наборы параметров последовательности (SPS)) и т.п. В целом, видеокодер 20 и видеодекодер 30 могут быть выполнены с возможностью осуществления любых или всех методов настоящего раскрытия, по отдельности или в любой комбинации. В некоторых примерах, видеокодер 20 и видеодекодер 30 могут быть выполнены с возможностью осуществления способов сигнализации отрицательных значений цикла MSB дельта POC для долгосрочных опорных изображений. В некоторых примерах, видеокодер 20 и видеодекодер 30 могут быть выполнены с возможностью осуществления способов для более эффективной сигнализации значений цикла MSB дельта POC для долгосрочных опорных изображений с разными значениями LSB с использованием дифференциального кодирования.
[0062] В некоторых примерах, опорные изображения, которые сигнализируются как краткосрочные опорные изображения для текущего изображения (или которые включены в набор краткосрочных опорных изображений текущего изображения) можно исключить из опорных изображений используемых при определении, отправлять ли значения цикла MSB дельта POC для долгосрочных опорных изображений, во избежание отправки ненужных значений цикла MSB дельта POC. В некоторых примерах, при наличии n опорных изображений (включая или исключая краткосрочные опорные изображения) в DPB, которые имеют LSB POC, равный poc_lsb_lt[i], и когда в текущем изображении сигнализируется n долгосрочных опорных изображений, которые имеют значения LSB, равные poc_lsb_lt[i], видеокодер 20 может только отправлять, и видеодекодер 30 может только принимать, значения цикла MSB дельта POC для n-1 долгосрочных опорных изображений, хотя эти данные можно отправлять для всех n долгосрочных опорных изображений.
[0063] Любой или все из различных вышеописанных методов можно реализовать согласно следующей иллюстративной реализации. Элемент синтаксиса WD7, который описывает цикл MSB долгосрочного опорного изображения можно модифицировать, как показано ниже. В настоящем раскрытии также описан иллюстративный способ получения массива DeltaPocMSBCycleLt[]. В настоящем раскрытии дополнительно описан иллюстративный процесс декодирования для набора опорных изображений. Кроме того, в настоящем раскрытии описаны семантика для элементов синтаксиса delta_poc_msb_present_flag[i] и poc_lsb_lt[i]. Синтаксис и семантика других элементов синтаксиса WD7 могут оставаться неизменными.
[0064] Таблица 1 представляет пример набора синтаксиса для заголовка слайса. Подчеркнутый текст представляет изменения в синтаксисе заголовка слайса относительно WD7. Семантика для измененных элементов синтаксиса, а также измененная семантика для других элементов синтаксиса, рассмотрены ниже.
<b>Таблица 1</b>
slice_header( ) {
<b>Дескриптор</b>
<b>…</b>
short_term_ref_pic_set_idx
u(v)
if( long_term_ref_pics_present_flag ) {
num_long_term_pics
ue(v)
for( i=0; i<num_long_term_pics; i++ ) {
poc_lsb_lt[i]
u(v)
delta_poc_msb_present_flag[i]
u(1)
if( delta_poc_msb_present_flag[i] )
<u> delta_poc_msb_cycle_lt_plus1[i]</u>
<u>ue(v)</u>
used_by_curr_pic_lt_flag[i]
u(1)
}
}
…
byte_alignment( )
}
[0065] В примере таблицы 1, синтаксис заголовка слайса включает в себя дополнительный элемент delta_poc_msb_cycle_lt_plus1[i]. Семантика для этого элемента синтаксиса описана ниже. В некоторых примерах, poc_lsb_lt[i] может указывать значение младших битов значения счетчика порядка изображений i-го долгосрочного опорного изображения, которое включено в набор долгосрочных опорных изображений текущего изображения. Длина элемента синтаксиса poc_lsb_lt[i] может составлять log2_max_pic_order_cnt_lsb_minus4+4 бита.
[0066] В некоторых примерах, тот факт, что delta_poc_msb_present_flag[i] равен 1, может указывать присутствие delta_poc_msb_cycle_lt_plus1[i]. Тот факт, что delta_poc_msb_present_flag[i] равен 0, может указывать отсутствие delta_poc_msb_cycle_lt_plus1[i]. delta_poc_msb_present_flag[i] можно задавать равным 1 при наличии j опорных изображений, где j - целочисленное значение, большее 1, в буфере декодированных изображений, за исключением изображений, помеченных как “используемые в качестве краткосрочных опорных” текущим изображением, с младшими битами значения счетчика порядка изображений, равными poc_lsb_lt[i], и когда i-е долгосрочное опорное изображение не является j-м долгосрочным опорным изображением с младшими битами значения счетчика порядка изображений, равными poc_lsb_lt[i], которое сигнализируется текущим изображением.
[0067] В некоторых примерах, delta_poc_msb_cycle_lt_plus1[i] может использоваться для определения значения старших битов значения счетчика порядка изображений i-го долгосрочного опорного изображения, которое включено в набор долгосрочных опорных изображений текущего изображения. В отсутствие сигнализации, delta_poc_msb_cycle_lt_plus1[i] может принимать значение 1.
[0068] Переменную DeltaPocMSBCycleLt[i] можно получить согласно следующему алгоритму, где (7-37) означает раздел HEVC, то есть раздел, измененный относительно WD7. Заметим, что в нижеприведенном примере вывода предполагается, что циклы MSB отправляются в порядке возрастания их значений.
DeltaPocMSBCycleLt[i]=delta_poc_msb_present_flag[i] * (delta_poc_msb_cycle_lt_plus1[i]-1);
if(i !=0 ) (7-37)
DeltaPocMSBCycleLt[i] += DeltaPocMSBCycleLt[i-1];
24
[0069] Значение DeltaPocMSBCycleLt[i] * MaxPicOrderCntLsb + pic_order_cnt_lsb - poc_lsb_lt[i] может составлять в пределах от 1 до 2-1, включительно. Альтернативно, цикл MSB может отправляться посредством сигнализации delta_poc_msb_cycle_lt_plusN[i] как ue(v) (то есть, как элемент синтаксиса, кодированный экспоненциальным кодом Голомба в виде беззнакового целого, где левый бит стоит на первом месте), вместо delta_poc_msb_cycle_lt_plus1[i], где N - значение, большее 1. Альтернативно, цикл MSB может отправляться посредством сигнализации delta_poc_msb_cycle_lt[i] как se(v) (то есть, как элемент синтаксиса, кодированный экспоненциальным кодом Голомба в виде знакового целого, где левый бит стоит на первом месте), вместо delta_poc_msb_cycle_lt_plus1[i].
[0070] Другими словами, в соответствии с методами настоящего раскрытия, значение, представляющее цикл MSB для изображения i (например, delta_poc_msb_cycle_lt_plus1[i], которое фактически сигнализируется в битовом потоке) можно вычислять относительно цикла MSB ранее кодированного долгосрочного опорного изображения, например, изображение i-1, а не относительно значения базового MSB. Это математически эквивалентно вычислению значения, представляющего цикл MSB для изображения i, как разности между MSB значения POC для изображения i и MSB значения POC для изображения i-1, предполагая, что это значение, в конце концов, суммируется со значением цикла MSB для изображения i-1 для представления истинного значения цикла MSB для изображения i (которое является разностью между MSB для изображения i и базовым MSB). Это позволяет достичь экономии битов в битовом потоке, поскольку значения, представляющие разности между последовательными значениями цикла MSB могут быть меньше, чем разности между MSB долгосрочных опорных изображений и базовым MSB.
[0071] В некоторых примерах, видеокодер 20 и видеодекодер 30 могут осуществлять процесс вывода для набора опорных изображений и маркировку изображений согласно следующим по порядку этапам, где DPB означает буфер декодированных изображений как описано в Дополнении C WD7. Заметим, что порядок вывода поднаборов краткосрочных опорных изображений и долгосрочных опорных изображений в нижеследующем примере меняются местами относительно порядка в WD7. Ссылки, заключенные в скобки вблизи правой границы предназначены для обозначения разделов WD7. Эти и другие изменения относительно алгоритма WD7 отмечены с использованием подчеркнутого текста в нижеследующем примере:
1. Применяется нижеследующее:
for( i=0; i<NumPocStCurrBefore; i++)
if(в DPB присутствует краткосрочное опорное изображение picX с PicOrderCntVal, равным PocStCurrBefore[i])
RefPicSetStCurrBefore[i] = picX
else
RefPicSetStCurrBefore[i] = “опорных изображений нет”
for( i=0; i<NumPocStCurrAfter; i++ )
if(в DPB присутствует краткосрочное опорное изображение picX с PicOrderCntVal равным PocStCurrAfter[i])
RefPicSetStCurrAfter[i] = picX
else
RefPicSetStCurrAfter[i] = “опорных изображений нет” (8-7)
for( i=0; i<NumPocStFoll; i++)
if(в DPB присутствует краткосрочное опорное изображение picX с PicOrderCntVal равным PocStFoll[i])
RefPicSetStFoll[i] = picX
else
RefPicSetStFoll[i] = “опорных изображений нет”
2. Все опорные изображения, включенные в RefPicSetStCurrBefore, RefPicSetStCurrAfter и RefPicSetStFoll, помечаются как “используемые в качестве краткосрочного опорных”.
3. Применяется нижеследующее:
for( i=0; i<NumPocLtCurr; i++ ) {
if( !delta_poc_msb_present_flag[i] ) {
if(в DPB присутствует долгосрочное опорное изображение picX с pic_order_cnt_lsb, равным PocLtCurr[i], и оно не включено ни в один из RefPicSetStCurrBefore, RefPicSetStCurrAfter и RefPicSetStFoll )
RefPicSetLtCurr[i] = picX
else if(в DPB присутствует краткосрочное опорное изображение picY с pic_order_cnt_lsb, равным PocLtCurr[i], и оно не включено ни в один из RefPicSetStCurrBefore, RefPicSetStCurrAfter и RefPicSetStFoll )
RefPicSetLtCurr[i] = picY
else
RefPicSetLtCurr[i] = “опорных изображений нет”
} else {
if(в DPB присутствует долгосрочное опорное изображение picX с PicOrderCntVal, равным PocLtCurr[i], и оно не включено ни в один из RefPicSetStCurrBefore, RefPicSetStCurrAfter и RefPicSetStFoll )
RefPicSetLtCurr[i]=picX
else if(в DPB присутствует краткосрочное опорное изображение picY с PicOrderCntVal, равным PocLtCurr[i], и оно не включено ни в один из RefPicSetStCurrBefore, RefPicSetStCurrAfter и RefPicSetStFoll )
RefPicSetLtCurr[i] = picY
else
RefPicSetLtCurr[i] = “опорных изображений нет”
}
} (8-6)
for(i=0; i<NumPocLtFoll; i++) {
if( !delta_poc_msb_present_flag[i] ) {
if(в DPB присутствует долгосрочное опорное изображение picX с pic_order_cnt_lsb, равным PocLtFoll[i], и оно не включено ни в один из RefPicSetStCurrBefore, RefPicSetStCurrAfter и RefPicSetStFoll )
RefPicSetLtFoll[i] = picX
else if(в DPB присутствует краткосрочное опорное изображение picY с pic_order_cnt_lsb, равным PocLtFoll[i], и оно не включено ни в один из RefPicSetStCurrBefore, RefPicSetStCurrAfter и RefPicSetStFoll )
RefPicSetLtFoll[i] = picY
else
RefPicSetLtFoll[i] = “опорных изображений нет”
} else {
if(в DPB присутствует долгосрочное опорное изображение picX с PicOrderCntVal, равным PocLtFoll[i], и оно не включено ни в один из RefPicSetStCurrBefore, RefPicSetStCurrAfter и RefPicSetStFoll )
RefPicSetLtFoll[i] = picX
else if(в DPB присутствует краткосрочное опорное изображение picY с PicOrderCntVal, равным PocLtFoll[i], и оно не включено ни в один из RefPicSetStCurrBefore, RefPicSetStCurrAfter и RefPicSetStFoll )
RefPicSetLtFoll[i] = picY
else
RefPicSetLtFoll[i] = “опорных изображений нет”
}
}
4. Все опорные изображения, включенные в RefPicSetLtCurr и RefPicSetLtFoll, помечаются как “используемые в качестве долгосрочного опорных”.
5. Все опорные изображения в буфере декодированных изображений, которые не включены в RefPicSetLtCurr, RefPicSetLtFoll, RefPicSetStCurrBefore, RefPicSetStCurrAfter или RefPicSetStFoll, помечаются как “неиспользуемые в качестве опорных”.
[0072] Может существовать одно или более опорных изображений, которые включены в набор опорных изображений, но не присутствуют в буфере декодированных изображений. Записи в RefPicSetStFoll или RefPicSetLtFoll, которые равны “опорных изображений нет”, следует игнорировать. Если любое из следующих двух условий не выполняется, следует ожидать непреднамеренную потерю изображение для каждой записи в RefPicSetStCurrBefore, RefPicSetStCurrAfter и RefPicSetLtCurr, которая равна “опорных изображений нет”: a) первое кодированное изображение в битовом потоке является изображением CRA, и текущее кодированное изображение является изображением TFD, связанным с первым кодированным изображением в битовом потоке; и b) предыдущее изображение RAP, предшествующее текущему кодированному изображению в порядке декодирования, является изображением BLA, и текущее кодированное изображение является изображением TFD, связанным с изображением BLA.
[0073] Таким образом, в соответствии с методами настоящего раскрытия, видеокодер (например, видеокодер 20 и/или видеодекодер 30) может вычислять значения цикла MSB для изображений, имеющих разные значения LSB, с использованием дифференциального кодирования. Кроме того, видеокодер может кодировать текущее изображение относительно одного из долгосрочных опорных изображений, например, изображения i-1 или изображения i, с использованием значений, представляющих циклы MSB. Например, видеокодер может определять значения POC для опорных изображений с использованием вышеописанной формулы (формулы 7-37) и/или вышеописанного алгоритма.
[0074] Таким образом, видеокодер 20 и видеодекодер 30, представляют примеры видеокодера, выполненного с возможностью кодирования первого значения, представляющего разность между значением базовых старших битов (MSB) значения счетчика порядка изображений (POC) текущего изображения видеоданных и значением первых MSB первого значения POC первого долгосрочного опорного изображения видеоданных, кодирования второго значения, представляющего разность между значением вторых MSB второго значения POC второго долгосрочного опорного изображения видеоданных и значением первых MSB, причем первое значение POC и второе значение POC имеют разные значения младших битов (LSB), и кодирования по меньшей мере части текущего изображения видеоданных относительно по меньшей мере одного из первого долгосрочного опорного изображения с использованием первого значения и второго долгосрочного опорного изображения с использованием первого значения и второго значения.
[0075] Видеокодер 20, например, может определять, существует ли два или более долгосрочных опорных изображения, для текущего изображения, для которого значения цикла MSB (также именуемые значениями MSB) подлежат сигнализации, даже когда долгосрочные опорные изображения имеют разные значения LSB. В случае наличия двух (или более) долгосрочных опорных изображений, имеющих разные значения LSB, но для которых значения цикла MSB подлежат сигнализации, видеокодер 20 может кодировать данные, представляющие значение цикла MSB для второго долгосрочного опорного изображения как разность (или дельту) относительно значения цикла MSB для первого долгосрочного опорного изображения. Аналогично, видеокодер 20 может кодировать данные, представляющие значение цикла MSB для первого долгосрочного опорного изображения как разность относительно значения базового MSB значения POC для текущего изображения. Видеокодер 20 может дополнительно кодировать по меньшей мере часть текущего изображения (например, один или более блоков) относительно по меньшей мере одного из первого долгосрочного опорного изображения и второго долгосрочного опорного изображения.
[0076] Таким образом, когда видеодекодер 30 принимает данные, указывающие значений цикла MSB для долгосрочных опорных изображений, видеодекодер 30 может декодировать значение, представляющее разность между базовыми MSB значения POC для первого долгосрочного опорного изображения, и вычислять MSB значения POC для первого долгосрочного опорного изображения путем прибавления значения к базовым MSB. Видеодекодер 30 также может декодировать значение, представляющее разность между MSB значения POC для второго долгосрочного опорного изображения и MSB значения POC для первого долгосрочного опорного изображения, и вычислять MSB значения POC для второго долгосрочного опорного изображения путем прибавления значения к MSB значения POC для первого долгосрочного опорного изображения. Аналогично, видеодекодер 30 может декодировать по меньшей мере часть текущего изображения относительно по меньшей мере одного из первого долгосрочного опорного изображения и второго долгосрочного опорного изображения, с использованием MSB значений POC для долгосрочных опорных изображений.
[0077] Каждый из видеокодера 20 и видеодекодера 30 можно реализовать в виде любой из различных подходящих схем кодера или декодера, если применимо, например, одного или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), вентильных матриц, программируемых пользователем (FPGA), схемы дискретной логики, программного обеспечения, аппаратного обеспечения, программно-аппаратного обеспечения или любых их комбинаций. Каждый из видеокодера 20 и видеодекодера 30 может входить в состав одного или более кодеров или декодеров, любой из которых может входить в состав объединенного видеокодера/декодера (кодека). Устройство, включающее в себя видеокодер 20 и/или видеодекодер 30, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, например, сотовый телефон.
[0078] На фиг. 2 показана блок-схема, демонстрирующая пример видеокодера 20, который может реализовать методы улучшения сигнализации долгосрочных опорных изображений в заголовках слайсов. Видеокодер 20 может осуществлять кодирование с интра- и интер-предсказанием видеоблоков в слайсах видео. Кодирование с интра-предсказанием опирается на пространственное прогнозирование для снижения или устранения пространственной избыточности в видеосигнале в данном кадре видео или изображении. Кодирование с интер-предсказанием опирается на временное прогнозирование для снижения или устранения временной избыточности в видеосигнале в соседних кадрах или изображениях видеопоследовательности. Режим интра-предсказания (I-режим) может относиться к любому из нескольких режимов пространственного кодирования. Режимы интер-предсказания, например, однонаправленное прогнозирование (P-режим) или двунаправленное прогнозирование (B-режим), могут относиться к любому из нескольких режимов временного кодирования.
[0079] Как показано на фиг. 2, видеокодер 20 принимает текущий видеоблок в кадре видео, подлежащем кодированию. В примере, показанном на фиг. 2, видеокодер 20 включает в себя блок 40 выбора режима, память 64 опорных изображений, сумматор 50, блок 52 обработки преобразования, блок 54 квантования и блок 56 энтропийного кодирования. Блок 40 выбора режима, в свою очередь, включает в себя блок 44 компенсации движения, блок 42 оценивания движения, блок 46 интра-предсказания и блок 48 разбиения. Для реконструкции видеоблоков, видеокодер 20 также включает в себя блок 58 обратного квантования, блок 60 обратного преобразования и сумматор 62. Фильтр устранения блочности (не показанный на фиг. 2), также может быть включен для фильтрации границы блоков для удаления артефактов блочности из реконструированного видеосигнала. При желании, фильтр устранения блочности обычно фильтрует выходной сигнал сумматора 62. Помимо фильтра устранения блочности также можно использовать дополнительные фильтры (внутри контура или после контура). Такие фильтры для краткости не показаны, но, при желании, может фильтровать выходной сигнал сумматора 50 (в качестве внутриконтурного фильтра).
[0080] В ходе процесса кодирования, видеокодер 20 принимает кадр или слайс видео, подлежащий кодированию. Кадр или слайс может делиться на несколько видеоблоков. Блок 42 оценивания движения и блок 44 компенсации движения осуществляют кодирование с интер-предсказанием принятого видеоблока относительно одного или более блоков в одном или более опорных кадров для обеспечения временного прогнозирования. Блок 46 интра-предсказания может альтернативно осуществлять кодирование с интра-предсказанием принятого видеоблока относительно одного или более соседних блоков в одном и том же кадре или слайсе как блока, подлежащего кодированию, для обеспечения пространственного прогнозирования. Видеокодер 20 может осуществлять несколько проходов кодирования, например, для выбора надлежащего режима кодирования для каждого блока видеоданных.
[0081] Кроме того, блок 48 разбиения может разбивать блоки видеоданных на подблоки, на основании оценивание предыдущих схем разбиения в предыдущих проходах кодирования. Например, блок 48 разбиения может первоначально разбивать кадр или слайс на LCU и разбивать каждую из LCU на под-CU на основании анализа скорости-искажения (например, оптимизации скорости-искажения). Блок 40 выбора режима может дополнительно создавать структуру данных квадродерева, указывающую разбиение LCU на под-CU. Краевые CU квадродерева могут включать в себя одну или более PU и одну или более TU.
[0082] Блок 40 выбора режима может выбирать один из режимов кодирования, интра- или интер-, например, на основании ошибочных результатов и выдавать блок, полученный кодированием с интра- или с интер-предсказанием, на сумматор 50 для генерации данных остаточного блока и на сумматор 62 для реконструкции кодированного блока для использования в качестве опорного кадра. Блок 40 выбора режима также выдает элементы синтаксиса, например, векторы движения, индикаторы режима интра-предсказания, информацию разбиения и другую подобную синтаксическую информацию, на блок 56 энтропийного кодирования. В соответствии с методами настоящего раскрытия, блок 40 выбора режима может выдавать информацию, идентифицирующую опорное изображение, например, следует ли рассматривать опорное изображение как долгосрочные опорные изображения или краткосрочные опорные изображения, а также младшие биты (LSB) значений счетчика порядка изображений (POC) для долгосрочных опорных изображений, на блок 56 энтропийного кодирования. Блок 56 энтропийного кодирования, или другой блок видеокодера 20, может включать такую информацию, идентифицирующую опорное изображение, в заголовок слайса для слайса, в соответствии с методами настоящего раскрытия. Альтернативно, блок 56 энтропийного кодирования может включать информацию, идентифицирующую опорное изображение (например, для указания, какие опорные изображения являются долгосрочными опорными изображениями) в набор параметров, например, набор параметров изображения (PPS) или набор параметров последовательности (SPS).
[0083] Как объяснено выше, долгосрочные опорные изображения можно сигнализировать с использованием LSB значений POC для долгосрочных опорных изображений. Например, блок 56 энтропийного кодирования может указывать, что опорное изображение является долгосрочным опорным изображением, посредством сигнализации LSB значения POC для опорного изображения в заголовке слайса, PPS или SPS. Другие опорные изображения, которые не сигнализируются таким образом, можно рассматривать как краткосрочные опорные изображения.
[0084] Посредством сигнализации идентифицирующей информации для долгосрочных опорных изображений, блок 56 энтропийного кодирования обеспечивает данные, указывающие, какие опорные изображения подлежат хранению в буфере декодированных изображений (DPB) видеодекодера (например, видеодекодера 30) в течение относительно продолжительного периода времени, и какие опорные изображения можно удалить из буфера декодированных изображений раньше. В целом, долгосрочные опорные изображения могут использоваться в качестве опорных изображений для кодирования изображений, имеющих относительно поздние времена в порядке декодирования. Таким образом, сигнализация идентифицирующей информации для долгосрочных опорных изображений обеспечивает информацию для видеодекодера, например, видеодекодера 30, чтобы видеодекодер мог определить, можно ли удалить опорное изображение из своего собственного DPB.
[0085] Блок 42 оценивания движения и блок 44 компенсации движения могут быть в высокой степени интегрированы, но проиллюстрированы отдельно из принципиальных соображений. Оценивание движения, осуществляемое блоком 42 оценивания движения, представляет собой процесс генерации векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать перемещение PU видеоблока в текущем кадре видео или изображении относительно прогностического блока в опорном кадре (или другой кодированной единице) относительно блока, в данный момент кодируемого в текущем кадре (или другой кодированной единице). Прогностический блок это блок, в отношении которого установлено, что он хорошо согласуется с блоком, подлежащим кодированию, в отношении пиксельной разности, которая может определяться суммой абсолютных значений разности (SAD), суммой квадратов разностей (SSD) или другими разностными метриками. В некоторых примерах, видеокодер 20 может вычислять значения для субцелых пикселных позиций опорных изображений, хранящихся в памяти 64 опорных изображений. Например, видеокодер 20 может интерполировать значения позиций, определенных с точностью в четверть пикселя, позиции, определенных с точностью в одну восьмую пикселя, или другие дробно-пиксельные позиции опорного изображения. Таким образом, блок 42 оценивания движения может осуществлять поиск движения относительно полно-пиксельных позиций и дробно-пиксельных позиций и выводить вектор движения с дробно-пиксельной точностью.
[0086] Блок 42 оценивания движения вычисляет вектор движения для PU видеоблока в кодированном с интер-предсказанием слайсе, сравнивая позицию PU с позицией прогностического блока опорного изображения. Опорное изображение можно выбирать из первого списка опорных изображений (списка 0) или второго списка опорных изображений (списка 1), каждый из которых идентифицирует одно или более опорных изображений, хранящихся в памяти 64 опорных изображений. В памяти 64 опорных изображений могут храниться как долгосрочные, так и краткосрочные опорные изображения. Блок 42 оценивания движения отправляет вычисленный вектор движения на блок 56 энтропийного кодирования и блок 44 компенсации движения.
[0087] Компенсация движения, осуществляемая блоком 44 компенсации движения, может предусматривать выборку или генерацию прогностического блока на основании вектора движения, определенного блоком 42 оценивания движения. Опять же, блок 42 оценивания движения и блок 44 компенсации движения в некоторых примерах могут быть функционально интегрированы. Приняв вектор движения для PU текущего видеоблока, блок 44 компенсации движения может определять местоположение прогностического блока, на который указывает вектор движения, в одном из списков опорных изображений. Сумматор 50 формирует остаточный видеоблок путем вычитания пиксельных значений прогностического блока из пиксельных значений кодируемого в данный момент видеоблока, формируя разностные значения пикселей, как рассмотрено ниже. В целом, блок 42 оценивания движения осуществляет оценивание движения относительно яркостных компонент, и блок 44 компенсации движения использует векторы движения, вычисленные на основании яркостных компонент как для цветностных компонент, так и для яркостных компонент.
[0088] Блок 40 выбора режима также может генерировать элементы синтаксиса, связанные с видеоблоками и слайсом видео, для использования видеодекодером 30 при декодировании видеоблоков слайса видео. Например, вычислив вектор движения для блока видеоданных (где вектор движения указывает на опорный блок в опорном изображении), блок 40 выбора режима может генерировать значения для параметров движения, например, список опорных изображений, в котором хранится опорное изображение, и индекс списка опорных изображений, который соответствует позиции опорного изображения в списке опорных изображений. Эти и другие параметры движения можно кодировать на основании режима кодирования вектора движения. Например, используя усовершенствованное прогнозирование вектора движения (AMVP), блок 56 энтропийного кодирования может идентифицировать предсказатель вектора движения (соответствующий пространственному или временному соседу текущего блока), и в явном виде сигнализировать список опорных изображений, индекс опорного изображения и значения разности векторов движения по горизонтали и вертикали. В порядке другого примера, используя режим слияния, блок 56 энтропийного кодирования может идентифицировать предсказатель вектора движения с использованием индекса слияния, и список опорных изображений и опорный индекс может наследоваться от предсказателя вектора движения (например, информации движения соседнего блока, будь то пространственный сосед или временной сосед).
[0089] Видеокодер 20 сигнализирует информацию, указывающую, какие опорные изображения являются долгосрочными опорными изображениями, как для указания того, что эти изображения не следует удалять из DPB, так и для обеспечения информации, которую можно использовать в ходе процесса построения списка опорных изображений. Таким образом, видеодекодер, например видеодекодер 30, может быть способен точно воспроизводить список опорных изображений, таким образом, чтобы опорный индекс, используемый в качестве информации движения для блока, полученного интер-предсказанием, точно указывал правильное опорное изображение.
[0090] Как упомянуто выше, долгосрочные опорные изображения можно сигнализировать с использованием значений POC долгосрочных опорных изображений. Значения POC, в общем случае, соответствуют данным, указывающим порядок отображения (также именуемый порядком вывода) изображений, который не обязан совпадать с порядком декодирования (также именуемым порядком битового потока). Значения POC для долгосрочных опорных изображений можно сигнализировать с использованием только младших битов (LSB). Данные, представляющие MSB, можно сигнализировать время от времени, например, когда два или более долгосрочных опорных изображения имеют одинаковые LSB. В ряде случаев, видеокодер 20 может определять, что данные, представляющие MSB для двух (или более) изображений необходимо сигнализировать, даже когда по меньшей мере два изображения, для которых сигнализируются данные MSB, имеют разные LSB.
[0091] В соответствии с методами настоящего раскрытия, видеокодер 20 может сигнализировать данные, представляющие MSB, как разность, например, разность между одним набором MSB и другим набором MSB. Например, как рассмотрено выше в отношении таблицы 1, видеокодер 20 может вычислять разность между значением базовых MSB и значением MSB для долгосрочного опорного изображения. Блок 56 энтропийного кодирования может сигнализировать эту разность как значение, представляющее MSB для долгосрочного опорного изображения. Значение базовых MSB может соответствовать MSB значения POC текущего изображения. Альтернативно, значение базовых MSB может соответствовать MSB значения POC другого изображения, например, изображение мгновенного обновления декодера (IDR).
[0092] После кодирования значения разности для одного долгосрочного опорного изображения, блок 56 энтропийного кодирования может вычислять разность между MSB значения POC для другого долгосрочного опорного изображения и MSB значения POC для более раннего долгосрочного опорного изображения. Аналогично, блок 56 энтропийного кодирования может сигнализировать это второе значение разности для следующего долгосрочного опорного изображения, что позволяет видеодекодеру, например видеодекодеру 30, реконструировать MSB значения POC для следующего долгосрочного опорного изображения. Таким образом, видеокодер 20 может быть выполнен с возможностью кодирования данных, представляющих MSB значений POC для долгосрочных опорных изображений, в виде разностных значений, например, относительно значения базовых MSB или относительно ранее закодированных MSB для значений POC других долгосрочных опорных изображений. Кроме того, видеокодер 20 может сигнализировать эти разностные значения даже когда LSB значений POC отличаются.
[0093] Как рассмотрено выше, в некоторых примерах, видеокодер 20 может быть выполнен с возможностью кодирования отрицательных целочисленных значений для разностных значений, представляющих разности между MSB значений POC для одного или более долгосрочных опорных изображений и значением базовых MSB (или других опорных MSB). Например, когда блок 56 энтропийного кодирования (или другой блок видеокодера 20) определяет, что текущее изображение имеет значение POC, равное MaxPicOrderCntLsb * N−1, и что изображение, которое имеет значение POC, равное MaxPicOrderCntLsb * N, является первым LTRP, для которого сигнализируется delta_poc_msb_cycle_lt[i], блок 56 энтропийного кодирования может кодировать значение -1 для MSB значения POC LTRP.
[0094] Дополнительно или альтернативно, видеокодер 20 может быть выполнен с возможностью кодирования данных, представляющих значения POC для долгосрочных опорных изображений по меньшей мере частично на основании суммарного количества опорных изображений, в данный момент хранящихся в наборе опорных изображений (или буфере декодированных изображений) и/или количества краткосрочных опорных изображений, в данный момент хранящихся в наборе опорных изображений (или буфере декодированных изображений). Например, видеокодер 20 может быть выполнен с возможностью определения, сигнализировать ли значение цикла MSB POC для долгосрочного опорного изображения на основании того, присутствуют ли какие-либо другие долгосрочные опорные изображения в наборе опорных изображений (или буфере декодированных изображений), которые имеют такое же значение LSB POC, как долгосрочное опорное изображение. Таким образом, когда в наборе опорных изображений присутствует только одно или более краткосрочных опорных изображений, имеющих такие же LSB POC, как долгосрочное опорное изображение, видеокодер 20 может избегать кодирования значения цикла MSB POC для долгосрочного опорного изображения.
[0095] Дополнительно или альтернативно, видеокодер 20 может принимать решение не кодировать цикл MSB дельта значение POC для долгосрочного опорного изображения при наличии в буфере декодированных изображений N долгосрочных опорных изображений, имеющих такие же LSB, как значение POC для долгосрочного опорного изображения, и когда видеокодер 20 уже закодировал значения цикла MSB дельта POC для N-1 долгосрочных опорных изображений.
[0096] Блок 46 интра-предсказания может выполнять интра-предсказание текущего блока, в порядке альтернативы интер-предсказанию, осуществляемому блоком 42 оценивания движения и блоком 44 компенсации движения, как описано выше. В частности, блок 46 интра-предсказания может определять, что для кодирования текущего блока нужно использовать режим интра-предсказания. В некоторых примерах, блок 46 интра-предсказания может кодировать текущий блок с использованием различных режимов интра-предсказания, например, в отдельных проходах кодирования, и блок 46 интра-предсказания (или, в некоторых примерах, блок 40 выбора режима) может выбирать использование надлежащего режима интра-предсказания из тестируемых режимов.
[0097] Например, блок 46 интра-предсказания может вычислять значения скорости-искажения с использованием анализа скорости-искажения для различных тестируемых режимов интра-предсказания и выбирать режим интра-предсказания, имеющий наилучшие характеристики скорости-искажения из тестируемых режимов. Анализ скорости-искажения, в общем случае, определяет величину искажения (или ошибки) между кодированным блоком и первоначальным, некодированным блоком, который кодировался для создания кодированного блока, а также битовую скорость (то есть количество битов), используемую для создания кодированного блока. Блок 46 интра-предсказания может вычислять отношения из искажений и скоростей для различных кодированных блоков для определения, какой режим интра-предсказания демонстрирует наилучшее значение скорости-искажения для блока.
[0098] Выбрав режим интра-предсказания для блока, блок 46 интра-предсказания может предоставлять информацию, указывающую выбранный режим интра-предсказания для блока, блоку 56 энтропийного кодирования. Блок 56 энтропийного кодирования может кодировать информацию, указывающую выбранный режим интра-предсказания. Видеокодер 20 может включать в передаваемый битовый поток данные конфигурации, которые могут включать в себя несколько индексных таблиц режима интра-предсказания и несколько модифицированных индексных таблиц режима интра-предсказания (также именуемых таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков и указания наиболее вероятного режима интра-предсказания, индексной таблицы режима интра-предсказания и модифицированной индексной таблицы режима интра-предсказания, подлежащей использованию для каждого из контекстов.
[0099] Видеокодер 20 формирует остаточный видеоблок путем вычитания данных прогнозирования из блока 40 выбора режима из первоначально кодируемого видеоблока. Сумматор 50 представляет компонент или компоненты, которые осуществляют эту операцию вычитания. Блок 52 обработки преобразования применяет преобразование, например, дискретное косинусное преобразование (DCT) или принципиально аналогичное преобразование, к остаточному блоку, создавая видеоблок, содержащий значения остаточных коэффициентов преобразования. Блок 52 обработки преобразования может осуществлять другие преобразования, в принципе, аналогичны DCT. Вейвлетные преобразования, целочисленные преобразования, преобразования поддиапазонов, или также можно использовать другие типы преобразований. В любом случае, блок 52 обработки преобразования применяет преобразование к остаточному блоку, создавая блок остаточных коэффициентов преобразования. Преобразование может преобразовывать остаточную информацию из области пиксельных значений в преобразовательную область, например, частотную область. Блок 52 обработки преобразования может отправлять полученные коэффициенты преобразования на блок 54 квантования. Блок 54 квантования квантует коэффициенты преобразования для дополнительного снижения битовой скорости. Процесс квантования может уменьшать битовую глубину, связанную с некоторыми или всеми из коэффициентов. Степень квантования можно изменять, регулируя параметр квантования. В некоторых примерах, блок 54 квантования может затем осуществлять сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Альтернативно, сканирование может осуществлять блок 56 энтропийного кодирования.
[0100] После квантования, блок 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, блок 56 энтропийного кодирования может осуществлять контекстно-адаптивное кодирование с переменной длиной слова (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), контекстно-адаптивное двоичное арифметическое кодирование на основе синтаксиса (SBAC), энтропийное кодирование с разбиением интервала вероятности (PIPE) или другой метод энтропийного кодирования. В случае энтропийного кодирования на контекстной основе, контекст может базироваться на соседних блоках. После энтропийного кодирования блоком 56 энтропийного кодирования, кодированный битовый поток может передаваться на другое устройство (например, видеодекодер 30) или архивироваться для передачи или извлечения в дальнейшем.
[0101] Блок 58 обратного квантования и блок 60 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, для реконструкции остаточного блока в пиксельной области, например, для использования в дальнейшем в качестве опорного блока. Блок 44 компенсации движения может вычислять опорный блок путем прибавления остаточного блока к прогностическому блоку одного из кадров памяти 64 опорных изображений. Блок 44 компенсации движения также может применять один или более интерполяционных фильтров к реконструированному остаточному блоку для вычисления субцелых пиксельных значений для использования при оценивании движения. Сумматор 62 прибавляет реконструированный остаточный блок к блоку прогнозирования, подвергнутому компенсации движения, созданному блоком 44 компенсации движения, для создания реконструированного видеоблока для сохранения в памяти 64 опорных изображений. Реконструированный видеоблок может использоваться блоком 42 оценивания движения и блоком 44 компенсации движения в качестве опорного блока для интер-кодирования блока в следующем кадре видео.
[0102] Видеокодер 20, показанный на фиг. 2, представляет пример видеокодера, который может быть выполнен с возможностью кодирования данных для текущего изображения видеоданных, причем кодированные данные представляют отрицательное целочисленное значение для цикла старших битов (MSB) счетчика порядка изображений (POC) для долгосрочного опорного изображения для текущего изображения, и кодирования по меньшей мере части текущего изображения относительно долгосрочного опорного изображения по меньшей мере частично на основании отрицательного целочисленного значения для цикла MSB.
[0103] Видеокодер 20, показанный на фиг. 2, также представляет пример видеокодера, который, дополнительно или альтернативно, может быть выполнен с возможностью кодирования по меньшей мере первой части текущего изображения видеоданных относительно первого долгосрочного опорного изображения и по меньшей мере второй части текущего изображения во второе долгосрочное опорное изображение, кодирования первого значения, представляющего разность между значением базовых старших битов (MSB) значения счетчика порядка изображений (POC) текущего изображения видеоданных и значением первых MSB первого значения POC первого долгосрочного опорного изображения видеоданных, и кодирования второго значения, представляющего разность между значением вторых MSB второго значения POC второго долгосрочного опорного изображения видеоданных и значением первых MSB, причем первое значение POC и второе значение POC имеют разные значения младших битов (LSB).
[0104] Видеокодер 20, показанный на фиг. 2, также представляет пример видеокодера, который, дополнительно или альтернативно, может быть выполнен с возможностью определения количества опорных изображений, помеченных как краткосрочные опорные изображения, из суммарного количества доступных опорных изображений, для текущего изображения, кодирования значения старших битов (MSB) для долгосрочных опорных изображений для текущего изображения на основании суммарного количества опорных изображений и количества опорных изображений, помеченных как краткосрочные опорные изображения, и кодирования по меньшей мере части текущего изображения относительно по меньшей мере одного из доступных опорных изображений.
[0105] Видеокодер 20, показанный на фиг. 2, также представляет пример видеокодера, который, дополнительно или альтернативно, может быть выполнен с возможностью определения количества N опорных изображений для текущего изображения, которые имеют значения счетчика порядка изображений (POC) с равными значениями младшего бита (LSB), определения, что набор опорных изображений текущего изображения может включать в себя N долгосрочных опорных изображений, и кодирования значений цикла старших битов (MSB) дельта POC для, самое большее, N-1 долгосрочных опорных изображений на основании определений.
[0106] На фиг. 3 показана блок-схема, демонстрирующая пример видеодекодера 30, который может реализовать методы улучшения сигнализации долгосрочных опорных изображений в заголовках слайсов. В примере, показанном на фиг. 3, видеодекодер 30 включает в себя блок 70 энтропийного декодирования, блок 72 компенсации движения, блок 74 интра-предсказания, блок 76 обратного квантования, блок 78 обратного преобразования, память 82 опорных изображений и сумматор 80. Видеодекодер 30, в некоторых примерах, может осуществлять проход декодирования, в общем случае, обратный проходу кодирования, описанному в отношении видеокодера 20 (фиг. 2). Блок 72 компенсации движения может генерировать данные прогнозирования на основании векторов движения, принятых от блока 70 энтропийного декодирования, а блок 74 интра-предсказания может генерировать данные прогнозирования на основании индикаторов режима интра-предсказания, принятых от блока 70 энтропийного декодирования.
[0107] В ходе процесса декодирования, видеодекодер 30 принимает кодированный битовый поток видеоданных, который представляет видеоблоки кодированного слайса видео и соответствующие элементы синтаксиса от видеокодера 20. Блок 70 энтропийного декодирования видеодекодера 30 энтропийно декодирует битовый поток для генерации квантованных коэффициентов, векторов движения или индикаторов режима интра-предсказания, и других элементов синтаксиса. Блок 70 энтропийного декодирования пересылает векторы движения на и другие элементы синтаксиса на блок 72 компенсации движения. Видеодекодер 30 может принимать элементы синтаксиса на уровне слайсов видео и/или уровне видеоблоков.
[0108] Когда слайс видео кодируется как кодированный с интра-предсказанием (I) слайс, блок 74 интра-предсказания может генерировать данные прогнозирования для видеоблока текущего слайса видео на основании сигнализируемого режима интра-предсказания и данных из ранее декодированных блоков текущего кадра или изображения. Когда кадр видео кодируется как кодированный с интер-предсказанием (т.е. B, P или GPB) слайс, блок 72 компенсации движения создает прогностические блоки для видеоблока текущего слайса видео на основании векторов движения и других элементов синтаксиса, принятых от блока 70 энтропийного декодирования. Прогностические блоки можно создавать из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 30 может строить списки опорных изображений, список 0 и список 1, с использованием принятых по умолчанию методов построения на основании опорных изображений, хранящихся в памяти 82 опорных изображений.
[0109] Видеодекодер 30 может определять набор опорных изображений, из которого видеодекодер 30 строит списки опорных изображений. В некоторых случаях, например, когда видеодекодер 30 согласуется с HEVC, видеодекодер 30 может строить списки опорных изображений в соответствии с разделом 8.3.3 HEVC WD7. Набор опорных изображений, в общем случае, соответствует опорным изображениям, в данный момент хранящимся в буфере декодированных изображений, например, в памяти 82 опорных изображений. Определенные опорные изображения набора опорных изображений могут быть помечены как краткосрочные опорные изображения, тогда как другие опорные изображения набора опорных изображений могут быть помечены как долгосрочные опорные изображения. В целом, долгосрочное опорное изображение помечается как “используемое в качестве долгосрочного опорного”, например, в заголовке единицы уровня сетевых абстракций (NAL) единицы NAL, где инкапсулированы кодированные видеоданные для опорного изображения.
[0110] В соответствии с методами настоящего раскрытия, видеодекодер 30 может быть выполнен с возможностью декодирования идентификаторов для долгосрочных опорных изображений с использованием дифференциального кодирования. Например, для первого долгосрочного опорного изображения (например, долгосрочного опорного изображения, имеющего значение индекса 0 в последовательности изображений), видеодекодер 30 может декодировать значение разности, указывающее разность между MSB POC для долгосрочного опорного изображения и MSB POC для текущего изображения. MSB POC для текущего изображения могут именоваться “базовыми MSB”. Для других долгосрочных опорных изображений (например, долгосрочных опорных изображений, имеющих значение индекса, большее 0 в последовательности изображений), видеодекодер 30 может декодировать значение разности, указывающее разность между MSB POC для долгосрочного опорного изображения и MSB POC для предыдущего долгосрочного опорного изображения. Исходя из того, что долгосрочное опорное изображение, для которого в данный момент определяются MSB POC, имеет значение индекса i, видеодекодер 30 может обращаться к MSB POC долгосрочного опорного изображения, имеющего значение индекса любого значения от 0 до i-1, включительно, для определения MSB POC. Таким образом, видеодекодер 30 может обращаться к MSB POC долгосрочного опорного изображения, имеющего значение индекса j, где j составляет от 0 до i-1, включительно. Значение разности, в ряде случаев, может иметь отрицательное целочисленное значение.
[0111] После приема значения разности, которая описывает разность между MSB POC для долгосрочного опорного изображения, видеодекодер 30 может определять значение MSB POC, к которому применяется значение разности (то есть, к которому нужно прибавить значение разности для реконструкции MSB POC для долгосрочного опорного изображения). Например, если долгосрочное опорное изображение имеет значение индекса 0 (указывающее, что долгосрочное опорное изображение является первым по порядку долгосрочным опорным изображением в последовательности изображений), видеодекодер 30 может использовать значение MSB POC текущего изображения в качестве значения базовых MSB и прибавлять значение разности, сигнализируемое для долгосрочного опорного изображения, к значению базовых MSB. В порядке другого примера, если долгосрочное опорное изображение имеет значение индекса, большее 0 (указывающее, что долгосрочное опорное изображение не является первым по порядку долгосрочным опорным изображением в последовательности изображений), исходя из того, что значение индекса равно i, видеодекодер 30 может прибавлять сигнализируемое значение разности к MSB POC для долгосрочного опорного изображения, имеющего значение индекса i-1.
[0112] Таким образом, видеодекодер 30 может декодировать первое значение, представляющее разность между значением базовых старших битов (MSB) значения счетчика порядка изображений (POC) текущего изображения видеоданных и значением первых MSB первого значения POC первого долгосрочного опорного изображения видеоданных, и декодировать второе значение, представляющее разность между значением вторых MSB второго значения POC второго долгосрочного опорного изображения видеоданных и значением первых MSB, причем первое значение POC и второе значение POC имеют разные значения младших битов (LSB). Аналогично, видеодекодер 30 может вычислять первое значение цикла MSB для первого долгосрочного опорного изображения как DeltaPocMSBCycleLt[i-1] с использованием первого значения (то есть, первого значения разности), и вычислять второе значение цикла MSB для второго долгосрочного опорного изображения как DeltaPocMSBCycleLt[i], причем вычисление второго значения цикла MSB содержит вычисление DeltaPocMSBCycleLt[i] на основании DeltaPocMSBCycleLt[i-1] и второго значения (то есть, второго значения разности).
[0113] Кроме того, видеодекодер 30 может декодировать LSB для значений POC долгосрочных опорных изображений. LSB может сигнализироваться в заголовке слайса для слайса для текущего изображения, набора параметров последовательности (SPS) для последовательности, включающей в себя текущее изображение, набора параметров изображения (PPS) для текущего изображения, или в другом месте. Видеодекодер 30 может сцеплять MSB и LSB для значения POC долгосрочного опорного изображения для определения полного значения POC долгосрочного опорного изображения. Затем видеодекодер 30 может собирать список опорных изображений, включающий в себя долгосрочные опорные изображения, идентифицированные значением POC. Таким образом, видеодекодер 30 может использовать информацию движения (например, данные, которые идентифицируют список опорных изображений, и опорный индекс) для осуществления интер-предсказания. Например, как объяснено ниже, блок 72 компенсации движения может определять опорный блок для блока текущего изображения по меньшей мере частично на основании информации движения, которая идентифицирует опорное изображение, соответствующее одному из изображений в одном из списков опорных изображений. Опорное изображение может соответствовать одному из долгосрочных опорных изображений, или краткосрочному опорному изображению.
[0114] Блок 72 компенсации движения определяет информацию прогнозирования для видеоблока текущего слайса видео, анализируя векторы движения и другие элементы синтаксиса, и использует информацию прогнозирования для создания прогностических блоков для декодируемого в данный момент видеоблока. Например, блок 72 компенсации движения использует некоторые из принятых элементов синтаксиса для определения режима прогнозирования (например, интра- или интер-предсказания), используемого для кодирования видеоблоков слайса видео, типа интер-предсказанного слайса (например, B-слайса, P-слайса или GPB-слайса), информации построения для одного или более из списков опорных изображений для слайса, векторов движения для каждого кодированного с интер-предсказанием видеоблока слайса, статуса интер-предсказания для каждого кодированного с интер-предсказанием видеоблока слайса и другой информации для декодирования видеоблоков в текущем слайсе видео.
[0115] Блок 72 компенсации движения также может осуществлять интерполяцию на основе интерполяционных фильтров. Блок 72 компенсации движения может использовать интерполяционные фильтры, которые используются видеокодером 20 в ходе кодирования видеоблоков, для вычисления интерполированных значений для субцелых пикселей опорных блоков. В этом случае, блок 72 компенсации движения может определять интерполяционные фильтры, используемые видеокодером 20, из принятых элементов синтаксиса и использовать интерполяционные фильтры для создания прогностических блоков.
[0116] Блок 76 обратного квантования осуществляет обратное квантование, т.е. деквантует, квантованные коэффициенты преобразования, обеспеченные в битовом потоке и декодированные блоком 70 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования QPY, вычисленного видеодекодером 30 для каждого видеоблока в слайсе видео для определения степени квантования и, аналогично, степени обратного квантования, которое следует применять. Блок 78 обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование или, в принципе, аналогичный процесс обратного преобразования, к коэффициентам преобразования для создания остаточных блоков в пиксельной области.
[0117] После того, так блок 72 компенсации движения генерирует прогностический блок для текущего видеоблока на основании векторов движения и других элементов синтаксиса, видеодекодер 30 формирует декодированный видеоблок путем суммирования остаточных блоков из блока 78 обратного преобразования с соответствующими прогностическими блоками, генерируемыми блоком 72 компенсации движения. Сумматор 80 представляет компонент или компоненты, которые осуществляют эту операцию суммирования. При желании, фильтр устранения блочности также можно применять для фильтрации декодированных блоков для устранения артефактов блочности. Другие контурные фильтры (либо в контуре кодирования, либо после контура кодирования) также можно использовать для сглаживания пиксельных переходов, или иного повышения качества видео. Затем декодированные видеоблоки в данном кадре или изображении сохраняются в памяти 82 опорных изображений, где хранится опорные изображения, используемые для последующей компенсации движения. В памяти 82 опорных изображений также хранится декодированный видеосигнал для дальнейшего представления на устройстве отображения, например, устройстве 32 отображения, показанном на фиг. 1.
[0118] Таким образом, видеодекодер 30, показанный на фиг. 3, представляет пример видеодекодера, который может быть выполнен с возможностью декодирования первого значения, представляющего разность между значением базовых старших битов (MSB) значения счетчика порядка изображений (POC) текущего изображения видеоданных и значением первых MSB первого значения POC первого долгосрочного опорного изображения видеоданных, декодирования второго значения, представляющего разность между значением вторых MSB второго значения POC второго долгосрочного опорного изображения видеоданных и значением первых MSB, причем первое значение POC и второе значение POC имеют разные значения младших битов (LSB), и декодирования по меньшей мере части текущего изображения видеоданных относительно по меньшей мере одного из первого долгосрочного опорного изображения с использованием первого значения и второго долгосрочного опорного изображения с использованием первого значения и второго значения.
[0119] Видеодекодер 30, показанный на фиг. 3, также представляет пример видеодекодера, который, дополнительно или альтернативно, может быть выполнен с возможностью декодирования данных для текущего изображения видеоданных, причем декодированные данные представляют отрицательное целочисленное значение для цикла старших битов (MSB) счетчика порядка изображений (POC) для долгосрочного опорного изображения относительно текущего изображения, и декодирования по меньшей мере части текущего изображения относительно долгосрочного опорного изображения по меньшей мере частично на основании отрицательного целочисленного значения для цикла MSB.
[0120] Видеодекодер 30, показанный на фиг. 3, также представляет пример видеодекодера, который, дополнительно или альтернативно, может быть выполнен с возможностью определения количества опорных изображений, помеченных как краткосрочные опорные изображения, из суммарного количества доступных опорных изображений, для текущего изображения, декодирования значения старших битов (MSB) для долгосрочных опорных изображений для текущего изображения на основании суммарного количества опорных изображений и количества опорных изображений, помеченных как краткосрочные опорные изображения, и декодирования по меньшей мере части текущего изображения относительно по меньшей мере одного из доступных опорных изображений.
[0121] Видеодекодер 30, показанный на фиг. 3, также представляет пример видеодекодера, который, дополнительно или альтернативно, может быть выполнен с возможностью определения количества N опорных изображений для текущего изображения, которые имеют значения счетчика порядка изображений (POC) с равными значениями младшего бита (LSB), определения, что набор опорных изображений может включать в себя N долгосрочных опорных изображений, и декодирования значений цикла старших битов (MSB) дельта POC для, самое большее, N-1 долгосрочных опорных изображений на основании определений.
[0122] На фиг. 4 показана принципиальная схема, демонстрирующая последовательность кодированных видеоизображений 100-132. Изображения закрашены по-разному для указания позиций в иерархической структуре прогнозирования. Например, изображения 100, 116 и 132 закрашены черным для представления, что изображения 100, 116, 132 располагаются вверху иерархической структуры прогнозирования. Изображения 100, 116, 132 могут содержать, например, кодированные с интра-предсказанием изображения или кодированные с интер-предсказанием изображения, которые прогнозируются из других изображений в одном направлении (например, P-изображения). В случае кодирования с интра-предсказанием, изображения 100, 116, 132 прогнозируются исключительно из данных в одном и том же изображении. В случае кодирования с интер-предсказанием, изображение 116, например, можно кодировать относительно данных изображения 100, как указано пунктирной стрелкой из изображения 116 в изображение 100. Изображения 116, 132 образуют ключевые изображения групп изображений (GOP) 134, 136, соответственно.
[0123] Изображения 108, 124 закрашены темным цветом для указания, что они являются следующими в иерархии кодирования после изображений 100, 116 и 132. Изображения 108, 124 может содержать изображения, кодированные в режиме двунаправленного интер-предсказания. Например, изображение 108 можно прогнозировать из данных изображений 100 и 116, тогда как изображение 124 можно прогнозировать из изображений 116 и 132. Изображения 104, 112, 120 и 128 закрашены светлым цветом для указания, что они являются следующими в иерархии кодирования после изображений 108 и 124. Изображения 104, 112, 120 и 128 также могут содержать изображения, кодированные в режиме двунаправленного интер-предсказания. Например, изображение 104 можно прогнозировать из изображений 100 и 108, изображение 112 можно прогнозировать из изображений 108 и 116, изображение 120 можно прогнозировать из изображений 116 и 124, и изображение 128 можно прогнозировать из изображений 124 и 132. В целом, изображения, стоящие на более низком месте в иерархии, можно кодировать из любых опорных изображений, занимающих более высокое положение в иерархии, исходя из того, что опорные изображения все еще буферизованы в буфере декодированных изображений, и исходя из того, что опорные изображения были закодированы раньше, чем кодируемое в данный момент изображение.
[0124] Наконец, изображения 102, 106, 110, 114, 118, 122, 126 и 130 закрашены белым цветом для указания того, что эти изображения являются последними в иерархии кодирования. Изображения 102, 106, 110, 114, 118, 122, 126 и 130 могут представлять собой изображения, кодированные в режиме двунаправленного интер-предсказания. Изображение 102 можно прогнозировать из изображений 100 и 104, изображение 106 можно прогнозировать из изображений 104 и 108, изображение 110 можно прогнозировать из изображений 108 и 112, изображение 114 можно прогнозировать из изображений 112 и 116, изображение 118 можно прогнозировать из изображения 116 и 120, изображение 122 можно прогнозировать из изображений 120 и 124, изображение 126 можно прогнозировать из изображений 124 и 128, и изображение 130 можно прогнозировать из изображений 128 и 132. Опять же, следует понимать, что изображения, занимающие более низкое положение в иерархии кодирования, можно кодировать из других изображений, занимающих более высокое положение в иерархии кодирования. Например, дополнительно или альтернативно, любое или все изображений 102, 106, 110 или 114 можно прогнозировать относительно любого из изображений 100, 116, или 108.
[0125] Изображения 100-132 проиллюстрированы в порядке отображения. То есть, после декодирования, изображение 100 отображается до изображения 102, изображение 102 отображается до изображения 104, и т.д. Как рассмотрено выше, значения POC, в общем случае, описывают порядок отображения для изображений, который также является, по существу, таким же, как порядок, в котором необработанные изображения были захвачены или сгенерированы до кодирования. Однако, согласно иерархии кодирования, изображения 100-132 можно декодировать в другом порядке. Кроме того, в ходе кодирования, изображения 100-132 могут располагаться в порядке декодирования в битовом потоке, включающем в себя кодированные данные для изображений 100-132. Например, изображение 116 могут отображаться последним из изображений GOP 134. Однако, согласно иерархии кодирования, изображение 116 можно декодировать первым из GOP 134. Таким образом, для правильного декодирования изображения 108, может потребоваться, например, чтобы изображение 116 декодировалось первым, чтобы оно играло роль опорного изображения для изображения 108. Аналогично, изображение 108 может играть роль опорного изображения для изображений 104, 106, 110 и 112, и, таким образом, может потребоваться декодировать его до изображений 104, 106, 110 и 112.
[0126] Кроме того, определенные изображения можно рассматривать как долгосрочные опорные изображения, тогда как другие изображения можно рассматривать как краткосрочные опорные изображения. Предположим, например, что изображения 100 и 116 представляют долгосрочные опорные изображения, а изображения 108, 104 и 112 представляют краткосрочные опорные изображения. В этом примере, может оказаться так, что изображения 102 и 106 можно прогнозировать относительно любого из изображений 100, 116, 108 или 104, но при этом изображения 110 и 114 можно прогнозировать относительно любого из изображений 100, 116, 108 или 112. Другими словами, изображение 104 может не быть доступно в качестве опорного при кодировании изображений 110 и 114. В порядке другого примера, исходя из того, что изображения 100 и 116 представляют долгосрочные опорные изображения, и изображения 108, 104 и 112 представляют краткосрочные опорные изображения, изображения 108, 104 и 112 могут не быть доступны в качестве опорных при кодировании изображений 118, 122, 126 и 130.
[0127] В соответствии с методами настоящего раскрытия, данные, касающиеся долгосрочных опорных изображений, можно сигнализировать в заголовках слайсов для слайсов для любого или всех изображений 100-132. Альтернативно, данные могут сигнализироваться в PPS, SPS или других структурах данных.
[0128] Опять же, предполагая, что изображения 100 и 116 представляют долгосрочные опорные изображения, видеокодер 20 может кодировать MSB POC для изображения 100 как разность относительно значения базовых MSB, например, MSB POC текущего изображения, например, изображения 102. Таким образом, видеокодер 20 может вычислять разность между MSB POC для изображения 100 и MSB POC для изображения 102, и кодировать значение разности для изображения 100. Аналогично, видеокодер 20 может вычислять разность между MSB POC для изображения 116 и MSB POC для изображения 100, и кодировать значение разности для изображения 116. Видеокодер 20 также может кодировать значения LSB для изображений 100 и 116.
[0129] Таким образом, видеодекодер 30 может реконструировать значения POC для изображений 100 и 116 путем декодирования значения разности для изображения 100 и прибавления значения разности к значению базовых MSB для изображения 102. Аналогично, видеодекодер 30 может декодировать значение разности для изображения 116 и прибавлять значение разности к MSB POC для изображения 100. Видеодекодер 30 также может декодировать значения LSB POC для изображений 100 и 116. Видеодекодер 30 может сцеплять MSB POC для изображения 100 с LSB POC для изображения 100 для воспроизведения значения POC для изображения 100. Аналогично, видеодекодер 30 может сцеплять MSB POC для изображения 116 с LSB POC для изображения 116 для воспроизведения значения POC для изображения 116.
[0130] Таким образом, видеокодер 20 и видеодекодер 30 могут быть выполнены с возможностью кодирования первого значения, представляющего разность между значением базовых старших битов (MSB) значения счетчика порядка изображений (POC) текущего изображения видеоданных и значением первых MSB первого значения POC первого долгосрочного опорного изображения видеоданных, кодирования второго значения, представляющего разность между значением вторых MSB второго значения POC второго долгосрочного опорного изображения видеоданных и значением первых MSB, причем первое значение POC и второе значение POC имеют разные значения младших битов (LSB), и кодирования по меньшей мере части текущего изображения видеоданных относительно по меньшей мере одного из первого долгосрочного опорного изображения с использованием первого значения и второго долгосрочного опорного изображения с использованием первого значения и второго значения.
[0131] В частности, видеокодер 20 может кодировать данные, представляющие значения POC для долгосрочных опорных изображений, подлежащих включению в список опорных изображений для текущего изображения, например, изображение 102. В целом, видеокодер 20 может указывать, что опорное изображение должно быть включено в список опорных изображений, когда по меньшей мере часть текущего изображения кодируется относительно опорного изображения. Часть изображения можно считать кодированной относительно опорного изображения, когда блок изображения кодируется с интер-предсказанием относительно опорного изображения, таким образом, что вектор движения для блока указывает на опорный блок опорного изображения. Информация движения для блока может включать в себя идентификатор списка опорных изображений (например, список 0 или список 1), а также опорный индекс, который соответствует опорному изображению в списке опорных изображений, идентифицированному идентификатором списка опорных изображений.
[0132] Таким образом, видеокодер 20 может кодировать блок изображения 102 относительно опорного блока изображения 100. Таким образом, видеокодер 20 может осуществлять поиск движения для блока и определять, что опорный блок изображения 100 создает приемлемое значение ошибки, относительно других опорных блоков. Аналогично, видеокодер 20 может кодировать другой блок изображения 102 относительно опорного блока изображения 116.
[0133] На фиг. 5 показана блок-схема операций, демонстрирующая иллюстративный способ кодирования значений POC для долгосрочных опорных изображений в соответствии с методами настоящего раскрытия. В целях объяснения, способ, представленный на фиг. 5, объяснен в отношении видеокодера 20, показанного на фиг. 1 и 2, и его компонентов. Однако следует понимать, что другие устройства кодирования видеосигнала могут быть выполнены с возможностью осуществления способа, представленного на фиг. 5.
[0134] Первоначально, видеокодер 20 может кодировать данные текущего изображения с использованием одного или более опорных изображений (150). Затем видеокодер 20 может определять опорные изображения, которые использовались для кодирования текущего изображения (152). В частности, видеокодер 20 может определять, какие опорные изображения в наборе доступных опорных изображений фактически используются в качестве опорных при кодировании текущего изображения. В некоторых примерах, этапы 150 и 152 могут объединяться и осуществляться, по существу, одновременно. Доступные опорные изображения могут включать в себя долгосрочные опорные изображения (LTRP) и краткосрочные опорные изображения (STRP). Видеокодер 20 может определять, устанавливать ли опорное изображение как долгосрочное опорное изображение или как краткосрочное опорное изображение, на основании результатов кодирования, полученный по ряду различных пробных проходов кодирования. Например, когда результаты кодирования (например, метрики оптимизации скорости-искажения (RDO)), в общем случае, лучше, когда конкретное опорное изображение рассматривается как долгосрочное опорное изображение (потенциально смещенное на объем памяти, расходуемый для долгосрочного хранения опорного изображения), видеокодер 20 может рассматривать опорное изображение как долгосрочное опорное изображение.
[0135] В любом случае, после определения набора опорных изображений и тех опорных изображений, которые следует рассматривать как долгосрочные опорные изображения, видеокодер 20 может кодировать информацию, которая указывает, какие изображения подлежат включению в списки опорных изображений для текущего изображения в качестве долгосрочных опорных изображений. Кодированная информация может содержать данные, представляющие значения POC для долгосрочных опорных изображений. Видеокодер 20 может кодировать эту информацию в заголовке слайса для слайса текущего изображения, PPS, соответствующий текущему изображению, SPS для последовательности, включающей в себя текущее изображение, или в другом месте.
[0136] Видеокодер 20 может кодировать данные, указывающие MSB значения POC для первого по порядку долгосрочного опорного изображения, а также данные, указывающие LSB значения POC для первого по порядку долгосрочного опорного изображения (154). Для кодирования MSB, видеокодер 20 может вычислять разность между MSB значения POC для первого долгосрочного опорного изображения и MSB значения POC для текущего изображения, и кодировать это вычисленное значение разности.
[0137] Затем видеокодер 20 может определять, равны ли LSB значения POC для следующего LTRP LSB значения POC для другого опорного изображения для текущего изображения (156). Когда видеокодер 20 определяет, что LSB значения POC для следующего LTRP равны LSB значения POC для другого эталона для текущего изображения (ответвление “Да” блока 156), видеокодер 20 может кодировать данные, представляющие разность между MSB значения POC для следующего LTRP и MSB значения POC для предыдущего LTRP (то есть, самое последнее LTRP, для которого кодировалась информация MSB POC) (158). LSB значения POC для самого последнего LTRP не обязательно совпадают с LSB значения POC для LTRP, кодируемого в данный момент. Как рассмотрено выше, для вычисления значения разности, исходя из того, что следующее LTRP имеет значение индекса i, видеокодер 20 может вычислять разность между MSB значения POC для LTRP i и MSB значения POC для LTRP j, если LTRP j было предыдущим LTRP, для которого кодировалась информация MSB POC. Затем видеокодер 20 может кодировать значение разности. Это значение разности может соответствовать delta_poc_msb_cycle_lt[i] (или delta_poc_msb_cycle_lt_plus1[i]).
[0138] После кодирования значения разности, или когда LSB значения POC для следующего LTRP не равны LSB другого опорного изображения (ответвление “Нет” блока 156), видеокодер 20 может кодировать LSB значения POC для LTRP (160). Затем видеокодер 20 может определять, остались ли еще LTRP для текущего изображения (162). Когда остаются еще LTRP для текущего изображения (ответвление “Да” блока 162), видеокодер 20 может переходить для кодирования LSB значений POC для оставшихся LTRP, и, в случае необходимости, MSB, с использованием дифференциального кодирования, как рассмотрено выше. Однако, когда для текущего изображения уже не остается LTRP (ответвление “Нет” блока 162), видеокодер 20 может выводить кодированные данные (164), которые могут включать в себя кодированные блоки для текущего изображения, кодированные значения POC для долгосрочных опорных изображений для текущего изображения (включенные LSB и, когда LSB не являются уникальными, разностные значения для MSB) и пр.
[0139] Таким образом, способ, представленный на фиг. 5, представляет пример способа, включающего в себя кодирование по меньшей мере первой части текущего изображения видеоданных относительно первого долгосрочного опорного изображения и по меньшей мере вторая часть текущего изображения во второе долгосрочное опорное изображение, кодирование первого значения, представляющего разность между значением базовых старших битов (MSB) значения счетчика порядка изображений (POC) текущего изображения видеоданных и значением первых MSB первого значения POC первого долгосрочного опорного изображения видеоданных, и кодирование второго значения, представляющего разность между значением вторых MSB второго значения POC второго долгосрочного опорного изображения видеоданных и значением первых MSB, причем первое значение POC и второе значение POC имеют разные значения младших битов (LSB).
[0140] На фиг. 6 показана блок-схема операций, демонстрирующая иллюстративный способ декодирования значений POC для долгосрочных опорных изображений в соответствии с методами настоящего раскрытия. В целях объяснения, способ, представленный на фиг. 6, объяснен в отношении видеодекодера 30, показанного на фиг. 1 и 3, и его компонентов. Однако следует понимать, что другие устройства декодирования видеосигнала могут быть выполнены с возможностью осуществления способа, представленного на фиг. 6.
[0141] Первоначально, видеодекодер 30 может декодировать MSB и LSB значения POC для первого по порядку долгосрочного опорного изображения (LTRP) текущего изображения (200). Например, видеодекодер 30 может декодировать значение разности, представляющее разность между MSB значения POC для первого LTRP и MSB значения POC для текущего изображения. Затем видеодекодер 30 может прибавлять значение разности к MSB значения POC для текущего изображения, для получения MSB первого LTRP. Видеодекодер 30 также может декодировать LSB значения POC для первого LTRP и сцеплять MSB и LSB значения POC для первого LTRP для воспроизведения значения POC для LTRP. Видеодекодер 30 также может декодировать LSB значения POC только для первого LTRP, когда MSB не отправляются, и может использовать значения LSB только для идентификации, нет ли других опорных изображений с таким же значением LSB POC.
[0142] Затем видеодекодер 30 может декодировать LSB значения POC для следующего LTRP (202). В примере, показанном на фиг. 6, видеодекодер 30 определяет, равны ли LSB значения POC для следующего LTRP LSB другого LTRP для текущего изображения (204). В других примерах, например, как объяснено в отношении вышеприведенной таблицы 1, видеодекодер 30 может определять, указывает ли значение флага, что MSB сигнализируются для значения POC следующего LTRP. В любом случае, видеодекодер 30 может определять, сигнализируются ли MSB для значения POC следующего LTRP. Когда MSB сигнализируются для значения POC следующего LTRP (например, когда LSB значения POC для следующего LTRP равны LSB другого опорного изображения (ответвление “Да” блока 204)), видеодекодер 30 может декодировать MSB значения разности относительно MSB значения POC для предыдущего LTRP (206). Таким образом, видеодекодер 30 может декодировать значение разности, сигнализируемое для LTRP i, и прибавлять значение разности к MSB значения POC для LTRP j, где LTRP j является предыдущим LTRP, для которого декодировалась информация MSB. Видеодекодер 30 может дополнительно повторно собирать значение POC следующего LTRP, сцепляя MSB (вычисленные или определенные неявно) с LSB для следующего LTRP.
[0143] После определения, что LSB значения POC для следующего LTRP не равны LSB другого опорного изображения (ответвление “Нет” блока 204), или после декодирования значения разности для MSB следующего LTRP, видеодекодер 30 может определять, остались ли еще LTRP для текущего изображения (210). Если существуют еще LTRP для текущего изображения (ответвление “Да” блока 210), видеодекодер 30 может переходить к декодированию значений POC для следующего LTRP, например, как рассмотрено выше. Если не осталось LTRP для текущего изображения (ответвление “Нет” блока 210), видеодекодер 30 может собирать один или более списков опорных изображений, включающих в себя сигнализируемые LTRP (212). Затем видеодекодер 30 может декодировать текущее изображение с использованием списка(ов) опорных изображений (214).
[0144] Например, в случае интер-предсказания блока, блок может включать в себя указание списка опорных изображений, опорный индекс списка опорных изображений, который указывает опорное изображение для блока. Блок может дополнительно включать в себя данные для реконструкции вектора движения для блока. Таким образом, видеодекодер 30 может извлекать опорный блок из опорного изображения с использованием вектора движения. Видеодекодер 30 может дополнительно декодировать значение ошибки для блока, например, путем декодирования, обратного квантования и обратного преобразования коэффициентов преобразования для блока. Затем видеодекодер 30 может объединять опорный блок с реконструированным остаточным блоком для декодирования блока.
[0145] Таким образом, способ, представленный на фиг. 6, представляет пример способа, включающего в себя декодирование первого значения, представляющего разность между значением базовых старших битов (MSB) значения счетчика порядка изображений (POC) текущего изображения видеоданных и значением первых MSB первого значения POC первого долгосрочного опорного изображения видеоданных, декодирование второго значения, представляющего разность между значением вторых MSB второго значения POC второго долгосрочного опорного изображения видеоданных и значением первых MSB, причем первое значение POC и второе значение POC имеют разные значения младших битов (LSB), и декодирование по меньшей мере части текущего изображения видеоданных относительно по меньшей мере одного из первого долгосрочного опорного изображения с использованием первого значения и второго долгосрочного опорного изображения с использованием первого значения и второго значения.
[0146] Следует понимать, что в зависимости от примера, определенные действия или события любого из описанных здесь методов можно осуществлять в другой последовательности, можно добавлять, объединять или просто пропускать (например, не все описанные действия или события необходимы для практического осуществления методов). Кроме того, в определенных примерах, действия или события можно осуществлять одновременно, например, посредством многопотоковой обработки, прерывания обработки или нескольких процессоров, а не последовательно.
[0147] В одном или более примеров, описанные функции могут быть реализованы в оборудовании, программном обеспечении, программно-аппаратном обеспечении, или любой их комбинации. Будучи реализованы в программном обеспечении, функции могут храниться или передаваться в виде одной или более инструкций или кода на компьютерно-читаемом носителе и выполняться аппаратным блоком обработки. Компьютерно-читаемые носители могут включать в себя компьютерно-читаемые носители данных, которые соответствует вещественному носителю, например, носители данных или среды передачи данных, включающие в себя любую среду, которая облегчает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, компьютерно-читаемые носители, в общем случае, могут соответствовать (1) вещественным компьютерно-читаемым носителям данных, которые являются некратковременными, или (2) среде передачи данных, например, сигналу или несущей волне. Носителями данных могут быть любые доступные носители, к которым может обращаться один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации методов, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя компьютерно-читаемый носитель.
[0148] В порядке примера, но не ограничения, такие компьютерно-читаемые носители данных могут содержать ОЗУ, ПЗУ, ЭСППЗУ, CD-ROM или другое хранилище на основе оптического диска, хранилище на основе магнитного диска, или другие магнитные запоминающие устройства, флэш-память, или любой другой носитель, который можно использовать для хранения нужного программного кода в форме инструкций или структур данных и к которым может обращаться компьютер. Также, любое соединение уместно именовать машиночитаемым носителем. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, например, инфракрасной, радио и микроволновой, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, например, инфракрасная, радио и микроволновая включаются в определение носителя. Однако следует понимать, что компьютерно-читаемые носители данных и носители данных не включают в себя соединения, несущие волны, сигналы или другие транзиторные среды, но, вместо этого, относятся к некратковременным, вещественным носителям данных. Используемый здесь термин диск, включает в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), флоппи-диск и диск Blu-ray, причем магнитные диски обычно воспроизводят данные магнитными средствами, тогда как оптические диски воспроизводят данные оптическими средствами с помощью лазеров. Комбинации вышеописанных устройств также подлежат включению в объем определения машиночитаемых носителей.
[0149] Инструкции могут выполняться одним или более процессорами, например, одним или более цифровым сигнальным процессорами (DSP), микропроцессорами общего назначения, специализированными интегральными схемами (ASIC), вентильными матрицами, программируемыми пользователем (FPGA), или другой эквивалентной интегральной или дискретной логической схемой. Соответственно, используемый здесь термин термин “процессор” может относиться к любой вышеописанной структуре или любой другой структуре, пригодной для реализации описанных здесь методов. Кроме того, в некоторых аспектах, описанные здесь функциональные возможности могут быть обеспечены в специализированном оборудовании и/или программных модулях, выполненных с возможностью кодирования и декодирования, или включены в объединенный кодек. Кроме того, методы могут быть полностью реализованы в одной или более схемах или логических элементах.
[0150] Методы настоящего раскрытия можно реализовать в самых разнообразных устройствах или аппаратах, включая беспроводной телефон, интегральную схему (ИС) или набор ИС (например, чипсет). Различные компоненты, модули или блоки описаны в настоящем раскрытии, чтобы подчеркнуть функциональные аспекты устройств, выполненные с возможностью осуществления раскрытых методов, но не обязательно требуют реализации разными аппаратными блоками. Напротив, как описано выше, различные блоки могут быть объединены в аппаратном блоке кодека или обеспечены совокупностью взаимодействующих аппаратных блоков, включающих в себя один или более процессоров, как описано выше, совместно с пригодным программным обеспечением и/или программно-аппаратным обеспечением.
[0151] Были описаны различные примеры. Эти и другие примеры соответствуют объему нижеследующей формулы изобретения.