From a9522ee636638cbb4b460e8d2e2323cdbdf447f4 Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 17 Oct 2017 16:58:56 -0400 Subject: [PATCH] set_gain_adjust patch --- .../include/op25_repeater/ambe_encoder_sb.h | 1 + .../include/op25_repeater/dstar_tx_sb.h | 1 + op25/gr-op25_repeater/include/op25_repeater/vocoder.h | 1 + .../gr-op25_repeater/include/op25_repeater/ysf_tx_sb.h | 1 + op25/gr-op25_repeater/lib/ambe_encoder.cc | 9 --------- op25/gr-op25_repeater/lib/ambe_encoder.h | 1 + op25/gr-op25_repeater/lib/ambe_encoder_sb_impl.cc | 5 +++++ op25/gr-op25_repeater/lib/ambe_encoder_sb_impl.h | 1 + op25/gr-op25_repeater/lib/dstar_tx_sb_impl.cc | 4 ++++ op25/gr-op25_repeater/lib/dstar_tx_sb_impl.h | 1 + op25/gr-op25_repeater/lib/imbe_vocoder/imbe_vocoder.cc | 10 ---------- op25/gr-op25_repeater/lib/imbe_vocoder/imbe_vocoder.h | 3 ++- op25/gr-op25_repeater/lib/imbe_vocoder/sa_encode.cc | 2 +- op25/gr-op25_repeater/lib/p25p1_voice_encode.cc | 4 ++++ op25/gr-op25_repeater/lib/p25p1_voice_encode.h | 2 +- op25/gr-op25_repeater/lib/vocoder_impl.cc | 5 +++++ op25/gr-op25_repeater/lib/vocoder_impl.h | 1 + op25/gr-op25_repeater/lib/ysf_tx_sb_impl.cc | 8 ++++++++ op25/gr-op25_repeater/lib/ysf_tx_sb_impl.h | 1 + 19 files changed, 39 insertions(+), 22 deletions(-) diff --git a/op25/gr-op25_repeater/include/op25_repeater/ambe_encoder_sb.h b/op25/gr-op25_repeater/include/op25_repeater/ambe_encoder_sb.h index 0c39954..1bfe061 100644 --- a/op25/gr-op25_repeater/include/op25_repeater/ambe_encoder_sb.h +++ b/op25/gr-op25_repeater/include/op25_repeater/ambe_encoder_sb.h @@ -47,6 +47,7 @@ namespace gr { * creating new instances. */ static sptr make(int versbose_flag); + virtual void set_gain_adjust(float gain_adjust) {} }; } // namespace op25_repeater diff --git a/op25/gr-op25_repeater/include/op25_repeater/dstar_tx_sb.h b/op25/gr-op25_repeater/include/op25_repeater/dstar_tx_sb.h index 55ce91d..8564feb 100644 --- a/op25/gr-op25_repeater/include/op25_repeater/dstar_tx_sb.h +++ b/op25/gr-op25_repeater/include/op25_repeater/dstar_tx_sb.h @@ -48,6 +48,7 @@ namespace gr { * creating new instances. */ static sptr make(int versbose_flag, const char * conf_file); + virtual void set_gain_adjust(float gain_adjust) {} }; } // namespace op25_repeater diff --git a/op25/gr-op25_repeater/include/op25_repeater/vocoder.h b/op25/gr-op25_repeater/include/op25_repeater/vocoder.h index 4285202..ce271e4 100644 --- a/op25/gr-op25_repeater/include/op25_repeater/vocoder.h +++ b/op25/gr-op25_repeater/include/op25_repeater/vocoder.h @@ -47,6 +47,7 @@ namespace gr { * creating new instances. */ static sptr make(bool encode_flag, bool verbose_flag, int stretch_amt, char* udp_host, int udp_port, bool raw_vectors_flag); + virtual void set_gain_adjust(float gain_adjust) {} }; } // namespace op25_repeater diff --git a/op25/gr-op25_repeater/include/op25_repeater/ysf_tx_sb.h b/op25/gr-op25_repeater/include/op25_repeater/ysf_tx_sb.h index e4662a6..570fbc3 100644 --- a/op25/gr-op25_repeater/include/op25_repeater/ysf_tx_sb.h +++ b/op25/gr-op25_repeater/include/op25_repeater/ysf_tx_sb.h @@ -48,6 +48,7 @@ namespace gr { * creating new instances. */ static sptr make(int versbose_flag, const char * conf_file, bool fullrate_mode); + virtual void set_gain_adjust(float gain_adjust) {} }; } // namespace op25_repeater diff --git a/op25/gr-op25_repeater/lib/ambe_encoder.cc b/op25/gr-op25_repeater/lib/ambe_encoder.cc index 0bccb3e..b134294 100644 --- a/op25/gr-op25_repeater/lib/ambe_encoder.cc +++ b/op25/gr-op25_repeater/lib/ambe_encoder.cc @@ -549,15 +549,6 @@ ambe_encoder::ambe_encoder(void) { mbe_parms enh_mp; mbe_initMbeParms (&cur_mp, &prev_mp, &enh_mp); - // this is a hack to cut down on overloading - // value is in log2 - char *gfp = getenv("GAIN_ADJUST"); - if (gfp) { - float gain_adj = 0.0; - sscanf(gfp, "%f", &gain_adj); - if (!std::isnan(gain_adj)) - d_gain_adjust = gain_adj; - } } void ambe_encoder::set_dstar_mode(void) diff --git a/op25/gr-op25_repeater/lib/ambe_encoder.h b/op25/gr-op25_repeater/lib/ambe_encoder.h index 5605d36..0d5f1a1 100644 --- a/op25/gr-op25_repeater/lib/ambe_encoder.h +++ b/op25/gr-op25_repeater/lib/ambe_encoder.h @@ -28,6 +28,7 @@ public: ambe_encoder(void); void set_49bit_mode(void); void set_dstar_mode(void); + void set_gain_adjust(float gain_adjust) {d_gain_adjust = gain_adjust;} private: imbe_vocoder vocoder; p25p2_vf interleaver; diff --git a/op25/gr-op25_repeater/lib/ambe_encoder_sb_impl.cc b/op25/gr-op25_repeater/lib/ambe_encoder_sb_impl.cc index 6f2da2c..e4e03b9 100644 --- a/op25/gr-op25_repeater/lib/ambe_encoder_sb_impl.cc +++ b/op25/gr-op25_repeater/lib/ambe_encoder_sb_impl.cc @@ -109,5 +109,10 @@ ambe_encoder_sb_impl::general_work (int noutput_items, return (nframes); } +void +ambe_encoder_sb_impl::set_gain_adjust(float gain_adjust) { + d_encoder.set_gain_adjust(gain_adjust); +} + } /* namespace op25_repeater */ } /* namespace gr */ diff --git a/op25/gr-op25_repeater/lib/ambe_encoder_sb_impl.h b/op25/gr-op25_repeater/lib/ambe_encoder_sb_impl.h index c2e2217..7bff664 100644 --- a/op25/gr-op25_repeater/lib/ambe_encoder_sb_impl.h +++ b/op25/gr-op25_repeater/lib/ambe_encoder_sb_impl.h @@ -65,6 +65,7 @@ namespace gr { gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); + void set_gain_adjust(float gain_adjust); private: int d_verbose_flag; diff --git a/op25/gr-op25_repeater/lib/dstar_tx_sb_impl.cc b/op25/gr-op25_repeater/lib/dstar_tx_sb_impl.cc index 024daef..c89ce12 100644 --- a/op25/gr-op25_repeater/lib/dstar_tx_sb_impl.cc +++ b/op25/gr-op25_repeater/lib/dstar_tx_sb_impl.cc @@ -169,5 +169,9 @@ dstar_tx_sb_impl::general_work (int noutput_items, return (nframes * 96); } +void +dstar_tx_sb_impl::set_gain_adjust(float gain_adjust) { + d_encoder.set_gain_adjust(gain_adjust); +} } /* namespace op25_repeater */ } /* namespace gr */ diff --git a/op25/gr-op25_repeater/lib/dstar_tx_sb_impl.h b/op25/gr-op25_repeater/lib/dstar_tx_sb_impl.h index 1845eda..4451702 100644 --- a/op25/gr-op25_repeater/lib/dstar_tx_sb_impl.h +++ b/op25/gr-op25_repeater/lib/dstar_tx_sb_impl.h @@ -53,6 +53,7 @@ namespace gr { gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); + void set_gain_adjust(float gain_adjust); private: int d_verbose_flag; diff --git a/op25/gr-op25_repeater/lib/imbe_vocoder/imbe_vocoder.cc b/op25/gr-op25_repeater/lib/imbe_vocoder/imbe_vocoder.cc index b31b5a9..503ae92 100644 --- a/op25/gr-op25_repeater/lib/imbe_vocoder/imbe_vocoder.cc +++ b/op25/gr-op25_repeater/lib/imbe_vocoder/imbe_vocoder.cc @@ -44,16 +44,6 @@ imbe_vocoder::imbe_vocoder (void) : decode_init(&my_imbe_param); encode_init(); - // this is a hack to cut down on overloading - // value is in log2 - char *gfp = getenv("GAIN_ADJUST_FULLRATE"); - if (gfp) { - int gain_adj = 0; - sscanf(gfp, "%d", &gain_adj); - if (gain_adj) - d_gain_adjust = (Word32) gain_adj; - } - if (!already_printed) { already_printed = 1; fprintf(stderr,"Project 25 IMBE Encoder/Decoder Fixed-Point implementation\n"); diff --git a/op25/gr-op25_repeater/lib/imbe_vocoder/imbe_vocoder.h b/op25/gr-op25_repeater/lib/imbe_vocoder/imbe_vocoder.h index 940d5bb..474b7e3 100644 --- a/op25/gr-op25_repeater/lib/imbe_vocoder/imbe_vocoder.h +++ b/op25/gr-op25_repeater/lib/imbe_vocoder/imbe_vocoder.h @@ -34,6 +34,7 @@ public: } // hack to enable ambe encoder read access to speech parameters const IMBE_PARAM* param(void) {return &my_imbe_param;} + void set_gain_adjust(float gain_adjust) {d_gain_adjust = gain_adjust;} private: IMBE_PARAM my_imbe_param; @@ -59,7 +60,7 @@ private: Word32 dc_rmv_mem; Cmplx16 fft_buf[FFTLENGTH]; Word16 pe_lpf_mem[PE_LPF_ORD]; - Word32 d_gain_adjust; + float d_gain_adjust; /* member functions */ void idct(Word16 *in, Word16 m_lim, Word16 i_lim, Word16 *out); diff --git a/op25/gr-op25_repeater/lib/imbe_vocoder/sa_encode.cc b/op25/gr-op25_repeater/lib/imbe_vocoder/sa_encode.cc index 766032a..76d2e1f 100644 --- a/op25/gr-op25_repeater/lib/imbe_vocoder/sa_encode.cc +++ b/op25/gr-op25_repeater/lib/imbe_vocoder/sa_encode.cc @@ -114,7 +114,7 @@ void imbe_vocoder::sa_encode(IMBE_PARAM *imbe_param) } if (d_gain_adjust) - *vec32_ptr = L_sub(*vec32_ptr, d_gain_adjust << 22); // would be nicer to allow fractional increments... + *vec32_ptr = L_sub(*vec32_ptr, (Word32)(d_gain_adjust * float(1<<22))); vec32_ptr++; k_acc += k_coef; diff --git a/op25/gr-op25_repeater/lib/p25p1_voice_encode.cc b/op25/gr-op25_repeater/lib/p25p1_voice_encode.cc index b6cb46e..f2ca445 100644 --- a/op25/gr-op25_repeater/lib/p25p1_voice_encode.cc +++ b/op25/gr-op25_repeater/lib/p25p1_voice_encode.cc @@ -343,5 +343,9 @@ void p25p1_voice_encode::init_sock(char* udp_host, int udp_port) write_sock_addr.sin_port = htons(udp_port); } +void +p25p1_voice_encode::set_gain_adjust(float gain_adjust) { + vocoder.set_gain_adjust(gain_adjust); +} } /* namespace op25_repeater */ } /* namespace gr */ diff --git a/op25/gr-op25_repeater/lib/p25p1_voice_encode.h b/op25/gr-op25_repeater/lib/p25p1_voice_encode.h index 721e0c5..e3663ec 100644 --- a/op25/gr-op25_repeater/lib/p25p1_voice_encode.h +++ b/op25/gr-op25_repeater/lib/p25p1_voice_encode.h @@ -45,7 +45,7 @@ namespace gr { p25p1_voice_encode(bool verbose_flag, int stretch_amt, char* udp_host, int udp_port, bool raw_vectors_flag, std::deque &_output_queue); ~p25p1_voice_encode(); void compress_samp(const int16_t * samp, int len); - + void set_gain_adjust(float gain_adjust); private: static const int RXBUF_MAX = 80; diff --git a/op25/gr-op25_repeater/lib/vocoder_impl.cc b/op25/gr-op25_repeater/lib/vocoder_impl.cc index ba2435f..3f2032d 100644 --- a/op25/gr-op25_repeater/lib/vocoder_impl.cc +++ b/op25/gr-op25_repeater/lib/vocoder_impl.cc @@ -164,5 +164,10 @@ vocoder_impl::general_work (int noutput_items, return general_work_decode(noutput_items, ninput_items, input_items, output_items); } +void +vocoder_impl::set_gain_adjust(float gain_adjust) { + p1voice_encode.set_gain_adjust(gain_adjust); +} + } /* namespace op25_repeater */ } /* namespace gr */ diff --git a/op25/gr-op25_repeater/lib/vocoder_impl.h b/op25/gr-op25_repeater/lib/vocoder_impl.h index a9a29fc..ce709fd 100644 --- a/op25/gr-op25_repeater/lib/vocoder_impl.h +++ b/op25/gr-op25_repeater/lib/vocoder_impl.h @@ -45,6 +45,7 @@ namespace gr { ~vocoder_impl(); void forecast (int noutput_items, gr_vector_int &ninput_items_required); + void set_gain_adjust(float gain_adjust); int general_work(int noutput_items, gr_vector_int &ninput_items, diff --git a/op25/gr-op25_repeater/lib/ysf_tx_sb_impl.cc b/op25/gr-op25_repeater/lib/ysf_tx_sb_impl.cc index 1708ccf..82ae1aa 100644 --- a/op25/gr-op25_repeater/lib/ysf_tx_sb_impl.cc +++ b/op25/gr-op25_repeater/lib/ysf_tx_sb_impl.cc @@ -452,5 +452,13 @@ ysf_tx_sb_impl::general_work (int noutput_items, return (nframes * 480); } +void +ysf_tx_sb_impl::set_gain_adjust(float gain_adjust) { + if (d_fullrate_mode) + d_fullrate_encoder.set_gain_adjust(gain_adjust); + else + d_halfrate_encoder.set_gain_adjust(gain_adjust); +} + } /* namespace op25_repeater */ } /* namespace gr */ diff --git a/op25/gr-op25_repeater/lib/ysf_tx_sb_impl.h b/op25/gr-op25_repeater/lib/ysf_tx_sb_impl.h index 935db03..4729160 100644 --- a/op25/gr-op25_repeater/lib/ysf_tx_sb_impl.h +++ b/op25/gr-op25_repeater/lib/ysf_tx_sb_impl.h @@ -53,6 +53,7 @@ namespace gr { gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); + void set_gain_adjust(float gain_adjust); private: int d_verbose_flag;