Заметки за май 2009 года :: Хранитель заметок

noteskeeper.ru

Персональный журнал для заметок Владимира Кузнецова

Заметки за май 2009 года

Ускоряем кодеки для просмотра FullHD

Мой старенький Mac mini (1.66ГГц Intel Core Duo) всегда тормозил при воспроизведении FullHD фильмов. Максимум на что его хватало — это фильмы с разрешением 720p. Из-за особенностей большинства плееров и кодеков, используемых в них, для декодирования задействовалось только одно ядро процессора.

У проекта FFmpeg есть многопоточная версия FFmpeg-mt, которую можно и нужно использовать, например, в MPlayer для того, чтобы загрузить процессор работой по максимуму.

Итак, прежде чем приступить к сборке, нам понадобятся несколько инструментов:

  • Apple Developer Tools (так же есть на любом DVD с Mac OS X)
  • Subversion (консольная версия есть в комплекте Apple Developer Tools)
  • Git

Всю сборку я буду проводить на рабочем столе.

cd ~/Desktop/

Загружаем исходники MPlayer из репозитория.

svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer

Загружаем исходники FFmpeg-mt.

git clone http://git.gitorious.org/ffmpeg/ffmpeg-mt.git

Теперь, чтобы использовать библиотеки FFmpeg-mt, заменим три папки libavcodec, libavformat и libavutil в исходниках MPlayer.

cd mplayer
rm -rf libavcodec libavformat libavutil
cp -R ../ffmpeg-mt/libavcodec .
cp -R ../ffmpeg-mt/libavformat .
cp -R ../ffmpeg-mt/libavutil .

Можно приступать к конфигурации и сборке проекта.

./configure --enable-menu --enable-apple-remote
make
sudo make install

Осталось сделать несколько косметических манипуляций. Нужно указать какой шрифт использовать для OSD и субтитров.

ln -s /Library/Fonts/Arial\ Unicode.ttf ~/.mplayer/subfont.ttf

Так же нужно немного отредактировать конфигурационный файл.

nano ~/.mplayer/config

В файле набираем:

lavdopts=threads=2:skiploopfilter=all
vf=yuy2
fs=yes

Эти настройки декодера предписывают ему использовать два потока и пропустить некоторые процедуры улучшения картинки. Так же для меня было оптимально использовать принудительную конвертацию видео в YUY2, что дает не большой прирост в скорости.

В целом обновленная версия показала прирост в производительности на 60% в сравнении с однопоточным декодером.

Обновление: отличный GUI MPlayer OSX Extended уже содержит сборку mplayer с многопоточным декодированием.

Навигация внутри страницы по якорям

Перечитывал спецификацию HTML 4.01 и открыл для себя удивительное свойство ссылок. Чтобы обеспечить навигацию по якорям внутри страниц не обязательно объявлять эти их через <a name="#section"></a>. Достаточно назначить этот идентификатор любому подходящему элементу.

<h1>Table of Contents</h1>
<p><a href="#section1">Introduction</a><br />
<a href="#section2">Some background</a><br />
<a href="#section2.1">On a more personal note</a><br />
…the rest of the table of contents…
…the document body…
<h2><a name="section1">Introduction</a></h2>
…section 1…
<h2><a name="section2">Some background</a></h2>
…section 2…
<h3><a name="section2.1">On a more personal note</a></h3>
…section 2.1…

Аналогичного эффекта можно достичь с помощью более простого кода:

<h1>Table of Contents</h1>
<p><a href="#section1">Introduction</a><br />
<a href="#section2">Some background</a><br />
<a href="#section2.1">On a more personal note</a><br />
…the rest of the table of contents…
…the document body…
<h2 id="section1">Introduction</h2>
…section 1…
<h2 id="section2">Some background</h2>
…section 2…
<h3 id="section2.1">On a more personal note</h3>
…section 2.1…

Ещё парочка «Sticky footer»

Не так давно я писал о «Sticky footer». Сегодня мне попалась на глаза ещё пара реализаций: Ryan Fiat’s Sticky Footer и New CSS Sticky Footer.

Они обе имеют одну слабость — необходимо задавать высоту «подвала», что в некоторых ситуациях может быть проблематично. Как вариант, его можно сделать немного больше, чем нужно, и дать тексту пространство для расширения.