Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 30 Apr 2011 22:46:10 -0500
From:      Zhihao Yuan <lichray@gmail.com>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/156747: multimedia/mplayer: fix 24-bits OSS + some improvements
Message-ID:  <4dbcd787.c2d5e70a.31a2.5a2e@mx.google.com>
Resent-Message-ID: <201105010350.p413o9fN089348@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         156747
>Category:       ports
>Synopsis:       multimedia/mplayer: fix 24-bits OSS + some improvements
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sun May 01 03:50:09 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator:     Zhihao Yuan
>Release:        FreeBSD 8.2-STABLE amd64
>Organization:
Northern Illinois University
>Environment:
System: FreeBSD compaq.yuetime 8.2-STABLE FreeBSD 8.2-STABLE #0: Mon Mar 14 02:51:28 CDT 2011 root@compaq.yuetime:/usr/obj/usr/src/sys/HOUKAGO amd64


	
>Description:
	
	mplayer does not detects 24-bits OSS correctly. It only detects AFMT_S24_PACKED, which is not available for the OSS on FreeBSD.

	Two improvements includes:
	Since alsa-libs is available on FreeBSD, mplayer will link to it (without add it as a dependence in ports). I added a --disable-alsa to the port, since alsa on FreeBSD is for compatibility-only.

	The log2 in libc is MFCed. Enable it if OS_VERSION matches.
>How-To-Repeat:
	
>Fix:

	
	Detects both AFMT_S24_LE and AFMT_S24_BE (3 bytes mode, FreeBSD-only).

--- patch-mplayer_1 begins here ---
diff -ruN --exclude=CVS /usr/ports/multimedia/mplayer.orig/Makefile /usr/ports/multimedia/mplayer/Makefile
--- /usr/ports/multimedia/mplayer.orig/Makefile	2011-04-01 06:09:36.000000000 -0500
+++ /usr/ports/multimedia/mplayer/Makefile	2011-04-30 21:53:50.515792533 -0500
@@ -7,7 +7,7 @@
 
 PORTNAME=	mplayer
 PORTVERSION=	${MPLAYER_PORT_VERSION}
-PORTREVISION=	0
+PORTREVISION=	1
 COMMENT=	High performance media player supporting many formats
 
 .include "${.CURDIR}/Makefile.shared"
@@ -89,6 +89,7 @@
 			--disable-libdirac-lavc \
 			--disable-mencoder \
 			--disable-mpg123 \
+			--disable-alsa \
 			--disable-musepack
 
 .include "${.CURDIR}/Makefile.options"
@@ -272,9 +273,13 @@
 		${WRKSRC}/config.mak
 	@${REINPLACE_CMD} \
 		-e 's#HAVE_FAST_CMOV 1#HAVE_FAST_CMOV 0#g' \
+		${WRKSRC}/config.h
+.if ${OSVERSION} < 802502
+	@${REINPLACE_CMD} \
 		-e 's#HAVE_LOG2 1#HAVE_LOG2 0#g' \
 		-e 's#HAVE_LOG2F 1#HAVE_LOG2F 0#g' \
 		${WRKSRC}/config.h
+.endif
 
 post-install:
 	@${MKDIR} ${DATADIR}
diff -ruN --exclude=CVS /usr/ports/multimedia/mplayer.orig/files/patch-libao2-ao_oss.c /usr/ports/multimedia/mplayer/files/patch-libao2-ao_oss.c
--- /usr/ports/multimedia/mplayer.orig/files/patch-libao2-ao_oss.c	2010-04-21 08:07:22.000000000 -0500
+++ /usr/ports/multimedia/mplayer/files/patch-libao2-ao_oss.c	2011-04-30 22:30:14.559196350 -0500
@@ -1,14 +1,36 @@
---- libao2/ao_oss.c.orig	2009-05-12 21:58:57.000000000 -0500
-+++ libao2/ao_oss.c	2009-07-23 19:58:44.870097203 -0500
-@@ -453,6 +453,7 @@
+--- libao2/ao_oss.c.orig	2010-01-11 14:27:52.000000000 -0600
++++ libao2/ao_oss.c	2011-04-30 22:30:09.695270802 -0500
+@@ -72,6 +72,10 @@ static int format2oss(int format)
+     case AF_FORMAT_S16_BE: return AFMT_S16_BE;
+ #ifdef AFMT_S24_PACKED
+     case AF_FORMAT_S24_LE: return AFMT_S24_PACKED;
++#elif defined(AFMT_S24_LE) && defined(__FreeBSD__)
++    case AF_FORMAT_S24_LE: return AFMT_S24_LE;
++#elif defined(AFMT_S24_BE) && defined(__FreeBSD__)
++    case AF_FORMAT_S24_BE: return AFMT_S24_BE;
+ #endif
+ #ifdef AFMT_U32_LE
+     case AF_FORMAT_U32_LE: return AFMT_U32_LE;
+@@ -115,6 +119,10 @@ static int oss2format(int format)
+     case AFMT_S16_BE: return AF_FORMAT_S16_BE;
+ #ifdef AFMT_S24_PACKED
+     case AFMT_S24_PACKED: return AF_FORMAT_S24_LE;
++#elif defined(AFMT_S24_LE) && defined(__FreeBSD__)
++    case AFMT_S24_LE: return AF_FORMAT_S24_LE;
++#elif defined(AFMT_S24_BE) && defined(__FreeBSD__)
++    case AFMT_S24_BE: return AF_FORMAT_S24_BE;
+ #endif
+ #ifdef AFMT_U32_LE
+     case AFMT_U32_LE: return AF_FORMAT_U32_LE;
+@@ -448,6 +456,7 @@ static void reset(void){
    fcntl(audio_fd, F_SETFD, FD_CLOEXEC);
  #endif
  
 +  ioctl (audio_fd, SNDCTL_DSP_SPEED, &ao_data.samplerate);
    oss_format = format2oss(ao_data.format);
-   if(ao_data.format == AF_FORMAT_AC3)
+   if(AF_FORMAT_IS_AC3(ao_data.format))
      ioctl (audio_fd, SNDCTL_DSP_SPEED, &ao_data.samplerate);
-@@ -464,7 +465,6 @@
+@@ -459,7 +468,6 @@ static void reset(void){
        int c = ao_data.channels-1;
        ioctl (audio_fd, SNDCTL_DSP_STEREO, &c);
      }
--- patch-mplayer_1 ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4dbcd787.c2d5e70a.31a2.5a2e>