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

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

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

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

Є ще 45 сторінок.

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

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

1. Спосіб кодування відео, який включає етапи, на яких:

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

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

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

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

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

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

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

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

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

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

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

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

9. Спосіб за п. 1, який додатково включає етапи, на яких:

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

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

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

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

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

кодувати один з розділів з використанням першого режиму кодування;

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

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

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

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

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

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

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

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

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

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

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

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

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

засіб для кодування одного з розділів з використанням першого режиму кодування;

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

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

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

21. Пристрій за п. 19, який додатково включає засіб для вибору режимів кодування, що використовуються для кодування розділів, на основі аналізу витрат на кодування.

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

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

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

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

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

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

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

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

кодувати один з розділів з використанням першого режиму кодування;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

декодувати відеоблок на основі синтаксичної інформації типу блока.

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

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

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

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

Текст

Реферат: Описані методики кодування і декодування цифрових відеоданих з використанням макроблоків, які більші макроблоків, призначених традиційними стандартами кодування і декодування відео. Наприклад, методики включають в себе кодування і декодування відеопотоку з використанням макроблоків, що містять більше ніж 16×16 пікселів, наприклад 64×64 пікселі. Кожний макроблок може бути розділений на два або більше розділів, і два або більше з розділів можуть бути закодовані з використанням різних режимів. У одному прикладі пристрій включає в себе відеокодер, сконфігурований для прийому відеоблока, що має розмір, більший 16×16 пікселів, розподілу блока на розділи, кодування одного з розділів з використанням першого режиму кодування, кодування іншого розділу з використанням другого режиму кодування, який відрізняється від першого режиму кодування, формування синтаксичної інформації типу блока, яка вказує розмір блока і ідентифікує розділи і режими кодування, що використовуються для кодування розділів. UA 99391 C2 (12) UA 99391 C2 UA 99391 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 р., кожна з яких у всій повноті включена в цей документ за допомогою посилання. Дана заявка пов'язана із заявками на патент США, поданими на ту ж саму дату, як і дана заявка, причому всі вони мають однакову назву "КОДУВАННЯ ВІДЕО ЗА ДОПОМОГОЮ ВЕЛИКИХ МАКРОБЛОКІВ", з тимчасово привласненими номерами в досьє повіреного 090033U1, 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) або часові (Р або В) режими для вибраних розділів. Як інший приклад методика кодування може використовувати значення ієрархічної моделі кодування блока (СВР) для того, щоб ефективно ідентифікувати кодовані макроблоки і розділи, що мають ненульові коефіцієнти, всередині великого макроблока. Як додатковий приклад методика кодування може порівнювати показники спотворення і швидкості, що отримуються при кодуванні з використанням великих і дрібних макроблоків, для вибору розміру макроблока, що дає більш сприятливі результати. У одному прикладі в розкритті представлений спосіб, який містить кодування відеоблока, що має розмір більший ніж 16×16 пікселів, за допомогою відеокодера, формування синтаксичної інформації типу блока, яка вказує розмір блока, і формування значення моделі кодованого блока для закодованого блока, причому значення моделі кодованого блока вказує, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт. У іншому прикладі в розкритті представлений пристрій, який містить відеокодер, сконфігурований для кодування відеоблока, що має розмір більший ніж 16×16 пікселів, формування синтаксичної інформації типу блока, яка вказує розмір блока, і формування 1 UA 99391 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 пікселів, причому блок розділений на розділи, один з розділів закодований з використанням першого режиму кодування, а інший розділ закодований з використанням другого режиму кодування, який 2 UA 99391 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 пікселів, і засіб для формування синтаксичної інформації для кодованої одиниці, яка включає в себе максимальне значення розміру, причому максимальне значення розміру вказує на розмір найбільшого з множини відеоблоків в кодованій одиниці. У іншому прикладі в розкритті представлений комп'ютерочитаний носій із закодованими інструкціями для спонукання програмованого процесора кодувати кодовану одиницю, яка містить множину відеоблоків, причому з множини відеоблоків щонайменше один має розмір 3 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 більший ніж 16×16 пікселів, і формувати синтаксичну інформацію для кодованої одиниці, яка включає в себе максимальне значення розміру, причому максимальне значення розміру вказує на розмір найбільшого з множини відеоблоків в кодованій одиниці. У іншому прикладі в розкритті представлений спосіб, який містить прийом, за допомогою відеодекодера, кодованої одиниці, яка містить множину відеоблоків, причому з множини відеоблоків щонайменше один має розмір більший ніж 16×16 пікселів, прийом синтаксичної інформації для кодованої одиниці, яка включає в себе максимальне значення розміру, причому максимальне значення розміру вказує на розмір найбільшого відеоблока з множини відеоблоків в кодованій одиниці, вибір декодера синтаксису типу блока, згідно з максимальним значенням розміру, і декодування кожного з множини відеоблоків в кодованій одиниці, з використанням декодера синтаксису типу блока. У іншому прикладі в розкритті представлений пристрій, який містить відеодекодер, сконфігурований для прийому кодованої одиниці, яка містить множину відеоблоків, причому з множини відеоблоків щонайменше один має розмір більший ніж 16×16 пікселів, прийому синтаксичної інформації для кодованої одиниці, яка включає в себе максимальне значення розміру, причому максимальне значення розміру вказує на розмір найбільшого відеоблока з множини відеоблоків в кодованій одиниці, вибору декодера синтаксису типу блока, згідно з максимальним значенням розміру, і декодування кожного з множини відеоблоків в кодованій одиниці, з використанням декодера синтаксису типу блока. У іншому прикладі в розкритті представлений засіб для прийому кодованої одиниці, яка містить множину відеоблоків, причому з множини відеоблоків щонайменше один має розмір більший ніж 16×16 пікселів, засіб для прийому синтаксичної інформації для кодованої одиниці, яка включає в себе максимальне значення розміру, причому максимальне значення розміру вказує на розмір найбільшого відеоблока з множини відеоблоків в кодованій одиниці, засіб для вибору декодера синтаксису типу блока, згідно з максимальним значенням розміру, і засіб для декодування кожного відеоблока з множини відеоблоків в кодованій одиниці, з використанням декодера синтаксису типу блока. У іншому прикладі в розкритті представлений комп'ютерочитаний носій із закодованими інструкціями для спонукання програмованого процесора приймати кодовану одиницю, яка містить множину відеоблоків, причому з множини відеоблоків щонайменше один має розмір більший ніж 16×16 пікселів, приймати синтаксичну інформацію для кодованої одиниці, яка включає в себе максимальне значення розміру, причому максимальне значення розміру вказує на розмір найбільшого відеоблока з множини відеоблоків в кодованій одиниці, вибирати декодер синтаксису типу блока, згідно з максимальним значенням розміру, і декодувати кожний відеоблок з множини відеоблоків в кодованій одиниці, з використанням декодера синтаксису типу блока. Подробиці одного або більше прикладів викладені нижче в супроводжуючих фігурах і в описі. Інші ознаки, цілі і переваги будуть ясні з опису і креслень, і з формули винаходу. Короткий опис креслень На фіг. 1 представлена функціональна схема, яка ілюструє приклад системи кодування і декодування відео, яка здійснює кодування і декодування цифрових відеоданих з використанням великих макроблоків. На фіг. 2 представлена функціональна схема, яка ілюструє приклад відеокодера, що реалізовує спосіб кодування великих макроблоків. На фіг. 3 представлена функціональна схема, яка ілюструє приклад відеодекодера, що реалізовує спосіб декодування великих макроблоків. На фіг. 4A представлена концептуальна схема, яка ілюструє розділення великого макроблока по різних рівнях. На фіг. 4B представлена концептуальна схема, яка ілюструє призначення різних режимів кодування різним розділам великого макроблока. На фіг. 5 представлена концептуальна схема, яка ілюструє ієрархічний огляд різних рівнів великого макроблока. На фіг. 6 представлена функціональна схема, яка ілюструє приклад способу встановлення значення моделі кодованого блока (СВР) великого макроблока 64×64 пікселі. На фіг. 7 представлена функціональна схема, яка ілюструє приклад способу встановлення значення моделі кодованого блока (СВР) розділу 32×32 пікселі великого макроблока 64×64 пікселі. На фіг. 8 представлена функціональна схема, яка ілюструє приклад способу встановлення значення моделі кодованого блока (СВР) розділу 16×16 пікселів розділу 32×32 пікселі великого макроблока 64×64 пікселі. 4 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 На фіг. 9 представлена функціональна схема, яка ілюструє приклад способу для визначення двобітового значення luma16×8_CBP. На фіг. 10 представлена функціональна схема, яка ілюструє приклад компонування великого макроблока 64×64 пікселі. На фіг. 11 представлена функціональна схема, яка ілюструє приклад способу обчислення оптимального розділення і способів кодування для великого відеоблока N×N пікселів. На фіг. 12 представлена функціональна схема, яка ілюструє приклад різних варіантів розділення макроблока 64×64 пікселі і вибраних способів кодування для кожного розділу. На фіг. 13 представлена функціональна схема, яка ілюструє приклад способу визначення оптимального розміру макроблока для кодування кадру відеопослідовності. На фіг. 14 представлена функціональна схема, яка ілюструє приклад приладу бездротового зв'язку, що включає в себе відеокодер/декодер (CODEC, кодек), який здійснює кодування цифрових відеоданих з використанням великих макроблоків. На фіг. 15 представлена функціональна схема, яка ілюструє приклад представлення масиву ієрархічного представлення СВР для великого макроблока. На фіг. 16 представлена функціональна схема, яка ілюструє приклад деревоподібної структури, яка відповідає ієрархічному представленню СВР на фіг. 15. На фіг. 17 представлена функціональна схема, яка ілюструє приклад способу використання синтаксичної інформації кодованої одиниці для того, щоб указати і вибрати кодери і декодери блокового синтаксису, для відеоблоків кодованої одиниці. У даному розкритті описуються методики кодування і декодування цифрових відеоданих з використанням великих макроблоків. Великі макроблоки більші, ніж макроблоки, які звичайно призначаються існуючими стандартами кодування відео. Більшістю стандартів кодування відео призначається використання макроблока в формі масиву пікселів розміром 16×16 пікселів. Відповідно до даного винаходу, кодер і/або декодер можуть використовувати великі макроблоки, розмір яких більший ніж 16×16 пікселів. Як приклади великий макроблок може бути масивом пікселів 32×32 пікселі, 64×64 пікселі або, можливо, ще більше. Взагалі термін "макроблок", як він використовується в даному розкритті, може належати до структури даних для масиву пікселів, що має певний розмір, виражений як N×N пікселів, де N позитивне цілочислове значення. Макроблок може визначати чотири блоки яскравості, кожний з яких містить масив з (N/2)×(N/2) пікселів, два блоки кольоровості, кожний з яких містить масив з N×N пікселів, і заголовок, що містить інформацію типу макроблока і інформацію про модель кодованого блока (СВР), як більш детально обговорюється нижче. Традиційними стандартами кодування відео звичайно призначається, щоб певний розмір макроблока складав масив 16×16 пікселів. Відповідно до різних методик, описаних в даному розкритті, макроблоки можуть містити масиви N×N пікселів, де N може бути більшим 16. Аналогічним чином традиційними стандартами кодування відео звичайно призначається, щоб при міжкадровому кодуванні макроблока призначався єдиний вектор руху. Відповідно до різних методик, описаних в даному розкритті, множина векторів руху може бути призначена для міжкадрово закодованих розділів макроблока N×N, як це більш детально описане нижче. Посилання на "великі макроблоки" або аналогічні фрази в загальному випадку належать до макроблоків з масивами пікселів більше ніж 16×16. У деяких випадках великі макроблоки можуть забезпечувати поліпшення в ефективності кодування і/або скорочення витрат на передачу даних, при збереженні або можливому поліпшенні якості зображення. Наприклад, використання великих макроблоків може дозволити відеокодеру і/або декодеру використовувати переваги збільшеної надмірності, що надається відеоданими, сформованими при збільшеній просторовій розрізнювальній здатності (наприклад, 1280×720 або 1920×1080 пікселів на кадр) і/або при збільшеній частоті кадрів (наприклад, 30 або 60 кадрів за секунду). Як ілюстрація цифрова відеопослідовність з просторовим розрізненням 1280×720 пікселів на кадр і частотою 60 кадрів за секунду, в просторовомвідносно в 36 разів більша, і у часовомвідносно в 4 рази швидша, ніж цифрова відеопослідовність з просторовим розрізненням 176×144 пікселя на кадр і частотою 15 кадрів за секунду. По мірі збільшення розміру макроблока відеокодер і/або декодер може краще використовувати збільшену просторову і/або часову надмірність для стиснення відеоданих. Крім того, при використанні великих макроблоків може бути закодоване менше число блоків для даного кадру або вирізки, що зменшує об'єм службової інформації, що передається. Іншими словами, великі макроблоки можуть дозволити скоротити загальну кількість макроблоків, які кодуються по кожному кадру або вирізці. Якби просторове розрізнення кадру було б збільшене, наприклад, в чотири рази, то вчетверо зросла б кількість макроблоків 16×16, необхідних для 5 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 забезпечення необхідної кількості пікселів в кадрі. У даному прикладі при макроблоках 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) або часові (Р або В) режими кодування. Крім того, ієрархічні значення моделі кодованого блока (СВР) можуть бути використані для ефективної ідентифікації закодованих макроблоків і розділів, які мають ненульові коефіцієнти перетворення, що представляють дані залишку. Крім того, показники спотворення і швидкості можуть бути порівняні для кодування з використанням макроблоків великих і дрібних розмірів для того, щоб вибрати оптимальний розмір макроблока, що дає сприятливі результати. Більше того, кодована одиниця (наприклад, кадр, вирізка, послідовність або група зображень), який містить макроблоки різних розмірів, може включати в себе елемент синтаксису, який вказує розмір найбільшого макроблока в кодованій одиниці. Як більш детально описано нижче, великі макроблоки мають інший синтаксис рівня блоків, ніж стандартні блоки розміром 16×16 пікселів. Відповідно, за допомогою вказівки розміру найбільшого макроблока в кодованій одиниці кодер може повідомити декодеру, який синтаксис рівня блоків потрібно застосувати до макроблоків кодованої одиниці. Використання різних режимів кодування для різних розділів у великому макроблоці може вважатися змішаним режимом кодування великих макроблоків. Замість того, щоб здійснювати кодування великого макроблока однаково, так, щоб для всіх розділів використовувався однаковий внутрішньокадровий або міжкадровий режим кодування, великий макроблок може бути закодований таким чином, що в деяких розділах використовувалися б різні режими 6 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 кодування, такі як різні режими внутрішньокадрового кодування (наприклад, I_16×16, I_8×8, I_4×4), або внутрішньо-кадрові і міжкадрові режими кодування. Якщо великий макроблок розділений на два або більше розділів, то, наприклад, щонайменше один розділ може бути закодований за допомогою першого режиму, а інший розділ може бути закодований за допомогою другого режиму, який відрізняється від першого режиму. У деяких випадках перший режим може бути першим I-режимом, а другий режим може бути другим I-режимом, відмінним від першого I-режиму. У інших випадках перший режим може бути I режимом, а другий режим може бути режимом Р або В. Отже, в деяких прикладах великий макроблок може включати в себе один або більше часовим чином (Р або В) закодованих розділів і один або більше просторовим чином (I) закодованих розділів, або один або більше просторовим чином закодованих розділів за допомогою різних I режимів. Одне або більше значень ієрархічної моделі кодованого блока (СВР) можуть бути використані для вичерпного опису, чи є в яких-небудь розділах великого макроблока щонайменше один ненульовий коефіцієнт перетворення, і, якщо є, то в яких саме розділах. Коефіцієнти перетворення використовуються для кодування даних залишку для великого макроблока. Біт СВР рівня великого макроблока вказує, чи включає в себе який-небудь розділ у великому макроблоці ненульовий, квантований коефіцієнт. Якщо ні, то немає необхідності розглядати, чи є у якого-небудь розділу коефіцієнт, який відрізняється від нуля, оскільки відомо, що у усього великого макроблока немає ніяких ненульових коефіцієнтів. У цьому випадку може бути використаний макроблок передбачення для того, щоб декодувати макроблок без даних залишку. Альтернативно, якщо значення СВР рівня макроблока вказує, що щонайменше у одного розділу у великому макроблоці є ненульовий коефіцієнт, тоді значення СВР рівня розділу можуть бути проаналізовані для того, щоб ідентифікувати, який з розділів включає в себе щонайменше один ненульовий коефіцієнт. Потім декодер може витягнути відповідні дані залишку для розділів, що мають щонайменше один ненульовий коефіцієнт, і декодувати розділи, використовуючи дані залишку і дані блока передбачення. У деяких випадках один або більше розділів можуть мати ненульові коефіцієнти і тому включають в себе значення СВР рівня розділу з відповідною вказівкою. Як великий макроблок, так і щонайменше деякі розділи можуть бути більшими ніж 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 99391 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 демодулює інформацію. Процес кодування відео знов може реалізовувати одну або більше методик, описаних тут, з використанням великого макроблока, наприклад, більше 16×16, для 8 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 міжкадрового (тобто часового) і/або внутрішньокадрового (тобто просторового) кодування відеоданих. Процес декодування відео, що виконується відеодекодером 30, також може використовувати такі методики в процесі декодування. Інформація, що передається по каналу 16, може включати в себе синтаксичну інформацію, що визначається відеокодером 20, яка також використовується відеодекодером 30 і включає в себе елементи синтаксису, що описують характеристики і/або обробку великих макроблоків, як це більш детально обговорюється нижче. Синтаксична інформація може бути включена в будь-якому або у всі заголовки кадрів, заголовки вирізок, заголовки послідовностей (наприклад, відносно H.264, за допомогою використання профілю і рівня, якому відповідає закодована відеопослідовність) або заголовки макроблока. Прилад 32 відображення здійснює відображення декодованих відеоданих користувачу і може містити будь-який з різноманіття приладів відображення, таких як електронно-променева трубка (CRT), рідкокристалічний дисплей (LCD), плазмовий дисплей, дисплей на органічних світлодіодах (OLED) або інший тип приладу відображення. У прикладі, поданому на фіг. 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 можуть бути інтегровані з кодером і декодером аудіо, і можуть включати в себе відповідні модулі мультиплексора-демультиплексора або інше апаратне і програмне забезпечення для того, щоб здійснювати кодування як аудіо, так і відео в загальному потоці даних або в окремих потоках даних. Якщо застосовно, то модулі мультиплексорадемультиплексора можуть відповідати протоколу мультиплексування ITU H.223 або іншим протоколам, таким як протокол користувацьких дейтаграм (UDP). Стандарт ITU-T H.264/MPEG-4 (AVC) був сформульований експертною групою по кодуванню відео (VCEG) при Міжнародному союзі електрозв'язку (ITU-T) спільно з експертною групою з питань рухомого зображення (MPEG) при Міжнародній організації по стандартизації/Міжнародній електротехнічній комісії (ISO/IEC), як продукт колективного партнерства, відомого як об'єднана відеогрупа (JVT). У деяких аспектах методики, описані в даному розкритті, можуть бути застосовані до приладів, відповідних стандарту H.264. Стандарт H.264 описаний в рекомендації Міжнародного союзу електрозв'язку (ITU-T) по вдосконаленому кодуванню відео для універсальних аудіовізуальних послуг дослідницькою групою 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 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 даного розкриття. Кожний відеокадр може включати в себе множину вирізок. Кожна вирізка може включати в себе множину макроблоків, які можуть бути скомпоновані в розділи, які також називаються субблоками. Як приклад стандарт ITU-T H.264 забезпечує внутрішньокадрове передбачення в блоках різних розмірів, таких як 16 на 16, 8 на 8, або 4 на 4 для компонентів яскравості (luma), і 8×8 для компонентів кольоровості (chroma), так само як зовнішнє передбачення при різних розмірах блока, таких як 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) або іншою методологією ентропійного кодування. Модуль процесора, сконфігурований для ентропійного кодування, або інший модуль процесора може виконувати інші функції по обробці, такі як кодування квантованих коефіцієнтів нульової послідовності і/або формування синтаксичної інформації, такої як значення СВР, тип макроблока, режим кодування, максимальний розмір макроблока для кодованої одиниці (такий як кадр, вирізка, макроблок або послідовність), або аналогічні їм. Згідно з різними методиками, представленими в даному розкритті, відеокодер 20 може використовувати макроблок, який більший макроблока, призначеного традиційними стандартами кодування цифрових відеоданих. У одному прикладі відеокодер 20 може здійснювати кодування відеоблока, що має розмір більший ніж 16×16 пікселів, формування 10 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 синтаксичної інформації типу блока, яка вказує розмір блока і формування значення моделі кодованого блока (СВР) для закодованого блока, причому значення моделі кодованого блока вказує, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт. Синтаксична інформація типу блока макроблока може бути представлена в заголовку макроблока для великого макроблока. Синтаксична інформація типу блока макроблока може вказувати адресу або позицію макроблока в кадрі або вирізці, або номер макроблока, який ідентифікує позицію макроблока, тип режиму кодування, що застосовується для макроблока, поріг квантування для макроблока, будь-яку інформацію про вектор руху для макроблока і значення СВР для макроблока. У іншому прикладі відеокодер 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 перетворювача, модуль 11 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 40 квантування і модуль 46 ентропійного кодування. Для відтворення відеоблока відеокодер 50 також включає в себе модуль 42 зворотного квантування, модуль 44 зворотного перетворення і суматор 51. Деблокінг-фільтр (на фіг. 2 не показаний) також може бути увімкнений для фільтрації меж блоків для того, щоб усунути артефакти "блоковості" зображення у відтвореному відео. Якщо це бажано, то деблокінг-фільтр звичайно здійснює фільтрацію вихідного сигналу суматора 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 являє собою компонент або компоненти, які виконують цю 12 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 операцію віднімання. Модуль 38 перетворення здійснює перетворення, таке як дискретне косинусне перетворення (DCT) або концептуально аналогічне перетворення, по відношенню до блока залишку, формуючи при цьому відеоблок, що містить значення коефіцієнтів перетворення блока залишку. Модуль 38 перетворення може виконувати інші перетворення, визначені стандартом 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, PREV належить до значення QPY попереднього макроблока 64×64 пікселі в порядку декодування поточної вирізки/кадру, і де «%» належить до оператора по модулю таким чином, що N%52 дає результат між 0 і 51 включно, що відповідає значенню залишку від розподілу N на 52. Для першого макроблока в кадрі/вирізці значення QPY, PREV може бути встановлено рівним значенню QP кадру/вирізки, переданому в заголовку кадру/вирізки. У одному прикладі модуль 40 квантування передбачає, що значення MB64_delta_QP дорівнює нулю, коли значення MB64_delta_QP не визначене для конкретного макроблока 64×64 пікселі, включаючи макроблоки типу "пропущений", такі як макроблоки типів PSkip і BSkip. У деяких прикладах додаткові значення deltaQP (які в загальному випадку називаються значеннями зміни параметрів квантування) можуть бути визначені для більш точного контролю за кроком квантування розділів в межах макроблока 64×64 пікселі, такого як значення MB32_delta_QP для кожного розділу 32×32 пікселі в макроблоці 64×64 пікселі. У деяких прикладах кожному розділу макроблока 64×64 можна призначити індивідуальний параметр квантування. Використання індивідуалізованого параметра квантування для кожного розділу може привести до більш ефективного квантування макроблока, наприклад, поліпшити настроювання квантування для неоднорідної області, замість використання єдиного значення QP для макроблока 64×64. Кожне значення зміни параметра квантування може бути включене як синтаксична інформація відповідного закодованого блока, і декодер може декодувати закодований блок за допомогою деквантування, тобто зворотного квантування закодованого блока, згідно з величиною зміни параметра квантування. Після квантування модуль 46 ентропійного кодування здійснює кодування квантованих коефіцієнтів перетворення. Наприклад, модуль 46 ентропійного кодування може виконувати контекстно-залежне адаптивне кодування із змінною довжиною кодового слова (CAVLC), контекстно-залежне адаптивне двійкове арифметичне кодування (CABAC) або ентропійне кодування по іншій методиці. Після ентропійного кодування модулем 46 ентропійного кодування закодоване відео може бути передане на інший прилад або заархівоване для більш пізньої передачі або відновлення. Закодований бітовий потік може включати в себе блоки ентропійно закодованих коефіцієнтів перетворення залишку, вектори руху для таких блоків, значення MB64_delta_QP для кожного макроблока 64×64 пікселі, і інші елементи синтаксису, включаючи, наприклад, значення ідентифікатора типу макроблока, закодовані заголовки одиниць, які вказують максимальний розмір макроблоків в кодованій одиниці, значення QPY, значення моделі кодованого блока (СВР), значення, яке ідентифікує спосіб розділення макроблока або субблока, і значення розміру прапора перетворення, як це детально обговорене нижче. У разі 13 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 контекстнозалежного адаптивного двійкового арифметичного кодування цей контекст може основуватися на сусідніх макроблоках. У деяких випадках модуль 46 ентропійного кодування або інший модуль відеокодера 50 може бути сконфігурований, щоб виконувати інші функції кодування, в доповнення до ентропійного кодування. Наприклад, модуль 46 ентропійного кодування може бути сконфігурований, щоб визначати значення СВР для великих макроблоків і розділів. Модуль 46 ентропійного кодування може використовувати ієрархічну схему СВР для визначення значення СВР для великого макроблока, яке вказує, чи включає в себе який-небудь розділ в макроблоці ненульові значення коефіцієнтів перетворення, і якщо так, то використовуються інші значення СВР для того, щоб указати, чи мають конкретні розділи в межах великого макроблока ненульові значення коефіцієнтів перетворення. Крім того, в деяких випадках модуль 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 ентропійного декодування здійснює ентропійне декодування прийнятого бітового потоку для того, щоб сформувати квантовані коефіцієнти і елементи синтаксису (наприклад, вектори руху, значення СВР, значення QPY, значення прапорів перетворень розмірів, значення MB64_delta_QP). Модуль 52 ентропійного декодування може здійснювати синтаксичний аналіз бітового потоку для того, щоб ідентифікувати синтаксичну інформацію в закодованих одиницях, таких як кадри, вирізки і/або заголовки макроблоків. Синтаксична інформація для кодованої одиниці, яка містить множину макроблоків, може вказувати максимальний розмір макроблоків, наприклад, 16×16 пікселів, 32×32 пікселі, 64×64 пікселі, або інших макроблоків великих розмірів в кодованій одиниці. Синтаксична інформація для блока спрямовується з модуля 52 ентропійного кодування або в модуль 54 компенсації руху, або в модуль 55 внутрішньокадрового передбачення, в залежності, наприклад, від режиму кодування блока. Декодер може використовувати покажчик максимального розміру в синтаксисі кодованої одиниці для того, щоб вибрати декодер синтаксису для кодованої одиниці. Використовуючи декодер синтаксису, визначений для максимального розміру, декодер потім може належно інтерпретувати великі макроблоки, включені в кодовану одиницю, і здійснити їх обробку. Модуль 54 компенсації руху може використовувати вектори руху, отримані в бітовому потоку для того, щоб ідентифікувати блок передбачення в опорних кадрах, що знаходяться в сховищі 14 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 62 опорних кадрів. Модуль 55 внутрішньокадрового передбачення може використовувати режими внутрішньокадрового передбачення, отримані в бітовому потоці для того, щоб сформувати блок передбачення з просторово суміжних блоків. Модуль 56 зворотного квантування здійснює зворотне квантування, тобто деквантування квантованого блока коефіцієнтів, представленого в бітовому потоку і декодованого модулем 52 ентропійного декодування. Процес зворотного квантування може включати в себе звичайний процес, наприклад, як це визначено стандартом декодування H.264. Процес зворотного квантування може також включати в себе використання параметра квантування QPY, обчисленого кодером 50 для кожного макроблока 64×64 для того, щоб визначити ступінь дискретизації, а також ступінь зворотного квантування, яке повинно бути застосоване. Модуль 58 зворотного перетворення здійснює зворотне перетворення, наприклад, зворотне DCT, зворотне цілочислове перетворення або концептуально аналогічний процес зворотного перетворення по відношенню до коефіцієнтів перетворення для того, щоб сформувати блоки залишку в області пікселів. Модуль 54 компенсації руху здійснює формування блоків, в яких рух скомпенсований, при цьому можливе виконання інтерполяції за допомогою інтерполяційний фільтрів. Ідентифікатори для інтерполяційний фільтрів, які повинні бути використані для оцінки руху з точністю до часткою пікселя, можуть бути включені в елементи синтаксису. Модуль 54 компенсації руху може використовувати інтерполяційні фільтри аналогічно тому, як вони використовуються відеокодером 50 при кодуванні відеоблока для обчислення інтерпольованих значень для дробових пікселів опорного блока. Модуль 54 компенсації руху може визначати інтерполяційні фільтри, що використовуються відеокодером 50, згідно з прийнятою синтаксичною інформацією, і використовувати інтерполяційні фільтри для формування блоків, які передбачаються. Модуль 54 компенсації руху використовує частину синтаксичної інформації для того, щоб визначити розміри макроблоків, що використовуються для кодування кадру(ів) кодованої відеопослідовності, інформацію про розділення, яка описує, яким чином здійснюється розділення кожного макроблока кадру кодованої відеопослідовності, режими, які вказують яким чином закодований кожний розділ, один або більше опорних кадрів (або списків) для кожного макроблока або розділу, закодованого міжкадровим чином, і іншу інформацію для того, щоб декодувати закодовану відеопослідовність. Суматор 64 здійснює підсумовування блоків залишку з відповідними блоками, що передбачаються, сформованими модулем 54 компенсації руху або модулем внутрішньокадрового передбачення для того, щоб сформувати декодовані блоки. Якщо бажано, то може бути також застосований деблокінг-фільтр для фільтрації декодованих блоків для того, щоб усунути артефакти "блоковості". Декодовані відеоблоки потім зберігаються в сховищі 62 опорних кадрів, яке забезпечує формування опорних блоків для здійснення подальшої компенсації руху, а також формує декодоване відео для представлення його в приладі відображення (такому як прилад 32 на фіг. 1). Кожний з декодованих відеоблоків може містити макроблок 64×64 пікселі, макроблок 32×32 пікселі або інший макроблок, розміри якого перевищують стандартні. Деякі макроблоки можуть включати в себе розділи з множиною розділів, що мають різні розміри розділів. На фіг. 4A представлена концептуальна схема, яка ілюструє приклад розділення великого макроблока на розділи різних рівнів. Блоки розділів кожного рівня включають в себе кількість пікселів, яка відповідає конкретному рівню. Для кожного рівня також показані чотири моделі розділення, де перша модель розділення включає в себе цілий блок, друга модель розділення включає в себе два горизонтальних розділи однакового розміру, третя модель розділення включає в себе два вертикальних розділи однакового розміру, і четверта модель розділення включає в себе чотири розділи однакового розміру. Одна з моделей розділення може бути вибрана для кожного розділу на кожному рівні розділу. У прикладі, представленому на фіг. 4А, рівень 0 відповідає розділу вибірок яскравості і відповідних вибірок кольоровості, макроблока 64×64 пікселі. Рівень 1 відповідає вибіркам яскравості і відповідним вибіркам кольоровості блока 32×32 пікселі. Рівень 2 відповідає вибіркам яскравості і відповідним вибіркам кольоровості блока 16×16 пікселів, і рівень 3 відповідає вибіркам яскравості і відповідним вибіркам кольоровості блока 8×8 пікселів. У інших прикладах можуть бути представлені додаткові рівні для того, щоб використвувати більші або менші кількості пікселів. Наприклад, рівень 0 міг би починатися з макроблока 128×128 пікселів, макроблока 256×256 пікселів або з іншого, більшого по розміру макроблока. У деяких прикладах певним таким чином найвищий рівень може відповідати найбільш дрібному рівню розділення, єдиному пікселю, тобто блока 1×1. Отже, від найнижчих до найвижчих рівнів розділення може продовжуватися крок за кроком таким чином, що проводиться розділення 15 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 макроблока на розділи, далі здійснюється розділення отриманих розділів, потім підрозділи, що утворюються в результаті цього піддаються подальшому розділенню і так далі. У деяких випадках розділи нижче рівня 0, тобто розділи, що утворюються в результаті розділення розділів, можуть називатися підрозділами. Коли блок на одному рівні розділений на чотири субблоки однакового розміру, то будь-який або всі з субблоків можуть бути розділені, згідно з моделями розділення наступного рівня. Таким чином, для блока 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 пікселів виходять в результаті розділення субблока 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 може далі визначити кожний розділ, згідно з типом макроблока. Тип макроблока може бути включений як елемент синтаксису в закодований бітовий потік, наприклад, як елемент синтаксису в заголовку макроблока. Загалом, тип макроблока може бути використаний для того, щоб ідентифікувати розділення макроблока і відповідні способи або 16 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 режими кодування кожного з розділів макроблока, як це розглянуто вище. Способи кодування розділів можуть включати в себе не тільки внутрішньокадрове і міжкадрове кодування, але також і специфічні режими внутрішньокадрового кодування (наприклад, 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_type, який представляє макроблок 64×64 пікселі. Подібні визначення можуть бути сформовані для будь-якого типу MB[N]_ type, де [N] належить до блока N×N пікселів, де N позитивне ціле число, яке може бути більшим 16. Якщо в блоці N×N є чотири розділи розміром (N/2)×(N/2), як показано в останньому стовпці на фіг. 4A, то кожний з цих чотирьох розділів може отримати визначення своїх власних типів, наприклад, МВ[N/2]_type. Наприклад, для блока 64×64 пікселі (типу MB64_type) з чотирма розділами 32×32 пікселі відеокодер 50 може представити тип MB32_type для кожного з чотирьох розділів 32×32 пікселі. Ці елементи синтаксису типу макроблока можуть бути необхідні декодеру 60 при декодування великих макроблоків і різних розділів великих макроблоків, як описано в даному розкритті. Кожний макроблок N×N пікселів, де N більше 16, в загальному випадку відповідає однозначному визначенню типу. Відповідно, кодер може сформувати синтаксис, відповідний конкретному макроблоку, і указати декодеру максимальний розмір макроблоків в кодованій одиниці, такому як кадр, вирізка, або послідовність макроблоків. Даним чином декодер може отримати вказівку про те, який синтаксис потрібно застосувати для макроблоків кодованої одиниці. Це також забезпечує декодеру зворотну сумісність з існуючими стандартами кодування, такими як H.264, при цьому кодер може вказувати тип синтаксису декодерам для того, щоб застосувати його до макроблоків, наприклад, стандарт H.264, або ті, які призначені для обробки великих макроблоків, згідно з методиками даного розкриття. Взагалі кожне визначення типу MB[N]_type може представляти для відповідного типу деяке число пікселів в блоці відповідного типу (наприклад, 64×64), опорний кадр (або таблицю посилань) для блока, деяке число розділів блока, розмір кожного розділу блока, яким способом закодований кожний розділ (наприклад, внутрішньокадровий або міжкадровий і особливий режими), і опорний кадр (або таблицю посилань) для кожного розділу блока, коли розділ закодований міжкадровим чином. Для блоків 16×16 і менше відеокодер 50 може в деяких прикладах використовувати звичайні визначення типів як типи блоків, такі як типи, визначені стандартом H.264. У інших прикладах відеокодер 50 може застосовувати знову певні типи блоків для блоків 16×16 і менше. Відеокодер 50 може оцінити, як звичайні способи міжкадрового або внутрішньокадрового кодування з використанням нормальних розмірів макроблоків і розділів, такі як способи, призначені стандартом ITU Н.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 може згрупувати 17 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 чотири блоки, закодованих внутрішньокадровим чином, разом, сформувавши, таким чином, великий макроблок, закодований внутрішньокадровим чином. Наприклад, чотири блоки, закодовані внутрішньокадровим чином, розміром 16×16 кожний, можуть бути згруповані разом для того, щоб сформувати великий блок 32×32, закодований внутрішньокадровим чином. Відеокодер 50 може закодувати кожний з чотирьох відповідних блоків N×N, використовуючи різні режими кодування, наприклад, I_16×16, I_8×8 або I_4×4, згідно зі стандартом H.264. Таким чином, кожному блоку 16×16 може бути призначений його власний режим просторового передбачення відеокодером 50, наприклад, для того, щоб забезпечити сприятливий вихід кодування. Відеокодер 50 може реалізувати режими внутрішньокадрового кодування, згідно з будь-яким з двох різних способів, розглянутих вище, і проаналізувати різні способи для того, щоб визначити, який підхід забезпечує кращі результати кодування. Наприклад, відеокодер 50 може застосувати різні підходи режиму внутрішньокадрового кодування і вмістити їх в єдиний пул кандидатів для того, щоб дозволити їм конкурувати один з одним по критерію спотворення і швидкості. Використовуючи порівняння між різними підходами по критерію спотворення і швидкості, відеокодер 50 може визначити, яким способом закодувати кожний розділ і/або макроблок. Зокрема, відеокодер 50 може вибрати режими кодування, які забезпечують найкращий показник спотворення і швидкості для даного макроблока, і використати ці режими кодування для того, щоб закодувати макроблок. На фіг. 5 представлена концептуальна схема, яка ілюструє ієрархічний огляд різних рівнів розділення великого макроблока. На фіг. 5 також представлені співвідношення між різними рівнями розділення великого макроблока, як це описано відносно фіг. 4A. У кожного блока рівня розділення, як проілюстровано в прикладі на фіг. 5, може бути відповідне значення моделі кодованого блока (СВР). Значення СВР утворюють частину синтаксичної інформації, яка описує блок або макроблок. У одному прикладі кожне значення СВР являє собою однобітову синтаксичну величину, яка вказує, є чи ні яке-небудь ненульове значення коефіцієнта перетворення в даному блоці, що підлягає подальшим операціям перетворення і квантування. У деяких випадках блок передбачення може виявитися дуже близьким по піксельному контенту до блока, який повинен бути закодований таким чином, що всі коефіцієнти перетворення залишку виявляються нижчими початкового порога квантування, в такому випадку немає необхідності передавати коефіцієнти перетворення для кодованого блока. Замість цього значення СВР для блока може бути встановлене нульовим для того, щоб указати, що закодований блок не включає в себе ненульових коефіцієнтів. Альтернативно, якщо блок включає в себе щонайменше один коефіцієнт, який відрізняється від нуля, то значення СВР може бути встановлене рівним одиниці. Декодер 60 може використовувати значення СВР для того, щоб ідентифікувати блоки залишку, які закодовані, тобто з одним або більше ненульовими коефіцієнтами перетворення, в порівнянні з блоками, які не закодовані, що тобто не включають в себе ненульові коефіцієнти перетворення. Відповідно до деяких з методик, описаних в даному розкритті, кодер може призначати значення СВР великим макроблокам, ієрархічно основуючись на тому, чи мають ті макроблоки, включаючи в себе їх розділи, щонайменше один ненульовий коефіцієнт, і призначають значення СВР розділам для того, щоб указати розділи, у яких є ненульові коефіцієнти. Ієрархічний СВР для великих макроблоків може спростити обробку великих макроблоків для того, щоб швидко ідентифікувати закодовані великі макроблоки і незакодовані великі макроблоки і дозволити ідентифікацію закодованих розділів на кожному рівні розділення для великого макроблока для того, щоб визначити, чи треба використати дані залишку для декодування блоків. У одному прикладі макроблок 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, рівними 18 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 "1", звичайно вимагають передачу даних залишку в бітовому потоку для використання їх при декодування таких макроблоків. Макроблок 64×64 пікселі, у якого всі коефіцієнти нульові, може не включати в себе значення СВР для своїх розділів або субблоків. Тобто, оскільки у макроблока 64×64 пікселі всі коефіцієнти дорівнюють нулю, у кожного розділу також, в обов'язковому порядку, всі коефіцієнти дорівнюють нулю. Навпаки, макроблок 64×64 пікселі, що включає в себе щонайменше один ненульовий коефіцієнт, може далі включати в себе значення СВР для розділів на наступному рівні розділення. Наприклад, CBP64 зі значенням, яке дорівнює одиниці, може включати в себе додаткову синтаксичну інформацію в формі однобітового значення CBP32 для кожного розділу 32×32 блока 64×64. Таким чином, в одному прикладі кожному розділу 32×32 пікселі (такому як чотири блоки в розділенні рівня 1 на фіг. 5) макроблока 64×64 пікселі призначають значення CBP32 як частину синтаксичної інформації макроблока 64×64 пікселі. Так само як і значення CBP64, кожне значення CBP32 може містити біт, встановлений в одиницю, коли відповідний блок 32×32 пікселі має щонайменше один ненульовий коефіцієнт, і цей біт скидається в нуль, коли відповідний блок 32×32 пікселі має всі нульові коефіцієнти. Кодер може, крім того, указати в синтаксичній інформації кодованої одиниці, яка містить множину макроблоків, такій як кадр, вирізка або послідовність, максимальний розмір макроблока в кодованій одиниці для того, щоб указати декодеру, як інтерпретувати синтаксичну інформацію кожного макроблока, наприклад, який синтаксис потрібно використати декодеру для обробки макроблоків в кодованій одиниці. Таким чином, макроблок 64×64 пікселі, що має всі коефіцієнти нульовими, може використовувати єдиний біт для того, щоб представити факт, що всі коефіцієнти макроблока є нульовими, тоді як макроблок 64×64 пікселі з щонайменше одним ненульовим коефіцієнтом може включати в себе синтаксичну інформацію СВР, що містить щонайменше п'ять бітів, перший біт, щоб представити, що у макроблока 64×64 пікселі є ненульовий коефіцієнт, і чотири додаткових біти, кожний з яких вказує, чи включає в себе відповідний розділ з чотирьох розділів 32×32 пікселі щонайменше один ненульовий коефіцієнт. У деяких прикладах, коли перші три з цих чотирьох додаткових бітів є нульовими, четвертий додатковий біт може бути не включений до складу бітів, що інтерпретується декодером, як значення одиниця для останнього розділу. Тобто кодер може визначити, що останній біт має значення одиниці, коли перші три біти нульові, а біт представлення більш високого рівня ієрархії має значення одиниці. Наприклад, префікс значення CBP64 "10001" може бути скорочений до "1000", оскільки перший біт вказує, що щонайменше один з цих чотирьох розділів має ненульові коефіцієнти, а три нулі, які йдуть один за одним, вказують, що в перших трьох розділах всі коефіцієнти нульові. Тому декодер може визначити, що розділ, що включає в себе ненульовий коефіцієнт, є останнім, без явної бітової вказівки декодеру на цей факт, наприклад, рядком бітів "1000". Тобто декодер може інтерпретувати префікс CBP64 "1000" як "10001". Аналогічним чином однобітовий CBP32 може бути встановлений в стан "1", коли розділ 32×32 пікселі включає в себе щонайменше один ненульовий коефіцієнт, і в стан "0", коли значення всіх коефіцієнтів дорівнюють нулю. Якщо розділ 32×32 пікселі має значення СВР, яке дорівнює 1, то розділам даного розділу 32×32 на наступному рівні розділення можна призначити значення СВР для того, щоб указати, чи включають в себе відповідні розділи які-небудь ненульові коефіцієнти. Отже, значення СВР можуть призначатися ієрархічним способом на кожному рівні розділення доти, поки вже не буде ніяких подальших рівнів розділення, або ніяких розділів, що включають в себе ненульові коефіцієнти. Вищевикладеним чином кодери і/або декодери можуть використовувати ієрархічні значення СВР для того, щоб представити, чи включають в себе великий макроблок (наприклад, 64×64 або 32×32) і його розділи щонайменше один ненульовий коефіцієнт, або всі їх коефіцієнти є нульовими. Відповідно, кодер може закодувати великий макроблок кодованої одиниці цифрового відеопотока таким чином, щоб блок макроблока мав більше ніж 16×16 пікселів, сформувати синтаксичну інформацію типу блока, що ідентифікує розмір блока, сформувати значення СВР для блока таким чином, що значення СВР ідентифікує, чи включає в себе блок щонайменше один ненульовий коефіцієнт, і сформувати додаткові значення СВР для різних рівнів розділення блока, якщо застосовно. У одному прикладі ієрархічні значення СВР можуть містити масив бітів (наприклад, бітовий вектор), довжина якого залежить від значень префікса. Далі, масив може представити ієрархію значень СВР, таку як деревовидна структура, як показано на фіг. 5. Масив може представляти вузли дерева завширшки, де кожний вузол відповідає біту в масиві. Коли значення біта вузла дерева встановлене у "1", в одному прикладі вузол має чотири гілки (відповідні чотирьом розділам), а коли біт скинений у "0", вузол не має гілок. 19 UA 99391 C2 У даному прикладі, щоб ідентифікувати значення вузлів, які розгалужуютьбся з конкретного вузла Х, кодер і/або декодер можуть визначити чотири послідовних біти, починаючи з вузла Y, які представляють вузли, що відгалужуються від вузла х, за допомогою обчислення: 5 10 15 20 25 30 35 40 45 50 55 , де tree[] (дерево[]) відповідає масиву бітів зі стартовим індексом 0, i - цілочисловий індекс в масиві tree[], х відповідає індексу вузла Х в tree[] і у відповідає індексу вузла Y, який є першим гілкуванням вузла Х. Три подальші позиції масиву (тобто у+1, у+2, і у+3) відповідають іншим гілкуванням вузла Х. Кодер, такий як відеокодер 50 (фіг. 2), може призначати значення СВР для розділів 16×16 пікселів розділу 32×32 пікселі з щонайменше одним ненульовим коефіцієнтом, використовуючи існуючі способи, такі як способи, призначені стандартом ITU H.264 для встановлення значень СВР для блоків 16×16, як частина синтаксису макроблока 64×64 пікселі. Кодер може також вибрати значення СВР для здійснення розділення розділів 32×32 пікселі, у яких є щонайменше один ненульовий коефіцієнт, на основі розміру розділів, типу блоків, відповідного розділам (наприклад, блок кольоровості або блок яскравості), або на інших характеристиках розділів. Приклади способів по встановленню значення СВР для розділу, що виходить в результаті розділення розділу 32×32 пікселі, обговорені детально далі з посиланнями на фіг. 8 і 9. На фіг. 6-9 представлені функціональні схеми, які ілюструють приклади способів встановлення різних значень моделі кодованого блока (СВР), відповідно до методик даного розкриття. Хоч приклади способів на фіг. 6-9 розглянуті відносно макроблока 64×64 пікселі, потрібно враховувати, що аналогічні методики можуть бути застосовні при призначенні ієрархічних значень СВР для макроблоків інших розмірів. Хоч приклади на фіг. 6-9 розглянуті відносно відеокодера 50 (фіг. 2), потрібно враховувати, що інші кодери можуть використовувати аналогічні способи при призначенні значень СВР для макроблоків, розміри яких перевищують стандартні. Аналогічним чином декодери можуть використовувати подібні, хоч і взаємозворотні, способи для інтерпретації конкретного значення СВР для макроблока. Наприклад, якщо у макроблока, закодованого міжкадровим чином і прийнятого в бітовому потоку, є значення СВР "0", то декодер не може прийняти дані залишку для макроблока і може просто сформувати передбачений блок, ідентифікований вектором руху як декодований макроблок, або групу передбачених блоків, ідентифікованих векторами руху по відношенню до розділів макроблока. На фіг. 6 представлена функціональна схема, яка ілюструє приклад способу для встановлення значення CBP64 макроблока 64×64 пікселі. Аналогічні методи можуть застосовуватися для макроблоків, більших ніж 64×64. Спочатку відеокодер 50 приймає макроблок (100) 64×64 пікселі. Модуль 36 оцінки руху і модуль 35 компенсації руху потім можуть сформувати один або більше векторів руху і один або більше блоків залишку, відповідно, для того, щоб закодувати макроблок. Вихідний сигнал модуля перетворення 38 звичайно містить масив значень коефіцієнтів перетворення залишку для блока, закодованого внутрішньокадровим чином, або блока залишку, закодованого міжкадровим чином, масив яких квантується модулем квантування 40 для того, щоб сформувати ряд квантованих коефіцієнтів перетворення. Модуль 46 ентропійного кодування може забезпечити ентропійне кодування і інші функції кодування, окреме від ентропійного кодування. Наприклад, в доповнення до функцій CAVLC, CABAC або інших функцій ентропійного кодування, модуль 46 ентропійного кодування або інший модуль відеокодера 50 може визначати значення СВР для великих макроблоків і розділів. Зокрема, модуль 46 ентропійного кодування може визначити значення CBP64 для макроблока 64×64 пікселі, спочатку визначивши, чи має даний макроблок щонайменше один ненульовий, квантований коефіцієнт перетворення (102). Якщо модуль 46 ентропійного кодування визначає, що всі коефіцієнти перетворення мають нульові значення (гілку "НІ" 102), то модуль 46 ентропійного кодування скидає значення CBP64 для макроблока 64×64, наприклад, встановлює значення біта CBP64 рівним "0" (104). Якщо модуль 46 ентропійного кодування, визначає щонайменше один ненульовий коефіцієнт (гілка "ТАК" блока 102) для макроблока 64×64, то модуль 46 ентропійного кодування встановлює значення CBP64, наприклад, встановлює значення біта CBP64 рівним "1" (106). Коли у макроблока всі коефіцієнти нульові, то для модуля 46 ентропійного кодування немає необхідності встановлення ніяких додаткових значень СВР для розділів макроблока, що дозволяє зменшити витрати. У одному прикладі, коли у макроблока є щонайменше один ненульовий коефіцієнт, модуль 46 ентропійного кодування продовжує визначення значень СВР для кожного з чотирьох розділів 32×32 пікселі, що належать макроблоку 64×64 пікселі (108). 20 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 Модуль 46 ентропійного кодування може використовувати спосіб, поданий на фіг. 7, чотири рази, по одному разу для кожного з цих чотирьох розділів для того, щоб встановити чотири значення CBP32, кожне відповідне одному з чотирьох розділів 32×32 пікселі, що належать макроблоку 64×64. При даному способі, коли всі коефіцієнти макроблока є нульовими, модуль 46 ентропійного кодування може передати єдиний біт зі значенням "0" для того, щоб указати, що всі коефіцієнти макроблока є нульовими, тоді як, якщо у макроблока є щонайменше один ненульовий коефіцієнт, то модуль 46 ентропійного кодування може передати п'ять бітів, один біт для макроблока і чотири біти, кожний з яких відповідає одному з чотирьох розділів макроблока. Крім того, якщо розділ включає в себе щонайменше один ненульовий коефіцієнт, то дані залишку для розділення можуть бути передані в закодованому бітовому потоку. Як і у разі прикладу CBP64, розглянутого вище, коли перші три з цих чотирьох додаткових бітів є нулями, то четвертий додатковий біт, можливо, не є необхідним, оскільки декодер може визначити, що його значення дорівнює одиниці. Таким чином, в деяких прикладах кодер може передати тільки три нулі, тобто "000", а не три нулі і одиницю, тобто "0001". На фіг. 7 представлена функціональна схема, яка ілюструє приклад способу встановлення значення СВР32 розділу 32×32 пікселі, що належить макроблоку 64×64 пікселі. Спочатку на наступному рівні розділення модуль 46 ентропійного кодування приймає розділ макроблока, 32×32 пікселі (110), наприклад, одного з чотирьох розділів, сформованого, як показано на фіг. 6. Потім модуль 46 ентропійного кодування визначає значення CBP32 для розділу 32×32 пікселі, спочатку визначивши, чи включає в себе розділ щонайменше один ненульовий коефіцієнт (112). Якщо модуль 46 ентропійного кодування визначає, що всі коефіцієнти розділу мають нульові значення (гілку "НІ" блока 112), то модуль 46 ентропійного кодування скидає значення CBP32, наприклад, встановлює значення біта CBP32 рівним "0" (114). Якщо модуль 46 ентропійного кодування визначає щонайменше один ненульовий коефіцієнт (гілка "ТАК" блока 112), то модуль 46 ентропійного кодування встановлює значення CBP32, наприклад, встановлює значення біта CBP32 рівним "1" (116). У одному прикладі, коли у розділу всі коефіцієнти нульові, то модуль 46 ентропійного кодування не встановлює ніяких додаткових значень СВР для даного розділу. Коли ж розділ включає в себе щонайменше один ненульовий коефіцієнт, модуль 46 ентропійного кодування визначає значення СВР для кожного з чотирьох розділів 16×16 пікселів, що належать розділу 32×32 пікселі, в свою чергу, що належить макроблоку. Модуль 46 ентропійного кодування може використовувати спосіб, поданий на фіг. 8, для того, щоб встановити чотири значення CBP16, кожне відповідне одному з чотирьох розділів 16×16 пікселів. Таким чином, коли всі коефіцієнти розділу є нульовими, модуль 46 ентропійного кодування може встановити біт в значення "0" для того, щоб указати, що всі коефіцієнти розділу є нульовими, тоді як, якщо у розділу є щонайменше один ненульовий коефіцієнт, то модуль 46 ентропійного кодування може включати в себе п'ять бітів, один біт для розділу і чотири біти, кожний з яких відповідає одному з чотирьох підрозділів розділу, що належить макроблоку. Отже, кожний додатковий рівень розділення може представити чотири додаткових біти СВР, коли розділ попереднього рівня розділення мав щонайменше одне ненульове значення коефіцієнта перетворення. Як приклад, якщо у макроблока 64×64 є значення СВР, яке дорівнює 1, і у чотирьох розділів 32×32 є значення СВР, які дорівнюють 1, 0, 1 і 1, відповідно, то повне значення СВР в даній точці дорівнює 11011. Додаткові біти СВР можуть бути додані для додаткових розділень розділів 32×32, наприклад, на розділи 16×16. На фіг. 8 представлена функціональна схема, яка ілюструє приклад способу встановлення значення СВР16 розділу 16×16 пікселів, що належить розділу 32×32 пікселі, що в свою чергу належить макроблоку 64×64 пікселі. Для певних розділів 16×16 пікселів відеокодер 50 може використовувати значення СВР, як призначено стандартом кодування відео, таким як ITU H.264, як це розглянуто нижче. Для інших розділів 16×16 відеокодер 50 може використовувати значення СВР, визначені відповідно до інших методик даного розкриття. Спочатку, як показано на фіг. 8, модуль 46 ентропійного кодування приймає розділ 16×16 (120), наприклад, один з чотирьох розділів 16×16, що належать розділу 32×32, поданому на фіг. 7. Потім модуль 46 ентропійного кодування може визначити, чи перевищує розділ руху для розділу 16×16 пікселів величину блока 8×8 пікселів (122). У загальному випадку розділ руху описує розділення, в якому зосереджений рух. Наприклад, розділ 16×16 пікселів тільки з одним вектором руху можна розглядати як розділ руху 16×16. Аналогічним чином для розділу 16×16 пікселів з двома підрозділами 8×16, по одному вектору руху в кожному, можна розглядати як розділ руху 8×16. У будь-якому випадку, коли розділ руху не перевищує блок 8×8 пікселів (гілку "НІ" блока 122), модуль 46 ентропійного кодування призначає значення СВР розділу 16×16 21 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 пікселів тим же самим способом, як це призначено стандартом ITU H.264 (124), в прикладі на фіг. 8. При наявності розділу руху в розділі 16×16 пікселів, величина якого більша блока 8×8 пікселів (гілка "ТАК" блока 122), модуль 46 ентропійного кодування формує і передає значення lumacbp16 (125), використовуючи етапи, які йдуть після етапу 125. У прикладі на фіг. 8, для того щоб сформувати значення lumacbp16, модуль 46 ентропійного кодування визначає, чи є у компонента яскравості 16×16 пікселів, що належить даному розділу щонайменше один ненульовий коефіцієнт (126). Якщо у компонента яскравості 16×16 пікселів всі коефіцієнти є нульовими (гілку "НІ" блока 126), то модуль 46 ентропійного кодування призначає значення СВР16, згідно з частиною "Модель кодованого Блока Кольоровості" стандарту ITU H.264 (128), в прикладі на фіг. 8. Якщо модуль 46 ентропійного кодування, визначає, що у компонента яскравості 16×16 пікселів є щонайменше один ненульовий коефіцієнт (гілка "ТАК" блока 126), то модуль 46 ентропійного кодування визначає прапор розміру перетворення для розділу 16×16 пікселів (130). У загальному випадку прапор розміру перетворення вказує, що для даного розділу використовується перетворення. Перетворення, представлене прапором розміру перетворення, може включати в себе одне з перетворень: перетворення 4×4, перетворення 8×8, перетворення 16×16, перетворення 16×8 або перетворення 8×16. Прапор розміру перетворення може містити цілочислове значення, яке відповідає одному з перерахованих значень, яке ідентифікує одне з можливих перетворень. Потім модуль 46 ентропійного кодування може визначити, чи представляє прапор розміру перетворення той факт, що розмір перетворення більший або дорівнює 16×8 (або 8×16) (132). Якщо прапор розміру перетворення не вказує, що розмір перетворення більший або дорівнює 16×8 (або 8×16) (гілку "НІ" блока 132), то модуль 46 ентропійного кодування призначає значення CBP16 відповідно до стандарту ITU H.264 (134), в прикладі на фіг. 8. Якщо прапор розміру перетворення вказує, що розмір перетворення більший або дорівнює 16×8 (або 8×16) (гілка "ТАК" блока 132), то тоді модуль 46 ентропійного кодування визначає, що являє собою розділ 16×16 пікселів: два розділи 16×8 або два розділи 8×16 (136). Якщо тип розділу 16×16 пікселів не являє собою два розділи 16×8 пікселів або два розділи 8×16 пікселів (гілку "НІ" блока 138), то модуль 46 ентропійного кодування призначає значення СВР16 відповідно до процедури розділення кодованого блока кольоровості, що призначається стандартом ITU H.264 (140), в прикладі на фіг. 8. Якщо тип розділу 16×16 пікселів являє собою два розділи 16×8 пікселів або два розділи 8×16 пікселів (гілка "ТАК" блока 138), то модуль 46 ентропійного кодування також використовує процедуру розділення кодованого блока кольоровості, що призначається стандартом ITU H.264, але, крім того, призначає значення CBP16, двобітове значення luma16×8_CBP (142), наприклад, відповідно до способу, поданому на фіг. 9. На фіг. 9 представлена функціональна схема, яка ілюструє приклад способу для визначення значення двобітового значення яскравості 16×8_CBP. Модуль 46 ентропійного кодування приймає розділ 16×16 пікселів, який далі ділиться на два розділи 16×8 пікселів або на два розділи 8×16 пікселів (150). Модуль 46 ентропійного кодування звичайно призначає кожний біт luma16×8_CBP згідно з тим, чи включає в себе відповідний субблок розділу 16×16 пікселів щонайменше один ненульовий коефіцієнт. Модуль 46 ентропійного кодування визначає, чи є у першого субблока розділу 16×16 пікселів щонайменше один ненульовий коефіцієнт для того, щоб визначити, чи є у першого субблока щонайменше один ненульовий коефіцієнт (152). Коли у першого субблока всі коефіцієнти є нульовими (гілку "НІ" блока 152), модуль 46 ентропійного кодування скидає перший біт luma16×8_СВР, наприклад, призначає luma16×8_CBP [0] значення "0" (154). Коли у першого субблока є хоч би один нульовий коефіцієнт (гілка "ТАК" блока 152), модуль 46 ентропійного кодування встановлює перший біт luma16×8_СВР, наприклад, призначає luma16×8_CBP [0] значення "1" (156). Модуль 46 ентропійного кодування також визначає, чи є у другого підрозділу розділу розміром 16×16 пікселів щонайменше один ненульовий коефіцієнт (158). Якщо у другого підрозділу всі коефіцієнти є нульовими (гілку "НІ" блока 158), то модуль 46 ентропійного кодування скидає другий біт luma16×8_СВР, наприклад, призначає luma16×8_CBP [1] значення "0" (160). Якщо у другого субблока є хоч би один нульовий коефіцієнт (гілка "ТАК" блока 158), то модуль 46 ентропійного кодування встановлює другий біт luma16×8_СВР, наприклад, призначає luma16×8_CBP [1] значення "1" (162). Наступний псевдокод забезпечує один приклад реалізації способів, описаних відповідно до фіг. 8 і 9: 22 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 if (motion partition bigger than 8×8) { lumacbp16 if (lumacbp16!= 0) { transform_size_flag if (transform_size_flag == TRANSFORM_SIZE_GREATER_THAN 16×8) { if (mb16_type ==P_16×8) (OR (mb16_type==P_8×16)) { luma16×8_cbp chroma_cbp } else chromacbp } else h264_cbp } else chroma_cbp } else h264_cbp У псевдокоді "lumacbp16" відповідає операції додавання однобітового прапора, що вказує, чи є у цілого 16×16 luma блока коефіцієнти, які відрізняються від нуля, або немає. Якщо "lumacbpl6" дорівнює одиниці, то є щонайменше один коефіцієнт, який відрізняється від нуля. Функція "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 являє собою нумероване значення (наприклад, "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" може бути обчислене тим же самим способом, як CodedBlockPatternChroma (модель кодованого блока кольоровості), як це призначено стандартом ITU H.264. Обчислене значення chroma_cbp береться в синтаксичну інформацію макроблока 64×64 пікселі. Функція h264_cbp може бути обчислена таким же способом, як значення СВР, визначене в стандарті ITU H.264. Обчислене значення H264_cbp береться в синтаксичну інформацію макроблока 64×64 пікселі. Загалом, спосіб, поданий на фіг. 6-9, може включати в себе кодування відеоблока, що має розмір більший ніж 16×16 пікселів, за допомогою відеокодера, формування синтаксичної інформації типу блока, яка вказує розмір блока, і формування значення моделі кодованого блока для закодованого блока, причому значення моделі кодованого блока вказує, чи включає в себе закодований блок щонайменше один ненульовий коефіцієнт. На фіг. 10 представлена функціональна схема, яка ілюструє приклад компонування макроблока 64×64 пікселі. Макроблок на фіг. 10 містить чотири розділи 32×32, помічені буквами А, В, С і D. Как було розглянуто на фіг. 4A, в одному прикладі блок може бути розділений будьяким з чотирьох способів: цілий блок (64×64) без підрозділів, два однакових розміри горизонтальних розділу (32×64 і 32×64), два однакових розміри вертикальних розділу (64×32 і 64×32) або чотири однакових розміри розділу (32×32, 32×32, 32×32 і 32×32) квадратної форми. У прикладі на фіг. 10 всі розділення на блоки містить кожний з блоків А, В, С і D; перший з двох однакового розміру горизонтальних розділів містить А і В, в той час як другий з двох однакового розміру горизонтальних розділів містить С і D; перший з двох однакового розміру вертикальних розділів містить А і С, в той час як другий з двох однакового розміру вертикальних 23 UA 99391 C2 5 10 15 20 25 30 35 40 розділів містить В і 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", М=N/2. У Таблиці 1 нижче L0 означає "список 0", тобто опорний кадр/вирізку/списки. При прийнятті рішення про найкраще розділення блока N×N кодер, такий як відеокодер 50, може проаналізувати інформацію про величину витрат спотворення і швидкості для кожного MB_N_type (тобто кожного типу розділу) на основі множника Лагранжа, як це більш детально обговорене відносно фіг. 11, вибираючи найнижчі витрати як найкращий спосіб розділення. 45 Таблиця 1 MB_N_ type № частини 0 1 2 3 Обчисл. 50 Найменування MB_N_type P_L0_N×N P_L0_L0_N×M P_L0_L0_М×N PN_M×M PN_Skip 1 2 2 4 1 Режим передбачення, частина 1 Pred_L0 Pred_L0 Pred_L0 недоступно Pred_L0 Режим передбачення, частина 2 недоступно Pred_L0 Pred_L0 недоступно недоступно Ширина частини Висота частини N N M M N N M N M N У вищенаведеній Таблиці 1 елементи стовпця "MB_N_type" є ключовими для кожного типу розділення блока N×N. Елементи стовпця "Найменування MB_N_type" є назвами різних типів розділення блока N×N. "P" в найменуванні належить до блока, закодованого міжкадровим чином, з використанням Р-кодування, тобто відносно єдиного кадру/вирізки/списку. "L0" в 24 UA 99391 C2 5 10 15 20 найменуванні належить до кадру/вирізки/списку, наприклад, "список 0" використовується як опорні кадри або вирізки для Р-кодування. "N×N" належить до розділення, що являє собою цілий блок, "N×M" належить до розділення, що являє собою два розділи шириною N і висотою М, "M×N" належить до розділення, що являє собою два розділи шириною М і висотою N, "M×M" належить до розділення, що являє собою чотири однакових розміри розділу шириною М і висотою М кожний. У Таблиці 1 PN_Skip означає, що блок був "пропущений", наприклад, тому що блок, що вийшов в результаті, мав всі нульові коефіцієнти. Елементи стовпця "Режим передбачення, частина 1" належать до опорного кадру/вирізки/списку для підрозділу 1 з розділу, в той час як елементи стовпця "Режим передбачення, частину 2" належать до опорного кадру/вирізки/списку для підрозділу 2 з розділу. Оскільки у P_L0_N×N є тільки єдиний розділ, то відповідний елемент "Режиму передбачення, частина 2" є "N/А" (недоступним), оскільки немає ніякого другого підрозділу. Для PN_M×M існують чотири блоки розділів, які можуть бути закодовані окремо. Отже, обидва стовпці режиму передбачення для PN_M×M включають в себе "N/А" (недоступно). У PN_Skip, як і у P_LO_N×N, є тільки одна частина, таким чином, відповідний елемент стовпця "Режим передбачення, частина 2" є "N/А" (недоступним). Таблиця 2, приведена нижче, включає в себе стовпці і елементи, аналогічні стовпцям і елементам Таблиці 1. Однак Таблиця 2 відповідає різним режимам кодування для міжкадрового кодування блока з використанням двонаправленого передбачення (В-кодування). Тому кожний розділ може бути закодований і/або за допомогою першого кадру/вирізки/списку (L0), і/або за допомогою другого кадру/вирізки/списку (L1). "BiPred" належить до відповідного розділу, що передбачається як за допомогою L0, так і за допомогою L1. У Таблиці 2 позначення стовпців і значення аналогічні по значенню тим, які використовуються в Таблиці 1. Таблиця 2 MB_ N_type Найменування MB_N_type 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 обчислено B_Direct_N×N B_L0_N×N В_L1 N×N В_Bi_N×N B_L0_L0_N×M B_L0_L0_M×N B_L1_L1_N×M В_L1_L1_M×N B_L0_L1_N×M B_L0_L1_M×N 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 В_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 BN_Skip Режим № частини передбачення, частина 1 недоступно Direct 1 Pred_L0 1 Pred_L1 1 BiPred 2 Pred_L0 2 Pred_L0 2 Pred_L1 2 Prcd_L1 2 Pred_L0 2 Pred_L0 2 Pred_L1 2 Pred_L1 2 Pred_L0 2 Pred_L0 2 Pred_L1 2 Pred_L1 2 BiPred 2 BiPred 2 BiPred 2 BiPred 2 BiPred 2 BiPred 4 недоступно недоступно безпосередньо Режим передбачення, частина 2 недоступно недоступно недоступно недоступно Pred_L0 Pred_L0 Pred_L1 Prcd_L1 Pred_L1 Pred_L1 Pred_L0 Pred_L0 BiPred BiPred BiPred BiPred Pred_L0 Pred_L0 Pred_L1 Pred_L1 BiPred BiPred недоступно недоступно Ширина Висота частини частини N N N N N M N M N M N M N M N M N M N M N M M M N N N N M N M N M N M N M N M N M N M N M N M M 25 30 На фіг. 11 представлена функціональна схема, яка ілюструє приклад способу обчислення оптимального розділення і способів кодування для відеоблока N×N пікселів. Взагалі спосіб, представлений на фіг. 11, містить обчислення витрат для кожного способу кодування (наприклад, для різних просторових або часових режимів) при використанні їх при різних способах розділення, показаних, наприклад, на фіг. 4A, і здійснення вибору комбінації режиму 25 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 кодування і способу розділення з найкращими витратами спотворення і швидкості для відеоблока N×N пікселів. У загальному випадку величина витрат може бути обчислена з використанням множника Лагранжа і значень швидкості передачі і спотворення таким чином, що величина витрат = спотворення +  * швидкість передачі, де спотворення являє собою погрішність між початковим блоком і закодованим блоком, а швидкість передачі являє собою швидкість передачі бітів, необхідну для забезпечення режиму кодування. У деяких разах величини швидкості передачі і спотворення можуть бути визначені на рівні макроблока, розділу, вирізки або кадру. Спочатку відеокодер 50 здійснює прийом відеоблока N×N, який повинен бути закодований (170). Наприклад, відеокодер 50 може здійснити прийом великого макроблока 64×64 або його розділу, такого як, наприклад, розділ 32×32 або 16×16, для якого відеокодер 50 повинен вибрати спосіб кодування і розділення. Потім відеокодер 50 обчислює величину витрат для того, щоб здійснити кодування блока N×N (172), використовуючи множину різних режимів кодування, таких як різні режими внутрішньокадрового і міжкадрового кодування. Для обчислення величини витрат при просторовому кодуванні блока 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). Щоб обчислити витрати на кодування розділу (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/2)×(N/4), розділів (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). У 26 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 загальному випадку відеокодер 50 може застосовувати кожну комбінацію способу розділення і режиму кодування для кожного розділу для того, щоб ідентифікувати спосіб розділення і кодування, відповідний найнижчому рівню витрат. У деяких випадках відеокодер 50 може бути сконфігурований, щоб оцінювати більш обмежений набір комбінацій способів розділення і режимів кодування. Після визначення найкращого способу розділення і кодування, наприклад, найменше витратного, відеокодер 50 може закодувати макроблок N×N, використовуючи цей спосіб (184). У деяких випадках в результаті може виявитися великою макроблок, що має розділи, які закодованіз використанням різних режимів кодування. Можливе застосування режиму змішаного кодування до великого макроблоку таким чином, що різні режими кодування застосовувалися б до різних розділів у великому макроблоці, що може забезпечити кодування макроблока при менших витратах. У деяких прикладах спосіб кодування з використанням змішаних режимів може включати в себе прийом відеокодером відеоблока розміром більшим 16×16 пікселів, розподіл блока на розділи, кодування одного з розділів з використанням першого режиму кодування, кодування іншого розділу з використанням другого режиму кодування, що відрізняється від першого режиму кодування, і формування синтаксичної інформації типу блока, в якій вказується розмір блока і ідентифікуються розділи і режими кодування, використані для кодування розділів. На фіг. 12 представлена функціональна схема, яка ілюструє приклад різних варіантів розділення великого макроблока 64×64 пікселі і різних вибраних способів кодування для кожного розділу. У прикладі на фіг. 12 кожний розділ помічений однією з літер "I", "P" або "B". Розділи, помічені "I", являють собою розділи, для яких кодер вибрав використання внутрішньокадрового кодування, наприклад, на основі оцінки спотворення і швидкості. Розділи, помічені "P", являють собою розділи, для яких кодер вибрав використання одноопорного міжкадрового кодування, наприклад, на основі оцінки спотворення і швидкості. Розділи, помічені "B", являють собою розділи, для яких кодер вибрав використання міжкадрового кодування з двонаправленим передбаченням, наприклад, на основі оцінки спотворення і швидкості. У прикладі на фіг. 12 в різних розділах в межах одного і того ж великого макроблока використані різні режими кодування, включаючи різні розміри розділів або підрозділів, і різні режими внутрішньокадрового або міжкадрового кодування. Великий макроблок являє собою макроблок, що ідентифікується елементом синтаксису макроблока, який ідентифікує тип макроблока, наприклад, mb64_type або mb32_type, для даного стандарту кодування, такого як розширення стандарту кодування H.264. Елемент синтаксису типу макроблока може бути наданий як елемент синтаксису заголовка макроблока в закодованому двійковому потоці відео. Як проілюстровано на фіг. 12, розділи, закодовані I-, Р- і В- чином, можуть бути закодовані згідно з різними режимами кодування, наприклад, режимам передбачення внутрішньокадрового або міжкадрового кодування при різних розмірах блоків, включаючи режими великих розмірів блоків, для великих розділів, розміром більшим 16×16, або згідно зі стандартом H.264 для розділів, розмір яких не перевищує 16×16. У одному прикладі кодер, такий як відеокодер 50, може використовувати спосіб, описаний на фіг. 11, для того, щоб вибрати різні режими кодування і розміри розділів для різних розділів і підрозділів прикладу великого макроблока, поданого на фіг. 12. Наприклад, відеокодер 50 може здійснити прийом макроблока 64×64, реалізувати спосіб, поданий на фіг. 11, і в результаті чого сформувати макроблок, показаний як приклад на фіг. 12, з різними розмірами розділів і використаними режимами кодування. Однак потрібно враховувати, що вибір способів розділення і режимів кодування може бути здійснений внаслідок застосування способу, поданого на фіг. 11, наприклад, на основі типу кадру, з якого був вибраний макроблок, і на основі вхідного макроблока, відносно якого здійснюється реалізація способу. Наприклад, якщо кадр містить I-кадр, то кожний розділ буде закодований внутрішньокадровим чином. Як інший приклад, якщо кадр містить Р-кадр, то кожний розділ може бути закодований внутрішньокадровим або міжкадровим чином, на основі одиночного опорного кадру (тобто без двостороннього передбачення). Ймовірно, зразковий макроблок на фіг. 12 був вибраний з кадру з двонаправленим передбаченням (В-кадру) для ілюстративних цілей. У інших прикладах, де макроблок вибраний з Р-кадру, відеокодер 50 не здійснив би кодування розділу з використанням двонаправленого передбачення. Аналогічним чином там, де макроблок вибраний з I-кадру, відеокодер 50 не здійснив би кодування розділу з використанням міжкадрового кодування, а також Р-кодування або В-кодування. Однак в будь-якому випадку відеокодер 50 може вибрати різні розміри розділів для різних частин макроблока і вибрати режим кодування кожного розділу, використовуючи будь-який доступний режим кодування. 27 UA 99391 C2 5 10 15 20 25 30 35 40 45 50 55 60 У прикладі на фіг. 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 може спочатку закодувати кадр, використовуючи макроблоки 16×16 пікселів при першому проході кодування (190), наприклад, використовуючи функцію кодування (кадр, MB16_type) для того, щоб сформувати закодований кадр F16. Після першого проходу кодування відеокодер 50 може обчислити швидкість передачі бітів і спотворення при використанні макроблоків 16×16 пікселів, таких як R16 і D16, відповідно (192). Потім відеокодер 50 може обчислити показник спотворення і швидкості в формі витрат C16, при застосуванні макроблоків 16×16 пікселів, використовуючи множник Лагранжа C16=D16 + *R16 (194). Режими кодування і розміри розділів можуть бути вибрані для макроблоків 16×16 пікселів, наприклад, згідно зі стандартом H.264. Потім відеокодер 50 може закодувати кадр, використовуючи макроблоки 32×32 пікселі при другому проході кодування (196), наприклад, використовуючи функцію кодування (кадр, MB32_type) для того, щоб сформувати закодований кадр F32. Після другого проходу кодування відеокодер 50 може обчислити швидкість передачі бітів і спотворення при використанні макроблоків 32×32 пікселі, таких як R32 і D32, відповідно (198). Потім відеокодер 50 може обчислити показник спотворення і швидкості в формі витрат C32, при застосуванні макроблоків 32×32 пікселі, використовуючи множник Лагранжа C32=D32 + *R32 (200). Режими кодування і розміри розділів можуть бути вибрані для макроблоків 32×32 пікселі, наприклад, використовуючи методики оцінки швидкості передачі і спотворення, як це описано відносно фіг. 11 і 12. Потім відеокодер 50 може закодувати кадр, використовуючи макроблоки 64×64 пікселі при третьому проході кодування (202), наприклад, використовуючи функцію кодування (кадр, MB64_type) для того, щоб сформувати закодований кадр F64. Після третього проходу кодування відеокодер 50 може обчислити швидкість передачі бітів і спотворення при використанні макроблоків 64×64 пікселі, таких як R64 і D64, відповідно (204). Потім відеокодер 50 може обчислити показник спотворення і швидкості в формі витрат C64, при застосуванні макроблоків 64×64 пікселі, використовуючи множник Лагранжа C64=D64 + *R64 (206). Режими кодування і розміри розділів можуть бути вибрані для макроблоків 64×64 пікселі, наприклад, використовуючи методики оцінки швидкості передачі і спотворення, як це описано відносно фіг. 11 і 12. Далі, відеокодер 50 може визначити, який з показників C16, C32 і С64 є найменшим для кадру (208). Відеокодер 50 може вибрати для використання кадр, закодований за допомогою макроблоків такого розміру, при якому витрати виявилися найнижчими (210). Таким чином, наприклад, якщо значення C16 виявиться найнижчим, то відеокодер 50 може вибрати кадр F16, закодований за допомогою макроблоків 16×16, як закодований кадр, в бітовий потік для збереження або для передачі на декодер. Якщо значення C32 виявиться найнижчим, то відеокодер 50 може вибрати F32, закодований за допомогою макроблоків 32×32. Якщо значення С64 виявиться найнижчим, то відеокодер 50 може вибрати F64, закодований за допомогою макроблоків 64×64. 28

Дивитися

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

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

Video coding with large macroblocks

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

Chen, Peisong, Ye, Yan, Karczewicz, Marta

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

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

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

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

МПК / Мітки

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

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

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

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

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