aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Changelog83
-rw-r--r--DOCS/man/en/mplayer.118
-rw-r--r--DOCS/man/fr/mplayer.171
-rw-r--r--DOCS/man/hu/mplayer.129
-rw-r--r--DOCS/man/ru/mplayer.123
-rw-r--r--DOCS/man/zh_CN/mplayer.1116
-rw-r--r--DOCS/tech/codecs-in.html52
-rw-r--r--DOCS/tech/svn-howto.txt4
-rw-r--r--DOCS/xml/fr/faq.xml362
-rw-r--r--DOCS/xml/fr/ports.xml99
-rw-r--r--DOCS/xml/fr/radio.xml36
-rw-r--r--Makefile40
-rw-r--r--TOOLS/subrip.c5
-rw-r--r--cfg-mplayer.h2
-rw-r--r--codec-cfg.c8
-rwxr-xr-xconfigure32
-rw-r--r--help/help_mp-bg.h2
-rw-r--r--help/help_mp-cs.h2
-rw-r--r--help/help_mp-de.h2
-rw-r--r--help/help_mp-dk.h2
-rw-r--r--help/help_mp-el.h2
-rw-r--r--help/help_mp-en.h2
-rw-r--r--help/help_mp-es.h2
-rw-r--r--help/help_mp-fr.h2
-rw-r--r--help/help_mp-hu.h2
-rw-r--r--help/help_mp-it.h2
-rw-r--r--help/help_mp-ja.h2
-rw-r--r--help/help_mp-ko.h2
-rw-r--r--help/help_mp-mk.h2
-rw-r--r--help/help_mp-nb.h2
-rw-r--r--help/help_mp-nl.h2
-rw-r--r--help/help_mp-pl.h2
-rw-r--r--help/help_mp-pt_BR.h2
-rw-r--r--help/help_mp-ro.h2
-rw-r--r--help/help_mp-ru.h2
-rw-r--r--help/help_mp-sk.h2
-rw-r--r--help/help_mp-sv.h2
-rw-r--r--help/help_mp-tr.h2
-rw-r--r--help/help_mp-uk.h642
-rw-r--r--help/help_mp-zh_CN.h2
-rw-r--r--help/help_mp-zh_TW.h2
-rw-r--r--liba52/a52.h3
-rw-r--r--liba52/liba52_changes.diff92
-rw-r--r--libaf/af_resample.c36
-rw-r--r--libao2/ao_alsa.c2
-rw-r--r--libao2/ao_alsa5.c2
-rw-r--r--libao2/ao_arts.c2
-rw-r--r--libao2/ao_dart.c334
-rw-r--r--libao2/ao_dsound.c4
-rw-r--r--libao2/ao_dxr2.c2
-rw-r--r--libao2/ao_esd.c2
-rw-r--r--libao2/ao_ivtv.c2
-rw-r--r--libao2/ao_jack.c2
-rw-r--r--libao2/ao_macosx.c2
-rw-r--r--libao2/ao_mpegpes.c2
-rw-r--r--libao2/ao_nas.c2
-rw-r--r--libao2/ao_null.c2
-rw-r--r--libao2/ao_openal.c2
-rw-r--r--libao2/ao_oss.c2
-rw-r--r--libao2/ao_pcm.c2
-rw-r--r--libao2/ao_pulse.c2
-rw-r--r--libao2/ao_sdl.c2
-rw-r--r--libao2/ao_sgi.c2
-rw-r--r--libao2/ao_sun.c2
-rw-r--r--libao2/ao_v4l2.c2
-rw-r--r--libao2/ao_win32.c95
-rw-r--r--libao2/audio_out.c48
-rw-r--r--libao2/audio_out.h2
-rw-r--r--libao2/audio_out_internal.h2
-rw-r--r--libass/ass.c4
-rw-r--r--libass/ass_bitmap.c43
-rw-r--r--libass/ass_bitmap.h2
-rw-r--r--libass/ass_cache.c50
-rw-r--r--libass/ass_cache.h21
-rw-r--r--libass/ass_render.c194
-rw-r--r--libass/ass_types.h1
-rw-r--r--libass/ass_utils.c11
-rw-r--r--libass/ass_utils.h1
-rw-r--r--libfaad2/local_changes.diff5
-rw-r--r--libfaad2/specrec.c3
-rw-r--r--libmpcodecs/vd_ffmpeg.c46
-rw-r--r--libmpdemux/demux_ts.c3
-rw-r--r--libmpeg2/libmpeg2_changes.diff231
-rw-r--r--libswscale/rgb2rgb.c13
-rw-r--r--libswscale/rgb2rgb_template.c83
-rw-r--r--libswscale/swscale.c4
-rw-r--r--libswscale/swscale_template.c31
-rw-r--r--libswscale/yuv2rgb.c5
-rw-r--r--libswscale/yuv2rgb_altivec.c10
-rw-r--r--libswscale/yuv2rgb_template.c2
-rw-r--r--libswscale/yuv2rgb_vis.c6
-rw-r--r--libvo/video_out.c2
-rw-r--r--libvo/video_out.h2
-rw-r--r--libvo/vo_gl.c79
-rw-r--r--libvo/vo_vdpau.c73
-rw-r--r--libvo/x11_common.c6
-rw-r--r--m_option.c29
-rw-r--r--m_option.h2
-rw-r--r--osdep/getch2-win.c21
-rw-r--r--osdep/getch2.c23
-rw-r--r--osdep/getch2.h24
-rw-r--r--osdep/gettimeofday.c18
-rw-r--r--osdep/glob-win.c18
-rw-r--r--osdep/glob.h18
-rw-r--r--osdep/keycodes.h22
-rw-r--r--osdep/macosx_finder_args.c18
-rw-r--r--osdep/mmap_anon.c18
-rw-r--r--osdep/mmap_anon.h18
-rw-r--r--osdep/mplayer.rc23
-rw-r--r--osdep/setenv.c20
-rw-r--r--osdep/shmem.c25
-rw-r--r--osdep/shmem.h18
-rw-r--r--osdep/strsep.c20
-rw-r--r--osdep/swab.c18
-rw-r--r--osdep/timer-linux.c21
-rw-r--r--osdep/timer-win2.c20
-rw-r--r--osdep/timer.h18
-rw-r--r--osdep/vsscanf.c22
-rw-r--r--subopt-helper.c13
-rw-r--r--subopt-helper.h5
-rw-r--r--tremor/tremor.diff10
-rwxr-xr-xversion.sh7
122 files changed, 2743 insertions, 981 deletions
diff --git a/Changelog b/Changelog
index 818fea087f..5cf0d4d533 100644
--- a/Changelog
+++ b/Changelog
@@ -1,8 +1,7 @@
MPlayer (1.0)
- rc3:
+ rc3: "StillAlive" March 1, 2009
Decoders:
- * Nellymoser audio decoding via lavc
* support for X8 frame (fixes "J-type picture is not supported" for WMV2)
* support for DTS WAV/DTS-CD passthrough by ad_hwac3
* Apple's raw YUV2 in MOV
@@ -10,8 +9,6 @@ MPlayer (1.0)
* video game codecs: BFI video, Playstation MDEC video, ADPCM XA audio,
EA Maxis XA ADPCM audio, RL2 video, Beam Software SIFF video, V.Flash PTX video
* AVOption support for libavcodec-based decoders
- * image decoders: Sun rasterfile, PCX image
- * MLP decoder via lavc
* use lavc ADPCM codecs by default
* support for progressive jpeg in ffmjpeg
* ACDSystems mjpeg (ACDV) via binary DLL and lavc
@@ -39,14 +36,15 @@ MPlayer (1.0)
* 10-bit video (v210) via Cinewave binary DLL
* Brooktree YUV 4:1:1 Raw (Y41P) via binary DLL
* many rare/obscure fourccs for known formats added
+ * lower priority for binary Linux rv3040 codecs due to bugs
Demuxers:
* -lavfdopts cryptokey allows decrypting MXF and ASF files
* support for wavpack in Matroska
- * demux_lavf permits program switching
* AVOption support for lavf demuxing
* prefer lavf musepack demuxer over libmpdemux
- * prefer lavf MOV demuxer over libmpdemux
+ * prefer lavf MOV demuxer over libmpdemux (use -demuxer mov for old behavior)
+ * support program switching in lavf demuxer
* support -slang in lavf demuxer
* support nosound switching in lavf demuxer
* support libass in lavf demuxer
@@ -54,6 +52,7 @@ MPlayer (1.0)
* support MOV subtitle format
* support for attachments in lavf demuxer
* support for chapters in lavf demuxer
+ * support seeking in multirate RealMedia files
* FLAC speedup in lavf demuxer
* MNG demuxer
@@ -70,19 +69,66 @@ MPlayer (1.0)
* DVD streams can switch angles
* DVD still menus are now supported via dvdnav://
* allow specifying the TV standard for each channel
+ * switch internal dvdread to libdvdread SVN external
FFmpeg/libavcodec:
- * DNxHD (SMPTE VC-3) encoder
- * H.264 speedup and PAFF decoding
+ * DNxHD encoder
+ * H.264 PAFF decoding
+ * Nellymoser ASAO decoder
+ * Beam Software SIFF demuxer and decoder
+ * libvorbis Vorbis decoding removed in favor of native decoder
+ * IntraX8 (J-Frame) subdecoder for WMV2 and VC-1
+ * Ogg (Vorbis only) muxer
+ * PC Paintbrush PCX decoder
+ * Sun Rasterfile decoder
+ * TechnoTrend PVA demuxer
+ * Linux Media Labs MPEG-4 (LMLM4) demuxer
+ * AVM2 (Flash 9) SWF muxer
+ * QT variant of IMA ADPCM encoder
+ * Ipod/Iphone compatible mp4 muxer
+ * Mimic decoder
+ * MSN TCP Webcam stream demuxer
+ * RL2 demuxer / decoder
+ * IFF demuxer
+ * 8SVX audio decoder
+ * BFI demuxer
+ * MAXIS EA XA (.xa) demuxer / decoder
+ * BFI video decoder
+ * OMA demuxer
+ * MLP/TrueHD decoder
+ * Electronic Arts CMV decoder
+ * Motion Pixels Video decoder
+ * Motion Pixels MVI demuxer
+ * removed animated GIF decoder/demuxer
+ * D-Cinema audio muxer
+ * Electronic Arts TGV decoder
+ * Apple Lossless Audio Codec (ALAC) encoder
+ * AAC decoder
+ * floating point PCM encoder/decoder
+ * MXF muxer
+ * E-AC-3 support added to AC-3 decoder
+ * Nellymoser ASAO encoder
+ * ASS and SSA demuxer and muxer
+ * liba52 wrapper removed
+ * SVQ3 watermark decoding support
+ * Speex decoding via libspeex
+ * Electronic Arts TGQ decoder
+ * RV30 and RV40 decoder
+ * QCELP / PureVoice decoder
+ * hybrid WavPack support
+ * R3D REDCODE demuxer
+ * Electronic Arts TQI decoder
+ * OpenJPEG based JPEG 2000 decoder
+ * NC (NC4600) cameras file demuxer
+ * MXF D-10 muxer
+ * Generic metadata API
+ * H.264 speedup and PAFF decoding (install Yasm for faster H264 decoding)
* correctly decode more of the H.264 conformance testsuite
- * Nellymoser audio codec
- * VC-1/WMV3 MMX optimizations
+ * VC-1/WMV3 decoder speedup
* VP3 decoder speedup
+ * VP6 decoder speedup
* Split-Radix FFT (speedup multiple audio codecs)
* MMX/SSE/ARM and other misc speedups
- * QCELP decoder
- * RV30 decoder
- * RV40 decoder
libmpeg2:
* enable Alpha/ARM optimizations in libmpeg2
@@ -98,7 +144,8 @@ MPlayer (1.0)
* Direct3D Windows video output driver added.
* factorize code in vo_wii
* removed unnecessary code from vo x11, xv, xvmc
- * automatic detection of hw acceleration (vo gl:yuv=x) for vo_gl
+ * add OS/2 DART audio driver (-ao dart)
+ * add VDPAU video output
MEncoder:
* check for system-wide configuration file in MEncoder
@@ -116,11 +163,16 @@ MPlayer (1.0)
* add options to disable some or all configuration files
* support for DOS-style file:///x:/path paths
* some new slave commands (check DOCS/tech/slave.txt)
- * misc fixes to libass
* libdvdcss updated to 1.2.10, now same as upstream version
* fix -endchapter support again for -dump* options
* add startup volume option
+ libass:
+ * various fixes and updates to match VSFilter renderer
+ * support \blur tag and ScaledBordersAndShadow property
+ * fractional arguments and subpixel accuracy
+ * keep positions when pan-and-scan is used
+
Ports:
* small crash with vo_macosx fixed
* AC3/DTS passthrough for ao_macosx
@@ -129,6 +181,7 @@ MPlayer (1.0)
* VIDIX on SuperH.
* workarounds for AltiVec on Apple gcc 3.3 on Mac OS X dropped
* vo_macosx can now be compiled in 64-bits mode
+ * allow multiple MPlayer instances w/ vo_macosx using buffer_name
* OpenGL support for unmodified MinGW64
SWScaler:
diff --git a/DOCS/man/en/mplayer.1 b/DOCS/man/en/mplayer.1
index a518775ae2..3f250fced5 100644
--- a/DOCS/man/en/mplayer.1
+++ b/DOCS/man/en/mplayer.1
@@ -904,6 +904,7 @@ i.e.\& using the shell.
MPlayer uses this command without any checking, it is your responsibility
to ensure it does not cause security problems (e.g.\& make sure to use full
paths if "." is in your path like on Windows).
+It also only works when playing video (i.e. not with \-novideo but works with \-vo null).
.sp 1
This can be "misused" to disable screensavers that do not support the proper
X API (also see \-stop\-xscreensaver).
@@ -2836,6 +2837,18 @@ Playing a file with \-v will show a list of available devices.
.PD 1
.
.TP
+.B dart (OS/2 only)
+OS/2 DART audio output driver
+.PD 0
+.RSs
+.IPs (no)share
+Open DART in shareable or exclusive mode.
+.IPs bufsize=<size>
+Set buffer size to <size> in samples (default: 2048).
+.RE
+.PD 1
+.
+.TP
.B dxr2 (also see \-dxr2) (DXR2 only)
Creative DXR2 specific output driver
.
@@ -3433,13 +3446,14 @@ For positive values, apply a sharpening algorithm to the video,
for negative values a blurring algorithm (default: 0).
.IPs denoise=<0\-1>
Apply a noise reduction algorithm to the video (default: 0, no noise reduction).
-.IPs deint=<0\-3>
+.IPs deint=<0\-4>
Chooses the deinterlacer (default: 0).
+All modes > 0 respect \-field\-dominance.
.RSss
.IPs 0
No deinterlacing.
.IPs 1
-Show only one field, similar to \-vf field.
+Show only first field, similar to \-vf field.
.IPs 2
Bob deinterlacing (current fallback for advanced deinterlacers).
.IPs 3
diff --git a/DOCS/man/fr/mplayer.1 b/DOCS/man/fr/mplayer.1
index 6cd246408d..d042125311 100644
--- a/DOCS/man/fr/mplayer.1
+++ b/DOCS/man/fr/mplayer.1
@@ -1,4 +1,4 @@
-.\" synced with r28415
+.\" synced with r28807
.\" Encoding: iso-8859-1
.\" MPlayer (C) 2000-2009 MPlayer Team
.\" The English man page was/is done by Gabucino, Diego Biurrun, Jonas Jermann
@@ -300,7 +300,7 @@ Amorce/arrête la capture d'écran.
Affiche le nom de fichier dans l'OSD.
.IPs "! and @"
Saute au début du chapitre précédent/suivant.
-.IPs "D (\-vo xvmc, \-vf yadif et \-vf kerndeint uniquement)"
+.IPs "D (\-vo xvmc, \-vo vdpau, \-vf yadif et \-vf kerndeint uniquement)"
Active/désactive le désentrelacement.
.IPs "A"
Bascule entre les angles disponibles du DVD.
@@ -764,9 +764,9 @@ Cela est particulièrement utile sur les terminaux lents ou endommagés qui ne
gèrent pas les retours chariot (c-à-d \\r).
.
.TP
-.B \-priority <prio> (Windows uniquement)
+.B \-priority <prio> (Windows et OS/2 uniquement)
Définit le niveau de priorité de MPlayer suivant les priorités prédéfinies
-disponibles sous Windows.
+disponibles sous Windows et OS/2.
Valeurs possibles de <prio>\ :
.RSs
idle|belownormal|normal|abovenormal|high|realtime
@@ -946,6 +946,7 @@ MPlayer utilise cette commande sans aucune sorte de vérification, il est
donc de votre responsablité qu'elle ne pose pas de problème de sécurité
(c-à-d que vous devriez spécifier le chemin absolu, surtout si "." est dans
le chemin de recherche $PATH, comme c'est le cas sous Windows).
+Cela fonctionne aussi lors de la lecture d'une vidéo (c-à-d. que ça ne fonctionne pas avec \-novideo alors que ça fonctionne avec \-vo null).
.sp 1
Ceci peut être "détourné" pour désactiver un économiseur d'écran ne gérant par
l'API de X prévu à cet effet (voir aussi \-stop\-xscreensaver).
@@ -2980,7 +2981,7 @@ Choisit explicitement le périphérique audio à utiliser (par défaut\ :
pilote de sortie audio waveout natif de Windows
.
.TP
-.B dsound (Windows only)
+.B dsound (Windows uniquement)
pilote de sortie audio DirectX DirectSound
.PD 0
.RSs
@@ -2992,6 +2993,18 @@ disponibles.
.PD 1
.
.TP
+.B dart (OS/2 uniquement)
+pilote de sortie audio DART pour OS/2
+.PD 0
+.RSs
+.IPs (no)share
+Ouvre DART en mode partagé (share) ou exclusif.
+.IPs bufsize=<taille>
+Fixe la taille du tampon à <taille> échantillons (par défaut\ : 2048).
+.RE
+.PD 1
+.
+.TP
.B dxr2 (also see \-dxr2) (DXR2 uniquement)
pilote de sortie de la Créative DXR2
.
@@ -3612,6 +3625,42 @@ Sélectionnne le pilote à utiliser comme source pour l'incrustation dans X11.
.PD 1
.
.TP
+.B vdpau (avec \-vc ffmpeg12vdpau, ffwmv3vdpau, ffvc1vdpau ou ffh264vdpau)
+Sortie vidéo utilisant VDPAU pour décoder les vidéos matériellement.
+Gère aussi l'affichage de vidéos décodées en logiciel.
+.PD 0
+.RSs
+.IPs sharpen=<\-1\-1>
+Pour des valeurs positives, applique à la vidéo un filtre d'affinage,
+pour des valeurs négatives, applique à la vidéo un filtre de flou (par
+défaut\ : 0)
+.IPs denoise=<0\-1>
+Applique à la vidéo un filtre de réduction de bruit (par défaut\ : 0, pas de
+réduction de bruit)
+.IPs deint=<0\-4>
+Sélectionne un désentrelaceur (par défaut\ : 0)
+Tous les modes > 0 respectent \-field\-dominance.
+.RSss
+.IPs 0
+pas de désentrelacement
+.IPs 1
+Affiche uniquement le premier champ, comme le filtre \-vf field.
+.IPs 2
+désentrelaceur bob (solution de secours pour les désentrelaceurs avancés).
+.IPs 3
+Désentrelaceur à adaptation de mouvement temporel (ne fonctionne pas encore).
+C'est le comportement par défaut si "D" est utilisé pour activer le
+désentrelacement.
+.IPs 4
+Désentrelaceur à adaptation de mouvement temporel avec interpolation spatiale guidé par les bords (ne fonctionne pas encore).
+.RE
+.IPs pullup
+Essaye d'appliquer un filtre téléciné inverse.
+Nécessite un filtre de désentrelacement temporel.
+.RE
+.PD 1
+.
+.TP
.B xvmc (X11 avec \-vc ffmpeg12mc uniquement)
Ce pilote emploie l'extension XvMC (X Video Motion Compensation) de
XFree86 4.x pour accélérer les lectures de médias MPEG-1/\:2 et VCR2.
@@ -4616,7 +4665,7 @@ Désactive la compensation automatique du rapport hauteur/\:largeur.
.B \-field\-dominance <\-1\-1>
Défini le premier champ du contenu entrelacé.
Utile pour les dé-entrelaceurs qui doublent le nombre d'images par seconde
-\-vf tfields=1, \-vf yadif=1 et \-vo xvmc:bobdeint.
+\-vf tfields=1, \-vf yadif=1, \-vo vdpau:deint et \-vo xvmc:bobdeint.
.PD 0
.RSs
.IPs \-1
@@ -5767,6 +5816,14 @@ Changer la vitesse de lecture affectera le ton, en laissant le tempo à 1.2x.
.RE
.PD 1
.
+TP
+.B "stats\ \ "
+Collecte et affiche des statistiques à propos des flux audio, le volume en
+particulier.
+Ces statistiques sont voués à être utilisés pour aider l'ajustement du volume
+sans saturation.
+Les volumes sont affichés en dB et sont compatibles avec le filtre audio volume.
+.
.
.
.SH "FILTRES VIDÉO"
@@ -6948,7 +7005,7 @@ Suivant la source MPEG, il est inutile de tenir compte de ce conseil, tant
que vous ne voyez pas une multitude d'avertissements "Bottom-first field".
Sans options il fait un telecine inverse normal, et devrait être utilisé avec
mencoder \-fps 30000/1001 \-ofps 24000/1001.
-Quand ce filtre est utilisé avec mplayer, cela produira un débit impair
+Quand ce filtre est utilisé avec MPlayer, cela produira un débit impair
pendant la lecture, mais il sera généralement meilleur qu'en utilisant
pp=lb ou pas de désentrelacement du tout.
Les options multiples doivent être séparées par /.
diff --git a/DOCS/man/hu/mplayer.1 b/DOCS/man/hu/mplayer.1
index 96cbb0af8c..f0185ad174 100644
--- a/DOCS/man/hu/mplayer.1
+++ b/DOCS/man/hu/mplayer.1
@@ -1,4 +1,4 @@
-.\" Synced with r28736
+.\" Synced with r28807
.\" MPlayer (C) 2000-2009 MPlayer Team
.\" Ezt a man oldalt Gabucino, Diego Biurrun és Jonas Jermann készíti/készítette
.\" Karbantartó: Gabrov
@@ -33,7 +33,7 @@
.\" Név
.\" --------------------------------------------------------------------------
.
-.TH MPlayer 1 "2009. 02. 27." "MPlayer Project" "A film lejátszó"
+.TH MPlayer 1 "2009. 03. 05." "MPlayer Project" "A film lejátszó"
.
.SH NÉV
mplayer \- film lejátszó
@@ -905,6 +905,7 @@ segítségével - pl.\& shell használat.
Az MPlayer ezt a parancsot ellenõrzés nélkül használja, a te felelõsséged,
hogy ne okozzon biztonsági problémát (pl.\& gyõzõdj meg róla, hogy teljes elérési
utakat használsz, ha a "." benne van az elérési utadban, mint Windows alatt).
+Csak videó lejátszás közben mûködik (pl. a \-novideo kapcsolóval nem, de \-vo null mellett igen).
.sp 1
Ezt "ki lehet használni" az olyan képernyõvédõ letiltásához, amely nem
támogatja ehhez a megfelelõ X API-kat (lásd még \-stop\-xscreensaver).
@@ -2849,6 +2850,18 @@ Egy fájl \-v kapcsolóval történõ lejátszásával kilistázza az elérhetõ eszközöket
.PD 1
.
.TP
+.B dart (csak OS/2)
+OS/2 DART audió kimeneti vezérlõ
+.PD 0
+.RSs
+.IPs (no)share
+A DART-ot megosztható vagy exkluzív módban nyitja meg.
+.IPs bufsize=<méret>
+A buffer méretét <méret> számú mintára állítja (alapértelmezett: 2048).
+.RE
+.PD 1
+.
+.TP
.B dxr2 (lásd még \-dxr2) (csak DXR2)
Speciális Creative DXR2 kimeneti vezérlõ
.
@@ -3446,20 +3459,24 @@ Pozitív értékekkel egy élesítõ algoritmust alkalmaz a videóra,
negatív értékekkel pedig elmosást (alapértelmezett: 0).
.IPs denoise=<0\-1>
Egy zajcsökkentõ algoritmust alkalmaz a videóra (alapértelmezett: 0, nincs zajcsökkentés).
-.IPs deint=<0\-3>
+.IPs deint=<0\-4>
Kiválasztja a deinterlacer-t (alapértelmezett: 0).
+Minden mód > 0 figyelembe veszi a \-field\-dominance kapcsolót.
.RSss
.IPs 0
Nincs deinterlace.
.IPs 1
-Bob deinterlace (jelenleg visszalép a fejlettebb deinterlacer-ekre).
+Csak az elsõ mezõt mutatja, hasonló a \-vf field kapcsolóhoz.
.IPs 2
-Mozgás adaptív idõbeli deinterlace (még nem mûködik).
+Bob deinterlace (jelenleg erre lép vissz a fejlettebb deinterlacer-ekrõl).
.IPs 3
+Mozgás adaptív idõbeli deinterlace (még nem mûködik).
+Ez az alapértelmezett, ha a "D" gombbal engedélyezhetõ a deinterlacing.
+.IPs 4
Mozgás adaptív idõbeli deinterlace él-vezérelt térbeli interpolációval (még nem mûködik).
.RE
.IPs pullup
-Inverz telecine-t próbál alkalmazni, deinterlace kell hozzá.
+Inverz telecine-t próbál alkalmazni, idõbeli deinterlace kell hozzá.
.RE
.PD 1
.
diff --git a/DOCS/man/ru/mplayer.1 b/DOCS/man/ru/mplayer.1
index 2dd051e01a..bc062259b8 100644
--- a/DOCS/man/ru/mplayer.1
+++ b/DOCS/man/ru/mplayer.1
@@ -2,7 +2,7 @@
.\" This man page was/is done by Gabucino, Diego Biurrun, Jonas Jermann
.\" Translated by Vladimir Voroshilov <voroshil@gmail.com>
.\" Encoding: koi8-r
-.\" synced with r28745
+.\" synced with r28807
.
.\" --------------------------------------------------------------------------
.\" ïÐÒÅÄÅÌÅÎÉÑ ÍÁËÒÏÓÏ×
@@ -33,7 +33,7 @@
.\" úÁÇÏÌÏ×ÏË
.\" --------------------------------------------------------------------------
.
-.TH MPlayer 1 "2009-02-15" "ðÒÏÅËÔ MPlayer" "íÅÄÉÁ ÐÒÏÉÇÒÙ×ÁÔÅÌØ"
+.TH MPlayer 1 "2009-03-02" "ðÒÏÅËÔ MPlayer" "íÅÄÉÁ ÐÒÏÉÇÒÙ×ÁÔÅÌØ"
.
.SH îáú÷áîéå
mplayer \- ÍÅÄÉÁ ÐÒÏÉÇÒÙ×ÁÔÅÌØ
@@ -863,6 +863,8 @@ MPlayer ÉÓÐÏÌØÚÕÅÔ ÜÔÕ ËÏÍÁÎÄÕ ÂÅÚ ËÁËÉÈ\-ÌÉÂÏ ÐÒÏ×ÅÒÏË, ÐÒÏ×ÅÒËÁ Å£
ÂÅÚÏÐÁÓÎÏÓÔÉ ÌÅÖÉÔ ÐÏÄ ÷ÁÛÅÊ ÏÔ×ÅÔÓÔ×ÅÎÎÏÓÔØÀ (× ÞÁÓÔÎÏÓÔÉ, ÕÂÅÄÉÔÅÓØ,
ÞÔÏ ÉÓÐÏÌØÚÕÀÔÓÑ ÐÏÌÎÙÅ ÐÕÔÉ, ÅÓÌÉ "." ÐÒÉÓÕÔÓÔ×ÕÅÔ × ×ÁÛÅÍ ÐÕÔÉ,
ÎÁÐÒÉÍÅÒ, ËÁË × Windows).
+ëÏÍÁÎÄÁ ÒÁÂÏÔÁÅÔ ÔÏÌØËÏ ÐÒÉ ×ÏÓÐÒÏÉÚ×ÅÄÅÎÉÉ ×ÉÄÅÏ (Ô.Å. ÒÁÂÏÔÁÅÔ Ó
+\-vo null, ÎÏ ÎÅ Ó \-novideo).
.sp 1
å£ ÍÏÖÎÏ ÐÒÉÍÅÎÑÔØ ÄÌÑ "ÎÅÐÒÁ×ÉÌØÎÏÇÏ" ÏÔËÌÀÞÅÎÉÑ ÈÒÁÎÉÔÅÌÅÊ
ÜËÒÁÎÁ, ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÝÉÈ ÄÏÌÖÎÏÅ X API (ÔÁËÖÅ ÓÍÏÔÒÉÔÅ
@@ -2805,6 +2807,18 @@ OSD É ÏÞÉÝÁÔØ ÅÅ (ÐÏ ÕÍÏÌÞÁÎÉÀ: ^[[A\\r^[[K).
.PD 1
.
.TP
+.B dart (ÔÏÌØËÏ OS/2)
+äÒÁÊ×ÅÒ ÁÕÄÉÏ ×Ù×ÏÄÁ OS/2 DART
+.PD 0
+.RSs
+.IPs (no)share
+ïÔËÒÙ×ÁÅÔ DART × ÒÁÚÄÅÌÑÅÍÏÍ ÉÌÉ ÜËÓËÌÀÚÉ×ÎÏÍ ÒÅÖÉÍÅ.
+.IPs bufsize=<ÒÁÚÍÅÒ>
+õÓÔÁÎÁ×ÌÉ×ÁÅÔ ÒÁÚÍÅÒ ÂÕÆÅÒÁ × <ÒÁÚÍÅÒ> × ÉÍÐÕÌØÓÁÈ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 2048).
+.RE
+.PD 1
+.
+.TP
.B dxr2 (ÓÍÏÔÒÉÔÅ ÔÁËÖÅ \-dxr2) (ÔÏÌØËÏ DXR2)
óÐÅÃÉÁÌØÎÙÊ ÄÒÁÊ×ÅÒ ×Ù×ÏÄÁ ÄÌÑ Creative DXR2
.
@@ -3413,13 +3427,14 @@ XResetScreenSaver API, ÐÏÖÁÌÕÊÓÔÁ, ÉÓÐÏÌØÚÕÊÔÅ \-heartbeat\-cmd
.IPs denoise=<0\-1>
ðÒÉÍÅÎÑÅÔ Ë ×ÉÄÅÏ ÁÌÇÏÒÉÔÍ ÕÍÅÎØÛÅÎÉÀ ÛÕÍÁ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 0, ÎÅÔ
ÕÍÅÎØÛÅÎÉÑ ÛÕÍÁ).
-.IPs deint=<0\-3>
+.IPs deint=<0\-4>
÷ÙÂÉÒÁÅÔ ÄÅÉÎÔÅÒÌÅÊÓÅÒ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 0).
+÷ÓÅ ÒÅÖÉÍÙ > 0 ÕÞÉÔÙ×ÁÀÔ \-field\-dominance.
.RSss
.IPs 0
îÅÔ ÄÅÉÎÔÅÒÌÅÊÓÉÎÇÁ.
.IPs 1
-ïÔÏÂÒÁÖÁÅÔ ÔÏÌØËÏ ÏÄÎÏ ÐÏÌÅ, ÁÎÁÌÏÇÉÞÎÏ \-vf field.
+ïÔÏÂÒÁÖÁÅÔ ÔÏÌØËÏ ÐÅÒ×ÏÅ ÐÏÌÅ, ÁÎÁÌÏÇÉÞÎÏ \-vf field.
.IPs 2
Bob ÄÅÉÎÔÅÒÌÅÊÓÉÎÇ (ÔÅËÕÝÉÊ ÚÁÐÁÓÎÏÊ ×ÁÒÉÁÎÔ ÄÌÑ ÐÅÒÅÄÏ×ÙÈ
ÄÅÉÎÔÅÒÌÅÊÓÅÒÏ×).
diff --git a/DOCS/man/zh_CN/mplayer.1 b/DOCS/man/zh_CN/mplayer.1
index 4678153035..faea37c0e1 100644
--- a/DOCS/man/zh_CN/mplayer.1
+++ b/DOCS/man/zh_CN/mplayer.1
@@ -1,4 +1,4 @@
-.\" sync with en/mplayer.1 r28576
+.\" sync with en/mplayer.1 r28745
.\" Encoding: UTF-8
.\" Reminder of hard terms which need better/final solution later:
.\" /capture; playtree in parent list; colorkey; retrace; desync; downmix;
@@ -288,7 +288,7 @@ MPlayer 有个完全å¯é…置的, 命令驱动的控制层,
用 OSD 显示文件å。
.IPs "! 和 @"
寻到å‰ä¸€ç« èŠ‚/åŽä¸€ç« èŠ‚的开始处。
-.IPs "D(仅用于\-vo xvmc, \-vf yadif, \-vf kerndeint)"
+.IPs "D(仅用于\-vo xvmc, \-vo vdpau,\-vf yadif, \-vf kerndeint)"
激活/ç¦ç”¨è§£éš”行扫æ过滤器。
.IPs "A"
在å¯ç”¨çš„ DVD 视角间循环切æ¢ã€‚
@@ -3201,6 +3201,38 @@ Supported by the gl, gl2, x11, and xv video output drivers.
.PD 1
.
.TP
+.B vdpau(与 \-vc ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau 或 ffh264vdpau 一åŒä½¿ç”¨ï¼‰
+使用 VDPAU 硬件解ç è§†é¢‘的视频输出方å¼ã€‚
+åŒæ—¶æ”¯æŒæ˜¾ç¤ºè½¯ä»¶è§£ç çš„视频。
+.PD 0
+.RSs
+.IPs sharpen=<\-1\-1>
+使用正数值时,将é”化算法应用于视频画é¢ï¼Œ
+使用负数值时,则应用模糊算法(默认值:0)。
+.IPs denoise=<0\-1>
+将一ç§æ¶ˆé™¤å™ªç‚¹çš„算法应用于视频画é¢ï¼ˆé»˜è®¤å€¼ï¼š0,ä¸æ¶ˆé™¤å™ªç‚¹ï¼‰ã€‚
+.IPs deint=<0\-3>
+选择å隔行扫æ模å¼çš„算法(默认值:0)。
+.RSss
+.IPs 0
+ä¸å隔行扫æ。
+.IPs 1
+åªæ˜¾ç¤ºä¸€ä¸ªéš”行扫æ域,与 \-vf field 作用相类似。
+.IPs 2
+跳跃å¼å隔行扫æ(当å‰é«˜çº§å隔行扫æ算法的退化形å¼ï¼‰ã€‚
+.IPs 3
+适应è¿åŠ¨ç”»é¢çš„瞬间å隔行扫æ(还未实现)。
+这是当“Dâ€ç”¨äºŽå¼€å¯å隔行扫æ时的默认值。
+.IPs 4
+采用边缘导å‘空间æ’值算法的适应è¿åŠ¨ç”»é¢çš„瞬间å隔行扫æ
+(还未实现)。
+.RE
+.IPs pullup
+å°è¯•åº”用å电视电影模å¼ï¼Œéœ€è¦çž¬é—´å隔行扫æ。
+.RE
+.PD 1
+.
+.TP
.B xvmc (仅用于 X11 的 \-vc ffmpeg12mc)
视频输出驱动使用 XFree86 4.x çš„ XvMC(X 视频è¿åŠ¨è¡¥å¿) 扩展
以加速 MPEG-1/2 å’Œ VCR2 的解ç ã€‚
@@ -4090,8 +4122,8 @@ mplayer video.nut \-vf format=bgr15 \-vo tga
.TP
.B "\-field\-dominance <\-1\-1>"
设置隔行扫æ内容的第一个域。
-对于那些使帧速加å€çš„去隔行扫æ器æ¥è¯´é‚£å¾ˆæœ‰ç”¨ï¼š\-vf tfields=1, \-vf yadif=1
-和 \-vo xvmc:bobdeint。
+对于那些使帧速加å€çš„去隔行扫æ器æ¥è¯´é‚£å¾ˆæœ‰ç”¨ï¼š\-vf tfields=1,\-vf yadif=1,
+\-vo vdpau:deint 和 \-vo xvmc:bobdeint。
.PD 0
.RSs
.IPs \-1
@@ -5111,6 +5143,12 @@ unsigned long long counter /*用于ä¿æŒåŒæ­¥, æ›´æ–°æ¯æ¬¡
.RE
.PD 1
.
+.TP
+.B "stats\ \ "
+收集并打å°éŸ³é¢‘æµçš„统计信æ¯ï¼Œå°¤å…¶æ˜¯éŸ³é‡ä¿¡æ¯ã€‚
+这些统计信æ¯ç‰¹åˆ«ç”¨äºŽå¸®åŠ©åœ¨é¿å…å¡ç‰‡æ—¶è°ƒèŠ‚音é‡ã€‚
+音é‡ä»¥ dB 为å•ä½æ‰“å°å¹¶ä¸Žç”¨äºŽéŸ³é‡çš„音频过滤器兼容。
+.
.
.
.SH "视频滤镜"
@@ -5929,7 +5967,7 @@ depth 值越大将去除越是更多地去除越是低频率的部分的噪音ï¼
åªé€‚用于MEncoder。
softskip将编ç ä¸­è·³è¿‡ï¼ˆä¸¢å¼ƒï¼‰å¸§çš„步骤从滤镜链之å‰ç§»è‡³æ»¤é•œé“¾ä¸­çš„æŸä¸ª
ä½ç½®ã€‚
-这使那些需è¦è¯»å–所有帧的滤镜(å电视图åƒæ¨¡å¼ã€å瞬时噪声等等)能正
+这使那些需è¦è¯»å–所有帧的滤镜(å电视电影模å¼ã€å瞬时噪声等等)能正
常工作。
应被放置在那些需è¦è¯»å–所有帧的滤镜之åŽï¼Œè€Œåœ¨è¿™äº›æ»¤é•œåŽçš„任何大é‡æ¶ˆ
耗CPU的滤镜之å‰ã€‚
@@ -6074,14 +6112,14 @@ Donald Graft的自适应内核级å隔行扫æ滤镜。
.
.TP
.B detc[=var1=value1:var2=value2:...]
-å°è¯•é€†è½¬â€˜ç”µè§†å›¾åƒæ¨¡å¼â€™å¤„ç†æ“作以还原一个电影帧率下的纯净ã€éž
+å°è¯•é€†è½¬â€˜ç”µè§†ç”µå½±æ¨¡å¼â€™å¤„ç†æ“作以还原一个电影帧率下的纯净ã€éž
隔行扫æ的视频æµã€‚
-这是第一个也是最基本的一个添加到MPlayer/\:MEncoder中的å电视图åƒæ¨¡å¼
+这是第一个也是最基本的一个添加到MPlayer/\:MEncoder中的å电视电影模å¼
滤镜。
-其工作方å¼æ˜¯é”定电视图åƒæ¨¡å¼ä¸­çš„3:2ç”»é¢ç‰¹å¾ï¼Œç„¶åŽå°½å¯èƒ½é•¿åœ°è·Ÿè¸ªè¿™ä¸ªç‰¹
+其工作方å¼æ˜¯é”定电视电影模å¼ä¸­çš„3:2ç”»é¢ç‰¹å¾ï¼Œç„¶åŽå°½å¯èƒ½é•¿åœ°è·Ÿè¸ªè¿™ä¸ªç‰¹
å¾ã€‚
-这使它适åˆå®Œå…¨ç”µè§†å›¾åƒæ¨¡å¼åŒ–çš„æ¥æºï¼Œå³ä½¿åœ¨æœ‰ä¸€å®šå™ªå£°çš„情况下亦是如此,
-但ä¸é€‚用于å¤æ‚çš„åŽæœŸç”µè§†å›¾åƒæ¨¡å¼çš„图åƒçš„编辑。
+这使它适åˆå®Œå…¨ç”µè§†ç”µå½±æ¨¡å¼åŒ–çš„æ¥æºï¼Œå³ä½¿åœ¨æœ‰ä¸€å®šå™ªå£°çš„情况下亦是如此,
+但ä¸é€‚用于å¤æ‚çš„åŽæœŸç”µè§†ç”µå½±æ¨¡å¼çš„图åƒçš„编辑。
这个滤镜的开å‘å·²ä¸å†ç»§ç»­ï¼Œå› ä¸ºivtcã€pullupã€å’Œfilmdint在大多数应用中效
果更好。
以下å‚数(å‚è§ä¸‹é¢çš„å¥æ³•è§£é‡Šï¼‰å¯ç”¨äºŽæŽ§åˆ¶detc的行为:
@@ -6091,7 +6129,7 @@ Donald Graft的自适应内核级å隔行扫æ滤镜。
.RSss
0:ä¸ä¸¢å¼ƒå¸§ä»¥ä¿è¯è¾“出帧率æ’定(默认方å¼ï¼‰ã€‚
.br
-1:当最近5个帧没有丢弃或ä¸æ˜¯ç”µè§†å›¾åƒæ¨¡å¼æ—¶åˆ™ä¸€å®šä¸¢å¼ƒä¸€ä¸ªå¸§ã€‚
+1:当最近5个帧没有丢弃或ä¸æ˜¯ç”µè§†ç”µå½±æ¨¡å¼æ—¶åˆ™ä¸€å®šä¸¢å¼ƒä¸€ä¸ªå¸§ã€‚
.br
2:总ä¿è¯è¾“入输出帧率比正好为5:4。
.br
@@ -6103,12 +6141,12 @@ Donald Graft的自适应内核级å隔行扫æ滤镜。
.RSss
0:固定特å¾ï¼Œåˆå§‹å¸§ä»£å·ç”±<fr>中所指定。
.br
-1:积æžæœå¯»ç”µè§†å›¾åƒæ¨¡å¼ç‰¹å¾ï¼ˆé»˜è®¤å€¼ï¼‰
+1:积æžæœå¯»ç”µè§†ç”µå½±æ¨¡å¼ç‰¹å¾ï¼ˆé»˜è®¤å€¼ï¼‰
.REss
.IPs "<fr>\ "
设定帧åºåˆ—中åˆå§‹å¸§çš„代å·ã€‚
0\-2是三个纯é€è¡Œæ‰«æ的帧;3å’Œ4是两个隔行扫æ的帧。
-默认值\-1表示‘åˆå§‹å¸§ä¸åœ¨ç”µè§†å›¾åƒæ¨¡å¼çš„åºåˆ—中’。
+默认值\-1表示‘åˆå§‹å¸§ä¸åœ¨ç”µè§†ç”µå½±æ¨¡å¼çš„åºåˆ—中’。
这里指定的代å·æ˜¯å½±ç‰‡å¼€å§‹å‰å‡æƒ³çš„那个å‰ä¸€å¸§çš„类型。
.IPs "<t0>, <t1>, <t2>, <t3>"
用于æŸäº›æ¨¡å¼ä¸‹çš„阈值。
@@ -6116,9 +6154,9 @@ Donald Graft的自适应内核级å隔行扫æ滤镜。
.
.TP
.B ivtc[=1]
-实验性的‘无状æ€â€™é€†è½¬ç”µè§†å›¾åƒæ¨¡å¼æ»¤é•œã€‚
+实验性的‘无状æ€â€™é€†è½¬ç”µè§†ç”µå½±æ¨¡å¼æ»¤é•œã€‚
ivtc并ä¸åƒdetc滤镜那样å°è¯•é”定一个特å¾ï¼Œè€Œæ˜¯å¯¹äºŽæ¯ä¸€å¸§ç‹¬ç«‹åœ°å†³ç­–。
-这对于那些在应用电视图åƒæ¨¡å¼åŽç»åŽ†è¾ƒå¤šç¼–辑的æ¥æºç›¸å¯¹è€Œè¨€å…·æœ‰å¾ˆå¥½çš„效
+这对于那些在应用电视电影模å¼åŽç»åŽ†è¾ƒå¤šç¼–辑的æ¥æºç›¸å¯¹è€Œè¨€å…·æœ‰å¾ˆå¥½çš„效
果,但相应地它相对ä¸èƒ½å®¹å¿æœ‰å™ªå£°çš„输入,比如电视上æ•æ‰æ¥çš„视频。
å¯é€‰å‚数(ivtc=1)对应于detc滤镜的dr=1选项,并且应当用于MEncoder中而ä¸
能用于MPlayer。
@@ -6128,7 +6166,7 @@ ivtc的进一步开å‘å·²åœæ­¢ï¼Œå› ä¸ºpullupå’Œfilmdint滤镜显得相对精ç¡
.
.TP
.B pullup[=jl:jr:jt:jb:sb:mp]
-第三代åpulldown(逆转电视图åƒæ¨¡å¼ï¼‰æ»¤é•œï¼Œèƒ½å¤Ÿå¤„ç†æ··åˆåž‹ç¡¬æ€§ç”µè§†å›¾åƒæ¨¡å¼çš„,
+第三代åpulldown(逆转电视电影模å¼ï¼‰æ»¤é•œï¼Œèƒ½å¤Ÿå¤„ç†æ··åˆåž‹ç¡¬æ€§ç”µè§†ç”µå½±æ¨¡å¼çš„,
24000/1001帧率é€è¡Œæ‰«æ的,以åŠ30000/1001帧率é€è¡Œæ‰«æ的内容。
pullup滤镜的设计原则是通过在决策中利用将æ¥çš„内容环境,以求得比detc或
ivtc更稳定。
@@ -6166,8 +6204,8 @@ ivtc更稳定。
.
.TP
.B filmdint[=options]
-逆转电视图åƒæ¨¡å¼æ»¤é•œï¼Œä¸Žä¸Šé¢çš„pullup滤镜相似。
-它被设计æˆç”¨äºŽå¤„ç†ä»»æ„下拉特å¾ï¼ŒåŒ…括混åˆåž‹è½¯æ€§å’Œç¡¬æ€§çš„电视图åƒæ¨¡å¼ï¼Œ
+逆转电视电影模å¼æ»¤é•œï¼Œä¸Žä¸Šé¢çš„pullup滤镜相似。
+它被设计æˆç”¨äºŽå¤„ç†ä»»æ„下拉特å¾ï¼ŒåŒ…括混åˆåž‹è½¯æ€§å’Œç¡¬æ€§çš„电视电影模å¼ï¼Œ
以åŠæ供对于那些会慢于或快于其在电视上的原始帧率的影片的有é™æ”¯æŒã€‚
åªæœ‰äº®åº¦å¹³é¢ç”¨ä»¥å¯»æ‰¾å¸§åˆ†å¼€çš„ä½ç½®ã€‚
如果一个扫æ场没有匹é…上特å¾ï¼Œåˆ™å°±ä½¿ç”¨ç®€å•çš„线性估计方å¼è§£é™¤å…¶
@@ -6176,14 +6214,14 @@ ivtc更稳定。
MPEG-2解ç å™¨è®¾ç½®çš„扫æ场标志。
æ ¹æ®æ¥æºMPEGçš„ä¸åŒï¼Œä½ å¯èƒ½ä¸éœ€é‡‡çº³è¿™ä¸ªå»ºè®®ï¼Œåªè¦ä½ ä¸çœ‹åˆ°è®¸å¤šâ€œä¸‹åŠåœºå…ˆ
扫æâ€çš„警告。
-ä¸è®¾é€‰é¡¹æ—¶ï¼Œå®ƒåªæ˜¯åšæ™®é€šçš„逆转电视图åƒæ¨¡å¼å¤„ç†ï¼Œå¹¶ä¸”应当与
+ä¸è®¾é€‰é¡¹æ—¶ï¼Œå®ƒåªæ˜¯åšæ™®é€šçš„逆转电视电影模å¼å¤„ç†ï¼Œå¹¶ä¸”应当与
mencoder \-fps 30000/1001 \-ofps 24000/1001一åŒä½¿ç”¨ã€‚
当这个滤镜用于 MPlayer 时,它将导致播放时帧速率ä¸åŒ€è¡¡ï¼Œä½†åœ¨é€šå¸¸æƒ…况下比
-使用pp=lb或ä¸è¿›è¡Œè§£é™¤éš”行扫ææ“作è¦å¥½ã€‚
+使用pp=lb或ä¸è¿›è¡Œå隔行扫ææ“作è¦å¥½ã€‚
多个选项å¯ä»¥ä½¿ç”¨/.分隔开指定。
.RSs
.IPs crop=<w>:<h>:<x>:<y>
-å°±åƒcrop滤镜一样,但更快而且能用于混åˆåž‹ç¡¬æ€§å’Œè½¯æ€§ç”µè§†å›¾åƒæ¨¡å¼çš„内容,
+å°±åƒcrop滤镜一样,但更快而且能用于混åˆåž‹ç¡¬æ€§å’Œè½¯æ€§ç”µè§†ç”µå½±æ¨¡å¼çš„内容,
以åŠyä¸ç”¨4çš„å€æ•°çš„情形。
如果x或y的设置将需è¦ä»Žè‰²åº¦å¹³é¢ä¸­åˆ‡é™¤éƒ¨åˆ†åƒç´ æ—¶ï¼Œåˆ‡é™¤åŒºåŸŸå°†å»¶ä¼¸ã€‚
这通常æ„味ç€xå’Œy必须是å¶æ•°ã€‚
@@ -6203,7 +6241,7 @@ ifps/\:ofps的比率应当与\-fps/\-ofps的比率相匹é…。
n值较大时能æ高滤镜的è¿è¡Œé€Ÿåº¦ä½†ç‰ºç‰²äº†ç²¾ç¡®æ€§ã€‚
默认值是n=3。
如果n是奇数,MPEGçš„REPEAT_FIRST_FIELD标志ä½å·²æ ‡è®°çš„帧åŽç´§è·Ÿçš„一帧将被
-认作是é€è¡Œæ‰«æ的,于是滤镜将ä¸åœ¨å¤„ç†è½¯æ€§ç”µè§†å›¾åƒæ¨¡å¼çš„MPEG-2内容上花任
+认作是é€è¡Œæ‰«æ的,于是滤镜将ä¸åœ¨å¤„ç†è½¯æ€§ç”µè§†ç”µå½±æ¨¡å¼çš„MPEG-2内容上花任
何时间了。
如果MMX2或3DNow!å¯ç”¨ï¼Œé‚£ä¹ˆè¿™å°±æ˜¯è¯¥æ ‡å¿—ä½çš„唯一作用。
在没有MMX2å’Œ3DNow!的情况下,如果n=0或1,那么将使用与n=2或3的时候åŒæ ·çš„
@@ -6216,9 +6254,9 @@ n值较大时能æ高滤镜的è¿è¡Œé€Ÿåº¦ä½†ç‰ºç‰²äº†ç²¾ç¡®æ€§ã€‚
如果n是éžé›¶å€¼ï¼Œåˆ™æ‰“å°å‡ºç”¨äºŽæ¯ä¸ªå¸§çš„具体测é‡æ ‡å‡†ã€‚
适用于程åºè°ƒè¯•ã€‚
.IPs dint_thres=<n>
-解除隔行扫æ的阈值。
+å隔行扫æ的阈值。
用于解除未匹é…任何特å¾çš„帧的隔行扫æ结构的过程中。
-阈值大æ„味ç€è¾ƒå°‘的帧ç»è¿‡è§£é™¤éš”行扫æ处ç†ï¼Œè¦å®Œå…¨å…³é—­è§£é™¤éš”行扫æ处ç†åˆ™
+阈值大æ„味ç€è¾ƒå°‘的帧ç»è¿‡å隔行扫æ处ç†ï¼Œè¦å®Œå…¨å…³é—­å隔行扫æ处ç†åˆ™
使用n=256。
默认值为n=8。
.IPs comb_thres=<n>
@@ -6233,15 +6271,15 @@ n值较大时能æ高滤镜的è¿è¡Œé€Ÿåº¦ä½†ç‰ºç‰²äº†ç²¾ç¡®æ€§ã€‚
.
.TP
.B softpulldown
-这个滤镜åªèƒ½ç”¨äºŽMEncoder并且ä¾èµ–于用于软性3:2下拉(软性电视图åƒæ¨¡å¼ï¼‰çš„
+这个滤镜åªèƒ½ç”¨äºŽMEncoder并且ä¾èµ–于用于软性3:2下拉(软性电视电影模å¼ï¼‰çš„
MPEG-2标志ä½ã€‚
如果你想对åŠè½¯æ€§ç”µè§†æ¨¡å¼çš„影片使用ivtc或detc滤镜,那么将该滤镜æ’入到它们之å‰
能使他们更稳定。
.
.TP
.B divtc[=options]
-逆转隔行扫æ视频的电视图åƒæ¨¡å¼ã€‚
-如果3:2下拉电视图åƒæ¨¡å¼çš„视频丢失了其中的一个扫æ场,或在解除隔行扫æ时使用了
+逆转隔行扫æ视频的电视电影模å¼ã€‚
+如果3:2下拉电视电影模å¼çš„视频丢失了其中的一个扫æ场,或在å隔行扫æ时使用了
ä¿ç•™ä¸€ä¸ªæ‰«æ场而æ’值计算å¦ä¸€ä¸ªçš„方法,那么输出的是一个晃动的视频,其中的æ¯å››
个帧åŽæœ‰ä¸€ä¸ªæ˜¯é‡å¤çš„帧。
该滤镜目的是找到并丢弃这些é‡å¤çš„帧,并还原原æ¥çš„影片帧率。
@@ -6273,7 +6311,7 @@ CPUçš„è¿ç®—能力。
.IPs file=<filename>
设置第二阶段使用的日志的文件å(默认值:“framediff.logâ€ï¼‰ã€‚
.IPs threshold=<value>
-设置滤镜认为æŸä¸ªç‰¹å¾æ˜¯ç”µè§†å›¾åƒæ¨¡å¼ç‰¹å¾æ—¶ï¼Œè¯¥ç‰¹å¾æ‰€å¿…须达到的最å°å¼ºåº¦ï¼ˆé»˜è®¤
+设置滤镜认为æŸä¸ªç‰¹å¾æ˜¯ç”µè§†ç”µå½±æ¨¡å¼ç‰¹å¾æ—¶ï¼Œè¯¥ç‰¹å¾æ‰€å¿…须达到的最å°å¼ºåº¦ï¼ˆé»˜è®¤
值:0.5)。
这用于é¿å…从视频中很暗或很é™æ­¢çš„部分里错误地识别出一些特å¾ã€‚
.IPs window=<numframes>
@@ -6283,7 +6321,7 @@ CPUçš„è¿ç®—能力。
该选项åªå¯¹ä¸€é˜¶æ®µæ¨¡å¼æœ‰ä½œç”¨ã€‚
当å‰ï¼ŒäºŒé˜¶æ®µæ¨¡å¼ä½¿ç”¨å›ºå®šçš„察看范围,该范围包å«äº†è¿‡åŽ»å’Œå°†æ¥è¾“入的帧。
.IPs phase=0|1|2|3|4
-设置一阶段模å¼ä¸­ç”µè§†å›¾åƒæ¨¡å¼çš„åˆå§‹ç›¸ä½ï¼ˆé»˜è®¤å€¼ï¼š0)。
+设置一阶段模å¼ä¸­ç”µè§†ç”µå½±æ¨¡å¼çš„åˆå§‹ç›¸ä½ï¼ˆé»˜è®¤å€¼ï¼š0)。
二阶段模å¼èƒ½è¯»å–å°†æ¥è¾“入的帧,所以它能够在一开始就使用正确的相ä½å€¼ï¼Œä½†
一阶段模å¼åªèƒ½é çŒœæµ‹ã€‚
当它找到正常的相ä½æ—¶å®ƒèƒ½è·Ÿä¸Šè¿™ä¸ªç›¸ä½ï¼Œä½†è¯¥é€‰é¡¹èƒ½ç”¨æ¥å¼€å§‹æ—¶å¯èƒ½å‡ºçŽ°çš„抖动。
@@ -6348,12 +6386,12 @@ CPUçš„è¿ç®—能力。
.
.TP
.B telecine[=start]
-应用3:2‘电视图åƒæ¨¡å¼â€™å¤„ç†ä»¥ä½¿å¸§çŽ‡å¢žåŠ 20%。
+应用3:2‘电视电影模å¼â€™å¤„ç†ä»¥ä½¿å¸§çŽ‡å¢žåŠ 20%。
该选项æžå¯èƒ½æ— æ³•ç”¨äºŽMPlayer,但它å¯ä»¥ä»¥'mencoder \-fps 30000/1001 \-ofps
30000/1001 \-vf telecine'å½¢å¼ä½¿ç”¨ã€‚
其中的两个fps选项都是必需的ï¼
(如果它们ä¸æ­£ç¡®ï¼Œå°±æ— æ³•A/VåŒæ­¥ã€‚)
-å¯é€‰çš„startå‚数告诉滤镜从电视图åƒæ¨¡å¼ç‰¹å¾ä¸­çš„哪里开始执行(0\-3)。
+å¯é€‰çš„startå‚数告诉滤镜从电视电影模å¼ç‰¹å¾ä¸­çš„哪里开始执行(0\-3)。
.
.TP
.B tinterlace[=mode]
@@ -6409,7 +6447,7 @@ CPUçš„è¿ç®—能力。
.
.TP
.B yadif=[mode[:field_dominance]]
-åˆä¸€ä¸ªè§£é™¤éš”行扫æ的滤镜
+åˆä¸€ä¸ªå隔行扫æ的滤镜
.PD 0
.RSs
.IPs <mode>
@@ -6431,7 +6469,7 @@ CPUçš„è¿ç®—能力。
.
.TP
.B mcdeint=[mode[:parity[:qp]]]
-包å«è¿åŠ¨è¡¥å¿çš„解除隔行扫æ滤镜。
+包å«è¿åŠ¨è¡¥å¿çš„å隔行扫æ滤镜。
它è¦æ±‚æ¯å¸§æœ‰ä¸€ä¸ªæ‰«æ场作为输入并且必须与tfields=1或yadif=1/3或与之等
价的滤镜一起使用。
.PD 0
@@ -9791,7 +9829,7 @@ pes1与pes2是éžå¸¸æœ‰é—®é¢˜çš„æ ¼å¼ï¼ˆæ²¡æœ‰æ‰“包头,没有填充),但
.
.TP
.B telecine
-å¯ç”¨3:2下拉软性电视图åƒåŒ–模å¼ï¼šæµåˆå¹¶å™¨å°†ä½¿è§†é¢‘æµçœ‹ä¸ŠåŽ»åƒæ˜¯ä»¥30000/1001fpsç¼–ç 
+å¯ç”¨3:2下拉软性电视电影化模å¼ï¼šæµåˆå¹¶å™¨å°†ä½¿è§†é¢‘æµçœ‹ä¸ŠåŽ»åƒæ˜¯ä»¥30000/1001fpsç¼–ç 
的。
åªæœ‰å½“输出帧率为24000/1001fps时这个选项æ‰å¯¹MPEG-2有效,如需è¦åˆ™ä½¿ç”¨\-ofps改å˜è¾“
出帧率。
@@ -9799,15 +9837,15 @@ pes1与pes2是éžå¸¸æœ‰é—®é¢˜çš„æ ¼å¼ï¼ˆæ²¡æœ‰æ‰“包头,没有填充),但
.
.TP
.B film2pal
-å¯ç”¨FILMå’ŒNTSC至PAL软性电视图åƒåŒ–模å¼ï¼šæµåˆå¹¶å™¨å°†ä½¿è§†é¢‘æµçœ‹ä¸ŠåŽ»åƒæ˜¯ä»¥25fpsç¼–ç 
+å¯ç”¨FILMå’ŒNTSC至PAL软性电视电影化模å¼ï¼šæµåˆå¹¶å™¨å°†ä½¿è§†é¢‘æµçœ‹ä¸ŠåŽ»åƒæ˜¯ä»¥25fpsç¼–ç 
的。
åªæœ‰å½“输出帧率为24000/1001fps时这个选项æ‰å¯¹MPEG-2有效,如需è¦åˆ™ä½¿ç”¨\-ofps改å˜è¾“
出帧率。
其它的帧率与该选项ä¸å…¼å®¹ã€‚
.
.TP
-.B tele_src and tele_dest
-使用Donand Graftçš„DGPulldown代ç å¯ç”¨ä»»æ„电视图åƒåŒ–模å¼ã€‚
+.B tele_src 与 tele_dest
+使用Donand Graftçš„DGPulldown代ç å¯ç”¨ä»»æ„电视电影化模å¼ã€‚
你需è¦æŒ‡å®šåŽŸå§‹å¸§çŽ‡å’Œæ‰€æœŸæœ›çš„帧率;æµåˆå¹¶å™¨å°†ä½¿è§†é¢‘æµçœ‹ä¸ŠåŽ»åƒæ˜¯ä»¥æ‰€æœŸæœ›çš„帧率编ç 
的。
åªæœ‰å½“输入的帧率比输出的帧率å°ï¼Œå¹¶ä¸”å¸§çŽ‡çš„å¢žåŠ é‡ <= 1.5时,这个选项æ‰å¯¹MPEG-2视
@@ -9818,8 +9856,8 @@ pes1与pes2是éžå¸¸æœ‰é—®é¢˜çš„æ ¼å¼ï¼ˆæ²¡æœ‰æ‰“包头,没有填充),但
.RE
.PD 0
.RSs
-.IPs tele_src=25,tele_dest=30000/1001
-PAL至NTSC的电视图åƒåŒ–处ç†
+.IPs tele_src=25,tele_dest=30000/1001
+PAL至NTSC的电视电影化处ç†
.RE
.PD 1
.
diff --git a/DOCS/tech/codecs-in.html b/DOCS/tech/codecs-in.html
index f018063597..c4b29aa99c 100644
--- a/DOCS/tech/codecs-in.html
+++ b/DOCS/tech/codecs-in.html
@@ -3,12 +3,12 @@
<head>
<title>Codec Status Table - MPlayer - The Movie Player</title>
<link rel="stylesheet" type="text/css" href="default.css">
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" link="#666666" vlink="#666666" alink="#666666">
<table width=750 border="0">
- <tr>
- <td align="right">
+ <tr>
+ <td align="right">
<p>&nbsp;</p>
<p><b>Status of codecs support</b></p>
@@ -19,16 +19,16 @@
<p><a href="#vc">Video codecs</a><br><a href="#ac">Audio codecs</a><br></p>
</td>
</tr>
- <tr>
- <td align="center">
+ <tr>
+ <td align="center">
<b><font face="Verdana, Arial, Helvetica, sans-serif" size="5"><a name="vc">Video codecs:</a></font></b><br><br>
<table width="100%" border="1" cellspacing="0" cellpadding="5">
- <tr>
+ <tr>
<td colspan=6 bgcolor="#CCCCCC"><b>Working video codecs</b></td>
</tr>
- <tr>
+ <tr>
<td width=150 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">codec name</font></b></td>
<td width=70 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">fourcc</font></b></td>
<td width=120 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">codecfile</font></b></td>
@@ -36,7 +36,7 @@
<td align=center colspan=2><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">comments</font></b></td>
</tr>
<!-- %0 -->
- <tr>
+ <tr>
<td align=center><b>%i</b></td>
<td align=center><b>%F</b></td>
<td align=center><b>%d</b></td>
@@ -48,14 +48,14 @@
<tr>
<td colspan=6 bgcolor="#CCCCCC"><b>New / Untested codecs</b></td>
</tr>
- <tr>
+ <tr>
<td width=150 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">codec name</font></b></td>
<td width=70 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">fourcc</font></b></td>
<td width=120 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">codecfile</font></b></td>
<td colspan=3 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">problem</font></b></td>
</tr>
<!-- %4 -->
- <tr>
+ <tr>
<td align=center><b>%i</b></td>
<td align=center><b>%F</b></td>
<td align=center><b>%d</b></td>
@@ -66,14 +66,14 @@
<tr>
<td colspan=6 bgcolor="#CCCCCC"><b>Codecs with problems</b></td>
</tr>
- <tr>
+ <tr>
<td width=150 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">codec name</font></b></td>
<td width=70 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">fourcc</font></b></td>
<td width=120 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">codecfile</font></b></td>
<td colspan=3 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">problem</font></b></td>
</tr>
<!-- %2 -->
- <tr>
+ <tr>
<td align=center><b>%i</b></td>
<td align=center><b>%F</b></td>
<td align=center><b>%d</b></td>
@@ -84,14 +84,14 @@
<tr>
<td colspan=6 bgcolor="#CCCCCC"><b>Not yet working codecs:</b></td>
</tr>
- <tr>
+ <tr>
<td width=150 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">codec name</font></b></td>
<td width=70 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">fourcc</font></b></td>
<td width=120 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">codecfile</font></b></td>
<td colspan=3 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">problem</font></b></td>
</tr>
<!-- %3 -->
- <tr>
+ <tr>
<td align=center><b>%i</b></td>
<td align=center><b>%F</b></td>
<td align=center><b>%d</b></td>
@@ -105,17 +105,17 @@
<table width="100%" border="1" cellspacing="0" cellpadding="5">
- <tr>
+ <tr>
<td colspan=6 bgcolor="#CCCCCC"><b>Working audio codecs</b></td>
</tr>
- <tr>
+ <tr>
<td width=150 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">codec name</font></b></td>
<td width=70 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">format</font></b></td>
<td width=120 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">codecfile</font></b></td>
<td align=center colspan=3><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">comments</font></b></td>
</tr>
<!-- %5 -->
- <tr>
+ <tr>
<td align=center><b>%i</b></td>
<td align=center><b>%f</b></td>
<td align=center><b>%d</b></td>
@@ -123,17 +123,17 @@
</tr>
<!-- %. -->
- <tr>
+ <tr>
<td colspan=6 bgcolor="#CCCCCC"><b>New / Untested codecs</b></td>
</tr>
- <tr>
+ <tr>
<td width=150 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">codec name</font></b></td>
<td width=70 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">format</font></b></td>
<td width=120 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">codecfile</font></b></td>
<td colspan=3 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">problem</font></b></td>
</tr>
<!-- %9 -->
- <tr>
+ <tr>
<td align=center><b>%i</b></td>
<td align=center><b>%f</b></td>
<td align=center><b>%d</b></td>
@@ -141,17 +141,17 @@
</tr>
<!-- %. -->
- <tr>
+ <tr>
<td colspan=6 bgcolor="#CCCCCC"><b>Codecs with problems</b></td>
</tr>
- <tr>
+ <tr>
<td width=150 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">codec name</font></b></td>
<td width=70 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">format</font></b></td>
<td width=120 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">codecfile</font></b></td>
<td colspan=3 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">problem</font></b></td>
</tr>
<!-- %7 -->
- <tr>
+ <tr>
<td align=center><b>%i</b></td>
<td align=center><b>%f</b></td>
<td align=center><b>%d</b></td>
@@ -159,17 +159,17 @@
</tr>
<!-- %. -->
- <tr>
+ <tr>
<td colspan=6 bgcolor="#CCCCCC"><b>Not yet working codecs</b></td>
</tr>
- <tr>
+ <tr>
<td width=150 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">codec name</font></b></td>
<td width=70 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">format</font></b></td>
<td width=120 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">codecfile</font></b></td>
<td colspan=3 align=center><b><font color="#AAAAAA" face="Verdana, Arial, Helvetica, sans-serif" size="2">problem</font></b></td>
</tr>
<!-- %8 -->
- <tr>
+ <tr>
<td align=center><b>%i</b></td>
<td align=center><b>%f</b></td>
<td align=center><b>%d</b></td>
diff --git a/DOCS/tech/svn-howto.txt b/DOCS/tech/svn-howto.txt
index ee93f9ed71..126e809ee4 100644
--- a/DOCS/tech/svn-howto.txt
+++ b/DOCS/tech/svn-howto.txt
@@ -36,8 +36,8 @@ I. BASICS:
0. Get Subversion:
- The MPlayer project server runs Subversion 1.4. For optimal compatibility
- you should use version 1.4 or later.
+ The MPlayer project server runs Subversion 1.5. For optimal compatibility
+ you should use version 1.5 or later.
1. Checking out the source tree:
diff --git a/DOCS/xml/fr/faq.xml b/DOCS/xml/fr/faq.xml
index e738f3a7e3..ca50d05a82 100644
--- a/DOCS/xml/fr/faq.xml
+++ b/DOCS/xml/fr/faq.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!--synced with r20876 -->
+<!--synced with r28707 -->
<chapter id="faq" xreflabel="FAQ">
<title>Foire Aux Questions</title>
@@ -67,14 +67,19 @@ auto*, comme d'
</qandaentry>
</qandadiv>
+<!-- ********** -->
+
<qandadiv id="faq-compilation-installation">
<title>Compilation et installation</title>
+
<qandaentry>
<question><para>
La compilation échoue avec une erreur et <application>gcc</application> parachute
des messages cryptés contenant la phrase
<systemitem>internal compiler error</systemitem> ou
-<systemitem>unable to find a register to spill</systemitem>.
+<systemitem>unable to find a register to spill</systemitem> ou
+<systemitem>can't find a register in class `GENERAL_REGS'
+while reloading `asm'</systemitem>..
</para></question>
<answer><para>
Vous êtes tombé sur un bogue de <application>gcc</application>. S'il vous plait
@@ -99,7 +104,7 @@ pour plus de détails.
<qandaentry>
<question><para>
-Comment puis-je "build" un <application>MPlayer</application> 32 bit sur un Athlon 64 bit?
+Comment puis-je compiler un <application>MPlayer</application> 32 bit sur un Athlon 64 bit?
</para></question>
<answer><para>
Essayer les options de configuration suivantes:
@@ -140,15 +145,15 @@ s'appellent <filename>XFree86-devel*</filename> sous Red Hat
<filename>xlibs-dev</filename> sous Debian Woody, et
<filename>libx11-dev</filename> sous Debian Sarge. Vérifiez également que les liens symboliques
<filename class="directory">/usr/X11</filename> et
-<filename class="directory">/usr/include/X11</filename> existent (cela peut poser un
-problème sur les systèmes Mandrake).
+<filename class="directory">/usr/include/X11</filename> existent.
</para></answer>
</qandaentry>
<qandaentry>
<question><para>
Compiler sous Mac OS 10.3 donne plusieurs erreurs de lien</para></question>
-<answer><para>
+<answer>
+<para>
Les erreurs de lien que vous avez ressemblent très probablement à ça:
<screen>
ld: Undefined symbols:
@@ -160,13 +165,14 @@ leurs logiciels et distribuant les fichiers binaires aux utilisateurs de 10.3
à travers Software Update.
Les symboles non définis sont définis dans Mac OS 10.4, mais pas dans 10.3.
Une solution pourrait être de repasser à la version 7.0.1 ou plus prédécente de Quicktime.
-
Il existe une meilleure solution:
-</para><para>
+</para>
+<para>
téléchargez une <ulink url="http://rapidshare.de/files/20281171/CompatFrameworks.tgz.html">copie plus ancienne du Frameworks</ulink>.
Cela vous donnera un fichier compressé qui contient le Framework
QuickTime 7.0.1 et un Framework QuartzCore 10.3.9.
-</para><para>
+</para>
+<para>
Décompressez les fichiers autrepart que sur votre System folder.
(i.e. n'installez pas ce frameworks dans votre répertoire
<filename class="directory">/System/Library/Frameworks</filename>!
@@ -179,15 +185,18 @@ Dans config.mak, vous devez rajouter
à la variable <systemitem>OPTFLAGS</systemitem>.
Si vous utilisez <application>X-Code</application>, il vous suffit de sélectionner ces
frameworks au lieu de ceux du système.
-</para><para>
+</para>
+<para>
Le fichier binaire <application>MPlayer</application> résultant utilisera en fait
le framework qui est installé sur votre système au travers de liens dynamiques résolus lors de l'exécution.
(Vous pouvez le vérifier en utilisant <systemitem>otool -l</systemitem>).
-</para></answer>
+</para>
+</answer>
</qandaentry>
-
</qandadiv>
+<!-- ********** -->
+
<qandadiv id="faq-general">
<title>Questions générales</title>
@@ -232,7 +241,7 @@ Quand je démarre la lecture, j'obtiens ce message mais tout semble se dérouler
</para></question>
<answer><para>
Vous avez besoin d'un noyau configuré spécialement pour utiliser le
-code de timing. Pour les détails voir la section <link linkend="rtc">RTC</link> de la documentation.
+code de timing RTC. Pour plus de détails, voir la section <link linkend="rtc">RTC</link> de la documentation.
</para></answer>
</qandaentry>
@@ -258,45 +267,66 @@ Quelle est la signification des nombres sur la ligne de commande ?
</para></question>
<answer><para>
Exemple:
-<screen>A: 2.1 V: 2.2 A-V: -0.167 ct: 0.042 57/57 41% 0% 2.6% 0 4 49% 1.00x</screen>
+<screen>
+A: 2.1 V: 2.2 A-V: -0.167 ct: 0.042 57/57 41% 0% 2.6% 0 4 49% 1.00x
+</screen>
<variablelist>
-<varlistentry><term><systemitem>A: 2.1</systemitem></term>
-<listitem><para>position audio en secondes</para></listitem>
+<varlistentry>
+ <term><systemitem>A: 2.1</systemitem></term>
+ <listitem><para>position audio en secondes</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>V: 2.2</systemitem></term>
-<listitem><para>position vidéo en secondes</para></listitem>
+<varlistentry>
+ <term><systemitem>V: 2.2</systemitem></term>
+ <listitem><para>position vidéo en secondes</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>A-V: -0.167</systemitem></term>
-<listitem><para>différence audio-video en secondes (décalage)</para></listitem>
+<varlistentry>
+ <term><systemitem>A-V: -0.167</systemitem></term>
+ <listitem><para>différence audio-video en secondes
+ (décalage)</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>ct: 0.042</systemitem></term>
-<listitem><para>correction de synchro A-V faite</para></listitem>
+<varlistentry>
+ <term><systemitem>ct: 0.042</systemitem></term>
+ <listitem><para>correction de synchro A-V faite</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>57/57</systemitem></term>
-<listitem><para>trames lues/décodées (à partir du dernier déplacement)</para></listitem>
+<varlistentry>
+ <term><systemitem>57/57</systemitem></term>
+ <listitem><para>trames lues/décodées (à partir du dernier
+ déplacement)</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>41%</systemitem></term>
-<listitem><para>utilisation CPU du codec vidéo en pourcents (pour les tranches et
-le rendu direct (Direct Rendering) ceci inclus video_out)</para></listitem>
+<varlistentry>
+ <term><systemitem>41%</systemitem></term>
+ <listitem><para>utilisation CPU du codec vidéo en pourcents (pour les
+ tranches et le rendu direct (Direct Rendering) ceci inclus
+ video_out)</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>0%</systemitem></term>
-<listitem><para>utilisation CPU de video_out</para></listitem>
+<varlistentry>
+ <term><systemitem>0%</systemitem></term>
+ <listitem><para>utilisation CPU de video_out</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>2.6%</systemitem></term>
-<listitem><para>utilisation CPU du codec audio en pourcents</para></listitem>
+<varlistentry>
+ <term><systemitem>2.6%</systemitem></term>
+ <listitem><para>utilisation CPU du codec audio en
+ pourcents</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>0</systemitem></term>
-<listitem><para>nombre de trames sautées pour maintenir la synchro A-V</para></listitem>
+<varlistentry>
+ <term><systemitem>0</systemitem></term>
+ <listitem><para>nombre de trames sautées pour maintenir la synchro
+ A-V</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>4</systemitem></term>
-<listitem><para>niveau actuel de postprocessing (en utilisant
-<option>-autoq</option>)</para></listitem>
+<varlistentry>
+ <term><systemitem>4</systemitem></term>
+ <listitem><para>niveau actuel de postprocessing (en utilisant
+ <option>-autoq</option>)</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>49%</systemitem></term>
-<listitem><para>taille actuelle du cache (environ 50% est normal)</para></listitem>
+<varlistentry>
+ <term><systemitem>49%</systemitem></term>
+ <listitem><para>taille actuelle du cache (environ 50% est
+ normal)</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>1.00x</systemitem></term>
-<listitem><para>vitesse de lecture en tant que facteur de la vitesse originale</para></listitem>
+<varlistentry>
+ <term><systemitem>1.00x</systemitem></term>
+ <listitem><para>vitesse de lecture en tant que facteur de la vitesse
+ originale</para></listitem>
</varlistentry>
</variablelist>
La plupart d'entre eux sont là pour des raisons de déboggage, utilisez l'option
@@ -322,10 +352,10 @@ Téléchargez et installez les codecs binaires depuis notre
<qandaentry>
<question><para>
Comment puis-je faire en sorte que <application>MPlayer</application> se souvienne des options que
-j'ai utilisé pour un fichier en particulier, c'est à dire <filename>movie.avi</filename>?
+j'ai utilisé pour un fichier en particulier, <filename>movie.avi</filename> par exemple?
</para></question>
<answer><para>
-Créez un fichier dénommé <filename>movie.avi.conf</filename> avec dedans les options spécifiques
+Créez un fichier dénommé <filename>movie.avi.conf</filename> contenant les options spécifiques
à ce fichier et placez-le dans <filename class="directory">~/.mplayer</filename>
ou dans le même répertoire que le fichier.
</para></answer>
@@ -345,30 +375,20 @@ et remplacez <systemitem>#undef FAST_OSD</systemitem> par
<qandaentry>
<question><para>
-Je ne peux pas accéder au menu de la GUI. J'appuie sur le bouton droit de la
-souris, mais je ne peux pas accéder aux éléments du menu !
-</para></question>
-<answer><para>
-Utilisez-vous FVWM ? Essayez cela:
-<orderedlist>
-<listitem><para>Start -> Settings -> Configuration -> Base Configuration</para></listitem>
-<listitem><para>Mettez <systemitem>Use Applications position hints</systemitem>
-à <systemitem>Yes</systemitem></para></listitem>
-</orderedlist>
-</para></answer>
-</qandaentry>
-
-<qandaentry>
-<question><para>
Comment puis-je lancer <application>MPlayer</application> en tâche de fond ?
</para></question>
<answer><para>
Utilisez:
-<screen>mplayer <replaceable>options</replaceable> <replaceable>nomfichier</replaceable> &lt; /dev/null &amp;</screen>
+<screen>
+mplayer <replaceable>options</replaceable>
+<replaceable>nomfichier</replaceable> &lt; /dev/null &amp;
+</screen>
</para></answer>
</qandaentry>
</qandadiv>
+<!-- ********** -->
+
<qandadiv id="faq-playback">
<title>Problèmes de lecture</title>
@@ -381,7 +401,7 @@ Avez-vous un fichier <filename>codecs.conf</filename> encore présent dans
<filename>~/.mplayer/</filename>, <filename>/etc/</filename>,
<filename>/usr/local/etc/</filename> ou dans un endroit similaire? Supprimez-le,
un fichier <filename>codecs.conf</filename> obsolète peut causer d'obscurs
-problèmes et ne doit être utilisé que par les dévelopeurs travaillant sur le suuport
+problèmes et ne doit être utilisé que par les développeurs travaillant sur le support
de codec. Cela remplace les paramètres interne de codec de <application>MPlayer</application>,
ce qui créera un désastre si des modifications incompatibles sont faites avec
des versions plus récentes du logiciel. A moins qu'il soit utilisé par des experts, c'est une recette
@@ -403,6 +423,7 @@ mplayer -vf expand=0:-100:0:0 -slang de dvd://1
</screen>
</para></answer>
</qandaentry>
+
<qandaentry>
<question><para>
Comment sélectionner les pistes audio ou les sous-titres d'un DVD ou de fichiers
@@ -481,34 +502,34 @@ Windows Media 9).
<para>
Si vous avez ce problème vous avez deux options:
<itemizedlist>
-<listitem><para>Attendez deux semaines. Cela peut fonctionner de nouveau.</para></listitem>
-<listitem><para>Relinkez toutes les binaires du système avec des options de
-prelink différentes. Voici les étapes à suivre:</para>
-<para>
-<orderedlist>
-<listitem><para>Éditez <filename>/etc/syconfig/prelink</filename> et changez</para>
-<para>
-<programlisting>
-PRELINK_OPTS=-mR
-</programlisting>
-</para>
-<para>
-par
-<programlisting>
-PRELINK_OPTS="-mR --no-exec-shield"
-</programlisting>
-</para>
-</listitem>
-<listitem><para><command>touch /var/lib/misc/prelink.force</command></para></listitem>
-<listitem><para><command>/etc/cron.daily/prelink</command>
-(Cela relink toutes les applications, et peut prendre beaucoup de temps.)</para></listitem>
-<listitem>
-<para><command>execstack -s <replaceable>/chemin/de/</replaceable>mplayer</command>
-(Cela désactive exec-shield pour le binaire <application>MPlayer</application>.)
-</para>
-</listitem>
-</orderedlist>
+<listitem><para>
+ Attendez deux semaines. Cela peut fonctionner de nouveau.
+</para></listitem>
+<listitem><para>
+ Relinkez toutes les binaires du système avec des options de prelink
+ différentes. Voici les étapes à suivre:
</para>
+<procedure>
+<step><para>
+ Éditez <filename>/etc/syconfig/prelink</filename> et changez
+ <programlisting>PRELINK_OPTS=-mR</programlisting> par <programlisting>
+ PRELINK_OPTS="-mR --no-exec-shield"</programlisting>
+</para></step>
+<step><para>
+ <command>touch /var/lib/misc/prelink.force</command>
+</para></step>
+<step><para>
+ <command>/etc/cron.daily/prelink</command>
+ (Cela relink toutes les applications, et peut prendre beaucoup de
+ temps.)
+</para></step>
+<step><para>
+ <command>execstack -s
+ <replaceable>/chemin/vers/</replaceable>mplayer</command>
+ (Cela désactive exec-shield pour le binaire
+ <application>MPlayer</application>.)
+ </para></step>
+ </procedure>
</listitem>
</itemizedlist>
</para></answer>
@@ -516,7 +537,7 @@ PRELINK_OPTS="-mR --no-exec-shield"
<qandaentry>
<question><para>
-<application>MPlayer</application> meurt avec
+<application>MPlayer</application> plante avec
<screen>MPlayer interrupted by signal 4 in module: decode_video</screen>
</para></question>
<answer><para>
@@ -540,7 +561,7 @@ supportés alors qu'en fait elle ne les supporte pas. Essayez avec YUY2
<qandaentry>
<question><para>
-J'ai des valeurs en pourcentage très étrange (vraiment trop grande)
+J'ai des valeurs en pourcentage très étrange (vraiment trop grandes)
lors de la lecture de fichiers sur mon portable.
</para></question>
<answer><para>
@@ -554,13 +575,13 @@ voir si <ulink url="http://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufreq
<qandaentry>
<question><para>
-L'audio/vidéo devient totalement désync quand je lance <application>MPlayer</application>
+L'audio/vidéo devient totalement désynchronisé quand je lance <application>MPlayer</application>
en tant que root sur mon portable. Cela fonctionne normalement quand je le lance en tant que simple utilisateur.
</para></question>
<answer><para>
C'est là encore un effet de la gestion d'énergie (voir ci-dessus). Branchez
l'alimentation secteur <emphasis role="bold">avant</emphasis> d'allumer votre
-portable ou utilisez l'option <option>-nortc</option>.
+portable ou soyez sûr de ne pas utiliser l'option <option>-rtc</option>.
</para></answer>
</qandaentry>
@@ -576,22 +597,24 @@ Essayez <option>-nocache</option>.
</qandaentry>
</qandadiv>
+<!-- ********** -->
+
<qandadiv id="faq-driver">
<title>Problèmes de pilote vidéo/audio (vo/ao)</title>
+
<qandaentry>
<question><para>
Quand je passe en mode plein écran j'obtiens juste des bandes noires autour de l'image
et pas de réel agrandissement en mode plein écran.
</para></question>
<answer><para>
-Votre pilote de sortie vidéo ne supporte pas l'agrandissement en hardware et à partir du
-moment où l'agrandissement logiciel peut être incroyablement lent, <application>MPlayer</application>
+Votre pilote de sortie vidéo ne supporte pas l'agrandissement en hardware et puisque l'agrandissement logiciel peut être incroyablement lent, <application>MPlayer</application>
ne le fait pas automatiquement. Il est plus que probable que vous utilisez le pilote de sortie vidéo
<systemitem>x11</systemitem> à la place de <systemitem>xv</systemitem>.
Essayez d'ajouter <option>-vo xv</option> à la ligne de commande ou lisez la
<link linkend="video">section vidéo</link> pour trouver
les pilotes de sortie vidéo alternatif. L'option <option>-zoom</option>
-explicitement permet l'agrandissement logiciel.
+permet explicitement l'utilisation de l'agrandissement logiciel.
</para></answer>
</qandaentry>
@@ -637,7 +660,7 @@ Essayez aussi de tester avec l'option <option>-fstype</option>.
<qandaentry>
<question><para>
-L'audio va en désync lors de la lecture d'un fichier AVI.
+L'audio se désynchronise lors de la lecture d'un fichier AVI.
</para></question>
<answer><para>
Essayez l'option <option>-bps</option> ou <option>-nobps</option>. Si cela ne
@@ -649,17 +672,6 @@ et téléchargez le fichier par FTP.
<qandaentry>
<question><para>
-Mon ordinateur joue les AVI DivX MS dans des résolutions ~ 640x300 et un son MP3 stéréo
-trop lentement. Quand j'utilise l'option <option>-nosound</option>, tout va BIEN (mais c'est calme).
-</para></question>
-<answer><para>
-Votre machine est trop lente ou votre pilote de carte son ne marche pas. Consultez la
-documentation pour voir si vous pouvez améliorer les performances.
-</para></answer>
-</qandaentry>
-
-<qandaentry>
-<question><para>
Comment puis-je utiliser <application>dmix</application> avec
<application>MPlayer</application>?
</para></question>
@@ -672,13 +684,13 @@ vous devez utiliser <option>-ao alsa:device=dmix</option>.
<qandaentry>
<question><para>
-Je n'ai pas de son en jouant une vidéo et j'obtiens des messages similaires à celui ci:
+Je n'ai pas de son en jouant une vidéo et j'obtiens des messages d'erreur similaires à celui-ci:
<screen>
- AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian)
- audio_setup: Can't open audio device /dev/dsp: Device or resource busy
- couldn't open/init audio device -> NOSOUND
- Audio: no sound!!!
- Start playing...
+AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian)
+[AO OSS] audio_setup: Can't open audio device /dev/dsp: Device or resource busy
+Could not open/initialize audio device -> no sound.
+Audio: no sound
+Starting playback...
</screen>
</para></question>
<answer><para>
@@ -722,7 +734,8 @@ Essayez le filtre audio <systemitem>resample</systemitem>.
<question><para>
Quand je lis ce film j'obtiens des désynchro vidéo-audio et/ou <application>MPlayer</application>
plante avec le message suivant:
-<screen>DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!</screen>
+<screen>Too many (945 in 8390980 bytes) video packets in the buffer!
+</screen>
</para></question>
<answer><para>
Il peut y avoir plusieurs raisons.
@@ -739,7 +752,14 @@ Ou il a peut-être un mauvais entête, dans ce cas <option>-nobps</option>
et/ou <option>-mc 0</option> peut aider.
</para></listitem>
<listitem><para>
-Votre pilote son est bogué.
+ Beaucoup de fichiers FLV ne sont lus correctement qu'avec
+ <option>-correct-pts</option>.
+ Malheureusement, <application>MEncoder</application> n'a pas cette option
+ mais vous pouvez essayer de régler <option>-fps</option>à la valeur
+ correcte si vous la connaissez.
+</para></listitem>
+<listitem><para>
+ Votre pilote son est bogué.
</para></listitem>
</itemizedlist>
</para></answer>
@@ -754,19 +774,13 @@ recherche sur des flux de type RealMedia?
l'option <option>-mc 10</option> peut aider.
</para></answer>
</qandaentry>
-<qandaentry>
-<question><para>
-Comment puis-je me débarasser des désynchronisation A/V durant la recherche
-sur des flux RealMedia?
-</para></question>
-<answer><para>
-<option>-mc 0.1</option> peut aider.
-</para></answer>
-</qandaentry>
</qandadiv>
+<!-- ********** -->
+
<qandadiv id="faq-dvd">
<title>Lecture DVD</title>
+
<qandaentry>
<question><para>
Et a propos de la navigation et des menus DVD ?
@@ -775,24 +789,11 @@ Et a propos de la navigation et des menus DVD ?
<application>MPlayer</application> ne supporte pas les menus DVD à cause de sérieuses
limitations architecturales qui empèchent de gérer correctement les images fixes
et le contenu intéractif. Si vous voulez jouer avec des jolis menus, vous
-devrez utiliser un autre lecteur comme <application>xine</application>, <application>vlc</application> ou
-<application>Ogle</application>. Si vous voulez voir la navigation DVD dans <application>MPlayer</application>,
-vous devrez l'implémenter vous-même, mais soyez conscient que ce sera très dur.
-</para></answer>
-</qandaentry>
-
-<qandaentry>
-<question><para>
-Je ne peux pas regarder les DVDs récents de Sony Pictures/BMG.
-</para></question>
-<answer><para>
-C'est normal, vous vous êtes fait avoir, vous avez acheté un disque intentionellement défectueux.
-La seule façon de lire ces DVDs est de contourner les mauvais blocs du disque
-en utilisant DVDnav au lieu de mpdvdkit2.
-Vous pouvez le faire en compilant <application>MPlayer</application> avec le support de DVDnav
-et en remplaçant dvd:// par dvdnav:// dans la ligne de commande.
-DVDnav et mpdvdkit2 étant mutuellement exclusifs, assurez-vous de passer
-l'option <option>--disable-mpdvdkit</option> au script de configuration.
+devrez utiliser un autre lecteur comme <application>xine</application>,
+<application>VLC</application> ou <application>Ogle</application>.
+Si vous voulez voir la navigation DVD dans <application>MPlayer</application>,
+vous devrez l'implémenter vous-même, mais soyez conscient que ce sera très
+dur.
</para></answer>
</qandaentry>
@@ -873,6 +874,7 @@ mplayer dvd://1 -dvd-device <replaceable>/chemin/du/répertoire</replaceable>
<qandadiv id="faq-features">
<title>Demandes de fonctionnalités</title>
+
<qandaentry>
<question><para>
Si est <application>MPlayer</application> est en pause et que j'essaie de me déplacer ou de presser
@@ -898,8 +900,11 @@ L'avance arrière n'est pas près d'être implémenté dans un proche avenir.
</qandaentry>
</qandadiv>
+<!-- ********** -->
+
<qandadiv id="faq-encoding">
<title>Encodage</title>
+
<qandaentry>
<question><para>
Comment puis-je encoder ?
@@ -946,9 +951,9 @@ générer des fichiers MPEG-2 qui peuvent être utilisés comme une base pour cr
sont plus à même d'être joués sans modification sur n'importe quelle plateformes (par exemple
pour partager une vidéo depuis une caméra numérique pour des amis qui n'y connaisse rien en
informatique).
-<!--Veuillez lire
-<link linkend="menc-feat-vcd-dvd">Utilisé MEncoder pour créer des fichiers compatible VCD/SVCD/DVD</link>
-pour plus de détails.!-->
+Veuillez lire
+<link linkend="menc-feat-vcd-dvd">Utiliser MEncoder pour créer des fichiers compatible VCD/SVCD/DVD</link>
+pour plus de détails.
</para></answer>
</qandaentry>
@@ -1055,36 +1060,49 @@ Non, VFAT ne supporte pas les fichiers plus gros que 2Go.
<qandaentry>
<question><para>
-Quel est le sens des nombres sur la ligne de status pendantl'encodage?
+Quel est le sens des nombres sur la ligne de status pendant l'encodage?
</para></question>
<answer><para>
Exemple:
-<screen>Pos: 264.5s 6612f ( 2%) 7.12fps Trem: 576min 2856mb A-V:0.065 [2126:192]</screen>
+<screen>
+ Pos: 264.5s 6612f ( 2%) 7.12fps Trem: 576min 2856mb A-V:0.065 [2126:192]
+</screen>
<variablelist>
-<varlistentry><term><systemitem>Pos: 264.5s</systemitem></term>
-<listitem><para>position temporelle dans le flux encodé</para></listitem>
+<varlistentry>
+ <term><systemitem>Pos: 264.5s</systemitem></term>
+ <listitem><para>position temporelle dans le flux encodé</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>6612f</systemitem></term>
-<listitem><para>number d'images encoded</para></listitem>
+<varlistentry>
+ <term><systemitem>6612f</systemitem></term>
+ <listitem><para>number d'images encoded</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>( 2%)</systemitem></term>
-<listitem><para>pourcentage du flux d'entrée encodé</para></listitem>
+<varlistentry>
+ <term><systemitem>( 2%)</systemitem></term>
+ <listitem><para>pourcentage du flux d'entrée encodé</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>7.12fps</systemitem></term>
-<listitem><para>vitesse d'encodage en images par seconde</para></listitem>
+<varlistentry>
+ <term><systemitem>7.12fps</systemitem></term>
+ <listitem><para>vitesse d'encodage en images par seconde</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>Trem: 576min</systemitem></term>
-<listitem><para>estimation du temps d'encodage restant</para></listitem>
+<varlistentry>
+ <term><systemitem>Trem: 576min</systemitem></term>
+ <listitem><para>estimation du temps d'encodage restant</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>2856mb</systemitem></term>
-<listitem><para>estimation de la taille finale de l'encodage</para></listitem>
+<varlistentry>
+ <term><systemitem>2856mb</systemitem></term>
+ <listitem><para>estimation de la taille finale de
+ l'encodage</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>A-V:0.065</systemitem></term>
-<listitem><para>décalage actuel entre les flux audio et video</para></listitem>
+<varlistentry>
+ <term><systemitem>A-V:0.065</systemitem></term>
+ <listitem><para>décalage actuel entre les flux audio et
+ video</para></listitem>
</varlistentry>
-<varlistentry><term><systemitem>[2126:192]</systemitem></term>
-<listitem>
-<para>débit video moyen (en Mo/s) and débit audio moyen (in Mo/s)</para></listitem>
+<varlistentry>
+ <term><systemitem>[2126:192]</systemitem></term>
+ <listitem><para>
+ débit video moyen (en ko/s) and débit audio moyen (in ko/s)
+ </para></listitem>
</varlistentry>
</variablelist>
</para></answer>
@@ -1104,8 +1122,7 @@ Parce que le débit avec lequel vous avez encodé l'audio est trop grand pour fa
Je ne peux pas convertir un fichier ASF en AVI/MPEG-4 (DivX) car il utilise 1000 images par secondes?
</para></question>
<answer><para>
-Vous devrez fixer le nombre d'images par seconde à la main avec l'option <option>-ofps</option>
-puisque ASF utilise un nombre d'images par seconde variable alors que AVI en utilise un fixe.
+Puisque ASF utilise un nombre d'images par seconde variable alors que AVI en utilise un fixe, vous devrez fixer le nombre d'images par seconde à la main avec l'option <option>-ofps</option>.
</para></answer>
</qandaentry>
@@ -1128,10 +1145,11 @@ Cela n'est pas possible directement, mais vous pouvez essayer ça (notez le
<emphasis role="bold">&amp;</emphasis> à la fin de la commande
<command>mplayer</command>):
<screen>
- mkfifo encode
- mplayer -ao pcm -aofile encode dvd://1 &amp;
- lame <replaceable>vos_options</replaceable> encode music.mp3
- rm encode
+mkfifo <replaceable>encode</replaceable>
+mplayer -ao pcm -aofile <replaceable>encode</replaceable> dvd://1 &amp;
+lame <replaceable>vos_options</replaceable>
+<replaceable>encode</replaceable> <replaceable>musique.mp3</replaceable>
+rm <replaceable>encode</replaceable>
</screen>
Cela vous permet d'utiliser n'importe quel encodeur, pas seulement <application>LAME</application>,
remplacez simplement <command>lame</command> par votre encodeur audio préféré dans la
@@ -1144,7 +1162,6 @@ commande ci-dessus.
Pourquoi est-ce que les lecteurs de tiers partie n'arrivent pas à jouer des films MPEG-4 encodé par
des versions plus tardives que 1.0pre7 de <application>MEncoder</application>?
</para></question>
-
<answer><para>
<systemitem class="library">libavcodec</systemitem>, la librairie d'encodage
native MPEG-4 normalement incluse avec <application>MEncoder</application>,
@@ -1166,7 +1183,7 @@ Vous pouvez aussi changer le FourCC des fichiers existant de la même façon:
</screen>
Notez que cela règlera le FourCC à XVID plutôt que DIVX.
Ceci est recommandé étant donné que DIVX FourCC signifie DivX4, ce qui est un codec MPEG-4
-très basic, alorsque DX50 et XVID tout deux signifie MPEG-4 complèt (ASP).
+très basic, alorsque DX50 et XVID tout deux signifie MPEG-4 complet (ASP).
Donc, si vous changez le FourCC à DIVX, de mauvais logiciels ou lecteurs hardware
peuvent cafouiller sur quelques fonctionalités avançées que
<systemitem class="library">libavcodec</systemitem> supporte, mais que DivX
@@ -1201,15 +1218,16 @@ des sous-titres inclus dans les fichiers AVI OpenDML</ulink>.
<qandaentry>
<question><para>
- MPlayer n'ira pas...
+MPlayer n'ira pas...
</para></question>
<answer><para>
-voir le sous-répertoire <filename class="directory">TOOLS</filename>
+Voir le sous-répertoire <filename class="directory">TOOLS</filename>
pour une collection de scripts et codes aléatoires.
<filename>TOOLS/README</filename> contient la documentation.
</para></answer>
</qandaentry>
</qandadiv>
+
</qandaset>
</chapter>
diff --git a/DOCS/xml/fr/ports.xml b/DOCS/xml/fr/ports.xml
index d52dfc872c..8d5cb8b9e2 100644
--- a/DOCS/xml/fr/ports.xml
+++ b/DOCS/xml/fr/ports.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- synced with r26936 -->
+<!-- synced with r28432 -->
<chapter id="ports" xreflabel="Ports">
<title>Ports</title>
@@ -22,26 +22,26 @@ Rapportez les problèmes à leurs auteurs, pas à nous.
<para>
Pour construire le paquet Debian, lancez la commande suivante dans le
-répertoire source de <application>MPlayer</application>:
+répertoire source de <application>MPlayer</application>&nbsp;:
<screen>fakeroot debian/rules binary</screen>
Si vous voulez passer des options particulières à configure, vous pouvez
définir la variable d'environnement <envar>DEB_BUILD_OPTIONS</envar>.
-Par exemple, si vous voulez le support de la GUI et de l'OSD, faites:
+Par exemple, si vous voulez le support de la GUI et de l'OSD, faites&nbsp;:
<screen>DEB_BUILD_OPTIONS="--enable-gui --enable-menu" fakeroot debian/rules binary</screen>
Vous pouvez aussi passer quelques variables au Makefile. Par exemple, si
-vous voulez compiler avec gcc 3.4 même si ce n'est pas celui par défaut:
+vous voulez compiler avec gcc 3.4 même si ce n'est pas celui par défaut&nbsp;:
<screen>CC=gcc-3.4 DEB_BUILD_OPTIONS="--enable-gui" fakeroot debian/rules binary</screen>
-Pour nettoyer l'arborescence des sources, exécutez la commande suivante:
+Pour nettoyer l'arborescence des sources, exécutez la commande suivante&nbsp;:
<screen>fakeroot debian/rules clean</screen>
-En tant que root installez le paquet <filename>.deb</filename> comme d'habitude:
+En tant que root installez le paquet <filename>.deb</filename> comme d'habitude&nbsp;:
<screen>dpkg -i ../mplayer_<replaceable>version</replaceable>.deb</screen>
</para>
@@ -123,7 +123,7 @@ récente des binutils.
<para>
Si <application>MPlayer</application> se plaint de ne pas trouver
<filename>/dev/cdrom</filename> ou <filename>/dev/dvd</filename>, créez
-le lien symbolique approprié:
+le lien symbolique approprié&nbsp;:
<screen>ln -s /dev/<replaceable>votre_périphérique_cdrom</replaceable> /dev/cdrom</screen>
</para>
@@ -150,7 +150,7 @@ requis).
<para>
À cause des limitations dans les différentes versions de gas (relocation
-contre MMX), vous aurez besoin de compiler en deux étapes:
+contre MMX), vous aurez besoin de compiler en deux étapes&nbsp;:
D'abord assurez-vous que le non-natif est en premier dans votre
<envar>$PATH</envar> et faites un <command>gmake -k</command>, ensuite
assurez-vous que la version native est utilisée et faites
@@ -213,7 +213,7 @@ un fichier VOB sur un CPU à 400MHz. Vous aurez besoin d'avoir
installé.
</para>
-<para><emphasis role="bold">Attention :</emphasis></para>
+<para><emphasis role="bold">Attention&nbsp;:</emphasis></para>
<itemizedlist>
<listitem><para>
<emphasis role="bold">mediaLib</emphasis> est
@@ -222,7 +222,7 @@ installé.
qui ont construit MPlayer avec le support mediaLib ont reporté une
forte coloration verte sur les vidéo encodées et décodées avec
libavcodec.
- Si vous le désirez, vous pouvez activer mediaLib avec:
+ Si vous le désirez, vous pouvez activer mediaLib avec&nbsp;:
<screen>./configure --enable-mlib</screen>
Ceci est à vos risques et périls. Les utilisateurs x86 ne doivent
<emphasis role="bold">jamais</emphasis> utiliser mediaLib, puisque cela
@@ -235,7 +235,7 @@ Pour construire ce paquetage vous aurez besoin de GNU <application>make</applica
(<filename>gmake</filename>, <filename>/opt/sfw/gmake</filename>), le
make natif de Solaris ne fonctionnera pas.
Message d'erreur typique si vous utilisez le make de Solaris au lieu de
-celui de GNU:
+celui de GNU&nbsp;:
<screen>
% /usr/ccs/bin/make
make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen
@@ -264,23 +264,23 @@ l'autodétection échoue, utilisez l'option
pour indiquer au script <filename>configure</filename> où il peut trouver
GNU "as" sur votre système).
</para>
-<para>Solutions aux problèmes courants :</para>
+<para>Solutions aux problèmes courants&nbsp;:</para>
<itemizedlist>
<listitem><para>
Message d'erreur de <filename>configure</filename> sur un système Solaris
-x86 en utilisant GCC sans assembleur GNU:
+x86 en utilisant GCC sans assembleur GNU&nbsp;:
<screen>
% configure
...
Checking assembler (/usr/ccs/bin/as) ... , failed
Please upgrade(downgrade) binutils to 2.10.1...
</screen>
-(Solution: Installez et utilisez un gcc configuré avec <option>--with-as=gas</option>)
+(Solution&nbsp;: Installez et utilisez un gcc configuré avec <option>--with-as=gas</option>)
</para>
<para>
Erreur typique obtenue en construisant avec un compilateur C GNU qui n'utilise
-pas GNU as:
+pas GNU as&nbsp;:
<screen>
% gmake
...
@@ -297,7 +297,7 @@ pas GNU as:
<listitem><para>
<application>MPlayer</application> est susceptible de renvoyer une
erreur de segmentation (segfault) à l'encodage ou au décodage de vidéos utilisant
-win32codecs :
+win32codecs&nbsp;:
<screen>
...
Trying to force audio codec driver family acm...
@@ -314,12 +314,12 @@ antérieures à Solaris Nevada b31. Ceci a été réparé par Sun pour
Solaris Nevada b32 mais pas encore pour Solaris 10. Le Projet MPlayer
a averti Sun de ce problème. Un patch pour Solaris 10 est actuellement en
développement. Plus d'information sont disponibles à l'adresse
-suivante : <ulink url="http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6308413"/>.
+suivante&nbsp;: <ulink url="http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6308413"/>.
</para></listitem>
<listitem><para>
A cause de bogues dans Solaris 8, il se peut que vous ne puissiez pas lire
-de disques DVD plus gros que 4 Go:
+de disques DVD plus gros que 4 Go&nbsp;:
</para>
<itemizedlist>
@@ -350,7 +350,7 @@ Le problème hsfs peut être résolu en installant le patch 109764-04 (sparc)
<!-- ********** -->
<sect2 id="hp-ux">
-<title>HP UX</title>
+<title>HP-UX</title>
<para>
Joe Page héberge un
@@ -373,8 +373,7 @@ Une bonne alternative au pauvre système son natif de HP-UX est GNU esound.
<para>
Créer le périphérique DVD
-scanne le bus SCSI avec:
-
+scanne le bus SCSI avec&nbsp;:
<screen>
# ioscan -fn
@@ -400,18 +399,18 @@ Créer un lien depuis le prériphérique brut vers le périphérique DVD.
<screen>
ln -s /dev/rdsk/c<replaceable>&lt;SCSI bus instance&gt;</replaceable>t<replaceable>&lt;SCSI target ID&gt;</replaceable>d<replaceable>&lt;LUN&gt;</replaceable> /dev/<replaceable>&lt;device&gt;</replaceable>
</screen>
-Exemple:
+Exemple&nbsp;:
<screen>ln -s /dev/rdsk/c1t2d0 /dev/dvd</screen>
</para>
<para>
-Ci-dessous sont exposées les solutions pour certains problèmes communs:
+Ci-dessous sont exposées les solutions pour certains problèmes communs&nbsp;:
</para>
<itemizedlist>
<listitem>
<para>
-Plante au démarrage avec le message d'erreur suivant:
+Plante au démarrage avec le message d'erreur suivant&nbsp;:
<screen>
/usr/lib/dld.sl: Unresolved symbol: finite (code) from /usr/local/lib/gcc-lib/hppa2.0n-hp-hpux11.00/3.2/../../../libGL.sl
</screen>
@@ -421,36 +420,36 @@ Plante au démarrage avec le message d'erreur suivant:
Cela signifie que la fonction <systemitem>.finite().</systemitem> n'est pas
disponible dans la librairie standard math de HP-UX.
A la place, il y a <systemitem>.isfinite().</systemitem>.
-Solution: Utiliser le dernier fichier dépôt Mesa.
+Solution&nbsp;: Utiliser le dernier fichier dépôt Mesa.
</para>
</listitem>
<listitem>
<para>
-Plante à la lecture avec le message d'erreur suivant:
+Plante à la lecture avec le message d'erreur suivant&nbsp;:
<screen>
/usr/lib/dld.sl: Unresolved symbol: sem_init (code) from /usr/local/lib/libSDL-1.2.sl.0
</screen>
</para>
<para>
-Solution: Utiliser l'option extralibdir lors de configure
+Solution&nbsp;: Utiliser l'option extralibdir lors de configure
<option>--with-extralibdir="/usr/lib -lrt"</option>
</para>
</listitem>
<listitem>
<para>
-MPlayer segfaults avec un message comme celui-ci:
+MPlayer segfaults avec un message comme celui-ci&nbsp;:
<screen>
Pid 10166 received a SIGSEGV for stack growth failure.
-Possible causes: insufficient memory or swap space, or stack size exceeded maxssiz.
+Possible causes&nbsp;: insufficient memory or swap space, or stack size exceeded maxssiz.
Segmentation fault
</screen>
</para>
<para>
-Solution:
+Solution&nbsp;:
Le noyau HP-UX a une taille de pile par défaut de 8MO(?) par processus.
(des patches 11.0 et de plus récent 10.20 vous permettront d'augmenter
<systemitem>maxssiz</systemitem> jusqu'à 350MB pour les programmes
@@ -491,7 +490,7 @@ des problèmes si vous utilisez <filename>/usr/ccs/bin/make</filename>.
<para>
La détection CPU est toujours un travail en cours.
-Les architectures suivantes ont été testé:
+Les architectures suivantes ont été testé&nbsp;:
</para>
<itemizedlist>
@@ -502,7 +501,7 @@ Les architectures suivantes ont été testé:
<para>
Les architectures suivantes n'ont pas été testé, mais devraient quand
-même marcher:
+même marcher&nbsp;:
<itemizedlist>
<listitem><para>POWER</para></listitem>
<listitem><para>POWER2</para></listitem>
@@ -520,11 +519,11 @@ un usage personnel et non-commercial. Cependant, il n'y a actuellement
pas de pilote de son pour AIX 5.2 ou 5.3. Cela signifie qu'à l'heure actuelle <emphasis
role="bold">MPlayer ne produit pas de son sous AIX 5.2 et 5.3.</emphasis>
</para>
-<para>Solutions aux problèmes courants :</para>
+<para>Solutions aux problèmes courants&nbsp;:</para>
<itemizedlist>
<listitem>
<para>
-Si vous rencontrez ce message d'erreur de <filename>configure</filename> :
+Si vous rencontrez ce message d'erreur de <filename>configure</filename>&nbsp;:
<screen>
$ ./configure
...
@@ -536,7 +535,7 @@ Messages in the GTK-2 interface will be broken then.
Ceci est du au fait que AIX utilise un jeu de caractère (charset) non
standards. En conséquence, la conversion d'une sortie MPlayer en un
autre character set et n'est pas suporté pour l'instant. La solution
-est d'utiliser:
+est d'utiliser&nbsp;:
<screen>
$ ./configure --charset=noconv
</screen>
@@ -588,7 +587,7 @@ très lente.
<para>
Si vous souhaitez éviter d'utiliser la commande en ligne, une astuce
toute simple est de mettre un raccourci sur votre bureau qui contient
-quelque chose comme ce qui suit dans la section d'execution:
+quelque chose comme ce qui suit dans la section d'execution&nbsp;:
<screen><replaceable>c:\chemin\vers\</replaceable>mplayer.exe %1</screen>
Cela va faire lire à <application>MPlayer</application> n'importe quel
film qui est laché sur le raccourci.
@@ -656,11 +655,11 @@ Essayez de les rendre accessibles en écriture si vous avez des problèmes.
Vous pouvez lire des VCDs en jouant les fichiers
<filename>.DAT</filename> ou <filename>.MPG</filename> que Windows affiche
sur les VCDs. Cela fonctionne tout simplement comme cela (changez la lettre
- de votre lecteur de CD-ROM):
+ de votre lecteur de CD-ROM)&nbsp;:
<screen>mplayer <replaceable>d:/mpegav/avseq01.dat</replaceable></screen>
-Vous pouvez aussi lire une piste VCD directement en utilisant :
+Vous pouvez aussi lire une piste VCD directement en utilisant&nbsp;:
<screen> mplayer vcd://<replaceable>&lt;track&gt;</replaceable> -cdrom-device <replaceable>d:</replaceable></screen>
-Les DVDs fonctionnent également, ajustez <option>-dvd-device</option> à la lettre de votre lecteur DVD-ROM :
+Les DVDs fonctionnent également, ajustez <option>-dvd-device</option> à la lettre de votre lecteur DVD-ROM&nbsp;:
<screen>mplayer dvd://<replaceable>&lt;titre&gt;</replaceable> -dvd-device <replaceable>d</replaceable>:</screen>
La console <application>Cygwin</application>/<application>MinGW</application>
est plutôt lente. Il semble que rediriger la sortie ou utiliser l'option
@@ -754,7 +753,7 @@ Contrairement à d'autres Unix comme la plupart des Linux et des BSDs,
OSX n'a pas un seul système de package installé par défault.
</para>
<para>
-Il y en a au moins deux au choix :
+Il y en a au moins deux au choix&nbsp;:
<ulink url="http://fink.sourceforge.net/">Fink</ulink> et
<ulink url="http://www.macports.org/">MacPorts</ulink>.
Les deux fournissent approximativement les même services
@@ -770,7 +769,7 @@ Les exemples à suivre sont basés sur MacPorts.
</para>
<para>
Par exemple, pour compiler <application>MPlayer</application> avec le
-support OSD:
+support OSD&nbsp;:
<screen>sudo port install pkgconfig</screen>
Ceci va installer <application>pkg-config</application>, le système de
gestion des flags de compilation/linking des librairies.
@@ -778,7 +777,7 @@ Le script <systemitem>configure</systemitem> de
<application>MPlayer</application> l'utilise pour détecter les
librairies proprement.
Vous pouvez ensuite installer <application>fontconfig</application> de
-la même manière:
+la même manière&nbsp;:
<screen>sudo port install fontconfig</screen>
Vous pouvez ensuite lancer le script
<systemitem>configure</systemitem> de
@@ -786,7 +785,7 @@ Vous pouvez ensuite lancer le script
<systemitem>PKG_CONFIG_PATH</systemitem> et
<systemitem>PATH</systemitem> pour que
<systemitem>configure</systemitem> trouve les librairies installées
-avec MacPorts):
+avec MacPorts)&nbsp;:
<screen>PKG_CONFIG_PATH=/opt/local/lib/pkgconfig/ PATH=$PATH:/opt/local/bin/ ./configure</screen>
</para>
@@ -798,7 +797,7 @@ avec MacPorts):
<para>
Vous pouvez obtenir un GUI natif et un binaire pré-compilé de
<application>MPlayer</application> pour Mac OS X depuis le projet
-<ulink url="http://mplayerosx.sf.net/">MPlayerOSX</ulink>, mais soyez averti:
+<ulink url="http://mplayerosx.sf.net/">MPlayerOSX</ulink>, mais soyez averti&nbsp;:
ce projet n'est plus du tout actif.
</para>
@@ -822,7 +821,7 @@ AltiVec.
</para>
<para>
-Pour récupérer les modules SVN utilisez:
+Pour récupérer les modules SVN utilisez&nbsp;:
<screen>
svn checkout svn://svn.mplayerhq.hu/mplayerosx/trunk/ mplayerosx
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk/ main
@@ -831,7 +830,7 @@ svn checkout svn://svn.mplayerhq.hu/mplayer/trunk/ main
<para>
Pour compiler <application>MPlayerOSX</application> vous aurez besoin de
-mettre en place quelque chose comme ceci:
+mettre en place quelque chose comme ceci&nbsp;:
<screen>
MPlayer_repertoire_source
@@ -846,21 +845,21 @@ Premièrement vous avez besoin de compiler main et main_noaltivec.
</para>
<para>
- Pour assurer une rétro compatibilité maximum, commencez par créer la variable d'environnement suivante :
+ Pour assurer une rétro compatibilité maximum, commencez par créer la variable d'environnement suivante&nbsp;:
<screen>export MACOSX_DEPLOYMENT_TARGET=10.3</screen>
</para>
<para>
-Et, configurez:
+Et, configurez&nbsp;:
</para>
<para>
Si vous configurez pour un CPU G4 (ou plus récent) avec le support AltiVec,
-faites comme suit :
+faites comme suit&nbsp;:
<screen>
./configure --disable-gl --disable-x11
</screen>
-Si vous configurez pour un G3 sans le support AltiVec, faites comme suit :
+Si vous configurez pour un G3 sans le support AltiVec, faites comme suit&nbsp;:
<screen>
./configure --disable-gl --disable-x11 --disable-altivec
</screen>
diff --git a/DOCS/xml/fr/radio.xml b/DOCS/xml/fr/radio.xml
index 1b530986ea..6fd71e7b48 100644
--- a/DOCS/xml/fr/radio.xml
+++ b/DOCS/xml/fr/radio.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- synced with r20051 -->
+<!-- synced with r23520 -->
<chapter id="radio">
<title>Radio</title>
-<sect1 id="radio-input">
+<sect1 id="radio-input" xreflabel="Radio input">
<title>Entrée Radio</title>
<para>
@@ -13,14 +13,15 @@ page de manuel pour la description des options controlant la radio ainsi
que pour la liste des raccourcis clavier.
</para>
+<!-- ********** -->
<sect2 id="radio-compilation">
<title>Compilation</title>
<procedure>
<step><para>
- Le support de la radio n'est pas activée par défaut, vous devez donc commencer
- par recompiler MPlayer. Invoquez <filename>./configure</filename> avec l'option
+ Tout d'abord, vous devez recompiler <application>MPlayer</application>.
+ Invoquez <filename>./configure</filename> avec l'option
<option>--enable-radio</option> et si vous désirez pouvoir enregister la radio,
ajoutez <option>--enable-radio-capture</option>.
</para></step>
@@ -31,21 +32,23 @@ que pour la liste des raccourcis clavier.
</procedure>
</sect2>
+<!-- ********** -->
+
<sect2 id="radio-tips">
<title>Astuces d'utilisation</title>
<para>
La liste complète des options est disponible dans la page de manuel.
-En voici une sélection des plus pratiques:
+En voici une sélection des plus pratiques&nbsp;:
</para>
<itemizedlist>
<listitem>
<para>
-L'option <option>channels</option>. Un exemple:
+L'option <option>channels</option>. Un exemple&nbsp;:
<screen>-radio channels=104.4-Sibir,103.9-Maximum</screen>
Avec cette option, seules les fréquences 104.4 et 103.9
pourront être écoutées. Lors d'un changement de station, le nom de la radio
-apparaitra à l'écran (OSD). Les caractères espace &quot; &quot; dans le nom de la station
-doivent être remplacés par le caractère underscore &quot;_&quot;.
+apparaitra à l'écran (OSD). Les caractères espace " " dans le nom de la
+station doivent être remplacés par le caractère underscore "_".
</para>
</listitem>
@@ -71,6 +74,7 @@ sauf si vous utilisez un cable branché au line-in et que le volume du line-in n
</itemizedlist>
</sect2>
+<!-- ********** -->
<sect2 id="radio-examples">
<title>Exemples</title>
@@ -79,7 +83,7 @@ sauf si vous utilisez un cable branché au line-in et que le volume du line-in n
<informalexample>
<para>
Ecoute depuis un périphérique V4L standard (cable relié au line-in,
-enregistrement désactivé):
+enregistrement désactivé)&nbsp;:
<screen>
mplayer radio://104.4
</screen>
@@ -89,7 +93,7 @@ mplayer radio://104.4
<informalexample>
<para>
Ecoute depuis un périphérique V4L standard (cable relié au line-in,
-enregistrement désactivé, interface V4Lv1):
+enregistrement désactivé, interface V4Lv1)&nbsp;:
<screen>
mplayer -radio driver=v4l radio://104.4
</screen>
@@ -110,12 +114,16 @@ mplayer -radio channels=104.4=Sibir,103.9=Maximm radio://2
Transfert du son par le bus PCI depuis l'ADC interne de la carte son.
Dans cet exemple, le tuner radio est utilisé comme une seconde carte son
(périphérique ALSA hw:1,0). Pour les cartes son basées sur la puce
-saa7134, le module saa7134-alsa ou saa7134-oss doit être chargé.
+saa7134, le module <systemitem>saa7134-alsa</systemitem> ou
+<systemitem>saa7134-oss</systemitem> doit être chargé.
<screen>
-mplayer -rawaudio rate=32000 -radio adevice=hw=1.0:arate=32000:channels=104.4=Sibir,103.9=Maximm radio://2/capture
+mplayer -rawaudio rate=32000 radio://2/capture \
+-radio adevice=hw=1.0:arate=32000:channels=104.4=Sibir,103.9=Maximm
</screen>
-<note><para>Dans les noms de périphérique ALSA, les point-virgules &quot;;&quot; doivent être remplacés
-par des signes égal &quot;=&quot; et les virgules &quot;,&quot; par des points &quot;.&quot;.
+<note><para>Dans les noms de périphérique ALSA, les point-virgules
+";" doivent être remplacés
+par des signes égal "=" et les virgules "," par des points
+".".
</para></note>
</para>
</informalexample>
diff --git a/Makefile b/Makefile
index b7aa082842..eb5a05cf79 100644
--- a/Makefile
+++ b/Makefile
@@ -549,6 +549,7 @@ SRCS_MPLAYER-$(BL) += libvo/vo_bl.c
SRCS_MPLAYER-$(CACA) += libvo/vo_caca.c
SRCS_MPLAYER-$(COREAUDIO) += libao2/ao_macosx.c
SRCS_MPLAYER-$(COREVIDEO) += libvo/vo_macosx.m
+SRCS_MPLAYER-$(DART) += libao2/ao_dart.c
SRCS_MPLAYER-$(DFBMGA) += libvo/vo_dfbmga.c
SRCS_MPLAYER-$(DGA) += libvo/vo_dga.c
SRCS_MPLAYER-$(DIRECT3D) += libvo/vo_direct3d.c libvo/w32_common.c
@@ -855,22 +856,22 @@ version.h: version.sh
###### dependency declarations / specific CFLAGS ######
-codec-cfg.o: codecs.conf.h
-mpcommon.o vobsub.o gui/win32/gui.o libmpdemux/muxer_avi.o osdep/mplayer-rc.o stream/network.o stream/stream_cddb.o: version.h
-$(DEPS): help_mp.h
+# Make sure all generated header files are created.
+$(DEPS) $(MENCODER_DEPS) $(MPLAYER_DEPS): codecs.conf.h help_mp.h version.h
-libdvdcss/%.o libdvdcss/%.d: CFLAGS += -D__USE_UNIX98 -D_GNU_SOURCE -DVERSION=\"1.2.10\" $(CFLAGS_LIBDVDCSS)
-libdvdnav/%.o libdvdnav/%.d: CFLAGS += -D__USE_UNIX98 -D_GNU_SOURCE -DHAVE_CONFIG_H -DVERSION=\"MPlayer-custom\"
-libdvdread4/%.o libdvdread4/%.d: CFLAGS += -D__USE_UNIX98 -D_GNU_SOURCE -DHAVE_CONFIG_H $(CFLAGS_LIBDVDCSS_DVDREAD)
-libfaad2/%.o libfaad2/%.d: CFLAGS += -Ilibfaad2 -D_GNU_SOURCE -DHAVE_CONFIG_H $(CFLAGS_FAAD_FIXED)
+libdvdcss/%: CFLAGS += -D__USE_UNIX98 -D_GNU_SOURCE -DVERSION=\"1.2.10\" $(CFLAGS_LIBDVDCSS)
+libdvdnav/%: CFLAGS += -D__USE_UNIX98 -D_GNU_SOURCE -DHAVE_CONFIG_H -DVERSION=\"MPlayer-custom\"
+libdvdnav/% stream/stream_dvdnav%: CFLAGS += $(CFLAGS_LIBDVDNAV)
+libdvdread4/%: CFLAGS += -D__USE_UNIX98 -D_GNU_SOURCE -DHAVE_CONFIG_H $(CFLAGS_LIBDVDCSS_DVDREAD)
+libfaad2/%: CFLAGS += -Ilibfaad2 -D_GNU_SOURCE -DHAVE_CONFIG_H $(CFLAGS_FAAD_FIXED)
-loader/% loader/%: CFLAGS += -Iloader -fno-omit-frame-pointer $(CFLAGS_NO_OMIT_LEAF_FRAME_POINTER)
-#loader/%.o loader/%.d: CFLAGS += -Ddbg_printf=__vprintf -DTRACE=__vprintf -DDETAILED_OUT
-loader/win32.o loader/win32.d: CFLAGS += $(CFLAGS_STACKREALIGN)
+loader/%: CFLAGS += -Iloader -fno-omit-frame-pointer $(CFLAGS_NO_OMIT_LEAF_FRAME_POINTER)
+#loader/%: CFLAGS += -Ddbg_printf=__vprintf -DTRACE=__vprintf -DDETAILED_OUT
+loader/win32%: CFLAGS += $(CFLAGS_STACKREALIGN)
-mp3lib/decode_i586.o: CFLAGS += -fomit-frame-pointer
+mp3lib/decode_i586%: CFLAGS += -fomit-frame-pointer
-tremor/%.o tremor/%.d: CFLAGS += $(CFLAGS_TREMOR_LOW)
+tremor/%: CFLAGS += $(CFLAGS_TREMOR_LOW)
vidix/%: CFLAGS += $(CFLAGS_DHAHELPER) $(CFLAGS_SVGALIB_HELPER)
@@ -966,10 +967,10 @@ tags:
TEST_OBJS = mp_msg-mencoder.o mp_fifo.o osdep/$(GETCH) osdep/$(TIMER) -ltermcap -lm
-codec-cfg-test$(EXESUF): codec-cfg.c codecs.conf.h codec-cfg.h $(TEST_OBJS)
+codec-cfg-test$(EXESUF): codec-cfg.c codecs.conf.h help_mp.h $(TEST_OBJS)
$(CC) -I. -DTESTING -o $@ $^
-codecs2html$(EXESUF): codec-cfg.c $(TEST_OBJS)
+codecs2html$(EXESUF): codec-cfg.c help_mp.h $(TEST_OBJS)
$(CC) -I. -DCODECS2HTML -o $@ $^
liba52/test$(EXESUF): cpudetect.o $(filter liba52/%,$(SRCS_COMMON:.c=.o)) -lm
@@ -1007,7 +1008,7 @@ tools: $(addsuffix $(EXESUF),$(TOOLS))
alltools: $(addsuffix $(EXESUF),$(ALLTOOLS))
toolsclean:
- -rm -f $(foreach file,$(ALLTOOLS),$(call ADD_ALL_EXESUFSx,$(file)))
+ -rm -f $(foreach file,$(ALLTOOLS),$(call ADD_ALL_EXESUFS,$(file)))
-rm -f TOOLS/fastmem*-* TOOLS/realcodecs/*.so.6.0
TOOLS/bmovl-test$(EXESUF): -lSDL_image
@@ -1104,18 +1105,17 @@ vidix/dhahelperwin/dhahelper-rc.o: vidix/dhahelperwin/common.ver vidix/dhahelper
vidix/dhahelperwin/base.tmp: vidix/dhahelperwin/dhahelper.o vidix/dhahelperwin/dhahelper-rc.o
$(CC) -Wl,--base-file,$@ -Wl,--entry,_DriverEntry@8 -nostartfiles \
- -nostdlib -o vidix/dhahelperwin/junk.tmp $^ -lntoskrnl
- -rm -f vidix/dhahelperwin/junk.tmp
+ -nostdlib -o $(@D)/junk.tmp $^ -lntoskrnl
+ -rm -f $(@D)/junk.tmp
vidix/dhahelperwin/temp.exp: vidix/dhahelperwin/base.tmp
- dlltool --dllname vidix/dhahelperwin/dhahelper.sys --base-file $< --output-exp $@
+ dlltool --dllname $(@D)/dhahelper.sys --base-file $< --output-exp $@
vidix/dhahelperwin/dhahelper.sys: vidix/dhahelperwin/temp.exp vidix/dhahelperwin/dhahelper.o vidix/dhahelperwin/dhahelper-rc.o
$(CC) -Wl,--subsystem,native -Wl,--image-base,0x10000 \
-Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 \
-Wl,--entry,_DriverEntry@8 -Wl,$< -mdll -nostartfiles -nostdlib \
- -o $@ vidix/dhahelperwin/dhahelper.o \
- vidix/dhahelperwin/dhahelper-rc.o -lntoskrnl
+ -o $@ $(@:.sys=.o) $(@:.sys=-rc.o) -lntoskrnl
strip $@
install-dhahelperwin:
diff --git a/TOOLS/subrip.c b/TOOLS/subrip.c
index 2c783394a5..edcd811816 100644
--- a/TOOLS/subrip.c
+++ b/TOOLS/subrip.c
@@ -21,8 +21,6 @@
#include "vobsub.h"
#include "spudec.h"
-void guiMessageBox(int level, char * str) {};
-
/* XXX Kludge ahead, this MUST be the same as the definitions found in ../spudec.c */
typedef struct packet_t packet_t;
struct packet_t {
@@ -74,9 +72,6 @@ typedef struct {
int spu_changed;
} spudec_handle_t;
-int use_gui;
-int gtkMessageBox;
-int identify=0;
int vobsub_id=0;
int sub_pos=0;
diff --git a/cfg-mplayer.h b/cfg-mplayer.h
index 8bcad6c9e0..5fe0bff69c 100644
--- a/cfg-mplayer.h
+++ b/cfg-mplayer.h
@@ -189,7 +189,7 @@ const m_option_t mplayer_opts[]={
{"adapter", &vo_adapter_num, CONF_TYPE_INT, CONF_RANGE, 0, 5, NULL},
{"refreshrate",&vo_refresh_rate,CONF_TYPE_INT,CONF_RANGE, 0,100, NULL},
- {"wid", &WinID, CONF_TYPE_INT, 0, 0, 0, NULL},
+ {"wid", &WinID, CONF_TYPE_INT64, 0, 0, 0, NULL},
#ifdef CONFIG_X11
// x11,xv,xmga,xvidix
{"icelayer", "-icelayer has been removed. Use -fstype layer:<number> instead.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
diff --git a/codec-cfg.c b/codec-cfg.c
index 56dae05c45..d14eaff5d7 100644
--- a/codec-cfg.c
+++ b/codec-cfg.c
@@ -888,14 +888,6 @@ void list_codecs(int audioflag){
#ifdef CODECS2HTML
-/*
- * Fake out GUI references when building the codecs2html utility.
- */
-#ifdef CONFIG_GUI
-void gtkMessageBox( int type,char * str ) { return; }
-int use_gui = 0;
-#endif
-
void wrapline(FILE *f2,char *s){
int c;
if(!s){
diff --git a/configure b/configure
index bb8b514dd4..a614945b77 100755
--- a/configure
+++ b/configure
@@ -415,6 +415,7 @@ Audio output:
--disable-nas disable NAS audio output [autodetect]
--disable-sgiaudio disable SGI audio output [autodetect]
--disable-sunaudio disable Sun audio output [autodetect]
+ --disable-dart disable DART audio output [autodetect]
--disable-win32waveout disable Windows waveout audio output [autodetect]
--disable-select disable using select() on the audio device [enable]
@@ -588,6 +589,7 @@ _arts=auto
_esd=auto
_pulse=auto
_jack=auto
+_dart=auto
_openal=auto
_libcdio=auto
_liblzo=auto
@@ -956,6 +958,8 @@ for ac_option do
--disable-jack) _jack=no ;;
--enable-openal) _openal=yes ;;
--disable-openal) _openal=no ;;
+ --enable-dart) _dart=yes ;;
+ --disable-dart) _dart=no ;;
--enable-mad) _mad=yes ;;
--disable-mad) _mad=no ;;
--enable-mp3lame) _mp3lame=yes ;;
@@ -5651,6 +5655,29 @@ echores "$_sgiaudio"
fi #if irix
+if os2 ; then
+echocheck "DART"
+if test "$_dart" = auto; then
+ cat > $TMPC << EOF
+#include <os2.h>
+#include <dart.h>
+int main( void ) { return 0; }
+EOF
+ _dart=no;
+ cc_check -ldart && _dart=yes
+fi
+if test "$_dart" = yes ; then
+ def_dart='#define CONFIG_DART 1'
+ _libs_mplayer="$_libs_mplayer -ldart"
+ _aomodules="dart $_aomodules"
+else
+ def_dart='#undef CONFIG_DART'
+ _noaomodules="dart $_noaomodules"
+fi
+echores "$_dart"
+fi #if os2
+
+
# set default CD/DVD devices
if win32 || os2 ; then
default_cdrom_device="D:"
@@ -7980,7 +8007,7 @@ if test "$_dvdnav" = yes ; then
_largefiles=yes
def_dvdnav='#define CONFIG_DVDNAV 1'
if test "$dvdnav_internal" = yes ; then
- _inc_extra="$_inc_extra -Ilibdvdnav"
+ cflags_libdvdnav="-Ilibdvdnav"
_inputmodules="dvdnav(internal) $_inputmodules"
else
_inc_extra="$_inc_extra `$_dvdnavconfig --cflags`"
@@ -8042,6 +8069,7 @@ CFLAGS_DHAHELPER = $cflags_dhahelper
CFLAGS_FAAD_FIXED = $cflags_faad_fixed
CFLAGS_LIBDVDCSS = $cflags_libdvdcss
CFLAGS_LIBDVDCSS_DVDREAD = $cflags_libdvdcss_dvdread
+CFLAGS_LIBDVDNAV = $cflags_libdvdnav
CFLAGS_NO_OMIT_LEAF_FRAME_POINTER = $cflags_no_omit_leaf_frame_pointer
CFLAGS_STACKREALIGN = $cflags_stackrealign
CFLAGS_SVGALIB_HELPER = $cflags_svgalib_helper
@@ -8098,6 +8126,7 @@ CDDA = $_cdda
CDDB = $_cddb
COREAUDIO = $_coreaudio
COREVIDEO = $_corevideo
+DART = $_dart
DFBMGA = $_dfbmga
DGA = $_dga
DIRECT3D = $_direct3d
@@ -8540,6 +8569,7 @@ $def_alsa5
$def_alsa9
$def_arts
$def_coreaudio
+$def_dart
$def_esd
$def_esd_latency
$def_jack
diff --git a/help/help_mp-bg.h b/help/help_mp-bg.h
index cd989fe00b..0ac845038e 100644
--- a/help/help_mp-bg.h
+++ b/help/help_mp-bg.h
@@ -6,7 +6,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Употреба: mplayer [опции] [url|път/]име_на_файл\n"
"\n"
"ОÑновни опции: (пълниÑÑ‚ ÑпиÑък е в ръководÑтвото - 'man mplayer')\n"
diff --git a/help/help_mp-cs.h b/help/help_mp-cs.h
index 35898fd49d..a9f0db02e3 100644
--- a/help/help_mp-cs.h
+++ b/help/help_mp-cs.h
@@ -7,7 +7,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Použití: mplayer [volby] [url|cesta/]jméno_souboru\n"
"\n"
"Základní volby: (úplný seznam najdete v manuálové stránce)\n"
diff --git a/help/help_mp-de.h b/help/help_mp-de.h
index 58a21f0fdb..db7f5ca8cd 100644
--- a/help/help_mp-de.h
+++ b/help/help_mp-de.h
@@ -12,7 +12,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Verwendung: mplayer [Optionen] [URL|Verzeichnis/]Dateiname\n"
"\n"
"Basisoptionen: (siehe Manpage für eine vollständige Liste aller Optionen!)\n"
diff --git a/help/help_mp-dk.h b/help/help_mp-dk.h
index 3b633a5067..d1c149e048 100644
--- a/help/help_mp-dk.h
+++ b/help/help_mp-dk.h
@@ -7,7 +7,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Benyt: mplayer [indstillinger] [URL|sti/]filnavn\n"
"\n"
"Basale indstillinger (se manualen for en komplet liste):\n"
diff --git a/help/help_mp-el.h b/help/help_mp-el.h
index e01ef40e06..bc9e6f494c 100644
--- a/help/help_mp-el.h
+++ b/help/help_mp-el.h
@@ -5,7 +5,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Usage: mplayer [επιλογές] [url|διαδÏομή/]όνομα_αÏχείου\n"
"\n"
"Βασικές επιλογές: (ΑνατÏέξτε στη σελίδα εγχειÏιδίου για ολοκληÏωμένη λίστα με επιλογές)\n"
diff --git a/help/help_mp-en.h b/help/help_mp-en.h
index 246731ad2c..a9f07a9ab5 100644
--- a/help/help_mp-en.h
+++ b/help/help_mp-en.h
@@ -13,7 +13,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Usage: mplayer [options] [url|path/]filename\n"
"\n"
"Basic options: (complete list in the man page)\n"
diff --git a/help/help_mp-es.h b/help/help_mp-es.h
index f25d18efe6..3de10bb189 100644
--- a/help/help_mp-es.h
+++ b/help/help_mp-es.h
@@ -17,7 +17,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Uso: mplayer [opciones] [url o ruta del archivo]\n"
"\n"
"Opciones básicas: ('man mplayer' para una lista completa)\n"
diff --git a/help/help_mp-fr.h b/help/help_mp-fr.h
index 339674d352..9a8cbf2666 100644
--- a/help/help_mp-fr.h
+++ b/help/help_mp-fr.h
@@ -8,7 +8,7 @@
// ========================= Aide MPlayer ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Utilisation : mplayer [options] [url|répertoire/]fichier\n"
"\n"
"Options de base : (liste complète dans la page de man)\n"
diff --git a/help/help_mp-hu.h b/help/help_mp-hu.h
index bcea3f21cf..dac9dd29e7 100644
--- a/help/help_mp-hu.h
+++ b/help/help_mp-hu.h
@@ -9,7 +9,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Indítás: mplayer [opciók] [url|útvonal/]fájlnév\n"
"\n"
"Alapvető opciók: (az összes opció listájához lásd a man lapot)\n"
diff --git a/help/help_mp-it.h b/help/help_mp-it.h
index 5e7459d2bf..c747ae3a49 100644
--- a/help/help_mp-it.h
+++ b/help/help_mp-it.h
@@ -8,7 +8,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Uso: mplayer [opzioni] [url|percorso/]nome_file\n"
"\n"
"Opzioni di base: (vedi la pagina man per la lista completa)\n"
diff --git a/help/help_mp-ja.h b/help/help_mp-ja.h
index 7fd1c0b2b2..61aa98a765 100644
--- a/help/help_mp-ja.h
+++ b/help/help_mp-ja.h
@@ -6,7 +6,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"使ã„æ–¹: mplayer [オプション] [url|パス/]ファイルå\n"
"\n"
"基本的ãªã‚ªãƒ—ション: (man page ã«å…¨ã¦ç¶²ç¾…ã•ã‚Œã¦ã„ã¾ã™)\n"
diff --git a/help/help_mp-ko.h b/help/help_mp-ko.h
index 6a9a13066f..7d883a35dd 100644
--- a/help/help_mp-ko.h
+++ b/help/help_mp-ko.h
@@ -4,7 +4,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"사용법: mplayer [ì„ íƒì‚¬í•­] [url|경로/]파ì¼ëª…\n"
"\n"
"기본 ì„ íƒì‚¬í•­: (ì „ì²´ 목ë¡ì€ man 페ì´ì§€ 참조)\n"
diff --git a/help/help_mp-mk.h b/help/help_mp-mk.h
index fb0c6fc872..a65ea9d86c 100644
--- a/help/help_mp-mk.h
+++ b/help/help_mp-mk.h
@@ -5,7 +5,7 @@
// ========================= MPlayer Помош ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Употреба: mplayer [опции] [url|патека/]ИмеÐаДатотеката\n"
"\n"
"ОÑновни Опции: (комплетна лиÑта на man Ñтраницата)\n"
diff --git a/help/help_mp-nb.h b/help/help_mp-nb.h
index 9e6c860c12..c42072846a 100644
--- a/help/help_mp-nb.h
+++ b/help/help_mp-nb.h
@@ -4,7 +4,7 @@
// ========================= MPlayer hjelp ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Bruk: mplayer [valg] [sti/]filnavn\n"
"\n"
"Valg:\n"
diff --git a/help/help_mp-nl.h b/help/help_mp-nl.h
index dabb187f8e..9171a03954 100644
--- a/help/help_mp-nl.h
+++ b/help/help_mp-nl.h
@@ -3,7 +3,7 @@
//synced with help_mp-en.h revision 1.152
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Gebruik: mplayer [opties] [url|pad/]bestandsnaam\n"
"\n"
"Basis-opties: (volledige lijst in de man-pagina's)\n"
diff --git a/help/help_mp-pl.h b/help/help_mp-pl.h
index 7d09950edb..14191d1e8f 100644
--- a/help/help_mp-pl.h
+++ b/help/help_mp-pl.h
@@ -6,7 +6,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Użycie: mplayer [opcje] [url|ścieżka/]plik\n"
"\n"
"Podstawowe opcje: (pełna lista dostępna na stronie man)\n"
diff --git a/help/help_mp-pt_BR.h b/help/help_mp-pt_BR.h
index 8cc56a1880..bcb6eeff34 100644
--- a/help/help_mp-pt_BR.h
+++ b/help/help_mp-pt_BR.h
@@ -6,7 +6,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Uso: mplayer [opções] [url|caminho/]nome-do-arquivo\n"
"\n"
"Opções básicas: (lista completa na página do manual)\n"
diff --git a/help/help_mp-ro.h b/help/help_mp-ro.h
index 7da2fbf5f0..499a470c4f 100644
--- a/help/help_mp-ro.h
+++ b/help/help_mp-ro.h
@@ -9,7 +9,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Folosire: mplayer [opþiuni] [url|cale/]numefiºier\n"
"\n"
"Opþiuni principale: (lista completã în pagina man)\n"
diff --git a/help/help_mp-ru.h b/help/help_mp-ru.h
index d9906b1d5e..97152a4bf8 100644
--- a/help/help_mp-ru.h
+++ b/help/help_mp-ru.h
@@ -8,7 +8,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"ИÑпользование: mplayer [опции] [URL|путь/]имÑ_файла\n"
"\n"
"Базовые опции: (полный ÑпиÑок Ñм. на man-Ñтранице)\n"
diff --git a/help/help_mp-sk.h b/help/help_mp-sk.h
index ed54ec2492..875adedf2c 100644
--- a/help/help_mp-sk.h
+++ b/help/help_mp-sk.h
@@ -7,7 +7,7 @@
#ifdef HELP_MP_DEFINE_STATIC
// Preklad do slovenÄiny
-static char help_text[]=
+static const char help_text[]=
"Použitie: mplayer [prepínaÄe] [url|cesta/]menosúboru\n"
"\n"
"Základné prepínaÄe: (Kompletný zoznam nájdete v man stránke)\n"
diff --git a/help/help_mp-sv.h b/help/help_mp-sv.h
index 6ce5f43e13..79e624b924 100644
--- a/help/help_mp-sv.h
+++ b/help/help_mp-sv.h
@@ -4,7 +4,7 @@
// ========================= MPlayer hjälp ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Användning: mplayer [argument] [url|sökväg/]filnamn\n"
"\n"
"Grundläggande argument: (komplett lista återfinns i `man mplayer`)\n"
diff --git a/help/help_mp-tr.h b/help/help_mp-tr.h
index 23b34a81f8..ae7b57c4d9 100644
--- a/help/help_mp-tr.h
+++ b/help/help_mp-tr.h
@@ -7,7 +7,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"Kullanım: mplayer [seçenekler] [adres|yol/]dosya adı\n"
"\n"
"Genel seçenekler: (Tüm seçenekler için man sayfalarına bakınız)\n"
diff --git a/help/help_mp-uk.h b/help/help_mp-uk.h
index 97208d0353..359e74d4aa 100644
--- a/help/help_mp-uk.h
+++ b/help/help_mp-uk.h
@@ -1,12 +1,13 @@
-/* Translated by: Volodymyr M. Lisivka <lvm@mystery.lviv.net>,
- Andriy Gritsenko <andrej@lucky.net>
- sevenfourk <sevenfourk@gmail.com>
- Was synced with help_mp-en.h: rev 1.105
+// Translated by: Volodymyr M. Lisivka <lvm@mystery.lviv.net>,
+// Andriy Gritsenko <andrej@lucky.net>
+// sevenfourk <sevenfourk@gmail.com>
-========================= MPlayer help =========================== */
+// Was synced with help_mp-en.h: r28450
+
+// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"ЗапуÑк: mplayer [опції] [path/]filename\n"
"\n"
"Опції:\n"
@@ -95,7 +96,7 @@ static char help_text[]=
#define MSGTR_NoGui "MPlayer був Ñкомпільований БЕЗ підтримки GUI!\n"
#define MSGTR_GuiNeedsX "MPlayer GUI вимагає X11!\n"
-#define MSGTR_Playing "ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ %s\n"
+#define MSGTR_Playing "\nÐŸÑ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ %s\n"
#define MSGTR_NoSound "Ðудіо: без звуку!!!\n"
#define MSGTR_FPSforced "ПримуÑово змінена кількіÑÑ‚ÑŒ кадрів на Ñекунду на %5.3f (ftime: %5.3f)\n"
#define MSGTR_CompiledWithRuntimeDetection "Скомпільвано з автовизначеннÑм CPU - УВÐГР- це не оптимально!\nÐ”Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÐºÑ€Ð°Ñ‰Ð¸Ñ… результатів перекомпілюйте MPlayer з --disable-runtime-cpudetection\n"
@@ -172,6 +173,7 @@ static char help_text[]=
#define MSGTR_DvdnavNavSeekDone "ÐŸÐ¾Ð´Ñ–Ñ DVDNAV: Nav Seek зроблено\n"
#define MSGTR_MenuCall "Виклик меню\n"
+// --- edit decision lists
#define MSGTR_EdlOutOfMem "Ðе можу виділити доÑтатньо пам'ÑÑ‚Ñ– Ð´Ð»Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… EDL.\n"
#define MSGTR_EdlRecordsNo "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ %d EDL дій.\n"
#define MSGTR_EdlQueueEmpty "Ðемає дій EDL Ñкі треба виконати.\n"
@@ -201,6 +203,7 @@ static char help_text[]=
#define MSGTR_OSDAngle "Кут: %d/%d"
// property values
+#define MSGTR_Enabled "увімкнено"
#define MSGTR_EnabledEdl "увімкнено (EDL)"
#define MSGTR_Disabled "вимкнено"
#define MSGTR_HardFrameDrop "інтенÑивний"
@@ -266,6 +269,8 @@ static char help_text[]=
#define MSGTR_FlushingVideoFrames "\nЗкидую кадри відео.\n"
#define MSGTR_FiltersHaveNotBeenConfiguredEmptyFile "Фільтри не було налаштовано! Порожній файл?\n"
#define MSGTR_RecommendedVideoBitrate "Рекомендований бітрейт Ð´Ð»Ñ %s CD: %d\n"
+#define MSGTR_VideoStreamResult "\nВідео потік: %8.3f кбіт/Ñ (%d Б/Ñ) розмір: %"PRIu64" байт(ів) %5.3f Ñек %d кадрів\n"
+#define MSGTR_AudioStreamResult "\nÐудіо потік: %8.3f кбіт/Ñ (%d Б/Ñ) розмір: %"PRIu64" байт(ів) %5.3f Ñек\n"
#define MSGTR_EdlSkipStartEndCurrent "EDL SKIP: Початок: %.2f Кінець: %.2f Поточна: V: %.2f A: %.2f \r"
#define MSGTR_OpenedStream "вдало: формат: %d дані: 0x%X - 0x%x\n"
#define MSGTR_VCodecFramecopy "відеокодек: ÐºÐ¾Ð¿Ñ–Ñ ÐºÐ°Ð´Ñ€Ñ–Ð² (%dx%d %dbpp fourcc=%x)\n"
@@ -403,22 +408,19 @@ static char help_text[]=
#define MSGTR_CouldntOpenCodec "Ðе можу відкрити кодек %s, br=%d.\n"
#define MSGTR_CantCopyAudioFormat "Ðудіо формат 0x%x не викориÑтовуєтьÑÑ Ð· '-oac copy', Ñпробуйте\n'-oac pcm' заміÑÑ‚ÑŒ чи викориÑтайте '-fafmttag' Ð´Ð»Ñ Ð¹Ð¾Ð³Ð¾ перевизначеннÑ.\n"
-#define MSGTR_VideoStreamResult "\nВідео потік: %8.3f кбіт/Ñ (%d Б/Ñ) розмір: %"PRIu64" байт %5.3f Ñекунд %d кадрів\n"
-#define MSGTR_AudioStreamResult "\nÐудіо потік: %8.3f кбіт/Ñ (%d Б/Ñ) розмір: %"PRIu64" байт %5.3f Ñекунд\n"
-
// cfg-mencoder.h:
#define MSGTR_MEncoderMP3LameHelp "\n\n"\
" vbr=<0-4> метод змінного бітрейту\n"\
-" 0: cbr\n"\
-" 1: mt\n"\
-" 2: rh(default)\n"\
-" 3: abr\n"\
-" 4: mtrh\n"\
+" 0: cbr (поÑтійний бітрейт)\n"\
+" 1: mt (Mark Taylor VBR алгоритм)\n"\
+" 2: rh (Robert Hegemann VBR алгоритм - зомовчуваннÑ)\n"\
+" 3: abr (Ñередній бітрейт)\n"\
+" 4: mtrh (Mark Taylor Robert Hegemann VBR алгоритм)\n"\
"\n"\
-" abr приблизний бітрейт\n"\
+" abr Ñередній бітрейт\n"\
"\n"\
" cbr поÑтійний бітрейт\n"\
-" Forces also CBR mode encoding on subsequent ABR presets modes\n"\
+" Також форÑує CBR режим ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ñлідуючих ABR режимах\n"\
"\n"\
" br=<0-1024> вказати бітрейт в kBit (тільки Ð´Ð»Ñ CBR та ABR)\n"\
"\n"\
@@ -426,11 +428,11 @@ static char help_text[]=
"\n"\
" aq=<0-9> алгорітмична ÑкіÑÑ‚ÑŒ (0-краща/повільніша 9-гірша/швидкіша)\n"\
"\n"\
-" ratio=<1-100> Ñтупень ÑтиÑненнÑ\n"\
+" ratio=<1-100> рівень ÑтиÑненнÑ\n"\
"\n"\
-" vol=<0-10> set audio input gain\n"\
+" vol=<0-10> вÑтановити поÑÐ¸Ð»ÐµÐ½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ аудіо\n"\
"\n"\
-" mode=<0-3> (Ñкщо не вказано: auto)\n"\
+" mode=<0-3> (замовчуваннÑ: auto)\n"\
" 0: stereo\n"\
" 1: joint-stereo\n"\
" 2: dualchannel\n"\
@@ -441,200 +443,152 @@ static char help_text[]=
" 1: all\n"\
" 2: adjust\n"\
"\n"\
-" fast переходити на швидке ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸ поÑлідовних VBR presets modes,\n"\
+" fast Переходити на швидке ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸ поÑлідовних VBR presets modes,\n"\
" трохи менша ÑкіÑÑ‚ÑŒ та більші бітрейти.\n"\
"\n"\
" preset=<value> запровадити найбільші уÑтановки ÑкоÑÑ‚Ñ–.\n"\
-" ÑереднÑ: VBR кодуваннÑ, добра ÑкіÑÑ‚ÑŒ\n"\
+" ÑереднÑ: VBR кодуваннÑ, добра ÑкіÑÑ‚ÑŒ\n"\
" (150-180 kbps бітрейт)\n"\
-" Ñтандарт: VBR кодуваннÑ, виÑока ÑкіÑÑ‚ÑŒ\n"\
+" Ñтандарт: VBR кодуваннÑ, виÑока ÑкіÑÑ‚ÑŒ\n"\
" (170-210 kbps бітрейт)\n"\
-" виÑока: VBR кодуваннÑ, дуже виÑока ÑкіÑÑ‚ÑŒ\n"\
+" виÑока: VBR кодуваннÑ, дуже виÑока ÑкіÑÑ‚ÑŒ\n"\
" (200-240 kbps бітрейт)\n"\
-" божевільна: CBR кодуваннÑ, найвища наÑтройка ÑкоÑÑ‚Ñ–\n"\
+" найкраща: CBR кодуваннÑ, найвища ÑкоÑÑ‚ÑŒ\n"\
" (320 kbps бітрейт)\n"\
-" <8-320>: ABR ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð· вказаним приблизним бітрейтом.\n\n"
+" <8-320>: ABR ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð· вказаним приблизним бітрейтом.\n\n"
-// open.c, stream.c:
-#define MSGTR_CdDevNotfound "Компактовід \"%s\" не знайдений!\n"
-#define MSGTR_ErrTrackSelect "Помилка вибору треку на VCD!"
-#define MSGTR_ReadSTDIN "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· stdin...\n"
-#define MSGTR_UnableOpenURL "Ðе можу відкрити URL: %s\n"
-#define MSGTR_ConnToServer "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· Ñервером: %s\n"
-#define MSGTR_FileNotFound "Файл не знайдений: '%s'\n"
+// codec-cfg.c
+#define MSGTR_DuplicateFourcc "подвоєні FourCC"
+#define MSGTR_TooManyFourccs "забагато FourCCs/форматів..."
+#define MSGTR_ParseError "помилка у ÑинтакÑичному розборі"
+#define MSGTR_ParseErrorFIDNotNumber "помилка у ÑинтакÑичному розборі (ID формату не Ñ” номером?)"
+#define MSGTR_ParseErrorFIDAliasNotNumber "помилка у ÑинтакÑичному розборі (ID ім'Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ не Ñ” номером?)"
+#define MSGTR_DuplicateFID "подвоєний ID формату"
+#define MSGTR_TooManyOut "забагато вихідних форматів..."
+#define MSGTR_InvalidCodecName "\nкодек(%s) ім'Ñ Ð½ÐµÐ²Ñ–Ñ€Ð½Ðµ!\n"
+#define MSGTR_CodecLacksFourcc "\nкодек(%s) не має FourCC/фармат!\n"
+#define MSGTR_CodecLacksDriver "\nкодек(%s) не має драйверу!\n"
+#define MSGTR_CodecNeedsDLL "\nкодек(%s) потребує 'dll'!\n"
+#define MSGTR_CodecNeedsOutfmt "\nкодек(%s) потребує 'outfmt'!\n"
+#define MSGTR_CantAllocateComment "Ðе можу виділити пам'ÑÑ‚ÑŒ Ð´Ð»Ñ ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ñ. "
+#define MSGTR_GetTokenMaxNotLessThanMAX_NR_TOKEN "get_token(): max >= MAX_MR_TOKEN!"
+#define MSGTR_ReadingFile "Читаю %s: "
+#define MSGTR_CantOpenFileError "Ðе можу відкрити '%s': %s\n"
+#define MSGTR_CantGetMemoryForLine "Ðе можу виділити пам'ÑÑ‚ÑŒ Ð´Ð»Ñ 'line': %s\n"
+#define MSGTR_CantReallocCodecsp "Ðе можу виконати realloc Ð´Ð»Ñ '*codecsp': %s\n"
+#define MSGTR_CodecNameNotUnique "Ðазва кодеку '%s' не унікальна."
+#define MSGTR_CantStrdupName "Ðе можу виконати strdup -> 'name': %s\n"
+#define MSGTR_CantStrdupInfo "Ðе можу виконати strdup -> 'info': %s\n"
+#define MSGTR_CantStrdupDriver "Ðе можу виконати strdup -> 'driver': %s\n"
+#define MSGTR_CantStrdupDLL "Ðе можу виконати strdup -> 'dll': %s"
+#define MSGTR_AudioVideoCodecTotals "%d аудіо & %d відео кодеки\n"
+#define MSGTR_CodecDefinitionIncorrect "Ðеправильно визначено кодек."
+#define MSGTR_OutdatedCodecsConf "Цей codecs.conf заÑтарий та неÑуміÑний із цим релізом MPlayer!"
-#define MSGTR_SMBFileNotFound "Помилка Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð· мережі: '%s'\n"
-#define MSGTR_SMBNotCompiled "MPlayer не має вкомпільованої підтримки SMB\n"
+// fifo.c
+#define MSGTR_CannotMakePipe "Ðе можу Ñтворити канал!\n"
-#define MSGTR_CantOpenDVD "Ðе зміг відкрити DVD: %s (%s)\n"
-#define MSGTR_DVDnumTitles "Є %d доріжок з титрами на цьому DVD.\n"
-#define MSGTR_DVDinvalidTitle "ÐеприпуÑтимий номер доріжки титрів на DVD: %d\n"
-#define MSGTR_DVDnumChapters "Є %d розділів на цій доріжці з DVD титрами.\n"
-#define MSGTR_DVDinvalidChapter "ÐеприпуÑтимий номер DVD розділу: %d\n"
-#define MSGTR_DVDnumAngles "Є %d кутів на цій доріжці з DVD титрами.\n"
-#define MSGTR_DVDinvalidAngle "ÐеприпуÑтимий номер DVD кута: %d\n"
-#define MSGTR_DVDnoIFO "Ðе можу відкрити IFO файл Ð´Ð»Ñ DVD титрів %d.\n"
-#define MSGTR_DVDnoVOBs "Ðе можу відкрити титри VOBS (VTS_%02d_1.VOB).\n"
+// parser-mecmd.c, parser-mpcmd.c
+#define MSGTR_NoFileGivenOnCommandLine "'--' означає кінець опцій, але не було вказано назви файлу у команд. Ñ€Ñдку.\n"
+#define MSGTR_TheLoopOptionMustBeAnInteger "ÐžÐ¿Ñ†Ñ–Ñ loop має бути цілим чиÑлом: %s\n"
+#define MSGTR_UnknownOptionOnCommandLine "Ðевідома Ð¾Ð¿Ñ†Ñ–Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´. Ñ€Ñдку: -%s\n"
+#define MSGTR_ErrorParsingOptionOnCommandLine "Помилка аналізу опції команд. Ñ€Ñдку: -%s\n"
+#define MSGTR_InvalidPlayEntry "Ðевірний елемент Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ %s\n"
+#define MSGTR_NotAnMEncoderOption "-%s не є опцією MEncoder \n"
+#define MSGTR_NoFileGiven "Файл не вказано\n"
-// demuxer.c, demux_*.c:
-#define MSGTR_AudioStreamRedefined "ПопередженнÑ! Заголовок аудіо потоку %d перевизначений!\n"
-#define MSGTR_VideoStreamRedefined "ПопередженнÑ! Заголовок відео потоку %d перевизначений!\n"
-#define MSGTR_TooManyAudioInBuffer "\nDEMUXER: Ðадто багато (%d, %d байтів) аудіо пакетів у буфері!\n"
-#define MSGTR_TooManyVideoInBuffer "\nDEMUXER: Ðадто багато (%d, %d байтів) відео пакетів у буфері!\n"
-#define MSGTR_MaybeNI "(можливо ви програєте неперемежений потік/файл або невдалий кодек)\n"
-#define MSGTR_SwitchToNi "\nДетектовано погано перемежений AVI файл - переходжу в -ni режим...\n"
-#define MSGTR_Detected_XXX_FileFormat "Знайдений %s формат файлу!\n"
-#define MSGTR_DetectedAudiofile "Ðудіо файл детектовано.\n"
-#define MSGTR_NotSystemStream "Ðе в форматі MPEG System Stream... (можливо, Transport Stream?)\n"
-#define MSGTR_FormatNotRecognized "========= Вибачте, формат цього файлу не розпізнаний чи не підтримуєтьÑÑ ===========\n"\
- "===== Якщо це AVI, ASF або MPEG потік, будь лаÑка зв'ÑжітьÑÑ Ð· автором! ======\n"
-#define MSGTR_MissingVideoStream "Відео потік не знайдений!\n"
-#define MSGTR_MissingAudioStream "Ðудіо потік не знайдений... -> програю без звуку\n"
-#define MSGTR_MissingVideoStreamBug "Відео потік загублений!? Зв'ÑжітьÑÑ Ð· автором, це мабуть помилка :(\n"
-
-#define MSGTR_DoesntContainSelectedStream "demux: файл не міÑтить обраний аудіо або відео потік\n"
+// m_config.c
+#define MSGTR_SaveSlotTooOld "Знайдений Ñлот Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð°Ñтарий з lvl %d: %d !!!\n"
+#define MSGTR_InvalidCfgfileOption "ÐžÐ¿Ñ†Ñ–Ñ %s не може бути викориÑтана у файлі конфігурації.\n"
+#define MSGTR_InvalidCmdlineOption "ÐžÐ¿Ñ†Ñ–Ñ %s не може бути викориÑтана у команд. Ñ€Ñдку.\n"
+#define MSGTR_InvalidSuboption "Помилка: Ð¾Ð¿Ñ†Ñ–Ñ '%s' не має Ñубопцій '%s'.\n"
+#define MSGTR_MissingSuboptionParameter "Помилка: в Ñубопції '%s' опції '%s' повинен бути параметр!\n"
+#define MSGTR_MissingOptionParameter "Помилка: Ð¾Ð¿Ñ†Ñ–Ñ '%s' повинна мати параметр!\n"
+#define MSGTR_OptionListHeader "\n І'Ð¼Ñ Ð¢Ð¸Ð¿ Мін ÐœÐ°ÐºÑ Ð—Ð°Ð³Ð°Ð»ÑŒÐ½ CL Конф\3n\n"
+#define MSGTR_TotalOptions "\nЗагалом: %d опцій\n"
+#define MSGTR_ProfileInclusionTooDeep "ПОПЕРЕДЖЕÐÐЯ: Ð’ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ„Ð°Ð¹Ð»Ñƒ дуже глибоко.\n"
+#define MSGTR_NoProfileDefined "Ðе визначено профайлів.\n"
+#define MSGTR_AvailableProfiles "ДоÑтупні профайлиs:\n"
+#define MSGTR_UnknownProfile "Ðевідомий профайл '%s'.\n"
+#define MSGTR_Profile "Профайл %s: %s\n"
-#define MSGTR_NI_Forced "ПримуÑово вибраний"
-#define MSGTR_NI_Detected "Знайдений"
-#define MSGTR_NI_Message "%s ÐЕПЕРЕМЕЖЕÐИЙ формат AVI файлу!\n"
+// m_property.c
+#define MSGTR_PropertyListHeader "\n Ðазва Тип Мін МакÑ\n\n"
+#define MSGTR_TotalProperties "\nЗагалом: %d влаÑтивоÑтей\n"
-#define MSGTR_UsingNINI "ВикориÑÑ‚Ð°Ð½Ð½Ñ ÐЕПЕРЕМЕЖЕÐОГО або пошкодженого формату AVI файлу!\n"
-#define MSGTR_CouldntDetFNo "Ðе зміг визначити чиÑло кадрів (Ð´Ð»Ñ Ð°Ð±Ñолютного перенеÑеннÑ)\n"
-#define MSGTR_CantSeekRawAVI "Ðе можу переміÑтитиÑÑ Ñƒ непроіндекÑованому потоці .AVI! (вимагаєтьÑÑ Ñ–Ð½Ð´ÐµÐºÑ, Ñпробуйте з ключом -idx!)\n"
-#define MSGTR_CantSeekFile "Ðе можу переміщуватиÑÑ Ñƒ цьому файлі!\n"
+// loader/ldt_keeper.c
+#define MSGTR_LOADER_DYLD_Warning "ПОПЕРЕДЖЕÐÐЯ: ÐамагаюÑÑŒ викориÑтати DLL кодеки але змінна Ñередовища\n DYLD_BIND_AT_LAUNCH не вÑтановлена. Це здаєтьÑÑ Ð¿Ð¾Ð»Ð°Ð¼ÐºÐ°.\n"
-#define MSGTR_MOVcomprhdr "MOV: СтиÑнуті заголовки (поки що) не підтримуютьÑÑ!\n"
-#define MSGTR_MOVvariableFourCC "MOV: ПопередженнÑ! Знайдено перемінний FOURCC!?\n"
-#define MSGTR_MOVtooManyTrk "MOV: ПопередженнÑ! надто багато треків!"
-#define MSGTR_FoundAudioStream "==> Знайдено аудіо потік: %d\n"
-#define MSGTR_FoundVideoStream "==> Знайдено відео потік: %d\n"
-#define MSGTR_DetectedTV "Детектовано ТВ! ;-)\n"
-#define MSGTR_ErrorOpeningOGGDemuxer "Ðеможливо відкрити ogg demuxer.\n"
-#define MSGTR_ASFSearchingForAudioStream "ASF: Пошук аудіо потоку (id:%d).\n"
-#define MSGTR_CannotOpenAudioStream "Ðеможливо відкрити аудіо потік: %s\n"
-#define MSGTR_CannotOpenSubtitlesStream "Ðеможливо відкрити потік Ñубтитрів: %s\n"
-#define MSGTR_OpeningAudioDemuxerFailed "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ аудіо demuxer: %s\n"
-#define MSGTR_OpeningSubtitlesDemuxerFailed "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ demuxer Ñубтитрів: %s\n"
-#define MSGTR_TVInputNotSeekable "TV input is not seekable! (Seeking will probably be for changing channels ;)\n"
-#define MSGTR_ClipInfo "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ ÐºÐ»Ñ–Ð¿Ñƒ:\n"
-
-
-// dec_video.c & dec_audio.c:
-#define MSGTR_CantOpenCodec "Ðе зміг відкрити кодек\n"
-#define MSGTR_CantCloseCodec "Ðе зміг закрити кодек\n"
-
-#define MSGTR_MissingDLLcodec "ПОМИЛКÐ: Ðе зміг відкрити необхідний DirectShow кодек: %s\n"
-#define MSGTR_ACMiniterror "Ðе зміг завантажити чи ініціалізувати Win32/ACM AUDIO кодек (загублений DLL файл?)\n"
-#define MSGTR_MissingLAVCcodec "Ðе можу знайти кодек \"%s\" у libavcodec...\n"
-
-#define MSGTR_MpegNoSequHdr "MPEG: FATAL: КІÐЕЦЬ ФÐЙЛУ при пошуку поÑлідовноÑÑ‚Ñ– заголовків\n"
-#define MSGTR_CannotReadMpegSequHdr "FATAL: Ðе можу читати поÑлідовніÑÑ‚ÑŒ заголовків!\n"
-#define MSGTR_CannotReadMpegSequHdrEx "FATAL: Ðе мочу читати Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾ÑлідовноÑÑ‚Ñ– заголовків!\n"
-#define MSGTR_BadMpegSequHdr "MPEG: Погана поÑлідовніÑÑ‚ÑŒ заголовків!\n"
-#define MSGTR_BadMpegSequHdrEx "MPEG: Погане Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾ÑлідовноÑÑ‚Ñ– заголовків!\n"
-
-#define MSGTR_ShMemAllocFail "Ðе можу захопити загальну пам'ÑÑ‚ÑŒ\n"
-#define MSGTR_CantAllocAudioBuf "Ðе можу захопити вихідний буфер аудіо\n"
-
-#define MSGTR_UnknownAudio "Ðевідомий чи загублений аудіо формат, програю без звуку\n"
-
-#define MSGTR_UsingExternalPP "[PP] ВикориÑтовую зовнішній фільтр обробки, Ð¼Ð°ÐºÑ q = %d.\n"
-#define MSGTR_UsingCodecPP "[PP] ВикориÑтовую обробку кодека, Ð¼Ð°ÐºÑ q = %d.\n"
-#define MSGTR_VideoAttributeNotSupportedByVO_VD "Відео атрибут '%s' не підтримуєтьÑÑ Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¸Ð¼Ð¸ vo & vd.\n"
-#define MSGTR_VideoCodecFamilyNotAvailableStr "Запрошений драйвер відео кодеку [%s] (vfm=%s) недоÑÑжний (ввімкніть його під Ñ‡Ð°Ñ ÐºÐ¾Ð¼Ð¿Ñ–Ð»Ñції)\n"
-#define MSGTR_AudioCodecFamilyNotAvailableStr "Запрошений драйвер аудіо кодеку [%s] (afm=%s) недоÑÑжний (ввімкніть його під Ñ‡Ð°Ñ ÐºÐ¾Ð¼Ð¿Ñ–Ð»Ñції)\n"
-#define MSGTR_OpeningVideoDecoder "Відкриваю відео декодер: [%s] %s\n"
-#define MSGTR_OpeningAudioDecoder "Відкриваю аудіо декодер: [%s] %s\n"
-#define MSGTR_UninitVideoStr "Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾: %s\n"
-#define MSGTR_UninitAudioStr "Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð°ÑƒÐ´Ñ–Ð¾: %s\n"
-#define MSGTR_VDecoderInitFailed "Збій ініціалізації VDecoder :(\n"
-#define MSGTR_ADecoderInitFailed "Збій ініціалізації ADecoder :(\n"
-#define MSGTR_ADecoderPreinitFailed "Збій Ð¿Ñ–Ð´Ð³Ð¾Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ADecoder :(\n"
-#define MSGTR_AllocatingBytesForInputBuffer "dec_audio: РозподілÑÑŽ %d байт вхідному буферу\n"
-#define MSGTR_AllocatingBytesForOutputBuffer "dec_audio: РозподілÑÑŽ %d + %d = %d байт вихідному буферу\n"
-
-// LIRC:
-#define MSGTR_SettingUpLIRC "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ lirc...\n"
-#define MSGTR_LIRCopenfailed "Ðевдале Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ lirc!\n"
-#define MSGTR_LIRCcfgerr "Ðевдале Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ конфігурації LIRC %s!\n"
-
-// vf.c
-#define MSGTR_CouldNotFindVideoFilter "Ðеможливо знайти відео фільтр '%s'\n"
-#define MSGTR_CouldNotOpenVideoFilter "Ðеможливо відкрити відео фільтр '%s'\n"
-#define MSGTR_OpeningVideoFilter "Відкриваю відео фільтр: "
-//-----------------------------
-#define MSGTR_CannotFindColorspace "Ðе можу підібрати загальну Ñхему кольорів, навіть додавши 'scale' :(\n"
-
-// vd.c
-#define MSGTR_CodecDidNotSet "VDec: Кодек не вÑтановив sh->disp_w та sh->disp_h, Ñпробую обійти це.\n"
-#define MSGTR_VoConfigRequest "VDec: vo config запит - %d x %d (preferred csp: %s)\n"
-#define MSGTR_CouldNotFindColorspace "Ðе можу підібрати підходÑщу Ñхему кольорів - повтор з -vf scale...\n"
-#define MSGTR_MovieAspectIsSet "Ð’Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñторін %.2f:1 - маÑштабую аби Ñкоректувати.\n"
-#define MSGTR_MovieAspectUndefined "Ð’Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñторін не вказано - маÑÑˆÑ‚Ð°Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ викориÑтовуєтьÑÑ.\n"
// ====================== GUI messages/buttons ========================
-#ifdef CONFIG_GUI
-
// --- labels ---
-#define MSGTR_About "Про програму"
+#define MSGTR_About "Про"
#define MSGTR_FileSelect "Вибрати файл..."
#define MSGTR_SubtitleSelect "Вибрати Ñубтитри..."
-#define MSGTR_OtherSelect "Вибір..."
-#define MSGTR_AudioFileSelect "Вибрати зовнішній аудіо канал..."
+#define MSGTR_OtherSelect "Вибрати..."
+#define MSGTR_AudioFileSelect "Вибрати іншу аудіо доріжку..."
#define MSGTR_FontSelect "Вибрати шрифт..."
+// Note: If you change MSGTR_PlayList please see if it still fits MSGTR_MENU_PlayList
#define MSGTR_PlayList "СпиÑок програваннÑ"
-#define MSGTR_Equalizer "Еквалайзер"
-#define MSGTR_SkinBrowser "ПереглÑдач жупанів"
-#define MSGTR_Network "ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð· мережі..."
-#define MSGTR_Preferences "ÐалаштуваннÑ"
-#define MSGTR_NoMediaOpened "Ðемає відкритого ноÑÑ–ÑŽ."
-#define MSGTR_VCDTrack "Доріжка VCD %d"
-#define MSGTR_NoChapter "No chapter"
-#define MSGTR_Chapter "Chapter %d"
-#define MSGTR_NoFileLoaded "Ðемає завантаженого файлу."
+#define MSGTR_Equalizer "Ðквалайзер"
+#define MSGTR_ConfigureEqualizer "Ðалаштувати Ðквалайзер"
+#define MSGTR_SkinBrowser "ПереглÑдач Ñкінів"
+#define MSGTR_Network "Передача потоку..."
+// Note: If you change MSGTR_Preferences please see if it still fits MSGTR_MENU_Preferences
+#define MSGTR_Preferences "ШалаштуваннÑ"
+#define MSGTR_AudioPreferences "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð°ÑƒÐ´Ñ–Ð¾ драйверу"
+#define MSGTR_NoMediaOpened "ÐоÑій не відкритий."
+#define MSGTR_VCDTrack "VCD доріжка %d"
+#define MSGTR_NoChapter "Без розділу"
+#define MSGTR_Chapter "Розділ %d"
+#define MSGTR_NoFileLoaded "Файл не завантжено."
// --- buttons ---
-#define MSGTR_Ok "Так"
-#define MSGTR_Cancel "СкаÑувати"
+#define MSGTR_Ok "OK"
+#define MSGTR_Cancel "Відміна"
#define MSGTR_Add "Додати"
#define MSGTR_Remove "Видалити"
-#define MSGTR_Clear "ВичиÑтити"
-#define MSGTR_Config "Конфігурувати"
-#define MSGTR_ConfigDriver "Конфігурувати драйвер"
-#define MSGTR_Browse "ПроглÑдати"
+#define MSGTR_Clear "ОчиÑтити"
+#define MSGTR_Config "Ðалаштунки"
+#define MSGTR_ConfigDriver "Ðалаштувати драйвер"
+#define MSGTR_Browse "ДивитиÑÑŒ"
// --- error messages ---
-#define MSGTR_NEMDB "Вибачте, не виÑтачає пам'ÑÑ‚Ñ– Ð´Ð»Ñ Ð²Ñ–Ð´Ð¼Ð°Ð»ÑŒÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÑƒÑ„ÐµÑ€Ñƒ."
-#define MSGTR_NEMFMR "Вибачте, не виÑтачає пам'ÑÑ‚Ñ– Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¼ÐµÐ½ÑŽ."
-#define MSGTR_IDFGCVD "Вибачте, не знайдено відповідного до GUI вихідного відео драйверу."
-#define MSGTR_NEEDLAVC "Вибачте, ви не можете грати не-MPEG файли на вашому DXR3/H+ приÑтрої без перекодуваннÑ.\nБудь лаÑка, ввімкніть lavc в панелі ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€ÑƒÐ²Ð°Ð½Ð½Ñ DXR3/H+."
+#define MSGTR_NEMDB "Вибачте, не доÑтатньо пам'ÑÑ‚Ñ– Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ€Ð¸Ñовки буферу."
+#define MSGTR_NEMFMR "Вибачте, не доÑтатньо пам'ÑÑ‚Ñ– Ð´Ð»Ñ Ñ€ÐµÐ½Ð´ÐµÑ€ÐµÐ½Ð½Ñ Ð¼ÐµÐ½ÑŽ."
+#define MSGTR_IDFGCVD "Вибачте, не знаходжу відео драйвер Ð´Ð»Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ GUI."
+#define MSGTR_NEEDLAVC "Вибачте, ви не можете програвати не MPEG файли з вашим DXR3/H+ приÑтроєм без перекодуваннÑ.\nВключіть lavc у нашалтунки DXR3/H+."
+#define MSGTR_UNKNOWNWINDOWTYPE "Знайдено невідомий тип вікна..."
// --- skin loader error messages
-#define MSGTR_SKIN_ERRORMESSAGE "[жупан] помилка у файлі конфігурації жупана, Ñ€Ñдок %d : %s"
-#define MSGTR_SKIN_WARNING1 "[жупан] попередженнÑ: у файлі конфігурації жупана, Ñ€Ñдок %d: widget знайдений але до цього не знайдено \"section\" (%s)"
-#define MSGTR_SKIN_WARNING2 "[жупан] попередженнÑ: у файлі конфігурації жупана, Ñ€Ñдок %d: widget знайдений але до цього не знайдено \"subsection\" (%s)"
-#define MSGTR_SKIN_WARNING3 "[жупан] попередженнÑ: у файлі конфігурації жупана, Ñ€Ñдок %d: цей widget (%s) не підтримує цю subsection"
-#define MSGTR_SKIN_BITMAP_16bit "Глибина кольору бітової карти у 16 біт Ñ– менше не підтримуєтьÑÑ (%s).\n"
-#define MSGTR_SKIN_BITMAP_FileNotFound "файл не знайдений (%s)\n"
-#define MSGTR_SKIN_BITMAP_BMPReadError "помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ BMP (%s)\n"
-#define MSGTR_SKIN_BITMAP_TGAReadError "помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ TGA (%s)\n"
-#define MSGTR_SKIN_BITMAP_PNGReadError "помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ PNG (%s)\n"
-#define MSGTR_SKIN_BITMAP_RLENotSupported "RLE запакований TGA не підтримуєтьÑÑ (%s)\n"
-#define MSGTR_SKIN_BITMAP_UnknownFileType "невідомий тип файлу (%s)\n"
-#define MSGTR_SKIN_BITMAP_ConversionError "помилка Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ 24-біт у 32-біт (%s)\n"
+#define MSGTR_SKIN_ERRORMESSAGE "[Ñкін] помилка у налаштунках Ñкіна у Ñ€Ñдку %d: %s"
+#define MSGTR_SKIN_WARNING1 "[Ñкін] попередженнÑ: у налаштунках у Ñ€Ñдку %d:\nвіджет (%s) знайдено але \"Ñекцію\" не знайдено"
+#define MSGTR_SKIN_WARNING2 "[Ñкін] попередженнÑ: у налаштунках у Ñ€Ñдку %d:\nвіджет (%s) знайдено але \"підÑекцію\" не знайдено"
+#define MSGTR_SKIN_WARNING3 "[Ñкін] попередженнÑ: у налаштунках у Ñ€Ñдку %d:\nÑ†Ñ Ð¿Ñ–Ð´ÑÐµÐºÑ†Ñ–Ñ Ð½Ðµ підтримуєтьÑÑ Ð²Ñ–Ð´Ð¶ÐµÑ‚Ð¾Ð¼ (%s)"
+#define MSGTR_SKIN_SkinFileNotFound "[skin] файл ( %s ) не знайдено.\n"
+#define MSGTR_SKIN_SkinFileNotReadable "[skin] файл ( %s ) не прочитати.\n"
+#define MSGTR_SKIN_BITMAP_16bit "Глибина матриці у 16 біт Ñ– менше не підтримуєтьÑÑ (%s).\n"
+#define MSGTR_SKIN_BITMAP_FileNotFound "Файл не знайдено (%s)\n"
+#define MSGTR_SKIN_BITMAP_BMPReadError "Помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ BMP (%s)\n"
+#define MSGTR_SKIN_BITMAP_TGAReadError "Помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ TGA (%s)\n"
+#define MSGTR_SKIN_BITMAP_PNGReadError "Помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ PNG (%s)\n"
+#define MSGTR_SKIN_BITMAP_RLENotSupported "RLE запакований у TGA не підримуєтьÑÑ (%s)\n"
+#define MSGTR_SKIN_BITMAP_UnknownFileType "тип файлу невідомий (%s)\n"
+#define MSGTR_SKIN_BITMAP_ConversionError "помилка ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð· 24 до 32 біт (%s)\n"
#define MSGTR_SKIN_BITMAP_UnknownMessage "невідоме повідомленнÑ: %s\n"
-#define MSGTR_SKIN_FONT_NotEnoughtMemory "не виÑтачає пам'ÑÑ‚Ñ–\n"
-#define MSGTR_SKIN_FONT_TooManyFontsDeclared "оголошено надто багато шрифтів\n"
-#define MSGTR_SKIN_FONT_FontFileNotFound "файл шрифту не знайдений\n"
-#define MSGTR_SKIN_FONT_FontImageNotFound "файл образів шрифту не знайдений\n"
-#define MSGTR_SKIN_FONT_NonExistentFontID "неіÑнуючий ідентифікатор шрифту (%s)\n"
+#define MSGTR_SKIN_FONT_NotEnoughtMemory "недоÑтатньо пам'ÑÑ‚Ñ–\n"
+#define MSGTR_SKIN_FONT_TooManyFontsDeclared "Вказано забагато шрифтів.\n"
+#define MSGTR_SKIN_FONT_FontFileNotFound "Файл шрифту не знайдено.\n"
+#define MSGTR_SKIN_FONT_FontImageNotFound "Font image file not found.\n"
+#define MSGTR_SKIN_FONT_NonExistentFontID "ідентифікатор шрифту не Ñ–Ñнує (%s)\n"
#define MSGTR_SKIN_UnknownParameter "невідомий параметр (%s)\n"
-#define MSGTR_SKIN_SKINCFG_SkinNotFound "Жупан не знайдено (%s).\n"
-#define MSGTR_SKIN_SKINCFG_SkinCfgReadError "Помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° конфігурації жупана (%s).\n"
-#define MSGTR_SKIN_LABEL "Жупани:"
+#define MSGTR_SKIN_SKINCFG_SkinNotFound "Скін не знайдено (%s).\n"
+#define MSGTR_SKIN_SKINCFG_SelectedSkinNotFound "Обраний Ñкін ( %s ) не знайдено, обираю 'default'...\n"
+#define MSGTR_SKIN_SKINCFG_SkinCfgReadError "помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñкіну (%s)\n"
+#define MSGTR_SKIN_LABEL "Скіни:"
-// --- gtk menus
+// --- GTK menus
#define MSGTR_MENU_AboutMPlayer "Про програму"
#define MSGTR_MENU_Open "Відкрити..."
#define MSGTR_MENU_PlayFile "Грати файл..."
@@ -651,6 +605,7 @@ static char help_text[]=
#define MSGTR_MENU_NextStream "ÐаÑтупний потік"
#define MSGTR_MENU_PrevStream "Попередній потік"
#define MSGTR_MENU_Size "Розмір"
+#define MSGTR_MENU_HalfSize "Half size"
#define MSGTR_MENU_NormalSize "Ðормальний розмір"
#define MSGTR_MENU_DoubleSize "Подвійний розмір"
#define MSGTR_MENU_FullScreen "Повний екран"
@@ -663,9 +618,11 @@ static char help_text[]=
#define MSGTR_MENU_None "(нема)"
#define MSGTR_MENU_Chapters "Розділи"
#define MSGTR_MENU_Chapter "Розділ %2d"
-#define MSGTR_MENU_AudioLanguages "Ðвто мова"
-#define MSGTR_MENU_SubtitleLanguages "Мова Ñубтитрів"
+#define MSGTR_MENU_AudioLanguages "Ðудіо мови"
+#define MSGTR_MENU_SubtitleLanguages "Мови Ñубтитрів"
+#define MSGTR_MENU_PlayList MSGTR_PlayList
#define MSGTR_MENU_SkinBrowser "ПереглÑдач жупанів"
+#define MSGTR_MENU_Preferences MSGTR_Preferences
#define MSGTR_MENU_Exit "Вихід..."
#define MSGTR_MENU_Mute "Тиша"
#define MSGTR_MENU_Original "Вихідний"
@@ -673,9 +630,12 @@ static char help_text[]=
#define MSGTR_MENU_AudioTrack "Ðудіо доріжка"
#define MSGTR_MENU_Track "Доріжка %d"
#define MSGTR_MENU_VideoTrack "Відео доріжка"
+#define MSGTR_MENU_Subtitles "Субтитри"
// --- equalizer
+// Note: If you change MSGTR_EQU_Audio please see if it still fits MSGTR_PREFERENCES_Audio
#define MSGTR_EQU_Audio "Ðудіо"
+// Note: If you change MSGTR_EQU_Video please see if it still fits MSGTR_PREFERENCES_Video
#define MSGTR_EQU_Video "Відео"
#define MSGTR_EQU_Contrast "КонтраÑÑ‚: "
#define MSGTR_EQU_Brightness "ЯÑкравіÑÑ‚ÑŒ: "
@@ -702,11 +662,14 @@ static char help_text[]=
#define MSGTR_PLAYLIST_DirectoryTree "Дерево каталогу"
// --- preferences
+#define MSGTR_PREFERENCES_Audio MSGTR_EQU_Audio
+#define MSGTR_PREFERENCES_Video MSGTR_EQU_Video
#define MSGTR_PREFERENCES_SubtitleOSD "Субтитри й OSD"
#define MSGTR_PREFERENCES_Codecs "Кодеки й demuxer"
+// Note: If you change MSGTR_PREFERENCES_Misc see if it still fits MSGTR_PREFERENCES_FRAME_Misc
#define MSGTR_PREFERENCES_Misc "Різне"
-
#define MSGTR_PREFERENCES_None "Ðемає"
+#define MSGTR_PREFERENCES_DriverDefault "звичайний драйвер"
#define MSGTR_PREFERENCES_AvailableDrivers "ДоÑтупні драйвери:"
#define MSGTR_PREFERENCES_DoNotPlaySound "Ðе грати звук"
#define MSGTR_PREFERENCES_NormalizeSound "Ðормалізувати звук"
@@ -732,6 +695,10 @@ static char help_text[]=
#define MSGTR_PREFERENCES_SUB_MPSUB "Перетворити вказані Ñубтитри до формату MPlayer"
#define MSGTR_PREFERENCES_SUB_SRT "Перетворити вказані Ñубтитри до формату SubViewer (SRT)"
#define MSGTR_PREFERENCES_SUB_Overlap "Дозволити/заборонити Ð¿ÐµÑ€ÐµÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñубтитрів"
+#define MSGTR_PREFERENCES_SUB_USE_ASS "SSA/ASS вивід Ñубтитрів"
+#define MSGTR_PREFERENCES_SUB_ASS_USE_MARGINS "ВикориÑтовувати кордони"
+#define MSGTR_PREFERENCES_SUB_ASS_TOP_MARGIN "Угорі: "
+#define MSGTR_PREFERENCES_SUB_ASS_BOTTOM_MARGIN "Знизу: "
#define MSGTR_PREFERENCES_Font "Шрифт:"
#define MSGTR_PREFERENCES_FontFactor "Фактор шрифту:"
#define MSGTR_PREFERENCES_PostProcess "Дозволити postprocessing"
@@ -746,6 +713,10 @@ static char help_text[]=
#define MSGTR_PREFERENCES_FRAME_PostProcess "Postprocessing"
#define MSGTR_PREFERENCES_FRAME_CodecDemuxer "Кодек й demuxer"
#define MSGTR_PREFERENCES_FRAME_Cache "Кеш"
+#define MSGTR_PREFERENCES_FRAME_Misc MSGTR_PREFERENCES_Misc
+#define MSGTR_PREFERENCES_Audio_Device "ПриÑтрій:"
+#define MSGTR_PREFERENCES_Audio_Mixer "Мікшер:"
+#define MSGTR_PREFERENCES_Audio_MixerChannel "Канал мікшеру:"
#define MSGTR_PREFERENCES_Message "Ðе забудьте, що вам треба перезапуÑтити Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð½Ð°Ð±ÑƒÑ‚Ñ‚Ñ Ñ‡Ð¸Ð½Ð½Ð¾ÑÑ‚Ñ– деÑких параметрів!"
#define MSGTR_PREFERENCES_DXR3_VENC "Відео кодек:"
#define MSGTR_PREFERENCES_DXR3_LAVC "ВикориÑтовувати LAVC (FFmpeg)"
@@ -771,6 +742,7 @@ static char help_text[]=
#define MSGTR_PREFERENCES_FontEncoding20 "Thai charset (CP874)"
#define MSGTR_PREFERENCES_FontEncoding21 "Cyrillic Windows (CP1251)"
#define MSGTR_PREFERENCES_FontEncoding22 "Slavic/Central European Windows (CP1250)"
+#define MSGTR_PREFERENCES_FontEncoding23 "Arabic Windows (CP1256)"
#define MSGTR_PREFERENCES_FontNoAutoScale "Без автомаÑштабуваннÑ"
#define MSGTR_PREFERENCES_FontPropWidth "Пропорційно ширині кадру"
#define MSGTR_PREFERENCES_FontPropHeight "Пропорційно виÑоті кадру"
@@ -784,20 +756,310 @@ static char help_text[]=
#define MSGTR_PREFERENCES_CacheSize "Розмір кешу: "
#define MSGTR_PREFERENCES_LoadFullscreen "Стартувати в полний екран"
#define MSGTR_PREFERENCES_SaveWinPos "Зберігати Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ð²Ñ–ÐºÐ½Ð°"
-#define MSGTR_PREFERENCES_XSCREENSAVER "Stop XScreenSaver"
+#define MSGTR_PREFERENCES_XSCREENSAVER "Зупинити XScreenSaver"
#define MSGTR_PREFERENCES_PlayBar "Дозволити лінійку програваннÑ"
-#define MSGTR_PREFERENCES_AutoSync "AutoSync on/off"
+#define MSGTR_PREFERENCES_AutoSync "AutoSync ув/вимк"
#define MSGTR_PREFERENCES_AutoSyncValue "Autosync: "
#define MSGTR_PREFERENCES_CDROMDevice "CD-ROM приÑтрій:"
#define MSGTR_PREFERENCES_DVDDevice "DVD приÑтрій:"
#define MSGTR_PREFERENCES_FPS "Кадрів на Ñекунду:"
#define MSGTR_PREFERENCES_ShowVideoWindow "Показувати неактивне вікно зображеннÑ"
+#define MSGTR_PREFERENCES_ArtsBroken "Ðовіші верÑÑ–Ñ— aRts не ÑуміÑні"\
+ "з GTK 1.x та ÑпричинÑÑ‚ÑŒ помилку GMPlayer!"
+// -- aboutbox
#define MSGTR_ABOUT_UHU "GUI розробку ÑпонÑовано UHU Linux\n"
+#define MSGTR_ABOUT_Contributors "Розробники коду та документації\n"
+#define MSGTR_ABOUT_Codecs_libs_contributions "Кодеки та Ñторонні бібліотеки\n"
+#define MSGTR_ABOUT_Translations "Переклади\n"
+#define MSGTR_ABOUT_Skins "Жупани\n"
// --- messagebox
-#define MSGTR_MSGBOX_LABEL_FatalError "фатальна помилка..."
-#define MSGTR_MSGBOX_LABEL_Error "помилка..."
-#define MSGTR_MSGBOX_LABEL_Warning "попередженнÑ..."
+#define MSGTR_MSGBOX_LABEL_FatalError "Фатальна помилка!"
+#define MSGTR_MSGBOX_LABEL_Error "Помилка!"
+#define MSGTR_MSGBOX_LABEL_Warning "ПопередженнÑ!"
+
+// bitmap.c
+#define MSGTR_NotEnoughMemoryC32To1 "[c32to1] недоÑтатньо пам'ÑÑ‚Ñ– Ð´Ð»Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ¸\n"
+#define MSGTR_NotEnoughMemoryC1To32 "[c1to32] недоÑтатньо пам'ÑÑ‚Ñ– Ð´Ð»Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ¸\n"
+
+// cfg.c
+#define MSGTR_ConfigFileReadError "[cfg] помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ налаштунків ...\n"
+#define MSGTR_UnableToSaveOption "[cfg] Ðе можу зберегти '%s' опцію.\n"
+
+// interface.c
+#define MSGTR_DeletingSubtitles "[GUI] ВидалÑÑŽ Ñубтитри.\n"
+#define MSGTR_LoadingSubtitles "[GUI] Вантажу Ñубтитри: %s\n"
+#define MSGTR_AddingVideoFilter "[GUI] Додаю відео фільтр: %s\n"
+#define MSGTR_RemovingVideoFilter "[GUI] ВидалÑÑŽ відео фільтр: %s\n"
+
+// mw.c
+#define MSGTR_NotAFile "ЗдаєтьÑÑ, це не файл: %s !\n"
+
+// ws.c
+#define MSGTR_WS_CouldNotOpenDisplay "[ws] Ðе можу відкрити диÑплей.\n"
+#define MSGTR_WS_RemoteDisplay "[ws] Віддалений диÑплей, вимикаю XMITSHM.\n"
+#define MSGTR_WS_NoXshm "[ws] Вибачте, ваша ÑиÑтема не підтримує Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ñ— пам'ÑÑ‚Ñ– X.\n"
+#define MSGTR_WS_NoXshape "[ws] Вибачте, здаєтьÑÑ, ваша ÑиÑтема не підтримує Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ XShape.\n"
+#define MSGTR_WS_ColorDepthTooLow "[ws] Вибачте, глибина кольору занизька.\n"
+#define MSGTR_WS_TooManyOpenWindows "[ws] Забагато відкритих вікон.\n"
+#define MSGTR_WS_ShmError "[ws] помилка Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ñ— пам'ÑÑ‚Ñ–\n"
+#define MSGTR_WS_NotEnoughMemoryDrawBuffer "[ws] Вибачте, не доÑтатньо пам'ÑÑ‚Ñ– Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ€Ð¸ÑÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÑƒÑ„ÐµÑ€Ñƒ.\n"
+#define MSGTR_WS_DpmsUnavailable "DPMS не доÑтупний?\n"
+#define MSGTR_WS_DpmsNotEnabled "Ðе можу увімкнути DPMS.\n"
+
+// wsxdnd.c
+#define MSGTR_WS_NotAFile "ЗдаєтьÑÑ, це не файл...\n"
+#define MSGTR_WS_DDNothing "D&D: Ðічого не повернено!\n"
+
+// ======================= video output drivers ========================
+
+#define MSGTR_VOincompCodec "Обраний приÑтрій виводу відео неÑуміÑний з цим кодеком.\n"\
+ "Спробуйте додати фільтр scale до ÑпиÑку вашого ÑпиÑку фільтрів,\n"\
+ "наприклад. -vf spp,scale заміÑÑ‚ÑŒ -vf spp.\n"
+#define MSGTR_VO_GenericError "Виникла Ñлідуюча помилка"
+#define MSGTR_VO_UnableToAccess "Ðеможлово отримати доÑтуп"
+#define MSGTR_VO_ExistsButNoDirectory "вже Ñ–Ñнує, але це не директоріÑ."
+#define MSGTR_VO_DirExistsButNotWritable "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ вже Ñ–Ñнує, але не доÑтупна Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу."
+#define MSGTR_VO_DirExistsAndIsWritable "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ вже Ñ–Ñнує та доÑтупна Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу."
+#define MSGTR_VO_CantCreateDirectory "Ðе можу Ñтворити директорію виводу."
+#define MSGTR_VO_CantCreateFile "Ðе можу Ñтворити файл виводу."
+#define MSGTR_VO_DirectoryCreateSuccess "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ñ–Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ уÑпішно Ñтворена."
+#define MSGTR_VO_ParsingSuboptions "ПеревірÑÑŽ ÑинтакÑÐ¸Ñ Ñубопцій."
+#define MSGTR_VO_SuboptionsParsedOK "Перевірка ÑинтакÑиÑу закінчилаÑÑŒ уÑпішно."
+#define MSGTR_VO_ValueOutOfRange "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð° межами доÑтупного діапазону"
+#define MSGTR_VO_NoValueSpecified "Ðе вказано значеннÑ."
+#define MSGTR_VO_UnknownSuboptions "невідома(Ñ–) ÑубопціÑ(Ñ—)"
+
+// aspect.c
+#define MSGTR_LIBVO_ASPECT_NoSuitableNewResFound "[ASPECT] ПопередженнÑ: Ðе знайдено потрібного розширеннÑ!\n"
+#define MSGTR_LIBVO_ASPECT_NoNewSizeFoundThatFitsIntoRes "[ASPECT] Помилка: Ðе знайдено розмір, що поміÑтивÑÑ Ð± у дане розширеннÑ!\n"
+
+// font_load_ft.c
+#define MSGTR_LIBVO_FONT_LOAD_FT_NewFaceFailed "Помилка New_Face. Можливо шлÑÑ… до шрифту невірний.\nВкажіть файл шрифту (~/.mplayer/subfont.ttf).\n"
+#define MSGTR_LIBVO_FONT_LOAD_FT_NewMemoryFaceFailed "Помилка New_Memory_Face..\n"
+#define MSGTR_LIBVO_FONT_LOAD_FT_SubFaceFailed "шрифт Ñубтитрів: помилка load_sub_face.\n"
+#define MSGTR_LIBVO_FONT_LOAD_FT_SubFontCharsetFailed "шрифт Ñубтитрів: помилка prepare_charset.\n"
+#define MSGTR_LIBVO_FONT_LOAD_FT_CannotPrepareSubtitleFont "Ðе можу підготувати шрифт Ñубтитрів.\n"
+#define MSGTR_LIBVO_FONT_LOAD_FT_CannotPrepareOSDFont "Ðе можу підготувати шрифт OSD.\n"
+#define MSGTR_LIBVO_FONT_LOAD_FT_CannotGenerateTables "Ðе можу генерувати таблиці.\n"
+#define MSGTR_LIBVO_FONT_LOAD_FT_DoneFreeTypeFailed "Помилка FT_Done_FreeType.\n"
+
+// sub.c
+#define MSGTR_VO_SUB_Seekbar "ÐавігаціÑ"
+#define MSGTR_VO_SUB_Play "Грати"
+#define MSGTR_VO_SUB_Pause "Пауза"
+#define MSGTR_VO_SUB_Stop "Стоп"
+#define MSGTR_VO_SUB_Rewind "Ðазад"
+#define MSGTR_VO_SUB_Forward "Уперед"
+#define MSGTR_VO_SUB_Clock "ЧаÑ"
+#define MSGTR_VO_SUB_Contrast "КонтраÑÑ‚"
+#define MSGTR_VO_SUB_Saturation "ÐаÑиченіÑÑ‚ÑŒ"
+#define MSGTR_VO_SUB_Volume "ГучніÑÑ‚ÑŒ"
+#define MSGTR_VO_SUB_Brightness "БлиÑкучіÑÑ‚ÑŒ"
+#define MSGTR_VO_SUB_Hue "Колір"
+#define MSGTR_VO_SUB_Balance "БаланÑ"
+
+// vo_3dfx.c
+#define MSGTR_LIBVO_3DFX_Only16BppSupported "[VO_3DFX] ПідтримуєтьÑÑ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ 16bpp!"
+#define MSGTR_LIBVO_3DFX_VisualIdIs "[VO_3DFX] Візуальний ID %lx.\n"
+#define MSGTR_LIBVO_3DFX_UnableToOpenDevice "[VO_3DFX] Ðе можу відкрити /dev/3dfx.\n"
+#define MSGTR_LIBVO_3DFX_Error "[VO_3DFX] Помилка: %d.\n"
+#define MSGTR_LIBVO_3DFX_CouldntMapMemoryArea "[VO_3DFX] Ðе можу показати облаÑÑ‚Ñ– пам'ÑÑ‚Ñ– 3dfx: %p,%p,%d.\n"
+#define MSGTR_LIBVO_3DFX_DisplayInitialized "[VO_3DFX] Ініціалізовано: %p.\n"
+#define MSGTR_LIBVO_3DFX_UnknownSubdevice "[VO_3DFX] Ðевідомий підприÑтрій: %s.\n"
+
+// vo_aa.c
+#define MSGTR_VO_AA_HelpHeader "\n\nСубопції vo_aa бібліотеки aalib:\n"
+#define MSGTR_VO_AA_AdditionalOptions "Додаткові опції, що забезпечує vo_aa:\n" \
+" help показати це повідомленнÑ\n" \
+" osdcolor вÑтановити колір OSD\n subcolor вÑтановити колір Ñубтитрівr\n" \
+" параметри кольору:\n 0 : Ñтандартний\n" \
+" 1 : дим\n 2 : товÑтий\n 3 : товÑтий шрифт\n" \
+" 4 : реверÑ\n 5 : ÑпеціÑльний\n\n\n"
+
+
+// vo_dxr3.c
+#define MSGTR_LIBVO_DXR3_UnableToLoadNewSPUPalette "[VO_DXR3] Ðе можу завантажити нову палітру SPU!\n"
+#define MSGTR_LIBVO_DXR3_UnableToSetPlaymode "[VO_DXR3] Ðе можу вÑтановити режим програваннÑ!\n"
+#define MSGTR_LIBVO_DXR3_UnableToSetSubpictureMode "[VO_DXR3] Ðе можу вÑтановити режим Ñубкартинки!\n"
+#define MSGTR_LIBVO_DXR3_UnableToGetTVNorm "[VO_DXR3] Ðе можу отримати режим ТБ!\n"
+#define MSGTR_LIBVO_DXR3_AutoSelectedTVNormByFrameRate "[VO_DXR3] Ðвто-вибір режиму ТБ за чаÑтотою кадрів: "
+#define MSGTR_LIBVO_DXR3_UnableToSetTVNorm "[VO_DXR3] Ðе можу отримати режим ТБ!\n"
+#define MSGTR_LIBVO_DXR3_SettingUpForNTSC "[VO_DXR3] Ð’Ñтановлюю Ð´Ð»Ñ NTSC.\n"
+#define MSGTR_LIBVO_DXR3_SettingUpForPALSECAM "[VO_DXR3] Ð’Ñтановлюю Ð´Ð»Ñ PAL/SECAM.\n"
+#define MSGTR_LIBVO_DXR3_SettingAspectRatioTo43 "[VO_DXR3] Ð’Ñтановлюю пропорції 4:3.\n"
+#define MSGTR_LIBVO_DXR3_SettingAspectRatioTo169 "[VO_DXR3] Ð’Ñтановлюю пропорції 16:9.\n"
+#define MSGTR_LIBVO_DXR3_OutOfMemory "[VO_DXR3] не виÑтачає пам'ÑÑ‚Ñ–\n"
+#define MSGTR_LIBVO_DXR3_UnableToAllocateKeycolor "[VO_DXR3] Ðе можу знайти головний колір!\n"
+#define MSGTR_LIBVO_DXR3_UnableToAllocateExactKeycolor "[VO_DXR3] Ðе можу знайти точний головний колір, викориÑтовую найбільш Ñхоже (0x%lx).\n"
+#define MSGTR_LIBVO_DXR3_Uninitializing "[VO_DXR3] ІніціÑлізуваннÑ.\n"
+#define MSGTR_LIBVO_DXR3_FailedRestoringTVNorm "[VO_DXR3] Ðе можу вÑтановити режим ТБ!\n"
+#define MSGTR_LIBVO_DXR3_EnablingPrebuffering "[VO_DXR3] ДозволÑÑŽ попередню буферизацію.\n"
+#define MSGTR_LIBVO_DXR3_UsingNewSyncEngine "[VO_DXR3] ВикориÑтовую новий механізм Ñинхронізації.\n"
+#define MSGTR_LIBVO_DXR3_UsingOverlay "[VO_DXR3] ВикориÑтовую оверлей.\n"
+#define MSGTR_LIBVO_DXR3_ErrorYouNeedToCompileMplayerWithX11 "[VO_DXR3] Помилка: Оверлей потребує Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð· вÑтановленими бібліотеками/допоміжними файлами X11.\n"
+#define MSGTR_LIBVO_DXR3_WillSetTVNormTo "[VO_DXR3] Ð’Ñтановлюю режим ТБ у: "
+#define MSGTR_LIBVO_DXR3_AutoAdjustToMovieFrameRatePALPAL60 "авто-Ñ€ÐµÐ³ÑƒÐ»ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð° чаÑтотою кадрів фільма (PAL/PAL-60)"
+#define MSGTR_LIBVO_DXR3_AutoAdjustToMovieFrameRatePALNTSC "авто-Ñ€ÐµÐ³ÑƒÐ»ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð° чаÑтотою кадрів фільма (PAL/NTSC)"
+#define MSGTR_LIBVO_DXR3_UseCurrentNorm "ВикориÑтовую поточний режим."
+#define MSGTR_LIBVO_DXR3_UseUnknownNormSuppliedCurrentNorm "Запропонований невідомий режим. Спробуйте поточний."
+#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingTrying "[VO_DXR3] Помилка при відкритті %s Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу, пробую /dev/em8300 заміÑÑ‚ÑŒ.\n"
+#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingTryingMV "[VO_DXR3] Помилка при відкритті %s Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу, пробую /dev/em8300_mv заміÑÑ‚ÑŒ.\n"
+#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingAsWell "[VO_DXR3] Також помилка при відкритті /dev/em8300 Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу!\nВиходжу.\n"
+#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingAsWellMV "[VO_DXR3] Також помилка при відкритті /dev/em8300_Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу!\nВиходжу.\n"
+#define MSGTR_LIBVO_DXR3_Opened "[VO_DXR3] Відкрито: %s.\n"
+#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingTryingSP "[VO_DXR3] Помилка при відкритті %s Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу, пробую /dev/em8300_sp заміÑÑ‚ÑŒ.\n"
+#define MSGTR_LIBVO_DXR3_ErrorOpeningForWritingAsWellSP "[VO_DXR3] Також помилка при відкритті /dev/em8300_sp Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу!\nВиходжу.\n"
+#define MSGTR_LIBVO_DXR3_UnableToOpenDisplayDuringHackSetup "[VO_DXR3] Ðе можу відкрити диÑплей у Ñ‡Ð°Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ…Ð°ÐºÑƒ оверлеÑ!\n"
+#define MSGTR_LIBVO_DXR3_UnableToInitX11 "[VO_DXR3] Ðе можу ініціÑлізувати X11!\n"
+#define MSGTR_LIBVO_DXR3_FailedSettingOverlayAttribute "[VO_DXR3] ÐевдалоÑÑŒ вÑтановити атрибут оверлеÑ.\n"
+#define MSGTR_LIBVO_DXR3_FailedSettingOverlayScreen "[VO_DXR3] ÐевдалоÑÑŒ вÑтановити екран оверлею!\nВиходжу.\n"
+#define MSGTR_LIBVO_DXR3_FailedEnablingOverlay "[VO_DXR3] ÐеадалоÑÑŒ увімкнути оверлей!\nВиходжу.\n"
+#define MSGTR_LIBVO_DXR3_FailedResizingOverlayWindow "[VO_DXR3] ÐевдалоÑÑŒ зімнити розмір вікна оверлею!\n"
+#define MSGTR_LIBVO_DXR3_FailedSettingOverlayBcs "[VO_DXR3] ÐевдалоÑÑ Ð²Ñтановити bcs оверлею!\n"
+#define MSGTR_LIBVO_DXR3_FailedGettingOverlayYOffsetValues "[VO_DXR3] Ðе можу отримати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Y-Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¾Ð²ÐµÑ€Ð»ÐµÑŽ!\nВиходжу.\n"
+#define MSGTR_LIBVO_DXR3_FailedGettingOverlayXOffsetValues "[VO_DXR3] Ðе можу отримати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ X-Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¾Ð²ÐµÑ€Ð»ÐµÑŽ!\nВиходжу.\n"
+#define MSGTR_LIBVO_DXR3_FailedGettingOverlayXScaleCorrection "[VO_DXR3] Ðе можу отримати корекцію Ð¾Ð²ÐµÑ€Ð»ÐµÑ Ð¼Ð°ÑÑˆÑ‚Ð°Ð±ÑƒÐ²Ð°Ð½Ð½Ñ X!\nВиходжу.\n"
+#define MSGTR_LIBVO_DXR3_YOffset "[VO_DXR3] Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ð° Y: %d.\n"
+#define MSGTR_LIBVO_DXR3_XOffset "[VO_DXR3] Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ð° X: %d.\n"
+#define MSGTR_LIBVO_DXR3_XCorrection "[VO_DXR3] ÐšÐ¾Ñ€ÐµÐºÑ†Ñ–Ñ Ð·Ð° X: %d.\n"
+#define MSGTR_LIBVO_DXR3_FailedSetSignalMix "[VO_DXR3] Ðе можу вÑтановити Ñигнал mix!\n"
+
+// vo_jpeg.c
+#define MSGTR_VO_JPEG_ProgressiveJPEG "Увімкнено прогреÑивний JPEG."
+#define MSGTR_VO_JPEG_NoProgressiveJPEG "Ввимкнено прогреÑивний JPEG."
+#define MSGTR_VO_JPEG_BaselineJPEG "Увімкнено оÑновний JPEG."
+#define MSGTR_VO_JPEG_NoBaselineJPEG "Ввимкнено оÑновний JPEG."
+
+// vo_mga.c
+#define MSGTR_LIBVO_MGA_AspectResized "[VO_MGA] aspect(): розмір змінений до %dx%d.\n"
+#define MSGTR_LIBVO_MGA_Uninit "[VO] деініціÑлізаціÑ!\n"
+
+// mga_common.c
+#define MSGTR_LIBVO_MGA_ErrorInConfigIoctl "[MGA] помилка у mga_vid_config ioctl (неправильна верÑÑ–Ñ mga_vid.o?)"
+#define MSGTR_LIBVO_MGA_CouldNotGetLumaValuesFromTheKernelModule "[MGA] Ðе можу отримати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ luma з Ð¼Ð¾Ð´ÑƒÐ»Ñ Ñдра!\n"
+#define MSGTR_LIBVO_MGA_CouldNotSetLumaValuesFromTheKernelModule "[MGA] Ðе можу вÑтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ luma з Ð¼Ð¾Ð´ÑƒÐ»Ñ Ñдра!\n"
+#define MSGTR_LIBVO_MGA_ScreenWidthHeightUnknown "[MGA] Ðевідома ширина/виÑота екрану!\n"
+#define MSGTR_LIBVO_MGA_InvalidOutputFormat "[MGA] невірний вихідний формат %0X\n"
+#define MSGTR_LIBVO_MGA_IncompatibleDriverVersion "[MGA] ВерÑÑ–Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ mga_vid драйверу неÑуміÑна із цією верÑією MPlayer!\n"
+#define MSGTR_LIBVO_MGA_CouldntOpen "[MGA] Ðе можу відкрити: %s\n"
+#define MSGTR_LIBVO_MGA_ResolutionTooHigh "[MGA] Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð´Ð¶ÐµÑ€ÐµÐ»Ð°, у крайньому випадку в одному вимірі, більше ніж 1023x1023.\n[MGA] ПеремаÑштабуйте програмно або викорÑтайте -lavdopts lowres=1.\n"
+#define MSGTR_LIBVO_MGA_mgavidVersionMismatch "[MGA] верÑÑ–Ñ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ñƒ mga_vid Ñдра (%u) та MPlayer (%u) не Ñпівпадають\n"
+
+// open.c, stream.c:
+#define MSGTR_CdDevNotfound "Компактовід \"%s\" не знайдений!\n"
+#define MSGTR_ErrTrackSelect "Помилка вибору треку на VCD!"
+#define MSGTR_ReadSTDIN "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· stdin...\n"
+#define MSGTR_UnableOpenURL "Ðе можу відкрити URL: %s\n"
+#define MSGTR_ConnToServer "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· Ñервером: %s\n"
+#define MSGTR_FileNotFound "Файл не знайдений: '%s'\n"
+
+#define MSGTR_SMBFileNotFound "Помилка Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð· мережі: '%s'\n"
+#define MSGTR_SMBNotCompiled "MPlayer не має вкомпільованої підтримки SMB\n"
+
+#define MSGTR_CantOpenDVD "Ðе зміг відкрити DVD: %s (%s)\n"
+#define MSGTR_DVDnumTitles "Є %d доріжок з титрами на цьому DVD.\n"
+#define MSGTR_DVDinvalidTitle "ÐеприпуÑтимий номер доріжки титрів на DVD: %d\n"
+#define MSGTR_DVDnumChapters "Є %d розділів на цій доріжці з DVD титрами.\n"
+#define MSGTR_DVDinvalidChapter "ÐеприпуÑтимий номер DVD розділу: %d\n"
+#define MSGTR_DVDnumAngles "Є %d кутів на цій доріжці з DVD титрами.\n"
+#define MSGTR_DVDinvalidAngle "ÐеприпуÑтимий номер DVD кута: %d\n"
+#define MSGTR_DVDnoIFO "Ðе можу відкрити IFO файл Ð´Ð»Ñ DVD титрів %d.\n"
+#define MSGTR_DVDnoVOBs "Ðе можу відкрити титри VOBS (VTS_%02d_1.VOB).\n"
+
+// demuxer.c, demux_*.c:
+#define MSGTR_AudioStreamRedefined "ПопередженнÑ! Заголовок аудіо потоку %d перевизначений!\n"
+#define MSGTR_VideoStreamRedefined "ПопередженнÑ! Заголовок відео потоку %d перевизначений!\n"
+#define MSGTR_TooManyAudioInBuffer "\nDEMUXER: Ðадто багато (%d, %d байтів) аудіо пакетів у буфері!\n"
+#define MSGTR_TooManyVideoInBuffer "\nDEMUXER: Ðадто багато (%d, %d байтів) відео пакетів у буфері!\n"
+#define MSGTR_MaybeNI "(можливо ви програєте неперемежений потік/файл або невдалий кодек)\n"
+#define MSGTR_SwitchToNi "\nДетектовано погано перемежений AVI файл - переходжу в -ni режим...\n"
+#define MSGTR_Detected_XXX_FileFormat "Знайдений %s формат файлу!\n"
+#define MSGTR_DetectedAudiofile "Ðудіо файл детектовано.\n"
+#define MSGTR_NotSystemStream "Ðе в форматі MPEG System Stream... (можливо, Transport Stream?)\n"
+#define MSGTR_FormatNotRecognized "========= Вибачте, формат цього файлу не розпізнаний чи не підтримуєтьÑÑ ===========\n"\
+ "===== Якщо це AVI, ASF або MPEG потік, будь лаÑка зв'ÑжітьÑÑ Ð· автором! ======\n"
+#define MSGTR_MissingVideoStream "Відео потік не знайдений!\n"
+#define MSGTR_MissingAudioStream "Ðудіо потік не знайдений... -> програю без звуку\n"
+#define MSGTR_MissingVideoStreamBug "Відео потік загублений!? Зв'ÑжітьÑÑ Ð· автором, це мабуть помилка :(\n"
+
+#define MSGTR_DoesntContainSelectedStream "demux: файл не міÑтить обраний аудіо або відео потік\n"
+
+#define MSGTR_NI_Forced "ПримуÑово вибраний"
+#define MSGTR_NI_Detected "Знайдений"
+#define MSGTR_NI_Message "%s ÐЕПЕРЕМЕЖЕÐИЙ формат AVI файлу!\n"
+
+#define MSGTR_UsingNINI "ВикориÑÑ‚Ð°Ð½Ð½Ñ ÐЕПЕРЕМЕЖЕÐОГО або пошкодженого формату AVI файлу!\n"
+#define MSGTR_CouldntDetFNo "Ðе зміг визначити чиÑло кадрів (Ð´Ð»Ñ Ð°Ð±Ñолютного перенеÑеннÑ)\n"
+#define MSGTR_CantSeekRawAVI "Ðе можу переміÑтитиÑÑ Ñƒ непроіндекÑованому потоці .AVI! (вимагаєтьÑÑ Ñ–Ð½Ð´ÐµÐºÑ, Ñпробуйте з ключом -idx!)\n"
+#define MSGTR_CantSeekFile "Ðе можу переміщуватиÑÑ Ñƒ цьому файлі!\n"
+
+#define MSGTR_MOVcomprhdr "MOV: СтиÑнуті заголовки (поки що) не підтримуютьÑÑ!\n"
+#define MSGTR_MOVvariableFourCC "MOV: ПопередженнÑ! Знайдено перемінний FOURCC!?\n"
+#define MSGTR_MOVtooManyTrk "MOV: ПопередженнÑ! надто багато треків!"
+#define MSGTR_FoundAudioStream "==> Знайдено аудіо потік: %d\n"
+#define MSGTR_FoundVideoStream "==> Знайдено відео потік: %d\n"
+#define MSGTR_DetectedTV "Детектовано ТВ! ;-)\n"
+#define MSGTR_ErrorOpeningOGGDemuxer "Ðеможливо відкрити ogg demuxer.\n"
+#define MSGTR_ASFSearchingForAudioStream "ASF: Пошук аудіо потоку (id:%d).\n"
+#define MSGTR_CannotOpenAudioStream "Ðеможливо відкрити аудіо потік: %s\n"
+#define MSGTR_CannotOpenSubtitlesStream "Ðеможливо відкрити потік Ñубтитрів: %s\n"
+#define MSGTR_OpeningAudioDemuxerFailed "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ аудіо demuxer: %s\n"
+#define MSGTR_OpeningSubtitlesDemuxerFailed "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ demuxer Ñубтитрів: %s\n"
+#define MSGTR_TVInputNotSeekable "TV input is not seekable! (Seeking will probably be for changing channels ;)\n"
+#define MSGTR_ClipInfo "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ ÐºÐ»Ñ–Ð¿Ñƒ:\n"
+
+// dec_video.c & dec_audio.c:
+#define MSGTR_CantOpenCodec "Ðе зміг відкрити кодек\n"
+#define MSGTR_CantCloseCodec "Ðе зміг закрити кодек\n"
+
+#define MSGTR_MissingDLLcodec "ПОМИЛКÐ: Ðе зміг відкрити необхідний DirectShow кодек: %s\n"
+#define MSGTR_ACMiniterror "Ðе зміг завантажити чи ініціалізувати Win32/ACM AUDIO кодек (загублений DLL файл?)\n"
+#define MSGTR_MissingLAVCcodec "Ðе можу знайти кодек \"%s\" у libavcodec...\n"
+
+#define MSGTR_MpegNoSequHdr "MPEG: FATAL: КІÐЕЦЬ ФÐЙЛУ при пошуку поÑлідовноÑÑ‚Ñ– заголовків\n"
+#define MSGTR_CannotReadMpegSequHdr "FATAL: Ðе можу читати поÑлідовніÑÑ‚ÑŒ заголовків!\n"
+#define MSGTR_CannotReadMpegSequHdrEx "FATAL: Ðе мочу читати Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾ÑлідовноÑÑ‚Ñ– заголовків!\n"
+#define MSGTR_BadMpegSequHdr "MPEG: Погана поÑлідовніÑÑ‚ÑŒ заголовків!\n"
+#define MSGTR_BadMpegSequHdrEx "MPEG: Погане Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾ÑлідовноÑÑ‚Ñ– заголовків!\n"
+
+#define MSGTR_ShMemAllocFail "Ðе можу захопити загальну пам'ÑÑ‚ÑŒ\n"
+#define MSGTR_CantAllocAudioBuf "Ðе можу захопити вихідний буфер аудіо\n"
+
+#define MSGTR_UnknownAudio "Ðевідомий чи загублений аудіо формат, програю без звуку\n"
+
+#define MSGTR_UsingExternalPP "[PP] ВикориÑтовую зовнішній фільтр обробки, Ð¼Ð°ÐºÑ q = %d.\n"
+#define MSGTR_UsingCodecPP "[PP] ВикориÑтовую обробку кодека, Ð¼Ð°ÐºÑ q = %d.\n"
+#define MSGTR_VideoAttributeNotSupportedByVO_VD "Відео атрибут '%s' не підтримуєтьÑÑ Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¸Ð¼Ð¸ vo & vd.\n"
+#define MSGTR_VideoCodecFamilyNotAvailableStr "Запрошений драйвер відео кодеку [%s] (vfm=%s) недоÑÑжний (ввімкніть його під Ñ‡Ð°Ñ ÐºÐ¾Ð¼Ð¿Ñ–Ð»Ñції)\n"
+#define MSGTR_AudioCodecFamilyNotAvailableStr "Запрошений драйвер аудіо кодеку [%s] (afm=%s) недоÑÑжний (ввімкніть його під Ñ‡Ð°Ñ ÐºÐ¾Ð¼Ð¿Ñ–Ð»Ñції)\n"
+#define MSGTR_OpeningVideoDecoder "Відкриваю відео декодер: [%s] %s\n"
+#define MSGTR_OpeningAudioDecoder "Відкриваю аудіо декодер: [%s] %s\n"
+#define MSGTR_UninitVideoStr "Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾: %s\n"
+#define MSGTR_UninitAudioStr "Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð°ÑƒÐ´Ñ–Ð¾: %s\n"
+#define MSGTR_VDecoderInitFailed "Збій ініціалізації VDecoder :(\n"
+#define MSGTR_ADecoderInitFailed "Збій ініціалізації ADecoder :(\n"
+#define MSGTR_ADecoderPreinitFailed "Збій Ð¿Ñ–Ð´Ð³Ð¾Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ADecoder :(\n"
+#define MSGTR_AllocatingBytesForInputBuffer "dec_audio: РозподілÑÑŽ %d байт вхідному буферу\n"
+#define MSGTR_AllocatingBytesForOutputBuffer "dec_audio: РозподілÑÑŽ %d + %d = %d байт вихідному буферу\n"
+
+// LIRC:
+#define MSGTR_SettingUpLIRC "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ lirc...\n"
+#define MSGTR_LIRCopenfailed "Ðевдале Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ lirc!\n"
+#define MSGTR_LIRCcfgerr "Ðевдале Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ конфігурації LIRC %s!\n"
+
+// vf.c
+#define MSGTR_CouldNotFindVideoFilter "Ðеможливо знайти відео фільтр '%s'\n"
+#define MSGTR_CouldNotOpenVideoFilter "Ðеможливо відкрити відео фільтр '%s'\n"
+#define MSGTR_OpeningVideoFilter "Відкриваю відео фільтр: "
+//-----------------------------
+#define MSGTR_CannotFindColorspace "Ðе можу підібрати загальну Ñхему кольорів, навіть додавши 'scale' :(\n"
+
+// vd.c
+#define MSGTR_CodecDidNotSet "VDec: Кодек не вÑтановив sh->disp_w та sh->disp_h, Ñпробую обійти це.\n"
+#define MSGTR_VoConfigRequest "VDec: vo config запит - %d x %d (preferred csp: %s)\n"
+#define MSGTR_CouldNotFindColorspace "Ðе можу підібрати підходÑщу Ñхему кольорів - повтор з -vf scale...\n"
+#define MSGTR_MovieAspectIsSet "Ð’Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñторін %.2f:1 - маÑштабую аби Ñкоректувати.\n"
+#define MSGTR_MovieAspectUndefined "Ð’Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñторін не вказано - маÑÑˆÑ‚Ð°Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ викориÑтовуєтьÑÑ.\n"
-#endif
diff --git a/help/help_mp-zh_CN.h b/help/help_mp-zh_CN.h
index d5ce571200..26df21c131 100644
--- a/help/help_mp-zh_CN.h
+++ b/help/help_mp-zh_CN.h
@@ -17,7 +17,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"用法: mplayer [选项] [URL|路径/]文件å\n"
"\n"
"基本选项: (完整列表å‚è§æ‰‹å†Œé¡µï¼‰\n"
diff --git a/help/help_mp-zh_TW.h b/help/help_mp-zh_TW.h
index 0d8770eaac..928d35aff6 100644
--- a/help/help_mp-zh_TW.h
+++ b/help/help_mp-zh_TW.h
@@ -9,7 +9,7 @@
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
-static char help_text[]=
+static const char help_text[]=
"用法: mplayer [é¸é …] [URL|路徑/]文件å\n"
"\n"
"基本é¸é …: (完整列表åƒè¦‹æ‰‹å†Œé )\n"
diff --git a/liba52/a52.h b/liba52/a52.h
index 78a92ed16a..3547ad1d36 100644
--- a/liba52/a52.h
+++ b/liba52/a52.h
@@ -28,6 +28,9 @@
#ifndef A52_H
#define A52_H
+#include <stdint.h>
+#include "mm_accel.h"
+
#ifndef LIBA52_DOUBLE
typedef float sample_t;
#else
diff --git a/liba52/liba52_changes.diff b/liba52/liba52_changes.diff
index 0e9e71c53f..206e84c213 100644
--- a/liba52/liba52_changes.diff
+++ b/liba52/liba52_changes.diff
@@ -1,6 +1,6 @@
--- include/a52.h 2006-06-12 15:04:57.000000000 +0200
+++ liba52/a52.h 2006-06-05 02:23:02.000000000 +0200
-@@ -63,4 +63,9 @@
+@@ -59,4 +66,9 @@
int a52_block (a52_state_t * state);
void a52_free (a52_state_t * state);
@@ -12,11 +12,11 @@
#endif /* A52_H */
--- liba52/a52_internal.h 2006-06-12 15:05:07.000000000 +0200
+++ liba52/a52_internal.h 2006-06-05 02:23:02.000000000 +0200
-@@ -107,18 +107,34 @@
+@@ -103,18 +107,34 @@
#define DELTA_BIT_NONE (2)
#define DELTA_BIT_RESERVED (3)
-+#ifdef ARCH_X86_64
++#if ARCH_X86_64
+# define REG_a "rax"
+# define REG_d "rdx"
+# define REG_S "rsi"
@@ -52,7 +52,7 @@
+void imdct_do_512 (sample_t * data, sample_t * delay, sample_t bias);
--- liba52/bitstream.c 2006-06-12 15:05:07.000000000 +0200
+++ liba52/bitstream.c 2006-06-05 02:23:02.000000000 +0200
-@@ -35,6 +35,10 @@
+@@ -31,6 +35,10 @@
#define BUFFER_SIZE 4096
@@ -63,7 +63,7 @@
void a52_bitstream_set_ptr (a52_state_t * state, uint8_t * buf)
{
int align;
-@@ -42,6 +46,9 @@
+@@ -38,6 +46,9 @@
align = (long)buf & 3;
state->buffer_start = (uint32_t *) (buf - align);
state->bits_left = 0;
@@ -75,7 +75,7 @@
--- liba52/bitstream.h 2006-06-12 15:05:07.000000000 +0200
+++ liba52/bitstream.h 2006-06-05 02:23:02.000000000 +0200
-@@ -25,6 +25,42 @@
+@@ -21,6 +25,42 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
@@ -91,7 +91,7 @@
+#define ALT_BITSTREAM_READER
+
+/* used to avoid misaligned exceptions on some archs (alpha, ...) */
-+#if defined (ARCH_X86) || defined(HAVE_ARMV6)
++#if ARCH_X86 || HAVE_ARMV6
+# define unaligned32(a) (*(uint32_t*)(a))
+#else
+# ifdef __GNUC__
@@ -118,7 +118,7 @@
/* (stolen from the kernel) */
#ifdef WORDS_BIGENDIAN
-@@ -32,7 +74,7 @@
+@@ -28,7 +68,7 @@
#else
@@ -127,7 +127,7 @@
# define swab32(x) __i386_swab32(x)
static inline const uint32_t __i386_swab32(uint32_t x)
-@@ -43,19 +85,34 @@
+@@ -39,19 +79,34 @@
# else
@@ -166,7 +166,7 @@
uint32_t result;
if (num_bits < state->bits_left) {
-@@ -65,10 +122,29 @@
+@@ -61,10 +116,29 @@
}
return a52_bitstream_get_bh (state, num_bits);
@@ -196,7 +196,7 @@
int32_t result;
if (num_bits < state->bits_left) {
-@@ -78,4 +154,5 @@
+@@ -74,4 +148,5 @@
}
return a52_bitstream_get_bh_2 (state, num_bits);
@@ -204,7 +204,7 @@
}
--- liba52/downmix.c 2006-06-12 15:17:53.000000000 +0200
+++ liba52/downmix.c 2006-06-05 02:23:02.000000000 +0200
-@@ -23,18 +23,46 @@
+@@ -19,18 +23,46 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
@@ -241,7 +241,7 @@
+{
+ a52_upmix= upmix_C;
+ a52_downmix= downmix_C;
-+#if defined(ARCH_X86) || defined(ARCH_X86_64)
++#if ARCH_X86 || ARCH_X86_64
+ if(mm_accel & MM_ACCEL_X86_MMX) a52_upmix= upmix_MMX;
+ if(mm_accel & MM_ACCEL_X86_SSE) a52_downmix= downmix_SSE;
+ if(mm_accel & MM_ACCEL_X86_3DNOW) a52_downmix= downmix_3dnow;
@@ -251,7 +251,7 @@
int a52_downmix_init (int input, int flags, sample_t * level,
sample_t clev, sample_t slev)
{
-@@ -451,7 +479,7 @@
+@@ -447,7 +479,7 @@
samples[i] = 0;
}
@@ -260,7 +260,7 @@
sample_t clev, sample_t slev)
{
switch (CONVERT (acmod, output & A52_CHANNEL_MASK)) {
-@@ -563,7 +591,7 @@
+@@ -559,7 +591,7 @@
break;
case CONVERT (A52_3F2R, A52_2F1R):
@@ -269,7 +269,7 @@
move2to1 (samples + 768, samples + 512, bias);
break;
-@@ -587,12 +615,12 @@
+@@ -583,12 +615,12 @@
break;
case CONVERT (A52_3F1R, A52_3F2R):
@@ -284,12 +284,12 @@
{
switch (CONVERT (acmod, output & A52_CHANNEL_MASK)) {
-@@ -657,3 +685,1104 @@
+@@ -653,3 +685,1104 @@
goto mix_31to21;
}
}
+
-+#if defined(ARCH_X86) || defined(ARCH_X86_64)
++#if ARCH_X86 || ARCH_X86_64
+static void mix2to1_SSE (sample_t * dest, sample_t * src, sample_t bias)
+{
+ __asm__ volatile(
@@ -1391,7 +1391,7 @@
+#endif // ARCH_X86 || ARCH_X86_64
--- liba52/imdct.c 2008-02-19 00:18:33.000000000 +0100
+++ liba52/imdct.c 2008-02-19 00:16:40.000000000 +0100
-@@ -26,6 +26,11 @@
+@@ -22,6 +26,11 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
@@ -1403,7 +1403,7 @@
*/
#include "config.h"
-@@ -43,12 +48,49 @@
+@@ -39,12 +48,50 @@
#include "a52.h"
#include "a52_internal.h"
#include "mm_accel.h"
@@ -1413,6 +1413,7 @@
+
+#ifdef RUNTIME_CPUDETECT
+#undef HAVE_AMD3DNOWEXT
++#define HAVE_AMD3DNOWEXT 0
+#endif
typedef struct complex_s {
@@ -1453,7 +1454,7 @@
static uint8_t fftorder[] = {
0,128, 64,192, 32,160,224, 96, 16,144, 80,208,240,112, 48,176,
8,136, 72,200, 40,168,232,104,248,120, 56,184, 24,152,216, 88,
-@@ -60,6 +102,40 @@
+@@ -56,6 +103,40 @@
6,134, 70,198, 38,166,230,102,246,118, 54,182, 22,150,214, 86
};
@@ -1473,7 +1474,7 @@
+static sample_t __attribute__((aligned(16))) xcos1[128];
+static sample_t __attribute__((aligned(16))) xsin1[128];
+
-+#if defined(ARCH_X86) || defined(ARCH_X86_64)
++#if ARCH_X86 || ARCH_X86_64
+// NOTE: SSE needs 16byte alignment or it will segfault
+//
+static float __attribute__((aligned(16))) sseSinCos1c[256];
@@ -1494,7 +1495,7 @@
/* Root values for IFFT */
static sample_t roots16[3];
static sample_t roots32[7];
-@@ -245,7 +321,7 @@
+@@ -241,7 +322,7 @@
ifft_pass (buf, roots128 - 32, 32);
}
@@ -1503,11 +1504,11 @@
{
int i, k;
sample_t t_r, t_i, a_r, a_i, b_r, b_i, w_1, w_2;
-@@ -289,6 +365,701 @@
+@@ -285,6 +366,702 @@
}
}
-+#ifdef HAVE_ALTIVEC
++#if HAVE_ALTIVEC
+
+#ifdef HAVE_ALTIVEC_H
+#include <altivec.h>
@@ -1852,10 +1853,9 @@
+
+// Stuff below this line is borrowed from libac3
+#include "srfftp.h"
-+#if defined(ARCH_X86) || defined(ARCH_X86_64)
-+#ifndef HAVE_AMD3DNOW
++#if ARCH_X86 || ARCH_X86_64
++#undef HAVE_AMD3DNOW
+#define HAVE_AMD3DNOW 1
-+#endif
+#include "srfftp_3dnow.h"
+
+const i_cmplx_t x_plus_minus_3dnow __attribute__ ((aligned (8))) = {{ 0x00000000UL, 0x80000000UL }};
@@ -1863,8 +1863,10 @@
+const complex_t HSQRT2_3DNOW __attribute__ ((aligned (8))) = { 0.707106781188, 0.707106781188 };
+
+#undef HAVE_AMD3DNOWEXT
++#define HAVE_AMD3DNOWEXT 0
+#include "imdct_3dnow.h"
-+#define HAVE_AMD3DNOWEXT
++#undef HAVE_AMD3DNOWEXT
++#define HAVE_AMD3DNOWEXT 1
+#include "imdct_3dnow.h"
+
+void
@@ -2205,7 +2207,7 @@
void a52_imdct_256(sample_t * data, sample_t * delay, sample_t bias)
{
int i, k;
-@@ -368,7 +1145,7 @@
+@@ -364,7 +1141,7 @@
void a52_imdct_init (uint32_t mm_accel)
{
@@ -2214,7 +2216,7 @@
double sum;
/* compute imdct window - kaiser-bessel derived window, alpha = 5.0 */
-@@ -420,6 +1197,99 @@
+@@ -416,6 +1193,99 @@
post2[i].real = cos ((M_PI / 128) * (i + 0.5));
post2[i].imag = sin ((M_PI / 128) * (i + 0.5));
}
@@ -2229,7 +2231,7 @@
+ w[i][k].imag = sin (-M_PI * k / j);
+ }
+ }
-+#if defined(ARCH_X86) || defined(ARCH_X86_64)
++#if ARCH_X86 || ARCH_X86_64
+ for (i = 0; i < 128; i++) {
+ sseSinCos1c[2*i+0]= xcos1[i];
+ sseSinCos1c[2*i+1]= -xcos1[i];
@@ -2283,7 +2285,7 @@
+ ifft128 = ifft128_c;
+ ifft64 = ifft64_c;
+
-+#if defined(ARCH_X86) || defined(ARCH_X86_64)
++#if ARCH_X86 || ARCH_X86_64
+ if(mm_accel & MM_ACCEL_X86_SSE)
+ {
+ fprintf (stderr, "Using SSE optimized IMDCT transform\n");
@@ -2303,7 +2305,7 @@
+ }
+ else
+#endif // ARCH_X86 || ARCH_X86_64
-+#ifdef HAVE_ALTIVEC
++#if HAVE_ALTIVEC
+ if (mm_accel & MM_ACCEL_PPC_ALTIVEC)
+ {
+ fprintf(stderr, "Using AltiVec optimized IMDCT transform\n");
@@ -2314,7 +2316,7 @@
#ifdef LIBA52_DJBFFT
if (mm_accel & MM_ACCEL_DJBFFT) {
-@@ -430,7 +1300,5 @@
+@@ -426,7 +1296,5 @@
#endif
{
fprintf (stderr, "No accelerated IMDCT transform found\n");
@@ -2324,7 +2326,7 @@
}
--- include/mm_accel.h 2006-06-12 15:05:00.000000000 +0200
+++ liba52/mm_accel.h 2006-06-05 02:23:04.000000000 +0200
-@@ -34,7 +34,12 @@
+@@ -30,7 +34,12 @@
/* x86 accelerations */
#define MM_ACCEL_X86_MMX 0x80000000
#define MM_ACCEL_X86_3DNOW 0x40000000
@@ -2339,7 +2341,7 @@
--- liba52/parse.c 2006-12-05 08:08:01.000000000 +0100
+++ liba52/parse.c 2006-12-05 08:08:44.000000000 +0100
-@@ -28,6 +28,7 @@
+@@ -24,6 +28,7 @@
#include "config.h"
#include <stdlib.h>
@@ -2347,7 +2349,7 @@
#include <string.h>
#include <inttypes.h>
-@@ -35,13 +36,12 @@
+@@ -31,13 +36,12 @@
#include "a52_internal.h"
#include "bitstream.h"
#include "tables.h"
@@ -2364,7 +2366,7 @@
#endif
typedef struct {
-@@ -64,7 +64,16 @@
+@@ -60,7 +64,16 @@
if (state == NULL)
return NULL;
@@ -2381,7 +2383,7 @@
if (state->samples == NULL) {
free (state);
return NULL;
-@@ -78,6 +87,7 @@
+@@ -74,6 +87,7 @@
state->lfsr_state = 1;
a52_imdct_init (mm_accel);
@@ -2389,7 +2391,7 @@
return state;
}
-@@ -145,7 +155,7 @@
+@@ -141,7 +155,7 @@
state->acmod = acmod = buf[6] >> 5;
a52_bitstream_set_ptr (state, buf + 6);
@@ -2398,7 +2400,7 @@
if ((acmod == 2) && (bitstream_get (state, 2) == 2)) /* dsurmod */
acmod = A52_DOLBY;
-@@ -176,28 +186,28 @@
+@@ -172,28 +186,28 @@
chaninfo = !acmod;
do {
@@ -2435,7 +2437,7 @@
} while (addbsil--);
}
-@@ -684,7 +694,7 @@
+@@ -680,7 +694,7 @@
state->fbw_expbap[i].exp[0],
state->fbw_expbap[i].exp + 1))
return 1;
@@ -2444,7 +2446,7 @@
}
if (lfeexpstr != EXP_REUSE) {
do_bit_alloc |= 32;
-@@ -759,7 +769,7 @@
+@@ -755,7 +769,7 @@
if (bitstream_get (state, 1)) { /* skiple */
i = bitstream_get (state, 9); /* skipl */
while (i--)
@@ -2453,7 +2455,7 @@
}
samples = state->samples;
-@@ -900,6 +910,10 @@
+@@ -896,6 +910,10 @@
void a52_free (a52_state_t * state)
{
diff --git a/libaf/af_resample.c b/libaf/af_resample.c
index 2536c0706d..2844940000 100644
--- a/libaf/af_resample.c
+++ b/libaf/af_resample.c
@@ -33,7 +33,7 @@
Valid definitions are L8 and L16, where the number denotes the
length of the filter. This definition affects the computational
complexity (see play()), the performance (see filter.h) and the
- memory usage. The filterlength is choosen to 8 if the machine is
+ memory usage. The filter length is chosen to 8 if the machine is
slow and to 16 if the machine is fast and has MMX.
*/
@@ -174,16 +174,14 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
{
switch(cmd){
case AF_CONTROL_REINIT:{
- af_resample_t* s = (af_resample_t*)af->setup;
- af_data_t* n = (af_data_t*)arg; // New configureation
+ af_resample_t* s = af->setup;
+ af_data_t* n = arg; // New configuration
int i,d = 0;
int rv = AF_OK;
- // Free space for circular bufers
+ // Free space for circular buffers
if(s->xq){
- for(i=1;i<af->data->nch;i++)
- if(s->xq[i])
- free(s->xq[i]);
+ free(s->xq[0]);
free(s->xq);
s->xq = NULL;
}
@@ -216,13 +214,14 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
d*=m;
}
- // Create space for circular bufers
+ // Create space for circular buffers
s->xq = malloc(n->nch*sizeof(void*));
- for(i=0;i<n->nch;i++)
- s->xq[i] = malloc(2*L*af->data->bps);
+ s->xq[0] = calloc(n->nch, 2*L*af->data->bps);
+ for(i=1;i<n->nch;i++)
+ s->xq[i] = (uint8_t *)s->xq[i-1] + 2*L*af->data->bps;
s->xi = 0;
- // Check if the the design needs to be redone
+ // Check if the design needs to be redone
if(s->up != af->data->rate/d || s->dn != n->rate/d){
float* w;
float* wt;
@@ -233,9 +232,9 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
s->wi = 0;
s->i = 0;
- // Calculate cuttof frequency for filter
+ // Calculate cutoff frequency for filter
fc = 1/(float)(max(s->up,s->dn));
- // Allocate space for polyphase filter bank and protptype filter
+ // Allocate space for polyphase filter bank and prototype filter
w = malloc(sizeof(float) * s->up *L);
if(NULL != s->w)
free(s->w);
@@ -271,7 +270,7 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
return rv;
}
case AF_CONTROL_COMMAND_LINE:{
- af_resample_t* s = (af_resample_t*)af->setup;
+ af_resample_t* s = af->setup;
int rate=0;
int type=RSMP_INT;
int sloppy=1;
@@ -306,6 +305,13 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
// Deallocate memory
static void uninit(struct af_instance_s* af)
{
+ af_resample_t *s = af->setup;
+ if (s) {
+ if (s->xq) free(s->xq[0]);
+ free(s->xq);
+ free(s->w);
+ free(s);
+ }
if(af->data)
free(af->data->audio);
free(af->data);
@@ -317,7 +323,7 @@ static af_data_t* play(struct af_instance_s* af, af_data_t* data)
int len = 0; // Length of output data
af_data_t* c = data; // Current working data
af_data_t* l = af->data; // Local data
- af_resample_t* s = (af_resample_t*)af->setup;
+ af_resample_t* s = af->setup;
if(AF_OK != RESIZE_LOCAL_BUFFER(af,data))
return NULL;
diff --git a/libao2/ao_alsa.c b/libao2/ao_alsa.c
index 194890ff9a..9541f9c553 100644
--- a/libao2/ao_alsa.c
+++ b/libao2/ao_alsa.c
@@ -57,7 +57,7 @@
#include "audio_out_internal.h"
#include "libaf/af_format.h"
-static ao_info_t info =
+static const ao_info_t info =
{
"ALSA-0.9.x-1.x audio output",
"alsa",
diff --git a/libao2/ao_alsa5.c b/libao2/ao_alsa5.c
index abf2eff827..007a5f1b4f 100644
--- a/libao2/ao_alsa5.c
+++ b/libao2/ao_alsa5.c
@@ -32,7 +32,7 @@
#include "mp_msg.h"
#include "help_mp.h"
-static ao_info_t info =
+static const ao_info_t info =
{
"ALSA-0.5.x audio output",
"alsa5",
diff --git a/libao2/ao_arts.c b/libao2/ao_arts.c
index 30db48fb22..df44db4f02 100644
--- a/libao2/ao_arts.c
+++ b/libao2/ao_arts.c
@@ -38,7 +38,7 @@
static arts_stream_t stream;
-static ao_info_t info =
+static const ao_info_t info =
{
"aRts audio output",
"arts",
diff --git a/libao2/ao_dart.c b/libao2/ao_dart.c
new file mode 100644
index 0000000000..e9bff8df1b
--- /dev/null
+++ b/libao2/ao_dart.c
@@ -0,0 +1,334 @@
+/*
+ * OS/2 DART audio output driver
+ *
+ * Copyright (c) 2007-2009 by KO Myung-Hun (komh@chollian.net)
+ *
+ * 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.
+ */
+
+#define INCL_DOS
+#define INCL_DOSERRORS
+#include <os2.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/time.h>
+#include <float.h>
+
+#include <dart.h>
+
+#include "config.h"
+#include "libaf/af_format.h"
+#include "audio_out.h"
+#include "audio_out_internal.h"
+#include "mp_msg.h"
+#include "libvo/fastmemcpy.h"
+#include "subopt-helper.h"
+
+static const ao_info_t info = {
+ "DART audio output",
+ "dart",
+ "KO Myung-Hun <komh@chollian.net>",
+ ""
+};
+
+LIBAO_EXTERN(dart)
+
+#define OUTBURST_SAMPLES 512
+#define DEFAULT_DART_SAMPLES (OUTBURST_SAMPLES << 2)
+
+#define CHUNK_SIZE ao_data.outburst
+
+static uint8_t *m_audioBuf = NULL;
+
+static int m_nBufSize = 0;
+
+static volatile int m_fQuit = FALSE;
+// may only be modified by DART's playback thread or while it is stopped
+static volatile int m_iBufReadPos = 0;
+// may only be modified by MPlayer's thread
+static volatile int m_iBufWritePos = 0;
+
+// may only be called by MPlayer's thread
+// return value may change between immediately following two calls,
+// and the real number of free bytes might be larger!
+static int buf_free(void)
+{
+ int nFree = m_iBufReadPos - m_iBufWritePos - CHUNK_SIZE;
+
+ if (nFree < 0)
+ nFree += m_nBufSize;
+
+ return nFree;
+}
+
+// may only be called by DART's playback thread
+// return value may change between immediately following two calls,
+// and the real number of buffered bytes might be larger!
+static int buf_used(void)
+{
+ int nUsed = m_iBufWritePos - m_iBufReadPos;
+
+ if (nUsed < 0)
+ nUsed += m_nBufSize;
+
+ return nUsed;
+}
+
+static int write_buffer(unsigned char *data, int len)
+{
+ int nFirstLen = m_nBufSize - m_iBufWritePos;
+ int nFree = buf_free();
+
+ if (len > nFree)
+ len = nFree;
+
+ if (nFirstLen > len)
+ nFirstLen = len;
+
+ // till end of buffer
+ fast_memcpy(m_audioBuf + m_iBufWritePos, data, nFirstLen);
+ if (len > nFirstLen) { // we have to wrap around
+ // remaining part from beginning of buffer
+ fast_memcpy(m_audioBuf, data + nFirstLen, len - nFirstLen);
+ }
+
+ m_iBufWritePos = (m_iBufWritePos + len) % m_nBufSize;
+
+ return len;
+}
+
+static int read_buffer(unsigned char *data, int len)
+{
+ int nFirstLen = m_nBufSize - m_iBufReadPos;
+ int nBuffered = buf_used();
+
+ if (len > nBuffered)
+ len = nBuffered;
+
+ if (nFirstLen > len)
+ nFirstLen = len;
+
+ // till end of buffer
+ fast_memcpy(data, m_audioBuf + m_iBufReadPos, nFirstLen);
+ if (len > nFirstLen) { // we have to wrap around
+ // remaining part from beginning of buffer
+ fast_memcpy(data + nFirstLen, m_audioBuf, len - nFirstLen);
+ }
+
+ m_iBufReadPos = (m_iBufReadPos + len) % m_nBufSize;
+
+ return len;
+}
+
+// end ring buffer stuff
+
+static ULONG APIENTRY dart_audio_callback(PVOID pCBData, PVOID pBuffer,
+ ULONG ulSize)
+{
+ int nReadLen;
+
+ nReadLen = read_buffer(pBuffer, ulSize);
+ if (nReadLen < ulSize && !m_fQuit) {
+ memset((uint8_t *)pBuffer + nReadLen, DART.bSilence, ulSize - nReadLen);
+ nReadLen = ulSize;
+ }
+
+ return nReadLen;
+}
+
+// to set/get/query special features/parameters
+static int control(int cmd, void *arg)
+{
+ switch (cmd) {
+ case AOCONTROL_GET_VOLUME:
+ {
+ ao_control_vol_t *vol = arg;
+
+ vol->left = vol->right = LOUSHORT(dartGetVolume());
+
+ return CONTROL_OK;
+ }
+
+ case AOCONTROL_SET_VOLUME:
+ {
+ int mid;
+ ao_control_vol_t *vol = arg;
+
+ mid = (vol->left + vol->right) / 2;
+ dartSetVolume(MCI_SET_AUDIO_ALL, mid);
+
+ return CONTROL_OK;
+ }
+ }
+
+ return CONTROL_UNKNOWN;
+}
+
+static void print_help(void)
+{
+ mp_msg(MSGT_AO, MSGL_FATAL,
+ "\n-ao dart commandline help:\n"
+ "Example: mplayer -ao dart:noshare\n"
+ " open DART in exclusive mode\n"
+ "\nOptions:\n"
+ " (no)share\n"
+ " Open DART in shareable or exclusive mode\n"
+ " bufsize=<size>\n"
+ " Set buffer size to <size> in samples(default: 2048)\n");
+}
+
+// open & set up audio device
+// return: 1=success 0=fail
+static int init(int rate, int channels, int format, int flags)
+{
+ int fShare = 1;
+ int nDartSamples = DEFAULT_DART_SAMPLES;
+ int nBytesPerSample;
+
+ opt_t subopts[] = {
+ {"share", OPT_ARG_BOOL, &fShare, NULL},
+ {"bufsize", OPT_ARG_INT, &nDartSamples, (opt_test_f)int_non_neg},
+ {NULL}
+ };
+
+ if (subopt_parse(ao_subdevice, subopts) != 0) {
+ print_help();
+ return 0;
+ }
+
+ if (!nDartSamples)
+ nDartSamples = DEFAULT_DART_SAMPLES;
+
+ mp_msg(MSGT_AO, MSGL_V, "DART: opened in %s mode, buffer size = %d sample(s)\n",
+ fShare ? "shareable" : "exclusive", nDartSamples);
+
+ switch (format) {
+ case AF_FORMAT_S16_LE:
+ case AF_FORMAT_S8:
+ break;
+
+ default:
+ format = AF_FORMAT_S16_LE;
+ mp_msg(MSGT_AO, MSGL_V, "DART: format %s not supported defaulting to Signed 16-bit Little-Endian\n",
+ af_fmt2str_short(format));
+ break;
+ }
+
+ nBytesPerSample = (af_fmt2bits(format) >> 3) * channels;
+
+ if (dartInit(0, af_fmt2bits(format), rate, MCI_WAVE_FORMAT_PCM, channels,
+ 2, nBytesPerSample * nDartSamples, fShare,
+ dart_audio_callback, NULL))
+ return 0;
+
+ mp_msg(MSGT_AO, MSGL_V, "DART: obtained buffer size = %lu bytes\n",
+ DART.ulBufferSize);
+
+ m_fQuit = FALSE;
+
+ ao_data.channels = channels;
+ ao_data.samplerate = rate;
+ ao_data.format = format;
+ ao_data.bps = nBytesPerSample * rate;
+ ao_data.outburst = nBytesPerSample * OUTBURST_SAMPLES;
+ ao_data.buffersize = DART.ulBufferSize;
+
+ // multiple of CHUNK_SIZE
+ m_nBufSize = ((DART.ulBufferSize << 2) / CHUNK_SIZE) * CHUNK_SIZE;
+ // and one more chunk plus round up
+ m_nBufSize += 2 * CHUNK_SIZE;
+
+ m_audioBuf = malloc(m_nBufSize);
+
+ m_iBufReadPos = 0;
+ m_iBufWritePos = 0;
+
+ dartPlay();
+
+ // might cause PM DLLs to be loaded which incorrectly enable SIG_FPE,
+ // which AAC decoding might trigger.
+ // so, mask off all floating-point exceptions.
+ _control87(MCW_EM, MCW_EM);
+
+ return 1;
+}
+
+// close audio device
+static void uninit(int immed)
+{
+ m_fQuit = TRUE;
+
+ if (!immed) {
+ while (DART.fPlaying)
+ DosSleep(1);
+ }
+
+ dartClose();
+
+ free(m_audioBuf);
+}
+
+// stop playing and empty buffers (for seeking/pause)
+static void reset(void)
+{
+ dartPause();
+
+ // Reset ring-buffer state
+ m_iBufReadPos = 0;
+ m_iBufWritePos = 0;
+
+ dartResume();
+}
+
+// stop playing, keep buffers (for pause)
+static void audio_pause(void)
+{
+ dartPause();
+}
+
+// resume playing, after audio_pause()
+static void audio_resume(void)
+{
+ dartResume();
+}
+
+// return: how many bytes can be played without blocking
+static int get_space(void)
+{
+ return buf_free();
+}
+
+// plays 'len' bytes of 'data'
+// it should round it down to outburst*n
+// return: number of bytes played
+static int play(void *data, int len, int flags)
+{
+
+ if (!(flags & AOPLAY_FINAL_CHUNK))
+ len = (len / ao_data.outburst) * ao_data.outburst;
+
+ return write_buffer(data, len);
+}
+
+// return: delay in seconds between first and last sample in buffer
+static float get_delay(void)
+{
+ int nBuffered = m_nBufSize - CHUNK_SIZE - buf_free(); // could be less
+
+ return (float)nBuffered / (float)ao_data.bps;
+}
diff --git a/libao2/ao_dsound.c b/libao2/ao_dsound.c
index acd59983dd..729084b145 100644
--- a/libao2/ao_dsound.c
+++ b/libao2/ao_dsound.c
@@ -42,7 +42,7 @@
#include "subopt-helper.h"
-static ao_info_t info =
+static const ao_info_t info =
{
"Windows DirectSound audio output",
"dsound",
@@ -431,7 +431,7 @@ static int init(int rate, int channels, int format, int flags)
case AF_FORMAT_AC3:
case AF_FORMAT_S24_LE:
case AF_FORMAT_S16_LE:
- case AF_FORMAT_S8:
+ case AF_FORMAT_U8:
break;
default:
mp_msg(MSGT_AO, MSGL_V,"ao_dsound: format %s not supported defaulting to Signed 16-bit Little-Endian\n",af_fmt2str_short(format));
diff --git a/libao2/ao_dxr2.c b/libao2/ao_dxr2.c
index cd92ea325c..7f9594fb4d 100644
--- a/libao2/ao_dxr2.c
+++ b/libao2/ao_dxr2.c
@@ -36,7 +36,7 @@
#include "libmpdemux/mpeg_packetizer.h"
-static ao_info_t info =
+static const ao_info_t info =
{
"DXR2 audio output",
"dxr2",
diff --git a/libao2/ao_esd.c b/libao2/ao_esd.c
index a5602ff894..d54f843c65 100644
--- a/libao2/ao_esd.c
+++ b/libao2/ao_esd.c
@@ -67,7 +67,7 @@
#define ESD_CLIENT_NAME "MPlayer"
#define ESD_MAX_DELAY (1.0f) /* max amount of data buffered in esd (#sec) */
-static ao_info_t info =
+static const ao_info_t info =
{
"EsounD audio output",
"esd",
diff --git a/libao2/ao_ivtv.c b/libao2/ao_ivtv.c
index 71b58c0637..2b182ff191 100644
--- a/libao2/ao_ivtv.c
+++ b/libao2/ao_ivtv.c
@@ -41,7 +41,7 @@
static int freq = 0;
-static ao_info_t info =
+static const ao_info_t info =
{
"IVTV MPEG Audio Decoder output",
"ivtv",
diff --git a/libao2/ao_jack.c b/libao2/ao_jack.c
index d7f2092a43..e861d08aed 100644
--- a/libao2/ao_jack.c
+++ b/libao2/ao_jack.c
@@ -40,7 +40,7 @@
#include <jack/jack.h>
-static ao_info_t info =
+static const ao_info_t info =
{
"JACK audio output",
"jack",
diff --git a/libao2/ao_macosx.c b/libao2/ao_macosx.c
index fcbda6f1a1..fb5883b3fb 100644
--- a/libao2/ao_macosx.c
+++ b/libao2/ao_macosx.c
@@ -53,7 +53,7 @@
#include "libaf/af_format.h"
#include "osdep/timer.h"
-static ao_info_t info =
+static const ao_info_t info =
{
"Darwin/Mac OS X native audio output",
"macosx",
diff --git a/libao2/ao_mpegpes.c b/libao2/ao_mpegpes.c
index 5af124fd42..88ab903ed1 100644
--- a/libao2/ao_mpegpes.c
+++ b/libao2/ao_mpegpes.c
@@ -63,7 +63,7 @@ int vo_mpegpes_fd2 = -1;
#include <errno.h>
-static ao_info_t info =
+static const ao_info_t info =
{
#ifdef CONFIG_DVB
"DVB audio output",
diff --git a/libao2/ao_nas.c b/libao2/ao_nas.c
index 9394649cc0..e5e675be3f 100644
--- a/libao2/ao_nas.c
+++ b/libao2/ao_nas.c
@@ -119,7 +119,7 @@ static const char* nas_state(unsigned int state) {
return nas_states[state];
}
-static ao_info_t info =
+static const ao_info_t info =
{
"NAS audio output",
"nas",
diff --git a/libao2/ao_null.c b/libao2/ao_null.c
index 2e28b8f1e8..20b715fb96 100644
--- a/libao2/ao_null.c
+++ b/libao2/ao_null.c
@@ -27,7 +27,7 @@
#include "audio_out.h"
#include "audio_out_internal.h"
-static ao_info_t info =
+static const ao_info_t info =
{
"Null audio output",
"null",
diff --git a/libao2/ao_openal.c b/libao2/ao_openal.c
index c91694dc05..c80c49b27a 100644
--- a/libao2/ao_openal.c
+++ b/libao2/ao_openal.c
@@ -42,7 +42,7 @@
#include "osdep/timer.h"
#include "subopt-helper.h"
-static ao_info_t info =
+static const ao_info_t info =
{
"OpenAL audio output",
"openal",
diff --git a/libao2/ao_oss.c b/libao2/ao_oss.c
index a98d5d1922..e4688d1723 100644
--- a/libao2/ao_oss.c
+++ b/libao2/ao_oss.c
@@ -48,7 +48,7 @@
#include "audio_out.h"
#include "audio_out_internal.h"
-static ao_info_t info =
+static const ao_info_t info =
{
"OSS/ioctl audio output",
"oss",
diff --git a/libao2/ao_pcm.c b/libao2/ao_pcm.c
index bd66ed0dab..bf3f224e81 100644
--- a/libao2/ao_pcm.c
+++ b/libao2/ao_pcm.c
@@ -35,7 +35,7 @@
#include "help_mp.h"
-static ao_info_t info =
+static const ao_info_t info =
{
"RAW PCM/WAVE file writer audio output",
"pcm",
diff --git a/libao2/ao_pulse.c b/libao2/ao_pulse.c
index d6974f85e0..2d27c85540 100644
--- a/libao2/ao_pulse.c
+++ b/libao2/ao_pulse.c
@@ -33,7 +33,7 @@
#define PULSE_CLIENT_NAME "MPlayer"
/** General driver info */
-static ao_info_t info = {
+static const ao_info_t info = {
"PulseAudio audio output",
"pulse",
"Lennart Poettering",
diff --git a/libao2/ao_sdl.c b/libao2/ao_sdl.c
index 645c9e9685..31693be229 100644
--- a/libao2/ao_sdl.c
+++ b/libao2/ao_sdl.c
@@ -38,7 +38,7 @@
#include "libvo/fastmemcpy.h"
-static ao_info_t info =
+static const ao_info_t info =
{
"SDLlib audio output",
"sdl",
diff --git a/libao2/ao_sgi.c b/libao2/ao_sgi.c
index db7c486c83..46b79c1e2e 100644
--- a/libao2/ao_sgi.c
+++ b/libao2/ao_sgi.c
@@ -32,7 +32,7 @@
#include "help_mp.h"
#include "libaf/af_format.h"
-static ao_info_t info =
+static const ao_info_t info =
{
"sgi audio output",
"sgi",
diff --git a/libao2/ao_sun.c b/libao2/ao_sun.c
index cae2287f6c..725a49e324 100644
--- a/libao2/ao_sun.c
+++ b/libao2/ao_sun.c
@@ -49,7 +49,7 @@
#include "mp_msg.h"
#include "help_mp.h"
-static ao_info_t info =
+static const ao_info_t info =
{
"Sun audio output",
"sun",
diff --git a/libao2/ao_v4l2.c b/libao2/ao_v4l2.c
index eca46f01ac..a57cea91c3 100644
--- a/libao2/ao_v4l2.c
+++ b/libao2/ao_v4l2.c
@@ -38,7 +38,7 @@
static int freq = 0;
-static ao_info_t info =
+static const ao_info_t info =
{
"V4L2 MPEG Audio Decoder output",
"v4l2",
diff --git a/libao2/ao_win32.c b/libao2/ao_win32.c
index 40830eb233..c29e05935f 100644
--- a/libao2/ao_win32.c
+++ b/libao2/ao_win32.c
@@ -87,12 +87,10 @@ static const int channel_mask[] = {
static WAVEHDR* waveBlocks; //pointer to our ringbuffer memory
static HWAVEOUT hWaveOut; //handle to the waveout device
static unsigned int buf_write=0;
-static unsigned int buf_write_pos=0;
-static int full_buffers=0;
-static int buffered_bytes=0;
+static volatile int buf_read=0;
-static ao_info_t info =
+static const ao_info_t info =
{
"Windows waveOut audio output",
"win32",
@@ -102,17 +100,12 @@ static ao_info_t info =
LIBAO_EXTERN(win32)
-static void CALLBACK waveOutProc(HWAVEOUT hWaveOut,UINT uMsg,DWORD dwInstance,
+static void CALLBACK waveOutProc(HWAVEOUT hWaveOut,UINT uMsg,DWORD dwInstance,
DWORD dwParam1,DWORD dwParam2)
{
if(uMsg != WOM_DONE)
return;
- if (full_buffers) {
- buffered_bytes-=BUFFER_SIZE;
- --full_buffers;
- } else {
- buffered_bytes=0;
- }
+ buf_read = (buf_read + 1) % BUFFER_COUNT;
}
// to set/get/query special features/parameters
@@ -145,34 +138,34 @@ static int control(int cmd,void *arg)
// return: 1=success 0=fail
static int init(int rate,int channels,int format,int flags)
{
- WAVEFORMATEXTENSIBLE wformat;
- DWORD totalBufferSize = (BUFFER_SIZE + sizeof(WAVEHDR)) * BUFFER_COUNT;
+ WAVEFORMATEXTENSIBLE wformat;
MMRESULT result;
unsigned char* buffer;
int i;
-
+
switch(format){
case AF_FORMAT_AC3:
case AF_FORMAT_S24_LE:
case AF_FORMAT_S16_LE:
- case AF_FORMAT_S8:
+ case AF_FORMAT_U8:
break;
default:
mp_msg(MSGT_AO, MSGL_V,"ao_win32: format %s not supported defaulting to Signed 16-bit Little-Endian\n",af_fmt2str_short(format));
format=AF_FORMAT_S16_LE;
- }
+ }
// FIXME multichannel mode is buggy
if(channels > 2)
channels = 2;
-
- //fill global ao_data
+
+ //fill global ao_data
ao_data.channels=channels;
ao_data.samplerate=rate;
ao_data.format=format;
ao_data.bps=channels*rate;
if(format != AF_FORMAT_U8 && format != AF_FORMAT_S8)
ao_data.bps*=2;
+ ao_data.outburst = BUFFER_SIZE;
if(ao_data.buffersize==-1)
{
ao_data.buffersize=af_fmt2bits(format)/8;
@@ -181,22 +174,22 @@ static int init(int rate,int channels,int format,int flags)
}
mp_msg(MSGT_AO, MSGL_V,"ao_win32: Samplerate:%iHz Channels:%i Format:%s\n",rate, channels, af_fmt2str_short(format));
mp_msg(MSGT_AO, MSGL_V,"ao_win32: Buffersize:%d\n",ao_data.buffersize);
-
+
//fill waveformatex
ZeroMemory( &wformat, sizeof(WAVEFORMATEXTENSIBLE));
wformat.Format.cbSize = (channels>2)?sizeof(WAVEFORMATEXTENSIBLE)-sizeof(WAVEFORMATEX):0;
- wformat.Format.nChannels = channels;
- wformat.Format.nSamplesPerSec = rate;
+ wformat.Format.nChannels = channels;
+ wformat.Format.nSamplesPerSec = rate;
if(format == AF_FORMAT_AC3)
{
wformat.Format.wFormatTag = WAVE_FORMAT_DOLBY_AC3_SPDIF;
wformat.Format.wBitsPerSample = 16;
wformat.Format.nBlockAlign = 4;
}
- else
+ else
{
wformat.Format.wFormatTag = (channels>2)?WAVE_FORMAT_EXTENSIBLE:WAVE_FORMAT_PCM;
- wformat.Format.wBitsPerSample = af_fmt2bits(format);
+ wformat.Format.wBitsPerSample = af_fmt2bits(format);
wformat.Format.nBlockAlign = wformat.Format.nChannels * (wformat.Format.wBitsPerSample >> 3);
}
if(channels>2)
@@ -205,9 +198,9 @@ static int init(int rate,int channels,int format,int flags)
wformat.SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
wformat.Samples.wValidBitsPerSample=af_fmt2bits(format);
}
-
+
wformat.Format.nAvgBytesPerSec = wformat.Format.nSamplesPerSec * wformat.Format.nBlockAlign;
-
+
//open sound device
//WAVE_MAPPER always points to the default wave device on the system
result = waveOutOpen(&hWaveOut,WAVE_MAPPER,(WAVEFORMATEX*)&wformat,(DWORD_PTR)waveOutProc,0,CALLBACK_FUNCTION);
@@ -231,9 +224,8 @@ static int init(int rate,int channels,int format,int flags)
return 0;
}
//allocate buffer memory as one big block
- buffer = malloc(totalBufferSize);
- memset(buffer,0x0,totalBufferSize);
- //and setup pointers to each buffer
+ buffer = calloc(BUFFER_COUNT, BUFFER_SIZE + sizeof(WAVEHDR));
+ //and setup pointers to each buffer
waveBlocks = (WAVEHDR*)buffer;
buffer += sizeof(WAVEHDR) * BUFFER_COUNT;
for(i = 0; i < BUFFER_COUNT; i++) {
@@ -241,9 +233,7 @@ static int init(int rate,int channels,int format,int flags)
buffer += BUFFER_SIZE;
}
buf_write=0;
- buf_write_pos=0;
- full_buffers=0;
- buffered_bytes=0;
+ buf_read=0;
return 1;
}
@@ -251,8 +241,8 @@ static int init(int rate,int channels,int format,int flags)
// close audio device
static void uninit(int immed)
{
- if(!immed)while(buffered_bytes > 0)usec_sleep(50000);
- else buffered_bytes=0;
+ if(!immed)
+ usec_sleep(get_delay() * 1000 * 1000);
waveOutReset(hWaveOut);
waveOutClose(hWaveOut);
mp_msg(MSGT_AO, MSGL_V,"waveOut device closed\n");
@@ -265,9 +255,7 @@ static void reset(void)
{
waveOutReset(hWaveOut);
buf_write=0;
- buf_write_pos=0;
- full_buffers=0;
- buffered_bytes=0;
+ buf_read=0;
}
// stop playing, keep buffers (for pause)
@@ -285,7 +273,9 @@ static void audio_resume(void)
// return: how many bytes can be played without blocking
static int get_space(void)
{
- return BUFFER_COUNT*BUFFER_SIZE - buffered_bytes;
+ int free = buf_read - buf_write - 1;
+ if (free < 0) free += BUFFER_COUNT;
+ return free * BUFFER_SIZE;
}
//writes data into buffer, based on ringbuffer code in ao_sdl.c
@@ -293,28 +283,23 @@ static int write_waveOutBuffer(unsigned char* data,int len){
WAVEHDR* current;
int len2=0;
int x;
- while(len>0){
+ while(len>0){
+ int buf_next = (buf_write + 1) % BUFFER_COUNT;
current = &waveBlocks[buf_write];
- if(buffered_bytes==BUFFER_COUNT*BUFFER_SIZE) break;
+ if(buf_next == buf_read) break;
//unprepare the header if it is prepared
- if(current->dwFlags & WHDR_PREPARED)
+ if(current->dwFlags & WHDR_PREPARED)
waveOutUnprepareHeader(hWaveOut, current, sizeof(WAVEHDR));
- x=BUFFER_SIZE-buf_write_pos;
- if(x>len) x=len;
- fast_memcpy(current->lpData+buf_write_pos,data+len2,x);
- if(buf_write_pos==0)full_buffers++;
- len2+=x; len-=x;
- buffered_bytes+=x; buf_write_pos+=x;
+ x=BUFFER_SIZE;
+ if(x>len) x=len;
+ fast_memcpy(current->lpData,data+len2,x);
+ len2+=x; len-=x;
//prepare header and write data to device
- current->dwBufferLength = buf_write_pos;
+ current->dwBufferLength = x;
waveOutPrepareHeader(hWaveOut, current, sizeof(WAVEHDR));
waveOutWrite(hWaveOut, current, sizeof(WAVEHDR));
-
- if(buf_write_pos>=BUFFER_SIZE){ //buffer is full find next
- // block is full, find next!
- buf_write=(buf_write+1)%BUFFER_COUNT;
- buf_write_pos=0;
- }
+
+ buf_write = buf_next;
}
return len2;
}
@@ -332,5 +317,7 @@ static int play(void* data,int len,int flags)
// return: delay in seconds between first and last sample in buffer
static float get_delay(void)
{
- return (float)(buffered_bytes + ao_data.buffersize)/(float)ao_data.bps;
+ int used = buf_write - buf_read;
+ if (used < 0) used += BUFFER_COUNT;
+ return (float)(used * BUFFER_SIZE + ao_data.buffersize)/(float)ao_data.bps;
}
diff --git a/libao2/audio_out.c b/libao2/audio_out.c
index ee62ebc016..8c64abbb95 100644
--- a/libao2/audio_out.c
+++ b/libao2/audio_out.c
@@ -30,28 +30,29 @@
ao_data_t ao_data={0,0,0,0,OUTBURST,-1,0};
char *ao_subdevice = NULL;
-extern ao_functions_t audio_out_oss;
-extern ao_functions_t audio_out_macosx;
-extern ao_functions_t audio_out_arts;
-extern ao_functions_t audio_out_esd;
-extern ao_functions_t audio_out_pulse;
-extern ao_functions_t audio_out_jack;
-extern ao_functions_t audio_out_openal;
-extern ao_functions_t audio_out_null;
-extern ao_functions_t audio_out_alsa5;
-extern ao_functions_t audio_out_alsa;
-extern ao_functions_t audio_out_nas;
-extern ao_functions_t audio_out_sdl;
-extern ao_functions_t audio_out_sun;
-extern ao_functions_t audio_out_sgi;
-extern ao_functions_t audio_out_win32;
-extern ao_functions_t audio_out_dsound;
-extern ao_functions_t audio_out_dxr2;
-extern ao_functions_t audio_out_ivtv;
-extern ao_functions_t audio_out_v4l2;
-extern ao_functions_t audio_out_mpegpes;
-extern ao_functions_t audio_out_pcm;
-extern ao_functions_t audio_out_pss;
+extern const ao_functions_t audio_out_oss;
+extern const ao_functions_t audio_out_macosx;
+extern const ao_functions_t audio_out_arts;
+extern const ao_functions_t audio_out_esd;
+extern const ao_functions_t audio_out_pulse;
+extern const ao_functions_t audio_out_jack;
+extern const ao_functions_t audio_out_openal;
+extern const ao_functions_t audio_out_null;
+extern const ao_functions_t audio_out_alsa5;
+extern const ao_functions_t audio_out_alsa;
+extern const ao_functions_t audio_out_nas;
+extern const ao_functions_t audio_out_sdl;
+extern const ao_functions_t audio_out_sun;
+extern const ao_functions_t audio_out_sgi;
+extern const ao_functions_t audio_out_win32;
+extern const ao_functions_t audio_out_dsound;
+extern const ao_functions_t audio_out_dart;
+extern const ao_functions_t audio_out_dxr2;
+extern const ao_functions_t audio_out_ivtv;
+extern const ao_functions_t audio_out_v4l2;
+extern const ao_functions_t audio_out_mpegpes;
+extern const ao_functions_t audio_out_pcm;
+extern const ao_functions_t audio_out_pss;
const ao_functions_t* const audio_out_drivers[] =
{
@@ -62,6 +63,9 @@ const ao_functions_t* const audio_out_drivers[] =
#ifdef CONFIG_WIN32WAVEOUT
&audio_out_win32,
#endif
+#ifdef CONFIG_DART
+ &audio_out_dart,
+#endif
#ifdef CONFIG_COREAUDIO
&audio_out_macosx,
#endif
diff --git a/libao2/audio_out.h b/libao2/audio_out.h
index e7494c89da..b7f51e0ed8 100644
--- a/libao2/audio_out.h
+++ b/libao2/audio_out.h
@@ -34,7 +34,7 @@ typedef struct ao_info_s
/* interface towards mplayer and */
typedef struct ao_functions_s
{
- ao_info_t *info;
+ const ao_info_t *info;
int (*control)(int cmd,void *arg);
int (*init)(int rate,int channels,int format,int flags);
void (*uninit)(int immed);
diff --git a/libao2/audio_out_internal.h b/libao2/audio_out_internal.h
index e702430cc5..504923b162 100644
--- a/libao2/audio_out_internal.h
+++ b/libao2/audio_out_internal.h
@@ -31,7 +31,7 @@ static float get_delay(void);
static void audio_pause(void);
static void audio_resume(void);
-#define LIBAO_EXTERN(x) ao_functions_t audio_out_##x =\
+#define LIBAO_EXTERN(x) const ao_functions_t audio_out_##x =\
{\
&info,\
control,\
diff --git a/libass/ass.c b/libass/ass.c
index 8022dfc9be..612c8d6aae 100644
--- a/libass/ass.c
+++ b/libass/ass.c
@@ -347,6 +347,8 @@ void process_force_style(ass_track_t* track) {
track->Timer = atof(token);
else if(!strcasecmp(*fs, "WrapStyle"))
track->WrapStyle = atoi(token);
+ else if(!strcasecmp(*fs, "ScaledBorderAndShadow"))
+ track->ScaledBorderAndShadow = parse_bool(token);
dt = strrchr(*fs, '.');
if (dt) {
@@ -520,6 +522,8 @@ static int process_info_line(ass_track_t* track, char *str)
track->Timer = atof(str + 6);
} else if (!strncmp(str,"WrapStyle:", 10)) {
track->WrapStyle = atoi(str + 10);
+ } else if (!strncmp(str, "ScaledBorderAndShadow:", 22)) {
+ track->ScaledBorderAndShadow = parse_bool(str + 22);
}
return 0;
}
diff --git a/libass/ass_bitmap.c b/libass/ass_bitmap.c
index 9ccb1bada9..61457f1fcc 100644
--- a/libass/ass_bitmap.c
+++ b/libass/ass_bitmap.c
@@ -214,6 +214,7 @@ static bitmap_t* glyph_to_bitmap_internal(FT_Glyph glyph, int bord)
dst += bm->w;
}
+ FT_Done_Glyph(glyph);
return bm;
}
@@ -242,7 +243,7 @@ static bitmap_t* fix_outline_and_shadow(bitmap_t* bm_g, bitmap_t* bm_o)
unsigned char c_g, c_o;
c_g = g[x];
c_o = o[x];
- o[x] = (c_o > c_g) ? c_o : 0;
+ o[x] = (c_o > c_g) ? c_o - (c_g/2) : 0;
s[x] = (c_o < 0xFF - c_g) ? c_o + c_g : 0xFF;
}
g += bm_g->w;
@@ -254,11 +255,38 @@ static bitmap_t* fix_outline_and_shadow(bitmap_t* bm_g, bitmap_t* bm_o)
return bm_s;
}
-int glyph_to_bitmap(ass_synth_priv_t* priv, ass_synth_priv_t* priv_blur,
+/**
+ * \brief Blur with [[1,2,1]. [2,4,2], [1,2,1]] kernel
+ * This blur is the same as the one employed by vsfilter.
+ */
+static void be_blur(unsigned char *buf, int w, int h) {
+ unsigned int x, y;
+ unsigned int old_sum, new_sum;
+
+ for (y=0; y<h; y++) {
+ old_sum = 2 * buf[y*w];
+ for (x=0; x<w-1; x++) {
+ new_sum = buf[y*w+x] + buf[y*w+x+1];
+ buf[y*w+x] = (old_sum + new_sum) >> 2;
+ old_sum = new_sum;
+ }
+ }
+
+ for (x=0; x<w; x++) {
+ old_sum = 2 * buf[x];
+ for (y=0; y<h-1; y++) {
+ new_sum = buf[y*w+x] + buf[(y+1)*w+x];
+ buf[y*w+x] = (old_sum + new_sum) >> 2;
+ old_sum = new_sum;
+ }
+ }
+}
+
+int glyph_to_bitmap(ass_synth_priv_t* priv_blur,
FT_Glyph glyph, FT_Glyph outline_glyph, bitmap_t** bm_g,
bitmap_t** bm_o, bitmap_t** bm_s, int be, double blur_radius)
{
- int bord = be ? (be+1) : 0;
+ int bord = be ? (be/4+1) : 0;
blur_radius *= 2;
bord = (blur_radius > 0.0) ? blur_radius : bord;
@@ -278,19 +306,16 @@ int glyph_to_bitmap(ass_synth_priv_t* priv, ass_synth_priv_t* priv_blur,
return 1;
}
}
- if (*bm_o) {
- resize_tmp(priv, (*bm_o)->w, (*bm_o)->h);
+ if (*bm_o)
resize_tmp(priv_blur, (*bm_o)->w, (*bm_o)->h);
- }
- resize_tmp(priv, (*bm_g)->w, (*bm_g)->h);
resize_tmp(priv_blur, (*bm_g)->w, (*bm_g)->h);
if (be) {
while (be--) {
if (*bm_o)
- blur((*bm_o)->buffer, priv->tmp, (*bm_o)->w, (*bm_o)->h, (*bm_o)->w, (int*)priv->gt2, priv->g_r, priv->g_w);
+ be_blur((*bm_o)->buffer, (*bm_o)->w, (*bm_o)->h);
else
- blur((*bm_g)->buffer, priv->tmp, (*bm_g)->w, (*bm_g)->h, (*bm_g)->w, (int*)priv->gt2, priv->g_r, priv->g_w);
+ be_blur((*bm_g)->buffer, (*bm_g)->w, (*bm_g)->h);
}
} else {
if (blur_radius > 0.0) {
diff --git a/libass/ass_bitmap.h b/libass/ass_bitmap.h
index 5f45aae4b2..c0b4ad201f 100644
--- a/libass/ass_bitmap.h
+++ b/libass/ass_bitmap.h
@@ -46,7 +46,7 @@ typedef struct bitmap_s {
* \param bm_g out: pointer to the bitmap of glyph shadow is returned here
* \param be 1 = produces blurred bitmaps, 0 = normal bitmaps
*/
-int glyph_to_bitmap(ass_synth_priv_t* priv, ass_synth_priv_t* priv_blur, FT_Glyph glyph, FT_Glyph outline_glyph, bitmap_t** bm_g, bitmap_t** bm_o, bitmap_t** bm_s, int be, double blur_radius);
+int glyph_to_bitmap(ass_synth_priv_t* priv_blur, FT_Glyph glyph, FT_Glyph outline_glyph, bitmap_t** bm_g, bitmap_t** bm_o, bitmap_t** bm_s, int be, double blur_radius);
void ass_free_bitmap(bitmap_t* bm);
diff --git a/libass/ass_cache.c b/libass/ass_cache.c
index 8c4c91e739..8b9926915f 100644
--- a/libass/ass_cache.c
+++ b/libass/ass_cache.c
@@ -332,3 +332,53 @@ void ass_glyph_cache_reset(void)
ass_glyph_cache_done();
ass_glyph_cache_init();
}
+
+
+//---------------------------------
+// composite cache
+
+hashmap_t* composite_cache;
+
+static void composite_hash_dtor(void* key, size_t key_size, void* value, size_t value_size)
+{
+ composite_hash_val_t* v = value;
+ free(v->a);
+ free(v->b);
+ free(key);
+ free(value);
+}
+
+void* cache_add_composite(composite_hash_key_t* key, composite_hash_val_t* val)
+{
+ return hashmap_insert(composite_cache, key, val);
+}
+
+/**
+ * \brief Get a composite bitmap from composite cache.
+ * \param key hash key
+ * \return requested hash val or 0 if not found
+*/
+composite_hash_val_t* cache_find_composite(composite_hash_key_t* key)
+{
+ return hashmap_find(composite_cache, key);
+}
+
+void ass_composite_cache_init(void)
+{
+ composite_cache = hashmap_init(sizeof(composite_hash_key_t),
+ sizeof(composite_hash_val_t),
+ 0xFFFF + 13,
+ composite_hash_dtor, NULL, NULL);
+}
+
+void ass_composite_cache_done(void)
+{
+ hashmap_done(composite_cache);
+}
+
+void ass_composite_cache_reset(void)
+{
+ ass_composite_cache_done();
+ ass_composite_cache_init();
+}
+
diff --git a/libass/ass_cache.h b/libass/ass_cache.h
index a76d935992..bad0ed8e6e 100644
--- a/libass/ass_cache.h
+++ b/libass/ass_cache.h
@@ -49,6 +49,27 @@ bitmap_hash_val_t* cache_find_bitmap(bitmap_hash_key_t* key);
void ass_bitmap_cache_reset(void);
void ass_bitmap_cache_done(void);
+
+// Cache for composited bitmaps
+typedef struct composite_hash_key_s {
+ int aw, ah, bw, bh;
+ int ax, ay, bx, by;
+ bitmap_hash_key_t a;
+ bitmap_hash_key_t b;
+} composite_hash_key_t;
+
+typedef struct composite_hash_val_s {
+ unsigned char* a;
+ unsigned char* b;
+} composite_hash_val_t;
+
+void ass_composite_cache_init(void);
+void* cache_add_composite(composite_hash_key_t* key, composite_hash_val_t* val);
+composite_hash_val_t* cache_find_composite(composite_hash_key_t* key);
+void ass_composite_cache_reset(void);
+void ass_composite_cache_done(void);
+
+
typedef struct glyph_hash_val_s {
FT_Glyph glyph;
FT_Glyph outline_glyph;
diff --git a/libass/ass_render.c b/libass/ass_render.c
index a755f23223..5eb28ccff0 100644
--- a/libass/ass_render.c
+++ b/libass/ass_render.c
@@ -43,8 +43,10 @@
#define MAX_GLYPHS 3000
#define MAX_LINES 300
-#define BE_RADIUS 1.5
#define BLUR_MAX_RADIUS 50.0
+#define MAX_BE 100
+#define ROUND(x) ((int) ((x) + .5))
+#define SUBPIXEL_MASK 56 // d6 bitmask for subpixel accuracy adjustment
static int last_render_id = 0;
@@ -82,7 +84,6 @@ struct ass_renderer_s {
ass_settings_t settings;
int render_id;
ass_synth_priv_t* synth_priv;
- ass_synth_priv_t* synth_priv_blur;
ass_image_t* images_root; // rendering result is stored here
ass_image_t* prev_images_root;
@@ -116,7 +117,7 @@ typedef struct glyph_info_s {
// int height;
int be; // blur edges
double blur; // gaussian blur
- int shadow;
+ double shadow;
double frx, fry, frz; // rotation
bitmap_hash_key_t hash_key;
@@ -165,7 +166,7 @@ typedef struct render_context_s {
uint32_t fade; // alpha from \fad
char be; // blur edges
double blur; // gaussian blur
- int shadow;
+ double shadow;
int drawing_mode; // not implemented; when != 0 text is discarded, except for style override tags
effect_t effect_type;
@@ -224,9 +225,15 @@ static void ass_lazy_track_init(void)
} else {
double orig_aspect = (global_settings->aspect * frame_context.height * frame_context.orig_width) /
frame_context.orig_height / frame_context.width;
- if (!track->PlayResY) {
+ if (!track->PlayResY && track->PlayResX == 1280) {
+ track->PlayResY = 1024;
+ mp_msg(MSGT_ASS, MSGL_WARN, MSGTR_LIBASS_PlayResYUndefinedSettingY, track->PlayResY);
+ } else if (!track->PlayResY) {
track->PlayResY = track->PlayResX / orig_aspect + .5;
mp_msg(MSGT_ASS, MSGL_WARN, MSGTR_LIBASS_PlayResYUndefinedSettingY, track->PlayResY);
+ } else if (!track->PlayResX && track->PlayResY == 1024) {
+ track->PlayResX = 1280;
+ mp_msg(MSGT_ASS, MSGL_WARN, MSGTR_LIBASS_PlayResXUndefinedSettingX, track->PlayResX);
} else if (!track->PlayResX) {
track->PlayResX = track->PlayResY * orig_aspect + .5;
mp_msg(MSGT_ASS, MSGL_WARN, MSGTR_LIBASS_PlayResXUndefinedSettingX, track->PlayResX);
@@ -263,8 +270,7 @@ ass_renderer_t* ass_renderer_init(ass_library_t* library)
goto ass_init_exit;
}
- priv->synth_priv = ass_synth_init(BE_RADIUS);
- priv->synth_priv_blur = ass_synth_init(BLUR_MAX_RADIUS);
+ priv->synth_priv = ass_synth_init(BLUR_MAX_RADIUS);
priv->library = library;
priv->ftlibrary = ft;
@@ -272,6 +278,7 @@ ass_renderer_t* ass_renderer_init(ass_library_t* library)
ass_font_cache_init();
ass_bitmap_cache_init();
+ ass_composite_cache_init();
ass_glyph_cache_init();
text_info.glyphs = calloc(MAX_GLYPHS, sizeof(glyph_info_t));
@@ -287,6 +294,7 @@ void ass_renderer_done(ass_renderer_t* priv)
{
ass_font_cache_done();
ass_bitmap_cache_done();
+ ass_composite_cache_done();
ass_glyph_cache_done();
if (render_context.stroker) {
FT_Stroker_Done(render_context.stroker);
@@ -399,6 +407,93 @@ static ass_image_t** render_glyph(bitmap_t* bm, int dst_x, int dst_y, uint32_t c
}
/**
+ * \brief Calculate overlapping area of two consecutive bitmaps and in case they
+ * overlap, composite them together
+ * Mainly useful for translucent glyphs and especially borders, to avoid the
+ * luminance adding up where they overlap (which looks ugly)
+ */
+static void render_overlap(ass_image_t** last_tail, ass_image_t** tail, bitmap_hash_key_t *last_hash, bitmap_hash_key_t* hash) {
+ int left, top, bottom, right;
+ int old_left, old_top, w, h, cur_left, cur_top;
+ int x, y, opos, cpos;
+ char m;
+ composite_hash_key_t hk;
+ composite_hash_val_t *hv;
+ composite_hash_key_t *nhk;
+ int ax = (*last_tail)->dst_x;
+ int ay = (*last_tail)->dst_y;
+ int aw = (*last_tail)->w;
+ int ah = (*last_tail)->h;
+ int bx = (*tail)->dst_x;
+ int by = (*tail)->dst_y;
+ int bw = (*tail)->w;
+ int bh = (*tail)->h;
+ unsigned char* a;
+ unsigned char* b;
+
+ if ((*last_tail)->bitmap == (*tail)->bitmap)
+ return;
+
+ // Calculate overlap coordinates
+ left = (ax > bx) ? ax : bx;
+ top = (ay > by) ? ay : by;
+ right = ((ax+aw) < (bx+bw)) ? (ax+aw) : (bx+bw);
+ bottom = ((ay+ah) < (by+bh)) ? (ay+ah) : (by+bh);
+ if ((right <= left) || (bottom <= top))
+ return;
+ old_left = left-(ax);
+ old_top = top-(ay);
+ w = right-left;
+ h = bottom-top;
+ cur_left = left-(bx);
+ cur_top = top-(by);
+
+ // Query cache
+ memcpy(&hk.a, last_hash, sizeof(*last_hash));
+ memcpy(&hk.b, hash, sizeof(*hash));
+ hk.aw = aw;
+ hk.ah = ah;
+ hk.bw = bw;
+ hk.bh = bh;
+ hk.ax = ax;
+ hk.ay = ay;
+ hk.bx = bx;
+ hk.by = by;
+ hv = cache_find_composite(&hk);
+ if (hv) {
+ (*last_tail)->bitmap = hv->a;
+ (*tail)->bitmap = hv->b;
+ return;
+ }
+
+ // Allocate new bitmaps and copy over data
+ a = (*last_tail)->bitmap;
+ b = (*tail)->bitmap;
+ (*last_tail)->bitmap = malloc(aw*ah);
+ (*tail)->bitmap = malloc(bw*bh);
+ memcpy((*last_tail)->bitmap, a, aw*ah);
+ memcpy((*tail)->bitmap, b, bw*bh);
+
+ // Composite overlapping area
+ for (y=0; y<h; y++)
+ for (x=0; x<w; x++) {
+ opos = (old_top+y)*(aw) + (old_left+x);
+ cpos = (cur_top+y)*(bw) + (cur_left+x);
+ m = (a[opos] > b[cpos]) ? a[opos] : b[cpos];
+ (*last_tail)->bitmap[opos] = 0;
+ (*tail)->bitmap[cpos] = m;
+ }
+
+ // Insert bitmaps into the cache
+ nhk = calloc(1, sizeof(*nhk));
+ memcpy(nhk, &hk, sizeof(*nhk));
+ hv = calloc(1, sizeof(*hv));
+ hv->a = (*last_tail)->bitmap;
+ hv->b = (*tail)->bitmap;
+ cache_add_composite(nhk, hv);
+}
+
+/**
* \brief Convert text_info_t struct to ass_image_t list
* Splits glyphs in halves when needed (for \kf karaoke).
*/
@@ -409,19 +504,28 @@ static ass_image_t* render_text(text_info_t* text_info, int dst_x, int dst_y)
bitmap_t* bm;
ass_image_t* head;
ass_image_t** tail = &head;
+ ass_image_t** last_tail = 0;
+ ass_image_t** here_tail = 0;
+ bitmap_hash_key_t* last_hash = 0;
for (i = 0; i < text_info->length; ++i) {
glyph_info_t* info = text_info->glyphs + i;
if ((info->symbol == 0) || (info->symbol == '\n') || !info->bm_s || (info->shadow == 0))
continue;
- pen_x = dst_x + info->pos.x + info->shadow;
- pen_y = dst_y + info->pos.y + info->shadow;
+ pen_x = dst_x + info->pos.x + ROUND(info->shadow * frame_context.border_scale);
+ pen_y = dst_y + info->pos.y + ROUND(info->shadow * frame_context.border_scale);
bm = info->bm_s;
+ here_tail = tail;
tail = render_glyph(bm, pen_x, pen_y, info->c[3], 0, 1000000, tail);
+ if (last_tail && tail != here_tail && ((info->c[3] & 0xff) > 0))
+ render_overlap(last_tail, here_tail, last_hash, &info->hash_key);
+ last_tail = here_tail;
+ last_hash = &info->hash_key;
}
+ last_tail = 0;
for (i = 0; i < text_info->length; ++i) {
glyph_info_t* info = text_info->glyphs + i;
if ((info->symbol == 0) || (info->symbol == '\n') || !info->bm_o)
@@ -433,8 +537,14 @@ static ass_image_t* render_text(text_info_t* text_info, int dst_x, int dst_y)
if ((info->effect_type == EF_KARAOKE_KO) && (info->effect_timing <= info->bbox.xMax)) {
// do nothing
- } else
+ } else {
+ here_tail = tail;
tail = render_glyph(bm, pen_x, pen_y, info->c[2], 0, 1000000, tail);
+ if (last_tail && tail != here_tail && ((info->c[2] & 0xff) > 0))
+ render_overlap(last_tail, here_tail, last_hash, &info->hash_key);
+ last_tail = here_tail;
+ last_hash = &info->hash_key;
+ }
}
for (i = 0; i < text_info->length; ++i) {
glyph_info_t* info = text_info->glyphs + i;
@@ -467,13 +577,22 @@ static int x2scr(double x) {
return x*frame_context.orig_width_nocrop / frame_context.track->PlayResX +
FFMAX(global_settings->left_margin, 0);
}
+static double x2scr_pos(double x) {
+ return x*frame_context.orig_width / frame_context.track->PlayResX +
+ global_settings->left_margin;
+}
/**
* \brief Mapping between script and screen coordinates
*/
-static int y2scr(double y) {
+static double y2scr(double y) {
return y * frame_context.orig_height_nocrop / frame_context.track->PlayResY +
FFMAX(global_settings->top_margin, 0);
}
+static double y2scr_pos(double y) {
+ return y * frame_context.orig_height / frame_context.track->PlayResY +
+ global_settings->top_margin;
+}
+
// the same for toptitles
static int y2scr_top(double y) {
if (global_settings->use_margins)
@@ -776,29 +895,29 @@ static char* parse_tag(char* p, double pwr) {
val = -1.; // reset to default
change_border(val);
} else if (mystrcmp(&p, "move")) {
- int x1, x2, y1, y2;
+ double x1, x2, y1, y2;
long long t1, t2, delta_t, t;
double x, y;
double k;
skip('(');
- mystrtoi(&p, &x1);
+ mystrtod(&p, &x1);
skip(',');
- mystrtoi(&p, &y1);
+ mystrtod(&p, &y1);
skip(',');
- mystrtoi(&p, &x2);
+ mystrtod(&p, &x2);
skip(',');
- mystrtoi(&p, &y2);
+ mystrtod(&p, &y2);
if (*p == ',') {
skip(',');
mystrtoll(&p, &t1);
skip(',');
mystrtoll(&p, &t2);
- mp_msg(MSGT_ASS, MSGL_DBG2, "movement6: (%d, %d) -> (%d, %d), (%" PRId64 " .. %" PRId64 ")\n",
+ mp_msg(MSGT_ASS, MSGL_DBG2, "movement6: (%f, %f) -> (%f, %f), (%" PRId64 " .. %" PRId64 ")\n",
x1, y1, x2, y2, (int64_t)t1, (int64_t)t2);
} else {
t1 = 0;
t2 = render_context.event->Duration;
- mp_msg(MSGT_ASS, MSGL_DBG2, "movement: (%d, %d) -> (%d, %d)\n", x1, y1, x2, y2);
+ mp_msg(MSGT_ASS, MSGL_DBG2, "movement: (%f, %f) -> (%f, %f)\n", x1, y1, x2, y2);
}
skip(')');
delta_t = t2 - t1;
@@ -884,13 +1003,13 @@ static char* parse_tag(char* p, double pwr) {
else
render_context.alignment = render_context.style->Alignment;
} else if (mystrcmp(&p, "pos")) {
- int v1, v2;
+ double v1, v2;
skip('(');
- mystrtoi(&p, &v1);
+ mystrtod(&p, &v1);
skip(',');
- mystrtoi(&p, &v2);
+ mystrtod(&p, &v2);
skip(')');
- mp_msg(MSGT_ASS, MSGL_DBG2, "pos(%d, %d)\n", v1, v2);
+ mp_msg(MSGT_ASS, MSGL_DBG2, "pos(%f, %f)\n", v1, v2);
if (render_context.evt_type == EVENT_POSITIONED) {
mp_msg(MSGT_ASS, MSGL_V, "Subtitle has a new \\pos "
"after \\move or \\pos, ignoring\n");
@@ -1043,9 +1162,9 @@ static char* parse_tag(char* p, double pwr) {
} else if (mystrcmp(&p, "be")) {
int val;
if (mystrtoi(&p, &val)) {
- // Clamp to 10, since high values need excessive CPU
+ // Clamp to a safe upper limit, since high values need excessive CPU
val = (val < 0) ? 0 : val;
- val = (val > 10) ? 10 : val;
+ val = (val > MAX_BE) ? MAX_BE : val;
render_context.be = val;
} else
render_context.be = 0;
@@ -1386,10 +1505,9 @@ static void get_bitmap_glyph(glyph_info_t* info)
// render glyph
error = glyph_to_bitmap(ass_renderer->synth_priv,
- ass_renderer->synth_priv_blur,
info->glyph, info->outline_glyph,
&info->bm, &info->bm_o,
- &info->bm_s, info->be, info->blur);
+ &info->bm_s, info->be, info->blur * frame_context.border_scale);
if (error)
info->symbol = 0;
@@ -1851,8 +1969,13 @@ static int ass_render_event(ass_event_t* event, event_images_t* event_images)
pen.y += delta.y * render_context.scale_y;
}
- shift.x = pen.x & 63;
- shift.y = pen.y & 63;
+ shift.x = pen.x & SUBPIXEL_MASK;
+ shift.y = pen.y & SUBPIXEL_MASK;
+
+ if (render_context.evt_type == EVENT_POSITIONED) {
+ shift.x += double_to_d6(x2scr_pos(render_context.pos_x)) & SUBPIXEL_MASK;
+ shift.y -= double_to_d6(y2scr_pos(render_context.pos_y)) & SUBPIXEL_MASK;
+ }
ass_font_set_transform(render_context.font,
render_context.scale_x * frame_context.font_scale_x,
@@ -2017,8 +2140,8 @@ static int ass_render_event(ass_event_t* event, event_images_t* event_images)
int base_y = 0;
mp_msg(MSGT_ASS, MSGL_DBG2, "positioned event at %f, %f\n", render_context.pos_x, render_context.pos_y);
get_base_point(bbox, alignment, &base_x, &base_y);
- device_x = x2scr(render_context.pos_x) - base_x;
- device_y = y2scr(render_context.pos_y) - base_y;
+ device_x = x2scr_pos(render_context.pos_x) - base_x;
+ device_y = y2scr_pos(render_context.pos_y) - base_y;
}
// fix clip coordinates (they depend on alignment)
@@ -2103,6 +2226,7 @@ static void ass_reconfigure(ass_renderer_t* priv)
priv->render_id = ++last_render_id;
ass_glyph_cache_reset();
ass_bitmap_cache_reset();
+ ass_composite_cache_reset();
ass_free_images(priv->prev_images_root);
priv->prev_images_root = 0;
}
@@ -2225,12 +2349,12 @@ static int ass_start_frame(ass_renderer_t *priv, ass_track_t* track, long long n
frame_context.font_scale = global_settings->font_size_coeff *
frame_context.orig_height / frame_context.track->PlayResY;
- frame_context.border_scale = ((double)frame_context.orig_height) / frame_context.track->PlayResY;
-
- if (frame_context.orig_width * track->PlayResY == frame_context.orig_height * track->PlayResX)
- frame_context.font_scale_x = 1.;
+ if (frame_context.track->ScaledBorderAndShadow)
+ frame_context.border_scale = ((double)frame_context.orig_height) / frame_context.track->PlayResY;
else
- frame_context.font_scale_x = ((double)(frame_context.orig_width * track->PlayResY)) / (frame_context.orig_height * track->PlayResX);
+ frame_context.border_scale = 1.;
+
+ frame_context.font_scale_x = 1.;
priv->prev_images_root = priv->images_root;
priv->images_root = 0;
diff --git a/libass/ass_types.h b/libass/ass_types.h
index 870fab4caa..52aff0fb85 100644
--- a/libass/ass_types.h
+++ b/libass/ass_types.h
@@ -105,6 +105,7 @@ typedef struct ass_track_s {
int PlayResY;
double Timer;
int WrapStyle;
+ char ScaledBorderAndShadow;
int default_style; // index of default style
diff --git a/libass/ass_utils.c b/libass/ass_utils.c
index 25e4d4fe7b..7f728f1bb1 100644
--- a/libass/ass_utils.c
+++ b/libass/ass_utils.c
@@ -96,6 +96,17 @@ int strtocolor(char** q, uint32_t* res)
return result;
}
+// Return a boolean value for a string
+char parse_bool(char* str) {
+ while (*str == ' ' || *str == '\t')
+ str++;
+ if (!strncasecmp(str, "yes", 3))
+ return 1;
+ else if (strtol(str, NULL, 10) > 0)
+ return 1;
+ return 0;
+}
+
#if 0
static void sprint_tag(uint32_t tag, char* dst)
{
diff --git a/libass/ass_utils.h b/libass/ass_utils.h
index f37bc0edc1..8c5f3e8f49 100644
--- a/libass/ass_utils.h
+++ b/libass/ass_utils.h
@@ -30,6 +30,7 @@ int mystrtoll(char** p, long long* res);
int mystrtou32(char** p, int base, uint32_t* res);
int mystrtod(char** p, double* res);
int strtocolor(char** q, uint32_t* res);
+char parse_bool(char* str);
static inline int d6_to_int(int x) {
return (x + 32) >> 6;
diff --git a/libfaad2/local_changes.diff b/libfaad2/local_changes.diff
index 0e3fe95d41..db2b60cd68 100644
--- a/libfaad2/local_changes.diff
+++ b/libfaad2/local_changes.diff
@@ -360,7 +360,7 @@
}
#endif
-@@ -865,22 +842,13 @@
+@@ -865,22 +842,14 @@
/* always allocate 2 channels, PS can always "suddenly" turn up */
#if (defined(PS_DEC) || defined(DRM_PS))
@@ -373,7 +373,8 @@
- if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] == 0)
- {
- /* element_output_channels not set yet */
-+ if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] < output_channels) {
++ if (hDecoder->element_alloced[hDecoder->fr_ch_ele] == 0 ||
++ hDecoder->element_output_channels[hDecoder->fr_ch_ele] < output_channels) {
hDecoder->element_output_channels[hDecoder->fr_ch_ele] = output_channels;
- } else if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] != output_channels) {
- /* element inconsistency */
diff --git a/libfaad2/specrec.c b/libfaad2/specrec.c
index 1119dd3b53..d4d600916f 100644
--- a/libfaad2/specrec.c
+++ b/libfaad2/specrec.c
@@ -847,7 +847,8 @@ uint8_t reconstruct_single_channel(NeAACDecHandle hDecoder, ic_stream *ics,
output_channels = 1;
#endif
- if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] < output_channels) {
+ if (hDecoder->element_alloced[hDecoder->fr_ch_ele] == 0 ||
+ hDecoder->element_output_channels[hDecoder->fr_ch_ele] < output_channels) {
hDecoder->element_output_channels[hDecoder->fr_ch_ele] = output_channels;
retval = allocate_single_channel(hDecoder, sce->channel, output_channels);
if (retval > 0)
diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c
index b26292f86f..16b8eb9452 100644
--- a/libmpcodecs/vd_ffmpeg.c
+++ b/libmpcodecs/vd_ffmpeg.c
@@ -182,6 +182,24 @@ static void mp_msp_av_log_callback(void *ptr, int level, const char *fmt, va_lis
mp_msg(type, mp_level, buf);
}
+static void set_format_params(struct AVCodecContext *avctx, enum PixelFormat fmt){
+ int imgfmt;
+ imgfmt = pixfmt2imgfmt(fmt);
+ if (IMGFMT_IS_XVMC(imgfmt) || IMGFMT_IS_VDPAU(imgfmt)) {
+ sh_video_t *sh = avctx->opaque;
+ vd_ffmpeg_ctx *ctx = sh->context;
+ ctx->do_dr1 = 1;
+ ctx->do_slices = 1;
+ avctx->thread_count = 1;
+ avctx->get_buffer = get_buffer;
+ avctx->release_buffer = release_buffer;
+ avctx->reget_buffer = get_buffer;
+ avctx->draw_horiz_band = draw_slice;
+ mp_msg(MSGT_DECVIDEO, MSGL_INFO, MSGTR_MPCODECS_XVMCAcceleratedMPEG2);
+ avctx->slice_flags = SLICE_FLAG_CODED_ORDER|SLICE_FLAG_ALLOW_FIELD;
+ }
+}
+
// init driver
static int init(sh_video_t *sh){
struct lavc_param *lavc_param = &sh->opts->lavc_param;
@@ -215,8 +233,6 @@ static int init(sh_video_t *sh){
if(lavc_codec->capabilities&CODEC_CAP_DR1 && !do_vis_debug && lavc_codec->id != CODEC_ID_H264 && lavc_codec->id != CODEC_ID_INTERPLAY_VIDEO && lavc_codec->id != CODEC_ID_ROQ)
ctx->do_dr1=1;
- if (lavc_codec->capabilities & CODEC_CAP_HWACCEL_VDPAU)
- ctx->do_dr1=1;
ctx->b_age= ctx->ip_age[0]= ctx->ip_age[1]= 256*256*256*64;
ctx->ip_count= ctx->b_count= 0;
@@ -228,18 +244,14 @@ static int init(sh_video_t *sh){
#if CONFIG_VDPAU
if(lavc_codec->capabilities & CODEC_CAP_HWACCEL_VDPAU){
avctx->get_format = get_format;
- avctx->draw_horiz_band = draw_slice;
- avctx->slice_flags = SLICE_FLAG_CODED_ORDER|SLICE_FLAG_ALLOW_FIELD;
}
#endif /* CONFIG_VDPAU */
#if CONFIG_XVMC
if(lavc_codec->capabilities & CODEC_CAP_HWACCEL){
mp_msg(MSGT_DECVIDEO, MSGL_INFO, MSGTR_MPCODECS_XVMCAcceleratedCodec);
- assert(ctx->do_dr1);//these are must to!
- assert(ctx->do_slices); //it is (vo_)ffmpeg bug if this fails
avctx->get_format= get_format;//for now only this decoder will use it
- avctx->draw_horiz_band = draw_slice;
- avctx->slice_flags=SLICE_FLAG_CODED_ORDER|SLICE_FLAG_ALLOW_FIELD;
+ // HACK around badly placed checks in mpeg_mc_decode_init
+ set_format_params(avctx, PIX_FMT_XVMC_MPEG2_IDCT);
}
#endif /* CONFIG_XVMC */
if(ctx->do_dr1){
@@ -380,6 +392,9 @@ static int init(sh_video_t *sh){
uninit(sh);
return 0;
}
+ // this is necessary in case get_format was never called and init_vo is
+ // too late e.g. for H.264 VDPAU
+ set_format_params(avctx, avctx->pix_fmt);
mp_msg(MSGT_DECVIDEO, MSGL_V, "INFO: libavcodec init OK!\n");
return 1; //mpcodecs_config_vo(sh, sh->disp_w, sh->disp_h, IMGFMT_YV12);
}
@@ -474,6 +489,9 @@ static int init_vo(sh_video_t *sh, enum PixelFormat pix_fmt){
pix_fmt != ctx->pix_fmt ||
!ctx->vo_initialized)
{
+ // this is a special-case HACK for MPEG-1/2 VDPAU that uses neither get_format nor
+ // sets the value correctly in avcodec_open.
+ set_format_params(avctx, avctx->pix_fmt);
mp_msg(MSGT_DECVIDEO, MSGL_V, "[ffmpeg] aspect_ratio: %f\n", aspect);
if (sh->aspect == 0 ||
av_cmp_q(avctx->sample_aspect_ratio,
@@ -893,17 +911,7 @@ static enum PixelFormat get_format(struct AVCodecContext *avctx,
}
}
selected_format = fmt[i];
- imgfmt = pixfmt2imgfmt(selected_format);
- if(IMGFMT_IS_XVMC(imgfmt) || IMGFMT_IS_VDPAU(imgfmt)) {
- vd_ffmpeg_ctx *ctx = sh->context;
- avctx->get_buffer= get_buffer;
- avctx->release_buffer= release_buffer;
- avctx->draw_horiz_band = draw_slice;
- mp_msg(MSGT_DECVIDEO, MSGL_INFO, MSGTR_MPCODECS_XVMCAcceleratedMPEG2);
- assert(ctx->do_dr1);//these are must to!
- assert(ctx->do_slices); //it is (vo_)ffmpeg bug if this fails
- avctx->slice_flags=SLICE_FLAG_CODED_ORDER|SLICE_FLAG_ALLOW_FIELD;
- }
+ set_format_params(avctx, selected_format);
return selected_format;
}
#endif /* CONFIG_XVMC || CONFIG_VDPAU */
diff --git a/libmpdemux/demux_ts.c b/libmpdemux/demux_ts.c
index 3d15281644..33ffcdb689 100644
--- a/libmpdemux/demux_ts.c
+++ b/libmpdemux/demux_ts.c
@@ -1762,7 +1762,8 @@ static int parse_pat(ts_priv_t * priv, int is_start, unsigned char *buff, int si
priv->pat.progs[idx].id = progid;
priv->pat.progs[idx].pmt_pid = ((base[2] & 0x1F) << 8) | base[3];
mp_msg(MSGT_DEMUX, MSGL_V, "PROG: %d (%d-th of %d), PMT: %d\n", priv->pat.progs[idx].id, i+1, entries, priv->pat.progs[idx].pmt_pid);
- mp_msg(MSGT_IDENTIFY, MSGL_V, "PROGRAM_ID=%d (0x%02X), PMT_PID: %d(0x%02X)\n", progid, priv->pat.progs[idx].pmt_pid );
+ mp_msg(MSGT_IDENTIFY, MSGL_V, "PROGRAM_ID=%d (0x%02X), PMT_PID: %d(0x%02X)\n",
+ progid, progid, priv->pat.progs[idx].pmt_pid, priv->pat.progs[idx].pmt_pid);
}
return 1;
diff --git a/libmpeg2/libmpeg2_changes.diff b/libmpeg2/libmpeg2_changes.diff
index 64cfd3cee1..49f85a2a95 100644
--- a/libmpeg2/libmpeg2_changes.diff
+++ b/libmpeg2/libmpeg2_changes.diff
@@ -6,7 +6,8 @@
+#include "cpudetect.h"
+
- #if defined(ARCH_X86) || defined(ARCH_X86_64)
+-#if defined(ARCH_X86) || defined(ARCH_X86_64)
++#if ARCH_X86 || ARCH_X86_64
static inline uint32_t arch_accel (uint32_t accel)
{
+/* Use MPlayer CPU detection instead of libmpeg2 variant. */
@@ -36,6 +37,95 @@
}
#endif /* ARCH_X86 || ARCH_X86_64 */
+@@ -127,7 +150,7 @@
+ }
+ #endif /* ARCH_X86 || ARCH_X86_64 */
+
+-#if defined(ACCEL_DETECT) && (defined(ARCH_PPC) || defined(ARCH_SPARC))
++#if defined(ACCEL_DETECT) && (ARCH_PPC || ARCH_SPARC)
+ #include <signal.h>
+ #include <setjmp.h>
+
+@@ -146,7 +169,7 @@
+ }
+ #endif /* ACCEL_DETECT && (ARCH_PPC || ARCH_SPARC) */
+
+-#ifdef ARCH_PPC
++#if ARCH_PPC
+ static uint32_t arch_accel (uint32_t accel)
+ {
+ #ifdef ACCEL_DETECT
+@@ -183,7 +206,7 @@
+ }
+ #endif /* ARCH_PPC */
+
+-#ifdef ARCH_SPARC
++#if ARCH_SPARC
+ static uint32_t arch_accel (uint32_t accel)
+ {
+ if (accel & MPEG2_ACCEL_SPARC_VIS2)
+@@ -229,7 +252,7 @@
+ }
+ #endif /* ARCH_SPARC */
+
+-#ifdef ARCH_ALPHA
++#if ARCH_ALPHA
+ static inline uint32_t arch_accel (uint32_t accel)
+ {
+ if (accel & MPEG2_ACCEL_ALPHA_MVI)
+@@ -253,7 +276,7 @@
+
+ uint32_t mpeg2_detect_accel (uint32_t accel)
+ {
+-#if defined (ARCH_X86) || defined (ARCH_X86_64) || defined (ARCH_PPC) || defined (ARCH_ALPHA) || defined (ARCH_SPARC)
++#if ARCH_X86 || ARCH_X86_64 || ARCH_PPC || ARCH_ALPHA || ARCH_SPARC
+ accel = arch_accel (accel);
+ #endif
+ return accel;
+Index: libmpeg2/cpu_state.c
+===================================================================
+--- libmpeg2/cpu_state.c (revision 28324)
++++ libmpeg2/cpu_state.c (revision 28325)
+@@ -29,21 +29,21 @@
+ #include "mpeg2.h"
+ #include "attributes.h"
+ #include "mpeg2_internal.h"
+-#if defined(ARCH_X86) || defined(ARCH_X86_64)
++#if ARCH_X86 || ARCH_X86_64
+ #include "mmx.h"
+ #endif
+
+ void (* mpeg2_cpu_state_save) (cpu_state_t * state) = NULL;
+ void (* mpeg2_cpu_state_restore) (cpu_state_t * state) = NULL;
+
+-#if defined(ARCH_X86) || defined(ARCH_X86_64)
++#if ARCH_X86 || ARCH_X86_64
+ static void state_restore_mmx (cpu_state_t * state)
+ {
+ emms ();
+ }
+ #endif
+
+-#ifdef ARCH_PPC
++#if ARCH_PPC
+ #if defined(__APPLE_CC__) /* apple */
+ #define LI(a,b) "li r" #a "," #b "\n\t"
+ #define STVX0(a,b,c) "stvx v" #a ",0,r" #c "\n\t"
+@@ -115,12 +115,12 @@
+
+ void mpeg2_cpu_state_init (uint32_t accel)
+ {
+-#if defined(ARCH_X86) || defined(ARCH_X86_64)
++#if ARCH_X86 || ARCH_X86_64
+ if (accel & MPEG2_ACCEL_X86_MMX) {
+ mpeg2_cpu_state_restore = state_restore_mmx;
+ }
+ #endif
+-#ifdef ARCH_PPC
++#if ARCH_PPC
+ if (accel & MPEG2_ACCEL_PPC_ALTIVEC) {
+ mpeg2_cpu_state_save = state_save_altivec;
+ mpeg2_cpu_state_restore = state_restore_altivec;
--- libmpeg2/decode.c 2006-06-16 20:12:26.000000000 +0200
+++ libmpeg2/decode.c 2006-06-16 20:12:50.000000000 +0200
@@ -345,6 +349,15 @@
@@ -81,7 +171,7 @@
void mpeg2_idct_init (uint32_t accel)
{
-#ifdef ARCH_X86
-+#ifdef HAVE_SSE2
++#if HAVE_SSE2
if (accel & MPEG2_ACCEL_X86_SSE2) {
mpeg2_idct_copy = mpeg2_idct_copy_sse2;
mpeg2_idct_add = mpeg2_idct_add_sse2;
@@ -103,7 +193,7 @@
} else
#endif
-#ifdef ARCH_PPC
-+#ifdef HAVE_ALTIVEC
++#if HAVE_ALTIVEC
if (accel & MPEG2_ACCEL_PPC_ALTIVEC) {
mpeg2_idct_copy = mpeg2_idct_copy_altivec;
mpeg2_idct_add = mpeg2_idct_add_altivec;
@@ -111,7 +201,7 @@
} else
#endif
-#ifdef ARCH_ALPHA
-+#ifdef HAVE_MVI
++#if HAVE_MVI
if (accel & MPEG2_ACCEL_ALPHA_MVI) {
mpeg2_idct_copy = mpeg2_idct_copy_mvi;
mpeg2_idct_add = mpeg2_idct_add_mvi;
@@ -123,46 +213,89 @@
int i;
mpeg2_idct_copy = mpeg2_idct_copy_alpha;
+Index: libmpeg2/idct_alpha.c
+===================================================================
+--- libmpeg2/idct_alpha.c (revision 28324)
++++ libmpeg2/idct_alpha.c (revision 28325)
+@@ -24,7 +24,7 @@
+
+ #include "config.h"
+
+-#ifdef ARCH_ALPHA
++#if ARCH_ALPHA
+
+ #include <stdlib.h>
+ #include <inttypes.h>
+Index: libmpeg2/idct_altivec.c
+===================================================================
+--- libmpeg2/idct_altivec.c (revision 28324)
++++ libmpeg2/idct_altivec.c (revision 28325)
+@@ -23,7 +23,7 @@
+
+ #include "config.h"
+
+-#ifdef ARCH_PPC
++#if ARCH_PPC
+
+ #ifdef HAVE_ALTIVEC_H
+ #include <altivec.h>
+Index: libmpeg2/idct_mmx.c
+===================================================================
+--- libmpeg2/idct_mmx.c (revision 28324)
++++ libmpeg2/idct_mmx.c (revision 28325)
+@@ -23,7 +23,7 @@
+
+ #include "config.h"
+
+-#if defined(ARCH_X86) || defined(ARCH_X86_64)
++#if ARCH_X86 || ARCH_X86_64
+
+ #include <inttypes.h>
+
--- libmpeg2/motion_comp.c 2006-06-16 20:12:26.000000000 +0200
+++ libmpeg2/motion_comp.c 2006-06-16 20:12:50.000000000 +0200
-@@ -33,16 +37,22 @@
+@@ -33,34 +37,40 @@
void mpeg2_mc_init (uint32_t accel)
{
-#ifdef ARCH_X86
-+#ifdef HAVE_MMX2
++#if HAVE_MMX2
if (accel & MPEG2_ACCEL_X86_MMXEXT)
mpeg2_mc = mpeg2_mc_mmxext;
- else if (accel & MPEG2_ACCEL_X86_3DNOW)
+ else
+#endif
-+#ifdef HAVE_AMD3DNOW
++#if HAVE_AMD3DNOW
+ if (accel & MPEG2_ACCEL_X86_3DNOW)
mpeg2_mc = mpeg2_mc_3dnow;
- else if (accel & MPEG2_ACCEL_X86_MMX)
+ else
+#endif
-+#ifdef HAVE_MMX
++#if HAVE_MMX
+ if (accel & MPEG2_ACCEL_X86_MMX)
mpeg2_mc = mpeg2_mc_mmx;
else
#endif
-#ifdef ARCH_PPC
-+#ifdef HAVE_ALTIVEC
++#if HAVE_ALTIVEC
if (accel & MPEG2_ACCEL_PPC_ALTIVEC)
mpeg2_mc = mpeg2_mc_altivec;
else
-@@ -52,15 +62,15 @@
+ #endif
+-#ifdef ARCH_ALPHA
++#if ARCH_ALPHA
+ if (accel & MPEG2_ACCEL_ALPHA)
mpeg2_mc = mpeg2_mc_alpha;
else
#endif
-#ifdef ARCH_SPARC
-+#ifdef HAVE_VIS
++#if HAVE_VIS
if (accel & MPEG2_ACCEL_SPARC_VIS)
mpeg2_mc = mpeg2_mc_vis;
else
#endif
- #ifdef ARCH_ARM
+-#ifdef ARCH_ARM
++#if ARCH_ARM
- if (accel & MPEG2_ACCEL_ARM) {
+ if (accel & MPEG2_ACCEL_ARM)
mpeg2_mc = mpeg2_mc_arm;
@@ -171,6 +304,71 @@
#endif
mpeg2_mc = mpeg2_mc_c;
}
+Index: libmpeg2/motion_comp_alpha.c
+===================================================================
+--- libmpeg2/motion_comp_alpha.c (revision 28324)
++++ libmpeg2/motion_comp_alpha.c (revision 28325)
+@@ -22,7 +22,7 @@
+
+ #include "config.h"
+
+-#ifdef ARCH_ALPHA
++#if ARCH_ALPHA
+
+ #include <inttypes.h>
+
+Index: libmpeg2/motion_comp_altivec.c
+===================================================================
+--- libmpeg2/motion_comp_altivec.c (revision 28324)
++++ libmpeg2/motion_comp_altivec.c (revision 28325)
+@@ -23,7 +23,7 @@
+
+ #include "config.h"
+
+-#ifdef ARCH_PPC
++#if ARCH_PPC
+
+ #ifdef HAVE_ALTIVEC_H
+ #include <altivec.h>
+Index: libmpeg2/motion_comp_arm.c
+===================================================================
+--- libmpeg2/motion_comp_arm.c (revision 28324)
++++ libmpeg2/motion_comp_arm.c (revision 28325)
+@@ -22,7 +22,7 @@
+
+ #include "config.h"
+
+-#ifdef ARCH_ARM
++#if ARCH_ARM
+
+ #include <inttypes.h>
+
+Index: libmpeg2/motion_comp_mmx.c
+===================================================================
+--- libmpeg2/motion_comp_mmx.c (revision 28324)
++++ libmpeg2/motion_comp_mmx.c (revision 28325)
+@@ -23,7 +23,7 @@
+
+ #include "config.h"
+
+-#if defined(ARCH_X86) || defined(ARCH_X86_64)
++#if ARCH_X86 || ARCH_X86_64
+
+ #include <inttypes.h>
+
+Index: libmpeg2/motion_comp_vis.c
+===================================================================
+--- libmpeg2/motion_comp_vis.c (revision 28324)
++++ libmpeg2/motion_comp_vis.c (revision 28325)
+@@ -22,7 +22,7 @@
+
+ #include "config.h"
+
+-#ifdef ARCH_SPARC
++#if ARCH_SPARC
+
+ #include <inttypes.h>
+
--- libmpeg2/mpeg2_internal.h 2006-06-16 20:12:26.000000000 +0200
+++ libmpeg2/mpeg2_internal.h 2006-06-16 20:12:50.000000000 +0200
@@ -152,6 +156,11 @@
@@ -195,6 +393,15 @@
};
typedef struct {
+@@ -226,7 +238,7 @@
+ };
+
+ typedef struct {
+-#ifdef ARCH_PPC
++#if ARCH_PPC
+ uint8_t regv[12*16];
+ #endif
+ int dummy;
--- libmpeg2/slice.c 2006-06-16 20:12:26.000000000 +0200
+++ libmpeg2/slice.c 2006-06-16 20:12:50.000000000 +0200
@@ -142,6 +146,7 @@
diff --git a/libswscale/rgb2rgb.c b/libswscale/rgb2rgb.c
index 99be2a4f27..ad69265c37 100644
--- a/libswscale/rgb2rgb.c
+++ b/libswscale/rgb2rgb.c
@@ -94,6 +94,7 @@ DECLARE_ASM_CONST(8, uint64_t, mmx_one) = 0xFFFFFFFFFFFFFFFFULL;
DECLARE_ASM_CONST(8, uint64_t, mask32b) = 0x000000FF000000FFULL;
DECLARE_ASM_CONST(8, uint64_t, mask32g) = 0x0000FF000000FF00ULL;
DECLARE_ASM_CONST(8, uint64_t, mask32r) = 0x00FF000000FF0000ULL;
+DECLARE_ASM_CONST(8, uint64_t, mask32a) = 0xFF000000FF000000ULL;
DECLARE_ASM_CONST(8, uint64_t, mask32) = 0x00FFFFFF00FFFFFFULL;
DECLARE_ASM_CONST(8, uint64_t, mask3216br) = 0x00F800F800F800F8ULL;
DECLARE_ASM_CONST(8, uint64_t, mask3216g) = 0x0000FC000000FC00ULL;
@@ -281,7 +282,7 @@ void rgb24to32(const uint8_t *src, uint8_t *dst, long src_size)
{
#ifdef WORDS_BIGENDIAN
/* RGB24 (= R,G,B) -> BGR32 (= A,R,G,B) */
- dst[4*i + 0] = 0;
+ dst[4*i + 0] = 255;
dst[4*i + 1] = src[3*i + 0];
dst[4*i + 2] = src[3*i + 1];
dst[4*i + 3] = src[3*i + 2];
@@ -289,7 +290,7 @@ void rgb24to32(const uint8_t *src, uint8_t *dst, long src_size)
dst[4*i + 0] = src[3*i + 2];
dst[4*i + 1] = src[3*i + 1];
dst[4*i + 2] = src[3*i + 0];
- dst[4*i + 3] = 0;
+ dst[4*i + 3] = 255;
#endif
}
}
@@ -305,7 +306,7 @@ void rgb16tobgr32(const uint8_t *src, uint8_t *dst, long src_size)
register uint16_t bgr;
bgr = *s++;
#ifdef WORDS_BIGENDIAN
- *d++ = 0;
+ *d++ = 255;
*d++ = (bgr&0x1F)<<3;
*d++ = (bgr&0x7E0)>>3;
*d++ = (bgr&0xF800)>>8;
@@ -313,7 +314,7 @@ void rgb16tobgr32(const uint8_t *src, uint8_t *dst, long src_size)
*d++ = (bgr&0xF800)>>8;
*d++ = (bgr&0x7E0)>>3;
*d++ = (bgr&0x1F)<<3;
- *d++ = 0;
+ *d++ = 255;
#endif
}
}
@@ -369,7 +370,7 @@ void rgb15tobgr32(const uint8_t *src, uint8_t *dst, long src_size)
register uint16_t bgr;
bgr = *s++;
#ifdef WORDS_BIGENDIAN
- *d++ = 0;
+ *d++ = 255;
*d++ = (bgr&0x1F)<<3;
*d++ = (bgr&0x3E0)>>2;
*d++ = (bgr&0x7C00)>>7;
@@ -377,7 +378,7 @@ void rgb15tobgr32(const uint8_t *src, uint8_t *dst, long src_size)
*d++ = (bgr&0x7C00)>>7;
*d++ = (bgr&0x3E0)>>2;
*d++ = (bgr&0x1F)<<3;
- *d++ = 0;
+ *d++ = 255;
#endif
}
}
diff --git a/libswscale/rgb2rgb_template.c b/libswscale/rgb2rgb_template.c
index f8915e8df2..b03f6424f7 100644
--- a/libswscale/rgb2rgb_template.c
+++ b/libswscale/rgb2rgb_template.c
@@ -83,7 +83,7 @@ static inline void RENAME(rgb24tobgr32)(const uint8_t *src, uint8_t *dst, long s
#if HAVE_MMX
__asm__ volatile(PREFETCH" %0"::"m"(*s):"memory");
mm_end = end - 23;
- __asm__ volatile("movq %0, %%mm7"::"m"(mask32):"memory");
+ __asm__ volatile("movq %0, %%mm7"::"m"(mask32a):"memory");
while (s < mm_end)
{
__asm__ volatile(
@@ -96,10 +96,10 @@ static inline void RENAME(rgb24tobgr32)(const uint8_t *src, uint8_t *dst, long s
"punpckldq 15%1, %%mm2 \n\t"
"movd 18%1, %%mm3 \n\t"
"punpckldq 21%1, %%mm3 \n\t"
- "pand %%mm7, %%mm0 \n\t"
- "pand %%mm7, %%mm1 \n\t"
- "pand %%mm7, %%mm2 \n\t"
- "pand %%mm7, %%mm3 \n\t"
+ "por %%mm7, %%mm0 \n\t"
+ "por %%mm7, %%mm1 \n\t"
+ "por %%mm7, %%mm2 \n\t"
+ "por %%mm7, %%mm3 \n\t"
MOVNTQ" %%mm0, %0 \n\t"
MOVNTQ" %%mm1, 8%0 \n\t"
MOVNTQ" %%mm2, 16%0 \n\t"
@@ -117,7 +117,7 @@ static inline void RENAME(rgb24tobgr32)(const uint8_t *src, uint8_t *dst, long s
{
#ifdef WORDS_BIGENDIAN
/* RGB24 (= R,G,B) -> RGB32 (= A,B,G,R) */
- *dest++ = 0;
+ *dest++ = 255;
*dest++ = s[2];
*dest++ = s[1];
*dest++ = s[0];
@@ -126,7 +126,7 @@ static inline void RENAME(rgb24tobgr32)(const uint8_t *src, uint8_t *dst, long s
*dest++ = *s++;
*dest++ = *s++;
*dest++ = *s++;
- *dest++ = 0;
+ *dest++ = 255;
#endif
}
}
@@ -1202,6 +1202,25 @@ static inline void RENAME(rgb16tobgr24)(const uint8_t *src, uint8_t *dst, long s
}
}
+/*
+ * mm0 = 00 B3 00 B2 00 B1 00 B0
+ * mm1 = 00 G3 00 G2 00 G1 00 G0
+ * mm2 = 00 R3 00 R2 00 R1 00 R0
+ * mm6 = FF FF FF FF FF FF FF FF
+ * mm7 = 00 00 00 00 00 00 00 00
+ */
+#define PACK_RGB32 \
+ "packuswb %%mm7, %%mm0 \n\t" /* 00 00 00 00 B3 B2 B1 B0 */ \
+ "packuswb %%mm7, %%mm1 \n\t" /* 00 00 00 00 G3 G2 G1 G0 */ \
+ "packuswb %%mm7, %%mm2 \n\t" /* 00 00 00 00 R3 R2 R1 R0 */ \
+ "punpcklbw %%mm1, %%mm0 \n\t" /* G3 B3 G2 B2 G1 B1 G0 B0 */ \
+ "punpcklbw %%mm6, %%mm2 \n\t" /* FF R3 FF R2 FF R1 FF R0 */ \
+ "movq %%mm0, %%mm3 \n\t" \
+ "punpcklwd %%mm2, %%mm0 \n\t" /* FF R1 G1 B1 FF R0 G0 B0 */ \
+ "punpckhwd %%mm2, %%mm3 \n\t" /* FF R3 G3 B3 FF R2 G2 B2 */ \
+ MOVNTQ" %%mm0, %0 \n\t" \
+ MOVNTQ" %%mm3, 8%0 \n\t" \
+
static inline void RENAME(rgb15to32)(const uint8_t *src, uint8_t *dst, long src_size)
{
const uint16_t *end;
@@ -1214,6 +1233,7 @@ static inline void RENAME(rgb15to32)(const uint8_t *src, uint8_t *dst, long src_
#if HAVE_MMX
__asm__ volatile(PREFETCH" %0"::"m"(*s):"memory");
__asm__ volatile("pxor %%mm7,%%mm7 \n\t":::"memory");
+ __asm__ volatile("pcmpeqd %%mm6,%%mm6 \n\t":::"memory");
mm_end = end - 3;
while (s < mm_end)
{
@@ -1228,25 +1248,7 @@ static inline void RENAME(rgb15to32)(const uint8_t *src, uint8_t *dst, long src_
"psllq $3, %%mm0 \n\t"
"psrlq $2, %%mm1 \n\t"
"psrlq $7, %%mm2 \n\t"
- "movq %%mm0, %%mm3 \n\t"
- "movq %%mm1, %%mm4 \n\t"
- "movq %%mm2, %%mm5 \n\t"
- "punpcklwd %%mm7, %%mm0 \n\t"
- "punpcklwd %%mm7, %%mm1 \n\t"
- "punpcklwd %%mm7, %%mm2 \n\t"
- "punpckhwd %%mm7, %%mm3 \n\t"
- "punpckhwd %%mm7, %%mm4 \n\t"
- "punpckhwd %%mm7, %%mm5 \n\t"
- "psllq $8, %%mm1 \n\t"
- "psllq $16, %%mm2 \n\t"
- "por %%mm1, %%mm0 \n\t"
- "por %%mm2, %%mm0 \n\t"
- "psllq $8, %%mm4 \n\t"
- "psllq $16, %%mm5 \n\t"
- "por %%mm4, %%mm3 \n\t"
- "por %%mm5, %%mm3 \n\t"
- MOVNTQ" %%mm0, %0 \n\t"
- MOVNTQ" %%mm3, 8%0 \n\t"
+ PACK_RGB32
:"=m"(*d)
:"m"(*s),"m"(mask15b),"m"(mask15g),"m"(mask15r)
:"memory");
@@ -1265,7 +1267,7 @@ static inline void RENAME(rgb15to32)(const uint8_t *src, uint8_t *dst, long src_
register uint16_t bgr;
bgr = *s++;
#ifdef WORDS_BIGENDIAN
- *d++ = 0;
+ *d++ = 255;
*d++ = (bgr&0x7C00)>>7;
*d++ = (bgr&0x3E0)>>2;
*d++ = (bgr&0x1F)<<3;
@@ -1273,7 +1275,7 @@ static inline void RENAME(rgb15to32)(const uint8_t *src, uint8_t *dst, long src_
*d++ = (bgr&0x1F)<<3;
*d++ = (bgr&0x3E0)>>2;
*d++ = (bgr&0x7C00)>>7;
- *d++ = 0;
+ *d++ = 255;
#endif
#endif
@@ -1292,6 +1294,7 @@ static inline void RENAME(rgb16to32)(const uint8_t *src, uint8_t *dst, long src_
#if HAVE_MMX
__asm__ volatile(PREFETCH" %0"::"m"(*s):"memory");
__asm__ volatile("pxor %%mm7,%%mm7 \n\t":::"memory");
+ __asm__ volatile("pcmpeqd %%mm6,%%mm6 \n\t":::"memory");
mm_end = end - 3;
while (s < mm_end)
{
@@ -1306,25 +1309,7 @@ static inline void RENAME(rgb16to32)(const uint8_t *src, uint8_t *dst, long src_
"psllq $3, %%mm0 \n\t"
"psrlq $3, %%mm1 \n\t"
"psrlq $8, %%mm2 \n\t"
- "movq %%mm0, %%mm3 \n\t"
- "movq %%mm1, %%mm4 \n\t"
- "movq %%mm2, %%mm5 \n\t"
- "punpcklwd %%mm7, %%mm0 \n\t"
- "punpcklwd %%mm7, %%mm1 \n\t"
- "punpcklwd %%mm7, %%mm2 \n\t"
- "punpckhwd %%mm7, %%mm3 \n\t"
- "punpckhwd %%mm7, %%mm4 \n\t"
- "punpckhwd %%mm7, %%mm5 \n\t"
- "psllq $8, %%mm1 \n\t"
- "psllq $16, %%mm2 \n\t"
- "por %%mm1, %%mm0 \n\t"
- "por %%mm2, %%mm0 \n\t"
- "psllq $8, %%mm4 \n\t"
- "psllq $16, %%mm5 \n\t"
- "por %%mm4, %%mm3 \n\t"
- "por %%mm5, %%mm3 \n\t"
- MOVNTQ" %%mm0, %0 \n\t"
- MOVNTQ" %%mm3, 8%0 \n\t"
+ PACK_RGB32
:"=m"(*d)
:"m"(*s),"m"(mask16b),"m"(mask16g),"m"(mask16r)
:"memory");
@@ -1339,7 +1324,7 @@ static inline void RENAME(rgb16to32)(const uint8_t *src, uint8_t *dst, long src_
register uint16_t bgr;
bgr = *s++;
#ifdef WORDS_BIGENDIAN
- *d++ = 0;
+ *d++ = 255;
*d++ = (bgr&0xF800)>>8;
*d++ = (bgr&0x7E0)>>3;
*d++ = (bgr&0x1F)<<3;
@@ -1347,7 +1332,7 @@ static inline void RENAME(rgb16to32)(const uint8_t *src, uint8_t *dst, long src_
*d++ = (bgr&0x1F)<<3;
*d++ = (bgr&0x7E0)>>3;
*d++ = (bgr&0xF800)>>8;
- *d++ = 0;
+ *d++ = 255;
#endif
}
}
diff --git a/libswscale/swscale.c b/libswscale/swscale.c
index 1fe421e0d6..c0f4b97684 100644
--- a/libswscale/swscale.c
+++ b/libswscale/swscale.c
@@ -927,7 +927,7 @@ static inline void yuv2rgbXinC_full(SwsContext *c, int16_t *lumFilter, int16_t *
aidx--;
case PIX_FMT_RGBA:
YSCALE_YUV_2_RGBX_FULL_C(1<<21)
- dest[aidx]= 0;
+ dest[aidx]= 255;
dest[0]= R>>22;
dest[1]= G>>22;
dest[2]= B>>22;
@@ -941,7 +941,7 @@ static inline void yuv2rgbXinC_full(SwsContext *c, int16_t *lumFilter, int16_t *
aidx--;
case PIX_FMT_BGRA:
YSCALE_YUV_2_RGBX_FULL_C(1<<21)
- dest[aidx]= 0;
+ dest[aidx]= 255;
dest[0]= B>>22;
dest[1]= G>>22;
dest[2]= R>>22;
diff --git a/libswscale/swscale_template.c b/libswscale/swscale_template.c
index ba2b6f99c6..6f2e243052 100644
--- a/libswscale/swscale_template.c
+++ b/libswscale/swscale_template.c
@@ -1031,7 +1031,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
case PIX_FMT_RGB32:
YSCALEYUV2PACKEDX_ACCURATE
YSCALEYUV2RGBX
- "pxor %%mm7, %%mm7 \n\t"
+ "pcmpeqd %%mm7, %%mm7 \n\t"
WRITEBGR32(%4, %5, %%REGa, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6)
YSCALEYUV2PACKEDX_END
@@ -1097,7 +1097,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
case PIX_FMT_RGB32:
YSCALEYUV2PACKEDX
YSCALEYUV2RGBX
- "pxor %%mm7, %%mm7 \n\t"
+ "pcmpeqd %%mm7, %%mm7 \n\t"
WRITEBGR32(%4, %5, %%REGa, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6)
YSCALEYUV2PACKEDX_END
return;
@@ -1196,7 +1196,7 @@ static inline void RENAME(yuv2packed2)(SwsContext *c, uint16_t *buf0, uint16_t *
"mov %4, %%"REG_b" \n\t"
"push %%"REG_BP" \n\t"
YSCALEYUV2RGB(%%REGBP, %5)
- "pxor %%mm7, %%mm7 \n\t"
+ "pcmpeqd %%mm7, %%mm7 \n\t"
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6)
"pop %%"REG_BP" \n\t"
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
@@ -1312,7 +1312,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"mov %4, %%"REG_b" \n\t"
"push %%"REG_BP" \n\t"
YSCALEYUV2RGB1(%%REGBP, %5)
- "pxor %%mm7, %%mm7 \n\t"
+ "pcmpeqd %%mm7, %%mm7 \n\t"
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6)
"pop %%"REG_BP" \n\t"
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
@@ -1405,7 +1405,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"mov %4, %%"REG_b" \n\t"
"push %%"REG_BP" \n\t"
YSCALEYUV2RGB1b(%%REGBP, %5)
- "pxor %%mm7, %%mm7 \n\t"
+ "pcmpeqd %%mm7, %%mm7 \n\t"
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6)
"pop %%"REG_BP" \n\t"
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
@@ -1642,7 +1642,7 @@ BGR2Y(uint16_t, bgr15ToY, 0, 0, 0, 0x001F, 0x03E0, 0x7C00, RY<<10, GY<<5, BY
BGR2Y(uint16_t, rgb16ToY, 0, 0, 0, 0xF800, 0x07E0, 0x001F, RY , GY<<5, BY<<11, RGB2YUV_SHIFT+8)
BGR2Y(uint16_t, rgb15ToY, 0, 0, 0, 0x7C00, 0x03E0, 0x001F, RY , GY<<5, BY<<10, RGB2YUV_SHIFT+7)
-#define BGR2UV(type, name, shr, shg, shb, maskr, maskg, maskb, RU, GU, BU, RV, GV, BV, S)\
+#define BGR2UV(type, name, shr, shg, shb, maska, maskr, maskg, maskb, RU, GU, BU, RV, GV, BV, S)\
static inline void RENAME(name)(uint8_t *dstU, uint8_t *dstV, uint8_t *src, uint8_t *dummy, long width, uint32_t *unused)\
{\
int i;\
@@ -1663,9 +1663,10 @@ static inline void RENAME(name ## _half)(uint8_t *dstU, uint8_t *dstV, uint8_t *
{\
int pix0= ((type*)src)[2*i+0];\
int pix1= ((type*)src)[2*i+1];\
- int g= (pix0&maskg)+(pix1&maskg);\
+ int g= (pix0&(maskg|maska))+(pix1&(maskg|maska));\
int b= ((pix0+pix1-g)&(maskb|(2*maskb)))>>shb;\
int r= ((pix0+pix1-g)&(maskr|(2*maskr)))>>shr;\
+ g&= maskg|(2*maskg);\
\
g>>=shg;\
\
@@ -1674,12 +1675,12 @@ static inline void RENAME(name ## _half)(uint8_t *dstU, uint8_t *dstV, uint8_t *
}\
}
-BGR2UV(uint32_t, bgr32ToUV,16, 0, 0, 0xFF0000, 0xFF00, 0x00FF, RU<< 8, GU , BU<< 8, RV<< 8, GV , BV<< 8, RGB2YUV_SHIFT+8)
-BGR2UV(uint32_t, rgb32ToUV, 0, 0,16, 0x00FF, 0xFF00, 0xFF0000, RU<< 8, GU , BU<< 8, RV<< 8, GV , BV<< 8, RGB2YUV_SHIFT+8)
-BGR2UV(uint16_t, bgr16ToUV, 0, 0, 0, 0x001F, 0x07E0, 0xF800, RU<<11, GU<<5, BU , RV<<11, GV<<5, BV , RGB2YUV_SHIFT+8)
-BGR2UV(uint16_t, bgr15ToUV, 0, 0, 0, 0x001F, 0x03E0, 0x7C00, RU<<10, GU<<5, BU , RV<<10, GV<<5, BV , RGB2YUV_SHIFT+7)
-BGR2UV(uint16_t, rgb16ToUV, 0, 0, 0, 0xF800, 0x07E0, 0x001F, RU , GU<<5, BU<<11, RV , GV<<5, BV<<11, RGB2YUV_SHIFT+8)
-BGR2UV(uint16_t, rgb15ToUV, 0, 0, 0, 0x7C00, 0x03E0, 0x001F, RU , GU<<5, BU<<10, RV , GV<<5, BV<<10, RGB2YUV_SHIFT+7)
+BGR2UV(uint32_t, bgr32ToUV,16, 0, 0, 0xFF000000, 0xFF0000, 0xFF00, 0x00FF, RU<< 8, GU , BU<< 8, RV<< 8, GV , BV<< 8, RGB2YUV_SHIFT+8)
+BGR2UV(uint32_t, rgb32ToUV, 0, 0,16, 0xFF000000, 0x00FF, 0xFF00, 0xFF0000, RU<< 8, GU , BU<< 8, RV<< 8, GV , BV<< 8, RGB2YUV_SHIFT+8)
+BGR2UV(uint16_t, bgr16ToUV, 0, 0, 0, 0, 0x001F, 0x07E0, 0xF800, RU<<11, GU<<5, BU , RV<<11, GV<<5, BV , RGB2YUV_SHIFT+8)
+BGR2UV(uint16_t, bgr15ToUV, 0, 0, 0, 0, 0x001F, 0x03E0, 0x7C00, RU<<10, GU<<5, BU , RV<<10, GV<<5, BV , RGB2YUV_SHIFT+7)
+BGR2UV(uint16_t, rgb16ToUV, 0, 0, 0, 0, 0xF800, 0x07E0, 0x001F, RU , GU<<5, BU<<11, RV , GV<<5, BV<<11, RGB2YUV_SHIFT+8)
+BGR2UV(uint16_t, rgb15ToUV, 0, 0, 0, 0, 0x7C00, 0x03E0, 0x001F, RU , GU<<5, BU<<10, RV , GV<<5, BV<<10, RGB2YUV_SHIFT+7)
#if HAVE_MMX
static inline void RENAME(bgr24ToY_mmx)(uint8_t *dst, uint8_t *src, long width, int srcFormat)
@@ -2218,7 +2219,7 @@ static inline void RENAME(hyscale)(SwsContext *c, uint16_t *dst, long dstWidth,
}
else // fast bilinear upscale / crap downscale
{
-#if ARCH_X86
+#if ARCH_X86 && CONFIG_GPL
#if HAVE_MMX2
int i;
#if defined(PIC)
@@ -2491,7 +2492,7 @@ inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth,
}
else // fast bilinear upscale / crap downscale
{
-#if ARCH_X86
+#if ARCH_X86 && CONFIG_GPL
#if HAVE_MMX2
int i;
#if defined(PIC)
diff --git a/libswscale/yuv2rgb.c b/libswscale/yuv2rgb.c
index 53a0d4e7b8..65af412c2c 100644
--- a/libswscale/yuv2rgb.c
+++ b/libswscale/yuv2rgb.c
@@ -533,7 +533,7 @@ av_cold int sws_yuv2rgb_c_init_tables(SwsContext *c, const int inv_table[4], int
uint8_t *y_table;
uint16_t *y_table16;
uint32_t *y_table32;
- int i, base, rbase, gbase, bbase;
+ int i, base, rbase, gbase, bbase, abase;
const int yoffs = fullRange ? 384 : 326;
int64_t crv = inv_table[0];
@@ -659,12 +659,13 @@ av_cold int sws_yuv2rgb_c_init_tables(SwsContext *c, const int inv_table[4], int
rbase = base + (isRgb ? 16 : 0);
gbase = base + 8;
bbase = base + (isRgb ? 0 : 16);
+ abase = (base + 24) & 31;
c->yuvTable = av_malloc(1024*3*4);
y_table32 = c->yuvTable;
yb = -(384<<16) - oy;
for (i = 0; i < 1024; i++) {
uint8_t yval = av_clip_uint8((yb + 0x8000) >> 16);
- y_table32[i ] = yval << rbase;
+ y_table32[i ] = (yval << rbase) + (255 << abase);
y_table32[i+1024] = yval << gbase;
y_table32[i+2048] = yval << bbase;
yb += cy;
diff --git a/libswscale/yuv2rgb_altivec.c b/libswscale/yuv2rgb_altivec.c
index 784c197d70..b3a87a0360 100644
--- a/libswscale/yuv2rgb_altivec.c
+++ b/libswscale/yuv2rgb_altivec.c
@@ -237,7 +237,7 @@ do { \
((vector unsigned short)vec_max (x,((vector signed short) {0})), \
(vector unsigned short)vec_max (y,((vector signed short) {0})))
-//#define out_pixels(a,b,c,ptr) vec_mstrgb32(__typeof__(a),((__typeof__ (a)){0}),a,a,a,ptr)
+//#define out_pixels(a,b,c,ptr) vec_mstrgb32(__typeof__(a),((__typeof__ (a)){255}),a,a,a,ptr)
static inline void cvtyuvtoRGB (SwsContext *c,
@@ -438,10 +438,10 @@ static int altivec_##name (SwsContext *c, \
}
-#define out_abgr(a,b,c,ptr) vec_mstrgb32(__typeof__(a),((__typeof__ (a)){0}),c,b,a,ptr)
-#define out_bgra(a,b,c,ptr) vec_mstrgb32(__typeof__(a),c,b,a,((__typeof__ (a)){0}),ptr)
-#define out_rgba(a,b,c,ptr) vec_mstrgb32(__typeof__(a),a,b,c,((__typeof__ (a)){0}),ptr)
-#define out_argb(a,b,c,ptr) vec_mstrgb32(__typeof__(a),((__typeof__ (a)){0}),a,b,c,ptr)
+#define out_abgr(a,b,c,ptr) vec_mstrgb32(__typeof__(a),((__typeof__ (a)){255}),c,b,a,ptr)
+#define out_bgra(a,b,c,ptr) vec_mstrgb32(__typeof__(a),c,b,a,((__typeof__ (a)){255}),ptr)
+#define out_rgba(a,b,c,ptr) vec_mstrgb32(__typeof__(a),a,b,c,((__typeof__ (a)){255}),ptr)
+#define out_argb(a,b,c,ptr) vec_mstrgb32(__typeof__(a),((__typeof__ (a)){255}),a,b,c,ptr)
#define out_rgb24(a,b,c,ptr) vec_mstrgb24(a,b,c,ptr)
#define out_bgr24(a,b,c,ptr) vec_mstbgr24(a,b,c,ptr)
diff --git a/libswscale/yuv2rgb_template.c b/libswscale/yuv2rgb_template.c
index 0b5e6f9ca1..f55568b0ab 100644
--- a/libswscale/yuv2rgb_template.c
+++ b/libswscale/yuv2rgb_template.c
@@ -446,7 +446,7 @@ static inline int RENAME(yuv420_rgb32)(SwsContext *c, uint8_t* src[], int srcStr
YUV2RGB_INIT
YUV2RGB
- "pxor %%mm3, %%mm3;" /* zero mm3 */
+ "pcmpeqd %%mm3, %%mm3;" /* fill mm3 */
RGB_PLANAR2PACKED32
YUV2RGB_ENDLOOP(4)
diff --git a/libswscale/yuv2rgb_vis.c b/libswscale/yuv2rgb_vis.c
index 5c9698510d..2e2737aa9f 100644
--- a/libswscale/yuv2rgb_vis.c
+++ b/libswscale/yuv2rgb_vis.c
@@ -80,6 +80,7 @@
+// FIXME: must be changed to set alpha to 255 instead of 0
static int vis_420P_ARGB32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]){
int y, out1, out2, out3, out4, out5, out6;
@@ -131,6 +132,7 @@ static int vis_420P_ARGB32(SwsContext *c, uint8_t* src[], int srcStride[], int s
return srcSliceH;
}
+// FIXME: must be changed to set alpha to 255 instead of 0
static int vis_422P_ARGB32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
int srcSliceH, uint8_t* dst[], int dstStride[]){
int y, out1, out2, out3, out4, out5, out6;
@@ -196,11 +198,11 @@ SwsFunc sws_yuv2rgb_init_vis(SwsContext *c) {
c->sparc_coeffs[4]=(((int16_t)c->vOffset*(int16_t)c->vrCoeff>>11) & 0xffff) * 0x0001000100010001ULL;
if (c->dstFormat == PIX_FMT_RGB32 && c->srcFormat == PIX_FMT_YUV422P && (c->dstW & 7)==0) {
- av_log(c, AV_LOG_INFO, "SPARC VIS accelerated YUV422P -> RGB32\n");
+ av_log(c, AV_LOG_INFO, "SPARC VIS accelerated YUV422P -> RGB32 (WARNING: alpha value is wrong)\n");
return vis_422P_ARGB32;
}
else if (c->dstFormat == PIX_FMT_RGB32 && c->srcFormat == PIX_FMT_YUV420P && (c->dstW & 7)==0) {
- av_log(c, AV_LOG_INFO, "SPARC VIS accelerated YUV420P -> RGB32\n");
+ av_log(c, AV_LOG_INFO, "SPARC VIS accelerated YUV420P -> RGB32 (WARNING: alpha value is wrong)\n");
return vis_420P_ARGB32;
}
return NULL;
diff --git a/libvo/video_out.c b/libvo/video_out.c
index ed72a765ef..2791ba54b3 100644
--- a/libvo/video_out.c
+++ b/libvo/video_out.c
@@ -56,7 +56,7 @@ int vo_refresh_rate=0;
int vo_keepaspect=1;
int vo_rootwin=0;
int vo_border=1;
-int WinID = -1;
+int64_t WinID = -1;
int vo_pts=0; // for hw decoding
float vo_fps=0;
diff --git a/libvo/video_out.h b/libvo/video_out.h
index c2f7daa859..6d4b405e56 100644
--- a/libvo/video_out.h
+++ b/libvo/video_out.h
@@ -299,7 +299,7 @@ extern char *vo_subdevice;
extern int vo_colorkey;
-extern int WinID;
+extern int64_t WinID;
typedef struct {
float min;
diff --git a/libvo/vo_gl.c b/libvo/vo_gl.c
index 73ab5dbf82..2c9f48d0e1 100644
--- a/libvo/vo_gl.c
+++ b/libvo/vo_gl.c
@@ -76,6 +76,13 @@ static GLuint osdtex[MAX_OSD_PARTS];
static GLuint osdatex[MAX_OSD_PARTS];
#endif
static GLuint *eosdtex;
+#define LARGE_EOSD_TEX_SIZE 512
+#define TINYTEX_SIZE 16
+#define TINYTEX_COLS (LARGE_EOSD_TEX_SIZE/TINYTEX_SIZE)
+#define TINYTEX_MAX (TINYTEX_COLS*TINYTEX_COLS)
+#define SMALLTEX_SIZE 32
+#define SMALLTEX_COLS (LARGE_EOSD_TEX_SIZE/SMALLTEX_SIZE)
+#define SMALLTEX_MAX (SMALLTEX_COLS*SMALLTEX_COLS)
static GLuint largeeosdtex[2];
//! Display lists that draw the OSD parts
static GLuint osdDispList[MAX_OSD_PARTS];
@@ -284,6 +291,26 @@ static void clearEOSD(void) {
eosdtex = NULL;
}
+static void do_render_osd(int);
+
+static inline int is_tinytex(ass_image_t *i, int tinytexcur) {
+ return i->w < TINYTEX_SIZE && i->h < TINYTEX_SIZE && tinytexcur < TINYTEX_MAX;
+}
+
+static inline int is_smalltex(ass_image_t *i, int smalltexcur) {
+ return i->w < SMALLTEX_SIZE && i->h < SMALLTEX_SIZE && smalltexcur < SMALLTEX_MAX;
+}
+
+static inline void tinytex_pos(int tinytexcur, int *x, int *y) {
+ *x = (tinytexcur % TINYTEX_COLS) * TINYTEX_SIZE;
+ *y = (tinytexcur / TINYTEX_COLS) * TINYTEX_SIZE;
+}
+
+static inline void smalltex_pos(int smalltexcur, int *x, int *y) {
+ *x = (smalltexcur % SMALLTEX_COLS) * SMALLTEX_SIZE;
+ *y = (smalltexcur / SMALLTEX_COLS) * SMALLTEX_SIZE;
+}
+
/**
* \brief construct display list from ass image list
* \param img image list to create OSD from.
@@ -309,17 +336,17 @@ static void genEOSD(mp_eosd_images_t *imgs) {
if (!largeeosdtex[0]) {
glGenTextures(2, largeeosdtex);
BindTexture(gl_target, largeeosdtex[0]);
- glCreateClearTex(gl_target, GL_ALPHA, GL_ALPHA, GL_UNSIGNED_BYTE, scale_type, 512, 512, 0);
+ glCreateClearTex(gl_target, GL_ALPHA, GL_ALPHA, GL_UNSIGNED_BYTE, scale_type, LARGE_EOSD_TEX_SIZE, LARGE_EOSD_TEX_SIZE, 0);
BindTexture(gl_target, largeeosdtex[1]);
- glCreateClearTex(gl_target, GL_ALPHA, GL_ALPHA, GL_UNSIGNED_BYTE, scale_type, 512, 512, 0);
+ glCreateClearTex(gl_target, GL_ALPHA, GL_ALPHA, GL_UNSIGNED_BYTE, scale_type, LARGE_EOSD_TEX_SIZE, LARGE_EOSD_TEX_SIZE, 0);
}
for (i = img; i; i = i->next)
{
if (i->w <= 0 || i->h <= 0 || i->stride < i->w)
continue;
- if (i->w < 16 && i->h < 16 && tinytexcur < 1024)
+ if (is_tinytex(i, tinytexcur))
tinytexcur++;
- else if (i->w < 32 && i->h < 32 && smalltexcur < 256)
+ else if (is_smalltex(i, smalltexcur))
smalltexcur++;
else
eosdtexCnt++;
@@ -337,14 +364,12 @@ static void genEOSD(mp_eosd_images_t *imgs) {
mp_msg(MSGT_VO, MSGL_V, "Invalid dimensions OSD for part!\n");
continue;
}
- if (i->w < 16 && i->h < 16 && tinytexcur < 1024) {
- x = (tinytexcur & 31) << 4;
- y = (tinytexcur >> 5) << 4;
+ if (is_tinytex(i, tinytexcur)) {
+ tinytex_pos(tinytexcur, &x, &y);
BindTexture(gl_target, largeeosdtex[0]);
tinytexcur++;
- } else if (i->w < 32 && i->h < 32 && smalltexcur < 256) {
- x = (smalltexcur & 15) << 5;
- y = (smalltexcur >> 4) << 5;
+ } else if (is_smalltex(i, smalltexcur)) {
+ smalltex_pos(smalltexcur, &x, &y);
BindTexture(gl_target, largeeosdtex[1]);
smalltexcur++;
} else {
@@ -364,16 +389,14 @@ skip_upload:
if (i->w <= 0 || i->h <= 0 || i->stride < i->w)
continue;
glColor4ub(i->color >> 24, (i->color >> 16) & 0xff, (i->color >> 8) & 0xff, 255 - (i->color & 0xff));
- if (i->w < 16 && i->h < 16 && tinytexcur < 1024) {
- x = (tinytexcur & 31) << 4;
- y = (tinytexcur >> 5) << 4;
- sx = sy = 512;
+ if (is_tinytex(i, tinytexcur)) {
+ tinytex_pos(tinytexcur, &x, &y);
+ sx = sy = LARGE_EOSD_TEX_SIZE;
BindTexture(gl_target, largeeosdtex[0]);
tinytexcur++;
- } else if (i->w < 32 && i->h < 32 && smalltexcur < 256) {
- x = (smalltexcur & 15) << 5;
- y = (smalltexcur >> 4) << 5;
- sx = sy = 512;
+ } else if (is_smalltex(i, smalltexcur)) {
+ smalltex_pos(smalltexcur, &x, &y);
+ sx = sy = LARGE_EOSD_TEX_SIZE;
BindTexture(gl_target, largeeosdtex[1]);
smalltexcur++;
} else {
@@ -630,8 +653,6 @@ static void create_osd_texture(int x0, int y0, int w, int h,
osdtexCnt++;
}
-static void do_render_osd(void);
-
static void draw_osd(void)
{
if (!use_osd) return;
@@ -643,7 +664,7 @@ static void draw_osd(void)
vo_draw_text_ext(osd_w, osd_h, ass_border_x, ass_border_y, ass_border_x, ass_border_y,
image_width, image_height, create_osd_texture);
}
- if (vo_doublebuffering) do_render_osd();
+ if (vo_doublebuffering) do_render_osd(1);
}
static void do_render(void) {
@@ -662,8 +683,11 @@ static void do_render(void) {
glDisableYUVConversion(gl_target, yuvconvtype);
}
-static void do_render_osd(void) {
- if (osdtexCnt > 0 || eosdDispList) {
+/**
+ * \param type bit 0: render OSD, bit 1: render EOSD
+ */
+static void do_render_osd(int type) {
+ if (((type & 1) && osdtexCnt > 0) || ((type & 2) && eosdDispList)) {
// set special rendering parameters
if (!scaled_osd) {
glMatrixMode(GL_PROJECTION);
@@ -672,11 +696,11 @@ static void do_render_osd(void) {
glOrtho(0, vo_dwidth, vo_dheight, 0, -1, 1);
}
glEnable(GL_BLEND);
- if (eosdDispList) {
+ if ((type & 2) && eosdDispList) {
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glCallList(eosdDispList);
}
- if (osdtexCnt > 0) {
+ if ((type & 1) && osdtexCnt > 0) {
glColor4ub((osd_color >> 16) & 0xff, (osd_color >> 8) & 0xff, osd_color & 0xff, 0xff - (osd_color >> 24));
// draw OSD
#ifndef FAST_OSD
@@ -702,14 +726,14 @@ static void flip_page(void) {
glClear(GL_COLOR_BUFFER_BIT);
} else {
do_render();
- do_render_osd();
+ do_render_osd(3);
if (use_glFinish) glFinish();
else glFlush();
}
}
static void redraw(void) {
- if (vo_doublebuffering) { do_render(); do_render_osd(); }
+ if (vo_doublebuffering) { do_render(); do_render_osd(3); }
flip_page();
}
@@ -1113,6 +1137,7 @@ static int control(uint32_t request, void *data)
if (!data)
return VO_FALSE;
genEOSD(data);
+ if (vo_doublebuffering) do_render_osd(2);
return VO_TRUE;
case VOCTRL_GET_EOSD_RES:
{
diff --git a/libvo/vo_vdpau.c b/libvo/vo_vdpau.c
index 08f5975fdc..fec166c78e 100644
--- a/libvo/vo_vdpau.c
+++ b/libvo/vo_vdpau.c
@@ -49,6 +49,7 @@
#include "gui/interface.h"
#include "libavutil/common.h"
+#include "libavutil/mathematics.h"
#include "libass/ass.h"
#include "libass/ass_mp.h"
@@ -140,6 +141,8 @@ static VdpDecoderCreate *vdp_decoder_create;
static VdpDecoderDestroy *vdp_decoder_destroy;
static VdpDecoderRender *vdp_decoder_render;
+static VdpGenerateCSCMatrix *vdp_generate_csc_matrix;
+
static void *vdpau_lib_handle;
/* output_surfaces[NUM_OUTPUT_SURFACES] is misused for OSD. */
#define osd_surface output_surfaces[NUM_OUTPUT_SURFACES]
@@ -193,12 +196,17 @@ struct {
static int eosd_render_count;
static int eosd_surface_count;
+// Video equalizer
+static VdpProcamp procamp;
+
/*
* X11 specific
*/
static int visible_buf;
static int int_pause;
+static void draw_eosd(void);
+
static void video_to_output_surface(void)
{
VdpTime dummy;
@@ -212,8 +220,11 @@ static void video_to_output_surface(void)
for (i = 0; i <= !!(deint > 1); i++) {
int field = VDP_VIDEO_MIXER_PICTURE_STRUCTURE_FRAME;
VdpOutputSurface output_surface;
- if (i)
+ if (i) {
+ draw_eosd();
+ draw_osd();
flip_page();
+ }
if (deint)
field = top_field_first == i ?
VDP_VIDEO_MIXER_PICTURE_STRUCTURE_BOTTOM_FIELD:
@@ -337,6 +348,7 @@ static int win_x11_init_vdpau_procs(void)
&vdp_bitmap_surface_putbits_native},
{VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_BITMAP_SURFACE,
&vdp_output_surface_render_bitmap_surface},
+ {VDP_FUNC_ID_GENERATE_CSC_MATRIX, &vdp_generate_csc_matrix},
{0, NULL}
};
@@ -733,7 +745,6 @@ static void draw_osd(void)
{
mp_msg(MSGT_VO, MSGL_DBG2, "DRAW_OSD\n");
- draw_eosd();
vo_draw_text_ext(vo_dwidth, vo_dheight, border_x, border_y, border_x, border_y,
vid_width, vid_height, draw_osd_I8A8);
}
@@ -785,6 +796,11 @@ static int draw_slice(uint8_t *image[], int stride[], int w, int h,
}
vdp_st = vdp_decoder_create(vdp_device, vdp_decoder_profile, vid_width, vid_height, max_refs, &decoder);
CHECK_ST_WARNING("Failed creating VDPAU decoder");
+ if (vdp_st != VDP_STATUS_OK) {
+ decoder = VDP_INVALID_HANDLE;
+ decoder_max_refs = 0;
+ return VO_FALSE;
+ }
decoder_max_refs = max_refs;
}
vdp_st = vdp_decoder_render(decoder, rndr->surface, (void *)&rndr->info, rndr->bitstream_buffers_used, rndr->bitstream_buffers);
@@ -996,7 +1012,7 @@ static int preinit(const char *arg)
for (i = 0; i < MAX_VIDEO_SURFACES; i++)
surface_render[i].surface = VDP_INVALID_HANDLE;
video_mixer = VDP_INVALID_HANDLE;
- for (i = 0; i < NUM_OUTPUT_SURFACES; i++)
+ for (i = 0; i <= NUM_OUTPUT_SURFACES; i++)
output_surfaces[i] = VDP_INVALID_HANDLE;
vdp_flip_queue = VDP_INVALID_HANDLE;
output_surface_width = output_surface_height = -1;
@@ -1011,9 +1027,55 @@ static int preinit(const char *arg)
eosd_surfaces = NULL;
eosd_targets = NULL;
+ procamp.struct_version = VDP_PROCAMP_VERSION;
+ procamp.brightness = 0.0;
+ procamp.contrast = 1.0;
+ procamp.saturation = 1.0;
+ procamp.hue = 0.0;
+
return 0;
}
+static int get_equalizer(char *name, int *value) {
+ if (!strcasecmp(name, "brightness"))
+ *value = procamp.brightness * 100;
+ else if (!strcasecmp(name, "contrast"))
+ *value = (procamp.contrast-1.0) * 100;
+ else if (!strcasecmp(name, "saturation"))
+ *value = (procamp.saturation-1.0) * 100;
+ else if (!strcasecmp(name, "hue"))
+ *value = procamp.hue * 100 / M_PI;
+ else
+ return VO_NOTIMPL;
+ return VO_TRUE;
+}
+
+static int set_equalizer(char *name, int value) {
+ VdpStatus vdp_st;
+ VdpCSCMatrix matrix;
+ static const VdpVideoMixerAttribute attributes[] = {VDP_VIDEO_MIXER_ATTRIBUTE_CSC_MATRIX};
+ const void *attribute_values[] = {&matrix};
+
+ if (!strcasecmp(name, "brightness"))
+ procamp.brightness = value / 100.0;
+ else if (!strcasecmp(name, "contrast"))
+ procamp.contrast = value / 100.0 + 1.0;
+ else if (!strcasecmp(name, "saturation"))
+ procamp.saturation = value / 100.0 + 1.0;
+ else if (!strcasecmp(name, "hue"))
+ procamp.hue = value / 100.0 * M_PI;
+ else
+ return VO_NOTIMPL;
+
+ vdp_st = vdp_generate_csc_matrix(&procamp, VDP_COLOR_STANDARD_ITUR_BT_601,
+ &matrix);
+ CHECK_ST_WARNING("Error when generating CSC matrix")
+ vdp_st = vdp_video_mixer_set_attribute_values(video_mixer, 1, attributes,
+ attribute_values);
+ CHECK_ST_WARNING("Error when setting CSC matrix")
+ return VO_TRUE;
+}
+
static int control(uint32_t request, void *data)
{
switch (request) {
@@ -1052,12 +1114,12 @@ static int control(uint32_t request, void *data)
return VO_TRUE;
case VOCTRL_SET_EQUALIZER: {
struct voctrl_set_equalizer_args *args = data;
- return vo_x11_set_equalizer(args->name, args->value);
+ return set_equalizer(args->name, args->value);
}
case VOCTRL_GET_EQUALIZER:
{
struct voctrl_get_equalizer_args *args = data;
- return vo_x11_get_equalizer(args->name, args->valueptr);
+ return get_equalizer(args->name, args->valueptr);
}
case VOCTRL_ONTOP:
vo_x11_ontop();
@@ -1069,6 +1131,7 @@ static int control(uint32_t request, void *data)
if (!data)
return VO_FALSE;
generate_eosd(data);
+ draw_eosd();
return VO_TRUE;
case VOCTRL_GET_EOSD_RES: {
mp_eosd_res_t *r = data;
diff --git a/libvo/x11_common.c b/libvo/x11_common.c
index 0b070a868b..b70c0b8dd6 100644
--- a/libvo/x11_common.c
+++ b/libvo/x11_common.c
@@ -1111,6 +1111,12 @@ void vo_x11_create_vo_window(struct vo *vo, XVisualInfo *vis, int x, int y,
vo_x11_nofs_sizepos(vo, vo->dx, vo->dy, width, height);
if (!!vo_fs != !!(flags & VOFLAG_FULLSCREEN))
vo_x11_fullscreen(vo);
+ else if (vo_fs) {
+ // if we are already in fullscreen do not switch back and forth, just
+ // set the size values right.
+ vo->dwidth = vo->opts->vo_screenwidth;
+ vo->dheight = vo->opts->vo_screenheight;
+ }
final:
if (x11->vo_gc != None)
XFreeGC(mDisplay, x11->vo_gc);
diff --git a/m_option.c b/m_option.c
index e3e338808c..39f8ddd4f8 100644
--- a/m_option.c
+++ b/m_option.c
@@ -137,16 +137,16 @@ const m_option_type_t m_option_type_flag = {
// Integer
static int parse_int(const m_option_t* opt,const char *name, char *param, void* dst, int src) {
- long tmp_int;
+ long long tmp_int;
char *endptr;
src = 0;
if (param == NULL)
return M_OPT_MISSING_PARAM;
- tmp_int = strtol(param, &endptr, 10);
+ tmp_int = strtoll(param, &endptr, 10);
if (*endptr)
- tmp_int = strtol(param, &endptr, 0);
+ tmp_int = strtoll(param, &endptr, 0);
if (*endptr) {
mp_msg(MSGT_CFGPARSER, MSGL_ERR, "The %s option must be an integer: %s\n",name, param);
return M_OPT_INVALID;
@@ -162,13 +162,19 @@ static int parse_int(const m_option_t* opt,const char *name, char *param, void*
return M_OPT_OUT_OF_RANGE;
}
- if(dst) VAL(dst) = tmp_int;
+ if(dst) {
+ if (opt->type->size == sizeof(int64_t))
+ *(int64_t *)dst = tmp_int;
+ else
+ VAL(dst) = tmp_int;
+ }
return 1;
}
static char* print_int(const m_option_t* opt, const void* val) {
- opt = NULL;
+ if (opt->type->size == sizeof(int64_t))
+ return dup_printf("%"PRId64, *(const int64_t *)val);
return dup_printf("%d",VAL(val));
}
@@ -185,6 +191,19 @@ const m_option_type_t m_option_type_int = {
NULL
};
+const m_option_type_t m_option_type_int64 = {
+ "Integer64",
+ "",
+ sizeof(int64_t),
+ 0,
+ parse_int,
+ print_int,
+ copy_opt,
+ copy_opt,
+ NULL,
+ NULL
+};
+
// Float
#undef VAL
diff --git a/m_option.h b/m_option.h
index 0cf55fbaf1..89d58b952c 100644
--- a/m_option.h
+++ b/m_option.h
@@ -26,6 +26,7 @@ struct m_struct_st;
// Simple types
extern const m_option_type_t m_option_type_flag;
extern const m_option_type_t m_option_type_int;
+extern const m_option_type_t m_option_type_int64;
extern const m_option_type_t m_option_type_float;
extern const m_option_type_t m_option_type_double;
extern const m_option_type_t m_option_type_string;
@@ -153,6 +154,7 @@ extern const m_obj_params_t m_span_params_def;
// FIXME: backward compatibility
#define CONF_TYPE_FLAG (&m_option_type_flag)
#define CONF_TYPE_INT (&m_option_type_int)
+#define CONF_TYPE_INT64 (&m_option_type_int64)
#define CONF_TYPE_FLOAT (&m_option_type_float)
#define CONF_TYPE_DOUBLE (&m_option_type_double)
#define CONF_TYPE_STRING (&m_option_type_string)
diff --git a/osdep/getch2-win.c b/osdep/getch2-win.c
index a1c5601474..5df87b2377 100644
--- a/osdep/getch2-win.c
+++ b/osdep/getch2-win.c
@@ -1,4 +1,23 @@
-/* windows TermIO for MPlayer (C) 2003 Sascha Sommer */
+/* Windows TermIO
+ *
+ * copyright (C) 2003 Sascha Sommer
+ *
+ * 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.
+ */
// See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/VirtualKeyCodes.asp
// for additional virtual keycodes
diff --git a/osdep/getch2.c b/osdep/getch2.c
index 403519913a..e1871c7d6d 100644
--- a/osdep/getch2.c
+++ b/osdep/getch2.c
@@ -1,4 +1,25 @@
-/* GyS-TermIO v2.0 (for GySmail v3) (C) 1999 A'rpi/ESP-team */
+/*
+ * GyS-TermIO v2.0 (for GySmail v3)
+ * a very small replacement of ncurses library
+ *
+ * copyright (C) 1999 A'rpi/ESP-team
+ *
+ * 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 "config.h"
diff --git a/osdep/getch2.h b/osdep/getch2.h
index a85969207c..1156aedf7a 100644
--- a/osdep/getch2.h
+++ b/osdep/getch2.h
@@ -1,5 +1,25 @@
-/* GyS-TermIO v2.0 (for GySmail v3) (C) 1999 A'rpi/ESP-team */
-/* a very small replacement of ncurses library */
+/*
+ * GyS-TermIO v2.0 (for GySmail v3)
+ * a very small replacement of ncurses library
+ *
+ * copyright (C) 1999 A'rpi/ESP-team
+ *
+ * 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_GETCH2_H
#define MPLAYER_GETCH2_H
diff --git a/osdep/gettimeofday.c b/osdep/gettimeofday.c
index 7436898121..2dd59acaa1 100644
--- a/osdep/gettimeofday.c
+++ b/osdep/gettimeofday.c
@@ -1,3 +1,21 @@
+/*
+ * 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 "config.h"
#include <sys/time.h>
diff --git a/osdep/glob-win.c b/osdep/glob-win.c
index f0764bba37..427a30e7b0 100644
--- a/osdep/glob-win.c
+++ b/osdep/glob-win.c
@@ -1,3 +1,21 @@
+/*
+ * 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 <sys/types.h>
#include <stdio.h>
diff --git a/osdep/glob.h b/osdep/glob.h
index 64d618d0dd..2d23b3a075 100644
--- a/osdep/glob.h
+++ b/osdep/glob.h
@@ -1,3 +1,21 @@
+/*
+ * 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_GLOB_H
#define MPLAYER_GLOB_H
diff --git a/osdep/keycodes.h b/osdep/keycodes.h
index d7e4e785c0..fd5a7f22b2 100644
--- a/osdep/keycodes.h
+++ b/osdep/keycodes.h
@@ -1,4 +1,24 @@
-/* KEY code definitions for GyS-TermIO v2.0 (C) 1999 A'rpi/ESP-team */
+/*
+ * KEY code definitions for GyS-TermIO v2.0
+ *
+ * copyright (C) 1999 A'rpi/ESP-team
+ *
+ * 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_KEYCODES_H
#define MPLAYER_KEYCODES_H
diff --git a/osdep/macosx_finder_args.c b/osdep/macosx_finder_args.c
index 7312969eab..f784db0e61 100644
--- a/osdep/macosx_finder_args.c
+++ b/osdep/macosx_finder_args.c
@@ -1,3 +1,21 @@
+/*
+ * 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 <Carbon/Carbon.h>
#include <ApplicationServices/ApplicationServices.h>
#include "stream/url.h"
diff --git a/osdep/mmap_anon.c b/osdep/mmap_anon.c
index cd42c92b2f..a29345a4ee 100644
--- a/osdep/mmap_anon.c
+++ b/osdep/mmap_anon.c
@@ -1,3 +1,21 @@
+/*
+ * 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.
+ */
+
/**
* \file mmap_anon.c
* \brief Provide a compatible anonymous space mapping function
diff --git a/osdep/mmap_anon.h b/osdep/mmap_anon.h
index f8712ca628..577f685838 100644
--- a/osdep/mmap_anon.h
+++ b/osdep/mmap_anon.h
@@ -1,3 +1,21 @@
+/*
+ * 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_MMAP_ANON_H
#define MPLAYER_MMAP_ANON_H
diff --git a/osdep/mplayer.rc b/osdep/mplayer.rc
index 4b0c1cd74e..82c5fbb317 100644
--- a/osdep/mplayer.rc
+++ b/osdep/mplayer.rc
@@ -1,7 +1,22 @@
-/*Windows resource file for MPlayer
- compile with
- windres -o resfile.o mplayer.rc
- and add resfile.o to OBJS_MPLAYER in Makefile*/
+/*
+ * Windows resource file for MPlayer
+ *
+ * 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 <winver.h>
#include "version.h"
diff --git a/osdep/setenv.c b/osdep/setenv.c
index 1dd6c4828e..e1e3b1f7da 100644
--- a/osdep/setenv.c
+++ b/osdep/setenv.c
@@ -1,4 +1,22 @@
-/* setenv implementation for systems lacking it. */
+/*
+ * setenv implementation for systems lacking it.
+ *
+ * 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 "config.h"
diff --git a/osdep/shmem.c b/osdep/shmem.c
index 1adacfaef5..f1cec1be37 100644
--- a/osdep/shmem.c
+++ b/osdep/shmem.c
@@ -1,9 +1,24 @@
/*
- * shmem.c - Shared memory allocation
- *
- * based on mpg123's xfermem.c by
- * Oliver Fromme <oliver.fromme@heim3.tu-clausthal.de>
- * Sun Apr 6 02:26:26 MET DST 1997
+ * shared memory allocation
+ *
+ * based on mpg123's xfermem.c by
+ * Oliver Fromme <oliver.fromme@heim3.tu-clausthal.de>
+ *
+ * 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 "config.h"
diff --git a/osdep/shmem.h b/osdep/shmem.h
index bdfcb5c474..7696e45281 100644
--- a/osdep/shmem.h
+++ b/osdep/shmem.h
@@ -1,3 +1,21 @@
+/*
+ * 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_SHMEM_H
#define MPLAYER_SHMEM_H
diff --git a/osdep/strsep.c b/osdep/strsep.c
index 85bb8b5749..21552907a5 100644
--- a/osdep/strsep.c
+++ b/osdep/strsep.c
@@ -1,4 +1,22 @@
-/* strsep implementation for systems that do not have it in libc */
+/*
+ * strsep implementation for systems that do not have it in libc
+ *
+ * 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 <stdio.h>
#include <string.h>
diff --git a/osdep/swab.c b/osdep/swab.c
index 46da22c744..f0bb7964d8 100644
--- a/osdep/swab.c
+++ b/osdep/swab.c
@@ -1,3 +1,21 @@
+/*
+ * 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 "config.h"
/* system has no swab. emulate via bswap */
diff --git a/osdep/timer-linux.c b/osdep/timer-linux.c
index 6e066711d5..576bae5be6 100644
--- a/osdep/timer-linux.c
+++ b/osdep/timer-linux.c
@@ -1,4 +1,23 @@
-// Precise timer routines for LINUX (C) LGB & A'rpi/ASTRAL
+/*
+ * precise timer routines for Linux
+ * copyright (C) LGB & A'rpi/ASTRAL
+ *
+ * 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 <unistd.h>
#ifdef __BEOS__
diff --git a/osdep/timer-win2.c b/osdep/timer-win2.c
index 3c6b86afa4..0a424f2dd3 100644
--- a/osdep/timer-win2.c
+++ b/osdep/timer-win2.c
@@ -1,4 +1,22 @@
-// Precise timer routines for WINDOWS
+/*
+ * precise timer routines for Windows
+ *
+ * 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 <windows.h>
#include <mmsystem.h>
diff --git a/osdep/timer.h b/osdep/timer.h
index 4ddac524ef..c3925041ca 100644
--- a/osdep/timer.h
+++ b/osdep/timer.h
@@ -1,3 +1,21 @@
+/*
+ * 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_TIMER_H
#define MPLAYER_TIMER_H
diff --git a/osdep/vsscanf.c b/osdep/vsscanf.c
index 8a7ccf98b7..f75ddfe033 100644
--- a/osdep/vsscanf.c
+++ b/osdep/vsscanf.c
@@ -1,6 +1,24 @@
-#include "config.h"
+/*
+ * vsscanf implementation for systems that do not have it in libc
+ *
+ * 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.
+ */
-/* system has no vsscanf. try to provide one */
+#include "config.h"
#include <stdio.h>
#include <stdarg.h>
diff --git a/subopt-helper.c b/subopt-helper.c
index d1a169220f..6f4bcf6a30 100644
--- a/subopt-helper.c
+++ b/subopt-helper.c
@@ -45,18 +45,11 @@ static char const * parse_float( char const * const str, float * const valp );
* else a non-zero value is returned.
*
*/
-int subopt_parse( char const * const str, opt_t * opts )
+int subopt_parse( char const * const str, const opt_t * opts )
{
int parse_err = 0, idx;
unsigned int parse_pos = 0;
- /* Initialize set member to false. *
- * It is set to true if it was found in str */
- for ( idx=0; opts[idx].name; ++idx )
- {
- opts[idx].set = 0;
- }
-
if ( str )
{
while ( str[parse_pos] && !parse_err )
@@ -101,7 +94,7 @@ int subopt_parse( char const * const str, opt_t * opts )
if( strncmp( &str[parse_pos], opts[idx].name, opt_len ) == 0 )
{
/* option was found */
- opts[idx].set = 1; next = 1;
+ next = 1;
assert( opts[idx].valp && "Need a pointer to store the arg!" );
@@ -196,7 +189,7 @@ else if ( substr_len == opt_len+2 )
strncmp( &str[parse_pos+2], opts[idx].name, opt_len ) == 0 )
{
/* option was found but negated */
- opts[idx].set = 1; next = 1;
+ next = 1;
/* set arg to false */
*((int *)(opts[idx].valp)) = 0;
diff --git a/subopt-helper.h b/subopt-helper.h
index cd435d455b..ea6bdd5964 100644
--- a/subopt-helper.h
+++ b/subopt-helper.h
@@ -24,13 +24,10 @@ typedef struct opt_s
int type; ///< option type as defined in subopt-helper.h
void * valp; ///< pointer to the mem where the value should be stored
opt_test_f test; ///< argument test func ( optional )
- int set; ///< Is set internally by the parser if the option was found.
- ///< Don't use it at initialization of your opts, it will be
- ///< overriden anyway!
} opt_t;
/** parses the string for the options specified in opt */
-int subopt_parse( char const * const str, opt_t * opts );
+int subopt_parse( char const * const str, const opt_t * opts );
/*------------------ arg specific types and declaration -------------------*/
diff --git a/tremor/tremor.diff b/tremor/tremor.diff
index 393889a450..2838721e69 100644
--- a/tremor/tremor.diff
+++ b/tremor/tremor.diff
@@ -166,3 +166,13 @@
+#endif /* 0 */
+
#endif /* _OS_TYPES_H */
+--- mapping0.c (revision 28274)
++++ mapping0.c (revision 28275)
+@@ -19,6 +20,7 @@
+ #include <string.h>
+ #include <math.h>
+ #include "ogg.h"
++#include "os.h"
+ #include "ivorbiscodec.h"
+ #include "mdct.h"
+ #include "codec_internal.h"
diff --git a/version.sh b/version.sh
index eb302c9134..dee9bcfd66 100755
--- a/version.sh
+++ b/version.sh
@@ -8,9 +8,14 @@ svn_revision=$(cat snapshot_version 2> /dev/null)
test $svn_revision || svn_revision=$(LC_ALL=C svn info 2> /dev/null | grep Revision | cut -d' ' -f2)
test $svn_revision || svn_revision=$(grep revision .svn/entries 2>/dev/null | cut -d '"' -f2)
test $svn_revision || svn_revision=$(sed -n -e '/^dir$/{n;p;q;}' .svn/entries 2>/dev/null)
+test $svn_revision && svn_revision=SVN-r$svn_revision
test $svn_revision || svn_revision=UNKNOWN
-NEW_REVISION="#define VERSION \"SVN-r${svn_revision}${extra}\""
+# releases extract the version number from the VERSION file
+version=$(cat VERSION 2> /dev/null)
+test $version || version=$svn_revision
+
+NEW_REVISION="#define VERSION \"${version}${extra}\""
OLD_REVISION=$(cat version.h 2> /dev/null)
TITLE='#define MP_TITLE "%s "VERSION" (C) 2000-2009 MPlayer Team\n"'