Op 24 dec. 2013, om 15:37 heeft Fahad Arslan <[email protected]> het 
volgende geschreven:

> From: Fahad Arslan <[email protected]>
> 
> Pulseaudio uses Speex to do resampling. Default Pulseaudio resampler
> is speex-float-1. However, Speex recipe in poky configures speex in

s/poky/oe-core/

> 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.

s/flaot/float/g

> 
> Upstream-Status: Submitted [[email protected]]
> 
> Signed-off-by: Fahad Arslan <[email protected]>
> ---
> .../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
> @@ -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"
> -- 
> 1.7.9.5
> 
> _______________________________________________
> Openembedded-core mailing list
> [email protected]
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
> 

_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to