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.
|
||||
Since this is on by default, use \-noborder to disable the standard window
|
||||
decorations.
|
||||
Supported by the directx video output driver.
|
||||
.
|
||||
.TP
|
||||
.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).
|
||||
.
|
||||
.TP
|
||||
.B \-xineramascreen <\-2\-...> (X11 only)
|
||||
.B \-xineramascreen <\-2\-...>
|
||||
In Xinerama configurations (i.e.\& a single desktop that spans across multiple
|
||||
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
|
||||
@ -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
|
||||
specified screen.
|
||||
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
|
||||
.B \-zrbw (\-vo zr only)
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" synced with r27236
|
||||
.\" synced with r27337
|
||||
.\" Encoding: iso-8859-1
|
||||
.\" MPlayer (C) 2000-2008 MPlayer Team
|
||||
.\" 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).
|
||||
Spécifiez \-noborder pour désactiver les décorations de fenêtre
|
||||
standard.
|
||||
Supporté par le pilote de sortie vidéo directx.
|
||||
.
|
||||
.TP
|
||||
.B \-brightness <\-100\-100>
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" synced with r27236
|
||||
.\" synced with r27337
|
||||
.\" Encoding: iso-8859-1
|
||||
.\" MPlayer (C) 2000-2008 MPlayer Team
|
||||
.\" 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.
|
||||
Dato che questo è il default, usa \-noborder per disabilitare le decorazioni
|
||||
standard della finestra.
|
||||
Supportato dal driver di uscita video directx.
|
||||
.
|
||||
.TP
|
||||
.B \-brightness <\-100\-100>
|
||||
|
@ -48,7 +48,7 @@ Requirements
|
||||
~~~~~~~~~~~~
|
||||
The requirements for any (official) mirror are:
|
||||
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:
|
||||
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.
|
||||
|
||||
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
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Any FTP server will do. We use vsftpd, it's fast and secure. 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.
|
||||
Any FTP server will do. We use vsftpd, it is fast and secure. The setup is
|
||||
similar to the web server setup. The FTP server should listen on both its mirror
|
||||
address (ftp#.mplayerhq.hu) and the DNS round-robin address (ftp.mplayerhq.hu).
|
||||
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
|
||||
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
|
||||
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-x264 disable x264 [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-libavutil_a disable static libavutil [autodetect]
|
||||
--disable-libavcodec_a disable static libavcodec [autodetect]
|
||||
@ -633,6 +636,8 @@ _xvid=auto
|
||||
_xvid_lavc=auto
|
||||
_x264=auto
|
||||
_x264_lavc=auto
|
||||
_libdirac_lavc=auto
|
||||
_libschroedinger_lavc=auto
|
||||
_libnut=auto
|
||||
_lirc=auto
|
||||
_lircc=auto
|
||||
@ -1044,6 +1049,10 @@ for ac_option do
|
||||
--disable-x264) _x264=no ;;
|
||||
--enable-x264-lavc) _x264_lavc=yes ;;
|
||||
--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 ;;
|
||||
--disable-libnut) _libnut=no ;;
|
||||
--enable-libavutil_a) _libavutil_a=yes ;;
|
||||
@ -6659,6 +6668,79 @@ _res_comment="in libavcodec: $_x264_lavc"
|
||||
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"
|
||||
if test "$_libnut" = auto ; then
|
||||
cat > $TMPC << EOF
|
||||
@ -7383,7 +7465,7 @@ else
|
||||
_def_charset="#undef MSG_CHARSET"
|
||||
fi
|
||||
|
||||
if test "$_charset" != "UTF-8" ; then
|
||||
if test -n "$_charset" && test "$_charset" != "UTF-8" ; then
|
||||
echocheck "iconv program"
|
||||
iconv -f UTF-8 -t $_charset ${_mp_help} > /dev/null 2>> "$TMPLOG"
|
||||
if test "$?" -ne 0 ; then
|
||||
@ -7827,8 +7909,10 @@ CONFIG_MUXERS=$_mencoder
|
||||
CONFIG_LIBAMR=$_libamr
|
||||
CONFIG_LIBAMR_NB=$_libamr_nb
|
||||
CONFIG_LIBAMR_WB=$_libamr_wb
|
||||
CONFIG_LIBDIRAC=$_libdirac_lavc
|
||||
CONFIG_LIBFAAC=$_faac_lavc
|
||||
CONFIG_LIBMP3LAME=$_mp3lame_lavc
|
||||
CONFIG_LIBSCHROEDINGER=$_libschroedinger_lavc
|
||||
CONFIG_LIBVORBIS=$_libvorbis
|
||||
CONFIG_LIBX264=$_x264_lavc
|
||||
CONFIG_LIBXVID=$_xvid_lavc
|
||||
@ -8224,8 +8308,10 @@ $_def_libamr_wb
|
||||
`ff_config_enable "$_libavprotocols_all" "$_libavprotocols"`
|
||||
`ff_config_enable "$_libavbsfs_all" "$_libavbsfs"`
|
||||
|
||||
$_def_libdirac_lavc
|
||||
$_def_faac_lavc
|
||||
$_def_mp3lame_lavc
|
||||
$_def_libschroedinger_lavc
|
||||
$_def_x264_lavc
|
||||
$_def_xvid_lavc
|
||||
|
||||
|
@ -708,6 +708,22 @@ videocodec ffwv1f
|
||||
dll mpeg4
|
||||
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
|
||||
info "Xvid (MPEG-4)"
|
||||
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');
|
||||
else if (!strcasecmp(lavc_param_vcodec, "libx264"))
|
||||
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
|
||||
mux_v->bih->biCompression = mmioFOURCC(lavc_param_vcodec[0],
|
||||
lavc_param_vcodec[1], lavc_param_vcodec[2], lavc_param_vcodec[3]); /* FIXME!!! */
|
||||
|
@ -143,14 +143,14 @@ typedef signed char sbyte;
|
||||
*/
|
||||
static
|
||||
const vector unsigned char
|
||||
perm_rgb_0 = AVV(0x00,0x01,0x10,0x02,0x03,0x11,0x04,0x05,
|
||||
0x12,0x06,0x07,0x13,0x08,0x09,0x14,0x0a),
|
||||
perm_rgb_1 = AVV(0x0b,0x15,0x0c,0x0d,0x16,0x0e,0x0f,0x17,
|
||||
0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f),
|
||||
perm_rgb_2 = AVV(0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
|
||||
0x00,0x01,0x18,0x02,0x03,0x19,0x04,0x05),
|
||||
perm_rgb_3 = AVV(0x1a,0x06,0x07,0x1b,0x08,0x09,0x1c,0x0a,
|
||||
0x0b,0x1d,0x0c,0x0d,0x1e,0x0e,0x0f,0x1f);
|
||||
perm_rgb_0 = {0x00,0x01,0x10,0x02,0x03,0x11,0x04,0x05,
|
||||
0x12,0x06,0x07,0x13,0x08,0x09,0x14,0x0a},
|
||||
perm_rgb_1 = {0x0b,0x15,0x0c,0x0d,0x16,0x0e,0x0f,0x17,
|
||||
0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f},
|
||||
perm_rgb_2 = {0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
|
||||
0x00,0x01,0x18,0x02,0x03,0x19,0x04,0x05},
|
||||
perm_rgb_3 = {0x1a,0x06,0x07,0x1b,0x08,0x09,0x1c,0x0a,
|
||||
0x0b,0x1d,0x0c,0x0d,0x1e,0x0e,0x0f,0x1f};
|
||||
|
||||
#define vec_merge3(x2,x1,x0,y0,y1,y2) \
|
||||
do { \
|
||||
@ -222,25 +222,25 @@ do { \
|
||||
|
||||
#define vec_unh(x) \
|
||||
(vector signed short) \
|
||||
vec_perm(x,(typeof(x))AVV(0),\
|
||||
(vector unsigned char)AVV(0x10,0x00,0x10,0x01,0x10,0x02,0x10,0x03,\
|
||||
0x10,0x04,0x10,0x05,0x10,0x06,0x10,0x07))
|
||||
vec_perm(x,(typeof(x)){0}, \
|
||||
(vector unsigned char){0x10,0x00,0x10,0x01,0x10,0x02,0x10,0x03,\
|
||||
0x10,0x04,0x10,0x05,0x10,0x06,0x10,0x07})
|
||||
#define vec_unl(x) \
|
||||
(vector signed short) \
|
||||
vec_perm(x,(typeof(x))AVV(0),\
|
||||
(vector unsigned char)AVV(0x10,0x08,0x10,0x09,0x10,0x0A,0x10,0x0B,\
|
||||
0x10,0x0C,0x10,0x0D,0x10,0x0E,0x10,0x0F))
|
||||
vec_perm(x,(typeof(x)){0}, \
|
||||
(vector unsigned char){0x10,0x08,0x10,0x09,0x10,0x0A,0x10,0x0B,\
|
||||
0x10,0x0C,0x10,0x0D,0x10,0x0E,0x10,0x0F})
|
||||
|
||||
#define vec_clip_s16(x) \
|
||||
vec_max (vec_min (x, (vector signed short)AVV(235,235,235,235,235,235,235,235)),\
|
||||
(vector signed short)AVV( 16, 16, 16, 16, 16, 16, 16, 16))
|
||||
vec_max (vec_min (x, (vector signed short){235,235,235,235,235,235,235,235}), \
|
||||
(vector signed short){ 16, 16, 16, 16, 16, 16, 16, 16 })
|
||||
|
||||
#define vec_packclp(x,y) \
|
||||
(vector unsigned char)vec_packs \
|
||||
((vector unsigned short)vec_max (x,(vector signed short) AVV(0)), \
|
||||
(vector unsigned short)vec_max (y,(vector signed short) AVV(0)))
|
||||
((vector unsigned short)vec_max (x,(vector signed short) {0}), \
|
||||
(vector unsigned short)vec_max (y,(vector signed short) {0}))
|
||||
|
||||
//#define out_pixels(a,b,c,ptr) vec_mstrgb32(typeof(a),((typeof (a))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,
|
||||
@ -251,9 +251,9 @@ static inline void cvtyuvtoRGB (SwsContext *c,
|
||||
|
||||
Y = vec_mradds (Y, c->CY, c->OY);
|
||||
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)
|
||||
vec_splat((vector signed short)AVV(128),0));
|
||||
vec_splat((vector signed short){128},0));
|
||||
|
||||
// ux = (CBU*(u<<c->CSHIFT)+0x4000)>>15;
|
||||
ux = vec_sl (U, c->CSHIFT);
|
||||
@ -359,10 +359,10 @@ static int altivec_##name (SwsContext *c, \
|
||||
\
|
||||
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) \
|
||||
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); \
|
||||
V = vec_unpackh (v); \
|
||||
@ -380,18 +380,18 @@ static int altivec_##name (SwsContext *c, \
|
||||
\
|
||||
/* ux = (CBU*(u<<CSHIFT)+0x4000)>>15 */ \
|
||||
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); \
|
||||
ux1 = vec_mergel (ux,ux); \
|
||||
\
|
||||
/* vx = (CRV*(v<<CSHIFT)+0x4000)>>15; */ \
|
||||
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); \
|
||||
vx1 = vec_mergel (vx,vx); \
|
||||
\
|
||||
/* 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); \
|
||||
uvx0 = vec_mergeh (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_bgra(a,b,c,ptr) vec_mstrgb32(typeof(a),c,b,a,((typeof (a))AVV(0)),ptr)
|
||||
#define out_rgba(a,b,c,ptr) vec_mstrgb32(typeof(a),a,b,c,((typeof (a))AVV(0)),ptr)
|
||||
#define out_argb(a,b,c,ptr) vec_mstrgb32(typeof(a),((typeof (a))AVV(0)),a,b,c,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)){0}),ptr)
|
||||
#define out_rgba(a,b,c,ptr) vec_mstrgb32(typeof(a),a,b,c,((typeof (a)){0}),ptr)
|
||||
#define out_argb(a,b,c,ptr) vec_mstrgb32(typeof(a),((typeof (a)){0}),a,b,c,ptr)
|
||||
#define out_rgb24(a,b,c,ptr) vec_mstrgb24(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);
|
||||
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)
|
||||
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);
|
||||
V = vec_unpackh (v);
|
||||
@ -545,17 +545,17 @@ static int altivec_yuv2_bgra32 (SwsContext *c,
|
||||
|
||||
/* ux = (CBU*(u<<CSHIFT)+0x4000)>>15 */
|
||||
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);
|
||||
ux1 = vec_mergel (ux,ux);
|
||||
|
||||
/* vx = (CRV*(v<<CSHIFT)+0x4000)>>15; */
|
||||
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);
|
||||
vx1 = vec_mergel (vx,vx);
|
||||
/* 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);
|
||||
uvx0 = vec_mergeh (uvx,uvx);
|
||||
uvx1 = vec_mergel (uvx,uvx);
|
||||
@ -612,18 +612,18 @@ DEFCSP420_CVT (yuv2_bgr24, out_bgr24)
|
||||
// 0123 4567 89ab cdef
|
||||
static
|
||||
const vector unsigned char
|
||||
demux_u = AVV(0x10,0x00,0x10,0x00,
|
||||
0x10,0x04,0x10,0x04,
|
||||
0x10,0x08,0x10,0x08,
|
||||
0x10,0x0c,0x10,0x0c),
|
||||
demux_v = AVV(0x10,0x02,0x10,0x02,
|
||||
0x10,0x06,0x10,0x06,
|
||||
0x10,0x0A,0x10,0x0A,
|
||||
0x10,0x0E,0x10,0x0E),
|
||||
demux_y = AVV(0x10,0x01,0x10,0x03,
|
||||
0x10,0x05,0x10,0x07,
|
||||
0x10,0x09,0x10,0x0B,
|
||||
0x10,0x0D,0x10,0x0F);
|
||||
demux_u = {0x10,0x00,0x10,0x00,
|
||||
0x10,0x04,0x10,0x04,
|
||||
0x10,0x08,0x10,0x08,
|
||||
0x10,0x0c,0x10,0x0c},
|
||||
demux_v = {0x10,0x02,0x10,0x02,
|
||||
0x10,0x06,0x10,0x06,
|
||||
0x10,0x0A,0x10,0x0A,
|
||||
0x10,0x0E,0x10,0x0E},
|
||||
demux_y = {0x10,0x01,0x10,0x03,
|
||||
0x10,0x05,0x10,0x07,
|
||||
0x10,0x09,0x10,0x0B,
|
||||
0x10,0x0D,0x10,0x0F};
|
||||
|
||||
/*
|
||||
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++) {
|
||||
uyvy = vec_ld (0, img);
|
||||
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)
|
||||
vec_perm (uyvy, (vector unsigned char)AVV(0), demux_v);
|
||||
vec_perm (uyvy, (vector unsigned char){0}, demux_v);
|
||||
|
||||
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);
|
||||
|
||||
uyvy = vec_ld (16, img);
|
||||
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)
|
||||
vec_perm (uyvy, (vector unsigned char)AVV(0), demux_v);
|
||||
vec_perm (uyvy, (vector unsigned char){0}, demux_v);
|
||||
|
||||
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);
|
||||
|
||||
|
@ -293,6 +293,7 @@ void glDisableYUVConversion(GLenum target, int type);
|
||||
/** \} */
|
||||
|
||||
#ifdef GL_WIN32
|
||||
#define vo_gl_border(vo) vo_w32_border()
|
||||
#define vo_check_events() vo_w32_check_events()
|
||||
#define vo_fullscreen() vo_w32_fullscreen()
|
||||
#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);
|
||||
void releaseGlContext(int *vinfo, HGLRC *context);
|
||||
#else
|
||||
#define vo_gl_border(vo) vo_x11_border(vo)
|
||||
#define vo_check_events() vo_x11_check_events(mDisplay)
|
||||
#define vo_fullscreen() vo_x11_fullscreen()
|
||||
#define vo_gl_ontop() vo_x11_ontop()
|
||||
|
@ -999,12 +999,10 @@ static int control(uint32_t request, void *data)
|
||||
vo_fullscreen();
|
||||
resize(vo_dwidth, vo_dheight);
|
||||
return VO_TRUE;
|
||||
#ifdef GL_WIN32
|
||||
case VOCTRL_BORDER:
|
||||
vo_w32_border();
|
||||
vo_gl_border(global_vo);
|
||||
resize(vo_dwidth, vo_dheight);
|
||||
return VO_TRUE;
|
||||
#endif
|
||||
case VOCTRL_GET_PANSCAN:
|
||||
if (!use_aspect) return VO_NOTIMPL;
|
||||
return VO_TRUE;
|
||||
|
@ -889,11 +889,9 @@ static int control(uint32_t request, void *data)
|
||||
initGl(vo_dwidth, vo_dheight);
|
||||
resize(&vo_dwidth, &vo_dheight);
|
||||
return VO_TRUE;
|
||||
#ifdef GL_WIN32
|
||||
case VOCTRL_BORDER:
|
||||
vo_w32_border();
|
||||
vo_gl_border(global_vo);
|
||||
return VO_TRUE;
|
||||
#endif
|
||||
case VOCTRL_GET_PANSCAN:
|
||||
return VO_TRUE;
|
||||
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;
|
||||
XSetStandardProperties(mDisplay, x11->window, title, title, None, NULL, 0, &hint);
|
||||
vo_x11_sizehint(vo, x, y, width, height, 0);
|
||||
if (!vo_border) vo_x11_decoration(vo, 0);
|
||||
// map window
|
||||
XMapWindow(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
|
||||
{
|
||||
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_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);
|
||||
}
|
||||
|
||||
void vo_x11_border(struct vo *vo)
|
||||
{
|
||||
vo_border = !vo_border;
|
||||
vo_x11_decoration(vo, vo_border && !vo_fs);
|
||||
}
|
||||
|
||||
/*
|
||||
* 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);
|
||||
void vo_x11_clearwindow(struct vo *vo, Window vo_window);
|
||||
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);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user