Package-Name: mplayer
Gentoo-Package: media-video/mplayer
Suggests: lame live libcss
Rebuild-For: xanim
Homepage: http://www.mplayerhq.hu/homepage/
Source: ftp://ftp.mplayerhq.hu/MPlayer/releases/MPlayer-(\d+(.\d+)\w*).tar.bz2 $1
More-Source-1: ftp://ftp.mplayerhq.hu/MPlayer/releases/fonts/font-arial-iso-8859-1.tar.bz2
# FIXME: dates in files
More-Source-2: ftp://ftp.mplayerhq.hu/MPlayer/releases/codecs/essential-20071007.tar.bz2
#More-Source-3: ftp://ftp.mplayerhq.hu/MPlayer/releases/codecs/qt5dlls.tar.bz2
#More-Source-4: ftp://ftp.mplayerhq.hu/MPlayer/releases/codecs/rp9codecs.tar.bz2
Zap-Before-Install: 1
Repack:
	tar xjvfp "$(SOURCE)"
	test -d mplayer-"$(VERSION)" || mv ??layer* mplayer-"$(VERSION)"
	mkdir -p mplayer-"$(VERSION)"/{fonts,w32codecs}
	tar Cxjvfp mplayer-"$(VERSION)"/fonts "$(SOURCE1)"
	mkdir wctmp
	set -e ; for i in "$(SOURCE2)" "$(SOURCE3)" "$(SOURCE4)" ; do \
		if test "$$i" ; then \
			mkdir -p wctmp2 ; \
			tar Cxjvfp wctmp2 $$i ; \
			mv `find wctmp2 -type f -print` wctmp/ ; \
			rm -rf wctmp2 ; \
		fi ; \
	done
	for i in `cd wctmp/win32codecs ; echo *` ; do \
		rm -f wctmp/[a-vx-z]*/"$$i" ; \
	done
	mv `find wctmp -type f` mplayer-"$(VERSION)"/w32codecs/
Compile:
	ONEUP=`dirname "$(PREFIX)"` ; \
	if packager c xanim; then XANIMOPT="--xanimcodecsdir=\"$$ONEUP/xanim/mods\""; else XANIMOPT=""; fi; \
#FIXME: dvdnav support broken (for libdvdnav 0.1.9)
	if false && packager c libdvdnav; then DVDNAVOPT="--enable-dvdnav"; else DVDNAVOPT="--disable-dvdnav"; fi; \
	if packager c live; then LIVEOPT="--enable-live --with-extraincdir=\"$$ONEUP/live/BasicUsageEnvironment/include:$$ONEUP/live/UsageEnvironment/include:$$ONEUP/live/groupsock/include:$$ONEUP/live/liveMedia/include\" --with-extralibdir=\"$$ONEUP/live/BasicUsageEnvironment:$$ONEUP/live/UsageEnvironment:$$ONEUP/live/groupsock:$$ONEUP/live/liveMedia\" --extra-libs="-lBasicUsageEnvironment -lUsageEnvironment -lgroupsock -lliveMedia"" ; else LIVEOPT=""; fi; \
#FIXME: x264 broken
#	if packager c x264-svn; then X264OPT="--enable-x264" ; else X264OPT=""; fi; \
	if packager c nvidia-x86; then XVMCOPT="--enable-xvmc --with-xvmclib=XvMCNVIDIA"; else XVMCOPT=""; fi; \
	$(MAKE) -f ../Makefile configure CUSTOM_OPT="-fomit-frame-pointer" CONFIGURE_OPTS="--enable-largefiles --disable-unrarlib --win32codecsdir=\"$(PREFIX)/lib/win32\" --realcodecsdir=\"$(PREFIX)/lib/win32\" $$XANIMOPT $$DVDNAVOPT $$LIVEOPT $$X264OPT $$XVMCOPT"
	$(MAKE)
	$(MAKE) install
	rm -f /tmp/mplayer-conf-*
	rm -rf "$(PREFIX)"/doc
	cp -a DOCS "$(PREFIX)"/doc
	umask 022 ; mkdir -p "$(PREFIX)"/lib/win32
	mv -f w32codecs/* "$(PREFIX)"/lib/win32/
	umask 022 ; mkdir -p "$(PREFIX)"/share/mplayer/font
	cp -a fonts/*/*arial-18*/* "$(PREFIX)"/share/mplayer/font/
Install:
	$(MAKE) instbin BIN="mencoder mplayer"
	$(MAKE) instman SECTION=1 MAN="mencoder mplayer"
Patch: <<EOT
######## begin patch to eliminate system-too-SLOW message
--- ../mplayer-1.0rc2-orig/mplayer.c	2007-10-08 04:49:33 +0900
+++ mplayer.c	2007-12-14 23:41:31 +0900
@@ -1705,7 +1705,7 @@
 	v_pts = mpctx->sh_video->pts;
 
 	{
-	    static int drop_message=0;
+	    static int drop_message=1;
 	    double AV_delay = a_pts - audio_delay - v_pts;
 	    double x;
 	    if (AV_delay>0.5 && drop_frame_cnt>50 && drop_message==0){
######## end patch to eliminate system-too-SLOW message
######## begin patch to eliminate silly proprietary codec message
--- ../mplayer-1.0rc2-orig/help/help_mp-en.h	2007-10-08 04:49:32 +0900
+++ help/help_mp-en.h	2007-12-14 23:42:32 +0900
@@ -1387,7 +1387,7 @@
 #define MSGTR_MPDEMUX_MMST_UnknownObject "unknown object\n"
 #define MSGTR_MPDEMUX_MMST_MediaDataReadFailed "Media data read failed.\n"
 #define MSGTR_MPDEMUX_MMST_MissingSignature "missing signature\n"
-#define MSGTR_MPDEMUX_MMST_PatentedTechnologyJoke "Everything done. Thank you for downloading a media file containing proprietary and patented technology.\n"
+#define MSGTR_MPDEMUX_MMST_PatentedTechnologyJoke ""
 #define MSGTR_MPDEMUX_MMST_UnknownCmd "unknown command %02x\n"
 #define MSGTR_MPDEMUX_MMST_GetMediaPacketErr "get_media_packet error : %s\n"
 #define MSGTR_MPDEMUX_MMST_Connected "Connected\n"
######## end patch to eliminate silly proprietary codec message
######## begin mpeg seeking patch (from mplayer-users, 2005/7/5: -ss doesn't work correctly if mplayer can't find a pts in the last 500k of the file)
--- ../mplayer-1.0rc2-orig/libmpdemux/demux_mpg.c	2007-10-08 04:49:33 +0900
+++ libmpdemux/demux_mpg.c	2007-12-14 23:42:59 +0900
@@ -104,7 +104,7 @@
 }
 
 // 500000 is a wild guess
-#define TIMESTAMP_PROBE_LEN 500000
+#define TIMESTAMP_PROBE_LEN 1500000
 
 //MAX_PTS_DIFF_FOR_CONSECUTIVE denotes the maximum difference
 //between two pts to consider them consecutive
######## end mpeg seeking patch
######## begin -noskip fix
--- ../mplayer-1.0rc2-orig/mencoder.c	2007-10-08 04:49:33 +0900
+++ mencoder.c	2007-12-14 23:46:02 +0900
@@ -1371,7 +1371,7 @@
 	++skip_flag;
     }
 } else
-if(skip_flag>0){
+if(skip_limit>0 && skip_flag>0){
     // skip frame
 	if(!quiet) mp_msg(MSGT_MENCODER, MSGL_WARN, MSGTR_SkipFrame);
 	skippedframes++;
######## end -noskip fix
######## begin -nodup addition patch
--- ../mplayer-1.0rc2-orig/cfg-mencoder.h	2007-10-08 04:49:33 +0900
+++ cfg-mencoder.h	2007-12-14 23:46:29 +0900
@@ -204,6 +204,7 @@
 	{"skiplimit", &skip_limit, CONF_TYPE_INT, 0, 0, 0, NULL},
 	{"noskiplimit", &skip_limit, CONF_TYPE_FLAG, 0, 0, -1, NULL},
 	{"noskip", &skip_limit, CONF_TYPE_FLAG, 0, 0, 0, NULL},
+	{"nodup", &dup_limit, CONF_TYPE_FLAG, 0, 0, 0, NULL},
 
 	{"audio-density", &audio_density, CONF_TYPE_INT, CONF_RANGE|CONF_GLOBAL, 1, 50, NULL},
 	{"audio-preload", &audio_preload, CONF_TYPE_FLOAT, CONF_RANGE|CONF_GLOBAL, 0, 2, NULL},
--- ../mplayer-1.0rc2-orig/mencoder.c	2007-10-08 04:49:33 +0900
+++ mencoder.c	2007-12-14 23:46:30 +0900
@@ -166,6 +166,7 @@
 float force_fps=0;
 static float force_ofps=0; // set to 24 for inverse telecine
 static int skip_limit=-1;
+static int dup_limit=-1;
 float playback_speed=1.0;
 
 static int force_srate=0;
@@ -1361,7 +1362,7 @@
 videosamples++;
 videorate+=(GetTimerMS() - ptimer_start);
 
-if(skip_flag<0){
+if(dup_limit!=0 && skip_flag<0){
     // duplicate frame
 	if(!quiet) mp_msg(MSGT_MENCODER, MSGL_WARN, MSGTR_DuplicateFrames,-skip_flag);
     while(skip_flag<0){
######## end -nodup addition patch
######## begin MM:SS Trem display patch
--- ../mplayer-1.0rc2-orig/mencoder.c	2007-10-08 04:49:33 +0900
+++ mencoder.c	2007-12-14 23:49:13 +0900
@@ -1455,10 +1455,11 @@
 #else
       if(!quiet) {
 	if( mp_msg_test(MSGT_STATUSLINE,MSGL_V) ) {
-		mp_msg(MSGT_STATUSLINE,MSGL_STATUS,"Pos:%6.1fs %6df (%2d%%) %3dfps Trem:%4dmin %3dmb  A-V:%5.3f [%d:%d] A/Vms %d/%d D/B/S %d/%d/%d \r",
+		mp_msg(MSGT_STATUSLINE,MSGL_STATUS,"Pos:%6.1fs %6df (%2d%%) %3dfps Trem:%4d:%02d %3dmb  A-V:%5.3f [%d:%d] A/Vms %d/%d D/B/S %d/%d/%d \r",
 	    	mux_v->timer, decoded_frameno, (int)(p*100),
 	    	(t>1) ? (int)(decoded_frameno/t+0.5) : 0,
-	    	(p>0.001) ? (int)((t/p-t)/60) : 0, 
+	    	(p>0.001) ? ((int)(t/p-t))/60 : 0, 
+	    	(p>0.001) ? ((int)(t/p-t))%60 : 0, 
 	    	(p>0.001) ? (int)(stream_tell(muxer->stream)/p/1024/1024) : 0,
 	    	v_pts_corr,
 	    	(mux_v->timer>1) ? (int)(mux_v->size/mux_v->timer/125) : 0,
@@ -1467,10 +1468,11 @@
 			duplicatedframes, badframes, skippedframes
 		);
 	} else
-	mp_msg(MSGT_STATUSLINE,MSGL_STATUS,"Pos:%6.1fs %6df (%2d%%) %5.2ffps Trem:%4dmin %3dmb  A-V:%5.3f [%d:%d]\r",
+	mp_msg(MSGT_STATUSLINE,MSGL_STATUS,"Pos:%6.1fs %6df (%2d%%) %5.2ffps Trem:%4d:%02d %3dmb  A-V:%5.3f [%d:%d]\r",
 	    mux_v->timer, decoded_frameno, (int)(p*100),
 	    (t>1) ? (float)(decoded_frameno/t) : 0,
-	    (p>0.001) ? (int)((t/p-t)/60) : 0, 
+	    (p>0.001) ? ((int)(t/p-t))/60 : 0, 
+	    (p>0.001) ? ((int)(t/p-t))%60 : 0, 
 	    (p>0.001) ? (int)(stream_tell(muxer->stream)/p/1024/1024) : 0,
 	    v_pts_corr,
 	    (mux_v->timer>1) ? (int)(mux_v->size/mux_v->timer/125) : 0,
######## end MM:SS Trem display patch
######## begin AVI EOF chunk detection patch
--- ../mplayer-1.0rc2-orig/libmpdemux/aviheader.c	2007-10-08 04:49:33 +0900
+++ libmpdemux/aviheader.c	2007-12-14 23:49:33 +0900
@@ -72,6 +72,8 @@
   if (index_file_save)
     index_mode = 2;
   //
+  if(id==mmioFOURCC('E','O','F','\0')) break;
+  //
   if(id==mmioFOURCC('L','I','S','T')){
     unsigned len=stream_read_dword_le(demuxer->stream);   // list size
     id=stream_read_dword_le(demuxer->stream);             // list type
######## end AVI EOF chunk detection patch
######## begin no KeyPress check in slave mode patch
--- ../mplayer-1.0rc2-orig/libvo/x11_common.c	2007-10-08 04:49:28 +0900
+++ libvo/x11_common.c	2007-12-14 23:50:43 +0900
@@ -1072,6 +1072,8 @@
                 break;
             case KeyPress:
                 {
+                extern int slave_mode;
+                if (!slave_mode) {
                     int key;
 
 #ifdef HAVE_NEW_GUI
@@ -1088,7 +1090,7 @@
                          0 ? ((keySym & 0x00ff) + 256) : (keySym));
                     vo_x11_putkey(key);
                     ret |= VO_EVENT_KEYPRESS;
-                }
+                }}
                 break;
             case MotionNotify:
                 if(enable_mouse_movements)
######## end no KeyPress check in slave mode patch
######## remainder is local stuff
--- mencoder.c.old	2006-10-09 04:14:35 +0900
+++ mencoder.c	2006-10-09 04:15:38 +0900
@@ -1299,7 +1299,8 @@
     --skip_flag; // dup
 }
 if ((v_pts_corr >= mux_frametime && skip_flag < 0) || (v_pts_corr >= 2*mux_frametime)) {
-  if (skip_flag<=0) { // we can't skip more than 1 frame now
+  // we can't skip more than 1 frame now
+  if (skip_flag<=0 || (skip_flag==0 && skip_limit!=0)) { 
     v_pts_corr-=mux_frametime;
     ++skip_flag; // skip
   }
EOT
NoPatch: <<EOT
######## begin no abort() on X error patch (no longer needed in 1.0rc2?)
diff -ur ../mplayer-1.0pre6a-orig/libvo/x11_common.c libvo/x11_common.c
--- ../mplayer-1.0pre6a-orig/libvo/x11_common.c	2004-12-22 05:33:51 +0900
+++ libvo/x11_common.c	2005-02-15 02:26:59 +0900
@@ -209,8 +209,8 @@
            "Error code: %x, request code: %x, minor code: %x\n",
            event->error_code, event->request_code, event->minor_code);
 
-    abort();
-    //exit_player("X11 error");
+    //abort();
+    exit_player("X11 error");
 #undef MSGLEN
 }
 
######## end no abort() on X error patch
EOT

/pkg/mplayer/
/usr/bin/mencoder
/usr/bin/mplayer
/usr/man/man1/mencoder.1.gz
/usr/man/man1/mplayer.1.gz
