File indexing completed on 2025-03-09 04:28:04
0001 /** 0002 * SPDX-FileCopyrightText: 2022-2023 Bart De Vries <bart@mogwai.be> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #pragma once 0008 0009 #include <gst/gst.h> 0010 #include <memory> 0011 0012 #include <QObject> 0013 #include <QUrl> 0014 0015 #include "abstractmediabackend.h" 0016 #include "kmediasession.h" 0017 0018 class GstMediaBackendPrivate; 0019 0020 class GstMediaBackend : public AbstractMediaBackend 0021 { 0022 Q_OBJECT 0023 0024 public: 0025 explicit GstMediaBackend(QObject *parent); 0026 ~GstMediaBackend(); 0027 0028 KMediaSession::MediaBackends backend() const override; 0029 0030 bool muted() const override; 0031 qreal volume() const override; 0032 QUrl source() const override; 0033 KMediaSession::MediaStatus mediaStatus() const override; 0034 KMediaSession::PlaybackState playbackState() const override; 0035 qreal playbackRate() const override; 0036 KMediaSession::Error error() const override; 0037 qint64 duration() const override; 0038 qint64 position() const override; 0039 bool seekable() const override; 0040 0041 public Q_SLOTS: 0042 void setMuted(bool muted) override; 0043 void setVolume(qreal volume) override; 0044 void setSource(const QUrl &source) override; 0045 void setPosition(qint64 position) override; 0046 void setPlaybackRate(qreal rate) override; 0047 0048 void play() override; 0049 void pause() override; 0050 void stop() override; 0051 0052 private: 0053 friend class GstMediaBackendPrivate; 0054 std::unique_ptr<GstMediaBackendPrivate> d; 0055 0056 void handleMessage(GstMessage *message); 0057 void timerUpdate(); 0058 };