Обмеження однонаправленим інтерпрогнозуванням для блоків прогнозування у в-слайсах
Формула / Реферат
1. Спосіб кодування відеоданих, причому спосіб включає:
визначення, базуючись на розмірній характеристиці блока прогнозування (PU) в В-слайсі відеоданих, меншої порогового значення, того, чи обмежений PU однонаправленим інтерпрогнозуванням;
формування списку кандидатів на злиття для згаданого PU;
визначення вибраного кандидата на злиття зі списку кандидатів на злиття,
при цьому вибраний кандидат на злиття є двонаправленим кандидатом на злиття, при цьому два різних опорних блоки пов'язані з інформацією про рух, заданою вибраним кандидатом на злиття; і
базуючись на PU, обмеженому однонаправленим інтерпрогнозуванням, перетворення вибраного кандидата на злиття, що є двонаправленим кандидатом на злиття, в однонаправлений кандидат на злиття, шляхом збереження вектора руху списку 0 вибраного кандидата на злиття і ігнорування вектора руху списку 1 вибраного кандидата на злиття так, що прогнозований відеоблок для згаданого PU формується на основі не більше ніж одного з двох різних опорних блоків, пов'язаних з інформацією про рух, заданою вибраним кандидатом на злиття.
2. Спосіб за п. 1, в якому визначення того, що згаданий PU обмежений однонаправленим інтерпрогнозуванням, включає:
визначення, базуючись на висоті або ширині відеоблока, пов'язаного зі згаданим PU, які менше порогового значення, що згаданий PU обмежений однонаправленим інтерпрогнозуванням.
3. Спосіб за п. 1, в якому визначення того, що згаданий PU обмежений однонаправленим інтерпрогнозуванням, включає визначення, базуючись на першому розмірі відеоблока, пов'язаного із згаданим PU, меншому або рівному пороговому значенню, і другому розмірі згаданого відеоблока, пов'язаного із згаданим PU, меншому або рівному згаданому граничному значенню, що згаданий PU обмежений однонаправленим інтерпрогнозуванням.
4. Спосіб за п. 1, в якому визначення того, що згаданий PU обмежений однонаправленим інтерпрогнозуванням, містить визначення, ґрунтуючись на першому розмірі відеоблока, пов'язаного зі згаданим PU, меншому першого порогового значення, і другому розмірі згаданого відеоблока, пов'язаного зі згаданим PU, меншому другого порогового значення, що згаданий PU обмежений однонаправленим інтерпрогнозуванням.
5. Спосіб за п. 4, в якому перше порогове значення співпадає з другим пороговим значенням.
6. Спосіб за п. 1, в якому визначення того, чи обмежений згаданий PU однонаправленим інтерпрогнозуванням, включає:
визначення, базуючись на розмірній характеристиці блока кодування (CU), пов'язаного із згаданим PU, меншій або рівній конкретному розміру і меншій порогового значення, що згаданий PU обмежений однонаправленим інтерпрогнозуванням, причому розмірною характеристикою згаданого CU є висота або ширина відеоблока, пов'язаного із згаданим СU.
7. Спосіб за п. 6, в якому конкретний розмір дорівнює восьми і порогове значення дорівнює восьми.
8. Спосіб за п. 1, в якому: визначення вибраного кандидата на злиття включає:
визначення, базуючись на значенні індексу кандидата для PU, вибраного кандидата на злиття в списку кандидатів на злиття;
визначення інформації про рух PU, базуючись на вибраному кандидаті на злиття;
формування прогнозованого блока для поточного PU, базуючись на опорному блоці, пов'язаному з вектором руху списку 0 вибраного кандидата на злиття; і
використання прогнозованого блока для поточного PU і залишкових відеоблоків, пов'язаних з блоками перетворення блока кодування (CU), для відновлення відеоблока даного CU.
9. Спосіб за п. 1, який також включає:
формування бітового потоку, який включає в себе кодований синтаксичний елемент, який вказує місцеположення вибраного кандидата на злиття в списку кандидатів на злиття.
10. Спосіб за п. 1, який виконується на мобільному обчислювальному пристрої.
11. Пристрій відеокодування, який містить:
запам'ятовуючий носій даних, сконфігурований для зберігання відеоданих; і
один або більше процесорів, сконфігурованих для:
визначення, базуючись на розмірній характеристиці блока прогнозування (PU) у В-слайсі відеоданих, меншій порогового значення, того, чи обмежений PU однонаправленим інтерпрогнозуванням;
визначення того, що PU не обмежений однонаправленим інтерпрогнозуванням, якщо розмірна характеристика PU не нижче порогового значення;
формування списку кандидатів на злиття для PU;
визначення вибраного кандидата на злиття зі списку кандидатів на злиття, при цьому вибраний кандидат на злиття є двонаправленим кандидатом на злиття, при цьому два різних опорних блоки пов'язані з інформацією про рух, заданою вибраним кандидатом на злиття; і
ґрунтуючись на PU, обмеженому однонаправленим інтерпрогнозуванням, перетворення вибраного кандидата на злиття, що є двонаправленим кандидатом на злиття, в однонаправленого кандидата на злиття, шляхом збереження вектора руху списку 0 вибраного кандидата на злиття іігнорування вектора руху списку 1 вибраного кандидата на злиття так, що прогнозований відеоблок для згаданого PU формується на основі не більше ніж одного з двох різних опорних блоків, пов'язаних з інформацією про рух, заданою вибраним кандидатом на злиття.
12. Пристрій за п. 11, в якому один або більше процесорів сконфігуровані для визначення, базуючись на висоті або ширині відеоблока, пов'язаного із згаданим PU, які менше порогового значення, що згаданий PU обмежений однонаправленим інтерпрогнозуванням.
13. Пристрій за п. 11, в якому один або більше процесорів сконфігуровані для визначення, базуючись на першому розмірі відеоблока, пов'язаного зі згаданим PU, меншому порогового значення, і другому розмірі згаданого відеоблока, пов'язаного зі згаданим PU, меншому або рівному згаданому пороговому значенню, що згаданий PU обмежений одно направленим інтерпрогнозуванням.
14. Пристрій за п. 11, в якому один або більше процесорів сконфігуровані для:
визначення, базуючись на першому розмірі відеоблока, пов'язаного із згаданим PU, меншому першого порогового значення, і другому розмірі згаданого відеоблока, пов'язаного із згаданим PU, меншому другого порогового значення, що згаданий PU обмежений однонаправленим інтерпрогнозуванням.
15. Пристрій за п. 14, в якому перше порогове значення співпадає з другим пороговим значенням.
16. Пристрій за п. 11, в якому один або більше процесорів сконфігуровані для визначення, базуючись на розмірній характеристиці блока кодування (CU), пов'язаного із згаданим PU, меншій або рівній конкретному розміру і меншій порогового значення, що згаданий PU обмежений однонаправленим інтерпрогнозуванням.
17. Пристрій за п. 16, в якому конкретний розмір дорівнює восьми і порогове значення дорівнює восьми.
18. Пристрій за п. 11, в якому декодують відеодані і в якому один або більше процесорів сконфігуровані для визначення вибраного кандидата на злиття, базуючись на синтаксичному елементі, який вказує місцеположення вибраного кандидата на злиття в списку кандидатів на злиття.
19. Пристрій за п. 11, який є мобільним обчислювальним пристроєм, який містить щонайменше одне з дисплея, сконфігурованого для відображення даних зображення, пов'язаних з PU, або камери, сконфігурованої для формування даних зображення, пов'язаних з PU.
20. Пристрій відеокодування, який містить:
засіб для визначення, базуючись на розмірній характеристиці блока прогнозування (PU) у В-слайсі відеоданих, меншій порогового значення, того, чи обмежений PU однонаправленим інтерпрогнозуванням;
засіб для формування списку кандидатів на злиття для PU;
засіб для визначення вибраного кандидата на злиття зі списку кандидатів на злиття, при цьому вибраний кандидат на злиття є двонаправленим кандидатом на злиття, при цьому два різних опорних блоки пов'язані з інформацією про рух, заданою вибраним кандидатом на злиття; і
засіб для перетворення, базуючись на PU, обмеженому однонаправленим інтерпрогнозуванням, вибраного кандидата на злиття, що є двонаправленим кандидатом на злиття, в однонаправленого кандидата на злиття, шляхом зберігання вектора руху списку 0 вибраного кандидата на злиття і
ігнорування вектора руху списку 1 вибраного кандидата на злиття так, що прогнозований відеоблок для згаданого PU формується на підставі не більше ніж одного з двох різних опорних блоків, пов'язаних з інформацією про рух, заданою вибраним кандидатом на злиття.
21. Пристрій за п. 20, який також містить дисплей, сконфігурований для відображення декодованих відеоданих.
22. Пристрій за п. 20, який також містить камеру, сконфігуровану для захоплення відеоданих.
23. Постійний комп'ютерно-зчитуваний запам'ятовуючий носій, що зберігає команди, які при їх виконанні конфігурують один або більше процесорів для:
визначення, базуючись на розмірній характеристиці блока прогнозування (PU) у В-слайсі відеоданих, меншій порогового значення, того, чи обмежений PU однонаправленим інтерпрогнозуванням;
формування списку кандидатів на злиття для PU;
визначення вибраного кандидата на злиття зі списку кандидатів на злиття, при цьому вибраний кандидат на злиття є двонаправленим кандидатом на злиття, при цьому два різних опорних блоки пов'язані з інформацією про рух, заданою вибраним кандидатом на злиття; і
базуючись на PU, обмеженому однонаправленим інтерпрогнозуванням, перетворення вибраного кандидата на злиття, який є двонаправленим кандидатом на злиття, в однонаправленого кандидата на злиття, шляхом збереження вектора руху списку 0 вибраного кандидата на злиття і ігнорування вектора руху списку 1 вибраного кандидата на злиття так, що прогнозований відеоблок для згаданого PU формується на основі не більше ніж одного з двох різних опорних блоків, пов'язаних з інформацією про рух, заданою вибраним кандидатом на злиття.
Текст
Реферат: UA 114314 C2 (12) UA 114314 C2 Обчислювальний пристрій визначає, чи обмежений блок прогнозування (PU) у В-слайсі однонаправленим інтерпрогнозуванням. Додатково, обчислювальний пристрій формує список кандидатів на злиття для згаданого PU і визначає вибраного кандидата на злиття в списку кандидатів на злиття. Обчислювальний пристрій формує прогнозований відеоблок для згаданого PU на основі не більше одного опорного блока, зв'язаного з інформацією про рух, заданою вибраним кандидатом на злиття, якщо згаданий PU обмежений однонаправленим інтерпрогнозуванням. Обчислювальний пристрій формує прогнозований відеоблок для згаданого PU на основі одного або більше опорних блоків, зв'язаних з інформацією про рух, заданою вибраним кандидатом на злиття, якщо згаданий PU не обмежений однонаправленим інтерпрогнозуванням. UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 Дана заявка заявляє пріоритет за попередньою патентною заявкою США № 61/596,597, поданою 08 лютого 2012 року, і попередньою патентною заявкою США № 61/622968, поданою 11 квітня 2012 року, вміст кожної з яких цілком включений в даний документ за посиланням. ГАЛУЗЬ ТЕХНІКИ, ДО ЯКОЇ НАЛЕЖИТЬ ВИНАХІД Даний винахід стосується відеокодування і, зокрема, інтерпрогнозування при відеокодуванні. РІВЕНЬ ТЕХНІКИ Можливості цифрового відео можуть бути включені в широке різноманіття пристроїв, зокрема в цифрові телевізійні приймачі, системи прямого цифрового мовлення, системи бездротового мовлення, персональні цифрові помічники (PDA), комп'ютери типу "лептоп" або настільні комп'ютери, планшетні комп'ютери, пристрої для читання електронних книг, цифрові камери, цифрові записуючі пристрої, цифрові медіаплеєри, відеоігрові пристрої, відеоігрові консолі, стільникові або супутникові радіотелефони, так звані "смартфони", пристрої для проведення телеконференцій, пристрої потокового відео тощо. Пристрої цифрового відео реалізовують різні методики стиснення відео, які, наприклад, описані в стандартах, визначених як MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Частина 10, стандарт вдосконаленого відеокодування (AVC), стандарт високоефективного відеокодування (HEVC), що знаходиться в процесі розробки, а також розширення вказаних стандартів. Відеопристрої можуть передавати, приймати, кодувати, декодувати і/або запам'ятовувати цифрову відеоінформацію більш ефективно за допомогою реалізації вказаних методик стиснення відео. Згідно з методиками стиснення відео виконує просторове (внутрішньокадрове, інтра-) прогнозування і/або часове (міжкадрове, інтер-) прогнозування з метою зменшення або виключення надмірності, властивої відеопослідовностям. Для відеокодування на блоковій основі відеослайс (тобто, відеокадр або частина відеокадру) може бути розділений на відеоблоки, які також можуть називатися деревоподібними блоками, блоками кодування (CU), і/або вузлами кодування. Відеоблоки в слайсі зображення з інтракодуванням (I) кодують з використанням просторового прогнозування застосовно до опорних відліків у сусідніх блоках одного і того самого зображення. У відеоблоках у слайсі зображення з інтеркодуванням (Р або В) може використовуватися просторове прогнозування відносно опорних відліків у сусідніх блоках одного і того самого зображення або часове прогнозування відносно опорних відліків інших опорних зображень. Зображення можуть називатися кадрами, а опорні зображення можуть називатися опорними кадрами. Внаслідок просторового або часового прогнозування одержують прогнозований відеоблок для блока, що підлягає кодуванню. Залишкові дані представляють піксельну різницю між вихідним блоком, що підлягає кодуванню, і прогнозованим відеоблоком. Блок з інтеркодуванням кодують відповідно до вектора руху, який вказує блок опорних відліків, утворюючих прогнозований відеоблок, і залишкові дані, які вказують відмінність між кодованим блоком і прогнозованим відеоблоком. Блок з інтракодуванням кодують відповідно до режиму інтракодування і залишкових даних. Для подальшого стиснення залишкові дані можна перетворити з піксельної ділянки в ділянку перетворення, внаслідок чого одержують залишкові коефіцієнти перетворення, які потім можна квантувати. Квантовані коефіцієнти перетворення, спочатку скомпоновані в двомірній матриці, можна сканувати для формування одномірного вектора коефіцієнтів перетворення. Потім можна застосувати ентропійне кодування для досягнення ще більшого стиснення. СУТЬ ВИНАХОДУ В цілому, в даному розкритті описуються методики виконання інтерпрогнозування в процесі відеокодування. Відеокодер визначає, чи обмежений блок прогнозування (PU) у В-слайсі однонаправленим інтерпрогнозуванням. Додатково, відеокодер формує список кандидатів на злиття для даного блока PU і визначає вибраного кандидата на злиття в списку кандидатів на злиття. Якщо блок PU обмежений однонаправленим інтерпрогнозуванням, то відеокодер формує прогнозований відеоблок для даного блока PU на основі не більше одного опорного блока, зв'язаного з інформацією про рух, заданою вибраним кандидатом на злиття. Якщо блок PU не обмежений однонаправленим інтерпрогнозуванням, то відеокодер формує прогнозований відеоблок для даного блока PU на основі одного або більше опорних блоків, зв'язаних з інформацією про рух, заданою вибраним кандидатом на злиття. Згідно з одним аспектом описується спосіб кодування відеоданих. Спосіб містить визначення того, чи обмежений блок PU у В-слайсі однонаправленим інтерпрогнозуванням. Спосіб також містить формування списку кандидатів на злиття для даного блока PU. Додатково, спосіб містить визначення вибраного кандидата на злиття в списку кандидатів на злиття. Додатково, спосіб містить формування прогнозованого відеоблока для даного блока PU на 1 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 основі не більше одного опорного блока, зв'язаного з інформацією про рух, заданою вибраним кандидатом на злиття, якщо даний блок PU обмежений однонаправленим інтерпрогнозуванням. Спосіб також містить формування прогнозованого відеоблока для даного блока PU на основі одного або більше опорних блоків, зв'язаних з інформацією про рух, заданою вибраним кандидатом на злиття, якщо даний блок PU не обмежений однонаправленим інтерпрогнозуванням. Згідно з іншим аспектом описується пристрій відеокодування, який містить один або більше процесорів, сконфігурованих для визначення того, чи обмежений блок PU у В-слайсі однонаправленим інтерпрогнозуванням. Цей один або більше процесорів також сконфігуровані для формування списку кандидатів на злиття для даного блока PU і визначення вибраного кандидата на злиття в списку кандидатів на злиття. Цей один або більше процесорів сконфігуровані так, що вони формують прогнозований відеоблок для даного блока PU на основі не більше одного опорного блока, зв'язаного з інформацією про рух, заданою вибраним кандидатом на злиття, якщо даний блок PU обмежений однонаправленим інтерпрогнозуванням. Крім того цей один або більше процесорів також сконфігуровані так, що вони формують прогнозований відеоблок для даного блока PU на основі одного або більше опорних блоків, зв'язаних з інформацією про рух, заданою вибраним кандидатом на злиття, якщо даний блок PU не обмежений однонаправленим інтерпрогнозуванням. Згідно з ще одним аспектом описується пристрій відеокодування, що містить засіб для визначення того, чи обмежений блок PU у В-слайсі однонаправленим інтерпрогнозуванням. Пристрій відеокодування також містить засіб для формування списку кандидатів на злиття для даного блока PU. Додатково, Пристрій відеокодування містить засіб для визначення вибраного кандидата на злиття в списку кандидатів на злиття. Пристрій відеокодування також містить засіб для формування прогнозованого відеоблока для даного блока PU на основі не більше одного опорного блока, зв'язаного з інформацією про рух, заданою вибраним кандидатом на злиття, якщо даний блок PU обмежений однонаправленим інтерпрогнозуванням. Пристрій відеокодування також містить засіб для формування прогнозованого відеоблока для даного блока PU на основі одного або більше опорних блоків, зв'язаних з інформацією про рух, заданою вибраним кандидатом на злиття, якщо даний блок PU не обмежений однонаправленим інтерпрогнозуванням. Згідно з наступним аспектом описується комп'ютерний програмний продукт, який містить один або більше комп'ютерно-зчитуваних запам'ятовуючих носіїв, що зберігають команди, які при їх виконанні конфігурують один або більше процесорів для визначення того, чи обмежений блок PU у В-слайсі однонаправленим інтерпрогнозуванням. Ці команди також конфігурують один або більше процесорів для формування списку кандидатів на злиття для даного блока PU і визначення вибраного кандидата на злиття в списку кандидатів на злиття. Ці команди конфігурують один або більше процесорів для формування прогнозованого відеоблока для даного блока PU на основі не більше одного опорного блока, зв'язаного з інформацією про рух, заданою вибраним кандидатом на злиття, якщо даний блок PU обмежений однонаправленим інтерпрогнозуванням. Ці команди конфігурують один або більше процесорів для формування прогнозованого відеоблока для даного блока PU на основі одного або більше опорних блоків, зв'язаних з інформацією про рух, заданою вибраним кандидатом на злиття, якщо даний блок PU не обмежений однонаправленим інтерпрогнозуванням. У нижченаведеному описі та супровідних кресленнях розкриті подробиці одного або більше прикладів здійснення винаходу. Інші ознаки, цілі та переваги даного винаходу стануть очевидними з його опису і креслень, а також з формули винаходу. КОРОТКИЙ ОПИС КРЕСЛЕНЬ Фіг. 1 - блок-схема, що ілюструє приклад системи відеокодування, яка може використовувати методики, описані в даному винаході; фіг. 2 - блок-схема, що ілюструє приклад відеокодера, який сконфігурований для реалізації описаних тут методик; фіг. 3 - блок-схема, що ілюструє приклад відеодекодера, який сконфігурований для реалізації описаних тут методик; фіг. 4 - блок-схема, що ілюструє наведену як приклад операцію компенсації руху; фіг. 5 - блок-схема, що ілюструє наведену як інший приклад операцію компенсації руху; фіг. 6 - блок-схема, що ілюструє наведену як приклад операцію формування списку кандидатів на злиття; фіг. 7 - блок-схема, що ілюструє наведений як приклад процес формування штучних кандидатів на злиття; 2 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 фіг. 8 - блок-схема, що ілюструє наведену як приклад операцію для визначення інформації про рух блока прогнозування з використанням вдосконаленого режиму прогнозування вектора руху. ДОКЛАДНИЙ ОПИС ВИНАХОДУ Як описується нижче, зображення можна розділити на один або більше слайсів. Кожний слайс може включати в себе ціле число блоків кодування (CU). Кожний блок CU може мати один або більше блоків прогнозування (PU). Слайси можуть являти собою I-слайси, Р-слайси або В-слайси. В І-слайсі для всіх блоків PU використовується інтрапрогнозування. Відеокодер може виконати інтрапрогнозування або однонаправлене інтерпрогнозування на блоках PU у Рслайсах. Коли відеокодер виконує однонаправлене інтерпрогнозування на блоці PU у Р-слайсі, він може ідентифікувати або синтезувати опорний відлік в опорному зображенні, яке увійшло в перший список опорних зображень ("список 0"). Вказаний опорний блок може являти собою блок опорних відліків в опорному зображенні. Опорні відліки можуть відповідати реальним пікселям в опорному блоці або пікселям, які синтезують, наприклад, шляхом інтерполяції з використанням реальних пікселів. Потім відеокодер може сформувати прогнозований відеоблок для блока PU на основі опорного блока для даного PU. Відеокодер може виконати однонаправлене інтерпрогнозування за списком 0, однонаправлене інтерпрогнозування за списком 1 або двонаправлене інтерпрогнозування на блоках PU у В-слайсах. Коли відеокодер виконує однонаправлене інтерпрогнозування на PU за списком 0, він може ідентифікувати опорний блок в опорному зображенні, введеному в список 0, або синтезувати опорний блок на основі опорних відліків в опорному зображенні, внесеному в список 0. Потім відеокодер може сформувати прогнозований відеоблок для даного PU на основі опорного блока. Коли відеокодер виконує однонаправлене інтерпрогнозування на PU за списком 1, він може ідентифікувати опорний блок в опорному зображенні, введеному у другий список опорних зображень ("список 1"), або може синтезувати опорний блок на основі опорних відліків в опорному зображенні, внесеному в список 1. Потім відеокодер може сформувати прогнозований відеоблок для даного PU на основі опорного блока. Коли відеокодер виконує двонаправлене інтерпрогнозування на PU, він може ідентифікувати опорний блок в опорному зображенні, введеному в список 0, або синтезувати опорний блок на основі опорних відліків в опорному зображенні, внесеному в список 0. Додатково, коли відеокодер виконує двонаправлене інтерпрогнозування на даному PU, він може ідентифікувати опорний блок в опорному зображенні, внесеному в список 1, або синтезувати опорний блок на основі опорних відліків в опорному зображенні, внесеному в список 1. Потім відеокодер може сформувати прогнозований відеоблок для даного PU на основі цих двох опорних блоків. Відеокодер може повідомити інформацію про рух блока PU, щоб дати можливість відеодекодеру ідентифікувати або синтезувати опорний блок або опорні блоки, які відеокодер використав для формування прогнозованого відеоблока для даного PU. Інформація про рух блока PU може включати в себе один або більше векторів руху, індекси опорних зображень і прапори, які вказують на основі якого списку (списку 0 і/або списку 1) виконується інтерпрогнозування. У деяких випадках відеокодер може повідомити інформацію про рух блока PU, використовуючи режим злиття. Коли відеокодер передає інформацію про рух даного PU, використовуючи режим злиття, він може сформувати список кандидатів на злиття для даного блока PU. Список кандидатів на злиття може включати в себе множину кандидатів на злиття, кожний з яких задає набір, що містить інформацію про рух. Кандидатом на злиття може бути однонаправлений кандидат на злиття, якщо кандидат на злиття задає інформацію про рух, яка ідентифікує єдине місцеположення в опорному зображенні, внесеному в список 0 або в список 1. Опорний блок може бути зв'язаний з набором, що містить інформацію про рух, якщо відліки в опорному блоці визначені на основі відліків в тому місці, яке ідентифіковане інформацією про рух в опорному зображенні, ідентифікованому інформацією про рух. Наприклад, опорний блок може бути зв'язаний з набором інформації про рух, якщо відліки в опорному блоці співпадають з відліками у відеоблоці в місці, ідентифікованому інформацією про рух в опорному зображенні, ідентифікованому інформацією про рух. Опорний блок також може бути зв'язаний з набором інформації про рух, якщо відліки в цьому опорному блоці синтезовані (наприклад, інтерпольовані) з відліків у відеоблоці в місці, ідентифікованому інформацією про рух в опорному кадрі, ідентифікованому інформацією про рух. Кандидатом на злиття може бути двонаправлений кандидат на злиття, якщо цей кандидат на злиття задає інформацію про рух, яка ідентифікує місце в опорному зображенні, внесеному в список 0, і місце в опорному зображенні, внесеному в список 1. Відеокодер може сформувати інформацію про рух, задану кандидатами на злиття, на основі інформації про рух тих блоків PU, 3 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 які сусідують в просторі з поточним блоком PU, і/або відповідно розташованого блока PU в іншому зображенні. Після формування списку злиття для поточного PU відеокодер може вибрати одного з кандидатів на злиття в списку кандидатів на злиття і просигналізувати про місцеположення в списку кандидатів на злиття вибраного кандидата на злиття. Відеодекодер може визначити інформацію про рух поточного PU на основі інформації про рух, заданої вибраним кандидатом на злиття. З точки зору необхідних операцій і пропускної здатності пам'яті формування прогнозованого відеоблока для блока PU на основі двох опорних блоків може виявитися більш складним, ніж формування прогнозованого відеоблока для даного блока PU на основі одного опорного блока. Складність, пов'язана з формуванням прогнозованих відеоблоків на основі двох опорних блоків, може збільшитися із зростанням кількості блоків PU з двонаправленим інтерпрогнозуванням у В-слайсі. Це може бути особливо актуальним при зростанні кількості невеликих блоків PU з двонаправленим інтерпрогнозуванням. Відповідно, може виявитися вигідним обмежити деякі блоки PU у В-слайсах однонаправленим інтерпрогнозуванням. Відеокодер може обмежити блок PU у В-слайсі однонаправленим інтерпрогнозуванням, вибравши тільки однонаправлених кандидатів на злиття зі списку кандидатів на злиття для даного PU. Однак в деяких випадках список кандидатів на злиття може не включати в себе однонаправлених кандидатів на злиття. У вказаних випадках відеокодер не зможе передати інформацію про рух даного блока PU, використовуючи режим злиття. Це може знизити ефективність кодування. Крім того, навіть в тому випадку, якщо список кандидатів на злиття включає в себе щонайменше один двонаправлений кандидат на злиття, ефективність кодування може знизитися, якщо опорні блоки, зв'язані з інформацією про рух, заданою однонаправленими кандидатами на злиття, не мають достатньої схожості з відеоблоком, зв'язаним з даним PU. Згідно з розкритими тут методиками відеокодер (наприклад, відеокодер або відеодекодер) може визначити, чи обмежений блок PU у В-слайсі однонаправленим інтерпрогнозуванням. Наприклад, відеокодер може визначити, що блок PU обмежений однонаправленим інтерпрогнозуванням, якщо розмірна характеристика цього блока PU менше конкретного порогового значення. Розмірною характеристикою блока PU може бути характеристика розміру відеоблока, зв'язаного з даним PU, така як висота, ширина, довжина діагоналі тощо відеоблока, зв'язаного з даним PU. Додатково, відеокодер може сформувати список кандидатів на злиття для даного PU і визначити вибраного кандидата на злиття в списку кандидатів на злиття. Якщо даний PU обмежений однонаправленим інтерпрогнозуванням, відеокодер може сформувати прогнозований відеоблок для даного PU на основі не більше одного опорного блока, зв'язаного з інформацією про рух, заданою вибраним кандидатом на злиття. Якщо даний блок PU не обмежений однонаправленим інтерпрогнозуванням, то відеокодер може сформувати прогнозований відеоблок для даного PU на основі одного або більше опорних блоків, зв'язаних з інформацією про рух, заданою вибраним кандидатом на злиття. Використовуючи таке обмеження деяких блоків PU однонаправленим інтерпрогнозуванням, відеокодер може зменшити складність формування прогнозованих відеоблоків на основі множини опорних блоків. Це може призвести до збільшення швидкості, з якою відеокодер здатний виконувати кодування відеоданих, і може знизити вимоги до пропускної здатності, необхідної для обробки даних. Для спрощення пояснення винаходу тут описуються місця розташування або відеоблоки, що мають різні просторові взаємозв'язки з блоками CU або PU. Вказаний опис можна інтерпретувати в тому значенні, що вказані місця розташування або відеоблоки мають різні просторові взаємозв'язки з відеоблоками, зв'язаними з блоками CU або PU. Крім того, це може відноситися до блока PU, який в поточний момент кодує відеокодер як поточний PU. Вищесказане може відноситися до блока CU, який в поточний момент кодує відеокодер як поточний блок CU. Також вищесказане може відноситися до зображення, яке в поточний момент кодує відеокодер як поточне зображення. На прикладених кресленнях як ілюстрація показаний ряд прикладів. Елементи, відмічені посилальними позиціями на наведених кресленнях, відповідають елементам, відміченим подібними посилальними позиціями в подальшому описі. Тут передбачається, що елементи, перед назвами яких вживаються порядкові числівники (наприклад, "перший", "другий", "третій" тощо) не обов'язково мають конкретний порядок. Швидше, вказані числівники використовуються просто для посилань на різні елементи одного і того самого або подібного типу. На фіг. 1 представлена блок-схема, де показаний приклад системи 10 відеокодування, в якій можуть бути реалізовані розкриті тут методики. Термін "відеокодер", що використовується тут, в загальному випадку відноситься як до відеокодерів, так і до відеодекодерів. У цьому описі 4 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 терміни "відеокодування" або "кодування" можуть відноситися до відеокодування або до відеодекодування. Як показано на фіг. 1, система 10 відеокодування включає в себе пристрій-джерело 12 і пристрій-адресат 14. Пристрій-джерело 12 формує кодовані відеодані. Відповідно, пристрійджерело 12 може називатися пристроєм відеокодування або апаратом для відеокодування. Пристрій-адресат 14 може декодувати кодовані відеодані, сформовані пристроєм-джерелом 12. Відповідно, пристрій-адресат 14 може називатися пристроєм відеодекодування або апаратом для відеодекодування. Пристрій-джерело 12 і пристрій-адресат 14 являють собою приклади пристроїв відеокодування або апаратів для відеокодування. Пристрій-джерело 12 і пристрій-адресат 14 можуть містити будь-який з найрізноманітніших пристроїв, зокрема, настільний комп'ютер, мобільний обчислювальний пристрій, комп'ютер типу "ноутбук" (тобто, "лептоп"), планшетний комп'ютер, телевізійну приставку, телефонну трубку, таку як так званий "смартфон", телевізійний приймач, камеру, пристрій відображення, цифровий медіаплеєр, відеоігрову консоль, автомобільний комп'ютер або тощо. В деяких випадках пристрій-джерело 12 і пристрій-адресат 14 можуть бути обладнані засобами бездротового зв'язку. Пристрій-адресат 14 може приймати кодовані відеодані від пристрою-джерела 12, через канал 16. Канал 16 може містити середовище або пристрій будь-якого типу, здатний переміщувати кодовані відеодані від пристрою-джерела 12 на пристрій-адресат 14. В одному прикладі канал 16 може містити середовище зв'язку, що дозволяє пристрою-джерелу 12 передавати кодовані відеодані безпосередньо на пристрій-адресат 14 в режимі реального часу. У цьому прикладі кодовані відеодані можуть бути модульовані пристроєм-джерелом 12 відповідно до стандарту зв'язку, такого як протокол бездротового зв'язку, і можуть передаватися на пристрій-адресат 14. Середовище зв'язку може містити бездротове або дротове середовище зв'язку, наприклад, радіочастотний (RF) спектр або одну або більше фізичних ліній передачі. Середовище зв'язку може складати частину мережі пакетної передачі, такої як локальна мережа, регіональна мережа або глобальна мережа, наприклад Інтернет. Середовище зв'язку може включати в себе маршрутизатори, комутатори, базові станції або будь-яке інше обладнання, яке може бути корисне для здійснення зв'язку між пристроєм-джерелом 12 і пристроєм-адресатом 14. В іншому прикладі канал 16 може відповідати запам'ятовуючому носію, який зберігає кодовані відеодані, сформовані пристроєм-джерелом 12. У цьому прикладі пристрій-адресат 14 може звертатися до запам'ятовуючого носія за допомогою доступу до диска або доступу до карти. Запам'ятовуючий носій може включати в себе будь-який запам'ятовуючий носій з числа найрізноманітніших локально доступних носіїв, таких як диски типу Blu-ray, диски DVD, диски CD, флеш-пам'ять, або будь-який інший підходящий цифровий запам'ятовуючий носій для зберігання кодованих відеоданих. У ще одному прикладі канал 16 може включати в себе файловий сервер або інший проміжний запам'ятовуючий пристрій, який може зберігати кодоване відео, сформоване пристроєм-джерелом 12. У цьому прикладі пристрій-адресат 14 може звертатися до запам'ятованих на файловому сервері або в іншому проміжному запам'ятовуючому пристрої відеоданих, використовуючи потокову передачу або завантаження відеоданих. Файловий сервер може являти собою сервер будь-якого типу, здатний запам'ятовувати кодовані відеодані і передавати їх на пристрій-адресат 14. Приклади файлових серверів включають в себе Web-сервер (наприклад, для Web-сайта), сервер протоколу пересилання файлів (FTP), підключені до мережі запам'ятовуючі пристрої (NAS) і локальний накопичувач на диску. Пристрій-адресат 14 може мати доступ до кодованих відеоданих через будь-яке стандартне з'єднання для передачі даних, зокрема Інтернет з'єднання. Зразкові типи з'єднань для передачі даних можуть включати в себе бездротові канали (наприклад, Wi-Fi з'єднання), дротові з'єднання (наприклад, DSL, кабельний модем тощо), або комбінації обох видів з'єднань, які підходять для доступу до кодованих відеоданих, що зберігаються на файловому сервері. Передача кодованих відеоданих з файлового сервера може бути реалізована у вигляді потокової передачі, передачі з вивантаженням або їх комбінації. Розкриті тут методики не обов'язково обмежуються бездротовими додатками або установками. Ці методики можна застосувати до відеокодування для підтримки будь-якого з різноманітних мультимедійних додатків, таких як ефірне телевізійне мовлення, передачі кабельного телебачення, передачі супутникового телебачення, передачі потокового відео, наприклад, через Інтернет, кодування цифрового відео для запам'ятовування на носії даних, декодування цифрового відео, що зберігається на носії даних, або інші додатки. У деяких прикладах система 10 відеокодування може бути сконфігурована для підтримки 5 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 однонаправленої або двонаправленої передачі відео для підтримки додатків, таких як потокове відео, відео відтворення, відеомовлення або відеотелефонія. У прикладі за фіг. 1 пристрій-джерело 12 включає в себе джерело 18 відео, відеокодер 20 і вихідний інтерфейс 22. У деяких випадках вихідний інтерфейс 22 може включати в себе модулятор/демодулятор (модем) і/або передавач. У пристрої-джерелі 12 джерело 18 відео може включати в себе таке джерело, як пристрій захоплення відео, наприклад, відеокамеру, відеоархіви, що містять раніше захоплене відео, інтерфейс подачі відео для прийому відео від провайдера відеоконтенту і/або систему комп'ютерної графіки для формування відеоданих або комбінацію вказаних джерел. Захоплене в даний момент, заздалегідь захоплене або сформоване комп'ютером відео може бути кодоване відеокодером 20. Кодовані відеодані можуть передаватися безпосередньо на пристрій-адресат 14 через вихідний інтерфейс 22 пристрою-джерела 12. Кодовані відеодані також можуть запам'ятовуватися в запам'ятовуючому носії або на файловому сервері для звернення до них в майбутньому з боку пристрою-адресата 14 для декодування і/або відтворення. У прикладі на фіг. 1 пристрій-адресат 14 включає в себе вхідний інтерфейс 28, відеодекодер 30 і пристрій 32 відображення. У деяких випадках вхідний інтерфейс 28 може включати в себе приймач і/або модем. Вхідний інтерфейс 28 пристрою-адресата 14 приймає кодовані відеодані через канал 16. Кодовані відеодані, можуть включати в себе різноманітні синтаксичні елементи, сформовані відеокодером 20, які представляють відеодані. Вказані синтаксичні елементи можуть бути включені в кодовані відеодані, що передаються через середовище зв'язку, що запам'ятовуються на носії даних або запам'ятовуються на файловому сервері. Пристрій 32 відображення може бути складовою частиною або бути зовнішнім по відношенню до пристрою-адресата 14. У деяких прикладах пристрій-адресат 14 може включати в себе інтегрований в нього пристрій відображення, а також бути сконфігурований для взаємодії із зовнішнім пристроєм відображення. В інших прикладах пристроєм-адресатом 14 може бути пристрій відображення. У загальному випадку пристрій 32 відображення відображає користувачу декодовані відеодані. Пристрій 32 відображення може містити будь-який з різноманітних пристроїв відображення, таких як рідкокристалічний дисплей (LCD), плазмовий дисплей, дисплей на органічних світловипромінюючих діодах (OLED) або пристрій відображення іншого типу. Відеокодер 20 і відеодекодер 30 можуть функціонувати згідно зі стандартом стиснення відео, таким як стандарт високоефективного відеокодування (HEVC), що розробляється в цей час, і може відповідати тестовій моделі HEVC (HM). Останній проект стандарту HEVC, що розробляється, який називається "HEVC Working Draft 7" або "WD7", описаний в документі JCTVC-I1003_d54, Bross і інш., "High efficiency video coding (HEVC) text specification draft 7" Об'єднаної команди розробників систем відеокодування (JCT-VC) стандартів ITU-T SG16 WP3 і ISO/IEC JTC1/SC29/WG11, 9th Meeting: Geneva, Switzerland, травень 2012 року, який за станом на 19 липня 2012 року можна скачати з документів http://phenix.intevry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-J1003-v6.zip, вміст яких цілком включений в даний документ за посиланням. Як альтернатива відеокодер 20 і відеодекодер 30 можуть працювати згідно з іншими комерційними або промисловими стандартами, такими як стандарт ITU-T H.264, який також називається MPEG-4, частина 10, AVC (вдосконалене відеокодування) або розширенням вказаних стандартів. Однак методики, розкриті в цьому винаході, не обмежуються яким-небудь конкретним стандартом або методикою кодування. Інші приклади стандартів стиснення відео включають в себе MPEG-2 і ITU-T H.263 і запатентовані або відкриті формати стиснення, такі як VP8 і споріднені формати. Хоча в прикладі на фіг. 1 це не показане, відеокодер 20 і відеодекодер 30 можуть бути інтегровані кожний з аудіокодером і аудіодекодером і можуть включати в себе відповідні блоки MUX-DEMUX (мультиплексор-демультиплексор) або інші апаратні та програмні засоби для кодування як аудіо, так і відео в загальному потоці даних або в окремих потоках даних. У деяких прикладах блоки MUX-DEMUX, якщо вони застосовуються, можуть відповідати Протоколу мультиплексора ITU H.223 або іншим протоколам, таким як Протокол дейтаграм користувача (UDP). Потрібно знову підкреслити, що фіг. 1 є лише прикладом, тобто, розкриті тут методики можуть застосовуватися до систем відеокодування (наприклад, відеокодування або відеодекодування), які не обов'язково включають в себе передачу даних між пристроями кодування і декодування. В інших прикладах дані можуть витягуватися з локальної пам'яті, надходити у вигляді потокової передачі через мережу тощо. Пристрій кодування може кодувати і запам'ятовувати дані в пам'яті, а пристрій декодування може витягувати ці дані з пам'яті та їх 6 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 декодувати. У багатьох прикладах кодування і декодування виконується пристроями, які не мають зв'язок один з одним, а просто кодують дані, направляючи їх в пам'ять, і/або витягують і декодують дані з пам'яті. Відеокодер 20 і відеодекодер 30 можуть бути реалізовані кожний у вигляді будь-яких підходящих схем, таких як один або більше мікропроцесорів, цифрові процесори сигналів (DSP), прикладні спеціалізовані інтегральні схеми (ASIC), вентильні матриці, програмовані користувачем (FPGA), дискретні логічні схеми, апаратні засоби, або будь-яка їх комбінація. При частковій реалізації вказаних методик програмними засобами пристрій може зберігати команди програмного забезпечення на підходящому комп'ютерно-зчитуваному носії тривалого зберігання для виконання цих команд апаратними засобами з використанням одного або більше процесорів, що реалізовують розкриті у винаході методики. Будь-який з вищенаведених засобів (включаючи апаратні засоби, програмні засоби, комбінації апаратних і програмних засобів тощо) можна розглядати як один або більше процесорів. Як відеокодер 20, так і відеодекодер 30 можуть бути включені до складу одного або більше кодерів або декодерів, або кожний з них може бути інтегрований в об'єднаному кодері/декодері ("CODEC") у відповідному пристрої. Винахід в загальному випадку може відноситися до відеокодера 20, що повідомляє деяку інформацію іншому пристрою, наприклад, відеодекодеру 30. Однак потрібно розуміти, що відеокодер 20 може повідомляти інформацію шляхом зв'язування конкретних синтаксичних елементів з різними кодованими частинами відеоданих. Тобто, відеокодер 20 може "сигналізувати" шляхом запам'ятовування деяких синтаксичних елементів у заголовках різних кодованих частин відеоданих. У деяких випадках вказані синтаксичні елементи можуть кодуватися і запам'ятовуватися (наприклад, в системі пам'яті), перш ніж вони будуть прийняті і декодовані відеодекодером 30. Таким чином, термін "сигналізація" в загальному випадку відноситься до передачі синтаксичних або інших даних, що використовуються для декодування стиснутих відеоданих. Вказана передача може здійснюватися в режимі реального часу або близькому до нього режимі. Як альтернатива, вказана передача може здійснюватися через деякий часовий інтервал, який може з'явитися при запам'ятовуванні синтаксичних елементів на носії в кодованому бітовому потоці під час кодування, які потім можуть бути витягнуті пристроєм декодування в будь-який момент часу після запам'ятовування на цьому носії. Як стиснуто згадувалося вище, відеокодер 20 виконує кодування відеоданих. Відеодані можуть містити одне або більше зображень. Кожне з цих зображень може являти собою нерухоме зображення, утворююче частину відео. У деяких прикладах зображення може називатися відео "кадром". Коли відеокодер 20 виконує кодування відеоданих, він може сформувати бітовий потік. Бітовий потік може включати в себе послідовність бітів, яка утворює кодоване представлення відеоданих. Бітовий потік може включати в себе кодовані зображення і зв'язані з ними дані. Кодоване зображення є кодованим представленням зображення. Для формування бітового потоку відеокодер 20 може виконувати операції кодування на кожному зображенні у відеоданих. Коли відеокодер 20 виконує операції кодування на зображеннях, він може сформувати ряд кодованих зображень і зв'язаних з ними даних. Ці зв'язані дані можуть включати в себе Набори параметрів послідовності, набори параметрів зображення, набори параметрів адаптації та інші синтаксичні структури. Набір параметрів послідовності (SPS) може містити параметри, застосовні до нуля або більше послідовностей зображення. Набір параметрів зображення (PPS) може містити параметри, які можна застосувати до нуля або більше зображень. Набір параметрів адаптації (APS) може містити параметри, що застосовуються до нуля або більше зображень. Параметрами в наборі APS можуть бути параметри, які змінюються з більшою імовірністю, ніж параметри в наборі PPS. Для формування кодованого зображення відеокодер 20 може розбити зображення на відеоблоки однакового розміру. Відеоблок може являти собою двомірний масив відліків. Кожний відеоблок зв'язаний з одним деревоподібним блоком. У деяких випадках деревоподібний блок може називатися максимальним блоком кодування (LCU) або "деревоподібним блоком кодування". Деревоподібні блоки стандарту HEVC в широкому значенні аналогічні макроблокам попередніх стандартів, наприклад, H.264/AVC. Однак, деревоподібний блок не обов'язково обмежений конкретним розміром і може включати в себе один або більше блоків кодування (CU). Відеокодер 20 може використовувати розбиття по квадродереву для розділення відеоблоків деревоподібних блоків на відеоблоки, зв'язані з блоками CU (які називаються тому "деревоподібними блоками"). У деяких прикладах відеокодер 20 може розділити зображення на множину слайсів. Кожний слайс може включати в себе цілу кількість блоків CU. У деяких випадках слайс містить ціле число деревоподібних блоків. В інших випадках межа слайса може знаходитися всередині деревоподібного блока. 7 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 Як частина операції кодування зображення відеокодер 20 може виконувати операції кодування для кожного слайса даного зображення. Коли відеокодер 20 виконує операцію кодування слайса, він може сформувати кодовані дані, зв'язані з цим слайсом. Зв'язані зі слайсом кодовані дані можуть називатися "кодованим слайсом". Для формування кодованого слайса відеокодер 20 може виконувати операції кодування для кожного деревоподібного блока в слайсі. Виконуючи операцію кодування для деревоподібного блока, відеокодер 20 може сформувати кодований деревоподібний блок. Кодований деревоподібний блок може містити кодоване представлення про даний деревоподібний блок. Коли відеокодер 20 формує кодований слайс, він може виконати операції кодування (тобто, кодувати) на деревоподібних блоках (які в цьому випадку представляють максимальні блоки кодування) в даному слайсі згідно з порядком растрового сканування. Іншими словами, відеокодер 20 може кодувати деревоподібні блоки слайса в порядку зліва направо з верхнього рядка деревоподібних блоків у слайсі, потім зліва направо за наступним нижчележачим рядком деревоподібних блоків тощо, доки відеокодер 20 не закодує кожний з деревоподібних блоків у даному слайсі. Внаслідок кодування деревоподібних блоків згідно з порядком растрового сканування можуть бути закодовані деревоподібні блоки, що знаходяться вище і лівіше даного деревоподібного блока, але деревоподібні блоки, що знаходяться нижче і правіше даного деревоподібного блока, доки не будуть кодовані. Отже, відеокодер 20 зможе звертатися до інформації, сформованої шляхом кодування деревоподібних блоків, що знаходяться вище і лівіше даного деревоподібного блока, при кодуванні даного деревоподібного блока. Однак, відеокодер 20 не зможе звертатися до інформації, сформованої шляхом кодування деревоподібних блоків, що знаходяться нижче і правіше даного деревоподібного блока при кодуванні даного деревоподібного блока. Для формування кодованого деревоподібного блока відеокодер 20 може рекурсивно виконувати розбиття по квадродереву на відеоблоці деревоподібного блока для розділення відеоблока на все менші відеоблоки. Кожний з цих малих відеоблоків може бути зв'язаний з визначеним блоком CU. Наприклад, відеокодер 20 може розбити відеоблок деревоподібного блока на чотири субблоки однакового розміру, розбити один або більше субблоків на чотири суб-субблоки тощо. Виділений таким чином CU може являти собою CU, чий відеоблок розбитий на відеоблоки, зв'язані з іншими CU. Не виділений CU може являти собою CU, чий відеоблок не розбитий на відеоблоки, зв'язані з іншими CU. Один або більше синтаксичних елементів у бітовому потоці можуть вказувати максимальну кількість розбиттів відеоблока деревоподібного блока, що виконуються відеокодером 20. Відеоблок блока CU може мати форму квадрата. Розмір відеоблока блока CU (тобто, розмір CU) може становити від 8×8 пікселів до розміру відеоблока деревоподібного блока (тобто, розмір деревоподібного блока) з максимальним числом пікселів 64×64 або більше. Відеокодер 20 може виконувати операції кодування (тобто, кодувати) кожний CU деревоподібного блока згідно з порядком z-сканування. Іншими словами, відеокодер 20 може кодувати лівий верхній CU, правий верхній CU, лівий нижній CU, а потім правий нижній CU у вказаному порядку. Коли відеокодер 20 виконує операцію кодування на розділеному CU, він може кодувати блоки CU, зв'язані із субблоками відеоблока розділеного CU згідно з порядком zсканування. Іншими словами, відеокодер 20 може кодувати CU, зв'язаний з лівим верхнім субблоком, CU, зв'язаний з правим верхнім субблоком, CU, зв'язаний з лівим нижнім субблоком, а потім CU, зв'язаний з правим нижнім субблоком, у вказаному порядку. Внаслідок кодування блоків CU деревоподібного блока згідно з порядком z-сканування можуть бути кодовані блоки CU, які лежать вище, вище і зліва, вище і праворуч, зліва, і нижче і зліва даного блока CU. Блоки CU нижче або праворуч від даного блока CU доки залишаються не кодованими. Таким чином, відеокодер 20 здатний звертатися до інформації, сформованої за допомогою кодування деяких блоків CU, що є сусідніми по відношенню до даного блока CU, при кодуванні даного CU. Однак відеокодер 20 не зможе звертатися до інформації, сформованої шляхом кодування інших блоків CU, що є сусідніми по відношенню до даного блока CU при його кодуванні. Коли відеокодер 20 виконує кодування неподіленого CU, він може сформувати один або більше блоків прогнозування (PU) для цього CU. Кожний з блоків PU даного CU може бути зв'язаний зі своїм відеоблоків у відеоблоці даного CU. Відеокодер 20 може сформувати прогнозований відеоблок для кожного PU даного CU. Прогнозований відеоблок блока PU може бути блоком відліків. Для формування прогнозованого відеоблока для PU відеокодер 20 може використовувати інтрапрогнозування або інтерпрогнозування. 8 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 Коли відеокодер 20 використовує інтрапрогнозування для формування прогнозованого відеоблока для PU, він може сформувати прогнозований відеоблок цього PU на основі декодованих відліків зображення, зв'язаного з цим PU. Якщо відеокодер 20 використовує інтрапрогнозування для формування прогнозованих відеоблоків блоків PU для CU, то CU є боком CU з інтрапрогнозуванням. Коли відеокодер 20 використовує інтерпрогнозування для формування відеоблока даного PU, він може сформувати прогнозований відеоблок даного PU на основі декодованих відліків одного або більше зображень, відмінних від зображення, зв'язаного з даним PU. Якщо відеокодер 20 використовує інтерпрогнозування для формування прогнозованих відеоблоків для блоків PU блока CU, то цей CU являє собою CU з інтерпрогнозуванням. Крім того, коли відеокодер 20 використовує інтерпрогнозування для формування прогнозованого відеоблока для PU, він може сформувати інформацію про рух для цього PU. Інформація про рух для PU може вказувати один або більше опорних блоків даного PU. Кожний опорний блок даного PU може являти собою відеоблок в опорному зображенні. Це опорне зображення може відрізнятися від зображення, зв'язаного з даним PU. У деяких випадках опорний блок для PU може також називатися "опорним відліком" даного PU. Відеокодер 20 може сформувати прогнозований відеоблок для даного PU на основі опорних блоків цього PU. Як обговорювалося вище, слайс може бути I-слайсом, Р-слайсом або В-слайсом. В I-слайсі для всіх PU використовується інтрапрогнозування. В Р-слайсах і В-слайсах може використовуватися інтрапрогнозування або інтерпрогнозування. Коли відеокодер 20 виконує інтерпрогнозування на PU у Р-слайсі, він може сформувати інформацію про рух, яка ідентифікує місцеположення в одному опорному зображенні. Іншими словами, для даного PU можливо однонаправлене інтерпрогнозування. Інформація про рух може включати в себе індекс опорного зображення і вектор руху. Індекс опорного зображення може вказувати місце в першому списку опорних зображень ("список 0") опорного зображення. Вектор руху може вказувати просторове зміщення між відеоблоком, зв'язаним з даним PU, і опорним блоком в опорному зображенні. Відеокодер, наприклад, відеокодер 20 або відеодекодер 30, може потім сформувати прогнозований відеоблок для даного PU на основі одного опорного блока, зв'язаного з інформацією про рух даного PU. Наприклад, відеокодер може сформувати прогнозований відеоблок для даного PU таким чином, щоб прогнозований відеоблок відповідав опорному блока. У В-слайсі для PU може бути використане однонаправлене інтерпрогнозування на основі списку 0, однонаправлене інтерпрогнозування на основі другого списку опорних зображень ("список 1") або двонаправлене інтерпрогнозування. Якщо для PU у В-слайсі використане однонаправлене інтерпрогнозування на основі списку 0, то інформація про рух для даного PU може включати в себе індекс опорного зображення зі списку 0 і вектор руху зі списку 0. Індекс опорного зображення зі списку 0 може ідентифікувати опорне зображення шляхом вказівки місцеположення в списку 0 цього опорного зображення. Вектор руху списку 0 може вказувати просторове зміщення між відеоблоком, зв'язаним з даним PU, і опорним блоком в цьому опорному зображенні. Відеокодер 20 може сформувати прогнозований відеоблок для даного PU на основі опорного блока, зв'язаного з вектором руху списку 0. Іншими словами, відеокодер 20 може сформувати прогнозований відеоблок для даного PU на основі блока опорних відліків, ідентифікованих вектором руху списку 0, або може сформувати прогнозований відеоблок для даного блока PU на основі блока опорних відліків, синтезованих (наприклад, інтерпольованих) з блока опорних відліків, ідентифікованих вектором руху списку 0. Якщо для PU у В-слайсі використане однонаправлене інтерпрогнозування на основі списку 1, то інформація про рух для даного PU може включати в себе індекс опорного зображення зі списку 1 і вектор руху зі списку 1. Індекс опорного зображення зі списку 1 може ідентифікувати опорне зображення шляхом вказівки місцеположення в списку 1 даного опорного зображення. Вектор руху списку 1 може вказати просторове зміщення між даним PU і опорним блоком в даному опорному зображенні. Відеокодер 20 може сформувати прогнозований відеоблок для даного PU на основі блока опорних відліків, зв'язаних з вектором руху списку 1. Наприклад, відеокодер 20 може сформувати прогнозований відеоблок для даного PU на основі блока опорних відліків, ідентифікованих вектором руху списку 1, або може сформувати прогнозований відеоблок для даного PU на основі блока опорних відліків, синтезованих (наприклад, інтерпольованих) з блока опорних відліків, ідентифікованих вектором руху списку 1. Якщо для PU у В-слайсі використовується двонаправлене інтерпрогнозування, то інформація про рух для даного PU може включати в себе індекс опорного зображення зі списку 0, вектор руху списку 0, індекс опорного зображення зі списку 1 і вектор руху списку 1. В деяких випадках індекси опорного зображення списку 0 і списку 1 можуть ідентифікувати одне і те саме 9 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 зображення. Відеокодер 20 може сформувати прогнозований відеоблок для даного PU на основі опорних блоків, зв'язаних з векторами руху списку 0 і списку 1. В деяких прикладах відеокодер 20 може сформувати прогнозований відеоблок для даного PU за допомогою інтерполювання прогнозованого відеоблока з відліків в опорному блоці, зв'язаному з вектором руху списку 0, і відліків в опорному блоці, зв'язаному з вектором руху списку 1. Після того, як відеокодер 20 сформує прогнозовані відеоблоки для одного або більше PU блока CU, відеокодер 20 може сформувати залишкові дані для блока CU на основі прогнозованих відеоблоків для даних блоків PU блока CU. Залишкові дані для CU можуть вказувати різниці між відліками в прогнозованих відеоблоках для блоків PU даного CU і вихідного відеоблока даного CU. Крім того, як частина виконання операції кодування на неподіленому CU, відеокодер 20 може сформувати залишкові дані для CU на основі прогнозованих відеоблоків для блоків PU даного CU. Ці залишкові дані для CU можуть вказувати різниці між відліками в прогнозованих відеоблоках для блоків PU даного CU і вихідним відеоблоком даного CU. Крім того, як частина виконання операції кодування на неподіленому CU, відеокодер 20 може виконати рекурсивне розбиття квадродерева на залишкових даних даного блока CU для розділення цих залишкових даних блока CU на один або більше блоків залишкових даних (тобто, залишкових відеоблоків), зв'язаних з блоками перетворення (TU) даного CU. Кожний блок TU блока CU може бути зв'язаний зі своїм залишковим відеоблоків. Відеокодер 20 може застосувати одне або більше перетворень до залишкових відеоблоків, зв'язаних з блоками TU, для формування блоків коефіцієнтів перетворення, зв'язаних з TU. Концептуально, блок коефіцієнтів перетворення може являти собою двомірну (2D) матрицю коефіцієнтів перетворення. Після формування блока коефіцієнтів перетворення відеокодер 20 може виконати процес квантування на блоці коефіцієнтів перетворення. Квантування звичайно відноситься до процесу, в якому коефіцієнти перетворення квантують з метою можливого скорочення обсягу даних, що використовуються для представлення коефіцієнтів перетворення, що забезпечує додаткове стиснення. Процес квантування може зменшити глибину в бітах, зв'язану з деякими або всіма коефіцієнтами перетворення. Наприклад, n-бітовий коефіцієнт перетворення можна округлити до m-бітового коефіцієнта перетворення під час квантування, де n більше m. Відеокодер 20 може зв'язати кожний CU зі значенням параметра квантування (QP). Значення QP, зв'язане з CU, може визначити, яким чином відеокодер 20 квантує блоки коефіцієнтів перетворення, зв'язані з даним CU. Відеокодер 20 може відрегулювати ступінь квантування, що застосовується до блоків коефіцієнтів перетворення, зв'язаних з CU, шляхом регулювання значення QP, зв'язаного з даним CU. Після квантування блока коефіцієнтів перетворення відеокодером 20 він може сформувати набори синтаксичних елементів, які представляють коефіцієнти перетворення в квантованому блоці коефіцієнтів перетворення. Відеокодер 20 може застосувати операції ентропійного кодування, такі як операції контекстного адаптивного двійкового арифметичного кодування (CABAC), до деяких з цих синтаксичних елементів. Бітовий потік, сформований відеокодером 20, може включати в себе ряд одиниць рівня мережної абстракції (NAL). Кожна з одиниць NAL може являти собою синтаксичну структуру, що містить вказівку типу даних в одиниці NAL, і байти, що містить дані. Наприклад, одиниця NAL може містити дані, що представляють набір параметрів послідовності, набір параметрів зображення, кодований слайс, інформацію про додаткове розширення функціональних можливостей (SEI), роздільник блока доступу, дані фільтрації або дані іншого типу. Дані в одиниці NAL можуть включати в себе різні синтаксичні структури. Відеодекодер 30 може прийняти бітовий потік, сформований відеокодером 20. Цей бітовий потік може включати в себе кодоване представлення відеоданих, кодованих відеокодером 20. Одержуючи цей бітовий потік, відеодекодер 30 може виконати на ньому операцію синтаксичного аналізу. Коли відеодекодер 30 виконує операцію синтаксичного аналізу, він може витягнути синтаксичні елементи з бітового потоку. Відеодекодер 30 може відновити зображення з відеоданих на основі синтаксичних елементів, виділених з цього бітового потоку. Процес відновлення відеоданих на основі вказаних синтаксичних елементів звичайно є оберненим по відношенню до процесу, що виконується відеокодером 20 для формування згаданих синтаксичних елементів. Після того, як відеодекодер 30 виділив синтаксичні елементи, зв'язані з CU, він може сформувати прогнозовані відеоблоки для блоків PU даного CU на основі цих синтаксичних елементів. Додатково, відеодекодер 30 може виконати обернене квантування блоків коефіцієнтів перетворення, зв'язаних з блоками TU даного CU. Відеодекодер 30 може виконати 10 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 обернене перетворення блоків коефіцієнтів перетворення для відновлення залишкових відеоблоків, зв'язаних з блоками TU даного CU. Після формування прогнозованих відеоблоків і відновлення залишкових відеоблоків відеодекодер 30 може відновити відеоблок даного CU на основі прогнозованих відеоблоків і залишкових відеоблоків. Таким шляхом відеодекодер 30 може відновити відеоблоки блоків CU на основі синтаксичних елементів у бітовому потоці. Як було описано вище, відеокодер 20 може використовувати інтерпрогнозування для формування прогнозованих відеоблоків, зв'язаних з інформацією про рух для блоків PU блока CU. У багатьох випадках інформація про рух для даного PU швидше всього співпаде або буде близька до інформації про рух для одного або більше сусідніх блоків PU (тобто, блоків PU, чиї відеоблоки є сусідами по відношенню до відеоблока даного PU в просторі або у часі). Оскільки сусідні PU часто мають подібну інформацію про рух, відеокодер 20 може виконати кодування інформації про рух даного PU, звернувшись до інформації про рух одного або більше сусідніх PU. Кодування інформації про рух даного PU із зверненням до інформації про рух одного або більше сусідніх PU може скоротити кількість бітів, яку необхідно мати в бітовому потоці для вказівки про інформацію про рух для даного PU. Відеокодер 20 може кодувати інформацію про рух для даного PU із зверненням до інформації про рух для одного або більше сусідніх PU різними шляхами. Наприклад, відеокодер 20 може кодувати інформацію про рух для даного PU, використовуючи режим злиття або вдосконалений режим прогнозування вектора руху (AMVP). Для кодування інформації про рух з використанням режиму злиття відеокодер 20 може сформувати список кандидатів на злиття для даного PU. Список кандидатів на злиття може включати в себе один або більше кандидатів на злиття. Кожний з кандидатів на злиття задає набір інформації про рух. Відеокодер 20 може сформувати один або більше кандидатів на злиття на основі інформації про рух, заданої блоками PU, які сусідують в просторі з даним блоком PU в одному і тому самому зображенні, і тоді їх можна назвати просторовими кандидатами на злиття, або на основі відповідно розташованого PU в іншому зображенні, і тоді його можна назвати часовим кандидатом на злиття. Якщо інформація про рух, задана кандидатом на злиття, зв'язана з двома опорними блоками, то кандидат на злиття може називатися тут двонаправленим кандидатом на злиття або кандидатом на злиття, що є двонаправленим. В іншому випадку, якщо інформація про рух, задана кандидатом на злиття, зв'язана тільки з одним опорним блоком, то такий кандидат на злиття може називатися тут однонаправленим кандидатом на злиття або кандидатом на злиття, який є однонаправленим. Відеокодер 20 може вибрати одного з кандидатів на злиття зі списку кандидатів на злиття і передати як сигналізацію значення індексу кандидата для даного PU. Значення індексу кандидата може вказувати положення вибраного кандидата на злиття в списку кандидатів на злиття. Коли відеокодер 20 кодує інформацію про рух для PU, використовуючи режим злиття, відеодекодер 30 може сформувати такий самий список кандидатів на злиття для даного PU, як відеокодер 20 сформував для даного PU. Відеодекодер 30 може на основі значення індексу кандидата для даного PU потім визначити, який кандидат на злиття в списку кандидатів на злиття був вибраний відеокодером 20. Потім відеодекодер 30 може прийняти інформацію про рух, задану вибраним кандидатом на злиття, як інформацію про рух для даного PU. Інформація про рух, задана вибраним кандидатом, може включати в себе один або більше векторів руху і один або більше індексів опорного зображення. Коли відеокодер 20 передає як сигналізацію інформацію про рух для PU, використовуючи режим AMVP, він може сформувати список кандидатів-предикторів вектора руху (MV) списку 0 для даного PU, якщо для даного PU використовується однонаправлене інтерпрогнозування на основі списку 0 або якщо для даного PU використовується двонаправлене інтерпрогнозування на основі опорних зображень в списку 0 і в списку 1. Список кандидатів-предикторів MV списку 0 може включати в себе один або більше кандидатів-предикторів MV. Кожний кандидат-предиктор MV задає набір інформації про рух. Відеокодер 20 може вибрати кандидата-предиктора MV списку 0 зі списку кандидатів-предикторів MV списку 0. Відеокодер 20 може як сигналізацію передати прапор предиктора MV зі списку 0, який вказує місцеположення вибраного кандидатапредиктора MV в списку 0 кандидатів-предикторів MV. Прапор предиктора MV списку 0 може бути позначений як "mvp_l0_flag". Додатково, коли відеокодер 20 передає як сигналізацію інформацію про рух для блока PU, використовуючи режим AMVP, він може сформувати список кандидатів-предикторів MV списку 1 для даного PU, якщо для даного PU використовується однонаправлене інтерпрогнозування на основі списку 1 або якщо для даного PU використовується двонаправлене інтерпрогнозування. Список кандидатів-предикторів MV списку 1 може включати в себе один або більше кандидатівпредикторів MV. Кожний кандидат-предиктор MV задає набір інформації про рух. Потім 11 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 відеокодер 20 може вибрати кандидата-предиктора MV списку 1 зі списку кандидатівпредикторів MV списку 1. Відеокодер 20 може як сигналізацію передати прапор предиктора MV списку 1, який вказує місцеположення вибраного кандидата-предиктора MV в списку кандидатівпредикторів MV списку 1. Прапор предиктора MV списку 1 може бути позначений як "mvp_l1_flag". Додатково, коли відеокодер 20 кодує інформацію про рух блока PU, використовуючи режим AMVP, він може обчислити різницю векторів руху (MVD) списку 0 для даного PU, якщо для даного PU використовується однонаправлене інтерпрогнозування на основі списку 0 або якщо для даного PU використовується двонаправлене інтерпрогнозування. MVD списку 0 вказує різницю між вектором руху списку 0 для даного PU і вектором руху списку 0, заданим вибраним кандидатом-предиктором MV списку 0. Додатково, відеокодер 20 може видати MVD списку 1 для даного PU, якщо для даного PU використовується однонаправлене прогнозування на основі списку 1 або якщо для даного PU використовується двонаправлене інтерпрогнозування. MVD списку 1 вказує різницю між вектором руху списку 1 для даного PU і вектором руху списку 1, заданого вибраним кандидатом-предиктором MV списку 1. Відеокодер 20 може передати як сигналізацію MVD списку 0 і/або MVD списку 1. Коли відеокодер 20 передає як сигналізацію інформацію про PU, використовуючи режим AMVP, відеодекодер 30 може незалежно сформувати такі самі списки кандидатів-предикторів MV списку 0 і/або списку 1, які сформував відеокодер 20. В інших прикладах відеокодер 20 може кодувати синтаксичні елементи, які задають списки кандидатів-предикторів MV списку 0 і списку 1. Якщо для PU використовується однонаправлене інтерпрогнозування на основі списку 0 або якщо для даного PU використовується двонаправлене інтерпрогнозування, то відеодекодер 30 може визначити вибраного кандидата-предиктора MV списку 0 зі списку кандидатів предикторів MV списку. Потім відеодекодер 30 може визначити вектор руху списку 0 для даного PU на основі вибраного кандидата-предиктора MV списку 0 і MVD списку 0 для даного PU. Наприклад, відеодекодер 30 може визначити вектор руху списку 0 для даного PU шляхом складання вектора руху списку 0, заданого вибраним кандидатом-предиктором MV списку 0, з MVD списку 0. Якщо для даного PU використовується однонаправлене інтерпрогнозування на основі списку 1 або якщо для даного PU використовується двонаправлене інтерпрогнозування, то відеодекодер 30 може визначити вибраного кандидата-предиктора MV списку 1 зі списку кандидатів-предикторів MV списку 1. Потім відеодекодер 30 може визначити вектор руху списку 1 для даного PU на основі вектора руху списку 1, заданого вибраним кандидатом MV списку 1 і MVD списку 1. Наприклад, відеодекодер 30 може визначити вектор руху списку 1 для даного PU шляхом складання вектора руху списку 1, заданого вибраним кандидатом MV списку 1, і MVD списку 1. Як стиснуто обговорювалося раніше, коли відеокодер 20 виконує інтерпрогнозування на PU у В-слайсі, він може сформувати інформацію про рух, зв'язану з одним або двома опорними блоками для даного PU. Відеокодер, такий як відеокодер 20 або відеодекодер 30, може потім сформувати прогнозований відеоблок для даного PU на основі опорних блоків, зв'язаних з інформацією про рух для даного PU. Щоб сформувати прогнозований відеоблок на основі двох опорних блоків, відеокодер може витягнути з пам'яті обидва опорних блока. Оскільки пропускна здатність пам'яті (тобто, швидкість, з якою можливе пересилання даних з пам'яті) може бути обмежена, для витягання з пам'яті двох опорних блоків можливо буде потрібно більше часу, ніж для витягання одного опорного блока. Тому, якщо В-слайс включає в себе багато невеликих PU з двонаправленим інтерпрогнозуванням, буде потрібний додатковий час для витягання двох опорних блоків для кожного PU, що може призвести до зменшення швидкості, з якою відеокодер здатний формувати прогнозовані відеоблоки для блоків PU у В-слайсі. Згідно з різними прикладами розкритих тут методик відеокодер, такий як відеокодер 20 або відеодекодер 30, може визначити, чи обмежений блок PU в N-слайсі однонаправленим інтерпрогнозуванням. У деяких прикладах відеокодер може визначити, що даний PU обмежений однонаправленим інтерпрогнозуванням на основі розмірної характеристики даного PU або параметра. Додатково, відеокодер може сформувати список кандидатів на злиття для даного PU і визначити вибраного кандидата на злиття в списку кандидатів на злиття. Якщо даний PU обмежений однонаправленим інтерпрогнозуванням, то відеокодер може сформувати прогнозований відеоблок для даного PU на основі не більш ніж одного опорного блока, зв'язаного з інформацією про рух, заданою вибраним кандидатом на злиття. З іншого боку, якщо даний PU не обмежений однонаправленим інтерпрогнозуванням, то відеокодер може сформувати прогнозований відеоблок для цього PU на основі одного або більше опорних блоків, зв'язаних з інформацією про рух, заданою вибраним кандидатом на злиття. Оскільки відеокодер пересилає менше даних з пам'яті при формуванні прогнозованого відеоблока на 12 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 основі одного опорного блока, ніж при формуванні прогнозованого відеоблока на основі двох опорних блоків, обмеження деяких блоків PU у В-слайсах однонаправленим інтерпрогнозуванням з боку відеокодерів і відеодекодерів може збільшити швидкість, з якою відеокодери і відеодекодери здатні формувати прогнозовані відеоблоки для вказаних блоків PU у В-слайсах. Відеокодер, тобто відеокодер або відеодекодер, може визначити, що PU у В-слайсі обмежений однонаправленим інтерпрогнозуванням, на основі різних критеріїв. Наприклад, відеокодер може визначити, що PU у В-слайсі обмежений однонаправленим інтерпрогнозуванням, якщо розмірна характеристика даного PU менше конкретного порогового значення. У цьому прикладі відеокодер може визначити, що даний PU не обмежений однонаправленим інтерпрогнозуванням, якщо розмірна характеристика даного PU не нижче порогового значення. Наприклад, відеокодер може визначити, що даний PU обмежений однонаправленим інтерпрогнозуванням, якщо висота або ширина відеоблока, зв'язаного з цим PU, нижче порогового значення. Наприклад, якщо висота і/або ширина відеоблока, зв'язаного з даним PU, менше N (наприклад, N=8) пікселів, то відеокодер може визначити, що даний PU обмежений однонаправленим інтер-прогнозуванням. В іншому прикладі відеокодер може визначити, що PU у В-слайсі обмежений однонаправленим інтерпрогнозуванням, якщо перший розмір відеоблока, зв'язаного з даним PU, менше порогового значення, а другий розмір відеоблока, зв'язаного з даним PU, менше або дорівнює пороговому значенню. Розміром відеоблока може бути його ширина або його висота. Наприклад, якщо порогове значення дорівнює 8, то відеокодер може визначити, що PU не обмежений однонаправленим інтерпрогнозуванням, якщо ширина відеоблока дорівнює 4, а висота цього відеоблока дорівнює 16. Однак, якщо порогове значення дорівнює 8, то відеокодер може визначити, що даний PU обмежений однонаправленим інтерпрогнозуванням, якщо ширина відеоблока дорівнює 4, а висота цього відеоблока дорівнює 8. В іншому прикладі відеокодер може визначити, що PU у В-слайсі обмежений однонаправленим інтерпрогнозуванням, якщо перший розмір відеоблока, зв'язаний з даним PU, менше першого порогового значення, а другий розмір відеоблока, зв'язаного з даним PU, менше другого порогового значення. Наприклад, відеокодер може визначити, що даний PU обмежений однонаправленим інтерпрогнозуванням, якщо ширина відеоблока менше 8, а висота цього відеоблока менше 16. У деяких випадках перше порогове значення може співпадати з другим пороговим значенням. В іншому прикладі відеокодер може визначити, що даний PU обмежений однонаправленим інтерпрогнозуванням, якщо розмірна характеристика CU, зв'язаного з даним PU (наприклад, поточного CU), дорівнює конкретному розміру, а розмірна характеристика даного PU менше порогового значення. У цьому прикладі відеокодер може визначити, що PU не обмежений однонаправленим інтерпрогнозуванням, якщо розмірна характеристика даного CU не дорівнює конкретному розміру, або розмірна характеристика даного PU не нижче порогового значення. У цьому прикладі згаданий конкретний розмір може бути рівний N (наприклад, N=8) пікселів, а порогове значення також може бути рівне N (наприклад, N=8) пікселів. У даному прикладі для блока CU розміром 8×8 будь-якому PU даного CU, що має розмір, менший, ніж 8×8, може бути заборонене двонаправлене інтерпрогнозування. У ще одному прикладі відеокодер може визначити, що PU у В-слайсі обмежений однонаправленим інтерпрогнозуванням, якщо деякий параметр вказує, що блоки PU у В-слайсі повинні бути обмежені однонаправленим інтерпрогнозуванням. Відеокодер може обмежити PU у В-слайсі однонаправленим інтерпрогнозуванням різними шляхами. Наприклад, відеокодер може проігнорувати один з опорних блоків, зв'язаних з інформацією про рух для даного PU, і сформувати для нього прогнозований відеоблок на основі іншого опорного блока, зв'язаного з інформацією про рух даного PU. Наприклад, відеокодер може сформувати список кандидатів на злиття, і, якщо вибраний кандидат на злиття є двонаправленим кандидатом на злиття, то відеокодер може сформувати прогнозований відеоблок для цього PU на основі опорного блока, зв'язаного з індексом опорного зображення зі списку 0 вибраного кандидата на злиття і вектора руху списку 0 вибраного кандидата на злиття. В аналогічному прикладі відеокодер може сформувати прогнозований відеоблок для даного PU на основі опорного блока, зв'язаного з індексом опорного зображення списку 1 вибраного кандидата на злиття і вектором руху списку 1, вибраного кандидатом на злиття. В іншому прикладі, присвяченому тому, яким чином відеокодер може обмежити PU у Вслайсі однонаправленим інтерпрогнозуванням, відеокодер може містити однонаправлені кандидати на злиття в списку кандидатів на злиття для даного PU без двонаправлених кандидатів на злиття в списку кандидатів на злиття для даного PU. У цьому прикладі відеокодер 13 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 не виконує перетворення двонаправлених кандидатів на злиття в однонаправлені кандидати на злиття. У даному прикладі відеокодер може містити в списку кандидатів на злиття штучні однонаправлені кандидати на злиття, якщо кількість наявних однонаправлених кандидатів на злиття недостатня для заповнення списку кандидатів на злиття. Штучним кандидатом на злиття може бути кандидат на злиття, сформований на основі інформації про рух одного або більше PU, однак штучний кандидат не задає інформацію про рух для одного або більше PU. В іншому прикладі, зв'язаному з тим, яким чином відеокодер може обмежити PU у В-слайсі однонаправленим інтерпрогнозуванням, відеокодер може перетворити двонаправлені кандидати на злиття в один або більше однонаправлених кандидатів на злиття і внести один або більше однонаправлених кандидатів на злиття в список кандидатів на злиття. У деяких вказаних прикладах відеокодер може перетворити двонаправленого кандидата на злиття в єдиний однонаправлений кандидат на злиття, зв'язаний з опорним зображенням у списку 0 або опорним зображення в списку 1. В деяких з вказаних випадків, коли відеокодер перетворює двонаправлених кандидатів на злиття в однонаправлені кандидати на злиття, однонаправлені кандидати на злиття прив'язуються до опорних зображень в конкретному опорному списку. Наприклад, відеокодер може перетворити двонаправленого кандидата на злиття в один однонаправлений кандидат на злиття, зв'язаний з опорним зображенням в списку 0. Як альтернатива, відеокодер може перетворити двонаправленого кандидата на злиття в єдиного однонаправленого кандидата на злиття, зв'язаного з опорним зображенням в списку 1. В інших подібних прикладах відеокодер може перетворити двонаправленого кандидата на злиття в два однонаправлених кандидати на злиття, один з яких зв'язаний з опорним зображенням в списку 0, а інший зв'язаний з опорним зображенням в списку 1. Таким чином, в деяких прикладах після формування списку кандидатів на злиття відеокодер може перетворити двонаправленого кандидата на злиття в списку кандидатів на злиття в однонаправленого кандидата на злиття і включити цього однонаправленого кандидата на злиття в список кандидатів на злиття за місцем двонаправленого кандидата на злиття. У деяких прикладах відеокодер може видалити дубльованих кандидатів на злиття зі списку кандидатів на злиття перед перетворенням двонаправлених кандидатів на злиття в однонаправлені кандидати на злиття. В інших прикладах відеокодер може видалити дубльованих кандидатів на злиття зі списку кандидатів на злиття після перетворення двонаправлених кандидатів на злиття в однонаправлені кандидати на злиття. Коли відеокодер 20 виконує кодування інформації про рух для PU у В-слайсі, використовуючи AMVP, відеокодер 20 може сформувати, кодувати, використовуючи ентропійне кодування, і вивести індикатор режиму інтерпрогнозування для даного PU. Індикатор режиму інтерпрогнозування може бути представлений у вигляді "inter_pred_idc". Індикатор режиму інтерпрогнозування може вказувати, чи використовується для даного PU однонаправлене інтерпрогнозування на основі списку 0, однонаправлене інтерпрогнозування на основі списку 1 або двонаправлене інтерпрогнозування. Відеодекодер 30 може використовувати індикатор режиму інтерпрогнозування при виконанні інтерпрогнозування для даного PU. Оскільки індикатор режиму інтерпрогнозування має три можливих значення, цей індикатор може бути представлений з використанням двох бітів. Однак в тому випадку, якщо PU у В-слайсі обмежений однонаправленим інтерпрогнозуванням, то індикатор режиму інтерпрогнозування може мати два можливих значення: однонаправлене інтерпрогнозування на основі списку 0 і однонаправлене інтерпрогнозування на основі списку 1. Таким чином, згідно з розкритими тут методиками, якщо PU у В-слайсі обмежений однонаправленим інтерпрогнозуванням, то індикатор режиму інтерпрогнозування може бути представлений з використанням одного біта. В іншому випадку, якщо даний PU не обмежений однонаправленим інтерпрогнозуванням, то індикатор режиму інтерпрогнозування можна представити, використовуючи два біти. Представлення індикатора режиму інтерпрогнозування з використанням одного біта, коли даний PU обмежений однонаправленим інтерпрогнозуванням, може підвищити ефективність кодування. Крім того, для ентропійного кодування індикатора режиму інтерпрогнозування для PU у Вслайсі можна використовувати інші контексти, якщо даний PU обмежений однонаправленим інтерпрогнозуванням, відмінні від випадків, коли даний PU не обмежений однонаправленим інтерпрогнозуванням. Це дозволяє додатково підвищити ефективність кодування. На фіг. 2 представлена блок-схема, що ілюструє представлений як приклад відеокодер 20, який сконфігурований для реалізації розкритих тут методик. Фіг. 2 представлена для пояснення, і її зміст не треба трактувати як обмеження методик, розкритих в цьому описі на множині різних прикладів. Для пояснення цих методик відеокодер 20 описаний тут в контексті кодування HEVC. Однак розкриті тут методики застосовні і до інших стандартів або способів кодування. 14 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 У прикладі на фіг. 2 відеокодер 20 включає в себе множину функціональних компонент. Функціональні компоненти відеокодера 20 включають в себе модуль 100 прогнозування, модуль 102 формування залишків, модуль 104 перетворення, модуль 106 квантування, модуль 108 оберненого квантування, модуль 110 оберненого перетворення, модуль 112 відновлення, модуль 113 фільтрів, буфер 114 декодованих зображень і модуль 116 ентропійного кодування. Модуль 100 прогнозування включає в себе модуль 121 інтерпрогнозування, модуль 122 оцінки руху, модуль 124 компенсації руху і модуль 126 інтрапрогнозування. В інших прикладах відеокодер 20 може включати в себе більшу або меншу кількість функціональних компонент або інші функціональні компоненти. Крім того, модуль 122 оцінки руху і модуль 124 компенсації руху можуть складати єдиний модуль з високим ступенем інтеграції, але вони представлені в прикладі на фіг. 2 окремо для зручності пояснення. Відеокодер 20 може приймати відеодані. Відеокодер 20 може приймати відеодані з різних джерел. Наприклад, відеокодер 20 може приймати відеодані від джерела 18 відео (фіг. 1) або іншого джерела. Відеодані можуть представляти ряд зображень. Для кодування відеоданих відеокодер 20 може виконувати операцію кодування для кожного зображення. Як частина виконання операції кодування зображення, відеокодер 20 може виконувати операції кодування на кожному слайсі даного зображення. Як частина виконання операції кодування на слайсі, відеокодер 20 може виконувати операції кодування на деревоподібних блоках у даному слайсі. Як частина виконання операції кодування на деревоподібному блоці, модуль 100 прогнозування може виконати розділення по квадродереву на відеоблоці деревоподібного блока, щоб розділити відеоблок на відеоблоки все меншого розміру. Кожний з відеоблоків все меншого розміру може бути зв'язаний з окремим CU. Наприклад, модуль 100 прогнозування може розділити відеоблок одного деревоподібного блока на чотири субблоки однакового розміру, розділити один або більше з цих субблоків на чотири суб-субблоки однакового розмірутощо. Розміри відеоблоків, зв'язаних з блоками CU, можуть знаходитися в діапазоні від 8×8 відліків до розміру деревоподібного блока, що має максимум 64×64 відліку або більше. У даному описі "NхN" і "N на N" можуть використовуватися як взаємозамінні для посилання на розміри відеоблоків по вертикалі і горизонталі, наприклад, 16×16 відліків або 16 на 16 відліків. У загальному випадку відеоблок 16×16 має шістнадцять відліків у вертикальному напрямку (у=16) і шістнадцять відліків в горизонтальному напрямку (х=16). Аналогічним чином блок NxN звичайно містить N відліків у вертикальному напрямку і N відліків у горизонтальному напрямку, де N представляє не негативне ціле число. Крім того, як частина виконання операції кодування на деревоподібному блоці, модуль 100 прогнозування може сформувати ієрархічну структуру даних у вигляді квадродерева для деревоподібного блока. Наприклад, деревоподібний блок може відповідати кореневому вузлу структури даних у вигляді квадродерева. Якщо модуль 100 прогнозування розбиває відеоблок деревоподібного блока на чотири субблоки, то даний кореневий вузол має чотири дочірніх вузли в структурі даних у вигляді квадродерева. Кожний з дочірніх вузлів відповідає блоку CU, зв'язаному з одним з субблоків. Якщо модуль 100 прогнозування розбиває один з субблоків на чотири суб-субблоки, то вузол, що відповідає даному CU, зв'язаному з даним субблоком, може мати чотири дочірніх вузли, кожний з яких відповідає CU, зв'язаному з одним з вказаних субсубблоків. Кожний вузол структури даних у вигляді квадродерева може містити синтаксичні дані (наприклад, синтаксичні елементи) для відповідного деревоподібного блока або CU. Наприклад, вузол в квадродереві може включати в себе прапор розщеплення, який вказує, чи розділений (тобто, чи розщеплений) відеоблок даного CU, що відповідає даному вузлу, на чотири субблоки. Синтаксичні елементи для CU можна визначити рекурсивно, причому вони можуть залежати від того, чи розщеплений відеоблок даного CU на субблоки. CU, чий відеоблок не розділений, може відповідати кінцевому вузлу в структурі даних у вигляді квадродерева. Кодований деревоподібний блок може включати в себе дані на основі структури даних у вигляді квадродерева для відповідних деревоподібних блоків. Відеокодер 20 може виконувати операції кодування на кожному не розділеному CU деревоподібного блока. Коли відеокодер 20 виконує операцію кодування на неподіленому CU, він може сформувати кодоване представлення цього неподіленого CU. Як частина виконання операції кодування на CU, модуль 100 прогнозування може розбити відеоблок цього CU для одного або більше PU цього CU. Відеокодер 20 і відеодекодер 30 можуть підтримувати різні розміри PU. Якщо припустити, що розмір конкретного CU становить 2Nx2N, то відеокодер 20 і відеодекодер 30 можуть підтримувати розміри PU, що становлять 2Nx2N або NxN для інтрапрогнозування і симетричні розміри PU, що становлять 2Nx2N, 2NxN, 15 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 Nx2N, NxN тощо для інтерпрогнозування. Відеокодер 20 і відеодекодер 30 також можуть підтримувати асиметричну розбиття для розмірів PU, що становлять 2NxnU, 2NxnD, nLx2N та nRx2N для інтерпрогнозування. У деяких прикладах модуль 100 прогнозування може виконувати геометричну розбиття для розділення відеоблока CU по блоках PU даного CU вздовж межі, яка не перетинає сторони відеоблока даного CU під прямими кутами. Модуль 121 інтерпрогнозування може виконати інтерпрогнозування на кожному PU даного CU. Інтерпрогнозування може забезпечити часове стиснення. Коли модуль 121 інтерпрогнозування виконує інтерпрогнозування для PU, він може сформувати прогнозовані дані для цього PU. Прогнозовані дані для вказаного PU можуть включати в себе прогнозований відеоблок, який відповідає даному PU та інформації про рух для даного PU. Модуль 122 оцінки руху може сформувати інформацію про рух для даного PU. У деяких випадках модуль 122 оцінки руху може використовувати режим злиття або режим AMVP для передачі інформації про рух для даного PU як сигналізації. Модуль 124 компенсації руху може сформувати прогнозований відеоблок для даного PU на основі відліків одного або більше зображень, відмінних від поточного зображення (наприклад, опорних зображень). Слайси можуть являти собою I-слайси, Р-слайси або В-слайси. Модуль 122 оцінки руху і модуль 124 компенсації руху можуть виконувати різні операції для PU блока CU залежно від того, чи знаходиться даний PU в I-слайсі, Р-слайсі або В-слайсі. В I-слайсі для всіх PU використовується інтрапрогнозування. Таким чином, якщо PU знаходиться в I-слайсі, то модуль 122 оцінки руху і модуль 124 компенсації руху не виконують інтерпрогнозування на даному PU. Якщо PU знаходиться в Р-слайсі, то зображення, що містить цей PU, зв'язане зі списком опорних зображень, який називається "списком 0". У деяких прикладах кожне опорне зображення, що входить в список 0, з'являється перед поточним зображенням в порядку відображення. Кожне з опорних зображень в списку 0 містить відліки, які можна використовувати для інтерпрогнозування інших зображень. Коли модуль 122 оцінки руху виконує операцію оцінки руху застосовно до PU в Р-слайсі, цей модуль може здійснювати пошук опорних зображень в списку 0 для опорного блока для даного PU. Опорний блок даного PU може являти собою набір відліків, наприклад, блок відліків, які краще за інших відповідають відлікам у відеоблоці даного PU. Модуль 122 оцінки руху може використовувати різні показники для визначення того, наскільки добре набір відліків в опорному зображенні відповідає відлікам у відеоблоці блока PU. Наприклад, модуль 122 оцінки руху може визначити, наскільки добре набір відліків в опорному зображенні відповідає відлікам у відеоблоці блока PU, з використанням таких показників, як сума абсолютних відхилень (SAD), сума квадратів відхилень (SSD) або інші показники. Після ідентифікації або синтезування опорного блока для PU у Р-слайсі модуль 122 оцінки руху може сформувати індекс опорного зображення, який вказує опорне зображення в списку 0, що містить опорний блок і вектор руху, яке вказує просторове зміщення між даним PU та опорним блоком. Модуль 122 оцінки руху може сформувати вектори руху, для зміни ступенів точності. Наприклад, модуль 122 оцінки руху може сформувати вектори руху з точністю до чверті відліку, з точністю до однієї восьмої відліку або з іншою точністю, що складає частки відліку. У випадку дробової точності значення опорного блока можна інтерполювати виходячи з цілочисельних значень відліків місцеположення в опорному зображенні. Модуль 122 оцінки руху може вивести індекс опорного зображення і вектор руху як інформацію про рух для даного PU. Модуль 124 компенсації руху може сформувати прогнозований відеоблок даного PU на основі опорного блока, зв'язаного з інформацією про рух для даного PU. Якщо PU знаходиться у В-слайсі, то зображення, що міститься в цьому PU, може бути зв'язане з двома списками опорних зображень, які називаються "списком 0" та "списком 1". У деяких прикладах зображення, що містить В-слайс, може бути зв'язане з комбінацією списків, що представляє собою комбінацію списку 0 і списку 1. В деяких прикладах, кожне опорне зображення, що знаходиться в списку 1, з'являється після поточного зображення в порядку відображення. Крім того, якщо даний PU знаходиться у В-слайсі, то модуль 122 оцінки руху може виконати однонаправлене інтерпрогнозування або двонаправлене інтерпрогнозування для даного PU. Коли модуль 122 оцінки руху виконує однонаправлене інтерпрогнозування для PU, він може здійснювати пошук опорних зображень зі списку 0 або списку 1 для опорного блока для PU. Модуль 122 оцінки руху може потім сформувати індекс опорного зображення, який вказує опорне зображення в списку 0 або списку 1, що містить опорний блок і вектор руху, який вказує просторове зміщення між даним PU і опорним блоком. Коли модуль 122 оцінки руху виконує двонаправлене інтерпрогнозування для PU, він може здійснювати пошук опорних зображень в списку 0 для опорного блока для даного PU, а також 16 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 може здійснювати пошук опорних зображень в списку 1 для іншого опорного блока для даного PU. Потім модуль 122 оцінки руху може сформувати індекси опорних зображень, які вказують просторові зміщення між опорними блоками і даним PU. Інформація про рух для даного PU може включати в себе індекси опорних зображень і вектори руху для даного PU. Модуль 124 компенсації руху може сформувати прогнозований відеоблок для даного PU на основі опорних блоків, вказаних в інформації про рух для даного PU. Модуль 124 компенсації руху може сформувати прогнозований відеоблок для даного PU на основі одного або більше опорних блоків, зв'язаних з інформацією про рух даного PU. Згідно з розкритими тут методиками модуль 124 компенсації руху може визначити, чи обмежений даний PU однонаправленим інтерпрогнозуванням. Додатково, модуль 124 компенсації руху може сформувати список кандидатів на злиття для даного PU і визначити вибраного кандидата на злиття в списку кандидатів на злиття. Якщо даний PU обмежений однонаправленим інтерпрогнозуванням, то модуль 124 компенсації руху може сформувати прогнозований відеоблок для даного PU на основі не більше одного опорного блока, зв'язаного з інформацією про рух, заданою вибраним кандидатом на злиття. Якщо даний PU необмежений однонаправленим інтерпрогнозуванням, то модуль 124 компенсації руху може сформувати прогнозований відеоблок для даного PU на основі одного або більше опорних блоків, зв'язаних з інформацією про рух, заданою вибраним кандидатом на злиття. Як частина виконання операції кодування на CU, модуль 126 інтрапрогнозування може виконати інтрапрогнозування на блоках PU даного CU. Інтерпрогнозування може забезпечити просторове стиснення. Коли модуль 126 інтрапрогнозування виконує інтрапрогнозування для PU, модуль 126 інтрапрогнозування може сформувати дані прогнозування для вказаного PU на основі декодованих відліків інших PU в тому самому зображенні. Дані прогнозування для вказаного PU можуть включати в себе прогнозований відеоблок і різні синтаксичні елементи. Модуль 126 інтрапрогнозування може виконати інтрапрогнозування на блоках PU в I-слайсах, Рслайсах і В-слайсах. Для виконання інтрапрогнозування на PU модуль 126 інтрапрогнозування може використовувати множину режимів інтрапрогнозування для формування множини наборів прогнозованих даних для вказаного PU. Коли модуль 126 інтрапрогнозування використовує режим інтрапрогнозування для формування набору прогнозованих даних для вказаного PU, модуль 126 може розтягнути відліки з відеоблоків сусідніх PU на відеоблок даного PU в одному напрямку і/або з градієнтом, зв'язаним з режимом інтрапрогнозування. Вказані сусідні PU можуть знаходитися вище, вище і правіше, вище і лівіше або зліва від даного PU в припущенні, що для блоків PU, CU і деревоподібних блоків порядком кодування є порядок "зліва направо, зверху вниз". Модуль 126 інтрапрогнозування може використовувати різну кількість режимів інтрапрогнозування, наприклад, 33 прямих режимів інтрапрогнозування. У деяких прикладах кількість режимів інтрапрогнозування може залежати від розміру даного PU. Модуль 100 прогнозування може вибрати дані прогнозування для PU з даних прогнозування, сформованих модулем 124 компенсації руху для даного PU або даних прогнозування, сформованих модулем 126 інтрапрогнозування для даного PU. У деяких прикладах модуль 100 прогнозування вибирає дані прогнозування для PU на основі показників "швидкість передачі/спотворення" для наборів даних прогнозування. Якщо модуль 100 прогнозування вибирає дані прогнозування, сформовані модулем 126 інтрапрогнозування, то модуль 100 прогнозування може повідомити про режим інтрапрогнозування, який був використаний для формування даних прогнозування для даного PU, тобто, про вибраний режим інтрапрогнозування. Модуль 100 прогнозування може повідомити про вибраний режим інтрапрогнозування різними шляхами. Наприклад, ймовірно, що вибраний режим інтрапрогнозування співпадає з режимом інтрапрогнозування сусіднього PU. Іншими словами, режим інтрапрогнозування для сусіднього PU може бути найбільш імовірним для поточного PU. Таким чином, модуль 100 прогнозування може сформувати синтаксичний елемент для вказівки про те, що вибраний режим інтрапрогнозування співпадає з режимом інтрапрогнозування сусіднього PU. Поле вибору модулем 100 прогнозування даних прогнозування для блоків PU блока CU модель 102 формування залишкових даних може сформувати залишкові дані для CU шляхом віднімання прогнозованих відеоблоків PU даного CU з відеоблока даного CU. Залишкові дані блока CU можуть включати в себе залишкові 2D відеоблоки, які відповідають різним компонентам відліків у відеоблоці даного CU. Наприклад, залишкові дані можуть включати в себе залишковий відеоблок, який відповідає різницям між компонентами яскравості у відліках у прогнозованих відеоблоках вказаних PU даного CU і компонентами яскравості відліків у вихідному відеоблоці даного CU. Додатково, залишкові дані вказаний CU можуть включати в 17 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 себе залишкові відеоблоки, які відповідають різницям між компонентами яскравості відліків у прогнозованих відеоблоках вказаних PU даного CU і компонентами кольоровості відліків у вихідному відеоблоці даного CU. Модуль 100 прогнозування може виконати розбиття по квадродереву для розділення залишкових відеоблоків блока CU на субблоки. Кожний неподілений залишковий відеоблок може бути зв'язаний зі своїм TU даного CU. Розміри і місцеположення залишкових відеоблоків, зв'язаних з блоками TU блока CU можуть, але не обов'язково, основуватися на розмірах і місцеположеннях відеоблоків, зв'язаних з блоками PU даного CU. Структура квадродерева, відома як "залишкове квадродерево" (RQT) може включати в себе вузли, зв'язані з кожним із залишкових відеоблоків. Блоки TU блока CU можуть відповідати кінцевому вузлу дерева RQT. Модуль 104 перетворення може сформувати один або більше блоків коефіцієнтів перетворення для кожного TU блока CU шляхом застосування одного або більше перетворень до залишкового відеоблока, зв'язаного з вказаним блоком TU. Кожний з блоків коефіцієнтів перетворення може являти собою 2D матрицю коефіцієнтів перетворення. Модуль 104 перетворення може застосувати різні перетворення до залишкового відеоблока, зв'язаного з TU. Наприклад, модуль 104 перетворення може застосувати дискретне косинусне перетворення (DCT), направлене перетворення або концептуально подібне перетворення до залишкового відеоблока, зв'язаного з TU. Після формування модулем 104 перетворення блока коефіцієнтів перетворення, зв'язаного з TU, модуль 106 квантування може виконати квантування коефіцієнтів перетворення в блоці коефіцієнтів перетворення. Модуль 106 квантування може виконати квантування блока коефіцієнтів перетворення, зв'язаного з TU блока CU, на основі значення QP, зв'язаного з даним CU. Відеокодер 20 може зв'язати значення QP з CU різними шляхами. Наприклад, відеокодер 20 може виконати аналіз "швидкість передача-спотворення" на деревоподібному блоці, зв'язаному з даним CU. Під час аналізу "швидкість передача-спотворення" відеокодер 20 може сформувати множину кодованих представлень деревоподібного блока шляхом багаторазового виконання операції кодування на цьому деревоподібному блоці. Відеокодер 20 може зв'язати різні значення QP з даним CU при формуванні різних кодованих представлень даного деревоподібного блока. Відеокодер 20 може повідомити про те, що дане значення QP зв'язане з даним CU, коли це дане значення QP зв'язане з CU в кодованому представленні деревоподібного блока, що має мінімальний показник "швидкість передачі - спотворення". Модуль 108 оберненого квантування і модуль 110 оберненого перетворення можуть застосувати обернене квантування та обернене перетворення до блока коефіцієнтів перетворення відповідно для відновлення залишкового відеоблока з блока коефіцієнтів перетворення. Модуль 112 відновлення може додати відновлений залишковий відеоблок до відповідних відліків з одного або більше прогнозованих відеоблоків, сформованих модулем 100 прогнозування, для формування відновленого відеоблока, зв'язаного з TU. Відновлюючи відеоблоки для кожного TU блока CU, відеокодер 20 може відновити відеоблок даного CU. Після того, як модуль 112 відновлення, представлений у вигляді суматора, відновив відеоблок для CU, модуль 113 фільтрів може виконати операцію деблокування для зменшення блокування артефактів у відеоблоці, зв'язаному з даним CU. Після виконання однієї або більше операцій деблокування модуль 113 фільтрів може запам'ятати відновлений відеоблок даного CU в буфері 114 декодованих зображень. Модуль 122 оцінки руху і модуль 124 компенсації руху можуть використовувати опорне зображення, що містить відновлений відеоблок, для виконання інтерпрогнозування на блоках PU послідовних зображень. Додатково, модуль 126 інтрапрогнозування може використовувати як CU відновлені відеоблоки в буфері 114 декодованих зображень для виконання інтрапрогнозування на інших блоках PU в тому самому зображенні. Модуль 116 ентропійного кодування може приймати дані від інших функціональних компонент відеокодера 20. Наприклад, модуль 116 ентропійного кодування може приймати блоки коефіцієнтів перетворення від модуля 106 квантування і може приймати синтаксичні елементи від модуля 100 прогнозування. Прийнявши вказані дані, модуль 116 ентропійного кодування може виконати одну або більше операцій ентропійного кодування для формування ентропійно кодованих даних. Наприклад, відеокодер 20 може виконати на цих даних операцію контекстно-залежного адаптивного кодування із змінною довжиною слова (CAVLC), операцію контекстно-адаптивного бінарного арифметичного кодування (CABAC), операцію перекодування із змінної довжини слова на змінну довжину слова (V2V), операцію синтаксично орієнтованого адаптивного бінарного арифметичного кодування (SBAC), операцію імовірнісного ентропійного кодування з інтервальним розбиттям (PIPE), або операцію ентропійного кодування іншого типу. 18 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 Модуль 116 ентропійного кодування може вивести бітовий потік, що містить ентропійно кодовані дані. Як частина процесу виконання операції ентропійного кодування модуль 116 ентропійного кодування може вибрати контекстну модель. Якщо модуль 116 виконує операцію CABAC, то контекстна модель може давати оцінки імовірностей конкретних бінів, що мають різні значення. У контексті операції CABAC термін "бін" використовують для звернення до біта бінарної версії синтаксичного елемента. На фіг. 3 представлена блок-схема, що ілюструє наведений як приклад відеодекодер 30, який сконфігурований для реалізації розкритих тут методик. Фіг. 3 представлена для пояснення, її не треба розглядати як обмеження методик, розкритих в цьому описі на множині різних прикладів. Для пояснення цих методик відеодекодер 30 описаний тут в контексті кодування HEVC. Однак розкриті тут методики застосовні і до інших стандартів або способів кодування. У прикладі на фіг. 3 відеодекодер 30 включає в себе множину функціональних компонент. Функціональні компоненти відеодекодера 30 включають в себе модуль 150 ентропійного декодування, модуль 152 прогнозування, модуль 154 оберненого квантування, модуль 156 оберненого перетворення, модуль 158 відновлення, модуль 159 фільтрів і буфер 160 декодованих зображень. Модуль 152 прогнозування включає в себе модуль 162 компенсації руху і модуль 164 інтрапрогнозування. У деяких прикладах відеодекодер 30 може виконувати процес декодування, який в загальному випадку є оберненим по відношенню до процесу кодування, описаного застосовно до відеокодера 20 за фіг. 2. В інших прикладах відеодекодер 30 може включати в себе більшу або меншу кількість функціональних компонент або інші функціональні компоненти. Відеодекодер 30 може приймати бітовий потік, що містить кодовані відеодані. Цей бітовий потік може включати в себе множину синтаксичних елементів. Коли відеодекодер 30 приймає вказаний бітовий потік, модуль 150 ентропійного декодування може виконати операцію синтаксичного аналізу на цьому бітовому потоці. Внаслідок виконання на цьому бітовому потоці операції синтаксичного аналізу модуль 150 ентропійного декодування може витягнути синтаксичні елементи з бітового потоку. Як частина виконання операції синтаксичного аналізу, модуль 150 ентропійного декодування може виконати ентропійне декодування ентропійно кодованих синтаксичних елементів у бітовому потоці. Модуль 152 прогнозування, модуль 154 оберненого квантування, модуль 156 оберненого перетворення, модуль 158 відновлення і модуль 159 фільтрів можуть виконати операцію відновлення, яка формує декодовані відеодані на основі синтаксичних елементів, витягнутих з бітового потоку. Як обговорювалося вище, бітовий потік може містити ряд одиниць NAL. Одиниці NAL бітового потоку можуть включати в себе одиниці NAL набору параметрів послідовності, одиниці NAL набору параметрів зображення, одиниці SEI NAL тощо. Як частина виконання операції синтаксичного аналізу на бітовому потоці, модуль 150 ентропійного декодування може виконати операції синтаксичного аналізу, під час яких витягуються і піддаються ентропійному декодуванню набори параметрів послідовності з одиниць NAL наборів параметрів послідовності, набори параметрів зображення з одиниць NAL наборів параметрів зображення, дані SEI з одиниць SEI NAL тощо. Додатково, одиниці NAL бітового потоку можуть включати в себе одиниці NAL кодованого слайса. Як частина виконання операції синтаксичного аналізу на бітовому потоці, модуль 150 ентропійного декодування може виконати операції синтаксичного аналізу, під час яких витягуються і піддаються ентропійному декодуванню кодовані слайси з одиниць NAL кодованих слайсів. Кожний з кодованих слайсів може включати в себе заголовок слайса і дані слайса. Заголовок слайса може містити синтаксичні елементи, що відносяться до слайсу. Синтаксичні елементи в заголовку слайса можуть включати в себе синтаксичний елемент, який ідентифікує набір параметрів зображення, зв'язаний із зображенням, що містить даний слайс. Модуль 150 ентропійного декодування може виконувати операції ентропійного декодування, такі як операції декодування CABAC, на синтаксичних елементах у заголовку кодованого слайса для відновлення заголовка слайса. Як частина виділення даних слайса з одиниць NAL кодованого слайса, модуль 150 ентропійного декодування може виконати операції синтаксичного аналізу, під час яких з кодованих CU в даних слайса витягують синтаксичні елементи. Витягнуті синтаксичні елементи можуть включати в себе синтаксичні елементи, зв'язані з блоками коефіцієнтів перетворення. Потім модуль 150 ентропійного декодування може виконати операції декодування CABAC на деяких із синтаксичних елементів. Після виконання модулем 150 ентропійного декодування операції синтаксичного аналізу на неподіленому CU відеодекодер 30 може виконати операцію відновлення на цьому неподіленому 19 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 CU. Для виконання операції відновлення на неподіленому CU відеодекодер 30 може виконати операцію відновлення на кожному TU даного CU. Виконавши операцію відновлення для кожного TU даного CU, відеодекодер 30 може відновити залишковий відеоблок, зв'язаний з даним CU. Як частина виконання операції відновлення на TU модуль 154 оберненого квантування може виконати обернене квантування, тобто, "деквантування", блока коефіцієнтів перетворення зв'язаного з даним TU. Модуль 154 оберненого квантування може виконати обернене квантування блока коефіцієнтів перетворення способом, подібним до процесів оберненого квантування, запропонованих для HEVC або визначеним стандартом декодування H.264. Модуль 154 оберненого квантування може використовувати параметр QP квантування, обчислений відеокодером 20 для CU блока коефіцієнтів перетворення, щоб визначити ступінь квантування і аналогічним чином ступінь оберненого квантування для їх використання модулем 154 оберненого квантування. Після виконання модулем 154 оберненого квантування блока коефіцієнтів перетворення модуль 156 оберненого перетворення може сформувати залишковий відеоблок для TU, зв'язаного з цим блоком коефіцієнтів перетворення. Модуль 156 оберненого перетворення може застосувати обернене перетворення до блока коефіцієнтів перетворення для формування залишкового відеоблока для TU. Наприклад, модуль 156 оберненого перетворення може застосувати обернене DCT перетворення, обернене цілочисельне перетворення, обернене перетворення Карунена-Лоєва (KLT), обернене перетворення обертанням, обернене направлене перетворення або інше обернене перетворення до блока коефіцієнтів перетворення. У деяких прикладах модель 156 оберненого перетворення може визначити обернене перетворення для застосування до блока коефіцієнтів перетворення на основі сигналізації, одержаної від відеокодера 20. У вказаних прикладах модуль 156 оберненого перетворення може визначити обернене перетворення на основі повідомленого перетворення в кореневому вузлі квадродерева для деревоподібного блока, зв'язаного з блоком коефіцієнтів перетворення. В інших прикладах модуль 156 оберненого перетворення може з'ясувати, яке обернене перетворення необхідне, виходячи з однієї або більше характеристик кодування, таких як розмір блока, режим кодування або т.п. В деяких прикладах модель 156 оберненого перетворення може застосувати каскадне обернене перетворення. Якщо PU кодують в режимі з пропусканням або інформація про рух для даного PU кодується з використанням режиму злиття, то модуль 162 компенсації руху може сформувати список кандидатів на злиття для даного PU. Потім модуль 162 компенсації руху може ідентифікувати вибраного кандидата на злиття в списку кандидатів на злиття. Після ідентифікації вибраного кандидата на злиття в списку кандидатів на злиття, модуль 162 компенсації руху може сформувати прогнозований відеоблок для даного PU на основі одного або більше опорних блоків, зв'язаних з інформацією про рух, вказаною вибраним кандидатом на злиття. Згідно з розкритими тут методиками модуль 162 компенсації руху може визначити, чи обмежений PU однонаправленим інтрапрогнозуванням. Крім того, модуль 162 компенсації руху може сформувати список кандидатів на злиття для даного PU і визначити вибраного кандидата на злиття у вказаному списку кандидатів на злиття. Якщо PU обмежений однонаправленим інтерпрогнозуванням, то модуль 162 компенсації руху може сформувати прогнозований відеоблок для цього PU на основі не більше, ніж одного опорного блока, зв'язаного з інформацією про рух, заданою вибраним кандидатом на злиття. В іншому випадку, якщо PU не обмежений однонаправленим інтерпрогнозуванням, то модуль 162 компенсації руху може сформувати прогнозований відеоблок для вказаного PU на основі одного або більше опорних блоків, зв'язаних з інформацією про рух, заданою вибраним кандидатом на злиття. Якщо інформація про рух для PU кодована з використанням режиму AMVP, то модуль 162 компенсації руху може сформувати список кандидатів-предикторів MV списку 0 і/або список кандидатів-предикторів MV списку 1. Потім модуль 162 компенсації руху може визначити вибраного кандидата-предиктора MV списку 0 і/або вибраного кандидата-предиктора MV списку 1. Далі модуль 162 компенсації руху може визначити вектор руху списку 0 для даного PU і/або вектор руху списку 1 для даного PU на основі MVD списку 0, MVD списку 1, вектора руху списку 0, заданого вибраним кандидатом-предиктором MV списку 0, і/або вектором руху списку 1, заданого вибраним кандидатом-предиктором MV списку 1. Модуль 162 компенсації руху може потім сформувати прогнозований відеоблок для PU на основі опорних блоків, зв'язаних з вектором руху списку 0 та індексу опорного зображення списку 0 і/або вектора руху списку 1 та індексу опорного зображення списку 1. У деяких прикладах модуль 162 компенсації руху може уточнити прогнозований відеоблок PU шляхом виконання інтерполяції на основі інтерполяційних фільтрів. Ідентифікатори для 20 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 інтерполяційних фільтрів, що підлягають використанню для компенсації руху з точністю до субвідліків, можуть бути включені в синтаксичні елементи. Модуль 162 компенсації руху може використовувати ті самі інтерполяційні фільтри, які використовуються відеокодером 20 під час формування прогнозованого відеоблока даного PU, для обчислення інтерпольованих значень для дробових відліків опорного блока. Модуль 162 компенсації руху може визначити інтерполяційні фільтри, що використовуються відеокодером 20, відповідно до одержаної синтаксичної інформації, і використовувати ці інтерполяційні фільтри для формування прогнозованого відеоблока. Якщо PU кодують, використовуючи інтрапрогнозування, то модуль 164 інтрапрогнозування може виконати інтрапрогнозування для формування прогнозованого відеоблока для даного PU. Наприклад, модуль 164 інтрапрогнозування може визначити режим інтрапрогнозування для даного PU на основі синтаксичних елементів у бітовому потоці. Бітовий потік може включати в себе синтаксичні елементи, які модуль 164 інтрапрогнозування може використовувати для визначення режиму інтрапрогнозування для даного PU. У деяких випадках синтаксичні елементи можуть вказувати, що модуль 164 інтрапрогнозування повинен використовувати режим інтрапрогнозування іншого PU, щоб визначити режим інтрапрогнозування поточного PU. Наприклад, цілком ймовірно, що режим інтрапрогнозування поточного PU співпадає з режимом інтрапрогнозування сусіднього PU. Іншими словами режим інтрапрогнозування сусіднього PU може бути найбільш імовірним режимом для поточного PU. Таким чином, в даному прикладі бітовий потік може включати в себе невеликий синтаксичний елемент, який вказує, що режим інтрапрогнозування даного PU співпадає з режимом інтрапрогнозування сусіднього PU. Потім модуль 164 інтрапрогнозування може використовувати цей режим інтрапрогнозування для формування даних прогнозування (наприклад, прогнозованих відліків) для даного PU на основі відеоблоків сусідніх (в просторі). Модуль 158 відновлення може використовувати залишкові відеоблоки, зв'язані з блоками TU блока CU і прогнозовані відеоблоки блоків PU блоків CU, тобто, або дані інтрапрогнозування, або дані інтерпрогнозування, залежно від того, які дані застосовуються, для відновлення відеоблока даного CU. Зокрема, модуль 158 відновлення може додати залишкові дані до прогнозованих даних для відновлення кодованих відеоданих. Таким чином, відеодекодер 30 може сформувати прогнозований відеоблок і залишковий відеоблок на основі синтаксичних елементів у бітовому потоці і може сформувати відеоблок на основі прогнозованого відеоблока і залишкового відеоблока. Після того, як модуль 158 відновлення відновить відеоблок даного CU, модуль 159 фільтрів може виконати операцію деблокування для зменшення блокування артефактів, зв'язаних з даним CU. Після виконання модулем 159 фільтрів операції деблокування для зменшення блокування артефактів, зв'язаних з даним CU, відеодекодер 30 може запам'ятати відеоблок даного CU в буфері 160 декодованих зображень. Буфер 160 декодованих зображень може забезпечити опорні зображення для подальших операцій компенсації руху, інтрапрогнозування і представлення на пристрої відображення, такому як пристрій 32 відображення за фіг. 1. Наприклад, відеодекодер 30 на основі відеоблоків у буфері 160 декодованих зображень може виконати операції інтрапрогнозування або інтерпрогнозування на блоках PU інших CU. На фіг. 4 представлена блок-схема, що ілюструє зразкову операцію 200 компенсації руху. Відеокодер, такий як відеокодер 20 або відеодекодер 30, може виконати операцію 200 компенсації руху. Відеокодер може виконати операцію 200 компенсації руху для формування прогнозованого блока для поточного PU. Після того, як відеокодер почне операцію 200 компенсації руху, він може визначити, чи є режим прогнозування для поточного PU режимом з пропусканням (202). Якщо режим прогнозування для поточного PU не є режимом з пропусканням ("Ні" на етапі 202), то відеокодер може визначити, чи є режим прогнозування для поточного PU режимом інтерпрогнозування, і що режим інтерпрогнозування поточного PU є режимом злиття (204). Якщо режим прогнозування поточного PU є режимом з пропусканням ("Так" на етапі 202) або якщо режим прогнозування поточного PU є режимом інтерпрогнозування, і режимом інтерпрогнозування поточного PU є режим злиття ("Так" на етапі 204), то відеокодер може сформувати список кандидатів на злиття для поточного PU (206). Список кандидатів на злиття може включати в себе множину кандидатів на злиття. Кожний з кандидатів на злиття задає набір інформації про рух, наприклад, один або більше векторів руху, один або більше індексів опорних зображень, прапор прогнозування списку 0 і прапор прогнозування списку 1. Список кандидатів на злиття може включати в себе один або більше однонаправлених кандидатів на злиття або двонаправлених кандидатів на злиття. У деяких прикладах відеокодер може виконувати 21 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 наведену як приклад операцію, описану нижче з посиланнями на фіг. 6, для формування списку кандидатів на злиття. Після формування списку кандидатів на злиття відеокодер може визначити вибраного кандидата на злиття в списку кандидатів на злиття (208). Якщо відеокодер являє собою відеокодер, то відеокодер може вибрати кандидата на злиття зі списку кандидатів на злиття на основі аналізу "швидкість передача-спотворення". Якщо відеокодер являє собою відеодекодер, то відеокодер може вибрати кандидата на злиття на основі синтаксичного елемента (наприклад, merge_idx), який ідентифікує місцеположення вибраного кандидата на злиття в списку кандидатів на злиття. Потім відеокодер може визначити інформацію про рух поточного PU на основі інформації про рух, заданої вибраним кандидатом на злиття (210). Інформація про рух може включати в себе один або більше векторів руху та індексів опорних зображень. Відеокодер може визначити інформацію про рух поточного PU на основі інформації про рух, заданої вибраним кандидатом на злиття, різними шляхами. Наприклад, відеокодер може визначити, що інформація про рух поточного PU співпадає з інформацією про рух, заданою вибраним кандидатом на злиття. Якщо режим інтерпрогнозування для поточного PU не є режимом злиття ("Ні" на етапі 204), то відеокодер може визначити інформацію про рух поточного PU, використовуючи режим AMVP (212). На фіг. 8, детально описаній нижче, представлена блок-схема, що ілюструє зразкову операцію для визначення інформації про рух для PU з використанням режиму AMVP. Після визначення інформації про рух для поточного PU відеокодер може визначити, чи обмежений поточний PU однонаправленим інтерпрогнозуванням (214). Відеокодер може визначити, чи обмежений поточний PU однонаправленим інтерпрогнозуванням, різними шляхами. Наприклад, відеокодер може визначити, що поточний PU обмежений однонаправленим інтерпрогнозуванням, якщо розмірна характеристика поточного PU менше порогового значення. У цьому прикладі відеокодер може визначити, що поточний PU обмежений однонаправленим інтерпрогнозуванням, якщо розмір даного PU рівний 8×4, 4×8 або менше. В іншому прикладі, якщо відеокодер являє собою відеодекодер, то відеодекодер може визначити на основі синтаксичного елемента в прийнятому бітовому потоці, що поточний PU обмежений однонаправленим інтерпрогнозуванням. У відповідь на визначення того, що поточний PU обмежений однонаправленим інтерпрогнозуванням ("Так" на етапі 214), відеокодер може сформувати прогнозований відеоблок для поточного PU на основі не більше одного опорного блока, зв'язаного з інформацією про рух поточного PU (216). Як вказано вище, опорний блок може бути ідентифікований інформацією про рух, заданою вибраним кандидатом на злиття, або синтезований з опорних відліків, ідентифікованих інформацією про рух, заданою вибраним кандидатом на злиття. З іншого боку, у відповідь на визначення того, що поточний PU не обмежений однонаправленим інтерпрогнозуванням ("Ні" на етапі 214), відеокодер може сформувати прогнозований відеоблок для поточного PU на основі одного або більше опорних блоків, зв'язаних з інформацією про рух поточного PU (218). Як вказано вище, ці один або більше опорних блоків можуть бути ідентифіковані інформацією про рух, заданою вибраним кандидатом на злиття, і/або синтезовані з опорних відліків, ідентифікованих інформацією про рух, заданою вибраним кандидатом на злиття. На фіг. 5 представлена блок-схема, що ілюструє іншу зразкову операцію 270 компенсації руху. Відеокодер, такий як відеокодер 20 або відеодекодер 30, може виконати операцію 270 компенсації руху для формування прогнозованого блока для поточного PU. Відеокодер може виконати операцію 270 компенсації руху як альтернативу до виконання операції 200 компенсації руху. Після того, як відеокодер почне операцію 270 компенсації руху, він може визначити, чи є режим прогнозування для поточного PU режимом з пропусканням (272). Якщо режим прогнозування для поточного PU не є режимом з пропусканням ("Ні" на етапі 272), то відеокодер може визначити, чи є режим прогнозування для поточного PU режимом інтерпрогнозування, і що режим інтерпрогнозування поточного PU є режимом злиття (273). Якщо режим прогнозування поточного PU є режимом з пропусканням ("Так" на етапі 272) або якщо режим прогнозування поточного PU є режимом інтерпрогнозування, і режимом інтерпрогнозування поточного PU є режим злиття ("Так" на етапі 273), то відеокодер може визначити, чи обмежений поточний PU однонаправленим інтерпрогнозуванням (274). Якщо поточний PU обмежений однонаправленим інтерпрогнозуванням ("Так" на етапі 274), відеокодер може сформувати список кандидатів на злиття для поточного PU, так щоб список кандидатів на злиття не включав в себе двонаправлених кандидатів на злиття (276). Відеокодер може виконувати наведену як 22 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 приклад операцію, проілюстровану на фіг. 6, для формування списку кандидатів на злиття для поточного PU. З іншого боку, якщо поточний PU не обмежений однонаправленим інтерпрогнозуванням ("ні" на етапі 274), то відеокодер може сформувати список кандидатів на злиття, який може включати в себе однонаправлених і двонаправлених кандидатів на злиття (278). У деяких прикладах відеокодер може виконувати зразкову операцію, описану нижче з посиланням на фіг. 6 для формування списку кандидатів на злиття. Отже, якщо поточний PU не обмежений однонаправленим інтерпрогнозуванням, то список кандидатів на злиття може включати в себе однонаправлених кандидатів на злиття і двонаправлених кандидатів на злиття. Після формування списку кандидатів на злиття для поточного PU відеокодер може визначити вибраного кандидата на злиття в списку кандидатів на злиття (280). Якщо відеокодер являє собою відеокодер, то відеокодер може вибрати кандидата на злиття зі списку кандидатів на злиття на основі аналізу "швидкість передача-спотворення". Якщо відеокодер являє собою відеодекодер, то відеокодер може вибрати кандидата на злиття на основі синтаксичного елемента (наприклад, merge_idx), який ідентифікує місцеположення вибраного кандидата на злиття в списку кандидатів на злиття. Потім відеокодер може визначити інформацію про рух поточного PU на основі інформації про рух, заданої вибраним кандидатом на злиття (282). Інформація про рух, задана вибраним кандидатом на злиття, може задати один або більше векторів руху і один або більше індексів опорних зображень. Відеокодер може визначити інформацію про рух поточного PU на основі інформації про рух, заданої вибраним кандидатом на злиття, різними шляхами. Наприклад, відеокодер може визначити, що інформація про рух поточного PU співпадає з інформацією про рух, заданою вибраним кандидатом на злиття. Якщо режим інтерпрогнозування для поточного PU не є режимом злиття ("Ні" на етапі 273), то відеокодер може визначити інформацію про рух поточного PU, використовуючи режим AMVP (284). На фіг. 8, детально описаній нижче, представлена блок-схема, що ілюструє зразкову операцію для визначення інформації про рух для PU з використанням режиму AMVP. Після визначення інформації про рух для поточного PU відеокодер може сформувати прогнозований відеоблок для поточного PU (286). Оскільки список кандидатів на злиття включає в себе тільки однонаправлених кандидатів на злиття, якщо поточний PU обмежений однонаправленим інтерпрогнозуванням, вибраний кандидат на злиття зв'язаний тільки з одним опорним блоком. Таким чином, якщо поточний PU знаходиться у В слайсі і обмежений однонаправленим інтерпрогнозуванням, то прогнозований відеоблок для поточного PU може базуватися на не більш ніж одному опорному блоці, зв'язаному з інформацією про рух, заданою вибраним кандидатом на злиття. З іншого боку, якщо поточний PU не обмежений однонаправленим інтерпрогнозуванням, то список кандидатів на злиття може включати в себе однонаправлених кандидатів на злиття і двонаправлених кандидатів на злиття. Оскільки список кандидатів на злиття може включати в себе однонаправлених кандидатів на злиття і двонаправлених кандидатів на злиття, вибраний кандидат на злиття може бути зв'язаний з одним або двома опорними блоками. Отже, якщо поточний PU знаходиться у В-слайсі і не обмежений однонаправленим інтерпрогнозуванням, то прогнозований відеоблок для поточного PU може базуватися на одному або більше опорних блоках, зв'язаних з вибраним кандидатом на злиття. На фіг. 6 представлена блок-схема, що ілюструє зразкову операцію 300 для формування списку кандидатів на злиття. Відеокодер, такий як відеокодер 20 або відеодекодер 30, може виконати операцію 300 для формування списку кандидатів на злиття для поточного PU. Відеокодер може виконати операцію 300, коли режим прогнозування поточного PU є режимом з пропусканням, або коли режимом прогнозування поточного PU є режим інтерпрогнозування, а режимом інтерпрогнозування поточного PU є режим злиття. Після того, як відеокодер запустив операцію 300, він може визначити інформацію про рух, а також наявність просторових кандидатів на злиття (302). Відеокодер може визначити інформацію про рух для просторового кандидата на злиття на основі інформації про рух для PU, який покриває те місце, яке сусідує в просторі з поточним PU. Наприклад, відеокодер може визначити інформацію про рух для просторових кандидатів на злиття на основі інформації про рух для тих PU, які покривають місця зліва, зліва внизу, зліва вгорі, вгорі і праворуч вгорі по відношенню до поточного PU. Відеокодер може визначити наявність просторового кандидата на злиття різними шляхами. Наприклад, відеокодер може визначити, що просторовий кандидат на злиття недоступний, якщо цей просторовий кандидат на злиття відповідає PU з інтерпрогнозуванням, розташованому поза поточним кадром або розташованому поза поточного слайса. Крім того, відеокодер може 23 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 визначити, що просторовий кандидат на злиття недоступний, якщо інформація про рух для цього просторового кандидата на злиття співпадає з інформацією про рух іншого просторового кандидата на злиття. Додатково, відеокодер може визначити інформацію про рух і наявність кандидата на часове злиття. Кандидат на часове злиття може задати інформацію про рух для PU, який розташований відповідно до поточного PU, але знаходиться в іншому зображенні. Відеокодер може визначити наявність кандидата на часове злиття різними шляхами. Наприклад, відеокодер може визначити, що кандидат на часове злиття недоступний, якщо кандидат на часове злиття відповідає PU з інтрапрогнозуванням. Після формування кандидатів на просторове злиття і кандидата на часове злиття відеокодер може включати в себе кандидатів з числа кандидатів на просторове злиття і з числа кандидатів на часове злиття в списку кандидатів на злиття для поточного PU (306). Відеокодер може внести кандидата на просторове або часове злиття в список кандидатів на злиття, якщо кандидат на злиття доступний, і може включати в себе кандидата на злиття зі списку кандидатів на злиття, якщо даний кандидат на злиття недоступний. Виключення недоступних кандидатів на злиття зі списку кандидатів на злиття, дозволяє відеокодеру ефективно виконувати процес відсікання, під час якого відсікаються (наприклад, опускаються) недоступні кандидати на злиття зі списку кандидатів на злиття. У деяких прикладах відеокодер формує список кандидатів на злиття таким чином, щоб цей список включав в себе тільки однонаправлених кандидатів на злиття. У деяких з вказаних прикладів відеокодер може визначити, що двонаправлені кандидати на злиття недоступні. Тобто, відеокодер може визначити, що кандидат на злиття недоступний, якщо цей кандидат на злиття задає вектор руху списку 0 і вектор руху списку 1. Таким чином, якщо поточний PU обмежений однонаправленим прогнозуванням, відеокодер може визначити, що однонаправлені кандидати на злиття доступні на відміну від двонаправлених кандидатів на злиття. Оскільки відеокодер може не включати недоступних кандидатів на злиття в список кандидатів на злиття, список кандидатів на злиття в деяких випадках може включати в себе тільки однонаправлених кандидатів на злиття. У цьому прикладі відеокодер може ефективно виконувати процес відсікання, під час якого відсікаються зі списку на злиття двонаправлені кандидати на злиття. В інших прикладах, де відеокодер формує список кандидатів на злиття таким чином, що цей список включає в себе тільки однонаправлених кандидатів на злиття, відеокодер може перетворити двонаправлених кандидатів на злиття в однонаправлених кандидатів на злиття, а потім включити доступних однонаправлених кандидатів на злиття в список кандидатів на злиття. У вказаних прикладах відеокодер може не додавати однонаправленого кандидата на злиття в список кандидатів на злиття, якщо однонаправлений кандидат на злиття співпадає з однонаправленим кандидатом на злиття, який вже доданий в список кандидатів на злиття. Таким шляхом відеокодер може відсікати дублюючих однонаправлених кандидатів на злиття зі списку кандидатів на злиття. Шляхом перетворення двонаправлених кандидатів на злиття в однонаправлених кандидатів на злиття перед відсіканням дублюючих однонаправлених кандидатів на злиття зі списку кандидатів на злиття, відеокодер має можливість уникнути появи надмірних кандидатів на злиття в списку кандидатів на злиття після відсікання. Перетворення двонаправлених кандидатів на злиття в однонаправлених кандидатів на злиття перед відсіканням дублюючих однонаправлених кандидатів на злиття може підвищити складність апаратного забезпечення відеокодера. Додатково, відеокодер може перетворити множину двонаправлених кандидатів на злиття, які співпадають з однонаправленими кандидатами на злиття. В інших прикладах відеокодер може спочатку включати в себе наявних двонаправлених кандидатів на злиття в списку кандидатів на злиття для поточного PU. Потім відеокодер може відсікти дублюючих кандидатів на злиття зі списку кандидатів на злиття. Після формування відеокодером кандидата на злиття він може визначити вибраного кандидата на злиття зі списку кандидатів на злиття і перетворити вибраного кандидата на злиття в однонаправленого кандидата на злиття, якщо вибраним кандидатом на злиття є двонаправлений кандидат на злиття. У цьому прикладі відеокодер може ефективно перетворити вибраного двонаправленого кандидата на злиття в однонаправленого кандидата на злиття шляхом використання тільки опорного блока, вказаного вектором руху списку 0 або вектором руху списку 1, для формування прогнозованого відеоблока для поточного PU. На відміну від перетворення двонаправлених кандидатів на злиття в однонаправлених кандидатів на злиття до відсікання дублюючих кандидатів на злиття зі списку кандидатів на злиття, перетворення вибраного двонаправленого кандидата на злиття в однонаправленого кандидата на злиття після відсікання дублюючих кандидатів на злиття зі списку кандидатів на 24 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 злиття може вимагати тільки одного перетворення, а не множини перетворень. Наприклад, якщо перетворення виконується після відсікання дублюючих кандидатів на злиття, вибраний кандидат на злиття є третім кандидатом на злиття в списку кандидатів на злиття, і цей третій кандидат на злиття є двонаправленим кандидатом на злиття, то відеокодер може перетворити тільки третього кандидата на злиття в однонаправленого кандидата на злиття. У цьому прикладі, якщо перетворення виконується перед відсіканням дублюючих кандидатів на злиття, то вибраним кандидатом на злиття є третій кандидат на злиття в списку кандидатів на злиття і цей третій кандидат на злиття є двонаправленим кандидатом на злиття, то відеокодер повинен перетворити трьох двонаправлених кандидатів на злиття, перш ніж відеокодер зможе визначити вибраного кандидата на злиття, через те, що операція відсікання виконується після операції перетворення. Відеокодер може сформувати різні списки кандидатів на злиття залежно від того, чи перетворює відеокодер двонаправлених кандидатів на злиття в однонаправлених кандидатів на злиття перед або після відсікання дублюючих кандидатів на злиття зі списку кандидатів на злиття. Наприклад, відеокодер може перетворити двонаправлених кандидатів на злиття в однонаправлених кандидатів на злиття, взявши вектори руху двонаправлених кандидатів на злиття зі списку 0, і проігнорувавши вектори руху однонаправлених кандидатів на злиття зі списку 1. У цьому прикладі першим кандидатом на злиття може бути однонаправлений, і може задати вектор руху списку 0, рівний значенню MVI. У цьому прикладі другим кандидатом на злиття може бути двонаправлений кандидат, який може задати вектор руху списку 0, рівним MV1, і вектор руху списку 1, який рівний значенню MV2. Перший і другий кандидати на злиття можуть задати одні і ті самі індекси опорних зображень списку 0. В цьому прикладі, якщо відеокодер перетворює другого кандидата на злиття в однонаправленого кандидата на злиття перед відсіканням дублюючих кандидатів на злиття зі списку кандидатів на злиття, можуть залишатися два однонаправлених кандидати на злиття, які рівні MV1. Відповідно, відеокодер може відсікти однонаправленого кандидата на злиття, сформованого з другого кандидата на злиття, оскільки він є надмірним відносно першого кандидата злиття. У результаті відеокодер може включити в список кандидатів на злиття тільки одного кандидата на злиття (наприклад, першого кандидата на злиття). Однак в прикладі з попереднього розділу, якщо відеокодер перетворює другого кандидата на злиття в однонаправленого кандидата на злиття після відсікання дублюючих кандидатів на злиття зі списку кандидатів на злиття, то відеокодер може внести першого і другого кандидата на злиття в список кандидатів на злиття. Після внесення першого і другого кандидатів на злиття в список кандидатів на злиття відеокодер може перетворити другого кандидата на злиття в однонаправленого кандидата на злиття, взявши (тобто, підтримуючи) вектор руху списку 0 другого кандидата на злиття та ігноруючи вектор руху списку 1 другого кандидата на злиття. Таким чином, список кандидатів на злиття може включати двох кандидатів на злиття, які задають вектори руху списку 0, рівні MV1, що є дуже ефективним. Після внесення доступних кандидатів на злиття в список кандидатів на злиття, відеокодер може визначити, чи знаходиться поточний PU у В-слайсі (308). У відповідь на визначення того, що поточний PU знаходиться у В-слайсі ("Так" на етапі 308) відеокодер може виконати процес, під час якого формується нуль або більше штучних кандидатів на злиття, і відеокодер включає цих штучних кандидатів на злиття в список кандидатів на злиття (310). На фіг. 7, детально описаній нижче, показаний зразковий процес формування штучних кандидатів на злиття. У відповідь на визначення того, що поточний PU не знаходиться у В-слайсі ("Ні" на етапі 308) або після виконання процесу, що формує штучних кандидатів на злиття, відеокодер може визначити, чи менше кількість кандидатів на злиття в списку кандидатів на злиття максимальної кількості кандидатів на злиття (312). Якщо кількість кандидатів на злиття в списку кандидатів на злиття не менше максимальної кількості кандидатів на злиття ("Ні" на етапі 312), відеокодер завершує формування списку кандидатів на злиття. Однак у відповідь на визначення того, що кількість кандидатів на злиття в списку кандидатів на злиття менше максимальної кількості кандидатів на злиття ("Так" на етапі 312), відеокодер може сформувати кандидата на злиття з нульовим значенням (314). Якщо поточний PU знаходиться у Р-слайсі, то кандидат на злиття з нульовим значенням може задати вектор руху списку 0, величина якого дорівнює нулю. Якщо поточний PU знаходиться у В-слайсі, і поточний PU не обмежений однонаправленим інтерпрогнозуванням, то кандидат на злиття з нульовим значенням може задати вектор руху списку 0, величина якого дорівнює нулю, а також вектор руху списку 1, величина якого також дорівнює нулю. У деяких прикладах кандидат на злиття з нульовим значенням може задати вектор руху списку 0 або вектор руху списку 1, що має величину, рівну нулю, якщо поточний PU знаходиться у В-слайсі, і поточний PU обмежений 25 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 однонаправленим інтерпрогнозуванням. Потім відеокодер може внести кандидата на злиття з нульовим значенням у список кандидатів на злиття. Після внесення кандидата на злиття з нульовим значенням в список кандидатів на злиття відеокодер може знову визначити, чи менше кількість кандидатів на злиття в списку кандидатів на злиття, ніж максимальна кількість кандидатів на злиття (312), і, якщо ні, то відеокодер може сформувати додаткового кандидата на злиття з нульовим значенням. Таким шляхом відеокодер може продовжувати формування кандидатів на злиття з нульовим значенням і вносити цих кандидатів на злиття з нульовим значення в список кандидатів на злиття, доки кількість кандидатів на злиття в списку кандидатів на злиття не стане рівною максимальній кількості кандидатів на злиття. На фіг. 7 представлена блок-схема, що ілюструє зразковий процес 350 формування штучних кандидатів на злиття. Відеокодер, такий як відеокодер або відеодекодер 30 може реалізувати процес 350 формування штучних кандидатів на злиття для їх внесення в список кандидатів на злиття для поточного PU. Після запуску процесу 350 відеокодером він може визначити, чи потрібно сформувати штучного кандидата на злиття (352). Відеокодер може визначити, чи потрібно сформувати штучного кандидата на злиття різними шляхами. Наприклад, відеокодер може визначити, чи дорівнює кількість штучних кандидатів на злиття в списку кандидатів на злиття загальній кількості унікальних штучних кандидатів, яку можна сформувати на основі вихідних кандидатів на злиття в списку кандидатів на злиття. Вихідними кандидатами на злиття можуть бути кандидати на злиття, які задають інформацію про рух для PU, відмінних від поточного PU. Крім того, в цьому прикладі відеокодер може визначити, чи містить список кандидатів на злиття максимальну кількість кандидатів на злиття. У даному прикладі, якщо обидві ці умови не виконуються, то відеокодер може прийняти рішення про формування штучного кандидата на злиття. Якщо відеокодер вирішує сформувати штучного кандидата на злиття ("Так" на етапі 352), то він може визначити, чи обмежений поточний PU однонаправленим інтерпрогнозуванням (354). Як було описано вище, відеокодер може визначити, чи обмежений поточний PU однонаправленим інтерпрогнозуванням, різними шляхами. Наприклад, відеокодер може визначити, чи обмежений поточний PU однонаправленим інтерпрогнозуванням, на основі розмірної характеристики поточного PU. В іншому прикладі відеокодер може визначити, чи обмежений поточний PU однонаправленим інтерпрогнозуванням, на основі параметра, вказаного в синтаксичних елементах поточного деревоподібного блока поточного CU або поточного PU, або в заголовку слайса, наборах PPS, APS, SPS, або в іншому наборі параметрів. У деяких прикладах параметр у деревоподібному блоці може задати, що всі PU, зв'язані з деревоподібним блоком, обмежені однонаправленим інтерпрогнозуванням. У деяких прикладах параметр в CU може задати, що всі PU, зв'язані з CU, обмежені однонаправленим інтерпрогнозуванням. У деяких прикладах параметр в наборі PPS може задати, що всі PU, зв'язані із зображеннями, які зв'язані з набором PPS, обмежені однонаправленим інтерпрогнозуванням. У деяких прикладах параметр в наборі APS може задати, що всі PU, зв'язані із зображеннями, які зв'язані з набором APS, обмежені однонаправленим інтерпрогнозуванням. У деяких прикладах параметр в наборі SPS може задати, що всі PU, зв'язані із зображеннями в послідовності, яка зв'язана з набором SPS, обмежені однонаправленим інтерпрогнозуванням. У відповідь на визначення того, що поточний PU обмежений однонаправленим інтерпрогнозуванням ("Так" на етапі 354), відеокодер може сформувати штучного однонаправленого кандидата на злиття (356). Після формування штучного однонаправленого кандидата на злиття відеокодер може внести цього штучного однонаправленого кандидата на злиття в список кандидатів на злиття (358). Після внесення штучного однонаправленого кандидата на злиття в список кандидатів на злиття відеокодер може визначити, чи потрібно сформувати ще одного штучного кандидата на злиття (352) і, якщо потрібно, то сформувати ще одного штучного кандидата на злиття. Відеокодер може сформувати штучного однонаправленого кандидата на злиття різними шляхами. Наприклад, відеокодер може сформувати штучного однонаправленого кандидата на злиття, взявши спочатку пару однонаправлених кандидатів на злиття, які вже знаходяться в списку кандидатів. Ці перший і другий однонаправлені кандидати на злиття можуть задати відповідно вектори руху MV1 та MV2. Потім в цьому прикладі відеокодер може виконати масштабування вектора MV2 відповідно до часової відмінності між опорним кадром, заданим першим однонаправленим кандидатом на злиття, і опорним кадром, заданим другим однонаправленим кандидатом на злиття. У цьому прикладі відеокодер може сформувати 26 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 штучного однонаправленого кандидата на злиття, який задає масштабовану версію вектора MV2. Наприклад, в даному прикладі опорне зображення, зв'язане з першим однонаправленим кандидатом на злиття, може з'явитися через одне зображення після поточного зображення, а опорне зображення, зв'язане з другим однонаправленим кандидатом на злиття, може з'явитися через чотири зображення після поточного зображення. У цьому прикладі відеокодер може розділити горизонтальну складову і вертикальну складову вектора MV2 на чотири і використовувати масштабований вектор MV2 з індексом опорного зображення, що відповідає вектору MV1, як штучний кандидат. Аналогічне масштабування можна виконати для вектора MV1 на основі вектора MV2. В іншому прикладі відеокодер може сформувати штучного однонаправленого кандидата на злиття, який задає один з векторів руху, заданих двонаправленим кандидатом на злиття. Наприклад, двонаправлений кандидат на злиття може задати вектор руху списку 0 і вектор руху списку 1. В цьому прикладі відеокодер може сформувати штучного однонаправленого кандидата на злиття, який задає вектор руху списку 0, але не задає вектор руху списку 1. В цьому прикладі відеокодер може сформувати іншого штучного однонаправленого кандидата на злиття, який задає вектор руху списку 0, але не задає вектор руху списку 1. В даному прикладі відеокодер може сформувати ще одного штучного однонаправленого кандидата на злиття, який задає вектор руху списку 1, але не задає вектор руху списку 0. Таким шляхом відеокодер може сформувати однонаправлених штучних кандидатів на злиття з одного двонаправленого кандидата на просторове або часове злиття шляхом розділення цього двонаправленого кандидата на злиття на два однонаправлених кандидати на злиття: одного з вектора руху списку 0, а іншого з вектора руху списку 1. Відеокодер може внести будь-який або обох однонаправлених кандидатів на злиття в список кандидатів на злиття. Іншими словами, відеокодер може сформувати штучного однонаправленого кандидата на злиття таким чином, що цей штучний однонаправлений кандидат на злиття буде задавати вектор руху, заданий двонаправленим кандидатом на злиття. У прикладах, де відеокодер формує штучних однонаправлених кандидатів на злиття на основі векторів руху, заданих двонаправленими кандидатами на злиття, відеокодер може додавати цих штучних однонаправлених кандидатів на злиття в список кандидатів на злиття в різному порядку. Наприклад, відеокодер може додати штучного однонаправленого кандидата на злиття на основі вектора руху списку 1 першого двонаправленого кандидата на злиття, потім додати штучного однонаправленого кандидата на злиття на основі вектора руху списку 1 першого двонаправленого кандидата на злиття, потім додати штучного однонаправленого кандидата на злиття на основі вектора руху списку 0 другого двонаправленого кандидата на злиття, потім додати штучного однонаправленого кандидата на злиття на основі вектора руху списку 1 другого двонаправленого кандидата на злиття тощо. Якщо поточний PU не обмежений однонаправленим інтерпрогнозуванням ("Ні" на етапі 354), то відеокодер може сформувати штучного двонаправленого кандидата на злиття (360). Як згадувалося вище, відеокодер може визначити, чи обмежений поточний PU однонаправленим інтерпрогнозуванням? на основі різних факторів, таких як розмірна характеристика даного PU, параметр тощо. Відеокодер може сформувати штучного двонаправленого кандидата на злиття різними шляхами. Наприклад, відеокодер може вибрати комбінацію з двох кандидатів на злиття в списку кандидатів на злиття. У даному прикладі відеокодер може визначити, чи задає перший з вибраних кандидатів на злиття опорне зображення в списку 0, чи задає другий з вибраних кандидатів на злиття опорне зображення в списку 1, і чи мають задані опорні зображення різні порядкові номери. Якщо кожна з цих умов виконується, то відеокодер може сформувати штучного двонаправленого кандидата на злиття, який задає вектор руху списку 0 першого кандидата на злиття в згаданій комбінації, і вектор руху списку 1 другого кандидата на злиття в цій комбінації. У деяких прикладах (таких як приклад, показаний на фіг. 4), де список кандидатів на злиття може включати в себе однонаправлених кандидатів на злиття і двонаправлених кандидатів на злиття, процес 350 не включає в себе етапи 354, 356 та 358. У цьому випадку відеокодер може сформувати штучних двонаправлених кандидатів на злиття в списках кандидатів на злиття для блоків PU у В-слайсах. Після формування штучного двонаправленого кандидата на злиття відеокодер може внести цього штучного двонаправленого кандидата на злиття в список кандидатів на злиття для поточного PU (362). Потім відеокодер може визначити, чи потрібно сформувати ще одного штучного кандидата на злиття (352) тощо. На фіг. 8 представлена блок-схема, що ілюструє зразкову операцію 400 для визначення інформації про рух для PU з використанням режиму AMVP. Відеокодер, такий як відеокодер 20 27 UA 114314 C2 5 10 15 20 25 30 35 40 45 50 55 60 або відеодекодер 30, може виконати операцію 400 для визначення інформації про рух для PU, використовуючи режим AMVP. Після запуску операції 400 відеокодер може визначити, чи основане інтерпрогнозування для поточного PU на списку 0 (402). Якщо інтерпрогнозування для поточного PU основане на списку 0 ("Так" на етапі 402), то відеокодер може сформувати список кандидатів-предикторів вектора MV списку 0 для поточного PU (404). Список кандидатів-предикторів вектора MV списку 0 може включати в себе двох кандидатів-предикторів вектора MV списку 0. Кожний з кандидатівпредикторів вектора MV списку 0 може задавати вектор руху списку 0. Після формування списку кандидатів-предикторів вектора MV списку 0 відеокодер може визначити вибраного кандидата предиктора вектора MV списку 0 в списку кандидатівпредикторів вектора MV списку 0 (406). Відеокодер може визначити вибраного кандидатапредиктора вектора MV списку 0 на основі прапора предиктора MV списку 0 ("mvp_l0_flag"). Потім відеокодер може визначити вектор руху списку 0 для поточного PU на основі MVD списку 0 для поточного PU і вектор руху списку 0, заданий вибраним кандидатом-предиктором вектора MV списку 0 (408). Крім того, після визначення того, що інтерпрогнозування для поточного PU не основане на списку 0 ("Ні" на етапі 402), або після визначення вектора руху списку 0 для поточного PU (408), відеокодер може визначити, чи основане інтерпрогнозування для поточного PU на списку 1, або, чи використовується для даного PU двонаправлене інтерпрогнозування (410). Якщо інтерпрогнозування для поточного PU не основане на списку 1, і для поточного PU не використовується двонаправлене інтерпрогнозування ("Ні" на етапі 410), то відеокодер закінчує визначення інформації про рух для поточного PU з використанням режиму AMVP. У відповідь на визначення того, що інтерпрогнозування для поточного PU основане на списку 1, або того, що для поточного PU використовується двонаправлене інтерпрогнозування ("Так" на етапі 410), відеокодер може сформувати список кандидатів-предикторів вектора MV списку 1 для поточного PU (412). Список кандидатів-предикторів вектора MV списку 1 може включати в себе двох кандидатів-предикторів вектора MV списку 1. Кожний з кандидатів-предикторів вектора MV списку 0 може задавати вектор руху списку 1. Після формування списку кандидатів-предикторів вектора MV списку 1 відеокодер може визначити вибраного кандидата-предиктора вектора MV списку 1 в списку кандидатівпредикторів вектора MV списку 1 (414). Відеокодер може визначити вибраного кандидатапредиктора вектора MV списку 1 на основі прапора предиктора вектора MV списку 1 ("mvp_l1_flag"). Потім відеокодер може визначити вектор руху списку 1 для поточного PU на основі MVD списку 1 для поточного PU і вектора руху списку 1, заданого вибраним кандидатомпредиктором вектора MV списку 1 (416). У деяких прикладах відеокодер може не додавати двонаправлених кандидатів-предикторів MV в списки кандидатів-предикторів вектора MV списку 0 і списку 1. Іншими словами, якщо кандидат-предиктор вектора MV задає вектор руху списку 0 і вектор руху списку 1, то відеокодер може включати в себе кандидата-предиктора вектора MV зі списків кандидатівпредикторів вектора MV списку 0 і списку 1. Відеокодер може додати тільки однонаправлених кандидатів-предикторів вектора MV в списки кандидатів-предикторів вектора MV списку 0 і списку 1. Відеокодер може виконати це, перевіряючи, чи є кожний з можливих і наявних кандидатів-предикторів вектора MV однонаправленим, і включати в списки кандидатівпредикторів вектора MV тільки однонаправлених кандидатів-предикторів вектора MV. В одному або більше прикладах описані функції можуть бути реалізовані апаратними засобами, програмними засобами, програмно-апаратними засобами або будь-якою їх комбінацією. При реалізації програмними засобами ці функції можуть зберігатися або передаватися у вигляді однієї або більше команд або коду на комп'ютерно-зчитуваному носії і виконуватися обробляючим апаратним блоком. Комп'ютерно-зчитувані носії можуть включати в себе запам'ятовуючий комп'ютерно-зчитуваний носій, який відповідає матеріальному носію, такому як запам'ятовуючий носій, або середовищу передачі, включаючи будь-який носій, який сприяє пересиланню комп'ютерної програми з одного місця в інше, наприклад, згідно з протоколом зв'язку. У цьому аспекті комп'ютерно-зчитувані носії в загальному випадку можуть відповідати (1) матеріальним комп'ютерно-зчитуваним запам'ятовуючим носіям, які забезпечують довготривале зберігання, або (2) середовищу зв'язку, такому як сигнал або несуча хвиля. Середовищем для запам'ятовування даних може служити будь-яке доступне середовище, доступ до якого може здійснюватися одним або більше комп'ютерами або одним або більше процесорами для витягання команд, коду і/або структур даних для реалізації розкритих в цьому винаході методик. Комп'ютерний програмний продукт може включати в себе комп'ютерно-зчитуваний носій. 28
ДивитисяДодаткова інформація
Назва патенту англійськоюRestriction of prediction units in b slices to uni-directional inter prediction
Автори англійськоюWang, Xianglin, Seregin, Vadim, Karczewicz, Marta
Автори російськоюВан Сянлинь, Серёгин Вадим, Карчевич Марта
МПК / Мітки
МПК: H04N 7/00
Мітки: інтерпрогнозуванням, в-слайсах, обмеження, блоків, однонаправленим, прогнозування
Код посилання
<a href="https://ua.patents.su/41-114314-obmezhennya-odnonapravlenim-interprognozuvannyam-dlya-blokiv-prognozuvannya-u-v-slajjsakh.html" target="_blank" rel="follow" title="База патентів України">Обмеження однонаправленим інтерпрогнозуванням для блоків прогнозування у в-слайсах</a>
Попередній патент: Пестицидні композиції і способи, які їх стосуються
Наступний патент: Лікування раку інгібіторами тоr-кінази
Випадковий патент: Спосіб роздільного керування випрямлячем