This file is indexed.

/usr/include/libAvKys/akelement.h is in libavkys-dev 8.1.0+dfsg-7.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/* Webcamoid, webcam capture application.
 * Copyright (C) 2011-2017  Gonzalo Exequiel Pedone
 *
 * Webcamoid 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 3 of the License, or
 * (at your option) any later version.
 *
 * Webcamoid 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 Webcamoid. If not, see <http://www.gnu.org/licenses/>.
 *
 * Web-Site: http://webcamoid.github.io/
 */

#ifndef AKELEMENT_H
#define AKELEMENT_H

#include <QStringList>
#include <QQmlEngine>
#include <QQmlComponent>
#include <QQmlContext>

#include "akaudiopacket.h"
#include "akvideopacket.h"

#define akSend(packet) { \
    if (packet) \
        emit this->oStream(packet); \
    \
    return packet; \
}

class AkElement;
class AkElementPrivate;

typedef QSharedPointer<AkElement> AkElementPtr;

/// Plugin template.
class AKCOMMONS_EXPORT AkElement: public QObject
{
    Q_OBJECT
    Q_ENUMS(ElementState)
    Q_PROPERTY(QString pluginId
               READ pluginId)
    Q_PROPERTY(QString pluginPath
               READ pluginPath)
    Q_PROPERTY(AkElement::ElementState state
               READ state
               WRITE setState
               RESET resetState
               NOTIFY stateChanged)

    public:
        enum ElementState
        {
            ElementStateNull,
            ElementStatePaused,
            ElementStatePlaying
        };

        explicit AkElement(QObject *parent=nullptr);
        virtual ~AkElement();

        Q_INVOKABLE QString pluginId() const;
        Q_INVOKABLE static QString pluginId(const QString &path);
        Q_INVOKABLE QString pluginPath() const;
        Q_INVOKABLE virtual AkElement::ElementState state() const;
        Q_INVOKABLE virtual QObject *controlInterface(QQmlEngine *engine,
                                                      const QString &controlId) const;

        Q_INVOKABLE virtual bool link(const QObject *dstElement,
                                      Qt::ConnectionType connectionType=Qt::AutoConnection) const;

        Q_INVOKABLE virtual bool link(const AkElementPtr &dstElement,
                                      Qt::ConnectionType connectionType=Qt::AutoConnection) const;

        Q_INVOKABLE virtual bool unlink(const QObject *dstElement) const;
        Q_INVOKABLE virtual bool unlink(const AkElementPtr &dstElement) const;

        Q_INVOKABLE static bool link(const AkElementPtr &srcElement,
                                     const QObject *dstElement,
                                     Qt::ConnectionType connectionType=Qt::AutoConnection);
        Q_INVOKABLE static bool link(const AkElementPtr &srcElement,
                                     const AkElementPtr &dstElement,
                                     Qt::ConnectionType connectionType=Qt::AutoConnection);
        Q_INVOKABLE static bool link(const QObject *srcElement,
                                     const QObject *dstElement,
                                     Qt::ConnectionType connectionType=Qt::AutoConnection);
        Q_INVOKABLE static bool unlink(const AkElementPtr &srcElement,
                                       const QObject *dstElement);
        Q_INVOKABLE static bool unlink(const AkElementPtr &srcElement,
                                       const AkElementPtr &dstElement);
        Q_INVOKABLE static bool unlink(const QObject *srcElement,
                                       const QObject *dstElement);
        Q_INVOKABLE static AkElementPtr create(const QString &pluginId,
                                               const QString &elementName="");
        Q_INVOKABLE static AkElement *createPtr(const QString &pluginId,
                                                const QString &elementName="");
        Q_INVOKABLE static QStringList listSubModules(const QString &pluginId,
                                                      const QString &type="");
        Q_INVOKABLE QStringList listSubModules(const QStringList &types={});
        Q_INVOKABLE static QStringList listSubModulesPaths(const QString &pluginId);
        Q_INVOKABLE QStringList listSubModulesPaths();
        Q_INVOKABLE static QObject *loadSubModule(const QString &pluginId,
                                                  const QString &subModule);
        Q_INVOKABLE QObject *loadSubModule(const QString &subModule);
        Q_INVOKABLE static bool recursiveSearch();
        Q_INVOKABLE static void setRecursiveSearch(bool enable);
        Q_INVOKABLE static QStringList searchPaths();
        Q_INVOKABLE static void addSearchPath(const QString &path);
        Q_INVOKABLE static void setSearchPaths(const QStringList &searchPaths);
        Q_INVOKABLE static void resetSearchPaths();
        Q_INVOKABLE static QString subModulesPath();
        Q_INVOKABLE static void setSubModulesPath(const QString &subModulesPath);
        Q_INVOKABLE static void resetSubModulesPath();
        Q_INVOKABLE static QStringList listPlugins(const QString &type="");
        Q_INVOKABLE static QStringList listPluginPaths(const QString &searchPath);
        Q_INVOKABLE static QStringList listPluginPaths(bool all=false);
        Q_INVOKABLE static void setPluginPaths(const QStringList &paths);
        Q_INVOKABLE static QStringList pluginsBlackList();
        Q_INVOKABLE static void setPluginsBlackList(const QStringList &blackList);
        Q_INVOKABLE static QString pluginPath(const QString &pluginId);
        Q_INVOKABLE static QVariantMap pluginInfo(const QString &pluginId);
        Q_INVOKABLE static void setPluginInfo(const QString &path,
                                              const QVariantMap &metaData);
        Q_INVOKABLE static void clearCache();

        virtual AkPacket operator ()(const AkPacket &packet);
        virtual AkPacket operator ()(const AkAudioPacket &packet);
        virtual AkPacket operator ()(const AkVideoPacket &packet);

    private:
        AkElementPrivate *d;

    protected:
        virtual QString controlInterfaceProvide(const QString &controlId) const;
        virtual void controlInterfaceConfigure(QQmlContext *context,
                                               const QString &controlId) const;
        virtual void stateChange(AkElement::ElementState from, AkElement::ElementState to);

    Q_SIGNALS:
        void stateChanged(AkElement::ElementState state);
        void oStream(const AkPacket &packet);

    public Q_SLOTS:
        virtual AkPacket iStream(const AkPacket &packet);
        virtual AkPacket iStream(const AkAudioPacket &packet);
        virtual AkPacket iStream(const AkVideoPacket &packet);
        virtual bool setState(AkElement::ElementState state);
        virtual void resetState();
};

QDataStream &operator >>(QDataStream &istream, AkElement::ElementState &state);
QDataStream &operator <<(QDataStream &ostream, AkElement::ElementState state);
Q_DECLARE_METATYPE(AkElement::ElementState)

#endif // AKELEMENT_H