From ff795bc2d5455970dab0c007ce95c2290bb048ef Mon Sep 17 00:00:00 2001 From: Lars The Date: Wed, 9 Nov 2022 21:02:28 +0100 Subject: [PATCH] Refactoring of internal pid filtering Promote the virtual functions `Device::updatePIDFilters()` and `Device::closeActivePIDFilters()` with a default (simple) functionality. Then the same code could be reused if the concrete device doesn't needs to execute internal changes when a filter pid is changed. --- src/input/Device.h | 33 ++++++++++++++++++++++++++++---- src/input/childpipe/TSReader.cpp | 23 ---------------------- src/input/childpipe/TSReader.h | 9 +++++---- src/input/dvb/Frontend.h | 5 +++++ src/input/file/TSReader.h | 5 +++++ src/input/stream/Streamer.cpp | 23 ---------------------- src/input/stream/Streamer.h | 7 ++++--- 7 files changed, 48 insertions(+), 57 deletions(-) diff --git a/src/input/Device.h b/src/input/Device.h index 92ec60f..1aaed0a 100644 --- a/src/input/Device.h +++ b/src/input/Device.h @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -100,11 +101,35 @@ class Device : /// virtual std::string attributeDescribeString() const = 0; - /// Generic internal pid filtering Update function - virtual void updatePIDFilters() {} + /// + virtual mpegts::Filter &getFilterData() = 0; + + /// Generic pid filtering Update function + virtual void updatePIDFilters() + { + getFilterData().updatePIDFilters(_feID, + // openPid lambda function + [&](const int pid) { + SI_LOG_DEBUG("Frontend: @#1, ADD_PID: PID @#2", _feID, PID(pid)); + return true; + }, + // closePid lambda function + [&](const int pid) { + SI_LOG_DEBUG("Frontend: @#1, REMOVE_PID: PID @#2", _feID, PID(pid)); + return true; + }); + } - /// Generic internal pid filtering Close function - virtual void closeActivePIDFilters() {} + /// Generic pid filtering Close function + virtual void closeActivePIDFilters() + { + getFilterData().closeActivePIDFilters(_feID, + // closePid lambda function + [&](const int pid) { + SI_LOG_DEBUG("Frontend: @#1, REMOVE_PID: PID @#2", _feID, PID(pid)); + return true; + }); + } /// FeID getFeID() const { diff --git a/src/input/childpipe/TSReader.cpp b/src/input/childpipe/TSReader.cpp index 821166c..42f3943 100644 --- a/src/input/childpipe/TSReader.cpp +++ b/src/input/childpipe/TSReader.cpp @@ -220,29 +220,6 @@ std::string TSReader::attributeDescribeString() const { return ""; } -void TSReader::updatePIDFilters() { - _deviceData.getFilterData().updatePIDFilters(_feID, - // openPid lambda function - [&](const int pid) { - SI_LOG_DEBUG("Frontend: @#1, ADD_PID: PID @#2", _feID, PID(pid)); - return true; - }, - // closePid lambda function - [&](const int pid) { - SI_LOG_DEBUG("Frontend: @#1, REMOVE_PID: PID @#2", _feID, PID(pid)); - return true; - }); -} - -void TSReader::closeActivePIDFilters() { - _deviceData.getFilterData().closeActivePIDFilters(_feID, - // closePid lambda function - [&](const int pid) { - SI_LOG_DEBUG("Frontend: @#1, REMOVE_PID: PID @#2", _feID, PID(pid)); - return true; - }); -} - // ============================================================================= // -- Other member functions -------------------------------------------------- // ============================================================================= diff --git a/src/input/childpipe/TSReader.h b/src/input/childpipe/TSReader.h index fd3a3d1..5d9197b 100644 --- a/src/input/childpipe/TSReader.h +++ b/src/input/childpipe/TSReader.h @@ -108,14 +108,15 @@ class TSReader : virtual std::string attributeDescribeString() const final; - virtual void updatePIDFilters() final; - - virtual void closeActivePIDFilters() final; + virtual mpegts::Filter &getFilterData() final + { + return _deviceData.getFilterData(); + } // ===================================================================== // -- Other member functions ------------------------------------------ // ===================================================================== - private: + protected: // ===================================================================== // -- Data members ----------------------------------------------------- diff --git a/src/input/dvb/Frontend.h b/src/input/dvb/Frontend.h index 7bb2e18..f5aa3ba 100644 --- a/src/input/dvb/Frontend.h +++ b/src/input/dvb/Frontend.h @@ -171,6 +171,11 @@ class Frontend : virtual std::string attributeDescribeString() const final; + virtual mpegts::Filter &getFilterData() final + { + return _frontendData.getFilterData(); + } + /// virtual void updatePIDFilters() final; diff --git a/src/input/file/TSReader.h b/src/input/file/TSReader.h index a7bad3e..842ee9a 100644 --- a/src/input/file/TSReader.h +++ b/src/input/file/TSReader.h @@ -108,6 +108,11 @@ class TSReader : virtual std::string attributeDescribeString() const final; + virtual mpegts::Filter &getFilterData() final + { + return _deviceData.getFilterData(); + } + // ===================================================================== // -- Other member functions ------------------------------------------ // ===================================================================== diff --git a/src/input/stream/Streamer.cpp b/src/input/stream/Streamer.cpp index 149c186..929c1a4 100644 --- a/src/input/stream/Streamer.cpp +++ b/src/input/stream/Streamer.cpp @@ -204,29 +204,6 @@ std::string Streamer::attributeDescribeString() const { return ""; } -void Streamer::updatePIDFilters() { - _deviceData.getFilterData().updatePIDFilters(_feID, - // openPid lambda function - [&](const int pid) { - SI_LOG_DEBUG("Frontend: @#1, ADD_PID: PID @#2", _feID, PID(pid)); - return true; - }, - // closePid lambda function - [&](const int pid) { - SI_LOG_DEBUG("Frontend: @#1, REMOVE_PID: PID @#2", _feID, PID(pid)); - return true; - }); -} - -void Streamer::closeActivePIDFilters() { - _deviceData.getFilterData().closeActivePIDFilters(_feID, - // closePid lambda function - [&](const int pid) { - SI_LOG_DEBUG("Frontend: @#1, REMOVE_PID: PID @#2", _feID, PID(pid)); - return true; - }); -} - // ============================================================================= // -- Other member functions -------------------------------------------------- // ============================================================================= diff --git a/src/input/stream/Streamer.h b/src/input/stream/Streamer.h index 01cc9c0..129a2e5 100644 --- a/src/input/stream/Streamer.h +++ b/src/input/stream/Streamer.h @@ -109,9 +109,10 @@ class Streamer : virtual std::string attributeDescribeString() const final; - virtual void updatePIDFilters() final; - - virtual void closeActivePIDFilters() final; + virtual mpegts::Filter &getFilterData() final + { + return _deviceData.getFilterData(); + } // ===================================================================== // -- Other member functions ------------------------------------------