19 QThread *m_affinityThread =
nullptr;
24 m_affinityThread =
new QThread;
26 this->moveToThread(m_affinityThread);
27 connect(m_affinityThread, &QThread::started,
this, &FrameController::initOnThread);
28 m_affinityThread->start();
34 this->m_demuxer =
new Demuxer{
this};
35 this->m_playback =
new Playback{m_demuxer,
this};
38 Qt::DirectConnection);
85 if (updateAudioFormat) {
92 if (isPlay) { m_playback->
start(); }
93 }, Qt::QueuedConnection);
104 m_affinityThread->quit();
162 qDebug() <<
"Open file" << path;
168 qDebug() <<
"Pausing";
173 qDebug() <<
"Stopping";
180 qDebug() <<
"Closing";
186 qDebug() <<
"Starting";
192 qDebug() <<
"Start seek for" << seekPos;
211 startPoint = seekPos;
215 m_demuxer->
skipPicture([seekPos](qreal framePos) {
return framePos < seekPos; });
218 [seekPos, &startPoint](qreal framePos) {
return startPoint = framePos, framePos < seekPos; });
226 qDebug() <<
"End seek for" << seekPos;
Definition: demuxer.hpp:14
PONY_THREAD_SAFE int skipSample(const std::function< bool(qreal)> &predicate)
Definition: demuxer.hpp:73
PONY_THREAD_SAFE int skipPicture(const std::function< bool(qreal)> &predicate)
Definition: demuxer.hpp:53
qreal frontPicture()
Definition: demuxer.hpp:48
void close()
Definition: demuxer.hpp:265
PONY_THREAD_SAFE void start()
Definition: demuxer.hpp:148
void forward()
Definition: demuxer.hpp:259
qreal videoDuration()
Definition: demuxer.hpp:88
PonyAudioFormat getInputFormat()
Definition: demuxer.hpp:158
void seek(qreal secs)
Definition: demuxer.hpp:193
void openFileResult(PonyPlayer::OpenFileResultType result, QPrivateSignal)
PONY_THREAD_SAFE bool isFileOpen()
Definition: demuxer.hpp:131
PONY_THREAD_SAFE bool isBackward()
Definition: demuxer.hpp:108
void setTrack(int i)
Definition: demuxer.hpp:285
void openFile(const std::string &fn)
Definition: demuxer.hpp:210
QStringList getTracks()
Definition: demuxer.hpp:95
void backward()
Definition: demuxer.hpp:246
void setOutputFormat(PonyAudioFormat format)
Definition: demuxer.hpp:172
PONY_THREAD_SAFE void pause()
Definition: demuxer.hpp:126
void setEnableAudio(bool enable)
Definition: demuxer.hpp:154
PONY_THREAD_SAFE bool hasVideo()
Definition: demuxer.hpp:114
qreal audioDuration()
Definition: demuxer.hpp:81
将解码拿到的帧传递给输出.
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 stop()
Definition: framecontroller.hpp:172
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 signalDecoderOpenFile(std::string path)
void openFile(const QString &path)
Definition: framecontroller.hpp:161
FrameController(QObject *parent)
Definition: framecontroller.hpp:23
void signalDecoderSetTrack(int i)
void openFileResult(PonyPlayer::OpenFileResultType result)
void signalSetTrack(int i)
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 signalDecoderSeek(qreal pos)
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
~FrameController() override
Definition: framecontroller.hpp:103
QString getSelectedAudioOutputDevice()
Definition: framecontroller.hpp:115
PONY_THREAD_SAFE qreal getPreferablePos()
Definition: framecontroller.hpp:125
PONY_THREAD_SAFE void forward()
Definition: framecontroller.hpp:121
负责输出视频和音频(不含视频预览).
Definition: playback.hpp:22
void pause()
Definition: playback.hpp:259
bool isPlaying()
Definition: playback.hpp:225
void start()
Definition: playback.hpp:243
void setSpeed(qreal speed)
Definition: playback.hpp:201
void signalDeviceSwitched()
qreal getPitch()
Definition: playback.hpp:283
QString getSelectedAudioOutputDevice()
Definition: playback.hpp:209
void stop()
Definition: playback.hpp:270
void stateChanged(bool isPlaying)
PONY_THREAD_SAFE qreal getPreferablePos()
Definition: playback.hpp:162
void clearCacheFrame()
Definition: playback.hpp:217
QStringList getAudioDeviceList()
Definition: playback.hpp:281
void setPitch(qreal pitch)
Definition: playback.hpp:197
void setDesiredFormat(const PonyAudioFormat &format)
Definition: playback.hpp:180
void setSelectedAudioOutputDevice(QString deviceName)
Definition: playback.hpp:205
void requestResynchronization(bool enableAudio, bool updateAudioFormat)
void setPicture(VideoFrameRef pic)
PonyAudioFormat getDeviceFormat()
Definition: playback.hpp:166
void setVolume(qreal volume)
Definition: playback.hpp:192
void signalAudioOutputDevicesListChanged()
void showFrame()
Definition: playback.hpp:213
void setStartPoint(qreal startPoint)
Definition: playback.hpp:233
OpenFileResultType
Definition: dispatcher.hpp:32
@ FAILED
打开文件失败
Definition: dispatcher.hpp:33
constexpr PonyThread FRAME
Definition: ponyplayer.h:50