From owner-freebsd-ports-bugs@FreeBSD.ORG Thu Aug 29 16:50:01 2013 Return-Path: Delivered-To: freebsd-ports-bugs@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id F388F7D3 for ; Thu, 29 Aug 2013 16:50:00 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D1FB72774 for ; Thu, 29 Aug 2013 16:50:00 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.7/8.14.7) with ESMTP id r7TGo0jT066907 for ; Thu, 29 Aug 2013 16:50:00 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.7/8.14.7/Submit) id r7TGo0DG066906; Thu, 29 Aug 2013 16:50:00 GMT (envelope-from gnats) Resent-Date: Thu, 29 Aug 2013 16:50:00 GMT Resent-Message-Id: <201308291650.r7TGo0DG066906@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Jan Beich Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 72518548 for ; Thu, 29 Aug 2013 16:44:21 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from oldred.freebsd.org (oldred.freebsd.org [8.8.178.121]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5EECC272B for ; Thu, 29 Aug 2013 16:44:21 +0000 (UTC) Received: from oldred.freebsd.org ([127.0.1.6]) by oldred.freebsd.org (8.14.5/8.14.7) with ESMTP id r7TGiKYr083146 for ; Thu, 29 Aug 2013 16:44:20 GMT (envelope-from nobody@oldred.freebsd.org) Received: (from nobody@localhost) by oldred.freebsd.org (8.14.5/8.14.5/Submit) id r7TGiKWu083145; Thu, 29 Aug 2013 16:44:20 GMT (envelope-from nobody) Message-Id: <201308291644.r7TGiKWu083145@oldred.freebsd.org> Date: Thu, 29 Aug 2013 16:44:20 GMT From: Jan Beich To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Subject: ports/181655: [patch] multimedia/gstreamer1-plugins-good: add more sample formats to oss plugin X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Aug 2013 16:50:01 -0000 >Number: 181655 >Category: ports >Synopsis: [patch] multimedia/gstreamer1-plugins-good: add more sample formats to oss plugin >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Thu Aug 29 16:50:00 UTC 2013 >Closed-Date: >Last-Modified: >Originator: Jan Beich >Release: >Organization: >Environment: static noise when playing .mp3 with 'playbin' or having 'audioresample' in the filter chain >Description: >How-To-Repeat: >Fix: --- oss_formats.diff begins here --- --- sys/oss/gstosshelper.c~ +++ sys/oss/gstosshelper.c @@ -95,9 +95,13 @@ gst_oss_helper_probe_caps (gint fd) format_mask = AFMT_U8 | AFMT_S8; if (G_BYTE_ORDER == G_LITTLE_ENDIAN) - format_mask |= AFMT_S16_LE | AFMT_U16_LE; + format_mask |= AFMT_S16_LE | AFMT_U16_LE + | AFMT_S24_LE | AFMT_U24_LE + | AFMT_S32_LE | AFMT_U32_LE; else - format_mask |= AFMT_S16_BE | AFMT_U16_BE; + format_mask |= AFMT_S16_BE | AFMT_U16_BE + | AFMT_S24_BE | AFMT_U24_BE + | AFMT_S32_BE | AFMT_U32_BE; caps = gst_caps_new_empty (); @@ -169,6 +173,9 @@ gst_oss_helper_get_format_structure (uns const gchar *format; switch (format_bit) { + case AFMT_S8: + format = "S8"; + break; case AFMT_U8: format = "U8"; break; @@ -178,15 +185,36 @@ gst_oss_helper_get_format_structure (uns case AFMT_S16_BE: format = "S16BE"; break; - case AFMT_S8: - format = "S8"; - break; case AFMT_U16_LE: format = "U16LE"; break; case AFMT_U16_BE: format = "U16BE"; break; + case AFMT_S24_LE: + format = "S24LE"; + break; + case AFMT_S24_BE: + format = "S24BE"; + break; + case AFMT_U24_LE: + format = "U24LE"; + break; + case AFMT_U24_BE: + format = "U24BE"; + break; + case AFMT_S32_LE: + format = "S32LE"; + break; + case AFMT_S32_BE: + format = "S32BE"; + break; + case AFMT_U32_LE: + format = "U32LE"; + break; + case AFMT_U32_BE: + format = "U32BE"; + break; default: g_assert_not_reached (); return NULL; --- sys/oss/gstosssink.c~ +++ sys/oss/gstosssink.c @@ -106,7 +106,10 @@ enum PROP_DEVICE, }; -#define FORMATS "{" GST_AUDIO_NE(S16)","GST_AUDIO_NE(U16)", S8, U8 }" +#define FORMATS "{" GST_AUDIO_NE(S32)","GST_AUDIO_NE(U32)"," \ + GST_AUDIO_NE(S24)","GST_AUDIO_NE(U24)"," \ + GST_AUDIO_NE(S16)","GST_AUDIO_NE(U16)"," \ + "S8, U8 }" static GstStaticPadTemplate osssink_sink_factory = GST_STATIC_PAD_TEMPLATE ("sink", @@ -321,6 +324,9 @@ gst_oss_sink_get_format (GstAudioRingBuf case GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW: { switch (rfmt) { + case GST_AUDIO_FORMAT_S8: + result = AFMT_S8; + break; case GST_AUDIO_FORMAT_U8: result = AFMT_U8; break; @@ -330,15 +336,36 @@ gst_oss_sink_get_format (GstAudioRingBuf case GST_AUDIO_FORMAT_S16BE: result = AFMT_S16_BE; break; - case GST_AUDIO_FORMAT_S8: - result = AFMT_S8; - break; case GST_AUDIO_FORMAT_U16LE: result = AFMT_U16_LE; break; case GST_AUDIO_FORMAT_U16BE: result = AFMT_U16_BE; break; + case GST_AUDIO_FORMAT_S24LE: + result = AFMT_S24_LE; + break; + case GST_AUDIO_FORMAT_S24BE: + result = AFMT_S24_BE; + break; + case GST_AUDIO_FORMAT_U24LE: + result = AFMT_U24_LE; + break; + case GST_AUDIO_FORMAT_U24BE: + result = AFMT_U24_BE; + break; + case GST_AUDIO_FORMAT_S32LE: + result = AFMT_S32_LE; + break; + case GST_AUDIO_FORMAT_S32BE: + result = AFMT_S32_BE; + break; + case GST_AUDIO_FORMAT_U32LE: + result = AFMT_U32_LE; + break; + case GST_AUDIO_FORMAT_U32BE: + result = AFMT_U32_BE; + break; default: result = 0; break; @@ -441,7 +468,7 @@ gst_oss_sink_prepare (GstAudioSink * asi rate = GST_AUDIO_INFO_RATE (&spec->info); channels = GST_AUDIO_INFO_CHANNELS (&spec->info); - if (width != 16 && width != 8) + if (width != 32 && width != 24 && width != 16 && width != 8) goto dodgy_width; SET_PARAM (oss, SNDCTL_DSP_SETFMT, tmp, "SETFMT"); --- sys/oss/gstosssrc.c~ +++ sys/oss/gstosssrc.c @@ -100,7 +100,10 @@ static guint gst_oss_src_read (GstAudioS static guint gst_oss_src_delay (GstAudioSrc * asrc); static void gst_oss_src_reset (GstAudioSrc * asrc); -#define FORMATS "{" GST_AUDIO_NE(S16)","GST_AUDIO_NE(U16)", S8, U8 }" +#define FORMATS "{" GST_AUDIO_NE(S32)","GST_AUDIO_NE(U32)"," \ + GST_AUDIO_NE(S24)","GST_AUDIO_NE(U24)"," \ + GST_AUDIO_NE(S16)","GST_AUDIO_NE(U16)"," \ + "S8, U8 }" static GstStaticPadTemplate osssrc_src_factory = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, @@ -314,6 +317,9 @@ gst_oss_src_get_format (GstAudioRingBuff case GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW: { switch (rfmt) { + case GST_AUDIO_FORMAT_S8: + result = AFMT_S8; + break; case GST_AUDIO_FORMAT_U8: result = AFMT_U8; break; @@ -323,15 +329,36 @@ gst_oss_src_get_format (GstAudioRingBuff case GST_AUDIO_FORMAT_S16BE: result = AFMT_S16_BE; break; - case GST_AUDIO_FORMAT_S8: - result = AFMT_S8; - break; case GST_AUDIO_FORMAT_U16LE: result = AFMT_U16_LE; break; case GST_AUDIO_FORMAT_U16BE: result = AFMT_U16_BE; break; + case GST_AUDIO_FORMAT_S24LE: + result = AFMT_S24_LE; + break; + case GST_AUDIO_FORMAT_S24BE: + result = AFMT_S24_BE; + break; + case GST_AUDIO_FORMAT_U24LE: + result = AFMT_U24_LE; + break; + case GST_AUDIO_FORMAT_U24BE: + result = AFMT_U24_BE; + break; + case GST_AUDIO_FORMAT_S32LE: + result = AFMT_S32_LE; + break; + case GST_AUDIO_FORMAT_S32BE: + result = AFMT_S32_BE; + break; + case GST_AUDIO_FORMAT_U32LE: + result = AFMT_U32_LE; + break; + case GST_AUDIO_FORMAT_U32BE: + result = AFMT_U32_BE; + break; default: result = 0; break; @@ -428,7 +455,7 @@ gst_oss_src_prepare (GstAudioSrc * asrc, rate = GST_AUDIO_INFO_RATE (&spec->info); channels = GST_AUDIO_INFO_CHANNELS (&spec->info); - if (width != 16 && width != 8) + if (width != 32 && width != 24 && width != 16 && width != 8) goto dodgy_width; tmp = ilog2 (spec->segsize); --- oss_formats.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted: