aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--DOCS/man/en/mplayer.18
-rw-r--r--DOCS/man/hu/mplayer.1223
-rw-r--r--DOCS/xml/hu/encoding-guide.xml5
-rw-r--r--DOCS/xml/hu/faq.xml11
-rw-r--r--DOCS/xml/hu/mencoder.xml2
-rw-r--r--DOCS/xml/hu/ports.xml2
-rw-r--r--DOCS/xml/hu/skin.xml2
-rw-r--r--DOCS/xml/hu/usage.xml5
-rw-r--r--DOCS/xml/hu/video.xml6
-rw-r--r--Makefile3
-rwxr-xr-xconfigure13
-rw-r--r--etc/codecs.conf3
-rw-r--r--libdvdcss/css.c2
-rw-r--r--libvo/gl_common.c140
-rw-r--r--libvo/gl_common.h5
-rw-r--r--libvo/osx_common.c2
-rw-r--r--libvo/sdl_common.c163
-rw-r--r--libvo/sdl_common.h37
-rw-r--r--libvo/video_out.c19
-rw-r--r--libvo/video_out.h8
-rw-r--r--libvo/vo_corevideo.m8
-rw-r--r--libvo/vo_directfb2.c6
-rw-r--r--libvo/vo_gl.c36
-rw-r--r--libvo/vo_gl2.c15
-rw-r--r--libvo/vo_kva.c6
-rw-r--r--libvo/vo_sdl.c138
-rw-r--r--libvo/w32_common.c11
-rw-r--r--libvo/x11_common.c13
-rw-r--r--mplayer.c3
-rw-r--r--vidix/sysdep/pci_linux.c10
30 files changed, 627 insertions, 278 deletions
diff --git a/DOCS/man/en/mplayer.1 b/DOCS/man/en/mplayer.1
index ab1a551abe..844c52d696 100644
--- a/DOCS/man/en/mplayer.1
+++ b/DOCS/man/en/mplayer.1
@@ -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
diff --git a/DOCS/man/hu/mplayer.1 b/DOCS/man/hu/mplayer.1
index ce0edb7e43..14458ea600 100644
--- a/DOCS/man/hu/mplayer.1
+++ b/DOCS/man/hu/mplayer.1
@@ -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épernyőmentés készítése.
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ó már idejétmúlt, mivel az MPlayerben van OpenDML támogatás.
.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ó kimeneti vezérlő
.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épernyős váltás javítása OpenBox 1.x-en.
.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érlő kiválasztása az overlay forrásaként az X11 felett.
.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álj 2-t csak a páros dimenziókhoz (4:2:2 videónál szükséges).
.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ár simább szögeket ad, de megakadályozza a szűrőt a részletesebb
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ákként kerülnek elkódolásra, majdnem olyan nagyok, mint az I-kockák,
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éhány dekóder csak maximum 15 referenciakockát tud kezelni.
.
.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ális érték, amennyivel a kvantáló növekedhet/csökkenhet a
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 és rosszabb minőségű.
.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ítja a két, bidirekcionális makroblokkban használt mozgás vektort is
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áta-torzító optimális kvantálás
.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á, kísérleti) (alapértelmezett: 0.0)
.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áld ezt a paramétert, ha tudod, hogy mit jelent
.
.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értelmezésként az SPS és a PPS minden IDR kocka előtt ismétlődik.
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évő x264 támogatja, egy új ablak nyílik meg a kódolási
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
diff --git a/DOCS/xml/hu/encoding-guide.xml b/DOCS/xml/hu/encoding-guide.xml
index 8a94b7cc89..8dd7ce45c8 100644
--- a/DOCS/xml/hu/encoding-guide.xml
+++ b/DOCS/xml/hu/encoding-guide.xml
@@ -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>
diff --git a/DOCS/xml/hu/faq.xml b/DOCS/xml/hu/faq.xml
index 45d30c36c1..f3d6c3de5f 100644
--- a/DOCS/xml/hu/faq.xml
+++ b/DOCS/xml/hu/faq.xml
@@ -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>
diff --git a/DOCS/xml/hu/mencoder.xml b/DOCS/xml/hu/mencoder.xml
index e307ce50c2..5a04c429aa 100644
--- a/DOCS/xml/hu/mencoder.xml
+++ b/DOCS/xml/hu/mencoder.xml
@@ -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>
diff --git a/DOCS/xml/hu/ports.xml b/DOCS/xml/hu/ports.xml
index 24e6a682da..a8ce888e02 100644
--- a/DOCS/xml/hu/ports.xml
+++ b/DOCS/xml/hu/ports.xml
@@ -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>
diff --git a/DOCS/xml/hu/skin.xml b/DOCS/xml/hu/skin.xml
index f9cb2ed6c0..62b838f419 100644
--- a/DOCS/xml/hu/skin.xml
+++ b/DOCS/xml/hu/skin.xml
@@ -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>
diff --git a/DOCS/xml/hu/usage.xml b/DOCS/xml/hu/usage.xml
index 9df776c7ec..f2c891ace3 100644
--- a/DOCS/xml/hu/usage.xml
+++ b/DOCS/xml/hu/usage.xml
@@ -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>
diff --git a/DOCS/xml/hu/video.xml b/DOCS/xml/hu/video.xml
index 73d6b46163..b59b7e6a03 100644
--- a/DOCS/xml/hu/video.xml
+++ b/DOCS/xml/hu/video.xml
@@ -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>
diff --git a/Makefile b/Makefile
index 47b0bb4106..e1dcb20e07 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/configure b/configure
index 6bc810e3f0..73d8bae630 100755
--- a/configure
+++ b/configure
@@ -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
diff --git a/etc/codecs.conf b/etc/codecs.conf
index d8773bda29..a941116227 100644
--- a/etc/codecs.conf
+++ b/etc/codecs.conf
@@ -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
diff --git a/libdvdcss/css.c b/libdvdcss/css.c
index 4e24bbf68f..23d186ab73 100644
--- a/libdvdcss/css.c
+++ b/libdvdcss/css.c
@@ -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 */
diff --git a/libvo/gl_common.c b/libvo/gl_common.c
index bb2e7ce10c..800e5e6d7d 100644
--- a/libvo/gl_common.c
+++ b/libvo/gl_common.c
@@ -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
@@ -1891,6 +1961,15 @@ int init_mpglcontext(MPGLContext *ctx, enum MPGLType type) {
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;
}
@@ -1909,6 +1988,11 @@ void uninit_mpglcontext(MPGLContext *ctx) {
vo_x11_uninit();
break;
#endif
+#ifdef CONFIG_GL_SDL
+ case GLTYPE_SDL:
+ vo_sdl_uninit();
+ break;
+#endif
}
memset(ctx, 0, sizeof(*ctx));
}
diff --git a/libvo/gl_common.h b/libvo/gl_common.h
index 5cf4d2859e..534bc908c1 100644
--- a/libvo/gl_common.h
+++ b/libvo/gl_common.h
@@ -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 {
diff --git a/libvo/osx_common.c b/libvo/osx_common.c
index b3e39a62aa..315f4dbd13 100644
--- a/libvo/osx_common.c
+++ b/libvo/osx_common.c
@@ -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},
diff --git a/libvo/sdl_common.c b/libvo/sdl_common.c
new file mode 100644
index 0000000000..89ed0198e4
--- /dev/null
+++ b/libvo/sdl_common.c
@@ -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;
+}
diff --git a/libvo/sdl_common.h b/libvo/sdl_common.h
new file mode 100644
index 0000000000..cc9ec60e21
--- /dev/null
+++ b/libvo/sdl_common.h
@@ -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 */
diff --git a/libvo/video_out.c b/libvo/video_out.c
index 92dfcf47b6..25a988e4f1 100644
--- a/libvo/video_out.c
+++ b/libvo/video_out.c
@@ -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*/
diff --git a/libvo/video_out.h b/libvo/video_out.h
index 0b5f71255c..1bdf74da96 100644
--- a/libvo/video_out.h
+++ b/libvo/video_out.h
@@ -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)
{
diff --git a/libvo/vo_corevideo.m b/libvo/vo_corevideo.m
index 17086e7cb8..e40ae9c20b 100644
--- a/libvo/vo_corevideo.m
+++ b/libvo/vo_corevideo.m
@@ -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);
}
}
}
diff --git a/libvo/vo_directfb2.c b/libvo/vo_directfb2.c
index 4a88b3881e..673882dd49 100644
--- a/libvo/vo_directfb2.c
+++ b/libvo/vo_directfb2.c
@@ -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"
diff --git a/libvo/vo_gl.c b/libvo/vo_gl.c
index 5babb180b3..00c0d62167 100644
--- a/libvo/vo_gl.c
+++ b/libvo/vo_gl.c
@@ -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))
@@ -600,6 +612,13 @@ static int create_window(uint32_t d_width, uint32_t d_height, uint32_t flags, co
"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;
diff --git a/libvo/vo_gl2.c b/libvo/vo_gl2.c
index dafaa1e60a..4fb126d5c5 100644
--- a/libvo/vo_gl2.c
+++ b/libvo/vo_gl2.c
@@ -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;
diff --git a/libvo/vo_kva.c b/libvo/vo_kva.c
index 07f6629769..e75f44dbe5 100644
--- a/libvo/vo_kva.c
+++ b/libvo/vo_kva.c
@@ -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},
diff --git a/libvo/vo_sdl.c b/libvo/vo_sdl.c
index 9ae325b98a..9715dd98fb 100644
--- a/libvo/vo_sdl.c
+++ b/libvo/vo_sdl.c
@@ -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);
diff --git a/libvo/w32_common.c b/libvo/w32_common.c
index 47c1d6198e..3b9cc9ab2b 100644
--- a/libvo/w32_common.c
+++ b/libvo/w32_common.c
@@ -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) {
diff --git a/libvo/x11_common.c b/libvo/x11_common.c
index 4cd1c9e67e..c6ffe8f860 100644
--- a/libvo/x11_common.c
+++ b/libvo/x11_common.c
@@ -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)
{
diff --git a/mplayer.c b/mplayer.c
index af4fd37d1e..545672f59f 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -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;
diff --git a/vidix/sysdep/pci_linux.c b/vidix/sysdep/pci_linux.c
index 62ccc9bd93..4d0f7d640a 100644
--- a/vidix/sysdep/pci_linux.c
+++ b/vidix/sysdep/pci_linux.c
@@ -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 */