1
mirror of https://github.com/mpv-player/mpv synced 2025-01-13 00:06:25 +01:00

Merge svn changes up to r28862

This commit is contained in:
Uoti Urpala 2009-03-07 01:04:41 +02:00
commit e0172b96e3
122 changed files with 2809 additions and 1047 deletions

View File

@ -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:

View File

@ -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

View File

@ -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
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
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
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
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
.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
.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
.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 /.

View File

@ -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
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
.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
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
.

View File

@ -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
.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,
.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 деинтерлейсинг (текущий запасной вариант для передовых
деинтерлейсеров).

View File

@ -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 ffmpeg12vdpauffwmv3vdpauffvc1vdpau 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=25tele_dest=30000/1001
PAL至NTSC的电视电影化处理
.RE
.PD 1
.

View File

@ -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>

View File

@ -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:

View File

@ -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>
@ -343,32 +373,22 @@ et remplacez <systemitem>#undef FAST_OSD</systemitem> par
</para></answer>
</qandaentry>
<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
@ -647,17 +670,6 @@ et téléchargez le fichier par FTP.
</para></answer>
</qandaentry>
<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
@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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:

View File

@ -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;

View File

@ -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},

View File

@ -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){

32
configure vendored
View File

@ -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

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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,20 +443,510 @@ 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"
// 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!"
// fifo.c
#define MSGTR_CannotMakePipe "Не можу створити канал!\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"
// 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"
// m_property.c
#define MSGTR_PropertyListHeader "\n Назва Тип Мін Макс\n\n"
#define MSGTR_TotalProperties "\nЗагалом: %d властивостей\n"
// loader/ldt_keeper.c
#define MSGTR_LOADER_DYLD_Warning "ПОПЕРЕДЖЕННЯ: Намагаюсь використати DLL кодеки але змінна середовища\n DYLD_BIND_AT_LAUNCH не встановлена. Це здається поламка.\n"
// ====================== GUI messages/buttons ========================
// --- labels ---
#define MSGTR_About "Про"
#define MSGTR_FileSelect "Вибрати файл..."
#define MSGTR_SubtitleSelect "Вибрати субтитри..."
#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_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 "OK"
#define MSGTR_Cancel "Відміна"
#define MSGTR_Add "Додати"
#define MSGTR_Remove "Видалити"
#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_UNKNOWNWINDOWTYPE "Знайдено невідомий тип вікна..."
// --- skin loader error messages
#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 "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_SelectedSkinNotFound "Обраний скін ( %s ) не знайдено, обираю 'default'...\n"
#define MSGTR_SKIN_SKINCFG_SkinCfgReadError "помилка читання файлу налаштування скіну (%s)\n"
#define MSGTR_SKIN_LABEL "Скіни:"
// --- GTK menus
#define MSGTR_MENU_AboutMPlayer "Про програму"
#define MSGTR_MENU_Open "Відкрити..."
#define MSGTR_MENU_PlayFile "Грати файл..."
#define MSGTR_MENU_PlayVCD "Грати VCD..."
#define MSGTR_MENU_PlayDVD "Грати DVD..."
#define MSGTR_MENU_PlayURL "Грати URL..."
#define MSGTR_MENU_LoadSubtitle "Завантажити субтитри..."
#define MSGTR_MENU_DropSubtitle "Викинути субтитри..."
#define MSGTR_MENU_LoadExternAudioFile "Завантажити зовнішній аудіо файл..."
#define MSGTR_MENU_Playing "Відтворення"
#define MSGTR_MENU_Play "Грати"
#define MSGTR_MENU_Pause "Пауза"
#define MSGTR_MENU_Stop "Зупинити"
#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 "Повний екран"
#define MSGTR_MENU_DVD "DVD"
#define MSGTR_MENU_VCD "VCD"
#define MSGTR_MENU_PlayDisc "Грати диск..."
#define MSGTR_MENU_ShowDVDMenu "Показати DVD меню"
#define MSGTR_MENU_Titles "Титри"
#define MSGTR_MENU_Title "Титр %2d"
#define MSGTR_MENU_None "(нема)"
#define MSGTR_MENU_Chapters "Розділи"
#define MSGTR_MENU_Chapter "Розділ %2d"
#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 "Вихідний"
#define MSGTR_MENU_AspectRatio "Відношення сторін"
#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 "Яскравість: "
#define MSGTR_EQU_Hue "Тон: "
#define MSGTR_EQU_Saturation "Насиченість: "
#define MSGTR_EQU_Front_Left "Передній Лівий"
#define MSGTR_EQU_Front_Right "Передній Правий"
#define MSGTR_EQU_Back_Left "Задній Лівий"
#define MSGTR_EQU_Back_Right "Задній Правий"
#define MSGTR_EQU_Center "Центральний"
#define MSGTR_EQU_Bass "Бас"
#define MSGTR_EQU_All "Усі"
#define MSGTR_EQU_Channel1 "Канал 1:"
#define MSGTR_EQU_Channel2 "Канал 2:"
#define MSGTR_EQU_Channel3 "Канал 3:"
#define MSGTR_EQU_Channel4 "Канал 4:"
#define MSGTR_EQU_Channel5 "Канал 5:"
#define MSGTR_EQU_Channel6 "Канал 6:"
// --- playlist
#define MSGTR_PLAYLIST_Path "Шлях"
#define MSGTR_PLAYLIST_Selected "Вибрані файли"
#define MSGTR_PLAYLIST_Files "Файли"
#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 "Нормалізувати звук"
#define MSGTR_PREFERENCES_EnableEqualizer "Дозволити еквалайзер"
#define MSGTR_PREFERENCES_ExtraStereo "Дозволити додаткове стерео"
#define MSGTR_PREFERENCES_Coefficient "Коефіціент:"
#define MSGTR_PREFERENCES_AudioDelay "Затримка аудіо"
#define MSGTR_PREFERENCES_DoubleBuffer "Дозволити подвійне буферування"
#define MSGTR_PREFERENCES_DirectRender "Дозволити прямий вивід"
#define MSGTR_PREFERENCES_FrameDrop "Дозволити пропуск кадрів"
#define MSGTR_PREFERENCES_HFrameDrop "Дозволити викидування кадрів (небезпечно)"
#define MSGTR_PREFERENCES_Flip "Перегорнути зображення догори ногами"
#define MSGTR_PREFERENCES_Panscan "Panscan: "
#define MSGTR_PREFERENCES_OSDTimer "Таймер та індікатори"
#define MSGTR_PREFERENCES_OSDProgress "Лише лінійки"
#define MSGTR_PREFERENCES_OSDTimerPercentageTotalTime "Таймер, проценти та загальний час"
#define MSGTR_PREFERENCES_Subtitle "Субтитри:"
#define MSGTR_PREFERENCES_SUB_Delay "Затримка: "
#define MSGTR_PREFERENCES_SUB_FPS "к/c:"
#define MSGTR_PREFERENCES_SUB_POS "Положення: "
#define MSGTR_PREFERENCES_SUB_AutoLoad "Заборонити автозавантаження субтитрів"
#define MSGTR_PREFERENCES_SUB_Unicode "Unicode субтитри"
#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"
#define MSGTR_PREFERENCES_AutoQuality "Авто якість: "
#define MSGTR_PREFERENCES_NI "Використовувати неперемежений AVI парсер"
#define MSGTR_PREFERENCES_IDX "Перебудувати індекс, якщо треба"
#define MSGTR_PREFERENCES_VideoCodecFamily "Драйвер відео содеку:"
#define MSGTR_PREFERENCES_AudioCodecFamily "Драйвер аудіо кодеку:"
#define MSGTR_PREFERENCES_FRAME_OSD_Level "Рівень OSD"
#define MSGTR_PREFERENCES_FRAME_Subtitle "Субтитри"
#define MSGTR_PREFERENCES_FRAME_Font "Шрифт"
#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)"
#define MSGTR_PREFERENCES_FontEncoding1 "Unicode"
#define MSGTR_PREFERENCES_FontEncoding2 "Western European Languages (ISO-8859-1)"
#define MSGTR_PREFERENCES_FontEncoding3 "Western European Languages with Euro (ISO-8859-15)"
#define MSGTR_PREFERENCES_FontEncoding4 "Slavic/Central European Languages (ISO-8859-2)"
#define MSGTR_PREFERENCES_FontEncoding5 "Esperanto, Galician, Maltese, Turkish (ISO-8859-3)"
#define MSGTR_PREFERENCES_FontEncoding6 "Old Baltic charset (ISO-8859-4)"
#define MSGTR_PREFERENCES_FontEncoding7 "Cyrillic (ISO-8859-5)"
#define MSGTR_PREFERENCES_FontEncoding8 "Arabic (ISO-8859-6)"
#define MSGTR_PREFERENCES_FontEncoding9 "Modern Greek (ISO-8859-7)"
#define MSGTR_PREFERENCES_FontEncoding10 "Turkish (ISO-8859-9)"
#define MSGTR_PREFERENCES_FontEncoding11 "Baltic (ISO-8859-13)"
#define MSGTR_PREFERENCES_FontEncoding12 "Celtic (ISO-8859-14)"
#define MSGTR_PREFERENCES_FontEncoding13 "Hebrew charsets (ISO-8859-8)"
#define MSGTR_PREFERENCES_FontEncoding14 "Russian (KOI8-R)"
#define MSGTR_PREFERENCES_FontEncoding15 "Ukrainian, Belarusian (KOI8-U/RU)"
#define MSGTR_PREFERENCES_FontEncoding16 "Simplified Chinese charset (CP936)"
#define MSGTR_PREFERENCES_FontEncoding17 "Traditional Chinese charset (BIG5)"
#define MSGTR_PREFERENCES_FontEncoding18 "Japanese charsets (SHIFT-JIS)"
#define MSGTR_PREFERENCES_FontEncoding19 "Korean charset (CP949)"
#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 "Пропорційно висоті кадру"
#define MSGTR_PREFERENCES_FontPropDiagonal "Пропорційно діагоналі кадру"
#define MSGTR_PREFERENCES_FontEncoding "Кодування:"
#define MSGTR_PREFERENCES_FontBlur "Розпливання:"
#define MSGTR_PREFERENCES_FontOutLine "Обведення:"
#define MSGTR_PREFERENCES_FontTextScale "Масштаб тексту:"
#define MSGTR_PREFERENCES_FontOSDScale "Масштаб OSD:"
#define MSGTR_PREFERENCES_Cache "Кеш on/off"
#define MSGTR_PREFERENCES_CacheSize "Розмір кешу: "
#define MSGTR_PREFERENCES_LoadFullscreen "Стартувати в полний екран"
#define MSGTR_PREFERENCES_SaveWinPos "Зберігати положення вікна"
#define MSGTR_PREFERENCES_XSCREENSAVER "Зупинити XScreenSaver"
#define MSGTR_PREFERENCES_PlayBar "Дозволити лінійку програвання"
#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 "Попередження!"
// 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!"
@ -518,7 +1010,6 @@ static char help_text[]=
#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"
@ -572,232 +1063,3 @@ static char help_text[]=
#define MSGTR_MovieAspectIsSet "Відношення сторін %.2f:1 - масштабую аби скоректувати.\n"
#define MSGTR_MovieAspectUndefined "Відношення сторін не вказано - масштабування не використовується.\n"
// ====================== GUI messages/buttons ========================
#ifdef CONFIG_GUI
// --- labels ---
#define MSGTR_About "Про програму"
#define MSGTR_FileSelect "Вибрати файл..."
#define MSGTR_SubtitleSelect "Вибрати субтитри..."
#define MSGTR_OtherSelect "Вибір..."
#define MSGTR_AudioFileSelect "Вибрати зовнішній аудіо канал..."
#define MSGTR_FontSelect "Вибрати шрифт..."
#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 "Немає завантаженого файлу."
// --- buttons ---
#define MSGTR_Ok "Так"
#define MSGTR_Cancel "Скасувати"
#define MSGTR_Add "Додати"
#define MSGTR_Remove "Видалити"
#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+."
// --- 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_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_UnknownParameter "невідомий параметр (%s)\n"
#define MSGTR_SKIN_SKINCFG_SkinNotFound "Жупан не знайдено (%s).\n"
#define MSGTR_SKIN_SKINCFG_SkinCfgReadError "Помилка читання файла конфігурації жупана (%s).\n"
#define MSGTR_SKIN_LABEL "Жупани:"
// --- gtk menus
#define MSGTR_MENU_AboutMPlayer "Про програму"
#define MSGTR_MENU_Open "Відкрити..."
#define MSGTR_MENU_PlayFile "Грати файл..."
#define MSGTR_MENU_PlayVCD "Грати VCD..."
#define MSGTR_MENU_PlayDVD "Грати DVD..."
#define MSGTR_MENU_PlayURL "Грати URL..."
#define MSGTR_MENU_LoadSubtitle "Завантажити субтитри..."
#define MSGTR_MENU_DropSubtitle "Викинути субтитри..."
#define MSGTR_MENU_LoadExternAudioFile "Завантажити зовнішній аудіо файл..."
#define MSGTR_MENU_Playing "Відтворення"
#define MSGTR_MENU_Play "Грати"
#define MSGTR_MENU_Pause "Пауза"
#define MSGTR_MENU_Stop "Зупинити"
#define MSGTR_MENU_NextStream "Наступний потік"
#define MSGTR_MENU_PrevStream "Попередній потік"
#define MSGTR_MENU_Size "Розмір"
#define MSGTR_MENU_NormalSize "Нормальний розмір"
#define MSGTR_MENU_DoubleSize "Подвійний розмір"
#define MSGTR_MENU_FullScreen "Повний екран"
#define MSGTR_MENU_DVD "DVD"
#define MSGTR_MENU_VCD "VCD"
#define MSGTR_MENU_PlayDisc "Грати диск..."
#define MSGTR_MENU_ShowDVDMenu "Показати DVD меню"
#define MSGTR_MENU_Titles "Титри"
#define MSGTR_MENU_Title "Титр %2d"
#define MSGTR_MENU_None "(нема)"
#define MSGTR_MENU_Chapters "Розділи"
#define MSGTR_MENU_Chapter "Розділ %2d"
#define MSGTR_MENU_AudioLanguages "Авто мова"
#define MSGTR_MENU_SubtitleLanguages "Мова субтитрів"
#define MSGTR_MENU_SkinBrowser "Переглядач жупанів"
#define MSGTR_MENU_Exit "Вихід..."
#define MSGTR_MENU_Mute "Тиша"
#define MSGTR_MENU_Original "Вихідний"
#define MSGTR_MENU_AspectRatio "Відношення сторін"
#define MSGTR_MENU_AudioTrack "Аудіо доріжка"
#define MSGTR_MENU_Track "Доріжка %d"
#define MSGTR_MENU_VideoTrack "Відео доріжка"
// --- equalizer
#define MSGTR_EQU_Audio "Аудіо"
#define MSGTR_EQU_Video "Відео"
#define MSGTR_EQU_Contrast "Контраст: "
#define MSGTR_EQU_Brightness "Яскравість: "
#define MSGTR_EQU_Hue "Тон: "
#define MSGTR_EQU_Saturation "Насиченість: "
#define MSGTR_EQU_Front_Left "Передній Лівий"
#define MSGTR_EQU_Front_Right "Передній Правий"
#define MSGTR_EQU_Back_Left "Задній Лівий"
#define MSGTR_EQU_Back_Right "Задній Правий"
#define MSGTR_EQU_Center "Центральний"
#define MSGTR_EQU_Bass "Бас"
#define MSGTR_EQU_All "Усі"
#define MSGTR_EQU_Channel1 "Канал 1:"
#define MSGTR_EQU_Channel2 "Канал 2:"
#define MSGTR_EQU_Channel3 "Канал 3:"
#define MSGTR_EQU_Channel4 "Канал 4:"
#define MSGTR_EQU_Channel5 "Канал 5:"
#define MSGTR_EQU_Channel6 "Канал 6:"
// --- playlist
#define MSGTR_PLAYLIST_Path "Шлях"
#define MSGTR_PLAYLIST_Selected "Вибрані файли"
#define MSGTR_PLAYLIST_Files "Файли"
#define MSGTR_PLAYLIST_DirectoryTree "Дерево каталогу"
// --- preferences
#define MSGTR_PREFERENCES_SubtitleOSD "Субтитри й OSD"
#define MSGTR_PREFERENCES_Codecs "Кодеки й demuxer"
#define MSGTR_PREFERENCES_Misc "Різне"
#define MSGTR_PREFERENCES_None "Немає"
#define MSGTR_PREFERENCES_AvailableDrivers "Доступні драйвери:"
#define MSGTR_PREFERENCES_DoNotPlaySound "Не грати звук"
#define MSGTR_PREFERENCES_NormalizeSound "Нормалізувати звук"
#define MSGTR_PREFERENCES_EnableEqualizer "Дозволити еквалайзер"
#define MSGTR_PREFERENCES_ExtraStereo "Дозволити додаткове стерео"
#define MSGTR_PREFERENCES_Coefficient "Коефіціент:"
#define MSGTR_PREFERENCES_AudioDelay "Затримка аудіо"
#define MSGTR_PREFERENCES_DoubleBuffer "Дозволити подвійне буферування"
#define MSGTR_PREFERENCES_DirectRender "Дозволити прямий вивід"
#define MSGTR_PREFERENCES_FrameDrop "Дозволити пропуск кадрів"
#define MSGTR_PREFERENCES_HFrameDrop "Дозволити викидування кадрів (небезпечно)"
#define MSGTR_PREFERENCES_Flip "Перегорнути зображення догори ногами"
#define MSGTR_PREFERENCES_Panscan "Panscan: "
#define MSGTR_PREFERENCES_OSDTimer "Таймер та індікатори"
#define MSGTR_PREFERENCES_OSDProgress "Лише лінійки"
#define MSGTR_PREFERENCES_OSDTimerPercentageTotalTime "Таймер, проценти та загальний час"
#define MSGTR_PREFERENCES_Subtitle "Субтитри:"
#define MSGTR_PREFERENCES_SUB_Delay "Затримка: "
#define MSGTR_PREFERENCES_SUB_FPS "к/c:"
#define MSGTR_PREFERENCES_SUB_POS "Положення: "
#define MSGTR_PREFERENCES_SUB_AutoLoad "Заборонити автозавантаження субтитрів"
#define MSGTR_PREFERENCES_SUB_Unicode "Unicode субтитри"
#define MSGTR_PREFERENCES_SUB_MPSUB "Перетворити вказані субтитри до формату MPlayer"
#define MSGTR_PREFERENCES_SUB_SRT "Перетворити вказані субтитри до формату SubViewer (SRT)"
#define MSGTR_PREFERENCES_SUB_Overlap "Дозволити/заборонити перекриття субтитрів"
#define MSGTR_PREFERENCES_Font "Шрифт:"
#define MSGTR_PREFERENCES_FontFactor "Фактор шрифту:"
#define MSGTR_PREFERENCES_PostProcess "Дозволити postprocessing"
#define MSGTR_PREFERENCES_AutoQuality "Авто якість: "
#define MSGTR_PREFERENCES_NI "Використовувати неперемежений AVI парсер"
#define MSGTR_PREFERENCES_IDX "Перебудувати індекс, якщо треба"
#define MSGTR_PREFERENCES_VideoCodecFamily "Драйвер відео содеку:"
#define MSGTR_PREFERENCES_AudioCodecFamily "Драйвер аудіо кодеку:"
#define MSGTR_PREFERENCES_FRAME_OSD_Level "Рівень OSD"
#define MSGTR_PREFERENCES_FRAME_Subtitle "Субтитри"
#define MSGTR_PREFERENCES_FRAME_Font "Шрифт"
#define MSGTR_PREFERENCES_FRAME_PostProcess "Postprocessing"
#define MSGTR_PREFERENCES_FRAME_CodecDemuxer "Кодек й demuxer"
#define MSGTR_PREFERENCES_FRAME_Cache "Кеш"
#define MSGTR_PREFERENCES_Message "Не забудьте, що вам треба перезапустити програвання для набуття чинності деяких параметрів!"
#define MSGTR_PREFERENCES_DXR3_VENC "Відео кодек:"
#define MSGTR_PREFERENCES_DXR3_LAVC "Використовувати LAVC (FFmpeg)"
#define MSGTR_PREFERENCES_FontEncoding1 "Unicode"
#define MSGTR_PREFERENCES_FontEncoding2 "Western European Languages (ISO-8859-1)"
#define MSGTR_PREFERENCES_FontEncoding3 "Western European Languages with Euro (ISO-8859-15)"
#define MSGTR_PREFERENCES_FontEncoding4 "Slavic/Central European Languages (ISO-8859-2)"
#define MSGTR_PREFERENCES_FontEncoding5 "Esperanto, Galician, Maltese, Turkish (ISO-8859-3)"
#define MSGTR_PREFERENCES_FontEncoding6 "Old Baltic charset (ISO-8859-4)"
#define MSGTR_PREFERENCES_FontEncoding7 "Cyrillic (ISO-8859-5)"
#define MSGTR_PREFERENCES_FontEncoding8 "Arabic (ISO-8859-6)"
#define MSGTR_PREFERENCES_FontEncoding9 "Modern Greek (ISO-8859-7)"
#define MSGTR_PREFERENCES_FontEncoding10 "Turkish (ISO-8859-9)"
#define MSGTR_PREFERENCES_FontEncoding11 "Baltic (ISO-8859-13)"
#define MSGTR_PREFERENCES_FontEncoding12 "Celtic (ISO-8859-14)"
#define MSGTR_PREFERENCES_FontEncoding13 "Hebrew charsets (ISO-8859-8)"
#define MSGTR_PREFERENCES_FontEncoding14 "Russian (KOI8-R)"
#define MSGTR_PREFERENCES_FontEncoding15 "Ukrainian, Belarusian (KOI8-U/RU)"
#define MSGTR_PREFERENCES_FontEncoding16 "Simplified Chinese charset (CP936)"
#define MSGTR_PREFERENCES_FontEncoding17 "Traditional Chinese charset (BIG5)"
#define MSGTR_PREFERENCES_FontEncoding18 "Japanese charsets (SHIFT-JIS)"
#define MSGTR_PREFERENCES_FontEncoding19 "Korean charset (CP949)"
#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_FontNoAutoScale "Без автомасштабування"
#define MSGTR_PREFERENCES_FontPropWidth "Пропорційно ширині кадру"
#define MSGTR_PREFERENCES_FontPropHeight "Пропорційно висоті кадру"
#define MSGTR_PREFERENCES_FontPropDiagonal "Пропорційно діагоналі кадру"
#define MSGTR_PREFERENCES_FontEncoding "Кодування:"
#define MSGTR_PREFERENCES_FontBlur "Розпливання:"
#define MSGTR_PREFERENCES_FontOutLine "Обведення:"
#define MSGTR_PREFERENCES_FontTextScale "Масштаб тексту:"
#define MSGTR_PREFERENCES_FontOSDScale "Масштаб OSD:"
#define MSGTR_PREFERENCES_Cache "Кеш on/off"
#define MSGTR_PREFERENCES_CacheSize "Розмір кешу: "
#define MSGTR_PREFERENCES_LoadFullscreen "Стартувати в полний екран"
#define MSGTR_PREFERENCES_SaveWinPos "Зберігати положення вікна"
#define MSGTR_PREFERENCES_XSCREENSAVER "Stop XScreenSaver"
#define MSGTR_PREFERENCES_PlayBar "Дозволити лінійку програвання"
#define MSGTR_PREFERENCES_AutoSync "AutoSync on/off"
#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_ABOUT_UHU "GUI розробку спонсовано UHU Linux\n"
// --- messagebox
#define MSGTR_MSGBOX_LABEL_FatalError "фатальна помилка..."
#define MSGTR_MSGBOX_LABEL_Error "помилка..."
#define MSGTR_MSGBOX_LABEL_Warning "попередження..."
#endif

View File

@ -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"

View File

@ -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"

View File

@ -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

View File

@ -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)
{

View File

@ -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;

View File

@ -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",

View File

@ -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",

View File

@ -38,7 +38,7 @@
static arts_stream_t stream;
static ao_info_t info =
static const ao_info_t info =
{
"aRts audio output",
"arts",

334
libao2/ao_dart.c Normal file
View File

@ -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;
}

View File

@ -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));

View File

@ -36,7 +36,7 @@
#include "libmpdemux/mpeg_packetizer.h"
static ao_info_t info =
static const ao_info_t info =
{
"DXR2 audio output",
"dxr2",

View File

@ -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",

View File

@ -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",

View File

@ -40,7 +40,7 @@
#include <jack/jack.h>
static ao_info_t info =
static const ao_info_t info =
{
"JACK audio output",
"jack",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -38,7 +38,7 @@
#include "libvo/fastmemcpy.h"
static ao_info_t info =
static const ao_info_t info =
{
"SDLlib audio output",
"sdl",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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;
}

View File

@ -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

View File

@ -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);

View File

@ -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,\

View File

@ -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;
}

View File

@ -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) {

View File

@ -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);

View File

@ -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();
}

View File

@ -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;

View File

@ -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);
@ -398,6 +406,93 @@ static ass_image_t** render_glyph(bitmap_t* bm, int dst_x, int dst_y, uint32_t c
return tail;
}
/**
* \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;

View File

@ -105,6 +105,7 @@ typedef struct ass_track_s {
int PlayResY;
double Timer;
int WrapStyle;
char ScaledBorderAndShadow;
int default_style; // index of default style

View File

@ -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)
{

View File

@ -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;

View File

@ -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 */

View File

@ -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)

View File

@ -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 */

View File

@ -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;

View File

@ -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 @@

View File

@ -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
}
}

View File

@ -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
}
}

View File

@ -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;

View File

@ -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)

View File

@ -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;

View File

@ -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)

View File

@ -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)

View File

@ -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;

View File

@ -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;

View File

@ -299,7 +299,7 @@ extern char *vo_subdevice;
extern int vo_colorkey;
extern int WinID;
extern int64_t WinID;
typedef struct {
float min;

View File

@ -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:
{

View File

@ -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;

View File

@ -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);

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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"

Some files were not shown because too many files have changed in this diff Show More