[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