summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHanno Böck <hanno@gentoo.org>2006-11-01 16:44:35 +0000
committerHanno Böck <hanno@gentoo.org>2006-11-01 16:44:35 +0000
commit27c7bc82254f250336e65699832462dac09a0641 (patch)
tree202c1a33bb5f0fb20372b47d0d407ee77f0dac76 /media-plugins
parentRemove mask on libcdio, as that version is now bumped to 0.78.2. (diff)
downloadgentoo-2-27c7bc82254f250336e65699832462dac09a0641.tar.gz
gentoo-2-27c7bc82254f250336e65699832462dac09a0641.tar.bz2
gentoo-2-27c7bc82254f250336e65699832462dac09a0641.zip
fix bug with audio volume in a52dec
(Portage version: 2.1.2_rc1-r2)
Diffstat (limited to 'media-plugins')
-rw-r--r--media-plugins/gst-plugins-a52dec/ChangeLog8
-rw-r--r--media-plugins/gst-plugins-a52dec/files/digest-gst-plugins-a52dec-0.10.4-r13
-rw-r--r--media-plugins/gst-plugins-a52dec/files/gsta52-audio-volume.patch207
-rw-r--r--media-plugins/gst-plugins-a52dec/gst-plugins-a52dec-0.10.4-r1.ebuild20
4 files changed, 237 insertions, 1 deletions
diff --git a/media-plugins/gst-plugins-a52dec/ChangeLog b/media-plugins/gst-plugins-a52dec/ChangeLog
index d1f59ff3faee..0c5a7f93d950 100644
--- a/media-plugins/gst-plugins-a52dec/ChangeLog
+++ b/media-plugins/gst-plugins-a52dec/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for media-plugins/gst-plugins-a52dec
# Copyright 2000-2006 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-plugins/gst-plugins-a52dec/ChangeLog,v 1.66 2006/10/06 16:57:03 zaheerm Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/gst-plugins-a52dec/ChangeLog,v 1.67 2006/11/01 16:44:35 hanno Exp $
+
+*gst-plugins-a52dec-0.10.4-r1 (01 Nov 2006)
+
+ 01 Nov 2006; Hanno Boeck <hanno@gentoo.org>
+ +files/gsta52-audio-volume.patch, +gst-plugins-a52dec-0.10.4-r1.ebuild:
+ Add patch to fix bug with audio volume control (needed for thoggen).
06 Oct 2006; Zaheer Abbas Merali <zaheerm@gentoo.org> ChangeLog:
version bump
diff --git a/media-plugins/gst-plugins-a52dec/files/digest-gst-plugins-a52dec-0.10.4-r1 b/media-plugins/gst-plugins-a52dec/files/digest-gst-plugins-a52dec-0.10.4-r1
new file mode 100644
index 000000000000..aebedd2db84a
--- /dev/null
+++ b/media-plugins/gst-plugins-a52dec/files/digest-gst-plugins-a52dec-0.10.4-r1
@@ -0,0 +1,3 @@
+MD5 c10f40e3641d827ca7853b0a3d560257 gst-plugins-ugly-0.10.4.tar.bz2 720893
+RMD160 0651853d7d36bda9d267ca3cecfb6cead95a3e6e gst-plugins-ugly-0.10.4.tar.bz2 720893
+SHA256 4871c52b2421b582330a0f9dc6a42da3b706140c346aa0cd690eb40758afe152 gst-plugins-ugly-0.10.4.tar.bz2 720893
diff --git a/media-plugins/gst-plugins-a52dec/files/gsta52-audio-volume.patch b/media-plugins/gst-plugins-a52dec/files/gsta52-audio-volume.patch
new file mode 100644
index 000000000000..50139c6e0da5
--- /dev/null
+++ b/media-plugins/gst-plugins-a52dec/files/gsta52-audio-volume.patch
@@ -0,0 +1,207 @@
+diff -Naur gst-plugins-ugly-0.10.4-orig/ext/a52dec/gsta52dec.c gst-plugins-ugly-0.10.4/ext/a52dec/gsta52dec.c
+--- gst-plugins-ugly-0.10.4-orig/ext/a52dec/gsta52dec.c 2006-11-01 17:38:01.647477958 +0100
++++ gst-plugins-ugly-0.10.4/ext/a52dec/gsta52dec.c 2006-11-01 17:38:07.821539358 +0100
+@@ -58,7 +58,9 @@
+ enum
+ {
+ ARG_0,
+- ARG_DRC
++ ARG_DRC,
++ ARG_MODE,
++ ARG_LFE,
+ };
+
+ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+@@ -94,6 +96,30 @@
+
+ static GstElementClass *parent_class = NULL;
+
++#define GST_TYPE_A52DEC_MODE (gst_a52dec_mode_get_type())
++static GType
++gst_a52dec_mode_get_type (void)
++{
++ static GType a52dec_mode_type = 0;
++ static const GEnumValue a52dec_modes[] = {
++ {A52_MONO, "Mono", "mono"},
++ {A52_STEREO, "Stereo", "stereo"},
++ {A52_3F, "3 Front", "3f"},
++ {A52_2F1R, "2 Front, 1 Rear", "2f1r"},
++ {A52_3F1R, "3 Front, 1 Rear", "3f1r"},
++ {A52_2F2R, "2 Front, 2 Rear", "2f2r"},
++ {A52_3F2R, "3 Front, 2 Rear", "3f2r"},
++ {A52_DOLBY, "Dolby", "dolby"},
++ {0, NULL, NULL},
++ };
++
++ if (!a52dec_mode_type) {
++ a52dec_mode_type = g_enum_register_static ("GstA52DecMode", a52dec_modes);
++ }
++ return a52dec_mode_type;
++}
++
++
+ GType
+ gst_a52dec_get_type (void)
+ {
+@@ -153,6 +179,11 @@
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DRC,
+ g_param_spec_boolean ("drc", "Dynamic Range Compression",
+ "Use Dynamic Range Compression", FALSE, G_PARAM_READWRITE));
++ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MODE,
++ g_param_spec_enum ("mode", "Decoder Mode", "Decoding Mode (default 3f2r)",
++ GST_TYPE_A52DEC_MODE, A52_3F2R, G_PARAM_READWRITE));
++ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LFE,
++ g_param_spec_boolean ("lfe", "LFE", "LFE", TRUE, G_PARAM_READWRITE));
+
+ oil_init ();
+
+@@ -191,6 +222,7 @@
+ gst_pad_use_fixed_caps (a52dec->srcpad);
+ gst_element_add_pad (GST_ELEMENT (a52dec), a52dec->srcpad);
+
++ a52dec->request_channels = A52_CHANNEL;
+ a52dec->dynamic_range_compression = FALSE;
+ a52dec->cache = NULL;
+ }
+@@ -268,6 +300,12 @@
+ }
+ chans += 2;
+ break;
++ case A52_MONO:
++ if (pos) {
++ pos[0 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_MONO;
++ }
++ chans += 1;
++ break;
+ default:
+ /* error, caller should post error message */
+ g_free (pos);
+@@ -441,6 +479,49 @@
+ gst_a52dec_update_streaminfo (a52dec);
+ }
+
++ /* If we haven't had an explicit number of channels chosen through properties
++ * at this point, choose what to downmix to now, based on what the peer will
++ * accept - this allows a52dec to do downmixing in preference to a
++ * downstream element such as audioconvert.
++ */
++ if (a52dec->request_channels == A52_CHANNEL) {
++ GstCaps *caps;
++
++ caps = gst_pad_get_allowed_caps (a52dec->srcpad);
++ if (caps && gst_caps_get_size (caps) > 0) {
++ GstCaps *copy = gst_caps_copy_nth (caps, 0);
++ GstStructure *structure = gst_caps_get_structure (copy, 0);
++ gint channels;
++ const int a52_channels[6] = {
++ A52_MONO,
++ A52_STEREO,
++ A52_STEREO | A52_LFE,
++ A52_2F2R,
++ A52_2F2R | A52_LFE,
++ A52_3F2R | A52_LFE,
++ };
++
++ /* Prefer the original number of channels, but fixate to something
++ * preferred (first in the caps) downstream if possible.
++ */
++ gst_structure_fixate_field_nearest_int (structure, "channels",
++ flags ? gst_a52dec_channels (flags, NULL) : 6);
++ gst_structure_get_int (structure, "channels", &channels);
++ if (channels <= 6)
++ a52dec->request_channels = a52_channels[channels - 1];
++ else
++ a52dec->request_channels = a52_channels[5];
++
++ gst_caps_unref (copy);
++ } else if (flags)
++ a52dec->request_channels = a52dec->stream_channels;
++ else
++ a52dec->request_channels = A52_3F2R | A52_LFE;
++
++ if (caps)
++ gst_caps_unref (caps);
++ }
++
+ /* process */
+ flags = a52dec->request_channels; /* | A52_ADJUST_LEVEL; */
+ a52dec->level = 1;
+@@ -681,7 +762,6 @@
+ a52dec->bit_rate = -1;
+ a52dec->sample_rate = -1;
+ a52dec->stream_channels = A52_CHANNEL;
+- a52dec->request_channels = A52_3F2R | A52_LFE;
+ a52dec->using_channels = A52_CHANNEL;
+ a52dec->level = 1;
+ a52dec->bias = 0;
+@@ -729,6 +809,18 @@
+ src->dynamic_range_compression = g_value_get_boolean (value);
+ GST_OBJECT_UNLOCK (src);
+ break;
++ case ARG_MODE:
++ GST_OBJECT_LOCK (src);
++ src->request_channels &= ~A52_CHANNEL_MASK;
++ src->request_channels |= g_value_get_enum (value);
++ GST_OBJECT_UNLOCK (src);
++ break;
++ case ARG_LFE:
++ GST_OBJECT_LOCK (src);
++ src->request_channels &= ~A52_LFE;
++ src->request_channels |= g_value_get_boolean (value) ? A52_LFE : 0;
++ GST_OBJECT_UNLOCK (src);
++ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+@@ -747,6 +839,16 @@
+ g_value_set_boolean (value, src->dynamic_range_compression);
+ GST_OBJECT_UNLOCK (src);
+ break;
++ case ARG_MODE:
++ GST_OBJECT_LOCK (src);
++ g_value_set_enum (value, src->request_channels & A52_CHANNEL_MASK);
++ GST_OBJECT_UNLOCK (src);
++ break;
++ case ARG_LFE:
++ GST_OBJECT_LOCK (src);
++ g_value_set_boolean (value, src->request_channels & A52_LFE);
++ GST_OBJECT_UNLOCK (src);
++ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+diff -Naur gst-plugins-ugly-0.10.4-orig/ext/a52dec/gsta52dec.h gst-plugins-ugly-0.10.4/ext/a52dec/gsta52dec.h
+--- gst-plugins-ugly-0.10.4-orig/ext/a52dec/gsta52dec.h 2006-11-01 17:38:01.658476286 +0100
++++ gst-plugins-ugly-0.10.4/ext/a52dec/gsta52dec.h 2006-11-01 17:38:07.822539206 +0100
+@@ -73,6 +73,31 @@
+
+ GType gst_a52dec_get_type (void);
+
++#ifndef A52_MONO
++#define A52_MONO 1
++#endif
++#ifndef A52_STEREO
++#define A52_STEREO 2
++#endif
++#ifndef A52_3F
++#define A52_3F 3
++#endif
++#ifndef A52_2F1R
++#define A52_2F1R 4
++#endif
++#ifndef A52_3F1R
++#define A52_3F1R 5
++#endif
++#ifndef A52_2F2R
++#define A52_2F2R 6
++#endif
++#ifndef A52_3F2R
++#define A52_3F2R 7
++#endif
++#ifndef A52_DOLBY
++#define A52_DOLBY 10
++#endif
++
+ G_END_DECLS
+
+ #endif /* __GST_A52DEC_H__ */
diff --git a/media-plugins/gst-plugins-a52dec/gst-plugins-a52dec-0.10.4-r1.ebuild b/media-plugins/gst-plugins-a52dec/gst-plugins-a52dec-0.10.4-r1.ebuild
new file mode 100644
index 000000000000..c3b69f345e19
--- /dev/null
+++ b/media-plugins/gst-plugins-a52dec/gst-plugins-a52dec-0.10.4-r1.ebuild
@@ -0,0 +1,20 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/gst-plugins-a52dec/gst-plugins-a52dec-0.10.4-r1.ebuild,v 1.1 2006/11/01 16:44:35 hanno Exp $
+
+inherit gst-plugins-ugly
+
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86"
+IUSE=""
+
+RDEPEND=">=media-libs/a52dec-0.7.3
+ >=media-libs/gst-plugins-base-0.10.3
+ >=media-libs/gstreamer-0.10.3"
+
+DEPEND="${RDEPEND}"
+
+src_unpack() {
+ gst-plugins-ugly_src_unpack
+ cd ${S}
+ epatch ${FILESDIR}/gsta52-audio-volume.patch
+}