]> code.ossystems Code Review - meta-freescale.git/commitdiff
fsl-alsa-plugins: update output buffer size for asrc_pair
authorZidan Wang <b50113@freescale.com>
Mon, 5 Jan 2015 08:13:14 +0000 (16:13 +0800)
committerOtavio Salvador <otavio@ossystems.com.br>
Mon, 5 Jan 2015 10:37:30 +0000 (08:37 -0200)
When input size larger than DMA_MAX_BYTES the output size should be updated.
Otherwise the asrc have will not have enough data, then it will be timeout.

Signed-off-by: Zidan Wang <b50113@freescale.com>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
meta-fsl-arm/recipes-multimedia/alsa/fsl-alsa-plugins/0001-asrc_pair-update-output-buffer-size.patch [new file with mode: 0644]
meta-fsl-arm/recipes-multimedia/alsa/fsl-alsa-plugins_1.0.25.bb

diff --git a/meta-fsl-arm/recipes-multimedia/alsa/fsl-alsa-plugins/0001-asrc_pair-update-output-buffer-size.patch b/meta-fsl-arm/recipes-multimedia/alsa/fsl-alsa-plugins/0001-asrc_pair-update-output-buffer-size.patch
new file mode 100644 (file)
index 0000000..d76c74d
--- /dev/null
@@ -0,0 +1,47 @@
+From 9acab46fe307ec71d4a4dbe447e356f90b6a4a09 Mon Sep 17 00:00:00 2001
+From: Shengjiu Wang <shengjiu.wang@freescale.com>
+Date: Fri, 12 Dec 2014 14:58:06 +0800
+Subject: [PATCH] [asrc_pair] update output buffer size
+
+When input size larger than DMA_MAX_BYTES the output size should be updated.
+Otherwise the asrc have will not have enough data, then it will be timeout.
+
+Upstream Status: Inappropriate [platform specific]
+
+Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
+---
+ asrc/asrc_pair.c | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/asrc/asrc_pair.c b/asrc/asrc_pair.c
+index e3df027..e74e8b1 100644
+--- a/asrc/asrc_pair.c
++++ b/asrc/asrc_pair.c
+@@ -139,7 +139,7 @@ asrc_pair *asrc_pair_create(unsigned int channels, ssize_t in_period_frames,
+     config.dma_buffer_size = dma_buffer_size;
+     config.input_sample_rate = in_rate;
+     config.output_sample_rate = out_rate;
+-    config.buffer_num = 1;
++    config.buffer_num = buf_num;
+     config.input_word_width = ASRC_WIDTH_16_BIT;
+     config.output_word_width = ASRC_WIDTH_16_BIT;
+     config.inclk = INCLK_NONE;
+@@ -303,8 +303,13 @@ void asrc_pair_convert_s16(asrc_pair *pair, const int16_t *src, unsigned int src
+
+     while (src_left > 0)
+     {
+-        in_len = src_left > pair->buf_size ? pair->buf_size : src_left;
+-        out_len = dst_left;
++      if (src_left > pair->buf_size) {
++              in_len = pair->buf_size;
++              out_len = dst_left * in_len/src_left;
++      } else {
++              in_len = src_left;
++              out_len = dst_left;
++      }
+
+         buf_info.input_buffer_vaddr = s;
+         buf_info.input_buffer_length = in_len;
+--
+1.9.1
+
index 331ccdbc8aa6b4a82284d33ac410c7f971f6e64d..556884dea5b35adddd57778817f554d378938d5c 100644 (file)
@@ -14,6 +14,8 @@ SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.tar.gz"
 SRC_URI[md5sum] = "b1ca7a250a8cd5da07062081b30b4118"
 SRC_URI[sha256sum] = "902df92255d755e8eb08b3c3db0c7b9d70d26d9659b219373bee425ffdc34245"
 
+SRC_URI_append_mx6 = " file://0001-asrc_pair-update-output-buffer-size.patch"
+
 INCLUDE_DIR = "-I${STAGING_KERNEL_DIR}/include/uapi -I${STAGING_KERNEL_DIR}/include"
 
 EXTRA_OECONF = "CFLAGS="${INCLUDE_DIR}""
@@ -25,3 +27,4 @@ FILES_${PN}-dbg += "${libdir}/alsa-lib/.debug"
 FILES_${PN}-dev += "${libdir}/alsa-lib/*.la"
 
 COMPATIBLE_MACHINE = "(mx6)"
+PACKAGE_ARCH_mx6 = "${MACHINE_SOCARCH}"