21 #ifndef GSTPLAYBACKENGINE_H_
22 #define GSTPLAYBACKENGINE_H_
24 #include "Utils/Pimpl.h"
25 #include "Interfaces/Engine/AudioDataReceiverInterface.h"
31 namespace StreamRecorder
38 class SpectrumReceiver;
42 using PipelinePtr=std::shared_ptr<Pipeline>;
59 enum class GaplessState : uint8_t
69 void sigDataAvailable(
const QByteArray& data);
70 void sigSpectrumChanged();
71 void sigLevelChanged();
73 void sigMetadataChanged(
const MetaData& md);
74 void sigDurationChanged(
const MetaData& md);
75 void sigBitrateChanged(
const MetaData& md);
76 void sigCoverDataAvailable(
const QByteArray& data,
const QString& mimetype);
78 void sigCurrentPositionChanged(MilliSeconds ms);
79 void sigBuffering(
int progress);
80 void sigTrackFinished();
82 void sigError(
const QString& error_message);
85 explicit Engine(QObject* parent=
nullptr);
88 void updateBitrate(Bitrate br, GstElement* src);
89 void updateDuration(GstElement* src);
91 void setTrackReady(GstElement* src);
92 void setTrackAlmostFinished(MilliSeconds time2go);
93 void setTrackFinished(GstElement* src);
95 bool isStreamRecorderRecording()
const;
96 void setStreamRecorderRecording(
bool b);
98 void setSpectrum(
const SpectrumList& vals);
99 SpectrumList spectrum()
const;
101 void setLevel(
float left,
float right);
104 void setVisualizerEnabled(
bool levelEnabled,
bool spectrumEnabled);
105 void setBroadcastEnabled(
bool b);
106 void setEqualizer(
int band,
int value);
115 void jumpAbsMs(MilliSeconds pos_ms);
116 void jumpRelMs(MilliSeconds pos_ms);
117 void jumpRel(
double percent);
118 void updateMetadata(
const MetaData& md, GstElement* src);
119 void updateCover(GstElement* src,
const QByteArray& data,
const QString& mimedata);
121 bool changeTrack(
const MetaData& md);
123 void setBufferState(
int progress, GstElement* src);
124 void error(
const QString& error,
const QString& elementName);
127 PipelinePtr initPipeline(
const QString& name);
128 bool changeMetadata(
const MetaData& md);
130 void swapPipelines();
131 bool changeTrackCrossfading(
const MetaData& md);
132 bool changeTrackGapless(
const MetaData& md);
133 bool changeTrackImmediatly(
const MetaData& md);
135 void setCurrentPositionMs(MilliSeconds pos_ms);
138 void gaplessChanged();
139 void streamrecorderActiveChanged();
140 void currentPositionChanged(MilliSeconds pos_ms);