diff --git a/Makefile b/Makefile --- a/Makefile +++ b/Makefile @@ -3,6 +3,7 @@ # Paths SRC_ENC = lib_enc lib_com SRC_DEC = lib_dec lib_com +SRC_LIB = lib_dec lib_enc lib_com BUILD = build SRC_DIRS = $(sort -u $(SRC_ENC) $(SRC_DEC)) @@ -10,6 +11,7 @@ SRC_DIRS = $(sort -u $(SRC_ENC) $(SRC_DEC)) # Name of CLI binaries CLI_ENC = EVS_cod CLI_DEC = EVS_dec +LIB_SO = lib3gpp-evs.so # Default tool settings CC = gcc @@ -62,13 +64,17 @@ CFLAGS += $(foreach DIR,$(SRC_DIRS),-I$(DIR)) # Source file search paths VPATH = $(SRC_DIRS) +CFLAGS += -fPIC + ############################################################################### SRCS_ENC = $(foreach DIR,$(SRC_ENC),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) SRCS_DEC = $(foreach DIR,$(SRC_DEC),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) +SRCS_LIB = $(filter-out encoder.c decoder.c voip_client.c,$(foreach DIR,$(SRC_LIB),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c)))) OBJS_ENC = $(addprefix $(BUILD)/,$(SRCS_ENC:.c=.o)) OBJS_DEC = $(addprefix $(BUILD)/,$(SRCS_DEC:.c=.o)) +OBJS_LIB = $(addprefix $(BUILD)/,$(SRCS_LIB:.c=.o)) DEPS = $(addprefix $(BUILD)/,$(SRCS_ENC:.c=.P) $(SRCS_DEC:.c=.P)) @@ -76,7 +82,7 @@ DEPS = $(addprefix $(BUILD)/,$(SRCS_ENC:.c=.P) $(SRCS_DEC:.c=.P)) .PHONY: all clean clean_all -all: $(CLI_ENC) $(CLI_DEC) +all: $(CLI_ENC) $(CLI_DEC) $(LIB_SO) $(BUILD): $(QUIET)mkdir -p $(BUILD) @@ -87,6 +93,9 @@ $(CLI_ENC): $(OBJS_ENC) $(CLI_DEC): $(OBJS_DEC) $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_DEC) -lm -o $(CLI_DEC) +$(LIB_SO): $(OBJS_LIB) + $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_LIB) -lm -shared -o $(LIB_SO) + clean: $(QUIET)$(RM) $(OBJS_ENC) $(OBJS_DEC) $(DEPS) $(QUIET)$(RM) $(DEPS:.P=.d) diff --git a/lib_com/prot.h b/lib_com/prot.h --- a/lib_com/prot.h +++ b/lib_com/prot.h @@ -624,6 +624,11 @@ short lsp_convert_poly( const short L_frame, /* i : flag for up or down conversion */ const short Opt_AMRWB /* i : flag for the AMR-WB IO mode */ ); +unsigned long encoder_size(void); +unsigned long encoder_ind_list_size(void); +void encoder_set_opts(Encoder_State *st, unsigned long Fs, void *ind_list); +void encoder_set_brate(Encoder_State *st, unsigned long brate, unsigned int bwidth, + unsigned int mode, unsigned int amr); short findpulse( /* o : pulse position */ const short L_frame, /* i : length of the frame */ @@ -651,6 +656,9 @@ void preemph( const short L, /* i : vector size */ float *mem /* i/o: memory (x[-1]) */ ); +unsigned long decoder_size(void); +void decoder_set_Fs(Decoder_State *st, unsigned long Fs); +void decoder_inc_ini_frame(Decoder_State *st); void cb_shape( const short preemphFlag, /* i : flag for pre-emphasis */ diff --git a/lib_dec/init_dec.c b/lib_dec/init_dec.c --- a/lib_dec/init_dec.c +++ b/lib_dec/init_dec.c @@ -653,3 +653,16 @@ void destroy_decoder( return; } + + + +unsigned long decoder_size(void) { + return sizeof(Decoder_State); +} +void decoder_set_Fs(Decoder_State *st, unsigned long Fs) { + st->output_Fs = Fs; +} +void decoder_inc_ini_frame(Decoder_State *st) { + if (st->ini_frame < MAX_FRAME_COUNTER) + st->ini_frame++; +} diff --git a/lib_enc/init_enc.c b/lib_enc/init_enc.c --- a/lib_enc/init_enc.c +++ b/lib_enc/init_enc.c @@ -729,3 +729,31 @@ void destroy_encoder( return; } + + + +unsigned long encoder_size(void) { + return sizeof(Encoder_State); +} +void encoder_set_opts(Encoder_State *st, unsigned long Fs, void *ind_list) { + st->input_Fs = Fs; + st->ind_list = ind_list; + st->rf_fec_indicator = 1; + st->last_codec_mode = st->codec_mode; +} +void encoder_set_brate(Encoder_State *st, unsigned long brate, unsigned int bwidth, + unsigned int mode, unsigned int amr) { + if (brate == 5900) { + st->Opt_SC_VBR = 1; + brate = 7200; + } + else + st->Opt_SC_VBR = 0; + st->total_brate = brate; + st->codec_mode = mode; + st->Opt_AMR_WB = amr; + st->max_bwidth = bwidth; +} +unsigned long encoder_ind_list_size(void) { + return sizeof(Indice) * MAX_NUM_INDICES; +}