[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] [gnuradio] 04/10: Get the FreeDV demodulator working.
From: |
git |
Subject: |
[Commit-gnuradio] [gnuradio] 04/10: Get the FreeDV demodulator working. |
Date: |
Tue, 22 Nov 2016 17:27:56 +0000 (UTC) |
This is an automated email from the git hooks/post-receive script.
jcorgan pushed a commit to branch next
in repository gnuradio.
commit 0c05efd72c3c727f51974fa8c7eb04afe76f1b7c
Author: Clayton Smith <address@hidden>
Date: Fri Sep 16 14:33:46 2016 -0600
Get the FreeDV demodulator working.
---
gr-vocoder/lib/freedv_rx_ss_impl.cc | 31 +++++++++++--------------------
1 file changed, 11 insertions(+), 20 deletions(-)
diff --git a/gr-vocoder/lib/freedv_rx_ss_impl.cc
b/gr-vocoder/lib/freedv_rx_ss_impl.cc
index 06a8967..748a5c1 100644
--- a/gr-vocoder/lib/freedv_rx_ss_impl.cc
+++ b/gr-vocoder/lib/freedv_rx_ss_impl.cc
@@ -67,7 +67,7 @@ namespace gr {
d_speech_samples = freedv_get_n_speech_samples(d_freedv);
d_max_modem_samples = freedv_get_n_max_modem_samples(d_freedv);
d_nin = freedv_nin(d_freedv);
- //set_output_multiple(d_max_modem_samples);
+ set_output_multiple(d_max_modem_samples);
}
freedv_rx_ss_impl::~freedv_rx_ss_impl()
@@ -89,7 +89,7 @@ namespace gr {
{
unsigned ninputs = ninput_items_required.size();
for(unsigned i = 0; i < ninputs; i++)
- ninput_items_required[i] = noutput_items;
+ ninput_items_required[i] = std::max(d_nin, noutput_items);
}
int
@@ -100,32 +100,23 @@ namespace gr {
{
short *in = (short *) input_items[0];
short *out = (short *) output_items[0];
- int i,n;
- d_nin = freedv_nin(d_freedv);
- if (ninput_items[0] < d_nin) {
- consume_each(0);
- return(0);
- }
- for (i=0,n=0; ((n+d_nin) <= noutput_items)&&(i <= ninput_items[0]);) {
- d_nout = freedv_rx(d_freedv, out, in);
- i += d_nin;
- n += d_nout;
- out = &(out[d_nout]);
- in = &(in[d_nin]);
+ int in_offset = 0, out_offset = 0;
+
+ while ((noutput_items - out_offset) >= d_max_modem_samples
+ && (ninput_items[0] - in_offset) >= d_nin) {
+ d_nout = freedv_rx(d_freedv, out + out_offset, in + in_offset);
+ out_offset += d_nout;
+ in_offset += d_nin;
d_nin = freedv_nin(d_freedv);
}
- if ((i > ninput_items[0])||((n+d_nin) > noutput_items)) {
- i -= d_nin;
- n -= d_nout;
- } // back up to where we left off processing freedv_rx
freedv_get_modem_stats(d_freedv, &d_sync, &d_snr_est);
freedv_get_modem_extended_stats(d_freedv, &d_stats);
d_total_bit_errors = freedv_get_total_bit_errors(d_freedv);
- consume_each(i);
- return(n);
+ consume_each(in_offset);
+ return out_offset;
}
void put_next_rx_proto(void *callback_state,char *proto_bits) {
- [Commit-gnuradio] [gnuradio] branch next updated (1d50d70 -> 8304e9c), git, 2016/11/22
- [Commit-gnuradio] [gnuradio] 09/10: Merge remote-tracking branch 'github/freedv-api-next' into next, git, 2016/11/22
- [Commit-gnuradio] [gnuradio] 04/10: Get the FreeDV demodulator working.,
git <=
- [Commit-gnuradio] [gnuradio] 10/10: Merge branch 'master' into next, git, 2016/11/22
- [Commit-gnuradio] [gnuradio] 08/10: Merge remote-tracking branch 'gnieboer/gnieboer-next-logger-patch' into next, git, 2016/11/22
- [Commit-gnuradio] [gnuradio] 07/10: Merge branch 'master' into next, git, 2016/11/22
- [Commit-gnuradio] [gnuradio] 05/10: gr-runtime: fixed incorrect type for mode_t in logger, git, 2016/11/22
- [Commit-gnuradio] [gnuradio] 03/10: Convert tabs to spaces., git, 2016/11/22
- [Commit-gnuradio] [gnuradio] 06/10: gr-logger: Removed unused function calls causing MSVC build failure, git, 2016/11/22
- [Commit-gnuradio] [gnuradio] 02/10: provide example grfreedv.grc flowgraph, git, 2016/11/22
- [Commit-gnuradio] [gnuradio] 01/10: gr-vocoder freedv blocks, git, 2016/11/22