diff options
Diffstat (limited to 'op25/gr-op25_repeater/lib/p25p1_voice_encode.cc')
-rw-r--r-- | op25/gr-op25_repeater/lib/p25p1_voice_encode.cc | 40 |
1 files changed, 7 insertions, 33 deletions
diff --git a/op25/gr-op25_repeater/lib/p25p1_voice_encode.cc b/op25/gr-op25_repeater/lib/p25p1_voice_encode.cc index f2ca445..d2fda13 100644 --- a/op25/gr-op25_repeater/lib/p25p1_voice_encode.cc +++ b/op25/gr-op25_repeater/lib/p25p1_voice_encode.cc @@ -33,9 +33,6 @@ #include <stdio.h> #include <string.h> #include <errno.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> #include "imbe_vocoder/imbe_vocoder.h" #include "p25_frame.h" @@ -153,9 +150,9 @@ static void clear_bits(bit_vector& v) { } } -p25p1_voice_encode::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::p25p1_voice_encode(bool verbose_flag, int stretch_amt, const op25_audio& udp, bool raw_vectors_flag, std::deque<uint8_t> &_output_queue) : + op25audio(udp), frame_cnt(0), - write_sock(0), write_bufp(0), peak_amplitude(0), peak(0), @@ -166,8 +163,7 @@ p25p1_voice_encode::p25p1_voice_encode(bool verbose_flag, int stretch_amt, char* output_queue(_output_queue), f_body(P25_VOICE_FRAME_SIZE), opt_dump_raw_vectors(raw_vectors_flag), - opt_verbose(verbose_flag), - opt_udp_port(udp_port) + opt_verbose(verbose_flag) { opt_stretch_amt = 0; if (stretch_amt < 0) { @@ -178,10 +174,6 @@ p25p1_voice_encode::p25p1_voice_encode(bool verbose_flag, int stretch_amt, char* opt_stretch_amt = stretch_amt; } - if (opt_udp_port != 0) - // remote UDP output - init_sock(udp_host, opt_udp_port); - clear_bits(f_body); } @@ -216,7 +208,7 @@ void p25p1_voice_encode::append_imbe_codeword(bit_vector& frame_body, int16_t fr frame_body[i] = frame_body[i] | ldu_preset[i]; } // finally, output the frame - if (opt_udp_port > 0) { + if (op25audio.enabled()) { // pack the bits into bytes, MSB first size_t obuf_ct = 0; for (uint32_t i = 0; i < P25_VOICE_FRAME_SIZE; i += 8) { @@ -231,7 +223,7 @@ void p25p1_voice_encode::append_imbe_codeword(bit_vector& frame_body, int16_t fr (frame_body[i+7] ); obuf[obuf_ct++] = b; } - sendto(write_sock, obuf, obuf_ct, 0, (struct sockaddr*)&write_sock_addr, sizeof(write_sock_addr)); + op25audio.send_to(obuf, obuf_ct); } else { for (uint32_t i = 0; i < P25_VOICE_FRAME_SIZE; i += 2) { uint8_t dibit = @@ -274,7 +266,7 @@ void p25p1_voice_encode::compress_frame(int16_t snd[]) memcpy(&write_buf[write_bufp], s, strlen(s)); write_bufp += strlen(s); if (write_bufp >= 288) { - sendto(write_sock, write_buf, 288, 0, (struct sockaddr*)&write_sock_addr, sizeof(write_sock_addr)); + op25audio.send_to(write_buf, 288); write_bufp = 0; } return; @@ -324,28 +316,10 @@ void p25p1_voice_encode::compress_samp(const int16_t * samp, int len) } } -void p25p1_voice_encode::init_sock(char* udp_host, int udp_port) -{ - memset (&write_sock_addr, 0, sizeof(write_sock_addr)); - write_sock = socket(PF_INET, SOCK_DGRAM, 17); // UDP socket - if (write_sock < 0) { - fprintf(stderr, "vocoder: socket: %d\n", errno); - write_sock = 0; - return; - } - if (!inet_aton(udp_host, &write_sock_addr.sin_addr)) { - fprintf(stderr, "vocoder: bad IP address\n"); - close(write_sock); - write_sock = 0; - return; - } - write_sock_addr.sin_family = AF_INET; - 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 */ |