LCOV - code coverage report
Current view: top level - source - MediaPlayerClientBackend.h (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 65 65
Test Date: 2025-06-24 14:11:58 Functions: 100.0 % 40 40

            Line data    Source code
       1              : /*
       2              :  * Copyright (C) 2022 Sky UK
       3              :  *
       4              :  * This library is free software; you can redistribute it and/or
       5              :  * modify it under the terms of the GNU Lesser General Public
       6              :  * License as published by the Free Software Foundation;
       7              :  * version 2.1 of the License.
       8              :  *
       9              :  * This library is distributed in the hope that it will be useful,
      10              :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      11              :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12              :  * Lesser General Public License for more details.
      13              :  *
      14              :  * You should have received a copy of the GNU Lesser General Public
      15              :  * License along with this library; if not, write to the Free Software
      16              :  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
      17              :  */
      18              : 
      19              : #pragma once
      20              : 
      21              : #include "MediaPlayerClientBackendInterface.h"
      22              : #include <IMediaPipeline.h>
      23              : #include <gst/gst.h>
      24              : #include <memory>
      25              : 
      26              : namespace firebolt::rialto::client
      27              : {
      28              : class MediaPlayerClientBackend final : public MediaPlayerClientBackendInterface
      29              : {
      30              : public:
      31          174 :     MediaPlayerClientBackend() : m_mediaPlayerBackend(nullptr) {}
      32          174 :     ~MediaPlayerClientBackend() final { m_mediaPlayerBackend.reset(); }
      33              : 
      34          173 :     void createMediaPlayerBackend(std::weak_ptr<IMediaPipelineClient> client, uint32_t maxWidth, uint32_t maxHeight) override
      35              :     {
      36              :         firebolt::rialto::VideoRequirements videoRequirements;
      37          173 :         videoRequirements.maxWidth = maxWidth;
      38          173 :         videoRequirements.maxHeight = maxHeight;
      39              : 
      40              :         m_mediaPlayerBackend =
      41          173 :             firebolt::rialto::IMediaPipelineFactory::createFactory()->createMediaPipeline(client, videoRequirements);
      42              : 
      43          173 :         if (!m_mediaPlayerBackend)
      44              :         {
      45            5 :             GST_ERROR("Could not create media player backend");
      46            5 :             return;
      47              :         }
      48              :     }
      49              : 
      50          176 :     bool isMediaPlayerBackendCreated() const override { return static_cast<bool>(m_mediaPlayerBackend); }
      51              : 
      52          128 :     bool attachSource(std::unique_ptr<firebolt::rialto::IMediaPipeline::MediaSource> &source) override
      53              :     {
      54          128 :         return m_mediaPlayerBackend->attachSource(source);
      55              :     }
      56              : 
      57          136 :     bool removeSource(int32_t id) override { return m_mediaPlayerBackend->removeSource(id); }
      58              : 
      59          127 :     bool allSourcesAttached() override { return m_mediaPlayerBackend->allSourcesAttached(); }
      60              : 
      61          143 :     bool load(firebolt::rialto::MediaType type, const std::string &mimeType, const std::string &url) override
      62              :     {
      63          143 :         return m_mediaPlayerBackend->load(type, mimeType, url);
      64              :     }
      65              : 
      66            7 :     bool play() override { return m_mediaPlayerBackend->play(); }
      67          133 :     bool pause() override { return m_mediaPlayerBackend->pause(); }
      68          143 :     bool stop() override { return m_mediaPlayerBackend->stop(); }
      69            1 :     bool haveData(firebolt::rialto::MediaSourceStatus status, unsigned int needDataRequestId) override
      70              :     {
      71            1 :         return m_mediaPlayerBackend->haveData(status, needDataRequestId);
      72              :     }
      73            3 :     bool setPlaybackRate(double rate) override { return m_mediaPlayerBackend->setPlaybackRate(rate); }
      74            3 :     bool setVideoWindow(unsigned int x, unsigned int y, unsigned int width, unsigned int height) override
      75              :     {
      76            3 :         return m_mediaPlayerBackend->setVideoWindow(x, y, width, height);
      77              :     }
      78              : 
      79              :     firebolt::rialto::AddSegmentStatus
      80            1 :     addSegment(unsigned int needDataRequestId,
      81              :                const std::unique_ptr<firebolt::rialto::IMediaPipeline::MediaSegment> &mediaSegment) override
      82              :     {
      83            1 :         return m_mediaPlayerBackend->addSegment(needDataRequestId, mediaSegment);
      84              :     }
      85              : 
      86            3 :     bool getPosition(int64_t &position) override { return m_mediaPlayerBackend->getPosition(position); }
      87              : 
      88            3 :     bool setImmediateOutput(int32_t sourceId, bool immediateOutput) override
      89              :     {
      90            3 :         return m_mediaPlayerBackend->setImmediateOutput(sourceId, immediateOutput);
      91              :     }
      92              : 
      93            2 :     bool getImmediateOutput(int32_t sourceId, bool &immediateOutput) override
      94              :     {
      95            2 :         return m_mediaPlayerBackend->getImmediateOutput(sourceId, immediateOutput);
      96              :     }
      97              : 
      98            1 :     bool getStats(int32_t sourceId, uint64_t &renderedFrames, uint64_t &droppedFrames) override
      99              :     {
     100            1 :         return m_mediaPlayerBackend->getStats(sourceId, renderedFrames, droppedFrames);
     101              :     }
     102              : 
     103            3 :     bool renderFrame() override { return m_mediaPlayerBackend->renderFrame(); }
     104              : 
     105            6 :     bool setVolume(double targetVolume, uint32_t volumeDuration, EaseType easeType) override
     106              :     {
     107            6 :         return m_mediaPlayerBackend->setVolume(targetVolume, volumeDuration, easeType);
     108              :     }
     109              : 
     110            5 :     bool getVolume(double &currentVolume) override { return m_mediaPlayerBackend->getVolume(currentVolume); }
     111              : 
     112            7 :     bool setMute(bool mute, int sourceId) override { return m_mediaPlayerBackend->setMute(sourceId, mute); }
     113              : 
     114            3 :     bool getMute(bool &mute, int sourceId) override { return m_mediaPlayerBackend->getMute(sourceId, mute); }
     115              : 
     116            2 :     bool setTextTrackIdentifier(const std::string &textTrackIdentifier) override
     117              :     {
     118            2 :         return m_mediaPlayerBackend->setTextTrackIdentifier(textTrackIdentifier);
     119              :     }
     120              : 
     121            1 :     bool getTextTrackIdentifier(std::string &textTrackIdentifier) override
     122              :     {
     123            1 :         return m_mediaPlayerBackend->getTextTrackIdentifier(textTrackIdentifier);
     124              :     }
     125              : 
     126            4 :     bool setLowLatency(bool lowLatency) override { return m_mediaPlayerBackend->setLowLatency(lowLatency); }
     127              : 
     128            4 :     bool setSync(bool sync) override { return m_mediaPlayerBackend->setSync(sync); }
     129              : 
     130            2 :     bool getSync(bool &sync) override { return m_mediaPlayerBackend->getSync(sync); }
     131              : 
     132            4 :     bool setSyncOff(bool syncOff) override { return m_mediaPlayerBackend->setSyncOff(syncOff); }
     133              : 
     134            8 :     bool setStreamSyncMode(int32_t sourceId, int32_t streamSyncMode) override
     135              :     {
     136            8 :         return m_mediaPlayerBackend->setStreamSyncMode(sourceId, streamSyncMode);
     137              :     }
     138              : 
     139            2 :     bool getStreamSyncMode(int32_t &streamSyncMode) override
     140              :     {
     141            2 :         return m_mediaPlayerBackend->getStreamSyncMode(streamSyncMode);
     142              :     }
     143              : 
     144            2 :     bool flush(int32_t sourceId, bool resetTime, bool &async) override
     145              :     {
     146            2 :         return m_mediaPlayerBackend->flush(sourceId, resetTime, async);
     147              :     }
     148              : 
     149            6 :     bool setSourcePosition(int32_t sourceId, int64_t position, bool resetTime, double appliedRate = 1.0,
     150              :                            uint64_t stopPosition = GST_CLOCK_TIME_NONE) override
     151              :     {
     152            6 :         return m_mediaPlayerBackend->setSourcePosition(sourceId, position, resetTime, appliedRate, stopPosition);
     153              :     }
     154              : 
     155            3 :     bool processAudioGap(int64_t position, uint32_t duration, int64_t discontinuityGap, bool audioAac) override
     156              :     {
     157            3 :         return m_mediaPlayerBackend->processAudioGap(position, duration, discontinuityGap, audioAac);
     158              :     }
     159              : 
     160            3 :     bool setBufferingLimit(uint32_t limitBufferingMs) override
     161              :     {
     162            3 :         return m_mediaPlayerBackend->setBufferingLimit(limitBufferingMs);
     163              :     }
     164              : 
     165            2 :     bool getBufferingLimit(uint32_t &limitBufferingMs) override
     166              :     {
     167            2 :         return m_mediaPlayerBackend->getBufferingLimit(limitBufferingMs);
     168              :     }
     169              : 
     170            3 :     bool setUseBuffering(bool useBuffering) override { return m_mediaPlayerBackend->setUseBuffering(useBuffering); }
     171              : 
     172            2 :     bool getUseBuffering(bool &useBuffering) override { return m_mediaPlayerBackend->getUseBuffering(useBuffering); }
     173              : 
     174            3 :     bool switchSource(const std::unique_ptr<firebolt::rialto::IMediaPipeline::MediaSource> &source) override
     175              :     {
     176            3 :         return m_mediaPlayerBackend->switchSource(source);
     177              :     }
     178              : 
     179              : private:
     180              :     std::unique_ptr<IMediaPipeline> m_mediaPlayerBackend;
     181              : };
     182              : } // namespace firebolt::rialto::client
        

Generated by: LCOV version 2.0-1