Hi Luke,
That's a pretty significant find you have brought up. I concur on the dramatic
performance increase seen on your end. This has a side effect on my end though. There are
gaps in between each voice packet during the calls, which is causing constant audio
underruns. So this isn't good for me. I'll have to play around with it more to
find a cure.
However, when using the logfile workers, there are no gaps in the wav audio. This is kind
of a big deal if this is how you use OP25. I can run 6 concurrent workers quite easily on
an ancient Intel Q6600 "quad".
Thanks for bringing this up!
-Scott
This is how I modified the function:
void
p25_frame_assembler_impl::forecast(int nof_output_items, gr_vector_int
&nof_input_items_reqd)
{
// for do_imbe=false: we output packed bytes (4:1 ratio)
// for do_imbe=true: input rate= 4800, output rate= 1600 = 32 * 50 (3:1)
// for do_audio_output: output rate=8000 (ratio 0.6:1)
const size_t nof_inputs = nof_input_items_reqd.size();
int nof_samples_reqd = nof_samples_reqd = (int)ceil(4.0f * float(nof_output_items));
if (d_do_imbe)
nof_samples_reqd = (int)ceil(3.0f * float(nof_output_items));
if (d_do_audio_output)
nof_samples_reqd = (int)ceil(0.6f * float(nof_output_items));
std::fill(&nof_input_items_reqd[0], &nof_input_items_reqd[nof_inputs],
nof_samples_reqd);
}