0 / 0 / 1
Регистрация: 28.03.2014
Сообщений: 15
1

Как структуру timespec переписать для windows?

04.06.2015, 15:57. Показов 817. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Знающие люди, прошу помощи. Пытаюсь запустить проект в QT 4.8, но так rfr туп имею кучу фейлов с неправильными компиляторами и библиотеками, но это в моих силах исправить, а вот переписать такую структуру под винду не знаю как, гугулил, моих знаний пока что не хватает понять то, что трактует мне гугл. Скину сразу архивчик с проектом и под спойлеры код положу.

Вот сама структура:
void Player::msleep(int ms){
struct timespec ts = { ms / 1000, (ms % 1000) * 1000 * 1000 };
sleep(&ts, NULL);
}

Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow* w = new MainWindow();
w->setAttribute(Qt::WA_DeleteOnClose, true);

w->show();

return a.exec();
}


Кликните здесь для просмотра всего текста
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
myPlayer = new Player();
QObject::connect(myPlayer, SIGNAL(processedImage(QImage)),
this, SLOT(updatePlayerUI(QImage)));
ui->setupUi(this);
ui->pushButton_2->setEnabled(false);
ui->horizontalSlider->setEnabled(false);
}

void MainWindow::updatePlayerUI(QImage img)
{
if (!img.isNull())
{
ui->label->setAlignment(Qt::AlignCenter);
ui->label->setPixmap(QPixmap::fromImage(img).scaled(ui->label->size(),
Qt::KeepAspectRatio, Qt::FastTransformation));
ui->horizontalSlider->setValue(myPlayer->getCurrentFrame());
ui->label_2->setText( getFormattedTime( (int)myPlayer->getCurrentFrame()/(int)myPlayer->getFrameRate()) );
}
}

MainWindow::~MainWindow()
{
delete myPlayer;
delete ui;
}

void MainWindow::on_pushButton_clicked()
{
QString filename = QFileDialog::getOpenFileName(this,
tr("Open Video"), ".",
tr("Video Files (*.avi *.mpg *.mp4)"));
QFileInfo name = filename;

if (!filename.isEmpty()){
if (!myPlayer->loadVideo(filename.toAscii().data()))
{
QMessageBox msgBox;
msgBox.setText("The selected video could not be opened!");
msgBox.exec();
}
else{
this->setWindowTitle(name.fileName());
ui->pushButton_2->setEnabled(true);
ui->horizontalSlider->setEnabled(true);
ui->horizontalSlider->setMaximum(myPlayer->getNumberOfFrames());
ui->label_3->setText( getFormattedTime( (int)myPlayer->getNumberOfFrames()/(int)myPlayer->getFrameRate()) );
}
}
}
void MainWindow::on_pushButton_2_clicked()
{
if (myPlayer->isStopped())
{
myPlayer->Play();
ui->pushButton_2->setText(tr("Stop"));
}else
{
myPlayer->Stop();
ui->pushButton_2->setText(tr("Play"));
}
}


QString MainWindow::getFormattedTime(int timeInSeconds){

int seconds = (int) (timeInSeconds) % 60 ;
int minutes = (int) ((timeInSeconds / 60) % 60);
int hours = (int) ((timeInSeconds / (60*60)) % 24);

QTime t(hours, minutes, seconds);
if (hours == 0 )
return t.toString("mm:ss");
else
return t.toString("h:mm:ss");
}

void MainWindow::on_horizontalSlider_sliderPressed()
{
myPlayer->Stop();
}

void MainWindow::on_horizontalSlider_sliderReleased()
{
myPlayer->Play();
}

void MainWindow::on_horizontalSlider_sliderMoved(int position)
{
myPlayer->setCurrentFrame(position);
ui->label_2->setText( getFormattedTime( position/(int)myPlayer->getFrameRate()) );
}



Кликните здесь для просмотра всего текста
#include "player.h"

Player::Player(QObject *parent)
: QThread(parent)
{
stop = true;
}

bool Player::loadVideo(string filename) {

capture = new cv::VideoCapture(filename);

if (capture->isOpened())
{
frameRate = (int) capture->get(CV_CAP_PROP_FPS);
return true;
}
else
return false;
}

void Player::Play()
{
if (!isRunning()) {
if (isStopped()){
stop = false;
}
start(LowPriority);
}
}

void Player::run()
{
int delay = (1000/frameRate);
while(!stop){
if (!capture->read(frame))
{
stop = true;
}
if (frame.channels()== 3){
cv::cvtColor(frame, RGBframe, CV_BGR2RGB);
img = QImage((const unsigned char*)(RGBframe.data),
RGBframe.cols,RGBframe.rows,QImage::Format_RGB888);
}
else
{
img = QImage((const unsigned char*)(frame.data),
frame.cols,frame.rows,QImage::Format_Indexed8);
}
emit processedImage(img);
this->msleep(delay);
}
}

Player::~Player()
{
mutex.lock();
stop = true;
capture->release();
delete capture;
condition.wakeOne();
mutex.unlock();
wait();
}
void Player::Stop()
{
stop = true;
}


void Player::msleep(int ms){
//struct timespec ts = { ms / 1000, (ms % 1000) * 1000 * 1000 };
// sleep(&ts, NULL);
}
bool Player::isStopped() const{
return this->stop;
}

double Player::getCurrentFrame(){

return capture->get(CV_CAP_PROP_POS_FRAMES);
}

double Player::getNumberOfFrames(){

return capture->get(CV_CAP_PROP_FRAME_COUNT);
}

double Player::getFrameRate(){
return frameRate;
}

void Player::setCurrentFrame( int frameNumber )
{
capture->set(CV_CAP_PROP_POS_FRAMES, frameNumber);
}
Вложения
Тип файла: rar ExtendedPlayer.rar (519.9 Кб, 1 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2015, 15:57
Ответы с готовыми решениями:

Программа для решения квадратных уравнений, переписать для Windows Forms
1) class Program { static void Main(string args) { float a =...

Как переписать драйвера Windows ХР по Windows 7?
Доброго времени суток. Есть код драйвера, работающего под ХР. Как мне скомпилировать этот же код на...

Что делает функция Timespec diff
Народ, помогите разобраться что делает этот код, особенно функция timespec diff() #include...

Переписать класс в структуру
Необходимо переписать класс через структуру. #include &quot;commun.h&quot; #include &lt;sstream&gt; ...

0
04.06.2015, 15:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2015, 15:57
Помогаю со студенческими работами здесь

Переписать структуру на класс
Помогите,пожалуйста написать вот эту программу не через структуру,а через класс #include...

Как переписать клиент-сервер Windows под linux?
написала программу клиент-сервер в VS под Windows. как сделать чтобы она запускалась и под linux? ...

Переписать структуру со стандарта c++11 под более ранний
Господа, помогите разобраться. Есть вот такая структура: struct MedianFilter { unsigned k; ...

Как создать структуру-список, поля которой — ссылка на такую же структуру
Суть вопроса в том, как создать структуру-список, поля которой - ссылка на сл. элемент(такую же...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru