added c2demo program
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Mon, 15 Nov 2010 00:58:23 +0000 (00:58 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Mon, 15 Nov 2010 00:58:23 +0000 (00:58 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@224 01035d8c-6547-0410-b346-abe4f91aad63

codec2/src/Makefile.am
codec2/src/Makefile.in
codec2/src/c2demo.c [new file with mode: 0644]

index 8451899dac4a01ade6feba0d322571e5dff1cfaf..6a9378916febfe14bdb54b35c6cbf92e46663128 100644 (file)
@@ -61,16 +61,20 @@ nlp.h  \
 postfilter.h \
 sine.h
 
-bin_PROGRAMS = c2dec c2enc c2sim
+bin_PROGRAMS = c2demo c2enc c2dec c2sim
 
-c2dec_SOURCES = c2dec.c
-c2dec_LDADD = $(lib_LTLIBRARIES) 
-c2dec_LDFLAGS = $(LIBS)
+c2demo_SOURCES = c2demo.c
+c2demo_LDADD = $(lib_LTLIBRARIES) 
+c2demo_LDFLAGS = $(LIBS)
 
 c2enc_SOURCES = c2enc.c
 c2enc_LDADD = $(lib_LTLIBRARIES) 
 c2enc_LDFLAGS = $(LIBS)
 
+c2dec_SOURCES = c2dec.c
+c2dec_LDADD = $(lib_LTLIBRARIES) 
+c2dec_LDFLAGS = $(LIBS)
+
 c2sim_SOURCES = c2sim.c
 c2sim_LDADD = $(lib_LTLIBRARIES) 
 c2sim_LDFLAGS = $(LIBS)
index 13b95b558834ae6ac9c6d992a5daaf9ce1967192..b1d5107179dd149d99743915f3220f45b00a587c 100644 (file)
@@ -39,7 +39,8 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 noinst_PROGRAMS = generate_codebook$(EXEEXT)
-bin_PROGRAMS = c2dec$(EXEEXT) c2enc$(EXEEXT) c2sim$(EXEEXT)
+bin_PROGRAMS = c2demo$(EXEEXT) c2enc$(EXEEXT) c2dec$(EXEEXT) \
+       c2sim$(EXEEXT)
 subdir = src
 DIST_COMMON = $(library_include_HEADERS) $(srcdir)/Makefile.am \
        $(srcdir)/Makefile.in
@@ -74,6 +75,9 @@ am_c2dec_OBJECTS = c2dec.$(OBJEXT)
 c2dec_OBJECTS = $(am_c2dec_OBJECTS)
 am__DEPENDENCIES_1 = libcodec2.la
 c2dec_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_c2demo_OBJECTS = c2demo.$(OBJEXT)
+c2demo_OBJECTS = $(am_c2demo_OBJECTS)
+c2demo_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_c2enc_OBJECTS = c2enc.$(OBJEXT)
 c2enc_OBJECTS = $(am_c2enc_OBJECTS)
 c2enc_DEPENDENCIES = $(am__DEPENDENCIES_1)
@@ -94,10 +98,11 @@ LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
 CCLD = $(CC)
 LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(libcodec2_la_SOURCES) $(c2dec_SOURCES) $(c2enc_SOURCES) \
-       $(c2sim_SOURCES) generate_codebook.c
-DIST_SOURCES = $(libcodec2_la_SOURCES) $(c2dec_SOURCES) \
+SOURCES = $(libcodec2_la_SOURCES) $(c2dec_SOURCES) $(c2demo_SOURCES) \
        $(c2enc_SOURCES) $(c2sim_SOURCES) generate_codebook.c
+DIST_SOURCES = $(libcodec2_la_SOURCES) $(c2dec_SOURCES) \
+       $(c2demo_SOURCES) $(c2enc_SOURCES) $(c2sim_SOURCES) \
+       generate_codebook.c
 library_includeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(library_include_HEADERS)
 ETAGS = etags
@@ -256,12 +261,15 @@ nlp.h  \
 postfilter.h \
 sine.h
 
-c2dec_SOURCES = c2dec.c
-c2dec_LDADD = $(lib_LTLIBRARIES) 
-c2dec_LDFLAGS = $(LIBS)
+c2demo_SOURCES = c2demo.c
+c2demo_LDADD = $(lib_LTLIBRARIES) 
+c2demo_LDFLAGS = $(LIBS)
 c2enc_SOURCES = c2enc.c
 c2enc_LDADD = $(lib_LTLIBRARIES) 
 c2enc_LDFLAGS = $(LIBS)
+c2dec_SOURCES = c2dec.c
+c2dec_LDADD = $(lib_LTLIBRARIES) 
+c2dec_LDFLAGS = $(LIBS)
 c2sim_SOURCES = c2sim.c
 c2sim_LDADD = $(lib_LTLIBRARIES) 
 c2sim_LDFLAGS = $(LIBS)
@@ -365,6 +373,9 @@ clean-noinstPROGRAMS:
 c2dec$(EXEEXT): $(c2dec_OBJECTS) $(c2dec_DEPENDENCIES) 
        @rm -f c2dec$(EXEEXT)
        $(LINK) $(c2dec_LDFLAGS) $(c2dec_OBJECTS) $(c2dec_LDADD) $(LIBS)
+c2demo$(EXEEXT): $(c2demo_OBJECTS) $(c2demo_DEPENDENCIES) 
+       @rm -f c2demo$(EXEEXT)
+       $(LINK) $(c2demo_LDFLAGS) $(c2demo_OBJECTS) $(c2demo_LDADD) $(LIBS)
 c2enc$(EXEEXT): $(c2enc_OBJECTS) $(c2enc_DEPENDENCIES) 
        @rm -f c2enc$(EXEEXT)
        $(LINK) $(c2enc_LDFLAGS) $(c2enc_OBJECTS) $(c2enc_LDADD) $(LIBS)
@@ -382,6 +393,7 @@ distclean-compile:
        -rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2dec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2demo.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2enc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c2sim.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generate_codebook.Po@am__quote@
diff --git a/codec2/src/c2demo.c b/codec2/src/c2demo.c
new file mode 100644 (file)
index 0000000..efa8d64
--- /dev/null
@@ -0,0 +1,86 @@
+/*---------------------------------------------------------------------------*\
+
+  FILE........: c2demo.c
+  AUTHOR......: David Rowe
+  DATE CREATED: 15/11/2010
+
+  Encodes and decodes a file of raw speech samples using Codec 2.
+  Demonstrates use of Codec 2 function API.
+
+  Note to convert a wave file to raw and vice-versa:
+
+    $ sox file.wav -r 8000 -s -2 file.raw
+    $ sox -r 8000 -s -2 file.raw file.wav
+
+\*---------------------------------------------------------------------------*/
+
+/*
+  Copyright (C) 2010 David Rowe
+
+  All rights reserved.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU Lesser General Public License version 2.1, as
+  published by the Free Software Foundation.  This program 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 this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "codec2.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+#define BITS_SIZE      ((CODEC2_BITS_PER_FRAME + 7) / 8)
+
+int main(int argc, char *argv[])
+{
+    void *codec2;
+    FILE *fin;
+    FILE *fout;
+    short buf[CODEC2_SAMPLES_PER_FRAME];
+    unsigned char  bits[BITS_SIZE];
+
+    if (argc != 3) {
+       printf("usage: %s InputRawSpeechFile OutputRawSpeechFile\n", argv[0]);
+       exit(1);
+    }
+    if ( (fin = fopen(argv[1],"rb")) == NULL ) {
+       fprintf(stderr, "Error opening input speech file: %s: %s.\n",
+         argv[1], strerror(errno));
+       exit(1);
+    }
+
+    if ( (fout = fopen(argv[2],"wb")) == NULL ) {
+       fprintf(stderr, "Error opening output speech file: %s: %s.\n",
+         argv[2], strerror(errno));
+       exit(1);
+    }
+
+    /* Note only one set of Codec 2 states is required for an encoder
+       and decoder pair. */
+
+    codec2 = codec2_create();
+
+    while(fread(buf, sizeof(short), CODEC2_SAMPLES_PER_FRAME, fin) == 
+         CODEC2_SAMPLES_PER_FRAME) {
+       codec2_encode(codec2, bits, buf);
+       codec2_decode(codec2, buf, bits);
+       fwrite(buf, sizeof(short), CODEC2_SAMPLES_PER_FRAME, fout);
+    }
+
+    codec2_destroy(codec2);
+
+    fclose(fin);
+    fclose(fout);
+
+    return 0;
+}