mirror of
https://github.com/mpv-player/mpv
synced 2025-03-23 03:37:27 +00:00
Merge svn changes up to r31097
This commit is contained in:
commit
f38efd166e
@ -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
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" Synced with r30503
|
||||
.\" Synced with r31096
|
||||
.\" MPlayer (C) 2000-2010 MPlayer Team
|
||||
.\" Ezt a man oldalt Gabucino, Diego Biurrun és Jonas Jermann készíti/készítette
|
||||
.\" Karbantartó: Gabrov
|
||||
@ -33,7 +33,7 @@
|
||||
.\" Név
|
||||
.\" --------------------------------------------------------------------------
|
||||
.
|
||||
.TH MPlayer 1 "2010. 02. 06." "MPlayer Project" "A film lejátszó"
|
||||
.TH MPlayer 1 "2010. 04. 25." "MPlayer Project" "A film lejátszó"
|
||||
.
|
||||
.SH NÉV
|
||||
mplayer \- film lejátszó
|
||||
@ -289,6 +289,8 @@ K
|
||||
Képernyőmentések készítésének elindítása/leállítása.
|
||||
.IPs "I\ \ \ \ "
|
||||
Fájlnév megjelenítése az OSD-n.
|
||||
.IPs "P\ \ \ \ "
|
||||
Megjeleníti a folyamatsávot, az eltelt időt és az össz hosszot az OSD-n.
|
||||
.IPs "! és @"
|
||||
Ugrás az előző/következő fejezet elejére.
|
||||
.IPs "D (csak \-vo xvmc, \-vo vdpau, \-vf yadif, \-vf kerndeint mellett)"
|
||||
@ -637,6 +639,10 @@ lavcopts=mbd=2:trell=yes:v4mv=yes
|
||||
.SH "ÁLTALÁNOS OPCIÓK"
|
||||
.
|
||||
.TP
|
||||
.B \-codecpath <könyvtár>
|
||||
Megadja a bináris codec-ek könyvtárát.
|
||||
.
|
||||
.TP
|
||||
.B \-codecs\-file <fájlnév> (lásd még \-afm, \-ac, \-vfm, \-vc)
|
||||
Felülbírálja a szabványos keresési útvonalat és a megadott fájlt
|
||||
használja a beépített codecs.conf helyett.
|
||||
@ -1548,6 +1554,9 @@ Ez a kapcsol
|
||||
.TP
|
||||
.B \-mc <másodperc/képkocka>
|
||||
Maximális A-V szinkron javítás egy képkocka alatt (másodpercben).
|
||||
.br
|
||||
A \-mc 0 opciót mindig a \-noskip opcióval kell használni a mencodernél,
|
||||
különben majdnem biztosan A-V csúszást okoz.
|
||||
.
|
||||
.TP
|
||||
.B \-mf <opció1:opció2:...>
|
||||
@ -2878,9 +2887,9 @@ OS/2 KAI audi
|
||||
.PD 0
|
||||
.RSs
|
||||
.IPs uniaud
|
||||
UNIAUD mód kényszerítése
|
||||
UNIAUD mód kényszerítése.
|
||||
.IPs dart
|
||||
DART mód kényszerítése
|
||||
DART mód kényszerítése.
|
||||
.IPs (no)share
|
||||
Audió megosztott vagy kizárólagos módban történő megnyitása.
|
||||
.IPs bufsize=<méret>
|
||||
@ -3156,13 +3165,16 @@ A teljes k
|
||||
.PD 1
|
||||
.
|
||||
.TP
|
||||
.B \-geometry x[%][:y[%]] vagy [WxH][+x+y]
|
||||
.B \-geometry x[%][:y[%]] vagy [WxH][+-x+-y]
|
||||
Annak beállítása hogy kezdéskor hova lesz kirakva a video.
|
||||
Az x és y érték a képernyő bal felső sarkától a megjelenítendő ablak
|
||||
bal felső sarkáig mért távolság pixelben, vagy ha egy százalék jelet
|
||||
írsz az érték mögé, akkor a képernyő adott irányú méretének százalék
|
||||
érték lesz. Támogatja továbbá a szabványos X11 \-geometry formátumot is.
|
||||
Ha egy külső ablak is meg van adva a \-win opcióval, akkor az x és y
|
||||
érték lesz. Támogatja továbbá a szabványos X11 \-geometry opció formátumot
|
||||
is, melyben pl. a +10-50 azt jelenti, hogy "tedd 10 pixellel a bal szegély
|
||||
mellé és 50 pixellel az alsó szegély fölé", a "--20+-10" pedig azt, hogy
|
||||
"tedd 20 pixellel a jobb szegélyen túl és 10 pixellel a felső szegély fölé".
|
||||
Ha egy külső ablak is meg van adva a \-wid opcióval, akkor az x és y
|
||||
koordináták az ablak bal felső sarkához viszonyulnak a képernyő helyett.
|
||||
A \-xineramascreen kapcsolóval megadott koordináták a képernyőhöz
|
||||
viszonyítottak, azon videó kimeneti vezérlőknél, amelyek teljes mértékben
|
||||
@ -3510,8 +3522,7 @@ Vez
|
||||
.PD 1
|
||||
.
|
||||
.TP
|
||||
.B vdpau (\-vc ffmpeg12vdpau, ffwmv3vdpau, ffvc1vdpau, ffh264vdpau vagy
|
||||
ffodivxvdpau kapcsolókkal)
|
||||
.B vdpau (\-vc ffmpeg12vdpau, ffwmv3vdpau, ffvc1vdpau, ffh264vdpau vagy ffodivxvdpau kapcsolókkal)
|
||||
Videó kimenet, ami a VDPAU-t használja a videó hardveres dekódolásához.
|
||||
Támogatja a szoftveresen dekódolt videó megjelenítését is.
|
||||
.PD 0
|
||||
@ -5847,9 +5858,10 @@ Haszn
|
||||
.IPs <reset>
|
||||
Számláló, mely megadja, hogy hány képkocka után fogja törölni a cropdetect
|
||||
az előzőleg detektált legnagyobb videó méretet és végzi el újra az optimális
|
||||
vágási terület megállapítását. Ez hasznos lehet, ha csatorna logók zavarják
|
||||
a videó területét. A 0 azt jelenti, hogy soha nem resetel és a lejátszás
|
||||
során talált legnagyobb területet használja. (alapértelmezett: 0).
|
||||
vágási terület megállapítását (alapértelmezett: 0).
|
||||
Ez hasznos lehet, ha csatorna logók zavarják a videó területét.
|
||||
A 0 azt jelenti, hogy soha nem resetel és a lejátszás során talált legnagyobb
|
||||
területet használja.
|
||||
.RE
|
||||
.PD 1
|
||||
.
|
||||
@ -7524,6 +7536,48 @@ A nagyobb sug
|
||||
területek közelében lévő pixelek módosításában (alapértelmezett: 16).
|
||||
.RE
|
||||
.
|
||||
.TP
|
||||
.B fixpts[=opciók]
|
||||
Javítja a kockák prezentációs időbélyegjeit (PTS).
|
||||
Alapértelmezetten a következő szűrőnek átadott PTS el lesz dobva, de az
|
||||
alábbi opciók megváltoztathatják ezt:
|
||||
.RSs
|
||||
.IPs print
|
||||
Kiírja a bejövő PTS-t.
|
||||
.IPs fps=<fps>
|
||||
Megadja a kocka per másodperc értéket.
|
||||
.IPs start=<pts>
|
||||
Megad egy kezdeti PTS értéket.
|
||||
.IPs autostart=<n>
|
||||
Az
|
||||
.IR n-dik
|
||||
bejövő PTS-t használja kezdetiként.
|
||||
Minden előző PTS-t megtart, így egy nagy vagy \-1 érték érintetlenül
|
||||
hagyja a PTS-t.
|
||||
.IPs autofps=<n>
|
||||
Az
|
||||
.IR n-dik
|
||||
bejövő PTS-t használja az autostart után a kocka ráta megállapításához.
|
||||
.RE
|
||||
.sp 1
|
||||
.RS
|
||||
.I PÉLDA:
|
||||
.RE
|
||||
.PD 0
|
||||
.RSs
|
||||
.IPs "\-vf fixpts=fps=24000/1001,ass,fixpts"
|
||||
A PTS-ek új sorozatát állítja elő, használja az ASS feliratokhoz, majd eldobja.
|
||||
Egy új sorozat generálása hasznos, ha az időbélyegek törlődnek a program közben;
|
||||
ez gyakori a DVD-knél.
|
||||
Az eldobásuk szükséges lehet, hogy a kódolók ne zavarodjanak össze.
|
||||
.RE
|
||||
.PD 1
|
||||
.sp 1
|
||||
.RS
|
||||
.I MEGJEGYZÉS:
|
||||
Ezen szűrő és bármelyik keresési forma (beleértve a -ss -t és az EDL-eket)
|
||||
együttes használata kiszabadíthatja a szellemet a palackból.
|
||||
.RE
|
||||
.
|
||||
.
|
||||
.SH "ÁLTALÁNOS KÓDOLÁSI OPCIÓK (CSAK MENCODER)"
|
||||
@ -10149,9 +10203,16 @@ P-kock
|
||||
de nem nullázzák a "keyint számlálót".
|
||||
.
|
||||
.TP
|
||||
.B (no)intra_refresh
|
||||
Periódikus intra blokk frissítés a kulcskockák helyett (alapértelmezett: letiltva).
|
||||
Ez az opció letiltja az IDR-kockákat és helyettük azintra-kódolású blokkok egy mozgó,
|
||||
függőleges sávját használja. Ez csökkenti a tömörítési hatékonyságot, de
|
||||
jó az alacsony késleltetésű stream-elésnél és ellenálló a csomagvesztéssel szemben.
|
||||
.
|
||||
.TP
|
||||
.B frameref=<1\-16>
|
||||
A B- és P-kockák becsléséhez felhasznált előzetes képkockák száma
|
||||
(alapértelmezett: 1).
|
||||
(alapértelmezett: 3).
|
||||
Ez hatásos anime-nál, de élő akciós anyagnál a javulás általában
|
||||
nagyon gyorsan el is veszik 6 vagy több referenciakocka felett.
|
||||
Ennek nincs hatása a dekódolási sebességre, de növeli a dekódoláshoz
|
||||
@ -10160,7 +10221,7 @@ N
|
||||
.
|
||||
.TP
|
||||
.B bframes=<0\-16>
|
||||
maximálisan egymást követő B-kockák száma az I- és P-kockák között (alapértelmezett: 0)
|
||||
maximálisan egymást követő B-kockák száma az I- és P-kockák között (alapértelmezett: 3)
|
||||
.
|
||||
.TP
|
||||
.B (no)b_adapt
|
||||
@ -10236,6 +10297,20 @@ maxim
|
||||
kockák között (alapértelmezett: 4)
|
||||
.
|
||||
.TP
|
||||
.B (no)mbtree
|
||||
Engedélyezi a makroblokk fa rátavezérlését (alapértelmezett: engedélyezve).
|
||||
Hosszú előretekintést használ az adat időbeli terjedésének vizsgálatához és
|
||||
megfelelően súlyozza a minőséget.
|
||||
Több lépéses módban ez egy külön statisztika fájlt készít, melynek neve
|
||||
<passlogfile>.mbtree.
|
||||
.
|
||||
.TP
|
||||
.B rc_lookahead=<0\-250>
|
||||
Beállítja az mbtree előretekintésének távolságát (alapértelmezett: 40).
|
||||
A nagyobb értékek lassabbak lesznek és az x264 több memóriát fog használni,
|
||||
de jobb minőséget fog eredményezni.
|
||||
.
|
||||
.TP
|
||||
.B ratetol=<0.1\-100.0> (ABR vagy két lépéses)
|
||||
megengedett variancia az átlagos bitrátában (nincs saját mértékegysége) (alapértelmezett: 1.0)
|
||||
.
|
||||
@ -10327,6 +10402,20 @@ A direct_pred=none lassabb is
|
||||
.RE
|
||||
.
|
||||
.TP
|
||||
.B weightp
|
||||
Súlyozott P-kocka jóslás mód (alapértelmezett: 2).
|
||||
.PD 0
|
||||
.RSs
|
||||
.IPs 0
|
||||
letiltva (leggyorsabb)
|
||||
.IPs 1
|
||||
vak mód (kicsit jobb minőség)
|
||||
.IPs 2
|
||||
okos mód (legjobb)
|
||||
.RE
|
||||
.PD 1
|
||||
.
|
||||
.TP
|
||||
.B (no)weight_b
|
||||
Súlyozott becslés használata a B-kockákhoz.
|
||||
Ezen opció nélkül a kétirányúan megjósolt makroblokkok azonos szélességet
|
||||
@ -10430,9 +10519,9 @@ Finom
|
||||
SATD metrikával a kétirányú kereséssel megtalált vektorok újra felhasználása helyett.
|
||||
.IPs 6
|
||||
Engedélyezi a ráta-torzítás optimalizálását a makroblokk típusokra
|
||||
az I- és P-kockáknál (alapértelmezett).
|
||||
az I- és P-kockáknál.
|
||||
.IPs 7
|
||||
Engedélyezi a ráta-torzítás optimalizálását a makroblokk típusokra minden kockánál.
|
||||
Engedélyezi a ráta-torzítás optimalizálását a makroblokk típusokra minden kockánál (alapértelmezett).
|
||||
.IPs 8
|
||||
Engedélyezi a ráta-torzítás optimalizálását a mozgás vektorokra és a
|
||||
belső jósló módokra az I- és P-kockáknál.
|
||||
@ -10465,9 +10554,9 @@ r
|
||||
.PD 0
|
||||
.RSs
|
||||
.IPs 0
|
||||
letiltva (alapértelmezett)
|
||||
letiltva
|
||||
.IPs 1
|
||||
csak a végső kódoláshoz engedélyezi
|
||||
csak a végső kódoláshoz engedélyezi (alapértelmezett)
|
||||
.IPs 2
|
||||
minden mód döntésnél engedélyezi (lassú, subq>=6 szükséges)
|
||||
.RE
|
||||
@ -10486,6 +10575,11 @@ trellis (trellis kell hozz
|
||||
.PD 1
|
||||
.
|
||||
.TP
|
||||
.B (no)psy
|
||||
Engedélyezi a pszichovizuális optimalizációkat, melyek rontják a PSNR-t és az
|
||||
SSIM-et, de jobban néznek ki (alapértelmezett: engedélyezve).
|
||||
.
|
||||
.TP
|
||||
.B deadzone_inter=<0\-32>
|
||||
Beállítja az inter luma kvantálás holtterét a nem-rácsos kvantáláshoz
|
||||
(alapértelmezett: 21).
|
||||
@ -10618,12 +10712,43 @@ Csak akkor haszn
|
||||
.
|
||||
.TP
|
||||
.B threads=<0\-16>
|
||||
Gyermek szálak száma párhuzamos kódolásnál több CPU esetén (alapértelmezett: 1).
|
||||
Gyermek szálak száma párhuzamos kódolásnál több CPU esetén (alapértelmezett: 0).
|
||||
Ez nagyon kis mértékben ront a tömörített minőségen.
|
||||
A 0 vagy 'auto' az x264-re bízza a CPU-k számának detektálását és
|
||||
a szálak megfelelő számának kiválasztását.
|
||||
.
|
||||
.TP
|
||||
.B (no)sliced_threads
|
||||
Szelet alapú szálkezelést használ (alapértelmezett: letiltva).
|
||||
A normális szálkezeléstől eltérően ez az opció nem növeli a kódolási késleltetést,
|
||||
de kicsit lassabb és kisebb a hatékonysága a tömörítésnél.
|
||||
.
|
||||
.TP
|
||||
.B slice_max_size=<0 vagy pozitív egész>
|
||||
Maximális szelet méret bájtban (alapértelmezett: 0).
|
||||
A nulla érték letiltja a maximumot.
|
||||
.
|
||||
.TP
|
||||
.B slice_max_mbs=<0 vagy pozitív egész>
|
||||
Maximális szelet méret a makroblokkok számában (alapértelmezett: 0).
|
||||
A nulla érték letiltja a maximumot.
|
||||
.
|
||||
.TP
|
||||
.B slices=<0 vagy pozitív egész>
|
||||
A szeletek maximális száma kockánként (alapértelmezett: 0).
|
||||
A nulla érték letiltja a maximumot.
|
||||
.
|
||||
.TP
|
||||
.B sync_lookahead=<0\-250>
|
||||
Beállítja a szálas előretekintő buffer méretét (alapértelmezett: 0).
|
||||
A 0 vagy 'auto' hatására az x264 automatikusan megállapítja a buffer méretét.
|
||||
.
|
||||
.TP
|
||||
.B (no)deterministic
|
||||
Csak determinisztikus optimalizációt használ többszálas kódolással (alapértelmezett:
|
||||
engedélyezve).
|
||||
.
|
||||
.TP
|
||||
.B (no)global_header
|
||||
Az SPS és a PPS csak egyszer fog megjelenni, a bitfolyam elején
|
||||
(alapértelmezett: letiltva).
|
||||
@ -10635,6 +10760,61 @@ Alap
|
||||
Videó tartalmának átlapoltként történő kezelése.
|
||||
.
|
||||
.TP
|
||||
.B (no)constrained_intra
|
||||
Engedélyezi a kényszerített intra előrejelzést (alapértelmezett: letiltva).
|
||||
Ez jelentősen rontja a tömörítést, de szükséges az SVC kódolások alaprétegéhez.
|
||||
.
|
||||
.TP
|
||||
.B (no)aud
|
||||
Elérési egység elválasztókat ír a folyamba (alapértelmezett: letiltva).
|
||||
Csak akkor engedélyezd ezt, ha a cél konténer formátumnak szüksége van az
|
||||
elérési egység elválasztókra.
|
||||
.
|
||||
.TP
|
||||
.B overscan=<undef|show|crop>
|
||||
Beveszi a VUI overscan információkat a folyamba (alapértelmezett: letiltva).
|
||||
Lásd a doc/vui.txt fájlt az x264 forráskódjában a további információkért.
|
||||
.
|
||||
.TP
|
||||
.B videoformat=<component|pal|ntsc|secam|mac|undef>
|
||||
Beveszi a VUI videó formátum információt a folyamba (alapértelmezett: letiltva).
|
||||
Ez egy pusztán informatív beállítás az eredeti forrás leírásához.
|
||||
Lásd a doc/vui.txt fájlt az x264 forráskódjában a további információkért.
|
||||
.
|
||||
.TP
|
||||
.B (no)fullrange
|
||||
Beveszi a VUI full range információt a folyamba (alapértelmezett: letiltva).
|
||||
Használd ezt az opciót, ha a forrás videód nem range korlátozott.
|
||||
Lásd a doc/vui.txt fájlt az x264 forráskódjában a további információkért.
|
||||
.
|
||||
.TP
|
||||
.B colorprim=<bt709|bt470m|bt470bg|smpte170m|smpte240m|film|undef>
|
||||
Beveszi a szín információt (alapértelmezett: letiltva).
|
||||
Ez színkorrekcióhoz használható.
|
||||
Lásd a doc/vui.txt fájlt az x264 forráskódjában a további információkért.
|
||||
.
|
||||
.TP
|
||||
.B transfer=<bt709|bt470m|bt470bg|linear|log100|log316|smpte170m|smpte240m>
|
||||
Beveszi a VUI átviteli karakterisztika információját a folyamba
|
||||
(alapértelmezett: letiltva).
|
||||
Ez színkorrekcióhoz használható.
|
||||
Lásd a doc/vui.txt fájlt az x264 forráskódjában a további információkért.
|
||||
.
|
||||
.TP
|
||||
.B colormatrix=<bt709|fcc|bt470bg|smpte170m|smpte240m|GBR|YCgCo>
|
||||
Beveszi a VUI mátrix együtthatókat a folyamba (alapértelmezett: letiltva).
|
||||
Ez színkorrekcióhoz használható.
|
||||
Lásd a doc/vui.txt fájlt az x264 forráskódjában a további információkért.
|
||||
.
|
||||
.TP
|
||||
.B chromaloc=<0-5>
|
||||
Beveszi a VUI szín minta helyének információját a folyamba (alapértelmezett:
|
||||
letiltva).
|
||||
Használd ezt az opciót a színezet és a fényerő síkok igazításának biztosításához
|
||||
színtér konverziók után.
|
||||
Lásd a doc/vui.txt fájlt az x264 forráskódjában a további információkért.
|
||||
.
|
||||
.TP
|
||||
.B log=<\-1\-3>
|
||||
Beállítja a képernyőre kiírt log info mértékét.
|
||||
.PD 0
|
||||
@ -10676,6 +10856,11 @@ Ha a rendszereden l
|
||||
folyamat közben, amiben az x264 megpróbálegy áttekintést adni minden egyes
|
||||
kocka kódolásáról.
|
||||
Minden blokk típus a megjelenített filmben színezve lesz az alábbiak szerint:
|
||||
.
|
||||
.TP
|
||||
.B dump_yuv=<fájlnév>
|
||||
A YUV kockákat kiírja a megadott fájlba.
|
||||
Hibakeresénél használatos.
|
||||
.PD 0
|
||||
.RSs
|
||||
.IPs vörös/rózsaszín
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
3
Makefile
3
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
|
||||
|
13
configure
vendored
13
configure
vendored
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* common OpenGL routines
|
||||
*
|
||||
* copyleft (C) 2005 Reimar Döffinger <Reimar.Doeffinger@stud.uni-karlsruhe.de>
|
||||
* copyleft (C) 2005-2010 Reimar Döffinger <Reimar.Doeffinger@gmx.de>
|
||||
* Special thanks go to the xine team and Matthias Hopf, whose video_out_opengl.c
|
||||
* gave me lots of good ideas.
|
||||
*
|
||||
@ -35,6 +35,7 @@
|
||||
#include "old_vo_defines.h"
|
||||
#include "gl_common.h"
|
||||
#include "csputils.h"
|
||||
#include "aspect.h"
|
||||
|
||||
void (GLAPIENTRY *mpglBegin)(GLenum);
|
||||
void (GLAPIENTRY *mpglEnd)(void);
|
||||
@ -350,8 +351,24 @@ int glFindFormat(uint32_t fmt, int *bpp, GLint *gl_texfmt,
|
||||
return supported;
|
||||
}
|
||||
|
||||
static void *setNull(const GLubyte *s) {
|
||||
return NULL;
|
||||
#ifdef HAVE_LIBDL
|
||||
#include <dlfcn.h>
|
||||
#endif
|
||||
/**
|
||||
* \brief find address of a linked function
|
||||
* \param s name of function to find
|
||||
* \return address of function or NULL if not found
|
||||
*/
|
||||
static void *getdladdr(const char *s) {
|
||||
void *ret = NULL;
|
||||
#ifdef HAVE_LIBDL
|
||||
void *handle = dlopen(NULL, RTLD_LAZY);
|
||||
if (!handle)
|
||||
return NULL;
|
||||
ret = dlsym(handle, s);
|
||||
dlclose(handle);
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
@ -461,7 +478,7 @@ static void getFunctions(void *(*getProcAddress)(const GLubyte *),
|
||||
char *allexts;
|
||||
|
||||
if (!getProcAddress)
|
||||
getProcAddress = setNull;
|
||||
getProcAddress = (void *)getdladdr;
|
||||
|
||||
// special case, we need glGetString before starting to find the other functions
|
||||
mpglGetString = getProcAddress("glGetString");
|
||||
@ -1385,6 +1402,8 @@ static void glSetupYUVFragprog(gl_conversion_params_t *params) {
|
||||
*/
|
||||
int glAutodetectYUVConversion(void) {
|
||||
const char *extensions = mpglGetString(GL_EXTENSIONS);
|
||||
if (!extensions || !mpglMultiTexCoord2f)
|
||||
return YUV_CONVERSION_NONE;
|
||||
if (strstr(extensions, "GL_ARB_fragment_program"))
|
||||
return YUV_CONVERSION_FRAGMENT;
|
||||
if (strstr(extensions, "GL_ATI_text_fragment_shader"))
|
||||
@ -1493,12 +1512,16 @@ void glDisableYUVConversion(GLenum target, int type) {
|
||||
mpglDisable(GL_FRAGMENT_SHADER_ATI);
|
||||
break;
|
||||
case YUV_CONVERSION_TEXT_FRAGMENT:
|
||||
mpglDisable(GL_TEXT_FRAGMENT_SHADER_ATI);
|
||||
// HACK: at least the Mac OS X 10.5 PPC Radeon drivers are broken and
|
||||
// without this disable the texture units while the program is still
|
||||
// running (10.4 PPC seems to work without this though).
|
||||
mpglFlush();
|
||||
mpglActiveTexture(GL_TEXTURE1);
|
||||
mpglDisable(target);
|
||||
mpglActiveTexture(GL_TEXTURE2);
|
||||
mpglDisable(target);
|
||||
mpglActiveTexture(GL_TEXTURE0);
|
||||
mpglDisable(GL_TEXT_FRAGMENT_SHADER_ATI);
|
||||
break;
|
||||
case YUV_CONVERSION_FRAGMENT_LOOKUP3D:
|
||||
case YUV_CONVERSION_FRAGMENT_LOOKUP:
|
||||
@ -1669,26 +1692,7 @@ static void swapGlBuffers_w32(MPGLContext *ctx) {
|
||||
}
|
||||
#endif
|
||||
#ifdef CONFIG_GL_X11
|
||||
#ifdef HAVE_LIBDL
|
||||
#include <dlfcn.h>
|
||||
#endif
|
||||
#include "x11_common.h"
|
||||
/**
|
||||
* \brief find address of a linked function
|
||||
* \param s name of function to find
|
||||
* \return address of function or NULL if not found
|
||||
*/
|
||||
static void *getdladdr(const char *s) {
|
||||
void *ret = NULL;
|
||||
#ifdef HAVE_LIBDL
|
||||
void *handle = dlopen(NULL, RTLD_LAZY);
|
||||
if (!handle)
|
||||
return NULL;
|
||||
ret = dlsym(handle, s);
|
||||
dlclose(handle);
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Returns the XVisualInfo associated with Window win.
|
||||
@ -1788,8 +1792,6 @@ static int setGlWindow_x11(MPGLContext *ctx)
|
||||
getProcAddress = getdladdr("glXGetProcAddress");
|
||||
if (!getProcAddress)
|
||||
getProcAddress = getdladdr("glXGetProcAddressARB");
|
||||
if (!getProcAddress)
|
||||
getProcAddress = (void *)getdladdr;
|
||||
glXExtStr = getdladdr("glXQueryExtensionsString");
|
||||
if (glXExtStr)
|
||||
appendstr(&glxstr, glXExtStr(mDisplay, DefaultScreen(mDisplay)));
|
||||
@ -1802,10 +1804,10 @@ static int setGlWindow_x11(MPGLContext *ctx)
|
||||
|
||||
getFunctions(getProcAddress, glxstr);
|
||||
if (!mpglGenPrograms && mpglGetString &&
|
||||
getProcAddress != (void *)getdladdr &&
|
||||
getProcAddress &&
|
||||
strstr(mpglGetString(GL_EXTENSIONS), "GL_ARB_vertex_program")) {
|
||||
mp_msg(MSGT_VO, MSGL_WARN, "Broken glXGetProcAddress detected, trying workaround\n");
|
||||
getFunctions((void *)getdladdr, glxstr);
|
||||
getFunctions(NULL, glxstr);
|
||||
}
|
||||
free(glxstr);
|
||||
|
||||
@ -1863,8 +1865,76 @@ static void gl_ontop(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_GL_SDL
|
||||
#include "sdl_common.h"
|
||||
|
||||
static void swapGlBuffers_sdl(MPGLContext *ctx) {
|
||||
SDL_GL_SwapBuffers();
|
||||
}
|
||||
|
||||
static void *sdlgpa(const GLubyte *name) {
|
||||
return SDL_GL_GetProcAddress(name);
|
||||
}
|
||||
|
||||
static int setGlWindow_sdl(MPGLContext *ctx) {
|
||||
if (sdl_set_mode(0, SDL_OPENGL | SDL_RESIZABLE) < 0)
|
||||
return SET_WINDOW_FAILED;
|
||||
SDL_GL_LoadLibrary(NULL);
|
||||
getFunctions(sdlgpa, NULL);
|
||||
return SET_WINDOW_OK;
|
||||
}
|
||||
|
||||
static int sdl_check_events(void) {
|
||||
int res = 0;
|
||||
SDL_Event event;
|
||||
while (SDL_PollEvent(&event)) {
|
||||
res |= sdl_default_handle_event(&event);
|
||||
}
|
||||
// poll "events" from within MPlayer code
|
||||
res |= sdl_default_handle_event(NULL);
|
||||
if (res & VO_EVENT_RESIZE)
|
||||
sdl_set_mode(0, SDL_OPENGL | SDL_RESIZABLE);
|
||||
return res;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static int setGlWindow_dummy(MPGLContext *ctx) {
|
||||
getFunctions(NULL, NULL);
|
||||
return SET_WINDOW_OK;
|
||||
}
|
||||
|
||||
static void releaseGlContext_dummy(MPGLContext *ctx) {
|
||||
}
|
||||
|
||||
static int dummy_check_events(void) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void dummy_update_xinerama_info(void) {
|
||||
if (vo_screenwidth <= 0 || vo_screenheight <= 0) {
|
||||
mp_msg(MSGT_VO, MSGL_ERR, "You must specify the screen dimensions "
|
||||
"with -screenw and -screenh\n");
|
||||
vo_screenwidth = 1280;
|
||||
vo_screenheight = 768;
|
||||
}
|
||||
aspect_save_screenres(vo_screenwidth, vo_screenheight);
|
||||
}
|
||||
|
||||
int init_mpglcontext(MPGLContext *ctx, enum MPGLType type) {
|
||||
if (type == GLTYPE_AUTO) {
|
||||
int res = init_mpglcontext(ctx, GLTYPE_W32);
|
||||
if (res) return res;
|
||||
res = init_mpglcontext(ctx, GLTYPE_X11);
|
||||
if (res) return res;
|
||||
res = init_mpglcontext(ctx, GLTYPE_SDL);
|
||||
return res;
|
||||
}
|
||||
memset(ctx, 0, sizeof(*ctx));
|
||||
ctx->setGlWindow = setGlWindow_dummy;
|
||||
ctx->releaseGlContext = releaseGlContext_dummy;
|
||||
ctx->update_xinerama_info = dummy_update_xinerama_info;
|
||||
ctx->check_events = dummy_check_events;
|
||||
ctx->type = type;
|
||||
switch (ctx->type) {
|
||||
#ifdef CONFIG_GL_WIN32
|
||||
@ -1890,6 +1960,15 @@ int init_mpglcontext(MPGLContext *ctx, enum MPGLType type) {
|
||||
ctx->fullscreen = gl_fullscreen;
|
||||
ctx->ontop = gl_ontop;
|
||||
return vo_init();
|
||||
#endif
|
||||
#ifdef CONFIG_GL_SDL
|
||||
case GLTYPE_SDL:
|
||||
SDL_Init(SDL_INIT_VIDEO);
|
||||
ctx->setGlWindow = setGlWindow_sdl;
|
||||
ctx->swapGlBuffers = swapGlBuffers_sdl;
|
||||
ctx->check_events = sdl_check_events;
|
||||
ctx->fullscreen = vo_sdl_fullscreen;
|
||||
return vo_sdl_init();
|
||||
#endif
|
||||
default:
|
||||
return 0;
|
||||
@ -1908,6 +1987,11 @@ void uninit_mpglcontext(MPGLContext *ctx) {
|
||||
case GLTYPE_X11:
|
||||
vo_x11_uninit();
|
||||
break;
|
||||
#endif
|
||||
#ifdef CONFIG_GL_SDL
|
||||
case GLTYPE_SDL:
|
||||
vo_sdl_uninit();
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
memset(ctx, 0, sizeof(*ctx));
|
||||
|
@ -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 {
|
||||
|
@ -77,7 +77,7 @@
|
||||
#define kVK_UpArrow 0x7e
|
||||
#endif /* MAC_OS_X_VERSION_MAX_ALLOWED <= 1040 */
|
||||
|
||||
static const struct keymap keymap[] = {
|
||||
static const struct mp_keymap keymap[] = {
|
||||
// special keys
|
||||
{0x34, KEY_ENTER}, // Enter key on some iBooks?
|
||||
{kVK_Return, KEY_ENTER},
|
||||
|
163
libvo/sdl_common.c
Normal file
163
libvo/sdl_common.c
Normal file
@ -0,0 +1,163 @@
|
||||
/*
|
||||
* common SDL routines
|
||||
*
|
||||
* This file is part of MPlayer.
|
||||
*
|
||||
* MPlayer is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* MPlayer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with MPlayer; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
#include "sdl_common.h"
|
||||
#include "old_vo_defines.h"
|
||||
#include "mp_msg.h"
|
||||
#include "mp_fifo.h"
|
||||
#include "osdep/keycodes.h"
|
||||
#include "input/input.h"
|
||||
#include "input/mouse.h"
|
||||
#include "video_out.h"
|
||||
|
||||
static int old_w;
|
||||
static int old_h;
|
||||
static int mode_flags;
|
||||
static int reinit;
|
||||
|
||||
int vo_sdl_init(void)
|
||||
{
|
||||
reinit = 0;
|
||||
|
||||
if (!SDL_WasInit(SDL_INIT_VIDEO) &&
|
||||
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_NOPARACHUTE) < 0)
|
||||
return 0;
|
||||
|
||||
// Setup Keyrepeats (500/30 are defaults)
|
||||
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, 100 /*SDL_DEFAULT_REPEAT_INTERVAL*/);
|
||||
|
||||
// Easiest way to get uppercase characters
|
||||
SDL_EnableUNICODE(1);
|
||||
|
||||
// We don't want those in our event queue.
|
||||
SDL_EventState(SDL_ACTIVEEVENT, SDL_IGNORE);
|
||||
SDL_EventState(SDL_SYSWMEVENT, SDL_IGNORE);
|
||||
SDL_EventState(SDL_USEREVENT, SDL_IGNORE);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
void vo_sdl_uninit(void)
|
||||
{
|
||||
if (SDL_WasInit(SDL_INIT_VIDEO))
|
||||
SDL_QuitSubSystem(SDL_INIT_VIDEO);
|
||||
}
|
||||
|
||||
void vo_sdl_fullscreen(void)
|
||||
{
|
||||
if (vo_fs) {
|
||||
vo_dwidth = old_w;
|
||||
vo_dheight = old_h;
|
||||
} else {
|
||||
old_w = vo_dwidth;
|
||||
old_h = vo_dheight;
|
||||
vo_dwidth = vo_screenwidth;
|
||||
vo_dheight = vo_screenheight;
|
||||
}
|
||||
vo_fs = !vo_fs;
|
||||
sdl_set_mode(0, mode_flags);
|
||||
// on OSX at least we now need to do a full reinit.
|
||||
// TODO: this should only be set if really necessary.
|
||||
reinit = 1;
|
||||
}
|
||||
|
||||
int sdl_set_mode(int bpp, uint32_t flags)
|
||||
{
|
||||
SDL_Surface *s;
|
||||
mode_flags = flags;
|
||||
if (vo_fs) flags |= SDL_FULLSCREEN;
|
||||
// doublebuf with opengl creates flickering
|
||||
if (vo_doublebuffering && !(flags & SDL_OPENGL))
|
||||
flags |= SDL_DOUBLEBUF;
|
||||
s = SDL_SetVideoMode(vo_dwidth, vo_dheight, bpp, flags);
|
||||
if (!s) {
|
||||
mp_msg(MSGT_VO, MSGL_FATAL, "SDL SetVideoMode failed: %s\n", SDL_GetError());
|
||||
return -1;
|
||||
}
|
||||
vo_dwidth = s->w;
|
||||
vo_dheight = s->h;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct mp_keymap keysym_map[] = {
|
||||
{SDLK_RETURN, KEY_ENTER}, {SDLK_ESCAPE, KEY_ESC},
|
||||
{SDLK_F1, KEY_F+1}, {SDLK_F2, KEY_F+2}, {SDLK_F3, KEY_F+3},
|
||||
{SDLK_F4, KEY_F+4}, {SDLK_F5, KEY_F+5}, {SDLK_F6, KEY_F+6},
|
||||
{SDLK_F7, KEY_F+7}, {SDLK_F8, KEY_F+8}, {SDLK_F9, KEY_F+9},
|
||||
{SDLK_F10, KEY_F+10}, {SDLK_F11, KEY_F+11}, {SDLK_F12, KEY_F+12},
|
||||
{SDLK_KP_PLUS, '+'}, {SDLK_KP_MINUS, '-'}, {SDLK_TAB, KEY_TAB},
|
||||
{SDLK_PAGEUP, KEY_PAGE_UP}, {SDLK_PAGEDOWN, KEY_PAGE_DOWN},
|
||||
{SDLK_UP, KEY_UP}, {SDLK_DOWN, KEY_DOWN},
|
||||
{SDLK_LEFT, KEY_LEFT}, {SDLK_RIGHT, KEY_RIGHT},
|
||||
{SDLK_KP_MULTIPLY, '*'}, {SDLK_KP_DIVIDE, '/'},
|
||||
{SDLK_KP0, KEY_KP0}, {SDLK_KP1, KEY_KP1}, {SDLK_KP2, KEY_KP2},
|
||||
{SDLK_KP3, KEY_KP3}, {SDLK_KP4, KEY_KP4}, {SDLK_KP5, KEY_KP5},
|
||||
{SDLK_KP6, KEY_KP6}, {SDLK_KP7, KEY_KP7}, {SDLK_KP8, KEY_KP8},
|
||||
{SDLK_KP9, KEY_KP9},
|
||||
{SDLK_KP_PERIOD, KEY_KPDEC}, {SDLK_KP_ENTER, KEY_KPENTER},
|
||||
};
|
||||
|
||||
int sdl_default_handle_event(SDL_Event *event)
|
||||
{
|
||||
int mpkey;
|
||||
if (!event) {
|
||||
int res = reinit ? VO_EVENT_REINIT : 0;
|
||||
reinit = 0;
|
||||
return res;
|
||||
}
|
||||
switch (event->type) {
|
||||
case SDL_VIDEORESIZE:
|
||||
vo_dwidth = event->resize.w;
|
||||
vo_dheight = event->resize.h;
|
||||
return VO_EVENT_RESIZE;
|
||||
|
||||
case SDL_VIDEOEXPOSE:
|
||||
return VO_EVENT_EXPOSE;
|
||||
|
||||
case SDL_MOUSEMOTION:
|
||||
vo_mouse_movement(global_vo, event->motion.x, event->motion.y);
|
||||
break;
|
||||
|
||||
case SDL_MOUSEBUTTONDOWN:
|
||||
if (!vo_nomouse_input)
|
||||
mplayer_put_key((MOUSE_BTN0 + event->button.button - 1) | MP_KEY_DOWN);
|
||||
break;
|
||||
|
||||
case SDL_MOUSEBUTTONUP:
|
||||
if (!vo_nomouse_input)
|
||||
mplayer_put_key(MOUSE_BTN0 + event->button.button - 1);
|
||||
break;
|
||||
|
||||
case SDL_KEYDOWN:
|
||||
mpkey = lookup_keymap_table(keysym_map, event->key.keysym.sym);
|
||||
if (!mpkey &&
|
||||
event->key.keysym.unicode > 0 &&
|
||||
event->key.keysym.unicode < 128)
|
||||
mpkey = event->key.keysym.unicode;
|
||||
if (mpkey)
|
||||
mplayer_put_key(mpkey);
|
||||
break;
|
||||
|
||||
case SDL_QUIT:
|
||||
mplayer_put_key(KEY_CLOSE_WIN);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
37
libvo/sdl_common.h
Normal file
37
libvo/sdl_common.h
Normal file
@ -0,0 +1,37 @@
|
||||
/*
|
||||
* common SDL routines
|
||||
*
|
||||
* This file is part of MPlayer.
|
||||
*
|
||||
* MPlayer is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* MPlayer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with MPlayer; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
#ifndef MPLAYER_SDL_COMMON_H
|
||||
#define MPLAYER_SDL_COMMON_H
|
||||
|
||||
#include "config.h"
|
||||
#ifdef CONFIG_SDL_SDL_H
|
||||
#include <SDL/SDL.h>
|
||||
#else
|
||||
#include <SDL.h>
|
||||
#endif
|
||||
|
||||
int vo_sdl_init(void);
|
||||
void vo_sdl_uninit(void);
|
||||
void vo_sdl_fullscreen(void);
|
||||
int sdl_set_mode(int bpp, uint32_t flags);
|
||||
int sdl_default_handle_event(SDL_Event *event);
|
||||
|
||||
#endif /* MPLAYER_SDL_COMMON_H */
|
@ -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*/
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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"
|
||||
|
@ -34,6 +34,14 @@
|
||||
#include "fastmemcpy.h"
|
||||
#include "ass_mp.h"
|
||||
|
||||
#ifdef CONFIG_GL_SDL
|
||||
#ifdef CONFIG_SDL_SDL_H
|
||||
#include <SDL/SDL.h>
|
||||
#else
|
||||
#include <SDL.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static const vo_info_t info =
|
||||
{
|
||||
"OpenGL",
|
||||
@ -485,7 +493,7 @@ static void autodetectGlExtensions(void) {
|
||||
const char *extensions = mpglGetString(GL_EXTENSIONS);
|
||||
const char *vendor = mpglGetString(GL_VENDOR);
|
||||
const char *version = mpglGetString(GL_VERSION);
|
||||
int is_ati = strstr(vendor, "ATI") != NULL;
|
||||
int is_ati = vendor && strstr(vendor, "ATI") != NULL;
|
||||
int ati_broken_pbo = 0;
|
||||
mp_msg(MSGT_VO, MSGL_V, "[gl] Running on OpenGL by '%s', versions '%s'\n", vendor, version);
|
||||
if (is_ati && strncmp(version, "2.1.", 4) == 0) {
|
||||
@ -494,8 +502,12 @@ static void autodetectGlExtensions(void) {
|
||||
ati_broken_pbo = ver && ver < 8395;
|
||||
}
|
||||
if (ati_hack == -1) ati_hack = ati_broken_pbo;
|
||||
if (force_pbo == -1) force_pbo = strstr(extensions, "_pixel_buffer_object") ? is_ati : 0;
|
||||
if (use_rectangle == -1) use_rectangle = strstr(extensions, "_texture_non_power_of_two") ? 0 : 0;
|
||||
if (extensions && force_pbo == -1)
|
||||
force_pbo = strstr(extensions, "_pixel_buffer_object") ? is_ati : 0;
|
||||
if (extensions && use_rectangle == -1)
|
||||
use_rectangle = strstr(extensions, "_texture_non_power_of_two") ? 0 : 0;
|
||||
if (use_osd == -1)
|
||||
use_osd = mpglBindTexture != NULL;
|
||||
if (use_yuv == -1)
|
||||
use_yuv = glAutodetectYUVConversion();
|
||||
if (is_ati && (lscale == 1 || lscale == 2 || cscale == 1 || cscale == 2))
|
||||
@ -599,6 +611,13 @@ static int create_window(uint32_t d_width, uint32_t d_height, uint32_t flags, co
|
||||
XCreateColormap(mDisplay, mRootWin, vinfo->visual, AllocNone),
|
||||
"gl", title);
|
||||
}
|
||||
#endif
|
||||
#ifdef CONFIG_GL_SDL
|
||||
if (glctx.type == GLTYPE_SDL) {
|
||||
SDL_WM_SetCaption(title, NULL);
|
||||
vo_dwidth = d_width;
|
||||
vo_dheight = d_height;
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
@ -639,6 +658,10 @@ glconfig:
|
||||
static void check_events(void)
|
||||
{
|
||||
int e=glctx.check_events();
|
||||
if(e&VO_EVENT_REINIT) {
|
||||
uninitGl();
|
||||
initGl(vo_dwidth, vo_dheight);
|
||||
}
|
||||
if(e&VO_EVENT_RESIZE) resize(vo_dwidth,vo_dheight);
|
||||
if(e&VO_EVENT_EXPOSE && int_pause) redraw();
|
||||
}
|
||||
@ -1084,13 +1107,10 @@ static const opt_t subopts[] = {
|
||||
|
||||
static int preinit_internal(const char *arg, int allow_sw)
|
||||
{
|
||||
enum MPGLType gltype = GLTYPE_X11;
|
||||
// set defaults
|
||||
#ifdef CONFIG_GL_WIN32
|
||||
gltype = GLTYPE_W32;
|
||||
#endif
|
||||
enum MPGLType gltype = GLTYPE_AUTO;
|
||||
many_fmts = 1;
|
||||
use_osd = 1;
|
||||
use_osd = -1;
|
||||
scaled_osd = 0;
|
||||
use_aspect = 1;
|
||||
use_ycbcr = 0;
|
||||
|
@ -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;
|
||||
|
@ -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},
|
||||
|
138
libvo/vo_sdl.c
138
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);
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user