Merge svn changes up to r28690

This commit is contained in:
Uoti Urpala 2009-02-21 17:39:30 +02:00
commit ebb541c655
25 changed files with 1939 additions and 1909 deletions

View File

@ -11168,7 +11168,7 @@ explains how to create useful bug reports.
MPlayer was initially written by Arpad Gereoffy.
See the AUTHORS file for a list of some of the many other contributors.
.PP
MPlayer is (C) 2000\-2008 The MPlayer Team
MPlayer is (C) 2000\-2009 The MPlayer Team
.PP
This man page was written mainly by Gabucino, Jonas Jermann and Diego Biurrun.
It is maintained by Diego Biurrun.

View File

@ -1,4 +1,4 @@
.\" Synced with r28576
.\" Synced with r28670
.\" MPlayer (C) 2000-2009 MPlayer Team
.\" Ezt a man oldalt Gabucino, Diego Biurrun és Jonas Jermann készíti/készítette
.\" Karbantartó: Gabrov
@ -33,7 +33,7 @@
.\" Név
.\" --------------------------------------------------------------------------
.
.TH MPlayer 1 "2009. 02. 16." "MPlayer Project" "A film lejátszó"
.TH MPlayer 1 "2009. 02. 19." "MPlayer Project" "A film lejátszó"
.
.SH NÉV
mplayer \- film lejátszó
@ -1913,10 +1913,10 @@ L
Beállítja a tunert az <érték> csatornára.
.IPs chanlist=<érték>
elérhető: europe-east, europe-west, us-bcast, us-cable, stb.
.IPs channels=<csatorna>\-<név>[=<norma>],<csatorna>\-<név>[=<norma>],...
.IPs channels=<csat>\-<név>[=<norma>],<csat>\-<név>[=<norma>],...
Csatornák neveinek beállítása.
.I MEGJEGYZÉS:
Ha a <csatorna> 1000-nél nagyobb egész, frekvenciaként lesz értelmezve (kHz-ben)
Ha a <csat> 1000-nél nagyobb egész, frekvenciaként lesz értelmezve (kHz-ben)
a frekvenciatáblázatban szereplő csatornanév helyett.
.br
Használj _ jelet a szóköz helyett a nevekben (vagy játsz az idézőjelezéssel ;-).
@ -3436,6 +3436,11 @@ Vez
.PD 1
.
.TP
.B vdpau (\-vc ffmpeg12vdpau, ffwmv3vdpau, ffvc1vdpau vagy ffh264vdpau kapcsolókkal)
Videó kimenet, ami a VDPAU-t használja a videó hardveres dekódolásához.
Támogatja a szoftveresen dekódolt videó megjelenítését is.
.
.TP
.B xvmc (csak X11 \-vc ffmpeg12mc kapcsolóval)
Videó kimeneti vezérlő ami az XFree86 4.x XvMC (X Video Motion Compensation)
kiterjesztését használja az MPEG-1/2 és VCR2 dekódolás gyorsításához.
@ -11194,7 +11199,7 @@ le
Az MPlayert eredetileg Gereöffy Árpád írta.
Lásd az AUTHORS fájlt a többi közreműködő listájához.
.PP
MPlayer (C) 2000\-2008 Az MPlayer Csapat
MPlayer (C) 2000\-2009 Az MPlayer Csapat
.PP
Ezt a man oldalt nagyrészt Gabucino, Jonas Jermann és Diego Biurrun írta.
A karbantartó Diego Biurrun.

View File

@ -2,7 +2,7 @@
.\" This man page was/is done by Gabucino, Diego Biurrun, Jonas Jermann
.\" Translated by Vladimir Voroshilov <voroshil@gmail.com>
.\" Encoding: koi8-r
.\" synced with r28645
.\" synced with r28670
.
.\" --------------------------------------------------------------------------
.\" Определения макросов
@ -11485,7 +11485,7 @@ rar p test\-SVCD.rar | mencoder \-ovc lavc \-lavcopts vcodec=mpeg4:vbitrate=800
MPlayer изначально был написан Arpad Gereoffy.
Смотрите файл AUTHORS, чтобы получить список некоторых из множества других разработчиков.
.PP
MPlayer is (C) 2000\-2008 The MPlayer Team
MPlayer is (C) 2000\-2009 The MPlayer Team
.PP
Оригинальная английская версия этого руководства в основном была написана Gabucino,
Jonas Jermann и Diego Biurrun. Сейчас она поддерживается Diego Biurrun.

View File

@ -220,7 +220,7 @@ libao2 drivers:
* ao_oss.c - None
* ao_pcm.c - None
* ao_plugin.c - None
* ao_pulse.c - Reimar Döffinger
* ao_pulse.c - None
* ao_sdl.c - None
* ao_sgi.c - None
* ao_sun.c - None

View File

@ -6,6 +6,14 @@ Note: before start on this, read colorspaces.txt !
The constants for different pixelformats are defined in img_format.h,
their usage is mandatory.
WARNING: Please keep in mind that some of this information may be out-dated,
so if you are working on a new vo, consider submitting preliminary patches
very early on. Currently vo_gl is one of the more up-to-date VOs to use
as reference if you are unsure about something and do not want to ask on the
list.
vo_vdpau and vo_direct3d may be a good choice, too, they use different
approaches closer to the sometimes convoluted way DirectX works.
Each vo driver _has_ to implement these:
preinit():
@ -15,7 +23,9 @@ Each vo driver _has_ to implement these:
Uninit the whole system, this is on the same "level" as preinit.
control():
Current controls:
Current controls (VOCTRL_QUERY_FORMAT must be implemented,
VOCTRL_DRAW_IMAGE, VOCTRL_FULLSCREEN, VOCTRL_UPDATE_SCREENINFO
should be implemented):
VOCTRL_QUERY_FORMAT - queries if a given pixelformat is supported.
It also returns various flags decsirbing the capabilities
of the driver with teh given mode. for the flags, see
@ -64,7 +74,37 @@ Each vo driver _has_ to implement these:
by drivers which use X11, except SDL, as well as directx and
gl2 under Windows.
VOCTRL_BORDER
Makes the player window borderless. Only supported by directx.
Makes the player window borderless.
VOCTRL_FULLSCREEN
Switch from and to fullscreen mode
VOCTRL_GET_PANSCAN
VOCTRL_SET_PANSCAN
Needed to implement pan-scan support ('w' and 'e' keys during
playback in fullscreen mode)
VOCTRL_START_SLICE
Called before the first draw_slice of each frame, useful if
you need to do some set-up work.
VOCTRL_DRAW_EOSD
Required for EOSD (ASS subtitle) support. Provides all
information necessary to draw the EOSD for the current video
frame.
VOCTRL_GET_EOSD_RES
Required for EOSD (ASS subtitle) support. Informs the ASS
renderer about the properties of the drawing area (size,
borders).
VOCTRL_SET_DEINTERLACE
VOCTRL_GET_DEINTERLACE
Get or set deinterlacing status for VOs that support some kind
of deinterlacing.
VOCTRL_UPDATE_SCREENINFO
Should set the xinerama_x, xinerama_y, vo_screenwidth and
vo_screenheight appropriately for the currently used
monitor and -xineramascreen option.
Usually should simply call the w32_update_xinerama_info or
update_xinerama_info function.
By supporting this, the VO also requests the newer API
that sets vo_dx, vo_dy etc. appropriately before config()
is called.
config():
Set up the video system. You get the dimensions and flags.
@ -86,25 +126,22 @@ Each vo driver _has_ to implement these:
So, you can check for vo_config_count>0 in uninit() when freeing
resources allocated in config() to avoid crash!
You should call geometry() in config() to enable user defined
window size and position. The code should look as following:
---
set x,y,w,h to the values supplied by the caller or to those you deam
useful.
call geometry(&x, &y, &w, &h, screenw, screenh)
call aspect()
---
see libvo/geometry.c for further information
You should implement VOCTRL_UPDATE_SCREENINFO so that vo_dx, vo_dy,
vo_dwidth and vo_dheight are already pre-set to values that take
aspect and -geometry into account. It is also necessary to properly
support multi-monitor setups (if based on x11_common, w32_common).
draw_slice(): this displays YV12 pictures (3 planes, one full sized that
contains brightness (Y), and 2 quarter-sized which the colour-info
(U,V). MPEG codecs (libmpeg2, opendivx) use this. This doesn't have
to display the whole frame, only update small parts of it.
If this is not supported, it must be signaled in QUERY_FORMAT with
VOCAP_NOSLICES.
draw_frame(): this is the older interface, this displays only complete
frames, and can do only packed format (YUY2, RGB/BGR).
Win32 codecs use this (DivX, Indeo, etc).
If you implement VOCTRL_DRAW_IMAGE, you can left draw_frame.
If you implement VOCTRL_DRAW_IMAGE, you do not need to implement draw_frame.
draw_osd(): this displays subtitles and OSD.
It's a bit tricky to use it, since it's a callback-style stuff.
@ -113,11 +150,25 @@ Each vo driver _has_ to implement these:
The vo_draw_text() checks the characters to draw, and calls
draw_alpha() for each. As a help, osd.c contains draw_alpha for
each pixelformats, use this if possible!
Note that if you do not draw directly onto the video you should
use vo_draw_text_ext() which allows you to specify the border
values etc. needed to draw DVD menu highlights at the correct place.
If you do not want to implement this, you can still use -vf
expand=osd=1 to draw the OSD, or even implement code to insert
this filter automatically.
Make sure you set VFCAP_OSD depending on whether you implemented it
or not.
NOTE: This one will be obsolete soon! But it's still useful when
you want to do tricks, like rendering osd _after_ hardware scaling
(tdfxfb) or render subtitles under of the image (vo_mpegpes, sdl)
flip_page(): this is called after each frame, this diplays the buffer for
real. This is 'swapbuffers' when doublebuffering.
NOTE2: above NOTE is probably wrong, there are currently no plans to
obsolete draw_osd, though there is the more advanced EOSD support for
ASS subtitles.
flip_page(): this is called after each frame, this displays the buffer for
real. This is 'swapbuffers' when doublebuffering.
Try to do as little work here as possible, since that affect jitter/
A-V sync.

View File

@ -693,10 +693,10 @@ you have to use <option>-ao alsa:device=dmix</option>.
I have no sound when playing a video and get error messages similar to this one:
<screen>
AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian)
audio_setup: Can't open audio device /dev/dsp: Device or resource busy
couldn't open/init audio device -> NOSOUND
Audio: no sound!!!
Start playing...
[AO OSS] audio_setup: Can't open audio device /dev/dsp: Device or resource busy
Could not open/initialize audio device -> no sound.
Audio: no sound
Starting playback...
</screen>
</para></question>
<answer><para>
@ -742,7 +742,7 @@ try to play a file which has 22050Hz audio. Try the
When I play this movie I get video-audio desync and/or
<application>MPlayer</application> crashes with the following message:
<screen>
DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!
Too many (945 in 8390980 bytes) video packets in the buffer!
</screen>
</para></question>
<answer><para>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r28593 -->
<!-- synced with r28615 -->
<appendix id="bugreports">
<title>Hogyan jelentsd a hibákat</title>
@ -111,6 +111,8 @@ spórolsz, ha vissza kell lépned.
(Általában le kell futtatni a 'make distclean'-t egy régi verzió újrafordítása
előtt, így ha nem készítesz mentést az eredeti forrás fádról, újra kell fordítanod
mindent, ha visszajössz a jelenbe.)
Alternatívaként használhatod a <ulink url="http://ccache.samba.org/">ccache</ulink>-t
a fordítás felgyorsítására.
</para>
<para>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r28531 -->
<!-- synced with r28660 -->
<chapter id="faq" xreflabel="FAQ">
<title>Gyakran ismételt kérdések</title>
@ -692,10 +692,10 @@ használd a <option>-ao alsa:device=dmix</option> kapcsolót.
Nincs hang videó lejátszása közben, és egy ehhez hasonló üzenetet kapok:
<screen>
AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian)
audio_setup: Can't open audio device /dev/dsp: Device or resource busy
couldn't open/init audio device -> NOSOUND
Audio: no sound!!!
Start playing...
[AO OSS] audio_setup: Can't open audio device /dev/dsp: Device or resource busy
Could not open/initialize audio device -> no sound.
Audio: no sound
Starting playback...
</screen>
</para></question>
<answer><para>
@ -743,7 +743,7 @@ Hibás hang kártyád/vezérlőd van. Legvalószínűbb, hogy rögzítve van 441
Amikor filmet játszok le, szétesik a videó-audió szinkron
és/vagy az <application>MPlayer</application> összeomlik ezzel az üzenettel:
<screen>
DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!
Too many (945 in 8390980 bytes) video packets in the buffer!
</screen>
</para></question>
<answer><para>

View File

@ -39,7 +39,7 @@
</para>
<para>
Если используется эмуляция SCSI, вам следует применять настройки к реальному IDE
Если используется эмуляция SCSI, Вам следует применять настройки к реальному IDE
устройству, а не сэмулированному SCSI.
</para>
@ -157,14 +157,14 @@
Приводы, реализующие региональную защиту исключительно при помощи
программного обеспечения, известны как RPC-1 приводы, реализующие ее
аппаратно &mdash; RPC-2. RPC-2 приводы позволяют пять раз изменить код региона,
после чего он фиксируется навсегда. В Linux вы можете воспользоваться
после чего он фиксируется навсегда. В Linux Вы можете воспользоваться
утилитой <ulink url="http://linvdr.org/projects/regionset/">regionset</ulink>
для установки регионального кода вашего DVD привода.
для установки регионального кода Вашего DVD привода.
</para>
<para>
К счастью, возможна переделка RPC-2 приводов в RPC-1, через
обновление прошивки. Укажите модель вашего DVD привода в вашем любимом
обновление прошивки. Укажите модель Вашего DVD привода в Вашем любимом
поисковике или посмотрите на форуме и разделах загрузок на
<ulink url="http://www.rpc1.org/">"Странице прошивок"</ulink>.
Хотя обычные предостережения, касающиеся обновления прошивки, остаются в силе,

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r25566 -->
<!-- synced with r28266 -->
<bookinfo id="toc">
<title><application>MPlayer</application> - The Movie Player</title>
<title><application>MPlayer</application> - Медиа Проигрыватель</title>
<subtitle><ulink url="http://www.mplayerhq.hu"></ulink></subtitle>
<date>March 24, 2003</date>
<date>24 Марта, 2003</date>
<copyright>
<year>2000</year>
<year>2001</year>
@ -16,7 +16,7 @@
<year>2007</year>
<year>2008</year>
<year>2009</year>
<holder>команда MPlayer[MPlayer team]</holder>
<holder>MPlayer team</holder>
</copyright>
<legalnotice>
<title>License</title>
@ -41,19 +41,17 @@
<title>Как читать эту документацию</title>
<para>
Если Вы инсталлируете программу в первый раз, прочитайте все от начала до конца
в секции "Установка", и просматривайте ссылки, которые Вы обнаружите.
Если Вы инсталлируете программу в первый раз, прочитайте все от начала до конца
секции "Установка", и просматривайте ссылки, которые Вы обнаружите.
Если у Вас все ещё остались
вопросы, вернитесь к <link linkend="toc">Оглавлению</link> и поищите там,
вопросы, вернитесь к <link linkend="toc">Оглавлению</link> и поищите там,
прочтите <xref linkend="faq"/>, или попытайтесь про'grep'пить файлы.
На большую часть вопросов Вы найдёте ответы здесь, а остальные, наверное, уже
спрашивались в наших
<ulink url="http://www.mplayerhq.hu/design7/mailing_lists.html">рассылках</ulink>.
<!-- FIXME: This refers to nonexistent links
спрашивались в наших
<ulink url="http://www.mplayerhq.hu/design7/mailing_lists.html">рассылках</ulink>.
Проверьте
<ulink url="http://lists.mplayerhq.hu/cgi-bin/s-arch.cgi">по архивам</ulink>, в
<ulink url="https://lists.mplayerhq.hu/mailman/listinfo">по архивам</ulink>, в
которых можно найти много ценной информации.
-->
</para>
</preface>
@ -62,109 +60,106 @@
<title>Введение</title>
<para>
<application>MPlayer</application> - это проигрыватель фильмов для LINUX'а
(работает на многих других UNIX'ах и <emphasis role="bold">не-x86</emphasis>
<application>MPlayer</application> &mdash; это проигрыватель фильмов для LINUX'а
(работает на многих других UNIX'ах и не-x86
CPU, см. <xref linkend="ports"/>). Он проигрывает большинство MPEG, VOB, AVI,
OGG/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, FLI, RM, NuppelVideo, yuv4mpeg, FILM,
RoQ, PVA, Matroska файлов, опираясь на множество "родных", XAnim'овских, RealPlayer'овских, и
Win32 DLL кодеков. Вы также можете смотреть <emphasis role="bold">VideoCD, SVCD,
DVD, 3ivx, RealMedia, Sorenson, Theora</emphasis>, и
<emphasis role="bold">DivX</emphasis> фильмы. Другой важной особенностью
Ogg/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, FLI, RM, NuppelVideo, yuv4mpeg, FILM,
RoQ, PVA, Matroska файлов, опираясь на множество "родных", XAnim'овских,
RealPlayer'овских и Win32 DLL кодеков. Вы также можете смотреть VideoCD, SVCD,
DVD, 3ivx, RealMedia, Sorenson, Theora, и MPEG-4 (DivX) фильмы.
Другой важной особенностью
<application>MPlayer</application>'а является широкий спектр поддерживаемых
устройств вывода. Он работает с X11, Xv, DGA, OpenGL, SVGAlib,
fbdev, AAlib, libcaca, DirectFB, и кроме того Вы можете
использовать GGI and SDL (и таким образом все их драйверы) и также несколько
низкоуровневых драйверов для конкретных карт (для Matrox, 3Dfx and Radeon,
низкоуровневых драйверов для конкретных карт (для Matrox, 3Dfx и Radeon,
Mach64, Permedia3)! Большинство из них поддерживают программное или аппаратное
масштабирование, поэтому Вы можете насладиться просмотром фильма на полном
экране.<application>MPlayer</application> поддерживает некоторые аппаратные
MPEG декодеры, такие как <link linkend="dvb">DVB</link> и
<link linkend="dxr3">DXR3/Hollywood+</link>. А как насчёт славных больших
сглаженных затенённых субтитров (<emphasis role="bold">14 поддерживаемых
типов</emphasis>) с Европейскими/ISO 8859-1,2 (венгерский, английский, чешский,
и т. п.), кириллическими, корейскими шрифтами, и вывода информации на экран
сглаженных затенённых субтитров (14 поддерживаемых
типов) с Европейскими/ISO 8859-1,2 (венгерский, английский, чешский,
и т.п.), кириллическими, корейскими шрифтами и вывода информации на экран
[On Screen Display (OSD)]?
</para>
<para>
Плеер без проблем проигрывает повреждённые MPEG файлы (полезно для некоторых VCD),
плохие AVI файлы, которые не проигрываются известным
windows media player. Даже AVI файлы без индекса являются проигрываемыми.
Вы можете временно сделать индекс с помощью ключа <option>-idx</option>, или
плохие AVI файлы, которые не проигрываются известным
<application>Windows Media Player</application>.
Даже AVI файлы без индекса являются проигрываемыми.
Вы можете временно сделать индекс с помощью ключа <option>-idx</option> или
перманентно с помощью <application>MEncoder</application>'а,
таким образом получив возможность перемещаться
по фильму! Как видите стабильность и качество - наиболее важные вещи,
но скорость также изумительна. Кроме того у него мощная
система плагинов для манипуляции видео.
по фильму! Как видите стабильность и качество &mdash; наиболее важные вещи,
но скорость также изумительна. Кроме того имеется мощная
система фильтров для манипуляции с видео и аудио.
</para>
<para>
<application>MEncoder</application> (Кодировщик фильмов <application>MPlayer
</application>'a [<application>MPlayer</application>'s Movie Encoder]) - это простой
</application>'a) &mdash; это простой
кодировщик фильмов предназначенный для кодирования фильмов, проигрываемых MPlayer'ом
(<emphasis role="bold">AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA</emphasis>) в другие
AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA в другие
проигрываемые <application>MPlayer</application>'ом форматы (см. ниже).
Он может кодировать такими разными кодеками, как
<emphasis role="bold">MPEG-4 (DivX4)</emphasis> (1 или 2 прохода),
MPEG-4 (DivX4) (1 или 2 прохода),
<systemitem class="library">libavcodec</systemitem>,
<emphasis role="bold">PCM/MP3/VBR MP3</emphasis> звук.
PCM/MP3/VBR MP3 звук.
</para>
<itemizedlist>
<title>Возможности <application>MEncoder</application>'а</title>
<listitem><para>
кодирование из широкого спектра форматов файлов и декодеров
Кодирование из широкого спектра форматов файлов и декодеров
<application>MPlayer'а</application>
</para></listitem>
<listitem><para>
кодирование во все кодеки FFmpeg'овской библиотеки
Кодирование во все кодеки FFmpeg'овской библиотеки
<systemitem class="library">libavcodec</systemitem>
</para></listitem>
<listitem><para>
кодирование видео с <emphasis role="bold">V4L совместимых TV тюнеров
</emphasis>
Кодирование видео с V4L совместимых TV тюнеров
</para></listitem>
<listitem><para>
кодирование/мультиплексирование в "слоёные"[interleaved] AVI файлы
Кодирование/мультиплексирование в "слоёные"[interleaved] AVI файлы
с соответствующим индексом
</para></listitem>
<listitem><para>
создание файлов с аудио потоком из внешнего файла
Создание файлов с аудио потоком из внешнего файла
</para></listitem>
<listitem><para>
кодирование в 1, 2 или 3 прохода
Кодирование в 1, 2 или 3 прохода
</para></listitem>
<listitem><para>
<emphasis role="bold">VBR</emphasis> MP3 аудио
<important><para>
VBR MP3 аудио не всегда хорошо проигрывается плеерами Windows!
</para></important>
</para></listitem>
<listitem><para>
PCM аудио
</para></listitem>
<listitem><para>
копирование потоков
Копирование потоков
</para></listitem>
<listitem><para>
входная A/V синхронизация (основана на PTS, может быть отключена с помощью
Входная A/V синхронизация (основана на PTS, может быть отключена с помощью
ключа <option>-mc 0</option> )
</para></listitem>
<listitem><para>
коррекция FPS[кадров/сек] ключом <option>-ofps</option> (полезно при кодировании
29.97fps VOB в 24fps AVI)
Коррекция FPS[кадров/сек] ключом <option>-ofps</option> (полезно при кодировании
30000/1001 fps VOB в 24000/1001 fps AVI)
</para></listitem>
<listitem><para>
использование нашей очень мощной системы плагинов (обрезание[crop],
Использование нашей очень мощной системы плагинов (обрезание[crop],
расширение[expand], отражение[flip], пост-обработка[postprocess],
поворот[rotate], масштабирование[scale], rgb/yuv преобразования)
поворот[rotate], масштабирование[scale], RGB/YUV преобразования)
</para></listitem>
<listitem><para>
может кодировать DVD/VOBsub <emphasis role="bold">И</emphasis> текстовые субтитры
Может кодировать DVD/VOBsub и текстовые субтитры
в один выходной файл
</para></listitem>
<listitem><para>
может извлекать DVD субтитры в VOBsub формат
Может извлекать DVD субтитры в VOBsub формат
</para></listitem>
</itemizedlist>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r24035 -->
<!-- synced with r28660 -->
<chapter id="faq" xreflabel="FAQ">
<title>Часто Задаваемые вопросы</title>
@ -13,7 +13,7 @@
Как создать правильный патч для <application>MPlayer</application>?
</para></question>
<answer><para>
Мы создали <ulink url="../../tech/patches.txt">краткий документ</ulink>
Мы создали <ulink url="../../tech/patches.txt">краткий документ</ulink> (англ.),
описывающий все необходимые детали. Пожалуйста, следуйте инструкциям.
</para></answer>
</qandaentry>
@ -24,7 +24,7 @@
</para></question>
<answer><para>
Прочитайте <ulink url="../../tech/translations.txt">HOWTO по переводу</ulink> (англ.),
там все описано. За дополнительной помощью вы можете обратиться в рассылку
там все описано. За дополнительной помощью Вы можете обратиться в рассылку
<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-translations">MPlayer-translations</ulink>.
</para></answer>
</qandaentry>
@ -34,9 +34,9 @@
Как можно помочь развитию <application>MPlayer</application>?
</para></question>
<answer><para>
Мы будем более чем счастливы принять
Мы будем более чем счастливы принять
<ulink url="http://www.mplayerhq.hu/donations.html">пожертвования</ulink> оборудованием
и программным обеспечением. Они позволяют нам постоянно улучшать
и программным обеспечением. Они позволяют нам постоянно улучшать
<application>MPlayer</application>.
</para></answer>
</qandaentry>
@ -48,21 +48,21 @@
<answer><para>
Мы всегда рады приветствовать людей, занимающихся написанием кода и документации.
Для начала прочтите <ulink url="../../tech/">техническую документацию</ulink> (англ.).
Затем вам следует подписаться на список рассылки
Затем Вам следует подписаться на список рассылки
<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">MPlayer-dev-eng</ulink>
и начать написание кода. Если вы хотите помочь с документацией, то подпишитесь на
и начать написание кода. Если Вы хотите помочь с документацией, то подпишитесь на
<ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-docs">MPlayer-docs</ulink>.
</para></answer>
</qandaentry>
<qandaentry>
<question><para>
Почему вы не используете autoconf/automake?
Почему Вы не используете autoconf/automake?
</para></question>
<answer><para>
У нас есть модульная, написанная вручную система сборки. Она хорошо справляется
со своей работой, зачем же ее менять? Кроме того, нам, как и
<ulink url="http://freshmeat.net/articles/view/889/">некоторым другим</ulink>, не нравятся
У нас есть модульная, написанная вручную система сборки. Она хорошо справляется
со своей работой, зачем же ее менять? Кроме того, нам, как и
<ulink url="http://freshmeat.net/articles/view/889/">некоторым другим</ulink>, не нравятся
auto* утилиты.
</para></answer>
</qandaentry>
@ -75,17 +75,17 @@ auto* утилиты.
<qandaentry>
<question><para>
Компиляция завершается с ошибкой и <application>gcc</application> вываливается
с загадочным сообщением, содержащим фразу
с загадочным сообщением, содержащим фразу
<systemitem>internal compiler error</systemitem> или
<systemitem>unable to find a register to spill</systemitem> или
<systemitem>can't find a register in class 'GENERAL_REGS'
<systemitem>can't find a register in class 'GENERAL_REGS'
while reloading 'asm'</systemitem>.
</para></question>
<answer><para>
Вы столкнулись с ошибкой в <application>gcc</application>. Пожалуйста,
Вы столкнулись с ошибкой в <application>gcc</application>. Пожалуйста,
<ulink url="http://gcc.gnu.org/bugs.html">сообщите об этом разработчикам gcc</ulink>
но не нам. В силу некоторых причин <application>MPlayer</application>, похоже,
часто вызывает ошибки компилятора. Тем не менее, мы не можем их исправить, но и
но не нам. В силу некоторых причин <application>MPlayer</application>, похоже,
часто вызывает ошибки компилятора. Тем не менее, мы не можем их исправить, но и
добавлять специальный код для обхода ошибок компилятора не будем.
Чтобы избежать этой проблемы, либо используйте надежную и стабильную версию компилятора, либо
часто обновляйтесь.
@ -115,7 +115,7 @@ while reloading 'asm'</systemitem>.
<qandaentry>
<question><para>
Configure завершается с указанным сообщением, и <application>MPlayer</application>
Configure завершается с указанным сообщением, и <application>MPlayer</application>
не компилируется!
<screen>Your gcc does not support even i386 for '-march' and '-mcpu'</screen>
</para></question>
@ -127,7 +127,7 @@ Configure завершается с указанным сообщением, и
<qandaentry>
<question><para>
Я имею Matrox G200/G400/G450/G550, как мне скомпилировать/использовать
Я имею Matrox G200/G400/G450/G550, как мне скомпилировать/использовать
<systemitem>mga_vid</systemitem> драйвер?
</para></question>
<answer><para>
@ -137,13 +137,13 @@ Configure завершается с указанным сообщением, и
<qandaentry>
<question><para>
На этапе 'make', <application>MPlayer</application> жалуется на отсутствующие
На этапе 'make', <application>MPlayer</application> жалуется на отсутствующие
библиотеки X11. Я не понимаю, ведь X11 у меня <emphasis>установлен</emphasis>!?
</para></question>
<answer><para>
... но вы не имеете установленных пакетов разработки X11. Либо они установлены
некорректно. Они называются <filename>XFree86-devel*</filename> в Red Hat,
<filename>xlibs-dev</filename> в Debian Woody и
... но Вы не имеете установленных пакетов разработки X11. Либо они установлены
некорректно. Они называются <filename>XFree86-devel*</filename> в Red Hat,
<filename>xlibs-dev</filename> в Debian Woody и
<filename>libx11-dev</filename> в Debian Sarge. Также проверьте существуют ли
символические ссылки <filename class="directory">/usr/X11</filename> и
<filename class="directory">/usr/include/X11</filename>.
@ -152,7 +152,7 @@ Configure завершается с указанным сообщением, и
<qandaentry>
<question><para>
Сборка в Mac OS 10.3 приводит к нескольким ошибкам линковки
Сборка в Mac OS 10.3 приводит к нескольким ошибкам линковки.
</para></question>
<answer>
<para>
@ -162,13 +162,13 @@ ld: Undefined symbols:
_LLCStyleInfoCheckForOpenTypeTables referenced from QuartzCore expected to be defined in ApplicationServices
_LLCStyleInfoGetUserRunFeatures referenced from QuartzCore expected to be defined in ApplicationServices
</screen>
Эта проблема - результат разработчиков Apple, использующих 10.4 для компиляции их программ и
Эта проблема &mdash; результат разработчиков Apple, использующих 10.4 для компиляции их программ и
распространяющих бинарники пользователям 10.3 через Software Update.
Неопределённые символы присутствуют в 10.4, но их нет в 10.3.
Одно из решений - откат QuickTime до версии 7.0.1, но есть и лучшее.
Одно из решений &mdash; откат QuickTime до версии 7.0.1, но есть и лучшее.
</para>
<para>
Загрузите
Загрузите
<ulink url="http://rapidshare.de/files/20281171/CompatFrameworks.tgz.html">более старую версию фреймворка</ulink>.
Вы получите архив, содержащий фреймворк QuickTime 7.0.1 и QuartzCore 10.3.9.
</para>
@ -177,15 +177,15 @@ _LLCStyleInfoGetUserRunFeatures referenced from QuartzCore expected to be define
в. <filename class="directory">/System/Library/Frameworks</filename>!
Эта старая копия нужна только для решения проблем с линковкой!)
<screen>gunzip &lt; CompatFrameworks.tgz | tar xvf -</screen>
В config.mak следует добавить
В config.mak следует добавить
<systemitem>-F/path/to/where/you/extracted</systemitem>
к переменной <systemitem>OPTFLAGS</systemitem>.
При использвании <application>X-Code</application> вы можете просто выбрать эти фреймворки
При использовании <application>X-Code</application> Вы можете просто выбрать эти фреймворки
вместо системных.
</para>
<para>
Получившийся бинарный <application>MPlayer</application> будет использовать фреймворк,
установленный в вашей системе, используя динамические ссылки времени исполнения.
установленный в Вашей системе, используя динамические ссылки времени исполнения.
(Это можно проверить, запустив <systemitem>otool -l</systemitem>).
</para>
</answer>
@ -209,11 +209,11 @@ _LLCStyleInfoGetUserRunFeatures referenced from QuartzCore expected to be define
<qandaentry>
<question><para>
Я обнаружил неприятную ошибку, появляющуюся при просмотре моего любимого фильма!
Я обнаружил неприятную ошибку, появляющуюся при просмотре моего любимого фильма!
Кому мне следует сообщить об этом?
</para></question>
<answer><para>
Прочтите
Прочтите
<link linkend="bugreports">руководство по составлению отчетов об ошибках</link>
и следуйте инструкциям.
</para></answer>
@ -221,24 +221,26 @@ _LLCStyleInfoGetUserRunFeatures referenced from QuartzCore expected to be define
<qandaentry>
<question><para>
у меня проблемы с проигрыванием файлов ... кодеком. Можно ли его использовать?
У меня происходит дамп ядра при попытке создать дамп потоков, что
не так?
</para></question>
<answer><para>
Проверьте <ulink url="../../codecs-status.html">состояние кодеков</ulink>,
если его там нет, то прочтите
<ulink url="../../tech/win32-codec-howto">HOWTO по импортированию кодеков</ulink>, и
свяжитесь с нами.
Не паникуйте. Убедитесь, что знаете где Ваше полотенце.</para>
<para>
Серьёзно, обратите внимание на смайлик и ищите файлы,
оканчивающиеся на
<filename>.dump</filename>.
</para></answer>
</qandaentry>
<qandaentry>
<question><para>
В начале воспроизведения появляется следующее сообщение, хотя все
В начале воспроизведения появляется следующее сообщение, хотя все
вроде бы работает прекрасно:
<screen>Linux RTC init: ioctl (rtc_pie_on): Permission denied</screen>
<screen>Ошибка инициализации Linux RTC в ioctl (rtc_pie_on): Permission denied</screen>
</para></question>
<answer><para>
Чтобы использовать RTC тайминг, вам необходимо специально настроенное ядро.
Чтобы использовать RTC тайминг, Вам необходимо специально настроенное ядро.
Подробности ищите в разделе <link linkend="rtc">RTC</link>.
</para></answer>
</qandaentry>
@ -248,15 +250,15 @@ _LLCStyleInfoGetUserRunFeatures referenced from QuartzCore expected to be define
Как сделать скриншот??
</para></question>
<answer><para>
Чтобы иметь возможность сделать скриншот, Вы должны использовать драйвер
Чтобы иметь возможность сделать скриншот, Вы должны использовать драйвер
вывода видео, который не использует оверлей.
В X11 это <option>-vo x11</option>, в Windows используйте
В X11 это <option>-vo x11</option>, в Windows используйте
<option>-vo directx:noaccel</option>.
</para>
<para>
Есть и другой способ. Запустите <application>MPlayer</application> с видео фильтром
<systemitem>screenshot</systemitem>
(<option>-vf screenshot</option>), и нажмите клавишу <keycap>s</keycap> для
(<option>-vf screenshot</option>), и нажмите клавишу <keycap>s</keycap> для
создания скриншота.
</para></answer>
</qandaentry>
@ -285,7 +287,7 @@ A: 2.1 V: 2.2 A-V: -0.167 ct: 0.042 57/57 41% 0% 2.6% 0 4 49% 1.00x
</varlistentry>
<varlistentry>
<term><systemitem>ct: 0.042</systemitem></term>
<listitem><para>сделано коррекций A-V синхронизации</para></listitem>
<listitem><para>итоговая выполненная коррекция A-V синхронизации</para></listitem>
</varlistentry>
<varlistentry>
<term><systemitem>57/57</systemitem></term>
@ -315,14 +317,14 @@ A: 2.1 V: 2.2 A-V: -0.167 ct: 0.042 57/57 41% 0% 2.6% 0 4 49% 1.00x
<varlistentry>
<term><systemitem>4</systemitem></term>
<listitem><para>
текущий уровень постпроцессинга (при использовании
текущий уровень постобработки (при использовании
<option>-autoq</option>)
</para></listitem>
</varlistentry>
<varlistentry>
<term><systemitem>49%</systemitem></term>
<listitem><para>
текущий уровень использования кеша. (нормальное значение - около 50%)
текущий уровень использования кеша. (нормальное значение &mdash; около 50%)
</para></listitem>
</varlistentry>
<varlistentry>
@ -333,31 +335,31 @@ A: 2.1 V: 2.2 A-V: -0.167 ct: 0.042 57/57 41% 0% 2.6% 0 4 49% 1.00x
</varlistentry>
</variablelist>
Большинство из них используются для отладки, используйте опцию <option>-quiet</option>
чтобы их скрыть. Имейте ввиду, что для некоторых файлов использование CPU модулем video_out
равно нулю (0%). Дело в том, что иногда он вызывается непосредственно из кодека и не может
быть измерен отдельно. Если вы хотите узнать скорость video_out в этом случае сравните
разницу при воспроизведении с <option>-vo null</option> и вашим драйвером вывода видео.
чтобы их скрыть. Имейте ввиду, что для некоторых файлов использование CPU модулем video_out
равно нулю (0%). Дело в том, что иногда он вызывается непосредственно из кодека и не может
быть измерен отдельно. Если Вы хотите узнать скорость video_out в этом случае, сравните
разницу при воспроизведении с <option>-vo null</option> и Вашим драйвером вывода видео.
</para></answer>
</qandaentry>
<qandaentry>
<question><para>
Появляется сообщение, что не найден файл
Появляется сообщение, что не найден файл
<filename>/usr/local/lib/codecs/</filename> ...
</para></question>
<answer><para>
Загрузите и установите бинарные кодеки с нашей
Загрузите и установите бинарные кодеки с нашей
<ulink url="http://www.mplayerhq.hu/design7/dload.html">страницы загрузки</ulink>.
</para></answer>
</qandaentry>
<qandaentry>
<question><para>
Как сделать, чтобы <application>MPlayer</application> запомнил мои особые опции
Как сделать, чтобы <application>MPlayer</application> запомнил мои особые опции
для определенного файла, например <filename>movie.avi</filename>?
</para></question>
<answer><para>
Создайте файл с именем <filename>movie.avi.conf</filename> и вашими опциями в нем,
Создайте файл с именем <filename>movie.avi.conf</filename> и Вашими опциями в нем,
сохраните его в каталог <filename class="directory">~/.mplayer</filename>
или в один каталог с медиа-файлом.
</para></answer>
@ -365,41 +367,20 @@ A: 2.1 V: 2.2 A-V: -0.167 ct: 0.042 57/57 41% 0% 2.6% 0 4 49% 1.00x
<qandaentry>
<question><para>
Субтитры великолепные, лучшие из виденных когда-либо, но они замедляют
Субтитры великолепные, лучшие из виденных когда-либо, но они замедляют
воспроизведение! Я знаю, это необычно...
</para></question>
<answer><para>
После запуска <filename>./configure</filename>,
После запуска <filename>./configure</filename>,
отредактируйте <filename>config.h</filename>
и замените <systemitem>#undef FAST_OSD</systemitem> на
и замените <systemitem>#undef FAST_OSD</systemitem> на
<systemitem>#define FAST_OSD</systemitem>. Перекомпилируйте.
</para></answer>
</qandaentry>
<qandaentry>
<question><para>
Я не могу получить доступ к GUI меню. Я делаю щелчок правой кнопкой мыши, но пункты меню
отсутствуют.
</para></question>
<answer><para>
Используете FVWM? Попробуйте следующее:
<orderedlist>
<listitem><para>
<menuchoice><guimenu>Start</guimenu><guisubmenu>Settings</guisubmenu>
<guisubmenu>Configuration</guisubmenu>
<guimenuitem>Base Configuration</guimenuitem></menuchoice>
</para></listitem>
<listitem><para>
Установите <systemitem>Use Applications position hints</systemitem>
в <systemitem>Yes</systemitem>
</para></listitem>
</orderedlist>
</para></answer>
</qandaentry>
<qandaentry>
<question><para>
Как запустить <application>MPlayer</application> в фоновой режиме?
Как запустить <application>MPlayer</application> в фоновом режиме?
</para></question>
<answer><para>
Используйте:
@ -420,17 +401,17 @@ mplayer <replaceable>опции</replaceable> <replaceable>имя_файла</re
Не могу локализовать причину некоторой странной проблемы произведения.
</para></question>
<answer><para>
Завалялся файл <filename>codecs.conf</filename> в
Завалялся файл <filename>codecs.conf</filename> в
<filename>~/.mplayer/</filename>, <filename>/etc/</filename>,
<filename>/usr/local/etc/</filename> или в аналогичном месте? Удалите его,
Устаревший <filename>codecs.conf</filename> может стать причиной непонятных
проблем и предназначается только для использования разработчиками,
занимающимися поддержкой кодеков. Он переопределяет внутренние настройки кодеков
<application>MPlayer</application>'а, что не сулит ничего хорошего, если
проблем и предназначается только для использования разработчиками,
занимающимися поддержкой кодеков. Он переопределяет внутренние настройки кодеков
<application>MPlayer</application>'а, что не сулит ничего хорошего, если
в новых версиях программы внесены несовместимые изменения.
При использовании неэкспертами, это верный путь к, на первый взгляд, случайным и
При использовании неэкспертами, это верный путь к, на первый взгляд, случайным и
неподдающимся локализации крахам и проблемам воспроизведения.
Если этот файл присутствует где-либо в вашей системе, удалите его.
Если этот файл присутствует где-либо в Вашей системе, удалите его.
</para></answer>
</qandaentry>
@ -439,7 +420,7 @@ mplayer <replaceable>опции</replaceable> <replaceable>имя_файла</re
Как настроить субтитры для вывода на черных полях вокруг изображения?
</para></question>
<answer><para>
Воспользуйтесь видео фильтром <systemitem>expand</systemitem> для увеличения области
Воспользуйтесь видео фильтром <systemitem>expand</systemitem> для увеличения области
рендеринга по вертикали и разместите изображение у верхней кромки:
<screen>mplayer -vf expand=0:-100:0:0 -slang de dvd://1</screen>
</para></answer>
@ -479,7 +460,7 @@ mplayer -vo null -ao null -frames 0 -v <replaceable>имя_файла</replaceab
Я загрузил фильм из P2P сети, но он не работает!
</para></question>
<answer><para>
У вас испорченный или поддельный файл. Если вы получили его от друзей, которые
У Вас испорченный или поддельный файл. Если Вы получили его от друзей, которые
утверждают, что он работает, проверьте контрольную сумму <application>md5sum</application>.
</para></answer>
</qandaentry>
@ -489,11 +470,11 @@ mplayer -vo null -ao null -frames 0 -v <replaceable>имя_файла</replaceab
У меня проблемы с отображением субтитров, помогите!
</para></question>
<answer><para>
Убедитесь, что шрифты установлены правильно. Снова пройдите все шаги части
Убедитесь, что шрифты установлены правильно. Снова пройдите все шаги части
<link linkend="fonts-osd">Шрифты и OSD</link> раздела, посвященного установке.
Если используете TrueType шрифты, проверьте, что установлена
Если используете TrueType шрифты, проверьте, что установлена
библиотека <systemitem class="library">FreeType</systemitem>.
Стоит также проверить ваши субтитры при помощи текстового редактора или
Стоит также проверить Ваши субтитры при помощи текстового редактора или
стороннего проигрывателя. Попробуйте преобразовать их в другой формат.
</para></answer>
</qandaentry>
@ -511,14 +492,14 @@ Windows DLLs (таким как <application>MPlayer</application>).
библиотек. Смена адресов производится на стадии prelink (один раз каждые две недели).
</para>
<para>
Когда <application>MPlayer</application> пытается загрузить Windows DLL, он хочет
поместить ее по определенному адресу (0x400000). Если там уже находится важная
Когда <application>MPlayer</application> пытается загрузить Windows DLL, он хочет
поместить ее по определенному адресу (0x400000). Если там уже находится важная
системная библиотека, <application>MPlayer</application> рухнет.
(Типичные симптомы - segmentation fault при попытке воспроизвести файлы
(Типичные симптомы &mdash; segmentation fault при попытке воспроизвести файлы
Windows Media 9.)
</para>
<para>
Если столкнулись с этой проблемой, то у вас есть два варианта:
Если столкнулись с этой проблемой, то у Вас есть два варианта:
<itemizedlist>
<listitem><para>
Подождать пару недель. Все может снова заработать.
@ -554,7 +535,7 @@ Windows Media 9.)
<qandaentry>
<question><para>
<application>MPlayer</application> умирает с сообщением:
<screen>MPlayer interrupted by signal 4 in module: decode_video</screen>
<screen>MPlayer прерван сигналом 4 в модуле: decode_video</screen>
</para></question>
<answer><para>
Не используйте <application>MPlayer</application> на процессоре, отличном от того,
@ -565,11 +546,11 @@ Windows Media 9.)
<qandaentry>
<question><para>
При попытке захвата с тюнера, все работает, но цвета - неправильные. С другими приложениями
При попытке захвата с тюнера, все работает, но цвета &mdash; неправильные. С другими приложениями
все в порядке.
</para></question>
<answer><para>
Ваша карта сообщает о некотором пространстве цветов как поддерживаемом, хотя на самом
Ваша карта, вероятно, сообщает о некотором пространстве цветов как поддерживаемом, хотя на самом
деле его не поддерживает. Попробуйте с YUY2 вместо YV12 по умолчанию (смотрите
секцию <link linkend="tv-input">TV</link>).
</para></answer>
@ -581,8 +562,8 @@ Windows Media 9.)
</para></question>
<answer><para>
Это эффект системы управления энергопотреблением ноутбука (BIOS, не ядра).
Подсоедините разъем внешнего питания <emphasis role="bold">до</emphasis>
включения ноутбука. Также можно попробовать
Подсоедините разъем внешнего питания <emphasis role="bold">до</emphasis>
включения ноутбука. Также можно попробовать
<ulink url="http://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufreq.html">cpufreq</ulink> (SpeedStep интерфейс для Linux),
возможно это поможет.
</para></answer>
@ -596,8 +577,8 @@ Windows Media 9.)
</para></question>
<answer><para>
Это тоже эффект системы управления энергопотреблением (смотрите выше).
Подсоедините разъем внешнего питания <emphasis role="bold">до</emphasis>
включения ноутбука лиюо используйте опцию <option>-nortc</option>.
Подсоедините разъем внешнего питания <emphasis role="bold">до</emphasis>
включения ноутбука либо используйте опцию <option>-nortc</option>.
</para></answer>
</qandaentry>
@ -605,11 +586,11 @@ Windows Media 9.)
<question><para>
При воспроизведении фильма изображение вдруг начинает дергаться и появляется
следующее сообщение:
<screen>Badly interleaved AVI file detected - switching to -ni mode...</screen>
<screen>Обнаружен плохо 'слоёный' AVI файл - переключаюсь в -ni режим...</screen>
</para></question>
<answer><para>
Файлы с некорректным чередованием и опция
<option>-cache</option> вместе работают не очень хорошо..
<option>-cache</option> вместе работают не очень хорошо.
Попробуйте <option>-nocache</option>.
</para></answer>
</qandaentry>
@ -618,7 +599,7 @@ Windows Media 9.)
<!-- ********** -->
<qandadiv id="faq-driver">
<title>Проблемы драйверов вывода аудио/видео (ao/vo)</title>
<title>Проблемы драйверов вывода видео/аудио (vo/ao)</title>
<qandaentry>
<question><para>
@ -627,9 +608,9 @@ Windows Media 9.)
</para></question>
<answer><para>
Ваш драйвер вывода видео аппаратно не поддерживает масштабирование, и, поскольку
поблочное программное масштабирование может быть ужасно медленным,
программное масштабирование может быть ужасно медленным,
<application>MPlayer</application> не задействует его автоматически.
Скорее всего вы используете драйвер вывода <systemitem>x11</systemitem> вместо
Скорее всего Вы используете драйвер вывода <systemitem>x11</systemitem> вместо
<systemitem>xv</systemitem>.
Попробуйте указать <option>-vo xv</option> в командной строке или
прочтите <link linkend="video">раздел видео</link>, чтобы узнать о других
@ -642,11 +623,11 @@ Windows Media 9.)
<question><para>
Я только что установил <application>MPlayer</application>. Попытка открыть файл
приводит к фатальной ошибке:
<screen>Error opening/initializing the selected video_out (-vo) device.</screen>
<screen>Ошибка при открытии/инициализации выбранного устройства видеовывода (-vo).</screen>
Как решить проблему?
</para></question>
<answer><para>
Просто смените драйвер вывода видео. Введите следующую команду для получения списка
Просто смените драйвер вывода видео. Введите следующую команду для получения списка
доступных драйверов:
<screen>mplayer -vo help</screen>
Как только выберите правильный драйвер, добавьте его в файл конфигурации. Добавьте
@ -663,7 +644,7 @@ vo_driver = <replaceable>выбранный_драйвер</replaceable>
<qandaentry>
<question><para>
У меня проблемы с <replaceable>[ваш оконный менеджер]</replaceable> и
У меня проблемы с <replaceable>[Ваш оконный менеджер]</replaceable> и
полноэкранным режимом xv/xmga/sdl/x11 ...
</para></question>
<answer><para>
@ -678,7 +659,7 @@ vo_driver = <replaceable>выбранный_драйвер</replaceable>
Теряется синхронизация звука при воспроизведении AVI файла.
</para></question>
<answer><para>
Попробуйте опцию <option>-bps</option> или <option>-nobps</option>. Если это не помогает
Попробуйте опцию <option>-bps</option> или <option>-nobps</option>. Если это не помогает
прочтите <link linkend="bugreports">руководство по составлению отчетов об ошибках</link>
и загрузите этот файл на наш FTP.
</para></answer>
@ -686,22 +667,11 @@ vo_driver = <replaceable>выбранный_драйвер</replaceable>
<qandaentry>
<question><para>
Мой компьютер проигрывает MS DivX AVI с разрешениями ~ 640x300 и MP3 стереозвуком
слишком медленно. Если указать опцию <option>-nosound</option>, все ОК (но без звука).
</para></question>
<answer><para>
Ваша машина слишком медленная либо драйвер звуковой карты неправильно работает.
Обратитесь к документации, чтобы узнать можно ли улучшить производительность.
</para></answer>
</qandaentry>
<qandaentry>
<question><para>
Как использовать <application>dmix</application> с
Как использовать <application>dmix</application> с
<application>MPlayer</application>?
</para></question>
<answer><para>
После настройки
После настройки
<ulink url="http://alsa.opensrc.org/index.php?page=DmixPlugin">asoundrc</ulink>
используйте <option>-ao alsa:device=dmix</option>.
</para></answer>
@ -712,35 +682,37 @@ vo_driver = <replaceable>выбранный_драйвер</replaceable>
Нет звука при воспроизведении видео и появляется ошибка подобная этой:
<screen>
AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian)
audio_setup: Can't open audio device /dev/dsp: Device or resource busy
couldn't open/init audio device -> NOSOUND
Audio: no sound!!!
Start playing...
[AO OSS] инициализация аудио: Не могу открыть аудиоустройство /dev/dsp: Device or resource busy
Не могу открыть/инициализировать аудиоустройство -> без звука.
Аудио: без звука
Начало воспроизведения...
</screen>
</para></question>
<answer><para>
Используете KDE или GNOME со звуковыми службами aRts или ESD?
Попробуйте отключить службу звука или используйте <option>-ao arts</option> или
<option>-ao esd</option> опции, для указания <application>MPlayer</application>
использовать aRts или ESD. Также возможно, что вы используете ALSA без
эмуляции OSS, попробуйте загрузить ALSA OSS модули ядра или добавьте опцию
<option>-ao alsa</option> в командную строку, для использования ALSA напрямую.
<option>-ao esd</option> опции, для указания <application>MPlayer</application>
использовать aRts или ESD.
Также возможно, что Вы используете ALSA без эмуляции OSS,
попробуйте загрузить ALSA OSS модули ядра или добавьте опцию
<option>-ao alsa</option> в командную строку, для использования
ALSA напрямую.
</para></answer>
</qandaentry>
<qandaentry>
<question><para>
При запуске <application>MPlayer</application> в KDE наблюдается черный экран
При запуске <application>MPlayer</application> в KDE наблюдается черный экран
и ничего более. Примерно через минуту начинается воспроизведение.
</para></question>
<answer><para>
aRts блокирует звуковое устройство. Либо подождите старта видео, либо
отключите службу aRts в центре управления. Если вы хотите использовать звук
aRts блокирует звуковое устройство. Либо подождите старта видео, либо
отключите службу aRts в центре управления. Если Вы хотите использовать звук
через aRts, укажите вывод звука через встроенный звуковой драйвер aRts
(<option>-ao arts</option>). Если он не работает, либо
(<option>-ao arts</option>). Если он не работает, либо
<application>MPlayer</application> собран без него, попробуйте SDL
(<option>-ao sdl</option>) и убедитесь, что SDL может работать со
звуком aRts. Ещё один вариант - запуск <application>MPlayer</application>
звуком aRts. Ещё один вариант &mdash; запуск <application>MPlayer</application>
с artsdsp.
</para></answer>
</qandaentry>
@ -748,28 +720,28 @@ aRts блокирует звуковое устройство. Либо подо
<qandaentry>
<question><para>
Проблема с синхронизацией A/V. Некоторые из моих AVI файлов проигрываются нормально, но
некоторые - с двойной скоростью!
некоторые &mdash; с двойной скоростью!
</para></question>
<answer><para>
У вас неверно работающая звуковая карта/драйвер. Скорее всего, поддерживается работа
только с 44100Hz, а вы пытаетесь проиграть файл с 22050Hz звуком. Попробуйте
У Вас неверно работающая звуковая карта/драйвер. Скорее всего, поддерживается работа
только с 44100Гц, а Вы пытаетесь проиграть файл с 22050Гц звуком. Попробуйте
звуковой фильтр <systemitem>resample</systemitem>.
</para></answer>
</qandaentry>
<qandaentry>
<question><para>
При проигрывании фильма происходит рассинхронизация звука и видео или
При проигрывании фильма происходит рассинхронизация звука и видео или
<application>MPlayer</application> рушится с ошибкой:
<screen>DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!</screen>
<screen>Слишком много (945 в 8390980 байтах) видеопакетов в буфере!</screen>
</para></question>
<answer><para>
Причин может быть несколько.
<itemizedlist>
<listitem><para>
Ваш CPU <emphasis>и/или</emphasis> видеокарта <emphasis>и/или</emphasis>
шина слишком медленные. В этом случае <application>MPlayer</application>
выводит соответствующее сообщение (и количество выброшенных кадров быстро
шина слишком медленные. В этом случае <application>MPlayer</application>
выводит соответствующее сообщение (и количество выброшенных кадров быстро
увеличивается).
</para></listitem>
<listitem><para>
@ -781,11 +753,11 @@ aRts блокирует звуковое устройство. Либо подо
<listitem><para>
Многие FLV файлы будут правильно воспроизводиться только с <option>-correct-pts</option>.
К сожалению, <application>MEncoder</application> такой опции не имеет,
но вы можете попробовать вручную указать правильное значение <option>-fps</option>,
если оно вам известно.
но Вы можете попробовать вручную указать правильное значение <option>-fps</option>,
если оно Вам известно.
</para></listitem>
<listitem><para>
У вас неверно работает звуковой драйвер.
У Вас неверно работает звуковой драйвер.
</para></listitem>
</itemizedlist>
</para></answer>
@ -813,28 +785,14 @@ aRts блокирует звуковое устройство. Либо подо
<answer><para>
<application>MPlayer</application> не поддерживает DVD меню в силу серьезных
архитектурных ограничений, которые мешают правильной обработке неподвижных
изображений и интерактивного содержимого. Если хотите модные меню, вам
изображений и интерактивного содержимого. Если хотите модные меню, Вам
придется использовать другой проигрыватель, например <application>xine</application>,
<application>vlc</application> или <application>Ogle</application>.
Если вы хотите получить DVD навигацию в <application>MPlayer</application>,
Если Вы хотите получить DVD навигацию в <application>MPlayer</application>,
реализуйте ее самостоятельно, но имейте ввиду, что это нелегкое и ответственное дело.
</para></answer>
</qandaentry>
<qandaentry>
<question><para>
Я не могу посмотреть некоторые новые DVD от Sony Pictures/BMG.
</para></question>
<answer><para>
Это нормально. Вас ободрали и продали намеренно испорченный диск. Единственный способ
просмотреть его - избежать воспроизведения плохих блоков, воспользовавшись DVDnav
вместо mpdvdkit2. Это можно сделать, собрав <application>MPlayer</application>
с поддержкой DVDnav, и заменив после этого dvd:// на dvdnav:// в командной строке.
DVDnav пока что настолько несовместим с mpdvdkit, что вам придется указать опцию
<option>--disable-mpdvdkit</option> скрипту configure.
</para></answer>
</qandaentry>
<qandaentry>
<question><para>
Как насчет субтитров? <application>MPlayer</application> умеет их отображать?
@ -849,7 +807,7 @@ DVDnav пока что настолько несовместим с mpdvdkit, ч
Как установить регион для DVD-привода? У меня нет Windows!
</para></question>
<answer><para>
Воспользуйтесь
Воспользуйтесь
<ulink url="http://linvdr.org/projects/regionset/">утилитой regionset</ulink>.
</para></answer>
</qandaentry>
@ -869,7 +827,7 @@ DVD не проигрываются, MPlayer зависает или вывод
Нужны ли права root (setuid) для воспроизведения DVD?
</para></question>
<answer><para>
Нет. Конечно, вы должны иметь необходимые права на файл DVD устройства
Нет. Конечно, Вы должны иметь необходимые права на файл DVD устройства
<filename class="directory">/dev/</filename>).
</para></answer>
</qandaentry>
@ -889,7 +847,7 @@ DVD не проигрываются, MPlayer зависает или вывод
</para></question>
<answer><para>
Используйте опцию <option>-cache</option> (описанную на странице man) и попробуйте
включить DMA для DVD привода утилитой <command>hdparm</command>
включить DMA для DVD привода утилитой <command>hdparm</command>
(описанной в <link linkend="drives">разделе CD</link>).
</para></answer>
</qandaentry>
@ -929,7 +887,7 @@ mplayer dvd://1 -dvd-device <replaceable>/путь/к/каталогу</replacea
Хочется перематывать на +/- 1 кадр вместо 10 секунд.
</para></question>
<answer><para>
Вы можете перемещаться на 1 кадр вперед, нажимая клавишу
Вы можете перемещаться на 1 кадр вперед, нажимая клавишу
<keycap>.</keycap>. После этого воспроизведение будет приостановлено
(смотрите страницу руководства man для подробностей).
Перемещение назад вряд ли будет реализовано в ближайшем будущем.
@ -956,14 +914,14 @@ mplayer dvd://1 -dvd-device <replaceable>/путь/к/каталогу</replacea
Как сохранить весь ролик DVD в файл?
</para></question>
<answer><para>
Как только определитесь с выбором ролика и проверите, что он проигрывается в
<application>MPlayer</application>, воспользуйтесь опцией
Как только определитесь с выбором ролика и проверите, что он проигрывается в
<application>MPlayer</application>, воспользуйтесь опцией
<option>-dumpstream</option>.
Например:
<screen>
mplayer dvd://5 -dumpstream -dumpfile <replaceable>dvd_dump.vob</replaceable>
</screen>
сохранит 5-й ролик в файл
сохранит 5-й ролик в файл
<replaceable>dvd_dump.vob</replaceable>
</para></answer>
</qandaentry>
@ -974,7 +932,7 @@ mplayer dvd://5 -dumpstream -dumpfile <replaceable>dvd_dump.vob</replaceable>
</para></question>
<answer><para>
Попробуйте скрипт <filename>mencvcd.sh</filename> из каталога
<filename class="directory">TOOLS</filename>. С его помощью вы можете перекодировать
<filename class="directory">TOOLS</filename>. С его помощью Вы можете перекодировать
DVD или другие фильмы в VCD или SVCD формат и даже записывать их на CD.
</para></answer>
</qandaentry>
@ -986,7 +944,7 @@ DVD или другие фильмы в VCD или SVCD формат и даже
<answer><para>
Новые версии <application>MEncoder</application> могут самостоятельно создавать
MPEG-2 файлы, которые можно использовать в качестве основы для VCD или SVCD,
воспроизводящиеся "из коробки" на всех платформах (например, чтобы поделиться
воспроизводящиеся "из коробки" на всех платформах (например, чтобы поделиться
фильмом, снятым на видеокамеру, с компьютерно-неграмотными друзьями).
Прочтите
<link linkend="menc-feat-vcd-dvd">Использование MEncoder для создания VCD/SVCD/DVD-совместимых файлов</link>.
@ -999,16 +957,16 @@ MPEG-2 файлы, которые можно использовать в кач
</para></question>
<answer><para>
MPEG файлы могут быть объединены в один, если сильно повезет.
Для файлов AVI, можете воспользоваться встроенной возможностью
Для файлов AVI, можете воспользоваться встроенной возможностью
<application>MEncoder</application>'а
работать с несколькими файлами сразу:
<screen>
mencoder -ovc copy -oac copy -o <replaceable>out.avi</replaceable> <replaceable>file1.avi</replaceable> <replaceable>file2.avi</replaceable>
mencoder -ovc copy -oac copy -o <replaceable>out.avi</replaceable> <replaceable>файл1.avi</replaceable> <replaceable>файл2.avi</replaceable>
</screen>
Это будет работать только если файлы имеют одинаковое разрешение и сжаты одинаковым
кодеком. Также попробуйте
кодеком. Также попробуйте
<ulink url="http://fixounet.free.fr/avidemux/">avidemux</ulink> и
<application>avimerge</application> (часть набора утилит
<application>avimerge</application> (часть набора утилит
<ulink url="http://www.transcoding.org/">transcode</ulink>
).
</para></answer>
@ -1020,12 +978,12 @@ mencoder -ovc copy -oac copy -o <replaceable>out.avi</replaceable> <replaceable>
</para></question>
<answer><para>
Избежать использования <option>-idx</option> и иметь возможность перемотки в
AVI файлах с испорченным индексом, либо избежать <option>-ni</option> для воспроизведения файлов
AVI файлах с испорченным индексом, либо избежать <option>-ni</option> для воспроизведения файлов
с неверным чередованием поможет команда
<screen>
mencoder <replaceable>input.avi</replaceable> -idx -ovc copy -oac copy -o <replaceable>output.avi</replaceable>
</screen>
Она скопирует видео и аудио в новый файл, генерируя новый индекс и исправляя чередование.
Она скопирует видео и аудио в новый файл, генерируя новый индекс и исправляя чередование.
Конечно, это не поможет исправить ошибки в видео и/или аудио потоке.
</para></answer>
</qandaentry>
@ -1046,16 +1004,17 @@ mencoder <replaceable>input.avi</replaceable> -ovc copy -oac copy -o <replaceabl
<qandaentry>
<question><para>
Как сделать копию/закодировать VOB файл с испорченным началом?
Как сделать копию и закодировать VOB файл с испорченным началом?
</para></question>
<answer><para>
Основная проблема при попытке кодировать испорченный VOB файл
<footnote id='fn-corrupted-files-or-copy-protection'><para>
В какой-то мере некоторые формы защиты от копирования могут быть восприняты как
В какой-то мере некоторые формы защиты от копирования могут быть восприняты как
испорченное содержимое.
</para></footnote>
состоит в том, что будет трудно закодировать файл с хорошей
A/V синхронизацией. Один из способов заключается в отбрасывании испорченных данных
A/V синхронизацией.
Один из способов заключается в отбрасывании испорченных данных
и кодирования только корретной части. Сначала ищите начало корректных данных (меняя
параметр "колво_байтов_для_пропуска"):
<screen>
@ -1148,7 +1107,7 @@ Pos: 264.5s 6612f ( 2%) 7.12fps Trem: 576min 2856mb A-V:0.065 [2156:192]
Почему рекомендуемый <application>MEncoder</application>'ом битрейт отрицателен?
</para></question>
<answer><para>
Потому что аудио битрейт в процессе кодирования становится слишком велик, чтобы
Потому что аудио битрейт в процессе кодирования становится слишком велик, чтобы
уместить фильм на CD. Проверьте, правильно ли установлена libmp3lame.
</para></answer>
</qandaentry>
@ -1158,7 +1117,7 @@ Pos: 264.5s 6612f ( 2%) 7.12fps Trem: 576min 2856mb A-V:0.065 [2156:192]
Не могу перекодировать ASF файл в AVI/MPEG-4, потому что используется 1000fps.
</para></question>
<answer><para>
Поскольку ASF использует переменную частоту кадров, а AVI - фиксированную,
Поскольку ASF использует переменную частоту кадров, а AVI &mdash; фиксированную,
необходимо её установить вручную опцией <option>-ofps</option>.
</para></answer>
</qandaentry>
@ -1168,7 +1127,7 @@ Pos: 264.5s 6612f ( 2%) 7.12fps Trem: 576min 2856mb A-V:0.065 [2156:192]
Как поместить субтитры в выходной файл?
</para></question>
<answer><para>
Просто укажите <application>MEncoder</application> опцию <option>-sub &lt;имя_файла&gt;</option>
Просто укажите <application>MEncoder</application> опцию <option>-sub &lt;имя_файла&gt;</option>
(или <option>-sid</option>, соответственно).
</para></answer>
</qandaentry>
@ -1179,38 +1138,38 @@ Pos: 264.5s 6612f ( 2%) 7.12fps Trem: 576min 2856mb A-V:0.065 [2156:192]
</para></question>
<answer><para>
Напрямую это невозможно, но можете попробовать такой способ
(обратите внимание на
<emphasis role="bold">&amp;</emphasis> в конце команды
(обратите внимание на
<emphasis role="bold">&amp;</emphasis> в конце команды
<command>mplayer</command>):
<screen>
mkfifo encode
mplayer -ao pcm -aofile <replaceable>encode</replaceable> dvd://1 &amp;
lame <replaceable>ваши_опции</replaceable> <replaceable>encode</replaceable> <replaceable>music.mp3</replaceable>
lame <replaceable>Ваши_опции</replaceable> <replaceable>encode</replaceable> <replaceable>music.mp3</replaceable>
rm <replaceable>encode</replaceable>
</screen>
Это позволяет использовать любой кодер, не только
Это позволяет использовать любой кодер, не только
<application>LAME</application>,
просто замените <command>lame</command> на ваш предпочитаемый кодер.
просто замените <command>lame</command> на Ваш предпочитаемый кодер.
</para></answer>
</qandaentry>
<qandaentry>
<question><para>
Почему сторонние проигрыватели не могут воспроизвести MPEG-4 файлы,
Почему сторонние проигрыватели не могут воспроизвести MPEG-4 файлы,
сжатые <application>MEncoder</application>'ом версий старше 1.0pre7?
</para></question>
<answer><para>
<systemitem class="library">libavcodec</systemitem>, родная библиотека
<systemitem class="library">libavcodec</systemitem>, родная библиотека
кодирования MPEG-4, обычно поставляемая с <application>MEncoder</application>,
устанавливала FourCC в 'DIVX' при сжатии MPEG-4 видео (FourCC -
устанавливала FourCC в 'DIVX' при сжатии MPEG-4 видео (FourCC &mdash;
это тэг AVI, указывающий нужную программу сжатия и декодирования видео,
т.е. кодек). Поэтому многие люди считают, что
т.е. кодек). Поэтому многие люди считают, что
<systemitem class="library">libavcodec</systemitem> была библиотекой
кодирования DivX, когда на самом деле это совершенно другая библиотека
кодирования MPEG-4, реализующая стандарт MPEG-4 значительно лучше, чем DivX.
Поэтому новый FourCC, по умолчанию используемый
<systemitem class="library">libavcodec</systemitem> -это 'FMP4', но вы
можете переопределить это поведение, используя опцию
Поэтому новый FourCC, по умолчанию используемый
<systemitem class="library">libavcodec</systemitem> &mdash; это 'FMP4', но Вы
можете переопределить это поведение, используя опцию
<application>MEncoder</application>'а
<option>-ffourcc</option>.
Вы также можете сменить FourCC у существующего файла тем же способом:
@ -1219,14 +1178,15 @@ mencoder <replaceable>input.avi</replaceable> -o <replaceable>output.avi</replac
</screen>
Имейте ввиду, что этот пример устанавливает FourCC в XVID, а не DIVX.
Это рекомендуется, т.к. DIVX FourCC означает DivX4, очень простой MPEG-4
кодек, в то время как DX50 и XVID оба - полные MPEG-4 (ASP).
Таким образом, если вы установите FourCC в DIVX, некоторые плохие
кодек, в то время как DX50 и XVID оба &mdash; полные MPEG-4 (ASP).
Таким образом, если Вы установите FourCC в DIVX, некоторые плохие
программные или аппаратные проигрыватели могут быть в шоке от дополнительных
возможностей, которые
<systemitem class="library">libavcodec</systemitem> поддерживает , а DivX - нет;
возможностей, которые
<systemitem class="library">libavcodec</systemitem> поддерживает,
а DivX &mdash; нет;
с другой стороны <systemitem class="library">Xvid</systemitem>
по функциональности ближе к <systemitem class="library">libavcodec</systemitem>
и подерживается практически любыми приличными проигрывателями.
и поддерживается любыми приличными проигрывателями.
</para></answer>
</qandaentry>
@ -1237,7 +1197,7 @@ mencoder <replaceable>input.avi</replaceable> -o <replaceable>output.avi</replac
<answer><para>
Используйте <filename>aconvert.sh</filename> из подкаталога
<filename class="directory">TOOLS</filename>
дерева каталогов MPlayer.
дерева исходников MPlayer.
</para></answer>
</qandaentry>
@ -1246,8 +1206,8 @@ mencoder <replaceable>input.avi</replaceable> -o <replaceable>output.avi</replac
Как воспроизвести субтитры внедренные в AVI?
</para></question>
<answer><para>
Используйте <filename>avisubdump.c</filename> из подкаталога
<filename class="directory">TOOLS</filename> или прочтите
Используйте <filename>avisubdump.c</filename> из подкаталога
<filename class="directory">TOOLS</filename> или прочтите
<ulink url="http://xlife.zuavra.net/curse/0012/">этот документ о извлечении/мультиплексировании субтитров внедренных в OpenDML AVI файлы</ulink>.
</para></answer>
</qandaentry>

View File

@ -1,6 +1,8 @@
#ifndef MPLAYER_CPUDETECT_H
#define MPLAYER_CPUDETECT_H
#include "config.h"
#define CPUTYPE_I386 3
#define CPUTYPE_I486 4
#define CPUTYPE_I586 5

View File

@ -50,14 +50,19 @@ static const struct {
{IMGFMT_YVU9, PIX_FMT_YUV410P},
{IMGFMT_IF09, PIX_FMT_YUV410P},
{IMGFMT_YV12, PIX_FMT_YUV420P},
{IMGFMT_YV12, PIX_FMT_YUVJ420P},
{IMGFMT_I420, PIX_FMT_YUV420P},
{IMGFMT_IYUV, PIX_FMT_YUV420P},
{IMGFMT_411P, PIX_FMT_YUV411P},
{IMGFMT_422P, PIX_FMT_YUV422P},
{IMGFMT_422P, PIX_FMT_YUVJ422P},
{IMGFMT_444P, PIX_FMT_YUV444P},
// YUVJ are YUV formats that use the full Y range and not just
// 16 - 235 (see colorspaces.txt).
// Currently they are all treated the same way.
{IMGFMT_YV12, PIX_FMT_YUVJ420P},
{IMGFMT_422P, PIX_FMT_YUVJ422P},
{IMGFMT_444P, PIX_FMT_YUVJ444P},
{IMGFMT_XVMC_MOCO_MPEG2, PIX_FMT_XVMC_MPEG2_MC},
{IMGFMT_XVMC_IDCT_MPEG2, PIX_FMT_XVMC_MPEG2_IDCT},
{IMGFMT_VDPAU_MPEG1, PIX_FMT_VDPAU_MPEG1},

View File

@ -75,7 +75,7 @@ static char help_text[]=
#define MSGTR_TryForceVideoFmtStr "Попытка форсировать семейство видеокодеков %s...\n"
#define MSGTR_CantFindVideoCodec "Не могу найти кодек для выбранного -vo и видеоформата 0x%X!\n"
#define MSGTR_CannotInitVO "ФАТАЛЬНАЯ ОШИБКА: Не могу инициализировать видеодрайвер!\n"
#define MSGTR_CannotInitAO "не могу открыть/инициализировать аудиоустройство -> БЕЗ ЗВУКА\n"
#define MSGTR_CannotInitAO "Не могу открыть/инициализировать аудиоустройство -> без звука.\n"
#define MSGTR_StartPlaying "Начало воспроизведения...\n"
#define MSGTR_SystemTooSlow "\n\n"\
@ -103,7 +103,7 @@ static char help_text[]=
#define MSGTR_NoGui "MPlayer был скомпилирован БЕЗ поддержки GUI!\n"
#define MSGTR_GuiNeedsX "GUI MPlayer необходим X11!\n"
#define MSGTR_Playing "\nВоспроизведение %s.\n"
#define MSGTR_NoSound "Аудио: без звука!!!\n"
#define MSGTR_NoSound "Аудио: без звука\n"
#define MSGTR_FPSforced "Кадры/сек форсированы в %5.3f (время кадра: %5.3f).\n"
#define MSGTR_CompiledWithRuntimeDetection "Скомпилировано для определения типа процессора во время выполнения.\n"
#define MSGTR_CompiledWithCPUExtensions "Скомпилировано для x86 CPU со следующими расширениями:"

View File

@ -52,6 +52,8 @@ static struct pa_threaded_mainloop *mainloop;
/** A temporary variable to store the current volume */
static pa_cvolume volume;
static int broken_pause;
LIBAO_EXTERN(pulse)
#define GENERIC_ERR_MSG(ctx, str) \
@ -138,6 +140,7 @@ static int init(int rate_hz, int channels, int format, int flags) {
char *devarg = NULL;
char *host = NULL;
char *sink = NULL;
char *version = pa_get_library_version();
if (ao_subdevice) {
devarg = strdup(ao_subdevice);
@ -146,6 +149,17 @@ static int init(int rate_hz, int channels, int format, int flags) {
if (devarg[0]) host = devarg;
}
broken_pause = 0;
// not sure which versions are affected, assume 0.9.1*
// known bad: 0.9.14, 0.9.13
// known good: 0.9.9, 0.9.10
// to test: pause, wait ca. 5 seconds framestep and see if MPlayer hangs somewhen
if (strncmp(version, "0.9.1", 5) == 0 && strncmp(version, "0.9.10", 6) != 0) {
mp_msg(MSGT_AO, MSGL_WARN, "[pulse] working around probably broken pause functionality,\n"
" see http://www.pulseaudio.org/ticket/440\n");
broken_pause = 1;
}
ss.channels = channels;
ss.rate = rate_hz;
@ -288,6 +302,10 @@ static void audio_pause(void) {
/** Resume the audio stream by uncorking it on the server */
static void audio_resume(void) {
// without this, certain versions will cause an infinite hang because
// pa_stream_writable_size returns 0 always.
// Note that this workaround causes A-V desync after pause
if (broken_pause) reset();
cork(0);
}

View File

@ -584,14 +584,7 @@ static int init(int rate,int channels,int format,int flags){
ao_data.bps = byte_per_sec = bytes_per_sample * ao_data.samplerate;
ao_data.outburst = byte_per_sec > 100000 ? 16384 : 8192;
AUDIO_INITINFO(&info);
info.play.samples = 0;
info.play.eof = 0;
info.play.error = 0;
ioctl (audio_fd, AUDIO_SETINFO, &info);
queued_bursts = 0;
queued_samples = 0;
reset();
return 1;
}
@ -608,7 +601,15 @@ static void uninit(int immed){
// stop playing and empty buffers (for seeking/pause)
static void reset(void){
audio_info_t info;
flush_audio(audio_fd);
AUDIO_INITINFO(&info);
info.play.samples = 0;
info.play.eof = 0;
info.play.error = 0;
ioctl(audio_fd, AUDIO_SETINFO, &info);
queued_bursts = 0;
queued_samples = 0;
}

View File

@ -879,7 +879,7 @@ static mp_image_t *decode(sh_video_t *sh, void *data, int len, int flags){
#if CONFIG_XVMC || CONFIG_VDPAU
static enum PixelFormat get_format(struct AVCodecContext *avctx,
const enum PixelFormat *fmt){
enum PixelFormat selected_format = fmt[0];
enum PixelFormat selected_format;
int imgfmt;
sh_video_t *sh = avctx->opaque;
int i;
@ -889,10 +889,10 @@ static enum PixelFormat get_format(struct AVCodecContext *avctx,
if(!IMGFMT_IS_XVMC(imgfmt) && !IMGFMT_IS_VDPAU(imgfmt)) continue;
mp_msg(MSGT_DECVIDEO, MSGL_INFO, MSGTR_MPCODECS_TryingPixfmt, i);
if(init_vo(sh, fmt[i]) >= 0) {
selected_format = fmt[i];
break;
}
}
selected_format = fmt[i];
imgfmt = pixfmt2imgfmt(selected_format);
if(IMGFMT_IS_XVMC(imgfmt) || IMGFMT_IS_VDPAU(imgfmt)) {
vd_ffmpeg_ctx *ctx = sh->context;

View File

@ -160,10 +160,6 @@ static int open(vf_instance_t *vf, char* args)
vf->priv->hue *= M_PI / 180.0;
process = process_C;
#if HAVE_MMXX
if(gCpuCaps.hasMMX) process = process_MMX;
#endif
return 1;
}

View File

@ -624,7 +624,15 @@ static int demux_real_fill_buffer(demuxer_t *demuxer, demux_stream_t *dsds)
if (len < 12){
mp_msg(MSGT_DEMUX, MSGL_V,"%08X: packet v%d len=%d \n",(int)demuxer->filepos,(int)version,(int)len);
mp_msg(MSGT_DEMUX, MSGL_WARN,"bad packet len (%d)\n", len);
stream_skip(demuxer->stream, len);
if ((unsigned)demuxer->video->id < MAX_STREAMS) {
if (priv->current_vpacket + 1 < priv->index_table_size[demuxer->video->id]) {
stream_seek(demuxer->stream, priv->index_table[demuxer->video->id][++priv->current_vpacket].offset);
}
} else if ((unsigned)demuxer->audio->id < MAX_STREAMS) {
if (priv->current_apacket + 1 < priv->index_table_size[demuxer->audio->id]) {
stream_seek(demuxer->stream, priv->index_table[demuxer->audio->id][++priv->current_apacket].offset);
}
}
continue; //goto loop;
}

View File

@ -206,7 +206,7 @@
"m" (lumSrc+lumFilterSize), "m" (chrSrc+chrFilterSize)
: "%eax", "%ebx", "%ecx", "%edx", "%esi"
*/
#define YSCALEYUV2PACKEDX \
#define YSCALEYUV2PACKEDX_UV \
__asm__ volatile(\
"xor %%"REG_a", %%"REG_a" \n\t"\
ASMALIGN(4)\
@ -229,8 +229,9 @@
"paddw %%mm5, %%mm4 \n\t"\
"test %%"REG_S", %%"REG_S" \n\t"\
" jnz 2b \n\t"\
\
"lea "LUM_MMX_FILTER_OFFSET"(%0), %%"REG_d" \n\t"\
#define YSCALEYUV2PACKEDX_YA(offset) \
"lea "offset"(%0), %%"REG_d" \n\t"\
"mov (%%"REG_d"), %%"REG_S" \n\t"\
"movq "VROUNDER_OFFSET"(%0), %%mm1 \n\t"\
"movq %%mm1, %%mm7 \n\t"\
@ -248,6 +249,10 @@
"test %%"REG_S", %%"REG_S" \n\t"\
" jnz 2b \n\t"\
#define YSCALEYUV2PACKEDX \
YSCALEYUV2PACKEDX_UV \
YSCALEYUV2PACKEDX_YA(LUM_MMX_FILTER_OFFSET) \
#define YSCALEYUV2PACKEDX_END \
:: "r" (&c->redDither), \
"m" (dummy), "m" (dummy), "m" (dummy),\
@ -255,7 +260,7 @@
: "%"REG_a, "%"REG_d, "%"REG_S \
);
#define YSCALEYUV2PACKEDX_ACCURATE \
#define YSCALEYUV2PACKEDX_ACCURATE_UV \
__asm__ volatile(\
"xor %%"REG_a", %%"REG_a" \n\t"\
ASMALIGN(4)\
@ -304,8 +309,9 @@
"paddw %%mm0, %%mm6 \n\t"\
"movq %%mm4, "U_TEMP"(%0) \n\t"\
"movq %%mm6, "V_TEMP"(%0) \n\t"\
\
"lea "LUM_MMX_FILTER_OFFSET"(%0), %%"REG_d" \n\t"\
#define YSCALEYUV2PACKEDX_ACCURATE_YA(offset) \
"lea "offset"(%0), %%"REG_d" \n\t"\
"mov (%%"REG_d"), %%"REG_S" \n\t"\
"pxor %%mm1, %%mm1 \n\t"\
"pxor %%mm5, %%mm5 \n\t"\
@ -349,6 +355,10 @@
"movq "U_TEMP"(%0), %%mm3 \n\t"\
"movq "V_TEMP"(%0), %%mm4 \n\t"\
#define YSCALEYUV2PACKEDX_ACCURATE \
YSCALEYUV2PACKEDX_ACCURATE_UV \
YSCALEYUV2PACKEDX_ACCURATE_YA(LUM_MMX_FILTER_OFFSET)
#define YSCALEYUV2RGBX \
"psubw "U_OFFSET"(%0), %%mm3 \n\t" /* (U-128)8*/\
"psubw "V_OFFSET"(%0), %%mm4 \n\t" /* (V-128)8*/\
@ -384,7 +394,6 @@
"packuswb %%mm0, %%mm2 \n\t"\
"packuswb %%mm6, %%mm5 \n\t"\
"packuswb %%mm3, %%mm4 \n\t"\
"pxor %%mm7, %%mm7 \n\t"
#define REAL_YSCALEYUV2PACKED(index, c) \
"movq "CHR_MMX_FILTER_OFFSET"+8("#c"), %%mm0 \n\t"\
@ -424,7 +433,7 @@
#define YSCALEYUV2PACKED(index, c) REAL_YSCALEYUV2PACKED(index, c)
#define REAL_YSCALEYUV2RGB(index, c) \
#define REAL_YSCALEYUV2RGB_UV(index, c) \
"xor "#index", "#index" \n\t"\
ASMALIGN(4)\
"1: \n\t"\
@ -448,6 +457,8 @@
"pmulhw "UG_COEFF"("#c"), %%mm3 \n\t"\
"pmulhw "VG_COEFF"("#c"), %%mm4 \n\t"\
/* mm2=(U-128)8, mm3=ug, mm4=vg mm5=(V-128)8 */\
#define REAL_YSCALEYUV2RGB_YA(index, c) \
"movq (%0, "#index", 2), %%mm0 \n\t" /*buf0[eax]*/\
"movq (%1, "#index", 2), %%mm1 \n\t" /*buf1[eax]*/\
"movq 8(%0, "#index", 2), %%mm6 \n\t" /*buf0[eax]*/\
@ -460,6 +471,8 @@
"psraw $4, %%mm7 \n\t" /* buf0[eax] - buf1[eax] >>4*/\
"paddw %%mm0, %%mm1 \n\t" /* buf0[eax]yalpha1 + buf1[eax](1-yalpha1) >>16*/\
"paddw %%mm6, %%mm7 \n\t" /* buf0[eax]yalpha1 + buf1[eax](1-yalpha1) >>16*/\
#define REAL_YSCALEYUV2RGB_COEFF(c) \
"pmulhw "UB_COEFF"("#c"), %%mm2 \n\t"\
"pmulhw "VR_COEFF"("#c"), %%mm5 \n\t"\
"psubw "Y_OFFSET"("#c"), %%mm1 \n\t" /* 8(Y-16)*/\
@ -487,8 +500,13 @@
"packuswb %%mm0, %%mm2 \n\t"\
"packuswb %%mm6, %%mm5 \n\t"\
"packuswb %%mm3, %%mm4 \n\t"\
"pxor %%mm7, %%mm7 \n\t"
#define YSCALEYUV2RGB(index, c) REAL_YSCALEYUV2RGB(index, c)
#define YSCALEYUV2RGB_YA(index, c) REAL_YSCALEYUV2RGB_YA(index, c)
#define YSCALEYUV2RGB(index, c) \
REAL_YSCALEYUV2RGB_UV(index, c) \
REAL_YSCALEYUV2RGB_YA(index, c) \
REAL_YSCALEYUV2RGB_COEFF(c)
#define REAL_YSCALEYUV2PACKED1(index, c) \
"xor "#index", "#index" \n\t"\
@ -551,7 +569,7 @@
"packuswb %%mm0, %%mm2 \n\t"\
"packuswb %%mm6, %%mm5 \n\t"\
"packuswb %%mm3, %%mm4 \n\t"\
"pxor %%mm7, %%mm7 \n\t"
#define YSCALEYUV2RGB1(index, c) REAL_YSCALEYUV2RGB1(index, c)
#define REAL_YSCALEYUV2PACKED1b(index, c) \
@ -623,33 +641,32 @@
"packuswb %%mm0, %%mm2 \n\t"\
"packuswb %%mm6, %%mm5 \n\t"\
"packuswb %%mm3, %%mm4 \n\t"\
"pxor %%mm7, %%mm7 \n\t"
#define YSCALEYUV2RGB1b(index, c) REAL_YSCALEYUV2RGB1b(index, c)
#define REAL_WRITEBGR32(dst, dstw, index) \
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */\
"movq %%mm2, %%mm1 \n\t" /* B */\
"movq %%mm5, %%mm6 \n\t" /* R */\
"punpcklbw %%mm4, %%mm2 \n\t" /* GBGBGBGB 0 */\
"punpcklbw %%mm7, %%mm5 \n\t" /* 0R0R0R0R 0 */\
"punpckhbw %%mm4, %%mm1 \n\t" /* GBGBGBGB 2 */\
"punpckhbw %%mm7, %%mm6 \n\t" /* 0R0R0R0R 2 */\
"movq %%mm2, %%mm0 \n\t" /* GBGBGBGB 0 */\
"movq %%mm1, %%mm3 \n\t" /* GBGBGBGB 2 */\
"punpcklwd %%mm5, %%mm0 \n\t" /* 0RGB0RGB 0 */\
"punpckhwd %%mm5, %%mm2 \n\t" /* 0RGB0RGB 1 */\
"punpcklwd %%mm6, %%mm1 \n\t" /* 0RGB0RGB 2 */\
"punpckhwd %%mm6, %%mm3 \n\t" /* 0RGB0RGB 3 */\
#define REAL_WRITEBGR32(dst, dstw, index, b, g, r, a, q0, q2, q3, t) \
"movq "#b", "#q2" \n\t" /* B */\
"movq "#r", "#t" \n\t" /* R */\
"punpcklbw "#g", "#b" \n\t" /* GBGBGBGB 0 */\
"punpcklbw "#a", "#r" \n\t" /* ARARARAR 0 */\
"punpckhbw "#g", "#q2" \n\t" /* GBGBGBGB 2 */\
"punpckhbw "#a", "#t" \n\t" /* ARARARAR 2 */\
"movq "#b", "#q0" \n\t" /* GBGBGBGB 0 */\
"movq "#q2", "#q3" \n\t" /* GBGBGBGB 2 */\
"punpcklwd "#r", "#q0" \n\t" /* ARGBARGB 0 */\
"punpckhwd "#r", "#b" \n\t" /* ARGBARGB 1 */\
"punpcklwd "#t", "#q2" \n\t" /* ARGBARGB 2 */\
"punpckhwd "#t", "#q3" \n\t" /* ARGBARGB 3 */\
\
MOVNTQ(%%mm0, (dst, index, 4))\
MOVNTQ(%%mm2, 8(dst, index, 4))\
MOVNTQ(%%mm1, 16(dst, index, 4))\
MOVNTQ(%%mm3, 24(dst, index, 4))\
MOVNTQ( q0, (dst, index, 4))\
MOVNTQ( b, 8(dst, index, 4))\
MOVNTQ( q2, 16(dst, index, 4))\
MOVNTQ( q3, 24(dst, index, 4))\
\
"add $8, "#index" \n\t"\
"cmp "#dstw", "#index" \n\t"\
" jb 1b \n\t"
#define WRITEBGR32(dst, dstw, index) REAL_WRITEBGR32(dst, dstw, index)
#define WRITEBGR32(dst, dstw, index, b, g, r, a, q0, q2, q3, t) REAL_WRITEBGR32(dst, dstw, index, b, g, r, a, q0, q2, q3, t)
#define REAL_WRITERGB16(dst, dstw, index) \
"pand "MANGLE(bF8)", %%mm2 \n\t" /* B */\
@ -1014,13 +1031,15 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
case PIX_FMT_RGB32:
YSCALEYUV2PACKEDX_ACCURATE
YSCALEYUV2RGBX
WRITEBGR32(%4, %5, %%REGa)
"pxor %%mm7, %%mm7 \n\t"
WRITEBGR32(%4, %5, %%REGa, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6)
YSCALEYUV2PACKEDX_END
return;
case PIX_FMT_BGR24:
YSCALEYUV2PACKEDX_ACCURATE
YSCALEYUV2RGBX
"pxor %%mm7, %%mm7 \n\t"
"lea (%%"REG_a", %%"REG_a", 2), %%"REG_c"\n\t" //FIXME optimize
"add %4, %%"REG_c" \n\t"
WRITEBGR24(%%REGc, %5, %%REGa)
@ -1035,6 +1054,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
case PIX_FMT_RGB555:
YSCALEYUV2PACKEDX_ACCURATE
YSCALEYUV2RGBX
"pxor %%mm7, %%mm7 \n\t"
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP
"paddusb "BLUE_DITHER"(%0), %%mm2\n\t"
@ -1048,6 +1068,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
case PIX_FMT_RGB565:
YSCALEYUV2PACKEDX_ACCURATE
YSCALEYUV2RGBX
"pxor %%mm7, %%mm7 \n\t"
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP
"paddusb "BLUE_DITHER"(%0), %%mm2\n\t"
@ -1076,12 +1097,14 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
case PIX_FMT_RGB32:
YSCALEYUV2PACKEDX
YSCALEYUV2RGBX
WRITEBGR32(%4, %5, %%REGa)
"pxor %%mm7, %%mm7 \n\t"
WRITEBGR32(%4, %5, %%REGa, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6)
YSCALEYUV2PACKEDX_END
return;
case PIX_FMT_BGR24:
YSCALEYUV2PACKEDX
YSCALEYUV2RGBX
"pxor %%mm7, %%mm7 \n\t"
"lea (%%"REG_a", %%"REG_a", 2), %%"REG_c" \n\t" //FIXME optimize
"add %4, %%"REG_c" \n\t"
WRITEBGR24(%%REGc, %5, %%REGa)
@ -1095,6 +1118,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
case PIX_FMT_RGB555:
YSCALEYUV2PACKEDX
YSCALEYUV2RGBX
"pxor %%mm7, %%mm7 \n\t"
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP
"paddusb "BLUE_DITHER"(%0), %%mm2 \n\t"
@ -1108,6 +1132,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
case PIX_FMT_RGB565:
YSCALEYUV2PACKEDX
YSCALEYUV2RGBX
"pxor %%mm7, %%mm7 \n\t"
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP
"paddusb "BLUE_DITHER"(%0), %%mm2 \n\t"
@ -1171,7 +1196,8 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, uint16_t *buf0, uint16_t *
"mov %4, %%"REG_b" \n\t"
"push %%"REG_BP" \n\t"
YSCALEYUV2RGB(%%REGBP, %5)
WRITEBGR32(%%REGb, 8280(%5), %%REGBP)
"pxor %%mm7, %%mm7 \n\t"
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6)
"pop %%"REG_BP" \n\t"
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
@ -1185,6 +1211,7 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, uint16_t *buf0, uint16_t *
"mov %4, %%"REG_b" \n\t"
"push %%"REG_BP" \n\t"
YSCALEYUV2RGB(%%REGBP, %5)
"pxor %%mm7, %%mm7 \n\t"
WRITEBGR24(%%REGb, 8280(%5), %%REGBP)
"pop %%"REG_BP" \n\t"
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
@ -1198,6 +1225,7 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, uint16_t *buf0, uint16_t *
"mov %4, %%"REG_b" \n\t"
"push %%"REG_BP" \n\t"
YSCALEYUV2RGB(%%REGBP, %5)
"pxor %%mm7, %%mm7 \n\t"
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP
"paddusb "BLUE_DITHER"(%5), %%mm2 \n\t"
@ -1219,6 +1247,7 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, uint16_t *buf0, uint16_t *
"mov %4, %%"REG_b" \n\t"
"push %%"REG_BP" \n\t"
YSCALEYUV2RGB(%%REGBP, %5)
"pxor %%mm7, %%mm7 \n\t"
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP
"paddusb "BLUE_DITHER"(%5), %%mm2 \n\t"
@ -1283,7 +1312,8 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"mov %4, %%"REG_b" \n\t"
"push %%"REG_BP" \n\t"
YSCALEYUV2RGB1(%%REGBP, %5)
WRITEBGR32(%%REGb, 8280(%5), %%REGBP)
"pxor %%mm7, %%mm7 \n\t"
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6)
"pop %%"REG_BP" \n\t"
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
@ -1297,6 +1327,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"mov %4, %%"REG_b" \n\t"
"push %%"REG_BP" \n\t"
YSCALEYUV2RGB1(%%REGBP, %5)
"pxor %%mm7, %%mm7 \n\t"
WRITEBGR24(%%REGb, 8280(%5), %%REGBP)
"pop %%"REG_BP" \n\t"
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
@ -1311,6 +1342,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"mov %4, %%"REG_b" \n\t"
"push %%"REG_BP" \n\t"
YSCALEYUV2RGB1(%%REGBP, %5)
"pxor %%mm7, %%mm7 \n\t"
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP
"paddusb "BLUE_DITHER"(%5), %%mm2 \n\t"
@ -1331,6 +1363,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"mov %4, %%"REG_b" \n\t"
"push %%"REG_BP" \n\t"
YSCALEYUV2RGB1(%%REGBP, %5)
"pxor %%mm7, %%mm7 \n\t"
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP
"paddusb "BLUE_DITHER"(%5), %%mm2 \n\t"
@ -1372,7 +1405,8 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"mov %4, %%"REG_b" \n\t"
"push %%"REG_BP" \n\t"
YSCALEYUV2RGB1b(%%REGBP, %5)
WRITEBGR32(%%REGb, 8280(%5), %%REGBP)
"pxor %%mm7, %%mm7 \n\t"
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6)
"pop %%"REG_BP" \n\t"
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
@ -1386,6 +1420,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"mov %4, %%"REG_b" \n\t"
"push %%"REG_BP" \n\t"
YSCALEYUV2RGB1b(%%REGBP, %5)
"pxor %%mm7, %%mm7 \n\t"
WRITEBGR24(%%REGb, 8280(%5), %%REGBP)
"pop %%"REG_BP" \n\t"
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
@ -1400,6 +1435,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"mov %4, %%"REG_b" \n\t"
"push %%"REG_BP" \n\t"
YSCALEYUV2RGB1b(%%REGBP, %5)
"pxor %%mm7, %%mm7 \n\t"
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP
"paddusb "BLUE_DITHER"(%5), %%mm2 \n\t"
@ -1420,6 +1456,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"mov %4, %%"REG_b" \n\t"
"push %%"REG_BP" \n\t"
YSCALEYUV2RGB1b(%%REGBP, %5)
"pxor %%mm7, %%mm7 \n\t"
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP
"paddusb "BLUE_DITHER"(%5), %%mm2 \n\t"

View File

@ -121,47 +121,68 @@
"punpcklbw %%mm5, %%mm2;" /* G7 G6 G5 G4 G3 G2 G1 G0 */\
#define YUV422_UNSHIFT \
if(c->srcFormat == PIX_FMT_YUV422P){ \
srcStride[1] *= 2; \
srcStride[2] *= 2; \
} \
#define YUV2RGB_LOOP(depth) \
h_size= (c->dstW+7)&~7; \
if(h_size*depth > FFABS(dstStride[0])) h_size-=8; \
\
__asm__ volatile ("pxor %mm4, %mm4;" /* zero mm4 */ ); \
for (y= 0; y<srcSliceH; y++ ) { \
uint8_t *image = dst[0] + (y+srcSliceY)*dstStride[0]; \
uint8_t *py = src[0] + y*srcStride[0]; \
uint8_t *pu = src[1] + (y>>1)*srcStride[1]; \
uint8_t *pv = src[2] + (y>>1)*srcStride[2]; \
long index= -h_size/2; \
#define YUV2RGB_INIT \
/* This MMX assembly code deals with a SINGLE scan line at a time, \
* it converts 8 pixels in each iteration. */ \
__asm__ volatile ( \
/* load data for start of next scan line */ \
"movd (%2, %0), %%mm0;" /* Load 4 Cb 00 00 00 00 u3 u2 u1 u0 */ \
"movd (%3, %0), %%mm1;" /* Load 4 Cr 00 00 00 00 v3 v2 v1 v0 */ \
"movq (%5, %0, 2), %%mm6;" /* Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 */ \
/* \
".balign 16 \n\t" \
*/ \
"1: \n\t" \
/* No speed difference on my p3@500 with prefetch, \
* if it is faster for anyone with -benchmark then tell me. \
PREFETCH" 64(%0) \n\t" \
PREFETCH" 64(%1) \n\t" \
PREFETCH" 64(%2) \n\t" \
*/ \
#define YUV2RGB_ENDLOOP(depth) \
"add $"AV_STRINGIFY(depth*8)", %1 \n\t" \
"add $4, %0 \n\t" \
" js 1b \n\t" \
\
: "+r" (index), "+r" (image) \
: "r" (pu - index), "r" (pv - index), "r"(&c->redDither), "r" (py - 2*index) \
); \
} \
__asm__ volatile (EMMS); \
return srcSliceH; \
static inline int RENAME(yuv420_rgb16)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]){
int y, h_size;
if(c->srcFormat == PIX_FMT_YUV422P){
srcStride[1] *= 2;
srcStride[2] *= 2;
}
h_size= (c->dstW+7)&~7;
if(h_size*2 > FFABS(dstStride[0])) h_size-=8;
__asm__ volatile ("pxor %mm4, %mm4;" /* zero mm4 */ );
//printf("%X %X %X %X %X %X %X %X %X %X\n", (int)&c->redDither, (int)&c->blueDither, (int)src[0], (int)src[1], (int)src[2], (int)dst[0],
//srcStride[0],srcStride[1],srcStride[2],dstStride[0]);
for (y= 0; y<srcSliceH; y++ ) {
uint8_t *image = dst[0] + (y+srcSliceY)*dstStride[0];
uint8_t *py = src[0] + y*srcStride[0];
uint8_t *pu = src[1] + (y>>1)*srcStride[1];
uint8_t *pv = src[2] + (y>>1)*srcStride[2];
long index= -h_size/2;
YUV422_UNSHIFT
YUV2RGB_LOOP(2)
c->blueDither= ff_dither8[y&1];
c->greenDither= ff_dither4[y&1];
c->redDither= ff_dither8[(y+1)&1];
/* This MMX assembly code deals with a SINGLE scan line at a time,
* it converts 8 pixels in each iteration. */
__asm__ volatile (
/* load data for start of next scan line */
"movd (%2, %0), %%mm0;" /* Load 4 Cb 00 00 00 00 u3 u2 u1 u0 */
"movd (%3, %0), %%mm1;" /* Load 4 Cr 00 00 00 00 v3 v2 v1 v0 */
"movq (%5, %0, 2), %%mm6;" /* Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 */
//".balign 16 \n\t"
"1: \n\t"
/* No speed difference on my p3@500 with prefetch,
* if it is faster for anyone with -benchmark then tell me.
PREFETCH" 64(%0) \n\t"
PREFETCH" 64(%1) \n\t"
PREFETCH" 64(%2) \n\t"
*/
YUV2RGB
YUV2RGB_INIT
YUV2RGB
#ifdef DITHER1XBPP
"paddusb "BLUE_DITHER"(%4), %%mm0;"
@ -201,55 +222,22 @@ YUV2RGB
MOVNTQ " %%mm5, 8 (%1);" /* store pixel 4-7 */
"add $16, %1 \n\t"
"add $4, %0 \n\t"
" js 1b \n\t"
: "+r" (index), "+r" (image)
: "r" (pu - index), "r" (pv - index), "r"(&c->redDither), "r" (py - 2*index)
);
}
__asm__ volatile (EMMS);
return srcSliceH;
YUV2RGB_ENDLOOP(2)
}
static inline int RENAME(yuv420_rgb15)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]){
int y, h_size;
if(c->srcFormat == PIX_FMT_YUV422P){
srcStride[1] *= 2;
srcStride[2] *= 2;
}
h_size= (c->dstW+7)&~7;
if(h_size*2 > FFABS(dstStride[0])) h_size-=8;
__asm__ volatile ("pxor %mm4, %mm4;" /* zero mm4 */ );
//printf("%X %X %X %X %X %X %X %X %X %X\n", (int)&c->redDither, (int)&c->blueDither, (int)src[0], (int)src[1], (int)src[2], (int)dst[0],
//srcStride[0],srcStride[1],srcStride[2],dstStride[0]);
for (y= 0; y<srcSliceH; y++ ) {
uint8_t *image = dst[0] + (y+srcSliceY)*dstStride[0];
uint8_t *py = src[0] + y*srcStride[0];
uint8_t *pu = src[1] + (y>>1)*srcStride[1];
uint8_t *pv = src[2] + (y>>1)*srcStride[2];
long index= -h_size/2;
YUV422_UNSHIFT
YUV2RGB_LOOP(2)
c->blueDither= ff_dither8[y&1];
c->greenDither= ff_dither8[y&1];
c->redDither= ff_dither8[(y+1)&1];
/* This MMX assembly code deals with a SINGLE scan line at a time,
* it converts 8 pixels in each iteration. */
__asm__ volatile (
/* load data for start of next scan line */
"movd (%2, %0), %%mm0;" /* Load 4 Cb 00 00 00 00 u3 u2 u1 u0 */
"movd (%3, %0), %%mm1;" /* Load 4 Cr 00 00 00 00 v3 v2 v1 v0 */
"movq (%5, %0, 2), %%mm6;" /* Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 */
//".balign 16 \n\t"
"1: \n\t"
YUV2RGB
YUV2RGB_INIT
YUV2RGB
#ifdef DITHER1XBPP
"paddusb "BLUE_DITHER"(%4), %%mm0 \n\t"
@ -291,49 +279,18 @@ YUV2RGB
MOVNTQ " %%mm5, 8 (%1);" /* store pixel 4-7 */
"add $16, %1 \n\t"
"add $4, %0 \n\t"
" js 1b \n\t"
: "+r" (index), "+r" (image)
: "r" (pu - index), "r" (pv - index), "r"(&c->redDither), "r" (py - 2*index)
);
}
__asm__ volatile (EMMS);
return srcSliceH;
YUV2RGB_ENDLOOP(2)
}
static inline int RENAME(yuv420_rgb24)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]){
int y, h_size;
if(c->srcFormat == PIX_FMT_YUV422P){
srcStride[1] *= 2;
srcStride[2] *= 2;
}
YUV422_UNSHIFT
YUV2RGB_LOOP(3)
h_size= (c->dstW+7)&~7;
if(h_size*3 > FFABS(dstStride[0])) h_size-=8;
__asm__ volatile ("pxor %mm4, %mm4;" /* zero mm4 */ );
for (y= 0; y<srcSliceH; y++ ) {
uint8_t *image = dst[0] + (y+srcSliceY)*dstStride[0];
uint8_t *py = src[0] + y*srcStride[0];
uint8_t *pu = src[1] + (y>>1)*srcStride[1];
uint8_t *pv = src[2] + (y>>1)*srcStride[2];
long index= -h_size/2;
/* This MMX assembly code deals with a SINGLE scan line at a time,
* it converts 8 pixels in each iteration. */
__asm__ volatile (
/* load data for start of next scan line */
"movd (%2, %0), %%mm0;" /* Load 4 Cb 00 00 00 00 u3 u2 u1 u0 */
"movd (%3, %0), %%mm1;" /* Load 4 Cr 00 00 00 00 v3 v2 v1 v0 */
"movq (%5, %0, 2), %%mm6;" /* Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 */
//".balign 16 \n\t"
"1: \n\t"
YUV2RGB
YUV2RGB_INIT
YUV2RGB
/* mm0=B, %%mm2=G, %%mm1=R */
#if HAVE_MMX2
"movq "MANGLE(ff_M24A)", %%mm4 \n\t"
@ -436,50 +393,18 @@ YUV2RGB
"pxor %%mm4, %%mm4 \n\t"
#endif
"add $24, %1 \n\t"
"add $4, %0 \n\t"
" js 1b \n\t"
: "+r" (index), "+r" (image)
: "r" (pu - index), "r" (pv - index), "r"(&c->redDither), "r" (py - 2*index)
);
}
__asm__ volatile (EMMS);
return srcSliceH;
YUV2RGB_ENDLOOP(3)
}
static inline int RENAME(yuv420_rgb32)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]){
int y, h_size;
if(c->srcFormat == PIX_FMT_YUV422P){
srcStride[1] *= 2;
srcStride[2] *= 2;
}
YUV422_UNSHIFT
YUV2RGB_LOOP(4)
h_size= (c->dstW+7)&~7;
if(h_size*4 > FFABS(dstStride[0])) h_size-=8;
__asm__ volatile ("pxor %mm4, %mm4;" /* zero mm4 */ );
for (y= 0; y<srcSliceH; y++ ) {
uint8_t *image = dst[0] + (y+srcSliceY)*dstStride[0];
uint8_t *py = src[0] + y*srcStride[0];
uint8_t *pu = src[1] + (y>>1)*srcStride[1];
uint8_t *pv = src[2] + (y>>1)*srcStride[2];
long index= -h_size/2;
/* This MMX assembly code deals with a SINGLE scan line at a time,
* it converts 8 pixels in each iteration. */
__asm__ volatile (
/* load data for start of next scan line */
"movd (%2, %0), %%mm0;" /* Load 4 Cb 00 00 00 00 u3 u2 u1 u0 */
"movd (%3, %0), %%mm1;" /* Load 4 Cr 00 00 00 00 v3 v2 v1 v0 */
"movq (%5, %0, 2), %%mm6;" /* Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 */
//".balign 16 \n\t"
"1: \n\t"
YUV2RGB
YUV2RGB_INIT
YUV2RGB
/* convert RGB plane to RGB packed format,
mm0 -> B, mm1 -> R, mm2 -> G, mm3 -> 0,
mm4 -> GB, mm5 -> AR pixel 4-7,
@ -522,15 +447,5 @@ YUV2RGB
"pxor %%mm4, %%mm4;" /* zero mm4 */
"movq 8 (%5, %0, 2), %%mm6;" /* Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 */
"add $32, %1 \n\t"
"add $4, %0 \n\t"
" js 1b \n\t"
: "+r" (index), "+r" (image)
: "r" (pu - index), "r" (pv - index), "r"(&c->redDither), "r" (py - 2*index)
);
}
__asm__ volatile (EMMS);
return srcSliceH;
YUV2RGB_ENDLOOP(4)
}

View File

@ -158,12 +158,12 @@ const struct vo_driver *video_out_drivers[] =
#ifdef CONFIG_3DFX
&video_out_3dfx,
#endif
#if CONFIG_VDPAU
&video_out_vdpau,
#endif
#ifdef CONFIG_XV
&video_out_xv,
#endif
#if CONFIG_VDPAU
&video_out_vdpau,
#endif
#ifdef CONFIG_X11
&video_out_x11,
&video_out_xover,

File diff suppressed because it is too large Load Diff

View File

@ -42,6 +42,7 @@
#include "x11_common.h"
#include "aspect.h"
#include "sub.h"
#include "subopt-helper.h"
#include "libavcodec/vdpau.h"
@ -111,6 +112,8 @@ static VdpOutputSurfaceDestroy *vdp_output_surface_destroy;
static VdpVideoMixerCreate *vdp_video_mixer_create;
static VdpVideoMixerDestroy *vdp_video_mixer_destroy;
static VdpVideoMixerRender *vdp_video_mixer_render;
static VdpVideoMixerSetFeatureEnables *vdp_video_mixer_set_feature_enables;
static VdpVideoMixerSetAttributeValues *vdp_video_mixer_set_attribute_values;
static VdpPresentationQueueTargetDestroy *vdp_presentation_queue_target_destroy;
static VdpPresentationQueueCreate *vdp_presentation_queue_create;
@ -132,6 +135,10 @@ static VdpOutputSurface output_surfaces[NUM_OUTPUT_SURFACES];
static int output_surface_width, output_surface_height;
static VdpVideoMixer video_mixer;
static int deint;
static int pullup;
static float denoise;
static float sharpen;
static VdpDecoder decoder;
static int decoder_max_refs;
@ -171,6 +178,9 @@ static void video_to_output_surface(void)
&dummy);
CHECK_ST_WARNING("Error when calling vdp_presentation_queue_block_until_surface_idle")
// we would need to provide past and future frames to allow deinterlacing,
// which is not really possible currently. Deinterlacing is supposed to fall
// back to bob deinterlacing, but that seems not to work either.
vdp_st = vdp_video_mixer_render(video_mixer, VDP_INVALID_HANDLE, 0,
VDP_VIDEO_MIXER_PICTURE_STRUCTURE_FRAME,
0, NULL, surface_render[vid_surface_num].surface, 0, NULL, &src_rect_vid,
@ -254,6 +264,10 @@ static int win_x11_init_vdpau_procs(void)
{VDP_FUNC_ID_VIDEO_MIXER_CREATE, &vdp_video_mixer_create},
{VDP_FUNC_ID_VIDEO_MIXER_DESTROY, &vdp_video_mixer_destroy},
{VDP_FUNC_ID_VIDEO_MIXER_RENDER, &vdp_video_mixer_render},
{VDP_FUNC_ID_VIDEO_MIXER_SET_FEATURE_ENABLES,
&vdp_video_mixer_set_feature_enables},
{VDP_FUNC_ID_VIDEO_MIXER_SET_ATTRIBUTE_VALUES,
&vdp_video_mixer_set_attribute_values},
{VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_DESTROY,
&vdp_presentation_queue_target_destroy},
{VDP_FUNC_ID_PRESENTATION_QUEUE_CREATE, &vdp_presentation_queue_create},
@ -310,7 +324,16 @@ static int win_x11_init_vdpau_flip_queue(void)
static int create_vdp_mixer(VdpChromaType vdp_chroma_type) {
#define VDP_NUM_MIXER_PARAMETER 3
#define MAX_NUM_FEATURES 5
int i;
VdpStatus vdp_st;
int feature_count = 0;
VdpVideoMixerFeature features[MAX_NUM_FEATURES];
VdpBool feature_enables[MAX_NUM_FEATURES];
static const denoise_attrib[] = {VDP_VIDEO_MIXER_ATTRIBUTE_NOISE_REDUCTION_LEVEL};
const void * const denoise_value[] = {&denoise};
static const sharpen_attrib[] = {VDP_VIDEO_MIXER_ATTRIBUTE_SHARPNESS_LEVEL};
const void * const sharpen_value[] = {&sharpen};
static const VdpVideoMixerParameter parameters[VDP_NUM_MIXER_PARAMETER] = {
VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_WIDTH,
VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_HEIGHT,
@ -321,13 +344,31 @@ static int create_vdp_mixer(VdpChromaType vdp_chroma_type) {
&vid_height,
&vdp_chroma_type
};
if (deint == 1)
features[feature_count++] = VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL;
if (deint == 2)
features[feature_count++] = VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL;
if (pullup)
features[feature_count++] = VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE;
if (denoise)
features[feature_count++] = VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION;
if (sharpen)
features[feature_count++] = VDP_VIDEO_MIXER_FEATURE_SHARPNESS;
vdp_st = vdp_video_mixer_create(vdp_device, 0, 0,
vdp_st = vdp_video_mixer_create(vdp_device, feature_count, features,
VDP_NUM_MIXER_PARAMETER,
parameters, parameter_values,
&video_mixer);
CHECK_ST_ERROR("Error when calling vdp_video_mixer_create")
for (i = 0; i < feature_count; i++) feature_enables[i] = VDP_TRUE;
if (feature_count)
vdp_video_mixer_set_feature_enables(video_mixer, feature_count, features, feature_enables);
if (denoise)
vdp_video_mixer_set_attribute_values(video_mixer, 1, denoise_attrib, denoise_value);
if (sharpen)
vdp_video_mixer_set_attribute_values(video_mixer, 1, sharpen_attrib, sharpen_value);
return 0;
}
@ -711,15 +752,43 @@ static void uninit(void)
dlclose(vdpau_lib_handle);
}
static opt_t subopts[] = {
{"deint", OPT_ARG_INT, &deint, (opt_test_f)int_non_neg},
{"pullup", OPT_ARG_BOOL, &pullup, NULL},
{"denoise", OPT_ARG_FLOAT, &denoise, NULL},
{"sharpen", OPT_ARG_FLOAT, &sharpen, NULL},
{NULL}
};
static const char help_msg[] =
"\n-vo vdpau command line help:\n"
"Example: mplayer -vo vdpau:deint=2\n"
"\nOptions:\n"
" deint\n"
" 0: no deinterlacing\n"
" 1: temporal deinterlacing (not yet working)\n"
" 2: temporal-spatial deinterlacing (not yet working)\n"
" pullup\n"
" Try to apply inverse-telecine (needs deinterlacing, not working)\n"
" denoise\n"
" Apply denoising, argument is strength from 0.0 to 1.0\n"
" sharpen\n"
" Apply sharpening or softening, argument is strength from -1.0 to 1.0\n"
;
static int preinit(const char *arg)
{
int i;
static const char *vdpaulibrary = "libvdpau.so.1";
static const char *vdpau_device_create = "vdp_device_create_x11";
if (arg) {
mp_msg(MSGT_VO, MSGL_ERR, "[vdpau] Unknown subdevice: %s\n", arg);
return ENOSYS;
deint = 0;
pullup = 0;
denoise = 0;
sharpen = 0;
if (subopt_parse(arg, subopts) != 0) {
mp_msg(MSGT_VO, MSGL_FATAL, help_msg);
return -1;
}
vdpau_lib_handle = dlopen(vdpaulibrary, RTLD_LAZY);

File diff suppressed because it is too large Load Diff