view DOCS/xml/ru/codecs.xml @ 17464:6770c410f4f3

support libavcodec's new sc_factor parameter Original idea from Michael; patch by me.
author corey
date Sun, 22 Jan 2006 21:02:14 +0000
parents bf95700fe8c8
children 9d7611d3227c
line wrap: on
line source

<?xml version="1.0" encoding="koi8-r"?>
<!-- synced with 1.44 -->
<sect1 id="codecs">
<title>Поддерживаемые кодеки</title>

<sect2 id="video-codecs">
<title>Видео кодеки</title>

<para>
См. <ulink url="http://www.mplayerhq.hu/homepage/codecs-status.html">таблицу статуса кодеков</ulink>
для полного, ежедневно генерируемого списка. Несколько кодеков доступны для
скачивания на нашей странице. Получите их со 
<ulink url="http://www.mplayerhq.hu/MPlayer/releases/codecs/">страницы кодеков</ulink>.
</para>

<para>
Наиболее важные кодеки:
</para>

<itemizedlist>
<listitem><simpara>
  <emphasis role="bold">MPEG1</emphasis> (<emphasis role="bold">VCD</emphasis>) и
  <emphasis role="bold">MPEG2</emphasis> (<emphasis role="bold">DVD</emphasis>) видео
  </simpara></listitem>
<listitem><simpara>
  "родные" декодеры для <emphasis role="bold">DivX ;-), OpenDivX (DivX4),
  DivX (Pro), 3ivX, M$ MPEG4</emphasis> v1, v2 и других вариантов MPEG4.
  </simpara></listitem>
<listitem><simpara>
  "родной" декодер для <emphasis role="bold">Windows Media Video 7/8</emphasis>
  (<emphasis role="bold">WMV1/WMV2</emphasis>), и Win32 DLL декодер
  для <emphasis role="bold">Windows Media Video 9</emphasis>
  (<emphasis role="bold">WMV3</emphasis>), оба используются в <filename>.wmv
  </filename> файлах
  </simpara></listitem>
<listitem><simpara>
  "родной" <emphasis role="bold">Sorenson 1 (SVQ1)</emphasis> декодер
  </simpara></listitem>
<listitem><simpara>
  "родной" <emphasis role="bold">Sorenson 3 (SVQ3)</emphasis> декодер
  </simpara></listitem>
<listitem><simpara>
  <emphasis role="bold">3ivx</emphasis> v1, v2 декодер
  </simpara></listitem>
<listitem><simpara>
  Cinepak и <emphasis role="bold">Intel Indeo</emphasis> кодеки (3.1,3.2,4.1,5.0)
  </simpara></listitem>
<listitem><simpara>
  <emphasis role="bold">MJPEG</emphasis>, AVID, VCR2, ASV2 и другие аппаратные
  форматы
  </simpara></listitem>
<listitem><simpara>
  VIVO 1.0, 2.0, I263 и другие <emphasis role="bold">h263(+)</emphasis> варианты
  </simpara></listitem>
<listitem><simpara>
  FLI/FLC
  </simpara></listitem>
<listitem><simpara>
  <emphasis role="bold">RealVideo 1.0 &amp; 2.0 </emphasis> из
  <systemitem class="library">libavcodec</systemitem>, и
  <emphasis role="bold">RealVideo 3.0 &amp; 4.0</emphasis> кодеки, используя 
  библиотеки RealPlayer
  </simpara></listitem>
<listitem><simpara>
  "родной" декодер для HuffYUV
  </simpara></listitem>
<listitem><simpara>
  Различные старые, похожие на RLE форматы
  </simpara></listitem>
</itemizedlist>

<para>
Если у Вас есть не упомянутый здесь Win32 кодек, который ещё не поддерживается,
пожалуйста, прочтите <link linkend="codec-importing">Как добавить кодек [codec
importing HOWTO]</link> и помогите нам добавить для него поддержку.
</para>


<sect3 id="divx4-5">
<title>DivX4/DivX5</title>

<para>
Эта секция содержит информацию о DivX4 b DivX5 кодеках от
<ulink url="http://www.projectmayo.com">Project Mayo</ulink>.
Их первыми доступными альфа версиями были OpenDivX alpha 47 и 48.
В прошлом поддержка для них была включена в <application>MPlayer</application>
и собиралась по умолчанию. Также мы использовали их код постобработки
для факультативного улучшения качества изображения в MPEG1/2 фильмах.
Сейчас мы используем наш собственный фильтр для файлов всех типов.
</para>

<para>
Новое поколение этого кодека называется DivX4 и даже может декодировать фильмы,
сделанные пресловутым DivX кодеком! В дополнение к этому, он значительно
быстрее, чем Win32 DivX DLL'и, но медленнее, чем
<systemitem class="library">libavcodec</systemitem>.
Поэтому, использовать его в качестве декодера
<emphasis role="bold">НЕ РЕКОМЕНДУЕТСЯ</emphasis>. Хотя, он полезен
для кодирования. Единственным недостатком этого кодека является то, что он
не доступен по лицензии с Открытым исходным кодом[Open Source license]
</para>

<para>
DivX4 работает в двух режимах:
<variablelist>
<varlistentry><term><option>-vc odivx</option></term>
<listitem><simpara>
  Использовать кодек в манере OpenDivX. В этом случае, он выдаёт YV12
  изображения в своём собственном буфере, и <application>MPlayer</application>
  сам изменяет пространство цветов через libvo. (<emphasis role="bold">Быстро,
  рекомендуется!</emphasis>)
  </simpara></listitem>
</varlistentry>
<varlistentry><term><option>-vc divx4</option></term>
<listitem><simpara>
  Используется изменение пространства цветов в кодеке. В этом режиме Вы также
  можете использовать YUY2/UYVY. (<emphasis role="bold">МЕДЛЕННО</emphasis>)
  </simpara></listitem>
</varlistentry>
</variablelist>
</para>

<para>
Метод <option>-vc odivx</option> обычно быстрее, поскольку при этом изображение
передаётся в YV12 формате (линейный YUV 4:2:0), и поэтому требуется много
меньшая пропускная способность шины. Для упакованных YUV режимов (YUY2, UYVY)
используйте метод <option>-vc divx4</option>. В RGB режимах скорость - такая же,
различаясь в лучшем случае из-за текущей глубины цвета.
<note>
<para>
Если Ваш <option>-vo</option> драйвер поддерживает прямой вывод, то <option>-vc
divx4</option> может быть более быстрым, или даже наибыстрейшим решением.
</para>

<para>
Двоичная библиотека DivX4/5 кодека может быть скачена с сайтов
<ulink url="http://avifile.sourceforge.net">avifile</ulink> или
<ulink url="http://www.divx.com">divx.com</ulink>
Распакуйте его, запустите как администратор <filename>./install.sh</filename>,
и не забудьте добавить 
<filename class="directory">/usr/local/lib</filename> в Ваш
<filename>/etc/ld.so.conf</filename> и запустить <command>ldconfig</command>.
</para>

<para>
Так можно получить CVS версию СТАРОЙ библиотеки OpenDivX core:
</para>

<procedure>
<step><para>
<screen>cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot login</screen>
</para></step>
<step><para>
<screen>cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot co divxcore</screen>
</para></step>
<step><para>
Основная библиотека разделена на decore[декодер] и encore[кодер] библиотеки,
которые должны компилироваться по-отдельности. Для библиотеки decore, просто наберите
<screen>
cd divxcore/decore/build/linux
make
cp libdivxdecore.so /usr/local/lib
ln -s libdivxdecore.so /usr/local/lib/libdivxdecore.so.0
cp ../../src/decore.h /usr/local/include
</screen>
</para></step>
<step><para>
К сожалению, для библиотеки encore Linux'ового Makefile нет, и MMX оптимизированный
код работает только под Windows. Вы всё же можете скомпилировать её, используя этот
<ulink url="ftp://ftp.mplayerhq.hu/MPlayer/contrib/divx-mf/Makefile">Makefile</ulink>.
<screen>
cd ../../../encore/build
mkdir linux
cd linux
cp path/Makefile .
make
cp libdivxencore.so /usr/local/lib
ln -s libdivxencore.so /usr/local/lib/libdivxencore.so.0
cp ../../src/encore.h /usr/local/include
</screen>
</para></step>
</procedure>

<para>
<application>MPlayer</application> автоматически находит DivX4/DivX5 если они были
правильно установлен, просто компилируйте как обычно. Если он не находит этот
кодек, то Вы неправильно установили или сконфигурировали DivX4/DivX5.
</para>

</note>
</para>
</sect3>


<sect3 id="ffmpeg" xreflabel="FFmpeg/libavcodec">
<title>FFmpeg/libavcodec</title>

<para>
<ulink url="http://ffmpeg.sourceforge.net">FFmpeg</ulink> содержит пакет кодеков
с <emphasis role="bold">открытым исходным кодом</emphasis>, который способен
декодировать потоки, закодированные различными видео и  аудио кодеками.
Кроме того, этот пакет предоставляет потрясающие кодирующие возможности,
причём производительность выше, чем у Win32 кодеков или DivX.com DivX4/5
библиотеки!
</para>

<para>
Он содержит множество хороших кодеков, из которых наиболее важными являются
варианты MPEG4: DivX3, DivX4, DivX5, Windows Media Video 7/8 (WMV1/WMV2). Также весьма
интересен декодер WMA.
</para>

<para>
Наконец, последний кодеком, заслуживающий внимания &mdash; это
<emphasis role="bold">Sorenson 3</emphasis>(SVQ3) кодек. Это первая реализация
этого кодека с полностью открытым исходным кодом. Она даже быстрее оригинала.
Используйте её, вместо двоичного кодека!
</para>

<para>
Полный список доступных кодеков доступен на странице FFmpeg.
Поддерживаемые <ulink url="http://www.ffmpeg.org/ffmpeg-doc.html#SEC19">видео</ulink>
и <ulink url="http://www.ffmpeg.org/ffmpeg-doc.html#SEC20">аудио</ulink> кодеки.
</para>

<para>
Если вы используете релиз <application>MPlayer</application>'а, то у Вас в пакете
уже есть <systemitem class="library">libavcodec</systemitem>,
просто компилируйте как обычно. Если Вы используете MPlayer
из CVS, Вы должны извлечь <systemitem class="library">libavcodec</systemitem>
из CVS дерева FFmpeg, поскольку релизы FFmpeg очень редки. Как правило, CVS
достаточно стабилен и предоставляет больше возможностей. Чтобы это сделать:
</para>

<procedure>
<step><para>
  <screen>cvs -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg login</screen>
  </para></step>
<step><para>
  <screen>cvs -z3 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co ffmpeg</screen>
  </para></step>
<step><para>
  Переместите каталог <filename>libavcodec</filename> из исходного кода FFmpeg
  в корень <application>MPlayer</application>'овского CVS дерева.
  Это должно выглядеть так:
  <filename class="directory">main/libavcodec</filename>
  </para><para>
  Символической ссылки <emphasis role="bold">не</emphasis> достаточно, Вы должны
  скопировать/переместить его!
  </para></step>
<step><para>
  Если Вы хотите, чтобы <systemitem class="library">libavcodec</systemitem>
  обновлялась каждый раз, когда Вы обновляете
  <application>MPlayer</application>'овский CVS, добавьте такую строчку:
  <filename>main/CVS/Entries</filename>
  в файл <screen>D/libavcodec////</screen>
  </para></step>
<step><para>
  Скомпилируйте. <filename>configure</filename> должен определить проблемы до
  компиляции.
  </para></step>
</procedure>

<note>
<para>
<application>MPlayer</application> из CVS содержит подкаталог
<filename>libavcodec</filename>, но он <emphasis role="bold">не</emphasis>
содержит исходный код для <systemitem class="library">libavcodec</systemitem>!
Вы должны следовать указаниям,
приведённым выше, чтобы получить исходный код этой библиотеки.
</para>
</note>

<para>
С FFmpeg и моей Matrox G400, я даже могу смотреть DivX фильмы с высочайшим
разрешением без пропускаемых кадров на моем K6-2 500.
</para>
</sect3>


<sect3 id="xanim">
<title>XAnim'овские кодеки</title>

<note>
<para>
Обратите внимание, что XAnim'овские бинарные кодеки распространяются с небольшим
текстом, утверждающим, что это лицензия и помимо прочих запретов, запрещающим
использование этих кодеков с любой программой кроме <application>XAnim</application>'а.
<!--- XXX Find a better translation: However, the XAnim
author has yet to bring legal action against anyone for codec-related issues.
-->
Тем не менее, автор XAnim'а ещё должен ещё произвести юридические действия по
относящимся к кодекам вопросам.
</para>
</note>

<formalpara>
<title>УСТАНОВКА И ИСПОЛЬЗОВАНИЕ</title>
<para>
<application>MPlayer</application> способе использовать XAnim'овские кодеки
для декодирования. Чтобы включить их, следуйте инструкциям:
</para>
</formalpara>

<procedure>
<step><para>
  Скачайте кодеки, которые Вы хотите использовать, с сайта
  <ulink url="http://xanim.va.pubnix.com">XAnim site</ulink>.
  <emphasis role="bold">3ivx</emphasis> кодека там нет, но его можно найти на
  <ulink url="http://www.3ivx.com">сайте 3ivx</ulink>.
  </para></step>
<step><para>
  <emphasis role="bold">ИЛИ</emphasis> скачайте пакет кодеков с нашей
  <ulink url="http://www.mplayerhq.hu/MPlayer/releases/codecs/">страницы кодеков</ulink>
  </para></step>
<step><para>
  Используйте опцию <option>--with-xanimlibdir</option>, чтобы сообщить
  <filename>configure</filename>, где находятся XAnim'овские кодеки.
  По умолчанию, он их ищет в
  <filename class="directory">/usr/local/lib/codecs</filename>,
  <filename class="directory">/usr/local/lib/xanim/mods</filename>,
  <filename class="directory">/usr/lib/xanim/mods</filename>и
  <filename class="directory">/usr/lib/xanim</filename>.
  Вместо этого, Вы можете установить значением переменной среды окружения
  <envar>XANIM_MOD_DIR</envar> каталог с XAnim'овскими кодеками.
  </para></step>
<step><para>
  Переименуйте/создайте символические ссылки, убрав части, относящиеся к
  архитектуре так, чтобы файлы назывались так: <filename>vid_cvid.xa</filename>,
  <filename>vid_h263.xa</filename>, <filename>vid_iv50.xa</filename>
  </para></step>
</procedure>

<para>
XAnim - это семейство видео кодеков <systemitem>xanim</systemitem>, поэтому Вы
можете использовать опцию <option>-vfm xanim</option>, чтобы заставить
<application>MPlayer</application> использовать их, если возможно.
</para>

<para>
Тестированные кодеки это: <emphasis role="bold">Indeo 3.2, 4.1, 5.0, CVID, 3ivX,
h263.</emphasis>
</para>
</sect3>


<sect3 id="vivo-video">
<title>VIVO видео</title>
<para>
<application>MPlayer</application> может проигрывать Vivo (1.0 and 2.0) фильмы.
Наиболее подходящий кодек для 1.0 файлов - это FFmpeg'овский H263 декодер, Вы
можете включить его использование опцией <option>-vc ffh263</option>. Для 2.0
файлов используйте Win32 DLL (опция <option>-vc vivo</option>). Если Вы не
укажете опцию в командной строке, <application>MPlayer</application>
автоматически выберет лучший доступный кодек.
</para>
</sect3>


<sect3 id="mpeg12">
<title>MPEG 1/2 видео</title>
<para>
MPEG1 и MPEG2 декодируются многоплатформенной "родной" библиотекой <systemitem
class="library">libmpeg2</systemitem>, исходный код которой включён в
<application>MPlayer</application>.  Мы обрабатываем плохое MPEG 1/2 видео,
перехватывая <systemitem>Сигнал 11</systemitem>
(<systemitem>segmentation fault[ошибка сегментации]</systemitem>), и быстро
реинициализируя кодек, продолжая точно с места ошибки. Такая технология
восстановления не имеет значимых временных задержек.
</para>
</sect3>


<sect3 id="avicodecs">
<title>MS Video1, Cinepak CVID, и другие старые кодеки</title>
<para>
MPlayer может воспроизводить большую часть старых кодеков, использовавшихся
в AVI и MOV файлах. Прежде они декодировались бинарными Win32 кодеками,
а теперь, используя 
<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>,
для большинства из них у нас есть <emphasis role="bold">родные кодеки</emphasis>.
</para>
</sect3>


<sect3 id="realvideo">
<title>RealVideo</title>

<para>
<application>MPlayer</application> поддерживает декодирование всех версий
RealVideo:

<itemizedlist>
<listitem><simpara>
  RealVideo 1.0, 2.0 (fourcc RV10, RV20) - (де)кодирование поддерживается, используя
  <systemitem class="library">libavcodec</systemitem>
  </simpara></listitem>
<listitem><simpara>
  RealVideo 3.0, 4.0 (fourcc RV30, RV40) - декодирование
  поддерживается, используя <emphasis role="bold">библиотеки RealPlayer'а</emphasis>
  </simpara></listitem>
</itemizedlist>
</para>

<para>
Cкачайте Real кодеки на
<ulink url="http://www.mplayerhq.hu/MPlayer/releases/codecs/">http://www.mplayerhq.hu/MPlayer/releases/codecs/</ulink>
и распакуйте их в каталог
<filename class="directory">/usr/local/lib/codecs</filename>.
Если Вы хотите хранить их в другом месте, укажите <command>configure</command>
опцию <option>--with-reallibdir</option>.
</para>

<para>
На Mac OS X Вы должны убедиться, что <filename>pncrt.Shlb</filename> (включая его
resource fork!) находится в том же каталоге, что и Real кодеки. Скопируйте их,
например, так: 
<screen>ditto -rsrcFork "RealOne Player.app/Contents/MacOS/pncrt.Shlb" "RealOne Player.app/Contents/MacOS/Library/Codecs"</screen>
Если Вы этого не сделаете, или забудете скопировать resource fork, Вы будете
получать такие ошибки:
<screen>GetDiskFragment() failed with error -2804: &lt;&lt;Unknown disk fragment&gt;&gt;&lt;&lt;Unknown disk fragment&gt;&gt;&lt;pncrt.Shlb&gt;&lt;&gt;</screen>
</para>


<note><para>
<application>RealPlayer</application>'овские библиотеки в настоящий момент
<emphasis role="bold">работают только под Linux, FreeBSD, NetBSD и Cygwin
на x86, Alpha и PowerPC (тестировались Linux/Alpha и Linux/PowerPC)
платформах и с Mac OS X</emphasis>.
</para></note>
</sect3>


<sect3 id="xvid">
<title>XviD</title>

<para>
<ulink url="http://www.xvid.org">XviD</ulink> - это разработка, отпочковавшаяся от
OpenDivX кодека. Это произошло, когда ProjectMayo сделал исходный код OpenDivX
закрытым (DivX4, теперь DivX5), и разработчики OpenDivX не из ProjectMayo
разозлились, и взялись за XviD. Поэтому у обоих проектов общие корни.

<itemizedlist>
<title>ПРЕИМУЩЕСТВА</title>
<listitem><simpara>
  открытый исходный код
  </simpara></listitem>
<listitem><simpara>
  API совместимы с DivX4, поэтому просто добавить для него поддержку
  </simpara></listitem>
<listitem><simpara>
  поддержка кодирования в 2 прохода
  </simpara></listitem>
<listitem><simpara>
  хорошее качество кодирования, более высокая скорость, по сравнению с DivX4
  (вы можете его оптимизировать под Вашу машину во время компиляции)
  </simpara></listitem>
</itemizedlist>

<itemizedlist>
<title>НЕДОСТАТКИ</title>
<listitem><simpara>
  в настоящий момент не все DivX/DivX4 файлы <emphasis role="bold">декодируются
  </emphasis> (не проблема, поскольку их может воспроизвести
  <link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>)
  </simpara></listitem>
<listitem><simpara>
  разработка продолжается и в настоящий момент
  </simpara></listitem>
</itemizedlist>
</para>

<procedure>
<title>УСТАНОВКА XVID CVS</title>
<para>
  В настоящий момент он доступен только по CVS. Вот как его скачать и поставить
  (Вам потребуется autoconf не старее 2.50, automake и libtool):
</para>
<step><para>
  <screen>cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login</screen>
  </para></step>
<step><para>
  <screen>cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore</screen>
</para></step>
<step><para>
  <screen>cd xvidcore/build/generic</screen>
  </para></step>
<step><para>
  <screen>./bootstrap.sh</screen>
  </para></step>
<step><para>
  <screen>./configure</screen>
  Вам может потребоваться добавить некоторые опции (посмотрите вывод
  <screen>./configure --help</screen>).
  </para></step>
<step><para>
  <screen>make &amp;&amp; make install</screen>
  </para></step>
<step><para>
  Если Вы указали <option>--enable-divxcompat</option>,
  скопируйте <filename>../../src/divx4.h</filename> в
  <filename class="directory">/usr/local/include/</filename>.
  </para></step>
<step><para>
  Перекомпилируйте <application>MPlayer</application> с
  <option>--with-xvidlibdir=<replaceable>/path/to/</replaceable>libxvidcore.a</option>
  <option>--with-xvidincdir=<replaceable>/path/to/</replaceable>xvid.h</option>
  </para></step>
</procedure>
</sect3>


<sect3 id="sorenson">
<title>Sorenson</title>

<para>
Sorenson - это видео кодек, разработанный в Sorenson Media и лицензированный
Apple, которые распространяют его с <application>QuickTime Player</application>.
В настоящий момент мы способны декодировать все версии Sorenson видео файлов
следующими декодерами:
</para>

<itemizedlist>
<listitem><simpara>
  Sorenson 1 (fourcc <emphasis>SVQ1</emphasis>) - декодирование поддерживается
  <emphasis role="bold">родным кодеком</emphasis>
  (<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>)
  </simpara></listitem>
<listitem><simpara>
  Sorenson 3 (fourcc <emphasis>SVQ3</emphasis>) - декодирование поддерживается,
  используя <emphasis role="bold">"родной" кодек</emphasis>
  (<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>)
  </simpara></listitem>
</itemizedlist>

<procedure>
<title>КОМПИЛЯЦИЯ MPLAYER'А С ПОДДЕРЖКОЙ БИБЛИОТЕК QUICKTIME</title>
<note><para>в настоящий момент поддерживаются только 32битные Intel'евские
платформы.</para></note>
<step><para>скачайте <application>MPlayer</application>'овский CVS</para></step>
<step><para>скачайте пакет QuickTime DLL с
<ulink url="http://www.mplayerhq.hu/MPlayer/releases/codecs/"/>
</para></step>
<step><para>распакуйте пакет QuickTime DLL в Ваш каталог Win32 кодеков
(по умолчанию: <filename class="directory">/usr/local/lib/codecs</filename>)
</para></step>
<step><para>скомпилируйте <application>MPlayer</application></para></step>
</procedure>

</sect3>

<sect3 id="codec-x264">
<title>x264</title>

<sect4 id="codec-x264-whatis">
<title>What is x264?</title>
<para>
  <systemitem class="library">x264</systemitem> is a library for
  creating H.264 video streams.
  It is not 100% complete, but currently it has at least some kind
  of support for most of the H.264 features which impact quality.
  There are also many advanced features in the H.264 specification
  which have nothing to do with video quality per se; many of these
  are not yet implemented in
  <systemitem class="library">x264</systemitem>.
</para>

<itemizedlist>
<title>Encoder features</title>
  <listitem><para>CAVLC/CABAC</para></listitem>
  <listitem><para>Multi-references</para></listitem>
  <listitem><para>Intra: all macroblock types (16x16 and 4x4 with
    all predictions)</para></listitem>
  <listitem><para>Inter P: all partitions (from 16x16 down to
    4x4)</para></listitem>
  <listitem><para>Inter B: partitions from 16x16 down to 8x8
    (including SKIP/DIRECT)</para></listitem>
  <listitem><para>Ratecontrol: constant quantizer, constant bitrate,
    or multipass ABR</para></listitem>
  <listitem><para>Scene cut detection</para></listitem>
  <listitem><para>Adaptive B-frame placement</para></listitem>
  <listitem><para>B-frames as references / arbitrary frame
    order</para></listitem>
</itemizedlist>

<itemizedlist>
<title>Encoder limitations</title>
  <listitem><para>No real RD</para></listitem>
</itemizedlist>


</sect4>

<sect4 id="codec-h264-whatis">
<title>What is H.264?</title>
<para>
  H.264 is one name for a new digital video codec jointly developed
  by the ITU and MPEG.
  It can also be correctly referred to by the cumbersome names of
  "ISO/IEC 14496-10" or "MPEG-4 Part 10".
  More frequently, it is referred to as "MPEG-4 AVC" or just "AVC".
</para>
<para>
  Whatever you call it, H.264 may be worth trying because it can
  typically match the quality of MPEG-4 ASP with 5%-30% less
  bitrate.
  Actual results will depend on both the source material and the
  encoder.
  The gains from using H.264 do not come for free: decoding H.264
  streams seems to have steep CPU and memory requirements.
  For instance, on a 1733 MHz Athlon, a 1500kbps H.264 video uses
  around 50% CPU to decode.
  By comparison, decoding a 1500kbps MPEG4-ASP stream requires
  around 10% CPU.
  This means that decoding high-definition streams is almost out of
  the question for most users.
  It also means that even a decent DVD rip may sometimes stutter on
  processors slower than 2.0 GHz or so.
</para>
<para>
  At least with <systemitem class="library">x264</systemitem>,
  encoding requirements are not much worse than what you are used to
  with MPEG4-ASP.
  For instance, on a 1733 MHz Athlon a typical DVD encode would run
  at 5-15fps.
</para>
<para>
  This document is not intended to explain the details of H.264,
  but if you are interested in a brief overview, you may want to read
  <ulink url="http://www.cdt.luth.se/~peppar/kurs/smd151/spie04-h264OverviewPaper.pdf">The H.264/AVC Advanced Video Coding Standard: Overview and Introduction to the Fidelity Range Extensions</ulink>.
</para>
</sect4>

<sect4 id="codec-x264-playback">
<title>How can I play H.264 videos with <application>MPlayer</application>?</title>
<para>
  <application>MPlayer</application> uses
  <systemitem class="library">libavcodec</systemitem>'s H.264
  decoder.
  <systemitem class="library">libavcodec</systemitem> has had at
  least minimally usable H.264 decoding since around July 2004,
  however major changes and improvements have been implemented since
  that time, both in terms of more functionalities supported and in
  terms of improved CPU usage.
  Just to be certain, it is always a good idea to use a recent CVS
  checkout.
</para>
<para>
  If you want a quick and easy way to know whether there have been
  recent changes to <systemitem class="library">libavcodec</systemitem>'s
  H.264 decoding, you might keep an eye on 
  <ulink url="http://mplayerhq.hu/cgi-bin/cvsweb.cgi/ffmpeg/libavcodec/h264.c?cvsroot=FFMpeg">FFmpeg CVS repository's web interface</ulink>.
</para>
</sect4>

<sect4 id="codec-x264-encode">
<title>How can I encode videos using <application>MEncoder</application> and <systemitem class="library">x264</systemitem>?</title>
<para>
  If you have the subversion client installed, the latest x264
  sources can be gotten with this command:
  <screen>
    svn co svn://svn.videolan.org/x264/trunk x264
  </screen>
  <application>MPlayer</application> sources are updated whenever
  an <systemitem class="library">x264</systemitem> API change
  occurs, so it is always suggested to use CVS
  <application>MPlayer</application> as well.
  Perhaps this situation will change when and if an
  <systemitem class="library">x264</systemitem> "release" occurs.
  Meanwhile, <systemitem class="library">x264</systemitem> should
  be considered very unstable, in the sense that its programming
  interface is subject to change.
</para>
<para>
  <systemitem class="library">x264</systemitem> is built and
  installed in the standard way:
  <screen>
    ./configure &amp;&amp; make &amp;&amp; sudo make install
  </screen>
  This installs libx264.a in /usr/local/lib and x264.h is placed in
  /usr/local/include.

  With the <systemitem class="library">x264</systemitem> library
  and header placed in the standard locations, building
  <application>MPlayer</application> with
  <systemitem class="library">x264</systemitem> support is easy.
  Just run the standard:
  <screen>./configure &amp;&amp; make &amp;&amp; sudo make install</screen>
  The configure script will autodetect that you have satisfied the
  requirements for <systemitem class="library">x264</systemitem>.
</para>
</sect4>
</sect3>
</sect2>

<!-- ********** -->

<sect2 id="audio-codecs">
<title>Аудио кодеки</title>

<itemizedlist>
<title>Наиболее важными аудио кодеками среди всех являются:</title>
<listitem><simpara>
  MPEG layer 1/2/3 (MP1/2/3) аудио (<emphasis role="bold">"родной"</emphasis>
  код, с MMX/SSE/3DNow! оптимизацией)
  </simpara></listitem>
<listitem><simpara>
  Windows Media Audio 7 и 8 (aka WMAv1 и WMAv2) (<emphasis role="bold">"родной"</emphasis> код, с
  <link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>)
  </simpara></listitem>
<listitem><simpara>
  Windows Media Audio 9 (WMAv3) (используя DMO DLL)
  </simpara></listitem>
<listitem><simpara>
  AC3 Dolby аудио (<emphasis role="bold">"родной"</emphasis> код, с
  MMX/SSE/3DNow! оптимизацией)
  </simpara></listitem>
<listitem><simpara>
  AC3 проходящий через звуковое оборудование
  </simpara></listitem>
<listitem><simpara>
  AAC
  </simpara></listitem>
<listitem><simpara>
  Ogg Vorbis аудио кодек (<emphasis role="bold">родная</emphasis> библиотека)
  </simpara></listitem>
<listitem><simpara>
  RealAudio: DNET (AC3 с низким битпотоком), Cook, Sipro и ATRAC3
  </simpara></listitem>
<listitem><simpara>
  QuickTime: Qualcomm и QDesign аудио кодеки
  </simpara></listitem>
<listitem><simpara>
  VIVO аудио (g723, Vivo Siren)
  </simpara></listitem>
<listitem><simpara>
  Voxware аудио (используя DirectShow DLL)
  </simpara></listitem>
<listitem><simpara>
  alaw и ulaw, различные gsm, adpcm и pcm форматы и другие простые старые аудио
  кодеки
  </simpara></listitem>
</itemizedlist>


<sect3 id="swac3">
<title>Программное декодирование AC3</title>

<para>
Это декодер, используемый, по умолчанию, для файлов с AC3 аудио
</para>

<para>
Декодер AC3 может создавать аудио вывод микшированный для 2, 4 или 6 колонок.
Будучи сконфигурированным для 6 колонок, этот декодер предоставляет раздельный
вывод всех AC3 каналов звуковому драйверу, позволяя получить "звук вокруг"
без внешнего AC3 декодера, необходимого для использования hwac3 кодека.
</para>

<para>
Используйте опцию <option>-channels</option>, чтобы выбрать количество каналов
при выводе. Используйте <option>-channels 2</option> для микширования до стерео.
Для микширования до 4 каналов (выводы Left Front[Левый Передний], Right Front
[Правый передний], Left Surround[Левый Задний] и Right Surround[Правый Задний]),
используйте <option>-channels 4</option>. В этом случае все центральные каналы
будут смикшированы до уровня передних каналов. <option>-channels 6</option> будет
выводить все AC3 каналы так, как они закодированы - по порядку:
Left[Левый], Right[Правый], Left Surround[Левый Задний], Right Surround[Правый
Задний], Center[Центральный] и LFE.
</para>

<para>
Количество каналов по умолчанию - 2.
</para>

<para>
Чтобы использовать более 2 каналов, Вам нужно использовать OSS, и обладать
карточкой, поддерживающей необходимое количество каналов через ioctl
SNDCTL_DSP_CHANNELS.  Примером подходящего драйвера является emu10k1
(используется для Soundblaster Live! карточек) августа 2001'ого или новее
(ALSA CVS тоже должен работать).
</para>
</sect3>


<sect3 id="hwac3">
<title>Аппаратное декодирование AC3</title>
<para>
Вам нужна AC3-совместимая карта с цифровым (S/PDIF) выводом. Драйвер карты
должен должным образом поддерживать AFMT_AC3 формат (например C-Media).
Подсоедините AC3 декодер к S/PDIF выводу и используйте опцию <option>-ac
hwac3</option>. Это экспериментальная возможность, но известно, что это работает с
C-Media картами и Soundblaster Live! + ALSA (но не OSS) драйверами и
картами MPEG декодирования DXR3/Hollywood+.
</para>
</sect3>


<sect3 id="libmad">
<title>Поддержка libmad</title>

<para>
<ulink url="http://mad.sourceforge.net">libmad</ulink> - это многоплатформенная,
целочисленная (внутренне 24'битный PCM)
библиотека декодирования MPEG аудио. Она не очень хорошо обрабатывает битые
файлы и иногда у неё бывают проблемы с перемещением по файлу.
</para>

<para>
Чтобы включить её поддержку, компилируйте с опцией configure
<option>--enable-mad</option>.
</para>
</sect3>


<sect3 id="vivo-audio">
<title>VIVO аудио</title>
<para>
Аудио кодек, используемый в VIVI файлах зависит от того, это VIVI/1.0 или
VIVI/2.0 файл. В VIVO/1.0 файлах <emphasis role="bold">g.723</emphasis> аудио,
а в VIVO/2.0 файлах - <emphasis role="bold">Vivo Siren</emphasis> аудио. Оба
типа поддерживаются.
</para>
</sect3>


<sect3 id="realaudio">
<title>RealAudio</title>

<para>
<application>MPlayer</application> поддерживает декодирование почти всех версий
RealAudio:
</para>

<itemizedlist>
<listitem><simpara>
  RealAudio DNET - декодирование поддерживается в
  <systemitem class="library">liba52</systemitem>
  </simpara></listitem>
<listitem><simpara>
  RealAudio Cook/Sipro/ATRAC3 - декодирование поддерживается использованием
  <emphasis role="bold">библиотек из RealPlayer'а</emphasis>
  </simpara></listitem>
</itemizedlist>

<para>
Инструкции по установке RealPlayer'овские библиотек находятся в секции
<link linkend="realvideo">RealVideo</link>.
</para>
</sect3>

<sect3 id="qdesign">
<title>QDesign кодеки</title>
<para>
Аудио потоки QDesign (fourcc:<emphasis>QDMC, QDM2</emphasis>) обнаруживаются
в MOV/QT файлах. Обе версии этого кодека могут декодироваться библиотеками
QuickTime. Инструкции по установке см. в секции
<link linkend="sorenson">Sorenson video codec</link>.
</para>
</sect3>

<sect3 id="qualcomm">
<title>Qualcomm кодеки</title>
<para>
Аудио потоки Qualcomm (fourcc:<emphasis>Qclp</emphasis>) обнаруживаются
в MOV/QT файлах. Они могут декодироваться библиотеками QuickTime.
Инструкций по установке см. в секции
<link linkend="sorenson">Sorenson video codec</link>.
</para>
</sect3>

<sect3 id="aac">
<title>AAC кодек</title>
<para>
AAC (Advanced Audio Coding) - это кодек, иногда обнаруживаемый в MOV и MP4
файлах. Декодер с открытым исходным кодом, называемый FAAD, доступен с
<ulink url="http://www.audiocoding.com"/>.
<application>MPlayer</application> включает в себя libfaad 2.0RC1, поэтому
Вам ничего не нужно дополнительно скачивать.
</para>

<para>
Если Вы используете gcc 3.2, который не может скомпилировать встроенный FAAD,
или просто хотите использовать внешнюю библиотеку, скачаете её с 
<ulink url="http://www.audiocoding.com/download.php">страницы скачивания</ulink>
и укажите <filename>configure</filename> <option>--enable-external-faad</option>.
Вам не нужен весь faad2, чтобы декодировать AAC файлы, достаточно libfaad.
Вот как Вы можете её собрать:
<screen>
cd faad2/
chmod +x bootstrap
./bootstrap
./configure
cd libfaad
make
make install
</screen>
Бинарии отсутствуют на audiocoding.com, но вы можете скачать (apt-get) Debian
пакеты с <ulink url="http://marillat.free.fr">домашней страницы Christian Marillat</ulink>,
Mandrake RPM'ники с <ulink url="http://plf.zarb.org">P.L.F</ulink> и RedHat RPM'ники
с <ulink url="http://greysector.rangers.eu.org/">Grey Sector[Серый Сектор]</ulink>.
</para>
</sect3>

</sect2>

<!-- ********** -->

<sect2 id="codec-importing">
<title>КАК извлечь кодек из Win32</title>

<!-- TODO: a short paragraph of text would be nice here... -->

<sect3 id="vfw-codecs">
<title>VFW кодеки</title>

<para>
VFW (Video for Windows[Видео для Windows]) - это старые Видео API для Windows.
У этих кодеков расширения <filename>.DLL</filename> или (реже) <filename>.DRV
</filename>. Если <application>MPlayer</application> не может проигрывать Ваш
AVI с такого рода сообщением:
<screen>UNKNOWN video codec: HFYU (0x55594648)</screen>
</para>

<para>
Это значит, что Ваш AVI закодирован кодеком с fourcc[кодом из 4 символов] HFYU
(HFYU = HuffYUV кодек, DIV3 = DivX Low Motion, и т. п.). Теперь, когда Вы это
знаете, Вы должны найти DLL, которую Windows загружает для проигрывания этого
файла. В нашем случае, в файле <filename>system.ini</filename> есть эта
информация, в этой строке:
<programlisting>VIDC.HFYU=huffyuv.dll</programlisting>
</para>

<para>
Значит, Вам нужен файл <filename>huffyuv.dll</filename>. Заметьте, что аудио
кодеки используют префикс MSACM:
<programlisting>msacm.l3acm=L3codeca.acm</programlisting>
</para>

<para>
Это MP3 кодек. Теперь у Вас есть  вся необходимая информация (fourcc, файл с
кодеком, пример AVI), представьте на рассмотрение запрос о поддержке Вашего
кодека по почте и загрузите эти файлы на FTP сайт:
<systemitem role="url">
ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/
</systemitem>
</para>

<note><para>Под Windows NT/2000/XP ищите эту информацию в реестре, например,
ищите &quot;VIDC.HFYU&quot;. Чтобы узнать, как это делать, см. ниже старый
DirectShow метод.
</para></note>
</sect3>


<sect3 id="dshow-codecs">
<title>DirectShow кодеки</title>

<para>
DirectShow - это более новый Video API, которые даже хуже, чем его предшественник.
Все сложнее с DirectShow, поскольку
<itemizedlist>
<listitem><simpara>
  <filename>system.ini</filename> не содержит необходимую информацию, вместо
  этого она хранится в реестре и 
  </simpara></listitem>
<listitem><simpara>
  нам нужен GUID этого кодека.
  </simpara></listitem>
</itemizedlist>
</para>

<procedure>
<title>Новый Метод:</title>
<para>
Используя <application>Microsoft GraphEdit</application> (быстро)
</para>
<step><para>
  Получите <application>GraphEdit</application> или из DirectX SDK или
  <ulink url="http://doom9.net">doom9</ulink>
  </para></step>
<step><para>
  Запустите <command>graphedit.exe</command>.
  </para></step>
<step><para>
  В меню выберите Graph -> Insert Filters.
  </para></step>
<step><para>
  Щёлкните <systemitem>DirectShow Filters</systemitem>
  </para></step>
<step><para>
  Выберите нужное имя кодека и щёлкните по нему.
  </para></step>
<step><para>
  В поле <systemitem>DisplayName</systemitem> обратите внимание на текст в
  фигурных скобках после обратного слэша и выпишете их (пять разделённых
  дефисами блоков, GUID).
  </para></step>
<step><para>
  Бинарный файл кодека - это файл, указанный в поле <systemitem>Filename</systemitem>.
  </para></step>
</procedure>

<note>
<para>
Если там нет <systemitem>Filename</systemitem> и
<systemitem>DisplayName</systemitem> содержит что-то в духе 
<systemitem>device:dmo</systemitem>, то это - DMO-Кодек.
</para>
</note>

<procedure>
<title>Старый метод:</title>
<para>
Сделайте глубокий вдох и начните искать в регистре...
</para>
<step><para>
  Запустите <command>regedit</command>.
  </para></step>
<step><para>
  Нажмите <keycap>Ctrl</keycap>+<keycap>F</keycap>, отключите первые две галочки
  и включите третью. Наберите fourcc Вашего кодека (например, 
  <userinput>TM20</userinput>).
  </para></step>
<step><para>
  Вы должны увидеть поле, содержащее путь и имя файла (например,
  <filename>C:\WINDOWS\SYSTEM\TM20DEC.AX</filename>).
  </para></step>
<step><para>
  Теперь, когда у Вас есть файл, нам нужен GUID. Попробуйте поискать снова,
  но теперь ищите имя кодека, а не fourcc. Это имя может быть получено,
  когда Media Player проигрывает файл, проверив
  <guimenu>File</guimenu> -&gt; <guisubmenu>Properties</guisubmenu> -&gt;
  <guimenuitem>Advanced</guimenuitem>.
  Если нет, Вам не повезло. Попробуйте угадать (например, ищите TrueMotion).
  </para></step>
<step><para>
  Если GUID найден, Вы должны видеть поля <guilabel>FriendlyName</guilabel>
  и <guilabel>CLSID</guilabel>. Выпишите 16-ти байтовый CLSID, это GUID, который
  нам нужен.
  </para></step>
</procedure>

<note>
<para>
Если поиск не удаётся, попробуйте включить все галочки. Вы можете получить
ложные значения, но Вам может повести...
</para>
</note>

<para>
Теперь у Вас есть  вся необходимая информация (fourcc, GUID, файл с кодеком,
пример AVI), представьте на рассмотрение запрос о поддержке Вашего кодека по
почте и загрузите эти файлы на FTP сайт:
<systemitem
role="url">ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/
</systemitem>
</para>
</sect3>
</sect2>
</sect1>