File indexing completed on 2024-05-26 04:59:40

0001 /*
0002     SPDX-FileCopyrightText: 2010-2022 Mladen Milinkovic <max@smoothware.net>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef SPEECHPROCESSOR_H
0008 #define SPEECHPROCESSOR_H
0009 
0010 #include "core/time.h"
0011 #include "core/subtitle.h"
0012 #include "videoplayer/waveformat.h"
0013 #include "streamprocessor/streamprocessor.h"
0014 
0015 #include <QExplicitlySharedDataPointer>
0016 #include <QList>
0017 
0018 QT_FORWARD_DECLARE_CLASS(QWidget)
0019 QT_FORWARD_DECLARE_CLASS(QProgressBar)
0020 
0021 namespace SubtitleComposer {
0022 class SpeechPlugin;
0023 class SpeechProcessor : public QObject
0024 {
0025     Q_OBJECT
0026 
0027     template <class C, class T> friend class PluginHelper;
0028 
0029 public:
0030     explicit SpeechProcessor(QWidget *parent = NULL);
0031     virtual ~SpeechProcessor();
0032 
0033     QWidget * progressWidget();
0034 
0035     inline const QMap<QString, SpeechPlugin *> & plugins() const { return m_plugins; }
0036 
0037 public slots:
0038     void setSubtitle(Subtitle *subtitle = NULL);
0039     void setAudioStream(const QString &mediaFile, int audioStream);
0040     void clearAudioStream();
0041 
0042 signals:
0043     void onError(const QString &message);
0044 
0045 private slots:
0046     void onStreamProgress(quint64 msecPos, quint64 msecLength);
0047     void onStreamError(int code, const QString &message, const QString &debug);
0048     void onStreamFinished();
0049     void onStreamData(const void *buffer, const qint32 size, const WaveFormat *waveFormat, const qint64 msecStart, const qint64 msecDuration);
0050     void onTextRecognized(const QString &text, const double milliShow, const double milliHide);
0051 
0052 private:
0053     QString m_mediaFile;
0054     int m_streamIndex;
0055 
0056     StreamProcessor *m_stream;
0057     QExplicitlySharedDataPointer<Subtitle> m_subtitle;
0058 
0059     quint32 m_audioDuration;
0060 
0061     QWidget *m_progressWidget;
0062     QProgressBar *m_progressBar;
0063 
0064     SpeechPlugin *m_plugin;
0065     QMap<QString, SpeechPlugin *> m_plugins;
0066 };
0067 }
0068 
0069 #endif // SPEECHPROCESSOR_H