[alsa-devel] [PATCH: TinyCompress 1/2] add utils file with rate conversion helper
Signed-off-by: Vinod Koul vinod.koul@intel.com --- Android.mk | 2 +- include/tinycompress/tinycompress.h | 2 + makefile.linux | 2 +- utils.c | 96 +++++++++++++++++++++++++++++++++++ 4 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 utils.c
diff --git a/Android.mk b/Android.mk index b9c52e2..104dfef 100644 --- a/Android.mk +++ b/Android.mk @@ -2,7 +2,7 @@ LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS) LOCAL_C_INCLUDES:= $(LOCAL_PATH)/include -LOCAL_SRC_FILES:= compress.c +LOCAL_SRC_FILES:= compress.c utils.c LOCAL_MODULE := libtinycompress LOCAL_SHARED_LIBRARIES:= libcutils libutils LOCAL_MODULE_TAGS := optional diff --git a/include/tinycompress/tinycompress.h b/include/tinycompress/tinycompress.h index 9867afc..e947322 100644 --- a/include/tinycompress/tinycompress.h +++ b/include/tinycompress/tinycompress.h @@ -267,4 +267,6 @@ const char *compress_get_error(struct compress *compress); #define SNDRV_PCM_RATE_176400 (1<<11) /* 176400Hz */ #define SNDRV_PCM_RATE_192000 (1<<12) /* 192000Hz */
+/* utility functions */ +unsigned int compress_get_alsa_rate(unsigned int rate); #endif diff --git a/makefile.linux b/makefile.linux index 60d6c04..677878d 100644 --- a/makefile.linux +++ b/makefile.linux @@ -2,7 +2,7 @@ LIB = libtinycompress BIN = cplay VER = 0.1 LIBSRC = compress.c -SRC = cplay.c +SRC = cplay.c utils.c LIBOBJ = ${LIBSRC:.c=.o} OBJ = ${SRC:.c=.o}
diff --git a/utils.c b/utils.c new file mode 100644 index 0000000..fa37f23 --- /dev/null +++ b/utils.c @@ -0,0 +1,96 @@ +/* + * BSD LICENSE + * + * tinycompress utility functions + * Copyright (c) 2011-2013, Intel Corporation + * All rights reserved. + * + * Author: Vinod Koul vinod.koul@intel.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of Intel Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + * + * LGPL LICENSE + * + * tinycompress utility functions + * Copyright (c) 2011-2013, Intel Corporation + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU Lesser General Public License, + * version 2.1, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to + * the Free Software Foundation, Inc., + * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. + */ +#include <stdio.h> +#include <stdlib.h> +#include <stdbool.h> +#include <linux/types.h> +#include <sys/time.h> +#define __force +#define __bitwise +#define __user +#include "tinycompress/tinycompress.h" + + +unsigned int compress_get_alsa_rate(unsigned int rate) +{ + switch (rate) { + case 5512: + return SNDRV_PCM_RATE_5512; + case 8000: + return SNDRV_PCM_RATE_8000; + case 11025: + return SNDRV_PCM_RATE_11025; + case 16000: + return SNDRV_PCM_RATE_16000; + case 220500: + return SNDRV_PCM_RATE_22050; + case 32000: + return SNDRV_PCM_RATE_32000; + case 44100: + return SNDRV_PCM_RATE_44100; + case 48000: + return SNDRV_PCM_RATE_48000; + case 64000: + return SNDRV_PCM_RATE_64000; + case 88200: + return SNDRV_PCM_RATE_88200; + case 96000: + return SNDRV_PCM_RATE_96000; + case 176400: + return SNDRV_PCM_RATE_176400; + case 192000: + return SNDRV_PCM_RATE_192000; + default: + return 0; + } +}
Signed-off-by: Vinod Koul vinod.koul@intel.com --- cplay.c | 48 +++++------------------------------------------- 1 files changed, 5 insertions(+), 43 deletions(-)
diff --git a/cplay.c b/cplay.c index 673026e..10c5424 100644 --- a/cplay.c +++ b/cplay.c @@ -226,49 +226,11 @@ void play_samples(char *name, unsigned int card, unsigned int device, codec.id = SND_AUDIOCODEC_MP3; codec.ch_in = channels; codec.ch_out = channels; - switch (rate) { - case 5512: - codec.sample_rate = SNDRV_PCM_RATE_5512; - break; - case 8000: - codec.sample_rate = SNDRV_PCM_RATE_8000; - break; - case 11025: - codec.sample_rate = SNDRV_PCM_RATE_11025; - break; - case 16000: - codec.sample_rate = SNDRV_PCM_RATE_16000; - break; - case 220500: - codec.sample_rate = SNDRV_PCM_RATE_22050; - break; - case 32000: - codec.sample_rate = SNDRV_PCM_RATE_32000; - break; - case 44100: - codec.sample_rate = SNDRV_PCM_RATE_44100; - break; - case 48000: - codec.sample_rate = SNDRV_PCM_RATE_48000; - break; - case 64000: - codec.sample_rate = SNDRV_PCM_RATE_64000; - break; - case 88200: - codec.sample_rate = SNDRV_PCM_RATE_88200; - break; - case 96000: - codec.sample_rate = SNDRV_PCM_RATE_96000; - break; - case 176400: - codec.sample_rate = SNDRV_PCM_RATE_176400; - break; - case 192000: - codec.sample_rate = SNDRV_PCM_RATE_192000; - break; - default: - fprintf(stderr, "unknown sample rate %d\n", rate); - goto FILE_EXIT; + codec.sample_rate = compress_get_alsa_rate(rate); + if (!codec.sample_rate) { + fprintf(stderr, "invalid sample rate %d\n", rate); + fclose(file); + exit(EXIT_FAILURE); } codec.bit_rate = bits; codec.rate_control = 0;
On Thu, May 23, 2013 at 01:42:46PM +0530, Vinod Koul wrote:
Signed-off-by: Vinod Koul vinod.koul@intel.com
Applied both
-- ~Vinod
Android.mk | 2 +- include/tinycompress/tinycompress.h | 2 + makefile.linux | 2 +- utils.c | 96 +++++++++++++++++++++++++++++++++++ 4 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 utils.c
diff --git a/Android.mk b/Android.mk index b9c52e2..104dfef 100644 --- a/Android.mk +++ b/Android.mk @@ -2,7 +2,7 @@ LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS) LOCAL_C_INCLUDES:= $(LOCAL_PATH)/include -LOCAL_SRC_FILES:= compress.c +LOCAL_SRC_FILES:= compress.c utils.c LOCAL_MODULE := libtinycompress LOCAL_SHARED_LIBRARIES:= libcutils libutils LOCAL_MODULE_TAGS := optional diff --git a/include/tinycompress/tinycompress.h b/include/tinycompress/tinycompress.h index 9867afc..e947322 100644 --- a/include/tinycompress/tinycompress.h +++ b/include/tinycompress/tinycompress.h @@ -267,4 +267,6 @@ const char *compress_get_error(struct compress *compress); #define SNDRV_PCM_RATE_176400 (1<<11) /* 176400Hz */ #define SNDRV_PCM_RATE_192000 (1<<12) /* 192000Hz */
+/* utility functions */ +unsigned int compress_get_alsa_rate(unsigned int rate); #endif diff --git a/makefile.linux b/makefile.linux index 60d6c04..677878d 100644 --- a/makefile.linux +++ b/makefile.linux @@ -2,7 +2,7 @@ LIB = libtinycompress BIN = cplay VER = 0.1 LIBSRC = compress.c -SRC = cplay.c +SRC = cplay.c utils.c LIBOBJ = ${LIBSRC:.c=.o} OBJ = ${SRC:.c=.o}
diff --git a/utils.c b/utils.c new file mode 100644 index 0000000..fa37f23 --- /dev/null +++ b/utils.c @@ -0,0 +1,96 @@ +/*
- BSD LICENSE
- tinycompress utility functions
- Copyright (c) 2011-2013, Intel Corporation
- All rights reserved.
- Author: Vinod Koul vinod.koul@intel.com
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- Neither the name of Intel Corporation nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- THE POSSIBILITY OF SUCH DAMAGE.
- LGPL LICENSE
- tinycompress utility functions
- Copyright (c) 2011-2013, Intel Corporation
- This program is free software; you can redistribute it and/or modify it
- under the terms and conditions of the GNU Lesser General Public License,
- version 2.1, as published by the Free Software Foundation.
- This program is distributed in the hope it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- License for more details.
- You should have received a copy of the GNU Lesser General Public License
- along with this program; if not, write to
- the Free Software Foundation, Inc.,
- 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
- */
+#include <stdio.h> +#include <stdlib.h> +#include <stdbool.h> +#include <linux/types.h> +#include <sys/time.h> +#define __force +#define __bitwise +#define __user +#include "tinycompress/tinycompress.h"
+unsigned int compress_get_alsa_rate(unsigned int rate) +{
- switch (rate) {
- case 5512:
return SNDRV_PCM_RATE_5512;
- case 8000:
return SNDRV_PCM_RATE_8000;
- case 11025:
return SNDRV_PCM_RATE_11025;
- case 16000:
return SNDRV_PCM_RATE_16000;
- case 220500:
return SNDRV_PCM_RATE_22050;
- case 32000:
return SNDRV_PCM_RATE_32000;
- case 44100:
return SNDRV_PCM_RATE_44100;
- case 48000:
return SNDRV_PCM_RATE_48000;
- case 64000:
return SNDRV_PCM_RATE_64000;
- case 88200:
return SNDRV_PCM_RATE_88200;
- case 96000:
return SNDRV_PCM_RATE_96000;
- case 176400:
return SNDRV_PCM_RATE_176400;
- case 192000:
return SNDRV_PCM_RATE_192000;
- default:
return 0;
- }
+}
1.7.0.4
participants (1)
-
Vinod Koul