Merge svn changes up to r31097

This commit is contained in:
Uoti Urpala 2010-04-26 19:22:56 +03:00
commit f38efd166e
30 changed files with 627 additions and 278 deletions

View File

@ -7501,7 +7501,7 @@ Specify an initial value for the PTS.
Uses the
.IR n th
incoming PTS as the initial PTS.
All previous pts are kept, so setting a huge value or \-1 keeps the PTS
All previous PTS are kept, so setting a huge value or \-1 keeps the PTS
intact.
.IPs autofps=<n>
Uses the
@ -10672,17 +10672,17 @@ slower and less effective at compression.
.
.TP
.B slice_max_size=<0 or positive integer>
Maximum slice size in bytes (default:0).
Maximum slice size in bytes (default: 0).
A value of zero disables the maximum.
.
.TP
.B slice_max_mbs=<0 or positive integer>
Maximum slice size in number of macroblocks (default:0).
Maximum slice size in number of macroblocks (default: 0).
A value of zero disables the maximum.
.
.TP
.B slices=<0 or positive integer>
Maximum number of slices per frame (default:0).
Maximum number of slices per frame (default: 0).
A value of zero disables the maximum.
.
.TP

View File

@ -1,4 +1,4 @@
.\" Synced with r30503
.\" Synced with r31096
.\" MPlayer (C) 2000-2010 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 "2010. 02. 06." "MPlayer Project" "A film lejátszó"
.TH MPlayer 1 "2010. 04. 25." "MPlayer Project" "A film lejátszó"
.
.SH NÉV
mplayer \- film lejátszó
@ -289,6 +289,8 @@ K
Képernyőmentések készítésének elindítása/leállítása.
.IPs "I\ \ \ \ "
Fájlnév megjelenítése az OSD-n.
.IPs "P\ \ \ \ "
Megjeleníti a folyamatsávot, az eltelt időt és az össz hosszot az OSD-n.
.IPs "! és @"
Ugrás az előző/következő fejezet elejére.
.IPs "D (csak \-vo xvmc, \-vo vdpau, \-vf yadif, \-vf kerndeint mellett)"
@ -637,6 +639,10 @@ lavcopts=mbd=2:trell=yes:v4mv=yes
.SH "ÁLTALÁNOS OPCIÓK"
.
.TP
.B \-codecpath <könyvtár>
Megadja a bináris codec-ek könyvtárát.
.
.TP
.B \-codecs\-file <fájlnév> (lásd még \-afm, \-ac, \-vfm, \-vc)
Felülbírálja a szabványos keresési útvonalat és a megadott fájlt
használja a beépített codecs.conf helyett.
@ -1548,6 +1554,9 @@ Ez a kapcsol
.TP
.B \-mc <másodperc/képkocka>
Maximális A-V szinkron javítás egy képkocka alatt (másodpercben).
.br
A \-mc 0 opciót mindig a \-noskip opcióval kell használni a mencodernél,
különben majdnem biztosan A-V csúszást okoz.
.
.TP
.B \-mf <opció1:opció2:...>
@ -2878,9 +2887,9 @@ OS/2 KAI audi
.PD 0
.RSs
.IPs uniaud
UNIAUD mód kényszerítése
UNIAUD mód kényszerítése.
.IPs dart
DART mód kényszerítése
DART mód kényszerítése.
.IPs (no)share
Audió megosztott vagy kizárólagos módban történő megnyitása.
.IPs bufsize=<méret>
@ -3156,13 +3165,16 @@ A teljes k
.PD 1
.
.TP
.B \-geometry x[%][:y[%]] vagy [WxH][+x+y]
.B \-geometry x[%][:y[%]] vagy [WxH][+-x+-y]
Annak beállítása hogy kezdéskor hova lesz kirakva a video.
Az x és y érték a képernyő bal felső sarkától a megjelenítendő ablak
bal felső sarkáig mért távolság pixelben, vagy ha egy százalék jelet
írsz az érték mögé, akkor a képernyő adott irányú méretének százalék
érték lesz. Támogatja továbbá a szabványos X11 \-geometry formátumot is.
Ha egy külső ablak is meg van adva a \-win opcióval, akkor az x és y
érték lesz. Támogatja továbbá a szabványos X11 \-geometry opció formátumot
is, melyben pl. a +10-50 azt jelenti, hogy "tedd 10 pixellel a bal szegély
mellé és 50 pixellel az alsó szegély fölé", a "--20+-10" pedig azt, hogy
"tedd 20 pixellel a jobb szegélyen túl és 10 pixellel a felső szegély fölé".
Ha egy külső ablak is meg van adva a \-wid opcióval, akkor az x és y
koordináták az ablak bal felső sarkához viszonyulnak a képernyő helyett.
A \-xineramascreen kapcsolóval megadott koordináták a képernyőhöz
viszonyítottak, azon videó kimeneti vezérlőknél, amelyek teljes mértékben
@ -3510,8 +3522,7 @@ Vez
.PD 1
.
.TP
.B vdpau (\-vc ffmpeg12vdpau, ffwmv3vdpau, ffvc1vdpau, ffh264vdpau vagy
ffodivxvdpau kapcsolókkal)
.B vdpau (\-vc ffmpeg12vdpau, ffwmv3vdpau, ffvc1vdpau, ffh264vdpau vagy ffodivxvdpau 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.
.PD 0
@ -5847,9 +5858,10 @@ Haszn
.IPs <reset>
Számláló, mely megadja, hogy hány képkocka után fogja törölni a cropdetect
az előzőleg detektált legnagyobb videó méretet és végzi el újra az optimális
vágási terület megállapítását. Ez hasznos lehet, ha csatorna logók zavarják
a videó területét. A 0 azt jelenti, hogy soha nem resetel és a lejátszás
során talált legnagyobb területet használja. (alapértelmezett: 0).
vágási terület megállapítását (alapértelmezett: 0).
Ez hasznos lehet, ha csatorna logók zavarják a videó területét.
A 0 azt jelenti, hogy soha nem resetel és a lejátszás során talált legnagyobb
területet használja.
.RE
.PD 1
.
@ -7524,6 +7536,48 @@ A nagyobb sug
területek közelében lévő pixelek módosításában (alapértelmezett: 16).
.RE
.
.TP
.B fixpts[=opciók]
Javítja a kockák prezentációs időbélyegjeit (PTS).
Alapértelmezetten a következő szűrőnek átadott PTS el lesz dobva, de az
alábbi opciók megváltoztathatják ezt:
.RSs
.IPs print
Kiírja a bejövő PTS-t.
.IPs fps=<fps>
Megadja a kocka per másodperc értéket.
.IPs start=<pts>
Megad egy kezdeti PTS értéket.
.IPs autostart=<n>
Az
.IR n-dik
bejövő PTS-t használja kezdetiként.
Minden előző PTS-t megtart, így egy nagy vagy \-1 érték érintetlenül
hagyja a PTS-t.
.IPs autofps=<n>
Az
.IR n-dik
bejövő PTS-t használja az autostart után a kocka ráta megállapításához.
.RE
.sp 1
.RS
.I PÉLDA:
.RE
.PD 0
.RSs
.IPs "\-vf fixpts=fps=24000/1001,ass,fixpts"
A PTS-ek új sorozatát állítja elő, használja az ASS feliratokhoz, majd eldobja.
Egy új sorozat generálása hasznos, ha az időbélyegek törlődnek a program közben;
ez gyakori a DVD-knél.
Az eldobásuk szükséges lehet, hogy a kódolók ne zavarodjanak össze.
.RE
.PD 1
.sp 1
.RS
.I MEGJEGYZÉS:
Ezen szűrő és bármelyik keresési forma (beleértve a -ss -t és az EDL-eket)
együttes használata kiszabadíthatja a szellemet a palackból.
.RE
.
.
.SH "ÁLTALÁNOS KÓDOLÁSI OPCIÓK (CSAK MENCODER)"
@ -10149,9 +10203,16 @@ P-kock
de nem nullázzák a "keyint számlálót".
.
.TP
.B (no)intra_refresh
Periódikus intra blokk frissítés a kulcskockák helyett (alapértelmezett: letiltva).
Ez az opció letiltja az IDR-kockákat és helyettük azintra-kódolású blokkok egy mozgó,
függőleges sávját használja. Ez csökkenti a tömörítési hatékonyságot, de
jó az alacsony késleltetésű stream-elésnél és ellenálló a csomagvesztéssel szemben.
.
.TP
.B frameref=<1\-16>
A B- és P-kockák becsléséhez felhasznált előzetes képkockák száma
(alapértelmezett: 1).
(alapértelmezett: 3).
Ez hatásos anime-nál, de élő akciós anyagnál a javulás általában
nagyon gyorsan el is veszik 6 vagy több referenciakocka felett.
Ennek nincs hatása a dekódolási sebességre, de növeli a dekódoláshoz
@ -10160,7 +10221,7 @@ N
.
.TP
.B bframes=<0\-16>
maximálisan egymást követő B-kockák száma az I- és P-kockák között (alapértelmezett: 0)
maximálisan egymást követő B-kockák száma az I- és P-kockák között (alapértelmezett: 3)
.
.TP
.B (no)b_adapt
@ -10236,6 +10297,20 @@ maxim
kockák között (alapértelmezett: 4)
.
.TP
.B (no)mbtree
Engedélyezi a makroblokk fa rátavezérlését (alapértelmezett: engedélyezve).
Hosszú előretekintést használ az adat időbeli terjedésének vizsgálatához és
megfelelően súlyozza a minőséget.
Több lépéses módban ez egy külön statisztika fájlt készít, melynek neve
<passlogfile>.mbtree.
.
.TP
.B rc_lookahead=<0\-250>
Beállítja az mbtree előretekintésének távolságát (alapértelmezett: 40).
A nagyobb értékek lassabbak lesznek és az x264 több memóriát fog használni,
de jobb minőséget fog eredményezni.
.
.TP
.B ratetol=<0.1\-100.0> (ABR vagy két lépéses)
megengedett variancia az átlagos bitrátában (nincs saját mértékegysége) (alapértelmezett: 1.0)
.
@ -10327,6 +10402,20 @@ A direct_pred=none lassabb is
.RE
.
.TP
.B weightp
Súlyozott P-kocka jóslás mód (alapértelmezett: 2).
.PD 0
.RSs
.IPs 0
letiltva (leggyorsabb)
.IPs 1
vak mód (kicsit jobb minőség)
.IPs 2
okos mód (legjobb)
.RE
.PD 1
.
.TP
.B (no)weight_b
Súlyozott becslés használata a B-kockákhoz.
Ezen opció nélkül a kétirányúan megjósolt makroblokkok azonos szélességet
@ -10430,9 +10519,9 @@ Finom
SATD metrikával a kétirányú kereséssel megtalált vektorok újra felhasználása helyett.
.IPs 6
Engedélyezi a ráta-torzítás optimalizálását a makroblokk típusokra
az I- és P-kockáknál (alapértelmezett).
az I- és P-kockáknál.
.IPs 7
Engedélyezi a ráta-torzítás optimalizálását a makroblokk típusokra minden kockánál.
Engedélyezi a ráta-torzítás optimalizálását a makroblokk típusokra minden kockánál (alapértelmezett).
.IPs 8
Engedélyezi a ráta-torzítás optimalizálását a mozgás vektorokra és a
belső jósló módokra az I- és P-kockáknál.
@ -10465,9 +10554,9 @@ r
.PD 0
.RSs
.IPs 0
letiltva (alapértelmezett)
letiltva
.IPs 1
csak a végső kódoláshoz engedélyezi
csak a végső kódoláshoz engedélyezi (alapértelmezett)
.IPs 2
minden mód döntésnél engedélyezi (lassú, subq>=6 szükséges)
.RE
@ -10486,6 +10575,11 @@ trellis (trellis kell hozz
.PD 1
.
.TP
.B (no)psy
Engedélyezi a pszichovizuális optimalizációkat, melyek rontják a PSNR-t és az
SSIM-et, de jobban néznek ki (alapértelmezett: engedélyezve).
.
.TP
.B deadzone_inter=<0\-32>
Beállítja az inter luma kvantálás holtterét a nem-rácsos kvantáláshoz
(alapértelmezett: 21).
@ -10618,12 +10712,43 @@ Csak akkor haszn
.
.TP
.B threads=<0\-16>
Gyermek szálak száma párhuzamos kódolásnál több CPU esetén (alapértelmezett: 1).
Gyermek szálak száma párhuzamos kódolásnál több CPU esetén (alapértelmezett: 0).
Ez nagyon kis mértékben ront a tömörített minőségen.
A 0 vagy 'auto' az x264-re bízza a CPU-k számának detektálását és
a szálak megfelelő számának kiválasztását.
.
.TP
.B (no)sliced_threads
Szelet alapú szálkezelést használ (alapértelmezett: letiltva).
A normális szálkezeléstől eltérően ez az opció nem növeli a kódolási késleltetést,
de kicsit lassabb és kisebb a hatékonysága a tömörítésnél.
.
.TP
.B slice_max_size=<0 vagy pozitív egész>
Maximális szelet méret bájtban (alapértelmezett: 0).
A nulla érték letiltja a maximumot.
.
.TP
.B slice_max_mbs=<0 vagy pozitív egész>
Maximális szelet méret a makroblokkok számában (alapértelmezett: 0).
A nulla érték letiltja a maximumot.
.
.TP
.B slices=<0 vagy pozitív egész>
A szeletek maximális száma kockánként (alapértelmezett: 0).
A nulla érték letiltja a maximumot.
.
.TP
.B sync_lookahead=<0\-250>
Beállítja a szálas előretekintő buffer méretét (alapértelmezett: 0).
A 0 vagy 'auto' hatására az x264 automatikusan megállapítja a buffer méretét.
.
.TP
.B (no)deterministic
Csak determinisztikus optimalizációt használ többszálas kódolással (alapértelmezett:
engedélyezve).
.
.TP
.B (no)global_header
Az SPS és a PPS csak egyszer fog megjelenni, a bitfolyam elején
(alapértelmezett: letiltva).
@ -10635,6 +10760,61 @@ Alap
Videó tartalmának átlapoltként történő kezelése.
.
.TP
.B (no)constrained_intra
Engedélyezi a kényszerített intra előrejelzést (alapértelmezett: letiltva).
Ez jelentősen rontja a tömörítést, de szükséges az SVC kódolások alaprétegéhez.
.
.TP
.B (no)aud
Elérési egység elválasztókat ír a folyamba (alapértelmezett: letiltva).
Csak akkor engedélyezd ezt, ha a cél konténer formátumnak szüksége van az
elérési egység elválasztókra.
.
.TP
.B overscan=<undef|show|crop>
Beveszi a VUI overscan információkat a folyamba (alapértelmezett: letiltva).
Lásd a doc/vui.txt fájlt az x264 forráskódjában a további információkért.
.
.TP
.B videoformat=<component|pal|ntsc|secam|mac|undef>
Beveszi a VUI videó formátum információt a folyamba (alapértelmezett: letiltva).
Ez egy pusztán informatív beállítás az eredeti forrás leírásához.
Lásd a doc/vui.txt fájlt az x264 forráskódjában a további információkért.
.
.TP
.B (no)fullrange
Beveszi a VUI full range információt a folyamba (alapértelmezett: letiltva).
Használd ezt az opciót, ha a forrás videód nem range korlátozott.
Lásd a doc/vui.txt fájlt az x264 forráskódjában a további információkért.
.
.TP
.B colorprim=<bt709|bt470m|bt470bg|smpte170m|smpte240m|film|undef>
Beveszi a szín információt (alapértelmezett: letiltva).
Ez színkorrekcióhoz használható.
Lásd a doc/vui.txt fájlt az x264 forráskódjában a további információkért.
.
.TP
.B transfer=<bt709|bt470m|bt470bg|linear|log100|log316|smpte170m|smpte240m>
Beveszi a VUI átviteli karakterisztika információját a folyamba
(alapértelmezett: letiltva).
Ez színkorrekcióhoz használható.
Lásd a doc/vui.txt fájlt az x264 forráskódjában a további információkért.
.
.TP
.B colormatrix=<bt709|fcc|bt470bg|smpte170m|smpte240m|GBR|YCgCo>
Beveszi a VUI mátrix együtthatókat a folyamba (alapértelmezett: letiltva).
Ez színkorrekcióhoz használható.
Lásd a doc/vui.txt fájlt az x264 forráskódjában a további információkért.
.
.TP
.B chromaloc=<0-5>
Beveszi a VUI szín minta helyének információját a folyamba (alapértelmezett:
letiltva).
Használd ezt az opciót a színezet és a fényerő síkok igazításának biztosításához
színtér konverziók után.
Lásd a doc/vui.txt fájlt az x264 forráskódjában a további információkért.
.
.TP
.B log=<\-1\-3>
Beállítja a képernyőre kiírt log info mértékét.
.PD 0
@ -10676,6 +10856,11 @@ Ha a rendszereden l
folyamat közben, amiben az x264 megpróbálegy áttekintést adni minden egyes
kocka kódolásáról.
Minden blokk típus a megjelenített filmben színezve lesz az alábbiak szerint:
.
.TP
.B dump_yuv=<fájlnév>
A YUV kockákat kiírja a megadott fájlba.
Hibakeresénél használatos.
.PD 0
.RSs
.IPs vörös/rózsaszín

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r29461 -->
<!-- synced with r31032 -->
<chapter id="encoding-guide">
<title>Kódolás a <application>MEncoder</application>rel</title>
@ -4620,7 +4620,8 @@ készítése a <application>MEncoder</application> használatával</title>
aspect ratio) információkat az MPEG-4 fájlokban; feltételezi, hogy a SAR=1.
Olvasd el a
<link linkend="menc-feat-quicktime-7-scale">méretezés részt</link>
a tüneti kezeléshez.
a tüneti kezeléshez. A <application>QuickTime</application> X-ben már nincs
meg ez a korlátozás.
</para></listitem>
</itemizedlist>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r28707 -->
<!-- synced with r30862 -->
<chapter id="faq" xreflabel="FAQ">
<title>Gyakran ismételt kérdések</title>
@ -795,13 +795,8 @@ A <option>-mc 0.1</option> segíthet.
Mi van a DVD navigációval/menükkel?
</para></question>
<answer><para>
Az <application>MPlayer</application> nem támogatja a DVD menüket súlyos
tervezési korlátok miatt, amik megakadályozzák a still images és az interaktív
tartalom használatát. Ha szép menüket akarsz használni, másik lejátszót kell
használnod, mint pl. a <application>xine</application>,
a <application>VLC</application> vagy az <application>Ogle</application>.
Ha DVD navigációt akarsz látni az <application>MPlayer</application>ben,
neked magadnak kell megcsinálnod, de vigyázz, nagy fába vágod a fejszédet.
Az <application>MPlayer</application> ma már támogatja a DVD menüket.
A használhatóság mértéke viszont változhat.
</para></answer>
</qandaentry>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r29001 -->
<!-- synced with r31032 -->
<chapter id="mencoder">
<title>A <application>MEncoder</application> használatának alapjai</title>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r29252 -->
<!-- synced with r31032 -->
<chapter id="ports" xreflabel="Ports">
<title>Portok</title>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r29305 -->
<!-- synced with r31032 -->
<appendix id="skin">
<title><application>MPlayer</application> skin formátum</title>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r30449 -->
<!-- synced with r30714 -->
<chapter id="usage">
<title>Használat</title>
@ -557,7 +557,8 @@ A DVD-k általában AC-3 (Dolby Digital) vagy DTS (Digital Theater System) form
kódolt térhatású hanggal rendelkeznek. Néhány modern audió berendezés képes ezen
formátumok belső dekódolására. Az <application>MPlayer</application> beállítható
úgy, hogy dekódolás nélkül adja át az audió adatot. Ez csak akkor fog működni, ha
van egy S/PDIF (Sony/Philips Digital Interface) jack dugó a hangkártyádon.
van egy S/PDIF (Sony/Philips Digital Interface) jack dugó a hangkártyádon, vagy
HDMI-n keresztül küldöd át a hangot.
</para>
<para>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- synced with r29001 -->
<!-- synced with r31032 -->
<chapter id="video">
<title>Videó kimeneti eszközök</title>
@ -1762,10 +1762,6 @@ Ha szoftveres átkódolást akarsz csinálni, legalább egy 1GHz-es CPU-ra lesz
<para>
A configure megtalálja a DVB kártyádat. Ha mégsem, kényszerítheted:
<screen>./configure --enable-dvb</screen>
Ha ost fejléc fájlaid vannak egy nem szabványos elérési útvonalon, add meg:
<screen>
./configure --with-extraincdir=<replaceable>DVB forrás könyvtár</replaceable>/ost/include
</screen>
Majd fordíts és telepíts, mint rendesen.</para>
<formalpara><title>HASZNÁLAT</title>

View File

@ -551,6 +551,7 @@ SRCS_MPLAYER-$(GGI) += libvo/vo_ggi.c
SRCS_MPLAYER-$(GIF) += libvo/vo_gif89a.c
SRCS_MPLAYER-$(GL) += libvo/gl_common.c libvo/vo_gl.c \
libvo/vo_gl2.c libvo/csputils.c
SRCS_MPLAYER-$(GL_SDL) += libvo/sdl_common.c
SRCS_MPLAYER-$(GL_WIN32) += libvo/w32_common.c
SRCS_MPLAYER-$(GL_X11) += libvo/x11_common.c
SRCS_MPLAYER-$(MATRIXVIEW) += libvo/vo_matrixview.c libvo/matrixview.c
@ -584,7 +585,7 @@ SRCS_MPLAYER-$(PNM) += libvo/vo_pnm.c
SRCS_MPLAYER-$(PULSE) += libao2/ao_pulse.c
SRCS_MPLAYER-$(QUARTZ) += libvo/vo_quartz.c libvo/osx_common.c
SRCS_MPLAYER-$(S3FB) += libvo/vo_s3fb.c
SRCS_MPLAYER-$(SDL) += libao2/ao_sdl.c libvo/vo_sdl.c
SRCS_MPLAYER-$(SDL) += libao2/ao_sdl.c libvo/vo_sdl.c libvo/sdl_common.c
SRCS_MPLAYER-$(SGIAUDIO) += libao2/ao_sgi.c
SRCS_MPLAYER-$(SUNAUDIO) += libao2/ao_sun.c
SRCS_MPLAYER-$(SVGA) += libvo/vo_svga.c

13
configure vendored
View File

@ -3234,8 +3234,6 @@ if test "$_malloc" = yes ; then
else
def_malloc_h='#define HAVE_MALLOC_H 0'
fi
# malloc.h emits a warning in FreeBSD and OpenBSD
freebsd || openbsd || dragonfly && def_malloc_h='#define HAVE_MALLOC_H 0'
echores "$_malloc"
@ -4496,7 +4494,7 @@ if test "$_vidix" = auto ; then
_vidix=no
x86 && (linux || freebsd || netbsd || openbsd || dragonfly || sunos || win32) \
&& _vidix=yes
x86_64 && win32 && _vidix=no
x86_64 && ! linux && _vidix=no
(ppc || alpha) && linux && _vidix=yes
fi
echores "$_vidix"
@ -5125,15 +5123,7 @@ EOF
_ld_tmp="$($_sdlconfig --libs)"
fi
if cc_check $_inc_tmp $_ld_tmp >>"$TMPLOG" 2>&1 ; then
_sdlversion=$($_sdlconfig --version | sed 's/[^0-9]//g')
if test "$_sdlversion" -gt 116 ; then
if test "$_sdlversion" -lt 121 ; then
def_sdlbuggy='#define BUGGY_SDL'
else
def_sdlbuggy='#undef BUGGY_SDL'
fi
_sdl=yes
fi
fi
fi
fi
@ -8410,7 +8400,6 @@ $def_quartz
$def_s3fb
$def_sdl
$def_sdl_sdl_h
$def_sdlbuggy
$def_svga
$def_tdfxfb
$def_tdfxvid

View File

@ -3919,8 +3919,7 @@ audiocodec faad
audiocodec ffaac
info "FFmpeg AAC (MPEG-2/MPEG-4 Audio)"
comment "missing LATM support, some SBR in MKV play too slow"
; see samples/Matroska/aac-sbr-ffaac-slow.mkv
comment "missing LATM support"
status buggy
fourcc mp4a,MP4A
fourcc "VLB " ; Used in NSV, not really working

View File

@ -379,7 +379,7 @@ int _dvdcss_titlekey( dvdcss_t dvdcss, int i_pos, dvd_key_t p_title_key )
/* We need to authenticate again every time to get a new session key */
if( GetBusKey( dvdcss ) < 0 )
{
return -1;
i_ret = -1;
}
/* Get encrypted title key */

View File

@ -1,7 +1,7 @@
/*
* common OpenGL routines
*
* copyleft (C) 2005 Reimar Döffinger <Reimar.Doeffinger@stud.uni-karlsruhe.de>
* copyleft (C) 2005-2010 Reimar Döffinger <Reimar.Doeffinger@gmx.de>
* Special thanks go to the xine team and Matthias Hopf, whose video_out_opengl.c
* gave me lots of good ideas.
*
@ -35,6 +35,7 @@
#include "old_vo_defines.h"
#include "gl_common.h"
#include "csputils.h"
#include "aspect.h"
void (GLAPIENTRY *mpglBegin)(GLenum);
void (GLAPIENTRY *mpglEnd)(void);
@ -350,8 +351,24 @@ int glFindFormat(uint32_t fmt, int *bpp, GLint *gl_texfmt,
return supported;
}
static void *setNull(const GLubyte *s) {
return NULL;
#ifdef HAVE_LIBDL
#include <dlfcn.h>
#endif
/**
* \brief find address of a linked function
* \param s name of function to find
* \return address of function or NULL if not found
*/
static void *getdladdr(const char *s) {
void *ret = NULL;
#ifdef HAVE_LIBDL
void *handle = dlopen(NULL, RTLD_LAZY);
if (!handle)
return NULL;
ret = dlsym(handle, s);
dlclose(handle);
#endif
return ret;
}
typedef struct {
@ -461,7 +478,7 @@ static void getFunctions(void *(*getProcAddress)(const GLubyte *),
char *allexts;
if (!getProcAddress)
getProcAddress = setNull;
getProcAddress = (void *)getdladdr;
// special case, we need glGetString before starting to find the other functions
mpglGetString = getProcAddress("glGetString");
@ -1385,6 +1402,8 @@ static void glSetupYUVFragprog(gl_conversion_params_t *params) {
*/
int glAutodetectYUVConversion(void) {
const char *extensions = mpglGetString(GL_EXTENSIONS);
if (!extensions || !mpglMultiTexCoord2f)
return YUV_CONVERSION_NONE;
if (strstr(extensions, "GL_ARB_fragment_program"))
return YUV_CONVERSION_FRAGMENT;
if (strstr(extensions, "GL_ATI_text_fragment_shader"))
@ -1493,12 +1512,16 @@ void glDisableYUVConversion(GLenum target, int type) {
mpglDisable(GL_FRAGMENT_SHADER_ATI);
break;
case YUV_CONVERSION_TEXT_FRAGMENT:
mpglDisable(GL_TEXT_FRAGMENT_SHADER_ATI);
// HACK: at least the Mac OS X 10.5 PPC Radeon drivers are broken and
// without this disable the texture units while the program is still
// running (10.4 PPC seems to work without this though).
mpglFlush();
mpglActiveTexture(GL_TEXTURE1);
mpglDisable(target);
mpglActiveTexture(GL_TEXTURE2);
mpglDisable(target);
mpglActiveTexture(GL_TEXTURE0);
mpglDisable(GL_TEXT_FRAGMENT_SHADER_ATI);
break;
case YUV_CONVERSION_FRAGMENT_LOOKUP3D:
case YUV_CONVERSION_FRAGMENT_LOOKUP:
@ -1669,26 +1692,7 @@ static void swapGlBuffers_w32(MPGLContext *ctx) {
}
#endif
#ifdef CONFIG_GL_X11
#ifdef HAVE_LIBDL
#include <dlfcn.h>
#endif
#include "x11_common.h"
/**
* \brief find address of a linked function
* \param s name of function to find
* \return address of function or NULL if not found
*/
static void *getdladdr(const char *s) {
void *ret = NULL;
#ifdef HAVE_LIBDL
void *handle = dlopen(NULL, RTLD_LAZY);
if (!handle)
return NULL;
ret = dlsym(handle, s);
dlclose(handle);
#endif
return ret;
}
/**
* \brief Returns the XVisualInfo associated with Window win.
@ -1788,8 +1792,6 @@ static int setGlWindow_x11(MPGLContext *ctx)
getProcAddress = getdladdr("glXGetProcAddress");
if (!getProcAddress)
getProcAddress = getdladdr("glXGetProcAddressARB");
if (!getProcAddress)
getProcAddress = (void *)getdladdr;
glXExtStr = getdladdr("glXQueryExtensionsString");
if (glXExtStr)
appendstr(&glxstr, glXExtStr(mDisplay, DefaultScreen(mDisplay)));
@ -1802,10 +1804,10 @@ static int setGlWindow_x11(MPGLContext *ctx)
getFunctions(getProcAddress, glxstr);
if (!mpglGenPrograms && mpglGetString &&
getProcAddress != (void *)getdladdr &&
getProcAddress &&
strstr(mpglGetString(GL_EXTENSIONS), "GL_ARB_vertex_program")) {
mp_msg(MSGT_VO, MSGL_WARN, "Broken glXGetProcAddress detected, trying workaround\n");
getFunctions((void *)getdladdr, glxstr);
getFunctions(NULL, glxstr);
}
free(glxstr);
@ -1863,8 +1865,76 @@ static void gl_ontop(void)
}
#endif
#ifdef CONFIG_GL_SDL
#include "sdl_common.h"
static void swapGlBuffers_sdl(MPGLContext *ctx) {
SDL_GL_SwapBuffers();
}
static void *sdlgpa(const GLubyte *name) {
return SDL_GL_GetProcAddress(name);
}
static int setGlWindow_sdl(MPGLContext *ctx) {
if (sdl_set_mode(0, SDL_OPENGL | SDL_RESIZABLE) < 0)
return SET_WINDOW_FAILED;
SDL_GL_LoadLibrary(NULL);
getFunctions(sdlgpa, NULL);
return SET_WINDOW_OK;
}
static int sdl_check_events(void) {
int res = 0;
SDL_Event event;
while (SDL_PollEvent(&event)) {
res |= sdl_default_handle_event(&event);
}
// poll "events" from within MPlayer code
res |= sdl_default_handle_event(NULL);
if (res & VO_EVENT_RESIZE)
sdl_set_mode(0, SDL_OPENGL | SDL_RESIZABLE);
return res;
}
#endif
static int setGlWindow_dummy(MPGLContext *ctx) {
getFunctions(NULL, NULL);
return SET_WINDOW_OK;
}
static void releaseGlContext_dummy(MPGLContext *ctx) {
}
static int dummy_check_events(void) {
return 0;
}
static void dummy_update_xinerama_info(void) {
if (vo_screenwidth <= 0 || vo_screenheight <= 0) {
mp_msg(MSGT_VO, MSGL_ERR, "You must specify the screen dimensions "
"with -screenw and -screenh\n");
vo_screenwidth = 1280;
vo_screenheight = 768;
}
aspect_save_screenres(vo_screenwidth, vo_screenheight);
}
int init_mpglcontext(MPGLContext *ctx, enum MPGLType type) {
if (type == GLTYPE_AUTO) {
int res = init_mpglcontext(ctx, GLTYPE_W32);
if (res) return res;
res = init_mpglcontext(ctx, GLTYPE_X11);
if (res) return res;
res = init_mpglcontext(ctx, GLTYPE_SDL);
return res;
}
memset(ctx, 0, sizeof(*ctx));
ctx->setGlWindow = setGlWindow_dummy;
ctx->releaseGlContext = releaseGlContext_dummy;
ctx->update_xinerama_info = dummy_update_xinerama_info;
ctx->check_events = dummy_check_events;
ctx->type = type;
switch (ctx->type) {
#ifdef CONFIG_GL_WIN32
@ -1890,6 +1960,15 @@ int init_mpglcontext(MPGLContext *ctx, enum MPGLType type) {
ctx->fullscreen = gl_fullscreen;
ctx->ontop = gl_ontop;
return vo_init();
#endif
#ifdef CONFIG_GL_SDL
case GLTYPE_SDL:
SDL_Init(SDL_INIT_VIDEO);
ctx->setGlWindow = setGlWindow_sdl;
ctx->swapGlBuffers = swapGlBuffers_sdl;
ctx->check_events = sdl_check_events;
ctx->fullscreen = vo_sdl_fullscreen;
return vo_sdl_init();
#endif
default:
return 0;
@ -1908,6 +1987,11 @@ void uninit_mpglcontext(MPGLContext *ctx) {
case GLTYPE_X11:
vo_x11_uninit();
break;
#endif
#ifdef CONFIG_GL_SDL
case GLTYPE_SDL:
vo_sdl_uninit();
break;
#endif
}
memset(ctx, 0, sizeof(*ctx));

View File

@ -41,6 +41,9 @@
// This old-vo wrapper macro would conflict with the struct member
#undef update_xinerama_info
#endif
#ifdef CONFIG_GL_SDL
#include <GL/gl.h>
#endif
// workaround for some gl.h headers
#ifndef GLAPIENTRY
@ -372,8 +375,10 @@ void glDisableYUVConversion(GLenum target, int type);
/** \} */
enum MPGLType {
GLTYPE_AUTO,
GLTYPE_W32,
GLTYPE_X11,
GLTYPE_SDL,
};
typedef struct MPGLContext {

View File

@ -77,7 +77,7 @@
#define kVK_UpArrow 0x7e
#endif /* MAC_OS_X_VERSION_MAX_ALLOWED <= 1040 */
static const struct keymap keymap[] = {
static const struct mp_keymap keymap[] = {
// special keys
{0x34, KEY_ENTER}, // Enter key on some iBooks?
{kVK_Return, KEY_ENTER},

163
libvo/sdl_common.c Normal file
View File

@ -0,0 +1,163 @@
/*
* common SDL routines
*
* This file is part of MPlayer.
*
* MPlayer is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* MPlayer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with MPlayer; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "sdl_common.h"
#include "old_vo_defines.h"
#include "mp_msg.h"
#include "mp_fifo.h"
#include "osdep/keycodes.h"
#include "input/input.h"
#include "input/mouse.h"
#include "video_out.h"
static int old_w;
static int old_h;
static int mode_flags;
static int reinit;
int vo_sdl_init(void)
{
reinit = 0;
if (!SDL_WasInit(SDL_INIT_VIDEO) &&
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_NOPARACHUTE) < 0)
return 0;
// Setup Keyrepeats (500/30 are defaults)
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, 100 /*SDL_DEFAULT_REPEAT_INTERVAL*/);
// Easiest way to get uppercase characters
SDL_EnableUNICODE(1);
// We don't want those in our event queue.
SDL_EventState(SDL_ACTIVEEVENT, SDL_IGNORE);
SDL_EventState(SDL_SYSWMEVENT, SDL_IGNORE);
SDL_EventState(SDL_USEREVENT, SDL_IGNORE);
return 1;
}
void vo_sdl_uninit(void)
{
if (SDL_WasInit(SDL_INIT_VIDEO))
SDL_QuitSubSystem(SDL_INIT_VIDEO);
}
void vo_sdl_fullscreen(void)
{
if (vo_fs) {
vo_dwidth = old_w;
vo_dheight = old_h;
} else {
old_w = vo_dwidth;
old_h = vo_dheight;
vo_dwidth = vo_screenwidth;
vo_dheight = vo_screenheight;
}
vo_fs = !vo_fs;
sdl_set_mode(0, mode_flags);
// on OSX at least we now need to do a full reinit.
// TODO: this should only be set if really necessary.
reinit = 1;
}
int sdl_set_mode(int bpp, uint32_t flags)
{
SDL_Surface *s;
mode_flags = flags;
if (vo_fs) flags |= SDL_FULLSCREEN;
// doublebuf with opengl creates flickering
if (vo_doublebuffering && !(flags & SDL_OPENGL))
flags |= SDL_DOUBLEBUF;
s = SDL_SetVideoMode(vo_dwidth, vo_dheight, bpp, flags);
if (!s) {
mp_msg(MSGT_VO, MSGL_FATAL, "SDL SetVideoMode failed: %s\n", SDL_GetError());
return -1;
}
vo_dwidth = s->w;
vo_dheight = s->h;
return 0;
}
static const struct mp_keymap keysym_map[] = {
{SDLK_RETURN, KEY_ENTER}, {SDLK_ESCAPE, KEY_ESC},
{SDLK_F1, KEY_F+1}, {SDLK_F2, KEY_F+2}, {SDLK_F3, KEY_F+3},
{SDLK_F4, KEY_F+4}, {SDLK_F5, KEY_F+5}, {SDLK_F6, KEY_F+6},
{SDLK_F7, KEY_F+7}, {SDLK_F8, KEY_F+8}, {SDLK_F9, KEY_F+9},
{SDLK_F10, KEY_F+10}, {SDLK_F11, KEY_F+11}, {SDLK_F12, KEY_F+12},
{SDLK_KP_PLUS, '+'}, {SDLK_KP_MINUS, '-'}, {SDLK_TAB, KEY_TAB},
{SDLK_PAGEUP, KEY_PAGE_UP}, {SDLK_PAGEDOWN, KEY_PAGE_DOWN},
{SDLK_UP, KEY_UP}, {SDLK_DOWN, KEY_DOWN},
{SDLK_LEFT, KEY_LEFT}, {SDLK_RIGHT, KEY_RIGHT},
{SDLK_KP_MULTIPLY, '*'}, {SDLK_KP_DIVIDE, '/'},
{SDLK_KP0, KEY_KP0}, {SDLK_KP1, KEY_KP1}, {SDLK_KP2, KEY_KP2},
{SDLK_KP3, KEY_KP3}, {SDLK_KP4, KEY_KP4}, {SDLK_KP5, KEY_KP5},
{SDLK_KP6, KEY_KP6}, {SDLK_KP7, KEY_KP7}, {SDLK_KP8, KEY_KP8},
{SDLK_KP9, KEY_KP9},
{SDLK_KP_PERIOD, KEY_KPDEC}, {SDLK_KP_ENTER, KEY_KPENTER},
};
int sdl_default_handle_event(SDL_Event *event)
{
int mpkey;
if (!event) {
int res = reinit ? VO_EVENT_REINIT : 0;
reinit = 0;
return res;
}
switch (event->type) {
case SDL_VIDEORESIZE:
vo_dwidth = event->resize.w;
vo_dheight = event->resize.h;
return VO_EVENT_RESIZE;
case SDL_VIDEOEXPOSE:
return VO_EVENT_EXPOSE;
case SDL_MOUSEMOTION:
vo_mouse_movement(global_vo, event->motion.x, event->motion.y);
break;
case SDL_MOUSEBUTTONDOWN:
if (!vo_nomouse_input)
mplayer_put_key((MOUSE_BTN0 + event->button.button - 1) | MP_KEY_DOWN);
break;
case SDL_MOUSEBUTTONUP:
if (!vo_nomouse_input)
mplayer_put_key(MOUSE_BTN0 + event->button.button - 1);
break;
case SDL_KEYDOWN:
mpkey = lookup_keymap_table(keysym_map, event->key.keysym.sym);
if (!mpkey &&
event->key.keysym.unicode > 0 &&
event->key.keysym.unicode < 128)
mpkey = event->key.keysym.unicode;
if (mpkey)
mplayer_put_key(mpkey);
break;
case SDL_QUIT:
mplayer_put_key(KEY_CLOSE_WIN);
break;
}
return 0;
}

37
libvo/sdl_common.h Normal file
View File

@ -0,0 +1,37 @@
/*
* common SDL routines
*
* This file is part of MPlayer.
*
* MPlayer is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* MPlayer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with MPlayer; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef MPLAYER_SDL_COMMON_H
#define MPLAYER_SDL_COMMON_H
#include "config.h"
#ifdef CONFIG_SDL_SDL_H
#include <SDL/SDL.h>
#else
#include <SDL.h>
#endif
int vo_sdl_init(void);
void vo_sdl_uninit(void);
void vo_sdl_fullscreen(void);
int sdl_set_mode(int bpp, uint32_t flags);
int sdl_default_handle_event(SDL_Event *event);
#endif /* MPLAYER_SDL_COMMON_H */

View File

@ -34,6 +34,7 @@
#include "aspect.h"
#include "geometry.h"
#include "old_vo_wrapper.h"
#include "input/input.h"
#include "mp_msg.h"
@ -478,7 +479,7 @@ int vo_config(struct vo *vo, uint32_t width, uint32_t height,
* \result translation corresponding to key or "to" value of last mapping
* if not found.
*/
int lookup_keymap_table(const struct keymap *map, int key) {
int lookup_keymap_table(const struct mp_keymap *map, int key) {
while (map->from && map->from != key) map++;
return map->to;
}
@ -555,6 +556,22 @@ void calc_src_dst_rects(struct vo *vo, int src_width, int src_height,
dst->height = dst->bottom - dst->top;
}
/**
* Generates a mouse movement message if those are enable and sends it
* to the "main" MPlayer.
*
* \param posx new x position of mouse
* \param posy new y position of mouse
*/
void vo_mouse_movement(struct vo *vo, int posx, int posy)
{
char cmd_str[40];
if (!enable_mouse_movements)
return;
snprintf(cmd_str, sizeof(cmd_str), "set_mouse_pos %i %i", posx, posy);
mp_input_queue_cmd(vo->input_ctx, mp_input_parse_cmd(cmd_str));
}
#if defined(CONFIG_FBDEV) || defined(CONFIG_VESA)
/* Borrowed from vo_fbdev.c
Monitor ranges related functions*/

View File

@ -35,6 +35,7 @@
#define VO_EVENT_EXPOSE 1
#define VO_EVENT_RESIZE 2
#define VO_EVENT_KEYPRESS 4
#define VO_EVENT_REINIT 8
/* Obsolete: VOCTRL_QUERY_VAA 1 */
/* does the device support the required format */
@ -311,6 +312,7 @@ extern int vo_rootwin;
extern int vo_border;
extern int vo_nomouse_input;
extern int enable_mouse_movements;
extern int vo_pts;
extern float vo_fps;
@ -336,17 +338,19 @@ extern char *monitor_hfreq_str;
extern char *monitor_vfreq_str;
extern char *monitor_dotclock_str;
struct keymap {
struct mp_keymap {
int from;
int to;
};
int lookup_keymap_table(const struct keymap *map, int key);
int lookup_keymap_table(const struct mp_keymap *map, int key);
struct vo_rect {
int left, right, top, bottom, width, height;
};
void calc_src_dst_rects(struct vo *vo, int src_width, int src_height,
struct vo_rect *src, struct vo_rect *dst,
struct vo_rect *borders, const struct vo_rect *crop);
struct input_ctx;
void vo_mouse_movement(struct vo *vo, int posx, int posy);
static inline int aspect_scaling(void)
{

View File

@ -83,7 +83,6 @@ static uint32_t image_format;
static int isFullscreen;
static int isOntop;
static int isRootwin;
extern int enable_mouse_movements;
static float winAlpha = 1;
static int int_pause = 0;
@ -954,11 +953,8 @@ static int control(uint32_t request, void *data)
if (enable_mouse_movements && !isRootwin) {
NSPoint p =[self convertPoint:[theEvent locationInWindow] fromView:nil];
if ([self mouse:p inRect:textureFrame]) {
char cmdstr[40];
snprintf(cmdstr, sizeof(cmdstr), "set_mouse_pos %i %i",
(int)(vo_fs ? p.x : (p.x - textureFrame.origin.x)),
(int)(vo_fs ? [self frame].size.height - p.y: (NSMaxY(textureFrame) - p.y)));
mp_input_queue_cmd(global_vo->input_ctx, mp_input_parse_cmd(cmdstr));
vo_mouse_movement(global_vo, vo_fs ? p.x : p.x - textureFrame.origin.x,
vo_fs ? [self frame].size.height - p.y : NSMaxY(textureFrame) - p.y);
}
}
}

View File

@ -34,12 +34,6 @@
#include <stdlib.h>
#include <string.h>
#ifdef __linux__
#include <sys/kd.h>
#else
#include <linux/kd.h>
#endif
#include "config.h"
#include "video_out.h"
#include "video_out_internal.h"

View File

@ -34,6 +34,14 @@
#include "fastmemcpy.h"
#include "ass_mp.h"
#ifdef CONFIG_GL_SDL
#ifdef CONFIG_SDL_SDL_H
#include <SDL/SDL.h>
#else
#include <SDL.h>
#endif
#endif
static const vo_info_t info =
{
"OpenGL",
@ -485,7 +493,7 @@ static void autodetectGlExtensions(void) {
const char *extensions = mpglGetString(GL_EXTENSIONS);
const char *vendor = mpglGetString(GL_VENDOR);
const char *version = mpglGetString(GL_VERSION);
int is_ati = strstr(vendor, "ATI") != NULL;
int is_ati = vendor && strstr(vendor, "ATI") != NULL;
int ati_broken_pbo = 0;
mp_msg(MSGT_VO, MSGL_V, "[gl] Running on OpenGL by '%s', versions '%s'\n", vendor, version);
if (is_ati && strncmp(version, "2.1.", 4) == 0) {
@ -494,8 +502,12 @@ static void autodetectGlExtensions(void) {
ati_broken_pbo = ver && ver < 8395;
}
if (ati_hack == -1) ati_hack = ati_broken_pbo;
if (force_pbo == -1) force_pbo = strstr(extensions, "_pixel_buffer_object") ? is_ati : 0;
if (use_rectangle == -1) use_rectangle = strstr(extensions, "_texture_non_power_of_two") ? 0 : 0;
if (extensions && force_pbo == -1)
force_pbo = strstr(extensions, "_pixel_buffer_object") ? is_ati : 0;
if (extensions && use_rectangle == -1)
use_rectangle = strstr(extensions, "_texture_non_power_of_two") ? 0 : 0;
if (use_osd == -1)
use_osd = mpglBindTexture != NULL;
if (use_yuv == -1)
use_yuv = glAutodetectYUVConversion();
if (is_ati && (lscale == 1 || lscale == 2 || cscale == 1 || cscale == 2))
@ -599,6 +611,13 @@ static int create_window(uint32_t d_width, uint32_t d_height, uint32_t flags, co
XCreateColormap(mDisplay, mRootWin, vinfo->visual, AllocNone),
"gl", title);
}
#endif
#ifdef CONFIG_GL_SDL
if (glctx.type == GLTYPE_SDL) {
SDL_WM_SetCaption(title, NULL);
vo_dwidth = d_width;
vo_dheight = d_height;
}
#endif
return 0;
}
@ -639,6 +658,10 @@ glconfig:
static void check_events(void)
{
int e=glctx.check_events();
if(e&VO_EVENT_REINIT) {
uninitGl();
initGl(vo_dwidth, vo_dheight);
}
if(e&VO_EVENT_RESIZE) resize(vo_dwidth,vo_dheight);
if(e&VO_EVENT_EXPOSE && int_pause) redraw();
}
@ -1084,13 +1107,10 @@ static const opt_t subopts[] = {
static int preinit_internal(const char *arg, int allow_sw)
{
enum MPGLType gltype = GLTYPE_X11;
// set defaults
#ifdef CONFIG_GL_WIN32
gltype = GLTYPE_W32;
#endif
enum MPGLType gltype = GLTYPE_AUTO;
many_fmts = 1;
use_osd = 1;
use_osd = -1;
scaled_osd = 0;
use_aspect = 1;
use_ycbcr = 0;

View File

@ -473,8 +473,9 @@ static int config_w32(uint32_t width, uint32_t height, uint32_t d_width, uint32_
return 0;
}
#else
#endif
#ifdef CONFIG_GL_X11
static int choose_glx_visual(Display *dpy, int scr, XVisualInfo *res_vi)
{
XVisualInfo template, *vi_list;
@ -620,7 +621,8 @@ config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uin
#ifdef CONFIG_GL_WIN32
if (config_w32(width, height, d_width, d_height, flags, title, format) == -1)
#else
#endif
#ifdef CONFIG_GL_X11
if (config_glx(width, height, d_width, d_height, flags, title, format) == -1)
#endif
return -1;
@ -668,7 +670,7 @@ config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uin
return 0;
}
#ifndef CONFIG_GL_WIN32
#ifdef CONFIG_GL_X11
static int gl_handlekey(int key)
{
if(key=='a'||key=='A') {
@ -685,7 +687,7 @@ static int gl_handlekey(int key)
static void check_events(void)
{
int e;
#ifndef CONFIG_GL_WIN32
#ifdef CONFIG_GL_X11
XEvent Event;
char buf[100];
KeySym keySym;
@ -866,7 +868,8 @@ static int preinit(const char *arg)
if (use_yuv == -1) {
#ifdef CONFIG_GL_WIN32
if (config_w32(320, 200, 320, 200, VOFLAG_HIDDEN, "", 0) == -1)
#else
#endif
#ifdef CONFIG_GL_X11
if (config_glx(320, 200, 320, 200, VOFLAG_HIDDEN, "", 0) == -1)
#endif
goto err_out;
@ -907,7 +910,7 @@ static int control(uint32_t request, void *data)
case VOCTRL_SET_PANSCAN:
resize(vo_dwidth, vo_dheight);
return VO_TRUE;
#ifndef CONFIG_GL_WIN32
#ifdef CONFIG_GL_X11
case VOCTRL_SET_EQUALIZER:
{
struct voctrl_set_equalizer_args *args = data;

View File

@ -69,7 +69,7 @@ const LIBVO_EXTERN(kva)
#define HWNDFROMWINID(wid) ((wid) + 0x80000000UL)
static const struct keymap m_vk_map[] = {
static const struct mp_keymap m_vk_map[] = {
{VK_NEWLINE, KEY_ENTER}, {VK_TAB, KEY_TAB}, {VK_SPACE, ' '},
// control keys
@ -91,7 +91,7 @@ static const struct keymap m_vk_map[] = {
{0, 0}
};
static const struct keymap m_keypad_map[] = {
static const struct mp_keymap m_keypad_map[] = {
// keypad keys
{0x52, KEY_KP0}, {0x4F, KEY_KP1}, {0x50, KEY_KP2}, {0x51, KEY_KP3},
{0x4B, KEY_KP4}, {0x4C, KEY_KP5}, {0x4D, KEY_KP6}, {0x47, KEY_KP7},
@ -100,7 +100,7 @@ static const struct keymap m_keypad_map[] = {
{0, 0}
};
static const struct keymap m_mouse_map[] = {
static const struct mp_keymap m_mouse_map[] = {
{WM_BUTTON1DOWN, MOUSE_BTN0},
{WM_BUTTON3DOWN, MOUSE_BTN1},
{WM_BUTTON2DOWN, MOUSE_BTN2},

View File

@ -48,8 +48,6 @@
/* define to enable surface locks, this might be needed on SMP machines */
#undef SDL_ENABLE_LOCKS
//#define BUGGY_SDL //defined by configure
/* MONITOR_ASPECT MUST BE FLOAT */
#define MONITOR_ASPECT 4.0/3.0
@ -74,10 +72,7 @@
#include "x11_common.h"
#endif
#include "input/input.h"
#include "input/mouse.h"
#include "subopt-helper.h"
#include "mp_fifo.h"
static const vo_info_t info =
{
@ -89,11 +84,7 @@ static const vo_info_t info =
const LIBVO_EXTERN(sdl)
#ifdef CONFIG_SDL_SDL_H
#include <SDL/SDL.h>
#else
#include <SDL.h>
#endif
#include "sdl_common.h"
//#include <SDL/SDL_syswm.h>
@ -405,9 +396,6 @@ static int sdl_open (void *plugin, void *name)
priv->sdlflags |= SDL_DOUBLEBUF;
#endif
/* Setup Keyrepeats (500/30 are defaults) */
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, 100 /*SDL_DEFAULT_REPEAT_INTERVAL*/);
/* get information about the graphics adapter */
vidInfo = SDL_GetVideoInfo ();
@ -452,18 +440,6 @@ static int sdl_open (void *plugin, void *name)
priv->bpp = 16;
}
/* We don't want those in our event queue.
* We use SDL_KEYUP cause SDL_KEYDOWN seems to cause problems
* with keys need to be pressed twice, to be recognized.
*/
#ifndef BUGGY_SDL
SDL_EventState(SDL_ACTIVEEVENT, SDL_IGNORE);
SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);
// SDL_EventState(SDL_QUIT, SDL_IGNORE);
SDL_EventState(SDL_SYSWMEVENT, SDL_IGNORE);
SDL_EventState(SDL_USEREVENT, SDL_IGNORE);
#endif
/* Success! */
return 0;
}
@ -606,6 +582,8 @@ static void set_video_mode(int width, int height, int bpp, uint32_t sdlflags)
priv->surface = newsurface;
priv->dstwidth = width;
priv->dstheight = height;
vo_dwidth = width;
vo_dheight = height;
setup_surfaces();
}
@ -1101,9 +1079,6 @@ static int draw_slice(uint8_t *image[], int stride[], int w,int h,int x,int y)
* returns : doesn't return
**/
#include "osdep/keycodes.h"
#define shift_key (event.key.keysym.mod==(KMOD_LSHIFT||KMOD_RSHIFT))
static void check_events (void)
{
struct sdl_priv_s *priv = &sdl_priv;
@ -1127,39 +1102,8 @@ static void check_events (void)
mp_msg(MSGT_VO,MSGL_DBG3, "SDL: Window resize\n");
break;
case SDL_MOUSEBUTTONDOWN:
if(vo_nomouse_input)
break;
mplayer_put_key((MOUSE_BTN0+event.button.button-1) | MP_KEY_DOWN);
break;
case SDL_MOUSEBUTTONUP:
if(vo_nomouse_input)
break;
mplayer_put_key(MOUSE_BTN0+event.button.button-1);
break;
/* graphics mode selection shortcuts */
#ifdef BUGGY_SDL
case SDL_KEYDOWN:
switch(event.key.keysym.sym) {
case SDLK_UP: mplayer_put_key(KEY_UP); break;
case SDLK_DOWN: mplayer_put_key(KEY_DOWN); break;
case SDLK_LEFT: mplayer_put_key(KEY_LEFT); break;
case SDLK_RIGHT: mplayer_put_key(KEY_RIGHT); break;
case SDLK_LESS: mplayer_put_key(shift_key?'>':'<'); break;
case SDLK_GREATER: mplayer_put_key('>'); break;
case SDLK_ASTERISK:
case SDLK_KP_MULTIPLY:
case SDLK_SLASH:
case SDLK_KP_DIVIDE:
default: break;
}
break;
case SDL_KEYUP:
#else
case SDL_KEYDOWN:
#endif
keypressed = event.key.keysym.sym;
mp_msg(MSGT_VO,MSGL_DBG2, "SDL: Key pressed: '%i'\n", keypressed);
@ -1191,78 +1135,13 @@ static void check_events (void)
}
}
else switch(keypressed){
case SDLK_RETURN: mplayer_put_key(KEY_ENTER);break;
case SDLK_ESCAPE: mplayer_put_key(KEY_ESC);break;
case SDLK_q: mplayer_put_key('q');break;
case SDLK_F1: mplayer_put_key(KEY_F+1);break;
case SDLK_F2: mplayer_put_key(KEY_F+2);break;
case SDLK_F3: mplayer_put_key(KEY_F+3);break;
case SDLK_F4: mplayer_put_key(KEY_F+4);break;
case SDLK_F5: mplayer_put_key(KEY_F+5);break;
case SDLK_F6: mplayer_put_key(KEY_F+6);break;
case SDLK_F7: mplayer_put_key(KEY_F+7);break;
case SDLK_F8: mplayer_put_key(KEY_F+8);break;
case SDLK_F9: mplayer_put_key(KEY_F+9);break;
case SDLK_F10: mplayer_put_key(KEY_F+10);break;
case SDLK_F11: mplayer_put_key(KEY_F+11);break;
case SDLK_F12: mplayer_put_key(KEY_F+12);break;
/*case SDLK_o: mplayer_put_key('o');break;
case SDLK_SPACE: mplayer_put_key(' ');break;
case SDLK_p: mplayer_put_key('p');break;*/
case SDLK_7: mplayer_put_key(shift_key?'/':'7');break;
case SDLK_PLUS: mplayer_put_key(shift_key?'*':'+');break;
case SDLK_KP_PLUS: mplayer_put_key('+');break;
case SDLK_MINUS:
case SDLK_KP_MINUS: mplayer_put_key('-');break;
case SDLK_TAB: mplayer_put_key('\t');break;
case SDLK_PAGEUP: mplayer_put_key(KEY_PAGE_UP);break;
case SDLK_PAGEDOWN: mplayer_put_key(KEY_PAGE_DOWN);break;
#ifdef BUGGY_SDL
case SDLK_UP:
case SDLK_DOWN:
case SDLK_LEFT:
case SDLK_RIGHT:
case SDLK_ASTERISK:
case SDLK_KP_MULTIPLY:
case SDLK_SLASH:
case SDLK_KP_DIVIDE:
break;
#else
case SDLK_UP: mplayer_put_key(KEY_UP);break;
case SDLK_DOWN: mplayer_put_key(KEY_DOWN);break;
case SDLK_LEFT: mplayer_put_key(KEY_LEFT);break;
case SDLK_RIGHT: mplayer_put_key(KEY_RIGHT);break;
case SDLK_LESS: mplayer_put_key(shift_key?'>':'<'); break;
case SDLK_GREATER: mplayer_put_key('>'); break;
case SDLK_ASTERISK:
case SDLK_KP_MULTIPLY: mplayer_put_key('*'); break;
case SDLK_SLASH:
case SDLK_KP_DIVIDE: mplayer_put_key('/'); break;
#endif
case SDLK_KP0: mplayer_put_key(KEY_KP0); break;
case SDLK_KP1: mplayer_put_key(KEY_KP1); break;
case SDLK_KP2: mplayer_put_key(KEY_KP2); break;
case SDLK_KP3: mplayer_put_key(KEY_KP3); break;
case SDLK_KP4: mplayer_put_key(KEY_KP4); break;
case SDLK_KP5: mplayer_put_key(KEY_KP5); break;
case SDLK_KP6: mplayer_put_key(KEY_KP6); break;
case SDLK_KP7: mplayer_put_key(KEY_KP7); break;
case SDLK_KP8: mplayer_put_key(KEY_KP8); break;
case SDLK_KP9: mplayer_put_key(KEY_KP9); break;
case SDLK_KP_PERIOD: mplayer_put_key(KEY_KPDEC); break;
case SDLK_KP_ENTER: mplayer_put_key(KEY_KPENTER); break;
default:
//printf("got scancode: %d keysym: %d mod: %d %d\n", event.key.keysym.scancode, keypressed, event.key.keysym.mod);
mplayer_put_key(keypressed);
}
else sdl_default_handle_event(&event);
break;
case SDL_QUIT: mplayer_put_key(KEY_CLOSE_WIN);break;
default: sdl_default_handle_event(&event); break;
}
}
}
#undef shift_key
/* Erase (paint it black) the rectangle specified by x, y, w and h in the surface
or overlay which is used for OSD
@ -1516,8 +1395,7 @@ uninit(void)
sdl_close();
/* Cleanup SDL */
if(SDL_WasInit(SDL_INIT_VIDEO))
SDL_QuitSubSystem(SDL_INIT_VIDEO);
vo_sdl_uninit();
mp_msg(MSGT_VO,MSGL_DBG3, "SDL: Closed Plugin\n");
@ -1567,12 +1445,10 @@ static int preinit(const char *arg)
priv->bpp = 0;
/* initialize the SDL Video system */
if (!SDL_WasInit(SDL_INIT_VIDEO)) {
if (SDL_Init (SDL_INIT_VIDEO|SDL_INIT_NOPARACHUTE)) {
if (!vo_sdl_init()) {
mp_tmsg(MSGT_VO,MSGL_ERR, "[VO_SDL] SDL initialization failed: %s.\n", SDL_GetError());
return -1;
}
}
SDL_VideoDriverName(priv->driver, 8);

View File

@ -32,8 +32,6 @@
#include "w32_common.h"
#include "mp_fifo.h"
extern int enable_mouse_movements;
#ifndef MONITOR_DEFAULTTOPRIMARY
#define MONITOR_DEFAULTTOPRIMARY 1
#endif
@ -63,7 +61,7 @@ static HMONITOR (WINAPI* myMonitorFromWindow)(HWND, DWORD);
static BOOL (WINAPI* myGetMonitorInfo)(HMONITOR, LPMONITORINFO);
static BOOL (WINAPI* myEnumDisplayMonitors)(HDC, LPCRECT, MONITORENUMPROC, LPARAM);
static const struct keymap vk_map[] = {
static const struct mp_keymap vk_map[] = {
// special keys
{VK_ESCAPE, KEY_ESC}, {VK_BACK, KEY_BS}, {VK_TAB, KEY_TAB}, {VK_CONTROL, KEY_CTRL},
@ -164,12 +162,7 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM l
mplayer_put_key(MOUSE_BTN2);
break;
case WM_MOUSEMOVE:
if (enable_mouse_movements) {
char cmd_str[40];
snprintf(cmd_str, sizeof(cmd_str), "set_mouse_pos %i %i",
GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
mp_input_queue_cmd(global_vo->input_ctx, mp_input_parse_cmd(cmd_str));
}
vo_mouse_movement(global_vo, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
break;
case WM_MOUSEWHEEL:
if (!vo_nomouse_input) {

View File

@ -81,7 +81,6 @@
#define WIN_LAYER_ONTOP 6
#define WIN_LAYER_ABOVE_DOCK 10
extern int enable_mouse_movements;
int fs_layer = WIN_LAYER_ABOVE_DOCK;
int stop_xscreensaver = 0;
@ -533,7 +532,7 @@ void vo_uninit(struct vo_x11_state *x11)
#include "wskeys.h"
#ifdef XF86XK_AudioPause
static const struct keymap keysym_map[] = {
static const struct mp_keymap keysym_map[] = {
{XF86XK_MenuKB, KEY_MENU},
{XF86XK_AudioPlay, KEY_PLAY}, {XF86XK_AudioPause, KEY_PAUSE}, {XF86XK_AudioStop, KEY_STOP},
{XF86XK_AudioPrev, KEY_PREV}, {XF86XK_AudioNext, KEY_NEXT},
@ -550,7 +549,7 @@ static void vo_x11_putkey_ext(struct vo *vo, int keysym)
}
#endif
static const struct keymap keymap[] = {
static const struct mp_keymap keymap[] = {
// special keys
{wsEscape, KEY_ESC}, {wsBackSpace, KEY_BS}, {wsTab, KEY_TAB}, {wsEnter, KEY_ENTER},
@ -814,13 +813,7 @@ int vo_x11_check_events(struct vo *vo)
}
break;
case MotionNotify:
if(enable_mouse_movements)
{
char cmd_str[40];
sprintf(cmd_str,"set_mouse_pos %i %i",Event.xmotion.x, Event.xmotion.y);
mp_input_queue_cmd(vo->input_ctx,
mp_input_parse_cmd(cmd_str));
}
vo_mouse_movement(vo, Event.xmotion.x, Event.xmotion.y);
if (x11->vo_mouse_autohide)
{

View File

@ -4308,7 +4308,8 @@ if(auto_quality>0){
if (mp_dvdnav_stream_has_changed(mpctx->stream)) {
double ar = -1.0;
if (stream_control (mpctx->demuxer->stream,
if (mpctx->sh_video &&
stream_control (mpctx->demuxer->stream,
STREAM_CTRL_GET_ASPECT_RATIO, &ar)
!= STREAM_UNSUPPORTED)
mpctx->sh_video->stream_aspect = ar;

View File

@ -30,16 +30,14 @@
#ifdef __i386__
//#include <sys/perm.h> doesn't exist on libc5 systems
int iopl();
#elif defined(__sh__)
#define iopl(x) 1
#else
#if !defined(__sparc__) && !defined(__powerpc__) && !defined(__x86_64__) && !defined(__sh__)
#if !defined(__sparc__) && !defined(__powerpc__) && !defined(__x86_64__)
#include <sys/io.h>
#endif
#endif
#ifdef __sh__
#define iopl(x) 1
#endif
#include "config.h"
#ifdef CONFIG_DHAHELPER
@ -50,9 +48,7 @@ int dhahelper_fd = 0;
#ifdef CONFIG_SVGAHELPER
#include <svgalib_helper.h>
#ifdef __linux__
#include <linux/ioctl.h>
#endif
#include <fcntl.h>
#ifndef SVGALIB_HELPER_IOC_MAGIC
/* svgalib 1.9.18+ compatibility ::atmos */