Кодування відео за допомогою великих макроблоків

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

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

Автори: Чень Пейсун, Карчевіч Марта, Е Янь

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

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

кодують, за допомогою кодера відео, відеоблок, що має розмір, більший ніж 16×16 пікселів;

формують інформацію синтаксису типу блоків, яка вказує розмір блока; і

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

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

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

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

встановлюють єдиний біт значення моделі блоків, що кодуються, в нуль, коли закодований блок не включає в себе щонайменше один ненульовий коефіцієнт;

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

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

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

ідентифікують 16×16-піксельний розділ закодованого блока,

формують значення моделі блоків розділу, що кодуються, для 16×16-піксельного розділу як частину сформованого значення моделі блоків, що кодуються, і

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

4. Спосіб за п. 3, в якому, коли закодований блок включає в себе щонайменше один ненульовий коефіцієнт, формування значення моделі блоків, що кодуються, містить етап, на якому формують перший біт яскравості_16×8 і другий біт яскравості_16×8, при цьому перший біт яскравості_16×8 являє собою те, чи включає в себе розділ 16×8 розділу 16×16 блока щонайменше один ненульовий коефіцієнт, а другий біт яскравості_16×8 являє собою те, чи включає в себе другий розділ 16×8 розділу 16×16 блока щонайменше один ненульовий коефіцієнт.

5. Спосіб за п. 3, в якому відеоблок має розмір щонайменше 64×64 пікселів.

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

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

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

включають значення зміни параметра квантування як інформацію синтаксису в закодований блок.

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

кодування відеоблока, що має розмір, більший ніж 16×16 пікселів;

формування інформації синтаксису типу блоків, яка вказує розмір блока; і

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

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

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

9. Пристрій за п. 8, в якому кодер відео сконфігурований для:

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

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

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

10. Пристрій за п. 8, в якому кодер відео сконфігурований для: коли закодований блок включає в себе щонайменше один ненульовий коефіцієнт,

ідентифікації 16×16-піксельного розділу закодованого блока;

формування значення моделі блоків розділу, що кодуються, для 16×16-піксельного розділу як частини сформованого значення моделі блоків, що кодуються; і

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

11. Пристрій за п. 10, в якому кодер відео сконфігурований для того, що коли закодований блок включає в себе щонайменше один ненульовий коефіцієнт, формування значення моделі блоків, що кодуються, містить формування першого біта яскравості_16×8 і другого біта яскравості_16×8, при цьому перший біт яскравості_16×8 являє собою те, чи включає в себе розділ 16×8 розділу 16×16 блока щонайменше один ненульовий коефіцієнт, а другий біт яскравості_16×8 являє собою те, чи включає в себе другий розділ 16×8 розділу 16×16 блока щонайменше один ненульовий коефіцієнт.

12. Пристрій за п. 8, в якому відеоблок має розмір щонайменше 64×64 пікселів.

13. Пристрій за п. 8, в якому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт, і коли закодований блок включає в себе щонайменше один ненульовий коефіцієнт, вказує на те, чи включають в себе які-небудь розділи першого рівня закодованого блока щонайменше один ненульовий коефіцієнт, і, коли щонайменше один з розділів першого рівня закодованого блока включає в себе щонайменше один ненульовий коефіцієнт, вказує на те, чи включають в себе які-небудь розділи другого рівня розділів першого рівня щонайменше один ненульовий коефіцієнт, і при цьому значення моделі блоків, що кодуються, включає в себе модель бітів, що відповідає закодованому блоку, розділам першого рівня закодованого блока і розділам другого рівня розділів першого рівня.

14. Пристрій за п. 8, при цьому пристрій містить прилад бездротового зв'язку.

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

засіб кодування відеоблока, що має розмір, більший ніж 16×16 пікселів;

засіб формування інформації синтаксису типу блоків, якавказує розмір блока; і

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

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

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

16. Пристрій за п. 15, що додатково містить:

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

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

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

17. Пристрій за п. 15, що додатково містить, коли закодований блок включає в себе щонайменше один ненульовий коефіцієнт,

засіб ідентифікації 16×16-піксельного розділу закодованого блока,

засіб формування значення моделі блоків розділу, що кодуються, для 16×16-піксельного розділу як частини сформованого значення моделі блоків, що кодуються, і

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

18. Пристрій за п. 17, в якому, коли закодований блок включає в себе щонайменше один ненульовий коефіцієнт, засіб формування значення моделі блоків, що кодуються, містить засіб формування першого біта яскравості_16×8 і другого біта яскравості_16×8, при цьому перший біт яскравості_16×8 являє собою те, чи включає в себе розділ 16×8 розділу 16×16 блока щонайменше один ненульовий коефіцієнт, а другий біт яскравості_16×8 являє собою те, чи включає в себе другий розділ 16×8 розділу 16×16 блока щонайменше один ненульовий коефіцієнт.

19. Пристрій за п. 15, в якому відеоблок має розмір щонайменше 64×64 пікселів.

20. Пристрій за п. 15, в якому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт, і коли закодований блок включає в себе щонайменше один ненульовий коефіцієнт, вказує на те, чи включають в себе які-небудь розділи першого рівня закодованого блока щонайменше один ненульовий коефіцієнт, і, коли щонайменше один з розділів першого рівня закодованого блока включає в себе щонайменше один ненульовий коефіцієнт, вказує на те, чи включають в себе які-небудь розділи другого рівня розділів першого рівня щонайменше один ненульовий коефіцієнт, і при цьому значення моделі блоків, що кодуються, включає в себе модель бітів, що відповідає закодованому блоку, розділам першого рівня закодованого блока і розділам другого рівня розділів першого рівня.

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

закодувати, за допомогою кодера відео, відеоблок, що має розмір, більший ніж 16×16 пікселів;

сформувати інформацію синтаксису типу блоків, яка вказує розмір блока; і

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

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

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

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

встановити єдиний біт значення моделі блоків, що кодуються, в нуль, коли закодований блок не включає в себе щонайменше один ненульовий коефіцієнт;

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

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

23. Комп'ютерочитаний носій інформації за п. 21, що додатково містить інструкції, що призначають пристрою кодування відео, коли закодований блок включає в себе щонайменше один ненульовий коефіцієнт,

ідентифікувати 16×16-піксельний розділ закодованого блока,

сформувати значення моделі блоків розділу, що кодуються, для 16×16-піксельного розділу як частину сформованого значення моделі блоків, що кодуються, і

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

24. Комп'ютерочитаний носій інформації за п. 23, що додатково містить інструкції, що призначають пристрою кодування відео, коли закодований блок включає в себе щонайменше один ненульовий коефіцієнт, сформувати для значення моделі блоків, що кодуються, перший біт яскравості_16×8 і другий біт яскравості_16×8, при цьому перший біт яскравості_16×8 являє собою те, чи включає в себе розділ 16×8 розділу 16×16 блока щонайменше один ненульовий коефіцієнт, а другий біт яскравості_16×8 являє собою те, чи включає в себе другий розділ 16×8 розділу 16×16 блока щонайменше один ненульовий коефіцієнт.

25. Комп'ютерочитаний носій інформації за п. 21, в якому відеоблок має розмір щонайменше 64×64 пікселів.

26. Комп'ютерочитаний носій інформації за п. 21, в якому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт, і коли закодований блок включає в себе щонайменше один ненульовий коефіцієнт, вказує на те, чи включають в себе які-небудь розділи першого рівня закодованого блока щонайменше один ненульовий коефіцієнт, і, коли щонайменше один з розділів першого рівня закодованого блока включає в себе щонайменше один ненульовий коефіцієнт, вказує на те, чи включають в себе які-небудь розділи другого рівня розділів першого рівня щонайменше один ненульовий коефіцієнт, і при цьому значення моделі блоків, що кодуються, включає в себе модель бітів, що відповідає закодованому блоку, розділам першого рівня закодованого блока і розділам другого рівня розділів першого рівня.

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

приймають, за допомогою декодера відео, закодований відеоблок, що має розмір, більший ніж 16×16 пікселів;

приймають інформацію синтаксису типу блоків, яка вказує розмір закодованого блока;

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

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

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

29. Спосіб за п. 27, в якому етап декодування закодованого блока містить етапи, на яких:

отримують дані залишку для розділів, що мають щонайменше один ненульовий коефіцієнт, який вказаний моделлю блоків, що кодуються;

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

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

30. Спосіб за п. 27, в якому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт, і, коли закодований блок включає в себе щонайменше один ненульовий коефіцієнт, вказує на те, чи включають в себе які-небудь розділи першого рівня закодованого блока щонайменше один ненульовий коефіцієнт, і, коли щонайменше один з розділів першого рівня закодованого блока включає в себе щонайменше один ненульовий коефіцієнт, вказує на те, чи включають в себе які-небудь розділи другого рівня розділів першого рівня щонайменше один ненульовий коефіцієнт, і при цьому значення моделі блоків, що кодуються, включає в себе модель бітів, що відповідає закодованому блоку, розділам першого рівня закодованого блока і розділам другого рівня розділів першого рівня.

31. Спосіб за п. 27, в якому відеоблок має розмір щонайменше 64×64 пікселів.

32. Спосіб за п. 27, що додатково містить етап, на якому:

приймають значення зміни параметра квантування,

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

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

прийому закодованого відеоблока, що має розмір, більший ніж 16×16 пікселів;

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

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

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

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

35. Пристрій за п. 33, в якому щоб декодувати закодований блок, декодер відео сконфігурований для:

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

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

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

36. Пристрій за п. 33, в якому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт, і, коли закодований блок включає в себе щонайменше один ненульовий коефіцієнт, вказує на те, чи включають в себе які-небудь розділи першого рівня закодованого блока щонайменше один ненульовий коефіцієнт, і, коли щонайменше один з розділів першого рівня закодованого блока включає в себе щонайменше один ненульовий коефіцієнт, вказує на те, чи включають в себе які-небудь розділи другого рівня розділів першого рівня щонайменше один ненульовий коефіцієнт, і при цьому значення моделі блоків, що кодуються, включає в себе модель бітів, що відповідає закодованому блоку, розділам першого рівня закодованого блока і розділам другого рівня розділів першого рівня.

37. Пристрій за п. 33, в якому відеоблок має розмір щонайменше 64×64 пікселів.

38. Пристрій за п. 33, при цьому пристрій містить прилад бездротового зв'язку.

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

засіб прийому закодованого відеоблока, що має розмір, більший ніж 16×16 пікселів;

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

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

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

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

41. Пристрій за п. 39, в якому засіб декодування закодованого блока містить:

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

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

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

42. Пристрій за п. 39, в якому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт, і, коли закодований блок включає в себе щонайменше один ненульовий коефіцієнт, вказує на те, чи включають в себе які-небудь розділи першого рівня закодованого блока щонайменше один ненульовий коефіцієнт, і, коли щонайменше один з розділів першого рівня закодованого блока включає в себе щонайменше один ненульовий коефіцієнт, вказує на те, чи включають в себе які-небудь розділи другого рівня розділів першого рівня щонайменше один ненульовий коефіцієнт, і при цьому значення моделі блоків, що кодуються, включає в себе модель бітів, що відповідає закодованому блоку, розділам першого рівня закодованого блока і розділам другого рівня розділів першого рівня.

43. Пристрій за п. 39, в якому відеоблок має розмір щонайменше 64×64 пікселів.

44. Комп'ютерочитаний носій інформації, що містить інструкції, які призначають декодеру відео:

прийняти, за допомогою декодера відео, закодований відеоблок, що має розмір, більший ніж 16×16 пікселів;

прийняти інформацію синтаксису типу блоків, яка вказує розмір закодованого блока;

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

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

45. Комп'ютерочитаний носій інформації за п. 44, в якому єдиний біт значення моделі блоків, що кодуються, є нулем, коли закодований блок не включає в себе щонайменше один ненульовий коефіцієнт, і перший біт значення моделі блоків, що кодуються, є одиницею, коли закодований блок включає в себе щонайменше один ненульовий коефіцієнт, причому комп'ютерочитаний носій інформації додатково містить інструкції, які приписують декодеру відео приймати закодовані відеодані для закодованого блока, коли перший біт значення моделі блоків, що кодуються, є одиницею.

46. Комп'ютерочитаний носій інформації за п. 44, в якому інструкції, які призначають декодеру відео декодувати закодований блок, містять інструкції, які призначають декодеру відео:

отримати дані залишку для розділів, що мають щонайменше один ненульовий коефіцієнт, який вказаний моделлю блоків, що кодуються;

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

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

47. Комп'ютерочитаний носій за п. 44, в якому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт, і, коли закодований блок включає в себе щонайменше один ненульовий коефіцієнт, вказує на те, чи включають в себе які-небудь розділи першого рівня закодованого блока щонайменше один ненульовий коефіцієнт, і, коли щонайменше один з розділів першого рівня закодованого блока включає в себе щонайменше один ненульовий коефіцієнт, вказує на те, чи включають в себе які-небудь розділи другого рівня розділів першого рівня щонайменше один ненульовий коефіцієнт, і при цьому значення моделі блоків, що кодуються, включає в себе модель бітів, що відповідає закодованому блоку, розділам першого рівня закодованого блока і розділам другого рівня розділів першого рівня.

48. Комп'ютерочитаний носій інформації за п. 44, в якому відеоблок має розмір щонайменше 64×64 пікселів.

Текст

Реферат: Описані методики кодування і декодування даних цифрового відео з використанням макроблоків, які більші ніж, макроблоки, призначені звичайними стандартами кодування і декодування відео. Наприклад, методики включають в себе кодування і декодування відео потоку з використанням макроблоків, що містять більше, ніж 16×16 пікселів, наприклад, 64×64 пікселів. У одному прикладі, пристрій включає в себе кодер відео, сконфігурований для: кодування відеоблока, що має розміри більші, ніж 16×16 пікселів; формування інформації синтаксису типу блоків, яка вказує розмір блока; і формування значення моделі блоків, що кодуються, для закодованого блока, при цьому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт. Кодер відео може встановити значення моделі блоків, що кодуються, в нуль, коли закодований блок не включає в себе щонайменше один ненульовий коефіцієнт, або встановити значення моделі блоків, що кодуються, в одиницю, коли закодований блок включає в себе ненульовий коефіцієнт. UA 102117 C2 (12) UA 102117 C2 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 Дана заявка вимагає пріоритет по попередніх заявках на патент США №61/102787, поданій 3 жовтня 2008 р., 61/144357, поданій 13 січня 2009 р. і 61/166631, поданій 3 квітня 2009 р., кожна з яких у всій своїй повноті включена в даний опис за допомогою посилання. Дана заявка пов'язана із заявками на патент США, які мають дату подачі точно таку ж, як і у даної заявки, і точно таку ж назву, "VIDEO CODING WITH LARGE MACROBLOCKS", (з тимчасово привласненими Номерами в Досьє Повіреного 090033U2, 090033U3, 090033U4), і всі з яких, переуступлені їх правонаступнику, і теперішнім часом в прямій формі включені в даний опис у всій своїй повноті за допомогою посилання. Галузь техніки, до якої належать винахід Винахід належить до кодування цифрового відео, і зокрема, до кодування відео, основаного на блоках. Рівень техніки Можливості цифрового відео можуть бути включені в широке різноманіття приладів, включаючи цифрові телевізори, системи цифрового прямого мовлення, системи бездротового мовлення, персональні цифрові помічники (PDA), ноутбуки або настільні комп'ютери, прилади цифрового запису, прилади відеогри, ігрові відеоконсоли, стільникові або супутникові радіотелефони і подібне. Прилади цифрового відео реалізовують методики стиснення відео, такі як ті, що описані в стандартах, заданих як MPEG-2, MPEG-4, ITU-T H.263 або ITU-T H.264/MPEG-4, Частина 10, Поліпшене Кодування Відео (AVC), і поліпшення таких стандартів для ефективнішої передачі і прийому інформації цифрового відео. Методики стиснення відео виконують просторове передбачення і/або часове передбачення для скорочення або видалення надмірності, властивої відеопослідовностям. Застосовно до кодування відео, основаного на блоках, відеокадр або вирізка можуть бути розділені на макроблоки. Кожний макроблок може бути додатково розділений. Макроблоки в кадрі або у вирізці з внутрішньокадровим кодуванням (I) кодуються з використанням просторового передбачення відносно сусідніх макроблоків. Макроблоки в кадрі або у вирізці з міжкадровим кодуванням (Р або В) можуть використовувати просторове передбачення відносно сусідніх макроблоків в тому ж самому кадрі або у вирізці або часове передбачення відносно інших опорних кадрів. Суть винаходу Загалом, винахід описує методики кодування даних цифрового відео з використанням великих макроблоків. Великі макроблоки є більшими, ніж макроблоки, як правило, призначені існуючими стандартами кодування відео. Більшість стандартів кодування відео призначають використання макроблока у вигляді 16×16-піксельного масиву. Відповідно до даного винаходу, кодер і декодер можуть використовувати великі макроблоки, які по розміру більші ніж 16×16 пікселів. Як приклади, великі макроблоки можуть мати 32×32, 64×64 або великий масив пікселів. Кодування відео основується на просторовій і/або часовій надмірності, щоб забезпечувати стиснення відеоданих. Відеокадри, сформовані з вищим просторовим дозволом і/або вищою частотою кадрів, можуть забезпечувати велику надмірність. Використання великих макроблоків, як описано в даному винаході, може надати методиці кодування відео можливість використання вищого рівня надмірності, що створюється по мірі зростання просторового дозволу і/або частоти кадрів. Відповідно до даного винаходу, методики кодування відео можуть використовувати різноманітні можливості для забезпечення кодування великих макроблоків. Як описано в даному винаході, методика кодування великого макроблока може розділяти великий макроблок на розділи і використовувати різні розміри розділів і різні режими кодування, наприклад різні просторові (I) або часові (Р або В) режими для вибраних розділів. Як інший приклад, методика кодування може використовувати значення ієрархічної моделі блоків, що кодуються, (CBP), для ефективної ідентифікації макроблоків, що кодуються, і розділів всередині великих макроблоків, що мають ненульовий коефіцієнт. Як додатковий приклад, методика кодування може порівнювати показники спотворення і швидкості, що отримуються при кодуванні з використанням великих і маленьких макроблоків, для вибору розміру макроблока, що дає сприятливіші результати. У одному прикладі, винахід надає спосіб, що містить: кодування, за допомогою кодера відео, відеоблока, що має розмір, більший ніж 16×16 пікселів; формування інформації синтаксису типу блоків, яка вказує розмір блока; і формування значення моделі блоків, що кодуються, для закодованого блока, при цьому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт. У іншому прикладі, винахід надає пристрій, що містить кодер відео, сконфігурований для: кодування відеоблока, що має розмір, більший ніж 16×16 пікселів; формування інформації синтаксису типу блоків, яка вказує розмір блока; і формування значення моделі блоків, що 1 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 кодуються, для закодованого блока, при цьому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт. У іншому прикладі, винахід надає комп'ютерочитаний носій інформації із закодованими на ньому інструкціями, які призначають пристрою кодування відео: закодувати, за допомогою кодера відео, відеоблок, що має розмір, більший ніж 16×16 пікселів; сформувати інформацію синтаксису типу блоків, яка вказує розмір блока; і сформувати значення моделі блоків, що кодуються, для закодованого блока, при цьому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт. У додатковому прикладі, винахід надає спосіб, що містить: прийом, за допомогою декодера відео, закодованого відеоблока, що має розмір, більший ніж 16×16 пікселів; прийом інформації синтаксису типу блоків, яка вказує розмір закодованого блока; прийом значення моделі блоків, що кодуються, для закодованого блока, при цьому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт; і декодування закодованого блока на основі інформації синтаксису типу блоків і значення моделі блоків, що кодуються, для закодованого блока. У додатковому прикладі, винахід надає пристрій, що містить декодер відео, сконфігурований для: прийому закодованого відеоблока, що має розмір, більший ніж 16×16 пікселів; прийому інформації синтаксису типу блоків, яка вказує розмір закодованого блока; прийому значення моделі блоків, що кодуються, для закодованого блока, при цьому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт; і декодування закодованого блока на основі інформації синтаксису типу блоків і значення моделі блоків, що кодуються, для закодованого блока. У іншому прикладі, винахід надає комп'ютерочитаний носій інформації, що містить інструкції, що призначають декодеру відео: прийняти закодований відеоблок, що має розмір, більший ніж 16×16 пікселів; прийняти інформацію синтаксису типу блоків, яка вказує розмір закодованого блока; прийняти значення моделі блоків, що кодуються, для закодованого блока, при цьому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт; і декодувати закодований блок на основі інформації синтаксису типу блоків і значення моделі блоків, що кодуються, для закодованого блока. У іншому прикладі, винахід надає спосіб, що містить: прийом, за допомогою кодера відео, відеоблока, що має розмір, більший ніж 16×16 пікселів; розділення блока на розділи; кодування одного з розділів, використовуючи перший режим кодування; кодування інших розділів, використовуючи другий режим кодування, відмінний від першого режиму кодування; і формування інформації синтаксису типу блоків, яка вказує розмір блока і вказує розділи і режими кодування, використані для кодування розділів. У додатковому прикладі, винахід надає пристрій, що містить кодер відео, сконфігурований для: прийому відеоблока, що має розмір, більший ніж 16×16 пікселів; розділення блока на розділи; кодування одного з розділів, використовуючи перший режим кодування; кодування інших розділів, використовуючи другий режим кодування, відмінний від першого режиму кодування; формування інформації синтаксису типу блоків, яка вказує розмір блока і вказує розділи і режими кодування, використані для кодування розділів. У іншому прикладі, винахід надає комп'ютерочитаний носій інформації із закодованими на ньому інструкціями, що призначають кодеру відео: прийняти відеоблок, що має розмір, більший ніж 16×16 пікселів; розділити блок на розділи; закодувати один з розділів, використовуючи перший режим кодування; закодувати інші розділи, використовуючи другий режим кодування, відмінний від першого режиму кодування; і сформувати інформацію синтаксису типу блоків, яка вказує розмір блока і вказує розділи і режими кодування, використані для кодування розділів. У додатковому прикладі, винахід надає спосіб, що містить: прийом, за допомогою декодера відео, відеоблока, що має розмір, більший ніж 16×16 пікселів, при цьому блок розділений на розділи, і один з розділів закодований за допомогою першого режиму кодування, а інші розділи закодовані за допомогою другого режиму кодування, відмінного від першого режиму кодування; прийом інформації синтаксису типу блоків, яка вказує розмір блока і вказує розділи і режими кодування, використані для кодування розділів; і декодування відеоблока на основі інформації синтаксису типу блоків. У іншому прикладі, винахід надає пристрій, що містить декодер відео, сконфігурований для: прийому відеоблока, що має розмір, більший ніж 16×16 пікселів, при цьому блок розділений на розділи, і один з розділів закодований за допомогою першого режиму кодування, а інші розділи закодовані за допомогою другого режиму кодування, відмінного від першого режиму кодування; прийому інформації синтаксису типу блоків, яка вказує розмір блока і вказує розділи і режими 2 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 кодування, використані для кодування розділів; і декодування відеоблока на основі інформації синтаксису типу блоків. У додатковому прикладі, винахід надає комп'ютерочитаний носій інформації із закодованими на ньому інструкціями, що призначають декодеру відео: прийняти відеоблок, що має розмір, більший ніж 16×16 пікселів, при цьому блок розділений на розділи, і один з розділів закодований за допомогою першого режиму кодування, а інші розділи закодовані за допомогою другого режиму кодування, відмінного від першого режиму кодування; прийняти інформацію синтаксису типу блоків, яка вказує розмір блока і вказує розділи і режими кодування, використані для кодування розділів; і декодувати відеоблок на основі інформації синтаксису типу блоків. У іншому прикладі, винахід надає спосіб, що містить: прийом, за допомогою кодера цифрового відео, одиниці кодування відео; визначення першого показника спотворення і швидкості для кодування одиниці кодування відео, що використовує перші відеоблоки з розмірами 16×16 пікселів; визначення другого показника спотворення і швидкості для кодування одиниці кодування відео, що використовує другі відеоблоки з розмірами, більшими ніж 16×16 пікселів; кодування одиниці кодування відео з використанням перших відеоблоків, якщо перший показник спотворення і швидкості менший другого показника спотворення і швидкості; і кодування одиниці кодування відео з використанням других відеоблоків, якщо другий показник спотворення і швидкості менший першого показника спотворення і швидкості. У додатковому прикладі, винахід надає пристрій, що містить кодер відео, сконфігурований для: прийому одиниці кодування відео; визначення першого показника спотворення і швидкості для кодування одиниці кодування відео, що використовує перші відеоблоки з розмірами 16×16 пікселів; визначення другого показника спотворення і швидкості для кодування одиниці кодування відео, що використовує другі відеоблоки з розмірами, більшими ніж 16×16 пікселів; кодування одиниці кодування відео з використанням перших відеоблоків, якщо перший показник спотворення і швидкості менший другого показника спотворення і швидкості; і кодування одиниці кодування відео з використанням других відеоблоків, якщо другий показник спотворення і швидкості менший першого показника спотворення і швидкості. У іншому прикладі, винахід надає комп'ютерочитаний носій інформації із закодованими на ньому інструкціями, що призначають кодеру відео: прийняти одиницю кодування відео; визначити перший показник спотворення і швидкості для кодування одиниці кодування відео, що використовує перші відеоблоки з розмірами 16×16 пікселів; визначити другий показник спотворення і швидкості для кодування одиниці кодування відео, що використовує другі відеоблоки з розмірами, більшими ніж 16×16 пікселів; кодувати одиницю кодування відео, використовуючи перші відеоблоки, якщо перший показник спотворення і швидкості менший другого показника спотворення і швидкості; і кодувати одиниці кодування відео, використовуючи другі відеоблоки, якщо другий показник спотворення і швидкості менший першого показника спотворення і швидкості. У іншому прикладі, винахід надає спосіб, що містить: кодування, за допомогою кодера відео, одиниці, що кодується, що містить множину відеоблоків, при цьому щонайменше один з множини відеоблоків містить розмір, більший ніж 16×16 пікселів; і формування інформації синтаксису для одиниці, що кодується, яка включає в себе значення максимального розміру, при цьому значення максимального розміру вказує розмір найбільшого одного з множини відеоблоків в одиниці, що кодується. У іншому прикладі, винахід надає пристрій, що містить кодер відео, сконфігурований для: кодування одиниці, що кодується, що містить множину відеоблоків, при цьому щонайменше один з множини відеоблоків містить розмір, більший ніж 16×16 пікселів; і формування інформації синтаксису для одиниці, що кодується, яка включає в себе значення максимального розміру, при цьому значення максимального розміру вказує розмір найбільшого одного з множини відеоблоків в одиниці, що кодується. У іншому прикладі, винахід надає пристрій, що містить засіб для кодування одиниці, що кодується, що містить множину відеоблоків, при цьому щонайменше один з множини відеоблоків містить розмір, більший ніж 16×16 пікселів, і засіб для формування інформації синтаксису для одиниці, що кодується, яка включає в себе значення максимального розміру, при цьому значення максимального розміру вказує розмір найбільшого одного з множини відеоблоків в одиниці, що кодується. У іншому прикладі, винахід надає комп'ютерочитаний носій інформації із закодованими на ньому інструкціями, що призначають програмованому процесору закодувати одиницю, що кодується, яка містить множину відеоблоків, при цьому щонайменше один з множини відеоблоків містить розмір, більший ніж 16×16 пікселів, і сформувати інформацію синтаксису для одиниці, що кодується, яка включає в себе значення максимального розміру, при цьому 3 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 значення максимального розміру вказує розмір найбільшого одного з множини відеоблоків в одиниці, що кодується. У іншому прикладі, винахід надає спосіб, що містить: прийом, за допомогою декодера відео, одиниці, що кодується, яка містить множину відеоблоків, при цьому щонайменше один з множини відеоблоків містить розмір, більший ніж 16×16 пікселів; прийом інформації синтаксису для одиниці, що кодується, яка включає в себе значення максимального розміру, при цьому значення максимального розміру вказує розмір найбільшого одного з множинии відеоблоків в одиниці, що кодується; вибір декодера синтаксису типу блоків відповідно до значень максимального розміру; і декодування кожного з множини відеоблоків в одиниці кодування з використанням вибраного декодера синтаксису типу блоків. У іншому прикладі, винахід надає пристрій, що містить декодер відео, сконфігурований для: прийому одиниці кодування, що містить множину відеоблоків, при цьому щонайменше один з множини відеоблоків містить розмір, більший ніж 16×16 пікселів; прийому інформації синтаксису для одиниці, що кодується, яка включає в себе значення максимального розміру, при цьому значення максимального розміру вказує розмір найбільшого одного з множини відеоблоків в одиниці, що кодується; вибору декодера синтаксису типу блоків відповідно до значень максимального розміру; і декодування кожного з множини відеоблоків в одиниці, що кодується, з використанням вибраного декодера синтаксису типу блоків. У іншому прикладі, винахід надає засіб для прийому одиниці, що кодується, що містить множину відеоблоків, при цьому щонайменше один з множини відеоблоків містить розмір, більший ніж 16×16 пікселів, засіб для прийому інформації синтаксису для одиниці, що кодується, яка включає в себе значення максимального розміру, при цьому значення максимального розміру вказує розмір найбільшого одного з множини відеоблоків в одиниці, що кодується, засіб для вибору декодера синтаксису типу блоків відповідно до значень максимального розміру і засіб для декодування кожного з множини відеоблоків в одиниці, що кодується, з використанням вибраного декодера синтаксису типу блоків. У іншому прикладі, винахід надає комп'ютерочитаний носій інформації із закодованими на ньому інструкціями, що призначають програмованому процесору: прийняти одиницю, що кодується, що містить множину відеоблоків, при цьому щонайменше один з множини відеоблоків містить розмір, більший ніж 16×16 пікселів; прийняти інформацію синтаксису для одиниці, що кодується, яка включає в себе значення максимального розміру, при цьому значення максимального розміру вказує розмір найбільшого одного з множинии відеоблоків в одиниці, що кодується; вибрати декодер синтаксису типу блоків відповідно до значень максимального розміру; і декодувати кожний з множини відеоблоків в одиниці, що кодується, використовуючи вибраний декодер синтаксису типу блоків. Подробиці одного або більше прикладів викладені в супровідних кресленнях і нижченаведеному описі. Інші ознаки, цілі і переваги стануть очевидні з опису і креслень і з формули винаходу. Короткий опис креслень Фіг. 1 є структурною схемою, що ілюструє приклад системи кодування і декодування відео, яка кодує і декодує дані цифрового відео, використовуючи великі макроблоки. Фіг. 2 є структурною схемою, що ілюструє приклад кодера відео, який реалізовує методики кодування великих макроблоків. Фіг. 3 є структурною схемою, що ілюструє приклад декодера відео, який реалізує методики кодування великих макроблоків. Фіг. 4A є концептуальною схемою, що ілюструє розділення великого макроблока по різних рівнях. Фіг. 4B є концептуальною схемою, що ілюструє різні режими кодування для різних розділів великого макроблока. Фіг. 5 є концептуальною схемою, що ілюструє ієрархічний вид різних рівнів великого макроблока. Фіг. 6 є блок-схемою, що ілюструє зразковий спосіб встановлення значення моделі блоків, що кодуються, (CBP), 64×64-піксельного великого макроблока. Фіг. 7 є блок-схемою, що ілюструє зразковий спосіб встановлення значення CBR 32×32піксельного розділу 64×64-піксельного великого макроблока. Фіг. 8 є блок-схемою, що ілюструє зразковий спосіб встановлення значення CBP 16×16піксельного розділу, 32×32-піксельного розділу 64×64-піксельного великого макроблока. Фіг. 9 є блок-схемою, що ілюструє зразковий спосіб визначення двобітного значення luma16×8_CBP. 4 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 Фіг. 10 є структурною схемою, що ілюструє зразкове компонування 64×64-піксельного великого макроблока. Фіг. 11 є блок-схемою, що ілюструє зразковий спосіб обчислення оптимального розділення і способів кодування для N×N-піксельного великого відеоблока. Фіг. 12 є структурною схемою, що ілюструє зразковий 64×64-піксельний макроблок з різними розділами і вибраними способами кодування для кожного розділу. Фіг. 13 є блок-схемою, що ілюструє зразковий спосіб визначення оптимального розміру макроблока для кодування кадру відеопослідовності. Фіг. 14 є структурною схемою, що ілюструє зразковий прилад бездротового зв'язку, що включає в себе кодер/декодер (КОДЕК) відео, який кодує дані цифрового відео, використовуючи великі макроблоки. Фіг. 15 є структурною схемою, що ілюструє зразкове представлення у вигляді масиву ієрархічного представлення CBP для великого макроблока. Фіг. 16 є структурною схемою, що ілюструє зразкову деревовидну структуру, відповідну ієрархічному представленню CBP на Фіг. 15. Фіг. 17 є блок-схемою, що ілюструє зразковий спосіб використання інформації синтаксису одиниці, що кодується. для вказування і вибору кодерів і декодерів синтаксису основаного на блоках для відеоблоків одиниці, що кодується. Докладний опис Винахід описує методики кодування і декодування даних цифрового відео з використанням великих макроблоків. Великі макроблоки більші макроблоків, які, як правило, призначені існуючими стандартами кодування відео. Більшість стандартів кодування відео призначають використання макроблока у вигляді 16×16-піксельного масиву. Відповідно до винаходу, кодер і/або декодер може використовувати великі макроблоки, які розміром більші, ніж 16×16 пікселів. Як приклади, великий макроблок може мати 32×32, 64×64 або навіть, можливо, більший масив пікселів. Як правило, макроблок, відповідно до того, як це поняття використовується у винаході, може належати до структури даних застосовно до масиву пікселів, який має заданий розмір, виражений як N×N пікселів, де N є позитивним цілочисельним значенням. Макроблок може задавати чотири блоки яскравості, кожний з яких містить масив з (N/2)×(N/2) пікселів, два блоки кольоровості, кожний з яких містить масив з N×N пікселів і заголовок, що містить інформацію типу макроблока та інформацію моделі блоків, що кодуються, (CBP), як розглядається детальніше нижче. Звичайні стандарти кодування відео звичайно призначають, що заданим розміром макроблока є 16×16-піксельний масив. Відповідно до різних описаних в даному винаході методик, макроблоки можуть містити масив з N×N пікселів, де N може бути більшим 16. Також звичайні стандарти кодування відео призначають, що макроблоку з міжкадровим кодуванням, як правило, призначається один вектор руху. Відповідно до різних описаних в даному винаході методик, розділам з міжкадровим кодуванням макроблока N×N може бути призначена множина векторів руху, як описується детальніше нижче. Згадування "великих макроблоків" або подібного словосполучення, як правило, належить до макроблоків з масивом пікселів, більшим ніж 16×16. У деяких випадках, великі макроблоки можуть забезпечувати поліпшення ефективності кодування і/або скорочення витрат на передачу даних, зберігаючи при цьому або, можливо, поліпшуючи якість зображення. Наприклад, використання великих макроблоків може надати можливість кодеру і/або декодеру відео використовувати перевагу збільшеної надмірності, що надається даними відео, що формуються із збільшеним просторовим дозволом (наприклад, 1280×720 або 1920×1080 пікселів на кадр) і/або збільшеної частоти кадрів (наприклад, 30 або 60 кадрів в секунду). Як ілюстрація, послідовність цифрового відео з просторовим дозволом 1280×720 пікселів на кадр і частотою кадрів, що становить 60 кадрів в секунду, в просторовому відношенні в 36 разів більша і у часовому відношенні в 4 рази швидша, ніж послідовність цифрового відео з просторовим дозволом 176×144 пікселів на кадр і частотою кадрів, що становить 15 кадрів в секунду. За допомогою збільшеного розміру макроблока, кодер і/або декодер відео може краще використовувати просторову і/або часову надмірність для забезпечення стиснення відеоданих. Також за допомогою використання більших макроблоків, може кодуватися менше число блоків для заданого кадру або вирізки, зменшуючи обсяг службової інформації, яку потрібно передати. Іншими словами, більші макроблоки можуть надати можливість скорочення загального числа макроблоків, що кодуються, на кожний кадр або вирізку. Якщо просторовий дозвіл кадру збільшується, наприклад, в чотири рази, то тоді для пікселів в кадрі буде потрібно 5 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 в чотири рази більше макроблоків 16×16. У цьому прикладі, число макроблоків, необхідних для обробки просторового дозволу, що зріс, скорочується при використанні макроблоків 64×64. За допомогою скороченого числа макроблоків на кожний кадр або вирізку, наприклад, може бути скорочений сукупний обсяг інформації кодування, такої як інформації синтаксису, даних векторів руху і подібної. У даному винаході розмір макроблока, як правило, належить до числа пікселів, вміщених в макроблоці, наприклад, 64×64, 32×32, 16×16 або подібному. Отже, великий макроблок (наприклад, 64×64 або 32×32) може бути великим в тому значенні, що він вміщає в себе більше число пікселів, ніж макроблок 16×16. Проте, просторова зона, задана вертикальним і горизонтальним розмірами великого макроблока, тобто, частина зони, заданої вертикальним і горизонтальним розмірами відеокадру, може бути, а може і не бути більшою зони звичайного макроблока 16×16. У деяких прикладах, зона великого макроблока може бути точно такою ж або схожою на звичайний макроблок 16×16. Проте, великий макроблок має вищий просторове розрізнення, що описується вищим числом і вищою просторовою щільністю пікселів всередині макроблока. Розмір макроблока може конфігуруватися на основі, щонайменше частково, числа пікселів в кадрі, тобто, просторового дозволу в кадрі. Якщо кадр має вище число пікселів, великий макроблок може бути сконфігурований таким чином, щоб мати вище число пікселів. Як ілюстрація, кодер відео може бути сконфігурований для використання 32×32-піксельного макроблока для 1280×720 піксельного кадру, що відображається з частотою 30 кадрів в секунду. Як інша ілюстрація, кодер відео може бути сконфігурований для використання 64×64піксельного макроблока для 1280×720 піксельного кадру, що відображається з частотою 60 кадрів в секунду. Кожний макроблок, що кодується кодером, може вимагати даних, які описують одну або більше характеристик макроблока. Дані можуть вказувати, наприклад, дані типу макроблока, щоб являти собою розмір макроблока, спосіб, яким розділений макроблок, і режим кодування (просторовий або часовий), що застосовується до макроблока і/або його розділів. У доповнення, дані можуть включати в себе дані різниці векторів руху (mvd) нарівні з іншими елементами синтаксису, які являють собою інформацію вектора руху для макроблока і/або його розділу. Також дані можуть включати в себе значення моделі блоків, що кодуються, нарівні з іншими елементами синтаксису, щоб являти собою інформацію залишку після передбачення. Для великого макроблока дані типу макроблока можуть надаватися в єдиному заголовку макроблока. Як згадано вище, за допомогою використання великого макроблока, кодер може скоротити число макроблоків на кожний кадр або вирізку, і тим самим скоротити об'єм мережевих службових даних, які потрібно передати для кожного кадру або вирізки. Також, за допомогою використання великого макроблока, може бути скорочене загальне число макроблоків для конкретного кадру або вирізки, що може зменшити артефакти блочності у відео, що відображається користувачеві. Методики кодування відео, описані в даному винаході, можуть використовувати одну або більше можливостей для забезпечення кодування великих макроблоків. Наприклад, великий макроблок може бути розділений на менші розділи. До вибраних розділів всередині великого макроблока можуть застосовуватися різні режими кодування, наприклад, різні просторові (I) або часові (Р або В) режими кодування. Також, можуть використовуватися ієрархічні значення моделі блоків, що кодуються, (CBP), для ефективної ідентифікації кодованих макроблоків і розділів, що мають ненульові коефіцієнти перетворення, що являють собою дані залишку. У доповнення, для кодування з використанням макроблоків великого і маленького розмірів може виконуватися порівняння показників спотворення і швидкості для вибору розміру макроблока, що дає сприятливі результати. Крім того, одиниця, що кодується, (наприклад, кадр, вирізка, послідовність або група зображень), що містить макроблоки розмірів, які змінюються, може включати в себе елемент синтаксису, який вказує розмір найбільшого макроблока в одиниці, що кодується. Як описано детальніше нижче, великі макроблоки містять інший синтаксис рівня блока, ніж стандартні 16×16-піксельні блоки. Відповідно, за допомогою вказування розміру найбільшого макроблока в одиниці, що кодується, кодер може сигналізувати декодеру синтаксис рівня блока, який повинен застосувати декодер до макроблоків одиниці, що кодується. Використання різних режимів кодування для різних розділів у великому макроблоці може називатися як змішаний режим кодування великих макроблоків. Замість одноманітного кодування макроблока таким чином, що всі розділи мають один і той же режим з внутрішньокадровим або з міжкадровим кодуванням, великий макроблок може кодуватися 6 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 таким чином, що деякі розділи мають різні режими кодування, як наприклад, різні режими з внутрішньокадровим кодуванням (наприклад, I_16×16, I_8×8, I_4×4) або режими з внутрішньокадровим кодуванням і міжкадровим кодуванням. Якщо великий макроблок поділений на два або більше розділів то, наприклад, щонайменше один розділ може кодуватися за допомогою першого режиму, а інший розділ може кодуватися за допомогою другого режиму, який відмінний від першого режиму. У деяких випадках, перший режим може бути першим I режимом, а другий режим може бути другим I режимом, відмінним від першого I режиму. У інших випадках, перший режим може бути I режимом, а другий режим може бути Р або В режимом. Отже, в деяких прикладах, великий макроблок може включати в себе один або більше розділів з часовим (Р або В) кодуванням і один або більше розділів з просторовим (I) кодуванням, або один або більше розділів з просторовим кодуванням, але з різними I режимами. Одне або більше значень ієрархічної моделі блоків, що кодуються, (CBP), можуть використовуватися для ефективного опису того, чи мають які-небудь розділи великого макроблока щонайменше один ненульовий коефіцієнт перетворення і, якщо так, то які розділи. Коефіцієнти перетворення кодують дані залишку для великого макроблока. Біт рівня CBP великого макроблока вказує на те, чи включають в себе які-небудь розділи у великому макроблоці ненульовий, квантований коефіцієнт. Якщо ні, то немає необхідності в розгляді того, чи має який-небудь з розділів ненульовий коефіцієнт, оскільки відомо, що весь великий макроблок не має ненульових коефіцієнтів. У цьому випадку, для декодування макроблока може використовуватися передбачений макроблок без даних залишку. Як альтернатива, якщо значення CBP рівня макроблока вказує на те, що щонайменше один розділ у великому макроблоці має ненульовий коефіцієнт, то потім можуть аналізуватися значення CBP рівня розділу для того, щоб ідентифікувати, який з розділів включає в себе щонайменше один ненульовий коефіцієнт. Потім декодер може отримати відповідні дані залишку для розділів, що маіють щонайменше один ненульовий коефіцієнт, і декодувати розділи, використовуючи дані залишку і дані передбаченого блока. У деяких випадках, один або більше розділів можуть мати ненульові коефіцієнти, і тому включають в себе значення CBP рівня розділу з відповідним вказуванням. Як великий макроблок, так і щонайменше деякі розділи можуть бути більшими, ніж 16×16 пікселів. Для вибору розмірів макроблока, що дають сприятливі показники спотворення і швидкості, показники спотворення і швидкості можуть аналізуватися як для великих макроблоків (наприклад, 32×32 або 64×64), так і для маленьких макроблоків (наприклад, 16×16). Наприклад, кодер може виконувати порівняння показників спотворення і швидкості між макроблоками 16×16, макроблоками 32×32 і макроблоками 64×64 для одиниці, що кодується, такої як кадр або вирізка. Потім кодер може вибрати розмір макроблока, який приводить до найкращого співвідношення спотворення і швидкості і закодувати одиницю, що кодується, використовуючи вибраний розмір макроблока, тобто, розмір макроблока з найкращим показником спотворення і швидкості. Вибір може бути оснований на кодуванні кадру або вирізки в три або більше проходів, наприклад, перший прохід з використанням 16×16-піксельних макроблоків, другий прохід з використанням 32×32-піксельних макроблоків і третій прохід з використанням 64×64-піксельних макроблоків, і порівнянні показників спотворення і швидкості для кожного проходу. Таким чином, кодер може оптимізувати співвідношення спотворення і швидкості за допомогою зміни розміру макроблока і вибору розміру макроблока, який приводить до найкращого або оптимального показника спотворення і швидкості для заданої одиниці кодування, такої як вирізка або кадр. Кодер додатково може передати інформацію синтаксису одиниці, що кодується, наприклад, як частину заголовка кадру або заголовка вирізки, яка ідентифікує розмір макроблоків, використаних в одиниці, що кодується. Як розглядається детальніше нижче, інформація синтаксису для одиниці кодування може містити покажчик максимального розміру, який вказує максимальний розмір макроблоків, що використовуються в одиниці, що кодується. Таким чином, кодер може повідомити декодеру, наприклад, який синтаксис очікувати для макроблоків одиниці, що кодується. Коли максимальний розмір макроблоків містить 16×16 пікселів, декодер може очікувати використання синтаксису стандарту H.264 і аналізувати макроблоки відповідно до синтаксису, заданого для H.264. Проте, коли максимальний розмір макроблока більший 16×16, наприклад, містить 64×64 пікселів, декодер може очікувати використання змінених і/або додаткових елементів синтаксису, які належать до обробки більших макроблоків, як ті, що описані в даному винаході, і аналізувати макроблоки відповідно до такого зміненого або додаткового синтаксису. 7 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 Для деяких відеокадрів або вирізок, великі макроблоки можуть дати солідну економію швидкості передачі бітів і тим самим привести до найкращих результатів спотворення і швидкості, що дає порівняно низьке спотворення. Проте для інших відеокадрів або вирізок, менші макроблоки можуть давати менше спотворення, переважуючи швидкість передачі бітів в аналізі витрат спотворення і швидкості. Отже, в різних випадках, 64×64, 32×32 або 16×16 можуть бути відповідними розмірами для різних відеокадрів або вирізок, наприклад, залежно від вмісту і складності відео. Фіг. 1 є структурною схемою, що ілюструє приклад системи 10 кодування і декодування відео, яка використовує методики кодування/декодування даних цифрового відео з використанням великого макроблока, тобто, макроблока, який вміщає в себе більше пікселів, ніж макроблок 16×16. Як показано на Фіг. 1, система 10 включає в себе прилад 12 джерело, який передає закодоване відео приладу 14 призначення через канал 16 зв'язку. Прилад 12 джерело і прилад 14 призначення можуть містити будь-який з широкого різноманіття приладів. У деяких випадках, прилад 12 джерело і прилад 14 призначення можуть містити прилади бездротового зв'язку, такі як бездротові телефонні трубки, так званістільникові або супутникові радіотелефони, або будь-які бездротові прилади, які можуть обмінюватися відео інформацією по каналу 16 зв'язку, і в цьому випадку канал 16 зв'язку є бездротовим. Проте, методики даного винаходу, які стосуються використання великого макроблока, що містить більше пікселів, ніж макроблоки, призначені звичайними стандартами кодування відео, не обов'язково обмежуються застосуванням або настройками для бездротового використання. Наприклад, ці методики можуть застосовуватися до ефірного телевізійного мовлення, передач кабельного телебачення, передач супутникового телебачення, передач Інтернет відео, закодованого цифрового відео, яке закодоване на носії інформації, або до інших сценаріїв. Відповідно, канал 16 зв'язку може містити бездротові або дротові засоби зв'язку, придатні для передачі закодованих відеоданих. У прикладі на Фіг. 1, прилад 12 джерело може включати в себе джерело 18 відео, кодер 20 відео, модулятор/демодулятор (модем) 22 і передавач 24. Прилад 14 призначення може включати в себе приймач 26, модем 28, декодер 30 відео і прилад 32 відображення. Відповідно до даного винаходу, кодер 20 відео приладу 12 джерела може бути сконфігурований для застосування однієї або більше методик використання, в процесі кодування відео, великого макроблока, що має розмір, більший ніж розмір макроблока, призначений звичайними стандартами кодування відео. Аналогічним чином, декодер 30 відео приладу 14 призначення може бути сконфігурований для застосування однієї або більше методик використання, в процесі декодування відео, розміру макроблока, який більший розміру макроблока, призначеного звичайними стандартами кодування відео. Проілюстрована система 10 з Фіг. 1 є усього лише прикладом. Методики використання великого макроблока, описані в даному винаході, можуть виконуватися будь-яким приладом кодування і/або декодування цифрового відео. Прилад 12 джерело і прилад 14 призначення є усього лише прикладами таких приладів кодування, в яких прилад 12 джерело формує кодовані відеодані для передачі приладу 14 призначення. У деяких прикладах, прилади 12, 14 можуть функціонувати, по суті, симетричним чином, так, що кожний з приладів 12, 14 включає в себе компоненти кодування і декодування. Отже, система 10 може забезпечувати односторонню або двосторонню передачу відео між відео приладами 12, 14, наприклад, застосовно до потокової передачі відео, відтворення відео, відеомовлення або відеотелефонії. Джерело 18 відео приладу 12 джерела може включати в себе прилад захоплення відео, такий як відеокамера, відеоархів, що вміщає в себе раніше захоплене відео, і/або подачу відео від постачальника відео контенту. Як додаткова альтернатива, джерело 18 відео може формувати дані, основані на комп'ютерній графіці, як джерело відео, або поєднання живого відео, архівного відео і сформованого комп'ютером відео. У деяких випадках, якщо джерелом 18 відео є відеокамера, то прилад 12 джерело і прилад 14 призначення можуть утворювати так звані телефони з камерою або відеотелефони. Проте, як відмічено вище, описані в даному винаході методики можуть застосовуватися до кодування відео загалом, і можуть використовуватися в бездротових або дротових додатках. У будь-якому випадку, захоплене, заздалегідь захоплене або сформоване комп'ютером відео може кодуватися кодером 20 відео. Потім закодована відео інформація може модулюватися модемом 22 відповідно до стандарту зв'язку, і передаватися приладу 14 призначення через передавач 24. Модем 22 може включати в себе різноманітні перетворювачі частоти, фільтри, підсилювачі або інші компоненти, розроблені для модуляції сигналу. Передавач 24 може включати в себе схеми, розроблені для передачі даних, включаючи підсилювачі, фільтри і одну або більше антен. Приймач 26 приладу 14 призначення приймає інформацію по каналу 16, а модем 28 демодулює інформацію. Варто знову зазначити, що процес кодування відео може 8 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 реалізовувати одну або більше описаних тут методик для використання великого макроблока, наприклад, більшого ніж 16×16, для міжкадрового (тобто, часового) і/або внутрішньокадрового (тобто, просторового) кодування відеоданих. Процес декодування відео, виконуваний декодером 30 відео, також може використовувати такі методики під час процесу декодування. Інформація, передана по каналу 16, може включати в себе інформацію синтаксису, задану кодером 20 відео, яка також використовується декодером 30 відео, і яка включає в себе елементи синтаксису, які описують характеристики і/або спосіб обробки великих макроблоків, як розглядається детальніше нижче. Інформація синтаксису може включатися в будь-який або у всі заголовки кадру, заголовки вирізки, заголовки послідовності (наприклад, застосовно до H.264, за допомогою використання профілю і рівня, якому відповідає кодована відеопослідовність), або заголовки макроблока. Прилад 32 відображення відображає декодовані відеодані користувачеві і може містити будь-який з різноманіття приладів відображення, таких як електронно-променевої трубки (CRT), рідкокристалічного дисплея (LCD), плазмового дисплея, дисплея на органічних світловипромінюючих діодах, або прилад відображення іншого типу. У прикладі на Фіг. 1, канал 16 зв'язку може містити будь-який бездротовий або дротовий засіб зв'язку, такий як спектр радіочастот (RF) або одна або більше фізичних ліній передачі, або будь-яке поєднання бездротових і дротових засобів зв'язку. Канал 16 зв'язку може бути частиною мережі пакетної передачі даних, такої як локальної мережі, широкомасштабної мережі або глобальної мережі, такої як Інтернет. Канал 16 зв'язку, як правило, являє собою будь-який прийнятний засіб зв'язку, або сукупність різних засобів зв'язку, для передачі відеоданих від приладу 12 джерела до приладу 14 призначення, включаючи будь-яке прийнятне поєднання дротових або бездротових засобів зв'язку. Канал 16 зв'язку може включати в себе маршрутизатори, комутатори, базові станції або будь-яке інше обладнання, яке може бути корисним для сприяння зв'язку від приладу 12 джерела до приладу 14 призначення. Кодер 20 відео і декодер 30 відео можуть функціонувати відповідно до стандарту стиснення відео, такого як стандарт ITU-T H.264, альтернативно описаний як MPEG-4, Частина 10, Поліпшене Кодування Відео (AVC). Проте, методики даного винаходу не обмежені яким-небудь конкретним стандартом кодування. Інші приклади включають в себе MPEG-2 і ITU-T H.263. Незважаючи на те, що не показано на Фіг. 1, в деяких аспектах, кодер 20 відео і декодер 30 відео, кожний з яких може бути із вбудованим кодером і декодером аудіо, і може включати в себе відповідні модулі MUX-DEMUX (мультиплексування-демультиплексування), або інші компоненти апаратного і програмного забезпечення, для обробки кодування як аудіо, так і відео в загальному потоці даних або окремих потоках даних. Якщо застосовно, то модулі MUXDEMUX можуть відповідати протоколу ITU H.223 мультиплексора, або іншим протоколам, такому як протокол користувацьких дейтаграм (UDP). Стандарт ITU-T H.264/MPEG-4 (AVC) був сформульований Експертною Групою по Кодуванню Відео (VCEG) ITU-T спільно з Експертною Групою з питань Рухомого Зображення (MPEG) ISO/IEC як результат спільного партнерства, відомий як Спільна Відео Команда (JVT). У деяких аспектах, описані в даному винаході методики можуть застосовуватися до приладів, які загалом відповідають стандарту H.264. Стандарт H.264 описаний в Рекомендаціях ITU-T по H.264, Поліпшене Кодування Відео для загальних аудіовізуальних послуг, від Дослідницької Групи ITU-T, і датовані березнем 2005, які можуть називатися тут як стандарт H.264 або специфікація H.264, або стандарт або специфікація H.264/AVC. Спільна Відео Команда (JVT) продовжує роботу над поліпшенням H.264/MPEG-4 AVC. Кодер 20 відео і декодер 30 відео можуть бути реалізовані як будь-яка з різноманіття прийнятних схем кодера, таких як одного або більше мікропроцесорів, цифрових сигнальних процесорів (DSP), проблемно-орієнтованих інтегральних схем (ASIC), програмованих вентильних матриць (FPGA), дискретної логіки, програмного забезпечення, апаратного забезпечення, вбудованого програмного забезпечення або будь-якого їх поєднання. Кожний з кодера 20 відео і декодера 30 відео може бути включений в один або більше кодуючих приладів або декодуючих приладів, будь-який з яких може бути вбудований як частина об'єднаного кодуючого/декодуючого (КОДЕК) приладу у відповідній камері, комп'ютері, мобільному приладі, приладі абонента, приладі мовлення, телевізійній абонентській приставці, сервері або подібному. Відеопослідовність, як правило, включає в себе серії відеокадрів. Кодер 20 відео оперує з блоками відео всередині окремих відеокадрів для того, щоб закодувати відеодані. Відеоблок може відповідати макроблоку або розділу макроблока. Відеоблок може додатково відповідати розділу розділа. Відеоблоки можуть мати фіксовані або розміри, що змінюються, і можуть відрізнятися по розміру відповідно до вказаного стандарту кодування або відповідно до 9 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 описаних тут методик. Кожний відеокадр може включати в себе множину вирізок. Кожна вирізка може включати в себе множину макроблоків, які можуть бути скомпоновані в розділи, що також називаються як субблоки. Як приклад, стандарт ITU-T H.264 підтримує внутрішньокадрове передбачення в різних розмірах блока, таких як 16 на 16, 8 на 8 або 4 на 4 для компонентів яскравості і 8×8 для компонентів кольоровості, а також міжкадрове передбачення в різних розмірах блока, таких як 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 і 4×4 для компонентів яскравості і відповідні масштабні розміри для компонентів кольоровості. У даному винаході, "х" і "на" можуть використовуватися взаємозамінно відносно розмірів блока в пікселях в обчисленні вертикальних і горизонтальних розмірів, наприклад, 16×16 пікселів або 16 на 16 пікселів. Як правило, блок 16×16 буде мати 16 пікселів у вертикальному напрямку і 16 пікселів в горизонтальному напрямку. Подібним чином, блок N×N загалом має N пікселів у вертикальному напрямку і N пікселів в горизонтальному напрямку, де N являє собою позитивне цілочисельне значення, яке може бути більшим 16. Пікселі в блоці можуть бути скомпоновані в рядки і стовпці. Розміри блоків, які менші 16 на 16 можуть називатися як розділи макроблока 16 на 16. Подібним чином, для блока N×N, розміри блоків менші N×N можуть називатися як розділи блока N×N. Методики даного винаходу описують внутрішньокадрове і міжкадрове кодування застосовно до макроблоків більших, ніж звичайний 16×16-піксельний макроблок, таких як 32×32піксельні макроблоки, 64×64-піксельні макроблоки або більших макроблоків. Відеоблоки можуть містити блоки даних пікселів в діапазоні пікселів, або блоки коефіцієнтів перетворення в діапазоні перетворень, наприклад, наступні застосування перетворення, такі як дискретне косинусне перетворення (DCT), цілочисельне перетворення, вейвлет перетворення або концептуально аналогічне перетворення до даних залишку відеоблока, що представляють різницю між пікселями між кодованими відеоблоками і передбаченими відеоблоками. У деяких випадках, відеоблок може містити блоки квантованих коефіцієнтів перетворення в діапазоні перетворення. Менші відеоблоки можуть забезпечувати кращий дозвіл, і можуть використовуватися для зон відеокадру, які включають в себе високі рівні деталізування. Загалом, макроблоки і різні розділи, що іноді називаються як субблоки, можуть розглядатися як відеоблоки. У доповнення, вирізка може розглядатися як множина відеоблоків, таких як макроблоки і/або субблоки. Кожна вирізка може бути одиницею відеокадра, що незалежно декодується. Як альтернатива, самі по собі кадри можуть бути одиницями, що декодуються, або як одиниці, що декодуються, можуть бути задані інші частини кадру. Поняття "одиниця, що кодується" або "одиниця кодування" може належати до будь-якої одиниці відеокадру, що незалежно декодується, такої як повний кадр, вирізка кадру, група зображень (GOP), що також називається як послідовність, або іншої одиниці, що незалежно декодується, заданої відповідно до застосовних методик кодування. Услід за кодуванням з внутрішньокадровим передбаченням або міжкадровим передбаченням для створення передбачених даних і даних залишку, і услід за будь-яким перетворенням (таким як 4×4 або 8×8 цілочисельне перетворення, використовуване в H.264/AVC, або дискретне косинусне перетворення DCT) для створення коефіцієнтів перетворення, може виконуватися квантування коефіцієнтів перетворення. Квантування, як правило, належить до процесу, при якому коефіцієнти перетворення квантуються для можливого зменшення об'єму даних, використовуваних для представлення коефіцієнтів. Процес квантування може зменшити бітову глибину, пов'язану з деякими або всіма коефіцієнтами. Наприклад, n-бітне значення може бути округлене до m-бітного значення під час квантування, де n більше m. Услід за квантуванням, може виконуватися ентропійне кодування квантованих даних, наприклад, відповідно до контекстнозалежного адаптивного кодування зі змінною довжиною кодового слова (CAVLC), контекстнозалежного адаптивного бінарного арифметичного кодування (CABAC) або іншої методології ентропійного кодування. Модуль обробки, сконфігурований для ентропійного кодування, або інший модуль обробки, може виконувати інші функції обробки, такі як кодування довжини серій нулів квантованих коефіцієнтів і/або формування інформації синтаксису, такої як значень CBP, типу макроблока, режиму кодування, максимального розміру макроблока для одиниці, що кодується, (такої як кадр, вирізка, макроблок або послідовність) або подібних. Відповідно до різних методик даного винаходу, кодер 20 відео може використовувати макроблок, який більший ніж той, що призначається звичайними стандартами кодування відео для кодування даних цифрового відео. У одному прикладі, кодер 20 відео може: кодувати, за допомогою кодера відео, відеоблок, що має розмір, більший ніж 16×16 пікселів; сформувати інформацію синтаксису типу блоків, яка вказує розмір блока; і сформувати значення CBP для 10 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 закодованого блока, при цьому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт. Інформація синтаксису типу блоків макроблока може надаватися в заголовку макроблока для великого макроблока. Інформація синтаксису типу блоків макроблока може вказувати адресу або положення макроблока в кадрі або вирізки, або номер макроблока, який вказує положення макроблока, тип режиму кодування застосованого до макроблока, значення квантування для макроблока, будьяку інформацію вектора руху для макроблока і значення CBP для макроблока. У іншому прикладі, кодер 20 відео може: прийняти відеоблок, що має розмір, більший ніж 16×16 пікселів; розділити блок на розділи; закодувати один з розділів, використовуючи перший режим кодування; закодувати інший розділ, використовуючи другий режим кодування, відмінний від першого режиму кодування; і сформувати інформацію синтаксису типу блоків, яка вказує розмір блока і вказує розділи і режими кодування, використані для кодування розділів. У додатковому прикладі, кодер 20 відео може: прийняти одиницю кодування відео, таку як кадр або вирізку; визначити перший показник спотворення і швидкості для кодування одиниці кодування відео з використанням перших відеоблоків з розмірами 16×16 пікселів; визначити другий показник спотворення і швидкості для кодування одиниці кодування відео з використанням других відеоблоків з розміром, більшим ніж 16×16 пікселів; закодувати одиницю кодування відео, використовуючи перші відеоблоки, коли перший показник спотворення і швидкості менший другого показника спотворення і швидкості; і закодувати одиницю кодування відео, використовуючи другі відеоблоки, коли другий показник спотворення і швидкості менший першого показника спотворення і швидкості. У одному прикладі, декодер 30 відео може: прийняти закодований відеоблок, що має розмір, більший ніж 16×16 пікселів; прийняти інформацію синтаксису типу блоків, яка вказує розмір закодованого блока; прийняти значення моделі блоків, що кодуються, для закодованого блока, при цьому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт; і декодувати закодований блок на основі інформації синтаксису типу блоків і значення моделі блоків, що кодуються, для закодованого блока. У іншому прикладі, декодер 30 відео може: прийняти відеоблок, що має розмір, більший ніж 16×16 пікселів, при цьому блок розділений на розділи, і один з розділів - з внутрішньокадровим кодуванням, а інший з розділів - з міжкадровим кодуванням; прийняти інформацію синтаксису типу блоків, яка вказує розмір блока і вказує розділи і режими кодування, використані для кодування розділів; і декодувати відеоблок на основі інформації синтаксису типу блоків. Фіг. 2 є структурною схемою, що ілюструє приклад кодера 50 відео, який може реалізовувати методики використання великого макроблока відповідно до даного винаходу. Кодер 50 відео може відповідати кодеру 20 відео приладу 12 джерела, або кодеру відео іншого приладу. Кодер 50 відео може виконувати внутрішньокадрове і міжкадрове кодування блоків всередині відеокадрів, що включають в себе великі макроблоки або розділи або суброзділи великих макроблоків. Внутрішньокадрове кодування основується на просторовому передбаченняі для скорочення або видалення просторової надмірності відео всередині заданого відеокадра. Міжкадрове кодування основується на часовому передбаченняі для скорочення або видалення часової надмірності у відео всередині сусідніх кадрів відеопослідовності. Внутрішньокадровий режим (I-режим) може належати до будь-якого з декількох просторових режимів стиснення, а міжкадрові режими, такі як передбачення (Р-режим) або двоспрямований (В-режим) можуть належати до будь-якого з декількох часових режимів стиснення. Методики даного винаходу можуть застосовуватися як під час внутрішньокадрового кодування, так і міжкадрового кодування. У деяких випадках, методики даного винаходу також можуть застосовуватися до кодування цифрових зображень, що не належать до відео. Тобто, кодер цифрового нерухомогозображення може використовувати методики даного винаходу для внутрішньокадрового кодування цифрового нерухомого зображення, використовуючи великі макроблоки чином, аналогічним кодуванню макроблоків з внутрішньокадровим кодуванням у відеокадрах відеопослідовності. Як показано на Фіг. 2, кодер 50 відео приймає поточний відеоблок з відеокадру, який повинен бути закодований. У прикладі на Фіг. 2, кодер 50 відео включає в себе модуль 35 компенсації руху, модуль 36 оцінки руху, модуль 37 внутрішньокадрового передбачення, модуль 39 вибору режиму, сховище 34 опорних кадрів, суматор 48, модуль 38 перетворення, модуль 40 квантування, модуль 46 ентропійного кодування. Для відтворення відеоблока, кодер 50 відео також включає в себе модуль 42 зворотного квантування, модуль 44 зворотного перетворення і суматор 51. Також може бути включений деблокінг-фільтр (не показаний на Фіг. 2) для 11 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 фільтрації меж блока по видаленню артефактів блочності з відтвореного відео. Якщо потрібно, деблокінг-фільтр міг би, як правило, фільтрувати вихідні дані із суматора 51. Під час процесу кодування, кодер 50 відео приймає відеокадр або вирізку, яка повинна бути закодована. Кадр або вирізка може бути розділена на множину відеоблоків, включаючи великі макроблоки. Модуль 36 оцінки руху і модуль 35 компенсації руху виконують кодування з міжкадровим передбаченням прийнятого відеоблока відносно одного або більше блоків в одному або більше опорних кадрах для забезпечення часового стиснення. Модуль 37 внутрішньокадрового передбачення виконує кодування з внутрішньокадровим передбаченням прийнятого відеоблока відносно одного або більше сусідніх блоків в тому ж самому кадрі або вирізці, в яких знаходиться і блок, який повинен бути закодований, для забезпечення просторового стиснення. Модуль 39 вибору режиму може вибрати один з режимів кодування, внутрішньокадровий або міжкадровий, наприклад, на основі результатів помилки, і надає підсумковий блок з внутрішньокадровим або міжкадровим кодуванням суматору 48 для формування даних блока залишку і суматору 51 для відтворення закодованого блока для використання як опорного кадру. Відповідно до методик даного винаходу, відеоблок, який повинен бути закодований, може містити макроблок, який більший призначеного звичайними стандартами кодування, тобто, більший, ніж 16×16-піксельний макроблок. Наприклад, великий відеоблок може містити 64×64-піксельний макроблок або 32×32-піксельний макроблок. Модуль 36 оцінки руху і модуль 35 компенсації руху можуть бути високо інтегрованими, але проілюстровані окремо в схематичних цілях. Оцінка руху є процесом формування векторів руху, які оцінюють рух застосовно до відеоблоків. Вектор руху, наприклад, може вказувати зміщення передбаченого блока всередині передбаченого опорного кадру (або іншої одиниці, що кодується) відносно блока, що кодується, в теперішній момент всередині поточного кадру (або іншої одиниці, що кодується). Передбаченим блоком є блок, який визначений як найточніше співпадаючий з блоком, який повинен бути закодований, виходячи з різниці між пікселями, яка може визначатися сумою абсолютних різниць (SAD), сумою квадратичних різниць (SSD) або іншими показниками різниць. Вектор руху також може вказувати зміщення розділу великого макроблока. У одному прикладі, застосовно до 64×64-піксельного макроблока з розділом 32×64 і двома розділами 32×32, перший вектор руху може вказувати зміщення розділу 32×64, другий вектор руху може вказувати зміщення першого одного з розділів 32×32, а третій вектор руху може вказувати зміщення другого одного з розділів 32×32, і все відносно відповідних розділів в опорному кадрі. Такі розділи також можуть вважатися відеоблоками відповідно до того, як це поняття використовується в даному винаході. Компенсація руху може ввести в дію здійснення вибірки або формування передбаченого блока на основі вектора руху, визначеного оцінкою руху. Знову зазначимо, що модуль 36 оцінки руху і модуль 35 компенсації руху можуть бути функціонально інтегровані. Модуль 36 оцінки руху обчислює вектор руху для відеоблока кадру з міжкадровим кодуванням за допомогою порівняння відеоблока з відеоблоками опорного кадру в сховищі 34 опорних кадрів. Модуль 35 компенсації руху також може інтерполювати близькі до цілочисельних пікселі опорного кадру, наприклад, I-кадру або Р-кадру. Стандарт ITU H.264 звертається до опорних кадрів як до "списків". Внаслідок цього, дані, що зберігаються в сховищі 34 опорних кадрів, також можуть розглядатися як списки. Модуль 36оцінки руху порівнює блоки одного або більше опорних кадрів (або списків) зі сховища 34 опорних кадрів з блоком, який повинен бути закодований в поточному кадрі, наприклад, Р-кадрі або В-кадрі. Коли опорні кадри в сховищі 34 опорних кадрів включають в себе значення, близькі до цілочисельних пікселів, обчислений модулем 36 оцінки руху, вектор руху може посилатися на близьке до цілочисельного місцеположення пікселя опорного кадру. Модуль 36 оцінки руху відправляє обчислений вектор руху в модуль 46 ентропійного кодування і модуль 35 компенсації руху. Блок опорного кадру, що ідентифікується вектором руху, може називатися як передбачений блок. Модуль 35 компенсації руху обчислює значення помилки відносно передбаченого блока опорного кадру. Модуль 35 компенсації руху може обчислювати дані передбачення на основі передбаченого блока. Кодер 50 відео формує відеоблок залишку за допомогою віднімання даних передбачення від модуля 35 компенсації руху з початкового відеоблока, що кодується. Суматор 48 являє собою компонент або компоненти, які виконують цю операцію віднімання. Модуль 38 перетворення застосовує перетворення, таке як дискретне косинусне перетворення (DCT) або концептуально аналогічне перетворення, до блока залишку, створюючи відеоблок, що містить значення коефіцієнтів перетворення залишку. Модуль 38 перетворення може виконувати інші 12 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 перетворення, такі як задані стандартом H.264, які концептуально аналогічні DCT. Вейвлетперетворення, цілочисельні перетворення, субсмугові перетворення або перетворення інших типів також можуть використовуватися. У будь-якому випадку, модуль 38 перетворення застосовує перетворення до блока залишку, створюючи блок коефіцієнтів перетворення залишку. Перетворення може трансформувати інформацію залишку із значення в діапазоні пікселів в діапазон перетворення, такий як частотний діапазон. Модуль 40 квантування квантує коефіцієнти перетворення залишку для того, щоб додатково зменшити швидкість передачі бітів. Процес квантування може зменшити бітову глибину, пов'язану з деякими або всіма коефіцієнтами. У одному прикладі, модуль 40 квантування може встановлювати різну міру квантування для кожного 64×64-піксельного макроблока відповідно до параметра квантування яскравості, що називається в даному винаході як QPY. Модуль 40 квантування може додатково змінювати параметр квантування яскравості, використовуваний під час квантування макроблока 64×64, на основі модифікатора параметра квантування, що називається тут як "MB64_delta_QP" і раніше закодованого 64×64-піксельного макроблока. Кожний 64×64-піксельний великий макроблок може містити індивідуальне значення MB64_delta_QP, в діапазоні від -26 до +25 включно. Загалом, кодер 50 відео може встановити значення MB64_delta_QP для конкретного блока на основі необхідної швидкості передачі бітів для передачі закодованого варіанту блока. Значення MB64_delta_QP першого 64×64піксельного макроблока може дорівнювати значенню QP кадру або вирізки, яке включає в себе перший 64×64-піксельний макроблок, наприклад, в заголовку кадру/вирізки. QPY для поточного 64×64-піксельного макроблока може обчислюватися відповідно до формули: QPY=(QPY, PREV+MB64_delta_QP+52)%52 де QPY, PREV належить до значення QPY попереднього 64×64-піксельного макроблока в порядку проходження кодування поточної вирізки/кадру, і де «%» належить до оператора по модулю, такому, що N%52 дає результат між 0 і 51, включно, відповідно до значення залишку від N, діленого на 52. Для першого макроблока в кадрі/вирізці, QP Y, PREV може бути встановлене як таке, що дорівнює QP кадру/вирізки, що відправляється в заголовку кадра/вирізки. У одному прикладі, модуль 40 квантування передбачає, що значення MB64_delta_QP дорівнює нулю, коли значення MB64_delta_QP не задане для конкретного 64×64-піксельного макроблока, включаючи макроблоки типу "пропуску", такі як макроблоки типу P_Skip і B_Skip. У деяких прикладах, можуть бути задані додаткові значення delta_QP (як правило, що називаються як значення зміни параметра квантування) для керування квантуванням тоншого дроблення розділів всередині 64×64-піксельного макроблока, як, наприклад, значення MB32_delta_QP для кожного 32×32-піксельного розділу в 64×64-піксельному макроблоці. У деяких прикладах, кожному розділу макроблока 64×64 може бути призначений індивідуальний параметр квантування. Використання індивідуалізованих параметрів квантування для кожного розділу може привести до ефективнішого квантування макроблока, наприклад, до кращої настройки квантування для неоднорідних зон, замість використання єдиного QP для макроблока 64×64. Кожне значення зміни параметра квантування може включатися як інформація синтаксису з відповідним закодованим блоком, а декодер може декодувати закодований блок за допомогою деквантування, тобто, зворотного квантування, закодованого блока відповідно до значень зміни параметра квантування. Услід за квантуванням, модуль 46 ентропійного кодування здійснює ентропійне кодування квантованих коефіцієнтів перетворення. Наприклад, модуль 46 ентропійного кодування може виконати контекстнозалежне адаптивне кодування із змінною довжиною кодового слова (CAVLC), контекстнозалежне адаптивне бінарне арифметичне кодування (CABAC) або іншу методику ентропійного кодування. Услід за ентропійним кодуванням, виконуваним модулем 40 ентропійного кодування, закодоване відео може бути передане іншому приладу або заархівоване для подальшої передачі або отримання. Закодований бітовий потік може включати в себе блоки ентропійно закодованих коефіцієнтів перетворення, вектори руху для таких блоків, значення MB64_delta_QP для кожного 64×64-піксельного макроблока та інші елементи синтаксису, включаючи, наприклад, значення ідентифікатора типу макроблока, заголовки одиниць, що кодуються, що вказують максимальний розмір макроблоків в одиниці, що кодується, значення QPY, значення моделі блоків, що кодуються, (CBP), значення, які вказують метод розділення макроблока або субблока, і значення прапора розміру перетворення, як розглядається детальніше нижче. У разі контекстнозалежного адаптивного бінарного арифметичного кодування, контекст може основуватися на сусідніх макроблоках. У деяких випадках, модуль 46 ентропійного кодування або інший модуль кодера 50 відео може бути сконфігурований для виконання інших функцій кодування в доповнення до ентропійного кодування. Наприклад, модуль 46 ентропійного кодування може бути 13 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 сконфігурований для визначення значень CBP для великих макроблоків і розділів. Модуль 46 ентропійного кодування може застосовувати схему ієрархічної CBP для надавання значення CBP для великого макроблока, яке вказує на те, чи включає в себе який-небудь розділ в макроблоці ненульові значення коефіцієнта перетворення, і якщо так, то інші значення CBP для вказування того, чи мають конкретні розділи всередині великого макроблока ненульові значення коефіцієнта перетворення. Також в деяких випадках, модуль 46 ентропійного кодування може виконувати кодування довжини серій коефіцієнтів у великому макроблоці або суброзділі. Зокрема, модуль 46 ентропійного кодування може застосовувати зигзагоподібне сканування або іншу модель сканування для сканування коефіцієнтів перетворення в макроблоці або розділі, і кодувати серії нулів для подальшого стиснення. Модуль 46 ентропійного кодування також може створювати інформацію заголовка з відповідними елементами синтаксису для передачі в закодованому бітовому потоці відео. Модуль 42 зворотного квантування і модуль 44 зворотного перетворення застосовують зворотне квантування і зворотне перетворення відповідно, для відтворення блока залишку в діапазоні пікселів, наприклад, для подальшого використання як опорного блока. Модуль 35 компенсації руху може обчислити опорний блок за допомогою складання блока залишку з передбаченим блоком одного з кадрів в сховищі 34 опорних кадрів. Модуль 35 компенсації руху також може застосувати один або більше фільтрів інтерполяції до відтвореного блока залишку для обчислення значень пікселів, близьких до цілочисельних. Суматор 51 складає відтворений блок залишку з блоком передбачення після компенсації руху, створеним модулем 35 компенсації руху, для створення відтвореного відеоблока для подальшого зберігання в сховищі 34 опорних кадрів. Відтворений відеоблок може використовуватися модулем 36 оцінки руху і модулем 35 компенсації руху як опорний блок для здійснення міжкадрового кодування блока в наступному відеокадрі. Великий макроблок може бути 64×64-піксельним макроблоком, 32×32піксельним макроблоком або іншим макроблоком, який більший розміру, що призначається звичайними стандартами кодування відео. Фіг. 3 є структурною схемою, що ілюструє приклад декодера 60 відео, який декодує відеопослідовність, яка закодована способом, описаним в даному винаході. Закодована відеопослідовність може включати в себе закодовані макроблоки, які більші розміру, призначеного звичайними стандартами кодування відео. Наприклад, закодовані блоки можуть бути 32×32-піксельними або 64×64-піксельними макроблоками. У прикладі на Фіг. 3 декодер 60 відео включає в себе модуль 52 ентропійного декодування, модуль 54 компенсації руху, модуль 55 внутрішньокадрового передбачення, модуль 56 зворотного квантування, модуль 58 зворотного перетворення, сховище 62 опорних кадрів і суматор 64. Декодер 60 відео може, в деяких прикладах, виконувати прохід декодування, загалом зворотний проходу кодування, описаному відносно кодера 50 відео (Фіг. 2). Модуль 54 компенсації руху може формувати дані передбачення на основі векторів руху, прийнятих від модуля 52 ентропійного декодування. Модуль 52 ентропійного декодування виконує ентропійне декодування прийнятого бітового потоку для формування квантованих коефіцієнтів і елементів синтаксису (наприклад, векторів руху, значень CBP, значень QPY, значень прапора розміру перетворення, значень MB64_delta_QP). Модуль 52 ентропійного декодування може аналізувати бітовий потік для ідентифікації інформації синтаксису в одиницях, що кодуються, таких як кадри, вирізки і/або заголовках макроблоків. Інформація синтаксису для одиниці, що кодується, що містить множину макроблоків, може вказувати максимальний розмір макроблоків, наприклад, 16×16 пікселів, 32×32 пікселів, 64×64 пікселів або інший більший розмір макроблоків в одиниці, що кодується. Інформація синтаксису для блока передається від модуля 52 ентропійного декодування або модулю 54 компенсації руху, або модулю 55 внутрішньокадрового передбачення, наприклад, залежно від режиму кодування блока. Декодер може використовувати індикатор максимального розміру в синтаксисі одиниці, що кодується, для вибору декодера синтаксису для одиниці, що кодується. Використовуючи декодер синтаксису, заданий для максимального розміру, декодер потім може правильно інтерпретувати і обробити макроблоки великого розміру, включені в одиницю, що кодується. Модуль 54 компенсації руху може використовувати вектори руху, прийняті в бітовому потоці, для ідентифікації блока передбачення в опорних кадрах у сховищі 62 опорних кадрів. Модуль 55 внутрішньокадрового передбачення може використовувати режими внутрішньокадрового передбачення, прийняті в бітовому потоці, для формування блока передбачення із сусідніх в просторі блоків. Модуль 56 зворотного квантування зворотно квантує, тобто, здійснює деквантування, квантованих коефіцієнтів блока, наданих в бітовому потоці і декодованих модулем 52 ентропійного декодування. Процес зворотного квантування може включати в себе звичайний процес, наприклад, як визначено стандартом декодування H.264. Процес зворотного 14 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 квантування також може включати в себе використання параметра QPY квантування, обчисленого кодером 50 для кожного макроблока 64×64 для того, щоб визначити міру квантування, а також міру зворотного квантування, яка повинна бути застосована. Модуль 58 зворотного перетворення застосовує зворотне перетворення, наприклад, зворотне DCT, зворотне цілочисельне перетворення або концептуально аналогічні процеси зворотного перетворення до коефіцієнтів перетворення, для того щоб створити блоки залишків в діапазоні пікселів. Модуль 54 компенсації руху створює блоки з компенсованим рухом, можливо, виконуючи інтерполяцію на основі фільтрів інтерполяції. Ідентифікатори фільтрів інтерполяції, які повинні використовуватися для оцінки руху із суб-піксельною точністю, можуть включатися в елементи синтаксису. Модуль 54 компенсації руху може використовувати фільтри інтерполяції аналогічно тому, як вони використовуються кодером 50 відео під час кодування відеоблока, для обчислення інтерпольованих значень пікселів, близьких до цілочисельних опорного блока. Модуль 54 компенсації руху може визначити фільтри інтерполяції, використані кодером 50 відео, відповідно до прийнятої інформації синтаксису і використовувати фільтри інтерполяції для створення передбачених блоків. Модуль 54 компенсації руху використовує деяку інформацію синтаксису для визначення розмірів макроблоків, використаних при кодуванні кадру(ів) закодованої відеопослідовності, інформацію розділів, яка описує те, яким чином розділений кожний макроблок кадру закодованої відеопослідовності, режими, що вказують те, яким чином закодований кожний розділ, один або більше опорних кадрів (або списків) для кожного макроблока або розділу з міжкадровим кодуванням та іншу інформацію для декодування закодованої відеопослідовності. Суматор 64 підсумовує блоки залишків з відповідними передбаченими блоками, сформованими модулем компенсації руху або модулем внутрішньокадрового передбачення для формування декодованих блоків. Якщо потрібно, також може застосовуватися деблокінг-фільтр для фільтрації декодованих блоків, щоб видалити артефакти блочності. Декодовані відеоблоки потім зберігаються у сховищі 62 опорних кадрів, яке надає опорні кадри для подальшої компенсації руху і також створює декодоване відео для представлення на приладі відображення (такому як прилад 32 з Фіг. 1). Кожний декодований відеоблок може містити 64×64-піксельний макроблок, 32×32-піксельний макроблок та інші, більші стандартних, макроблоки. Деякі макроблоки можуть включати в себе розділи різноманітних розмірів розділів. Фіг. 4A є концептуальною схемою, що ілюструє приклад розділення великого макроблока по різних рівнях розділення. Блоки кожного рівня розділення включають в себе число пікселів, відповідне конкретному рівню. Для кожного рівня також показані чотири схеми розділення, де перша схема розділення включає в себе блок цілком, друга схема розділення включає в себе два горизонтальні розділи однакового розміру, третя схема розділення включає в себе два вертикальні розділи однакового розміру і четверта схема розділення включає в себе чотири розділи однакового розміру. На кожному рівні розділення для кожного розділення може бути вибрана одна зі схем розділення. У прикладі на Фіг. 4A рівень 0 відповідає розділенню 64×64-піксельного макроблока елементів яскравості і пов'язаних елементів кольоровості. Рівень 1 відповідає 32×32піксельному блоку елементів яскравості і пов'язаних елементів кольоровості. Рівень 2 відповідає 16×16-піксельному блоку елементів яскравості і пов'язаних елементів кольоровості, а рівень 3 відповідає 8×8-піксельному блоку елементів яскравості і пов'язаних елементів кольоровості. У іншому прикладі, можуть бути введені додаткові рівні для використання більшого або меншого числа пікселів. Наприклад, рівень 0 може починатися із 128×128-піксельного макроблока, 256×256-піксельного макроблока або іншого макроблока більшого розміру. Рівень з найвищим номером, в деяких прикладах, може бути настільки тонко роздроблений, що складатиметься з одиничних пікселів, тобто, блока 1×1. Отже, від найнижчого до найвищого рівнів, розділення може все більше поділятися, таким чином, що розділяється макроблок, розділи додатково розділяються, додаткові розділи ще додатково розділяються і т. д. В деяких випадках, розділи нижчі рівня 1, тобто, розділи розділів, можуть називатися як суброзділи. Коли блок на одному рівні розділяється за допомогою чотирьох субблоків однакового розміру, будь-який або всі субблоки можуть бути розділені відповідно до схеми розділення наступного рівня. Тобто, застосовно до блока N×N, який на рівні х був розділений на чотири однакові по розміру субблоки (N/2)×(N/2), кожний з (N/2)×(N/2) субблоків може бути додатково розділений відповідно до будь-якого зі схем розділення рівня х+1. Таким чином, 32×32піксельний субблок 64×64-піксельного макроблока на рівні 0, може бути додатково розділений відповідно до будь-якої зі схем, показаних на Фіг. 4A на рівні 1, наприклад, 32×32, 32×16 і 32×16, 16×32 і 16×32, або 16×16, 16×16, 16×16 і 16×16. Подібним чином, де чотири 16×16-піксельних 15 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 субблоки утворяться з розділеного 32×32-піксельного субблока, кожний з 16×16-піксельних субблоків може бути додатково розділений відповідно до будь-якої зі схем, показаних на Фіг. 4A на рівні 2, де чотири 8×8-піксельних субблоків утворяться з розділеного 16×16-піксельного субблока, кожний з 8×8-піксельних субблоків може бути додатково розділений відповідно до будь-якої зі схем, показаних на Фіг. 4A на рівні 3. Використовуючи приклад чотирьох рівнів розділення, показаних на Фіг. 4A, великі однорідні зони і окремі дрібні зміни можуть бути адаптивно представлені кодером, що реалізує підхід і методики даного винаходу. Наприклад, кодер 50 відео може задати різні рівні розділення для різних макроблоків, а також режими кодування для застосування до цих розділів, наприклад, на основі аналізу спотворення і швидкості. Також, як детальніше описано нижче, кодер 50 відео може кодувати щонайменше деякі підсумкові розділи по-різному, використовуючи просторове (Р-закодоване або В-закодоване) або часове (I-закодоване) передбачення, наприклад, на основі результатів показників спотворення і швидкості або розглядів інших умов. Замість кодування великого макроблока одноманітно, так щоб всі розділи мали один і той же режим внутрішньокадрового або міжкадрового кодування, великий макроблок може кодуватися таким чином, що деякі розділи мають відмінний режим кодування. Наприклад, деякі (щонайменше, один) розділи можуть кодуватися за допомогою інших режимів внутрішньокадрового кодування (наприклад, I_16×16, I_8×8, I_4×4) відносно інших (щонайменше одного) розділів в одному і тому ж макроблоці. Також, деякі (щонайменше один) розділи можуть бути з внутрішньокадровим кодуванням, в той час як інші (щонайменше один) розділи в тому ж самому макроблоці - з міжкадровим кодуванням. Наприклад, кодер 50 відео, може для блока 32×32 з чотирма розділами 16×16 кодувати деякі розділи 16×16, використовуючи просторове передбачення, а інші розділи 16×16, використовуючи часове передбачення. Як інший приклад, кодер 50 відео може, для блока 32×32 з чотирма розділами 16×16, кодувати один або більше розділів 16×16, використовуючи перший режим передбачення (наприклад, I_16×16, I_8×8, I_4×4), а один або більше інших розділів 16×16, використовуючи інший просторовий режим передбачення (наприклад, один з I_16×16, I_8×8, I_4×4). Фіг. 4B є концептуальною схемою, що ілюструє призначення різних режимів кодування різним розділам великого макроблока. Зокрема, Фіг. 4B ілюструє призначення режиму внутрішньокадрового кодування I_16×16 верхньому лівому блоку 16×16 великого макроблока 32×32, режимів внутрішньокадрового кодування I_8×8 верхньому правому і нижньому лівому блокам 16×16 великого макроблока 32×32, і режиму внутрішньокадрового кодування I_4×4 нижньому лівому блоку 16×16 великого макроблока 32×32. У деяких випадках, режими кодування, проілюстровані на Фіг. 4B, можуть бути режимами внутрішньокадрового кодування H.264 для кодування яскравості. Описаним чином, кожний розділ може бути вибірково додатково розділений, і кожний підсумковий розділ може вибірково кодуватися або з використанням часового передбачення або просторового передбачення, або з використанням вибраного часового або просторового режиму кодування. Отже, існує можливість кодування великого макроблока за допомогою змішаних режимів, так що деякі розділи в макроблоці - з внутрішньокадровим кодуванням, а інші розділи в тому ж самому макроблоці - з міжкадровим кодуванням, або деякі розділи в одному і тому ж макроблоці кодуються за допомогою інших режимів внутрішньокадрового кодування або інших режимів міжкадрового кодування. Кодер 50 відео може додатково задати кожний розділ відповідно до типу макроблока. Тип макроблока може включатися як елемент синтаксису в бітовий потік, що кодується, наприклад, як елемент синтаксису в заголовку макроблока. Загалом, тип макроблока може використовуватися для ідентифікації того, яким чином розділений макроблок, і відповідних способів і режимів кодування кожного з розділів макроблока, як розглядалося вище. Способи кодування розділів можуть включати в себе не тільки внутрішньокадрове і міжкадрове кодування, але також конкретні режими внутрішньокадрового кодування (наприклад, I_16×16, I_8×8, I_4×4) або міжкадрового кодування (наприклад, P_ або B_16×16, 16×8, 8×16, 8×8, 8×4, 4×8 і 4×4). Як розглядається детальніше, відносно прикладу в таблиці 1 нижче, застосовно до Р-блоків і відносно прикладу в таблиці 2 нижче, застосовно до В-блоків, блоки рівня розділення 0 можуть описуватися відповідно до елемента синтаксису MB64_типу, що являє собою макроблок з 64×64 пікселями. Аналогічним чином описи типів можуть формуватися для будь-якого MB[N]_типу, де [N] належить до блока з N×N пікселями, де N є позитивним цілим числом, яке може бути більшим 16. Коли блок N×N має чотири розділи розміром (N/2)×(N/2), як показано в останньому стовпці на Фіг. 4A, то кожний з чотирьох розділів може отримати свої власні описи 16 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 типів, наприклад MB[N/2]_тип. Наприклад, для 64×64-піксельного блока (типу MB64_тип) з чотирма 32×32-піксельними розділами, кодер 50 відео може ввести MB32_тип для кожного з чотирьох 32×32-піксельних розділів. Цей елемент синтаксису типу макроблока може допомагати декодеру 60 при декодуванні великих макроблоків і різних розділів великих макроблоків, як описано в даному винаході. Кожному N×N-піксельному макроблоку, де N більше 16, як правило, відповідає унікальний опис типу. Відповідно, кодер може сформувати синтаксис, відповідний для конкретного макроблока, і вказати декодеру максимальний розмір макроблоків в одиниці, що кодується, такій як кадр, вирізка або послідовність макроблоків. Таким чином, декодер може прийняти вказування декодера синтаксису для застосування до макроблоків одиниці, що кодується. Це також гарантує те, що декодер може бути зворотно сумісним з існуючими стандартами кодування, таким як H.264, в тому, що кодер може вказати тип декодерів синтаксису, які необхідно застосовувати до макроблоків, наприклад, стандарту H.264, або ті, що призначені для обробки великих макроблоків, відповідно до методик даного винаходу. Загалом, кожний опис MB[N]_типу може являти собою, для відповідного типу, число пікселів в блоці відповідного типу (наприклад, 64×64), опорний кадр (або опорний список) блока, число розділів блока, розмір кожного розділу блока, те, яким чином закодований розділ (наприклад, з внутрішньокадровим або міжкадровим кодуванням і конкретний режим) і опорний кадр (або опорний список) для кожного розділу блока, коли розділ є розділом з міжкадровим кодуванням. Застосовно до 16×16 і менших блоків, кодер 50 відео може, в деяких прикладах, використовувати звичайні описи типів як типи блоків, такі як типи, задані стандартом H.264. У інших прикладах, кодер 50 відео може застосовувати нові задані типи блоків для 16×16 і менших блоків. Кодер 50 відео може оцінювати як звичайні способи міжкадрового або внутрішньокадрового кодування, що використовують нормальні розміри макроблоків і розділів, такі як способи, що призначаються ITU H.264, так і способи міжкадрового або внутрішньокадрового кодування, що використовують більші макроблоки і розділи, описані даним винаходом, і порівнювати характеристики спотворення і швидкості кожного підходу, щоб визначити, який спосіб приводить до найкращої характеристики спотворення і швидкості. Потім кодер 50 відео може вибрати і застосувати до блока, який повинен кодуватися, найкращий підхід до кодування, включаючи міжкадровий або внутрішньокадровий режим, розмір макроблока (великий, більший або нормальний), і розділення, на основі оптимальних або прийнятних результатів спотворення і швидкості для підходу до кодування. Як ілюстрація, кодер 50 відео може вибрати для використання макроблоки 64×64, макроблоки 32×32 або макроблоки 16×16 для кодування конкретного кадру або вирізки на основі результатів спотворення і швидкості, отриманого, коли кодер відео використовує такі розміри макроблоків. Загалом, можуть використовуватися два різні підходи для компонування внутрішньокадрових режимів, що використовують великі макроблоки. Як один приклад, під час внутрішньокадрового кодування, просторове передбачення може виконуватися для блока на основі безпосередньо сусідніх блоків. Відповідно до методик даного винаходу, кодер 50 відео може сформувати просторово передбачені блоки 32×32 на основі їх безпосередньо сусідніх пікселів і сформувати просторово передбачені блоки 64×64 на основі їх безпосередньо сусідніх пікселів. Таким чином, просторове передбачення може виконуватися в більшому масштабі порівняно із внутрішніми блоками 16×16. Внаслідок цього, ці методики можуть, в деяких прикладах, привести до деякої економії швидкості передачі бітів, наприклад, за допомогою використання меншого числа блоків або розділів на кадр або вирізку. Як інший приклад, кодер 50 відео може групувати чотири блоки N×N разом для формування (N*2)×(N*2) блока, а потім кодувати (N*2)×(N*2) блок. Використовуючи існуючі режими внутрішньокадрового кодування H.264, кодер 50 відео може групувати чотири блоки з внутрішньокадровим кодуванням разом, тим самим формуючи великий макроблок з внутрішньокадровим кодуванням. Наприклад, чотири блоки з внутрішньокадровим кодуванням, кожний з яких має розмір 16×16, можуть групуватися разом для формування великого блока 32×32 з внутрішньокадровим кодуванням. Кодер 50 відео може кодувати кожний з чотирьох відповідних блоків N×N, використовуючи різні режими кодування, наприклад, I_16×16, I_8×8, I_4×4 відповідно до H.264. Таким чином, кожному блоку 16×16 кодером 50 відео може бути призначений свій власний режим просторового передбачення, наприклад, щоб сприяти досягненню сприятливих результатів кодування. Кодер 50 відео може компонувати внутрішньокадрові режими відповідно до будь-якого з двох різних розглянутих вище способів, і аналізувати різні способи для визначення того, який з підходів забезпечує кращі результати кодування. Наприклад, кодер 50 відео може застосовувати різні підходи внутрішньокадрових режимів і вміщувати їх в єдину сукупність 17 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 кандидатів, щоб дозволити їм конкурувати один з одним відносно найкращої характеристики спотворення і швидкості. Використовуючи порівняння спотворення і швидкості між різними підходами, кодер 50 відео може визначити те, яким чином кодувати кожний розділ і/або макроблок. Зокрема, кодер 50 відео може вибрати режими кодування, які дають найкращу характеристику спотворення і швидкості для заданого макроблока і застосувати ці режими кодування при кодуванні макроблока. Фіг. 5 є концептуальною схемою, що ілюструє ієрархічний вигляд різних рівнів розділення великого макроблока. Фіг. 5 також являє собою взаємозв'язки між різними рівнями розділення великого макроблока, як описано відносно Фіг. 4A. Кожний блок рівня розділення, як проілюстровано в прикладі на Фіг. 5, може мати відповідне значення моделі блоків, що кодуються, (CBP). Значення CBP формує частину інформації синтаксису, яка описує блок або макроблок. У одному прикладі, кожне значення CBP є однобітовим значенням синтаксису, яке вказує на те, існують чи ні які-небудь ненульові значення коефіцієнтів перетворення в заданому блоці після операцій перетворення і квантування. У деяких випадках, блок передбачення може бути дуже схожий по вмісту пікселів на блок, який повинен бути закодований, так, що всі коефіцієнти перетворення залишку квантуються в нуль, і в цьому випадку немає необхідності передавати коефіцієнти перетворення для блока, що кодується. Замість цього, значення CBP блока може бути встановлене в нуль, щоб вказувати на те, що блок, що кодується, не включає в себе ненульові коефіцієнти. Як альтернатива, якщо блок включає в себе щонайменше один ненульовий коефіцієнт, то значення CBP може бути встановлене в одиницю. Декодер 60 може використовувати значення CBP для ідентифікації блоків залишків, що кодуються, тобто, з одним або більше ненульовими коефіцієнтами перетворення, на відміну від блоків, які не кодуються, тобто, що не включають в себе ненульові коефіцієнти перетворення. Відповідно до деяких методик, описаних в даному винаході, кодер може призначити значення CBP великим макроблокам в ієрархічному порядку на основі того, чи мають ці макроблоки, включаючи їх розділи, щонайменше один ненульовий коефіцієнт, і призначити значення CBP розділам, щоб вказати, які розділи мають ненульові коефіцієнти. Ієрархічна CBP для великих макроблоків може сприяти обробці великих макроблоків для швидшої ідентифікації великих макроблоків, що кодуються, і великих макроблоків, що не кодуються, і дозволити ідентифікацію розділів, що кодуються, на кожному рівні розділення великого макроблока для визначення того, чи необхідно використовувати дані залишку для декодування блоків. У одному прикладі, 64×64-піксельний макроблок на рівні нуль може включати в себе інформацію синтаксису, що містить значення CBP64, наприклад, однобітове значення, для вказування того, має чи ні весь 64×64-піксельний макроблок, включаючи будь-який розділ, ненульовий коефіцієнт. У одному прикладі, кодер 50 відео "встановлює" біт CBP64, наприклад, в значення "1", для того щоб він являв собою, що 64×64-піксельний макроблок включає в себе щонайменше один ненульовий коефіцієнт. Таким чином, коли значення CBP64 встановлене, наприклад, в значення "1", 64×64-піксельний макроблок включає в себе щонайменше один ненульовий коефіцієнт десь в макроблоці. У іншому прикладі, кодер 50 відео може "очищати" значення CBP64, наприклад в значенні "0", для того щоб він являв собою, що 64×64-піксельний макроблок має всі нульові коефіцієнти. Таким чином, коли значення CBP64 очищене, наприклад, в значення "0", то тим самим вказується, що 64×64-піксельний макроблок має всі нульові коефіцієнти. Макроблоки зі значеннями CBP64, що дорівнюють "0", як правило, не вимагають передачі даних залишку в бітовому потоці, тоді як макроблоки зі значенням CBP64, що дорівнює "1", як правило, вимагають передачі даних залишку в бітовому потоці для використання при декодуванні таких макроблоків. 64×64-піксельному макроблоку, який має всі нульові коефіцієнти, не потрібно включати значення CBP для його розділів і субблоків. Тобто, оскільки 64×64-піксельний макроблок має всі нульові коефіцієнти, кожний з розділів також обов'язково має всі нульові коефіцієнти. 64×64піксельний макроблок, який включає в себе щонайменше один ненульовий коефіцієнт, може додатково включати в себе значення CBP для розділів на наступному рівні розділення. Наприклад, CBP64 зі значенням, що дорівнює одиниці, може включати в себе додаткову інформацію синтаксису у вигляді однобітового значення CBP32 для кожного розділу 32×32 блока 64×64. Тобто, в одному прикладі, кожному 32×32-піксельному розділу (такому як блоки чотирикратного розділення рівня 1 на Фіг. 5) 64×64-піксельного макроблока призначене значення CBP32 як частина інформації синтаксису 64×64-піксельного макроблока. Як і у випадку зі значенням CBP64, кожне значення CBP32 може містити біт, який встановлюється в значення одиниці, коли відповідний 32×32-піксельний блок має щонайменше один ненульовий коефіцієнт, і очищається в значення нуль, коли відповідний 32×32-піксельний блок має всі 18 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 нульові коефіцієнти. Кодер може додатково вказати в синтаксисі одиниці, що кодується, що містить множину макроблоків, такої як кадр, вирізка або послідовність, максимальний розмір макроблока в одиниці, що кодується, щоб вказувати декодеру те, яким чином інтерпретувати інформацію синтаксису кожного макроблока, наприклад, який декодер синтаксису використовувати для обробки макроблоків в одиниці, що кодується. Таким чином, 64×64-піксельний макроблок, який має всі нульові коефіцієнти, може використати єдиний біт для того, щоб представити той факт, що макроблок має всі нульові коефіцієнти, тоді як 64×64-піксельний макроблок з щонайменше одним ненульовим коефіцієнтом може включати в себе інформацію синтаксису CBP, що містить щонайменше п'ять бітів: перший біт для представлення того, що 64×64-піксельний макроблок має ненульовий коефіцієнт і чотири додаткові біти, кожний з яких являє собою, чи включає в себе відповідний один з 32×32-піксельних розділів макроблока щонайменше один ненульовий коефіцієнт. У деяких прикладах, коли перші три з чотирьох додаткових бітів нульові, четвертий додатковий біт може не включатися, так що декодер може інтерпретувати це як те, що останній розділ має одиницю. Тобто, кодер може визначити, що останній біт має значення одиниці, коли перші три біти дорівнюють нулю і коли біт, що представляє вищий ієрархічний рівень, має значення одиниці. Наприклад, префікс значення CBP64 у вигляді "10001" може бути скорочений до "1000", оскільки перший біт вказує на те, що щонайменше один з чотирьох розділів має ненульові коефіцієнти, і наступні три нулі вказують на те, що перші три розділи мають всі нульові коефіцієнти. Внаслідок цього, декодер може зробити висновок, що саме останній розділ включає в себе ненульовий коефіцієнт, при відсутності явного біта, що інформує декодер про цей випадок, наприклад, з бітового рядка "1000". Тобто, декодер може інтерпретувати префікс CBP у вигляді "1000" як "10001". Подібним чином, однобітна CBP32 може бути встановлена в значення "1", коли 32×32піксельний розділ включає в себе щонайменше один ненульовий коефіцієнт, і в значення "0", коли всі з коефіцієнтів мають значення, що дорівнює нулю. Якщо 32×32-піксельний розділ має значення CBP, що дорівнює 1, тоді розділам цього розділу 32×32 на наступному рівні розділення можуть бути призначені значення CBP, щоб вказувати, чи включають в себе відповідні розділи будь-які ненульові коефіцієнти. Отже, значення CBP можуть призначатися ієрархічним способом на кожному рівні розділення доти, поки більше не залишиться рівнів розділення або не буде існувати розділів, що включають в себе ненульові коефіцієнти. Способом, описаним вище, кодери і/або декодери можуть використовувати ієрархічні значення CBP для представлення того, чи включає в себе великий макроблок (наприклад, 64×64 або 32×32) і його розділи щонайменше один ненульовий коефіцієнт або всі нульові коефіцієнти. Відповідно, кодер може кодувати великий макроблок одиниці, що кодується, потоку цифрового відео таким чином, що для блока макроблока, що містить більше, ніж 16×16 пікселів, формується інформація синтаксису типу блоків, яка вказує розмір блока, формується значення CBP для блока, так що значення CBP ідентифікує те, чи включає в себе блок щонайменше один ненульовий коефіцієнт, і, якщо застосовно, формуються додаткові значення CPB для різних рівнів розділення блока. У одному прикладі, ієрархічні значення CBP можуть містити будь-який масив бітів (наприклад, вектор бітів), чия довжина залежить від значень префікса. Масив може додатково являти собою ієрархію значень CBP, таку як деревовидну структуру, як показано на Фіг. 5. Масив може представляти вузли дерева, розгорнені в довжину, де кожний вузол відповідає біту в масиві. Коли вузол дерева має біт, встановлений в значення "1", в одному прикладі, то вузол має чотири відгалуження (відповідні чотирьом розділам), а коли біт очищений в значення "0", то вузол не має відгалужень. У цьому прикладі, щоб ідентифікувати значення вузлів, які відгалужуються від конкретного вузла X, кодер і/або декодер може визначити чотири послідовні біти, що починаються із вузла Y, який являє собою вузол, який відгалужується від вузла X за допомогою обчислення: x   y   4 *  дерево  3 i   i0  де дерево[] відповідає масиву бітів з початковим індексом 0, i є цілочисельним індексом в масиві дерева[], х відповідає індексу вузла X в дереві[], а у відповідає індексу вузла Y, який є першим вузлом-відгалуженням вузла X. Три подальші позиції масиву (тобто, у+1, у+2 і у+3) відповідають іншим вузлам-відгалуженням вузла X. Кодер, такий як кодер 50 відео (Фіг. 2), може призначити значення CBP для 16×16піксельних розділів 32×32-піксельного розділу зі щонайменше одним ненульовим коефіцієнтом, використовуючи існуючі способи, такі як способи призначені ITU H.264 для установлення 19 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 значень CBP блокам 16×16, як частини синтаксису 64×64-піксельного макроблока. Кодер також може вибрати значення CBP для розділів відповідних 32×32-піксельних розділів, які мають щонайменше один ненульовий коефіцієнт на основі розміру розділів, типу блока відповідного розділам (наприклад, блок яскравості або блок кольоровості) або інших характеристик розділів. Зразкові способи для встановлення значення CBP розділу відповідного 32×32-піксельного розділу розглядаються детальніше відносно Фіг. 8 і 9. Фіг. 6-9 є блок-схемами, що ілюструють зразкові способи встановлення різних значень моделі блоків, що кодуються, (CBP), відповідно до методик даного винаходу. Незважаючи на те, що зразкові способи на Фіг. 6-9 розглядаються застосовно до 64×64-піксельного макроблоку, повинно бути зрозуміло, що аналогічні методики можуть застосовуватися для призначення ієрархічних значень CBP макроблокам інших розмірів. Незважаючи на те, що приклади Фіг. 6-9 розглядаються відносно кодера 50 відео (Фіг. 2), повинно бути зрозуміло, що інші кодери можуть використовувати аналогічні способи для призначення значень CBP макроблокам крупнішим стандартних. Аналогічним чином, декодери можуть використовувати аналогічні, хоч і зворотні способи для інтерпретації значення конкретного значення CBP застосовно до макроблока. Наприклад, якщо прийнятий в бітовому потоці макроблок з міжкадровим кодуванням має значення CBP, що дорівнює "0", декодер може не прийняти дані залишку для макроблока і може просто створити передбачений блок, що ідентифікується вектором руху, як декодований макроблок, або групу передбачених макроблоків, що ідентифікується векторами руху, застосовно до розділів макроблока. Фіг. 6 є блок-схемою, що ілюструє зразковий спосіб встановлення значення CBP64 зразкового 64×64-піксельного макроблока. Аналогічний спосіб може застосовуватися для макроблоків більших, ніж 64×64. Спочатку, кодер 50 відео приймає (етап 100) 64×64-піксельний макроблок. Потім модуль 36 оцінки руху і модуль 35 компенсації руху можуть сформувати один або більше векторів руху і один або більше блоків залишку для кодування макроблока відповідно. Вихідні дані модуля 38 перетворення, як правило, містять масив значень коефіцієнтів перетворення залишку для блока з внутрішньокадровим кодуванням або блок залишку для блока з міжкадровим кодуванням, чий масив квантується модулем 40 квантування для створення серій квантованих коефіцієнтів перетворення. Модуль 46 ентропійного кодування може забезпечувати ентропійне кодування та інші функції кодування, окремі від ентропійного кодування. Наприклад, в доповнення до CAVLC, CABAC або інших функцій ентропійного кодування, модуль 46 ентропійного кодування або інший модуль кодера 50 відео можуть визначати значення CBP для великих макроблоків і розділів. Зокрема, модуль 46 ентропійного кодування може визначати значення CBP64 для 64×64-піксельного макроблока за допомогою спочатку визначення (етап 102) того, чи має макроблок щонайменше один ненульовий, квантований коефіцієнт перетворення. Коли модуль 46 ентропійного кодування визначає, що всі коефіцієнти перетворення мають нульове значення ("НІ" на етапі 102), модуль 46 ентропійного кодування очищає значення CBP64 для макроблока 64×64, наприклад, скидає (етап 104) біт для значення CBP64 в "0". Коли модуль 46 ентропійного кодування ідентифікує щонайменше один ненульовий коефіцієнт ("ТАК" на етапі 102) для макроблока 64×64, модуль 46 ентропійного кодування встановлює (етап 106) значення CBP64, наприклад, встановлює біт для значення CBP64 в "1". Коли макроблок має всі нульові коефіцієнти, модулю 46 ентропійного кодування немає необхідності встановлювати які-небудь додаткові значення CBP для розділів макроблока, що може зменшити службові дані. Проте, в одному прикладі, коли макроблок має щонайменше один ненульовий коефіцієнт, модуль 46 ентропійного кодування переходить до визначення (етап 108) значень CBP для кожного з чотирьох 32×32-піксельних розділів 64×64-піксельного макроблока. Модуль 46 ентропійного кодування може використовувати спосіб, описаний відносно Фіг. 7, чотири рази, один раз для кожного з чотирьох розділів, щоб встановити чотири значення CBP32, кожне зяких відповідає відмінному одному з чотирьох 32×32-піксельних розділів макроблока 64×64. Таким чином, коли макроблок має всі нульові коефіцієнти, модуль 46 ентропійного кодування може передавати один біт зі значенням "0", щоб вказати на те, що макроблок має всі нульові коефіцієнти, тоді коли макроблок має щонайменше один ненульовий коефіцієнт, модуль 46 ентропійного кодування може передати п'ять бітів: один біт для макроблока і чотири біти, кожний з яких відповідає одному з чотирьох розділів макроблока. У доповнення, коли розділ включає в себе щонайменше один ненульовий коефіцієнт, дані залишку для розділу можуть відправлятися в закодованому бітовому потоці. Відповідно до прикладу CBP64, розглянутого вище, коли перші три з чотирьох додаткових бітів нульові, четвертий додатковий біт може бути необов'язковим, оскільки декодер може визначити, що він 20 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 має значення одиниці. Таким чином, в деяких прикладах, кодер може відправляти тільки три нулі, тобто, "000", а не три нулі і одиниця, тобто, "0001". Фіг. 7 є блок-схемою, що ілюструє зразковий спосіб встановлення значення CBP32 32×32піксельного розділу 64×64-піксельного макроблока. Спочатку, застосовно до наступного рівня розділення, модуль 46 ентропійного кодування приймає (етап 110) 32×32-піксельний розділ, наприклад один з чотирьох розділів, згаданих відносно Фіг. 6. Потім модуль 46 ентропійного кодування визначає значення CBP32 для 32×32-піксельного розділу за допомогою спочатку визначення (етап 112) того, чи включає в себе розділ щонайменше один ненульовий коефіцієнт. Коли модуль 46 ентропійного кодування визначає, що всі коефіцієнти розділу мають значення, що дорівнює нулю ("НІ" на етапі 112), модуль 46 ентропійного кодування очищає (етап 114) значення CBP32, наприклад, скидає біт для значення CBP32 в "0". Коли модуль 46 ентропійного кодування ідентифікує щонайменше один ненульовий коефіцієнт розділу ("ТАК" на етапі 112), модуль 46 ентропійного кодування встановлює (етап 116) значення CBP32, наприклад, встановлює біт для значення CBP32 в значення "1". У одному прикладі, коли розділ має всі нульові коефіцієнти, модуль 46 ентропійного кодування не встановлює які-небудь додаткові значення CBP для розділу. Проте, коли розділ включає в себе щонайменше один ненульовий коефіцієнт, модуль 46 ентропійного кодування визначає значення CBP для кожного з чотирьох 16×16-піксельних розділів 32×32-піксельного розділу макроблока. Модуль 46 ентропійного кодування використовує спосіб, описаний відносно Фіг. 8, щоб встановити чотири значення CBP16, кожне з яких відповідає одному з чотирьох 16×16-піксельних розділів. Таким чином, коли розділ має всі нульові коефіцієнти, модуль 46 ентропійного кодування може встановити біт зі значенням "0", щоб вказати на те, що розділ має всі нульові коефіцієнти, тоді як, коли розділ має щонайменше один ненульовий коефіцієнт, модуль 46 ентропійного кодування може передати п'ять бітів: один біт для розділу і чотири біти, кожний з яких відповідає відмінному одному з чотирьох суброзділів розділу макроблока. Таким чином, кожний додатковий рівень розділення може представляти чотири додаткові біти CBP, коли розділ на попередньому рівні розділення має щонайменше одне ненульове значення коефіцієнта перетворення. Як один приклад, якщо макроблок 64×64 має значення CBP, що дорівнює 1, і чотири розділи 32×32 мають значення CBP, що дорівнює 1, 0, 1 і 1 відповідно, то підсумковим значенням CBP на цьому рівні є 11011. Додаткові біти можуть додаватися для додаткових розділів відповідних розділів 32×32, наприклад, в розділах 16×16. Фіг. 8 є блок-схемою, що ілюструє зразковий спосіб встановлення значення CBP16 16×16піксельного розділу 32×32-піксельного розділу 64×64-піксельного макроблока. Для певних 16×16-піксельних розділів, кодер 50 відео може використовувати значення CBP, як призначене стандартом кодування відео, таким як ITU H.264, як розглядається нижче. Для інших розділів 16×16, кодер 50 відео може використовувати значення CBP відповідно до інших методик даного винаходу. Спочатку, як показано на Фіг. 8, модуль 46 ентропійного кодування приймає (етап 120) розділ 16×16, наприклад, один з розділів 16×16 розділу 32×32, описаних відносно Фіг. 7. Потім модуль 46 ентропійного кодування визначає (етап 122), чи є розділ руху для 16×16піксельного розділу більшим, ніж 8×8-піксельний блок. Як правило, розділ руху описує розділ, в якому зосереджено рух. Наприклад, 16×16-піксельний розділ тільки з одним вектором руху може розглядатися як розділ руху 16×16. Аналогічним чином, для 16×16-піксельного розділу з двома розділами 8×16, кожний з яких має один вектор руху, кожний з двох розділів 8×16 може розглядатися як розділ руху 8×16. У будь-якому випадку, коли розділ руху не більший, ніж 8×8піксельний блок ("НІ" на етапі 122), модуль 46 ентропійного кодування призначає (етап 124) значення CBP 16×16-піксельного розділу таким же чином, як і призначається ITU H.264, в прикладі на Фіг. 8. Коли існує розділ руху для 16×16-піксельного розділу, який більший, ніж 8×8-піксельний блок ("ТАК" на етапі 122), модуль 46 ентропійного кодування створює і відправляє (етап 125) значення lumacbp16, використовуючи етапи, що слідують за етапом 125. У прикладі на Фіг. 8, для створення значення lumacbp16, модуль 46 ентропійного кодування визначає (етап 126), чи має 16×16-піксельний компонент яскравості розділу щонайменше один ненульовий коефіцієнт. Коли 16×16-піксельний компонент яскравості має всі нульові коефіцієнти ("НІ" на етапі 126), модуль 46 ентропійного кодування призначає (етап 128) значення CBP16 відповідно до розділу кольоровості моделі блоків, що кодуються, по ITU H.264, в прикладі на Фіг. 8. Коли модуль 46 ентропійного кодування визначає, що 16×16-піксельний компонент яскравості має щонайменше один ненульовий коефіцієнт ("ТАК" на етапі 126), модуль 46 ентропійного кодування визначає (етап 130) прапор розміру перетворення для 16×16піксельного розділу. Прапор розміру перетворення загалом вказує перетворення, використане 21 UA 102117 C2 5 10 15 20 25 30 35 40 відносно розділу. Перетворення, що представляється прапором розміру перетворення, може включати в себе одне з перетворення 4×4, перетворення 8×8, перетворення 16×16, перетворення 16×8 або перетворення 8×16. Прапор розміру перетворення може містити цілочисельне значення, яке відповідає пронумерованому значенню, яке ідентифікує одне з можливих перетворень. Потім модуль 46 ентропійного кодування може визначити (етап 132), чи представляє прапор розміру перетворення розмір перетворення, більший або, що дорівнює 16×8 (або 8×16). Коли прапор розміру перетворення не вказує на те, що розмір перетворення більший і, що дорівнює 16×8 (або 8×16) ("НІ" на етапі 132), модуль 46 ентропійного кодування призначає (етап 134) значення CBP16 відповідно до ITU H.264, в прикладі на Фіг. 8. Коли прапор розміру перетворення вказує на те, що розмір перетворення більший або дорівнює 16×8 (або 8×16) ("ТАК" на етапі 132), то потім модуль 46 ентропійного кодування визначає (етап 136), чи є тип застосовно до 16×16-піксельного розділу або двома 16×8, або двома 8×16-піксельними розділами. Коли тип застосовно до 16×16-піксельного розділу не є двома 16×8 і не є двома 8×16піксельними розділами ("НІ" на етапі 138), модуль 46 ентропійного кодування призначає (етап 140) значення CBP відповідно до розділу блоків кольоровості, що кодуються, призначеного ITU H.264, в прикладі на Фіг. 8. Коли тип застосовно до 16×16-піксельного розділу є або двома 16×8, або двома 8×16-піксельними розділами ("ТАК" на етапі 136), то модуль 46 ентропійного кодування також використовує модель блоків кольоровості, що кодуються, призначену ITU H.264, але в доповнення призначає (етап 142) значення CBP16 двобітного значення luma16×8_CBP, наприклад, відповідно до способу, описаного відносно Фіг. 9. Фіг. 9 є блок-схемою, що ілюструє зразковий спосіб визначення значення двобітного luma16×8_CBP. Модуль 46 ентропійного кодування приймає (етап 150) 16×16-піксельний розділ, який додатково розділений на два 16×8 або два 8×16-піксельні розділи. Модуль 46 ентропійного кодування загалом призначає кожний біт luma16×8_CBP відповідно до того, чи включає в себе відповідний субблок 16×16-піксельного розділу щонайменше один ненульовий коефіцієнт. Модуль 46 ентропійного кодування визначає (етап 152), чи має перший субблок 16×16піксельного розділу щонайменше один ненульовий коефіцієнт, щоб визначити, чи має перший субблок щонайменше один ненульовий коефіцієнт. Коли перший субблок має всі нульові коефіцієнти ("НІ" на етапі 152), модуль 46 ентропійного кодування очищає (етап 154) перший біт luma16×8_CBP, наприклад, призначає luma16×8_CBP[0] значення "0". Коли перший субблок має щонайменше один ненульовий коефіцієнт ("ТАК" на етапі 152), модуль 46 ентропійного кодування встановлює (етап 156) перший біт luma16×8_CBP, наприклад, призначає luma16×8_CBP[0] значення "1". Модуль 46 ентропійного кодування також визначає (етап 158), чи має другий суброзділ 16×16-піксельного розділу щонайменше один ненульовий коефіцієнт. Коли другий суброзділ має всі нульові коефіцієнти ("НІ" на етапі 158), модуль 46 ентропійного кодування очищає (етап 160) другий біт luma16×8_CBP, наприклад, призначає luma16×8_CBP[1] значення "0". Коли другий субблок має щонайменше один ненульовий коефіцієнт ("ТАК" на етапі 158), тоді модуль 46 ентропійного кодування встановлює (етап 162) другий біт luma16×8_CBP, наприклад, призначає luma16×8_CBP[1] значення "1". Наступний псевдокод надає зразковий варіант реалізації способів, описаних відносно Фіг. 8 і 9: 22 UA 102117 C2 5 10 15 У псевдокоді, "lumacbp16" відповідає операції доповнення однобітного прапора, що вказує, має чи ні весь блок яскравості 16×16 ненульові коефіцієнти. Коли "lumacbp16" дорівнює одиниці, існує щонайменше один ненульовий коефіцієнт. Функція "Transform_size_flag" ("прапор_розміру_перетворення") належить до виконуваного обчислення, результатом якого є вказування на використане перетворення, наприклад, одного з перетворення 4×4, перетворення 8×8, перетворення 16×16 (для розділу руху, що дорівнює або більший ніж 16×16), перетворення 16×8 (для P_16×8), або перетворення 8×16 (для P_8×16). TRANSFORM_SIZE_GREATER_THAN_16×8 (РОЗМІР_ПЕРЕТВОРЕННЯ_БІЛЬШИЙ_НІЖ_16×8) є пронумерованим значенням (наприклад, "2"), використовуваним для вказування того, що розмір перетворення більший або дорівнює 16×8 або 8×16. Результат функції Transform_size_flag вноситься в інформацію синтаксису 64×64-піксельного макроблока. "luma16×8_cbp" належить до обчислення, яке створює двобітне число, при цьому кожний біт вказує, має чи ні один з двох розділів P_16×8 або P_8×16 ненульовий коефіцієнт. Двобітне число, що отримується з luma16×8_cbp, вставляється в синтаксис 64×64-піксельного макроблока. Значення "chroma_cbp" може бути обчислене таким же чином, що і Модель Блоків Кольоровості, що Кодуються, як призначається ITU H.264. Обчислене значення chroma_cbp 23 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 вставляється в інформацію синтаксису 64×64-піксельного макроблока. Функція h264_cbp може обчислюватися таким же чином, як і CBP, визначена в ITU H.264. Обчислене значення h264_cbp вставляється в інформацію синтаксису 64×64-піксельного макроблока. Загалом, спосіб відповідно до Фіг. 6-9 може включати в себе: кодування, за допомогою кодера відео, відеоблока, що має розмір, більший ніж 16×16 пікселів; формування інформації синтаксису типу блоків, яка вказує розмір блока; і формування значення моделі блоків, що кодуються, для закодованого блока, при цьому значення моделі блоків, що кодуються, вказує на те, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт. Фіг. 10 є структурною схемою, що ілюструє приклад компонування 64×64-піксельного макроблока. Макроблок на Фіг. 10 містить чотири розділи 32×32, позначені на Фіг. 10 А, В, С і D. Як розглядалося відносно Фіг. 4A, в одному прикладі, блок може бути розділений будь-яким одним з чотирьох способів: суцільний блок (64×64) без суброзділів, два горизонтальні розділи однакового розміру (32×64 і 32×64), два вертикальні розділи однакового розміру (64×32 і 64×32) або чотири квадратні розділи однакового розміру (32×32, 32×32, 32×32 і 32×32). У прикладі на Фіг. 10, розділ всього блока містить кожний з блоків А, В, С і D; перший один з двох горизонтальних розділів однакового розміру містить А і В, в той час як другий один з двох горизонтальних розділів однакового розміру містить С і D; перший один з двох вертикальних розділів однакового розміру містить А і C, в той час як другий один з двох вертикальних розділів однакового розміру містить В і D; і чотири квадратні розділи однакового розміру відповідають одному з кожного з А, В, С і D. Аналогічні схеми розділення можуть використовуватися для будь-якого розміру блока, наприклад, більшого, ніж 64×64 пікселів, 32×32 пікселів, 16×16 пікселів, 8×8 пікселів або відеоблоків іншого розміру. Коли відеоблок є блоком з внутрішньокадровим кодуванням, можуть використовуватися різні способи для розділення відеоблока. Більш того, кожний з розділів може бути з різним внутрішньокадровим кодуванням, тобто, з різними режимами, такими як різні внутрішньокадрові режими. Наприклад, розділ 32×32, такий як розділ А на Фіг. 10, може бути додатково розділений на чотири блоки однакового розміру, відповідні розміру 16×16 пікселів. Як один приклад, ITU H.264 описує три різні способи для внутрішньокадрового кодування макроблока 16×16, включаючи внутрішньокадрове кодування на рівні 16×16, внутрішньокадрове кодування на рівні 8×8 і внутрішньокадрове кодування на рівні 4×4. Проте, ITU H.264 призначає кодування кожного розділу макроблока 16×16, використовуючи один і той же режим внутрішньокадрового кодування. Внаслідок цього, відповідно до ITU H.264, якщо один субблок макроблока 16×16 повинен бути з внутрішньокадровим кодуванням на рівні 4×4, то кожний субблок макроблока 16×16 повинен бути з внутрішньокадровим кодуванням на рівні 4×4. Протилежно цьому, кодер, сконфігурований відповідно до методик даного винаходу, може застосовувати підхід зі змішаним режимом. Застосовно до внутрішньокадрового кодування, наприклад, великий макроблок може мати різні розділи, закодовані за допомогою різних режимів кодування. Як ілюстрація, в розділі 32×32, один розділ 16×16 може бути з внутрішньокадровим кодуванням на рівні 4×4 пікселів, в той час як інші розділи 16×16 можуть бути з внутрішньокадровим кодуванням на рівні 8×8 пікселів, а один розділ 16×16 може бути з внутрішньокадровим кодуванням на рівні 16×16, наприклад, як показано на Фіг. 4B. Коли відеоблок повинен бути розділений на чотири субблоки однакового розміру для внутрішньокадрового кодування, першим блоком, який повинен бути закодований з внутрішньокадровим кодуванням, може бути верхній лівий блок, за яким йде блок безпосередньо праворуч від першого блока, за яким йде блок безпосередньо нижче першого блока і за яким в результаті йде блок нижче і правіше першого блока. З посиланням на зразковий блок на Фіг. 10, порядок внутрішньокадрового кодування міг би слідувати від А до В до С і в результаті до D. Недивлячись на те, що Фіг. 10 зображає 64×64-піксельний макроблок, внутрішньокадрове кодування розділеного блока іншого розміру може відбуватися точно в такому ж порядку. Коли відеоблок повинен бути закодований з міжкадровим кодуванням, як частина Р-кадру або Р-вирізки, то блок може бути розділений на будь-які з чотирьох описаних вище розділів, кожний з яких може кодуватися окремо. Тобто, кожний розділ блока може кодуватися відповідно до різних режимів кодування, або кодуватися з внутрішньокадровим кодуванням (I-що кодується), або кодуватися з міжкадровим кодуванням з посиланням на один опорний кадр/вирізку/список (Р-що кодується). Таблиця 1 нижче резюмує інформацію міжкадрового кодування застосовно до кожного потенційного розділу блока розміром N×N. Там, де таблиця 1 посилається на "M", M=N/2. У Таблиці 1 нижче L0 належить до "списку 0", тобто, до опорного кадру/вирізки/списку. При прийнятті рішення про те, яким чином краще усього розділити блок N×N, кодер, такий як кодер 50 відео, може аналізувати інформацію витрат спотворення і швидкості для кожного 24 UA 102117 C2 MB_N_типу (тобто, кожного типу розділення) на основі множника Лагранжа, як розглядається детальніше відносно Фіг. 11, вибираючи найменші витрати, як найкращий спосіб розділення. 5 Таблиця 1 P_L0_N×N P_L0_L0_N×M P_L0_L0_M×N PN_M×M 1 2 2 4 Режим передбачення частини 1 Pred_L0 Pred_L0 Pred_L0 Незастосовно PN_Skip 1 Pred_L0 MB_N_тип Ім'я MB_N_типу # частин 0 1 2 3 Мається на увазі 10 15 20 25 30 Режим передбачення частини 2 Незастосовно Pred_L0 Pred_L0 Незастосовно Незастосовно Ширина частини Висота частини N N M M N M N M N N У таблиці 1 вище, елементи стовпця "MB_N_тип" є ключами для кожного типу розділу блока N×N. Елементи стовпця "Ім'я MB_N_типу" є іменами різних типів розділення блока N×N. "Р" в імені належить до блока з міжкадровим кодуванням, що використовує Р-кодування, тобто, відносно одного кадру/вирізки/списку. "L0" в імені належить до опорного кадру/вирізки/списку, наприклад "список 0" використовується як опорні кадри або вирізки для Р кодування. "N×N" належить до розділення, відповідного суцільному блоку, "N×M" належить до розділення, відповідного двом розділам шириною N і висотою M, "M×N" належить до розділення, відповідного двом розділам шириною M і висотою N, "M×M" належить до розділення, відповідного чотирьом розділам однакового розміру, кожний з яких шириною M і висотою M. У таблиці 1, PN_Skip має на увазі, що блок був "пропущений", наприклад через те, що блок, отримуваний при кодуванні, має всі нульові коефіцієнти. Елементи стовпця "Режим передбачення частини 1" належать до опорного кадру/вирізки/списку для суброзділу 1 розділу, в той час як елементи стовпця "Режим Передбачення частини 2" належать до опорного кадру/вирізки/списку для суброзділу 2 розділу. Оскільки P_L0_N×N має тільки один розділ, відповідний елемент "Режиму Передбачення частини 2" має значення "Незастосовно", оскільки не існує другого суброзділу. Для PN_M×M існує чотири блоки розділення, які можуть кодуватися окремо. З цієї причини, обидва стовпці режиму передбачення для PN_M×M включають в себе "Незастосовно". PN_Skip, як і при P_L0_N×N має тільки одну частину, таким чином відповідний елемент стовпця "Режим Передбачення частини 2" відповідає "Незастосовно". Таблиця 2 нижче включає в себе стовпці і елементи, аналогічні таблиці 1. Тим не менше, таблиця 2 відповідає різним режимам кодування для блоків з міжкадровим кодуванням, що використовує двоспрямоване передбачення (В-закодовані). Внаслідок цього, кожний розділ може кодуватися за допомогою або одного з, або як першого кадру/вирізки/списку (L0), так і другого кадру/вирізки/списку (L1). "BiPred" належить до відповідного розділу, передбаченого при допомозі як L0,так і L1. У таблиці 2, найменування стовпців і значень по значенню аналогічні використовуваним в таблиці 1. Таблиця 2 MB_N_тип Ім'я MB_N_тип 0 1 2 3 4 5 6 7 8 9 # частин B_Direct_N×N Незастосовно B_L0_N×N 1 B_L1_N×N 1 B_Bi_N×N 1 B_L0_L0_N×M 2 B_L0_L0_M×N 2 B_L1_L1_N×M 2 B_L1_L1_M×N 2 B_L0_L1_N×M 2 B_L0_L1_M×N 2 Режим Передбачення частини 1 Безпосередньо Pred_L0 Pred_L1 BiPred Pred_L0 Pred_L0 Pred_L1 Pred_L1 Pred_L0 Pred_L0 25 Режим Ширина Висота Передбачення частини частини частини 2 Незастосовно N N Незастосовно N N Незастосовно N N Незастосовно N N Pred_L0 N M Pred_L0 M N Pred_L1 N M Pred_L1 M N Pred_L1 N M Pred_L1 M N UA 102117 C2 Продовження таблиці 2 10 11 12 13 14 15 16 17 18 19 20 21 22 Мається на увазі 5 10 15 20 25 30 35 40 B_L1_L0_N×M B_L1_L0_M×N B_L0_Bi_N×M B_L0_Bi_M×N B_L1_Bi_N×M B_L1_Bi_M×N B_Bi_L0_N×M B_Bi_L0_M×N B_Bi_L1_N×M B_Bi_L1_M×N B_Bi_Bi_N×M B_Bi_Bi_M×N BN_M×M 2 2 2 2 2 2 2 2 2 2 2 2 4 Pred_L1 Pred_L1 Pred_L0 Pred_L0 Pred_L1 Pred_L1 BiPred BiPred BiPred BiPred BiPred BiPred Незастосовно Pred_L0 Pred_L0 BiPred BiPred BiPred BiPred Pred_L0 Pred_L0 Pred_L1 Pred_L1 BiPred BiPred Незастосовно N M N M N M N M N M N M M M N M N M N M N M N M N M BN_Skip Незастосовно Безпосередньо Незастосовно M M Фіг. 11 є блок-схемою, що ілюструє зразковий спосіб обчислення оптимального розділення і способів кодування для N×N-піксельного відеоблока. Загалом, спосіб на Фіг. 11 містить обчислення витрат для кожного відмінного способу кодування (наприклад, різних просторових або часових режимів), що застосовуються до кожного відмінного способу розділення, показаного на, наприклад, Фіг. 4A, і вибір поєднання режиму кодування і режиму розділення з найкращими витратами спотворення і швидкості застосовно до N×N-піксельного відеоблока. Витрати загалом можуть обчислюватися з використанням множника Лагранжа і значень швидкості і спотворення, таким чином, що витрати спотворення і швидкості=спотворенню+λ*швидкість, де спотворення являє собою помилку між початковим блоком і закодованим блоком, а швидкість являє собою швидкість передачі бітів, необхідну для забезпечення режиму кодування. У деяких випадках, швидкість і спотворення можуть визначатися на рівні макроблока, розділу, вирізки або кадру. Спочатку, кодер 50 відео приймає (етап 170) відеоблок N×N, який повинен бути закодований. Наприклад, кодер 50 відео приймає великий макроблок 64×64 або його розділ, такий як, наприклад, розділ 32×32 або 16×16, для якого кодер 50 відео повинен вибрати спосіб кодування і розділення. Потім кодер 50 відео обчислює (етап 172) витрати на кодування блока N×N, використовуючи різноманіття різних режимів кодування, таких як різні режими внутрішньокадрового або міжкадрового кодування. Для обчислення витрат на просторове кодування блока N×N, кодер 50 відео може обчислити спотворення і швидкість передачі бітів, необхідну для кодування блока N×N при заданому режимі кодування, і потім обчислити витрати=спотворенню(Режим, N×N)+λ*швидкість(Режим, N×N). Кодер 50 відео може закодувати макроблок, використовуючи вказану методику кодування, і визначити результативні витрати швидкості передачі бітів і спотворення. Спотворення може визначатися на основі різниці між пікселями в закодованому макроблоці і пікселями в початковому макроблоці, наприклад, на основі показника суми абсолютних різниць (SAD), показника суми квадратичних різниць (SSD) або інших показників різниці між пікселями. Кодер 50 відео потім може розділити блок N×N на два однакового розміру непересічні горизонтальні розділи N×(N/2). Кодер 50 відео може обчислити (етап 176) витрати на кодування кожного з розділів, використовуючи різні режими кодування. Наприклад, для обчислення витрат на кодування першого розділу N×(N/2), кодер 50 відео може обчислити спотворення і швидкість передачі бітів для кодування першого розділу N×(N/2), і потім обчислити витрати=спотворенню(Режим, перший розділ, N×(N/2))+λ*швидкість (Режим, перший розділ N×(N/2)). Потім кодер 50 відео може розділити блок N×N на два однакового розміру непересічні вертикальні розділи (N/2)×N. Кодер 50 відео може обчислити (етап 178) витрати на кодування кожного з розділів, використовуючи різні режими кодування. Наприклад, для обчислення витрат на кодування першого розділу (N/2)×N, кодер 50 відео може обчислити спотворення і швидкість передачі бітів для кодування першого розділу (N/2)×N, і потім обчислити витрати=спотворенню(Режим, перший розділ (N/2)×N)+λ*швидкість(Режим, перший розділ(N/2)×N). Кодер 50 відео може виконати аналогічні обчислення застосовно до витрат на кодування другого одного з розділів (N/2)×N макроблока. Потім кодер 50 відео може розділити блок N×N на чотири однакового розміру непересічні розділи (N/2)×(N/2). Кодер 50 відео може обчислити (етап 180) витрати на кодування кожного з 26 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 розділів, використовуючи різні режими кодування. Для обчислення витрат на кодування розділів (N/2)×(N/2), кодер 50 відео може спочатку обчислити спотворення і швидкість передачі бітів для кодування верхнього лівого розділу (N/2)×(N/2), і знайти витрати на нього як витрати (Режим, верхній лівий, (N/2)×(N/2)=спотворенню(Режим верхній лівий, (N/2)×(N/2) +λ*швидкість(Режим, верхній лівий, (N/2)х(N/2)). Кодер 50 відео може аналогічним чином обчислити витрати для кожного блока (N/2)×(N/2) в порядку: (1) верхній лівий розділ, (2) верхній правий розділ, (3) нижній лівий розділ, (4) нижній правий розділ. Кодер 50 відео, в деяких прикладах, додатково робить рекурсивні виклики до даного способу по одному або більше розділах (N/2)×(N/2) для обчислення витрат на розділення і окреме кодування кожного з розділів (N/2)×(N/2), наприклад, як для розділів (N/4)×(N/2), розділів (N/4)×(N/2) і розділів (N/4)×(N/4). Далі кодер 50 відео може визначити (етап 182), яке поєднання розділення і режиму кодування дає найкращі, тобто, найнижчі, витрати відносно швидкості і спотворення. Наприклад кодер 50 відео може порівняти найкращі витрати на кодування двох сусідніх розділів (N/2)×(N/2) з найкращими витратами на кодування розділу N×(N/2), що містить два сусідні розділи (N/2)×(N/2). Коли сукупні витрати на кодування двох сусідніх розділів (N/2)×(N/2) перевищують витрати на кодування розділу N×(N/2), що їх містить, кодер 50 відео може вибрати варіант з найменшими витратами кодування розділу N×(N/2). Загалом, кодер 50 відео може застосовувати будь-яке поєднання способу розділення і режиму кодування для кожного розділу, щоб встановити спосіб розділення і кодування з найменшими витратами. У деяких випадках, кодер 50 відео може бути сконфігурований для оцінки більш обмеженого набору поєднань розділення і режиму кодування. З визначенням найкращих, наприклад, з найменшими витратами, способів розділення і кодування, кодер 50 відео може закодувати (етап 184) макроблок N×N, використовуючи визначений спосіб з найкращими витратами. У деяких випадках, результатом може бути великий макроблок, що має розділи, які кодуються з використанням різних режимів кодування. Здатність застосовувати змішаний режим кодування до великого макроблока, як наприклад застосування різних режимів кодування до різних розділів у великому макроблоці, може надати можливість закодувати макроблок зі зниженими витратами. У деяких прикладах, спосіб кодування за допомогою змішаних режимів може включати в себе: прийом, за допомогою кодера 50 відео, відеоблока, що має розмір, більший ніж 16×16 пікселів; розділення блока на розділи; кодування одного з розділів за допомогою першого режиму кодування; кодування інших з розділів за допомогою другого режиму кодування, відмінного від першого режиму кодування; і формування інформації синтаксису типу блоків, яка вказує розмір блока та ідентифікує розділи і режими кодування, використані для кодування розділів. Фіг. 12 є структурною схемою, що ілюструє зразковий 64×64-піксельний великий макроблок з різними розділами і різними вибраними для кожного розділу способами кодування. У прикладі на Фіг. 12, кожний розділ відмічений за допомогою одного з позначень "I", "Р" або "В". Розділи, відмічені як "I", є розділами, відносно яких кодер вибрав використання внутрішньокадрового кодування, наприклад, на основі оцінки спотворення і швидкості. Розділи, відмічені як "Р", є розділами, відносно яких кодер вибрав використання одноопорного міжкадрового кодування, наприклад, на основі оцінки спотворення і швидкості. Розділи, відмічені як "В", є розділами, відносно яких кодер вибрав використання міжкадрового кодування з двоспрямованим передбаченням, наприклад, на основі оцінки спотворення і швидкості. У прикладі на Фіг. 12, різні розділи всередині одного і того ж великого макроблока мають різні режими кодування, включаючи різні розміри розділів і суброзділів і різні режими внутрішньокадрового і міжкадрового кодування. Великий макроблок є макроблоком, що ідентифікується за допомогою елемента синтаксису макроблока, який ідентифікує тип макроблока, наприклад, mb64_тип або mb32_тип застосовно до заданого стандарту кодування, такого як поліпшення стандарту кодування H.264. Елемент синтаксису типу макроблока може забезпечуватися як елемент синтаксису заголовка макроблока в закодованому бітовому потоці відео. I-, Р- і В-закодовані розділи, проілюстровані на Фіг. 12, можуть кодуватися відповідно до різних режимів кодування, наприклад, режимів внутрішньокадрового або міжкадрового передбачення з різними розмірами блоків, включаючи режими розміру великого блока для великих розділів, розміром більшим, ніж 16×16, або режиму H.264, для розділів, які розміром менші або дорівнюють 16×16. У одному прикладі, кодер, такий як кодер 50 відео, може використовувати зразковий спосіб, описаний відносно Фіг. 11, для вибору різних режимів кодування і розмірів розділів для різних розділів і суброзділів зразкового великого макроблока на Фіг. 12. Наприклад, кодер 50 відео може прийняти макроблок 64×64, виконати спосіб з Фіг. 11, і створити в результаті зразковий 27 UA 102117 C2 5 10 15 20 25 30 35 40 45 50 55 60 макроблок з Фіг. 12 з різними розмірами розділів і режимами кодування. Проте, повинно бути зрозуміло, що варіанти вибору розділення і режимів кодування можуть виникати із застосування способу з Фіг. 11, наприклад, на основі типу кадру, з якого був вибраний макроблок, і на основі вхідного макроблока, відносно якого застосовується спосіб. Наприклад, коли кадр містить Iкадр, кожний розділ буде з внутрішньокадровим кодуванням. Як інший приклад, коли кадр містить Р-кадр, кожний розділ може бути або з внутрішньокадровим кодуванням, або з міжкадровим кодуванням, основаним на одному опорному кадрі (тобто, без двоспрямованого передбачення). Передбачається, що зразковий макроблок на Фіг. 12 був вибраний з метою ілюстрації з кадру з двоспрямованим передбаченням (В-кадру). У інших прикладах, якщо макроблок вибирається з Р-кадру, кодер 50 відео не міг би кодувати розділ, використовуючи двоспрямоване передбачення. Аналогічним чином, якщо макроблок вибирається з I-кадру, кодер 50 відео не міг би кодувати розділ, використовуючи міжкадрове кодування, як Ркодування, так і В-кодування. Проте, в будь-якому випадку, кодер 50 відео може вибрати різні розміри розділів для різних розділів макроблока і зробити вибір відносно кодування кожного розділу, використовуючи будь-які доступні режими кодування. У прикладі на Фіг. 12, передбачається, що поєднання розділу і вибору режиму основане на аналізі спотворення і швидкості, що привів до одного В-закодованого розділу 32×32, одного Рзакодованого розділу 32×32, одного I-закодованого розділу 16×32, одного В-закодованого розділу 32×16, одного Р-закодованого розділу 16×16, одного Р-закодованого розділу 16×8, одного Р-закодованого розділу 8×16, одного Р-закодованого розділу 8×8, одного Взакодованого розділу 8×8, одного I-закодованого розділу 8×8, і численних дрібніших суброзділів, що мають різні режими кодування. Приклад на Фіг. 12 наданий з метою концептуальної ілюстрації змішаного режиму кодування розділів у великому макроблоці і не обов'язково повинен розглядатися як фактичні результати кодування відносно конкретного великого макроблока 64×64. Фіг. 13 є блок-схемою, що ілюструє зразковий спосіб визначення оптимального розміру макроблока для кодування кадру або вирізки відеопослідовності. Незважаючи на те, що спосіб описаний відносно вибору оптимального розміру макроблока застосовно до кадру, спосіб, аналогічний тому, що описаний в зв'язку з Фіг. 13, може використовуватися для вибору оптимального розміру макроблока застосовно до вирізки. Аналогічним чином, незважаючи на те, що спосіб на Фіг. 13 описаний відносно кодера 50 відео, повинно бути зрозуміло, що будьякий кодер може використовувати зразковий спосіб з Фіг. 13 для визначення оптимального (наприклад, менш витратного) розміру макроблока для кодування кадру відеопослідовності. Загалом, спосіб на Фіг. 13 містить виконання проходу кодування три рази, один раз для кожного з макроблока 16×16, макроблока 32×32 і макроблока 64×64, і кодер відео може обчислити показники спотворення і швидкості для кожного проходу, щоб визначити, який розмір макроблока забезпечує найкращий показник спотворення і швидкості. Спочатку кодер 50 відео може кодувати (етап 190) кадр, використовуючи 16×16-піксельні макроблоки під час першого проходу кодування, наприклад, використовуючи функціональне кодування (кадр, MB16_тип), для створення закодованого кадру F 16. Після першого проходу кодування, кодер 50 відео може обчислити (етап 192) швидкість передачі бітів і спотворення, основані на використанні 16×16-піксельних макроблоків як R16 і D16 відповідно. Потім кодер 50 відео може обчислити (етап 194) показник спотворення і швидкості у вигляді витрат при використанні 16×16-піксельних макроблоків C16, використовуючи множник Лагранжа C 16=D16+ λ*R16. Режими кодування і розміри розділів можуть вибиратися застосовно до 16×16-піксельних макроблоків, наприклад, відповідно до стандарту H.264. Кодер 50 відео потім може кодувати (етап 196) кадр, використовуючи 32×32-піксельні макроблоки під час другого проходу кодування, наприклад, використовуючи функціональне кодування (кадр, MB32_тип), для створення закодованого кадру F 32. Післядругого проходу кодування, кодер 50 відео може обчислити (етап 198) швидкість передачі бітів і спотворення, основані на використанні 32×32-піксельних макроблоків як R32 і D32 відповідно. Потім кодер 50 відео може обчислити (етап 200) показник спотворення і швидкості у вигляді витрат при використанні 32×32-піксельних макроблоків C32, використовуючи множник Лагранжа C32=D32+λ*R32. Режими кодування і розміри розділів можуть вибиратися застосовно до 32×32піксельних макроблоків, наприклад, використовуючи методики оцінки швидкості і спотворення, як описано відносно Фіг. 11 і 12. Кодер 50 відео потім може кодувати (етап 202) кадр, використовуючи 64×64-піксельні макроблоки під час третього проходу кодування, наприклад, використовуючи функціональне кодування (кадр, MB64_тип), для створення закодованого кадру F64. Після третього проходу 28

Дивитися

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

Назва патенту англійською

Video coding with large macroblocks

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

Chen, Peisong, Ye, Yan, Karczewicz, Marta

Назва патенту російською

Кодирование видео с помощью больших макроблоков

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

Чень Пейсун, Е Янь, Карчевич Марта

МПК / Мітки

МПК: H04N 7/26, H04N 7/50

Мітки: макроблоків, кодування, допомогою, відео, великих

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

<a href="https://ua.patents.su/51-102117-koduvannya-video-za-dopomogoyu-velikikh-makroblokiv.html" target="_blank" rel="follow" title="База патентів України">Кодування відео за допомогою великих макроблоків</a>

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