Thank you for evaluating our code and help debugging it. what we understand from your reply is that work function at a time processes noutput_items and this can be lesser than or more than the fft_length. As an example in our code when we give the fft length as 8192, but the noutput_items is still 4096, so does that mean it has to execute work function twice to process 4096*2=8192 items?
Regarding the first approach you suggested, we change the input signature and output signature to (sizeof (gr_complex)*fft_length) so that it is a single vector that is being processed. Then we return 1 as suggested. But it is throwing an itemsize mismatch error. I have attached the c++ file here (
http://pastebin.com/TKemtbxN ). The error says
ERROR: test_001_t (__main__.qa_al_enc)
2: ------------------------------
----------------------------------------
2: Traceback (most recent call last):
2: File "/home/sagar/gr-alamouti/python/qa_al_enc.py", line 66, in test_001_t
2: self.tb.connect(src,opr)
2: File "/usr/local/lib/python2.7/dist-packages/gnuradio/gr/top_block.py", line 130, in connect
2: self._connect(points[i-1], points[i])
2: File "/usr/local/lib/python2.7/dist-packages/gnuradio/gr/top_block.py", line 142, in _connect
2: dst_block.to_basic_block(), dst_port)
2: File "/usr/local/lib/python2.7/dist-packages/gnuradio/gr/runtime_swig.py", line 4350, in primitive_connect
2: return _runtime_swig.top_block_sptr_primitive_connect(self, *args)
2: ValueError: itemsize mismatch: vector_source_c1:0 using 8, al_enc1:0 using 65536
For the second method suggested should we write a general work function and a forecast function which would mean doing away with sync block that we are using with work function right now?