Что можно сделать, если MPEG-4 "тормозит"?
Заикающийся звук, резкое подергивание картинки на динамичных сценах, "выпадение кадров" - верные признаки того, что вашей системе не хватает мощности для нормальной декомпрессии видеопотока. Кстати, статистику работы видеокодека при просмотре фильма можно выяснить в разделе меню Вид/Статистика универсального проигрывателя. Перечисленные выше явления могут возникать не только на откровенно слабых машинах, но и на достаточно мощных компьютерах при неоптимальной настройке. В этом случае начать проверку системы нужно с установок в BIOS SETUP. Особое внимание следует уделить настройке подсистемы памяти, так как именно ее задача - успеть пропустить весь разжатый кодеком поток данных между процессором и видеокартой. Кодек MPEG-4 исполняется почти полностью на программном уровне, поэтому разгон процессора может дать существенный прирост по производительности. Ниже приведены результаты оптимизации настроек BIOS Setup моего компьютера.
Рисунок 9. Изменение загрузки процессора в зависимости от настроек BIOS
По умолчанию память работала на частоте 100Мгц с таймингами памяти 7-1-1-1R 4-1-1-1W 3-3-3CL. Увеличение рабочей частоты памяти до 133Мгц, уменьшение таймингов до 6-1-1-1R 4-1-1-1W 2-2-2CL и включение Bank interleave 4-way привело к снижению средней загрузки CPU на 4,8%, а последующий разгон внешней шины процессора до 107 Мгц (частота процессора 7*107=750Мгц, памяти - 107+33=140Мгц) дал снижение загрузки еще на 4,3%. Таким образом, правильная настройка и небольшой разгон системы привели почти к десятипроцентному снижению загрузки процессора. Теперь поговорим о настройках операционной системы. Прежде всего желательно скачать последний патч (заплатку) с сайта производителя для чипсета, установленного на вашей материнской плате, особенно, если этот чипсет от VIA. Затем нужно проверить, включен ли режим DMA для CD-ROM и жесткого диска: в Панели управления в разделе Система посмотреть свойства CD-ROM и жесткого диска. В этом режиме обмен данными между оперативной памятью и внешними устройствами происходит без участия процессора.
Кроме того, при просмотре фильмов с жесткого диска, работающего в режиме UDMA, средняя загрузка процессора снижается на 1-2%. Выигрыш по производительности, конечно, небольшой, но ради уменьшения общего шумового фона от компьютера стоит постараться.
Рисунок 10. Загрузки CPU в зависимости от используемого накопителя Изменение разрешения и глубины цветов рабочего стола и разгон видеокарты не оказывают значительного влияния на быстродействие кодека. В подтверждение привожу следующий график. При изменениях в широком диапазоне частоты графического процессора/памяти на видеокарте RIVA TNT2 PRO от 100/125 до 160/200, а также разрешения и глубины цветов экрана разброс результатов средней загрузки процессора составил 4,3%.
Рисунок 11. Загрузка процессора в зависимости от настройки видеокарты Полученный результат наглядно показывает, что видеокарта практически не участвует в процессе декомпрессии видеопотока. Единственное, что может поручить ей плеер, это масштабирование и преобразование формата цветов в исходной картинке, а эти действия массовые графические контроллеры научились хорошо делать еще лет пять назад. Так как размер потока между видеокартой и процессором не зависит от разрешения экрана, то небольшое колебание процента загрузки CPU связано главным образом с изменением работы видеопамяти в различных режимах скорости.
Как уже говорилось, масштабирование изображения и преобразования формата цветов из YUV в RGV может и должно (для разгрузки процессора) производиться на аппаратном уровне силами видеокарты. Аппаратное масштабирование поддерживают практически все видеоадаптеры последних двух-трех лет выпуска, однако некоторые видеопроцессоры, например от MATROX и NVIDIA TNT/TNT2, не всегда запускают оверлеи, если разрешение исходной картинки для масштабирования не кратно по горизонтали 16 или 32. Оверлей также может не работать при неправильной настройке драйверов видеокарты или же просто потому, что программа-плеер не умеет выводить видео в этом режиме. Мне так и не удалось включить оверлей при просмотре "Матрицы" (разрешение 680*312) на видеокарте TNT2PRO во всех плеерах кроме Sisami2k.
При просмотре других фильмов ( с разрешением по горизонтали, кратным 32) включение режима оверлея снижало загрузку процессора (Duron 700) в среднем на 10-15%.
Если все предыдущие рекомендации существенно не помогли, остается только жертвовать качеством декомпрессии в обмен на плавность. При открытом файле MPEG-4 в WMP 6.4, в меню Файл > Свойства > Дополнительно, выберите свойства MPEG-4 DVD Video decompressor и подберите оптимальный уровень CPU Quality. Уменьшение этого показателя высвободит дополнительные такты процессора, и изображение не будет "затыкаться".
При значении 0 будет выключен программный фильтр сглаживания изображения; уровни от 1 до 4 соответственно повышают степень сглаживания - это ведет к уменьшению заметности "квадратиков" на изображении.
Рисунок 12. Загрузка процессора при различном уровне фильтрации Можно попробовать из каталога Windows\System удалить файл DivX_c32.ax, который при воспроизведении видео дополнительно обрабатывает разжатый видеопоток, корректируя яркость, контрастность, насыщенность цвета и качество сглаживания. Минус в том, что после удаления этого файла вы лишитесь соответствующих настроек в свойствах кодека. В самом крайнем случае можно пойти на уменьшение разрешения кадра MPEG-4 фильма, так как с уменьшением разрешения резко высвобождаются ресурсы для полноценного воспроизведения видеопотока. Подробнее об этом можно прочитать здесь: http://mpeg.boom.ru/pixel.htm.