Отримання контексту для кодування останньої позиції при виконанні відеокодування

Номер патенту: 114104

Опубліковано: 25.04.2017

Автори: Чіень Вей-Дзунг, Карчєвіч Марта, Го Лівей

Є ще 21 сторінка.

Дивитися все сторінки або завантажити PDF файл.

Формула / Реферат

1. Спосіб кодування відеоданих, який містить:

визначення контексту для ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих, з використанням функції індексу згаданого біна,

в якому функція створює контекстний індекс для контексту шляхом зсуву праворуч індексу біна на величину k і додання зсунутого праворуч значення до значення зміщення,

причому значення зміщення визначають відповідно до формули:

offset=3*n+((n+1)>>2),

причому значення k визначають відповідно до формули:

k=(n+3)>>2, і

причому значення n визначають відповідно до формули:

n=(log2(block_size)-2), і

причому значення block_size містить значення, що вказує розмір блока, і

кодування згаданого біна з використанням визначеного контексту.

2. Спосіб за п. 1, в якому визначення контексту містить виконання згаданої функції.

3. Спосіб за п. 1, в якому функція містить лінійну функцію.

4. Спосіб за п. 1, в якому функція містить нелінійну функцію.

5. Спосіб за п. 1, в якому функція створює контекстний індекс для контексту шляхом зсуву праворуч індексу біна на одиницю.

6. Спосіб за п. 1, який додатково містить прийом згаданої функції від користувача.

7. Спосіб за п. 1, який додатково містить прийом синтаксичних даних, що визначають згадану функцію.

8. Спосіб за п. 1, в якому кодування біна містить ентропійне декодування кодованих даних з використанням визначеного контексту для відтворення значення для біна.

9. Спосіб за п. 1, в якому кодування біна містить ентропійне кодування біна з використанням визначеного контексту.

10. Пристрій для кодування відеоданих, який містить

пам'ять, виконану з можливістю зберігання відеоданих; і

один або більше процесорів, виконаний з можливістю:

визначення контексту для ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих, з використанням функції індексу згаданого біна,

в якому функція створює контекстний індекс для контексту шляхом зсуву праворуч індексу біна на величину k і додання зсунутого праворуч значення до значення зміщення,

причому значення зміщення визначають відповідно до формули:

offset=3*n+((n+l)>>2),

причому значення k визначають відповідно до формули:

k=(n+3)>>2, і

причому значення n визначають відповідно до формули:

n=(log2(block_size)-2),

причому значення block_size містить значення, що вказує розмір блока, і

кодування згаданого біна з використанням визначеного контексту.

11. Пристрій за п. 10, в якому відеокодер виконаний з можливістю визначення контексту щонайменше частково шляхом виконання згаданої функції.

12. Пристрій за п. 10, в якому відеокодер додатково виконаний з можливістю прийому синтаксичних даних, що визначають згадану функцію.

13. Пристрій за п. 10, в якому відеокодер виконаний з можливістю кодування біна щонайменше частково шляхом ентропійного декодування кодованих даних з використанням визначеного контексту для відтворення значення для біна.

14. Пристрій за п. 10, в якому відеокодер виконаний з можливістю кодування біна щонайменше частково шляхом ентропійного кодування біна з використанням визначеного контексту.

15. Пристрій за п. 10, який містить щонайменше одне з:

інтегральну схему;

мікропроцесор; і

пристрій бездротового зв'язку, що містить згаданий відеокодер.

16. Пристрій для кодування відеоданих, який містить:

засіб для визначення контексту для ентропійного кодування біна значення,

що вказує останній значущий коефіцієнт блока відеоданих, з використанням функції індексу згаданого біна,

в якому функція створює контекстний індекс для контексту шляхом зсуву праворуч індексу біна на величину k і додання зсунутого праворуч значення до значення зміщення,

причому значення зміщення визначають відповідно до формули:

offset=3*n+((n+1)>>2),

причому значення k визначають відповідно до формули:

k=(n+3)>>2,

причому значення n визначають відповідно до формули:

n=(log2(block_size)-2), і

причому значення block_size містить значення, що вказує розмір блока, і

засіб для кодування згаданого біна з використанням визначеного контексту.

17. Пристрій за п. 16, в якому засіб для визначення контексту містить засіб для виконання згаданої функції.

18. Пристрій за п. 16, який додатково містить засіб для прийому синтаксичних даних, що визначають згадану функцію.

19. Зчитуваний комп'ютером носій даних, кодований командами, які при їх виконанні наказують програмованому процесору обчислювального пристрою:

визначати контекст для ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих, з використанням функції індексу згаданого біна,

причому функція створює контекстний індекс для контексту шляхом зсуву праворуч індексу біна на величину k і додання зсунутого праворуч значення до значення зміщення,

причому значення зміщення визначають відповідно до формули:

offset=3*n+((n+1)>>2),

причому значення k визначають відповідно до формули:

k=(n+3)>>2,

причому значення n визначають відповідно до формули:

n=(log2(block_size)-2), і

причому значення block_size містить значення, що вказує розмір блока, і

кодувати згаданий бін з використанням визначеного контексту.

20. Зчитуваний комп'ютером носій даних за п. 19, в якому команди, що наказують програмованому процесору визначати згаданий контекст, додатково включають в себе команди, що наказують програмованому процесору, виконувати згадану функцію.

21. Зчитуваний комп'ютером носій даних за п. 19, додатково кодований командами, які при їх виконанні наказують програмованому процесору приймати синтаксичні дані, що визначають згадану функцію.

Текст

Реферат: В одному прикладі пристрій включає в себе відеокодер, виконаний з можливістю визначення контексту для ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих з використанням функції індексу згаданого біна, і кодування згаданого біна з використанням визначеного контексту. Відеокодер може кодувати або декодувати згаданий бін, використовуючи контекстно-адаптивне бінарне арифметичне кодування (САВАС). Згадана функція також може залежати від розміру блока. При такій конфігурації немає необхідності запам'ятовування пристроєм таблиці, що вказує контекстні індекси для згаданих контекстів. UA 114104 C2 (12) UA 114104 C2 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 55 Дана заявка заявляє про пріоритет попередньої заявки США №61/614,178, поданої 22 березня 2012 року, попередньої заявки США №61/620,273, поданої 04 квітня 2012 року і попередньої заявки США №61/666,316, поданої 29 червня 2012 року, зміст кожної з яких включений сюди шляхом посилання. Галузь техніки Даний винахід стосується відеокодування. Рівень техніки Можливості цифрового відео можуть бути передбачені у пристроях найширшого застосування, у тому числі таких як цифрові телевізійні приймачі, системи прямого цифрового мовлення, системи бездротового мовлення, персональні цифрові помічники (PDA), портативні комп'ютери або настільні комп'ютери, планшетні комп'ютери, пристрої зчитування електронних книг, цифрові камери, цифрові записуючі пристрої, цифрові медіаплеєри, відеоігрові пристрої, відеоігрові консолі, стільникові або супутникові радіотелефони, так звані "смартфони", пристрої для проведення відеотелеконференцій, пристрої потокового відео і т.п. Пристрої цифрового відео реалізовують методики відеокодування, такі як описані у стандартах, визначених як MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Частина 10, стандарт вдосконаленого відеокодування (AVC), стандарт високоефективного відеокодування (HEVC), що знаходиться у процесі розробки, а також розширення вказаних стандартів. Відеопристрої можуть передавати, приймати, кодувати, декодувати і/або запам'ятовувати цифрову відеоінформацію більш ефективним чином шляхом реалізації вказаних методик відеокодування. Методики відеокодування включають в себе просторове (інтракадрове) прогнозування і/або часове (інтеркадрове) прогнозування для зменшення або усунення надмірності, властивої відеопослідовностям. Для відеокодування на основі блоків відеослайси (наприклад, відеокадр або частина відеокадру) можуть бути розділені на відеоблоки, які також можуть називатися деревоподібними блоками, одиницями кодування (CU), і/або вузлами кодування. Відеоблоки в інтракодованому (I) слайсі зображення кодують з використанням просторового прогнозування застосовно до опорних відліків у сусідніх блоках одного і того самого зображення. У відеоблоках в інтеркодованому (Р або В) слайсі зображення може використовуватися просторове прогнозування у відношенні опорних відліків у сусідніх блоках одного і того самого зображення або часове прогнозування у відношенні опорних відліків інших опорних зображень. Зображення можуть називатися кадрами, а опорні зображення можуть називатися опорними кадрами. У результаті просторового або часового прогнозування отримують блок прогнозування для блока, що підлягає кодуванню. Залишкові дані представляють піксельні різниці між початковим блоком, що підлягає кодуванню, і блоком прогнозування. Інтеркодований блок кодують відповідно до вектора руху, який вказує блок опорних відліків, які утворюють блок прогнозування, і відповідно до залишкових даних, які показують різницю між кодованим блоком і блоком прогнозування. Інтракодований блок кодують відповідно до режиму інтракодування і залишкових даних. Для додаткового стиснення залишкові дані можна перетворити з піксельної області в область перетворення, у результаті чого отримують залишкові коефіцієнти перетворення, які потім можуть бути піддані квантуванню. Квантовані коефіцієнти перетворення, спочатку скомпоновані у двовимірній матриці, можуть бути відскановані для створення одновимірного вектора коефіцієнтів перетворення, до яких можна застосувати ентропійне кодування для досягнення ще більшого стиснення. Суть винаходу У загальному випадку у даному винаході описуються методики для кодування синтаксичних елементів, пов'язаних з відеоданими, з використанням однієї або декількох функцій. Наприклад, пристрій може реалізувати одну або декілька методик для кодування значення, що вказує позицію останнього значущого коефіцієнта блока відеоданих (такого як одиниця перетворення, або "TU"). Для кодування цього значення пристрій може використовувати функцію індексу кожного біта (або "біна") у бінаризованому значенні, що відповідає останньому значущому коефіцієнту, де індекс вказує позицію біна у матриці бінів, що представляють згадане бінаризоване значення. В одному прикладі спосіб включає в себе визначення контексту для ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих, з використанням функції індексу цього біна, і кодування вказаного біна з використанням визначеного контексту. В іншому прикладі пристрій для кодування відеоданих включає в себе відеокодер, виконаний з можливістю визначення контексту для ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих, з використанням функції індексу цього біна, і кодування біна з використанням визначеного контексту. 1 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 55 60 Ще в одному прикладі пристрій включає в себе засіб для визначення контексту для ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих, з використанням функції індексу цього біна, і засіб для кодування біна з використанням визначеного контексту. У наступному прикладі зчитуваний комп'ютером носій даних закодований командами. При виконанні ці команди наказують процесору, що програмується, обчислювального пристрою визначати контекст для ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих, з використанням функції індексу цього біна, і кодувати бін з використанням визначеного контексту. Далі на супровідних кресленнях і наведеному нижче описі викладаються деталі одного або декількох прикладів. Інші ознаки, задачі і переваги винаходу стануть очевидними зі згаданого опису, креслень, а також з формули винаходу. Короткий опис креслень Фіг. 1 - блок-схема, що ілюструє наведену як приклад систему відеокодування і відеодекодування, в якій можуть використовуватися методики для визначення контексту з метою його використання для кодування значення, що представляє останній значущий коефіцієнт блока відеоданих; Фіг. 2 - блок-схема, що ілюструє наведений як приклад відеокодер, який може реалізувати методики для визначення контексту з метою його використання для кодування значення, що представляє останній значущий коефіцієнт блока відеоданих; Фіг. 3 - блок-схема, що ілюструє наведений як приклад відеодекодер, який може реалізувати методики для визначення контексту з метою його використання для кодування значення, що представляє останній значущий коефіцієнт блока відеоданих; Фіг. 4 - блок-схема, що ілюструє наведений як приклад спосіб кодування поточного блока відеоданих; Фіг. 5 - блок-схема, що ілюструє наведений як приклад спосіб декодування поточного блока відеоданих. Докладний опис винаходу У загальному випадку методики даного винаходу стосуються відеокодування. При відеокодуванні послідовність зображень кодують індивідуально, використовуючи або просторове прогнозування (інтра-прогнозування), або часове прогнозування (інтерпрогнозування). Зокрема, відеокодери кодують окремі блоки зображень, використовуючи інтраабо інтер-прогнозування. Відеокодери також кодують залишкові дані для блоків, де залишкові дані у загальному випадку відповідають залишковим блокам, які представляють різниці у пікселях між прогнозованими даними і не обробленими, не кодованими даними. Відеокодери можуть виконати перетворення і квантування залишкових даних для створення квантованих коефіцієнтів перетворення для залишкових блоків. Відеокодери додатково кодують синтаксичні дані, такі як, чи є ці коефіцієнти значущими (тобто, мають абсолютні значення, що перевищують 0), місцеположення значущих коефіцієнтів, місцеположення останнього значущого коефіцієнта у порядку сканування і значення рівня для значущих коефіцієнтів. У даному винаході описані методики для кодування значення, що вказує останній значущий коефіцієнт у блоці відеоданих, такому як одиниця перетворення (TU). Зокрема, для кодування синтаксичних елементів, таких як значення, що вказує останній значущий коефіцієнт у блоці, відеокодери можуть бути виконані з можливістю застосування контекстно-адаптивного бінарного арифметичного кодування (CABAC). CABAC кодування включає в себе використання різних контекстів, вказаних контекстними індексами, які звичайно вказують ймовірність того, що окремий біт (або "бін") бінаризованого ланцюга буде мати конкретне значення (наприклад 0 або 1). Зокрема, контекст для кодування біна значення, що вказує останній значущий коефіцієнт у блоці, визначають окремо для кожного біна вказаного значення, тобто, на основі місцеположення цього біна у даному значенні (наприклад, індекс біна у припущенні, що згадане значення представлене у вигляді матриці бінів). Методики даного винаходу включають в себе використання деякої функції для визначення контекстного індексу контексту для використання з метою кодування біна, а не використання таблиці відображення, яка забезпечує вказівки контекстних індексів для контекстів з метою їх використання для кодування конкретних бінів. Зокрема, такою функцією може бути функція індексу біна. Наприклад, якщо припустити, що згаданий бін є i-м біном значення, що кодується, то може бути визначена функція у вигляді f(i), де f(i) повертає значення контекстного індексу, що відповідає контексту для використання з метою кодування біна i бінаризованого значення. Як було описано вище, контекст може вказувати ймовірність того, що бін i буде мати конкретне значення, наприклад, 0 або 1. 2 UA 114104 C2 5 10 Таким чином у даному винаході описані методики кодування відповідно до CABAC позиції останнього значущого коефіцієнта (остання позиція). Для біна останньої позиції, що підлягає кодуванню, індекс контексту CABAC можна отримати, використовуючи функцію, таку як таблиця відображення бінів останньої позиції на контексти CABAC, на якій можна зекономити (наприклад, не зберігати). Кодування CABAC звичайно включає в себе дві частини: бінаризацію і кодування CABAC. Процес бінаризації виконують для перетворення місцеположення останнього значущого коефіцієнта блока у двійковий ланцюжок, наприклад, матрицю бінів. Способом бінаризації, що використовується у тестовій моделі високоефективного відеокодування (HM), є зрізане унарне кодування з фіксованою довжиною. Для частини зрізаного унарного коду кодування бінів здійснюється з використанням контекстів CABAC. Для частини з фіксованою довжиною кодування бінів здійснюється з використанням обхідного режиму (без контекстів). Приклад TU (одиниця перетворення/блок перетворення) розміром 32 × 32 показаний у Таблиці 1. Таблиця 1 Величина компоненти останньої позиції 0 1 2 3 4-5 6-7 8-11 12-15 16-23 24-31 15 Зрізаний унарний (контекстна модель) Фіксований бінарний (обхідний) f_value 1 01 001 0001 00001 000001 0000001 00000001 000000001 0000000001 X X XX XX XXX XXX 0 0 0 0 0-1 0-1 0-3 0-3 0-7 0-7 У наведеній нижче Таблиці 2 показаний приклад таблиці контекстного відображення, що використовується у стандартній моделі HM. У Таблиці 2 показано, що останні позиції у різних місцях можуть мати однакові контексти. Для деяких бінів, наприклад, біни 6-7 блока 8×8, контекст не присвоєний, оскільки вони кодовані без контексту (обхідний режим), як показано у наведеній вище Таблиці 1. 20 Таблиця 2 Індекс біна TU 4×4 TU 8×8 TU 16×6 TU 32×32 25 30 35 0 0 3 6 10 1 1 4 7 11 2 2 5 8 12 3 4 5 6 7 8 5 8 14 2 9 13 9 13 2 14 14 9 2 Хоча у стандартній моделі HM таблиця, така як таблиця 2, використовується для визначення контекстів для кодування бінів, значення останньої позиції (тобто, значення, що вказує позицію останнього значущого коефіцієнта у блоці відеоданих), розкриті тут методики включають в себе використання функції для визначення контекстів для кодування бінів значення останньої позиції. Таким чином, у відеокодері, сконфігурованому відповідно до методик, запропонованих у даному винаході, немає необхідності мати таблицю, подібну до Таблиці 2. Для отримання контекстного індексу CABAC для бінів при кодуванні останньої позиції можна використати функцію, таким чином таблицю відображення (Таблиця 2) можна виключити. Далі більш детально описуються різні приклади пристроїв кодування, виконаних з можливістю реалізації функції, призначеної для визначення контекстів для кодування бінів синтаксичних елементів. На фіг. 1 представлена блок-схема, де показаний приклад системи 10 відеокодування і відеодекодування, в якій можуть бути використані методики для визначення контексту з метою його використання для кодування значення, що представляє останній значущий коефіцієнт блока відеоданих. Як показано на фіг. 1, система 10 включає в себе пристрій-джерело 12, що забезпечує кодовані відеодані, які надалі підлягають декодуванню пристроєм-адресатом 14. Зокрема, пристрій-джерело 12 подає відеодані на пристрій-адресат 14, використовуючи 3 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 55 60 зчитуване комп'ютером середовище 16. Пристрій-джерело 12 і пристрій-адресат 14 можуть містити будь-який з найрізноманітніших пристроїв, у тому числі, настільні комп'ютери, комп'ютери типу "ноутбук" (наприклад, "лептоп"), планшетні комп'ютери, телевізійні префікси, телефонні трубки, такі як так звані "смартфони", так звані "смартпеди", телевізійні приймачі, камери, пристрої відображення, цифрові медіаплеєри, відеоігрові консолі, пристрій потокового відео або т.п. У деяких випадках пристрій-джерело 12 і пристрій-адресат 14 можуть бути обладнані засобами бездротового зв'язку. Пристрій-адресат 14 може приймати кодовані відеодані, що підлягають декодуванню, через зчитуване комп'ютером середовище 16. Зчитуване комп'ютером середовище 16 може містити середовище або пристрій будь-якого типу, здатний переміщати кодовані відеодані від пристрою-джерела 12 на пристрій-адресат 14. В одному прикладі зчитуване комп'ютером середовище 16 може містити середовище зв'язку, що надає пристрою-джерелу 12 можливість передавати кодовані відеодані безпосередньо на пристрій-адресат 14 у режимі реального часу. Кодовані відеодані можуть модулюватися відповідно до стандарту зв'язку, такого як протокол бездротового зв'язку, і передаватися на пристрій-адресат 14. Середовище зв'язку може містити будь-який носій дротового або бездротового зв'язку, наприклад, радіочастотний (RF) спектр або одну, або декілька фізичних ліній передачі. Середовище зв'язку може складати частину мережі пакетної передачі, такої як локальна мережа, регіональна мережа або глобальна мережа, наприклад Інтернет. Середовище зв'язку може включати в себе маршрутизатори, комутатори, базові станції або будь-яке інше обладнання, яке може бути корисне для здійснення зв'язку між пристроєм-джерелом 12 і пристроєм-адресатом 14. У деяких прикладах кодовані дані можуть виводитися через вихідний інтерфейс 22 у запам'ятовуючий пристрій. Аналогічним чином, доступ до кодованих даних із запам'ятовуючого пристрою може здійснюватися через вхідний інтерфейс. Цей запам'ятовуючий пристрій може включати в себе найрізноманітніші розподілені або локально доступні запам'ятовуючі середовища, такі як накопичувач на жорстких дисках, диски типу Blu-ray, диски DVD, диски CDROM, флеш-пам'ять, енергозалежна або енергонезалежна пам'ять, або будь-яке інше придатне цифрове запам'ятовуюче середовище для зберігання кодованих відеоданих. У ще одному прикладі запам'ятовуючий пристрій може відповідати файловому серверу або іншому проміжному запам'ятовуючому пристрою, який може зберігати кодоване відео, створене пристроєм-джерелом 12. Пристрій-адресат 14 у цьому прикладі може звертатися до кодованих відеоданих із запам'ятовуючого пристрою за допомогою потокової передачі або завантаження. Файловий сервер може являти собою сервер будь-якого типу, здатний запам'ятовувати і зберігати кодовані відеодані і передавати ці кодовані відеодані на пристрій-адресат 14. Приклади файлових серверів включають в себе Web-сервер (наприклад, для Web-сайта), сервер Протоколу пересилання файлів (FTP), підключені до мережі запам'ятовуючі пристрої (NAS) і локальні накопичувачі на диску. Пристрій-адресат 14 може мати доступ до кодованих відеоданих через будь-яке стандартне з'єднання для передачі даних, у тому числі Інтернет з'єднання. Такі з'єднання можуть включати в себе бездротові канали (наприклад, Wi-Fi з'єднання), дротові з'єднання (наприклад, DSL, кабельний модем і т.д.), або комбінацію обох видів з'єднань, яка підходить для доступу до кодованих відеоданих, що зберігаються на файловому сервері. Передача кодованих відеоданих від запам'ятовуючого пристрою може бути реалізована у вигляді потокової передачі, передачі із завантаженням або їх комбінації. Розкриті тут методики не обов'язково обмежуються бездротовими додатками або установками. Ці методики можна застосувати до відеокодування для підтримки будь-якого з різноманітних мультимедійних додатків, таких як ефірне телевізійне мовлення, передачі кабельного телебачення, передачі супутникового телебачення, передачі потокового відео, наприклад, через Інтернет, такі як динамічна адаптивна потокова передача за Протоколом HTTP (DASH), цифрове відео, кодоване у запам'ятовуючому середовищі, декодування цифрового відео, що зберігається у запам'ятовуючому середовищі, або інші додатки. У деяких прикладах система 10 може бути виконана з можливістю підтримки однонаправленої або двонаправленої передачі відео для підтримки додатків, таких як потокове відео, відео відтворення, відеомовлення і/або відеотелефонія. У прикладі за фіг. 1 пристрій-джерело 12 включає в себе джерело 18 відео, відеокодер 20 і вихідний інтерфейс 22. Пристрій-адресат 14 включає в себе вхідний інтерфейс 28, відеодекодер 30 і пристрій 32 відображення. Відповідно до даного винаходу відеокодер 20 пристрою-джерела 12 може бути виконаний з можливістю застосування методик визначення контексту з метою використання для кодування значення, що представляє останній значущий коефіцієнт блока відеоданих. В інших прикладах пристрій-джерело і пристрій-адресат можуть включати в себе інші компоненти або компонування. Наприклад, пристрій-джерело 12 може приймати відеодані 4 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 55 60 від зовнішнього джерела 18 відео, такого як зовнішня камера. Аналогічним чином пристрійадресат 14 може взаємодіяти із зовнішнім пристроєм відображення, а не містити вбудований пристрій відображення. Показана на фіг. 1 система 10 є просто одним з прикладів. Методики визначення контексту з метою його використання для кодування значення, що представляє останній значущий коефіцієнт блока відеоданих, можуть бути реалізовані за допомогою будь-якого пристрою цифрового відеокодування і/або відеодекодування. Хоча у загальному випадку розкриті тут методики реалізовуються пристроєм відеокодування, вони також можуть бути реалізовані відеокодером/відеодекодером, який називають, як правило, "кодек". Крім того, розкриті тут методики можуть бути реалізовані процесором попередньої обробки відео. Пристрій-джерело 12 і пристрій-адресат 14 є лише прикладами вказаних пристроїв кодування, в яких пристрійджерело 12 створює кодовані відеодані для передачі на пристрій-адресат 14. У деяких прикладах пристрої 12, 14 можуть функціонувати по суті симетрично, таким чином кожний з пристроїв 12, 14 включає в себе компоненти відеокодування і відеодекодування. Таким чином, система 10 може підтримувати однонаправлену або двонаправлену передачу відео між пристроями 12, 14, наприклад, для потокового відео, відтворення відео, відеомовлення або відеотелефонії. Джерело 18 відео пристрою-джерела 12 може включати в себе пристрій захоплення зображення, такий як відеокамера, відеоархів, що містить раніше зафіксоване відео, і/або інтерфейс подачі відео для прийому відео від провайдера відеоконтенту. Як додаткова альтернатива, джерело 18 відео може створювати дані на основі комп'ютерної графіки як початкове відео або комбінації реального відео, архівованого відео і відео, створеного комп'ютером. У деяких випадках, якщо джерелом 18 відео є відеокамера, пристрій-джерело 12 і пристрій-адресат 14 можуть утворити так звані "камерофони" або "відеофони". Однак, як згадувалося вище, розкриті тут методики можна застосувати до відеокодування загалом, а також до додатків для бездротового і/або дротового зв'язку. У кожному випадку зафіксоване відео, заздалегідь зафіксоване відео або створене комп'ютером відео може бути кодоване відеокодером 20. Потім кодована відеоінформація може бути виведена вихідним інтерфейсом 22 у зчитуване комп'ютером середовище 16. Зчитуване комп'ютером середовище 16 може включати в себе середовище передачі, таке як бездротове мовлення або дротова мережна передача, або запам'ятовуюче середовище (тобто, некороткочасне запам'ятовуюче середовище), таке як жорсткий диск, флеш-пам'ять, компактдиск, цифровий відеодиск, диск Blue-ray або інше, зчитуване комп'ютером середовище. У деяких прикладах мережний сервер (не показаний) може приймати кодовані відеодані від пристрою-джерела 12 і подавати ці кодовані відеодані на пристрій-адресат 14, наприклад, за допомогою мережної передачі. Аналогічним чином, обчислювальний пристрій засобу створення медіа, такого як засіб штампування дисків, може приймати кодовані відеодані від пристроюджерела 12 і формувати диск, що містить кодовані відеодані. Таким чином, потрібно розуміти, що у різних прикладах зчитуване комп'ютером середовище 16 включає в себе одне або більше зчитуваних комп'ютером середовищ різних видів. Вхідний інтерфейс 28 пристрою-адресата 14 приймає інформацію зі зчитуваного комп'ютером середовища 16. Інформація у зчитуваному комп'ютером середовищі 16 може включати в себе синтаксичну інформацію, визначену відеокодером 20, яка також використовується відеодекодером 30, яка містить синтаксичні елементи, що описують характеристики, і/або обробку блоків та інших кодованих одиниць (наприклад, GOP). Пристрій 32 відображення відображає декодовані відеодані користувачу і може містити будь-який з множини різних пристроїв відображення, таких як електронно-променева трубка (CRT), рідкокристалічний дисплей (LCD), плазмовий дисплей, дисплей на органічних світловипромінюючих діодах (OLED), або пристрій відображення іншого типу. Відеокодер 20 і відеодекодер 30 можуть працювати відповідно до стандарту відеокодування, такого як стандарт високоефективного відеокодування (HEVC), що розробляється у наш час, і може відповідати тестовій моделі (HM) стандарту HEVC. Як альтернатива, відеокодер 20 і відеодекодер 30 можуть працювати відповідно до інших комерційних або промислових стандартів, таких як стандарт ITU-T H.264, що має іншу назву MPEG-4 частина 10, стандарт вдосконаленого відеокодування (AVC) або розширення вказаних стандартів. Однак, розкриті тут методики не обмежуються будь-яким конкретним стандартом кодування. Інші приклади стандартів відеокодування включають в себе стандарти MPEG-2 і ITUT H.263. Хоча це на фіг. 1 не показано, відповідно до деяких аспектів відеокодер 20 і відеодекодер 30 можуть кожний бути інтегровані з аудіокодером і аудіодекодером, причому вони можуть включати в себе відповідні блоки MUX-DEMUX або інші елементи апаратного і 5 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 55 60 програмного забезпечення для обробки кодування як аудіо, так і відео у спільному потоці даних або окремих потоках даних. Якщо це застосовно, то блоки MUX-DEMUX можуть відповідати протоколу мультиплексора ITU H.223 або іншим протоколам, таким як протокол дейтаграм користувача (UDP). Стандарт ITU-T H.264/MPEG-4 (AVC) був розроблений експертною групою з відеокодування ITU-T разом з експертною групою з рухомих зображеннь (MPEG) ISO/IEC, як продукт колективу, відомого як Об'єднана команда розробників (JVT). У деяких аспектах описані у даному винаході методики можна застосувати до пристроїв, які загалом відповідають стандарту H.264. Стандарт H.264 описаний в ITU-T Recommendation H.264, Advanced Video Coding для стандартних аудіовізуальних послуг дослідницькою групою ITU-T у березні 2005 року, який далі називається тут стандартом H.264, специфікацією H.264 або стандартом або специфікацією H.264/AVC. Об'єднана команда розробників відео (JVT) продовжує роботу над розширеннями H.264/MPEG4 AVC. Відеокодер 20 і відеодекодер 30 можуть бути реалізовані кожний у вигляді будь-якої з множини придатних схем кодера, таких як один або декілька мікропроцесорів, цифрових процесорів сигналів (DSP), прикладних спеціалізованих інтегральних схем (ASIC), вентильних матриць, що програмуються користувачем (FPGA), дискретної логіки, програмного забезпечення, апаратного забезпечення, програмно-апаратного забезпечення або будь-якої їх комбінації. При частковій реалізації цих методик програмними засобами у пристрої можуть зберігатися команди для цих програмних засобів на придатному зчитуваному комп'ютером носії тривалого зберігання, і пристрій може виконувати ці команди апаратними засобами, використовуючи один або декілька процесорів для виконання розкритих тут методик. Відеокодер 20 і відеодекодер 30 можуть входити до складу одного або декількох кодерів або декодерів, будь-який з яких може бути складовою частиною комбінованого кодера/декодера (CODEC) у відповідному пристрої. Команда JCT-VC працює у наш час над створенням стандарту HEVC. Роботи зі створення стандарту HEVC базуються на вдосконаленні моделі пристрою відеокодування, яка називається тестовою моделлю стандарту HEVC (HM). Модель HM пропонує декілька додаткових функцій пристроїв відеокодування у порівнянні з існуючими пристроями, що відповідають, наприклад, стандарту ITU-T H.264/AVC. У той час як стандарт H.264 забезпечує дев'ять режимів інтракодування, модель HM може забезпечити до тридцяти трьох режимів інтра-кодування. У загальному випадку робоча модель HM передбачає можливість розділення відеокадру або відеозображення на послідовність деревоподібних блоків або максимальних одиниць кодування (LCU), які включають в себе як відліки яскравості, так і відліки кольоровості. Синтаксичні дані у бітовому потоці можуть визначити розмір для LCU, яка є максимальною одиницею кодування з точки зору кількості пікселів. Слайс включає в себе декілька послідовних деревоподібних блоків у порядку кодування. Відеокадр або відеозображення можна розбити на один або декілька слайсів. Кожний деревоподібний блок можна розділити на одиниці кодування (CU) відповідно до квадродерева. У загальному випадку структура даних квадродерева включає в себе один вузол на одну CU з кореневим вузлом, що відповідає вказаному деревоподібному блоку. Якщо CU розділена на чотири суб-CU, то вузол, що відповідає цій CU, включає в себе чотири кінцевих вузли, кожний з яких відповідає одній з суб-CU. Кожний вузол структури даних квадродерева може забезпечити синтаксичні дані для відповідної CU. Наприклад, вузол у квадродереві може включати в себе прапор розділення, що вказує, чи розділена CU, що відповідає даному вузлу, на декілька суб-CU. Синтаксичні елементи для CU можуть бути визначені рекурсивно і залежати від того, чи розділена дана CU на суб-CU. Якщо CU далі не розділяється, то вона називається кінцевою CU. У цьому винаході чотири суб-CU кінцевої CU також називаються кінцевими CU, навіть у тому випадку, якщо в явному вигляді відсутнє розділення початкової кінцевої CU. Наприклад, якщо CU розміром 16×16 далі не розділена, то чотири суб-CU розміром 8×8 також будуть називатися кінцевими CU, хоча CU розміром 16×16 ніколи не розщеплювалася. Одиниця CU має таке ж призначення, як макроблок у стандарті H.264, за винятком того, що CU не має точно встановленого розміру. Наприклад, деревоподібний блок може бути розділений на чотири дочірніх вузли (які називають також суб-CU), а кожний дочірній вузол, у свою чергу, може бути батьківським вузлом і бути розділений на чотири інших дочірніх вузла. Кінцевий нерозділений дочірній вузол, який називається кінцевим вузлом квадродерева, містить вузол кодування, який також називається кінцевою CU. Синтаксичні дані, пов'язані з кодованим бітовим потоком, можуть визначити максимально можливу кількість розділень деревоподібного блока, яку називають максимальною глибиною CU, а також можуть визначити мінімальний розмір вузлів кодування. Відповідно, бітовий потік також може визначити мінімальну одиницю 6 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 55 60 кодування (SCU). У даному винаході для посилання на будь-яку з одиниць (CU, PU або TU) у контексті стандарту HEVC використовується термін "блок", або на аналогічні структури даних у контексті інших стандартів (наприклад, макроблоки і їх субблоки у стандарті H.264/AVC). Одиниця CU включає в себе вузол кодування і одиниці прогнозування (PU), а також одиниці перетворення (TU), пов'язані з вузлом кодування. Розмір одиниці CU відповідає розміру вузла кодування, причому вона повинна мати форму квадрата. Розмір CU може знаходитися у діапазоні від 8×8 пікселів до розміру деревоподібного блока з максимальним розміром 64×64 пікселі або більше. Кожна CU може містити одну або декілька PU і одну або декілька TU. Синтаксичні дані, пов'язані з CU, можуть, наприклад, описувати розділення CU на одну або декілька PU. Режими розділення можуть відрізнятися один від одного в залежності від того, закодована CU у режимі з інтра-прогнозуванням або у режимі з інтер-прогнозуванням. Одиниці PU можуть бути розділені на неквадратні частини. Синтаксичні дані, пов'язані з CU, можуть також описувати, наприклад, розділення CU на одну або декілька PU відповідно до квадродерева. Одиниця TU може мати квадратну або неквадратну (наприклад, прямокутну) форму. Стандарт HEVC дозволяє виконувати перетворення відповідно до одиниць TU, які можуть відрізнятися для різних CU. Розміри TU, як правило, встановлюють на основі розміру одиниць PU у даній CU, визначеній для LCU, хоча так може бути не завжди. Одиниці TU, як правило, мають такий самий або менший розмір, ніж одиниці PU. У деяких прикладах залишкові відліки, що відповідають CU, можуть бути поділені на менші одиниці з використанням структури квадродерева, відомої як "залишкове квадродерево" (RQT). Кінцеві вузли RQT можуть називатися одиницями перетворення (TU). Значення піксельної різниці, пов'язані з одиницями TU, можна перетворити для створення коефіцієнтів перетворення, які можна піддати квантуванню. Кінцева CU може включати в себе одну або декілька одиниць прогнозування (PU). У загальному випадку PU представляє просторову область, що відповідає всім або частині відповідних CU і може включати в себе дані для діставання опорного відліку для даної PU. Крім того, PU включає в себе дані, що стосуються прогнозування. Наприклад, коли PU кодують з використанням інтра-режиму, дані для цієї PU можуть бути включені у залишкове квадродерево (RQT), яке може включати в себе дані, що описують режим інтра-прогнозування для TU, що відповідає даній PU. В іншому прикладі, коли при кодуванні PU використовується інтер-режим, PU може містити дані, що визначають один або декілька векторів руху для цієї PU. Дані, що визначають вектор руху для PU, можуть, наприклад, описувати горизонтальну компоненту вектора руху, вертикальну компоненту вектора руху, роздільну здатність для вектора руху (наприклад, з точністю до чверті пікселя або з точністю до однієї восьмої пікселя), опорне зображення, на яке вказує вектор руху і/або список опорних зображень (наприклад, список 0, список 1 або список С) для вектора руху. Кінцева CU, що має одну або декілька PU, також може включати в себе одну або декілька одиниць перетворення (TU). Одиниці перетворення можуть бути задані з використанням RQT (що також називається структурою квадродерева TU), як було описано вище. Наприклад, прапор розділення може вказувати, чи розділена кінцева CU на чотири одиниці перетворення. Потім кожна одиниця перетворення може бути додатково розділена на суб-TU. Коли TU далі не розділяється, її можна назвати кінцевою TU. У загальному випадку для інтра-кодування всі кінцеві TU, що належать одній кінцевій CU, спільно використовують один і той самий режим інтра-прогнозування. Тобто, для обчислення прогнозованих значень для всіх TU кінцевої CU звичайно застосовується один і той самий режим інтра-прогнозування. Для інтра-кодування відеокодер може обчислити залишкове значення для кожної кінцевої TU, використовуючи режим інтра-прогнозування, у вигляді різниці між частиною CU, що відповідає TU, і початковим блоком. Розмір TU немає необхідності обмежити розміром PU. Таким чином, TU можуть бути більше і менше, ніж PU. Для інтра-кодування PU може бути суміщена з відповідною кінцевою TU для однієї і тієї самої CU. У деяких прикладах максимальний розмір кінцевої TU може відповідати розміру відповідної кінцевої CU. Крім того, одиниці TU кінцевих CU також можуть бути пов'язані з відповідними структурами даних квадродерева, які називають залишковими квадродеревами (RQT). Тобто, кінцева CU може включати в себе квадродерево, що вказує, яким чином кінцева CU розділена на одиниці TU. У загальному випадку кореневий вузол квадродерева TU відповідає кінцевій CU, у той час як кореневий вузол квадродерева CU у загальному випадку відповідає деревоподібному блоку (або LCU). Нерозділені одиниці TU квадродерева RQT, називаються кінцевими TU. У даному винаході терміни CU і TU звичайно стосуються кінцевої CU і кінцевої TU відповідно, якщо не вказано інше. 7 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 55 60 Відеопослідовність, як правило, включає в себе ряд кадрів або зображень. Група зображень (GOP) звичайно містить ряд, що складається з одного або декількох відеозображень. Група GOP може включати в себе синтаксичні дані у заголовку GOP, у заголовку одного або декількох зображень або де-небудь ще, які описують декілька зображень, включених у групу GOP. Кожний слайс зображення може включати в себе синтаксичні дані слайса, які описують режим кодування для відповідного слайса. Як правило, відеокодер 20 працює з відеоблоками в окремих відеослайсах для виконання кодування відеоданих. Відеоблок може відповідати вузлу кодування у CU. Відеоблоки можуть мати фіксовані або змінні розміри і можуть відрізнятися за розміром в залежності від конкретного стандарту кодування. Наприклад, модель HM підтримує прогнозування для різних розмірів PU. Припустимо, що розмір конкретної CU становить 2N×2N, модель HM підтримує інтра-прогнозування для розмірів PU, що становлять 2N×2N або N×N, і інтер-прогнозування для симетричних розмірів PU, що становлять 2N×2N, 2N×N, N×2N або N×N. Модель HM також підтримує асиметричне розбиття для інтер-прогнозування для розмірів PU, що становлять 2N×nU, 2N×nD, nL×2N і nR×2N. При асиметричному розбитті в одному напрямі блока CU розбиття відсутнє, у той час як в іншому напрямі виконується розбиття на частини у відношенні 25 % і 75 %. Частина CU, що відповідає 25 % частини, позначена як "n", після якої йде позначення "Вгору", "Вниз", "Ліворуч" або "Праворуч". Таким чином, наприклад, "2N×nU" стосується CU розміром 2N×2N, яка розбита по горизонталі на PU розміром 2N×0,5N зверху і PU розміром 2N×1,5N знизу. У даному описі форми "N×N" і "N на N" можуть використовуватися як взаємозамінні для посилання на піксельні розміри відеоблока з точки зору розмірів по вертикалі і горизонталі. Наприклад, 16×16 пікселів або 16 на 16 пікселів. У загальному випадку блок розміром 16×16 буде мати 16 пікселів у вертикальному напрямі (у=16) і 16 пікселів у горизонтальному напрямі (х=16). Аналогічним чином, блок N×N звичайно має N пікселів у вертикальному напрямі і N пікселів у горизонтальному напрямі, де N представляє не від'ємне ціле значення. Пікселі у блоці можуть бути скомпоновані по рядках і стовпчиках. Крім того, блоки не обов'язково повинні мати однакову кількість пікселів у горизонтальному напрямі і у вертикальному напрямі. Наприклад, блоки можуть містити N×M пікселів, де M не обов'язково дорівнює N. Услід за кодуванням з інтра-прогнозуванням або інтер-прогнозуванням з використанням одиниць PU одиниці CU відеокодер 20 може обчислити залишкові дані для одиниць TU одиниці CU. Одиниці PU можуть містити синтаксичні дані, що описують спосіб або режим створення прогнозних піксельних даних у просторовій області (яка також називається областю пікселів), а одиниці TU можуть містити коефіцієнти в області перетворення після застосування перетворення, наприклад, дискретного косинусного перетворення (DCT), цілочислового перетворення, вейвлетного перетворення або концептуально подібного перетворення, застосованого до залишкових відеоданих. Залишкові дані можуть відповідати піксельним різницям між пікселями не кодованого зображення і значеннями прогнозування, що відповідають одиницям PU. Відеокодер 20 може утворити одиниці TU, що включають в себе залишкові дані для CU, а потім перетворити одиниці TU для створення коефіцієнтів перетворення для даної одиниці CU. Після будь-якого перетворення для створення коефіцієнтів перетворення відеокодер 20 може виконати квантування коефіцієнтів перетворення. Квантування у загальному випадку стосується процесу, у ході якого виконується квантування коефіцієнтів перетворення з метою можливого скорочення обсягу даних, які використовуються для представлення вказаних коефіцієнтів, що забезпечує додаткове стиснення. Процес квантування може зменшити глибину у бітах, пов'язану з деякими або всіма згаданими коефіцієнтами. Наприклад, n-бітове значення можна округлити у меншу сторону, отримавши m-бітове значення під час квантування, де n більше, ніж m. Услід за квантуванням відеокодер може виконати сканування коефіцієнтів перетворення, створюючи одновимірний вектор з двовимірної матриці, що містить квантовані коефіцієнти перетворення. Сканування може бути призначене для переміщення коефіцієнтів з більш високою енергією (і, отже, з більш низькою частотою) у передню частину матриці, а коефіцієнтів з більш низькою енергією (і, отже, з більш високою частотою) - у задню частину матриці. У деяких прикладах відеокодер 20 може використовувати заздалегідь визначений порядок "сканування" для сканування квантованих коефіцієнтів перетворення, щоб отримати серіалізований вектор, який можна закодувати з використанням ентропійного кодування. В інших прикладах відеокодер 20 може виконувати адаптивне сканування. Після сканування квантованих коефіцієнтів перетворення для формування одновимірного вектора, відеокодер 20 може виконати кодування цього одновимірного вектора, використовуючи ентропійне кодування, наприклад, відповідно до контекстно-залежного адаптивного кодування зі змінною довжиною 8 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 слова (CAVLC), контекстно-адаптивного бінарного арифметичного кодування (CABAC), синтаксично орієнтованого контекстно-адаптивного бінарного арифметичного кодування (SBAC), ймовірнісного ентропійного кодування з інтервальним розбиттям (PIPE), або іншого методу ентропійного кодування. Відеокодер 20 може також виконати ентропійне кодування синтаксичних елементів, пов'язаних з кодованими відеоданими, для використання відеодекодером 30 при декодуванні відеоданих. Для виконання кодування CABAC відеокодер 20 може присвоїти контекст у контекстній моделі для символа, що підлягає передачі. Цей контекст може стосуватися, наприклад, того, чи є сусідні значення символа ненульовими. Для виконання кодування CAVLC відеокодер 20 може вибрати код змінної довжини для символа, що підлягає передачі. Кодові слова у VLC можуть бути побудовані так, щоб відносно більш короткі коди відповідали більш ймовірним символам, у той час як відносно більш довгі коди відповідали менш ймовірним символам. Таким чином, використання кодування VLC може забезпечити економне використання бітів, наприклад, шляхом використання кодових слів однакової довжини для кожного символа, що підлягає передачі. Визначення ймовірності може базуватися на контексті, присвоєному даному символу. Відповідно до розкритих тут методик, відеокодер 20 може виконати кодування значення, що представляє позицію останнього значущого коефіцієнта блока відеоданих, використовуючи контексти, визначені з використанням однієї або декількох функцій бінів вказаного значення. Аналогічним чином, відеодекодер 30 може декодувати значення, що представляє останній значущий коефіцієнт блока відеоданих, використовуючи контексти, визначені з використанням однієї або декількох функцій бінів вказаного значення. Відеокодер 20 і/або відеодекодер 30 можуть бути виконані з можливістю виконання будь-якої з функцій (1)-(12), більш детально описаних нижче, або концептуально подібних функцій для виконання розкритих тут методик. Таким чином, відеокодер 20 і відеодекодер 30 представляють приклади відеокодерів, виконаних з можливістю визначення контексту ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих, використовуючи функцію індексу біна, і кодування біна, використовуючи визначений контекст. Наприклад, "Ctx_i" може означати індекс контексту, що використовується відеокодером 20 для кодування i-го біна у двійковому ланцюжку "останньої позиції". Відеокодер 20 може отримати Ctx_i, використовуючи наведене нижче рівняння: Ctx_i=f(i) Функція, позначена як f(i), може бути лінійною або нелінійною. Додатково, f(i) може бути заздалегідь визначеною функцією, доступною як відеокодеру 20, так і відеодекодеру 30. Як альтернатива, f(i) може бути вибрана користувачем або відеокодером 20 і передана на відеодекодер 30 з використанням синтаксичної сигналізації високого рівня одного або декількох типів, наприклад, набір параметрів послідовності (SPS), набір параметрів зображення (PPS), набір параметрів адаптації (APS), заголовок кадру, заголовок слайса, заголовок послідовності або інша синтаксична сигналізація. Прикладом однієї з вказаних функцій, яку може виконувати відеокодер 20, може бути f(i)=(i>>1), (1) де «>>» означає двійковий оператор зсуву праворуч. У свою чергу, результат f(i) може відповідати Ctx_i. Тобто, відеокодер 20 може виконати f(i) для створення виходу, що дорівнює значенню Ctx_i. Зокрема, відеокодер 20 може виконати f(i) для створення контекстного індексу для контексту, що підлягає використанню для ентропійного кодування i-го біна. У наведеній нижче Таблиці 3 показаний приклад контекстних індексів, які може використати відеокодер 20 для кодування бінів з різними індексами бінів для різних розмірів блоків (наприклад, TU), використовуючи наведену вище функцію (1). Хоча Таблиця 3 передбачена з метою пояснення результатів використання наведеної як приклад функції (1), потрібно розуміти, що таблицю, таку як Таблиця 3, не обов'язково зберігати у пристрої відеокодування, такому як пристрій-джерело 12 і/або пристрій-адресат 14. Замість цього відеокодер 20 і/або відеодекодер 30 можуть виконати функцію (1) для створення результатів, показаних у Таблиці 3, на основі різних індексів бінів. 9 UA 114104 C2 Таблиця 3 Індекс біна TU 4×4 TU 8×8 TU 16×16 TU 32×32 5 10 15 20 0 0 0 0 0 1 0 0 0 0 2 1 1 1 1 3 4 5 6 7 8 1 1 1 2 2 2 2 2 3 3 3 9 4 В іншому прикладі відеокодер 20 може виконувати функцію, що залежить як від індексу (i) біна, так і від розміру відповідного блока (наприклад, TU). Відповідним блоком може бути блок, що включає в себе коефіцієнти, описані значенням останнього значущого коефіцієнта. Наприклад, контекстний індекс може бути створений функцією, такою як: Ctx_i=f(i, TUBlkSize), де "TUBlkSize" - значення, що вказує розмір блока. У даному винаході терміни "TUBlkSize" і "block_size" можуть використовуватися як взаємозамінні для указання розміру блока. В одному прикладі вказана функція може бути представлена у вигляді: f(i, TUBlkSize)=i>>(log2(TUBlkSize)-2) (2) У наведеній нижче Таблиці 4 показаний приклад контекстних індексів, які може використати відеокодер 20 для кодування бінів з різними індексами бінів для різних розмірів блоків (наприклад, TU), використовуючи наведену як приклад функцію (2). Хоча Таблиця 4 передбачена з метою пояснення результатів використання наведеної як приклад функції (2), потрібно розуміти, що таблицю, таку як Таблиця 4, не обов'язково зберігати у пристрої відеокодування, такому як пристрій-джерело 12 і/або пристрій-адресат 14. Замість цього відеокодер 20 і/або відеодекодер 30 можуть виконати наведену як приклад функцію (2) для створення результатів, показаних у Таблиці 4. Таблиця 4 Індекс біна TU 4×4 TU 8×8 TU 16×16 TU 32×32 25 30 0 0 0 0 0 1 1 0 0 0 2 2 1 0 0 3 4 5 6 7 8 1 0 0 2 1 0 1 0 1 0 0 9 1 У ще одному прикладі відеокодер 20 може виконати наведену нижче функцію для отримання Ctx_i: f(i, TUBlkSize) = i>>1+TUSIZEoffset, де TUSIZEoffset = (log2(TUBlkSize)-2)*(log2(TUBlkSize)+1)/2 (3) У наведеній нижче Таблиці 5 показаний приклад контекстних індексів, які може використати відеокодер 20 для кодування бінів з різними індексами бінів для різних розмірів блоків (наприклад, TU), використовуючи наведену вище функцію (3). Хоча Таблиця 5 передбачена з метою пояснення результатів використання наведеної як приклад функції (3), потрібно розуміти, що таблицю, таку як Таблиця 3, не обов'язково зберігати у пристрої-джерелі 12 і/або пристроїадресаті 14. Замість цього відеокодер 20 і/або відеодекодер 30 можуть виконати наведену як приклад функцію (3), описану вище, для створення результатів, показаних у Таблиці 5. Таблиця 5 Індекс біна TU 4×4 TU 8×8 TU 16×16 TU 32×32 0 0 2 5 9 1 0 2 5 9 2 1 3 6 10 3 4 5 6 7 8 3 6 10 4 7 11 7 11 8 12 12 9 13 35 У наступному прикладі відеокодер 20 може виконати наведену нижче функцію для отримання Ctx_i: Ctx_idx=(i+1)>>1+TUSIZEoffset, де TUSIZEoffset=(log2(TUBlkSize)-2)*(log2(TUBlkSize)+1)/2 (4) 10 UA 114104 C2 5 У наведеній нижче Таблиці 6 показаний приклад контекстних індексів, які може використати відеокодер 20 для кодування бінів з різними індексами бінів для різних розмірів блоків (наприклад, TU), використовуючи наведену вище функцію (4). Хоча Таблиця 6 передбачена з метою пояснення результатів використання наведеної як приклад функції, потрібно розуміти, що таблицю, таку як Таблиця 6, не обов'язково зберігати у пристрої-джерелі 12 і/або пристроїадресаті 14. Замість цього відеокодер 20 і/або відеодекодер 30 можуть виконати наведену як приклад функцію (4), описану вище, для створення результатів, показаних у Таблиці 6. Таблиця 6 Індекс біна TU 4×4 TU 8×8 TU 16×16 TU 32×32 10 15 20 25 0 0 2 5 9 1 1 3 6 10 2 1 3 6 10 3 4 5 6 7 8 4 7 11 4 7 11 8 12 8 12 13 9 13 У ще одному прикладі згадана функція може являти собою: Ctx_idx=offset+(i>>k), (5) де: offset=3*n+((n+1)>>2), (6) k=(n+3)>>2, і (7) n=(log2(TUBlkSize)-2) (8) Як альтернатива, наведена як приклад функція (8) може бути представлена у вигляді n=(log2(block_size)-2), маючи на увазі цілі даного винаходу. У наведеній нижче Таблиці 7 показаний приклад контекстних індексів, які може використати відеокодер 20 для кодування бінів з різними індексами бінів для різних розмірів блоків (наприклад, TU), використовуючи наведені як приклад функції (5)-(8). Хоча Таблиця 7 передбачена з метою пояснення результатів використання вказаних функцій, потрібно розуміти, що таблицю, таку як Таблиця 7, не обов'язково зберігати у пристрої відеокодування, такому як пристрій-джерело 12 і/або пристрій-адресат 14. Замість цього відеокодер 20 і/або відеодекодер 30 можуть виконати наведені як приклад функції (5)-(8), описані вище, для створення результатів, показаних у Таблиці 7. Таблиця 7 Індекс біна TU 4×4 TU 8×8 TU 16×16 TU 32×32 30 0 0 3 6 10 1 1 3 6 10 2 2 4 7 11 3 4 5 6 7 8 4 7 11 5 8 12 8 12 9 13 13 9 14 У таблицях 8 і 9, показаних нижче, наведений інший приклад, в якому відеокодер 20 і/або відеодекодер 30 може застосувати одну або декілька методик отримання контексту на основі формули для бінів при кодуванні "останньої позиції" для компонент яскравості і кольоровості уніфікованим чином. Зокрема, у Таблиці 8 показані індекси бінів для TU яскравості різних розмірів, у той час як у Таблиці 9 представлені індекси бінів для TU кольоровості різних розмірів. Таблиця 8 Яскравість Індекс біна TU 4×4 TU 8×8 TU 16×16 TU 32×32 0 0 3 6 10 1 1 3 6 10 2 2 4 7 11 3 4 5 6 7 8 4 7 11 5 8 12 8 12 9 13 13 14 11 9 UA 114104 C2 Таблиця 9 Кольоровість Індекс біна TU 4×4 TU 8×8 TU 16×16 5 10 15 20 25 0 0 0 0 1 1 0 0 2 2 1 1 3 4 5 6 1 1 2 2 2 7 8 9 3 В одному прикладі функція, яку відеокодер 20 і/або відеодекодер 30 можуть використати для отримання контекстів для бінів при кодуванні останньої позиції одиниць TU яскравості (Таблиця 8) і одиниць TU кольоровості (Таблиця 9), являє собою: Ctx_idx=offset+(i>>k), (9) де для яскравості і кольоровості використовується одне і те саме значення k, k=(n+3)>>2 при n=(log2(TUBlkSize)-2). Відеокодер і/або відеодекодер 30 можуть визначити значення для змінної "offset" функції (9) на основі того, є одиниця TU одиницею TU яскравості або одиницею TU кольоровості, з використанням різних функцій. Приклади вказаних функцій включають в себе наступне: Яскравість: offset=3*n+((n+1)>>2) (10) Кольоровість: offset=0 (11) Таким чином, функція (9) представляє приклад функції, яку може виконати відеокодер 20 і/або відеодекодер 30 для створення контекстного індексу. У свою чергу, контекстний індекс може вказувати на контекст для кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих як функція індексу біна (i), і значення, що вказує розмір блока (k, яке обчислюють на основі n, що являє собою log2(TUBlkSize)-2). У цьому прикладі відеокодер 20 і/або відеодекодер 30 також можуть виконувати наведену як приклад функцію (9) для створення контекстного індексу на основі значення зміщення, яке визначають на основі того, є даний блок блоком кольоровості або блоком яскравості, наприклад, як показано у функціях (10) і (11). В іншому прикладі відеокодер 20 може реалізувати покрокову функцію для отримання контекстного індексу для контексту, що підлягає використанню для ентропійного кодування i-го біна. Зокрема, покрокова функція може представляти функцію, що складається з двох або більше частин, в залежності, наприклад, від значення індексу i біна. Таким чином, відеокодер 20 і/або відеодекодер 30 можуть розділити біни у значенні останньої позиції на різні піднабори, наприклад, піднабір 0, піднабір 1 і т.д. Додатково, відеокодер 20 і/або відеодекодер 30 можуть застосувати різні функції до різних піднаборів, наприклад, F0() для піднабору 0, F1() для піднабору 1 і т.д. Наприклад, вказана функція може бути представлена наведеним нижче чином: 30 35 40 45 TUSIZEoffset=(log2(TUBlkSize)-2)*(log2(TUBlkSize)-1)/2 (12) У деяких реалізаціях вказані піднабори можуть бути визначені заздалегідь, причому визначення цих піднаборів може бути доступне як відеокодеру 20, так і відеодекодеру 30. Як альтернатива, відеокодер 20 (або користувач пристрою-джерела 12) може вибрати вказані піднабори, а вихідний інтерфейс 22 може передати вибрані піднабори на відеодекодер 30 пристрою-адресата 14, використовуючи одну або декілька методик синтаксичної сигналізації високого рівня, такої як передача SPS, PPS, APS, заголовка кадру, заголовка слайса, заголовка послідовності або використати іншу синтаксичну сигналізацію. Визначення піднаборів також може залежати від інформації різних інших типів, такої як: розмір блока (наприклад, розмір TU); глибина залишкового квадродерева (RQT), що відповідає даному блоку; інформація про те, чи відповідає даний блок компоненті яскравості або компоненті кольоровості; розмір кадру для кадру, що включає в себе даний блок (наприклад, піксельне розрізнення); розмір блока компенсації руху для блока компенсації руху (наприклад, блок прогнозування (PU)), що відповідає даному блоку; тип кадру (I/Р/В) для кадру, що включає в себе даний блок; напрям інтер-прогнозування для відповідного блока компенсації руху; амплітуда вектора руху для відповідного блока компенсації руху; і/або амплітуда різниці векторів руху для вектора руху, що відповідає блоку компенсації руху. 12 UA 114104 C2 5 У Таблиці 10, представленій нижче, показаний приклад контекстних індексів, які може використати відеокодер 20 для кодування бінів з різними індексами для різних розмірів блока (наприклад, TU), використовуючи наведену як приклад функцію (12). Хоча Таблиця 10 наведена тут з метою пояснення результатів вказаної функції, потрібно розуміти, що таблиця, така як Таблиця 10, не обов'язково зберігається у пристрої відеокодування, такому як пристрій-джерело 12 і/або пристрій-адресат 14. Замість цього, відеокодер 20 і/або відеодекодер 30 можуть виконувати описану вище наведену як приклад функцію (12) для отримання результатів, вказаних у Таблиці 10. Таблиця 10 Індекс біна TU 4×4 TU 8×8 TU 16×16 TU 32×32 0 0 1 3 6 1 0 1 3 6 2 10 2 4 7 3 4 5 6 7 8 2 4 7 10 5 8 5 8 10 9 9 9 10 10 15 20 25 30 35 40 45 50 Наведені як приклад функції (1)-(12), описані вище, можуть залежати щонайменше частково від одного або декількох елементів додаткової інформації. В одному прикладі ці функції можуть використовувати додаткову інформацію як аргументи. В інших прикладах відеокодер 20 і/або відеодекодер 30 можуть вибрати різні функції на основі відповідної додаткової інформації. Додаткова інформація може включати в себе будь-який або всі з наведених нижче параметрів: розмір блока (наприклад, розмір TU); глибина залишкового квадродерева (RQT), що відповідає даному блоку; інформація про те, чи відповідає даний блок компоненті яскравості або компоненті кольоровості; розмір кадру для кадру, що включає в себе даний блок (наприклад, роздільної здатності у пікселях); розмір блока компенсації руху для блока компенсації руху (наприклад, блока прогнозування (PU)), що відповідає даному блоку; тип кадру (I/Р/В) для кадру, що включає в себе даний блок; напрям інтер-прогнозування для відповідного блока компенсації руху; амплітуда вектора руху для відповідного блока компенсації руху; і/або амплітуда різниці векторів руху для вектора руху, що відповідає блоку компенсації руху. В одному прикладі відеокодер 20 і/або відеодекодер 30 можуть вибрати різні функції для отримання контекстів з метою їх застосування при кодуванні бінів значення, що вказує позицію останнього значущого коефіцієнта блока яскравості по відношенню до блока кольоровості. Відеокодер 20 може крім того, надсилати синтаксичні дані, такі як синтаксичні дані на блоковій основі, синтаксичні дані на покадровій основі і синтаксичні дані на основі GOP на відеодекодер 30, наприклад, у заголовку кадру, у заголовку блока, у заголовку слайса або у заголовку GOP. Синтаксичні дані GOP можуть описувати кількість кадрів у відповідній групі GOP, а синтаксичні дані кадру можуть вказувати режим кодування/прогнозування, що використовується для кодування відповідного кадру. Відеокодер 20 і відеодекодер 30 можуть бути реалізовані кожний у вигляді будь-якої з різних придатних схем кодера або декодера, якщо вони застосовні, таких як один або декілька мікропроцесорів, цифрових процесорів сигналів (DSP), прикладних спеціалізованих інтегральних схем (ASIC), вентильних матриць, що програмуються користувачем (FPGA), дискретної логіки, програмного забезпечення, апаратного забезпечення, програмно-апаратного забезпечення або будь-якої їх комбінації. Як відеокодер 20, так і відеодекодер 30 можуть бути включені в один або декілька кодерів або декодерів, будь-який з яких може бути складовою частиною комбінованого відеокодера/відеодекодера (CODEC). Пристрій, що включає в себе відеокодер 20 і/або відеодекодер 30, може містити інтегральну схему, мікропроцесор і/або пристрій бездротового зв'язку, такий як стільниковий телефон. Таким чином, відеокодер 20 і відеодекодер 30 представляють приклади відеокодера, виконаного з можливістю визначення контексту для ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих, з використанням функції індексу даного біна і кодування цього біна з використанням визначеного контексту. На фіг. 2 представлена блок-схема, де показаний приклад відеокодера 20, який може реалізувати методики для визначення контексту з метою його використання для кодування значення, що представляє останній значущий коефіцієнт блока відеоданих. Відеокодер 20 може виконувати інтра- та інтер-кодування відеоблоків у відеослайсах. Інтра-кодування базується на просторовому прогнозуванні з метою зменшення або усунення просторової надмірності у відео у даному відеокадрі або відеозображенні. Інтер-кодування базується на часовому прогнозуванні, яке зменшує або усуває часову надмірність відео у сусідніх кадрах або 13 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 55 60 зображеннях відеопослідовності. Інтра-режим (I режим) може належати до будь-якого з декількох режимів кодування на просторовій основі. Інтер-режими, такі як однонаправлене прогнозування (Р режим) або двонаправлене прогнозування (В режим), можуть належати до будь-якого з декількох режимів кодування на часовій основі. Як показано на фіг. 2, відеокодер 20 приймає поточний відеоблок у відеокадрі, що підлягає кодуванню. У прикладі на фіг. 2 відеокодер 20 включає в себе блок 40 вибору режиму, пам'ять 64 опорних кадрів, суматор 50, блок 52 обробки перетворення, блок 54 квантування і блок 56 ентропійного кодування. Блок 40 вибору режиму, у свою чергу, містить блок 44 компенсації руху, блок 42 оцінки руху, блок 46 інтра-прогнозування і блок 48 розділення. Для відновлення відеоблока відеокодер 20 також містить блок 58 зворотного квантування, блок 60 зворотного перетворення і суматор 62. Сюди також може бути включений деблокуючий фільтр (на фіг. 2 не показаний) для фільтрації кордонів блоків з метою видалення артефактів "блочності" з відновленого відео. Якщо це необхідно, деблокуючий фільтр, як правило, фільтрує вихід суматора 62. Додатково до деблокуючого фільтра також можуть бути використані додаткові фільтри (у контурі або після контура). Вказані фільтри з метою стислості не показані, але якщо це необхідно, вони можуть фільтрувати вихід суматора 50 (як контурні фільтри). У ході процесу кодування відеокодер 20 приймає відеокадр або відеослайс, що підлягає кодуванню. Цей кадр або слайс можна розділити на множину відеоблоків. Блок 42 оцінки руху і блок 44 компенсації руху виконує кодування з інтер-прогнозуванням прийнятого відеоблока застосовно до одного або декількох блоків в одному або декількох опорних кадрах для забезпечення часового прогнозування. Блок 46 інтра-прогнозування може поперемінно виконувати кодування з інтра-прогнозуванням прийнятого відеоблока застосовно до одного або декількох сусідніх блоків у тому самому кадрі або слайсі як блок, що підлягає кодуванню, для забезпечення просторового прогнозування. Відеокодер 20 може виконувати множину проходів кодування, наприклад, для вибору придатного режиму кодування для кожного блока відеоданих. Крім того, блок 48 розділення може розділити блоки відеоданих на субблоки на основі оцінки попередніх схем розділення у попередніх проходах кодування. Наприклад, блок 48 розділення спочатку може розділити кадр або слайс на декілька LCU і розділити кожну LCU на декілька суб-CU на основі аналізу залежності "швидкість - спотворення" (наприклад, оптимізація "швидкість - спотворення"). Блок 40 вибору режиму може далі створити структуру даних квадродерева, що вказує розділення LCU на декілька суб-CU. Одиниці CU кінцевого вузла квадродерева можуть включати в себе одну або декілька PU і одну або декілька TU. Блок 40 вибору режиму може вибрати один з режимів кодування (інтра- або інтеркодування), наприклад, на основі результатів з помилками, при цьому блок 40 подає результуючий інтраабо інтер-закодований блок на суматор 50 для створення залишкових даних блока і на суматор 62 для відновлення кодованого блока для його використання як опорного кадра. Блок 40 вибору режиму також подає синтаксичні елементи, такі як вектори руху, індикатори інтра-режиму, інформацію про розділення та іншу синтаксичну інформацію у блок 56 ентропійного кодування. Блок 42 оцінки руху і блок 44 компенсації руху можуть бути інтегровані з високою мірою інтеграції, але вони показані окремо, виходячи з концептуальних цілей. Оцінка руху, що виконується блоком 42 оцінки руху, являє собою процес створення векторів руху, які оцінюють рух для відеоблоків. Вектор руху, наприклад, може вказувати зміщення PU відеоблока у поточному відеокадрі або відеозображенні відносно прогонозованого блока в опорному кадрі (або в іншій кодованій одиниці). Прогонозований блок - це блок, який, як було виявлено, близько відповідає блоку, що підлягає кодуванню з точки зору піксельної різниці, яку можна визначити як суму абсолютних різниць (SAD), суму квадратичних різниць (SSD) або інші метрики різниць. У деяких прикладах відеокодер 20 може обчислити значення для піксельних позицій опорних зображень (з точністю до часток пікселя), що зберігаються у пам'яті 64 опорних кадрів. Наприклад, відеокодер 20 може інтерполювати значення четвертних піксельних позицій, піксельних позицій з точністю одна восьма пікселя або інших дробових піксельних позицій опорного зображення. Таким чином, блок 42 оцінки руху може виконати пошук руху відносно повних піксельних позицій і дробових піксельних позицій і видати вектор руху з точністю, вираженою дробовим числом пікселів. Блок 42 оцінки руху обчислює вектор руху для PU відеоблока в інтер-кодованому слайсі шляхом порівняння позиції PU з позицією прогнозованого блока опорного зображення. Опорне зображення можна вибрати з першого списку опорних зображень (список 0) або другого списку опорних зображень (список 1), кожний з яких ідентифікує одне або декілька опорних зображень, що зберігаються у пам'яті 64 опорних кадрів. Блок 41 оцінки руху надсилає обчислений вектор руху у блок 56 ентропійного кодування і блок 44 компенсації руху. 14 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 55 Компенсація руху, що виконується блоком 44 компенсації руху, може включати в себе діставання або створення прогнозованого блока на основі вектора руху, визначеного блоком 42 оцінки руху. Знову ж, у деяких прикладах блок 42 оцінки руху і блок 44 компенсації руху можуть бути функціонально інтегровані. Після отримання вектора руху для PU поточного відеоблока, блок 44 компенсації руху може визначити місцеположення прогнозованого блока, на який вказує вектор руху в одному зі списків опорних зображень. Суматор 50 формує залишковий відеоблок за допомогою віднімання значень пікселів прогнозованого блока від значень пікселів поточного відеоблока, що кодується, отримуючи значення різниці пікселів, як описано нижче. У загальному випадку блок 42 оцінки руху виконує оцінку руху застосовно до компонентів яскравості, а блок 44 компенсації руху використовує вектори руху, обчислені на основі компонентів яскравості, для обох компонентів кольоровості і яскравості. Блок 40 вибору режиму також може створювати синтаксичні елементи, пов'язані з відеоблоками і відеослайсом для використання відеодекодером 30 при декодуванні відеоблоків відеослайса. Блок 46 інтра-прогнозування може виконати інтра-прогнозування для поточного блока як альтернатива інтер-прогнозуванню, що виконується блоком 42 оцінки руху і блоком 44 компенсації руху, як було описано вище. Зокрема, блок 46 інтра-прогнозування може визначити режим інтра-прогнозування для використання під час кодування поточного блока. У деяких прикладах блок 46 інтра-прогнозування може виконати кодування поточного блока, використовуючи різні режими інтра-прогнозування, наприклад, під час окремих проходів кодування, і блок 46 інтра-прогнозування (або блок 40 вибору режиму у деяких прикладах) може вибрати відповідний режим інтра-прогнозування для його використання з числа тестових режимів. Наприклад, блок 46 інтра-прогнозування може обчислити значення "швидкість-спотворення" з використанням аналізу "швидкість-спотворення" для різних тестових режимів інтрапрогнозування і вибирає режим інтра-прогнозування, що має найкращі характеристики "швидкість-спотворення" серед тестових режимів. У ході аналізу "швидкість-спотворення" звичайно визначають величину спотворення (або помилку) між кодованим блоком і початковим, не кодованим блоком, який був кодований для створення кодованого блока, а також швидкість передачі бітів (тобто, кількість бітів), що використовуються для створення кодованого блока. Блок 46 інтра-прогнозування може обчислити відношення виходячи зі спотворень і швидкостей для різних кодованих блоків, щоб визначити, який з режимів інтра-прогнозування дає найкраще співвідношення "швидкість-спотворення" для даного блока. Після вибору режиму інтра-прогнозування для блока пікселів, блок 46 інтра-прогнозування може подати інформацію, яка вказує вибраний режим інтра-прогнозування для даного блока, у блок 56 ентропійного кодування. Блок 56 ентропійного кодування може виконати кодування інформації, яка вказує вибраний режим інтра-прогнозування. Відеокодер 20 може містити дані про конфігурації бітового потоку, що передається, які можуть включати в себе множину таблиць з індексами режимів інтра-прогнозування і множину модифікованих таблиць режимів інтрапрогнозування (які також називають "таблицями відображення кодових слів"), визначення контекстів кодування для різних блоків і указання найбільш ймовірного режиму інтрапрогнозування, таблицю індексів режимів інтра-прогнозування і модифіковану таблицю індексів режимів інтра-прогнозування з метою їх використання для кожного зі згаданих контекстів. Відеокодер 20 формує залишковий відеоблок шляхом віднімання даних прогнозування від блока 40 вибору режиму від початкового відеоблока, що кодується. Суматор 50 представляє компоненту або компоненти, які виконують цю операцію віднімання. Блок 52 обробки перетворення застосовує перетворення, таке як дискретне косинусне перетворення (DCT) або концептуально подібне перетворення до залишкового блока, створюючи відеоблок, що містить залишкові значення коефіцієнтів перетворення. Блок 52 обробки перетворення може виконати інші перетворення, концептуально подібні до DCT. Також можуть бути використані вейвлетні перетворення, цілочислові перетворення, субсмугові перетворення або перетворення інших типів. У будь-якому випадку блок 52 обробки перетворення застосовує перетворення до залишкового блока, створюючи блок залишкових коефіцієнтів перетворення. Таке перетворення може привести до перетворення залишкової інформації з області значень пікселів в область перетворення, таку як частотна область. Блок 52 обробки перетворення може надіслати результуючі коефіцієнти перетворення у блок 54 квантування. Блок 54 квантування виконує квантування коефіцієнтів перетворення для подальшого зменшення бітрейта. Процес квантування може зменшити глибину у бітах, пов'язану з деякими або всіма згаданими коефіцієнтами. Ступінь квантування можна модифікувати за допомогою настройки параметра квантування. У деяких прикладах блок 54 квантування може потім виконати сканування матриці, 15 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 55 60 що включає в себе квантовані коефіцієнти перетворення. Як альтернатива, блок 56 ентропійного кодування може виконати сканування. Услід за квантуванням блок 56 ентропійного кодування може виконати контекстно-залежне адаптивне кодування зі змінною довжиною слова (CAVLC), контекстно-адаптивне бінарне арифметичне кодування (CABAC), синтаксично орієнтоване контекстно-адаптивне бінарне арифметичне кодування (SBAC), ймовірнісне ентропійне кодування з інтервальним розбиттям (PIPE), або інші методи ентропійного кодування. У випадку контекстно-залежного ентропійного кодування, контекст може базуватися на сусідніх блоках. Услід за ентропійним кодуванням, що виконується блоком 56 ентропійного кодування, кодований бітовий потік може бути переданий на інший пристрій (наприклад, відеодекодер 30) або архівований для пізнішої передачі або діставання. Зокрема, блок 56 ентропійного кодування може прийняти від блока 54 квантування набір квантованих коефіцієнтів перетворення, пов'язаних з TU. У свою чергу, блок 56 ентропійного кодування може відсканувати набір квантованих коефіцієнтів перетворення і визначити, чи містить кожний відсканований коефіцієнт значущий коефіцієнт, тобто, чи має коефіцієнт нульове або ненульове значення. Ненульове значення може вказувати на те, що конкретний квантований коефіцієнт перетворення є "значущим коефіцієнтом". У випадках, коли блок 56 ентропійного кодування виявляє значущий коефіцієнт, він може кодувати дані, що представляють конкретне значення, пов'язане з цим коефіцієнтом (наприклад, один, два і т.д.). Вказані дані можуть включати в себе, наприклад, вказівку про знак коефіцієнта, інформацію про те, чи перевищує абсолютне значення даного коефіцієнта одиницю, і, коли абсолютне значення коефіцієнта перевищує одиницю, інформацію про те, чи перевищує абсолютне значення даного коефіцієнта два. Додатково, у тих випадках, коли значущий коефіцієнт має абсолютне значення, що перевищує два, блок 56 ентропійного кодування може відняти два від абсолютного значення коефіцієнта, отримавши тим самим значення, на яке даний коефіцієнт перевищує два, а потім закодувати це значення. Завдяки скануванню всього набору квантованих коефіцієнтів перетворення, отриманих від блока 54 квантування, блок 56 ентропійного кодування може також виявити та ідентифікувати останній значущий коефіцієнт, пов'язаний з конкретною TU (тобто, у порядку сканування). Додатково, блок 56 ентропійного кодування може визначити позицію останнього значущого коефіцієнта у відповідній PU. Наприклад, блок 56 ентропійного кодування може ідентифікувати координати по горизонталі і вертикалі х і у останнього значущого коефіцієнта у даній TU. Крім того, блок 56 ентропійного кодування може бути виконаний з можливістю бінаризації синтаксичних елементів, які вже не мають двійкового значення. Тобто, блок 56 ентропійного кодування може визначити бінарний ланцюжок, що представляє значення синтаксичного елемента, коли синтаксичний елемент вже не представлений бінарним ланцюжком. Бінарний ланцюжок або бінаризоване значення звичайно відповідає матриці бітів, кожний з яких може мати значення "0" або "1". Ця матриця може бути індексована, починаючи з нуля, таким чином перший по порядку біт матриці виявляється на позиції 0, другий по порядку біт матриці виявляється на позиції 1 і т.д. Таким чином, блок 56 ентропійного кодування може сформувати бінаризоване значення В[N] довжиною N бітів, де кожний біт з'являється на відповідній позиції В[i], де 0>2), де значення k визначають відповідно до формули: k=(n+3)>>2 і де значення n визначають відповідно до формули: n=(log2(block_size)-2). На фіг. 3 представлена блок-схема, що ілюструє зразковий відеодекодер 30, який може реалізувати методики для визначення контексту з метою їх використання для кодування значення, що представляє останній значущий коефіцієнт блока відеоданих. У прикладі на фіг. 3 відеодекодер 30 включає в себе блок 70 ентропійного декодування, блок 72 компенсації руху, блок 74 інтра-прогнозування, блок 76 зворотного квантування, блок 78 зворотного перетворення, пам'ять 82 опорних кадрів і суматор 80. У деяких прикладах відеодекодер 30 17 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 55 60 може виконувати прогін декодування, який є у загальному випадку зворотним по відношенню до проходу кодування, описаного застосовно до відеокодера 20 (фіг. 2). Блок 72 компенсації руху може створити дані прогнозування на основі векторів руху, отриманих від блока 70 ентропійного декодування, у той час як блок 74 інтра-прогнозування може створити дані прогнозування на основі індикаторів режимів інтра-прогнозування, отриманих від блока 70 ентропійного декодування. У ході процесу декодування відеодекодер 30 приймає кодований бітовий відеопотік, який представляє відеоблоки кодованого відеослайса і пов'язані з ними синтаксичні елементи від відеокодера 20. Блок 70 ентропійного декодування у складі відеодекодера 30 виконує ентропійне декодування бітового потоку для створення квантованих коефіцієнтів, векторів руху або індикаторів режимів інтра-прогнозування та інших синтаксичних елементів. Блок 70 ентропійного декодування направляє вектори руху та інші синтаксичні елементи у блок 72 компенсації руху. Відеодекодер 30 може отримати ці синтаксичні елементи на рівні відеослайса і/або на рівні відеоблока. Блок 70 ентропійного декодування може створити блок (наприклад, TU) квантованих коефіцієнтів шляхом ентропійного декодування кодованого бітового відеопотоку і розподілу декодованих квантованих коефіцієнтів у блоці у порядку сканування. Наприклад, блок 70 ентропійного декодування може виконати ентропійне декодування синтаксичних елементів кодованого відеопотоку для визначення місцеположень значущих коефіцієнтів у блоці, що створюється. Якщо місцеположення блока відповідає коефіцієнту, що не є значущим коефіцієнтом, блок 70 ентропійного декодування може встановити значення коефіцієнта для цього місцеположення у блоці рівним нулю. З іншого боку, якщо блок 70 ентропійного декодування визначає, що конкретний квантований коефіцієнт є значущим коефіцієнтом, то блок 70 ентропійного декодування може встановити значення значущого коефіцієнта на основі даних, забезпечених у кодованому бітовому потоці відео відеокодером 20. Крім того, як пояснюється нижче, блок 70 ентропійного декодування може визначити позицію останнього значущого коефіцієнта у блоці на основі синтаксичних елементів, які вказують координати х і у останнього значущого коефіцієнта. Відповідно до розкритих тут методик, як більш детально пояснюється нижче, блок 70 ентропійного декодування може використати функцію для визначення контексту, необхідного для ентропійного декодування бінів значень, що представляють координати х і у останнього значущого коефіцієнта. Відеодекодер 30 може використати індикацію про позицію останнього значущого коефіцієнта для визначення того, коли дані бітового потоку представляють послідовні синтаксичні елементи, тобто, синтаксичні елементи, які не представляють дані блока, що відновлюється. Блок 70 ентропійного декодування може визначити на основі даних, забезпечених у кодованому бітовому потоці відео, знак для кожного значущого коефіцієнта і дані, що представляють значення рівня кожного значущого коефіцієнта. Наприклад, блок 70 ентропійного декодування може визначити знак для конкретного коефіцієнта за допомогою ентропійного декодування синтаксичного елемента, що представляє знак, наприклад, coeff_sign_flag. Додатково, блок 70 ентропійного декодування може декодувати один або декілька синтаксичних елементів, що представляють значення рівня кожного значущого коефіцієнта, наприклад, coeff_abs_level_greater1_flag, coeff_abs_level_greater2_flag і coeff_abs_level_remaining. У загальному випадку coeff_abs_level_greater1_flag вказує, чи перевищує 1 абсолютне значення значущого коефіцієнта, coeff_abs_level_greater2_flag вказує, чи перевищує 2 абсолютне значення значущого коефіцієнта, а coeff_abs_level_remaining вказує абсолютне значення значущого коефіцієнта мінус 2. Блок 70 ентропійного декодування може також визначити позицію останнього значущого коефіцієнта блока, що відновлюється (наприклад, TU). Зокрема, блок 70 ентропійного декодування може ідентифікувати позицію (наприклад, на основі кодованих синтаксичних елементів, що представляють координати х і у) останнього значущого коефіцієнта в одиниці TU, пов'язаній з кодованим бітовим потоком відео. На основі ідентифікації позиції останнього значущого коефіцієнта блок 70 ентропійного декодування може встановити рівними нулю значення інших коефіцієнтів у TU у порядку сканування. Тобто, відеодекодеру 30 немає необхідності отримувати які-небудь синтаксичні елементи для коефіцієнтів, що йдуть за останнім значущим коефіцієнтом, і він може потім встановити значення 0 для цих коефіцієнтів. Додатково, блок 70 ентропійного декодування може реалізувати одну або декілька розкритих тут методик для декодування бінів бінаризованого значення, що представляє координати х і у позиції останнього значущого коефіцієнта з використанням функції, що звичайно позначається як f(i), де i відповідає позиції даного біна у бінаризованому значенні. У деяких прикладах блок 70 ентропійного декодування може декодувати кодовані дані, 18 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 55 60 використовуючи визначений контекст для відтворення значення для даного біна, наприклад, "0" або "1". Хоча описані тут методики належать до методик для визначення позиції останнього значущого коефіцієнта, їх також можна застосувати до інших синтаксичних елементів ентропійного декодування. Наприклад, блок 70 ентропійного декодування може виконувати ентропійне декодування різних синтаксичних елементів, таких як синтаксичні елементи квантованих коефіцієнтів, які надсилаються у блок 72 компенсації руху і/або блок 74 інтрапрогнозування, синтаксичних елементів, що представляють квантовані коефіцієнти перетворення, і/або значення, що представляють останній значущий коефіцієнт одиниці TU, пов'язаної з кодованим бітовим потоком відео, використовуючи контексти, визначені з використанням однієї або декількох функцій індексів бінів для значення, що представляє відповідний синтаксичний елемент. Наприклад, "Сtx_i" може позначати індекс контексту, що використовується блоком 70 ентропійного декодування для декодування i-го біна у бінаризованому значенні, що представляє позицію останнього значущого коефіцієнта, як було описано у зв'язку з таблицями 1-2 і 8-9. У цьому прикладі блок 70 ентропійного декодування може отримати значення Сtx_i, використовуючи рівняння Сtx_i=f(i), де f(i) може являти собою заздалегідь визначену функцію, доступну для блока 70 ентропійного декодування (наприклад, передану пристроєм-джерелом 12), або функцію, вибрану користувачем. Додатково, блок 70 ентропійного декодування може декодувати дані, з тим, щоб використати дані, що представляють f(i), для отримання значення Сtx_i. У деяких прикладах блок 70 ентропійного декодування виконаний з можливістю визначення контекстів для декодування бінів даних, що представляють позицію останнього значущого коефіцієнта, з використанням формул (5)-(8), описаних вище. Тобто, блок 70 ентропійного декодування може обчислити f(i) наступним чином: Сtx_idx=offset+(i>>k). Крім того, блок 70 ентропійного декодування може отримати значення offset (зміщення) і k, що використовуються в f(i), користуючись наведеними нижче рівняннями: offset=3*n+((n+1)>>2), k=(n+3)>>2 і n=(log2(block_size)-2). В інших реалізаціях блок 70 ентропійного декодування може встановити f(i) відповідно до одного або декількох з наведених як приклад рівнянь (1)-(4) і (9)-(12) при декодуванні останнього значущого коефіцієнта TU, представленого кодованим бітовим потоком відео. Таким шляхом відеодекодер 30 і його компоненти, такі як блок 70 ентропійного декодування, можуть реалізувати розкриті тут методики для декодування останнього значущого коефіцієнта з використанням однієї або декількох функцій. Вказані функції вигідніше зберігати у пам'яті відеокодера 20 і відеодекодера 30, ніж відповідні таблиці. Таким чином, розкриті тут методики можуть забезпечити відеокодери і відеодекодери, які використовують пам'ять більш ефективно, наприклад, завдяки розподілу пам'яті, яка, в іншому випадку, була б надана таблиці для інших даних, або завдяки зменшенню необхідного об'єму пам'яті для відеокодера або відеодекодера. Коли відеослайс закодований з використанням інтра-прогнозування (I), блок 74 інтрапрогнозування може створити дані прогнозування для відеоблока поточного відеослайса на основі сигналізації у режимі інтра-прогнозування, а також на основі даних з раніше декодованих блоків поточного кадру або зображення. Коли відеокадр закодований у вигляді слайса з інтерпрогнозуванням (тобто, В, Р або GPB), блок 72 компенсації руху створює прогнозовані блоки для відеоблока поточного відеослайса на основі векторів руху та інших синтаксичних елементів, отриманих від блока 70 ентропійного декодування. Прогнозовані блоки можна створити з одного з опорних зображень в одному зі списків опорних зображень. Відеодекодер 30 може побудувати списки опорних кадрів, список 0 і список 1, використовуючи стандартні методики побудови на основі опорних зображень, що зберігаються у пам'яті 82 опорних зображень. Блок 72 компенсації руху визначає інформацію прогнозування для відеоблока поточного відеослайса шляхом синтаксичного аналізу векторів руху та інших синтаксичних елементів і використовує інформацію прогнозування для створення прогнозованих блоків для поточного відеоблока, що декодується. Наприклад, блок 72 компенсації руху використовує деякі з отриманих синтаксичних елементів для визначення режиму прогнозування (наприклад, інтраабо інтер-прогнозування), що використовується для кодування відеоблоків відеослайса, типу слайса з інтер-прогнозуванням (наприклад, В слайс, Р слайс або GPB слайс), інформації про структуру для одного або декількох списків опорних зображень для даного слайса, векторів руху для кожного відеоблока слайса з інтер-кодуванням, статусу інтер-прогнозування для кожного відеоблока слайса, закодованого з інтер-прогнозуванням, та іншої інформації для декодування відеоблоків у поточному відеослайсі. 19 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 55 60 Блок 72 компенсації руху також може виконати інтерполяцію на основі інтерполяційних фільтрів. Блок 72 компенсації руху може використати інтерполяційні фільтри, як це робиться відеокодером 20 у процесі кодування відеоблоків, для обчислення інтерпольованих значень для дробових пікселів опорних блоків. У цьому випадку блок 72 компенсації руху може визначити інтерполяційні фільтри, що використовуються відеокодером 20, виходячи з отриманих синтаксичних елементів, і використати ці інтерполяційні фільтри для створення прогнозованих блоків. Блок 76 зворотного квантування виконує зворотне квантування, тобто, деквантування квантованих коефіцієнтів перетворення, що передбачені у бітовому потоці і декодуються блоком 70 ентропійного декодування. Процес зворотного квантування може включати в себе використання параметра квантування QPY, обчисленого відеодекодером 30 для кожного відеоблока у відеослайсі, для визначення ступеню квантування аналогічно до ступеню зворотного квантування, який і потрібно застосувати. Блок 78 зворотного перетворення застосовує зворотне перетворення, наприклад, зворотне DCT перетворення, зворотне цілочислове перетворення або концептуально подібний процес зворотного перетворення до коефіцієнтів перетворення, щоб забезпечити залишкові блоки у піксельній області. Після того, як блок 72 компенсації руху створив прогнозований блок для поточного відеоблока на основі векторів руху та інших синтаксичних елементів, відеодекодер 30 формує декодований відеоблок за допомогою підсумовування залишкових блоків, отриманих від блока 78 зворотного перетворення, з відповідними прогнозованими блоками, створеними блоком 72 компенсації руху. Суматор 80 представляє компоненту або компоненти, які виконують операцію підсумовування. Якщо це необхідно, деблокуючий фільтр також може бути застосований для фільтрації декодованих блоків з метою видалення артефактів блочності. Для згладжування переходів від пікселя до пікселя або іншого поліпшення якості відео також можна використати інші контурні фільтри (або у контурі кодування, або після контуру кодування). Потім декодовані відеоблоки у даному кадрі або зображенні запам'ятовуються у пам'яті 82 опорних зображень, де зберігаються опорні зображення, що використовуються для подальшої компенсації руху. У пам'яті 82 опорних зображень також запам'ятовується декодоване відео для його представлення надалі на пристрої відображення, такому як пристрій 32 відображення за фіг. 1. Таким чином відеодекодер 30 за фіг. 3 представляє приклад відеодекодера, виконаного з можливістю визначення контексту для ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих, використовуючи функцію індексу даного біна, і для кодування цього біна з використанням визначеного контексту. Крім того, відеодекодер 30 також представляє приклад відеодекодера, в якому згадана функція створює контекстний індекс для контексту за допомогою зсуву праворуч індексу біна на величину k і додання цього зсунутого праворуч значення до значення зміщення, де значення зміщення визначають відповідно до формули offset=3*n+((n+1)>>2), де значення k визначають відповідно до формули k=(n+3)>>2 і де значення n визначають відповідно до формули n=(log 2(block_size)-2). На фіг. 4 представлена блок-схема, що ілюструє зразковий спосіб для кодування поточного блока. Поточний блок може містити поточну CU або частину поточної CU. Хоча даний опис стосується відеокодера 20 (фіг.1 і 2), потрібно розуміти, що для виконання способу, аналогічного способу за фіг. 4, можна сконфігурувати інші пристрої. Крім того, хоча у зразковому способі за фіг. 4 конкретно описується кодування синтаксичних елементів, що стосуються позиції останнього значущого коефіцієнта відеоблока з використанням вказаних методик, потрібно розуміти, що ці методики можна використовувати також для кодування інших синтаксичних елементів. У цьому прикладі відеокодер 20 спочатку виконує прогнозування поточного блока (крок 150). Наприклад, відеокодер 20 може обчислити одну або декілька одиниць прогнозування (PU) для поточного блока. Потім відеокодер 20 може обчислити залишковий блок для поточного блока, наприклад, для створення одиниці перетворення (TU) (етап 152). Для обчислення залишкового блока відеокодер 20 може обчислити різницю між початковим, не кодованим блоком, і прогнозованим блоком для поточного блока. Потім відеокодер 20 може виконати перетворення і квантування коефіцієнтів залишкового блока (етап 154). Далі відеокодер 20 може виконати сканування квантованих коефіцієнтів перетворення залишкового блока (етап 156). Під час сканування або услід за скануванням відеокодер 20 може виконати ентропійне кодування згаданих коефіцієнтів (етап 158). Наприклад, відеокодер 20 може кодувати коефіцієнти, використовуючи CAVLC або CABAC. Відеокодер 20 може також визначити значення для позиції останнього значущого коефіцієнта у TU (етап 160). Це значення може, наприклад, містити бінаризоване значення, що 20 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 55 60 представляє позицію останнього значущого коефіцієнта, наприклад, як це описано вище у зв'язку з Таблицею 1. Максимальну кількість бінів згаданого значення можна закодувати, використовуючи CABAC, у той час як біни, що залишилися, можна закодувати, використовуючи обхідне кодування, як це було описано у зв'язку з Таблицею 1. Зокрема, відповідно до розкритих тут методик, відеокодер 20 може визначити контексти для бінів згаданого значення, використовуючи функцію (етап 162). Як пояснювалося вище, вказані контексти можуть описувати ймовірності бінів, що мають конкретне значення, наприклад, "0" або "1". Вказана функція може відповідати одній з описаних вище функцій (1)-(12) або концептуально подібних функцій. У зв'язку з прикладами функцій (5)-(8) відеокодер 20 може визначити контекст ctx_idx для біна на позиції i бінаризованого значення, що представляє позицію останнього значущого біна, використовуючи формулу offset+(i>>k), де offset=3*n+((n+1)>>2), k=(n+3)>>2 і n=(log2(block_size)2), тобто, відеокодер 20 може виконувати ітерації по кожному біну,що підлягає ентропійному кодуванню, і виконати функції, вказані вище, для визначення контексту, необхідного для кодування біна поточної ітерації. Потім відеокодер 20 може виконати кодування бінів для даного значення (наприклад, бінів, що не виходять за вказану максимальну кількість бінів), використовуючи визначені контексти (етап 164). Аналогічним чином, відеокодер 20 може виконати обхідне кодування інших бінів вказаного значення (етап 166). Таким чином, спосіб за фіг. 4 представляє приклад способу, що включає в себе визначення контексту для ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих, з використанням функції індексу даного біна, і кодування даного біна з використанням визначеного контенту. Крім того, вказана функція може створити індекс для даного контексту шляхом зсуву праворуч індексу біна на величину k і додання зсунутого праворуч значення до значення зміщення, де значення зміщення визначають відповідно до формули offset=3*n+((n+1)>>2), де значення k визначають відповідно до формули k=(n+3)>>2, і де значення n визначають відповідно до формули n=(log2(block_size)-2). На фіг. 5 представлена блок-схема, що ілюструє зразковий спосіб для декодування поточного блока відеоданих. Поточний блок може містити поточну CU або частину поточної CU. Хоча даний опис стосується відеодекодера 30 (фіг. 1 і 3), потрібно розуміти, що для виконання способу, аналогічного способу за фіг. 5, можна сконфігурувати інші пристрої. Крім того, хоча у зразковому способі за фіг. 4 конкретно описується кодування синтаксичних елементів, що стосуються позиції останнього значущого коефіцієнта відеоблока з використанням вказаних методик, потрібно розуміти, що ці методики можна використовувати також для кодування інших синтаксичних елементів. Відеодекодер 30 може виконати прогнозування поточного блока (200), наприклад, використовуючи режим інтра- або інтер-прогнозування з метою обчислення прогнозованого блока для поточного блока. Відеодекодер 30 також може приймати дані для поточного блока після ентропійного кодування, такі як дані (після ентропійного кодування) для коефіцієнтів залишкового блока, що відповідає поточному блоку (етап 202). Відеодекодер 30 може виконати ентропійне декодування кодованих даних для відтворення коефіцієнтів залишкового блока (етап 204). Відповідно до розкритих тут методик, відеодекодер 30 може отримати кодоване значення, що вказує позицію останнього значущого коефіцієнта у TU (етап 206). Максимальну кількість бінів згаданого значення можна декодувати, використовуючи CABAC, у той час як біни, що залишилися, можна декодувати, використовуючи обхідне декодування, як це було описано у зв'язку з Таблицею 1. Зокрема, відповідно до розкритих тут методик, відеодекодер 30 може визначити контексти для бінів згаданого значення, використовуючи функцію (етап 208). Як пояснювалося вище, вказані контексти можуть описувати ймовірності бінів, що мають конкретне значення, наприклад, "0" або "1". Вказана функція може відповідати одній з описаних вище функцій (1)-(12) або концептуально подібній функції. У зв'язку з прикладами функцій (5)-(8) відеодекодер 30 може визначити контекст ctx_idx для біна на позиції i бінаризованого значення, що декодується, де бінаризоване значення представляє позицію останнього значущого коефіцієнта, використовуючи формулу offset + (i>>k), де offset=3*n+((n+1)>>2), k=(n+3)>>2 і n=(log 2(block_size)-2). Тобто, відеодекодер 30 може ітеративно декодувати кожний бін, що підлягає ентропійному декодуванню, і виконувати функції, вказані вище, для визначення контексту, необхідного для кодування біна поточної ітерації. Потім відеодекодер 30 може декодувати біни значення (наприклад, біни, що війшли у вказану максимальну кількість бінів), використовуючи визначені контексти (етап 210). Наприклад, відеодекодер 30 може декодувати кодовані дані, отримані від відеокодера 20, використовуючи визначені контексти для відтворення або іншого отримання бінів вказаного значення. 21 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 55 60 Аналогічним чином, відеокодер 30 може виконати обхідне декодування бінів вказаного значення, що залишилися (етап 212). Потім відеодекодер 30 може виконати зворотне сканування відтворених коефіцієнтів на основі позиції останнього значущого коефіцієнта (етап 214) для створення блока квантованих коефіцієнтів перетворення. Тобто, відеодекодер 30 може розмістити декодовані коефіцієнти у TU, починаючи з позиції останнього значущого коефіцієнта і продовжуючи розміщення коефіцієнтів у порядку сканування, який у загальному випадку відповідає порядку сканування, використаному кодером. Потім декодер 30 може виконати зворотне квантування і зворотне перетворення вказаних коефіцієнтів для створення залишкового блока (етап 216). Відеодекодер 30 може, нарешті, декодувати поточний блок шляхом комбінування прогнозованого блока і залишкового блока (етап 218). Таким чином, спосіб за фіг. 5 представляє приклад способу, що включає в себе визначення контексту для ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих, з використанням функції індексу даного біна, і кодування даного біна з використанням визначеного контента. Крім того, вказана функція може створити індекс для даного контексту шляхом зсуву праворуч індексу біна на величину k і додання зсунутого праворуч значення до значення зміщення, де значення зміщення визначають відповідно до формули offset=3*n+((n+1)>>2), де значення k визначають відповідно до формули k=(n+3)>>2, і де значення n визначають відповідно до формули n=(log2(block_size)-2). Повинно бути зрозуміло, що в залежності від того або іншого прикладу деякі дії або події, пов'язані з розкритими тут методиками, можуть виконуватися у різній послідовності, з можливістю додання нових дій або подій, об'єднання декількох наявних дій або подій, а також виключення тих або інших дій або подій (наприклад, коли не всі описані дії або події необхідні для практичної реалізації запропонованих методик). Крім того, у деяких прикладах дії або події можуть виконуватися одночасно, наприклад, за допомогою обробки з перериванням або за допомогою обробки множиною процесорів, а не послідовно. В одному або декількох прикладах описані функції можуть бути реалізовані апаратними засобами, програмними засобами, програмно-апаратними засобами або будь-якою їх комбінацією. При реалізації програмними засобами ці функції можуть зберігатися або передаватися у вигляді однієї або декількох команд або коду на зчитуваному комп'ютером носії і виконуватися обробляючим апаратним блоком. Зчитуване комп'ютером середовище може включати в себе зчитуване комп'ютером запам'ятовуюче середовище, яке відповідає матеріальному носію, такому як середовище зберігання даних або середовище передачі, включаючи будь-який носій, який дозволяє забезпечити пересилання комп'ютерної програми з одного місця в інше, наприклад, відповідно до якого-небудь протоколу зв'язку. У цьому аспекті зчитуване комп'ютером середовище у загальному випадку може відповідати (1) матеріальному зчитуваному комп'ютером запам'ятовуючому середовищу, яке забезпечує довготривале зберігання, або (2) середовищу зв'язку, такому як сигнал або несуча хвиля. Середовищем для запам'ятовування даних може служити будь-яке доступне середовище, доступ до якого може здійснюватися одним або декількома комп'ютерами, або одним або декількома процесорами для діставання команд, коду і/або з боку структур даних для реалізації розкритих у даному винаході методик. Комп'ютерний програмний продукт може включати в себе зчитуваний комп'ютером носій. Як приклад, але не як обмеження, вказаний зчитуваний комп'ютером носій даних може містити RAM, ROM, EEPROM, CD-ROM або інший запам'ятовуючий пристрій на оптичних дисках, запам'ятовуючий пристрій на магнітних дисках або інші магнітні запам'ятовуючі пристрої, флеш-пам'ять, або будь-який інший носій, який можна використати для запам'ятовування необхідного програмного коду у вигляді команд або структур даних, і до яких може мати доступ комп'ютер. Також зчитуваним комп'ютером середовищем буде правильно назвати будь-яке з'єднання. Наприклад, якщо команди передаються з Web-сайта, сервера або іншого віддаленого джерела з використанням коаксіального кабелю, оптоволоконного кабелю, витої пари, цифрової абонентської лінії (DSL) або бездротових технологій, таких як інфрачервоний зв'язок, радіозв'язок і мікрохвильовий зв'язок, то тоді коаксіальний кабель, оптоволоконний кабель, вита пара, лінії DSL або такі бездротові технології, як інфрачервоний зв'язок, радіозв'язок і мікрохвильовий зв'язок, входять у визначення середовища. Однак потрібно розуміти, що терміни: "зчитуваний комп'ютером носій даних" і "середовище для зберігання даних" не включають в себе з'єднання, несучі хвилі, сигнали або інші тимчасові носії, а стосуються матеріального запам'ятовуючого середовища довготривалого зберігання. Використовуваний тут термін оптичний диск стосується компакт-диска (CD), лазерного диска, оптичного диска, цифрового універсального диска (DVD), флопі-диска і диска Blu-ray, які 22 UA 114104 C2 5 10 15 20 відтворюють дані оптичним шляхом з використанням лазерів, у той час як термін магнітний диск звичайно стосується дисків, які відтворюють дані магнітним шляхом. До поняття зчитуваного комп'ютером середовища також потрібно віднести комбінації з перерахованого вище. Команди можуть виконуватися одним або декількома процесорами, такими як один або декілька цифрових процесорів сигналів (DSP), мікропроцесорів загального призначення, прикладних спеціалізованих інтегральних схем (ASIC), вентильних матриць, що програмуються користувачем (FPGA), або інших еквівалентних інтегральних або дискретних логічних схем. Відповідно, використовуваний тут термін "процесор" може стосуватися будь-якої з описаних вище структур або будь-якої іншої структури, придатної для реалізації описаних вище методик. Додатково, у деяких аспектах описані тут функціональні можливості можуть бути забезпечені у рамках спеціалізованих апаратних і/або програмних модулів, виконаних з можливістю кодування і декодування, або включених у склад комбініваного кодека. Також розкриті тут методики можна повністю реалізувати в одній або декількох схемах або логічних елементах. Розкриті тут методики можуть бути реалізовані у найрізноманітніших пристроях або установках, включаючи бездротову телефонну трубку, інтегральну схему (IC) або набір інтегральних схем (наприклад, мікропроцесорний набір). Різні компоненти, модулі або блоки описані тут таким чином, щоб підкреслити функціональні аспекти пристроїв, виконаних з можливістю виконання розкритих тут методик, причому для цього не потрібна їх реалізація за допомогою різних апаратних блоків. Скоріше навпаки, як обговорювалося вище, різні блоки можуть бути скомбінівані в апаратному блоці-кодеку або забезпечені у вигляді набору взаємодіючих апаратних блоків, включаючи один або декілька процесорів, як було описано вище, у поєднанні з придатним програмним і/або програмно-апаратним забезпеченням. Тут були описані різні приклади. Ці та інші приклади входять в обсяг наведеної нижче формули винаходу. 25 ФОРМУЛА ВИНАХОДУ 30 35 40 45 50 55 60 1. Спосіб кодування відеоданих, який містить: визначення контексту для ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих, з використанням функції індексу згаданого біна, в якому функція створює контекстний індекс для контексту шляхом зсуву праворуч індексу біна на величину k і додання зсунутого праворуч значення до значення зміщення, причому значення зміщення визначають відповідно до формули: offset=3*n+((n+1)>>2), причому значення k визначають відповідно до формули: k=(n+3)>>2, і причому значення n визначають відповідно до формули: n=(log2(block_size)-2), і причому значення block_size містить значення, що вказує розмір блока, і кодування згаданого біна з використанням визначеного контексту. 2. Спосіб за п. 1, в якому визначення контексту містить виконання згаданої функції. 3. Спосіб за п. 1, в якому функція містить лінійну функцію. 4. Спосіб за п. 1, в якому функція містить нелінійну функцію. 5. Спосіб за п. 1, в якому функція створює контекстний індекс для контексту шляхом зсуву праворуч індексу біна на одиницю. 6. Спосіб за п. 1, який додатково містить прийом згаданої функції від користувача. 7. Спосіб за п. 1, який додатково містить прийом синтаксичних даних, що визначають згадану функцію. 8. Спосіб за п. 1, в якому кодування біна містить ентропійне декодування кодованих даних з використанням визначеного контексту для відтворення значення для біна. 9. Спосіб за п. 1, в якому кодування біна містить ентропійне кодування біна з використанням визначеного контексту. 10. Пристрій для кодування відеоданих, який містить пам'ять, виконану з можливістю зберігання відеоданих; і один або більше процесорів, виконаний з можливістю: визначення контексту для ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих, з використанням функції індексу згаданого біна, в якому функція створює контекстний індекс для контексту шляхом зсуву праворуч індексу біна на величину k і додання зсунутого праворуч значення до значення зміщення, причому значення зміщення визначають відповідно до формули: 23 UA 114104 C2 5 10 15 20 25 30 35 40 45 50 55 offset=3*n+((n+l)>>2), причому значення k визначають відповідно до формули: k=(n+3)>>2, і причому значення n визначають відповідно до формули: n=(log2(block_size)-2), причому значення block_size містить значення, що вказує розмір блока, і кодування згаданого біна з використанням визначеного контексту. 11. Пристрій за п. 10, в якому відеокодер виконаний з можливістю визначення контексту щонайменше частково шляхом виконання згаданої функції. 12. Пристрій за п. 10, в якому відеокодер додатково виконаний з можливістю прийому синтаксичних даних, що визначають згадану функцію. 13. Пристрій за п. 10, в якому відеокодер виконаний з можливістю кодування біна щонайменше частково шляхом ентропійного декодування кодованих даних з використанням визначеного контексту для відтворення значення для біна. 14. Пристрій за п. 10, в якому відеокодер виконаний з можливістю кодування біна щонайменше частково шляхом ентропійного кодування біна з використанням визначеного контексту. 15. Пристрій за п. 10, який містить щонайменше одне з: інтегральну схему; мікропроцесор; і пристрій бездротового зв'язку, що містить згаданий відеокодер. 16. Пристрій для кодування відеоданих, який містить: засіб для визначення контексту для ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих, з використанням функції індексу згаданого біна, в якому функція створює контекстний індекс для контексту шляхом зсуву праворуч індексу біна на величину k і додання зсунутого праворуч значення до значення зміщення, причому значення зміщення визначають відповідно до формули: offset=3*n+((n+1)>>2), причому значення k визначають відповідно до формули: k=(n+3)>>2, причому значення n визначають відповідно до формули: n=(log2(block_size)-2), і причому значення block_size містить значення, що вказує розмір блока, і засіб для кодування згаданого біна з використанням визначеного контексту. 17. Пристрій за п. 16, в якому засіб для визначення контексту містить засіб для виконання згаданої функції. 18. Пристрій за п. 16, який додатково містить засіб для прийому синтаксичних даних, що визначають згадану функцію. 19. Зчитуваний комп'ютером носій даних, кодований командами, які при їх виконанні наказують програмованому процесору обчислювального пристрою: визначати контекст для ентропійного кодування біна значення, що вказує останній значущий коефіцієнт блока відеоданих, з використанням функції індексу згаданого біна, причому функція створює контекстний індекс для контексту шляхом зсуву праворуч індексу біна на величину k і додання зсунутого праворуч значення до значення зміщення, причому значення зміщення визначають відповідно до формули: offset=3*n+((n+1)>>2), причому значення k визначають відповідно до формули: k=(n+3)>>2, причому значення n визначають відповідно до формули: n=(log2(block_size)-2), і причому значення block_size містить значення, що вказує розмір блока, і кодувати згаданий бін з використанням визначеного контексту. 20. Зчитуваний комп'ютером носій даних за п. 19, в якому команди, що наказують програмованому процесору визначати згаданий контекст, додатково включають в себе команди, що наказують програмованому процесору, виконувати згадану функцію. 21. Зчитуваний комп'ютером носій даних за п. 19, додатково кодований командами, які при їх виконанні наказують програмованому процесору приймати синтаксичні дані, що визначають згадану функцію. 24 UA 114104 C2 25 UA 114104 C2 26 UA 114104 C2 Комп’ютерна верстка О. Гергіль Державна служба інтелектуальної власності України, вул. Василя Липківського, 45, м. Київ, МСП, 03680, Україна ДП “Український інститут інтелектуальної власності”, вул. Глазунова, 1, м. Київ – 42, 01601 27

Дивитися

Додаткова інформація

Автори англійською

Guo, Liwei, Karczewicz, Marta, Chien, Wei-Jung

Автори російською

Го Ливэй, Карчевич Марта, Чиэнь Вэй-Дзунг

МПК / Мітки

МПК: H04N 7/00

Мітки: отримання, відеокодування, кодування, позиції, останньої, контексту, виконанні

Код посилання

<a href="https://ua.patents.su/29-114104-otrimannya-kontekstu-dlya-koduvannya-ostanno-pozici-pri-vikonanni-videokoduvannya.html" target="_blank" rel="follow" title="База патентів України">Отримання контексту для кодування останньої позиції при виконанні відеокодування</a>

Подібні патенти