mirror of
https://github.com/mpv-player/mpv
synced 2025-04-11 04:01:31 +00:00
Merge svn changes up to r27347
Conflicts: libvo/x11_common.c libvo/x11_common.h Rename the vo_gl macro "vo_border()" to "vo_gl_border" as it conflicts with the global variable "vo_border"; done in the merge commit because uses of the macro needed changes anyway to resolve conflicts.
This commit is contained in:
commit
3a69d65f8d
@ -2888,7 +2888,6 @@ Only supported by the fbdev, dga, svga, vesa video output drivers.
|
|||||||
Play movie with window border and decorations.
|
Play movie with window border and decorations.
|
||||||
Since this is on by default, use \-noborder to disable the standard window
|
Since this is on by default, use \-noborder to disable the standard window
|
||||||
decorations.
|
decorations.
|
||||||
Supported by the directx video output driver.
|
|
||||||
.
|
.
|
||||||
.TP
|
.TP
|
||||||
.B \-brightness <\-100\-100>
|
.B \-brightness <\-100\-100>
|
||||||
@ -3237,7 +3236,7 @@ This tells MPlayer to attach to an existing window.
|
|||||||
Useful to embed MPlayer in a browser (e.g.\& the plugger extension).
|
Useful to embed MPlayer in a browser (e.g.\& the plugger extension).
|
||||||
.
|
.
|
||||||
.TP
|
.TP
|
||||||
.B \-xineramascreen <\-2\-...> (X11 only)
|
.B \-xineramascreen <\-2\-...>
|
||||||
In Xinerama configurations (i.e.\& a single desktop that spans across multiple
|
In Xinerama configurations (i.e.\& a single desktop that spans across multiple
|
||||||
displays) this option tells MPlayer which screen to display the movie on.
|
displays) this option tells MPlayer which screen to display the movie on.
|
||||||
A value of \-2 means fullscreen across the whole virtual display (in this case
|
A value of \-2 means fullscreen across the whole virtual display (in this case
|
||||||
@ -3246,6 +3245,9 @@ fullscreen on the display the window currently is on.
|
|||||||
The initial position set via the \-geometry option is relative to the
|
The initial position set via the \-geometry option is relative to the
|
||||||
specified screen.
|
specified screen.
|
||||||
Will usually only work with "\-fstype \-fullscreen" or "\-fstype none".
|
Will usually only work with "\-fstype \-fullscreen" or "\-fstype none".
|
||||||
|
This option is not suitable to only set the startup screen (and not also the
|
||||||
|
fullscreen screen), \-geometry is the best that is available for that purpose
|
||||||
|
currently.
|
||||||
.
|
.
|
||||||
.TP
|
.TP
|
||||||
.B \-zrbw (\-vo zr only)
|
.B \-zrbw (\-vo zr only)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
.\" synced with r27236
|
.\" synced with r27337
|
||||||
.\" Encoding: iso-8859-1
|
.\" Encoding: iso-8859-1
|
||||||
.\" MPlayer (C) 2000-2008 MPlayer Team
|
.\" MPlayer (C) 2000-2008 MPlayer Team
|
||||||
.\" The English man page was/is done by Gabucino, Diego Biurrun, Jonas Jermann
|
.\" The English man page was/is done by Gabucino, Diego Biurrun, Jonas Jermann
|
||||||
@ -3044,7 +3044,6 @@ G
|
|||||||
Joue la vidéo avec les bordures et décorations de fenêtre (par défaut).
|
Joue la vidéo avec les bordures et décorations de fenêtre (par défaut).
|
||||||
Spécifiez \-noborder pour désactiver les décorations de fenêtre
|
Spécifiez \-noborder pour désactiver les décorations de fenêtre
|
||||||
standard.
|
standard.
|
||||||
Supporté par le pilote de sortie vidéo directx.
|
|
||||||
.
|
.
|
||||||
.TP
|
.TP
|
||||||
.B \-brightness <\-100\-100>
|
.B \-brightness <\-100\-100>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
.\" synced with r27236
|
.\" synced with r27337
|
||||||
.\" Encoding: iso-8859-1
|
.\" Encoding: iso-8859-1
|
||||||
.\" MPlayer (C) 2000-2008 MPlayer Team
|
.\" MPlayer (C) 2000-2008 MPlayer Team
|
||||||
.\" Questa pagina di manuale è stata fatta da Gabucino, Diego Biurrun,
|
.\" Questa pagina di manuale è stata fatta da Gabucino, Diego Biurrun,
|
||||||
@ -3011,7 +3011,6 @@ Supportato solo dai driver di uscita video fbdev, dga, svga e vesa.
|
|||||||
Riproduce il filmato in una finestra con bordi e decorazioni.
|
Riproduce il filmato in una finestra con bordi e decorazioni.
|
||||||
Dato che questo è il default, usa \-noborder per disabilitare le decorazioni
|
Dato che questo è il default, usa \-noborder per disabilitare le decorazioni
|
||||||
standard della finestra.
|
standard della finestra.
|
||||||
Supportato dal driver di uscita video directx.
|
|
||||||
.
|
.
|
||||||
.TP
|
.TP
|
||||||
.B \-brightness <\-100\-100>
|
.B \-brightness <\-100\-100>
|
||||||
|
@ -48,7 +48,7 @@ Requirements
|
|||||||
~~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
The requirements for any (official) mirror are:
|
The requirements for any (official) mirror are:
|
||||||
1) rsync installed and some way to run the sync script periodicaly (eg cron)
|
1) rsync installed and some way to run the sync script periodicaly (eg cron)
|
||||||
2) subscribing to the mplayer-mirror mailinglist (see below)
|
2) subscribing to the mplayer-mirror mailing list (see below)
|
||||||
|
|
||||||
The requirements for a full website mirror are:
|
The requirements for a full website mirror are:
|
||||||
1) 500MB of free disk space (for the ftp and homepage directories).
|
1) 500MB of free disk space (for the ftp and homepage directories).
|
||||||
@ -188,21 +188,46 @@ appear to default to defining a standard charset. This breaks our documentation
|
|||||||
translations, which are written in different encodings.
|
translations, which are written in different encodings.
|
||||||
|
|
||||||
The second VirtualHost is necessary for the DNS round-robin address.
|
The second VirtualHost is necessary for the DNS round-robin address.
|
||||||
|
To check whether this VirtualHost works, you can add a temporary entry into
|
||||||
|
your /etc/hosts file:
|
||||||
|
|
||||||
|
1.2.3.4 www.mplayerhq.hu
|
||||||
|
|
||||||
|
Replace the IP address by the real IP address of your mirror. Do not forget to
|
||||||
|
remove the entry after you finish testing.
|
||||||
|
|
||||||
|
|
||||||
|
Webserver checklist
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
After setting up the web server, please verify that the following things work
|
||||||
|
both for your mirror address (www#.mplayerhq.hu) and the DNS round-robin
|
||||||
|
address (www.mplayerhq.hu):
|
||||||
|
|
||||||
|
- The virtual host is reachable by its address.
|
||||||
|
- The subdirectories MPlayer, DOCS and homepage work.
|
||||||
|
- The man pages and documentation are served with the correct content-type.
|
||||||
|
Try Russian or Chinese, you will notice breakage immediately.
|
||||||
|
|
||||||
|
|
||||||
Setting up an FTP server
|
Setting up an FTP server
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Any FTP server will do. We use vsftpd, it's fast and secure. You should have
|
Any FTP server will do. We use vsftpd, it is fast and secure. The setup is
|
||||||
the same directory layout as we do on our server, so there should be a
|
similar to the web server setup. The FTP server should listen on both its mirror
|
||||||
subdirectory named 'MPlayer' (notice the capitals) that contains the
|
address (ftp#.mplayerhq.hu) and the DNS round-robin address (ftp.mplayerhq.hu).
|
||||||
downloadable files.
|
All our mirrors are public, so you should allow anonymous access.
|
||||||
|
|
||||||
|
You should have the same directory layout as we do on our server, so there
|
||||||
|
should be a subdirectory named 'MPlayer' (notice the capitals) that contains
|
||||||
|
the downloadable files.
|
||||||
|
|
||||||
|
|
||||||
Mailinglist
|
Mailing list
|
||||||
~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
All official mirror admins are required to subscribe to the mplayer-mirror
|
All official mirror admins are required to subscribe to the mplayer-mirror
|
||||||
mailinglist. It's used to coordinate the efforts and distribute information
|
mailing list. It's used to coordinate the efforts and distribute information
|
||||||
among all admins. It is also very low traffic. Please use the webinterface
|
among all admins. It is also very low traffic. Please use the webinterface
|
||||||
on http://lists.mplayerhq.hu/mailman/listinfo/mplayer-mirror to subscribe.
|
on http://lists.mplayerhq.hu/mailman/listinfo/mplayer-mirror to subscribe.
|
||||||
|
Please do not top-post on this mailing list.
|
||||||
|
88
configure
vendored
88
configure
vendored
@ -292,6 +292,9 @@ Codecs:
|
|||||||
--disable-xvid-lavc disable Xvid in libavcodec [autodetect]
|
--disable-xvid-lavc disable Xvid in libavcodec [autodetect]
|
||||||
--disable-x264 disable x264 [autodetect]
|
--disable-x264 disable x264 [autodetect]
|
||||||
--disable-x264-lavc disable x264 in libavcodec [autodetect]
|
--disable-x264-lavc disable x264 in libavcodec [autodetect]
|
||||||
|
--disable-libdirac-lavc disable Dirac in libavcodec [autodetect]
|
||||||
|
--disable-libschroedinger-lavc disable Dirac in libavcodec (Schroedinger
|
||||||
|
decoder) [autodetect]
|
||||||
--disable-libnut disable libnut [autodetect]
|
--disable-libnut disable libnut [autodetect]
|
||||||
--disable-libavutil_a disable static libavutil [autodetect]
|
--disable-libavutil_a disable static libavutil [autodetect]
|
||||||
--disable-libavcodec_a disable static libavcodec [autodetect]
|
--disable-libavcodec_a disable static libavcodec [autodetect]
|
||||||
@ -633,6 +636,8 @@ _xvid=auto
|
|||||||
_xvid_lavc=auto
|
_xvid_lavc=auto
|
||||||
_x264=auto
|
_x264=auto
|
||||||
_x264_lavc=auto
|
_x264_lavc=auto
|
||||||
|
_libdirac_lavc=auto
|
||||||
|
_libschroedinger_lavc=auto
|
||||||
_libnut=auto
|
_libnut=auto
|
||||||
_lirc=auto
|
_lirc=auto
|
||||||
_lircc=auto
|
_lircc=auto
|
||||||
@ -1044,6 +1049,10 @@ for ac_option do
|
|||||||
--disable-x264) _x264=no ;;
|
--disable-x264) _x264=no ;;
|
||||||
--enable-x264-lavc) _x264_lavc=yes ;;
|
--enable-x264-lavc) _x264_lavc=yes ;;
|
||||||
--disable-x264-lavc) _x264_lavc=no ;;
|
--disable-x264-lavc) _x264_lavc=no ;;
|
||||||
|
--enable-libdirac-lavc) _libdirac_lavc=yes ;;
|
||||||
|
--disable-libdirac-lavc) _libdirac_lavc=no ;;
|
||||||
|
--enable-libschroedinger-lavc) _libschroedinger_lavc=yes ;;
|
||||||
|
--disable-libschroedinger-lavc) _libschroedinger_lavc=no ;;
|
||||||
--enable-libnut) _libnut=yes ;;
|
--enable-libnut) _libnut=yes ;;
|
||||||
--disable-libnut) _libnut=no ;;
|
--disable-libnut) _libnut=no ;;
|
||||||
--enable-libavutil_a) _libavutil_a=yes ;;
|
--enable-libavutil_a) _libavutil_a=yes ;;
|
||||||
@ -6659,6 +6668,79 @@ _res_comment="in libavcodec: $_x264_lavc"
|
|||||||
echores "$_x264"
|
echores "$_x264"
|
||||||
|
|
||||||
|
|
||||||
|
echocheck "libdirac"
|
||||||
|
if test "$_libdirac_lavc" = auto; then
|
||||||
|
_libdirac_lavc=no
|
||||||
|
if test "$_libavcodec_a" != yes; then
|
||||||
|
_res_comment="libavcodec (static) is required by libdirac, sorry"
|
||||||
|
else
|
||||||
|
cat > $TMPC << EOF
|
||||||
|
#include <libdirac_encoder/dirac_encoder.h>
|
||||||
|
#include <libdirac_decoder/dirac_parser.h>
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
dirac_encoder_context_t enc_ctx;
|
||||||
|
dirac_decoder_t *dec_handle;
|
||||||
|
dirac_encoder_context_init(&enc_ctx, VIDEO_FORMAT_SD_576I50);
|
||||||
|
dec_handle = dirac_decoder_init(0);
|
||||||
|
if (dec_handle)
|
||||||
|
dirac_decoder_close(dec_handle);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
if $_pkg_config --exists dirac ; then
|
||||||
|
_inc_dirac=`$_pkg_config --silence-errors --cflags dirac`
|
||||||
|
_ld_dirac=`$_pkg_config --silence-errors --libs dirac`
|
||||||
|
cc_check $_inc_dirac $_ld_dirac &&
|
||||||
|
_libdirac_lavc=yes &&
|
||||||
|
_inc_extra="$_inc_extra $_inc_dirac" &&
|
||||||
|
_ld_extra="$_ld_extra $_ld_dirac"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test "$_libdirac_lavc" = yes ; then
|
||||||
|
_def_libdirac_lavc='#define CONFIG_LIBDIRAC 1'
|
||||||
|
_libavencoders="$_libavencoders LIBDIRAC_ENCODER"
|
||||||
|
_libavdecoders="$_libavdecoders LIBDIRAC_DECODER"
|
||||||
|
_codecmodules="libdirac $_codecmodules"
|
||||||
|
else
|
||||||
|
_def_libdirac_lavc='#undef CONFIG_LIBDIRAC'
|
||||||
|
_nocodecmodules="libdirac $_nocodecmodules"
|
||||||
|
fi
|
||||||
|
echores "$_libdirac_lavc"
|
||||||
|
|
||||||
|
|
||||||
|
echocheck "libschroedinger"
|
||||||
|
if test "$_libschroedinger_lavc" = auto ; then
|
||||||
|
_libschroedinger_lavc=no
|
||||||
|
if test "$_libavcodec_a" != yes; then
|
||||||
|
_res_comment="libavcodec (static) is required by libschroedinger, sorry"
|
||||||
|
else
|
||||||
|
cat > $TMPC << EOF
|
||||||
|
#include <schroedinger/schro.h>
|
||||||
|
int main(void) { schro_init(); return 0; }
|
||||||
|
EOF
|
||||||
|
if $_pkg_config --exists schroedinger-1.0 ; then
|
||||||
|
_inc_schroedinger=`$_pkg_config --silence-errors --cflags schroedinger-1.0`
|
||||||
|
_ld_schroedinger=`$_pkg_config --silence-errors --libs schroedinger-1.0`
|
||||||
|
cc_check $_inc_schroedinger $_ld_schroedinger &&
|
||||||
|
_libschroedinger_lavc=yes &&
|
||||||
|
_inc_extra="$_inc_extra $_inc_schroedinger" &&
|
||||||
|
_ld_extra="$_ld_extra $_ld_schroedinger"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test "$_libschroedinger_lavc" = yes ; then
|
||||||
|
_def_libschroedinger_lavc='#define CONFIG_LIBSCHROEDINGER 1'
|
||||||
|
_libavencoders="$_libavencoders LIBSCHROEDINGER_ENCODER"
|
||||||
|
_libavdecoders="$_libavdecoders LIBSCHROEDINGER_DECODER"
|
||||||
|
_codecmodules="libschroedinger $_codecmodules"
|
||||||
|
else
|
||||||
|
_def_libschroedinger_lavc='#undef CONFIG_LIBSCHROEDINGER'
|
||||||
|
_nocodecmodules="libschroedinger $_nocodecmodules"
|
||||||
|
fi
|
||||||
|
echores "$_libschroedinger_lavc"
|
||||||
|
|
||||||
echocheck "libnut"
|
echocheck "libnut"
|
||||||
if test "$_libnut" = auto ; then
|
if test "$_libnut" = auto ; then
|
||||||
cat > $TMPC << EOF
|
cat > $TMPC << EOF
|
||||||
@ -7383,7 +7465,7 @@ else
|
|||||||
_def_charset="#undef MSG_CHARSET"
|
_def_charset="#undef MSG_CHARSET"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$_charset" != "UTF-8" ; then
|
if test -n "$_charset" && test "$_charset" != "UTF-8" ; then
|
||||||
echocheck "iconv program"
|
echocheck "iconv program"
|
||||||
iconv -f UTF-8 -t $_charset ${_mp_help} > /dev/null 2>> "$TMPLOG"
|
iconv -f UTF-8 -t $_charset ${_mp_help} > /dev/null 2>> "$TMPLOG"
|
||||||
if test "$?" -ne 0 ; then
|
if test "$?" -ne 0 ; then
|
||||||
@ -7827,8 +7909,10 @@ CONFIG_MUXERS=$_mencoder
|
|||||||
CONFIG_LIBAMR=$_libamr
|
CONFIG_LIBAMR=$_libamr
|
||||||
CONFIG_LIBAMR_NB=$_libamr_nb
|
CONFIG_LIBAMR_NB=$_libamr_nb
|
||||||
CONFIG_LIBAMR_WB=$_libamr_wb
|
CONFIG_LIBAMR_WB=$_libamr_wb
|
||||||
|
CONFIG_LIBDIRAC=$_libdirac_lavc
|
||||||
CONFIG_LIBFAAC=$_faac_lavc
|
CONFIG_LIBFAAC=$_faac_lavc
|
||||||
CONFIG_LIBMP3LAME=$_mp3lame_lavc
|
CONFIG_LIBMP3LAME=$_mp3lame_lavc
|
||||||
|
CONFIG_LIBSCHROEDINGER=$_libschroedinger_lavc
|
||||||
CONFIG_LIBVORBIS=$_libvorbis
|
CONFIG_LIBVORBIS=$_libvorbis
|
||||||
CONFIG_LIBX264=$_x264_lavc
|
CONFIG_LIBX264=$_x264_lavc
|
||||||
CONFIG_LIBXVID=$_xvid_lavc
|
CONFIG_LIBXVID=$_xvid_lavc
|
||||||
@ -8224,8 +8308,10 @@ $_def_libamr_wb
|
|||||||
`ff_config_enable "$_libavprotocols_all" "$_libavprotocols"`
|
`ff_config_enable "$_libavprotocols_all" "$_libavprotocols"`
|
||||||
`ff_config_enable "$_libavbsfs_all" "$_libavbsfs"`
|
`ff_config_enable "$_libavbsfs_all" "$_libavbsfs"`
|
||||||
|
|
||||||
|
$_def_libdirac_lavc
|
||||||
$_def_faac_lavc
|
$_def_faac_lavc
|
||||||
$_def_mp3lame_lavc
|
$_def_mp3lame_lavc
|
||||||
|
$_def_libschroedinger_lavc
|
||||||
$_def_x264_lavc
|
$_def_x264_lavc
|
||||||
$_def_xvid_lavc
|
$_def_xvid_lavc
|
||||||
|
|
||||||
|
@ -708,6 +708,22 @@ videocodec ffwv1f
|
|||||||
dll mpeg4
|
dll mpeg4
|
||||||
out YV12,I420,IYUV flip
|
out YV12,I420,IYUV flip
|
||||||
|
|
||||||
|
videocodec fflibschroedinger
|
||||||
|
info "Dirac (through FFmpeg libschroedinger)"
|
||||||
|
status working
|
||||||
|
fourcc drac
|
||||||
|
driver ffmpeg
|
||||||
|
dll libschroedinger
|
||||||
|
out I420,IYUV,422P,444P
|
||||||
|
|
||||||
|
videocodec fflibdirac
|
||||||
|
info "Dirac (through FFmpeg libdirac)"
|
||||||
|
status working
|
||||||
|
fourcc drac
|
||||||
|
driver ffmpeg
|
||||||
|
dll libdirac
|
||||||
|
out I420,IYUV,422P,444P
|
||||||
|
|
||||||
videocodec xvid
|
videocodec xvid
|
||||||
info "Xvid (MPEG-4)"
|
info "Xvid (MPEG-4)"
|
||||||
status working
|
status working
|
||||||
|
@ -1021,6 +1021,10 @@ static int vf_open(vf_instance_t *vf, char* args){
|
|||||||
mux_v->bih->biCompression = mmioFOURCC('d', 'v', 's', 'd');
|
mux_v->bih->biCompression = mmioFOURCC('d', 'v', 's', 'd');
|
||||||
else if (!strcasecmp(lavc_param_vcodec, "libx264"))
|
else if (!strcasecmp(lavc_param_vcodec, "libx264"))
|
||||||
mux_v->bih->biCompression = mmioFOURCC('h', '2', '6', '4');
|
mux_v->bih->biCompression = mmioFOURCC('h', '2', '6', '4');
|
||||||
|
else if (!strcasecmp(lavc_param_vcodec, "libschroedinger"))
|
||||||
|
mux_v->bih->biCompression = mmioFOURCC('d', 'r', 'a', 'c');
|
||||||
|
else if (!strcasecmp(lavc_param_vcodec, "libdirac"))
|
||||||
|
mux_v->bih->biCompression = mmioFOURCC('d', 'r', 'a', 'c');
|
||||||
else
|
else
|
||||||
mux_v->bih->biCompression = mmioFOURCC(lavc_param_vcodec[0],
|
mux_v->bih->biCompression = mmioFOURCC(lavc_param_vcodec[0],
|
||||||
lavc_param_vcodec[1], lavc_param_vcodec[2], lavc_param_vcodec[3]); /* FIXME!!! */
|
lavc_param_vcodec[1], lavc_param_vcodec[2], lavc_param_vcodec[3]); /* FIXME!!! */
|
||||||
|
@ -143,14 +143,14 @@ typedef signed char sbyte;
|
|||||||
*/
|
*/
|
||||||
static
|
static
|
||||||
const vector unsigned char
|
const vector unsigned char
|
||||||
perm_rgb_0 = AVV(0x00,0x01,0x10,0x02,0x03,0x11,0x04,0x05,
|
perm_rgb_0 = {0x00,0x01,0x10,0x02,0x03,0x11,0x04,0x05,
|
||||||
0x12,0x06,0x07,0x13,0x08,0x09,0x14,0x0a),
|
0x12,0x06,0x07,0x13,0x08,0x09,0x14,0x0a},
|
||||||
perm_rgb_1 = AVV(0x0b,0x15,0x0c,0x0d,0x16,0x0e,0x0f,0x17,
|
perm_rgb_1 = {0x0b,0x15,0x0c,0x0d,0x16,0x0e,0x0f,0x17,
|
||||||
0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f),
|
0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f},
|
||||||
perm_rgb_2 = AVV(0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
|
perm_rgb_2 = {0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
|
||||||
0x00,0x01,0x18,0x02,0x03,0x19,0x04,0x05),
|
0x00,0x01,0x18,0x02,0x03,0x19,0x04,0x05},
|
||||||
perm_rgb_3 = AVV(0x1a,0x06,0x07,0x1b,0x08,0x09,0x1c,0x0a,
|
perm_rgb_3 = {0x1a,0x06,0x07,0x1b,0x08,0x09,0x1c,0x0a,
|
||||||
0x0b,0x1d,0x0c,0x0d,0x1e,0x0e,0x0f,0x1f);
|
0x0b,0x1d,0x0c,0x0d,0x1e,0x0e,0x0f,0x1f};
|
||||||
|
|
||||||
#define vec_merge3(x2,x1,x0,y0,y1,y2) \
|
#define vec_merge3(x2,x1,x0,y0,y1,y2) \
|
||||||
do { \
|
do { \
|
||||||
@ -222,25 +222,25 @@ do { \
|
|||||||
|
|
||||||
#define vec_unh(x) \
|
#define vec_unh(x) \
|
||||||
(vector signed short) \
|
(vector signed short) \
|
||||||
vec_perm(x,(typeof(x))AVV(0),\
|
vec_perm(x,(typeof(x)){0}, \
|
||||||
(vector unsigned char)AVV(0x10,0x00,0x10,0x01,0x10,0x02,0x10,0x03,\
|
(vector unsigned char){0x10,0x00,0x10,0x01,0x10,0x02,0x10,0x03,\
|
||||||
0x10,0x04,0x10,0x05,0x10,0x06,0x10,0x07))
|
0x10,0x04,0x10,0x05,0x10,0x06,0x10,0x07})
|
||||||
#define vec_unl(x) \
|
#define vec_unl(x) \
|
||||||
(vector signed short) \
|
(vector signed short) \
|
||||||
vec_perm(x,(typeof(x))AVV(0),\
|
vec_perm(x,(typeof(x)){0}, \
|
||||||
(vector unsigned char)AVV(0x10,0x08,0x10,0x09,0x10,0x0A,0x10,0x0B,\
|
(vector unsigned char){0x10,0x08,0x10,0x09,0x10,0x0A,0x10,0x0B,\
|
||||||
0x10,0x0C,0x10,0x0D,0x10,0x0E,0x10,0x0F))
|
0x10,0x0C,0x10,0x0D,0x10,0x0E,0x10,0x0F})
|
||||||
|
|
||||||
#define vec_clip_s16(x) \
|
#define vec_clip_s16(x) \
|
||||||
vec_max (vec_min (x, (vector signed short)AVV(235,235,235,235,235,235,235,235)),\
|
vec_max (vec_min (x, (vector signed short){235,235,235,235,235,235,235,235}), \
|
||||||
(vector signed short)AVV( 16, 16, 16, 16, 16, 16, 16, 16))
|
(vector signed short){ 16, 16, 16, 16, 16, 16, 16, 16 })
|
||||||
|
|
||||||
#define vec_packclp(x,y) \
|
#define vec_packclp(x,y) \
|
||||||
(vector unsigned char)vec_packs \
|
(vector unsigned char)vec_packs \
|
||||||
((vector unsigned short)vec_max (x,(vector signed short) AVV(0)), \
|
((vector unsigned short)vec_max (x,(vector signed short) {0}), \
|
||||||
(vector unsigned short)vec_max (y,(vector signed short) AVV(0)))
|
(vector unsigned short)vec_max (y,(vector signed short) {0}))
|
||||||
|
|
||||||
//#define out_pixels(a,b,c,ptr) vec_mstrgb32(typeof(a),((typeof (a))AVV(0)),a,a,a,ptr)
|
//#define out_pixels(a,b,c,ptr) vec_mstrgb32(typeof(a),((typeof (a)){0}),a,a,a,ptr)
|
||||||
|
|
||||||
|
|
||||||
static inline void cvtyuvtoRGB (SwsContext *c,
|
static inline void cvtyuvtoRGB (SwsContext *c,
|
||||||
@ -251,9 +251,9 @@ static inline void cvtyuvtoRGB (SwsContext *c,
|
|||||||
|
|
||||||
Y = vec_mradds (Y, c->CY, c->OY);
|
Y = vec_mradds (Y, c->CY, c->OY);
|
||||||
U = vec_sub (U,(vector signed short)
|
U = vec_sub (U,(vector signed short)
|
||||||
vec_splat((vector signed short)AVV(128),0));
|
vec_splat((vector signed short){128},0));
|
||||||
V = vec_sub (V,(vector signed short)
|
V = vec_sub (V,(vector signed short)
|
||||||
vec_splat((vector signed short)AVV(128),0));
|
vec_splat((vector signed short){128},0));
|
||||||
|
|
||||||
// ux = (CBU*(u<<c->CSHIFT)+0x4000)>>15;
|
// ux = (CBU*(u<<c->CSHIFT)+0x4000)>>15;
|
||||||
ux = vec_sl (U, c->CSHIFT);
|
ux = vec_sl (U, c->CSHIFT);
|
||||||
@ -359,10 +359,10 @@ static int altivec_##name (SwsContext *c, \
|
|||||||
\
|
\
|
||||||
u = (vector signed char) \
|
u = (vector signed char) \
|
||||||
vec_sub (u,(vector signed char) \
|
vec_sub (u,(vector signed char) \
|
||||||
vec_splat((vector signed char)AVV(128),0)); \
|
vec_splat((vector signed char){128},0)); \
|
||||||
v = (vector signed char) \
|
v = (vector signed char) \
|
||||||
vec_sub (v,(vector signed char) \
|
vec_sub (v,(vector signed char) \
|
||||||
vec_splat((vector signed char)AVV(128),0)); \
|
vec_splat((vector signed char){128},0)); \
|
||||||
\
|
\
|
||||||
U = vec_unpackh (u); \
|
U = vec_unpackh (u); \
|
||||||
V = vec_unpackh (v); \
|
V = vec_unpackh (v); \
|
||||||
@ -380,18 +380,18 @@ static int altivec_##name (SwsContext *c, \
|
|||||||
\
|
\
|
||||||
/* ux = (CBU*(u<<CSHIFT)+0x4000)>>15 */ \
|
/* ux = (CBU*(u<<CSHIFT)+0x4000)>>15 */ \
|
||||||
ux = vec_sl (U, lCSHIFT); \
|
ux = vec_sl (U, lCSHIFT); \
|
||||||
ux = vec_mradds (ux, lCBU, (vector signed short)AVV(0)); \
|
ux = vec_mradds (ux, lCBU, (vector signed short){0}); \
|
||||||
ux0 = vec_mergeh (ux,ux); \
|
ux0 = vec_mergeh (ux,ux); \
|
||||||
ux1 = vec_mergel (ux,ux); \
|
ux1 = vec_mergel (ux,ux); \
|
||||||
\
|
\
|
||||||
/* vx = (CRV*(v<<CSHIFT)+0x4000)>>15; */ \
|
/* vx = (CRV*(v<<CSHIFT)+0x4000)>>15; */ \
|
||||||
vx = vec_sl (V, lCSHIFT); \
|
vx = vec_sl (V, lCSHIFT); \
|
||||||
vx = vec_mradds (vx, lCRV, (vector signed short)AVV(0)); \
|
vx = vec_mradds (vx, lCRV, (vector signed short){0}); \
|
||||||
vx0 = vec_mergeh (vx,vx); \
|
vx0 = vec_mergeh (vx,vx); \
|
||||||
vx1 = vec_mergel (vx,vx); \
|
vx1 = vec_mergel (vx,vx); \
|
||||||
\
|
\
|
||||||
/* uvx = ((CGU*u) + (CGV*v))>>15 */ \
|
/* uvx = ((CGU*u) + (CGV*v))>>15 */ \
|
||||||
uvx = vec_mradds (U, lCGU, (vector signed short)AVV(0)); \
|
uvx = vec_mradds (U, lCGU, (vector signed short){0}); \
|
||||||
uvx = vec_mradds (V, lCGV, uvx); \
|
uvx = vec_mradds (V, lCGV, uvx); \
|
||||||
uvx0 = vec_mergeh (uvx,uvx); \
|
uvx0 = vec_mergeh (uvx,uvx); \
|
||||||
uvx1 = vec_mergel (uvx,uvx); \
|
uvx1 = vec_mergel (uvx,uvx); \
|
||||||
@ -441,10 +441,10 @@ static int altivec_##name (SwsContext *c, \
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define out_abgr(a,b,c,ptr) vec_mstrgb32(typeof(a),((typeof (a))AVV(0)),c,b,a,ptr)
|
#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))AVV(0)),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))AVV(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))AVV(0)),a,b,c,ptr)
|
#define out_argb(a,b,c,ptr) vec_mstrgb32(typeof(a),((typeof (a)){0}),a,b,c,ptr)
|
||||||
#define out_rgb24(a,b,c,ptr) vec_mstrgb24(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)
|
#define out_bgr24(a,b,c,ptr) vec_mstbgr24(a,b,c,ptr)
|
||||||
|
|
||||||
@ -523,11 +523,11 @@ static int altivec_yuv2_bgra32 (SwsContext *c,
|
|||||||
v = (vector signed char)vec_perm (vivP[0], vivP[1], align_perm);
|
v = (vector signed char)vec_perm (vivP[0], vivP[1], align_perm);
|
||||||
u = (vector signed char)
|
u = (vector signed char)
|
||||||
vec_sub (u,(vector signed char)
|
vec_sub (u,(vector signed char)
|
||||||
vec_splat((vector signed char)AVV(128),0));
|
vec_splat((vector signed char){128},0));
|
||||||
|
|
||||||
v = (vector signed char)
|
v = (vector signed char)
|
||||||
vec_sub (v, (vector signed char)
|
vec_sub (v, (vector signed char)
|
||||||
vec_splat((vector signed char)AVV(128),0));
|
vec_splat((vector signed char){128},0));
|
||||||
|
|
||||||
U = vec_unpackh (u);
|
U = vec_unpackh (u);
|
||||||
V = vec_unpackh (v);
|
V = vec_unpackh (v);
|
||||||
@ -545,17 +545,17 @@ static int altivec_yuv2_bgra32 (SwsContext *c,
|
|||||||
|
|
||||||
/* ux = (CBU*(u<<CSHIFT)+0x4000)>>15 */
|
/* ux = (CBU*(u<<CSHIFT)+0x4000)>>15 */
|
||||||
ux = vec_sl (U, lCSHIFT);
|
ux = vec_sl (U, lCSHIFT);
|
||||||
ux = vec_mradds (ux, lCBU, (vector signed short)AVV(0));
|
ux = vec_mradds (ux, lCBU, (vector signed short){0});
|
||||||
ux0 = vec_mergeh (ux,ux);
|
ux0 = vec_mergeh (ux,ux);
|
||||||
ux1 = vec_mergel (ux,ux);
|
ux1 = vec_mergel (ux,ux);
|
||||||
|
|
||||||
/* vx = (CRV*(v<<CSHIFT)+0x4000)>>15; */
|
/* vx = (CRV*(v<<CSHIFT)+0x4000)>>15; */
|
||||||
vx = vec_sl (V, lCSHIFT);
|
vx = vec_sl (V, lCSHIFT);
|
||||||
vx = vec_mradds (vx, lCRV, (vector signed short)AVV(0));
|
vx = vec_mradds (vx, lCRV, (vector signed short){0});
|
||||||
vx0 = vec_mergeh (vx,vx);
|
vx0 = vec_mergeh (vx,vx);
|
||||||
vx1 = vec_mergel (vx,vx);
|
vx1 = vec_mergel (vx,vx);
|
||||||
/* uvx = ((CGU*u) + (CGV*v))>>15 */
|
/* uvx = ((CGU*u) + (CGV*v))>>15 */
|
||||||
uvx = vec_mradds (U, lCGU, (vector signed short)AVV(0));
|
uvx = vec_mradds (U, lCGU, (vector signed short){0});
|
||||||
uvx = vec_mradds (V, lCGV, uvx);
|
uvx = vec_mradds (V, lCGV, uvx);
|
||||||
uvx0 = vec_mergeh (uvx,uvx);
|
uvx0 = vec_mergeh (uvx,uvx);
|
||||||
uvx1 = vec_mergel (uvx,uvx);
|
uvx1 = vec_mergel (uvx,uvx);
|
||||||
@ -612,18 +612,18 @@ DEFCSP420_CVT (yuv2_bgr24, out_bgr24)
|
|||||||
// 0123 4567 89ab cdef
|
// 0123 4567 89ab cdef
|
||||||
static
|
static
|
||||||
const vector unsigned char
|
const vector unsigned char
|
||||||
demux_u = AVV(0x10,0x00,0x10,0x00,
|
demux_u = {0x10,0x00,0x10,0x00,
|
||||||
0x10,0x04,0x10,0x04,
|
0x10,0x04,0x10,0x04,
|
||||||
0x10,0x08,0x10,0x08,
|
0x10,0x08,0x10,0x08,
|
||||||
0x10,0x0c,0x10,0x0c),
|
0x10,0x0c,0x10,0x0c},
|
||||||
demux_v = AVV(0x10,0x02,0x10,0x02,
|
demux_v = {0x10,0x02,0x10,0x02,
|
||||||
0x10,0x06,0x10,0x06,
|
0x10,0x06,0x10,0x06,
|
||||||
0x10,0x0A,0x10,0x0A,
|
0x10,0x0A,0x10,0x0A,
|
||||||
0x10,0x0E,0x10,0x0E),
|
0x10,0x0E,0x10,0x0E},
|
||||||
demux_y = AVV(0x10,0x01,0x10,0x03,
|
demux_y = {0x10,0x01,0x10,0x03,
|
||||||
0x10,0x05,0x10,0x07,
|
0x10,0x05,0x10,0x07,
|
||||||
0x10,0x09,0x10,0x0B,
|
0x10,0x09,0x10,0x0B,
|
||||||
0x10,0x0D,0x10,0x0F);
|
0x10,0x0D,0x10,0x0F};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
this is so I can play live CCIR raw video
|
this is so I can play live CCIR raw video
|
||||||
@ -650,25 +650,25 @@ static int altivec_uyvy_rgb32 (SwsContext *c,
|
|||||||
for (j=0;j<w/16;j++) {
|
for (j=0;j<w/16;j++) {
|
||||||
uyvy = vec_ld (0, img);
|
uyvy = vec_ld (0, img);
|
||||||
U = (vector signed short)
|
U = (vector signed short)
|
||||||
vec_perm (uyvy, (vector unsigned char)AVV(0), demux_u);
|
vec_perm (uyvy, (vector unsigned char){0}, demux_u);
|
||||||
|
|
||||||
V = (vector signed short)
|
V = (vector signed short)
|
||||||
vec_perm (uyvy, (vector unsigned char)AVV(0), demux_v);
|
vec_perm (uyvy, (vector unsigned char){0}, demux_v);
|
||||||
|
|
||||||
Y = (vector signed short)
|
Y = (vector signed short)
|
||||||
vec_perm (uyvy, (vector unsigned char)AVV(0), demux_y);
|
vec_perm (uyvy, (vector unsigned char){0}, demux_y);
|
||||||
|
|
||||||
cvtyuvtoRGB (c, Y,U,V,&R0,&G0,&B0);
|
cvtyuvtoRGB (c, Y,U,V,&R0,&G0,&B0);
|
||||||
|
|
||||||
uyvy = vec_ld (16, img);
|
uyvy = vec_ld (16, img);
|
||||||
U = (vector signed short)
|
U = (vector signed short)
|
||||||
vec_perm (uyvy, (vector unsigned char)AVV(0), demux_u);
|
vec_perm (uyvy, (vector unsigned char){0}, demux_u);
|
||||||
|
|
||||||
V = (vector signed short)
|
V = (vector signed short)
|
||||||
vec_perm (uyvy, (vector unsigned char)AVV(0), demux_v);
|
vec_perm (uyvy, (vector unsigned char){0}, demux_v);
|
||||||
|
|
||||||
Y = (vector signed short)
|
Y = (vector signed short)
|
||||||
vec_perm (uyvy, (vector unsigned char)AVV(0), demux_y);
|
vec_perm (uyvy, (vector unsigned char){0}, demux_y);
|
||||||
|
|
||||||
cvtyuvtoRGB (c, Y,U,V,&R1,&G1,&B1);
|
cvtyuvtoRGB (c, Y,U,V,&R1,&G1,&B1);
|
||||||
|
|
||||||
|
@ -293,6 +293,7 @@ void glDisableYUVConversion(GLenum target, int type);
|
|||||||
/** \} */
|
/** \} */
|
||||||
|
|
||||||
#ifdef GL_WIN32
|
#ifdef GL_WIN32
|
||||||
|
#define vo_gl_border(vo) vo_w32_border()
|
||||||
#define vo_check_events() vo_w32_check_events()
|
#define vo_check_events() vo_w32_check_events()
|
||||||
#define vo_fullscreen() vo_w32_fullscreen()
|
#define vo_fullscreen() vo_w32_fullscreen()
|
||||||
#define vo_gl_ontop() vo_w32_ontop()
|
#define vo_gl_ontop() vo_w32_ontop()
|
||||||
@ -300,6 +301,7 @@ void glDisableYUVConversion(GLenum target, int type);
|
|||||||
int setGlWindow(int *vinfo, HGLRC *context, HWND win);
|
int setGlWindow(int *vinfo, HGLRC *context, HWND win);
|
||||||
void releaseGlContext(int *vinfo, HGLRC *context);
|
void releaseGlContext(int *vinfo, HGLRC *context);
|
||||||
#else
|
#else
|
||||||
|
#define vo_gl_border(vo) vo_x11_border(vo)
|
||||||
#define vo_check_events() vo_x11_check_events(mDisplay)
|
#define vo_check_events() vo_x11_check_events(mDisplay)
|
||||||
#define vo_fullscreen() vo_x11_fullscreen()
|
#define vo_fullscreen() vo_x11_fullscreen()
|
||||||
#define vo_gl_ontop() vo_x11_ontop()
|
#define vo_gl_ontop() vo_x11_ontop()
|
||||||
|
@ -999,12 +999,10 @@ static int control(uint32_t request, void *data)
|
|||||||
vo_fullscreen();
|
vo_fullscreen();
|
||||||
resize(vo_dwidth, vo_dheight);
|
resize(vo_dwidth, vo_dheight);
|
||||||
return VO_TRUE;
|
return VO_TRUE;
|
||||||
#ifdef GL_WIN32
|
|
||||||
case VOCTRL_BORDER:
|
case VOCTRL_BORDER:
|
||||||
vo_w32_border();
|
vo_gl_border(global_vo);
|
||||||
resize(vo_dwidth, vo_dheight);
|
resize(vo_dwidth, vo_dheight);
|
||||||
return VO_TRUE;
|
return VO_TRUE;
|
||||||
#endif
|
|
||||||
case VOCTRL_GET_PANSCAN:
|
case VOCTRL_GET_PANSCAN:
|
||||||
if (!use_aspect) return VO_NOTIMPL;
|
if (!use_aspect) return VO_NOTIMPL;
|
||||||
return VO_TRUE;
|
return VO_TRUE;
|
||||||
|
@ -889,11 +889,9 @@ static int control(uint32_t request, void *data)
|
|||||||
initGl(vo_dwidth, vo_dheight);
|
initGl(vo_dwidth, vo_dheight);
|
||||||
resize(&vo_dwidth, &vo_dheight);
|
resize(&vo_dwidth, &vo_dheight);
|
||||||
return VO_TRUE;
|
return VO_TRUE;
|
||||||
#ifdef GL_WIN32
|
|
||||||
case VOCTRL_BORDER:
|
case VOCTRL_BORDER:
|
||||||
vo_w32_border();
|
vo_gl_border(global_vo);
|
||||||
return VO_TRUE;
|
return VO_TRUE;
|
||||||
#endif
|
|
||||||
case VOCTRL_GET_PANSCAN:
|
case VOCTRL_GET_PANSCAN:
|
||||||
return VO_TRUE;
|
return VO_TRUE;
|
||||||
case VOCTRL_SET_PANSCAN:
|
case VOCTRL_SET_PANSCAN:
|
||||||
|
@ -1289,6 +1289,7 @@ void vo_x11_create_vo_window(struct vo *vo, XVisualInfo *vis, int x, int y,
|
|||||||
hint.flags = PPosition | PSize;
|
hint.flags = PPosition | PSize;
|
||||||
XSetStandardProperties(mDisplay, x11->window, title, title, None, NULL, 0, &hint);
|
XSetStandardProperties(mDisplay, x11->window, title, title, None, NULL, 0, &hint);
|
||||||
vo_x11_sizehint(vo, x, y, width, height, 0);
|
vo_x11_sizehint(vo, x, y, width, height, 0);
|
||||||
|
if (!vo_border) vo_x11_decoration(vo, 0);
|
||||||
// map window
|
// map window
|
||||||
XMapWindow(mDisplay, x11->window);
|
XMapWindow(mDisplay, x11->window);
|
||||||
XClearWindow(mDisplay, x11->window);
|
XClearWindow(mDisplay, x11->window);
|
||||||
@ -1546,7 +1547,7 @@ void vo_x11_fullscreen(struct vo *vo)
|
|||||||
|
|
||||||
if ( ! (x11->fs_type & vo_wm_FULLSCREEN) ) // not needed with EWMH fs
|
if ( ! (x11->fs_type & vo_wm_FULLSCREEN) ) // not needed with EWMH fs
|
||||||
{
|
{
|
||||||
vo_x11_decoration(vo, (vo_fs) ? 0 : 1);
|
vo_x11_decoration(vo, vo_border && !vo_fs);
|
||||||
vo_x11_sizehint(vo, x, y, w, h, 0);
|
vo_x11_sizehint(vo, x, y, w, h, 0);
|
||||||
vo_x11_setlayer(vo, x11->window, vo_fs);
|
vo_x11_setlayer(vo, x11->window, vo_fs);
|
||||||
|
|
||||||
@ -1572,6 +1573,12 @@ void vo_x11_ontop(struct vo *vo)
|
|||||||
vo_x11_setlayer(vo, vo->x11->window, opts->vo_ontop);
|
vo_x11_setlayer(vo, vo->x11->window, opts->vo_ontop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vo_x11_border(struct vo *vo)
|
||||||
|
{
|
||||||
|
vo_border = !vo_border;
|
||||||
|
vo_x11_decoration(vo, vo_border && !vo_fs);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* XScreensaver stuff
|
* XScreensaver stuff
|
||||||
*/
|
*/
|
||||||
|
@ -108,6 +108,7 @@ void vo_x11_clearwindow_part(struct vo *vo, Window vo_window,
|
|||||||
int img_width, int img_height, int use_fs);
|
int img_width, int img_height, int use_fs);
|
||||||
void vo_x11_clearwindow(struct vo *vo, Window vo_window);
|
void vo_x11_clearwindow(struct vo *vo, Window vo_window);
|
||||||
void vo_x11_ontop(struct vo *vo);
|
void vo_x11_ontop(struct vo *vo);
|
||||||
|
extern void vo_x11_border(struct vo *vo);
|
||||||
void vo_x11_ewmh_fullscreen(struct vo_x11_state *x11, int action);
|
void vo_x11_ewmh_fullscreen(struct vo_x11_state *x11, int action);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user