21 #ifndef GSTPLAYBACKENGINE_H_
22 #define GSTPLAYBACKENGINE_H_
24 #include "Utils/Pimpl.h"
25 #include "SoundOutReceiver.h"
34 namespace StreamRecorder
42 using PipelinePtr=std::shared_ptr<Pipeline>;
59 enum class GaplessState : uint8_t
69 void sig_data(
const unsigned char* data, uint64_t n_bytes);
70 void sig_spectrum_changed();
71 void sig_level_changed();
73 void sig_metadata_changed(
const MetaData& md);
74 void sig_duration_changed(
const MetaData& md);
75 void sig_bitrate_changed(
const MetaData& md);
76 void sig_cover_data(
const QByteArray& data,
const QString& mimetype);
78 void sig_current_position_changed(MilliSeconds ms);
79 void sig_buffering(
int progress);
80 void sig_track_finished();
81 void sig_track_ready();
82 void sig_error(
const QString& error_message);
85 explicit Engine(QObject* parent=
nullptr);
88 void update_bitrate(Bitrate br, GstElement* src);
89 void update_duration(GstElement* src);
91 void set_track_ready(GstElement* src);
92 void set_track_almost_finished(MilliSeconds time2go);
93 void set_track_finished(GstElement* src);
95 bool is_streamrecroder_recording()
const;
96 void set_streamrecorder_recording(
bool b);
98 void set_spectrum(
const SpectrumList& vals);
99 SpectrumList spectrum()
const;
101 void set_level(
float left,
float right);
104 void set_broadcast_enabled(
bool b);
105 void set_equalizer(
int band,
int value);
115 void jump_abs_ms(MilliSeconds pos_ms);
116 void jump_rel_ms(MilliSeconds pos_ms);
117 void jump_rel(
double percent);
118 void update_metadata(
const MetaData& md, GstElement* src);
119 void update_cover(GstElement* src,
const QByteArray& data,
const QString& mimedata);
121 bool change_track(
const MetaData& md);
123 void set_buffer_state(
int progress, GstElement* src);
124 void error(
const QString& error);
127 PipelinePtr init_pipeline(
const QString& name);
128 bool change_metadata(
const MetaData& md);
130 bool change_track_crossfading(
const MetaData& md);
131 bool change_track_gapless(
const MetaData& md);
132 bool change_track_immediatly(
const MetaData& md);
134 void set_current_position_ms(MilliSeconds pos_ms);
137 void s_gapless_changed();
138 void s_streamrecorder_active_changed();
140 void cur_pos_ms_changed(MilliSeconds pos_ms);