diff --git a/src/media/media_filter.cpp b/src/media/media_filter.cpp index 693e7d7407890c5a1fe50b4401c619edf9960b16..0a962d278f8e5d0a63f2fe979d407b11aeaed703 100644 --- a/src/media/media_filter.cpp +++ b/src/media/media_filter.cpp @@ -49,7 +49,7 @@ MediaFilter::getFilterDesc() const } int -MediaFilter::initialize(const std::string& filterDesc, std::vector<MediaStream> msps) +MediaFilter::initialize(const std::string& filterDesc, const std::vector<MediaStream>& msps) { int ret = 0; desc_ = filterDesc; @@ -88,18 +88,16 @@ MediaFilter::initialize(const std::string& filterDesc, std::vector<MediaStream> for (AVFilterInOut* current = inputs.get(); current; current = current->next) { if (!current->name) return fail("Filters require non empty names", AVERROR(EINVAL)); - std::string name = current->name; - const auto& it = std::find_if(msps.begin(), msps.end(), [name](const MediaStream& msp) { + std::string_view name = current->name; + auto it = std::find_if(msps.begin(), msps.end(), [name](const MediaStream& msp) { return msp.name == name; }); if (it != msps.end()) { if ((ret = initInputFilter(current, *it)) < 0) { - std::string msg = "Failed to initialize input: " + name; - return fail(msg, ret); + return fail(fmt::format("Failed to initialize input: {}", name), ret); } } else { - std::string msg = "Failed to find matching parameters for: " + name; - return fail(msg, ret); + return fail(fmt::format("Failed to find matching parameters for: {}", name), ret); } } @@ -111,10 +109,10 @@ MediaFilter::initialize(const std::string& filterDesc, std::vector<MediaStream> return 0; } -MediaStream +const MediaStream& MediaFilter::getInputParams(const std::string& inputName) const { - for (auto ms : inputParams_) + for (const auto& ms : inputParams_) if (ms.name == inputName) return ms; return {}; @@ -265,7 +263,7 @@ MediaFilter::initOutputFilter(AVFilterInOut* out) } int -MediaFilter::initInputFilter(AVFilterInOut* in, MediaStream msp) +MediaFilter::initInputFilter(AVFilterInOut* in, const MediaStream& msp) { int ret = 0; AVBufferSrcParameters* params = av_buffersrc_parameters_alloc(); @@ -309,8 +307,8 @@ MediaFilter::initInputFilter(AVFilterInOut* in, MediaStream msp) return fail("Failed to link buffer source to graph", ret); inputs_.push_back(buffersrcCtx); - msp.name = in->name; - inputParams_.push_back(msp); + inputParams_.emplace_back(msp); + inputParams_.back().name = in->name; return ret; } @@ -328,7 +326,7 @@ MediaFilter::reinitialize() } int -MediaFilter::fail(std::string msg, int err) const +MediaFilter::fail(std::string_view msg, int err) const { if (!msg.empty()) JAMI_ERR() << msg << ": " << libav_utils::getError(err); diff --git a/src/media/media_filter.h b/src/media/media_filter.h index 6e88615eff3f9a05297793449efe512977101f5e..0f8722856098bd8a1e5acd4b4eb016a07154f04a 100644 --- a/src/media/media_filter.h +++ b/src/media/media_filter.h @@ -73,12 +73,12 @@ public: * @brief Initializes the filter graph with one or more inputs and one output. Returns a * negative code on error. */ - int initialize(const std::string& filterDesc, std::vector<MediaStream> msps); + int initialize(const std::string& filterDesc, const std::vector<MediaStream>& msps); /** * @brief Returns a MediaStream object describing the input specified by @inputName. */ - MediaStream getInputParams(const std::string& inputName) const; + const MediaStream& getInputParams(const std::string& inputName) const; /** * @brief Returns a MediaStream struct describing the frames that will be output. @@ -121,7 +121,7 @@ private: /** * @brief Initializes an input of filter graph. */ - int initInputFilter(AVFilterInOut* in, MediaStream msp); + int initInputFilter(AVFilterInOut* in, const MediaStream& msp); /** * @brief Reinitializes the filter graph. @@ -135,7 +135,7 @@ private: * * NOTE @msg should not be null. */ - int fail(std::string msg, int err) const; + int fail(std::string_view msg, int err) const; /** * @brief Frees resources used by MediaFilter.