GNU Radio Manual and C++ API Reference  3.10.9.1
The Free & Open Software Radio Ecosystem
deinterleave.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2012,2014 Free Software Foundation, Inc.
4  *
5  * This file is part of GNU Radio
6  *
7  * SPDX-License-Identifier: GPL-3.0-or-later
8  *
9  */
10 
11 #ifndef INCLUDED_BLOCKS_DEINTERLEAVE_H
12 #define INCLUDED_BLOCKS_DEINTERLEAVE_H
13 
14 #include <gnuradio/block.h>
15 #include <gnuradio/blocks/api.h>
16 
17 namespace gr {
18 namespace blocks {
19 
20 /*!
21  * \brief deinterleave an input block of samples into N outputs.
22  * \ingroup stream_operators_blk
23  *
24  * \details
25  * This block deinterleaves blocks of samples. For each output
26  * connection, the input stream will be deinterleaved successively
27  * to the output connections. By default, the block deinterleaves
28  * a single input to each output unless blocksize is given in the
29  * constructor.
30  *
31  * \code
32  * blocksize = 1
33  * connections = 2
34  * input = [a, b, c, d, e, f, g, h]
35  * output[0] = [a, c, e, g]
36  * output[1] = [b, d, f, h]
37  * \endcode
38  *
39  * \code
40  * blocksize = 2
41  * connections = 2
42  * input = [a, b, c, d, e, f, g, h]
43  * output[0] = [a, b, e, f]
44  * output[1] = [c, d, g, h]
45  * \endcode
46  */
47 class BLOCKS_API deinterleave : virtual public block
48 {
49 public:
50  // gr::blocks::deinterleave::sptr
51  typedef std::shared_ptr<deinterleave> sptr;
52 
53  /*!
54  * Make a deinterleave block.
55  *
56  * \param itemsize stream itemsize
57  * \param blocksize size of block to deinterleave
58  */
59  static sptr make(size_t itemsize, unsigned int blocksize = 1);
60 };
61 
62 } /* namespace blocks */
63 } /* namespace gr */
64 
65 #endif /* INCLUDED_BLOCKS_DEINTERLEAVE_H */
The abstract base class for all 'terminal' processing blocks.
Definition: gnuradio-runtime/include/gnuradio/block.h:63
deinterleave an input block of samples into N outputs.
Definition: deinterleave.h:48
std::shared_ptr< deinterleave > sptr
Definition: deinterleave.h:51
static sptr make(size_t itemsize, unsigned int blocksize=1)
#define BLOCKS_API
Definition: gr-blocks/include/gnuradio/blocks/api.h:18
GR_RUNTIME_API size_t itemsize(types::vector_type type)
GNU Radio logging wrapper.
Definition: basic_block.h:29