diff --git a/README b/README index 50df66c644116594b2f0fae82e51461beb8231d3..b75ef84aaaa1e268732facd4df4183ac2cf7bea0 100644 --- a/README +++ b/README @@ -23,10 +23,10 @@ To build from the git repository, the following steps are necessary % make -Once you have compiled the codec, there will be a test_hybrid executable in +Once you have compiled the codec, there will be a test_harmony executable in the src/ directory. This can be in the following way: -% ./test_hybrid 48000 1 960 80 input.sw output.sw +% ./test_harmony 48000 1 960 80 input.sw output.sw The arguments are: 1) The sampling rate (only 48000 supported for now) diff --git a/celt b/celt index 8abc6bee40f4df4c346f997f60d07d027bf9d27d..8226ac083ea19f57b69e863251fe487228bc2925 160000 --- a/celt +++ b/celt @@ -1 +1 @@ -Subproject commit 8abc6bee40f4df4c346f997f60d07d027bf9d27d +Subproject commit 8226ac083ea19f57b69e863251fe487228bc2925 diff --git a/configure.ac b/configure.ac index 5035664986128a4606ff7ee3cf98ef68e0221c80..dd644889f25d508c690ecac0454413e6e2afb7cb 100644 --- a/configure.ac +++ b/configure.ac @@ -2,8 +2,8 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.59]) -AC_INIT(src/hybrid.h) -AM_INIT_AUTOMAKE(ietfcodec,20100921) +AC_INIT(src/harmony.h) +AM_INIT_AUTOMAKE(harmony,20100921) # Checks for programs. AC_PROG_CC diff --git a/src/Makefile.am b/src/Makefile.am index 130fc361db29c2b5f5764184ce5c8969a4e9524f..f3f024004562c79630db2679e7adcd500bbc50aa 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -2,12 +2,12 @@ INCLUDES = -I$(top_srcdir)/celt/libcelt/ -I$(top_srcdir)/silk/interface lib_LTLIBRARIES = libietfcodec.la -libietfcodec_la_SOURCES = hybrid_decoder.c hybrid_encoder.c +libietfcodec_la_SOURCES = harmony_decoder.c harmony_encoder.c -noinst_HEADERS = hybrid_decoder.h hybrid_encoder.h +noinst_HEADERS = harmony_decoder.h harmony_encoder.h -pkginclude_HEADERS = hybrid.h +pkginclude_HEADERS = harmony.h -noinst_PROGRAMS = test_hybrid -test_hybrid_SOURCES = test_hybrid.c $(top_srcdir)/silk/test/SKP_debug.c -test_hybrid_LDADD = libietfcodec.la $(top_builddir)/celt/libcelt/libcelt0.la $(top_builddir)/silk/libSKP_SILK_SDK.la +noinst_PROGRAMS = test_harmony +test_harmony_SOURCES = test_harmony.c $(top_srcdir)/silk/test/SKP_debug.c +test_harmony_LDADD = libietfcodec.la $(top_builddir)/celt/libcelt/libcelt0.la $(top_builddir)/silk/libSKP_SILK_SDK.la diff --git a/src/framepack.c b/src/framepack.c index 9943435554777adf41f834a6a58f9b47d3a2bd71..c7a84c0e435aa3628ef8ac587ac2e55c5959fd3b 100644 --- a/src/framepack.c +++ b/src/framepack.c @@ -100,7 +100,7 @@ int count_frames(unsigned char *packet, int len) } #define MAX_FRAMES 256 -int hybrid_merge_packets(unsigned char **packets, int *plen, int nb_packets, +int harmony_merge_packets(unsigned char **packets, int *plen, int nb_packets, unsigned *output, int maxlen) { int i; diff --git a/src/hybrid.h b/src/harmony.h similarity index 64% rename from src/hybrid.h rename to src/harmony.h index 541fca168a54d08b57d7ff7d2f9c4915d6ec20ba..ed8d1f34ff5878090d66ad8ade872c2f62a3f6e2 100644 --- a/src/hybrid.h +++ b/src/harmony.h @@ -29,8 +29,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef HYBRID_H -#define HYBRID_H +#ifndef HARMONY_H +#define HARMONY_H #ifdef __cplusplus extern "C" { @@ -59,44 +59,44 @@ extern "C" { -#define HYBRID_SET_MODE_REQUEST 0 -#define HYBRID_SET_MODE(x) HYBRID_SET_MODE_REQUEST, __check_int(x) -#define HYBRID_GET_MODE_REQUEST 1 -#define HYBRID_GET_MODE(x) HYBRID_GET_MODE_REQUEST, __check_int_ptr(x) +#define HARMONY_SET_MODE_REQUEST 0 +#define HARMONY_SET_MODE(x) HARMONY_SET_MODE_REQUEST, __check_int(x) +#define HARMONY_GET_MODE_REQUEST 1 +#define HARMONY_GET_MODE(x) HARMONY_GET_MODE_REQUEST, __check_int_ptr(x) -#define HYBRID_SET_BANDWIDTH_REQUEST 2 -#define HYBRID_SET_BANDWIDTH(x) HYBRID_SET_BANDWIDTH_REQUEST, __check_int(x) -#define HYBRID_GET_BANDWIDTH_REQUEST 3 -#define HYBRID_GET_BANDWIDTH(x) HYBRID_GET_BANDWIDTH_REQUEST, __check_int_ptr(x) +#define HARMONY_SET_BANDWIDTH_REQUEST 2 +#define HARMONY_SET_BANDWIDTH(x) HARMONY_SET_BANDWIDTH_REQUEST, __check_int(x) +#define HARMONY_GET_BANDWIDTH_REQUEST 3 +#define HARMONY_GET_BANDWIDTH(x) HARMONY_GET_BANDWIDTH_REQUEST, __check_int_ptr(x) -#define HYBRID_SET_VBR_RATE_REQUEST 4 -#define HYBRID_SET_VBR_RATE(x) HYBRID_SET_VBR_RATE_REQUEST, __check_int(x) -#define HYBRID_GET_VBR_RATE_REQUEST 5 -#define HYBRID_GET_VBR_RATE(x) HYBRID_GET_VBR_RATE_REQUEST, __check_int_ptr(x) +#define HARMONY_SET_VBR_RATE_REQUEST 4 +#define HARMONY_SET_VBR_RATE(x) HARMONY_SET_VBR_RATE_REQUEST, __check_int(x) +#define HARMONY_GET_VBR_RATE_REQUEST 5 +#define HARMONY_GET_VBR_RATE(x) HARMONY_GET_VBR_RATE_REQUEST, __check_int_ptr(x) -typedef struct HybridEncoder HybridEncoder; -typedef struct HybridDecoder HybridDecoder; +typedef struct HarmonyEncoder HarmonyEncoder; +typedef struct HarmonyDecoder HarmonyDecoder; -HybridEncoder *hybrid_encoder_create(int Fs); +HarmonyEncoder *harmony_encoder_create(int Fs); -int hybrid_encode(HybridEncoder *st, const short *pcm, int frame_size, +int harmony_encode(HarmonyEncoder *st, const short *pcm, int frame_size, unsigned char *data, int bytes_per_packet); -void hybrid_encoder_destroy(HybridEncoder *st); +void harmony_encoder_destroy(HarmonyEncoder *st); -void hybrid_encoder_ctl(HybridEncoder *st, int request, ...); +void harmony_encoder_ctl(HarmonyEncoder *st, int request, ...); -HybridDecoder *hybrid_decoder_create(int Fs); +HarmonyDecoder *harmony_decoder_create(int Fs); -int hybrid_decode(HybridDecoder *st, const unsigned char *data, int len, +int harmony_decode(HarmonyDecoder *st, const unsigned char *data, int len, short *pcm, int frame_size); -void hybrid_decoder_ctl(HybridDecoder *st, int request, ...); +void harmony_decoder_ctl(HarmonyDecoder *st, int request, ...); -void hybrid_decoder_destroy(HybridDecoder *st); +void harmony_decoder_destroy(HarmonyDecoder *st); #ifdef __cplusplus } #endif -#endif /* HYBRID_H */ +#endif /* HARMONY_H */ diff --git a/src/hybrid_decoder.c b/src/harmony_decoder.c similarity index 88% rename from src/hybrid_decoder.c rename to src/harmony_decoder.c index e09570177c06fdfd49a5220ca66abe7c3c2be9ba..7177d60e87af072a20d8b79ea5e19900108d9861 100644 --- a/src/hybrid_decoder.c +++ b/src/harmony_decoder.c @@ -36,18 +36,18 @@ #include <stdlib.h> #include <stdio.h> #include <stdarg.h> -#include "hybrid_decoder.h" +#include "harmony_decoder.h" #include "entdec.h" #include "modes.h" #include "SKP_Silk_SDK_API.h" -HybridDecoder *hybrid_decoder_create(int Fs) +HarmonyDecoder *harmony_decoder_create(int Fs) { char *raw_state; int ret, silkDecSizeBytes, celtDecSizeBytes; CELTMode *celtMode; - HybridDecoder *st; + HarmonyDecoder *st; /* We should not have to create a CELT mode for each encoder state */ celtMode = celt_mode_create(Fs, Fs/50, NULL); @@ -58,10 +58,10 @@ HybridDecoder *hybrid_decoder_create(int Fs) /* Handle error */ } celtDecSizeBytes = celt_decoder_get_size(celtMode, 1); - raw_state = calloc(sizeof(HybridDecoder)+silkDecSizeBytes+celtDecSizeBytes, 1); - st = (HybridDecoder*)raw_state; - st->silk_dec = (void*)(raw_state+sizeof(HybridDecoder)); - st->celt_dec = (CELTDecoder*)(raw_state+sizeof(HybridDecoder)+silkDecSizeBytes); + raw_state = calloc(sizeof(HarmonyDecoder)+silkDecSizeBytes+celtDecSizeBytes, 1); + st = (HarmonyDecoder*)raw_state; + st->silk_dec = (void*)(raw_state+sizeof(HarmonyDecoder)); + st->celt_dec = (CELTDecoder*)(raw_state+sizeof(HarmonyDecoder)+silkDecSizeBytes); st->Fs = Fs; st->celt_mode = celtMode; @@ -78,7 +78,7 @@ HybridDecoder *hybrid_decoder_create(int Fs) return st; } -int hybrid_decode(HybridDecoder *st, const unsigned char *data, +int harmony_decode(HarmonyDecoder *st, const unsigned char *data, int len, short *pcm, int frame_size) { int i, silk_ret=0, celt_ret=0; @@ -164,7 +164,7 @@ int hybrid_decode(HybridDecoder *st, const unsigned char *data, } -void hybrid_decoder_ctl(HybridDecoder *st, int request, ...) +void harmony_decoder_ctl(HarmonyDecoder *st, int request, ...) { va_list ap; @@ -172,39 +172,39 @@ void hybrid_decoder_ctl(HybridDecoder *st, int request, ...) switch (request) { - case HYBRID_SET_MODE_REQUEST: + case HARMONY_SET_MODE_REQUEST: { int value = va_arg(ap, int); st->mode = value; } break; - case HYBRID_GET_MODE_REQUEST: + case HARMONY_GET_MODE_REQUEST: { int *value = va_arg(ap, int*); *value = st->mode; } break; - case HYBRID_SET_BANDWIDTH_REQUEST: + case HARMONY_SET_BANDWIDTH_REQUEST: { int value = va_arg(ap, int); st->bandwidth = value; } break; - case HYBRID_GET_BANDWIDTH_REQUEST: + case HARMONY_GET_BANDWIDTH_REQUEST: { int *value = va_arg(ap, int*); *value = st->bandwidth; } break; default: - fprintf(stderr, "unknown hybrid_decoder_ctl() request: %d", request); + fprintf(stderr, "unknown harmony_decoder_ctl() request: %d", request); break; } va_end(ap); } -void hybrid_decoder_destroy(HybridDecoder *st) +void harmony_decoder_destroy(HarmonyDecoder *st) { celt_mode_destroy(st->celt_mode); diff --git a/src/hybrid_decoder.h b/src/harmony_decoder.h similarity index 93% rename from src/hybrid_decoder.h rename to src/harmony_decoder.h index b5a54fb58ee068ed9638635e31ba6736398a64b1..18f5c9ecd67869a80594b7f2d944a1f5e484f6ef 100644 --- a/src/hybrid_decoder.h +++ b/src/harmony_decoder.h @@ -29,13 +29,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef HYBRID_DECODER_H -#define HYBRID_DECODER_H +#ifndef HARMONY_DECODER_H +#define HARMONY_DECODER_H #include "celt.h" -#include "hybrid.h" +#include "harmony.h" -struct HybridDecoder { +struct HarmonyDecoder { CELTMode *celt_mode; CELTDecoder *celt_dec; void *silk_dec; @@ -47,5 +47,5 @@ struct HybridDecoder { }; -#endif /* HYBRID_DECODER_H */ +#endif /* HARMONY_DECODER_H */ diff --git a/src/hybrid_encoder.c b/src/harmony_encoder.c similarity index 88% rename from src/hybrid_encoder.c rename to src/harmony_encoder.c index d931f0791749d18780fd6369198c004c0c271809..569eb7a359d25c6691645c2e6354407eb65f200a 100644 --- a/src/hybrid_encoder.c +++ b/src/harmony_encoder.c @@ -36,16 +36,16 @@ #include <stdlib.h> #include <stdio.h> #include <stdarg.h> -#include "hybrid_encoder.h" +#include "harmony_encoder.h" #include "entenc.h" #include "modes.h" #include "SKP_Silk_SDK_API.h" -HybridEncoder *hybrid_encoder_create(int Fs) +HarmonyEncoder *harmony_encoder_create(int Fs) { char *raw_state; CELTMode *celtMode; - HybridEncoder *st; + HarmonyEncoder *st; int ret, silkEncSizeBytes, celtEncSizeBytes; SKP_SILK_SDK_EncControlStruct encControl; @@ -58,10 +58,10 @@ HybridEncoder *hybrid_encoder_create(int Fs) /* Handle error */ } celtEncSizeBytes = celt_encoder_get_size(celtMode, 1); - raw_state = calloc(sizeof(HybridEncoder)+silkEncSizeBytes+celtEncSizeBytes, 1); - st = (HybridEncoder*)raw_state; - st->silk_enc = (void*)(raw_state+sizeof(HybridEncoder)); - st->celt_enc = (CELTEncoder*)(raw_state+sizeof(HybridEncoder)+silkEncSizeBytes); + raw_state = calloc(sizeof(HarmonyEncoder)+silkEncSizeBytes+celtEncSizeBytes, 1); + st = (HarmonyEncoder*)raw_state; + st->silk_enc = (void*)(raw_state+sizeof(HarmonyEncoder)); + st->celt_enc = (CELTEncoder*)(raw_state+sizeof(HarmonyEncoder)+silkEncSizeBytes); st->Fs = Fs; st->celt_mode = celtMode; @@ -87,7 +87,7 @@ HybridEncoder *hybrid_encoder_create(int Fs) return st; } -int hybrid_encode(HybridEncoder *st, const short *pcm, int frame_size, +int harmony_encode(HarmonyEncoder *st, const short *pcm, int frame_size, unsigned char *data, int bytes_per_packet) { int i; @@ -199,7 +199,7 @@ int hybrid_encode(HybridEncoder *st, const short *pcm, int frame_size, data[0] = 0x80; data[0] |= tmp << 5; data[0] |= period<<3; - } else /* Hybrid */ + } else /* Harmony */ { data[0] = 0x60; data[0] |= (st->bandwidth-BANDWIDTH_SUPERWIDEBAND)<<4; @@ -210,7 +210,7 @@ int hybrid_encode(HybridEncoder *st, const short *pcm, int frame_size, return ret+1; } -void hybrid_encoder_ctl(HybridEncoder *st, int request, ...) +void harmony_encoder_ctl(HarmonyEncoder *st, int request, ...) { va_list ap; @@ -218,51 +218,51 @@ void hybrid_encoder_ctl(HybridEncoder *st, int request, ...) switch (request) { - case HYBRID_SET_MODE_REQUEST: + case HARMONY_SET_MODE_REQUEST: { int value = va_arg(ap, int); st->mode = value; } break; - case HYBRID_GET_MODE_REQUEST: + case HARMONY_GET_MODE_REQUEST: { int *value = va_arg(ap, int*); *value = st->mode; } break; - case HYBRID_SET_BANDWIDTH_REQUEST: + case HARMONY_SET_BANDWIDTH_REQUEST: { int value = va_arg(ap, int); st->bandwidth = value; } break; - case HYBRID_GET_BANDWIDTH_REQUEST: + case HARMONY_GET_BANDWIDTH_REQUEST: { int *value = va_arg(ap, int*); *value = st->bandwidth; } break; - case HYBRID_SET_VBR_RATE_REQUEST: + case HARMONY_SET_VBR_RATE_REQUEST: { int value = va_arg(ap, int); st->vbr_rate = value; } break; - case HYBRID_GET_VBR_RATE_REQUEST: + case HARMONY_GET_VBR_RATE_REQUEST: { int *value = va_arg(ap, int*); *value = st->vbr_rate; } break; default: - fprintf(stderr, "unknown hybrid_encoder_ctl() request: %d", request); + fprintf(stderr, "unknown harmony_encoder_ctl() request: %d", request); break; } va_end(ap); } -void hybrid_encoder_destroy(HybridEncoder *st) +void harmony_encoder_destroy(HarmonyEncoder *st) { celt_mode_destroy(st->celt_mode); free(st); diff --git a/src/hybrid_encoder.h b/src/harmony_encoder.h similarity index 93% rename from src/hybrid_encoder.h rename to src/harmony_encoder.h index adb5f1df28c9b6aa256a17d79da51f30ac20893d..045d273347a25902b568cd031f50873a8717f436 100644 --- a/src/hybrid_encoder.h +++ b/src/harmony_encoder.h @@ -29,17 +29,17 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef HYBRID_ENCODER_H -#define HYBRID_ENCODER_H +#ifndef HARMONY_ENCODER_H +#define HARMONY_ENCODER_H #include "celt.h" -#include "hybrid.h" +#include "harmony.h" #include "SKP_Silk_SDK_API.h" /* FIXME: This is only valid for 48 kHz */ #define ENCODER_DELAY_COMPENSATION 130 -struct HybridEncoder { +struct HarmonyEncoder { CELTMode *celt_mode; CELTEncoder *celt_enc; void *silk_enc; @@ -54,5 +54,5 @@ struct HybridEncoder { }; -#endif /* HYBRID_ENCODER_H */ +#endif /* HARMONY_ENCODER_H */ diff --git a/src/test_hybrid.c b/src/test_harmony.c similarity index 85% rename from src/test_hybrid.c rename to src/test_harmony.c index 9a547a88f6f6a43a2ae6cc9ce194ce8e6f5d58bb..6c873ce764ab458774e75ec878845304375efc37 100644 --- a/src/test_hybrid.c +++ b/src/test_harmony.c @@ -38,7 +38,7 @@ #include <stdlib.h> #include <math.h> #include <string.h> -#include "hybrid.h" +#include "harmony.h" #define MAX_PACKET 1024 @@ -48,8 +48,8 @@ int main(int argc, char *argv[]) int err; char *inFile, *outFile; FILE *fin, *fout; - HybridEncoder *enc; - HybridDecoder *dec; + HarmonyEncoder *enc; + HarmonyDecoder *dec; int len; int frame_size, channels; int bytes_per_packet; @@ -66,7 +66,7 @@ int main(int argc, char *argv[]) double bits=0; if (argc != 9 && argc != 8 && argc != 7) { - fprintf (stderr, "Usage: test_hybrid <rate (kHz)> <channels> <frame size> " + fprintf (stderr, "Usage: test_harmony <rate (kHz)> <channels> <frame size> " " <bytes per packet> [<VBR rate (kb/s)>] [<packet loss rate>] " "<input> <output>\n"); return 1; @@ -105,15 +105,15 @@ int main(int argc, char *argv[]) return 1; } - enc = hybrid_encoder_create(rate); - dec = hybrid_decoder_create(rate); + enc = harmony_encoder_create(rate); + dec = harmony_decoder_create(rate); mode = MODE_HYBRID; - hybrid_encoder_ctl(enc, HYBRID_SET_BANDWIDTH(BANDWIDTH_FULLBAND)); - hybrid_encoder_ctl(enc, HYBRID_SET_MODE(mode)); + harmony_encoder_ctl(enc, HARMONY_SET_BANDWIDTH(BANDWIDTH_FULLBAND)); + harmony_encoder_ctl(enc, HARMONY_SET_MODE(mode)); if (vbr) - hybrid_encoder_ctl(enc, HYBRID_SET_VBR_RATE(vbr)); + harmony_encoder_ctl(enc, HARMONY_SET_VBR_RATE(vbr)); skip = 5*rate/1000 + 10; @@ -130,14 +130,14 @@ int main(int argc, char *argv[]) for (i=err;i<frame_size*channels;i++) in[i] = 0; } - len = hybrid_encode(enc, in, frame_size, data, bytes_per_packet); + len = harmony_encode(enc, in, frame_size, data, bytes_per_packet); if (len <= 0) { - fprintf (stderr, "hybrid_encode() returned %d\n", len); + fprintf (stderr, "harmony_encode() returned %d\n", len); return 1; } bits += len*8; - hybrid_decode(dec, rand()%100<loss ? NULL : data, len, out, frame_size); + harmony_decode(dec, rand()%100<loss ? NULL : data, len, out, frame_size); count++; tot_written += (frame_size-skip)*channels; write_samples = frame_size; @@ -150,8 +150,8 @@ int main(int argc, char *argv[]) skip = 0; } fprintf (stderr, "average bit-rate: %f kb/s\n", bits*rate/(frame_size*(double)count)); - hybrid_encoder_destroy(enc); - hybrid_decoder_destroy(dec); + harmony_encoder_destroy(enc); + harmony_decoder_destroy(dec); fclose(fin); fclose(fout); free(in);