qt/LedOK/wProgramManager/wEditProgram/wElement/qffwidget.cpp
2022-01-04 18:11:48 +08:00

70 lines
1.8 KiB
C++

#include "qffwidget.h"
#include "ui_qffwidget.h"
QFfWidget::QFfWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::QFfWidget)
{
ui->setupUi(this);
VideoDecThread = new QThread(this);
OVideoDec = new VideoDec;
readTimer = new QTimer(this);
BUFFINDEX = 0;
OVideoDec->moveToThread(VideoDecThread);
VideoDecThread->start();
connect(this,SIGNAL(init_s()),OVideoDec,SLOT(init()));
connect(this,SIGNAL(play_s()),OVideoDec,SLOT(play()));
//connect(OVideoDec,SIGNAL(SendImage(QImage)),this,SLOT(showVideo(QImage)));
//connect(OVideoDec,SIGNAL(SendImage(QImage)),this,SLOT(showVideo(QImage)));
connect(readTimer,SIGNAL(timeout()),this,SLOT(showVideo()));
FileName =QFileDialog::getOpenFileName(this,"Open Video","","video file(*.mp4 *.rmvb)");
QByteArray byte = FileName.toLocal8Bit();
OVideoDec->FileName = byte.data();
emit init_s();
emit play_s();
readTimer->start(35);
}
QFfWidget::~QFfWidget()
{
if(OVideoDec!=nullptr)
{
OVideoDec->stop();
delete OVideoDec;
}
if(VideoDecThread!=nullptr)
{
VideoDecThread->quit();
delete VideoDecThread;
}
delete ui;
}
void QFfWidget::on_VideoPlay_clicked()
{
emit init_s();
readTimer->start(35);
}
void QFfWidget::showVideo()
{
QPixmap pix;
if(OVideoDec->VideoImg.isEmpty()) return;
pix = pix.fromImage(OVideoDec->VideoImg.at(BUFFINDEX));//.scaledToWidth(ui->VideoShow->width());
ui->VideoShow->setPixmap(pix);
if(BUFFINDEX>50){
BUFFINDEX = 0;
OVideoDec->BUFFSIZE = 0;
OVideoDec->VideoImg.clear();
return;
}
BUFFINDEX++;
}
void QFfWidget::on_btnOpenFile_clicked()
{
FileName = QFileDialog::getOpenFileName(this,"Open Video","","video file(*.mp4 *.rmvb)");
QByteArray byte = FileName.toLocal8Bit();
OVideoDec->FileName = byte.data();
}