app: use heuristic to detect phonemes

This commit is contained in:
itsmattkc 2022-08-04 17:33:14 -07:00
parent 1bf42f72b0
commit c7bfceaaa2
2 changed files with 31 additions and 13 deletions

View file

@ -4,6 +4,7 @@
#include <QDateTime>
#include <QDebug>
#include <QGroupBox>
#include <QMenu>
#include <QMouseEvent>
MediaPanel::MediaPanel(QWidget *parent) :
@ -29,17 +30,10 @@ MediaPanel::MediaPanel(QWidget *parent) :
auto preview_layout = new QVBoxLayout(wav_group);
m_vflipCheckbox = new QCheckBox(tr("Flip Vertically"));
connect(m_vflipCheckbox, &QCheckBox::toggled, this, [this](bool e){
m_vflip = e;
SliderMoved(m_PlayheadSlider->value());
});
m_vflipCheckbox->setVisible(false);
//vflip_checkbox->setAlignment(Qt::AlignCenter);
preview_layout->addWidget(m_vflipCheckbox);
m_ImgViewer = new QLabel();
m_ImgViewer->setAlignment(Qt::AlignCenter);
m_ImgViewer->setContextMenuPolicy(Qt::CustomContextMenu);
connect(m_ImgViewer, &QWidget::customContextMenuRequested, this, &MediaPanel::LabelContextMenuTriggered);
preview_layout->addWidget(m_ImgViewer);
auto wav_layout = new QHBoxLayout();
@ -230,7 +224,9 @@ void MediaPanel::OnOpeningData(void *data)
}
if (m_VideoCodecCtx) {
m_vflipCheckbox->setVisible(true);
// Heuristic to flip phoneme flics vertically
m_vflip = (o->name().find("_Pho_") != std::string::npos);
VideoUpdate(0);
}
}
@ -294,8 +290,7 @@ void MediaPanel::Close()
m_ImgViewer->setPixmap(QPixmap());
m_vflipCheckbox->setChecked(false);
m_vflipCheckbox->setVisible(false);
m_vflip = false;
}
void MediaPanel::VideoUpdate(float t)
@ -536,6 +531,11 @@ void MediaPanel::TimerUpdate()
}
}
void MediaPanel::UpdateVideo()
{
SliderMoved(m_PlayheadSlider->value());
}
void MediaPanel::SliderPressed()
{
m_SliderPressed = true;
@ -567,6 +567,21 @@ void MediaPanel::AudioStateChanged(QAudio::State state)
}
}
void MediaPanel::LabelContextMenuTriggered(const QPoint &pos)
{
QMenu m(this);
auto vert_flip = m.addAction(tr("Flip Vertically"));
vert_flip->setCheckable(true);
vert_flip->setChecked(m_vflip);
connect(vert_flip, &QAction::triggered, this, [this](bool e){
m_vflip = e;
UpdateVideo();
});
m.exec(static_cast<QWidget*>(sender())->mapToGlobal(pos));
}
MediaAudioDevice::MediaAudioDevice(MediaPanel *o) :
QIODevice(o)
{

View file

@ -71,7 +71,6 @@ private:
QByteArray m_AudioBuffer;
AVSampleFormat m_AudioOutputSampleFmt;
QSlider *m_PlayheadSlider;
QCheckBox *m_vflipCheckbox;
QPushButton *m_PlayBtn;
QTimer *m_PlaybackTimer;
qint64 m_PlaybackStart;
@ -85,12 +84,16 @@ private slots:
void TimerUpdate();
void UpdateVideo();
void SliderPressed();
void SliderMoved(int i);
void SliderReleased();
void AudioStateChanged(QAudio::State state);
void LabelContextMenuTriggered(const QPoint &pos);
};
class MediaAudioDevice : public QIODevice