Date: Thu, 20 Dec 2007 12:53:49 GMT From: Neil Hoggarth <neil@hoggarth.me.uk> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/118889: multimedia/mplayer segfaults on AMD64 if the software scaler is used Message-ID: <200712201253.lBKCrns7028385@www.freebsd.org> Resent-Message-ID: <200712201300.lBKD03oF032883@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 118889 >Category: ports >Synopsis: multimedia/mplayer segfaults on AMD64 if the software scaler is used >Confidential: no >Severity: serious >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Dec 20 13:00:03 UTC 2007 >Closed-Date: >Last-Modified: >Originator: Neil Hoggarth >Release: 7.0-BETA4 >Organization: >Environment: FreeBSD neilhoggarth-2.dsl.easynet.co.uk 7.0-BETA4 FreeBSD 7.0-BETA4 #0: Sun Dec 16 21:56:28 GMT 2007 root@neilhoggarth-2.dsl.easynet.co.uk:/usr/obj/usr/src/sys/GENERIC amd64 >Description: mplayer-0.99.10_14 (and the dependent mencoder port) fail with a segfault in the MMX2 accelerated software scaler code when run on my system (which uses an AMD Athlon BE-2400 processor). >How-To-Repeat: mplayer -ao null -vo null -vf scale=100:100 some-input-file.mpg >Fix: The MPlayer Subversion repository contains a fix for this. <http://svn.mplayerhq.hu/mplayer?view=rev&revision=22401> I put the following patch in /usr/ports/multimedia/mplayer/files on my system, and reinstalled mplayer and mencoder with "portupgrade -f". This fixed the problem for me. Patch attached with submission follows: --- libswscale/swscale_template.c~ 2006-10-22 23:32:29.000000000 +0100 +++ libswscale/swscale_template.c 2007-12-20 12:20:30.373604637 +0000 @@ -3070,6 +3070,7 @@ for(i=0; i<vLumFilterSize; i++) { lumMmxFilter[4*i+0]= (int32_t)lumSrcPtr[i]; + lumMmxFilter[4*i+1]= (uint64_t)lumSrcPtr[i] >> 32; lumMmxFilter[4*i+2]= lumMmxFilter[4*i+3]= ((uint16_t)vLumFilter[dstY*vLumFilterSize + i])*0x10001; @@ -3077,6 +3078,7 @@ for(i=0; i<vChrFilterSize; i++) { chrMmxFilter[4*i+0]= (int32_t)chrSrcPtr[i]; + chrMmxFilter[4*i+1]= (uint64_t)chrSrcPtr[i] >> 32; chrMmxFilter[4*i+2]= chrMmxFilter[4*i+3]= ((uint16_t)vChrFilter[chrDstY*vChrFilterSize + i])*0x10001; >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200712201253.lBKCrns7028385>