1
0
mirror of https://github.com/mpv-player/mpv synced 2025-04-01 00:07:33 +00:00

Merge svn changes up to r27184

This commit is contained in:
Uoti Urpala 2008-07-01 16:18:21 +03:00
commit 7de350c673
26 changed files with 1611 additions and 1226 deletions

View File

@ -7,8 +7,10 @@ MPlayer (1.0)
* support for DTS WAV/DTS-CD passthrough by ad_hwac3
* Apple's raw YUV2 in MOV
* LATM over LOAS AAC decoding via internal libfaad2
* video game codecs: BFI video
* 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
Demuxers:
* -lavfdopts cryptokey allows decrypting MXF and ASF files
@ -23,6 +25,7 @@ MPlayer (1.0)
* support VOBsub in lavf demuxer
* support MOV subtitle format
* support for attachments in lavf demuxer
* support for chapters in lavf demuxer
Filters:
* vf_ow new overcomplete wavelet denoiser

File diff suppressed because it is too large Load Diff

View File

@ -872,7 +872,7 @@ Currently the following drivers are fixed-vo compliant: gl, gl2, mga, svga, x11,
xmga, xv, xvidix and dfbmga.
.
.TP
.B \-framedrop (also see \-hardframedrop, experimental without \-no\-correct\-pts)
.B \-framedrop (also see \-hardframedrop, experimental without \-nocorrect\-pts)
Skip displaying some frames to maintain A/V sync on slow systems.
Video filters are not applied to such frames.
For B-frames even decoding is skipped completely.
@ -888,10 +888,10 @@ Does not work as a config-file option.
Show short summary of options.
.
.TP
.B \-hardframedrop (experimental without \-no\-correct\-pts)
.B \-hardframedrop (experimental without \-nocorrect\-pts)
More intense frame dropping (breaks decoding).
Leads to image distortion!
Note that especially the libmpeg2 decoder may crash with this,
Note that especially the libmpeg2 decoder may crash with this,
so consider using "\-vc ffmpeg12,".
.
.TP
@ -2006,7 +2006,7 @@ Will help if video freezes but audio does not.
.I NOTE:
May not work with \-vo directx and \-vf crop combination.
.IPs "hidden_vp_renderer (dshow only)"
Terminate VideoPort pin stream with video renderer
Terminate VideoPort pin stream with video renderer
instead of removing it from the graph (default: off).
Useful if your card has a VideoPort pin and video is choppy.
.I NOTE:
@ -5342,7 +5342,7 @@ speed (default).
.br
This works by playing \'stride\' ms of audio at normal speed then
consuming \'stride*scale\' ms of input audio.
It pieces the strides together by blending 'overlap'% of stride with
It pieces the strides together by blending \'overlap\'% of stride with
audio following the previous stride.
It optionally performs a short statistical analysis on the next \'search\'
ms of audio to determine the best overlap position.
@ -5372,7 +5372,7 @@ On slow systems, you will probably want to set this very low.
Set response to speed change.
.RSss
.IPs tempo
Scale tempo in sync with speed (default)
Scale tempo in sync with speed (default).
.IPs pitch
Reverses effect of filter.
Scales pitch without altering tempo.
@ -5381,9 +5381,9 @@ to your input.conf to step by musical semi-tones.
.I WARNING:
Loses sync with video.
.IPs both
Scale both tempo and pitch
Scale both tempo and pitch.
.IPs none
Ignore speed changes
Ignore speed changes.
.RE
.RE
.sp 1
@ -5494,8 +5494,12 @@ Use 2 to get only even dimensions (needed for 4:2:2 video).
.
.TP
.B rectangle[=w:h:x:y]
The plugin responds to the input.conf directive 'change_rectangle'
that takes two parameters.
Draws a rectangle of the requested width and height at the specified
coordinates over the image and prints current rectangle parameters
to the console.
This can be used to find optimal cropping parameters.
If you bind the input.conf directive 'change_rectangle' to keystrokes,
you can move and resize the rectangle on the fly.
.PD 0
.RSs
.IPs <w>,<h>

View File

@ -1,4 +1,4 @@
.\" synced with r27057
.\" synced with r27182
.\" Encoding: iso-8859-1
.\" MPlayer (C) 2000-2008 MPlayer Team
.\" The English man page was/is done by Gabucino, Diego Biurrun, Jonas Jermann
@ -133,7 +133,7 @@ tivo://h
.br
.B mencoder
[options] fichier
[fichier|URL|\-] [\-o fichier | file://fichier | smb://[utilisateur:mot_de_passe@]hôte/chemin/vers/le/fichier]
[fichier|URL|\-] [\-o fichier | file://fichier | smb://[utilisateur:mot_de_passe@]hôte/chemin/vers/le/fichier]
.
.br
.B mencoder
@ -160,7 +160,7 @@ Un autre gros atout de MPlayer est la grande vari
sortie audio et vidéos gérés.
Il fonctionne avec X11, XV, DGA, OpenGL, SVGAlib, fbdev, AAlib, libcaca,
DirectFB, Quartz, Mac OS X CoreVideo, mais vous pouvez aussi utiliser
GGI, SDL (et de cette façon tous leurs drivers), VESA (sur n'importe
GGI, SDL (et de cette façon tous leurs drivers), VESA (sur n'importe
quelle carte compatible VESA, même sans X11), quelques drivers spécifiques à
certaines cartes (pour Matrox, 3dfx et ATI) et certaines cartes de
décompression MPEG, telles que les Siemens DVB, Hauppauge PVR (IVTV), DXR2 et DXR3/\:Hollywood+.
@ -910,7 +910,7 @@ Actuellement les pilotes suivants fonctionnent avec fixed-vo: gl, gl2, mga,
svga, x11, xmga, xv, xvidix et dfbmga.
.
.TP
.B \-framedrop (voir aussi \-hardframedrop, expérimental sans \-no\-correct\-pts)
.B \-framedrop (voir aussi \-hardframedrop, expérimental sans \-nocorrect\-pts)
Saute l'affichage de certaines trames pour maintenir la synchro A/V sur
les machines lentes.
Les filtres vidéo ne sont pas appliqués sur de telles trames.
@ -931,7 +931,7 @@ Ne fonctionne pas en tant qu'option de fichier de configuration.
Affiche un court résumé des options.
.
.TP
.B \-hardframedrop (expérimental sans \-no\-correct\-pts)
.B \-hardframedrop (expérimental sans \-nocorrect\-pts)
Saute les trames de façon plus brutale (casse le décodage).
Mène à des distorsions d'image!
.
@ -1690,7 +1690,7 @@ cbr: Taux binaire constant.
.IPs vpeak=<valeur>
Spécifie le taux binaire maximum d'encodage vidéo (utile uniquement dans le
cas du mode VBR).
La valeur par défaut est de 9.6 Mbps.
La valeur par défaut est de 9.6 Mbps.
.IPs fmt=<valeur>
Détermine le format MPEG utilisé pour l'encodage\ :
.RSss
@ -2915,7 +2915,7 @@ pilote de sortie audio natif de Mac OS X
Pilote de sortie audio OpenAL expérimental.
.
.TP
+.B "pulse\ \ "
.B "pulse\ \ "
Pilote de sortie audio PulseAudio
.PD 0
.RSs
@ -5131,7 +5131,7 @@ canaux, pour que ce filtre puisse alors coder les N canaux en AC-3.
.PD 0
.RSs
.IPs <vers_spdif>
Sort au flux AC-3 brut si égal à 0 ou non spécifié, sort
Sort au flux AC-3 brut si égal à 0 ou non spécifié, sort
transit vers S/PDIF quand <vers_spdif> est différent de 0.
.IPs <débit>
Le débit de codage du flux AC-3.
@ -5628,7 +5628,7 @@ optionnellement synchronis
.br
Cela fonctionne en jouant \'stride\' ms de son à vitesse normale
puis \'stride*scale\' ms de son d'entrée.
Les échantillons sont ensuite joints en combinant 'overlap'% de
Les échantillons sont ensuite joints en combinant \'overlap\'% de
stride avec les échantillons du stride précédent.
Optionnellement, il détermine statistiquement sur les \'search\' ms de son
à venir la meilleure position d'overlap.
@ -5656,7 +5656,7 @@ valeur.
Défini la réponse à un changement de vitesse.
.RSss
.IPs tempo
Ajuste le tempo pour rester synchronisé (par défaut)
Ajuste le tempo pour rester synchronisé (par défaut).
.IPs pitch
Inverse l'effet de ce filtre.
Ajuste le ton sans changer le tempo.
@ -5780,8 +5780,13 @@ Prenez 2 pour avoir des dimensions paires (obligatoire pour les vid
.
.TP
.B rectangle[=l:h:x:y]
Ce plugin répond à la directive 'change_rectangle' de input.conf qui prend
deux paramètres.
Dessine, par-dessus l'image, un rectangle de la largeur et hauteur demandée,
aux coordonnées données, et affiche les paramètres courants de rectangle sur
la console.
Peut être utilisé pour affiner la recherche des paramètre de découpage (cropping)
optimals.
Si vous associiez la directive input.conf 'change_rectangle' à une touche, vous
pourriez alors déplacer et re-dimentionner le rectangle à la volée.
.PD 0
.RSs
.IPs <l>,<h>
@ -6294,7 +6299,7 @@ rend l'image plus lisse mais plus floue
.
.TP
.B pp7[=qp[:mode]]
Variante du filtre spp, similaire à pp=6 avec 7 points de DCT
Variante du filtre spp, similaire à pp=6 avec 7 points de DCT
où uniquement l'échantillon du centre est utilisé après la IDCT.
.RSs
.IPs <qp>
@ -7008,7 +7013,7 @@ Si non-nul, le mode deghosting est utilis
Ceci est destiné aux vidéos ayant été désentrelacées en fusionnant les champs
ensemble au lieu d'en jeter un.
Le deghosting amplifie les artefacts de compression des champs fusionnés,
et la valeur du paramètre est celle du seuil pour exclure les pixels
et la valeur du paramètre est celle du seuil pour exclure les pixels
du filtre deghosting s'il diffère moins que ce seuil de la trame
précédente.
En mode 2-passes, une valeur négative peut être donnée pour que le filtre
@ -7159,7 +7164,7 @@ Utilisez \-field\-dominance
0: sort une trame pour chaque trame d'entrée
1: sort une trame pour chaque champ d'entrée
2: comme 0 mais ne vérifie pas l'entrelacement spatial
3: comme 3 mais ne vérifie pas l'entrelacement spatial
3: comme 3 mais ne vérifie pas l'entrelacement spatial
.IPs <dominance de champ> (DEPRECATED/À ÉVITER)
cf tfields
.br
@ -8291,7 +8296,7 @@ intervalle de recherche de l'estimation de mouvement
.B mbd=<0\-2> (voir aussi *cmp, qpel)
Algorithme de décision de macro-block (mode haute qualité), encode chaque
macro-block dans tous les modes et choisit le meilleur.
C'est lent mais permet d'améliorer la qualité visuelle et réduire la taille
C'est lent mais permet d'améliorer la qualité visuelle et réduire la taille
du fichier.
Quand mbd est mis à 1 ou 2, la valeur de de mbcmp est ignoré quand les
macro-blocks sont comparés entre eux (la valeur de mbcmp reste utilisée dans
@ -9183,7 +9188,7 @@ somme des diff
.IPs "1 (SSE)"
somme des erreurs au carré
.IPs "2 (SATD)"
somme des différences absolues de la transformée de Hadamard
somme des différences absolues de la transformée de Hadamard
.IPs "3 (DCT)"
somme des différences absolues de la transformée DCT
.IPs "4 (PSNR)"
@ -9202,7 +9207,7 @@ somme des diff
somme des différences au carré préservant le bruit
.IPs "11 (W53)"
ondelette 5/3, utilisé par Snow
+.IPs "12 (W97)"
.IPs "12 (W97)"
ondelette 9/7, utilisé par Snow
.IPs "+256\ "
Utilise également le chroma, ne fonctionne pour le moment pas (correctement)
@ -9810,7 +9815,7 @@ D
conserver plus de détails.
À faible débit binaire, H.263 adoucit plus les traits de l'image et donnera une
image où les macro-blocs se verront moins.
Si vous utilisez vos propres matrices de quantification, vous
Si vous utilisez vos propres matrices de quantification, vous
.B devez
utiliser la quantification MPEG.
.
@ -11112,9 +11117,10 @@ de tampons "buffer underflows".
.
.TP
.B packetsize=<taille>
Size, expressed in bytes, of the unitary packet for the chosen format.
+When muxing to MPEG[12] implementations the default values are:
+2324 for [S]VCD, 2048 for all others formats.
Taille, exprimée en octets, du paquet unitaire du format donné.
Lorsque le format de sortie est l'une des implémentations de MPEG[12],
les valeurs par défaut sont\ :
2324 pour [S]VCD, et 2048 pour tous les autres formats.
.
.TP
.B preload=<distance>

View File

@ -1,4 +1,4 @@
.\" sync with en/mplayer.1 r26909
.\" sync with en/mplayer.1 r27132
.\" Encoding: UTF-8
.\" Reminder of hard terms which need better/final solution later:
.\" /capture; playtree in parent list; colorkey; retrace; desync; downmix;
@ -794,7 +794,7 @@ xover, xv (参见 \-vo xv:ck), xvmc (参见 \-vo xv:ck) 和 directx 支持。
xover, xv (参见 \-vo xv:ck), xvmc (参见 \-vo xv:ck) 和 directx 支持。
.
.TP
.B \-correct\-pts用于试验
.B \-correct\-pts处于测试阶段
切换 MPlayer 到试验模式,
其中视频帧的时戳计算不同, 且支持视频过滤器添加新的帧或修改已有的时戳。
可以看到更精确的时戳, 例如通过 \-ass 选项修改播放字幕与镜头同步。
@ -802,7 +802,7 @@ xover, xv (参见 \-vo xv:ck), xvmc (参见 \-vo xv:ck) 和 directx 支持。
此选项不能与某些分路器和编解码器一起正常工作。
.
.TP
.B \-crash\-debug (调试代码)
.B \-crash\-debug(调试代码)
一旦崩溃或 SIGTRAP 自动联上 gdb 调试程序。
此支持必须已编译进配置 \-\-enable\-crash\-debug。
.
@ -862,13 +862,13 @@ xv, xvidix 和 dfbmga。
MPlayer 执行此命令时不加以检查,所以你有责任确保该命令不造成任何安全问题(例
如,如果“.”就像在 Windows 中那样是在你的路径中,则确保使用完整路径)。
.sp 1
该选项可能被“误用”于禁用不支持正确的 X API 的屏幕保护程序。
如果你觉得这太复杂了,请要求屏幕保护程序的作者提供对于正确 X API 的支持。
该选项可能被“误用”以禁用不提供对于适当的 X API 接口的支持的屏幕保护程序。
如果你觉得这太复杂了,请要求屏幕保护程序的作者提供对于适当的 X API 的支持。
.sp 1
.I 用于 xscreensaver 的示例:
mplayer \-heartbeat\-cmd "xscreensaver\-command \-deactivate" file
.sp 1
.I 用于 gnome screensaver 的示例:
.I 用于 GNOME screensaver 的示例:
mplayer \-heartbeat\-cmd "gnome\-screensaver\-command \-p" file
.RE
.PD 1
@ -1561,7 +1561,8 @@ dvd: DVD compatible stream (DVD 可兼容流)
允许的最小频率默认值87.50
.IPs "freq_max=<value>(仅适用于*BSD BT848"
允许的最大频率默认值108.00
.IPs channels=<频率>\-<名称>,<频率>\-<名称>,...
.IPs
channels=<频率>\-<名称>[=<常规值>],<频率>\-<名称>[=<常规值>],...
设置频道列表。
在名称中用“_”代替空格或使用引号
频道名字就会以OSD方式显示出来而从命令radio_step_channel和radio_set_channel
@ -5129,7 +5130,11 @@ Completely empties the filter list.
.
.TP
.B rectangle[=w:h:x:y]
该插件响应 input.conf 中的两参数指令change_rectangle
在图像之上于指定坐标画一个所要求宽度和高度的矩形,并且将当前矩形的参数输出至
控制台窗口。
该选项可用来找到最优的切割参数。
如果你将 input.conf 中的指令change_rectangle与按键绑定那么你可以实时
移动和调整矩阵。
.PD 0
.RSs
.IPs <w>,<h>
@ -6898,7 +6903,7 @@ h参数值。
你可以使用以下的句法指定特定编解码器专用的参数:
.
.TP
.B \-<codec>opts <option1[=value],option2,...>
.B \-<codec>opts <option1[=value1]:option2[=value2]:...>
.
.PP
这里<codec>可以是lavc、xvidenc、lame、toolame、twolame、nuv、xvfw、faac、
@ -9979,6 +9984,11 @@ FIXME: 待解释。
.B VIDIX_CRT
FIXME: 待解释。
.
.TP
.B VIDIXIVTVALPHA
将该选项设为disable可以阻止 VIDIX 驱动控制阿尔法混合的参数。
然后你就可以自己使用ivtvfbctl操作这一参数。
.
.SS osdep:
.
.TP

View File

@ -46,6 +46,8 @@ Small improvements:
* ability to cycle switch_aspect
* ability to rename vo_jpeg,vo_gif,vo_png output filename
Cleanup:
* integrate dvdnav into mplayer structure
@ -133,7 +135,7 @@ Enhancements:
* rotate/position osd
* support all image formats in mf:// (tiff, jpeg2000)
* support all image formats in mf:// (psd, jpeg2000)
* make -noborder work with all video outputs

View File

@ -83,8 +83,9 @@ fonts, and the onscreen display (OSD)?
<para>
The player is rock solid playing damaged MPEG files (useful for some VCDs),
and it plays bad AVI files which are unplayable with the famous windows
media player. Even AVI files without index chunk are playable, and you can
and it plays bad AVI files which are unplayable with the famous
<application>Windows Media Player</application>.
Even AVI files without index chunk are playable, and you can
temporarily rebuild their indexes with the <option>-idx</option> option, or
permanently with <application>MEncoder</application>, thus enabling
seeking! As you see, stability and quality are the most important things,

View File

@ -60,14 +60,13 @@ il y a beaucoup d'informations intéressantes à y trouver.
<para>
<application>MPlayer</application> est un lecteur de vidéos pour GNU/Linux
(fonctionne sur de nombreux autres Un*x, et processeurs
<emphasis role="bold">non-x86</emphasis>, voir la section <xref linkend="ports"/>).
(fonctionne sur de nombreux autres Un*x, et processeurs non-x86, voir la
section <xref linkend="ports"/>).
Il lit la majorité des fichiers MPEG, VOB, AVI, OGG/OGM, VIVO, ASF/WMA/WMV,
QT/MOV/MP4, FLI, RM, NuppelVideo, yuv4mpeg, FILM, RoQ, PVA, Matroska supportés
par de nombreux codecs natifs, XAnim, RealPlayer et les DLLs Win32.
Vous pouvez regarder les <emphasis role="bold">VideoCD, SVCD, DVD, 3ivx,
RealMedia, Sorenson, Theora</emphasis>, ainsi que les vidéos au format
<emphasis role="bold">MPEG-4 (DivX)</emphasis>.
Vous pouvez regarder les VideoCD, SVCD, DVD, 3ivx, RealMedia, Sorenson,
Theora, ainsi que les vidéos au format MPEG-4 (DivX).
L'autre point fort de <application>MPlayer</application> est la grande
variété de pilotes de sortie supportée.
Il fonctionne avec X11, Xv, DGA, OpenGL, SVGAlib, fbdev, AAlib, libcaca,
@ -79,8 +78,8 @@ matériel, vous pouvez donc apprécier les films en plein écran.
<application>MPlayer</application> supporte la décompression matérielle
fournie par certaines cartes MPEG, telles que la <link linkend="dvb">DVB</link>
et la <link linkend="dxr3">DXR3/Hollywood+</link>.
Et que dire de ces superbes sous-titres ombrés et lissés (<emphasis role="bold">14
types supportés</emphasis>) avec des polices européennes/ISO 8859-1,2
Et que dire de ces superbes sous-titres ombrés et lissés (14
types supportés) avec des polices européennes/ISO 8859-1,2
(Hongrois, Anglais, Tchèque, etc.), Cyrilliques, Coréennes, ainsi que de
l'Affichage Sur Ecran (ou OSD = On Screen Display) ?
</para>
@ -103,12 +102,12 @@ vidéo et audio.
<application>MEncoder</application> (Le Movie Encoder de
<application>MPlayer</application>) est un simple encodeur de vidéos, conçu
pour encoder des vidéos jouables par <application>MPlayer</application>
(<emphasis role="bold">AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA</emphasis>)
(AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA)
dans d'autres formats jouables par <application>MPlayer</application>
(voir plus bas).
Il peut encoder avec des codecs variés comme <emphasis role="bold">MPEG-4 (DivX4)</emphasis>
Il peut encoder avec des codecs variés comme MPEG-4 (DivX4)
(1 ou 2 passes),<systemitem class="library">libavcodec</systemitem>,
audio <emphasis role="bold">PCM/MP3/MP3 VBR</emphasis>.
audio PCM/MP3/MP3 VBR.
</para>
@ -121,10 +120,10 @@ et de décodeurs de <application>MPlayer</application></para></listitem>
<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link> de FFmpeg
</para></listitem>
<listitem><para>
Encodage vidéo depuis <emphasis role="bold">les tuners TV compatibles V4L</emphasis>
Encodage vidéo depuis les tuners TV compatibles V4L
</para></listitem>
<listitem><para>
Encodage/multiplexage vers fichiers AVI intercalés avec index propre
Encodage/multiplexage vers fichiers AVI entrelacés avec index propre
</para></listitem>
<listitem><para>
Création de fichiers à partir de flux audio externes
@ -133,10 +132,7 @@ et de décodeurs de <application>MPlayer</application></para></listitem>
Encodage 1, 2 ou 3 passes
</para></listitem>
<listitem><para>
MP3 audio <emphasis role="bold">VBR</emphasis>
<important><para>
L'audio MP3 VBR peut ne pas toujours être bien lu par les lecteurs Windows!
</para></important>
MP3 audio VBR
</para></listitem>
<listitem><para>
PCM audio
@ -150,14 +146,14 @@ et de décodeurs de <application>MPlayer</application></para></listitem>
</para></listitem>
<listitem><para>
Correction FPS avec l'option <option>-ofps</option> (utile
pour l'encodage d'un VOB 29.97fps en AVI 24fps)
pour l'encodage d'un VOB 30000/1001&nbsp;fps en AVI 24000/1001&nbsp;fps)
</para></listitem>
<listitem><para>
Utilise notre très puissant système de plugins (crop, expand,
flip, postprocess, rotate, scale, conversion rgb/yuv)
</para></listitem>
<listitem><para>
Peut encoder les sous-titres DVD/VOBsub <emphasis role="bold">ET</emphasis>
Peut encoder les sous-titres DVD/VOBsub et
le texte des sous-titres dans le fichier de destination
</para></listitem>
<listitem><para>

View File

@ -738,8 +738,9 @@ dep depend: $(DEPS)
ALLPARTLIBS = $(foreach part, $(PARTS), $(part)/$(notdir $(part)).a)
$(ALLPARTLIBS): recurse
$(ALLPARTLIBS): ffmpeg/libavutil/*.[ch] ffmpeg/libavcodec/*.[ch] ffmpeg/libavcodec/*/*.[chS] ffmpeg/libavformat/*.[ch] ffmpeg/libpostproc/*.[ch] libswscale/*.[chS] libvo/fastmemcpy.h config.h
$(MAKE) -C $(@D)
touch $@
mplayer$(EXESUF): $(MPLAYER_DEPS)
$(CC) -o $@ $^ $(LDFLAGS_MPLAYER)
@ -1054,5 +1055,5 @@ dhahelperwinclean:
-include $(DEPS)
.PHONY: all doxygen *install* recurse *tools drivers dhahelper*
.PHONY: all doxygen *install* *tools drivers dhahelper*
.PHONY: checkheaders *clean dep depend tests

5
configure vendored
View File

@ -3643,6 +3643,7 @@ if test "$_apple_ir" = auto ; then
#include <linux/input.h>
int main(void) {
struct input_event ev;
struct input_id id;
return 0;
}
EOF
@ -7814,8 +7815,8 @@ HAVE_XVMC = $_xvmc
DEPEND_CMD = \$(CC) -MM \$(CFLAGS) \$(filter-out %.h,\$^) | sed "s,[0-9a-z._-]*: \(\$(SRC_DIR)/\)*\([a-z0-9]*/\)[^/]* ,\\2&,"
MPDEPEND_CMD = \$(CC) -MM \$(CFLAGS) \$(filter-out %.h,$^) | sed "s,[0-9a-z._-]*: \([a-z0-9/]*/\)[^/]* ,\1&,"
MPDEPEND_CMD_CXX = \$(CC) -MM \$(CXXFLAGS) \$(filter-out %.h,$^) | sed "s,[0-9a-z._-]*: \([a-z0-9/]*/\)[^/]* ,\1&,"
MPDEPEND_CMD = \$(CC) -MM \$(CFLAGS) \$(filter-out %.h,$^) | sed -e "s,[0-9a-z._-]*: \([a-z0-9/]*/\)[^/]* ,\1&," -e "s,\(.*\)\.o: ,\1.d &,"
MPDEPEND_CMD_CXX = \$(CC) -MM \$(CXXFLAGS) \$(filter-out %.h,$^) | sed -e "s,[0-9a-z._-]*: \([a-z0-9/]*/\)[^/]* ,\1&," -e "s,\(.*\)\.o: ,\1.d &,"
EOF

View File

@ -259,10 +259,10 @@ typedef struct voodoo_yuv_fb_t voodoo_yuv_fb;
#define BIT(x) (1UL << (x))
/* COMMAND_2D reg. values */
#define ROP_COPY 0xcc // src
#define ROP_INVERT 0x55 // NOT dst
#define ROP_XOR 0x66 // src XOR dst
#define ROP_OR (0xee) /* src | dst */
#define TDFXFB_ROP_COPY 0xcc // src
#define TDFXFB_ROP_INVERT 0x55 // NOT dst
#define TDFXFB_ROP_XOR 0x66 // src XOR dst
#define TDFXFB_ROP_OR 0xee // src | dst
#define AUTOINC_DSTX BIT(10)
#define AUTOINC_DSTY BIT(11)

View File

@ -9,6 +9,14 @@ release 20070930
; VIDEO CODECS
;=============================================================================
videocodec ffmdec
info "FFmpeg Sony PlayStation MDEC (Motion DECoder)"
status working
fourcc MDEC ; internal MPlayer FourCC
driver ffmpeg
dll mdec
out YV12
videocodec ffsiff
info "FFmpeg Beam Software SIFF decoder"
status working
@ -2813,6 +2821,13 @@ audiocodec ffadpcmeamaxis
driver ffmpeg
dll adpcm_ea_maxis_xa
audiocodec ffadpcmxa
info "FFmpeg XA ADPCM audio"
status working
fourcc PSXA ; internal MPlayer FourCC
driver ffmpeg
dll adpcm_xa
audiocodec ffxandpcm
info "FFmpeg XAN DPCM audio"
comment "only works with libavformat demuxer"

View File

@ -4,9 +4,11 @@
// Alexander Strasser <eclipse7@gmx.net>
// Sebastian Krämer <mail@kraymer.de>
// In sync with r24423
// In sync with r27123
// TODO: cosmetic commit 27072
// FIXME: improve wording/meaning of periodsize|timer.. for ao_alsa.c strings
// ========================= MPlayer help ===========================
#ifdef HELP_MP_DEFINE_STATIC
@ -22,8 +24,8 @@ static char help_text[]=
#endif
#ifdef USE_DVDREAD
" dvd://<titelnr> Spiele DVD-Titel direkt vom Gerät anstelle einer Datei\n"
" -alang/-slang Wähle DVD Audio/Untertitel Sprache (2-Zeichen-Ländercode)\n"
#endif
" -alang/-slang Wähle DVD Audio/Untertitel Sprache (2-Zeichen-Ländercode)\n"
" -ss <Position> Spiele ab Position (Sekunden oder hh:mm:ss)\n"
" -nosound Ohne Ton abspielen\n"
" -fs Im Vollbildmodus abspielen (oder -vm, -zoom, siehe Manpage)\n"
@ -55,9 +57,10 @@ static char help_text[]=
// libmpcodecs/ad_dvdpcm.c:
#define MSGTR_SamplesWanted "Beispiele für dieses Format werden gebraucht, um die Unterstützung zu verbessern. Bitte kontaktiere die Entwickler.\n"
// ========================= MPlayer Ausgaben ===========================
// mplayer.c:
// mplayer.c:
#define MSGTR_Exiting "\nBeenden...\n"
#define MSGTR_ExitingHow "\nBeenden... (%s)\n"
#define MSGTR_Exit_quit "Ende"
@ -156,6 +159,8 @@ static char help_text[]=
" Wir können und werden dir nicht helfen, wenn du nicht alle dort aufgeführten\n"\
" Informationen zur Verfügung stellst.\n"
#define MSGTR_LoadingConfig "Lade Konfiguration '%s'\n"
#define MSGTR_LoadingProtocolProfile "Lade protokolleigenes Profil '%s'\n"
#define MSGTR_LoadingExtensionProfile "Lade erweiterungseigenes Profil '%s'\n"
#define MSGTR_AddedSubtitleFile "SUB: Untertiteldatei (%d) hinzugefügt: %s\n"
#define MSGTR_RemovedSubtitleFile "SUB: Untertiteldatei (%d) entfernt: %s\n"
#define MSGTR_ErrorOpeningOutputFile "Fehler beim Öffnen von Datei [%s] zum Schreiben!\n"
@ -207,7 +212,6 @@ static char help_text[]=
#define MSGTR_MPEndposNoSizeBased "Die Option -endpos unterstützt für MPlayer noch keine Größenangaben.\n"
// mplayer.c OSD
#define MSGTR_OSDenabled "aktiviert"
#define MSGTR_OSDdisabled "deaktiviert"
#define MSGTR_OSDAudio "Ton: %s"
@ -217,8 +221,9 @@ static char help_text[]=
#define MSGTR_OSDSpeed "Geschwindigkeit: x %6.2f"
#define MSGTR_OSDosd "OSD: %s"
#define MSGTR_OSDChapter "Kapitel: (%d) %s"
#define MSGTR_OSDAngle "Winkel: %d/%d"
// property values
// Werte für Eigenschaften
#define MSGTR_Enabled "aktiviert"
#define MSGTR_EnabledEdl "aktiviert (EDL)"
#define MSGTR_Disabled "deaktiviert"
@ -227,8 +232,11 @@ static char help_text[]=
#define MSGTR_Bottom "unten"
#define MSGTR_Center "mittig"
#define MSGTR_Top "oben"
#define MSGTR_SubSourceFile "Datei"
#define MSGTR_SubSourceVobsub "vobsub"
#define MSGTR_SubSourceDemux "eingebettet"
// osd bar names
// Balkennamen für OSD
#define MSGTR_Volume "Lautstärke"
#define MSGTR_Panscan "Panscan"
#define MSGTR_Gamma "Gamma"
@ -238,7 +246,7 @@ static char help_text[]=
#define MSGTR_Hue "Farbton"
#define MSGTR_Balance "Balance"
// property state
// Eigenschaftenzustände
#define MSGTR_LoopStatus "Endloswiederholung: %s"
#define MSGTR_MuteStatus "Stumm: %s"
#define MSGTR_AVDelayStatus "A/V-Verzögerung: %s"
@ -248,6 +256,7 @@ static char help_text[]=
#define MSGTR_FramedroppingStatus "Framedropping: %s"
#define MSGTR_VSyncStatus "VSync: %s"
#define MSGTR_SubSelectStatus "Untertitel: %s"
#define MSGTR_SubSourceStatus "Untertitelquelle: %s"
#define MSGTR_SubPosStatus "Untertitelposition: %s/100"
#define MSGTR_SubAlignStatus "Untertitelausrichtung: %s"
#define MSGTR_SubDelayStatus "Untertitelverzögerung: %s"
@ -256,7 +265,6 @@ static char help_text[]=
#define MSGTR_SubForcedOnlyStatus "Erzwungene Untertitel: %s"
// mencoder.c:
#define MSGTR_UsingPass3ControlFile "Verwende Pass 3 Kontrolldatei: %s\n"
#define MSGTR_MissingFilename "\nDateiname nicht angegeben.\n\n"
#define MSGTR_CannotOpenFile_Device "Kann Datei/Gerät nicht öffnen.\n"
@ -726,9 +734,8 @@ static char help_text[]=
#define MSGTR_NoVolume "[Mixer] Keine Lautstärkeregelung verfügbar.\n"
#define MSGTR_NoBalance "[Mixer] Keine Regelung für Balance verfügbar.\n"
// ====================== GUI messages/buttons ========================
#ifdef HAVE_NEW_GUI
// ====================== GUI-Nachrichten/-Buttons ========================
// --- labels ---
#define MSGTR_About "Über..."
@ -770,7 +777,7 @@ static char help_text[]=
#define MSGTR_UNKNOWNWINDOWTYPE "Unbekannten Fenstertyp gefunden ..."
// --- skin loader error messages
#define MSGTR_SKIN_ERRORMESSAGE "[Skin] Fehler in Skin-Konfigurationsdatei in Zeile %d: %s"
#define MSGTR_SKIN_ERRORMESSAGE "[Skin] Fehler in Skin-Konfigurationsdatei in Zeile %d: %s"
#define MSGTR_SKIN_WARNING1 "[Skin] Warnung: in Skin-Konfigurationsdatei in Zeile %d:\nWidget (%s) gefunden, aber davor wurde \"section\" nicht gefunden"
#define MSGTR_SKIN_WARNING2 "[Skin] Warnung: in Skin-Konfigurationsdatei in Zeile %d:\nWidget (%s) gefunden, aber davor wurde \"subsection\" nicht gefunden."
#define MSGTR_SKIN_WARNING3 "[skin] Warnung: in Skin-Konfigurationsdatei in Zeile %d:\nDiese Untersektion wird vom Widget nicht unterstützt (%s)."
@ -796,7 +803,7 @@ static char help_text[]=
#define MSGTR_SKIN_SKINCFG_SkinCfgReadError "Skin-Konfigurationsdatei: Lesefehler (%s)\n"
#define MSGTR_SKIN_LABEL "Skins:"
// --- gtk menus
// --- GTK-Menüs
#define MSGTR_MENU_AboutMPlayer "Über MPlayer"
#define MSGTR_MENU_Open "Öffnen..."
#define MSGTR_MENU_PlayFile "Spiele Datei..."
@ -952,6 +959,7 @@ static char help_text[]=
#define MSGTR_PREFERENCES_FontEncoding20 "Thailändische Schriftzeichen (CP874)"
#define MSGTR_PREFERENCES_FontEncoding21 "Kyrillisch Windows (CP1251)"
#define MSGTR_PREFERENCES_FontEncoding22 "Slavisch / Zentraleuropäisch Windows (CP1250)"
#define MSGTR_PREFERENCES_FontEncoding23 "Arabisch Windows (CP1256)"
#define MSGTR_PREFERENCES_FontNoAutoScale "Keine automatische Skalierung"
#define MSGTR_PREFERENCES_FontPropWidth "Proportional zur Breite des Films"
#define MSGTR_PREFERENCES_FontPropHeight "Proportional zur Höhe des Films"
@ -989,28 +997,23 @@ static char help_text[]=
#define MSGTR_MSGBOX_LABEL_Warning "Warnung!"
// bitmap.c
#define MSGTR_NotEnoughMemoryC32To1 "[c32to1] Für das Bild ist nicht genügend Speicher vorhanden.\n"
#define MSGTR_NotEnoughMemoryC1To32 "[c1to32] Für das Bild ist nicht genügend Speicher vorhanden.\n"
// cfg.c
#define MSGTR_ConfigFileReadError "[cfg] Fehler beim Lesen der Konfigurationsdatei ...\n"
#define MSGTR_UnableToSaveOption "[cfg] Kann die Option '%s' nicht speichern.\n"
// interface.c
#define MSGTR_DeletingSubtitles "[GUI] Lösche Untertitel.\n"
#define MSGTR_LoadingSubtitles "[GUI] Lade Untertitel: %s\n"
#define MSGTR_AddingVideoFilter "[GUI] Füge Videofilter %s hinzu.\n"
#define MSGTR_RemovingVideoFilter "[GUI] Entferne Videofilter: %s\n"
// mw.c
#define MSGTR_NotAFile "Dies scheint keine Datei zu sein: %s !\n"
// ws.c
#define MSGTR_WS_CouldNotOpenDisplay "[ws] Konnte das Display nicht öffnen.\n"
#define MSGTR_WS_RemoteDisplay "[ws] Ferngesteuertes Display, deaktiviere XMITSHM.\n"
#define MSGTR_WS_NoXshm "[ws] Sorry, dein System unterstützt die Shared-Memory-Erweiterung von X nicht.\n"
@ -1023,13 +1026,12 @@ static char help_text[]=
#define MSGTR_WS_DpmsNotEnabled "Konnte DPMS nicht aktivieren.\n"
// wsxdnd.c
#define MSGTR_WS_NotAFile "Dies scheint keine Datei zu sein...\n"
#define MSGTR_WS_DDNothing "D&D: Nichts zurückgegeben!\n"
#endif
// ======================= VO Videoausgabetreiber ========================
// ======================= Videoausgabetreiber ========================
#define MSGTR_VOincompCodec \
"Der ausgewählte Videoausgabetreiber ist nicht kompatibel mit diesem Codec.\n"\
@ -1050,7 +1052,6 @@ static char help_text[]=
#define MSGTR_VO_UnknownSuboptions "unbekannte Unteroption(en)"
// vo_aa.c
#define MSGTR_VO_AA_HelpHeader "\n\nDies sind die Unteroptionen von aalib vo_aa:\n"
#define MSGTR_VO_AA_AdditionalOptions \
"Zusätzlich von vo_aa bereitgestellte Optionen:\n" \
@ -1065,7 +1066,7 @@ static char help_text[]=
"           4 : reverse\n" \
"           5 : special\n\n\n"
// vo_jpeg.c
// vo_jpeg.c
#define MSGTR_VO_JPEG_ProgressiveJPEG "Progressives JPEG aktiviert."
#define MSGTR_VO_JPEG_NoProgressiveJPEG "Progressives JPEG deaktiviert."
#define MSGTR_VO_JPEG_BaselineJPEG "Baseline-JPEG aktiviert."
@ -1110,19 +1111,21 @@ static char help_text[]=
// vo_xv.c
#define MSGTR_VO_XV_ImagedimTooHigh "Dimensionen des Quellbildes sind zu groß: %ux%u (Maximalgröße ist %ux%u)\n"
// Old vo drivers that have been replaced
// alte Videoausgabetreiber, die ersetzt wurden
#define MSGTR_VO_PGM_HasBeenReplaced "Der pgm-Videoausgabetreiber wurde ersetzt durch -vo pnm:pgmyuv.\n"
#define MSGTR_VO_MD5_HasBeenReplaced "Der md5-Videoausgabetreiber wurde ersetzt durch -vo md5sum.\n"
// ======================= AO Audio Output drivers ========================
// libao2
// ======================= Audioausgabetreiber ========================
// audio_out.c
#define MSGTR_AO_ALSA9_1x_Removed \
"audio_out: Die Module alsa9 und alsa1x wurden entfernt, benutze stattdessen \n" \
"-ao alsa.\n"
#define MSGTR_AO_TryingPreferredAudioDriver "Probiere bevorzugten Audiotreiber '%.*s', Optionen '%s'\n"
#define MSGTR_AO_NoSuchDriver "Kein Audiotreiber '%.*s'\n"
#define MSGTR_AO_FailedInit "Konnte Audiotreiber '%s' nicht initialisieren\n"
#define MSGTR_AO_TryingEveryKnown "Probiere jeden bekannten Audiotreiber...\n"
// ao_oss.c
#define MSGTR_AO_OSS_CantOpenMixer "[AO OSS] audio_setup: Kann Mixer %s: %s nicht öffnen.\n"
@ -1156,9 +1159,6 @@ static char help_text[]=
#define MSGTR_AO_MPEGPES_CantSetMixer "[AO MPEGPES] Setzen des DVB-Audiomixers fehlgeschlagen: %s\n"
#define MSGTR_AO_MPEGPES_UnsupSamplerate "[AO MPEGPES] %d Hz nicht unterstützt, versuche Resampling.\n"
// ao_null.c
// Der hier hat weder mp_msg noch printf's?? [CHECK]
// ao_pcm.c
#define MSGTR_AO_PCM_FileInfo "[AO PCM] Datei: %s (%s)\nPCM: Samplerate: %iHz Kanäle: %s Format %s\n"
#define MSGTR_AO_PCM_HintInfo \
@ -1282,15 +1282,15 @@ static char help_text[]=
#define MSGTR_AO_ALSA_CannotGetPcmStatus "[AO_ALSA] Kann pcm-Status nicht ermitteln: %s\n"
// ao_plugin.c
#define MSGTR_AO_PLUGIN_InvalidPlugin "[AO PLUGIN] ungültiges Plugin: %s\n"
// ======================= AF Audio Filters ================================
// libaf
// ======================= Audiofilter ================================
// af_scaletempo.c
#define MSGTR_AF_ValueOutOfRange MSGTR_VO_ValueOutOfRange
// af_ladspa.c
#define MSGTR_AF_LADSPA_AvailableLabels "verfügbare Label in"
#define MSGTR_AF_LADSPA_WarnNoInputs "WARNUNG! Dieses LADSPA-Plugin hat keine Audio-Inputs.\n Das eingehende Audiosignal wird verlorengehen."
#define MSGTR_AF_LADSPA_ErrMultiChannel "Multichannel-Plugins (>2) werden (noch) nicht unterstützt.\n Benutze nur Mono- und Stereo-Plugins."
@ -1310,10 +1310,10 @@ static char help_text[]=
#define MSGTR_AF_FORMAT_UnknownFormat "unbekanntes Format "
// ========================== INPUT =========================================
// joystick.c
#define MSGTR_INPUT_JOYSTICK_Opening "Öffne Joystick-Gerätedatei '%s'.\n"
#define MSGTR_INPUT_JOYSTICK_CantOpen "Konnte Joystick-Gerätedatei '%s' nicht öffnen: %s\n"
#define MSGTR_INPUT_JOYSTICK_ErrReading "Fehler beim Lesen von Joystick-Gerätedatei: %s\n"
@ -1321,8 +1321,12 @@ static char help_text[]=
#define MSGTR_INPUT_JOYSTICK_WarnLostSync "Joystick: Warnung: Initialisierungsereignis, Synchronisierung mit Treiber verloren.\n"
#define MSGTR_INPUT_JOYSTICK_WarnUnknownEvent "Joystick: Warnung: Unbekannter Ereignistyp %d.\n"
// input.c
// appleir.c
#define MSGTR_INPUT_APPLE_IR_Init "Initialisiere Apple-Fernbedienung auf %s\n"
#define MSGTR_INPUT_APPLE_IR_Detect "Apple-Fernbedienung auf %s erkannt\n"
#define MSGTR_INPUT_APPLE_IR_CantOpen "Kann Gerät für Apple-Fernbedienung nicht öffnen: %s\n"
// input.c
#define MSGTR_INPUT_INPUT_ErrCantRegister2ManyCmdFds "Zu viele Kommandodateideskriptoren, konnte Deskriptor %d nicht registrieren.\n"
#define MSGTR_INPUT_INPUT_ErrCantRegister2ManyKeyFds "Zu viele Tastendateidesktriptoren, konnte Deskriptor %d nicht registrieren.\n"
#define MSGTR_INPUT_INPUT_ErrArgMustBeInt "Kommando %s: Argument %d ist keine Integerzahl.\n"
@ -1350,20 +1354,18 @@ static char help_text[]=
#define MSGTR_INPUT_INPUT_ErrCantOpenFile "Konnte Datei '%s' nicht öffnen: %s\n"
#define MSGTR_INPUT_INPUT_ErrCantInitAppleRemote "Konnte Apple Remote Fernbedienung nicht initialisieren.\n"
// ========================== LIBMPDEMUX ===================================
// url.c
#define MSGTR_MPDEMUX_URL_StringAlreadyEscaped "Zeichenkette scheint bereits im URL-Format %c%c1%c2 'escaped' zu sein.\n"
// ai_alsa1x.c
#define MSGTR_MPDEMUX_AIALSA1X_CannotSetSamplerate "Konnte Samplingrate nicht setzen.\n"
#define MSGTR_MPDEMUX_AIALSA1X_CannotSetBufferTime "Konnte Pufferzeit nicht setzen.\n"
#define MSGTR_MPDEMUX_AIALSA1X_CannotSetPeriodTime "Konnte Periode nicht setzen.\n"
// ai_alsa.c
#define MSGTR_MPDEMUX_AIALSA_PcmBrokenConfig "Kaputte Konfiguration für diesen PCM-Kanal: Keine Konfiguration verfügbar.\n"
#define MSGTR_MPDEMUX_AIALSA_UnavailableAccessType "Zugriffstyp nicht verfügbar.\n"
#define MSGTR_MPDEMUX_AIALSA_UnavailableSampleFmt "Sampleformat nicht verfügbar.\n"
@ -1379,7 +1381,6 @@ static char help_text[]=
#define MSGTR_MPDEMUX_AIALSA_AlsaReadWriteError "ALSA-Ein/Ausgabefehler."
// ai_oss.c
#define MSGTR_MPDEMUX_AIOSS_Unable2SetChanCount "Konnte Kanalzahl nicht setzen: %d\n"
#define MSGTR_MPDEMUX_AIOSS_Unable2SetStereo "Konnte Stereo nicht setzen: %d\n"
#define MSGTR_MPDEMUX_AIOSS_Unable2Open "Konnte '%s' nicht öffnen: %s\n"
@ -1392,7 +1393,6 @@ static char help_text[]=
#define MSGTR_MPDEMUX_AIOSS_AudioBlockSize2Low "Blockgröße des Tons ist zu klein, setze auf %d!\n"
// asfheader.c
#define MSGTR_MPDEMUX_ASFHDR_HeaderSizeOver1MB \
"FATAL: Dateikopf größer als 1 MB (%d)!\n" \
"Setze dich mit den MPlayer-Autoren in Verbindung und sende oder \n" \
@ -1407,7 +1407,6 @@ static char help_text[]=
#define MSGTR_MPDEMUX_ASFHDR_DRMProtected "Diese Datei wurde mit DRM-Verschlüsselung versehen, MPlayer wird sie nicht abspielen!\n"
// asf_mmst_streaming.c
#define MSGTR_MPDEMUX_MMST_WriteError "Schreibfehler\n"
#define MSGTR_MPDEMUX_MMST_EOFAlert "\nAchtung! Dateiende.\n"
#define MSGTR_MPDEMUX_MMST_PreHeaderReadFailed "Konnte 'pre-header' nicht lesen.\n"
@ -1430,7 +1429,6 @@ static char help_text[]=
#define MSGTR_MPDEMUX_MMST_Connected "Verbunden.\n"
// asf_streaming.c
#define MSGTR_MPDEMUX_ASF_StreamChunkSize2Small "Ahhhh, stream_chunk-Größe ist zu klein: %d\n"
#define MSGTR_MPDEMUX_ASF_SizeConfirmMismatch "size_confirm passt nicht!: %d %d\n"
#define MSGTR_MPDEMUX_ASF_WarnDropHeader "Warnung: 'header' verloren ????\n"
@ -1461,14 +1459,12 @@ static char help_text[]=
#define MSGTR_MPDEMUX_ASF_StreamingFailed "Fehlgeschlagen, beende.\n"
// audio_in.c
#define MSGTR_MPDEMUX_AUDIOIN_ErrReadingAudio "\nFehler beim Lesen des Tons: %s\n"
#define MSGTR_MPDEMUX_AUDIOIN_XRUNSomeFramesMayBeLeftOut "Es gab einen 'cross-run', einige Frames könnten fehlen!\n"
#define MSGTR_MPDEMUX_AUDIOIN_ErrFatalCannotRecover "Fataler Fehler, Rettung nicht möglich!\n"
#define MSGTR_MPDEMUX_AUDIOIN_NotEnoughSamples "\nNicht genug Tonsamples!\n"
// aviheader.c
#define MSGTR_MPDEMUX_AVIHDR_EmptyList "** leere Liste?!\n"
#define MSGTR_MPDEMUX_AVIHDR_FoundMovieAt "Film von 0x%X - 0x%X gefunden.\n"
#define MSGTR_MPDEMUX_AVIHDR_FoundBitmapInfoHeader "'bih' gefunden, %u Byte von %d.\n"
@ -1494,18 +1490,15 @@ static char help_text[]=
#define MSGTR_MPDEMUX_AVIHDR_IdxFileSaved "Indexdatei '%s' gespeichert.\n"
// cache2.c
#define MSGTR_MPDEMUX_CACHE2_NonCacheableStream "\rDieser Datenstrom lässt sich nicht zwischenspeichern.\n"
#define MSGTR_MPDEMUX_CACHE2_ReadFileposDiffers "!!!Unterschied in read_filepos!!! Melde diesen Fehler...\n"
// cdda.c
#define MSGTR_MPDEMUX_CDDA_CantOpenCDDADevice "Kann CDDA-Gerät nicht öffnen.\n"
#define MSGTR_MPDEMUX_CDDA_CantOpenDisc "Kann CD nicht öffnen.\n"
#define MSGTR_MPDEMUX_CDDA_AudioCDFoundWithNTracks "Musik-CD mit %ld Titeln gefunden.\n"
// cddb.c
#define MSGTR_MPDEMUX_CDDB_FailedToReadTOC "Konnte Inhaltsverzeichnis der CD nicht lesen.\n"
#define MSGTR_MPDEMUX_CDDB_FailedToOpenDevice "Konnte Gerät '%s' nicht öffnen.\n"
#define MSGTR_MPDEMUX_CDDB_NotAValidURL "ungültige URL\n"
@ -1529,7 +1522,6 @@ static char help_text[]=
#define MSGTR_MPDEMUX_CDDB_NoCDInDrive "Keine CD im Laufwerk.\n"
// cue_read.c
#define MSGTR_MPDEMUX_CUEREAD_UnexpectedCuefileLine "[bincue] Unerwartete Zeile in der Cue-Datei: %s\n"
#define MSGTR_MPDEMUX_CUEREAD_BinFilenameTested "[bincue] Zugehörige Bin-Datei unter dem Namen '%s' nicht gefunden.\n"
#define MSGTR_MPDEMUX_CUEREAD_CannotFindBinFile "[bincue] Konnte Bin-Datei nicht finden. Gebe auf.\n"
@ -1544,7 +1536,6 @@ static char help_text[]=
#define MSGTR_MPDEMUX_CUEREAD_CueStreamInfo_FilenameTrackTracksavail "CUE stream_open: Dateiname='%s', Titel=%d, verfügbare Titel: %d -> %d\n"
// network.c
#define MSGTR_MPDEMUX_NW_UnknownAF "Unbekannte Adressfamilie %d\n"
#define MSGTR_MPDEMUX_NW_ResolvingHostForAF "Löse %s auf für %s...\n"
#define MSGTR_MPDEMUX_NW_CantResolv "Konnte Namen für %s nicht auflösen: %s\n"
@ -1570,11 +1561,9 @@ static char help_text[]=
#define MSGTR_MPDEMUX_NW_CacheSizeSetTo "Cache-Größe auf %d KByte gesetzt.\n"
// demux_audio.c
#define MSGTR_MPDEMUX_AUDIO_UnknownFormat "Audiodemuxer: unbekanntes Format %d.\n"
// demux_demuxers.c
#define MSGTR_MPDEMUX_DEMUXERS_FillBufferError "fill_buffer-Fehler: schlechter Demuxer: weder vd noch ad oder sd.\n"
// demux_mkv.c
@ -1601,19 +1590,17 @@ static char help_text[]=
#define MSGTR_MPDEMUX_MKV_TooManySublinesSkippingAfterFirst "\n[mkv] Warnung: Zu viele anzuzeigende Sublines, überspringe nach den ersten %i.\n"
// demux_nuv.c
#define MSGTR_MPDEMUX_NUV_NoVideoBlocksInFile "Datei enthält keine Videoblöcke.\n"
// demux_xmms.c
#define MSGTR_MPDEMUX_XMMS_FoundPlugin "Plugin gefunden: %s (%s).\n"
#define MSGTR_MPDEMUX_XMMS_ClosingPlugin "Plugin geschlossen: %s.\n"
#define MSGTR_MPDEMUX_XMMS_WaitForStart "Warte auf die Wiedergabe des XMMS-Plugins von '%s'...\n"
// ========================== LIBMPMENU ===================================
// ========================== LIBMENU ===================================
// common
#define MSGTR_LIBMENU_NoEntryFoundInTheMenuDefinition "[MENU] Kein Eintrag in der Menüdefinition gefunden.\n"
// libmenu/menu.c
@ -1668,6 +1655,7 @@ static char help_text[]=
#define MSGTR_LIBMENU_UnknownMenuCommand "[MENU] Unbekannter Befehl: '%s'.\n"
#define MSGTR_LIBMENU_FailedToOpenMenu "[MENU] Konnte folgendes Menü nicht öffnen: '%s'.\n"
// ========================== LIBMPCODECS ===================================
// libmpcodecs/ad_libdv.c
@ -1725,10 +1713,10 @@ static char help_text[]=
// libmpcodecs/vf_test.c, vf_yuy2.c, vf_yvu9.c
#define MSGTR_MPCODECS_WarnNextFilterDoesntSupport "%s vom nächsten Filter/vo nicht unterstützt :(\n"
// ================================== LIBMPVO ====================================
// ================================== LIBVO ====================================
// mga_common.c
#define MSGTR_LIBVO_MGA_ErrorInConfigIoctl "[MGA] Fehler im ioctl von mga_vid_config (falsche mga_vid.o-Version?)"
#define MSGTR_LIBVO_MGA_CouldNotGetLumaValuesFromTheKernelModule "[MGA] Konnte die Helligkeitswerte vom Kernelmodul nicht ermitteln!\n"
#define MSGTR_LIBVO_MGA_CouldNotSetLumaValuesFromTheKernelModule "[MGA] Konnte die Helligkeitswerte vom Kernelmodul nicht setzen!\n"
@ -1736,17 +1724,17 @@ static char help_text[]=
#define MSGTR_LIBVO_MGA_InvalidOutputFormat "[MGA] ungültiges Ausgabeformat %0X\n"
#define MSGTR_LIBVO_MGA_IncompatibleDriverVersion "[MGA] Die Treiberversion von mga_vid ist mit dieser MPlayer-Version nicht kompatibel!\n"
#define MSGTR_LIBVO_MGA_CouldntOpen "[MGA] Konnte %s nicht öffnen\n"
#define MGSTR_LIBVO_MGA_ResolutionTooHigh "[MGA] Auflösung der Quelle ist in mindestens einer Dimension größer als 1023x1023. Bitte skaliere in Software um oder verwende -lavdopts lowres=1\n"
#define MGSTR_LIBVO_MGA_ResolutionTooHigh "[MGA] Auflösung der Quelle ist in mindestens einer Dimension größer als 1023x1023.\n[MGA] Bitte skaliere in Software oder verwende -lavdopts lowres=1.\n"
#define MGSTR_LIBVO_MGA_mgavidVersionMismatch "[MGA] Unterschiedliche Versionen des mga_vid-Treibers des Kernels (%u) und MPlayer (%u).\n"
// libvo/vesa_lvo.c
#define MSGTR_LIBVO_VESA_ThisBranchIsNoLongerSupported "[VESA_LVO] Dieser Zweig wird nicht länger unterstützt.\n[VESA_LVO] Benutze stattdessen bitte -vo vesa:vidix.\n"
#define MSGTR_LIBVO_VESA_CouldntOpen "[VESA_LVO] Konnte nicht öffnen: '%s'\n"
#define MSGTR_LIBVO_VESA_InvalidOutputFormat "[VESA_LVI] Ungültiges Ausgabeformat: %s(%0X)\n"
#define MSGTR_LIBVO_VESA_IncompatibleDriverVersion "[VESA_LVO] Die fb_vid-Treiberversion ist mit dieser MPlayer-Version nicht kompatibel!\n"
// libvo/vo_3dfx.c
#define MSGTR_LIBVO_3DFX_Only16BppSupported "[VO_3DFX] Nur 16bpp unterstützt!"
#define MSGTR_LIBVO_3DFX_VisualIdIs "[VO_3DFX] Visuelle ID ist %lx.\n"
#define MSGTR_LIBVO_3DFX_UnableToOpenDevice "[VO_3DFX] Kann /dev/3dfx nicht öffnen.\n"
@ -1760,7 +1748,6 @@ static char help_text[]=
#define MSGTR_LIBVO_ASPECT_NoNewSizeFoundThatFitsIntoRes "[ASPECT] Fehler: Keine neue Größe gefunden, die in die Auflösung passt!\n"
// libvo/vo_dxr3.c
#define MSGTR_LIBVO_DXR3_UnableToLoadNewSPUPalette "[VO_DXR3] Kann neue SPU-Palette nicht laden!\n"
#define MSGTR_LIBVO_DXR3_UnableToSetPlaymode "[VO_DXR3] Kann Wiedergabemodus nicht setzen!\n"
#define MSGTR_LIBVO_DXR3_UnableToSetSubpictureMode "[VO_DXR3] Kann Subbild-Modus nicht setzen!\n"
@ -1815,17 +1802,24 @@ static char help_text[]=
#define MSGTR_LIBVO_DXR3_XCorrection "[VO_DXR3] X-Koorektur: %d.\n"
#define MSGTR_LIBVO_DXR3_FailedSetSignalMix "[VO_DXR3] Konnte Signal-Mix nicht setzen!\n"
// libvo/vo_mga.c
// libvo/font_load_ft.c
#define MSGTR_LIBVO_FONT_LOAD_FT_NewFaceFailed "New_Face fehlgeschlagen. Vielleicht ist der Pfad zu den Schriften falsch?\nBitte stelle eine Text-Schriftdatei zur Verfügung (~/.mplayer/subfont.ttf).\n"
#define MSGTR_LIBVO_FONT_LOAD_FT_NewMemoryFaceFailed "New_Memory_Face fehlgeschlagen..\n"
#define MSGTR_LIBVO_FONT_LOAD_FT_SubFaceFailed "subtitle font: load_sub_face fehlgeschlagen.\n"
#define MSGTR_LIBVO_FONT_LOAD_FT_SubFontCharsetFailed "subtitle font: prepare_charset fehlgeschlagen.\n"
#define MSGTR_LIBVO_FONT_LOAD_FT_CannotPrepareSubtitleFont "Kann Untertitelschriftdatei nicht vorbereiten.\n"
#define MSGTR_LIBVO_FONT_LOAD_FT_CannotPrepareOSDFont "Kann OSD-Schrift nicht vorbereiten.\n"
#define MSGTR_LIBVO_FONT_LOAD_FT_CannotGenerateTables "Kann Tabellen nicht generieren..\n"
#define MSGTR_LIBVO_FONT_LOAD_FT_DoneFreeTypeFailed "FT_Done_FreeType fehlgeschlagen.\n"
// libvo/vo_mga.c
#define MSGTR_LIBVO_MGA_AspectResized "[VO_MGA] aspect(): Größe geändert auf %dx%d.\n"
#define MSGTR_LIBVO_MGA_Uninit "[VO] Deinitialisierung!\n"
// libvo/vo_null.c
#define MSGTR_LIBVO_NULL_UnknownSubdevice "[VO_NULL] Unbekanntes Subgerät: %s.\n"
// libvo/vo_png.c
#define MSGTR_LIBVO_PNG_Warning1 "[VO_PNG] Warnung: Kompressionslevel auf 0 gesetzt, Kompression deaktiviert!\n"
#define MSGTR_LIBVO_PNG_Warning2 "[VO_PNG] Info: Benutze -vo png:z=<n>, um Kompressionslevel von 0 bis 9 zu setzen.\n"
#define MSGTR_LIBVO_PNG_Warning3 "[VO_PNG] Info: (0 = keine Kompression, 1 = am schnellsten, wenigsten - 9 beste, langsamste Kompression)\n"
@ -1833,7 +1827,6 @@ static char help_text[]=
#define MSGTR_LIBVO_PNG_ErrorInCreatePng "[VO_PNG] Fehler in create_png.\n"
// libvo/vo_sdl.c
#define MSGTR_LIBVO_SDL_CouldntGetAnyAcceptableSDLModeForOutput "[VO_SDL] Konnte keinen akzeptierbaren SDL-Modus für die Ausgabe ermitteln.\n"
#define MSGTR_LIBVO_SDL_SetVideoModeFailed "[VO_SDL] set_video_mode: SDL_SetVideoMode fehlgeschlagen: %s.\n"
#define MSGTR_LIBVO_SDL_SetVideoModeFailedFull "[VO_SDL] Set_fullmode: SDL_SetVideoMode fehlgeschlagen: %s.\n"
@ -1854,7 +1847,6 @@ static char help_text[]=
#define MSGTR_LIBVO_SDL_UsingDriver "[VO_SDL] Benutze Treiber: %s.\n"
// libvo/vobsub_vidix.c
#define MSGTR_LIBVO_SUB_VIDIX_CantStartPlayback "[VO_SUB_VIDIX] Kann Wiedergabe nicht starten: %s\n"
#define MSGTR_LIBVO_SUB_VIDIX_CantStopPlayback "[VO_SUB_VIDIX] Kann Wiedergabe nicht anhalten: %s\n"
#define MSGTR_LIBVO_SUB_VIDIX_InterleavedUvForYuv410pNotSupported "[VO_SUB_VIDIX] Interleaved UV für YUV410P nicht unterstützt.\n"
@ -1871,7 +1863,6 @@ static char help_text[]=
#define MSGTR_LIBVO_SUB_VIDIX_CouldntGetCapability "[VO_SUB_VIDIX] Konnte Fähigkeit nicht ermitteln: %s.\n"
// libvo/vo_svga.c
#define MSGTR_LIBVO_SVGA_ForcedVidmodeNotAvailable "[VO_SVGA] Erzwungener vid_mode %d (%s) nicht verfügbar.\n"
#define MSGTR_LIBVO_SVGA_ForcedVidmodeTooSmall "[VO_SVGA] Erzwungener vid_mode %d (%s) zu klein.\n"
#define MSGTR_LIBVO_SVGA_Vidmode "[VO_SVGA] Vid_mode: %d, %dx%d %dbpp.\n"
@ -1888,7 +1879,6 @@ static char help_text[]=
#define MSGTR_LIBVO_SVGA_UsingVidix "[VO_SVGA] Benutze VIDIX. b=%i h=%i mb=%i mh=%i\n"
// libvo/vo_tdfxfb.c
#define MSGTR_LIBVO_TDFXFB_CantOpen "[VO_TDFXFB] Konnte %s nicht öffnen: %s.\n"
#define MSGTR_LIBVO_TDFXFB_ProblemWithFbitgetFscreenInfo "[VO_TDFXFB] Problem mit FBITGET_FSCREENINFO ioctl: %s.\n"
#define MSGTR_LIBVO_TDFXFB_ProblemWithFbitgetVscreenInfo "[VO_TDFXFB] Problem mit FBITGET_VSCREENINFO ioctl: %s.\n"
@ -1903,7 +1893,6 @@ static char help_text[]=
#define MSGTR_LIBVO_TDFXFB_ScreenIs "[VO_TDFXFB] Bildschirm ist %dx%d bei %d bpp, Input ist %dx%d bei %d bpp, Norm ist %dx%d.\n"
// libvo/vo_tdfx_vid.c
#define MSGTR_LIBVO_TDFXVID_Move "[VO_TDXVID] Verschiebe %d(%d) x %d => %d.\n"
#define MSGTR_LIBVO_TDFXVID_AGPMoveFailedToClearTheScreen "[VO_TDFXVID] AGP-Verschiebung konnte Bildschirm nicht löschen.\n"
#define MSGTR_LIBVO_TDFXVID_BlitFailed "[VO_TDFXVID] Blit fehlgeschlagen.\n"
@ -1926,11 +1915,9 @@ static char help_text[]=
#define MSGTR_LIBVO_TDFXVID_UnknownFormat "[VO_TDFXVID] unbekanntes Format: 0x%x.\n"
// libvo/vo_tga.c
#define MSGTR_LIBVO_TGA_UnknownSubdevice "[VO_TGA] Unbekanntes Subgerät: %s.\n"
// libvo/vo_vesa.c
#define MSGTR_LIBVO_VESA_FatalErrorOccurred "[VO_VESA] Fataler Fehler aufgetreten! Kann nicht fortfahren.\n"
#define MSGTR_LIBVO_VESA_UnknownSubdevice "[VO_VESA] unbekanntes Subgerät: '%s'.\n"
#define MSGTR_LIBVO_VESA_YouHaveTooLittleVideoMemory "[VO_VESA] Du hast zu wenig Videospeicher für diesen Modus:\n[VO_VESA] Benötigt: %08lX vorhanden: %08lX.\n"
@ -1973,11 +1960,9 @@ static char help_text[]=
#define MSGTR_LIBVO_VESA_InitializationComplete "[VO_VESA] VESA-Initialisierung abgeschlossen.\n"
// libvo/vo_x11.c
#define MSGTR_LIBVO_X11_DrawFrameCalled "[VO_X11] draw_frame() aufgerufen!!!!!!\n"
// libvo/vo_xv.c
#define MSGTR_LIBVO_XV_DrawFrameCalled "[VO_XV] draw_frame() aufgerufen!!!!!!\n"
#define MSGTR_LIBVO_XV_SharedMemoryNotSupported "[VO_XV] Shared Memory nicht unterstützt\nGreife auf normalen Xv zurück.\n"
#define MSGTR_LIBVO_XV_XvNotSupportedByX11 "[VO_XV] Sorry, Xv von dieser X11-Version/diesem Treiber nicht unterstützt\n[VO_XV] *********** Probiere mit -vo x11 oder -vo sdl ***************\n"
@ -1995,11 +1980,9 @@ static char help_text[]=
"[VO_XV] Probiere -vo x11.\n"
// loader/ldt_keeper.c
#define MSGTR_LOADER_DYLD_Warning "WARNUNG: Versuche, DLL-Codecs zu verwenden, die Umgebungsvariable\n DYLD_BIND_AT_LAUNCH ist aber nicht gesetzt. Dies führt wahrscheinlich\n zu einem Absturz.\n"
// stream/stream_radio.c
#define MSGTR_RADIO_ChannelNamesDetected "[Radio] Radiokanalnamen erkannt.\n"
#define MSGTR_RADIO_FreqRange "[Radio] Erlaubter Frequenzbereich ist %.2f-%.2f MHz.\n"
#define MSGTR_RADIO_WrongFreqForChannel "[Radio] Falsche Frequenz für Kanal %s\n"
@ -2043,11 +2026,13 @@ static char help_text[]=
#define MSGTR_RADIO_DriverBSDBT848 "[Radio] Benutze *BSD BT848-Radioschnittstelle.\n"
#define MSGTR_RADIO_AvailableDrivers "[Radio] Verfügbare Treiber: "
// ================================== LIBASS ====================================
// ass_bitmap.c
#define MSGTR_LIBASS_FT_Glyph_To_BitmapError "[ass] Fehler %d in FT_Glyph_To_Bitmap\n"
#define MSGTR_LIBASS_UnsupportedPixelMode "[ass] Nichtunterstützter Pixelmodus: %d\n"
#define MSGTR_LIBASS_GlyphBBoxTooLarge "[ass] Umgebender Rahmen für Glyph zu groß: %dx%dpx\n"
// ass.c
#define MSGTR_LIBASS_NoStyleNamedXFoundUsingY "[ass] [%p] Warnung: kein Style mit Namen '%s' gefunden, verwende '%s'\n"
@ -2066,12 +2051,12 @@ static char help_text[]=
#define MSGTR_LIBASS_FailedToCreateDirectory "[ass] Fehler beim Erstellen des Verzeichnisses %s\n"
#define MSGTR_LIBASS_NotADirectory "[ass] Kein Verzeichnis: %s\n"
// // ass_cache.c
// ass_cache.c
#define MSGTR_LIBASS_TooManyFonts "[ass] Zu viele Schriften\n"
#define MSGTR_LIBASS_ErrorOpeningFont "[ass] Fehler beim Öffnen der Schrift: %s, %d\n"
// ass_fontconfig.c
#define MSGTR_LIBASS_SelectedFontFamilyIsNotTheRequestedOne "[ass] fontconfig: Die gewählte Schriftfamilie ist nicht die angeforderte: '%s' != '%s'\n"
#define MSGTR_LIBASS_SelectedFontFamilyIsNotTheRequestedOne "[ass] fontconfig: Die gewählte Schrift ist nicht die angeforderte: '%s' != '%s'\n"
#define MSGTR_LIBASS_UsingDefaultFontFamily "[ass] fontconfig_select: Verwende Standardschriftfamilie: (%s, %d, %d) -> %s, %d\n"
#define MSGTR_LIBASS_UsingDefaultFont "[ass] fontconfig_select: Verwende Standardschrift: (%s, %d, %d) -> %s, %d\n"
#define MSGTR_LIBASS_UsingArialFontFamily "[ass] fontconfig_select: Verwende 'Arial'-Schriftfamilie: (%s, %d, %d) -> %s, %d\n"
@ -2102,7 +2087,7 @@ static char help_text[]=
#define MSGTR_LIBASS_EventHeightHasChanged "[ass] Warnung! Ereignishöhe geändert! \n"
// ass_font.c
#define MSGTR_LIBASS_GlyphNotFoundReselectingFont "[ass] Glyph 0x%X nicht gefunden, wähle Schrift erneut für (%s, %d, %d)\n"
#define MSGTR_LIBASS_GlyphNotFoundReselectingFont "[ass] Glyph 0x%X nicht gefunden, wähle weitere Schrift für (%s, %d, %d)\n"
#define MSGTR_LIBASS_GlyphNotFound "[ass] Glyph 0x%X in Schrift für (%s, %d, %d) nicht gefunden\n"
#define MSGTR_LIBASS_ErrorOpeningMemoryFont "[ass] Fehler beim Öffnen der Schrift im Speicher: %s\n"
#define MSGTR_LIBASS_NoCharmaps "[ass] Schriftfläche ohne Zeichentabelle\n"
@ -2157,4 +2142,51 @@ static char help_text[]=
#define MSGTR_TV_Bt848UnableToStopCapture "tvi_bsdbt848: Kann Aufnahme nicht stoppen. Fehler: %s\n"
#define MSGTR_TV_TTSupportedLanguages "Unterstützte Videotextsprachen:\n"
#define MSGTR_TV_TTSelectedLanguage "Gewählte Standardvideotextsprache: %s\n"
#define MSGTR_TV_ScannerNotAvailableWithoutTuner "Kanal-Scanner ist ohne Tuner nicht verfügbar.\n"
//tvi_dshow.c
#define MSGTR_TVI_DS_UnableConnectInputVideoDecoder "Kann vorhandenen Input nicht mit Videodecoder verbinden. Fehler:0x%x\n"
#define MSGTR_TVI_DS_UnableConnectInputAudioDecoder "Kann vorhandenen Input nicht mit Audiodecoder verbinden. Fehler:0x%x\n"
#define MSGTR_TVI_DS_UnableSelectVideoFormat "tvi_dshow: Kann Videoformat nicht auswählen. Fehler:0x%x\n"
#define MSGTR_TVI_DS_UnableSelectAudioFormat "tvi_dshow: Kann Audioformat nicht auswählen. Fehler:0x%x\n"
#define MSGTR_TVI_DS_UnableGetMediaControlInterface "tvi_dshow: Bekomme IMediaControl-Interface nicht. Fehler:0x%x\n"
#define MSGTR_TVI_DS_UnableStartGraph "tvi_dshow: Kann Graph nicht starten! Fehler:0x%x\n"
#define MSGTR_TVI_DS_DeviceNotFound "tvi_dshow: Gerät #%d nicht gefunden.\n"
#define MSGTR_TVI_DS_UnableGetDeviceName "tvi_dshow: Kann Namen für Gerät #%d nicht ermitteln.\n"
#define MSGTR_TVI_DS_UsingDevice "tvi_dshow: Benutze Gerät #%d: %s\n"
#define MSGTR_TVI_DS_DeviceName "tvi_dshow: Gerät #%d: %s\n"
#define MSGTR_TVI_DS_DirectGetFreqFailed "tvi_dshow: Kann Frequenz nicht direkt ermitteln. Im Betriebssystem eingebaute\nKanaltabelle wird benutzt.\n"
#define MSGTR_TVI_DS_DirectSetFreqFailed "tvi_dshow: Kann Frequenz nicht direkt setzen. Im Betriebssystem eingebaute\nKanaltabelle wird benutzt.\n"
#define MSGTR_TVI_DS_SupportedNorms "tvi_dshow: unterstützte Normen:"
#define MSGTR_TVI_DS_AvailableVideoInputs "tvi_dshow: verfügbare Video-Inputs:"
#define MSGTR_TVI_DS_AvailableAudioInputs "tvi_dshow: verfügbare Audio-Inputs:"
//following phrase will be printed near the selected audio/video input
#define MSGTR_TVI_DS_InputSelected "(gewählt)"
#define MSGTR_TVI_DS_UnableExtractFreqTable "tvi_dshow: Kann Frequenztabelle nicht von kstvtune.ax laden\n"
#define MSGTR_TVI_DS_WrongDeviceParam "tvi_dshow: Falscher Geräteparameter: %s\n"
#define MSGTR_TVI_DS_WrongDeviceIndex "tvi_dshow: Falscher Geräteindex: %d\n"
#define MSGTR_TVI_DS_WrongADeviceParam "tvi_dshow: Falscher adevice-Parameter: %s\n"
#define MSGTR_TVI_DS_WrongADeviceIndex "tvi_dshow: Falscher adevice-Index: %d\n"
#define MSGTR_TVI_DS_SamplerateNotsupported "tvi_dshow: Samplerate %d wird vom Gerät nicht unterstützt. Verwende\nerste verfügbare.\n"
#define MSGTR_TVI_DS_VideoAdjustigNotSupported "tvi_dshow: Anpassen von Helligkeit/Farbton/Sättigung wird vom Gerät nicht\nunterstützt\n"
#define MSGTR_TVI_DS_ChangingWidthHeightNotSupported "tvi_dshow: Änderung von Videobreite/-höhe wird vom Gerät nicht unterstützt.\n"
#define MSGTR_TVI_DS_SelectingInputNotSupported "tvi_dshow: Wahl der Capture-Quelle wird vom Gerät nicht unterstützt.\n"
#define MSGTR_TVI_DS_FreqTableLoaded "tvi_dshow: Frequenztabelle des Systems (%s) für Land-ID=%d (Kanäle:%d) geladen.\n"
#define MSGTR_TVI_DS_ErrorParsingAudioFormatStruct "tvi_dshow: Kann Struktur für Audioformat nicht parsen.\n"
#define MSGTR_TVI_DS_ErrorParsingVideoFormatStruct "tvi_dshow: Kann Struktur für Videoformat nicht parsen.\n"
#define MSGTR_TVI_DS_UnableSetAudioMode "tvi_dshow: Kann Audiomodus %d nicht setzen. Fehler:0x%x\n"
#define MSGTR_TVI_DS_UnsupportedMediaType "tvi_dshow: Nichtunterstützten Medientyp an %s übergeben\n"
#define MSGTR_TVI_DS_UnableGetsupportedVideoFormats "tvi_dshow: Kann vom Video-Pin unterstützte Medienformate nicht ermitteln.\nFehler:0x%x\n"
#define MSGTR_TVI_DS_UnableGetsupportedAudioFormats "tvi_dshow: Kann vom Audio-Pin unterstützte Medienformate nicht ermitteln.\nFehler:0x%x Deaktiviere Ton.\n"
#define MSGTR_TVI_DS_UnableFindNearestChannel "tvi_dshow: Kann nächstgelegenen Kanal in Systemfrequenztabelle nicht finden\n"
#define MSGTR_TVI_DS_UnableToSetChannel "tvi_dshow: Kann nicht auf nächstgelegenen Kanal aus der Systemfrequenztabelle\nwechseln. Fehler:0x%x\n"
#define MSGTR_TVI_DS_UnableTerminateVPPin "tvi_dshow: Kann VideoPort-Pin mit keinem Filter des Graphen terminieren. Fehler:0x%x\n"
#define MSGTR_TVI_DS_UnableBuildVideoSubGraph "tvi_dshow: Kann Videokette des Capture-Graphen nicht erstellen. Fehler:0x%x\n"
#define MSGTR_TVI_DS_UnableBuildAudioSubGraph "tvi_dshow: Kann Audiokette des Capture-Graphen nicht erstellen. Fehler:0x%x\n"
#define MSGTR_TVI_DS_UnableBuildVBISubGraph "tvi_dshow: Kann VBI-Kette des Capture-Graphen nicht erstellen. Fehler:0x%x\n""
#define MSGTR_TVI_DS_GraphInitFailure "tvi_dshow: Initialisierung des Directshow-Graph fehlgeschlagen.\n"
#define MSGTR_TVI_DS_NoVideoCaptureDevice "tvi_dshow: Kein Gerät für Videoerfassung gefunden\n"
#define MSGTR_TVI_DS_NoAudioCaptureDevice "tvi_dshow: Kein Gerät für Audioerfassung gefunden\n"
#define MSGTR_TVI_DS_GetActualMediatypeFailed "tvi_dshow: Kann eigentlichen Medientyp nicht ermitteln (Fehler:0x%x).\nNehme an, dieser entspricht dem angeforderten.\n"

File diff suppressed because it is too large Load Diff

View File

@ -129,6 +129,8 @@ static char* _select_font(fc_instance_t* priv, const char* family, unsigned bold
goto error;
fset = FcFontSort(priv->config, pat, FcTrue, NULL, &result);
if (!fset)
goto error;
for (curf = 0; curf < fset->nfont; ++curf) {
FcPattern* curp = fset->fonts[curf];
@ -423,45 +425,48 @@ fc_instance_t* fontconfig_init(ass_library_t* library, FT_Library ftlibrary, con
for (i = 0; i < library->num_fontdata; ++i)
process_fontdata(priv, library, ftlibrary, i);
if (FcDirCacheValid((const FcChar8 *)dir) == FcFalse)
{
mp_msg(MSGT_ASS, MSGL_INFO, MSGTR_LIBASS_UpdatingFontCache);
if (FcGetVersion() >= 20390 && FcGetVersion() < 20400)
mp_msg(MSGT_ASS, MSGL_WARN,
MSGTR_LIBASS_BetaVersionsOfFontconfigAreNotSupported);
// FontConfig >= 2.4.0 updates cache automatically in FcConfigAppFontAddDir()
if (FcGetVersion() < 20390) {
FcFontSet* fcs;
FcStrSet* fss;
fcs = FcFontSetCreate();
fss = FcStrSetCreate();
rc = FcStrSetAdd(fss, (const FcChar8*)dir);
if (!rc) {
mp_msg(MSGT_ASS, MSGL_WARN, MSGTR_LIBASS_FcStrSetAddFailed);
goto ErrorFontCache;
if (dir) {
if (FcDirCacheValid((const FcChar8 *)dir) == FcFalse)
{
mp_msg(MSGT_ASS, MSGL_INFO, MSGTR_LIBASS_UpdatingFontCache);
if (FcGetVersion() >= 20390 && FcGetVersion() < 20400)
mp_msg(MSGT_ASS, MSGL_WARN,
MSGTR_LIBASS_BetaVersionsOfFontconfigAreNotSupported);
// FontConfig >= 2.4.0 updates cache automatically in FcConfigAppFontAddDir()
if (FcGetVersion() < 20390) {
FcFontSet* fcs;
FcStrSet* fss;
fcs = FcFontSetCreate();
fss = FcStrSetCreate();
rc = FcStrSetAdd(fss, (const FcChar8*)dir);
if (!rc) {
mp_msg(MSGT_ASS, MSGL_WARN, MSGTR_LIBASS_FcStrSetAddFailed);
goto ErrorFontCache;
}
rc = FcDirScan(fcs, fss, NULL, FcConfigGetBlanks(priv->config),
(const FcChar8 *)dir, FcFalse);
if (!rc) {
mp_msg(MSGT_ASS, MSGL_WARN, MSGTR_LIBASS_FcDirScanFailed);
goto ErrorFontCache;
}
rc = FcDirSave(fcs, fss, (const FcChar8 *)dir);
if (!rc) {
mp_msg(MSGT_ASS, MSGL_WARN, MSGTR_LIBASS_FcDirSave);
goto ErrorFontCache;
}
ErrorFontCache:
;
}
}
rc = FcDirScan(fcs, fss, NULL, FcConfigGetBlanks(priv->config), (const FcChar8 *)dir, FcFalse);
if (!rc) {
mp_msg(MSGT_ASS, MSGL_WARN, MSGTR_LIBASS_FcDirScanFailed);
goto ErrorFontCache;
}
rc = FcDirSave(fcs, fss, (const FcChar8 *)dir);
if (!rc) {
mp_msg(MSGT_ASS, MSGL_WARN, MSGTR_LIBASS_FcDirSave);
goto ErrorFontCache;
}
ErrorFontCache:
;
rc = FcConfigAppFontAddDir(priv->config, (const FcChar8*)dir);
if (!rc) {
mp_msg(MSGT_ASS, MSGL_WARN, MSGTR_LIBASS_FcConfigAppFontAddDirFailed);
}
}
rc = FcConfigAppFontAddDir(priv->config, (const FcChar8*)dir);
if (!rc) {
mp_msg(MSGT_ASS, MSGL_WARN, MSGTR_LIBASS_FcConfigAppFontAddDirFailed);
}
priv->family_default = family ? strdup(family) : 0;
priv->path_default = path ? strdup(path) : 0;
priv->index_default = 0;

View File

@ -37,7 +37,7 @@
#define LE_32(x) (le2me_32(*(unsigned int *)(x)))
// pertinent tables for IMA ADPCM
static int adpcm_step[89] =
static const int16_t adpcm_step[89] =
{
7, 8, 9, 10, 11, 12, 13, 14, 16, 17,
19, 21, 23, 25, 28, 31, 34, 37, 41, 45,
@ -50,22 +50,18 @@ static int adpcm_step[89] =
15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767
};
static int adpcm_index[16] =
static const int8_t adpcm_index[8] =
{
-1, -1, -1, -1, 2, 4, 6, 8,
-1, -1, -1, -1, 2, 4, 6, 8
};
// useful macros
// clamp a number between 0 and 88
#define CLAMP_0_TO_88(x) if (x < 0) x = 0; else if (x > 88) x = 88;
#define CLAMP_0_TO_88(x) x = av_clip(x, 0, 88);
// clamp a number within a signed 16-bit range
#define CLAMP_S16(x) if (x < -32768) x = -32768; \
else if (x > 32767) x = 32767;
#define CLAMP_S16(x) x = av_clip_int16(x);
// clamp a number above 16
#define CLAMP_ABOVE_16(x) if (x < 16) x = 16;
// sign extend a 16-bit value
#define SE_16BIT(x) if (x & 0x8000) x -= 0x10000;
// sign extend a 4-bit value
#define SE_4BIT(x) if (x & 0x8) x -= 0x10;
@ -132,44 +128,31 @@ static int control(sh_audio_t *sh_audio,int cmd,void* arg, ...)
static void decode_nibbles(unsigned short *output,
int output_size, int channels,
int predictor_l, int index_l,
int predictor_r, int index_r)
int predictor[2], int index[2])
{
int step[2];
int predictor[2];
int index[2];
int diff;
int i;
int sign;
int delta;
int channel_number = 0;
step[0] = adpcm_step[index_l];
step[1] = adpcm_step[index_r];
predictor[0] = predictor_l;
predictor[1] = predictor_r;
index[0] = index_l;
index[1] = index_r;
step[0] = adpcm_step[index[0]];
step[1] = adpcm_step[index[1]];
for (i = 0; i < output_size; i++)
{
delta = output[i];
sign = delta & 8;
delta = delta & 7;
index[channel_number] += adpcm_index[delta];
CLAMP_0_TO_88(index[channel_number]);
sign = delta & 8;
delta = delta & 7;
delta = 2 * delta + 1;
if (sign) delta = -delta;
diff = step[channel_number] >> 3;
if (delta & 4) diff += step[channel_number];
if (delta & 2) diff += step[channel_number] >> 1;
if (delta & 1) diff += step[channel_number] >> 2;
if (sign)
predictor[channel_number] -= diff;
else
predictor[channel_number] += diff;
predictor[channel_number] += (delta * step[channel_number]) >> 3;
CLAMP_S16(predictor[channel_number]);
output[i] = predictor[channel_number];
@ -182,40 +165,26 @@ static void decode_nibbles(unsigned short *output,
}
static int qt_ima_adpcm_decode_block(unsigned short *output,
unsigned char *input, int channels)
unsigned char *input, int channels, int block_size)
{
int initial_predictor_l = 0;
int initial_predictor_r = 0;
int initial_index_l = 0;
int initial_index_r = 0;
int initial_predictor[2];
int initial_index[2];
int i;
initial_predictor_l = BE_16(&input[0]);
initial_index_l = initial_predictor_l;
if (channels > 1) channels = 2;
if (block_size < channels * QT_IMA_ADPCM_BLOCK_SIZE)
return -1;
// mask, sign-extend, and clamp the predictor portion
initial_predictor_l &= 0xFF80;
SE_16BIT(initial_predictor_l);
CLAMP_S16(initial_predictor_l);
// mask and clamp the index portion
initial_index_l &= 0x7F;
CLAMP_0_TO_88(initial_index_l);
// handle stereo
if (channels > 1)
{
initial_predictor_r = BE_16(&input[QT_IMA_ADPCM_BLOCK_SIZE]);
initial_index_r = initial_predictor_r;
for (i = 0; i < channels; i++) {
initial_index[i] = initial_predictor[i] = (int16_t)BE_16(&input[i * QT_IMA_ADPCM_BLOCK_SIZE]);
// mask, sign-extend, and clamp the predictor portion
initial_predictor_r &= 0xFF80;
SE_16BIT(initial_predictor_r);
CLAMP_S16(initial_predictor_r);
initial_predictor[i] &= ~0x7F;
CLAMP_S16(initial_predictor[i]);
// mask and clamp the index portion
initial_index_r &= 0x7F;
CLAMP_0_TO_88(initial_index_r);
initial_index[i] &= 0x7F;
CLAMP_0_TO_88(initial_index[i]);
}
// break apart all of the nibbles in the block
@ -236,8 +205,7 @@ static int qt_ima_adpcm_decode_block(unsigned short *output,
decode_nibbles(output,
QT_IMA_ADPCM_SAMPLES_PER_BLOCK * channels, channels,
initial_predictor_l, initial_index_l,
initial_predictor_r, initial_index_r);
initial_predictor, initial_index);
return QT_IMA_ADPCM_SAMPLES_PER_BLOCK * channels;
}
@ -245,24 +213,21 @@ static int qt_ima_adpcm_decode_block(unsigned short *output,
static int ms_ima_adpcm_decode_block(unsigned short *output,
unsigned char *input, int channels, int block_size)
{
int predictor_l = 0;
int predictor_r = 0;
int index_l = 0;
int index_r = 0;
int predictor[2];
int index[2];
int i;
int channel_counter;
int channel_index;
int channel_index_l;
int channel_index_r;
predictor_l = LE_16(&input[0]);
SE_16BIT(predictor_l);
index_l = input[2];
if (channels == 2)
{
predictor_r = LE_16(&input[4]);
SE_16BIT(predictor_r);
index_r = input[6];
if (channels > 1) channels = 2;
if (block_size < MS_IMA_ADPCM_PREAMBLE_SIZE * channels)
return -1;
for (i = 0; i < channels; i++) {
predictor[i] = (int16_t)LE_16(&input[i * 4]);
index[i] = input[i * 4 + 2];
}
if (channels == 1)
@ -306,8 +271,7 @@ static int ms_ima_adpcm_decode_block(unsigned short *output,
decode_nibbles(output,
(block_size - MS_IMA_ADPCM_PREAMBLE_SIZE * channels) * 2,
channels,
predictor_l, index_l,
predictor_r, index_r);
predictor, index);
return (block_size - MS_IMA_ADPCM_PREAMBLE_SIZE * channels) * 2;
}
@ -317,20 +281,17 @@ static int dk4_ima_adpcm_decode_block(unsigned short *output,
{
int i;
int output_ptr;
int predictor_l = 0;
int predictor_r = 0;
int index_l = 0;
int index_r = 0;
int predictor[2];
int index[2];
// the first predictor value goes straight to the output
predictor_l = output[0] = LE_16(&input[0]);
SE_16BIT(predictor_l);
index_l = input[2];
if (channels == 2)
{
predictor_r = output[1] = LE_16(&input[4]);
SE_16BIT(predictor_r);
index_r = input[6];
if (channels > 1) channels = 2;
if (block_size < MS_IMA_ADPCM_PREAMBLE_SIZE * channels)
return -1;
for (i = 0; i < channels; i++) {
// the first predictor value goes straight to the output
predictor[i] = output[i] = (int16_t)LE_16(&input[i * 4]);
index[i] = input[i * 4 + 2];
}
output_ptr = channels;
@ -343,34 +304,27 @@ static int dk4_ima_adpcm_decode_block(unsigned short *output,
decode_nibbles(&output[channels],
(block_size - MS_IMA_ADPCM_PREAMBLE_SIZE * channels) * 2 - channels,
channels,
predictor_l, index_l,
predictor_r, index_r);
predictor, index);
return (block_size - MS_IMA_ADPCM_PREAMBLE_SIZE * channels) * 2 - channels;
}
static int decode_audio(sh_audio_t *sh_audio,unsigned char *buf,int minlen,int maxlen)
{
int res = -1;
int (*decode_func)(unsigned short *output, unsigned char *input, int channels, int block_size) = qt_ima_adpcm_decode_block;
if (demux_read_data(sh_audio->ds, sh_audio->a_in_buffer,
sh_audio->ds->ss_mul) !=
sh_audio->ds->ss_mul)
return -1;
if ((sh_audio->format == 0x11) || (sh_audio->format == 0x1100736d))
{
return 2 * ms_ima_adpcm_decode_block(
(unsigned short*)buf, sh_audio->a_in_buffer, sh_audio->wf->nChannels,
sh_audio->ds->ss_mul);
}
decode_func = ms_ima_adpcm_decode_block;
else if (sh_audio->format == 0x61)
{
return 2 * dk4_ima_adpcm_decode_block(
(unsigned short*)buf, sh_audio->a_in_buffer, sh_audio->wf->nChannels,
sh_audio->ds->ss_mul);
}
else
{
return 2 * qt_ima_adpcm_decode_block(
(unsigned short*)buf, sh_audio->a_in_buffer, sh_audio->wf->nChannels);
}
decode_func = dk4_ima_adpcm_decode_block;
res = decode_func((unsigned short*)buf, sh_audio->a_in_buffer,
sh_audio->wf->nChannels, sh_audio->ds->ss_mul);
if (res < 0) return res;
else return 2 * res;
}

View File

@ -3,7 +3,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <assert.h>
#include "config.h"
#include "mp_msg.h"
@ -501,8 +500,9 @@ static int demux_asf_fill_buffer(demuxer_t *demux, demux_stream_t *ds){
int len2=p[0];
p++;
//printf(" group part: %d bytes\n",len2);
if(len2 > len - 1) break; // Not enough data
assert(len2 > 0 && len2 <= asf->packetsize);
if(len2 > len - 1 || len2 < 0) break; // Not enough data
if(len2 == 0) continue;
len2 = FFMIN(len2, asf->packetsize);
demux_asf_read_packet(demux,p,len2,streamno,seq,x,duration,-1,keyframe);
p+=len2;
len-=len2+1;
@ -515,8 +515,9 @@ static int demux_asf_fill_buffer(demuxer_t *demux, demux_stream_t *ds){
default:
// NO GROUPING:
//printf("fragment offset: %d \n",sh->x);
if (len <= 0) break;
if (!asf->asf_is_dvr_ms || asf->found_first_key_frame) {
assert(len > 0 && len <= asf->packetsize);
len = FFMIN(len, asf->packetsize);
demux_asf_read_packet(demux,p,len,streamno,seq,time2,duration,x,keyframe);
}
p+=len;

View File

@ -423,6 +423,7 @@ static int demux_audio_open(demuxer_t* demuxer) {
if((w->wFormatTag == 0x01) && (w->nChannels == 2) && (w->nSamplesPerSec == 44100)) {
unsigned char buf[16384]; // vlc uses 16384*4 (4 dts frames)
unsigned int i;
memset(buf, 0, sizeof(buf));
stream_read(s, buf, sizeof(buf));
for (i = 0; i < sizeof(buf) - 5; i += 2) {
// DTS, 14 bit, LE

View File

@ -928,10 +928,6 @@ static int gen_sh_video(sh_video_t* sh, mov_track_t* trak, int timescale) {
int hdr_ptr = 76; // the byte just after depth
unsigned char *palette_map;
depth = trak->stdata[75] | (trak->stdata[74] << 8);
if (trak->fourcc == mmioFOURCC('r', 'a', 'w', ' ')) {
sh->format = IMGFMT_RGB | depth;
} else
sh->format=trak->fourcc;
// crude video delay from editlist0 hack ::atm
@ -949,6 +945,11 @@ static int gen_sh_video(sh_video_t* sh, mov_track_t* trak, int timescale) {
trak->stdata_len);
return 0;
}
depth = trak->stdata[75] | (trak->stdata[74] << 8);
if (trak->fourcc == mmioFOURCC('r', 'a', 'w', ' '))
sh->format = IMGFMT_RGB | depth;
// stdata[]:
// 8 short version
// 10 short revision

View File

@ -62,6 +62,7 @@ static struct {
{ "ape", DEMUXER_TYPE_LAVF },
{ "apl", DEMUXER_TYPE_LAVF },
{ "mac", DEMUXER_TYPE_LAVF },
{ "str", DEMUXER_TYPE_LAVF },
// At least the following are hacks against broken autodetection
// that should not be there

View File

@ -27,6 +27,7 @@ static const AVCodecTag mp_wav_tags[] = {
{ CODEC_ID_ADPCM_EA_MAXIS_XA, MKTAG('A', 'D', 'X', 'A')},
{ CODEC_ID_ADPCM_IMA_WS, MKTAG('A', 'I', 'W', 'S')},
{ CODEC_ID_ADPCM_THP, MKTAG('T', 'H', 'P', 'A')},
{ CODEC_ID_ADPCM_XA, MKTAG('P', 'S', 'X', 'A')},
{ CODEC_ID_AMR_NB, MKTAG('n', 'b', 0, 0)},
{ CODEC_ID_COOK, MKTAG('c', 'o', 'o', 'k')},
{ CODEC_ID_DSICINAUDIO, MKTAG('D', 'C', 'I', 'A')},
@ -69,6 +70,7 @@ static const AVCodecTag mp_bmp_tags[] = {
{ CODEC_ID_FLIC, MKTAG('F', 'L', 'I', 'C')},
{ CODEC_ID_IDCIN, MKTAG('I', 'D', 'C', 'I')},
{ CODEC_ID_INTERPLAY_VIDEO, MKTAG('I', 'N', 'P', 'V')},
{ CODEC_ID_MDEC, MKTAG('M', 'D', 'E', 'C')},
{ CODEC_ID_RL2, MKTAG('R', 'L', '2', 'V')},
{ CODEC_ID_ROQ, MKTAG('R', 'o', 'Q', 'V')},
{ CODEC_ID_THP, MKTAG('T', 'H', 'P', 'V')},

View File

@ -33,14 +33,6 @@
#include <stdio.h>
#include <assert.h>
#include "config.h"
#ifndef HAVE_WINSOCK2
#define closesocket close
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#else
#include <winsock2.h>
#endif
#include <string.h>
#include <sys/stat.h>
#include <fcntl.h>
@ -50,7 +42,9 @@
#include <sys/time.h>
#include <sys/types.h>
#include <inttypes.h>
#ifdef HAVE_WINSOCK2
#include <winsock2.h>
#endif
#include "mp_msg.h"
#include "rtsp.h"
#include "rtsp_session.h"
@ -60,56 +54,6 @@
#define LOG
*/
#define BUF_SIZE 4096
#define HEADER_SIZE 1024
#define MAX_FIELDS 256
struct rtsp_s {
int s;
char *host;
int port;
char *path;
char *param;
char *mrl;
char *user_agent;
char *server;
unsigned int server_state;
uint32_t server_caps;
unsigned int cseq;
char *session;
char *answers[MAX_FIELDS]; /* data of last message */
char *scheduled[MAX_FIELDS]; /* will be sent with next message */
};
/*
* constants
*/
#define RTSP_PROTOCOL_VERSION "RTSP/1.0"
/* server states */
#define RTSP_CONNECTED 1
#define RTSP_INIT 2
#define RTSP_READY 4
#define RTSP_PLAYING 8
#define RTSP_RECORDING 16
/* server capabilities */
#define RTSP_OPTIONS 0x001
#define RTSP_DESCRIBE 0x002
#define RTSP_ANNOUNCE 0x004
#define RTSP_SETUP 0x008
#define RTSP_GET_PARAMETER 0x010
#define RTSP_SET_PARAMETER 0x020
#define RTSP_TEARDOWN 0x040
#define RTSP_PLAY 0x080
#define RTSP_RECORD 0x100
/*
* network utilities
*/
@ -575,14 +519,22 @@ int rtsp_read_data(rtsp_t *s, char *buffer, unsigned int size) {
//rtsp_t *rtsp_connect(const char *mrl, const char *user_agent) {
rtsp_t *rtsp_connect(int fd, char* mrl, char *path, char *host, int port, char *user_agent) {
rtsp_t *s=malloc(sizeof(rtsp_t));
rtsp_t *s;
int i;
if (fd < 0) {
mp_msg(MSGT_OPEN, MSGL_ERR, "rtsp: failed to connect to '%s'\n", host);
return NULL;
}
s = malloc(sizeof(rtsp_t));
for (i=0; i<MAX_FIELDS; i++) {
s->answers[i]=NULL;
s->scheduled[i]=NULL;
}
s->s = fd;
s->server=NULL;
s->server_state=0;
s->server_caps=0;
@ -605,13 +557,6 @@ rtsp_t *rtsp_connect(int fd, char* mrl, char *path, char *host, int port, char *
s->param++;
//mp_msg(MSGT_OPEN, MSGL_INFO, "path=%s\n", s->path);
//mp_msg(MSGT_OPEN, MSGL_INFO, "param=%s\n", s->param ? s->param : "NULL");
s->s = fd;
if (s->s < 0) {
mp_msg(MSGT_OPEN, MSGL_ERR, "rtsp: failed to connect to '%s'\n", s->host);
rtsp_close(s);
return NULL;
}
s->server_state=RTSP_CONNECTED;
@ -631,29 +576,6 @@ rtsp_t *rtsp_connect(int fd, char* mrl, char *path, char *host, int port, char *
}
/*
* closes an rtsp connection
*/
void rtsp_close(rtsp_t *s) {
if (s->server_state)
{
if (s->server_state == RTSP_PLAYING)
rtsp_request_teardown (s, NULL);
closesocket (s->s);
}
if (s->path) free(s->path);
if (s->host) free(s->host);
if (s->mrl) free(s->mrl);
if (s->session) free(s->session);
if (s->user_agent) free(s->user_agent);
rtsp_free_answers(s);
rtsp_unschedule_all(s);
free(s);
}
/*
* search in answers for tags. returns a pointer to the content
* after the first matched tag. returns NULL if no match found.

View File

@ -32,6 +32,7 @@
#ifndef MPLAYER_RTSP_H
#define MPLAYER_RTSP_H
#include <inttypes.h>
/* some codes returned by rtsp_request_* functions */
@ -45,6 +46,58 @@
#define RTSP_METHOD_TEARDOWN "TEARDOWN"
#define RTSP_METHOD_SET_PARAMETER "SET_PARAMETER"
#define BUF_SIZE 4096
#define HEADER_SIZE 1024
#define MAX_FIELDS 256
struct rtsp_s {
int s;
char *host;
int port;
char *path;
char *param;
char *mrl;
char *user_agent;
char *server;
unsigned int server_state;
uint32_t server_caps;
unsigned int cseq;
char *session;
char *answers[MAX_FIELDS]; /* data of last message */
char *scheduled[MAX_FIELDS]; /* will be sent with next message */
};
/*
* constants
*/
#define RTSP_PROTOCOL_VERSION "RTSP/1.0"
/* server states */
#define RTSP_CONNECTED 1
#define RTSP_INIT 2
#define RTSP_READY 4
#define RTSP_PLAYING 8
#define RTSP_RECORDING 16
/* server capabilities */
#define RTSP_OPTIONS 0x001
#define RTSP_DESCRIBE 0x002
#define RTSP_ANNOUNCE 0x004
#define RTSP_SETUP 0x008
#define RTSP_GET_PARAMETER 0x010
#define RTSP_SET_PARAMETER 0x020
#define RTSP_TEARDOWN 0x040
#define RTSP_PLAY 0x080
#define RTSP_RECORD 0x100
typedef struct rtsp_s rtsp_t;
rtsp_t* rtsp_connect (int fd, char *mrl, char *path, char *host, int port, char *user_agent);
@ -66,7 +119,6 @@ void rtsp_add_to_payload(char **payload, const char *string);
void rtsp_free_answers(rtsp_t *this);
int rtsp_read (rtsp_t *this, char *data, int len);
void rtsp_close (rtsp_t *this);
void rtsp_set_session(rtsp_t *s, const char *id);
char *rtsp_get_session(rtsp_t *s);

View File

@ -31,12 +31,15 @@
#include <sys/types.h>
#include "config.h"
#ifndef HAVE_WINSOCK2
#define closesocket close
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#else
#include <winsock2.h>
#endif
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
@ -73,6 +76,29 @@ struct rtsp_session_s {
struct rtp_rtsp_session_t* rtp_session;
};
/*
* closes an rtsp connection
*/
static void rtsp_close(rtsp_t *s) {
if (s->server_state)
{
if (s->server_state == RTSP_PLAYING)
rtsp_request_teardown (s, NULL);
closesocket (s->s);
}
if (s->path) free(s->path);
if (s->host) free(s->host);
if (s->mrl) free(s->mrl);
if (s->session) free(s->session);
if (s->user_agent) free(s->user_agent);
rtsp_free_answers(s);
rtsp_unschedule_all(s);
free(s);
}
//rtsp_session_t *rtsp_session_start(char *mrl) {
rtsp_session_t *rtsp_session_start(int fd, char **mrl, char *path, char *host,
int port, int *redir, uint32_t bandwidth, char *user, char *pass) {

View File

@ -4,12 +4,6 @@
#include <stdint.h>
#include "stream.h"
typedef struct {
int event; /* event number fromd dvdnav_events.h */
void * details; /* event details */
int len; /* bytes in details */
} dvdnav_event_t;
typedef struct {
uint16_t sx, sy;
uint16_t ex, ey;

View File

@ -336,13 +336,23 @@ static int amode2v4l(int amode)
}
/*
** Get current FPS.
*/
static double getfps(priv_t *priv)
{
if (priv->tv_param->fps > 0)
return priv->tv_param->fps;
if (priv->standard.frameperiod.denominator && priv->standard.frameperiod.numerator)
return (double)priv->standard.frameperiod.denominator / priv->standard.frameperiod.numerator;
return 25.0;
}
// sets and sanitizes audio buffer/block sizes
static void setup_audio_buffer_sizes(priv_t *priv)
{
int bytes_per_sample = priv->audio_in.bytes_per_sample;
double fps = (double)priv->standard.frameperiod.denominator /
priv->standard.frameperiod.numerator;
int seconds = priv->video_buffer_size_max/fps;
int seconds = priv->video_buffer_size_max/getfps(priv);
if (seconds < 5) seconds = 5;
if (seconds > 500) seconds = 500;
@ -438,6 +448,18 @@ static int getstd(priv_t *priv)
int i=0;
if (ioctl(priv->video_fd, VIDIOC_G_STD, &id) < 0) {
struct v4l2_streamparm parm;
parm.type=V4L2_BUF_TYPE_VIDEO_CAPTURE;
if(ioctl(priv->video_fd, VIDIOC_G_PARM, &parm) >= 0) {
mp_msg(MSGT_TV, MSGL_WARN, "%s: your device driver does not support VIDIOC_G_STD ioctl,"
" VIDIOC_G_PARM was used instead.\n", info.short_name);
priv->standard.index=0;
priv->standard.id=0;
priv->standard.frameperiod=parm.parm.capture.timeperframe;
return 0;
}
mp_msg(MSGT_TV, MSGL_ERR, "%s: ioctl get standard failed: %s\n",
info.short_name, strerror(errno));
return -1;
@ -701,6 +723,10 @@ static int control(priv_t *priv, int cmd, void *arg)
priv->immediate_mode = 1;
return TVI_CONTROL_TRUE;
case TVI_CONTROL_VID_GET_FPS:
if (!priv->standard.frameperiod.denominator || !priv->standard.frameperiod.numerator) {
mp_msg(MSGT_TV, MSGL_ERR, "%s: Cannot get fps\n", info.short_name);
return TVI_CONTROL_FALSE;
}
*(float *)arg = (float)priv->standard.frameperiod.denominator /
priv->standard.frameperiod.numerator;
mp_msg(MSGT_TV, MSGL_V, "%s: get fps: %f\n", info.short_name,
@ -1089,11 +1115,7 @@ static int uninit(priv_t *priv)
struct v4l2_buffer buf;
/* get performance */
frames = 1 + (priv->curr_frame - priv->first_frame +
priv->standard.frameperiod.numerator * 500000 /
priv->standard.frameperiod.denominator) *
priv->standard.frameperiod.denominator /
priv->standard.frameperiod.numerator / 1000000;
frames = 1 + lrintf((double)(priv->curr_frame - priv->first_frame) / (1e6 * getfps(priv)));
dropped = frames - priv->frames;
/* turn off streaming */