6#ifndef PONYPLAYER_HURRICANE_HPP
7#define PONYPLAYER_HURRICANE_HPP
30 QML_ADDED_IN_VERSION(1, 0)
84 &Hurricane::slotPositionChangedBySeek);
89 qDebug() <<
"State Changed to" << QVariant::fromValue(
state).toString();
97#ifdef DEBUG_FLAG_AUTO_OPEN
98 openFile(QUrl::fromLocalFile(QDir::homePath().append(u
"/581518754-1-208.mp4"_qs)).url());
103 frameController->
pause();
104 frameController->deleteLater();
105 qWarning() <<
"Destroy HurricanePlayer.";
185 Q_INVOKABLE
void openFile(
const QString &url,
bool autoClose =
true) {
192 if (
state == HurricaneState::CLOSING ||
state == HurricaneState::INVALID) {
193 if (
state == HurricaneState::CLOSING) {
195 QCoreApplication::processEvents();
197 state = HurricaneState::LOADING;
202 qDebug() <<
"Open file:" << url;
213 if (
state == HurricaneState::PAUSED ||
state == HurricaneState::PRE_PAUSE) {
214 state = HurricaneState::PRE_PLAY;
217 qDebug() <<
"Start play video.";
227 if (
state == HurricaneState::PLAYING ||
state == HurricaneState::PRE_PLAY) {
228 state = HurricaneState::PRE_PAUSE;
231 qDebug() <<
"Pause.";
241 if (
state == HurricaneState::PRE_PAUSE ||
state == HurricaneState::PAUSED) {
242 state = HurricaneState::CLOSING;
308 if (std::isnan(pts)) {
309 qWarning() <<
"getPTS return NaN";
320 Q_INVOKABLE
void seek(qreal pos) {
322 bool playing =
false;
324 case HurricaneState::PLAYING:
325 case HurricaneState::PRE_PLAY:
328 case HurricaneState::PAUSED:
329 case HurricaneState::PRE_PAUSE:
343 qDebug() <<
"HurricanePlayer: Seek" << pos;
348 qWarning() <<
"Get tracks when" <<
state;
354 bool playing =
false;
356 case HurricaneState::PLAYING:
357 case HurricaneState::PRE_PLAY:
360 case HurricaneState::PAUSED:
361 case HurricaneState::PRE_PAUSE:
375 qDebug() <<
"Set Music Track" << i;
380 bool playing =
false;
382 case HurricaneState::PLAYING:
383 case HurricaneState::PRE_PLAY:
386 case HurricaneState::PAUSED:
387 case HurricaneState::PRE_PAUSE:
400 qDebug() <<
"forward";
404 bool playing =
false;
406 case HurricaneState::PLAYING:
407 case HurricaneState::PRE_PLAY:
410 case HurricaneState::PAUSED:
411 case HurricaneState::PRE_PAUSE:
424 qDebug() <<
"backward";
436 return frameController !=
nullptr && frameController->
hasVideo();
440 return frameController ? frameController->
getPitch() : 1.0;
448 void slotPlaybackStateChanged(
bool isPlaying) {
Definition: fireworks.hpp:10
void setVideoFrame(const VideoFrameRef &pic)
Definition: fireworks.hpp:112
将解码拿到的帧传递给输出.
Definition: framecontroller.hpp:16
void setVolume(qreal volume)
Definition: framecontroller.hpp:151
void pause()
Definition: framecontroller.hpp:167
void setPitch(qreal pitch)
Definition: framecontroller.hpp:153
void playbackStateChanged(bool isPlaying)
QStringList getTracks()
Definition: framecontroller.hpp:145
bool hasVideo()
Definition: framecontroller.hpp:149
qreal getPitch()
Definition: framecontroller.hpp:147
qreal getVideoDuration()
Definition: framecontroller.hpp:139
PONY_THREAD_SAFE void backward()
Definition: framecontroller.hpp:117
void openFile(const QString &path)
Definition: framecontroller.hpp:161
void openFileResult(PonyPlayer::OpenFileResultType result)
void setSpeed(qreal speed)
Definition: framecontroller.hpp:155
void setSelectedAudioOutputDevice(QString deviceName)
Definition: framecontroller.hpp:111
void close()
Definition: framecontroller.hpp:179
void signalPositionChangedBySeek()
void signalAudioOutputDevicesChanged()
qreal getAudioDuration()
Definition: framecontroller.hpp:133
void setPicture(VideoFrameRef pic)
void setTrack(int i)
Definition: framecontroller.hpp:107
void seek(qreal seekPos)
Definition: framecontroller.hpp:191
void signalDeviceSwitched()
void start()
Definition: framecontroller.hpp:185
QStringList getAudioDeviceList()
Definition: framecontroller.hpp:157
QString getSelectedAudioOutputDevice()
Definition: framecontroller.hpp:115
PONY_THREAD_SAFE qreal getPreferablePos()
Definition: framecontroller.hpp:125
PONY_THREAD_SAFE void forward()
Definition: framecontroller.hpp:121
播放器 QuickItem 组件,提供暴露给 QML 的接口。
Definition: hurricane.hpp:28
HurricaneState
Definition: hurricane.hpp:37
@ PAUSED
已暂停
Definition: hurricane.hpp:44
@ PRE_PLAY
准备播放, 这是一个瞬时状态, 将会很快转为
Definition: hurricane.hpp:41
@ LOADING
正在加载, 这是一个瞬时状态
Definition: hurricane.hpp:39
@ PLAYING
正在播放
Definition: hurricane.hpp:42
@ INVALID
文件无效
Definition: hurricane.hpp:40
@ PRE_PAUSE
请求暂停, 这是一个瞬时状态
Definition: hurricane.hpp:43
@ CLOSING
正在关闭当前文件, 这是一个瞬时状态
Definition: hurricane.hpp:38
Q_INVOKABLE QString getCurrentOutputDevice()
Definition: hurricane.hpp:286
QStringList getAudioDeviceList()
Definition: hurricane.hpp:120
Q_INVOKABLE qreal getPitch()
Definition: hurricane.hpp:439
Q_INVOKABLE qreal getPTS()
Definition: hurricane.hpp:306
void positionChangedBySeek()
void signalPause(QPrivateSignal)
bool backwardStatus
Definition: hurricane.hpp:54
virtual ~Hurricane() override
Definition: hurricane.hpp:102
void backwardStatusChanged()
HurricaneState state
Definition: hurricane.hpp:51
Q_INVOKABLE void setPitch(qreal pitch)
Definition: hurricane.hpp:261
void openFileResult(PonyPlayer::OpenFileResultType result, QPrivateSignal)
Q_INVOKABLE void openFile(const QString &url, bool autoClose=true)
Definition: hurricane.hpp:185
Q_INVOKABLE void pause()
Definition: hurricane.hpp:226
HurricaneState getState()
Definition: hurricane.hpp:108
Q_INVOKABLE void setVolume(qreal volume)
Definition: hurricane.hpp:253
Q_INVOKABLE void forward()
Definition: hurricane.hpp:379
double speed
Definition: hurricane.hpp:58
void signalSeek(qreal pos, QPrivateSignal)
void audioOutputDeviceChanged()
void currentOutputDeviceChanged()
Q_INVOKABLE void backward()
Definition: hurricane.hpp:403
void signalPlayerInitializing(QPrivateSignal)
bool isBackward()
Definition: hurricane.hpp:118
double getSpeed()
Definition: hurricane.hpp:114
Q_INVOKABLE void setTrack(int i)
Definition: hurricane.hpp:353
int getTrack()
Definition: hurricane.hpp:110
QStringList audioDeviceList
Definition: hurricane.hpp:52
int track
Definition: hurricane.hpp:55
Q_INVOKABLE void setCurrentOutputDevice(QString deviceName)
Definition: hurricane.hpp:279
Q_INVOKABLE void toggleBackward()
Definition: hurricane.hpp:427
Q_INVOKABLE void seek(qreal pos)
Definition: hurricane.hpp:320
Q_INVOKABLE qreal getAudioDuration()
Definition: hurricane.hpp:294
QString currentOutputDevice
Definition: hurricane.hpp:57
Q_INVOKABLE void start()
Definition: hurricane.hpp:212
Q_INVOKABLE void close()
Definition: hurricane.hpp:240
Q_INVOKABLE bool hasVideo()
Definition: hurricane.hpp:435
Q_INVOKABLE qreal getVideoDuration()
Definition: hurricane.hpp:300
QStringList tracks
Definition: hurricane.hpp:53
Q_INVOKABLE void setSpeed(qreal speed)
Definition: hurricane.hpp:269
QML_ELEMENTqreal pitch
Definition: hurricane.hpp:50
void signalOpenFile(const QString &path, QPrivateSignal)
Q_INVOKABLE QStringList getTracks()
Definition: hurricane.hpp:346
void signalClose(QPrivateSignal)
void signalStart(QPrivateSignal)
OpenFileResultType
Definition: dispatcher.hpp:32
@ FAILED
打开文件失败
Definition: dispatcher.hpp:33