aboutsummaryrefslogtreecommitdiffstats
path: root/op25
diff options
context:
space:
mode:
authorMax <ikj1234i@yahoo.com>2017-10-17 16:58:56 -0400
committerMax <ikj1234i@yahoo.com>2017-10-17 16:58:56 -0400
commita9522ee636638cbb4b460e8d2e2323cdbdf447f4 (patch)
treee3c55ceb6c6f119d99f5cc2beddcfbee3cfe5ef0 /op25
parent15f0acfa1794533230f42ee2ec315ce8a610a6fa (diff)
set_gain_adjust patch
Diffstat (limited to 'op25')
-rw-r--r--op25/gr-op25_repeater/include/op25_repeater/ambe_encoder_sb.h1
-rw-r--r--op25/gr-op25_repeater/include/op25_repeater/dstar_tx_sb.h1
-rw-r--r--op25/gr-op25_repeater/include/op25_repeater/vocoder.h1
-rw-r--r--op25/gr-op25_repeater/include/op25_repeater/ysf_tx_sb.h1
-rw-r--r--op25/gr-op25_repeater/lib/ambe_encoder.cc9
-rw-r--r--op25/gr-op25_repeater/lib/ambe_encoder.h1
-rw-r--r--op25/gr-op25_repeater/lib/ambe_encoder_sb_impl.cc5
-rw-r--r--op25/gr-op25_repeater/lib/ambe_encoder_sb_impl.h1
-rw-r--r--op25/gr-op25_repeater/lib/dstar_tx_sb_impl.cc4
-rw-r--r--op25/gr-op25_repeater/lib/dstar_tx_sb_impl.h1
-rw-r--r--op25/gr-op25_repeater/lib/imbe_vocoder/imbe_vocoder.cc10
-rw-r--r--op25/gr-op25_repeater/lib/imbe_vocoder/imbe_vocoder.h3
-rw-r--r--op25/gr-op25_repeater/lib/imbe_vocoder/sa_encode.cc2
-rw-r--r--op25/gr-op25_repeater/lib/p25p1_voice_encode.cc4
-rw-r--r--op25/gr-op25_repeater/lib/p25p1_voice_encode.h2
-rw-r--r--op25/gr-op25_repeater/lib/vocoder_impl.cc5
-rw-r--r--op25/gr-op25_repeater/lib/vocoder_impl.h1
-rw-r--r--op25/gr-op25_repeater/lib/ysf_tx_sb_impl.cc8
-rw-r--r--op25/gr-op25_repeater/lib/ysf_tx_sb_impl.h1
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<uint8_t> &_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;