> What affect does it have on the overall size of speex If we enable floating point support, there is decrease in size of libs. libspeexdsp.so is ~480 KB in fixed point configuration libspeexdsp.so is ~220 KB in floating point configuration
Further details are shown below: Case-1 (current configuration) ====== EXTRA_OECONF = " --enable-fixed-point --with-ogg-libraries=${STAGING_LIBDIR} \ --disable-float-api --disable-vbr \ --with-ogg-includes=${STAGING_INCDIR} --disable-oggtest" build$ build$ ls -l src/.libs/speex* -rwxr-xr-x 1 farslan farslan 75112 Jan 7 14:09 src/.libs/speexdec -rwxr-xr-x 1 farslan farslan 76989 Jan 7 14:09 src/.libs/speexenc build$ file src/.libs/speex* src/.libs/speexdec: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped src/.libs/speexenc: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped build$ build$ build$ ls -l libspeex/.libs/libspeex*.so.1.5.0 -rwxr-xr-x 1 farslan farslan 484940 Jan 7 14:09 libspeex/.libs/libspeexdsp.so.1.5.0 -rwxr-xr-x 1 farslan farslan 370309 Jan 7 14:09 libspeex/.libs/libspeex.so.1.5.0 build$ build$ file libspeex/.libs/libspeex*.so.1.5.0 libspeex/.libs/libspeexdsp.so.1.5.0: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped libspeex/.libs/libspeex.so.1.5.0: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped build$ Case-2 (suggested configuration) ====== EXTRA_OECONF = " --with-ogg-libraries=${STAGING_LIBDIR} \ --enable-float-api --disable-vbr \ --with-ogg-includes=${STAGING_INCDIR} --disable-oggtest" build$ build$ ls -l src/.libs/speex* -rwxr-xr-x 1 farslan farslan 75112 Jan 7 14:40 src/.libs/speexdec -rwxr-xr-x 1 farslan farslan 76989 Jan 7 14:40 src/.libs/speexenc build$ file src/.libs/speex* src/.libs/speexdec: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped src/.libs/speexenc: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped build$ build$ build$ ls -l libspeex/.libs/libspeex*.so.1.5.0 -rwxr-xr-x 1 farslan farslan 222582 Jan 7 14:40 libspeex/.libs/libspeexdsp.so.1.5.0 -rwxr-xr-x 1 farslan farslan 280029 Jan 7 14:39 libspeex/.libs/libspeex.so.1.5.0 build$ build$ file libspeex/.libs/libspeex*.so.1.5.0 libspeex/.libs/libspeexdsp.so.1.5.0: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped libspeex/.libs/libspeex.so.1.5.0: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped build$ Thanks, Fahad ________________________________________ From: Saul Wold [s...@linux.intel.com] Sent: Thursday, January 02, 2014 11:47 PM To: Arslan, Fahad; openembedded-core@lists.openembedded.org Cc: Marcin Juszkiewicz Subject: Re: [OE-core] [PATCH] pulseaudio: rescale input being passed to float method of speex On 01/01/2014 08:01 AM, Arslan, Fahad wrote: > Pulseaudio upstream says that this patch breaks speex-float if > it isn't compiled with FIXED_POINT defined, which is valid concern. > So what is the best option now to avoid the no sound issue: > a. replace --enable-fixed-point and --disable-float-api with > --enable-float-api in Speex's recipe There is a commit message from 2008 by Marcin J. that seems to disable this, I am not sure why that choice was made at that time. What affect does it have on the overall size of speex > b. replace default resampler (speex-float-1) used by Pulseaudio to > speex-fixed-1 > > In my opinion option (a) above is better. Thoughts/suggestions? > > Thanks, > Fahad > > ________________________________________ > From: Saul Wold [s...@linux.intel.com] > Sent: Tuesday, December 24, 2013 9:54 PM > To: Arslan, Fahad; openembedded-core@lists.openembedded.org > Subject: Re: [OE-core] [PATCH] pulseaudio: rescale input being passed to > float method of speex > > On 12/24/2013 06:37 AM, Fahad Arslan wrote: >> From: Fahad Arslan <fahad_ars...@mentor.com> >> >> Pulseaudio uses Speex to do resampling. Default Pulseaudio resampler >> is speex-float-1. However, Speex recipe in poky configures speex in >> fixed point. This scenario creates a situation in which audio streams >> that need to be resampled are not playedback since input to speex is >> zeroed out when flaot input in range of +/-1 is converted to int. >> So we are rescaling the input before invoking speex flaot method. >> >> Upstream-Status: Submitted [pulseaudio-disc...@lists.freedesktop.org] >> >> Signed-off-by: Fahad Arslan <fahad_ars...@mentor.com> >> --- >> .../pulseaudio/rescale_input_to_speex_float.patch | 24 >> ++++++++++++++++++++ >> .../pulseaudio/pulseaudio_4.0.bb | 3 ++- >> 2 files changed, 26 insertions(+), 1 deletion(-) >> create mode 100644 >> meta/recipes-multimedia/pulseaudio/pulseaudio/rescale_input_to_speex_float.patch >> >> diff --git >> a/meta/recipes-multimedia/pulseaudio/pulseaudio/rescale_input_to_speex_float.patch >> >> b/meta/recipes-multimedia/pulseaudio/pulseaudio/rescale_input_to_speex_float.patch >> new file mode 100644 >> index 0000000..fe5e6a7 >> --- /dev/null >> +++ >> b/meta/recipes-multimedia/pulseaudio/pulseaudio/rescale_input_to_speex_float.patch > > Fahad, > > The patch itself is missing the Upstream-Status: and Signed-off-by: > Tags, I know you included them in the commit message above, but they > need to be in this patch file also. > > Thanks > Sau! > >> @@ -0,0 +1,24 @@ >> +diff -Naur a/src/pulsecore/resampler.c b/src/pulsecore/resampler.c >> +--- a/src/pulsecore/resampler.c 2013-12-24 18:25:08.164787401 +0500 >> ++++ b/src/pulsecore/resampler.c 2013-12-24 18:24:43.056787026 +0500 >> +@@ -1347,7 +1347,7 @@ >> + >> + static void speex_resample_float(pa_resampler *r, const pa_memchunk >> *input, unsigned in_n_frames, pa_memchunk *output, unsigned *out_n_frames) { >> + float *in, *out; >> +- uint32_t inf = in_n_frames, outf = *out_n_frames; >> ++ uint32_t inf = in_n_frames, outf = *out_n_frames, i; >> + >> + pa_assert(r); >> + pa_assert(input); >> +@@ -1357,6 +1357,11 @@ >> + in = pa_memblock_acquire_chunk(input); >> + out = pa_memblock_acquire_chunk(output); >> + >> ++ /* Speex float API scale range is +/-32768 instead of +/-1. >> ++ So rescale input before passing it to Speex. */ >> ++ for (i = 0; i < inf; i++) >> ++ in[i] = 32768.*in[i]; >> ++ >> + pa_assert_se(speex_resampler_process_interleaved_float(r->speex.state, >> in, &inf, out, &outf) == 0); >> + >> + pa_memblock_release(input->memblock); >> diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio_4.0.bb >> b/meta/recipes-multimedia/pulseaudio/pulseaudio_4.0.bb >> index b419c54..5afa20b 100644 >> --- a/meta/recipes-multimedia/pulseaudio/pulseaudio_4.0.bb >> +++ b/meta/recipes-multimedia/pulseaudio/pulseaudio_4.0.bb >> @@ -1,7 +1,8 @@ >> require pulseaudio.inc >> >> SRC_URI = >> "http://freedesktop.org/software/pulseaudio/releases/pulseaudio-${PV}.tar.xz >> \ >> - file://volatiles.04_pulse" >> + file://volatiles.04_pulse \ >> + file://rescale_input_to_speex_float.patch" >> >> SRC_URI[md5sum] = "591f211db2790a7e4d222f2dc6858db3" >> SRC_URI[sha256sum] = >> "35ceb36bb1822fe54f0b5e4863b4f486769fdfb8ff2111f01fd8778928f9cdae" >> > > _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core