diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2021-02-24 09:50:03 +0100 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2021-02-24 09:50:03 +0100 |
commit | 353e00a8027599124125a314a95ed7a735c30388 (patch) | |
tree | 3469bdfe8baa085b5b85a4e1309a190aa2cf96fe /contrib/edioutput/Interleaver.h | |
parent | cb5100462f22e5575da3486f8b9735556b2c85e2 (diff) | |
download | ODR-AudioEnc-353e00a8027599124125a314a95ed7a735c30388.tar.gz ODR-AudioEnc-353e00a8027599124125a314a95ed7a735c30388.tar.bz2 ODR-AudioEnc-353e00a8027599124125a314a95ed7a735c30388.zip |
Common fc2902b and 4ad00b8: Update EDI output interleaver and spreading
Diffstat (limited to 'contrib/edioutput/Interleaver.h')
-rw-r--r-- | contrib/edioutput/Interleaver.h | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/contrib/edioutput/Interleaver.h b/contrib/edioutput/Interleaver.h deleted file mode 100644 index 3029d5d..0000000 --- a/contrib/edioutput/Interleaver.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - Copyright (C) 2017 - Matthias P. Braendli, matthias.braendli@mpb.li - - http://www.opendigitalradio.org - - EDI output, - Interleaving of PFT fragments to increase robustness against - burst packet loss. - - This is possible because EDI has to assume that fragments may reach - the receiver out of order. - - */ -/* - This file is part of the ODR-mmbTools. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#pragma once - -#include "config.h" -#include <vector> -#include <deque> -#include <stdexcept> -#include <cstdint> -#include "Log.h" -#include "PFT.h" - -namespace edi { - -class Interleaver { - public: - using fragment_vec = std::vector<PFTFragment>; - - /* Configure the interleaver to use latency_frames number of AF - * packets for interleaving. Total delay through the interleaver - * will be latency_frames * 24ms - */ - void SetLatency(size_t latency_frames); - - /* Move the fragments for an AF Packet into the interleaver and - * return interleaved fragments to be transmitted. - */ - fragment_vec Interleave(fragment_vec &fragments); - - private: - size_t m_latency = 0; - size_t m_fragment_count = 0; - size_t m_interleave_offset = 0; - size_t m_stride = 0; - - /* Buffer that accumulates enough fragments to interleave */ - std::deque<fragment_vec> m_buffer; - - /* Buffer that contains fragments that have been interleaved, - * to avoid that the interleaver output is too bursty - */ - std::deque<PFTFragment> m_interleaved_fragments; -}; - -} - |