Rialto 0.1
Rialto media pipeline API
All Classes Files Functions Variables Typedefs Enumerations Enumerator Pages
IMediaPipeline.h
Go to the documentation of this file.
1/*
2 * If not stated otherwise in this file or this component's LICENSE file the
3 * following copyright and licenses apply:
4 *
5 * Copyright 2022 Sky UK
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 */
19
20#ifndef FIREBOLT_RIALTO_I_MEDIA_PIPELINE_H_
21#define FIREBOLT_RIALTO_I_MEDIA_PIPELINE_H_
22
31#include <stdint.h>
32
33#include <algorithm>
34#include <memory>
35#include <optional>
36#include <string>
37#include <vector>
38
40#include "MediaCommon.h"
41
42namespace firebolt::rialto
43{
44class IMediaPipeline;
45
50{
51public:
52 IMediaPipelineFactory() = default;
53 virtual ~IMediaPipelineFactory() = default;
54
60 static std::shared_ptr<IMediaPipelineFactory> createFactory();
61
70 virtual std::unique_ptr<IMediaPipeline> createMediaPipeline(std::weak_ptr<IMediaPipelineClient> client,
71 const VideoRequirements &videoRequirements) const = 0;
72};
73
81{
82public:
83 IMediaPipeline() = default;
84 virtual ~IMediaPipeline() = default;
85
86 IMediaPipeline(const IMediaPipeline &) = delete;
87 IMediaPipeline &operator=(const IMediaPipeline &) = delete;
88 IMediaPipeline(IMediaPipeline &&) = delete;
89 IMediaPipeline &operator=(IMediaPipeline &&) = delete;
90
95 {
96 public:
100 virtual ~MediaSource() {}
101
105 virtual std::unique_ptr<MediaSource> copy() const = 0;
106
110 virtual MediaSourceType getType() const { return MediaSourceType::UNKNOWN; }
111
115 std::string getMimeType() const { return m_mimeType; }
116
120 bool getHasDrm() const { return m_hasDrm; }
121
126
130 int32_t getId() const { return m_id; }
131
135 void setId(int32_t id) { m_id = id; }
136
137 protected:
145 explicit MediaSource(SourceConfigType configType = SourceConfigType::UNKNOWN,
146 const std::string &mimeType = std::string(), bool hasDrm = true)
147 : m_id(0), m_configType(configType), m_mimeType(mimeType), m_hasDrm(hasDrm)
148 {
149 }
153 int32_t m_id;
154
159
163 std::string m_mimeType;
164
169 };
170
176 {
177 public:
178 ~MediaSourceAV() {}
179 std::unique_ptr<MediaSource> copy() const { return std::make_unique<MediaSourceAV>(*this); }
180
185
189 const std::shared_ptr<CodecData> &getCodecData() const { return m_codecData; }
190
195
196 protected:
207 explicit MediaSourceAV(SourceConfigType configType = SourceConfigType::UNKNOWN,
208 const std::string &mimeType = std::string(), bool hasDrm = true,
209 SegmentAlignment alignment = SegmentAlignment::UNDEFINED,
210 StreamFormat streamFormat = StreamFormat::UNDEFINED,
211 const std::shared_ptr<CodecData> &codecData = nullptr)
212 : MediaSource(configType, mimeType, hasDrm), m_alignment(alignment), m_streamFormat(streamFormat),
213 m_codecData(codecData)
214 {
215 }
220
225
229 std::shared_ptr<CodecData> m_codecData;
230 };
231
238 {
239 public:
250 MediaSourceAudio(const std::string &mimeType, bool hasDrm = true, const AudioConfig &audioConfig = AudioConfig(),
251 SegmentAlignment alignment = SegmentAlignment::UNDEFINED,
252 StreamFormat streamFormat = StreamFormat::UNDEFINED,
253 const std::shared_ptr<CodecData> &codecData = nullptr)
254 : MediaSourceAV(SourceConfigType::AUDIO, mimeType, hasDrm, alignment, streamFormat, codecData),
255 m_audioConfig(audioConfig)
256 {
257 }
258
260
261 MediaSourceType getType() const override { return MediaSourceType::AUDIO; }
262 std::unique_ptr<MediaSource> copy() const override { return std::make_unique<MediaSourceAudio>(*this); }
263
269 const AudioConfig &getAudioConfig() const { return m_audioConfig; }
270
271 protected:
276 };
277
284 {
285 public:
297 MediaSourceVideo(const std::string &mimeType, bool hasDrm = true,
298 int32_t width = firebolt::rialto::kUndefinedSize,
299 int32_t height = firebolt::rialto::kUndefinedSize,
300 SegmentAlignment alignment = SegmentAlignment::UNDEFINED,
301 StreamFormat streamFormat = StreamFormat::UNDEFINED,
302 const std::shared_ptr<CodecData> &codecData = nullptr)
303 : MediaSourceAV(SourceConfigType::VIDEO, mimeType, hasDrm, alignment, streamFormat, codecData),
304 m_width(width), m_height(height)
305 {
306 }
308
309 MediaSourceType getType() const override { return MediaSourceType::VIDEO; }
310 std::unique_ptr<MediaSource> copy() const { return std::make_unique<MediaSourceVideo>(*this); }
311
317 int32_t getWidth() const { return m_width; }
318
324 int32_t getHeight() const { return m_height; }
325
326 protected:
339 MediaSourceVideo(SourceConfigType sourceConfigType, const std::string &mimeType, bool hasDrm = true,
340 int32_t width = firebolt::rialto::kUndefinedSize,
341 int32_t height = firebolt::rialto::kUndefinedSize,
342 SegmentAlignment alignment = SegmentAlignment::UNDEFINED,
343 StreamFormat streamFormat = StreamFormat::UNDEFINED,
344 const std::shared_ptr<CodecData> &codecData = nullptr)
345 : MediaSourceAV(sourceConfigType, mimeType, hasDrm, alignment, streamFormat, codecData), m_width(width),
346 m_height(height)
347 {
348 }
349
350 private:
354 int m_width;
355
359 int m_height;
360 };
361
367 {
368 public:
381 MediaSourceVideoDolbyVision(const std::string &mimeType, int32_t dolbyVisionProfile, bool hasDrm = true,
382 int32_t width = firebolt::rialto::kUndefinedSize,
383 int32_t height = firebolt::rialto::kUndefinedSize,
384 SegmentAlignment alignment = SegmentAlignment::UNDEFINED,
385 StreamFormat streamFormat = StreamFormat::UNDEFINED,
386 const std::shared_ptr<CodecData> &codecData = nullptr)
387 : MediaSourceVideo(SourceConfigType::VIDEO_DOLBY_VISION, mimeType, hasDrm, width, height, alignment,
388 streamFormat, codecData),
389 m_dolbyVisionProfile(dolbyVisionProfile)
390 {
391 }
393 std::unique_ptr<MediaSource> copy() const { return std::make_unique<MediaSourceVideoDolbyVision>(*this); }
394
400 uint32_t getDolbyVisionProfile() const { return m_dolbyVisionProfile; }
401
402 protected:
407 };
408
413 {
414 public:
421 MediaSourceSubtitle(const std::string &mimeType, const std::string &textTrackIdentifier)
422 : MediaSource(SourceConfigType::SUBTITLE, mimeType, false), m_textTrackIdentifier(textTrackIdentifier)
423 {
424 }
425
427
428 MediaSourceType getType() const override { return MediaSourceType::SUBTITLE; }
429 std::unique_ptr<MediaSource> copy() const override { return std::make_unique<MediaSourceSubtitle>(*this); }
430
436 const std::string &getTextTrackIdentifier() const { return m_textTrackIdentifier; }
437
438 protected:
443 };
444
449 {
450 public:
459 MediaSegment(int32_t sourceId = 0, MediaSourceType type = MediaSourceType::UNKNOWN, int64_t timeStamp = 0,
460 int64_t duration = 0)
461 : m_sourceId(sourceId), m_type(type), m_data(nullptr), m_dataLength(0u), m_timeStamp(timeStamp),
463 m_alignment(SegmentAlignment::UNDEFINED), m_cipherMode(CipherMode::UNKNOWN), m_crypt(0), m_skip(0),
464 m_encryptionPatternSet(false), m_displayOffset(std::nullopt)
465 {
466 }
467
471 virtual ~MediaSegment() {}
472
478 virtual std::unique_ptr<MediaSegment> copy() const { return std::make_unique<MediaSegment>(*this); }
479
485 int32_t getId() const { return m_sourceId; }
486
492 MediaSourceType getType() const { return m_type; }
493
499 const uint8_t *getData() const { return m_data; }
500
506 uint32_t getDataLength() const { return m_dataLength; }
507
513 int64_t getTimeStamp() const { return m_timeStamp; }
514
518 void setTimeStamp(int64_t timeStamp) { m_timeStamp = timeStamp; }
519
525 int64_t getDuration() const { return m_duration; }
526
532 const std::vector<uint8_t> &getExtraData() const { return m_extraData; }
533
539 bool isEncrypted() const { return m_encrypted; }
540
546 const int32_t getMediaKeySessionId() const { return m_mediaKeySessionId; }
547
553 const std::vector<uint8_t> &getKeyId() const { return m_keyId; }
554
560 const std::vector<uint8_t> &getInitVector() const { return m_initVector; }
561
567 const std::vector<SubSamplePair> &getSubSamples() const { return m_subSamples; }
568
574 const uint32_t getInitWithLast15() const { return m_initWithLast15; }
575
582
588 const std::shared_ptr<CodecData> &getCodecData() const { return m_codecData; }
589
595 const CipherMode &getCipherMode() const { return m_cipherMode; }
596
605 const bool getEncryptionPattern(uint32_t &crypt, uint32_t &skip) const
606 {
607 crypt = m_crypt;
608 skip = m_skip;
610 }
611
617 std::optional<uint64_t> getDisplayOffset() const { return m_displayOffset; }
618
619 protected:
623 int32_t m_sourceId;
624
629
633 const uint8_t *m_data;
634
638 uint32_t m_dataLength;
639
643 int64_t m_timeStamp;
644
648 int64_t m_duration;
649
653 std::shared_ptr<CodecData> m_codecData;
654
658 std::vector<uint8_t> m_extraData;
659
664
669
673 std::vector<uint8_t> m_keyId;
674
678 std::vector<uint8_t> m_initVector;
679
683 std::vector<SubSamplePair> m_subSamples;
684
690
695
700
704 uint32_t m_crypt;
705
709 uint32_t m_skip;
710
715
719 std::optional<uint64_t> m_displayOffset;
720
721 public:
734 bool setData(uint32_t dataLength, const uint8_t *data)
735 {
736 m_dataLength = dataLength;
737 m_data = data;
738 return true;
739 }
740
746 bool setExtraData(const std::vector<uint8_t> &extraData)
747 {
748 m_extraData = extraData;
749 return true;
750 }
751
757 void setSegmentAlignment(const SegmentAlignment &alignment) { m_alignment = alignment; }
758
766 void setCodecData(const std::shared_ptr<CodecData> &codecData) { m_codecData = codecData; }
767
773 void setEncrypted(bool encrypted) { m_encrypted = encrypted; }
774
780 void setMediaKeySessionId(int32_t mksId) { m_mediaKeySessionId = mksId; }
781
787 void setKeyId(const std::vector<uint8_t> &keyId) { m_keyId = keyId; }
788
794 void setInitVector(const std::vector<uint8_t> &initVector) { m_initVector = initVector; }
795
802 void addSubSample(size_t numClearBytes, size_t numEncryptedBytes)
803 {
804 m_subSamples.emplace_back(SubSamplePair{numClearBytes, numEncryptedBytes});
805 }
806
812 void setInitWithLast15(uint32_t initWithLast15) { m_initWithLast15 = initWithLast15; }
813
819 void setCipherMode(CipherMode cipherMode) { m_cipherMode = cipherMode; }
820
827 void setEncryptionPattern(uint32_t crypt, uint32_t skip)
828 {
829 m_crypt = crypt;
830 m_skip = skip;
832 }
833
839 void setDisplayOffset(uint64_t displayOffset) { m_displayOffset = displayOffset; }
840
844 void copy(const MediaSegment &other);
845 };
846
851 {
852 public:
864 MediaSegmentAudio(int32_t sourceId = 0, int64_t timeStamp = 0, int64_t duration = 0, int32_t sampleRate = 0,
865 int32_t numberOfChannels = 0, uint64_t clippingStart = 0, uint64_t clippingEnd = 0)
866 : MediaSegment(sourceId, MediaSourceType::AUDIO, timeStamp, duration), m_sampleRate(sampleRate),
867 m_numberOfChannels(numberOfChannels), m_clippingStart(clippingStart), m_clippingEnd(clippingEnd)
868 {
869 }
870
879
885 std::unique_ptr<MediaSegment> copy() const override { return std::make_unique<MediaSegmentAudio>(*this); }
886
892 int32_t getSampleRate() const { return m_sampleRate; }
893
899 int32_t getNumberOfChannels() const { return m_numberOfChannels; }
900
906 uint64_t getClippingStart() const { return m_clippingStart; }
907
913 uint64_t getClippingEnd() const { return m_clippingEnd; }
914
921 {
922 copy(other);
923 return *this;
924 }
925
926 protected:
930 void copy(const MediaSegmentAudio &other);
931
936
941
946
951 };
952
957 {
958 public:
969 MediaSegmentVideo(int32_t sourceId = 0, int64_t timeStamp = 0, int64_t duration = 0,
970 int32_t width = firebolt::rialto::kUndefinedSize,
971 int32_t height = firebolt::rialto::kUndefinedSize,
974 : MediaSegment(sourceId, MediaSourceType::VIDEO, timeStamp, duration), m_width(width), m_height(height),
975 m_frameRate(frameRate)
976 {
977 }
978
983 {
984 m_width = other.m_width;
985 m_height = other.m_height;
986 m_frameRate = other.m_frameRate;
987 }
988
994 std::unique_ptr<MediaSegment> copy() const override { return std::make_unique<MediaSegmentVideo>(*this); }
995
1001 int32_t getWidth() const { return m_width; }
1002
1008 int32_t getHeight() const { return m_height; }
1009
1016
1023 {
1024 copy(other);
1025 return *this;
1026 }
1027
1028 protected:
1032 void copy(const MediaSegmentVideo &other);
1033
1037 int32_t m_width;
1038
1042 int32_t m_height;
1043
1048 };
1049
1053 typedef std::vector<std::unique_ptr<MediaSegment>> MediaSegmentVector;
1054
1060 virtual std::weak_ptr<IMediaPipelineClient> getClient() = 0;
1061
1076 virtual bool load(MediaType type, const std::string &mimeType, const std::string &url) = 0;
1077
1090 virtual bool attachSource(const std::unique_ptr<MediaSource> &source) = 0;
1091
1104 virtual bool removeSource(int32_t id) = 0;
1105
1117 virtual bool allSourcesAttached() = 0;
1118
1131 virtual bool play() = 0;
1132
1145 virtual bool pause() = 0;
1146
1159 virtual bool stop() = 0;
1160
1171 virtual bool setPlaybackRate(double rate) = 0;
1172
1193 virtual bool setPosition(int64_t position) = 0;
1194
1204 virtual bool getPosition(int64_t &position) = 0;
1205
1217 virtual bool getStats(int32_t sourceId, uint64_t &renderedFrames, uint64_t &droppedFrames) = 0;
1218
1229 virtual bool setImmediateOutput(int32_t sourceId, bool immediateOutput) = 0;
1230
1241 virtual bool getImmediateOutput(int32_t sourceId, bool &immediateOutput) = 0;
1242
1253 virtual bool setVideoWindow(uint32_t x, uint32_t y, uint32_t width, uint32_t height) = 0;
1254
1273 virtual bool haveData(MediaSourceStatus status, uint32_t needDataRequestId) = 0;
1274
1293 virtual AddSegmentStatus addSegment(uint32_t needDataRequestId, const std::unique_ptr<MediaSegment> &mediaSegment) = 0;
1294
1298 virtual bool renderFrame() = 0;
1299
1310 virtual bool setVolume(double targetVolume, uint32_t volumeDuration = 0,
1311 EaseType easeType = EaseType::EASE_LINEAR) = 0;
1312
1320 virtual bool getVolume(double &currentVolume) = 0;
1321
1332 virtual bool setMute(int32_t sourceId, bool mute) = 0;
1333
1342 virtual bool getMute(int32_t sourceId, bool &mute) = 0;
1343
1351 virtual bool setTextTrackIdentifier(const std::string &textTrackIdentifier) = 0;
1352
1360 virtual bool getTextTrackIdentifier(std::string &textTrackIdentifier) = 0;
1361
1371 virtual bool setLowLatency(bool lowLatency) = 0;
1372
1382 virtual bool setSync(bool sync) = 0;
1383
1391 virtual bool getSync(bool &sync) = 0;
1392
1402 virtual bool setSyncOff(bool syncOff) = 0;
1403
1415 virtual bool setStreamSyncMode(int32_t sourceId, int32_t streamSyncMode) = 0;
1416
1424 virtual bool getStreamSyncMode(int32_t &streamSyncMode) = 0;
1425
1437 virtual bool flush(int32_t sourceId, bool resetTime, bool &async) = 0;
1438
1452 virtual bool setSourcePosition(int32_t sourceId, int64_t position, bool resetTime = false, double appliedRate = 1.0,
1453 uint64_t stopPosition = kUndefinedPosition) = 0;
1454
1467 virtual bool processAudioGap(int64_t position, uint32_t duration, int64_t discontinuityGap, bool audioAac) = 0;
1468
1479 virtual bool setBufferingLimit(uint32_t limitBufferingMs) = 0;
1480
1491 virtual bool getBufferingLimit(uint32_t &limitBufferingMs) = 0;
1492
1503 virtual bool setUseBuffering(bool useBuffering) = 0;
1504
1514 virtual bool getUseBuffering(bool &useBuffering) = 0;
1515
1525 virtual bool switchSource(const std::unique_ptr<MediaSource> &source) = 0;
1526};
1527
1528}; // namespace firebolt::rialto
1529
1530#endif // FIREBOLT_RIALTO_I_MEDIA_PIPELINE_H_
AddSegmentStatus
AddSegmentStatus.
Definition MediaCommon.h:239
EaseType
Ease type for audio volume changes.
Definition MediaCommon.h:462
SegmentAlignment
The alignment of media segment.
Definition MediaCommon.h:338
MediaType
The media type of media to be played.
Definition MediaCommon.h:106
SourceConfigType
Shows the types of source configuration.
Definition MediaCommon.h:84
StreamFormat
The Stream Format of media segment.
Definition MediaCommon.h:348
CipherMode
Cipher mode for common encryption, see https://www.iso.org/obp/ui/#iso:std:iso-iec:23001:-7:ed-3:v1:e...
Definition MediaCommon.h:414
constexpr int32_t kUndefinedSize
The value of an undefined size.
Definition MediaCommon.h:57
MediaSourceType
The supported types of media source.
Definition MediaCommon.h:73
MediaSourceStatus
The media source status. This is the status of the source after a read.
Definition MediaCommon.h:116
IMediaPipeline factory class, returns a concrete implementation of IMediaPipeline.
Definition IMediaPipeline.h:50
virtual std::unique_ptr< IMediaPipeline > createMediaPipeline(std::weak_ptr< IMediaPipelineClient > client, const VideoRequirements &videoRequirements) const =0
IMediaPipeline factory method, returns a concrete implementation of IMediaPipeline.
static std::shared_ptr< IMediaPipelineFactory > createFactory()
Create a IMediaPipelineFactory instance.
A class that represents media source audio data.
Definition IMediaPipeline.h:851
MediaSegmentAudio & operator=(const MediaSegmentAudio &other)
Copy assignment operator.
Definition IMediaPipeline.h:920
uint64_t m_clippingStart
The amount of audio to clip from start of buffer.
Definition IMediaPipeline.h:945
int32_t m_numberOfChannels
The number of audio channels.
Definition IMediaPipeline.h:940
MediaSegmentAudio(int32_t sourceId=0, int64_t timeStamp=0, int64_t duration=0, int32_t sampleRate=0, int32_t numberOfChannels=0, uint64_t clippingStart=0, uint64_t clippingEnd=0)
Default constructor.
Definition IMediaPipeline.h:864
uint64_t getClippingEnd() const
Return the amount of audio to clip from end of buffer.
Definition IMediaPipeline.h:913
MediaSegmentAudio(const MediaSegmentAudio &other)
Copy constructor.
Definition IMediaPipeline.h:874
std::unique_ptr< MediaSegment > copy() const override
Makes a shallow copy of the segment.
Definition IMediaPipeline.h:885
int32_t getSampleRate() const
Return the audio sample rate.
Definition IMediaPipeline.h:892
uint64_t m_clippingEnd
The amount of audio to clip from end of buffer.
Definition IMediaPipeline.h:950
int32_t getNumberOfChannels() const
Return the number of audio channels.
Definition IMediaPipeline.h:899
uint64_t getClippingStart() const
Return the amount of audio to clip from start of buffer.
Definition IMediaPipeline.h:906
int32_t m_sampleRate
The audio sample rate.
Definition IMediaPipeline.h:935
void copy(const MediaSegmentAudio &other)
Copies the data from other to this.
A class that represents media source video data.
Definition IMediaPipeline.h:957
int32_t m_width
The video width in pixels.
Definition IMediaPipeline.h:1037
MediaSegmentVideo(const MediaSegmentVideo &other)
Copy constructor.
Definition IMediaPipeline.h:982
firebolt::rialto::Fraction m_frameRate
The fractional framerate of the sample.
Definition IMediaPipeline.h:1047
std::unique_ptr< MediaSegment > copy() const override
Makes a shallow copy of the segment.
Definition IMediaPipeline.h:994
MediaSegmentVideo(int32_t sourceId=0, int64_t timeStamp=0, int64_t duration=0, int32_t width=firebolt::rialto::kUndefinedSize, int32_t height=firebolt::rialto::kUndefinedSize, firebolt::rialto::Fraction frameRate={firebolt::rialto::kUndefinedSize, firebolt::rialto::kUndefinedSize})
Default constructor.
Definition IMediaPipeline.h:969
firebolt::rialto::Fraction getFrameRate() const
Return the video frameRate.
Definition IMediaPipeline.h:1015
void copy(const MediaSegmentVideo &other)
Copies the data from other to this.
int32_t m_height
The video height in pixels.
Definition IMediaPipeline.h:1042
MediaSegmentVideo & operator=(const MediaSegmentVideo &other)
Copy assignment operator.
Definition IMediaPipeline.h:1022
int32_t getWidth() const
Return the video width.
Definition IMediaPipeline.h:1001
int32_t getHeight() const
Return the video height.
Definition IMediaPipeline.h:1008
A class that represents a media segment.
Definition IMediaPipeline.h:449
MediaSourceType getType() const
The source type for the data.
Definition IMediaPipeline.h:492
int64_t getDuration() const
Returns the duration.
Definition IMediaPipeline.h:525
uint32_t getDataLength() const
Returns a the data length.
Definition IMediaPipeline.h:506
void setInitVector(const std::vector< uint8_t > &initVector)
Sets the encryption initialisation vector.
Definition IMediaPipeline.h:794
bool isEncrypted() const
Indicates that the data is encrypted.
Definition IMediaPipeline.h:539
std::vector< uint8_t > m_keyId
The encryption key id.
Definition IMediaPipeline.h:673
void setEncrypted(bool encrypted)
Sets the encrypted flag.
Definition IMediaPipeline.h:773
const std::vector< SubSamplePair > & getSubSamples() const
Returns the sub samples. Empty if unencrypted.
Definition IMediaPipeline.h:567
std::vector< SubSamplePair > m_subSamples
The sub-sample pairs.
Definition IMediaPipeline.h:683
void setSegmentAlignment(const SegmentAlignment &alignment)
Sets the segment alignment.
Definition IMediaPipeline.h:757
bool setExtraData(const std::vector< uint8_t > &extraData)
Sets the extra data.
Definition IMediaPipeline.h:746
const uint8_t * getData() const
Returns a pointer to the data.
Definition IMediaPipeline.h:499
void setCodecData(const std::shared_ptr< CodecData > &codecData)
Sets new codec_data for the segment.
Definition IMediaPipeline.h:766
std::optional< uint64_t > m_displayOffset
The offset in the source file of the beginning of the media segment.
Definition IMediaPipeline.h:719
void setKeyId(const std::vector< uint8_t > &keyId)
Sets the key id.
Definition IMediaPipeline.h:787
void addSubSample(size_t numClearBytes, size_t numEncryptedBytes)
Adds a sub-sample pair to the sub samples.
Definition IMediaPipeline.h:802
const uint32_t getInitWithLast15() const
Returns the initWithLast15 value.
Definition IMediaPipeline.h:574
const uint8_t * m_data
The data.
Definition IMediaPipeline.h:633
int32_t m_sourceId
The source id.
Definition IMediaPipeline.h:623
void setDisplayOffset(uint64_t displayOffset)
Sets the display offset.
Definition IMediaPipeline.h:839
void copy(const MediaSegment &other)
Copies the data from other to this.
const std::vector< uint8_t > & getKeyId() const
Returns the key id. Empty if unencrypted.
Definition IMediaPipeline.h:553
virtual ~MediaSegment()
Virtual destructor.
Definition IMediaPipeline.h:471
int64_t m_duration
The duration.
Definition IMediaPipeline.h:648
CipherMode m_cipherMode
Cipher mode of the sample.
Definition IMediaPipeline.h:699
int64_t getTimeStamp() const
Returns the time stamp.
Definition IMediaPipeline.h:513
uint32_t m_initWithLast15
Whether decryption context needs to be initialized with last 15 bytes. Currently this only applies to...
Definition IMediaPipeline.h:689
void setInitWithLast15(uint32_t initWithLast15)
Sets initWithLast15 value.
Definition IMediaPipeline.h:812
uint32_t m_skip
Skip byte block value.
Definition IMediaPipeline.h:709
int64_t m_timeStamp
The time stamp.
Definition IMediaPipeline.h:643
uint32_t m_crypt
Crypt byte block value.
Definition IMediaPipeline.h:704
bool m_encrypted
Indicates the data is encrypted.
Definition IMediaPipeline.h:663
const bool getEncryptionPattern(uint32_t &crypt, uint32_t &skip) const
Gets the crypt & skip byte block for pattern encryption.
Definition IMediaPipeline.h:605
MediaSegment(int32_t sourceId=0, MediaSourceType type=MediaSourceType::UNKNOWN, int64_t timeStamp=0, int64_t duration=0)
Default constructor.
Definition IMediaPipeline.h:459
std::vector< uint8_t > m_initVector
The encryption key initialisation vector.
Definition IMediaPipeline.h:678
std::optional< uint64_t > getDisplayOffset() const
Gets the display offset.
Definition IMediaPipeline.h:617
int32_t getId() const
Return the source id.
Definition IMediaPipeline.h:485
void setEncryptionPattern(uint32_t crypt, uint32_t skip)
Sets the crypt & skip byte block for pattern encryption.
Definition IMediaPipeline.h:827
std::shared_ptr< CodecData > m_codecData
Additional data for decoder.
Definition IMediaPipeline.h:653
const std::vector< uint8_t > & getExtraData() const
Returns a pointer to the extra data.
Definition IMediaPipeline.h:532
MediaSourceType m_type
The source type.
Definition IMediaPipeline.h:628
const SegmentAlignment getSegmentAlignment() const
Returns the segment alignment.
Definition IMediaPipeline.h:581
std::vector< uint8_t > m_extraData
The data.
Definition IMediaPipeline.h:658
virtual std::unique_ptr< MediaSegment > copy() const
Makes a shallow copy of the segment.
Definition IMediaPipeline.h:478
bool setData(uint32_t dataLength, const uint8_t *data)
Sets the segment data.
Definition IMediaPipeline.h:734
const CipherMode & getCipherMode() const
Gets the cipher mode for common encryption.
Definition IMediaPipeline.h:595
const std::vector< uint8_t > & getInitVector() const
Returns the initialisation vector. Empty if unencrypted.
Definition IMediaPipeline.h:560
bool m_encryptionPatternSet
Whether the encryption pattern has been set.
Definition IMediaPipeline.h:714
SegmentAlignment m_alignment
The alignment of media segment.
Definition IMediaPipeline.h:694
void setMediaKeySessionId(int32_t mksId)
Sets the media key session id.
Definition IMediaPipeline.h:780
void setTimeStamp(int64_t timeStamp)
Sets the time stamp (value in nanoseconds).
Definition IMediaPipeline.h:518
const std::shared_ptr< CodecData > & getCodecData() const
Gets the codec data.
Definition IMediaPipeline.h:588
void setCipherMode(CipherMode cipherMode)
Sets the cipher mode for common encryption.
Definition IMediaPipeline.h:819
int32_t m_mediaKeySessionId
Key session ID to use for decryption - only required for Netflix.
Definition IMediaPipeline.h:668
uint32_t m_dataLength
The data length.
Definition IMediaPipeline.h:638
const int32_t getMediaKeySessionId() const
Returns the media key session id. Empty if unencrypted.
Definition IMediaPipeline.h:546
A class that represents media source audio and video derived from MediaSource class,...
Definition IMediaPipeline.h:176
const std::shared_ptr< CodecData > & getCodecData() const
Gets the codec data.
Definition IMediaPipeline.h:189
std::unique_ptr< MediaSource > copy() const
Create a copy.
Definition IMediaPipeline.h:179
SegmentAlignment getSegmentAlignment() const
Gets the segment alignment.
Definition IMediaPipeline.h:184
SegmentAlignment m_alignment
The alignment of media segment.
Definition IMediaPipeline.h:219
StreamFormat getStreamFormat() const
Gets the stream format.
Definition IMediaPipeline.h:194
MediaSourceAV(SourceConfigType configType=SourceConfigType::UNKNOWN, const std::string &mimeType=std::string(), bool hasDrm=true, SegmentAlignment alignment=SegmentAlignment::UNDEFINED, StreamFormat streamFormat=StreamFormat::UNDEFINED, const std::shared_ptr< CodecData > &codecData=nullptr)
Default constructor.
Definition IMediaPipeline.h:207
StreamFormat m_streamFormat
The stream format.
Definition IMediaPipeline.h:224
std::shared_ptr< CodecData > m_codecData
Additional data for decoder.
Definition IMediaPipeline.h:229
A class that represents media source audio derived from MediaSource class, which represents the sourc...
Definition IMediaPipeline.h:238
const AudioConfig & getAudioConfig() const
Gets the audio specific configuration.
Definition IMediaPipeline.h:269
MediaSourceAudio(const std::string &mimeType, bool hasDrm=true, const AudioConfig &audioConfig=AudioConfig(), SegmentAlignment alignment=SegmentAlignment::UNDEFINED, StreamFormat streamFormat=StreamFormat::UNDEFINED, const std::shared_ptr< CodecData > &codecData=nullptr)
Constructor for audio specific configuration.
Definition IMediaPipeline.h:250
MediaSourceType getType() const override
Return the source type.
Definition IMediaPipeline.h:261
AudioConfig m_audioConfig
Variable that stores the audio specific configuration.
Definition IMediaPipeline.h:275
std::unique_ptr< MediaSource > copy() const override
Create a copy.
Definition IMediaPipeline.h:262
A class that represents media source subtitle derived from media source video data.
Definition IMediaPipeline.h:413
MediaSourceSubtitle(const std::string &mimeType, const std::string &textTrackIdentifier)
Construct a new Media Source Subtitle object.
Definition IMediaPipeline.h:421
std::unique_ptr< MediaSource > copy() const override
Create a copy.
Definition IMediaPipeline.h:429
MediaSourceType getType() const override
Return the source type.
Definition IMediaPipeline.h:428
const std::string & getTextTrackIdentifier() const
Get the Text Track Identifier object.
Definition IMediaPipeline.h:436
std::string m_textTrackIdentifier
Variable that stores the text track identifier.
Definition IMediaPipeline.h:442
A class that represents media source video dolby vision derived from media source video data.
Definition IMediaPipeline.h:367
uint32_t m_dolbyVisionProfile
Variable that stores the Dolby Vision Profile.
Definition IMediaPipeline.h:406
std::unique_ptr< MediaSource > copy() const
Create a copy.
Definition IMediaPipeline.h:393
MediaSourceVideoDolbyVision(const std::string &mimeType, int32_t dolbyVisionProfile, bool hasDrm=true, int32_t width=firebolt::rialto::kUndefinedSize, int32_t height=firebolt::rialto::kUndefinedSize, SegmentAlignment alignment=SegmentAlignment::UNDEFINED, StreamFormat streamFormat=StreamFormat::UNDEFINED, const std::shared_ptr< CodecData > &codecData=nullptr)
Constructor for dolby vision specific configuration.
Definition IMediaPipeline.h:381
uint32_t getDolbyVisionProfile() const
Gets the dolby vision profile.
Definition IMediaPipeline.h:400
A class that represents media source video derived from MediaSource class, which represents the sourc...
Definition IMediaPipeline.h:284
MediaSourceVideo(const std::string &mimeType, bool hasDrm=true, int32_t width=firebolt::rialto::kUndefinedSize, int32_t height=firebolt::rialto::kUndefinedSize, SegmentAlignment alignment=SegmentAlignment::UNDEFINED, StreamFormat streamFormat=StreamFormat::UNDEFINED, const std::shared_ptr< CodecData > &codecData=nullptr)
Constructor for video specific configuration.
Definition IMediaPipeline.h:297
int32_t getHeight() const
Gets the height of the video.
Definition IMediaPipeline.h:324
MediaSourceVideo(SourceConfigType sourceConfigType, const std::string &mimeType, bool hasDrm=true, int32_t width=firebolt::rialto::kUndefinedSize, int32_t height=firebolt::rialto::kUndefinedSize, SegmentAlignment alignment=SegmentAlignment::UNDEFINED, StreamFormat streamFormat=StreamFormat::UNDEFINED, const std::shared_ptr< CodecData > &codecData=nullptr)
Constructor for video specific configuration.
Definition IMediaPipeline.h:339
MediaSourceType getType() const override
Return the source type.
Definition IMediaPipeline.h:309
int32_t getWidth() const
Gets the width of the video.
Definition IMediaPipeline.h:317
std::unique_ptr< MediaSource > copy() const
Create a copy.
Definition IMediaPipeline.h:310
A class that represents a source of media data.
Definition IMediaPipeline.h:95
SourceConfigType m_configType
The source config type.
Definition IMediaPipeline.h:158
MediaSource(SourceConfigType configType=SourceConfigType::UNKNOWN, const std::string &mimeType=std::string(), bool hasDrm=true)
Default constructor.
Definition IMediaPipeline.h:145
bool m_hasDrm
Parameter to check if encrypted frames will be used for this source.
Definition IMediaPipeline.h:168
void setId(int32_t id)
Set the source id.
Definition IMediaPipeline.h:135
virtual std::unique_ptr< MediaSource > copy() const =0
Create a copy.
std::string getMimeType() const
Return the MIME type.
Definition IMediaPipeline.h:115
int32_t getId() const
Return the source id.
Definition IMediaPipeline.h:130
std::string m_mimeType
The MIME type.
Definition IMediaPipeline.h:163
int32_t m_id
The source id. Parameter will be set by a successful call to attachSource()
Definition IMediaPipeline.h:153
virtual ~MediaSource()
Virtual destructor.
Definition IMediaPipeline.h:100
SourceConfigType getConfigType() const
Return the source config type.
Definition IMediaPipeline.h:125
virtual MediaSourceType getType() const
Return the source type.
Definition IMediaPipeline.h:110
bool getHasDrm() const
Return if source has drm.
Definition IMediaPipeline.h:120
The definition of the IMediaPipeline interface.
Definition IMediaPipeline.h:81
virtual bool setPlaybackRate(double rate)=0
Set the playback rate.
virtual bool setUseBuffering(bool useBuffering)=0
Enables/disables the buffering option.
virtual std::weak_ptr< IMediaPipelineClient > getClient()=0
Returns the media player client.
virtual bool removeSource(int32_t id)=0
Unattaches a source.
virtual bool load(MediaType type, const std::string &mimeType, const std::string &url)=0
Loads the media and backend delegate.
virtual bool setVideoWindow(uint32_t x, uint32_t y, uint32_t width, uint32_t height)=0
Sets the coordinates of where the video should be displayed.
virtual bool getPosition(int64_t &position)=0
Get the playback position in nanoseconds.
virtual bool processAudioGap(int64_t position, uint32_t duration, int64_t discontinuityGap, bool audioAac)=0
Process audio gap.
std::vector< std::unique_ptr< MediaSegment > > MediaSegmentVector
A vector that contains one or more media segments.
Definition IMediaPipeline.h:1053
virtual bool setSourcePosition(int32_t sourceId, int64_t position, bool resetTime=false, double appliedRate=1.0, uint64_t stopPosition=kUndefinedPosition)=0
Set the source position in nanoseconds.
virtual bool flush(int32_t sourceId, bool resetTime, bool &async)=0
Flushes a source.
virtual bool setTextTrackIdentifier(const std::string &textTrackIdentifier)=0
Change Text Track Identifier.
virtual bool play()=0
Starts playback of the media.
virtual bool setBufferingLimit(uint32_t limitBufferingMs)=0
Set buffering limit.
virtual bool getImmediateOutput(int32_t sourceId, bool &immediateOutput)=0
Gets the "Immediate Output" property for this source.
virtual bool setLowLatency(bool lowLatency)=0
Set low latency property on the audio sink. Default false.
virtual bool setSyncOff(bool syncOff)=0
Set sync off property on the audio decoder. Default false.
virtual bool setPosition(int64_t position)=0
Set the playback position in nanoseconds.
virtual bool getStreamSyncMode(int32_t &streamSyncMode)=0
Get stream sync mode property on the audio decoder.
virtual bool pause()=0
Pauses playback of the media.
virtual bool allSourcesAttached()=0
Notifies Rialto Server that all sources were attached.
virtual bool haveData(MediaSourceStatus status, uint32_t needDataRequestId)=0
Returns data requested using notifyNeedMediaData().
virtual bool getUseBuffering(bool &useBuffering)=0
Checks, if buffering is enabled.
virtual bool getTextTrackIdentifier(std::string &textTrackIdentifier)=0
Get Text Track Identifier.
virtual bool setVolume(double targetVolume, uint32_t volumeDuration=0, EaseType easeType=EaseType::EASE_LINEAR)=0
Set the target volume level and transition duration with easing type. By default volume is set immedi...
virtual bool getStats(int32_t sourceId, uint64_t &renderedFrames, uint64_t &droppedFrames)=0
Get stats for this source.
virtual bool setMute(int32_t sourceId, bool mute)=0
Set mute status of pipeline.
virtual bool getMute(int32_t sourceId, bool &mute)=0
Get current mute status of the media source.
virtual bool stop()=0
Stops playback of the media.
virtual bool attachSource(const std::unique_ptr< MediaSource > &source)=0
Attaches a source stream to the backend.
virtual bool setStreamSyncMode(int32_t sourceId, int32_t streamSyncMode)=0
Set stream sync mode property on the audio decoder or video filter. Default 0.
virtual bool getVolume(double &currentVolume)=0
Get current audio level. Fetches the current volume level for the pipeline.
virtual bool getBufferingLimit(uint32_t &limitBufferingMs)=0
Get buffering limit.
virtual bool getSync(bool &sync)=0
Get sync property on the audio sink.
virtual bool switchSource(const std::unique_ptr< MediaSource > &source)=0
Switches a source stream.
virtual bool setImmediateOutput(int32_t sourceId, bool immediateOutput)=0
Sets the "Immediate Output" property for this source.
virtual bool setSync(bool sync)=0
Set sync property on the audio sink. Default false.
virtual bool renderFrame()=0
Requests to render a prerolled frame.
virtual AddSegmentStatus addSegment(uint32_t needDataRequestId, const std::unique_ptr< MediaSegment > &mediaSegment)=0
Adds a single segment to Rialto in response to notifyNeedData()
Audio specific configuration.
Definition MediaCommon.h:221
Fraction type.
Definition MediaCommon.h:426
A pair describing the clear and encrypted bytes in a sub-sample.
Definition MediaCommon.h:250
Video decoder requirements used to allocate a suitable decoder for a MediaPipeline session.
Definition MediaCommon.h:259