[pulseaudio-discuss] [PATCH v3 01/17] Move pa_format_info_to_sample_spec_fake() to core-format

Tanu Kaskinen tanu.kaskinen at linux.intel.com
Wed Jan 8 11:50:44 PST 2014


I will need to use the function from outside libpulse.

I added the channel map argument, because the function will be called
from another function that is expected to initialize the channel map.
I don't know if it's in practice necessary, but it shouldn't do any
harm either.
---
 src/Makefile.am             |  1 +
 src/pulse/format.c          | 25 ++--------------------
 src/pulsecore/core-format.c | 52 +++++++++++++++++++++++++++++++++++++++++++++
 src/pulsecore/core-format.h | 31 +++++++++++++++++++++++++++
 4 files changed, 86 insertions(+), 23 deletions(-)
 create mode 100644 src/pulsecore/core-format.c
 create mode 100644 src/pulsecore/core-format.h

diff --git a/src/Makefile.am b/src/Makefile.am
index c89cd6d..b2f6405 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -614,6 +614,7 @@ libpulsecommon_ at PA_MAJORMINOR@_la_SOURCES = \
 		pulsecore/authkey.c pulsecore/authkey.h \
 		pulsecore/conf-parser.c pulsecore/conf-parser.h \
 		pulsecore/core-error.c pulsecore/core-error.h \
+		pulsecore/core-format.c pulsecore/core-format.h \
 		pulsecore/core-rtclock.c pulsecore/core-rtclock.h \
 		pulsecore/core-util.c pulsecore/core-util.h \
 		pulsecore/creds.h \
diff --git a/src/pulse/format.c b/src/pulse/format.c
index c0c53bf..9c7e13e 100644
--- a/src/pulse/format.c
+++ b/src/pulse/format.c
@@ -30,6 +30,7 @@
 #include <pulse/internal.h>
 #include <pulse/xmalloc.h>
 
+#include <pulsecore/core-format.h>
 #include <pulsecore/core-util.h>
 #include <pulsecore/i18n.h>
 #include <pulsecore/macro.h>
@@ -215,28 +216,6 @@ pa_format_info* pa_format_info_from_sample_spec(pa_sample_spec *ss, pa_channel_m
     return f;
 }
 
-/* For compressed streams */
-static int pa_format_info_to_sample_spec_fake(pa_format_info *f, pa_sample_spec *ss) {
-    int rate;
-
-    pa_assert(f);
-    pa_assert(ss);
-
-    /* Note: When we add support for non-IEC61937 encapsulated compressed
-     * formats, this function should return a non-zero values for these. */
-
-    ss->format = PA_SAMPLE_S16LE;
-    ss->channels = 2;
-
-    pa_return_val_if_fail(pa_format_info_get_prop_int(f, PA_PROP_FORMAT_RATE, &rate) == 0, -PA_ERR_INVALID);
-    ss->rate = (uint32_t) rate;
-
-    if (f->encoding == PA_ENCODING_EAC3_IEC61937)
-        ss->rate *= 4;
-
-    return 0;
-}
-
 /* For PCM streams */
 int pa_format_info_to_sample_spec(pa_format_info *f, pa_sample_spec *ss, pa_channel_map *map) {
     char *sf = NULL, *m = NULL;
@@ -247,7 +226,7 @@ int pa_format_info_to_sample_spec(pa_format_info *f, pa_sample_spec *ss, pa_chan
     pa_assert(ss);
 
     if (!pa_format_info_is_pcm(f))
-        return pa_format_info_to_sample_spec_fake(f, ss);
+        return pa_format_info_to_sample_spec_fake(f, ss, map);
 
     if (pa_format_info_get_prop_string(f, PA_PROP_FORMAT_SAMPLE_FORMAT, &sf))
         goto out;
diff --git a/src/pulsecore/core-format.c b/src/pulsecore/core-format.c
new file mode 100644
index 0000000..6e7c1fb
--- /dev/null
+++ b/src/pulsecore/core-format.c
@@ -0,0 +1,52 @@
+/***
+  This file is part of PulseAudio.
+
+  PulseAudio is free software; you can redistribute it and/or modify
+  it under the terms of the GNU Lesser General Public License as published
+  by the Free Software Foundation; either version 2.1 of the License,
+  or (at your option) any later version.
+
+  PulseAudio is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with PulseAudio; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+  USA.
+***/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "core-format.h"
+
+#include <pulse/def.h>
+
+#include <pulsecore/macro.h>
+
+int pa_format_info_to_sample_spec_fake(pa_format_info *f, pa_sample_spec *ss, pa_channel_map *map) {
+    int rate;
+
+    pa_assert(f);
+    pa_assert(ss);
+
+    /* Note: When we add support for non-IEC61937 encapsulated compressed
+     * formats, this function should return a non-zero values for these. */
+
+    ss->format = PA_SAMPLE_S16LE;
+    ss->channels = 2;
+
+    if (map)
+        pa_channel_map_init_stereo(map);
+
+    pa_return_val_if_fail(pa_format_info_get_prop_int(f, PA_PROP_FORMAT_RATE, &rate) == 0, -PA_ERR_INVALID);
+    ss->rate = (uint32_t) rate;
+
+    if (f->encoding == PA_ENCODING_EAC3_IEC61937)
+        ss->rate *= 4;
+
+    return 0;
+}
diff --git a/src/pulsecore/core-format.h b/src/pulsecore/core-format.h
new file mode 100644
index 0000000..ef2c8dc
--- /dev/null
+++ b/src/pulsecore/core-format.h
@@ -0,0 +1,31 @@
+#ifndef foocoreformathfoo
+#define foocoreformathfoo
+
+/***
+  This file is part of PulseAudio.
+
+  PulseAudio is free software; you can redistribute it and/or modify
+  it under the terms of the GNU Lesser General Public License as published
+  by the Free Software Foundation; either version 2.1 of the License,
+  or (at your option) any later version.
+
+  PulseAudio is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with PulseAudio; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+  USA.
+***/
+
+#include <pulse/format.h>
+
+/* For compressed formats. Converts the format info into a sample spec and a
+ * channel map that an ALSA device can use as its configuration parameters when
+ * playing back the compressed data. That is, the returned sample spec doesn't
+ * describe the audio content, but the device parameters. */
+int pa_format_info_to_sample_spec_fake(pa_format_info *f, pa_sample_spec *ss, pa_channel_map *map);
+
+#endif
-- 
1.8.3.1



More information about the pulseaudio-discuss mailing list