Skip to content
Snippets Groups Projects
Select Git revision
  • d9aee635a70b210ba700561f3a395926e0a77648
  • master default protected
  • nightly/20250722.0
  • beta/202507211539
  • stable/20250718.0
  • nightly/20250718.0
  • nightly/20250714.0
  • beta/202507141552
  • beta/202506161038
  • stable/20250613.0
  • nightly/20250613.0
  • beta/202506101658
  • stable/20250610.0
  • nightly/20250610.0
  • beta/202506091027
  • beta/202506061543
  • nightly/20250605.0
  • beta/202506051039
  • beta/202506051002
  • beta/202506041611
  • beta/202506041335
  • beta/202505231812
22 results

codecmodel.cpp

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    codecmodel.cpp 12.05 KiB
    /****************************************************************************
     *    Copyright (C) 2017-2022 Savoir-faire Linux Inc.                       *
     *   Author: Sébastien Blin <sebastien.blin@savoirfairelinux.com>           *
     *                                                                          *
     *   This library is free software; you can redistribute it and/or          *
     *   modify it under the terms of the GNU Lesser General Public             *
     *   License as published by the Free Software Foundation; either           *
     *   version 2.1 of the License, or (at your option) any later version.     *
     *                                                                          *
     *   This library 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      *
     *   Lesser 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/>.  *
     ***************************************************************************/
    #include "api/codecmodel.h"
    
    // LRC
    #include "callbackshandler.h"
    #include "dbus/configurationmanager.h"
    
    // Daemon
    #include <account_const.h>
    
    // Qt
    #include <QObject>
    #include <QList>
    
    // std
    #include <mutex>
    
    namespace lrc {
    
    using namespace api;
    
    class CodecModelPimpl : public QObject
    {
        Q_OBJECT
    public:
        CodecModelPimpl(const CodecModel& linked, const CallbacksHandler& callbacksHandler);
        ~CodecModelPimpl();
    
        void loadFromDaemon();
    
        QVector<unsigned int> codecsList_;
        QList<Codec> videoCodecs;
        std::mutex audioCodecsMtx;
        QList<Codec> audioCodecs;
        std::mutex videoCodecsMtx;
    
        const CallbacksHandler& callbacksHandler;
        const CodecModel& linked;
    
        void setActiveCodecs();
        void setCodecDetails(const Codec& codec, bool isAudio);
    
    private:
        void addCodec(const unsigned int& id, const QVector<unsigned int>& activeCodecs);
    };
    
    CodecModel::CodecModel(const account::Info& owner, const CallbacksHandler& callbacksHandler)
        : owner(owner)
        , pimpl_(std::make_unique<CodecModelPimpl>(*this, callbacksHandler))
    {}
    
    CodecModel::~CodecModel() {}
    
    QList<Codec>