diff options
-rw-r--r-- | DOCS/man/en/mplayer.1 | 8 | ||||
-rw-r--r-- | DOCS/man/hu/mplayer.1 | 223 | ||||
-rw-r--r-- | DOCS/xml/hu/encoding-guide.xml | 5 | ||||
-rw-r--r-- | DOCS/xml/hu/faq.xml | 11 | ||||
-rw-r--r-- | DOCS/xml/hu/mencoder.xml | 2 | ||||
-rw-r--r-- | DOCS/xml/hu/ports.xml | 2 | ||||
-rw-r--r-- | DOCS/xml/hu/skin.xml | 2 | ||||
-rw-r--r-- | DOCS/xml/hu/usage.xml | 5 | ||||
-rw-r--r-- | DOCS/xml/hu/video.xml | 6 | ||||
-rw-r--r-- | Makefile | 3 | ||||
-rwxr-xr-x | configure | 13 | ||||
-rw-r--r-- | etc/codecs.conf | 3 | ||||
-rw-r--r-- | libdvdcss/css.c | 2 | ||||
-rw-r--r-- | libvo/gl_common.c | 140 | ||||
-rw-r--r-- | libvo/gl_common.h | 5 | ||||
-rw-r--r-- | libvo/osx_common.c | 2 | ||||
-rw-r--r-- | libvo/sdl_common.c | 163 | ||||
-rw-r--r-- | libvo/sdl_common.h | 37 | ||||
-rw-r--r-- | libvo/video_out.c | 19 | ||||
-rw-r--r-- | libvo/video_out.h | 8 | ||||
-rw-r--r-- | libvo/vo_corevideo.m | 8 | ||||
-rw-r--r-- | libvo/vo_directfb2.c | 6 | ||||
-rw-r--r-- | libvo/vo_gl.c | 36 | ||||
-rw-r--r-- | libvo/vo_gl2.c | 15 | ||||
-rw-r--r-- | libvo/vo_kva.c | 6 | ||||
-rw-r--r-- | libvo/vo_sdl.c | 138 | ||||
-rw-r--r-- | libvo/w32_common.c | 11 | ||||
-rw-r--r-- | libvo/x11_common.c | 13 | ||||
-rw-r--r-- | mplayer.c | 3 | ||||
-rw-r--r-- | vidix/sysdep/pci_linux.c | 10 |
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> @@ -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 @@ -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) { @@ -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 */ |