summary refs log tree commit diff
path: root/pkgs/applications/video
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2006-04-18 18:46:36 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2006-04-18 18:46:36 +0000
commitcce11c4f1f5dd041feb95e16c8afb5bbcef2dcf5 (patch)
tree8b8b572ad974da4da05a468c72dbe1264cb1b969 /pkgs/applications/video
parentba18de03b9bff3dce33f6e079305ea256d0c53f0 (diff)
downloadnixlib-cce11c4f1f5dd041feb95e16c8afb5bbcef2dcf5.tar
nixlib-cce11c4f1f5dd041feb95e16c8afb5bbcef2dcf5.tar.gz
nixlib-cce11c4f1f5dd041feb95e16c8afb5bbcef2dcf5.tar.bz2
nixlib-cce11c4f1f5dd041feb95e16c8afb5bbcef2dcf5.tar.lz
nixlib-cce11c4f1f5dd041feb95e16c8afb5bbcef2dcf5.tar.xz
nixlib-cce11c4f1f5dd041feb95e16c8afb5bbcef2dcf5.tar.zst
nixlib-cce11c4f1f5dd041feb95e16c8afb5bbcef2dcf5.zip
* Added gtk-gnutella.
* Added a patch to MPlayer to fix the aspect ratio on screens rotated
  with Xrandr.
* Disable toolbus for now because it requires a non-existant package
  (tcltk).

svn path=/nixpkgs/trunk/; revision=5171
Diffstat (limited to 'pkgs/applications/video')
-rw-r--r--pkgs/applications/video/MPlayer/default.nix12
-rw-r--r--pkgs/applications/video/MPlayer/mplayer-aspect.patch76
-rw-r--r--pkgs/applications/video/MPlayer/mplayer-pivot.patch112
3 files changed, 198 insertions, 2 deletions
diff --git a/pkgs/applications/video/MPlayer/default.nix b/pkgs/applications/video/MPlayer/default.nix
index 5c7d50cd63db..8337a4d77670 100644
--- a/pkgs/applications/video/MPlayer/default.nix
+++ b/pkgs/applications/video/MPlayer/default.nix
@@ -1,7 +1,8 @@
 { alsaSupport ? false, xvSupport ? true, theoraSupport ? false, cacaSupport ? false
-, xineramaSupport ? false
+, xineramaSupport ? false, randrSupport ? false
 , stdenv, fetchurl, x11, freetype, zlib
-, alsa ? null, libXv ? null, libtheora ? null, libcaca ? null, libXinerama ? null
+, alsa ? null, libXv ? null, libtheora ? null, libcaca ? null
+, libXinerama ? null, libXrandr ? null
 }:
 
 assert alsaSupport -> alsa != null;
@@ -9,6 +10,7 @@ assert xvSupport -> libXv != null;
 assert theoraSupport -> libtheora != null;
 assert cacaSupport -> libcaca != null;
 assert xineramaSupport -> libXinerama != null;
+assert randrSupport -> libXrandr != null;
 
 stdenv.mkDerivation {
   name = "MPlayer-1.0pre7";
@@ -34,7 +36,13 @@ stdenv.mkDerivation {
     (if theoraSupport then libtheora else null)
     (if cacaSupport then libcaca else null)
     (if xineramaSupport then libXinerama else null)
+    (if randrSupport then libXrandr else null)
   ];
 
   configureFlags = if cacaSupport then "--enable-caca" else "--disable-caca";
+
+  # These fix MPlayer's aspect ratio when run in a screen rotated with
+  # Xrandr.
+  # See: http://itdp.de/~itdp/html/mplayer-dev-eng/2005-08/msg00427.html
+  patches = [./mplayer-aspect.patch ./mplayer-pivot.patch];
 }
diff --git a/pkgs/applications/video/MPlayer/mplayer-aspect.patch b/pkgs/applications/video/MPlayer/mplayer-aspect.patch
new file mode 100644
index 000000000000..9fed008e1b02
--- /dev/null
+++ b/pkgs/applications/video/MPlayer/mplayer-aspect.patch
@@ -0,0 +1,76 @@
+diff -Nur MPlayer.orig/libvo/aspect.c MPlayer/libvo/aspect.c
+--- MPlayer.orig/libvo/aspect.c	2004-10-28 03:15:51.000000000 +0200
++++ MPlayer/libvo/aspect.c	2005-08-24 15:34:14.000000000 +0200
+@@ -11,13 +11,16 @@
+ #include <stdio.h>
+ #endif
+ 
++int vo_physical_width = 0;
++int vo_physical_height = 0;
++
+ int vo_panscan_x = 0;
+ int vo_panscan_y = 0;
+ float vo_panscan_amount = 0;
+ 
+ #include "video_out.h"
+ 
+-float monitor_aspect=4.0/3.0;
++float monitor_aspect=-1.0f;
+ extern float movie_aspect;
+ 
+ static struct {
+@@ -47,11 +50,24 @@
+   aspdat.preh = preh;
+ }
+ 
++static void init_monitor_aspect( void )
++{
++ if (monitor_aspect != -1.0f) return;
++ if (vo_physical_width == 0 || vo_physical_height == 0) {
++  // if there's no other indication, assume square pixels
++  vo_physical_width = aspdat.scrw;
++  vo_physical_height = aspdat.scrh;
++ }
++ mp_msg(MSGT_VO,MSGL_V,"\naspect: monitor aspect detected %d:%d\n", vo_physical_width, vo_physical_height);
++ monitor_aspect = 1.0f * vo_physical_width / vo_physical_height;
++}
++
+ void aspect_save_screenres(int scrw, int scrh){
+ #ifdef ASPECT_DEBUG
+   printf("aspect_save_screenres %dx%d \n",scrw,scrh);
+ #endif
+   aspdat.scrw = scrw;
+   aspdat.scrh = scrh;
++  init_monitor_aspect(); // now is a good time
+ }
+ 
+ /* aspect is called with the source resolution and the
+diff -Nur MPlayer.orig/libvo/aspect.h MPlayer/libvo/aspect.h
+--- MPlayer.orig/libvo/aspect.h	2002-06-05 21:35:54.000000000 +0200
++++ MPlayer/libvo/aspect.h	2005-08-24 00:08:35.000000000 +0200
+@@ -2,6 +2,9 @@
+ #define __ASPECT_H
+ /* Stuff for correct aspect scaling. */
+ 
++extern int vo_physical_width;
++extern int vo_physical_height;
++
+ extern int vo_panscan_x;
+ extern int vo_panscan_y;
+ extern float vo_panscan_amount;
+diff -Nur MPlayer.orig/libvo/x11_common.c MPlayer/libvo/x11_common.c
+--- MPlayer.orig/libvo/x11_common.c	2005-08-23 23:07:07.000000000 +0200
++++ MPlayer/libvo/x11_common.c	2005-08-23 23:42:31.000000000 +0200
+@@ -464,6 +464,12 @@
+         if (!vo_screenheight)
+             vo_screenheight = DisplayHeight(mDisplay, mScreen);
+     }
++    if (vo_physical_width == 0) {
++	vo_physical_width = DisplayWidthMM(mDisplay, mScreen);
++    }
++    if (vo_physical_height == 0) {
++	vo_physical_height = DisplayHeightMM(mDisplay, mScreen);
++    }
+     // get color depth (from root window, or the best visual):
+     XGetWindowAttributes(mDisplay, mRootWin, &attribs);
+     depth = attribs.depth;
diff --git a/pkgs/applications/video/MPlayer/mplayer-pivot.patch b/pkgs/applications/video/MPlayer/mplayer-pivot.patch
new file mode 100644
index 000000000000..33afa32a009a
--- /dev/null
+++ b/pkgs/applications/video/MPlayer/mplayer-pivot.patch
@@ -0,0 +1,112 @@
+--- MPlayer/configure.orig	2005-08-21 23:47:47.000000000 +0200
++++ MPlayer/configure	2005-08-21 23:55:02.000000000 +0200
+@@ -162,6 +162,7 @@
+   --enable-lircc         enable LIRCCD (LIRC client daemon) input [autodetect]
+   --enable-joystick      enable joystick support [disable]
+   --disable-vm           disable support X video mode extensions [autodetect]
++  --disable-randr        disable support for X resize and rotate extension [autodetect]
+   --disable-xf86keysym   disable support for 'multimedia' keys [autodetect]
+   --disable-tv           disable TV Interface (tv/dvb grabbers) [enable]
+   --disable-tv-v4l       disable Video4Linux TV Interface support [autodetect]
+@@ -252,6 +253,7 @@
+   --enable-xv            build with Xv render support for X 4.x [autodetect]
+   --enable-xvmc          build with XvMC acceleration for X 4.x [disable]
+   --enable-vm            build with XF86VidMode support for X11 [autodetect]
++  --enable-randr         build with XRandR support for X11 [autodetect]
+   --enable-xinerama      build with Xinerama support for X11 [autodetect]
+   --enable-x11           build with X11 render support [autodetect]
+   --enable-fbdev         build with FBDev render support [autodetect]
+@@ -1351,6 +1353,7 @@
+ _mga=auto
+ _xmga=auto
+ _vm=auto
++_randr=auto
+ _xf86keysym=auto
+ _mlib=auto
+ _sgiaudio=auto
+@@ -1562,6 +1565,8 @@
+   --disable-xmga)	_xmga=no	;;
+   --enable-vm)		_vm=yes		;;
+   --disable-vm)		_vm=no		;;
++  --enable-randr)	_randr=yes	;;
++  --disable-randr)	_randr=no	;;
+   --enable-xf86keysym)	_xf86keysym=yes	;;
+   --disable-xf86keysym)	_xf86keysym=no	;;
+   --enable-mlib)	_mlib=yes	;;
+@@ -3603,6 +3608,25 @@
+ fi
+ echores "$_vm"
+ 
++# X Resize, Rotate and Reflect extension
++echocheck "Xrandr"
++if test "$_x11" = yes && test "$_randr" = auto; then
++  cat > $TMPC <<EOF
++#include <X11/Xlib.h>
++#include <X11/extensions/Xrandr.h>
++int main(void) { (void) XRRQueryExtension(0, 0, 0); return 0; }
++EOF
++  _randr=no
++  cc_check $_inc_x11 -lXrandr $_ld_x11 && _randr=yes
++fi
++if test "$_randr" = yes ; then
++  _def_randr='#define HAVE_XRANDR 1'
++  _ld_randr='-lXrandr'
++else
++  _def_randr='#undef HAVE_XRANDR'
++fi
++echores "$_randr"
++
+ # Check for the presence of special keycodes, like audio control buttons
+ # that XFree86 might have.  Used to be bundled with the xf86vm check, but
+ # has nothing to do with xf86vm and XFree 3.x has xf86vm but does NOT
+@@ -6762,7 +6786,7 @@
+ SLIBSUF=.so
+ 
+ # video output
+-X_LIB = $_ld_gl $_ld_dga $_ld_xv $_ld_xvmc $_ld_vm $_ld_xinerama $_ld_x11 $_ld_sock
++X_LIB = $_ld_gl $_ld_dga $_ld_xv $_ld_xvmc $_ld_vm $_ld_randr $_ld_xinerama $_ld_x11 $_ld_sock
+ GGI_LIB = $_ld_ggi
+ MLIB_LIB =  $_ld_mlib
+ MLIB_INC = $_inc_mlib
+@@ -7465,6 +7489,7 @@
+ $_def_xv
+ $_def_xvmc
+ $_def_vm
++$_def_randr
+ $_def_xf86keysym
+ $_def_xinerama
+ $_def_gl
+--- MPlayer/libvo/x11_common.c.orig	2005-08-21 23:56:20.000000000 +0200
++++ MPlayer/libvo/x11_common.c	2005-08-22 00:05:17.000000000 +0200
+@@ -39,6 +39,10 @@
+ #include <X11/extensions/xf86vmode.h>
+ #endif
+ 
++#ifdef HAVE_XRANDR
++#include <X11/extensions/Xrandr.h>
++#endif
++
+ #ifdef HAVE_XF86XK
+ #include <X11/XF86keysym.h>
+ #endif
+@@ -434,6 +438,20 @@
+         int clock;
+ 
+         XF86VidModeGetModeLine(mDisplay, mScreen, &clock, &modeline);
++#ifdef HAVE_XRANDR
++        {
++            Rotation current_rotation;
++
++            XRRRotations(mDisplay, mScreen, &current_rotation);
++            if ((current_rotation&RR_Rotate_90) != 0 ||
++                    (current_rotation&RR_Rotate_270) != 0) {
++                unsigned short tmp;
++                tmp = modeline.hdisplay;
++                modeline.hdisplay = modeline.vdisplay;
++                modeline.vdisplay = tmp;
++            }
++        }
++#endif
+         if (!vo_screenwidth)
+             vo_screenwidth = modeline.hdisplay;
+         if (!vo_screenheight)