diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2019-08-27 11:02:23 +0200 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2019-08-27 11:02:23 +0200 |
commit | 0298076eea4f92685f9a01974261da41c2a01e5b (patch) | |
tree | f72831cd212da64c1a3ea124bb9b590ced8558f2 /src/input/Zmq.cpp | |
parent | cac39dedee89d62ebf5d0135b84ccaa2e387a7cb (diff) | |
download | dabmux-0298076eea4f92685f9a01974261da41c2a01e5b.tar.gz dabmux-0298076eea4f92685f9a01974261da41c2a01e5b.tar.bz2 dabmux-0298076eea4f92685f9a01974261da41c2a01e5b.zip |
EDI input: add new buffer management
Diffstat (limited to 'src/input/Zmq.cpp')
-rw-r--r-- | src/input/Zmq.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/input/Zmq.cpp b/src/input/Zmq.cpp index c5cc1b2..352c95d 100644 --- a/src/input/Zmq.cpp +++ b/src/input/Zmq.cpp @@ -2,7 +2,7 @@ Copyright (C) 2009 Her Majesty the Queen in Right of Canada (Communications Research Center Canada) - Copyright (C) 2018 Matthias P. Braendli + Copyright (C) 2019 Matthias P. Braendli http://www.opendigitalradio.org ZeroMQ input. see www.zeromq.org for more info @@ -247,16 +247,14 @@ int ZmqBase::setBitrate(int bitrate) } // size corresponds to a frame size. It is constant for a given bitrate -int ZmqBase::readFrame(uint8_t* buffer, size_t size) +size_t ZmqBase::readFrame(uint8_t* buffer, size_t size) { - int rc; - /* We must *always* read data from the ZMQ socket, * to make sure that ZMQ internal buffers are emptied * quickly. It's the only way to control the buffers * of the whole path from encoder to our frame_buffer. */ - rc = readFromSocket(size); + const auto readsize = readFromSocket(size); /* Notify of a buffer overrun, and drop some frames */ if (m_frame_buffer.size() >= m_config.buffer_size) { @@ -297,10 +295,10 @@ int ZmqBase::readFrame(uint8_t* buffer, size_t size) } if (m_prebuf_current > 0) { - if (rc > 0) + if (readsize > 0) m_prebuf_current--; if (m_prebuf_current == 0) - etiLog.log(info, "inputZMQ %s input pre-buffering complete\n", + etiLog.log(info, "inputZMQ %s input pre-buffering complete", m_rc_name.c_str()); /* During prebuffering, give a zeroed frame to the mux */ @@ -313,7 +311,7 @@ int ZmqBase::readFrame(uint8_t* buffer, size_t size) m_stats.notifyBuffer(m_frame_buffer.size() * size); if (m_frame_buffer.empty()) { - etiLog.log(warn, "inputZMQ %s input empty, re-enabling pre-buffering\n", + etiLog.log(warn, "inputZMQ %s input empty, re-enabling pre-buffering", m_rc_name.c_str()); // reset prebuffering m_prebuf_current = m_config.prebuffering; @@ -333,6 +331,13 @@ int ZmqBase::readFrame(uint8_t* buffer, size_t size) } } +size_t ZmqBase::readFrame(uint8_t *buffer, size_t size, uint32_t seconds, uint32_t tsta) +{ + // TODO add timestamps into the metadata and implement this + memset(buffer, 0, size); + return 0; +} + /******** MPEG input *******/ |