frame assembler sink-only mode
This commit is contained in:
parent
59a78e3671
commit
e6deba2cd5
|
@ -76,7 +76,9 @@ class p25_decoder_sink_b(gr.hier_block2):
|
|||
|
||||
self.debug = debug
|
||||
self.dest = dest
|
||||
do_output = True
|
||||
do_output = False
|
||||
if dest == 'wav':
|
||||
do_output = True
|
||||
do_audio_output = True
|
||||
|
||||
if msgq is None:
|
||||
|
@ -94,8 +96,6 @@ class p25_decoder_sink_b(gr.hier_block2):
|
|||
self.p25_decoders.append(op25_repeater.p25_frame_assembler(wireshark_host, udp_port, debug, do_imbe, do_output, do_msgq, msgq, do_audio_output, True))
|
||||
self.p25_decoders[slot].set_slotid(slot)
|
||||
|
||||
self.audio_s2f.append(blocks.short_to_float()) # another ridiculous conversion
|
||||
self.scaler.append(blocks.multiply_const_ff(1 / 32768.0))
|
||||
self.xorhash.append('')
|
||||
|
||||
if dest == 'wav':
|
||||
|
@ -103,11 +103,12 @@ class p25_decoder_sink_b(gr.hier_block2):
|
|||
n_channels = 1
|
||||
sample_rate = 8000
|
||||
bits_per_sample = 16
|
||||
self.audio_s2f.append(blocks.short_to_float()) # another ridiculous conversion
|
||||
self.scaler.append(blocks.multiply_const_ff(1 / 32768.0))
|
||||
self.audio_sink.append(blocks.wavfile_sink(filename, n_channels, sample_rate, bits_per_sample))
|
||||
self.connect(self, self.p25_decoders[slot], self.audio_s2f[slot], self.scaler[slot], self.audio_sink[slot])
|
||||
elif dest == 'audio':
|
||||
self.audio_sink.append(audio.sink(_def_audio_rate, audio_output, True))
|
||||
|
||||
self.connect(self, self.p25_decoders[slot], self.audio_s2f[slot], self.scaler[slot], self.audio_sink[slot])
|
||||
self.connect(self, self.p25_decoders[slot])
|
||||
|
||||
def close_file(self, index=0):
|
||||
if self.dest != 'wav':
|
||||
|
|
|
@ -83,7 +83,7 @@ static const int MAX_IN = 1; // maximum number of input streams
|
|||
p25_frame_assembler_impl::p25_frame_assembler_impl(const char* udp_host, int port, int debug, bool do_imbe, bool do_output, bool do_msgq, gr::msg_queue::sptr queue, bool do_audio_output, bool do_phase2_tdma)
|
||||
: gr::block("p25_frame_assembler",
|
||||
gr::io_signature::make (MIN_IN, MAX_IN, sizeof (char)),
|
||||
gr::io_signature::make ((do_output || do_audio_output) ? 1 : 0, (do_output || do_audio_output) ? 1 : 0, (do_audio_output) ? sizeof(int16_t) : ((do_output) ? sizeof(char) : 0 ))),
|
||||
gr::io_signature::make ((do_output) ? 1 : 0, (do_output) ? 1 : 0, (do_audio_output && do_output) ? sizeof(int16_t) : ((do_output) ? sizeof(char) : 0 ))),
|
||||
d_do_imbe(do_imbe),
|
||||
d_do_output(do_output),
|
||||
output_queue(),
|
||||
|
@ -94,8 +94,6 @@ static const int MAX_IN = 1; // maximum number of input streams
|
|||
d_do_msgq(do_msgq),
|
||||
d_msg_queue(queue)
|
||||
{
|
||||
if (d_do_audio_output && !d_do_output)
|
||||
fprintf(stderr, "p25_frame_assembler: error: do_output must be enabled if do_audio_output is enabled\n");
|
||||
if (d_do_audio_output && !d_do_imbe)
|
||||
fprintf(stderr, "p25_frame_assembler: error: do_imbe must be enabled if do_audio_output is enabled\n");
|
||||
if (d_do_phase2_tdma && !d_do_audio_output)
|
||||
|
|
|
@ -314,16 +314,14 @@ p25p1_fdma::rx_sym (const uint8_t *syms, int nsyms)
|
|||
// output one 32-byte msg per 0.020 sec.
|
||||
// also, 32*9 = 288 byte pkts (for use via UDP)
|
||||
sprintf(s, "%03x %03x %03x %03x %03x %03x %03x %03x\n", u[0], u[1], u[2], u[3], u[4], u[5], u[6], u[7]);
|
||||
if (d_do_output) {
|
||||
if (d_do_audio_output) {
|
||||
p1voice_decode.rxframe(u);
|
||||
} else {
|
||||
for (size_t j=0; j < strlen(s); j++) {
|
||||
output_queue.push_back(s[j]);
|
||||
}
|
||||
if (d_do_audio_output)
|
||||
p1voice_decode.rxframe(u);
|
||||
if (d_do_output && !d_do_audio_output) {
|
||||
for (size_t j=0; j < strlen(s); j++) {
|
||||
output_queue.push_back(s[j]);
|
||||
}
|
||||
}
|
||||
if (write_sock > 0) {
|
||||
if (d_do_output && write_sock > 0) {
|
||||
memcpy(&write_buf[write_bufp], s, strlen(s));
|
||||
write_bufp += strlen(s);
|
||||
if (write_bufp >= 288) { // 9 * 32 = 288
|
||||
|
|
Loading…
Reference in New Issue