Аппаратный декодер h.264 для HDTV

Аппаратный декодер h.264 для HDTV

1.Введение и терминология

1.1 Для кого предназначена данная статья?

Статья написана для пользователей с нулевыми знаниями о h.264/AVC и HDTV. При этом она настоятельно рекомендуется к изучению всеми пользователями продукции Prof, в независимости от первоначальных знаний по данной теме.

1.2 Зачем нужно читать данную статью?

DVB-карты Prof позволяют смотреть открытое спутниковое телевидение (FTA) высокой четкости на компьютере (HDTV). Но чтобы комфортно и качественно смотреть такое телевидение, нужно иметь видеокарту со 100% обработкой видео h.264 и правильно настроить систему.

К сожалению метод, который подходил для телевидения стандартного разрешения, здесь не подходит. У Вас неполучится просто воткнуть DVB-картув слот компьютера, поставить какие-то требуемые кодеки для h.264, и при этом всё заработает так, как нужно. Заработать то может и заработает, но либо у Вас будет отделяться картинка от звука, либо изображение будет нечетким и размытым, а также с пропуском кадров и отдельных сцен.

Данная статья написана для того,чтобы объяснить пользователям, почему нужно использовать именно аппаратный декодер h.264 для телевидения высокой четкости. Показать, что аппаратный декодер позволяет получить более качественное изображение, чем софтверный кодек.

Использование софтверного кодека h.264 для HDTV, это всё равно, что использование черно-белого телевизора для просмотра цветного ТВ. Посмотреть можно, но вот ощутить все преимущества цветного телевидения – нельзя.

1.3 Раньше мир был проще…

Раньше мир действительно был проще. Меньше нужно было знать, чтобы всё заработало с пол-оборота. Сейчас же придумано много технологий, которые как компоненты слоеного пирога взаимодействуют друг с другом, чтобы простой пользователь мог увидеть картинку на своем мониторе/HD-панели и услышать звук через колонки. Постараемся разобраться в той терминологии, которая появилась в связи с созданием телевидения высокой четкости.

В данной статье расшифровываются следующие термины итехнологии: HDTV (High-definition television), SDTV (Standard-definition television), h.264/AVC (Advanced Video Coding, ITU-T H.264, ISO/IEC MPEG-4 Part 10,ISO/IEC 14496-10), DXVA (DirectX Video Acceleration), Hardwareassisted decoding, Full bitstream decoding, ATI AVIVO, ATI AVIVO HD, AMD UVD (Unified Video Decoder), NVIDIAPurevideo, NVIDIA Purevideo HD, NVIDIA CUDA (Compute Unified DeviceArchitecture), CoreAVC, CyberLink H264 Video Decoder, VMR7/9 (Video Mixing Renderer 7/9), EVR(Enhanced Video Renderer), HTPC (Home Theater Personal Computer) и др.

Вам еще не кажется, что нужно много знать, чтобы просто посмотреть HDTV на компьютере в максимальном качестве?

1.4 Идея картинки высокого разрешения

Телевидение высокой четкости(ТВЧ) имеет международное сокращение HDTV (High-Definition Television). Вы наверняка много раз слышали эту аббревиатуру.

Википедия дает следующееопределение HDTV: Набор стандартов телевизионного вещания повышенного качества посредством цифровых каналов связи.

Мы бы сказали немного по-другому. HDTV – это некая идея того, что телевизионная картинка может быть другого размера, чем была до этого. 

 

В основе HDTV лежит идея того, что ширина ивысота картинки имеет больше пикселей/точек, чем устаревший формат телевидения. В PAL/SECAM было 720×576 точек, а в HDTV стало 1920?1080 или1280?720 пикселей. Картинка стала в 5 раз больше!

Идея в том, что больше точек вширину и высоту – лучше изображение. Когда-нибудь появится телевидение сверхвысокой четкости. Возможно его назовут HDTV 2 или супер-HDTV.

Устаревшее же телевидение стали называть SDTV (Standard-Definition Television).

Целью раздела 1.4 было показать,что HDTV и кодек для HDTV, например h.264/AVC –это не одно и то же.

1.5. ТВ-панели и HTPC

Некоторые пользователи спутникового ТВ используют персональный компьютер как Домашний кинотеатр. Существует даже такой термин как HTPC. Википедия,дает следующее определение данному термину:
HTPC (аббревиатура от англ. Home Theatre Personal Computer) —концепция построения домашнего кинотеатра на основе персонального компьютера. Кроме того, данный термин употребляется в качестве названия подобных систем, обычно состоящих из компьютера, телевизора и аудиосистемы.

В принципе, для Домашнего кинотеатра подойдет любой компьютер (не обязательно с низким профилем/low profile). Главное иметь ЖК или плазменную панель, желательно с такими наклейками:


Вывод на HD-панель осуществляется с видеокарты через
HDMI-интерфейс.

Жидкокристаллический (LCD) телевизор PHILIPS споддержкой HDTV

 

HD-телевизор получает уже готовую картинку с видеокарты. Для него HDTV – это не кодеки (h.264, VC-1, MPEG2 и т.д.), а готовая картинка. Что получил – то и отобразил. При этом важно, чтобы компьютер, как сложный аппаратно-программный комплекс, умел получить транспортный поток со спутника, обработать его, декодировать видео и отправить его на телевизор.

1.6 Кодек h.264

Идея того, что картинка будет большой, хороша всем, кроме одного. Её нужно как-то передавать потребителю по каналам связи. А каналы связи очень дорогие и ограничены по пропускнойспособности. Для хранения и передачи HDTV стали использовать кодеки с высоким уровнем сжатия.

Кодек состоит из двух систем:кодер и декодер. Кодер находится у оператора и оператор кодирует им информацию. Декодировать же видео – задача вашей системы.

Стандартом де-факто для спутникового телевидения высокой четкости стал кодек h.264, который, как всегда, чтобы ещё сильнее запутать пользователей получил несколько англоязычных названий: AVC (Advanced Video Coding), ITU-T H.264, h.264/AVC, ISO/IEC MPEG-4 Part 10, ISO/IEC 14496-10. Все данные стандарты технически полностью идентичны. Поэтому в нашей статье будем использовать для кодека наименование h.264.

Иногда, происходит путаница. h.264 ошибочно называют MPEG-4.На самом деле это не совсем верно. Сам стандарт MPEG-4 состоит из 22 частей. Истандарт кодека h.264 идет под номером 10, то есть является небольшой частью более глобального стандарта MPEG-4.

Чем хорош кодек h.264 – тем, что позволяет хорошо сжимать видео. Им также можно сжимать и телевидение стандартного разрешения. А HDTV можно сжимать другими кодеками, например MPEG-2 или VC-1. Причем как раз эти кодеки могут использоваться для кодирования HDTV на Blu-Ray/HD DVD-дисках.

1.7 Особенности декодера h.264

Обратной стороной медали хорошего сжатия видео высокой четкости кодеком h.264 стало то, что на принимающую сторону пришлась большая нагрузка по раскодированию и пост-обработке видео. Особенно если учесть, что в кодеке h.264существует несколько уровней компрессии: low, medium,high, very high, а частота смены кадров может быть от 24 до 60 кадров в секунду.

Можно использовать четырех-ядерный центральный процессор и забыть о достаточной мощности компьютера для декодирования h.264. Но с одной стороны, это лишнее повышенное тепловыделение всей системы. А с другой стороны, видеоизображение, полученное с помощью софтверного кодека h.264, всегда будет хуже видео, полученного с помощью аппаратного кодека h.264 на видеокарте.

1.8 Как можно увидеть, что софтверный декодер h.264 хуже, чем аппаратный декодер h.264?

  1. Цветопередача – цвета не такие, какие должны быть.
  2. Размытие картинки – такое впечатление, что, как будто, кто-то намазал картинку мылом. При этом такое HDTV по качеству напоминает обычное телевидение стандартной четкости в MPEG-2. Тогда зачем вообще смотреть HDTV, если не видеть его преимуществ?
  3. Отображение диагональных объектов – зачастую можно увидеть, что диагональные объекты из одного угла в противоположный угол экрана идут ступеньками.
  4. Сцены с высокой динамикой – при пиковой нагрузке софтверный кодек начинает пропускать кадры даже на мощных процессорах. При этом люди могут телепортироваться из одного угла помещения в другой – софтверный декодер просто пропустил подряд много кадров или целые сцены. Особенно софтверному декодеру тяжело, при высокой степени компрессии видео и большом количестве кадров в секунду.

1.9 Почему для HDTV в формате h.264нужно использовать аппаратный декодер?

  1. Чтобы была естественная цветопередача.
  2. Чтобы картинка была четкой и по настоящему качественной. Хотя, конечно, кого-то устраивает и некачественная картинка HDTV: И так пойдёт. Это тот случай, когда можно смотреть цветное телевидение на черно-белом телевизоре. Главное – есть возможность увидеть картинку.
  3. Чтобы провод, натянутый по диагонали из одного угла экрана в другой, был прямым, а не ступеньками.
  4. Чтобы люди и объекты в кадре не телепортировались в другое пространство, кроме как в фильме Телепорт (Jumper).
  5. Для того, чтобы разгрузить центральный процессор. Загрузка ЦП, при использовании аппаратного декодера h.264 составляет 15-20%. А при использовании софтверного декодера 90-100%.

1.10 Почему у аппаратного декодера h.264 картинка лучше, чем у софтверного декодера h.264?

Операторы, для экономии спутниковой полосы, используют максимальное сжатие исходного материала в h.264. При этом самим стандартом h.264 предполагается,что будет пост-обработка полученного изображения. К пост-обработке, к примеру,относятся фильтры подавления шума, фильтры увеличения резкости и др.

Аппаратный декодер h.264 делает все необходимые действия, чтобы картинка HDTV была именно HDTV,а не чуть улучшенным вариантом SDTV.

2. Рецепт качественного слоеного пирога телевидения высокой четкости в Windows

2.1 Слои пирога HDTV

Слои пирога HDTV можно представить так: Транспортный поток с драйвера DVB-карты– Сплиттер/демультиплексор ТВ-плеера – Кодек с поддержкой аппаратного декодирования h.264 – Драйвер видеокарты с технологией ATI AVIVO HD или NVDIA Purevideo HD- Рендерер.

На самом деле, это примерная схема. Всё гораздо сложнее. Но схема полезна для общего понимания взаимодействия программного обеспечения системы.

Во всех случаях аппаратного декодирования декодер и рендерер используют функции драйвера видеокарты с ATI AVIVO HD илиNVDIA Purevideo HD. Декодер использует функции декодирования. Рендерер использует функции пост-обработки. Иногда частично пост-обработка делается на уровне декодера.

Во всех случаях граф для обработки спутникового HDTV вформате h.264 выглядит следующим образом:

 

Условно говоря, рендерер – этоустройство, на которое отправляется видео после обработки декодером.

2.2 Аппаратное декодирование h.264 с помощью DXVA

Процедура декодирования HDTV разбита на четыре этапа, выполняющихся в следующем порядке:

1) VLD (Variable-Length Decode)или CAVLC/CABAC или Bitstream processing.
2) IDCT (Inverse Discrete Cosine Transform) или Frequency Transform.
3) MoComp (Motion Compensation) или Pixel Prediction.
4) PostProc (Post Processing) или Deblocking.

Наиболее трудоемкими являются первый и второй этапы. VLD до 50%вычислений по декодированию HD-видео,IDCT до 40% вычислений. Дальнейшие операции MoComp и PostProc – менее трудоемкие. Не более 10-15% вычислительных операций по декодированию HD-видео.

Для аппаратного ускорения декодирования видео корпорация Microsoft разработала технологию DXVA 1.0/2.0(DirectXVideo Acceleration).

Существует два вида DXVA:

1. Частичное аппаратное декодирование h.264 / Hardware assisted decoding

Часть операций осуществляет центральный процессор (CPU),а часть операций осуществляет графический процессор (GPU). На практике, данные технологии были реализованы ведущими производителями видеокарт и называются: ATI Avivo и NVIDIA Purevideo.

2. Полное аппаратное декодирование h.264 / Full bitstream decoding

Все операции осуществляет аппаратный декодер. На практике, данные технологии были реализованы ведущими производителями видеокарт и называются: ATI Avivo HD и NVIDIA Purevideo HD.

 

Как видно на картинке, технология ATI Avivo выполняет только вторую, третью и четвертую операции по декодированию видео. При этом самая трудоемкая первая операция VLD/Bitstream decode (до50% вычислений по декодированию видео) выполняется центральным процессором компьютера. Такую технологию частичного аппаратного декодирования видео нельзя назвать полноценной.

Поэтому для аппаратного декодирования видео в формате h.264 мы можем рекомендовать только технологию полного аппаратного декодирования – Full bitstream decoding. Данная технология имеет коммерческие названия: ATI Avivo HDи NVIDIA Purevideo HD.

ATI AVIVO HD  (непутаем с ATI AVIVO™)

В настоящий момент следующие видеокарты от ATI/AMD поддерживают технологию полного аппаратного декодирования HD-видео: Radeon HD 5000 Series, Radeon HD 4000 Series, Radeon HD 3000 Series, Radeon HD 2600 Series, Radeon HD 2400 Series, Radeon HD 4200/AMD 785G Chipset, Radeon HD 3200/AMD 780G Chipset, Radeon HD 3300 IGP/AMD 790GX Chipset.

NVIDIA Purevideo HD (не путаем с NVIDIA Purevideo)

В настоящий момент следующие видеокарты отNVIDIA поддерживают технологию полного аппаратного декодирования HD-видео: GeForce 200 Series, GeForce 9 Series, GeForce86xx, GeForce 85xx, GeForce 84xx.

 

При детальном изучении данного документа видно, что из данной линейки видеокартNVIDIA, частичнаяподдержка аппаратного декодирования h.264 есть только на видеокарте GeForce 88xx. Отсутствие галочки в таблице спецификации означает то, что GeForce88xx аппаратно не выполняет первые два этапа декодирования видео (CAVLC/CABAC и IDCT),а это 90% всех вычислений.

Другие новые видеокарты NVIDIA,из списка указанного выше, имеют полное аппаратное декодирование h.264 и максимально полноснимают нагрузку с центрального процессора компьютера.

 

Рекомендации по использованию DXVA

1. Видеокарта с поддержкой полного аппаратного декодирования h.264.
2. Официальная лицензионная сборка ОС Windows с обновлениями и без установленных кодек-паков. В неофициальных пиратских сборках ОС Windows могутотсутствовать нужные библиотеки и модули для DXVA.
3. Последняя версия DirectX 9 или DirectX 10.
4. Удачная версия драйверов видеокарты. К сожалению, удачная – необязательно самая последняя версия. Для видеокарт ATI рекомендуется использовать версии драйверов 8.10 или 8.12.
5. И самое главное – в настоящий момент не существует полностью безглючного декодера h.264 с поддержкой DXVA. Можно рекомендовать только одну из версий CyberLink H.264/AVC Decoder. ArcSoft Mpeg2/H264Video Decoder появился позже, но последние версии достаточно удачные, чтоб составить конкуренцию декодеру от CyberLink.

По поводу особенностей новых и старых версий драйверов к видеокартам ATI/AMD можно привести следующие цитаты из высказываний специалистов:

Выходит новое оборудование у ATI, сразу забрасывают старое. В основном оптимизация касается количества попугаев в очередной новой игрушке. Когда я начал ловить BSOD-ы на драйверах версии 9.6, то решил посмотреть релиз ноутес (что нового появилось в драйверах). Как обычно, добавили поддержку новой игрушки для 48XX и испортили всё остальное. В следующей версии драйвера исправили незначительные баги, и и не смогли избавиться от артефактов на воспроизведении видео-контента. Всё как всегда.

Я не уверен, что можно что-то вообще посоветовать пользователям. Нет готового решения. Слишком все индивидуально. Если закладываться на аппаратное ускорение h.264, то это пока одна из версий декодера CyberLink и подходящий под неё драйвер.

Свежие драйверы от ATI, как правило, неочень удачно работают с HD. Сейчас столкнулся в очередной раз именно с такой ситуацией. Поставил последние драйверы версии 9.6 – картинка дергается, постоянные BSOD. В среднем 1-2 раза в час. Поставил предыдущие 9.5. Ситуация чуть лучше, но, тем не менее, очень часто BSOD. Откатил драйверы аж на версию 8.5 – BSOD-ыпропали.

Причем связка: версия драйвера -версия декодера h.264 порой очень важна для стабильной работы всей системы.

2.3 Софтверное декодирование h.264

Как уже отмечалось выше, софтверное декодирование не рекомендуется для просмотра HDTV. Но еслиу Вас пока нет видеокарты с аппаратным декодером h.264, то Вы можете попробовать посмотреть цветное ТВ на черно-белом телевизоре с помощью софтверного декодера h.264.

Из софтверных декодеров можно рекомендовать CoreAVC. Это самый быстрый из софтверных декодеров. Данный кодек коммерческий, его можно купить на сайте http://coreavc.com/. В экспериментальных целях,можно воспользоваться 14-ти дневной пробной (trial) версией.

Для нормальной работы CoreAVC необходим двухядерный процессор по 2,5-2,8 Ггц на ядро.

Если у Вас видеокарта NVIDIA,и она поддерживает технологию NVIDIA CUDA,то системные требования к ЦП для софтверного декодирования h.264 кодеком CoreAVC могут быть существенно снижены.

CoreAVC с марта 2009года поддерживает технологию NVIDIA CUDA (с версии 1.9.5.0). Данная технология позволяет перенести значительную часть математических вычислений с центрального процессора (CPU) на графический процессор (GPU).

Видеокарты NVIDIA, которые поддерживают технологию CUDA, можно посмотреть по ссылке 4.5. Поддержка технологии CUDA появилась в драйверах NVIDIA с версии 182.05.

 2.4 Выбор программы для просмотра спутникового ТВ

Для воспроизведения спутникового телевидения HDTV в формате h.264 ТВ-плееры рекомендуются в следующей последовательности:
1. AltDVB версия 2.2 с модулем PTG Engine.
2. DVBViewer Pro версия от 4.2.1 со стандартным модулем.
3. ProgDVB Pro версия от 6.20 со стандартным модулем и DVBDream версия от 1.4iс модулем PTG Engine.

В качестве рендерера необходимо выбрать VMR 7/9 для ОС Windows XP или EVRдля ОС Windows Vista/7.

3. Пример настройки AltDVBдля HDTV

Как уже отмечалось выше, все настройки пользователя индивидуальны для различных систем. В качестве примера, приведем настройки одной из стабильно настроенных систем.

Операционная система: Windows XP SP3
Видеокарта: ATI Radeon HD 4850
Версия драйверов видеокарты: 8.10
DVB-карта:Prof Revolution 7301 DVB-S2 PCI или любая другая DVB-карта Prof
Версия драйвера DVB-карты: 1.0.1.2
Программа спутникового ТВ-плеера: AltDVB v.2.2 (бесплатная программа).
Видео-декодер h.264: CyberLink H.264/AVC Decoder (PDVD8), т.е. из коммерческого пакета CyberLink PowerDVD 8 (Приобретаетсявместе с пакетом. Стоимость пакета CyberLink PowerDVD составляет 45-50$.).
Аудио-декодер: AC3 Filter.
Рендерер: VMR7.
Кодек-паки: отсутствуют. Кодек-паки мусорят систему и приводят к невозможности настроить её стабильную работу. Для успешной настройки аппаратного декодирования h.264рекомендуется использовать чистую систему, установленную из официального лицензионного дистрибутива ОС Windows.

5. Главный секрет DVB-карты

Ну и на последок главный секрет успешной настройки HDTV на компьютере – НА САМОМ ДЕЛЕ DVB-S/S2 КАРТА НИКАКОЕ HDTV НЕ ПОКАЗЫВАЕТ!

Задача DVB-карты- корректно принять транспортный поток и отправить его дальше. На этом её функция заканчивается. Что там будет дальше с транспортным потоком, DVB-карту не интересует. На дальнейшую обработку транспортного потока разработчики DVB-карт повлиять не могут. Это не их зона ответственности.

Кто не понимает эту мысль, тот обвиняет во всех своих проблемах с настройкой системы производителя DVB-карт.

Кто понимает эту мысль, тот подбирает для мультимедиа-компьютера правильную ОС (официальная лицензионная сборка Windows XP SP2/SP3 32 bit), подбирает драйверы к своейвидеокарте, не вылетающие в BSOD при работе с h.264, подбирает декодер h.264, использует устойчивые ТВ-плееры с проработанным демультиплексором.