diff options
Diffstat (limited to 'src/lib/passthrough_packet_queue.cc')
| -rw-r--r-- | src/lib/passthrough_packet_queue.cc | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/lib/passthrough_packet_queue.cc b/src/lib/passthrough_packet_queue.cc new file mode 100644 index 000000000..03038ff5f --- /dev/null +++ b/src/lib/passthrough_packet_queue.cc @@ -0,0 +1,56 @@ +/* + Copyright (C) 2026 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic 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 2 of the License, or + (at your option) any later version. + + DCP-o-matic 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 DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + + +#include "dcpomatic_assert.h" +#include "passthrough_packet_queue.h" +#include <boost/core/exchange.hpp> +#include <boost/optional.hpp> +#include <utility> + + +using boost::optional; + + +void +PassthroughPacketQueue::add(AVPacket* packet, Type type) +{ + DCPOMATIC_ASSERT(!_store); + if (type == PacketQueue::Type::DROP) { + _store = std::make_pair(PacketInfo(packet), type); + } else { + _store = std::make_pair(Packet(packet), type); + } +} + + +optional<std::pair<PacketQueue::Packet, PacketQueue::Type>> +PassthroughPacketQueue::get(bool) +{ + return boost::exchange(_store, boost::none); +} + + +void +PassthroughPacketQueue::clear() +{ + _store = boost::none; +} + |
