So I don't fully understand it, but it looks like the problem is with forecast() in p25_frame_assembler.cc. My guess is that with the current forecast it would sometimes return that 0 Input samples are required because of the float to int conversion. The following code below makes a huge different for performance. What is the best way to submit a pull request?
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(); double samples_reqd = 4.0 * nof_output_items; int nof_samples_reqd; if (d_do_imbe) samples_reqd = 3.0 * nof_output_items; samples_reqd = nof_output_items; if (d_do_audio_output) samples_reqd = 0.6 * nof_output_items;
nof_samples_reqd = (int)ceil(samples_reqd); for(int i = 0; i < nof_inputs; i++) { nof_input_items_reqd[i] = nof_samples_reqd; }
}