Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
a7d53cd
Performance improvements in play request and flush (#428)
skywojciechowskim Dec 19, 2025
b4039eb
Changed Wayland Display for TextTrack (#434)
aczs Jan 14, 2026
e918186
Fixed playback info reporting for not asynchronous playbacks (#435)
aczs Jan 14, 2026
19f5628
Session server app changed to shared ptr to avoid invalid ptrs. Some …
skywojciechowskim Jan 28, 2026
20dd3e8
Asure correct data & flush order during postponed flushes (#436)
skywojciechowskim Feb 11, 2026
6c81198
Removed gstreamer interaction during RemoveSource (#444)
skywojciechowskim Feb 13, 2026
ef0589a
Allow to switch audio codec, when audio is re-attached (#448)
skywojciechowskim Feb 18, 2026
100ecf2
Microsoft Playready support for Amazon Prime RDK app (#449)
skywojciechowskim Feb 23, 2026
fc2f3fe
Re-enabled CT (#450)
skywojciechowskim Feb 23, 2026
6325af2
Feature/rdkemw 12692 (#438)
Koky2701 Mar 2, 2026
3e621ca
Fixed getting sub sink and its async prop (#456)
aczs Mar 4, 2026
f38f096
Removed blocking get_state calls from aml codec switch (#459)
aczs Mar 12, 2026
6688f0a
Revert 'report-decode-errors' and 'queued-frames' properties missing …
aczs Mar 13, 2026
0ae80e6
Fix Coverity issues in Rialto master (#457)
Koky2701 Mar 17, 2026
5a092bb
Dedicated script to install dependencies and build native build (#470)
skywojciechowskim Mar 31, 2026
83f7a33
Fix memory leaks in Rialto master (#463)
Koky2701 Apr 17, 2026
73dc08c
Fixed initialisation of playbackGroup elements in GenericPlayerContex…
skywojciechowskim Apr 20, 2026
c1e7f20
Bringing back support for "queued-frames" and "report-decode-errors" …
Koky2701 Apr 20, 2026
7ddddcb
IMediaPipeline::GetDuration method added (#486)
skywojciechowskim Apr 23, 2026
ca3a62e
Implementation of the isLive parameter (#489)
skywojciechowskim Apr 30, 2026
1dbfded
Added profiler to Rialto Server (#441)
smudri85 May 4, 2026
8b10d0a
retain preroll frames count (#475)
rekhap2kandhavelan May 5, 2026
671aa0d
Revert "Bringing back support for "queued-frames" and "report-decode-…
Koky2701 May 6, 2026
0a716fc
Do not treat server as deadlocked when outdated acks are received (#493)
skywojciechowskim May 8, 2026
3f49c6e
Disable synchronous play in RialtoServer as it caused some race condi…
skywojciechowskim May 8, 2026
1e0ba7b
RDKEMW-18668 : Add retry loop to ocdm decrypt
May 17, 2026
d45e77d
Fix build issues.
May 18, 2026
5eee279
DecryptLoop adding logs
Lekshmi-Mohan533 May 18, 2026
a6011f8
Add logging
Lekshmi-Mohan533 May 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 2 additions & 16 deletions .github/workflows/native_rialto_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,25 +36,11 @@ jobs:

- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install cmake
sudo apt-get install libunwind-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev libgstreamer1.0-dev

- name: Install protobuf
run: |
sudo apt-get install protobuf-compiler
sudo sh -x install_dependencies_for_native_build.sh

- name: Build Rialto
run: |
cmake . -B build -DNATIVE_BUILD=ON -DRIALTO_BUILD_TYPE="Debug" &> output_file.txt
if [ $? -eq 0 ]
then
make -C build &>> output_file.txt
else
exit 1
fi

sh -x build_native.sh &> output_file.txt

- name: Report Build Status Success
if: success()
Expand Down
29 changes: 29 additions & 0 deletions build_native.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/bin/bash

# If not stated otherwise in this file or this component's LICENSE file the
# following copyright and licenses apply:
#
# Copyright 2026 Sky UK
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# Script for building the Rialto Native.

cmake . -B build -DNATIVE_BUILD=ON -DRIALTO_BUILD_TYPE="Debug"
if [ $? -eq 0 ]
then
make -C build -j$(nproc)
else
exit 1
fi
1 change: 1 addition & 0 deletions common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ add_library(
source/EventThread.cpp
source/LinuxUtils.cpp
source/Timer.cpp
source/Profiler.cpp
)

set_property (
Expand Down
69 changes: 69 additions & 0 deletions common/include/Profiler.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/*
* If not stated otherwise in this file or this component's LICENSE file the
* following copyright and licenses apply:
*
* Copyright 2026 Sky UK
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef FIREBOLT_RIALTO_COMMON_PROFILER_H_
#define FIREBOLT_RIALTO_COMMON_PROFILER_H_

#include "IProfiler.h"

#include <chrono>
#include <memory>
#include <mutex>
#include <optional>
#include <string>
#include <vector>

namespace firebolt::rialto::common
{
class ProfilerFactory : public IProfilerFactory
{
public:
std::unique_ptr<IProfiler> createProfiler(std::string moduleName) const override;
};

class Profiler final : public IProfiler
{
public:
explicit Profiler(std::string module);

bool isEnabled() const noexcept override;

std::optional<RecordId> record(const std::string &stage) override;
std::optional<RecordId> record(const std::string &stage, const std::string &info) override;

void log(const RecordId id) override;

bool dumpToFile() const override;
std::vector<Record> getRecords() const override;

private:
std::optional<Record> findById(RecordId id) const;

std::string m_module;
bool m_enabled;
std::optional<std::string> m_dumpFileName;

mutable std::mutex m_mutex;
RecordId m_id{1};
std::vector<Record> m_records;
};

}; // namespace firebolt::rialto::common

#endif // FIREBOLT_RIALTO_COMMON_PROFILER_H_
136 changes: 136 additions & 0 deletions common/interface/IProfiler.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
/*
* If not stated otherwise in this file or this component's LICENSE file the
* following copyright and licenses apply:
*
* Copyright 2026 Sky UK
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef FIREBOLT_RIALTO_COMMON_I_PROFILER_H_
#define FIREBOLT_RIALTO_COMMON_I_PROFILER_H_

#include <chrono>
#include <cstdint>
#include <functional>
#include <memory>
#include <optional>
#include <string>
#include <vector>

namespace firebolt::rialto::common
{
class IProfiler;

/**
* @brief IProfiler factory class, returns a concrete implementation of IProfiler
*/
class IProfilerFactory
{
public:
IProfilerFactory() = default;
virtual ~IProfilerFactory() = default;

/**
* @brief Creates a IProfilerFactory instance.
*
* @retval the factory instance or null on error.
*/
static std::shared_ptr<IProfilerFactory> createFactory();

/**
* @brief Creates an IProfiler object.
*
* @param[in] moduleName : The name of the module
*
* @retval the new profiler instance or null on error.
*/
virtual std::unique_ptr<IProfiler> createProfiler(std::string moduleName) const = 0;
};

class IProfiler
{
public:
using RecordId = std::uint64_t;
using Clock = std::chrono::system_clock;

struct Record
{
std::string moduleName;
uint64_t id{0};
std::string stage;
std::string info;
Clock::time_point time;
};

virtual ~IProfiler() = default;

IProfiler(const IProfiler &) = delete;
IProfiler &operator=(const IProfiler &) = delete;
IProfiler(IProfiler &&) = delete;
IProfiler &operator=(IProfiler &&) = delete;

/**
* @brief Checks if profiler is enabled.
*
* @retval true if profiler is enabled, false otherwise.
*/
virtual bool isEnabled() const noexcept = 0;

/**
* @brief Creates a record for given stage.
*
* @param[in] stage : Stage name used for record creation
*
* @retval Record identifier for created record or std::nullopt.
*/
virtual std::optional<RecordId> record(const std::string &stage) = 0;

/**
* @brief Creates a record for given stage and info.
*
* @param[in] stage : Stage name used for record creation
* @param[in] info : Additional information used for record creation
*
* @retval Record identifier for created record or std::nullopt.
*/
virtual std::optional<RecordId> record(const std::string &stage, const std::string &info) = 0;

/**
* @brief Logs a record for given identifier.
*
* @param[in] id : Record identifier
*/
virtual void log(RecordId id) = 0;

/**
* @brief Dumps all records into pre-configured file.
*
* @retval true if file is created and records are dumped, false otherwise.
*/
virtual bool dumpToFile() const = 0;

/**
* @brief Retrieves existing records.
*
* @retval Snapshot copy of existing records.
*/
virtual std::vector<Record> getRecords() const = 0;

protected:
IProfiler() = default;
};

} // namespace firebolt::rialto::common

#endif // FIREBOLT_RIALTO_COMMON_I_PROFILER_H_
12 changes: 5 additions & 7 deletions common/source/EventThread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,11 @@ EventThread::EventThread(std::string threadName) : m_kThreadName(std::move(threa

EventThread::~EventThread()
{
std::unique_lock<std::mutex> locker(m_lock);

m_shutdown = true;

m_cond.notify_all();

locker.unlock();
{
std::lock_guard<std::mutex> locker(m_lock);
m_shutdown = true;
m_cond.notify_all();
}

if (m_thread.joinable())
m_thread.join();
Expand Down
Loading
Loading