mirror of https://github.com/mpv-player/mpv
Merge svn changes up to r28690
This commit is contained in:
commit
ebb541c655
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
</para>
|
||||
|
||||
<para>
|
||||
Если используется эмуляция SCSI, вам следует применять настройки к реальному IDE
|
||||
Если используется эмуляция SCSI, Вам следует применять настройки к реальному IDE
|
||||
устройству, а не сэмулированному SCSI.
|
||||
</para>
|
||||
|
||||
|
@ -157,14 +157,14 @@
|
|||
Приводы, реализующие региональную защиту исключительно при помощи
|
||||
программного обеспечения, известны как RPC-1 приводы, реализующие ее
|
||||
аппаратно — 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>.
|
||||
Хотя обычные предостережения, касающиеся обновления прошивки, остаются в силе,
|
||||
|
|
|
@ -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> — это проигрыватель фильмов для 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>'а,
|
||||
таким образом получив возможность перемещаться
|
||||
по фильму! Как видите стабильность и качество - наиболее важные вещи,
|
||||
но скорость также изумительна. Кроме того у него мощная
|
||||
система плагинов для манипуляции видео.
|
||||
по фильму! Как видите стабильность и качество — наиболее важные вещи,
|
||||
но скорость также изумительна. Кроме того имеется мощная
|
||||
система фильтров для манипуляции с видео и аудио.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<application>MEncoder</application> (Кодировщик фильмов <application>MPlayer
|
||||
</application>'a [<application>MPlayer</application>'s Movie Encoder]) - это простой
|
||||
</application>'a) — это простой
|
||||
кодировщик фильмов предназначенный для кодирования фильмов, проигрываемых 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>
|
||||
|
|
|
@ -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 для компиляции их программ и
|
||||
Эта проблема — результат разработчиков Apple, использующих 10.4 для компиляции их программ и
|
||||
распространяющих бинарники пользователям 10.3 через Software Update.
|
||||
Неопределённые символы присутствуют в 10.4, но их нет в 10.3.
|
||||
Одно из решений - откат QuickTime до версии 7.0.1, но есть и лучшее.
|
||||
Одно из решений — откат 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 < 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%)
|
||||
текущий уровень использования кеша. (нормальное значение — около 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 при попытке воспроизвести файлы
|
||||
(Типичные симптомы — 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>
|
||||
При попытке захвата с тюнера, все работает, но цвета - неправильные. С другими приложениями
|
||||
При попытке захвата с тюнера, все работает, но цвета — неправильные. С другими приложениями
|
||||
все в порядке.
|
||||
</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. Ещё один вариант — запуск <application>MPlayer</application>
|
||||
с artsdsp.
|
||||
</para></answer>
|
||||
</qandaentry>
|
||||
|
@ -748,28 +720,28 @@ aRts блокирует звуковое устройство. Либо подо
|
|||
<qandaentry>
|
||||
<question><para>
|
||||
Проблема с синхронизацией A/V. Некоторые из моих AVI файлов проигрываются нормально, но
|
||||
некоторые - с двойной скоростью!
|
||||
некоторые — с двойной скоростью!
|
||||
</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 — фиксированную,
|
||||
необходимо её установить вручную опцией <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 <имя_файла></option>
|
||||
Просто укажите <application>MEncoder</application> опцию <option>-sub <имя_файла></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">&</emphasis> в конце команды
|
||||
(обратите внимание на
|
||||
<emphasis role="bold">&</emphasis> в конце команды
|
||||
<command>mplayer</command>):
|
||||
<screen>
|
||||
mkfifo encode
|
||||
mplayer -ao pcm -aofile <replaceable>encode</replaceable> dvd://1 &
|
||||
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 —
|
||||
это тэг 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> — это '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 оба — полные MPEG-4 (ASP).
|
||||
Таким образом, если Вы установите FourCC в DIVX, некоторые плохие
|
||||
программные или аппаратные проигрыватели могут быть в шоке от дополнительных
|
||||
возможностей, которые
|
||||
<systemitem class="library">libavcodec</systemitem> поддерживает , а DivX - нет;
|
||||
возможностей, которые
|
||||
<systemitem class="library">libavcodec</systemitem> поддерживает,
|
||||
а DivX — нет;
|
||||
с другой стороны <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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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},
|
||||
|
|
|
@ -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 со следующими расширениями:"
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
972
libvo/vo_svga.c
972
libvo/vo_svga.c
File diff suppressed because it is too large
Load Diff
|
@ -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);
|
||||
|
|
1792
libvo/vo_xvmc.c
1792
libvo/vo_xvmc.c
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue