Виконання прогнозування вектора руху для кодування відео
Номер патенту: 114617
Опубліковано: 10.07.2017
Автори: Чіень Вей-Дзунг, Ван Є-Куй, Карчєвіч Марта, Ван Сянлінь, Кобан Мухаммед Зейд, Чень Цзяньле
Формула / Реферат
1. Спосіб кодування відеоданих, при цьому спосіб включає етапи, на яких:
визначають множину векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконати процес прогнозування вектора руху;
масштабують один або більше із згаданої множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб згенерувати один або більше масштабованих векторів руху-кандидатів;
модифікують масштабовані вектори руху-кандидати так, щоб вони знаходилися в рамках точно визначеного діапазону, причому точно визначений діапазон дорівнює [-32768, 32767] в одиницях чверті піксела;
вибирають один із згаданої множини векторів руху-кандидатів як предиктор вектора руху для поточного блока відеоданих; і
кодують поточний блок відеоданих на основі предиктора вектора руху.
2. Спосіб за п. 1, в якому етап, на якому модифікують масштабовані вектори руху-кандидати, включає етап, на якому модифікують масштабовані вектори руху-кандидати без модифікації будь-яких інших векторів руху-кандидатів, які не були масштабовані.
3. Спосіб за п. 1, в якому етап, на якому модифікують масштабовані вектори руху-кандидати, включає етап, на якому зрізають масштабовані вектори руху-кандидати перед вибором одного із згаданої множини векторів руху-кандидатів як предиктора вектора руху для поточного блока відеоданих.
4. Спосіб за п. 1, в якому процес прогнозування вектора руху є одним з режиму злиття і режиму вдосконаленого прогнозування вектора руху.
5. Спосіб за п. 1, в якому точно визначений діапазон задається профілем або рівнем кодування відео.
6. Спосіб за п. 1, в якому точно визначений діапазон є фіксованим і жорстко заданим в одному або більше з декодера відео і кодера відео.
7. Спосіб за п. 1, в якому етап, на якому модифікують масштабовані вектори руху, включає в себе етапи, на яких:
зрізають вертикальну складову масштабованих векторів руху-кандидатів так, щоб вона знаходилася в рамках вертикального точно визначеного діапазону; і
зрізають горизонтальну складову масштабованих векторів руху-кандидатів так, щоб вона знаходилася в рамках горизонтального точно визначеного діапазону.
8. Спосіб за п. 1,
в якому точно визначений діапазон точно визначає межу зміщення вектора руху, яка включає в себе межу вертикального зміщення,
в якому масштабовані вектори руху-кандидати виходять за рамки межі вертикального зміщення, і
в якому етап, на якому модифікують масштабовані вектори руху-кандидати, додатково включає етап, на якому зрізають вертикальну складову масштабованих векторів руху-кандидатів так, щоб вертикальна складова масштабованих векторів руху-кандидатів знаходилась в рамках межі вертикального зміщення.
9. Спосіб за п. 1,
в якому точно визначений діапазон точно визначає межу зміщення вектора руху, яка включає в себе межу горизонтального зміщення,
в якому масштабовані вектори руху-кандидати виходять за рамки межі горизонтального зміщення, і
в якому етап, на якому модифікують масштабовані вектори руху-кандидати, додатково включає етап, на якому зрізають горизонтальну складову масштабованих векторів руху-кандидатів так, щоб горизонтальна складова масштабованих векторів руху-кандидатів знаходилась в рамках межі горизонтального зміщення.
10. Спосіб за п. 1, в якому етап, на якому модифікують масштабовані вектори руху-кандидати, включає етап, на якому масштабують масштабовані вектори руху-кандидати так, щоб масштабовані вектори руху-кандидати знаходились в рамках однієї або більше меж зміщення вектора руху.
11. Спосіб за п. 1, який додатково включає етап, на якому визначають вектор руху для поточного блока відеоданих на основі вибраного одного із згаданої множини векторів руху-кандидатів для поточного блока відеоданих, при цьому визначений вектор руху ідентифікує блок прогнозування відеоданих,
при цьому етап, на якому кодують поточний блок відеоданих, включає етап, на якому декодують поточний блок відеоданих відносно блока прогнозування відеоданих.
12. Спосіб за п. 1, який додатково включає етап, на якому визначають вектор руху для поточного блока відеоданих на основі вибраного одного із згаданої множини векторів руху-кандидатів для поточного блока відеоданих, при цьому визначений вектор руху ідентифікує блок прогнозування відеоданих, і
при цьому етап, на якому кодують поточний блок відеоданих, включає етап, на якому кодують поточний блок відеоданих відносно блока прогнозування відеоданих.
13. Спосіб за п. 1, який додатково включає етапи, на яких:
декодують індекс предиктора вектора руху для ідентифікації вибраного одного із згаданої множини векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконати режим вдосконаленого прогнозування вектора руху процесу прогнозування вектора руху; і
декодують різницю векторів руху між вибраним одним із згаданої множини векторів руху-кандидатів і вектором руху для поточного блока відеоданих, щоб визначити вектор руху для поточного блока відеоданих,
при цьому етап, на якому кодують поточний блок відеоданих, включає етап, на якому декодують поточний блок відеоданих, використовуючи визначений вектор руху для поточного блока відеоданих.
14. Спосіб за п. 1, який додатково включає етапи, на яких:
декодують індекс для ідентифікації вибраного одного із згаданої множини векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконати режим злиття процесу прогнозування вектора руху; і
визначають вектор руху для поточного блока відеоданих так, щоб він був еквівалентний вибраному одному із згаданої множини векторів руху-кандидатів,
при цьому етап, на якому кодують поточний блок відеоданих, включає етап, на якому декодують поточний блок відеоданих, використовуючи визначений вектор руху для поточного блока відеоданих.
15. Пристрій кодування відео, виконаний з можливістю виконання процесу прогнозування вектора руху для кодування відеоданих, при цьому пристрій кодування відео містить:
процесор, виконаний з можливістю: визначення множини векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконати процес прогнозування вектора руху; масштабування одного або більше із згаданої множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб згенерувати один або більше масштабованих векторів руху-кандидатів; модифікування масштабованих векторів руху-кандидатів так, щоб вони знаходилися в рамках точно визначеного діапазону, причому точно визначений діапазон дорівнює [-32768, 32767] в одиницях чверті піксела; вибору одного із згаданої множини векторів руху-кандидатів як предиктора вектора руху для поточного блока відеоданих; і кодування поточного блока відеоданих на основі предиктора вектора руху.
16. Пристрій кодування відео за п. 15, в якому процесор додатково виконаний з можливістю, при модифікуванні масштабованих векторів руху-кандидатів, модифікування масштабованих векторів руху-кандидатів без модифікації будь-яких інших векторів руху-кандидатів, які не були масштабовані.
17. Пристрій кодування відео за п. 15, в якому процесор додатково виконаний з можливістю, при модифікуванні масштабованих векторів руху-кандидатів, зрізання масштабованих векторів руху-кандидатів перед вибором одного із згаданої множини векторів руху-кандидатів як предиктора вектора руху для поточного блока відеоданих.
18. Пристрій кодування відео за п. 15, в якому процес прогнозування вектора руху є одним з режиму злиття і режиму вдосконаленого прогнозування вектора руху.
19. Пристрій кодування відео за п. 15, в якому точно визначений діапазон задається профілем або рівнем кодування відео.
20. Пристрій кодування відео за п. 15, в якому точно визначений діапазон є фіксованим і жорстко заданим в одному або більше з декодера відео і кодера відео.
21. Пристрій кодування відео за п. 15, в якому процесор додатково виконаний з можливістю, при модифікуванні масштабованих векторів руху, зрізання вертикальної складової масштабованих векторів руху-кандидатів так, щоб вона знаходилася в рамках вертикального точно визначеного діапазону, і зрізання горизонтальної складової масштабованих векторів руху-кандидатів так, щоб вона знаходилася в рамках горизонтального точно визначеного діапазону.
22. Пристрій кодування відео за п. 15,
в якому точно визначений діапазон точно визначає межу зміщення вектора руху, яка включає в себе межу вертикального зміщення,
в якому масштабовані вектори руху-кандидати виходять за рамки межі вертикального зміщення, і
в якому процесор додатково виконаний з можливістю, при модифікуванні масштабованих векторів руху-кандидатів, зрізання вертикальної складової масштабованих векторів руху-кандидатів так, щоб вертикальна складова масштабованих векторів руху-кандидатів знаходилась в рамках межі вертикального зміщення.
23. Пристрій кодування відео за п. 15,
в якому точно визначений діапазон точно визначає межу зміщення вектора руху, яка включає в себе межу горизонтального зміщення,
в якому масштабовані вектори руху-кандидати виходять за рамки межі горизонтального зміщення, і
в якому процесор додатково виконаний з можливістю, при модифікуванні масштабованих векторів руху-кандидатів, зрізання горизонтальної складової масштабованих векторів руху-кандидатів так, щоб горизонтальна складова масштабованих векторів руху-кандидатів знаходилась в рамках межі горизонтального зміщення.
24. Пристрій кодування відео за п. 15, в якому процесор додатково виконаний з можливістю, при модифікуванні масштабованих векторів руху-кандидатів, масштабування масштабованих векторів руху-кандидатів так, щоб масштабовані вектори руху-кандидати знаходились в рамках однієї або більше меж зміщення вектора руху.
25. Пристрій кодування відео за п. 15,
в якому процесор додатково виконаний з можливістю визначення вектора руху для поточного блока відеоданих на основі вибраного одного із згаданої множини векторів руху-кандидатів для поточного блока відеоданих,
при цьому визначений вектор руху ідентифікує блок прогнозування відеоданих, і
в якому процесор додатково виконаний з можливістю, при кодуванні поточного блока відеоданих, декодування поточного блока відеоданих відносно блока прогнозування відеоданих.
26. Пристрій кодування відео за п. 15,
в якому процесор додатково виконаний з можливістю визначення вектора руху для поточного блока відеоданих на основі вибраного одного із згаданої множини векторів руху-кандидатів для поточного блока відеоданих,
при цьому визначений вектор руху ідентифікує блок прогнозування відеоданих; і
в якому процесор додатково виконаний з можливістю, при кодуванні поточного блока відеоданих, кодування поточного блока відеоданих відносно блока прогнозування відеоданих.
27. Пристрій кодування відео за п. 15, в якому процесор додатково виконаний з можливістю: декодування індексу предиктора вектора руху для ідентифікації вибраного одного із згаданої множини векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконати режим вдосконаленого прогнозування вектора руху процесу прогнозування вектора руху; декодування різниці векторів руху між вибраним одним із згаданої множини векторів руху-кандидатів і вектором руху для поточного блока відеоданих, щоб визначити вектор руху для поточного блока відеоданих, і, при кодуванні поточного блока відеоданих, декодування поточного блока відеоданих, використовуючи визначений вектор руху для поточного блока відеоданих.
28. Пристрій кодування відео за п. 15, в якому процесор додатково виконаний з можливістю: декодування індексу для ідентифікації вибраного одного із згаданої множини векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконати режим злиття процесу прогнозування вектора руху; визначення вектора руху для поточного блока відеоданих так, щоб він був еквівалентний вибраному одному із згаданої множини векторів руху-кандидатів; і, при кодуванні поточного блока відеоданих, декодування поточного блока відеоданих, використовуючи визначений вектор руху для поточного блока відеоданих.
29. Пристрій кодування відео, виконаний з можливістю виконання процесу прогнозування вектора руху для кодування відеоданих, при цьому пристрій кодування відео містить:
засіб для визначення множини векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконати процес прогнозування вектора руху;
засіб для масштабування одного або більше із згаданої множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб згенерувати один або більше масштабованих векторів руху-кандидатів;
засіб для модифікування масштабованих векторів руху-кандидатів так, щоб вони знаходилися в рамках точно визначеного діапазону, причому точно визначений діапазон дорівнює [-32768, 32767] в одиницях чверті піксела;
засіб для вибору одного із згаданої множини векторів руху-кандидатів як предиктора вектора руху для поточного блока відеоданих; і
засіб для кодування поточного блока відеоданих на основі предиктора вектора руху.
30. Пристрій кодування відео за п. 29, в якому засіб для модифікування масштабованих векторів руху-кандидатів містить засіб для модифікування масштабованих векторів руху-кандидатів без модифікації будь-яких інших векторів руху-кандидатів, які не були масштабовані.
31. Пристрій кодування відео за п. 29, в якому засіб для модифікування масштабованих векторів руху-кандидатів містить засіб для зрізання масштабованих векторів руху-кандидатів перед вибором одного із згаданої множини векторів руху-кандидатів як предиктора вектора руху для поточного блока відеоданих.
32. Пристрій кодування відео за п. 29, в якому точно визначений діапазон задається профілем або рівнем кодування відео.
33. Пристрій кодування відео за п. 29, в якому точно визначений діапазон є фіксованим і жорстко заданим в одному або більше з декодера відео і кодера відео.
34. Пристрій кодування відео за п. 29, в якому засіб для модифікування масштабованих векторів руху включає в себе:
засіб для зрізання вертикальної складової масштабованих векторів руху-кандидатів так, щоб вона знаходилася в рамках вертикального точно визначеного діапазону; і
засіб для зрізання горизонтальної складової масштабованих векторів руху-кандидатів так, щоб вона знаходилася в рамках горизонтального точно визначеного діапазону.
35. Пристрій кодування відео за п. 29,
в якому точно визначений діапазон точно визначає межу зміщення вектора руху, яка включає в себе межу вертикального зміщення,
в якому масштабовані вектори руху-кандидати виходять за рамки межі вертикального зміщення, і
в якому засіб для модифікування масштабованих векторів руху-кандидатів додатково містить засіб для зрізання вертикальної складової масштабованих векторів руху-кандидатів так, щоб вертикальна складова масштабованих векторів руху-кандидатів знаходилась в рамках межі вертикального зміщення.
36. Пристрій кодування відео за п. 29,
в якому точно визначений діапазон точно визначає межу зміщення вектора руху, яка включає в себе межу горизонтального зміщення,
в якому масштабовані вектори руху-кандидати виходять за рамки межі горизонтального зміщення, і
в якому засіб для модифікування масштабованих векторів руху-кандидатів додатково містить засіб для зрізання горизонтальної складової масштабованих векторів руху-кандидатів так, щоб горизонтальна складова масштабованих векторів руху-кандидатів знаходилась в рамках межі горизонтального зміщення.
37. Постійний зчитуваний комп'ютером носій даних з інструкціями, що зберігаються на ньому, які, при виконанні, спонукають один або більше процесорів:
визначати множину векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконати процес прогнозування вектора руху;
масштабувати один або більше із згаданої множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб згенерувати один або більше масштабованих векторів руху-кандидатів;
модифікувати масштабовані вектори руху-кандидати так, щоб вони знаходилися в рамках точно визначеного діапазону, причому точно визначений діапазон дорівнює [-32768, 32767] в одиницях чверті піксела;
вибирати один із згаданої множини векторів руху-кандидатів як предиктор вектора руху для поточного блока відеоданих; і
кодувати поточний блок відеоданих на основі предиктора вектора руху.
38. Постійний зчитуваний комп'ютером носій даних за п. 37, в якому інструкції, при виконанні, спонукають один або більше процесорів, при модифікуванні масштабованих векторів руху-кандидатів, модифікувати масштабовані вектори руху-кандидати без модифікації будь-яких інших векторів руху-кандидатів, які не були масштабовані.
39. Постійний зчитуваний комп'ютером носій даних за п. 37, в якому інструкції, при виконанні, спонукають один або більше процесорів, при модифікуванні масштабованих векторів руху-кандидатів, зрізати масштабовані вектори руху-кандидати перед вибором одного із згаданої множини векторів руху-кандидатів як предиктора вектора руху для поточного блока відеоданих.
40. Постійний зчитуваний комп'ютером носій даних за п. 37, який додатково містить інструкції, що зберігаються на ньому, які, при виконанні, спонукають один або більше процесорів:
вибирати один із згаданої множини векторів руху-кандидатів як предиктор вектора руху для поточного блока відеоданих; і
кодувати поточний блок відеоданих на основі предиктора вектора руху.
41. Постійний зчитуваний комп'ютером носій даних за п. 37, в якому точно визначений діапазон задається профілем або рівнем кодування відео.
42. Постійний зчитуваний комп'ютером носій даних за п. 37, в якому точно визначений діапазон є фіксованим і жорстко заданим в одному або більше з декодера відео і кодера відео.
43. Постійний зчитуваний комп'ютером носій даних за п. 37, в якому інструкції, при виконанні, спонукають один або більше процесорів, при модифікуванні масштабованих векторів руху:
зрізати вертикальну складову масштабованих векторів руху-кандидатів так, щоб вона знаходилася в рамках вертикального точно визначеного діапазону; і
зрізати горизонтальну складову масштабованих векторів руху-кандидатів так, щоб вона знаходилася в рамках горизонтального точно визначеного діапазону.
44. Постійний зчитуваний комп'ютером носій даних за п. 37,
в якому точно визначений діапазон точно визначає межу зміщення вектора руху, яка включає в себе межу вертикального зміщення,
в якому масштабовані вектори руху-кандидати виходять за рамки межі вертикального зміщення, і
в якому інструкції, при виконанні, спонукають один або більше процесорів, при модифікуванні масштабованих векторів руху-кандидатів, зрізати вертикальну складову масштабованих векторів руху-кандидатів так, щоб вертикальна складова масштабованих векторів руху-кандидатів знаходилась в рамках межі вертикального зміщення.
45. Постійний зчитуваний комп'ютером носій даних за п. 37,
в якому точно визначений діапазон точно визначає межу зміщення вектора руху, яка включає в себе межу горизонтального зміщення,
в якому масштабовані вектори руху-кандидати виходять за рамки межі горизонтального зміщення, і
в якому інструкції, при виконанні, спонукають один або більше процесорів, при модифікуванні масштабованих векторів руху-кандидатів, зрізати горизонтальну складову масштабованих векторів руху-кандидатів так, щоб горизонтальна складова масштабованих векторів руху-кандидатів знаходилась в рамках межі горизонтального зміщення.
Текст
Реферат: Загалом описуються методики для виконання прогнозування вектора руху для кодування відео. Методики може виконувати пристрій кодування відео, що містить процесор. Процесор може UA 114617 C2 (12) UA 114617 C2 бути виконаний з можливістю: визначення множини векторів руху-кандидатів для поточного блока відеоданих таким чином, щоб виконати процес прогнозування вектора руху, і масштабування одного або більше з множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб згенерувати один або більше масштабованих векторів рухукандидатів. Потім процесор може бути виконаний з можливістю модифікування масштабованих векторів руху-кандидатів таким чином, щоб вони знаходилися в рамках точно визначеного діапазону. UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 По даній заявці вимагається пріоритет попередньої заявки США № 61/579,465, поданої 22 грудня 2011 р., і попередньої заявки США № 61/584,096, поданої 06 січня 2012 р., кожна з яких у всій своїй повноті включена в даний опис за допомогою посилання. ГАЛУЗЬ ТЕХНІКИ, ДО ЯКОЇ НАЛЕЖИТЬ ВИНАХІД Даний винахід стосується кодування відео і, зокрема, аспектів компенсації руху кодування відео. РІВЕНЬ ТЕХНІКИ Можливості цифрового відео можуть бути включені в широкий діапазон пристроїв, включаючи цифрові телевізори, системи цифрового безпосереднього мовлення, системи бездротового мовлення, персональні цифрові помічники (PDA), комп'ютери класу лептоп або настільні комп'ютери, цифрові камери, цифрові пристрої запису, цифрові мультимедійні програвачі, відеоігрові пристрої, відеоігрові консолі, стільникові або супутникові радіотелефони, пристрої проведення відеотелеконференцій і подібне. Пристрої цифрового відео реалізовують методики стиснення відео, такі як ті, що описані в стандартах, які визначаються стандартами MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Розширене Кодування Відео (AVC), і розширеннях таких стандартів, для більш ефективної передачі і прийому інформації цифрового відео. Розробляються нові стандарти кодування відео, такі як стандарт Високоефективного Кодування Відео (HEVC), розроблюваний "Спільною Об'єднаною Групою Кодування Відео" (JCT-VC), яка є об'єднанням MPEG і ITU-T. Стандарт HEVC, що розвивається, іноді іменується як H.265, незважаючи на те, що така назва офіційно не була прийнята. СУТЬ ВИНАХОДУ Загалом, даний винахід описує методики для утримання у визначених межах діапазону векторів руху-кандидатів, використовуваних в процесі прогнозування вектора руху, щоб вони знаходилися в рамках точно визначеного діапазону. Прогнозування вектора руху звичайно використовується в кодуванні відео як спосіб підвищення ефективності, з якою виконується оцінка руху. Замість виконання пошуку блоків в опорних кадрах, які співпадають з поточним блоком, за допомогою виконання того, що звичайно іменується "оцінкою руху", кодер відео може визначати ці вектори руху-кандидати по блоках, які є просторовими або часовими сусідами для поточного блока відеоданих, і вибирати один з цих векторів руху-кандидатів як предиктор вектора руху для поточного блока відеоданих. У деяких випадках, ці вектори рухукандидати можуть бути масштабовані. Коли масштабований вектор руху-кандидат вибирається як предиктор вектора руху, то методики можуть надати кодеру відео можливість утримання у визначених межах однієї або більше з: горизонтальної складової і вертикальної складової даних масштабованих векторів руху-кандидатів. У одному прикладі, спосіб кодування відеоданих включає етапи, на яких: визначають множину векторів руху-кандидатів для поточного блока відеоданих таким чином, щоб виконати процес прогнозування вектора руху; масштабують один або більше із згаданої множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб згенерувати один або більше масштабованих векторів руху-кандидатів; і модифікують масштабовані вектори руху-кандидати таким чином, щоб вони знаходилися в рамках точно визначеного діапазону. Спосіб додатково включає етапи, на яких: вибирають один із згаданої множини векторів рухукандидатів як предиктор вектора руху для поточного блока відеоданих, і кодують поточний блок відеоданих на основі предиктора вектора руху. У іншому прикладі, пристрій кодування відео, виконаний з можливістю виконання процесу прогнозування вектора руху для кодування відеоданих, містить: процесор, виконаний з можливістю: визначення множини векторів руху-кандидатів для поточного блока відеоданих таким чином, щоб виконати процес прогнозування вектора руху; масштабування одного або більше із згаданої множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб згенерувати один або більше масштабованих векторів руху-кандидатів; і модифікування масштабованих векторів руху-кандидатів таким чином, щоб вони знаходилися в рамках точно визначеного діапазону; вибору одного із згаданої множини векторів рухукандидатів як предиктора вектора руху для поточного блока відеоданих; і кодування поточного блока відеоданих на основі предиктора вектора руху. У іншому прикладі, пристрій кодування відео, виконаний з можливістю виконання процесу прогнозування вектора руху для кодування відеоданих, містить: засіб для визначення множини векторів руху-кандидатів для поточного блока відеоданих таким чином, щоб виконати процес прогнозування вектора руху; і засіб для масштабування одного або більше із згаданої множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб згенерувати один або більше масштабованих векторів руху-кандидатів. Пристрій кодування відео додатково містить: засіб для модифікування масштабованих векторів руху-кандидатів таким чином, щоб 1 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 вони знаходилися в рамках точно визначеного діапазону; засіб для вибору одного із згаданої множини векторів руху-кандидатів як предиктора вектора руху для поточного блока відеоданих; і засіб для кодування поточного блока відеоданих на основі предиктора вектора руху. У іншому прикладі, постійний зчитуваний комп'ютером носій даних має інструкції, що зберігаються на ньому, які, при виконанні, спонукають один або більше процесорів: визначати множину векторів руху-кандидатів для поточного блока відеоданих таким чином, щоб виконати процес прогнозування вектора руху; масштабувати один або більше із згаданої множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб згенерувати один або більше масштабованих векторів руху-кандидатів; модифікувати масштабовані вектори рухукандидати таким чином, щоб вони знаходилися в рамках точно визначеного діапазону; вибирати один із згаданої множини векторів руху-кандидатів як предиктор вектора руху для поточного блока відеоданих; і кодувати поточний блок відеоданих на основі предиктора вектора руху. Подробиці одного або більше прикладів викладені в супровідних кресленнях і представленому нижче описі. Інші ознаки, об'єкти і переваги будуть очевидні з опису і креслень і з формули винаходу. КОРОТКИЙ ОПИС КРЕСЛЕНЬ Фіг. 1 є структурною схемою, що ілюструє зразкову систему кодування і декодування відео, яка може бути виконана з можливістю використання методик, описуваних в даному винаході, для утримання у визначених межах діапазону векторів руху-кандидатів при виконанні процесу прогнозування вектора руху. Фіг. 2 є структурною схемою, що ілюструє приклад кодера відео, який може реалізовувати методики, описувані в даному винаході для утримання у визначених межах діапазону MVP. Фіг. 3 є структурною схемою, що ілюструє приклад декодера відео, який реалізовує методики прогнозування вектора руху, описувані в даному винаході. Фіг. 4 є блок-схемою, що ілюструє зразкове функціонування кодера відео при виконанні аспектів методик прогнозування вектора руху, описуваних в даному винаході. Фіг. 5 є блок-схемою, що ілюструє зразкове функціонування кодера відео при реалізації інших аспектів методик прогнозування вектора руху, описуваних в даному винаході. Фіг. 6 є схемою, що ілюструє зразкове компонування суміжних сусідніх прогнозуючих одиниць (PU) і часової спільно розташованої PU для поточної PU. ДОКЛАДНИЙ ОПИС Варіанти здійснення методик, описуваних в даному винаході, надають кодерам відео (які можуть являти собою поняття, використовуване в даному описі як таке, що стосується одного з або обох з кодера відео і декодера відео) можливість утримання у визначених межах діапазону вибраних векторів руху-кандидатів таким чином, щоб вони знаходилися в точно визначеному діапазоні, при виконанні процесу прогнозування вектора руху. Іншими словами, методики надають кодеру відео можливість визначення списку векторів руху-кандидатів (при цьому ці вектори руху-кандидати також можуть іменуватися як "кандидати-предиктори вектора руху", а список може іменуватися як "список кандидатів") для поточного блока відеоданих і вибору одного з векторів руху-кандидатів в даному списку для представлення предиктора вектора руху (MVP) для поточного блока відеоданих. Потім кодер відео може визначати, чи був масштабований вибраний вектор руху-кандидат. Після визначення того, що вибраний вектор руху-кандидат був масштабований, кодер відео може визначати, чи укладається горизонтальна складова і/або вертикальна складова вибраного вектора руху-кандидата в точно визначений діапазон значень горизонтальної складової і/або точно визначений діапазон значень вертикальної складової, відповідно. Ці вказані діапазони можуть ефективно являти собою те, що може іменуватися як обмеження горизонтального зміщення і/або обмеження вертикального зміщення. Якщо не укладається в точно визначений діапазон значень горизонтальної складової і/або точно визначений діапазон значень вертикальної складової, то тоді кодер відео може зрізати значення таким чином, що значення горизонтальної і/або вертикальної складової укладаються в точно визначений діапазон значень горизонтальної складової і/або точно визначений діапазон значень вертикальної складової. Таким чином, методики можуть модифікувати процес генерування списку кандидатів, що може іменуватися як процес зрізання кандидатів-предикторів вектора руху. Наприклад, кодер відео може зрізати вертикальну складову вектора руху-кандидата таким чином, щоб вона залишалася в межах діапазону вектора руху. Аналогічним чином, кодер відео може зрізати горизонтальну складову вектора руху-кандидата таким чином, щоб вона залишалася в межах діапазону вектора руху. Додатково, кодер відео може масштабувати вектор руху, щоб він залишався в межах діапазону вектора руху. Ці методики можуть бути застосовані до деяких або 2 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 до всіх проміжних векторів руху-кандидатів або тільки до підсумкового вибраного предиктора вектора руху для поточного відеоблока. Іншими словами, коли вектор руху-кандидат зі списку кандидатів вказує на блок прогнозування, розташований за межами обмеження зміщення вектора руху, кодер відео (який також може іменуватися як "пристрій кодування відео") може зрізати або іншим чином зрізати значення вектора руху-кандидата. Потім кодер відео може кодувати поточний відеоблок на основі вибраного зрізаного вектора руху-кандидата зі списку кандидатів. За допомогою обмеження або іншого утримання у визначених межах діапазону значень горизонтальної і/або вертикальної складової вибраного вектора руху-кандидата в деяких випадках (таких як, коли вибраний вектор руху-кандидат є масштабованим), методики можуть гарантувати те, що горизонтальні і/або вертикальні вектори руху не будуть вимагати більше деякої кількості бітів для вираження їх цілочислових значень зі знаком. Іншими словами, значення складових векторів руху, які є цілочисловими значеннями зі знаком, як правило, виражаються за допомогою 16 бітів. Внаслідок цього при визначенні векторів руху декодери відео виділяють 16 бітів на складову вектора руху. Допущення перевищення 16 бітів для векторів руху може значно ускладнити розробку декодера відео при реалізації в апаратному забезпеченні, оскільки потрібно забезпечити додаткову фізичну пам'ять для зберігання цих складових вектора руху, що вимагають для вираження більше 16 бітів. Додатково, за допомогою утримання у визначених межах діапазону складових вектора руху в деяких випадках таким чином, щоб вони знаходилися в точно визначеному діапазоні, методики можуть сприяти більш ефективному використанню пропускної здатності пам'яті. Для ілюстрації, за умови, що кодування відеокадру відеоданих, як правило, протікає в черговості растрового сканування (яка звичайно відповідає черговості зчитування зверху вниз, зліва направо), то обмеження вертикальної складової векторів руху може утримувати у визначених межах те, який об'єм відеоданих опорного кадру, до якого належить вектор руху, потрібно завантажити у внутрішньокристальну пам'ять. Менша вертикальна складова вектора руху, при кодуванні відео з растровим скануванням, може бути розглянута як ефективний спосіб обмеження об'єму внутрішньокристальної пам'яті, яка необхідна при реалізаціях в апаратному забезпеченні кодера відео. Надмірно великі вертикальні складові вектора руху можуть привести у випадках, де декілька блоків, кожний з яких посилається повністю на різні частини одного і того ж опорного кадру, до того, що потім від декодера відео буде потрібний частий обмін цими різними частинами опорного кадру між позакристальною і внутрішньокристальною пам'яттю. За допомогою утримання у визначених межах діапазону складових вектора руху в деяких випадках, методики можуть сприяти більш ефективному використанню пропускної здатності пам'яті. Фіг. 1 є структурною схемою, що ілюструє зразкову систему 10 кодування і декодування відео, яка може бути сконфігурована для використання методик, описуваних в даному винаході, для утримання у визначених межах діапазону векторів руху-кандидатів, при виконанні процесу прогнозування вектора руху. Як показано в прикладі на Фіг. 1, система 10 включає в себе пристрій-джерело 12, який генерує закодоване відео для пристрою-одержувача 14. Пристрійджерело 12 може передавати закодоване відео пристрою-одержувачу 14 через канал 16 зв'язку або може зберігати закодоване відео на носії 34 даних або файловому сервері 36 таким чином, що доступ до закодованого відео може бути здійснений пристроєм-одержувачем 14 за бажанням. Пристрій-джерело 12 і пристрій-одержувач 14 можуть бути виконані у вигляді широкого різноманіття пристроїв, включаючи настільні комп'ютери, комп'ютери класу ноутбук (тобто комп'ютер класу лептоп), планшетні комп'ютери, абонентські телевізійні приставки, телефонні трубки (включаючи стільникові телефони або телефонні трубки і так звані інтелектуальні телефони), телевізори, камери, пристрої відображення, цифрові мультимедійні програвачі, відеоігрові консолі або подібне. У багатьох випадках, такі пристрої можуть бути обладнані для забезпечення бездротового зв'язку. Отже, канал 16 зв'язку може бути виконаний у вигляді бездротового каналу. Як альтернатива, канал 16 зв'язку може бути виконаний у вигляді дротового каналу, поєднання бездротового і дротового каналів або будь-якого іншого типу каналу зв'язку або поєднання каналів зв'язку, придатних для передачі закодованих відеоданих, таких як радіочастотний (RF) спектр або одна або більше фізичних ліній передачі. У деяких прикладах, канал 16 зв'язку може бути частиною основаної на пакетній передачі мережі, такої як локальна мережа (LAN), широкомасштабна мережа (WAN) або глобальна мережа, така як Інтернет. Внаслідок цього, канал 16 зв'язку, як правило, являє собою будь-який придатний засіб зв'язку, або сукупність різних засобів зв'язку, для передачі відеоданих від пристрою-джерела 12 до пристроюодержувача 14, включаючи будь-яке придатне поєднання дротових або бездротових засобів. 3 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 Канал 16 зв'язку може включати в себе маршрутизатори, комутатори, базові станції або будьяке інше обладнання, яке може бути корисне для забезпечення зв'язку від пристрою-джерела 12 до пристрою-одержувача 14. Як додатково показано в прикладі на Фіг. 1, пристрій-джерело 12 включає в себе джерело 18 відео, кодер 20 відео, модулятор/демодулятор 22 ("модем 22") і передавач 24. У пристроїджерелі 12, джерело 18 відео може включати в себе джерело, таке як пристрій захоплення відео. Пристрій захоплення відео, як приклад, може включати в себе один або більше з пристроїв: відеокамера; відеоархів, що містить раніше захоплене відео; інтерфейс зовнішнього відеосигналу для прийому відео від постачальника відео контенту; і/або систему комп'ютерної графіки для генерування даних комп'ютерної графіки як джерела відео. Як один приклад, якщо джерелом 18 відео є відеокамера, то пристрій-джерело 12 і пристрій-одержувач 14 можуть утворювати так звані камерофони або відеофони. Проте, методики, описувані в даному винаході, не обмежуються бездротовими додатками або настройками і можуть бути застосовані до небездротових пристроїв, що включають в себе можливості кодування і/або декодування відео. Внаслідок цього, пристрій-джерело 12 і пристрій-одержувач 14 є лише прикладами кодуючих пристроїв, які можуть підтримувати методики, описувані тут. Кодер 20 відео може кодувати захоплене, попередньо захоплене або генероване комп'ютером відео. Як тільки закодоване, кодер 20 відео може виводити дане закодоване відео на модем 22. Потім модем 22 може модулювати закодоване відео згідно зі стандартом зв'язку, таким як протокол бездротового зв'язку, після чого передавач 24 може передавати модульовані дані закодованого відео пристрою-одержувачу 14. Модем 22 може включати в себе різні перетворювачі частоти, фільтри, підсилювачі або інші компоненти, розроблені для модуляції сигналу. Передавач 24 може включати в себе схеми, розроблені для передачі даних, включаючи підсилювачі, фільтри, і одну або більше антен. Захоплене, попередньо захоплене, згенероване комп'ютером відео, яке кодується кодером 20 відео, також може бути збережене на носії 34 даних або файловому сервері 36 для витягання, декодування і споживання пізніше. Носій 34 даних може включати в себе диски Bluray, DVD, CD-ROM, флеш-пам'ять або будь-який інший придатний цифровий носій даних для зберігання закодованого відео. Пристрій-одержувач 14 може здійснювати доступ до закодованого відео, що зберігається на носії 34 даних або файловому сервері 36, декодувати дане закодоване відео, щоб згенерувати декодоване відео, і відтворювати дане декодоване відео. Файловий сервер 36 може бути будь-яким типом сервера, виконаного з можливістю зберігання закодованого відео і передачі цього закодованого відео пристрою-одержувачу 14. Зразкові файлові сервери включають в себе web-сервер (наприклад, для web-сайта), FTPсервер, пристрої накопичувача, що підключається до мережі (NAS), локальний накопичувач на дисках або будь-який інший тип пристрою, виконаного з можливістю зберігання закодованих відеоданих і передачі їх пристрою-одержувачу. Передача закодованих відеоданих від файлового сервера 36 може бути потоковою передачею, передачею завантаження або поєднанням обох. Пристрій-одержувач 14 може одержувати доступ до файлового сервера 36 відповідно до будь-якого стандартного з'єднання для передачі даних, включаючи Інтернетз'єднання. Дане з'єднання може включати в себе бездротовий канал (наприклад, з'єднання WiFi або бездротове стільникове з'єднання для передачі даних), дротове з'єднання (наприклад, DSL, кабельний модем і т. д.), поєднання як дротового, так і бездротового каналів або будь-який інший тип каналу зв'язку, придатний для одержання доступу до закодованих відеоданих, що зберігаються на файловому сервері. Пристрій-одержувач 14, в прикладі на Фіг. 1, включає в себе приймач 26, модем 28, декодер 30 відео і пристрій 32 відображення. Приймач 26 пристрою-одержувача 14 приймає інформацію по каналу 16, а модем 28 демодулює інформацію для того, щоб створити демодульований бітовий потік для декодера 30 відео. Інформація, що передається по каналу 16, може включати в себе різноманітну інформацію синтаксису, згенеровану кодером 20 відео для використання декодером 30 відео при декодуванні пов'язаних закодованих відеоданих. Такий синтаксис також може бути включений в закодовані відеодані, що зберігаються на носії 34 даних або файловому сервері 36. Як кодер 20 відео, так і декодер 30 відео можуть бути частиною відповідного кодерадекодера (кодека), який виконаний з можливістю кодування або декодування відеоданих. Пристрій 32 відображення пристрою-одержувача 14 являє собою будь-який тип дисплея, виконаного з можливістю представлення відеоданих для споживання глядачем. Незважаючи на те, що показаний як вбудований в пристрій-одержувач 14, пристрій 32 відображення може бути вбудований в або бути зовнішнім відносно пристрою-одержувача 14. У деяких прикладах, пристрій-одержувач 14 може включати в себе вбудований пристрій відображення і також може 4 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 бути виконаний з можливістю взаємодії із зовнішнім пристроєм відображення. У інших прикладах, пристрій-одержувач 14 може бути пристроєм відображення. Загалом, пристрій 32 відображення відображає декодовані відеодані користувачу і може бути виконаний у вигляді будь-якого з різноманіття пристроїв відображення, такого як рідкокристалічний дисплей (LCD), плазмовий дисплей, дисплей на органічних світловипромінюючих діодах (OLED) або інший тип пристрою відображення. Даний винахід загалом може стосуватися "сигналізації" кодером 20 відео інформації синтаксису іншому пристрою, такому як декодер 30 відео. Проте, потрібно розуміти, що кодер 20 відео може сигналізувати інформацію за допомогою прив'язки елементів синтаксису до різних закодованих частин відеоданих. Тобто, кодер 20 відео може "сигналізувати" дані за допомогою збереження деяких елементів синтаксису в заголовках різних закодованих частин відеоданих. У деяких випадках, такі елементи синтаксису можуть кодуватися і зберігатися (наприклад, зберігатися на носії 34 даних або файловому сервері 36) перед тим як будуть прийняті і декодовані декодером 30 відео. Таким чином, поняття "сигналізація" загалом може стосуватися передачі синтаксису або інших даних, використовуваних для декодування стиснених відеоданих, чи буде така передача відбуватися в режимі реального часу, в режимі близькому до реального часу або через проміжок часу так, як це може відбуватися при збереженні елементів синтаксису на носій даних під час кодування, які потім можуть бути витягнуті декодуючим пристроєм в будь-який момент часу після того, як були збережені на даному носії даних. Кодер 20 відео і декодер 30 відео можуть функціонувати згідно зі стандартом стиснення відео, таким як стандарт Високоефективного Кодування Відео (HEVC), який розробляється на даний час, і можуть відповідати Тестовій Моделі HEVC (HM). Як альтернатива, кодер 20 відео і декодер 30 відео можуть функціонувати відповідно до інших окремих або промислових стандартів, таких як стандарт ITU-T H.264, що альтернативно іменується як MPEG-4, Частина 10, Розширене Кодування Відео (AVC), або розширеннями таких стандартів. Проте, методики даного винаходу не обмежуються яким-небудь конкретним стандартом кодування. Інші приклади включають в себе MPEG-2 і ITU-T H.263. HM звертається до блока відеоданих як до одиниці кодування (CU). Загалом, CU має аналогічне призначення, що і макроблок, кодований згідно з H.264, за винятком того, що CU не має відмінності по розміру, яка пов'язана з макроблоками в H.264. Таким чином, CU може бути розбита на суб-CU. Загалом, посилання в даному винаході на CU можуть стосуватися найбільшої одиниці кодування (LCU) картинки або суб-CU з LCU. Наприклад, дані синтаксису в бітовому потоці можуть визначати LCU, яка є найбільшою одиницею кодування в одиницях кількості пікселів. LCU може бути розбита на суб-CU і кожна суб-CU може бути розбита на субCU. Дані синтаксису для бітового потоку можуть визначати максимальну кількість разів, яку може бути розбита LCU, що іменується як максимальна глибина CU. Відповідно, бітовий потік також може визначати найменшу одиницю кодування (SCU). LCU може бути пов'язана з ієрархічною структурою даних квадродерева. Загалом, структура даних квадродерева включає в себе один вузол з розрахунку на CU, при цьому кореневий вузол відповідає LCU. Якщо CU розбивається на чотири суб-CU, то вузол, відповідний CU, включає в себе посилання для кожного з чотирьох вузлів, які відповідають суб-CU. Кожний вузол структури даних квадродерева може надавати дані синтаксису для відповідної CU. Наприклад, вузол в квадродереві може включати в себе прапор розбиття, що вказує на те, чи розбивається CU, відповідна вузлу, на суб-CU. Елементи синтаксису для CU можуть бути визначені рекурсивно і можуть залежати від того, чи розбивається CU на суб-CU. CU, яка не розбивається, може включати в себе одну або більше одиниць прогнозування (PU). Загалом, PU являє собою всю або частину відповідної CU і включає в себе дані для витягання опорного відліку для PU. Наприклад, коли PU є закодованою в інтрарежимі, то PU може включати в себе дані, що описують режим інтрапрогнозування (внутрішнього прогнозування) для PU. Як інший приклад, коли PU є закодованою в інтеррежимі, то PU може включати в себе дані, що визначають один або більше векторів руху для PU. Вектор руху, як правило, ідентифікує спільно розташовану CU в одному або більше опорних кадрах, де поняття "опорний кадр" стосується кадру, який за часом має місце до або після кадру, в якому розташовується PU. Дані для CU, що визначають PU, також можуть описувати, наприклад, розбиття CU на одну або більше PU. Режими розбиття можуть розрізнюватися залежно від того, чи є CU некодованою, кодованою в режимі інтрапрогнозування або кодованою в режимі інтерпрогнозування (зовнішнього прогнозування). Дані, що визначають вектор руху, можуть описувати, наприклад, горизонтальну складову вектора руху, вертикальну складову вектора руху, розрізнення для вектора руху (наприклад, 5 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 точність в одну четверту піксела або точність в одну восьму піксела), опорний кадр, на який вказує вектор руху, напрямок прогнозування, який визначає, чи знаходиться ідентифікований опорний кадр до або після поточного кадру, і/або опорний список (наприклад, список 0 або список 1) для вектора руху. Як альтернатива, дані, що визначають вектор руху, можуть описувати вектор руху з точки зору того, що іменується як предиктор вектора руху (MVP). Предиктор вектора руху може включати в себе вектор руху сусідньої PU або часової спільно розташованої PU. Як правило, список з п'яти векторів руху-кандидатів формується визначеним чином (як, наприклад, за допомогою переліку векторів руху-кандидатів, починаючи з тих, що мають найвищу амплітуду, до тих, що мають найменшу амплітуду, тобто найбільше або найменше зміщення між поточною PU, яка повинна бути закодована, і опорною PU, або за допомогою переліку векторів руху-кандидатів на основі місцеположення, тобто верхні блоки, ліві блоки, кутові блоки, часові блоки), де чотири з п'яти векторів руху-кандидатів є просторовими векторами руху, вибраними з чотирьох сусідніх PU, а п'ятий вектор руху-кандидат є вектором руху із загальним місцеположенням за часом, вибраним з часової спільно розташованої PU в опорному кадрі. Незважаючи на те, що, як правило, часовий вектор руху-кандидат займає загальне місцеположення в тій же самій частині опорного кадру, що і поточна частина в поточному кадрі, методики не повинні обмежуватися суворо часовими спільно розташованими векторами рухукандидатами. Навпаки, методики можуть бути реалізовані відносно будь-якого часового вектора руху-кандидата незалежно від того, чи є він спільно розташованим. У деяких випадках, кодер відео може ідентифікувати часовий вектор руху-кандидат, який не є спільно розташованим відносно поточного блока або частини поточного кадру, і може використовувати даний часовий вектор руху-кандидат при виконанні процесу прогнозування вектора руху. Звичайно, кодер відео може сигналізувати про те, що був використаний часовий вектор руху-кандидат, що не є спільно розташованим, або, в деяких випадках, заданий контекст може вказувати, що був використаний часовий вектор руху-кандидат, що не є спільно розташованим (і в цьому випадку кодер відео може не сигналізувати про те, був чи ні часовий вектор руху-кандидат, що не є спільно розташованим, вибраний як MVP). Після формування списку з п'яти векторів руху-кандидатів, кодер 20 відео може одержувати доступ до кожного з векторів руху-кандидатів для визначення того, який забезпечує найкращі характеристики по швидкості і спотворенню, які найкращим чином співпадають із заданим профілем швидкості і спотворення, вибраним для кодування відео. Кодер 20 відео може виконувати процедуру оптимізації швидкості-спотворення (RDO) відносно кожного з п'яти векторів руху-кандидатів, вибираючи один з векторів руху-кандидатів з найкращими результатами RDO як MVP. Як альтернатива, кодер 20 відео може вибирати один з п'яти векторів руху-кандидатів, збережених в списку, який найкращим чином апроксимує вектор руху, який визначений для поточної PU як MVP. У будь-якому випадку, кодер 20 відео може вказувати вектор руху, використовуючи дані, які містять індекс, що ідентифікує вибраний один з векторів руху-кандидатів в списку з п'яти векторів руху-кандидатів, один або більше опорних кадрів, на які вказує вектор руху (часто у вигляді списку) і напрямок прогнозування, що ідентифікує, чи є прогнозування однонаправленим або двонаправленим. Як альтернатива, дані, що визначають вектор руху, можуть вказувати тільки індекс вибраного вектора руху-кандидата в списку з п'яти векторів рухукандидатів, не вказуючи опорний кадр і напрямок руху, що сигналізує декодерам відео про те, що вибраний один з векторів руху-кандидатів повинен у всій своїй повноті використовуватися для поточної PU. На доповнення до наявності однієї або більше PU, які визначають один або більше векторів руху, CU може включати в себе одну або більше одиниць перетворення (TU). Услід за прогнозуванням за допомогою PU, кодер відео може обчислювати залишкове значення для частини CU, відповідної PU, де дане залишкове значення також може іменуватися як залишкові дані. Залишкове значення може бути перетворене, квантоване і проскановане. TU не обов'язково обмежується розміром PU. Таким чином, TU може бути більше або менше, ніж відповідна PU для тієї ж самої CU. У деяких прикладах, максимальний розмір TU може бути розміром відповідної CU. Даний винахід також використовує поняття "блок" для звертання до будь-якої однієї або поєднання з CU, PU і/або TU. У цілому, закодовані відеодані можуть включати в себе дані прогнозування і залишкові дані. Кодер 20 відео може створювати дані прогнозування під час режиму інтрапрогнозування або режиму інтерпрогнозування. Інтрапрогнозування, як правило, включає в себе прогнозування значень піксела в блоці картинки відносно опорних відліків в сусідніх, раніше закодованих 6 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 блоках тієї ж самої картинки. Інтерпрогнозування, як правило, включає в себе прогнозування значень піксела в блоці картинки відносно даних раніше закодованої картинки. Услід за інтра- або інтерпрогнозуванням, кодер 20 відео може обчислювати залишкові значення піксела для блока. Залишкові значення, як правило, відповідають різницям між даними прогнозованого значення піксела для блока і даними істинного значення піксела блока. Наприклад, залишкові значення можуть включати в себе значення пікселної різниці, що вказують різниці між кодованими пікселами і пікселами прогнозування. У деяких прикладах, кодовані піксели можуть бути пов'язані з блоком пікселів, який повинен бути закодований, а піксели прогнозування можуть бути пов'язані з одним або більше блоками пікселів, використаними для прогнозування кодованого блока. Для того, щоб додатково стиснути залишкове значення блока, залишкове значення може бути перетворене в набір коефіцієнтів перетворення, які компактно розміщують настільки багато даних (що також іменуються як "енергія"), наскільки це можливо в невеликій кількості коефіцієнтів по можливості. Методики перетворення можуть включати процес дискретного косинусного перетворення (DCT) або концептуально аналогічний процес, цілочислові перетворення, вейвлет-перетворення або інші типи перетворень. Перетворення конвертує залишкові значення пікселів з просторової області в область перетворення. Коефіцієнти перетворення відповідають двовимірній матриці коефіцієнтів, яка звичайно має той же розмір, що і у вихідного блока. Іншими словами, присутньо стільки коефіцієнтів перетворення, скільки пікселів у вихідному блоці. Проте, завдяки перетворенню, багато які коефіцієнти перетворення можуть мати значення, що дорівнюють нулю. Потім кодер 20 відео може квантувати коефіцієнти перетворення для додаткового стиснення відеоданих. Квантування, як правило, задіює зіставлення значень в рамках відносно великого діапазону зі значеннями у відносно невеликому діапазоні, тим самим скорочуючи об'єм даних, необхідних для представлення квантованих коефіцієнтів перетворення. Зокрема, квантування може бути застосоване відповідно до параметра квантування (QP), який може бути визначений на рівні LCU. Відповідно, однаковий рівень квантування може бути застосований до всіх коефіцієнтів перетворення в TU, пов'язаній з різними PU CU всередині LCU. Проте, замість сигналізації самого QP, зміна (тобто дельта) QP може сигналізуватися з допомогою LCU. Дельта QP визначає зміну параметра квантування для LCU відносно деякого опорного QP, такого як QP раніше переданої LCU. Услід за квантуванням, кодер 20 відео може сканувати коефіцієнти перетворення, створюючи одновимірний вектор з двовимірної матриці, що включає в себе квантовані коефіцієнти перетворення. Потім кодер 20 відео може виконувати статистичне кодування без втрат (яке загалом помилково іменується "ентропійним кодуванням") для кодування результуючого масиву в додатково стиснені дані. Загалом, ентропійне кодування включає один або більше процесів, які разом стискають послідовність коефіцієнтів перетворення і/або іншу інформацію синтаксису. Наприклад, елементи синтаксису, такі як дельта QP, вектори прогнозування, режими кодування, фільтри, корекції або інша інформація, також можуть бути включені в ентропійно закодований бітовий потік. Потім проскановані коефіцієнти ентропійно кодуються нарівні з будь-якою інформацією синтаксису, наприклад, за допомогою контекстнозалежного адаптивного кодування із змінною довжиною кодового слова (CAVLC), контекстнозалежного адаптивного бінарного арифметичного кодування або будь-якого іншого процесу статистичного кодування без втрат. Як відмічено вище, дані, що визначають вектори руху для PU, можуть приймати деяку кількість форм. Кодер 20 відео може реалізовувати різні способи, за допомогою яких вектори руху можуть бути виражені для стиснення даних вектора руху. Кодер 20 відео може реалізовувати те, що іменується "режимом злиття" для вираження векторів руху як індексу, що ідентифікує вектор руху-кандидат як такий, що зберігається в списку векторів руху-кандидатів, який будується визначеним чином. Декодер 30 відео, при реалізації процесу зворотного даному режиму злиття, приймає даний індекс, відновлює список з п'яти векторів руху-кандидатів відповідно до визначеного способу і вибирає один з п'яти векторів руху-кандидатів в списку, що вказується індексом, як MVP для поточного блока декодованих відеоданих. Потім декодер 30 відео створює екземпляр вибраного одного з векторів руху-кандидатів як MVP для пов'язаної PU з тим же розрізненням вибраного одного з векторів руху-кандидатів і який вказує на той же самий опорний кадр, на який вказує вибраний один з векторів руху-кандидатів. При реалізації режиму злиття, кодеру 20 відео може не вимагатися виконання оцінки руху в повному об'ємі, який необхідний для витягання вектора руху, указання горизонтальної і вертикальної складових вектора руху, розрізнення вектора руху, напрямку вектора руху (який означає, чи вказує вектор руху на кадр, який за часом знаходиться перед або після поточного кадру) або індексу опорного 7 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 кадру, тим самим потенційно скорочуючи цикли процесора, які потрібні для визначення вектора руху і стиснення даних вектора руху. Кодер 20 відео також може реалізовувати режим адаптивного прогнозування вектора руху (AMVP), який, аналогічно режиму злиття, включає всебе вираження векторів руху як індексу, що ідентифікує один з векторів руху-кандидатів як MVP. Проте, на протилежність режиму злиття, кодер 20 відео також може вказувати напрямок прогнозування і опорний кадр, ефективно заміняючи ці частини вибраного одного з векторів руху-кандидатів. При реалізації режиму AMVP, кодеру 20 відео може не вимагатися виконання оцінки руху в повному об'ємі, який необхідний для витягання вектора руху, указання горизонтальної і вертикальної складових вектора руху і розрізнення вектора руху, тим самим потенційно скорочуючи цикли процесора, які потрібні для визначення вектора руху і стиснення даних вектора руху. Як правило, стандарти кодування відео, які є попередниками пропонованого на даний час стандарту, HEVC, визначають різні межі для стримування розміру вертикальної і горизонтальної складових вектора руху. Ці межі можуть, як відмічено вище, бути визначені як діапазони, які утримують у визначених межах вертикальне і/або горизонтальне зміщення максимальним і мінімальним значеннями. У HEVC, ці діапазони складової вектора руху (позначувані звичайно як "mvrange") були спочатку запропоновані і використані на основі використання цих діапазонів в попередніх стандартах кодування відео, таких як H.264. Проте, зовсім нещодавно, ці діапазони для горизонтального і/або вертикального зміщення були анульовані в HEVC з тим, щоб забезпечити можливість посилання векторам руху загалом на будь-яку частину опорного кадру. Також в стандарті HEVC вектори руху були визначені як такі, що мають значення складової, кожне з яких складає в довжину 16 бітів, що, як правило, забезпечує достатню кількість бітів для вираження великих значень складової вектора руху, направленого чи не на будь-яку частину опорного кадру. За допомогою забезпечення можливості векторам руху посилатися взагалі на будь-яку частину опорного кадру, кодери відео можуть виконувати вичерпні пошуки частин опорного кадру, що приводить до меншого об'єму залишкових даних (що є ще одним способом сказати про більш ефективне стиснення поточного блока відеоданих). Проте, в деяких обставинах, обмеження діапазону векторів руху може бути вигідним. Наприклад, при виконанні одного з вищенаведених процесів прогнозування вектора руху (наприклад, режиму злиття або режиму AMVP), один або більше з векторів руху-кандидатів можуть бути масштабовані перед тим, як додаються в список кандидатів. Тоді складові даних масштабованих векторів руху можуть перевищити 16-бітову довжину, яка звичайно визначена для кожної складової вектора руху. Коли такі масштабовані вектори руху більше 16-бітової довжини, кодер 20 відео може визначити, що режим злиття недоступний або, іншими словами, що режим злиття не може бути вибраний. Дана аналогічна проблема може виникнути при виконанні режиму AMVP, оскільки один або більше з векторів руху можуть бути масштабовані при виконанні AMVP. Обмеження використання будь-якого з або як режиму злиття, так і режиму AMVP може привести до неефективності стиснення. Відповідно до методик, описуваних в даному винаході, кодер 20 відео може визначати множину векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконати процес прогнозування вектора руху. Тобто, кодер 20 відео може ідентифікувати один або більше сусідніх блоків поточного блока відеоданих (де ці сусідні блоки можуть також іменуватися як "блоки відеоданих-кандидати" або "відеоблоки-кандидати"). Кодер 20 відео може ідентифікувати один або більше (і, звичайно, чотири) просторових сусідніх блоків і один або більше (і, звичайно, один) часових сусідніх блоків. Місцеположення цих просторових і часових сусідніх блоків відносно поточного блока детально показане нижче відносно Фіг. 6. Після ідентифікації цих сусідніх блоків, кодер 20 відео потім може визначати вектори руху, пов'язані з кожним з цих сусідніх блоків, де вектори руху можуть являти собою вектори руху-кандидати для процесу прогнозування вектора руху. Після визначення цих векторів руху, кодер 20 відео може, в деяких випадках, масштабувати один або більше з множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб генерувати один або більше масштабованих векторів руху-кандидатів. Для ілюстрації, при виконанні режиму злиття процесу прогнозування вектора руху, кодер 20 відео може визначати вектор руху, пов'язаний з часовим сусіднім блоком, при цьому даний часовий сусідній блок належить до блока відеоданих, що займає загальне місцеположення в тій же самій позиції опорного кадру, що і у поточного блока відеоданих. Даний опорний кадр може бути пов'язаний з лічильником черговості картинки, який стосується номера, призначеного кожному кадру відеоданих, який ідентифікує черговість, в якій кадр повинен відображатися відносно інших кадрів. Звичайно, кодер 20 відео може масштабувати часовий вектор руху-кандидат на основі різниці лічильника черговості картинки між опорним кадром, в якому розміщується блок 8 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 відеоданих із загальним місцеположенням, і поточним кадром, в якому розміщується поточний блок відеоданих. Як інший приклад, при виконанні режиму вдосконаленого прогнозування вектора руху (AMVP) процесу прогнозування вектора руху, кодер 20 відео може аналогічним чином масштабувати часовий вектор руху-кандидат на основі різниці лічильника черговості картинки між опорним кадром, в якому розміщується блок відеоданих із загальним місцеположенням, і поточним кадром, в якому розміщується поточний блок відеоданих. Проте, як відмічено вище, режим AMVP процесу прогнозування вектора руху дозволяє ефективне заміщення різних аспектів векторів руху-кандидатів. В результаті, в режимі AMVP процесу прогнозування вектора руху, кодер 20 відео може заміняти опорний кадр, пов'язаний з просторовими векторами рухукандидатами, що може привести до масштабування просторових векторів руху-кандидатів на основі різниці в лічильнику черговості картинки між вказаним (або заміщеним) опорним кадром і поточним кадром, в якому розміщується поточний блок відеоданих. Відповідно, кодер 20 відео може масштабувати як часові, так і просторові вектори руху-кандидати при виконанні режиму AMVP процесу прогнозування вектора руху. Потім кодер 20 відео може обмежувати діапазон одного або більше масштабованих векторів руху-кандидатів таким чином, щоб вони знаходилися в точно визначеному діапазоні, перед вибором одного з множини векторів руху-кандидатів як MVP для поточного блока. Іншими словами, кодер 20 відео може модифікувати масштабовані вектори руху-кандидати таким чином, щоб вони знаходилися в рамках точно визначеного діапазону, перед вибором одного з векторів руху-кандидатів як MVP для поточного блока. При модифікуванні одного або більше масштабованих векторів руху-кандидатів перед вибором одного з векторів руху-кандидатів як MVP для поточного блока, кодер 20 відео може модифікувати кожний з масштабованих векторів руху-кандидатів, щоб гарантувати те, що ці масштабовані вектори руху-кандидати утримуються у визначених межах вказаним діапазоном (який також може іменуватися як "межі зміщення"). Точно визначений діапазон, як один приклад, точно визначений як [-32768, 32767] в одиницях чверті піксела. Після вибору одного з векторів руху-кандидатів як MVP для поточного блока (і потенційно модифікування вибраного одного з векторів руху-кандидатів), кодер 20 відео потім може кодувати поточний блок відеоданих, використовуючи MVP. Тобто, кодер 20 відео може використовувати MVP для ідентифікації опорного блока в опорному кадрі і генерувати залишковий блок відеоданих як різницю між поточним блоком і опорним блоком. Кодер 20 відео потім може виконувати згадані вище операції перетворення для перетворення даного залишкового блока відеоданих з просторової області в частотну область, формуючи блок коефіцієнтів перетворення. Кодер 20 відео далі може квантувати коефіцієнти перетворення, здійснювати кодування довжини серій квантованих коефіцієнтів перетворення і ентропійно кодувати (що є іншим способом звернення до статистичного кодування без втрат) одержані після кодування по довжинах серій квантовані коефіцієнти перетворення. Кодер 20 відео може виводити ці закодовані відеодані в бітовий потік з пов'язаними елементами синтаксису. Декодер 30 відео може приймати даний бітовий потік і декодувати бітовий потік відповідно до елементів синтаксису. Декодер 30 відео може загалом виконувати операції, зворотні тим, що описані вище відносно кодера 20 відео. Тобто, декодер 30 відео може ентропійно декодувати кожний блок закодованих відеоданих, виконувати зворотне квантування, щоб застосувати зворотне квантування відносно блока закодованих відеоданих, і застосовувати зворотне перетворення для перетворення одержаного після зворотного квантування блока закодованих відеоданих з частотної області в просторову область. Даний перетворений блок закодованих відеоданих може являти собою відновлену версію залишкових даних. Декодер 30 відео може визначати з елементів синтаксису, пов'язаних з поточним блоком закодованих відеоданих, які в цьому випадку можуть належати до відновленої версії залишкових даних, що вектор руху для даного поточного блока повинен бути одержаний за допомогою процесу прогнозування вектора руху. Передбачаючи, що декодер 30 відео визначає, що вектор руху для даного поточного блока повинен бути одержаний за допомогою процесу прогнозування вектора руху, декодер 30 відео може потім загалом виконувати ті ж операції, як ті, що описані вище відносно кодера 20 відео, для одержання предиктора вектора руху для поточного блока закодованих даних. Таким чином, декодер 30 відео може визначати множину векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконувати процес прогнозування вектора руху. Тобто, декодер 30 відео може ідентифікувати один або більше сусідніх блоків поточного блока відеоданих. Декодер 30 відео може ідентифікувати один або більше просторових сусідніх блоків і один або більше часових сусідніх блоків. Знову, місцеположення цих просторових і часових сусідніх блоків 9 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 відносно поточного блока детально показане нижче відносно Фіг. 6. Після ідентифікації цих сусідніх блоків, декодер 30 відео потім може визначати вектори руху, пов'язані з кожним з цих сусідніх блоків, де вектори руху можуть являти собою вектори руху-кандидати для процесу прогнозування вектора руху. Після визначення цих векторів руху, декодер 30 відео, у випадках, описаних вище відносно кодера 20 відео, масштабує один або більше з множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб згенерувати один або більше масштабованих векторів руху-кандидатів. Декодер 30 відео потім може обмежувати діапазон одного або більше з масштабованих векторів руху-кандидатів таким чином, щоб вони знаходилися в рамках точно визначеного діапазону, перед вибором одного з множини векторів руху-кандидатів як MVP для поточного блока. Іншими словами, декодер 30 відео може модифікувати масштабовані вектори руху-кандидати таким чином, щоб вони знаходилися в рамках точно визначеного діапазону, перед вибором одного з векторів руху-кандидатів як MVP для поточного блока. При модифікуванні одного або більше з масштабованих векторів руху-кандидатів перед вибором одного з векторів руху-кандидатів як MVP для поточного блока, декодер 30 відео може модифікувати кожний з масштабованих векторів руху-кандидатів, щоб гарантувати те, що ці масштабовані вектори руху-кандидати утримуються у визначених межах вказаним діапазоном (який також може іменуватися "межами зміщення"). Таким чином, декодер 30 відео може модифікувати масштабовані вектори руху-кандидати, щоб вони знаходилися в рамках точно визначеного діапазону. Декодер 30 відео може визначати, який з векторів руху-кандидатів вибирати, на основі одного або більше елементів синтаксису (такого як елемент синтаксису індексу предиктора вектора руху ("mvp_idx")), пов'язаних з поточним блоком відеоданих (які були раніше вказані кодером 20 відео в бітовому потоці). Декодер 30 відео, використовуючи даний елемент mvp_idx індексу, наприклад, може вибирати один з векторів руху-кандидатів. Потім декодер 30 відео може відновлювати поточний блок відеоданих, використовуючи вектор руху-кандидат для ідентифікації опорного блока відеоданих, який потім декодер 30 відео складає із залишковими даними для відновлення поточного блока відеоданих. Потім декодер 30 відео зберігає відновлений блок відеоданих. Таким чином, методики, описані в даному винаході, можуть загалом надавати кодеру відео (будь-якому з або як, наприклад, кодеру 20 відео, так і декодеру 30 відео) можливість модифікування тих векторів руху-кандидатів, які були масштабовані. Тобто, методики можуть надавати таким кодерам відео можливість модифікування тільки тих векторів руху-кандидатів процесу прогнозування вектора руху, які повинні бути масштабовані, не модифікуючи або ж навіть надалі не розглядаючи ті з векторів руху-кандидатів, які не були масштабовані. У зв'язку з цим, методики можуть забезпечувати компроміс між модифікуванням всіх з векторів рухукандидатів і модифікуванням жодного з векторів руху-кандидатів, таким чином, що тільки ті вектора руху-кандидати, які були масштабовані, розглядаються для модифікування. Методики для утримання у визначених межах зміщення складової вектора руху, описані відносно прикладів даного винаходу, можуть бути застосовані до кодування відео для підтримання будь-яких з різноманіття мультимедійних додатків, таких як: ефірне телевізійне мовлення, передачі кабельного телебачення, передачі супутникового телебачення, передачі потокового відео, наприклад через Інтернет, кодування цифрового відео для зберігання на носії зберігання даних, декодування цифрового відео, що зберігається на носії зберігання даних, або інших додатків. У деяких прикладах, система 10 може бути виконана для підтримання односторонньої або двосторонньої передачі відео для додатків, таких як потокова передача відео, відтворення відео, мовлення відео і/або відеотелефонія. Незважаючи на те, що не показано на Фіг. 1, в деяких аспектах, кодер 20 відео і декодер 30 відео, кожний, можуть бути об'єднані з аудіокодером і аудіодекодером і можуть включати в себе відповідні модулі MUX-DEMUX, або інше апаратне і програмне забезпечення, для обробки кодування як аудіо, так і відео в загальному потоці даних або окремих потоках даних. Якщо застосовно, в деяких прикладах, модулі MUX-DEMUX можуть відповідати протоколу мультиплексора ITU H.223 або іншим протоколам, таким як протокол користувацьких дейтаграм (UDP). Кодер 20 відео і декодер 30 відео, кожний, можуть бути реалізовані як будь-які з різноманіття придатних схем кодера, таких як один або більше мікропроцесорів, цифрові сигнальні процесори (DSP), спеціалізовані інтегральні мікросхеми (ASIC), програмовані користувачем вентильні матриці (FPGA), дискретна логіка, програмне забезпечення, апаратне забезпечення, вбудоване програмне забезпечення або будь-яке їх поєднання. При частковій реалізації методик в програмному забезпеченні, пристрій може зберігати інструкції для 10 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 програмного забезпечення на придатному постійному зчитуваному комп'ютером носії даних і виконувати інструкції в апаратному забезпеченні за допомогою одного або більше процесорів для виконання методик даного винаходу. Кожний з кодера 20 відео і декодера 30 відео може бути включений в один або більше кодерів або декодерів, будь-який з яких може бути інтегрований як частина об'єднаного кодера/декодера (CODEC) у відповідний пристрій. Фіг. 2 є структурною схемою, що ілюструє приклад кодера 20 відео, який може реалізовувати методики для точного визначення предикторів вектора руху. Кодер 20 відео може виконувати інтра- і інтеркодування блоків у відеокадрах, включаючи макроблоки або розділи або підрозділи макроблоків. Інтракодування основується на просторовому прогнозуванні для скорочення або видалення просторової надмірності у відео всередині заданого відеокадру. Інтеркодування основується на часовому прогнозуванні для скорочення або видалення часової надмірності у відео в межах суміжних кадрів відеопослідовності. Інтрарежим (I-режим) може належати до будь-якого з декількох основаних на просторі режимів стиснення, а інтеррежими, такі як однонаправлене прогнозування (Р-режим) або двонаправлене прогнозування (В-режим), можуть належати до будь-якого з декількох основаних на часі режимів стиснення. Незважаючи на те, що на Фіг. 2 зображені компоненти для кодування в інтеррежимі, потрібно розуміти, що кодер 20 відео може додатково включати в себе компоненти для кодування в інтрарежимі. Проте, такі компоненти не проілюстровані для стислості і ясності. Як показано на Фіг. 2, кодер 20 відео приймає поточний відеоблок у відеокадрі, який повинен бути закодований. У прикладі на Фіг. 2, кодер 20 відео включає в себе модуль 44 компенсації руху, модуль 42 оцінки руху, пам'ять 64, суматор 50, модуль 52 перетворення, модуль 54 квантування і модуль 56 ентропійного кодування. Для відновлення відеоблока, кодер 20 відео також включає в себе модуль 58 зворотного квантування, модуль 60 зворотного перетворення і суматор 62. Фільтр видалення блоковості (не показаний на Фіг. 2) також може бути включений для фільтрації границь блока з метою видалення артефактів блоковості з відновленого відео. При бажанні, фільтр видалення блоковості, як правило, буде фільтрувати вихід суматора 62. Незважаючи на те, що описаний як такий, що включає в себе пам'ять 64, яка, як правило, належить до запам'ятовуючого пристрою з довільною вибіркою (RAM), динамічного RAM (DRAM), статичного RAM (SRAM), флеш-пам'яті або іншого постійного або непостійного основаного на мікросхемі запам'ятовуючого носія інформації, може використовуватися будьякий тип постійного зчитуваного комп'ютером носія даних, включаючи накопичувачі на жорстких дисках, накопичувачі на оптичних дисках, дискові накопичувачі і подібне. Під час процесу кодування, кодер 20 відео приймає відеокадр або слайс (вирізка), який повинен бути закодований. Кадр або слайс може бути розділений на декілька відеоблоків. Модуль 42 оцінки руху і модуль 44 компенсації руху виконують кодування з інтерпрогнозуванням прийнятого відеоблока відносно одного або більше блоків в одному або більше опорних кадрах для забезпечення часового стиснення. Модуль 46 інтрапрогнозування також може виконувати кодування з інтрапрогнозуванням прийнятого відеоблока відносно одного або більше сусідніх блоків в тому ж самому кадрі або слайсі, що і блок, який повинен бути закодований, для забезпечення просторового стиснення. Як додатково показано в прикладі на Фіг. 2, кодер 20 відео включає в себе модуль 40 вибору режиму. Модуль 40 вибору режиму може вибирати один з режимів кодування, інтра або інтер, наприклад на основі результатів помилки, і надавати результуючий закодований з інтрапрогнозуванням або інтерпрогнозуванням блок суматору 50 для генерування даних залишкового блока і суматору 62 для відновлення закодованого блока для використання як опорного кадру. Модуль 42 оцінки руху і модуль 44 компенсації руху можуть бути високоінтегрованими, однак ілюструються по окремості для концептуальних цілей. Оцінка руху є процесом генерування векторів руху, які оцінюють рух для відеоблоків. Вектор руху, наприклад, може вказувати зміщення прогнозуючого блока всередині прогнозуючого опорного кадру (або іншої закодованої одиниці) відносно поточного кодованого блока всередині поточного кадру (або іншої закодованої одиниці). Прогнозуючий блок є блоком, який виявлений як близько співпадаючий з блоком, який повинен бути закодований, в одиницях пікселної різниці, яка може бути визначена за допомогою суми абсолютних різниць (SAD), суми квадратних різниць (SSD) або інших метрик різниці. Вектор руху також може вказувати зміщення розділу макроблока. Компенсація руху може включати в себе відлік або генерування прогнозуючого блока на основі вектора руху, який визначений за допомогою оцінки руху. Знову, модуль 42 оцінки руху і модуль 44 компенсації руху можуть бути функціонально об'єднані, в деяких прикладах. Модуль 42 оцінки руху обчислює вектор руху для відеоблока, кодованого з інтерпрогнозуванням кадру, за допомогою порівняння відеоблока з відеоблоками опорного 11 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 кадру в пам'яті 64. Модуль 44 компенсації руху також може інтерполювати субцілочислові піксели опорного кадру, наприклад I-кадру або Р-кадру. Стандарт HEVC, що розвивається (і стандарт ITU H.264), зберігає опорні кадри за допомогою однієї або більше структур даних у вигляді списків, які загалом іменуються як "списки". Внаслідок цього, дані, що зберігаються в пам'яті 64, також можуть бути списками, що розглядаються. Модуль 42 оцінки руху порівнює блоки одного або більше опорних кадрів (або списків) з пам'яті 64 з блоком, який повинен бути закодований, поточного кадру, наприклад Р-кадру або В-кадру. Коли опорні кадри в пам'яті 64 включають в себе значення субцілочислових пікселів, то вектор руху, обчислюваний модулем 42 оцінки руху, може стосуватися субцілочислового місцеположення піксела опорного кадру. Модуль 42 оцінки руху відправляє обчислений вектор руху модулю 56 ентропійного кодування і модулю 44 компенсації руху. Блок опорного кадру (який може містити CU), ідентифікований вектором руху, може іменуватися прогнозуючим блоком. Модуль 44 компенсації руху обчислює значення помилки для прогнозуючого блока опорного кадру. Модуль 44 компенсації руху може обчислювати дані прогнозування на основі прогнозуючого блока. Кодер 20 відео формує залишковий відеоблок за допомогою віднімання даних прогнозування від модуля 44 компенсації руху з вихідного кодованого відеоблока. Суматор 50 являє собою компонент або компоненти, які виконують дану операцію віднімання. Модуль 52 перетворення застосовує перетворення, таке як дискретне косинусне перетворення (DCT) або концептуально аналогічне перетворення, до залишкового блока, створюючи відеоблок, що містить залишкові значення коефіцієнта перетворення. Модуль 52 перетворення може виконувати інші перетворення, такі як ті, що визначені стандартом H.264, які концептуально аналогічні DCT. Також можуть бути використані вейвлет-перетворення, цілочислові перетворення, смугові перетворення або інші типи перетворень. У будь-якому випадку, модуль 52 перетворення застосовує перетворення до залишкового блока, створюючи блок залишкових коефіцієнтів перетворення. Перетворення може конвертувати залишкову інформацію з області значення піксела в область перетворення, таку як частотна область. Модуль 54 квантування квантує залишкові коефіцієнти перетворення, щоб додатково скоротити швидкість передачі бітів. Процес квантування може скорочувати бітову глибину, пов'язану з деякими або з всіма коефіцієнтами. Міра квантування може бути модифікована за допомогою регулювання параметра квантування. Услід за квантуванням, модуль 56 ентропійного кодування ентропійно кодує квантовані коефіцієнти перетворення. Наприклад, модуль 56 ентропійного кодування може виконувати контекстно-залежне адаптивне кодування із змінною довжиною кодового слова (CVLC), контекстно-залежне адаптивне бінарне арифметичне кодування (CABAC) або іншу методику ентропійного кодування. Услід за ентропійним кодуванням за допомогою модуля 56 ентропійного кодування, закодоване відео може бути передане іншому пристрою або заархівоване для передачі або витягання пізніше. У випадку контекстно-залежного адаптивного бінарного арифметичного кодування, контекст може бути оснований на сусідніх макроблоках. У деяких випадках, модуль 56 ентропійного кодування або інший модуль кодера 20 відео може бути виконаний з можливістю виконання інших функцій кодування, на доповнення до ентропійного кодування. Наприклад, модуль 56 ентропійного кодування може бути виконаний з можливістю визначення значення CBP для макроблоків і розділів. Також, в деяких випадках, модуль 56 ентропійного кодування може виконувати кодування по довжинах серій коефіцієнтів в макроблоці або його розділі. Зокрема, модуль 56 ентропійного кодування може застосовувати зигзагоподібне сканування або інший шаблон сканування для сканування коефіцієнтів перетворення в макроблоці або розділі і кодувати ряди нулів для подальшого стиснення. Модуль 56 ентропійного кодування також може створювати інформацію заголовка з відповідними елементами синтаксису для передачі в бітовому потоці закодованого відео. Модуль 58 зворотного квантування і модуль 60 зворотного перетворення застосовують зворотне квантування і зворотне перетворення, відповідно, для відновлення залишкового блока в області пікселів, наприклад, для подальшого використання як опорного блока. Модуль 44 компенсації руху може обчислювати опорний блок за допомогою складання залишкового блока з прогнозуючим блоком одного з кадрів сховища опорних кадрів в пам'яті 64. Модуль 44 компенсації руху також може застосовувати один або більше фільтрів інтерполяції для відновлення залишкового блока для обчислення субцілочислових значень піксела для використання при оцінці руху. Суматор 62 складає відновлений залишковий блок з одержаним після компенсації руху блоком прогнозування, створеним модулем 44 компенсації руху, для створення відновленого відеоблока для збереження в сховищі опорних кадрів в пам'яті 64. Відновлений відеоблок може бути використаний модулем 42 оцінки руху і модулем 44 компенсації руху як опорний блок для інтеркодування блока в подальшому відеокадрі. 12 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 Як відмічено вище, модуль 42 оцінки руху може, в деяких випадках, не обчислювати вектор руху, а замість цього може визначати список векторів руху-кандидатів (наприклад, так званий "список кандидатів"), чотири вектори в якому є просторовими векторами руху-кандидатами, а один вектор в якому є часовим вектором руху-кандидатом. Як правило, модуль 42 оцінки руху утримується від обчислення вектора руху для того, щоб скоротити складність обчислень оцінки руху і тим самим підвищити швидкість, з якою можуть кодуватися відеодані, при цьому також скорочуючи енергоспоживання. Відповідно до методик, описуваних в даному винаході, модуль 42 оцінки руху може визначати множину векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконати процес прогнозування вектора руху, і масштабувати один або більше з множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб згенерувати один або більше масштабованих векторів руху-кандидатів. Як відмічено вище, даний процес масштабування може бути оснований на різниці між лічильниками черговості картинки для опорного і поточного кадру. Зокрема, модуль 42 оцінки руху може визначати так званий масштабний коефіцієнт по відстані (який може бути представлений в стандарті HEVC як змінна "DistScaleFactor"), коли предиктор вектора руху одержується з вектора руху-кандидата, що вказує на іншу опорну картинку або кадр. У даному процесі масштабування вектора руху, модуль 42 оцінки руху може обчислювати DistScaleFactor, який може бути визначений наступним рівнянням (1): DistScaleFactor=(POCcurr-POCref)/(POCmvp_blk-POCmvp_blk_ref)=tb/td. (1) У рівнянні (1), POC стосується лічильника черговості картинки, де POCcurr означає лічильник черговості картинки для поточної картинки або кадру, POCref стосується лічильника черговості картинки опорного кадру або картинки, POCmvp_blk означає лічильник черговості картинки кадру або картинки, в якій розміщується потенційний або сусідній блок з вибраним одним з векторів руху-кандидатів (або, іншими словами, MVP), і POCmvp_blk_ref означає лічильник черговості картинки для картинки або кадру, в якому розміщується опорний блок, на який вказує MVP. Змінна "td" в рівнянні (1) внаслідок цього являє собою різницю лічильників черговості картинки (або, іншими словами, відстань) між блоком MVP_BLK і його опорним блоком, тоді як змінна "tb" в рівнянні (1) являє собою відстань POC між поточним блоком і його опорним блоком. Модуль 42 оцінки руху може додатково обчислювати коефіцієнт масштабування, позначений як "tx", відповідно до наступного рівняння (2): tx=(16384+Abs(td/2))/td. (2) Модуль 42 оцінки руху тоді може обчислювати DistScaleFactor згідно з наступним рівнянням (3): DistScaleFactor=Clip3(-4096, 4095, (tb*tx+32)>>6). (3) Внаслідок цього DistScaleFactor може бути обчислений як функція від td і tx, але зрізана таким чином, щоб він знаходився в точно визначеному діапазоні від -4096 до 4095. Використовуючи даний DistScaleFactor, модуль 42 оцінки руху може масштабувати один або більше векторів руху-кандидатів згідно з наступним рівнянням (4): caledMV=sign(DistScaleFactorMV)((abs(DistScaleFactorMV)+127))>>8. (4) У рівнянні (4), ScaledMV означає масштабований вектор руху-кандидат, "sign" стосується функції, яка повертає знаки, "abs" стосується функції, яка обчислює абсолютне значення значення, і ">>" означає побітовий зсув вправо. Як відмічено вище, ScaledMV, оснований на відстанях POC, може перевищувати точно визначений діапазон (який може іменуватися "діапазоном вектора руху" або, як альтернатива, "діапазоном"), який може бути визначений відповідно до профілю або рівня кодування відео. В результаті, модуль 42 оцінки руху може виконувати методики, описувані в даному винаході, для модифікування масштабованих векторів руху-кандидатів, щоб вони знаходилися в рамках точно визначеного діапазону. Більше того, модуль 42 оцінки руху може модифікувати масштабовані вектори руху-кандидати без модифікації будь-яких інших векторів руху-кандидатів, які не були масштабовані. Модуль 42 оцінки руху може модифікувати масштабовані вектори руху-кандидати декількома способами. Наприклад, модуль 42 оцінки руху може зрізати вертикальну складову масштабованого вектора руху-кандидата, щоб вона залишалася в межах діапазону вектора руху. Іншими словами, модуль 42 оцінки руху може ефективно обмежувати вертикальне значення вектора руху максимальним/мінімальним діапазоном вертикальної складової вектора руху. Як інший приклад, модуль 42 оцінки руху може масштабувати масштабований вектор рухукандидат, щоб він залишався в межах діапазону вектора руху. Для ілюстрації, застосовно до заданого масштабованого вектора руху з горизонтальною складовою (mv_x) і вертикальною 13 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 складовою (mv_y), яка перевищує точно визначений діапазон вертикальних меж вектора руху, модуль 42 оцінки руху може обмежувати у-складову до mv_y', яка відповідає вертикальній межі MV. Модуль 42 оцінки руху також може масштабувати горизонтальну складову, mv_x згідно з наступним рівнянням (5): mv_x'=mv_x*mv_y'/mv_y. (5) У рівнянні (5), mv_x' означає масштабовану горизонтальну складову масштабованого вектора руху-кандидата. Модуль 42 оцінки руху може виконувати дану операцію масштабування, виражену як рівняння (5), з різними рівнями точності, використовуючи апроксимації операції ділення для створення модифікованого масштабованого вектора руху з потенційно як модифікованою горизонтальною складовою, mv_x', так і модифікованою вертикальною складовою, mv_y'. Незважаючи на те, що методики описані вище відносно декількох різних способів, за допомогою яких можна модифікувати один або більше з масштабованих векторів руху, методики можуть бути виконані в будь-якій кількості способів для модифікування векторів рухукандидатів при виконанні процесу прогнозування вектора руху. Наприклад, модуль 42 оцінки руху може зрізати масштабовані вектори руху-кандидати перед вибором одного з множини векторів руху-кандидатів як предиктора вектора руху для поточного блока відеоданих. Як ще один інший приклад, модуль 42 оцінки руху може зрізати вертикальну складову масштабованих векторів руху-кандидатів, щоб вона знаходилася в рамках вертикального точно визначеного діапазону, і зрізати горизонтальну складову масштабованих векторів рухукандидатів, щоб вона знаходилася в рамках горизонтального точно визначеного діапазону. У цих випадках, операції зрізання можуть відповідати наступному рівнянню (6): mvLXA=Clip3(-32768, 32767, Sign2(DistScaleFactor*mvLXA)* ((Abs(DistScaleFactor*mvLXA)+127)>>8)). (6) У рівнянні (6), рівняння зрізання включає в себе рівняння масштабування, показане вище як рівняння (4), при цьому зрізання однієї з або як горизонтальної, так і вертикальної складових масштабованого вектора руху виконується до точно визначеного діапазону від -32768 до 32767. Масштабований вектор руху позначений в рівнянні (6) як "mvLXA". Іншими словами, точно визначений діапазон може бути вказаний як [-32768, 32767] в одиницях чверті піксела, при цьому даний точно визначений діапазон може, в деяких випадках, бути фіксованим і жорстко заданим в одному або більше з декодера відео і кодера відео. У деяких випадках, точно визначений діапазон може вказувати, як відмічено вище, межу зміщення вектора руху, яка включає в себе межу вертикального зміщення, при цьому модуль 42 оцінки руху може зрізати вертикальну складову масштабованих векторів руху-кандидатів таким чином, що вертикальна складова масштабованих векторів руху-кандидатів знаходиться в рамках межі вертикального зміщення. У деяких випадках, замість зрізання як горизонтальної, так і вертикальної складових, модуль 42 оцінки руху може зрізати тільки горизонтальну складову масштабованого вектора рухукандидата. Знову, точно визначений діапазон може вказувати межу зміщення вектора руху, яка включає в себе межу горизонтального зміщення, і модуль 42 оцінки руху може зрізати горизонтальну складову масштабованих векторів руху-кандидатів таким чином, що горизонтальна складова масштабованих векторів руху-кандидатів знаходиться в рамках межі горизонтального зміщення. Як відмічено вище, модуль 42 оцінки руху може зрізати одну з горизонтальної або вертикальної складових і потім масштабувати іншу, не зрізану складову (яка може бути вертикальною складовою і не повинна обмежуватися вищенаведеним прикладом), так що масштабовані вектори руху-кандидати обмежуються однією або більше межами зміщення вектора руху. Відповідно, методики не повинні обмежуватися будь-яким з описаного вище зразкового модифікування. Для вибору одного з векторів руху-кандидатів як предиктора вектора руху, модуль 44 компенсації руху потім може ідентифікувати блок опорного кадру (який, знову, може іменуватися як блок прогнозування) для кожного з векторів руху-кандидатів, включених в список. Модуль 44 компенсації руху потім може обчислювати дані прогнозування на основі прогнозуючого блока, який визначений для кожного з векторів руху-кандидатів. Кодер 20 відео потім може визначати залишкові дані для кожних даних прогнозування, обчислених для відповідного одного з векторів руху-кандидатів, перетворювати залишкові дані, квантувати перетворені залишкові дані і потім ентропійно кодувати квантовані залишкові дані описаним вище способом. Потім кодер 20 відео може виконувати зворотні операції для декодування цих ентропійно закодованих залишкових даних, згенерованих відносно кожного з векторів рухукандидатів, що залишилися після зрізання, для відтворення опорних даних у вигляді відновлених відеоблоків. Модуль 40 вибору режиму може аналізувати кожний з відновлених 14 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 відеоблоків, згенерованих відносно кожного з векторів руху-кандидатів, для вибору одного з векторів руху-кандидатів. Модуль 40 вибору режиму може вибирати один з векторів рухукандидатів, який забезпечує найкраще відношення швидкості до спотворення за допомогою процесу звичайно іменованого як "оптимізація швидкості до спотворення", який, як правило, вказується абревіатурою "RDO". RDO звичайно включає в себе порівняння відновленого кадру, слайсу або блока, стисненого для досягнення деякої швидкості (яка звичайно іменується частотою проходження бітів, з яких стиснені відеодані, які включають в себе стиснений кадр, слайс або блок, можуть бути відправлені), з вихідним кадром, слайсом або блоком, і визначення об'єму спотворень, які присутні між вихідним кадром, слайсом або блоком і відновленим кадром, слайсом або блоком при заданій швидкості. Модуль 40 вибору режиму може кодувати одні і ті ж відеодані за допомогою декількох різних метрик, які досягають або намагаються досягнути заданої швидкості, виконуючи процес оптимізації спотворення відносно цих різних метрик. У цьому випадку, модуль 40 вибору режиму може порівнювати вихідні дані RDO кожного відновленого відеоблока і вибирати один, який забезпечує найменше спотворення при цільовій швидкості. Потім модуль 40 вибору режиму може вказувати даний вибір модулю 42 оцінки руху, який переходить до взаємодії з модулем 56 ентропійного кодування для інформування модуля 56 ентропійного кодування про вибір. Як правило, модуль 42 оцінки руху взаємодіє з модулем 56 ентропійного кодування для указання того, що було виконане прогнозування вектора руху, нарівні з індексом, що ідентифікує вибраний вектор руху-кандидат. Як відмічено вище, модуль 42 оцінки руху може впорядковувати вектори руху-кандидати визначеним чином, як, наприклад, від найбільшої амплітуди до найменшої амплітуди або від найменшої амплітуди до найбільшої амплітуди, або будь-яким іншим визначеним чином. Як альтернатива, модуль 42 оцінки руху також може сигналізувати модулю 56 ентропійного кодування спосіб, за допомогою якого вектори руху-кандидати були впорядковані в даному потенційному списку. Модуль 56 ентропійного кодування потім може кодувати даний індекс нарівні з будь-якою іншою інформацією, яка може бути необхідна для указання того, що для кодування даних руху був виконаний процес прогнозування вектора руху. Модуль 56 ентропійного кодування може виводити закодований індекс як елемент синтаксису (який може бути позначений як "mvp_idx") в бітовий потік, який може зберігатися або передаватися чином, який описаний вище відносно прикладу на Фіг. 1. Таким чином, кодер 20 відео може вибирати один з множини векторів рухукандидатів як предиктор вектор руху для поточного блока відеоданих і кодувати поточний блок відеоданих на основі предиктора вектора руху. У деяких випадках, модуль 56 ентропійного кодування виконує вид ентропійного кодування, іменований контекстно-залежним адаптивним бінарним арифметичним кодуванням (CABAC). При виконанні CABAC, модуль 56 ентропійного кодування може вибирати один з множини так званих контекстів (які є різними кодовими таблицями, точно визначеними для різного контексту так, щоб більш ефективно стискати відеодані, пов'язані з відповідним контекстом) і кодувати стиснені залишкові дані відповідно до кодової таблиці, яка визначена для вибраного контексту. Модуль 56 ентропійного кодування може вибирати один з контекстів на основі інформації контексту, яка може включати в себе опорний індекс, який визначений при виконанні прогнозування вектора руху, кількість унікальних векторів руху-кандидатів і напрямок прогнозування, який визначений при виконанні прогнозування вектора руху. Фіг. 3 є структурною схемою, що ілюструє приклад декодера 30 відео, який декодує закодовану відеопослідовність. У прикладі на Фіг. 3, декодер 30 відео включає в себе модуль 70 ентропійного декодування, модуль 72 компенсації руху, модуль 74 інтрапрогнозування, модуль 76 зворотного квантування, модуль 78 зворотного перетворення, пам'ять 82 і суматор 80. Декодер 30 відео може, в деяких прикладах, виконувати прохід декодування, загалом зворотний проходу кодування, описаному відносно кодера відео, такого як кодер 20 відео, показаний в прикладах на Фіг. 1 і 2. Незважаючи на те, що прохід загалом є зворотним, декодер 30 відео може, в деяких випадках, виконувати методики, аналогічні тим, що виконуються кодером 20 відео. Іншими словами, декодер 30 відео може виконувати по суті процеси, аналогічні виконуваним кодером 20 відео. Більше того, як описано вище, кодер 20 відео може виконувати декодування відео в процесі виконання кодування відео. Для ілюстрації, модуль 58 зворотного квантування, модуль 60 зворотного перетворення і суматор 62 кодера 20 відео можуть виконувати операції, по суті аналогічні операціям, виконуваним модулем 76 зворотного квантування, модулем 78 зворотного перетворення і суматором 80 декодера 30 відео. Як показано в прикладі на Фіг. 3, модуль 70 ентропійного декодування приймає закодований бітовий потік, який, як з метою ілюстрації передбачається, включає в себе унарний або зрізаний унарний закодований індекс, що ідентифікує вибраний вектор руху-кандидат (де, знову, ці 15 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 вектори руху-кандидати можуть іменуватися векторами руху-кандидатами або предикторами вектора руху-кандидатами ("MVP-кандидатами")). Модуль 70 ентропійного декодування може, при виконанні процесу, загалом зворотного процесу, виконуваному модулем 56 ентропійного кодування кодера 20 відео, приймати елемент синтаксису або інші дані кодування для поточної PU, що вказують на те, що для поточної PU для визначення вектора руху виконувався процес прогнозування вектора руху. У відповідь на даний елемент синтаксису або інші дані кодування, модуль 70 ентропійного декодування проводить синтаксичний аналіз індексу (mvp_idx) предиктора вектора руху в бітовому потоці, надаючи даний індекс предиктора вектора руху модулю 72 компенсації руху. Модуль 70 ентропійного декодування також декодує закодований блок відеоданих, з яким пов'язаний даний індекс предиктора вектора руху, надаючи даний закодований блок відеоданих модулю 76 зворотного квантування. Модуль 72 компенсації руху витягує просторові вектори руху-кандидати для PU, суміжних з поточною PU, і часовий вектор руху-кандидат для спільно розташованої PU в опорному кадрі. Модуль 70 ентропійного декодування також може надавати модулю 72 компенсації руху опорний кадр, ідентифікований для поточної PU (як правило, як інший елемент синтаксису в бітовому потоці). Як альтернатива, модуль 72 компенсації руху може бути виконаний з можливістю реалізації або AMVP, або режиму злиття, витягання часового вектора рухукандидата з опорного кадру, ідентифікованого встановленим чином (наприклад, як один, два або будь-яке інше число назад або уперед від поточного кадру, в якому розташовується поточна PU). Потім модуль 72 компенсації руху може створювати список кандидатів, який включає в себе чотири просторових вектори руху-кандидати і часовий вектор руху-кандидат. При генеруванні даного списку кандидатів, модуль 72 компенсації руху може масштабувати один або більше з множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб згенерувати один або більше масштабованих векторів руху-кандидатів. Як відмічено вище, даний процес масштабування може бути оснований на різниці між лічильниками черговості картинки для опорного і поточного кадру. Більше того, масштабований вектор руху, оснований на відстанях POC, може перевищувати точно визначений діапазон (який може іменуватися "діапазоном вектора руху"), який може бути визначений відповідно до профілю або рівня кодування відео. В результаті, модуль 72 компенсації руху може виконувати методики, описані в даному винаході для модифікування масштабованих векторів руху-кандидатів, щоб вони знаходилися в рамках точно визначеного діапазону. Більше того, модуль 72 компенсації руху може модифікувати масштабовані вектори руху-кандидати без модифікації будь-яких інших векторів руху-кандидатів, які не були масштабовані. Модуль 72 компенсації руху може модифікувати масштабовані вектори руху-кандидати будь-якою кількістю способів, описаних вище відносно модуля 42 оцінки руху кодера 20 відео, показаного в прикладах на Фіг. 1, 2. Наприклад, модуль 72 компенсації руху може зрізати вертикальну складову масштабованого вектора руху-кандидата, щоб він залишався в межах діапазону вектора руху. Іншими словами, модуль 72 компенсації руху може ефективно обмежувати вертикальне значення вектора руху максимальним/мінімальним діапазоном вертикальної складової вектора руху. Модуль 72 компенсації руху також може зрізати горизонтальну складову вектора руху-кандидата, щоб він залишався в межах діапазону вектора руху. Іншими словами, модуль 72 компенсації руху може ефективно обмежувати горизонтальне значення вектора руху максимальним/мінімальним діапазоном горизонтальної складової вектора руху. Як інший приклад, модуль 72 компенсації руху може масштабувати масштабований вектор руху-кандидат, щоб він залишався в межах діапазону вектора руху. Для ілюстрації, застосовно до заданого масштабованого вектора руху з горизонтальною складовою (mv_x) і вертикальною складовою (mv_y), яка перевищує точно визначений діапазон вертикальних меж вектора руху, модуль 72 компенсації руху може обмежувати у-складові до mv_y', яка відповідає вертикальній межі MV. У будь-якому випадку, після формування даного списку кандидатів, модуль 72 компенсації руху потім вибирає один з векторів руху-кандидатів зі списку кандидатів, який ідентифікується індексом предиктора вектора руху. Застосовно до закодованого з інтерпрогнозуванням блока, модуль 72 компенсації руху може потім генерувати дані інтерпрогнозування на основі ідентифікованого вектора руху. Модуль 72 компенсації руху може використовувати даний вектор руху для ідентифікації блока прогнозування в опорних кадрах, що зберігаються в пам'яті 82. Застосовно до закодованих з інтрапрогнозуванням блоків, модуль 74 інтрапрогнозування може використовувати режими інтрапрогнозування, прийняті в бітовому потоці, для формування блока прогнозування з просторово суміжних блоків. Модуль 76 зворотного квантування 16 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 зворотно квантує, тобто застосовує зворотне квантування до квантованих коефіцієнтів блока, наданих в бітовому потоці і декодованих за допомогою модуля 70 ентропійного декодування. Процес зворотного квантування може включати в себе звичайний процес, наприклад, як визначено стандартом декодування H.264. Процес зворотного квантування також може включати в себе використання параметра QPY квантування, обчисленого суматором 50 для кожного макроблока, щоб визначити міру квантування і, аналогічним чином, міру зворотного квантування, яке повинно бути застосоване. Модуль 60 зворотного перетворення застосовує зворотне перетворення, наприклад зворотне DCT, зворотне цілочислове перетворення, або концептуально аналогічний процес зворотного перетворення, до коефіцієнтів перетворення для того, щоб створити залишкові блоки в пікселній області. Модуль 72 компенсації руху створює блоки після компенсації руху, можливо виконуючи інтерполяцію на основі фільтрів інтерполяції. Ідентифікатори для фільтрів інтерполяції, які повинні бути використані для оцінки руху з субпікселною точністю, можуть бути включені в елементи синтаксису. Модуль 72 компенсації руху може використовувати фільтри інтерполяції, як ті, що використовуються кодером 20 відео під час кодування відеоблока, для обчислення інтерпольованих значень для субцілочислових пікселів опорного блока. Модуль 72 компенсації руху може визначати фільтри інтерполяції, використані кодером 20 відео, відповідно до прийнятої інформації синтаксису, і використовувати фільтри інтерполяції для створення прогнозуючих блоків. Модуль 72 компенсації руху використовує деяку інформацію синтаксису для визначення розмірів CU, використаних для кодування кадру(ів) закодованої відеопослідовності, інформацію розділу, яка описує те, яким чином кожна CU кадру закодованої відеопослідовності розділена, режими, що вказують на те, яким чином закодована кожна CU, один або більше опорних кадрів (або списки) для кожної закодованої з інтерпрогнозуванням CU і іншу інформацію для декодування закодованої відеопослідовності. Суматор 80 підсумовує залишкові блоки з відповідними блоками прогнозування, згенерованими модулем 72 компенсації руху або модулем інтрапрогнозування, для формування декодованих блоків. При необхідності, також може бути застосований фільтр видалення блоковості для фільтрації декодованих блоків з метою видалення артефактів блоковості. Декодовані відеоблоки потім зберігаються в сховищі опорного кадру в пам'яті 82, що може іменуватися буфером декодованої картинки в стандарті HEVC, яке надає опорні блоки для подальшої компенсації руху і також надає декодоване відео для представлення на пристрої відображення (такому як пристрій 32 відображення з Фіг. 1). У деяких випадках, часовий вектор руху-кандидат може бути недоступний, як, наприклад, коли слайс, який точно визначає часовий вектор руху-кандидат, втрачений, тобто не відновлений або не прийнятий в закодованому бітовому потоці, як один приклад. Коли даний часовий вектор руху-кандидат недоступний, модуль 72 компенсації руху може встановлювати даний часовий вектор руху-кандидат рівним значенню за замовченням або іншим чином може визначати інформацію вектора руху за замовченням для даного часового вектора рухукандидата. У деяких випадках, дана інформація вектора руху за замовченням для часового вектора руху-кандидата може бути відновлена залежно від того, чи був опорний кадр закодований з інтрапрогнозуванням. Коли визначається, що опорний кадр є закодованим з інтрапрогнозуванням, модуль 72 компенсації руху може витягувати інформацію вектора руху за замовченням для вектора руху-кандидата за замовченням на основі просторових векторів руху, які визначені для частини опорного кадру, що займає загальне місцеположення в тому ж самому місцеположенні опорного кадру, в якому розташовується і поточна частина в поточному кадрі. Аналогічним чином, один або більше з прогнозованих за часом просторових векторів руху-кандидатів можуть бути недоступні або втрачені і може витягуватися інформація вектора руху за замовченням для вектора руху-кандидата за замовченням на основі просторових векторів руху, які визначені для частини опорного кадру, яка займає загальне місцеположення в тому ж самому місцеположенні опорного кадру, в якому розташовується і поточна частина в поточному кадрі. Як відмічено вище, існує два типи прогнозування вектора руху: режим злиття і AMVP. Застосовно до режиму злиття, модуль 72 компенсації руху визначає амплітуду вектора руху, напрямок прогнозування і опорний індекс, при визначенні інформації руху за замовченням. Застосовно до AMVP, модуль 72 компенсації руху визначає амплітуду вектора руху, але йому не потрібно визначати напрямок прогнозування і опорний індекс, оскільки вони сигналізуються окремо в бітовому потоці для поточної PU. Таким чином, модуль 72 компенсації руху може визначати інформацію руху за замовченням на основі режиму, сигналізованого для виконання 17 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 прогнозування вектора руху, тобто, чи є тип сигналізованого прогнозування вектора руху режимом злиття або AMVP для поточної PU. Фіг. 4 є блок-схемою, що ілюструє зразкове функціонування кодера відео, такого як кодер 20 відео, показаний в прикладі на Фіг. 2, і/або декодер 30 відео, показаний в прикладі на Фіг. 3, при виконанні аспектів методик прогнозування вектора руху, описуваних в даному винаході. Початково, звертаючись спочатку до кодера 20 відео, модуль 42 оцінки руху може, як описано вище, визначати просторові вектори руху-кандидати для поточної PU, відповідної поточній CU (90). Модуль 42 оцінки руху може далі визначати часовий вектор руху-кандидат для поточної PU зі спільно розташованої PU в опорному кадрі, знову, як описано вище (92). При визначенні будьякого з або як просторових векторів руху-кандидатів, так і часового вектора руху-кандидата, модуль 42 оцінки руху може масштабувати один або більше з векторів руху-кандидатів описаним вище способом (94). Додатково, модуль 42 оцінки руху може модифікувати один або більше масштабованих векторів руху, як описано вище (95). Після модифікування одного або більше масштабованих векторів руху, модуль 42 оцінки руху може формувати список кандидатів з просторових і часових векторів руху-кандидатів і вибирати один з векторів руху-кандидатів як MVP для поточної PU (96, 98). Даний вибір може, як відмічено вище, включати виконання кодером 20 відео аналізу RDO, при цьому вибраний один з векторів руху-кандидатів потім використовується для кодування блока відеоданих описаним вище способом. Модуль 56 ентропійного кодування може вказувати вибраний один з векторів руху-кандидатів як індекс (mvp_idx) предиктора вектора руху в бітовому потоці, тим самим дозволяючи декодеру відео ідентифікувати вибраний один з векторів руху-кандидатів. Застосовно до декодера 30 відео, модуль 72 компенсації руху може виконувати операції, аналогічні тим, що описані вище відносно модуля 42 оцінки руху. Тобто, модуль 72 компенсації руху може, як описано вище, визначати просторові вектори руху-кандидати для поточної PU, відповідної поточній CU (90). Модуль 72 компенсації руху може далі визначати часовий вектор руху-кандидат для поточної PU зі спільно розташованої PU в опорному кадрі, знову, як описано вище (92). При визначенні будь-якого з або як просторових векторів руху-кандидатів, так і часового вектора руху-кандидата, модуль 72 компенсації руху може масштабувати один або більше з векторів руху-кандидатів описаним вище способом (94). Додатково модуль 72 компенсації руху може модифікувати один або більше масштабованих векторів руху, щоб вони знаходилися в рамках точно визначеного діапазону, як описано вище (95). Після модифікування одного або більше масштабованих векторів руху, модуль 72 компенсації руху може формувати список кандидатів з просторових і часових векторів рухукандидатів і вибирати один з векторів руху-кандидатів як MVP для поточної PU (96, 98). Модуль 70 ентропійного декодування може проводити синтаксичний аналіз індексу (mvp_idx) предиктора вектора руху в бітовому потоці і надавати даний індекс предиктора вектора руху модулю 72 компенсації руху для використання при виборі одного з векторів руху-кандидатів як MVP для поточної PU. Фіг. 5 є блок-схемою, що ілюструє зразкове функціонування кодера відео, такого як кодер 20 відео, показаний в прикладі на Фіг. 2, і/або декодер 30 відео, показаний в прикладі на Фіг. 3, при виконанні інших аспектів методик прогнозування вектора руху, описуваних в даному винаході. Початково, звертаючись спочатку до кодера 20 відео, модуль 42 оцінки руху може, як описано вище, визначати просторові вектори руху-кандидати для поточної PU, відповідної поточній CU (100). Модуль 42 оцінки руху далі може визначати часовий вектор руху-кандидат для поточної PU зі спільно розташованої PU в опорному кадрі, знову, як описано вище (102). При визначенні будь-якого з або як просторових векторів руху-кандидатів, так і часового вектора рухукандидата, модуль 42 оцінки руху може масштабувати один або більше з векторів рухукандидатів описаним вище способом (104). Далі, модуль 42 оцінки руху може формувати список кандидатів з просторових і часових векторів руху-кандидатів і вибирати один з векторів руху-кандидатівяк MVP для поточної PU (106, 108). Даний вибір може, як відмічено вище, включати в себе виконання кодером 20 відео аналізу RDO, при цьому вибраний один з векторів руху-кандидатів потім використовується для кодування блока відеоданих описаним вище способом. Перед виконанням даного аналізу RDO, модуль 42 оцінки руху може спочатку визначати, чи був масштабований вибраний один з векторів руху-кандидатів (109). Якщо не масштабований ("НІ" 109), модуль 42 оцінки руху може не виконувати будь-які додаткові операції при розгляді поточного одного з векторів рухукандидатів. Проте, якщо масштабований ("ТАК" 109), модуль 42 оцінки руху може модифікувати вибраний один з векторів руху-кандидатів, щоб він знаходився в рамках точно визначеного діапазону, описаним вище способом (110). Як відмічено вище, модуль 56 ентропійного кодування може вказувати вибраний один з векторів руху-кандидатів як індекс (mvp_idx) в 18 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 бітовому потоці, тим самим дозволяючи декодеру відео ідентифікувати вибраний один з векторів руху-кандидатів. Застосовно до декодера 30 відео, модуль 72 компенсації руху, як описано вище, визначає просторові вектори руху-кандидати для поточної PU, відповідної поточній CU (100). Модуль 72 компенсації руху далі може визначати часовий вектор руху-кандидат для поточної PU зі спільно розташованої PU в опорному кадрі, знову, як описано вище (102). При визначенні будь-якого з або як просторових векторів руху-кандидатів, так і часового вектора руху-кандидата, модуль 72 компенсації руху може масштабувати один або більше з векторів руху-кандидатів описаним вище способом (104). Далі, модуль 72 компенсації руху може формувати список кандидатів з просторових і часових векторів руху-кандидатів і вибирати один з векторів руху-кандидатів як MVP для поточної PU (106, 108). Для вибору одного з векторів руху-кандидатів, модуль 70 ентропійного декодування може проводити синтаксичний аналіз індексу (mvp_idx) предиктора вектора руху в бітовому потоці і надавати даний індекс предиктора вектора руху модулю 72 компенсації руху для використання при виборі одного з векторів руху-кандидатів як MVP для поточної PU. Модуль 72 компенсації руху потім може визначати, чи був масштабований вибраний один з векторів руху-кандидатів (109). Якщо не масштабований ("НІ" 109), то модуль 72 компенсації руху може не виконувати яких-небудь додаткових операцій при розгляді поточного одного з векторів руху-кандидатів. Проте, якщо масштабований ("ТАК" 109), то модуль 72 компенсації руху може не модифікувати вибраний один з векторів руху-кандидатів описаним вище способом (110). Фіг. 6 є концептуально схемою, що ілюструє просторові і часові сусідні блоки, з яких генеруються кандидати-предиктори вектора руху для режимів прогнозування вектора руху. У даній тестовій моделі HEVC (HM), підтримується два режими прогнозування вектора руху: режим злиття і режим адаптивного прогнозування вектора руху (AMVP). У будь-якому режимі, кожний з кодера 20 відео і декодера 30 відео генерує однаковий список кандидатів-предикторів вектора руху, з якого визначають вектор руху для поточного відеоблока або PU 112. Кандидатипредиктори вектора руху в режимі злиття і режимі AMVP можуть включати в себе вектори руху для просторово сусідніх блоків поточної PU 112, наприклад сусідніх блоків А, В, С, D і Е, що ілюструються на Фіг. 6. Кандидати-предиктори вектора руху також можуть включати в себе вектори руху для часових сусідніх блоків спільно розташованого блока 114 поточної PU 112, наприклад сусідніх блоків T 1 і T2, що ілюструються на Фіг. 4. У деяких випадках, кандидатипредиктори вектора руху можуть включати в себе поєднання векторів руху для двох або більше з сусідніх блоків, наприклад середнє, медіанне або середньозважене з двох або більше векторів руху. У випадку режиму AMVP, список кандидатів-предикторів вектора руху може бути згенерований так, щоб включати в себе вектори руху для просторових або часових сусідніх блоків. Кодер 20 відео потім вибирає найбільш точний потенційний предиктор вектора руху для поточної PU 112 зі списку кандидатів. У одному прикладі, кодер 20 відео може вибирати потенційний предиктор вектора руху, згенерований з вектора руху одного з сусідніх блоків, як предиктор вектор руху для PU 112. У іншому прикладі, кодер 20 може вибирати потенційний предиктор вектора руху, згенерований з векторів руху двох або більше сусідніх блоків, як предиктор вектор руху для PU 112. У цьому випадку, предиктор вектора руху може бути обчислений як середнє, медіанне або середньозважене значення з двох або більше векторів руху. Потім кодер 20 відео визначає різницю векторів руху між предиктором вектора руху і вектором руху поточної PU 112. Потім кодер 20 відео сигналізує різницю векторів руху і індекс предиктора вектора руху для поточної PU 112 декодеру 30 відео. Декодер 30 відео приймає бітовий потік, що являє собою закодований відеоблок, включаючи різниці векторів руху і індекси предикторів вектора руху для відеоблока. Для декодування відеоблока, декодер 30 відео генерує список кандидатів-предикторів вектора руху таким же чином, що і кодер 20 відео. Декодер 30 відео вибирає предиктор вектора руху для поточної PU 112 зі списку кандидатів. Потім декодер 30 відео складає просигналізовану різницю векторів руху з вибраним предиктором вектора руху для відновлення вектора руху для поточної PU 112. Декодер 30 відео використовує вектор руху для поточної PU 112 для визначення місцеположення прогнозуючого блока в опорній картинці, для відновлення закодованого відеоблока. У випадку режиму злиття, список кандидатів-предикторів вектора руху може бути згенерований таким чином, щоб включати в себе всю інформацію руху, включаючи вектор руху, індекс опорної картинки і напрямок прогнозування, для кожного з просторових або часових блоків. Потім кодер 20 відео вибирає найбільш точну інформацію руху для поточної PU 112 з 19 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 сусідніх блоків в потенційному списку. Замість сигналізації різниці векторів руху, індексу опорної картинки і напрямку прогнозування для поточної PU 112 декодеру 30 відео, кодер 20 відео безпосередньо використовує вибрану інформацію руху для сусіднього блока як підсумкову інформацію руху для поточної PU 112. Таким чином, кодер 20 відео лише сигналізує індекс для указання сусіднього блока, з якого вся інформація руху повинна бути витягнута для поточної PU 112, декодеру 30 відео. Декодер 30 відео приймає бітовий потік, що являє собою закодований відеоблок, включаючи значення індексу для відеоблока. Для декодування відеоблока, декодер 30 відео генерує список кандидатів-предикторів вектора руху таким же чином, як це робить кодер 20 відео. Декодер 30 відео визначає всю інформацію руху, включаючи вектор руху, індекс опорної картинки і напрямок прогнозування, для поточної PU 112, за допомогою застосування сигналізованого індексу до потенційного списку для вибору інформації руху сусіднього блока. Потім декодер 30 відео використовує вектор руху для поточної PU 112 для визначення місцеположення прогнозуючого блока для відновлення закодованого відеоблока. У одному або більше прикладах, описані функції можуть бути реалізовані в апаратному забезпеченні, програмному забезпеченні, вбудованому програмному забезпеченні або будьякому їх поєднанні. При реалізації в програмному забезпеченні, функції можуть бути передані через або збережені як одна або більше інструкцій або код на зчитуваному комп'ютером носії даних. Зчитувані комп'ютером носії даних можуть включати в себе комп'ютерні запам'ятовуючі носії даних або засоби зв'язку, що включають в себе будь-який носій даних, який сприяє перенесенню комп'ютерної програми з одного місця в інше. Запам'ятовуючі носії даних можуть бути будь-якими доступними носіями, доступ до яких може бути здійснений за допомогою одного або більше комп'ютерів або одного або більше процесорів для витягання інструкцій, коду і/або структур даних для реалізації методик, описуваних в даному винаході. Як приклад, а не обмеження, такі зчитувані комп'ютером носії даних можуть містити RAM, ROM, EEPROM, CDROM або інший запам'ятовуючий пристрій на оптичному диску, запам'ятовуючий пристрій на магнітному диску або інші магнітні запам'ятовуючі пристрої, флеш-пам'ять або будь-який інший носій даних, який може бути використаний для перенесення і зберігання необхідного програмного коду у вигляді інструкцій або структур даних і доступ до якого може бути здійснений за допомогою комп'ютера. Також будь-яке з'єднання належним чином визначається як зчитуваний комп'ютером носій даних. Наприклад, якщо програмне забезпечення передається від web-сайта, сервера або іншого віддаленого джерела за допомогою коаксіального кабелю, оптоволоконного кабелю, витої пари, цифрової абонентської лінії (DSL) або за допомогою бездротових технологій, таких як інфрачервона, радіо- або мікрохвильова, тоді коаксіальний кабель, оптоволоконний кабель, вита пара, DSL або бездротові технології, такі як інфрачервона, радіо- і мікрохвильова, включаються у визначення носія даних. Використовувані тут магнітний диск і немагнітний диск включають в себе компакт-диск (CD), лазерний диск, оптичний диск, цифровий універсальний диск (DVD), гнучкий диск і диск blu-ray, при цьому магнітні диски звичайно відтворюють дані магнітним чином, тоді як немагнітні диски відтворюють дані оптично за допомогою лазерів. Поєднання вищенаведеного також повинні бути включені в обсяг машиночитаних носіїв інформації. Код може виконуватися одним або більше процесорами, такими як один або більше цифрових сигнальних процесорів (DSP), мікропроцесори загального призначення, проблемно орієнтовані інтегральні мікросхеми (ASIC), програмовані вентильні матриці (FPGA) або інші еквівалентні інтегровані або дискретні логічні схеми. Відповідно, використовуване тут поняття "процесор" може стосуватися будь-якої з вищенаведених структур або будь-якої іншої структури, придатної для реалізації методик, описуваних тут. На доповнення, в деяких аспектах, описувані тут функціональні можливості можуть бути надані всередині виділеного апаратного забезпечення і/або модулів програмного забезпечення, виконаних з можливістю кодування і декодування, або включені в об'єднаний кодек. Також, методики можуть бути повністю реалізовані в одній або більше схемах або логічних елементах. Методики даного винаходу можуть бути реалізовані в широкому різноманітті пристроїв і апаратури, включаючи бездротову трубку, інтегральну мікросхему (IC) або набір IC (наприклад, набір мікросхем). Різні компоненти, модулі або блоки описані в даному винаході для того, щоб підкреслити функціональні аспекти пристроїв, виконаних з можливістю виконання методик, що розкриваються, і не обов'язково потрібна реалізація в різних модулях апаратного забезпечення. Навпаки, як описано вище, різні модулі можуть бути об'єднані в кодек апаратного забезпечення або надані за допомогою сукупності працюючих спільно модулів апаратного забезпечення, включаючи один або більше процесорів, як описано вище, спільно з придатним програмним забезпеченням або вбудованим програмним забезпеченням. 20 UA 114617 C2 Були описані різні приклади. Ці і інші приклади знаходяться в рамках обсягу нижченаведеної формули винаходу. ФОРМУЛА ВИНАХОДУ 5 10 15 20 25 30 35 40 45 50 55 60 1. Спосіб кодування відеоданих, при цьому спосіб включає етапи, на яких: визначають множину векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконати процес прогнозування вектора руху; масштабують один або більше із згаданої множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб згенерувати один або більше масштабованих векторів рухукандидатів; модифікують масштабовані вектори руху-кандидати так, щоб вони знаходилися в рамках точно визначеного діапазону, причому точно визначений діапазон дорівнює [-32768, 32767] в одиницях чверті піксела; вибирають один із згаданої множини векторів руху-кандидатів як предиктор вектора руху для поточного блока відеоданих; і кодують поточний блок відеоданих на основі предиктора вектора руху. 2. Спосіб за п. 1, в якому етап, на якому модифікують масштабовані вектори руху-кандидати, включає етап, на якому модифікують масштабовані вектори руху-кандидати без модифікації будь-яких інших векторів руху-кандидатів, які не були масштабовані. 3. Спосіб за п. 1, в якому етап, на якому модифікують масштабовані вектори руху-кандидати, включає етап, на якому зрізають масштабовані вектори руху-кандидати перед вибором одного із згаданої множини векторів руху-кандидатів як предиктора вектора руху для поточного блока відеоданих. 4. Спосіб за п. 1, в якому процес прогнозування вектора руху є одним з режиму злиття і режиму вдосконаленого прогнозування вектора руху. 5. Спосіб за п. 1, в якому точно визначений діапазон задається профілем або рівнем кодування відео. 6. Спосіб за п. 1, в якому точно визначений діапазон є фіксованим і жорстко заданим в одному або більше з декодера відео і кодера відео. 7. Спосіб за п. 1, в якому етап, на якому модифікують масштабовані вектори руху, включає в себе етапи, на яких: зрізають вертикальну складову масштабованих векторів руху-кандидатів так, щоб вона знаходилася в рамках вертикального точно визначеного діапазону; і зрізають горизонтальну складову масштабованих векторів руху-кандидатів так, щоб вона знаходилася в рамках горизонтального точно визначеного діапазону. 8. Спосіб за п. 1, в якому точно визначений діапазон точно визначає межу зміщення вектора руху, яка включає в себе межу вертикального зміщення, в якому масштабовані вектори руху-кандидати виходять за рамки межі вертикального зміщення, і в якому етап, на якому модифікують масштабовані вектори руху-кандидати, додатково включає етап, на якому зрізають вертикальну складову масштабованих векторів руху-кандидатів так, щоб вертикальна складова масштабованих векторів руху-кандидатів знаходилась в рамках межі вертикального зміщення. 9. Спосіб за п. 1, в якому точно визначений діапазон точно визначає межу зміщення вектора руху, яка включає в себе межу горизонтального зміщення, в якому масштабовані вектори руху-кандидати виходять за рамки межі горизонтального зміщення, і в якому етап, на якому модифікують масштабовані вектори руху-кандидати, додатково включає етап, на якому зрізають горизонтальну складову масштабованих векторів руху-кандидатів так, щоб горизонтальна складова масштабованих векторів руху-кандидатів знаходилась в рамках межі горизонтального зміщення. 10. Спосіб за п. 1, в якому етап, на якому модифікують масштабовані вектори руху-кандидати, включає етап, на якому масштабують масштабовані вектори руху-кандидати так, щоб масштабовані вектори руху-кандидати знаходились в рамках однієї або більше меж зміщення вектора руху. 11. Спосіб за п. 1, який додатково включає етап, на якому визначають вектор руху для поточного блока відеоданих на основі вибраного одного із згаданої множини векторів руху 21 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 кандидатів для поточного блока відеоданих, при цьому визначений вектор руху ідентифікує блок прогнозування відеоданих, при цьому етап, на якому кодують поточний блок відеоданих, включає етап, на якому декодують поточний блок відеоданих відносно блока прогнозування відеоданих. 12. Спосіб за п. 1, який додатково включає етап, на якому визначають вектор руху для поточного блока відеоданих на основі вибраного одного із згаданої множини векторів рухукандидатів для поточного блока відеоданих, при цьому визначений вектор руху ідентифікує блок прогнозування відеоданих, і при цьому етап, на якому кодують поточний блок відеоданих, включає етап, на якому кодують поточний блок відеоданих відносно блока прогнозування відеоданих. 13. Спосіб за п. 1, який додатково включає етапи, на яких: декодують індекс предиктора вектора руху для ідентифікації вибраного одного із згаданої множини векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконати режим вдосконаленого прогнозування вектора руху процесу прогнозування вектора руху; і декодують різницю векторів руху між вибраним одним із згаданої множини векторів рухукандидатів і вектором руху для поточного блока відеоданих, щоб визначити вектор руху для поточного блока відеоданих, при цьому етап, на якому кодують поточний блок відеоданих, включає етап, на якому декодують поточний блок відеоданих, використовуючи визначений вектор руху для поточного блока відеоданих. 14. Спосіб за п. 1, який додатково включає етапи, на яких: декодують індекс для ідентифікації вибраного одного із згаданої множини векторів рухукандидатів для поточного блока відеоданих з тим, щоб виконати режим злиття процесу прогнозування вектора руху; і визначають вектор руху для поточного блока відеоданих так, щоб він був еквівалентний вибраному одному із згаданої множини векторів руху-кандидатів, при цьому етап, на якому кодують поточний блок відеоданих, включає етап, на якому декодують поточний блок відеоданих, використовуючи визначений вектор руху для поточного блока відеоданих. 15. Пристрій кодування відео, виконаний з можливістю виконання процесу прогнозування вектора руху для кодування відеоданих, при цьому пристрій кодування відео містить: процесор, виконаний з можливістю: визначення множини векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконати процес прогнозування вектора руху; масштабування одного або більше із згаданої множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб згенерувати один або більше масштабованих векторів руху-кандидатів; модифікування масштабованих векторів руху-кандидатів так, щоб вони знаходилися в рамках точно визначеного діапазону, причому точно визначений діапазон дорівнює [-32768, 32767] в одиницях чверті піксела; вибору одного із згаданої множини векторів руху-кандидатів як предиктора вектора руху для поточного блока відеоданих; і кодування поточного блока відеоданих на основі предиктора вектора руху. 16. Пристрій кодування відео за п. 15, в якому процесор додатково виконаний з можливістю, при модифікуванні масштабованих векторів руху-кандидатів, модифікування масштабованих векторів руху-кандидатів без модифікації будь-яких інших векторів руху-кандидатів, якіне були масштабовані. 17. Пристрій кодування відео за п. 15, в якому процесор додатково виконаний з можливістю, при модифікуванні масштабованих векторів руху-кандидатів, зрізання масштабованих векторів рухукандидатів перед вибором одного із згаданої множини векторів руху-кандидатів як предиктора вектора руху для поточного блока відеоданих. 18. Пристрій кодування відео за п. 15, в якому процес прогнозування вектора руху є одним з режиму злиття і режиму вдосконаленого прогнозування вектора руху. 19. Пристрій кодування відео за п. 15, в якому точно визначений діапазон задається профілем або рівнем кодування відео. 20. Пристрій кодування відео за п. 15, в якому точно визначений діапазон є фіксованим і жорстко заданим в одному або більше з декодера відео і кодера відео. 21. Пристрій кодування відео за п. 15, в якому процесор додатково виконаний з можливістю, при модифікуванні масштабованих векторів руху, зрізання вертикальної складової масштабованих векторів руху-кандидатів так, щоб вона знаходилася в рамках вертикального точно визначеного діапазону, і зрізання горизонтальної складової масштабованих векторів руху-кандидатів так, щоб вона знаходилася в рамках горизонтального точно визначеного діапазону. 22. Пристрій кодування відео за п. 15, 22 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 в якому точно визначений діапазон точно визначає межу зміщення вектора руху, яка включає в себе межу вертикального зміщення, в якому масштабовані вектори руху-кандидати виходять за рамки межі вертикального зміщення, і в якому процесор додатково виконаний з можливістю, при модифікуванні масштабованих векторів руху-кандидатів, зрізання вертикальної складової масштабованих векторів рухукандидатів так, щоб вертикальна складова масштабованих векторів руху-кандидатів знаходилась в рамках межі вертикального зміщення. 23. Пристрій кодування відео за п. 15, в якому точно визначений діапазон точно визначає межу зміщення вектора руху, яка включає в себе межу горизонтального зміщення, в якому масштабовані вектори руху-кандидати виходять за рамки межі горизонтального зміщення, і в якому процесор додатково виконаний з можливістю, при модифікуванні масштабованих векторів руху-кандидатів, зрізання горизонтальної складової масштабованих векторів рухукандидатів так, щоб горизонтальна складова масштабованих векторів руху-кандидатів знаходилась в рамках межі горизонтального зміщення. 24. Пристрій кодування відео за п. 15, в якому процесор додатково виконаний з можливістю, при модифікуванні масштабованих векторів руху-кандидатів, масштабування масштабованих векторів руху-кандидатів так, щоб масштабовані вектори руху-кандидати знаходились в рамках однієї або більше меж зміщення вектора руху. 25. Пристрій кодування відео за п. 15, в якому процесор додатково виконаний з можливістю визначення вектора руху для поточного блока відеоданих на основі вибраного одного із згаданої множини векторів руху-кандидатів для поточного блока відеоданих, при цьому визначений вектор руху ідентифікує блок прогнозування відеоданих, і в якому процесор додатково виконаний з можливістю, при кодуванні поточного блока відеоданих, декодування поточного блока відеоданих відносно блока прогнозування відеоданих. 26. Пристрій кодування відео за п. 15, в якому процесор додатково виконаний з можливістю визначення вектора руху для поточного блока відеоданих на основі вибраного одного із згаданої множини векторів руху-кандидатів для поточного блока відеоданих, при цьому визначений вектор руху ідентифікує блок прогнозування відеоданих; і в якому процесор додатково виконаний з можливістю, при кодуванні поточного блока відеоданих, кодування поточного блока відеоданих відносно блока прогнозування відеоданих. 27. Пристрій кодування відео за п. 15, в якому процесор додатково виконаний з можливістю: декодування індексу предиктора вектора руху для ідентифікації вибраного одного із згаданої множини векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконати режим вдосконаленого прогнозування вектора руху процесу прогнозування вектора руху; декодування різниці векторів руху між вибраним одним із згаданої множини векторів руху-кандидатів і вектором руху для поточного блока відеоданих, щоб визначити вектор руху для поточного блока відеоданих, і, при кодуванні поточного блока відеоданих, декодування поточного блока відеоданих, використовуючи визначений вектор руху для поточного блока відеоданих. 28. Пристрій кодування відео за п. 15, в якому процесор додатково виконаний з можливістю: декодування індексу для ідентифікації вибраного одного із згаданої множини векторів рухукандидатів для поточного блока відеоданих з тим, щоб виконати режим злиття процесу прогнозування вектора руху; визначення вектора руху для поточного блока відеоданих так, щоб він був еквівалентний вибраному одному із згаданої множини векторів руху-кандидатів; і, при кодуванні поточного блока відеоданих, декодування поточного блока відеоданих, використовуючи визначений вектор руху для поточного блока відеоданих. 29. Пристрій кодування відео, виконаний з можливістю виконання процесу прогнозування вектора руху для кодування відеоданих, при цьому пристрій кодування відео містить: засіб для визначення множини векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконати процес прогнозування вектора руху; засіб для масштабування одного або більше із згаданої множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб згенерувати один або більше масштабованих векторів руху-кандидатів; 23 UA 114617 C2 5 10 15 20 25 30 35 40 45 50 55 60 засіб для модифікування масштабованих векторів руху-кандидатів так, щоб вони знаходилися в рамках точно визначеного діапазону, причому точно визначений діапазон дорівнює [-32768, 32767] в одиницях чверті піксела; засіб для вибору одного із згаданої множини векторів руху-кандидатів як предиктора вектора руху для поточного блока відеоданих; і засіб для кодування поточного блока відеоданих на основі предиктора вектора руху. 30. Пристрій кодування відео за п. 29, в якому засіб для модифікування масштабованих векторів руху-кандидатів містить засіб для модифікування масштабованих векторів рухукандидатів без модифікації будь-яких інших векторів руху-кандидатів, які не були масштабовані. 31. Пристрій кодування відео за п. 29, в якому засіб для модифікування масштабованих векторів руху-кандидатів містить засіб для зрізання масштабованих векторів руху-кандидатів перед вибором одного із згаданої множини векторів руху-кандидатів як предиктора вектора руху для поточного блока відеоданих. 32. Пристрій кодування відео за п. 29, в якому точно визначений діапазон задається профілем або рівнем кодування відео. 33. Пристрій кодування відео за п. 29, в якому точно визначений діапазон є фіксованим і жорстко заданим в одному або більше з декодера відео і кодера відео. 34. Пристрій кодування відео за п. 29, в якому засіб для модифікування масштабованих векторів руху включає в себе: засіб для зрізання вертикальної складової масштабованих векторів руху-кандидатів так, щоб вона знаходилася в рамках вертикального точно визначеного діапазону; і засіб для зрізання горизонтальної складової масштабованих векторів руху-кандидатів так, щоб вона знаходилася в рамках горизонтального точно визначеного діапазону. 35. Пристрій кодування відео за п. 29, в якому точно визначений діапазон точно визначає межу зміщення вектора руху, яка включає в себе межу вертикального зміщення, в якому масштабовані вектори руху-кандидати виходять за рамки межі вертикального зміщення, і в якому засіб для модифікування масштабованих векторів руху-кандидатів додатково містить засіб для зрізання вертикальної складової масштабованих векторів руху-кандидатів так, щоб вертикальна складова масштабованих векторів руху-кандидатів знаходилась в рамках межі вертикального зміщення. 36. Пристрій кодування відео за п. 29, в якому точно визначений діапазон точно визначає межу зміщення вектора руху, яка включає в себе межу горизонтального зміщення, в якому масштабовані вектори руху-кандидати виходять за рамки межі горизонтального зміщення, і в якому засіб для модифікування масштабованих векторів руху-кандидатів додатково містить засіб для зрізання горизонтальної складової масштабованих векторів руху-кандидатів так, щоб горизонтальна складова масштабованих векторів руху-кандидатів знаходилась в рамках межі горизонтального зміщення. 37. Постійний зчитуваний комп'ютером носій даних з інструкціями, що зберігаються на ньому, які, при виконанні, спонукають один або більше процесорів: визначати множину векторів руху-кандидатів для поточного блока відеоданих з тим, щоб виконати процес прогнозування вектора руху; масштабувати один або більше із згаданої множини векторів руху-кандидатів, визначеної для поточного блока відеоданих, щоб згенерувати один або більше масштабованих векторів рухукандидатів; модифікувати масштабовані вектори руху-кандидати так, щоб вони знаходилися в рамках точно визначеного діапазону, причому точно визначений діапазон дорівнює [-32768, 32767] в одиницях чверті піксела; вибирати один із згаданої множини векторів руху-кандидатів як предиктор вектора руху для поточного блока відеоданих; і кодувати поточний блок відеоданих на основі предиктора вектора руху. 38. Постійний зчитуваний комп'ютером носій даних за п. 37, в якому інструкції, при виконанні, спонукають один або більше процесорів, при модифікуванні масштабованих векторів рухукандидатів, модифікувати масштабовані вектори руху-кандидати без модифікації будь-яких інших векторів руху-кандидатів, які не були масштабовані. 39. Постійний зчитуваний комп'ютером носій даних за п. 37, в якому інструкції, при виконанні, спонукають один або більше процесорів, при модифікуванні масштабованих векторів руху 24 UA 114617 C2 5 10 15 20 25 30 35 кандидатів, зрізати масштабовані вектори руху-кандидати перед вибором одного із згаданої множини векторів руху-кандидатів як предиктора вектора руху для поточного блока відеоданих. 40. Постійний зчитуваний комп'ютером носій даних за п. 37, який додатково містить інструкції, що зберігаються на ньому, які, при виконанні, спонукають один або більше процесорів: вибирати один із згаданої множини векторів руху-кандидатів як предиктор вектора руху для поточного блока відеоданих; і кодувати поточний блок відеоданих на основі предиктора вектора руху. 41. Постійний зчитуваний комп'ютером носій даних за п. 37, в якому точно визначений діапазон задається профілем або рівнем кодування відео. 42. Постійний зчитуваний комп'ютером носій даних за п. 37, в якому точно визначений діапазон є фіксованим і жорстко заданим в одному або більше з декодера відео і кодера відео. 43. Постійний зчитуваний комп'ютером носій даних за п. 37, в якому інструкції, при виконанні, спонукають один або більше процесорів, при модифікуванні масштабованих векторів руху: зрізати вертикальну складову масштабованих векторів руху-кандидатів так, щоб вона знаходилася в рамках вертикального точно визначеного діапазону; і зрізати горизонтальну складову масштабованих векторів руху-кандидатів так, щоб вона знаходилася в рамках горизонтального точно визначеного діапазону. 44. Постійний зчитуваний комп'ютером носій даних за п. 37, в якому точно визначений діапазон точно визначає межу зміщення вектора руху, яка включає в себе межу вертикального зміщення, в якому масштабовані вектори руху-кандидати виходять за рамки межі вертикального зміщення, і в якому інструкції, при виконанні, спонукають один або більше процесорів, при модифікуванні масштабованих векторів руху-кандидатів, зрізати вертикальну складову масштабованих векторів руху-кандидатів так, щоб вертикальна складова масштабованих векторів рухукандидатів знаходилась в рамках межі вертикального зміщення. 45. Постійний зчитуваний комп'ютером носій даних за п. 37, в якому точно визначений діапазон точно визначає межу зміщення вектора руху, яка включає в себе межу горизонтального зміщення, в якому масштабовані вектори руху-кандидати виходять за рамки межі горизонтального зміщення, і в якому інструкції, при виконанні, спонукають один або більше процесорів, при модифікуванні масштабованих векторів руху-кандидатів, зрізати горизонтальну складову масштабованих векторів руху-кандидатів так, щоб горизонтальна складова масштабованих векторів рухукандидатів знаходилась в рамках межі горизонтального зміщення. 25 UA 114617 C2 26 UA 114617 C2 27 UA 114617 C2 28
ДивитисяДодаткова інформація
Назва патенту англійськоюPerforming motion vector prediction for video coding
Автори англійськоюChen, Jianle, Coban, Muhammed Zeyd, Wang, Ye-Kui, Wang, Xianglin, Karczewicz, Marta, Chien, Wei-Jung
Автори російськоюЧэнь Цзяньлэ, Кобан Мухаммед Зейд, Ван Е-Куй, Ван Сянлинь, Карчевич Марта, Чиень Вэй-Дзунг
МПК / Мітки
МПК: H04N 7/00
Мітки: відео, руху, кодування, прогнозування, виконання, вектора
Код посилання
<a href="https://ua.patents.su/31-114617-vikonannya-prognozuvannya-vektora-rukhu-dlya-koduvannya-video.html" target="_blank" rel="follow" title="База патентів України">Виконання прогнозування вектора руху для кодування відео</a>
Попередній патент: Оптоволоконний адаптерний блок
Наступний патент: Концепція кодування, яка дозволяє паралельну обробку даних, транспортний демультиплексор і відеобітовий потік
Випадковий патент: Короткозамкнутий ротор асинхронної машини