#include #include "mainfrm.h" #include #include #include #include #include void mainfrm::f_end_mainfrm(int valeur) { if ( mplayerProcess.state() == QProcess::Starting || mplayerProcess.state() == QProcess::Running ) { mplayerProcess.kill(); } mplayerProcess.waitForFinished(1000); } mainfrm::mainfrm(QWidget *parent) : QDialog(parent) { setupUi(this); QDesktopWidget mywidget; QRect myrec = mywidget.screenGeometry(0); this->setGeometry((myrec.width() - 700) /2,(myrec.height() - 587) /2,700,587); currentDir = QDir::homePath(); working_dir = QDir::homePath(); // *** Chargement des images temporaires *** pb_vide.load(QApplication::applicationDirPath() + "/Interface/pb_vide.png"); pb_pleine.load(QApplication::applicationDirPath() + "/Interface/pb_pleine.png"); bt_play.load(QApplication::applicationDirPath() + "/Interface/bt_play.png"); bt_pause.load(QApplication::applicationDirPath() + "/Interface/bt_stop.png"); windows.load(QApplication::applicationDirPath() + "/Interface/window.png"); // *** Initialisation du fichier edl *** QFile edlfile( currentDir.path() + "/.edlmandvd.edl" ); if (edlfile.open(QFile::WriteOnly)) { edlfile.close(); } else { QMessageBox::information(this, "Manencode", tr("Erreur de creation d un fichier parametre. Attention l application peut ne pas fonctionner correctement...")); } // *** Initialisation des variables *** isplaying = false; isstop = true; isedl = false; // *** Initialisation des controles *** menuselect->hide(); label_DVD->hide(); frame_screenshots->hide(); frame_screenshots->setGeometry(542,205,155,251); bt_encoder->setDisabled(true); bt_decoupage->setDisabled(true); frame_player->setDisabled(true); bt_ss_titres->setDisabled(true); frame_menu_droit->setDisabled(true); frame_decoupage->hide(); iscompatible->hide(); // l_timer = new QTimer(this); // fd_sub->setGeometry(0,0,488,352); fd_sub->lower(); fd_encode->setGeometry(0,0,488,352); fd_encode->lower(); // cblangue->insertItem(0,"Francais"); cblangue->insertItem(1,"English"); cblangue->setCurrentIndex(0); // combo_format->insertItem(0,"PAL - 720x576"); combo_format->insertItem(1,"PAL - 704x576"); combo_format->insertItem(2,"PAL - 352x576"); combo_format->insertItem(3,"PAL - 352x288"); combo_format->insertItem(4,"NTSC - 720x480"); combo_format->insertItem(5,"NTSC - 704x480"); combo_format->insertItem(6,"NTSC - 352x480"); combo_format->insertItem(7,"NTSC - 352x240"); combo_format->setCurrentIndex(0); // combo_codec->insertItem(0,"MPEG2 - DVD Compliant"); combo_codec->insertItem(1,"MPEG4 - DIVX3 Compliant"); combo_codec->insertItem(2,"XVID"); combo_codec->setCurrentIndex(0); // combo_subcp->insertItem(0,"latin1"); combo_subcp->insertItem(1,"latin2"); combo_subcp->insertItem(2,"cp1250"); combo_subcp->insertItem(3,"cp1251"); combo_subcp->insertItem(4,"ISO-8859-2"); combo_subcp->insertItem(5,"ISO-8859-9"); combo_subcp->insertItem(6,"ISO-8859-15"); combo_subcp->insertItem(7,"KOI8-R"); combo_subcp->setCurrentIndex(0); // connect(this, SIGNAL(finished( int )),this, SLOT(f_end_mainfrm( int ))); connect(slider_pos_percent, SIGNAL(sliderReleased()),this, SLOT(f_percent_change())); connect(slider_pos_percent, SIGNAL(sliderPressed()),this, SLOT(f_start_percent_change())); connect(bt_cancel_edl, SIGNAL(clicked()),this, SLOT(f_cancel_decoupage())); connect(bt_cancel_encoding, SIGNAL(clicked()),this, SLOT(f_cancel_encoding())); connect(bt_cut_start, SIGNAL(clicked()),this, SLOT(f_cut_start())); connect(bt_cut_end, SIGNAL(clicked()),this, SLOT(f_cut_end())); connect(bt_save_edl, SIGNAL(clicked()),this, SLOT(f_save_decoupage())); connect(bt_plus, SIGNAL(clicked()),this, SLOT(f_plus())); connect(bt_plus, SIGNAL(released()),this, SLOT(f_plus_released())); connect(bt_moins, SIGNAL(clicked()),this, SLOT(f_moins())); connect(bt_moins, SIGNAL(released()),this, SLOT(f_moins_released())); connect(bt_encoder, SIGNAL(clicked()),this, SLOT(f_open_encoder())); connect(bt_ss_titres, SIGNAL(clicked()),this, SLOT(f_open_sstitres())); connect(bt_start_encode, SIGNAL(clicked()),this, SLOT(f_start_encode())); connect(bt_cancel_encode, SIGNAL(clicked()),this, SLOT(f_cancel_encode())); connect(bt_find_output_file, SIGNAL(clicked()),this, SLOT(f_output_file())); connect(bt_cancel_sub, SIGNAL(clicked()),this, SLOT(f_cancel_sub())); connect(bt_valide_sub, SIGNAL(clicked()),this, SLOT(f_valid_sub())); connect(bt_erase_sstitres, SIGNAL(clicked()),this, SLOT(f_erase_sub())); connect(bt_find_sstitres, SIGNAL(clicked()),this, SLOT(f_open_sub())); connect(bt_decoupage, SIGNAL(clicked()),this, SLOT(f_open_decoupage())); connect(l_timer, SIGNAL(timeout()), this, SLOT(f_current_time())); connect(&mplayerProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(f_read_stdout())); connect(&mplayerProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(f_mplayer_end(int, QProcess::ExitStatus))); connect(bt_open_video, SIGNAL(clicked()),this, SLOT(f_open_video())); connect(bt_stop_play, SIGNAL(clicked()),this, SLOT(f_stop_play_video())); connect(bt_forward, SIGNAL(clicked()),this, SLOT(f_forward())); connect(bt_rewind, SIGNAL(clicked()),this, SLOT(f_rewind())); connect(chk_rotation_1, SIGNAL(stateChanged( int )),this, SLOT(f_rotation_1( int ))); connect(chk_rotation_2, SIGNAL(stateChanged( int )),this, SLOT(f_rotation_2( int ))); connect(bt_save_param, SIGNAL(clicked()),this, SLOT(f_save_param_manslide())); connect(slider_lumiere, SIGNAL(valueChanged ( int )),this, SLOT(f_change_lumiere( int ))); connect(slider_contraste, SIGNAL(valueChanged ( int )),this, SLOT(f_change_contraste( int ))); connect(slider_saturation, SIGNAL(valueChanged ( int )),this, SLOT(f_change_saturation( int ))); connect(slider_bitrate_video, SIGNAL(valueChanged ( int )),this, SLOT(f_change_bitrate_video( int ))); connect(&mencoderProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(end_convert_video(int, QProcess::ExitStatus))); connect(&mencoderProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(lecture_convert_video())); connect(&transcodeProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(end_transcode(int, QProcess::ExitStatus))); connect(&transcodeProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(lecture_transcode())); connect(&mplayerbisProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(end_mplayerbisProcess(int, QProcess::ExitStatus))); connect(&mplayerbisProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(lecture_mplayerbisProcess())); connect(bt_def_equa, SIGNAL(clicked()),this, SLOT(f_def_equa())); // *** FIRST LAUNCH *** QDir currentDir = QDir::homePath(); QFile configfile( currentDir.path() + "/.2man.cnf" ); if (configfile.open(QFile::ReadOnly)) { configfile.close(); } else { frame_top_menu->setDisabled(true); frame->setGeometry(5000,0,1,1); frame_first_time->setGeometry(64,73,571,441); frame_first_time->setEnabled(true); frame_first_time->show(); frame_first_time->raise(); } } void mainfrm::f_def_equa() { slider_lumiere->setValue(0); slider_contraste->setValue(0); slider_saturation->setValue(0); } void mainfrm::f_rotation_1(int valeur) { if ( chk_rotation_1->isChecked() == true ) { if ( mplayerProcess.state() == QProcess::Starting || mplayerProcess.state() == QProcess::Running ) { mplayerProcess.kill(); mplayerProcess.waitForFinished(1000); } chk_rotation_2->setCheckState(Qt::Unchecked); chk_rotation_2->setDisabled(true); QStringList args; args << "-slave"; args << "-osdlevel" << "0"; args << "-quiet"; args << "-vo" << "gl2"; args << "-wid" << QString::number(frame->winId()); args << "-edl" << currentDir.path() + "/.edlmandvd.edl"; args << "-vf"; args << "rotate=1,scale=-2:576,expand=720:576"; args << playing_file; mplayerProcess.setProcessChannelMode(QProcess::MergedChannels); mplayerProcess.start("mplayer", args); if(!mplayerProcess.waitForStarted(3000)) { QMessageBox::information(this, "Manencode", tr("Mplayer ne demarre pas. Est t il installe correctement ...")); } } else { if ( mplayerProcess.state() == QProcess::Starting || mplayerProcess.state() == QProcess::Running ) { mplayerProcess.kill(); mplayerProcess.waitForFinished(1000); } chk_rotation_2->setEnabled(true); QStringList args; args << "-slave"; args << "-osdlevel" << "0"; args << "-quiet"; args << "-vo" << "gl2"; args << "-wid" << QString::number(frame->winId()); args << "-edl" << currentDir.path() + "/.edlmandvd.edl"; args << playing_file; mplayerProcess.setProcessChannelMode(QProcess::MergedChannels); mplayerProcess.start("mplayer", args); if(!mplayerProcess.waitForStarted(3000)) { QMessageBox::information(this, "Manencode", tr("Mplayer ne demarre pas. Est t il installe correctement ...")); } } isplaying = true; isstop = false; QIcon l_icon(bt_pause); bt_encoder->setEnabled(true); bt_stop_play->setIcon(l_icon); l_timer->start(1000); frame_player->setEnabled(true); bt_ss_titres->setEnabled(true); f_change_lumiere(0); f_change_contraste(0); f_change_saturation(0); QString mycom; mycom = "audio_delay " + QString::number((float)delta_av->value() / (float)1000) + " 1 \n"; mplayerProcess.write( mycom.toUtf8() ); // *** Chargement du fichier des sous titres *** if ( fichier_sstitres->text() != "" ) { mycom = "sub_load " + fichier_sstitres->text() + " \n"; mplayerProcess.write( mycom.toUtf8() ); mplayerProcess.write("sub_select 0 \n"); } bt_forward->setEnabled(true); bt_rewind->setEnabled(true); } void mainfrm::f_rotation_2(int valeur) { if ( chk_rotation_2->isChecked() == true ) { if ( mplayerProcess.state() == QProcess::Starting || mplayerProcess.state() == QProcess::Running ) { mplayerProcess.kill(); mplayerProcess.waitForFinished(1000); } chk_rotation_1->setCheckState(Qt::Unchecked); chk_rotation_1->setDisabled(true); QStringList args; args << "-slave"; args << "-osdlevel" << "0"; args << "-quiet"; args << "-vo" << "gl2"; args << "-wid" << QString::number(frame->winId()); args << "-edl" << currentDir.path() + "/.edlmandvd.edl"; args << "-vf"; args << "rotate=2,scale=-2:576,expand=720:576"; args << playing_file; mplayerProcess.setProcessChannelMode(QProcess::MergedChannels); mplayerProcess.start("mplayer", args); if(!mplayerProcess.waitForStarted(3000)) { QMessageBox::information(this, "Manencode", tr("Mplayer ne demarre pas. Est t il installe correctement ...")); } } else { if ( mplayerProcess.state() == QProcess::Starting || mplayerProcess.state() == QProcess::Running ) { mplayerProcess.kill(); mplayerProcess.waitForFinished(1000); } chk_rotation_1->setEnabled(true); QStringList args; args << "-slave"; args << "-osdlevel" << "0"; args << "-quiet"; args << "-vo" << "gl2"; args << "-wid" << QString::number(frame->winId()); args << "-edl" << currentDir.path() + "/.edlmandvd.edl"; args << playing_file; mplayerProcess.setProcessChannelMode(QProcess::MergedChannels); mplayerProcess.start("mplayer", args); if(!mplayerProcess.waitForStarted(3000)) { QMessageBox::information(this, "Manencode", tr("Mplayer ne demarre pas. Est t il installe correctement ...")); } } isplaying = true; isstop = false; QIcon l_icon(bt_pause); bt_encoder->setEnabled(true); bt_stop_play->setIcon(l_icon); l_timer->start(1000); frame_player->setEnabled(true); bt_ss_titres->setEnabled(true); f_change_lumiere(0); f_change_contraste(0); f_change_saturation(0); QString mycom; mycom = "audio_delay " + QString::number((float)delta_av->value() / (float)1000) + " 1 \n"; mplayerProcess.write( mycom.toUtf8() ); // *** Chargement du fichier des sous titres *** if ( fichier_sstitres->text() != "" ) { mycom = "sub_load " + fichier_sstitres->text() + " \n"; mplayerProcess.write( mycom.toUtf8() ); mplayerProcess.write("sub_select 0 \n"); } bt_forward->setEnabled(true); bt_rewind->setEnabled(true); } void mainfrm::f_erase_sub() { fichier_sstitres->text() != ""; } void mainfrm::f_save_param_manslide() { QDir currentDir = QDir::homePath(); QFile configfile( currentDir.path() + "/.2man.cnf" ); if (configfile.open(QIODevice::WriteOnly)) { QTextStream out(&configfile); out << cblangue->currentText() << endl; out << "xine" << endl; configfile.close(); if ( cblangue->currentText() == "Francais" ) { QMessageBox::information(this, "Manencode", "L'application va se fermer. Relancez la pour prendre en compte vos parametres."); } else { QMessageBox::information(this, "Manencode", "Application will be close. Please restart for apply your parameters."); } } else { QMessageBox::information(this, "Manencode", tr("Impossible de creer le fichier de configuration. Disposez vous des droits d'ecriture dans ce dossier ...") + currentDir.dirName()); } this->close(); } void mainfrm::f_cancel_encoding() { if ( mencoderProcess.state() == QProcess::Starting || mencoderProcess.state() == QProcess::Running ) { mencoderProcess.kill(); } mencoderProcess.waitForFinished(1000); if ( mplayerProcess.state() == QProcess::Starting || mplayerProcess.state() == QProcess::Running ) { mplayerProcess.kill(); mplayerProcess.waitForFinished(1000); } bt_forward->setDisabled(true); bt_rewind->setDisabled(true); } void mainfrm::f_save_decoupage() { if ( starting_edl->time() < ending_edl->time() ) { if ( mplayerProcess.state() == QProcess::Starting || mplayerProcess.state() == QProcess::Running ) { mplayerProcess.kill(); } mplayerProcess.waitForFinished(1000); frame_screenshots->hide(); QFile edlfile( currentDir.path() + "/.edlmandvd.edl" ); if (edlfile.open(QIODevice::Append)) { QTextStream out(&edlfile); QTime wl_time = starting_edl->time(); int wl_deb = wl_time.second() + (wl_time.minute() * 60) + (wl_time.hour() * 3600); QTime wl_time_2 = ending_edl->time(); int wl_fin = wl_time_2.second() + (wl_time_2.minute() * 60) + (wl_time_2.hour() * 3600); out << QString::number(wl_deb) << " " << QString::number(wl_fin) << " 0" << endl; edlfile.close(); isedl = true; } else { QMessageBox::information(this, "Manslide", "Erreur de creation d un fichier parametre. Attention l application peut ne pas fonctionner correctement..."); } frame_top_menu->setEnabled(true); frame_menu_droit->setEnabled(true); frame_decoupage->hide(); menuselect->show(); menuselect->setGeometry(10,8,98,32); slider_lumiere->setFocus(); bt_open_video->raise(); // QStringList args; args << "-slave"; args << "-osdlevel" << "0"; args << "-quiet"; args << "-vo" << "gl2"; args << "-wid" << QString::number(frame->winId()); args << "-edl" << currentDir.path() + "/.edlmandvd.edl"; if ( chk_rotation_1->isChecked() == true ) { args << "-vf"; args << "rotate=1,scale=-2:576,expand=720:576"; } if ( chk_rotation_2->isChecked() == true ) { args << "-vf"; args << "rotate=2,scale=-2:576,expand=720:576"; } args << playing_file; mplayerProcess.setProcessChannelMode(QProcess::MergedChannels); mplayerProcess.start("mplayer", args); if(!mplayerProcess.waitForStarted(3000)) { QMessageBox::information(this, "Manencode", tr("Mplayer ne demarre pas. Est t il installe correctement ...")); } isplaying = true; isstop = false; QIcon l_icon(bt_pause); bt_encoder->setEnabled(true); bt_stop_play->setIcon(l_icon); l_timer->start(1000); frame_player->setEnabled(true); bt_ss_titres->setEnabled(true); f_change_lumiere(0); f_change_contraste(0); f_change_saturation(0); QString mycom; mycom = "audio_delay " + QString::number((float)delta_av->value() / (float)1000) + " 1 \n"; mplayerProcess.write( mycom.toUtf8() ); // *** Chargement du fichier des sous titres *** if ( fichier_sstitres->text() != "" ) { mycom = "sub_load " + fichier_sstitres->text() + " \n"; mplayerProcess.write( mycom.toUtf8() ); mplayerProcess.write("sub_select 0 \n"); } bt_forward->setEnabled(true); bt_rewind->setEnabled(true); } else { QMessageBox::information(this, "Manencode", tr("Le point de fin doit se situer apres le point de debut ...")); } } void mainfrm::f_cut_start() { frame_decoupage->hide(); QTimer::singleShot(300, this, SLOT(f_catch_start())); } void mainfrm::f_catch_start() { QPixmap wl_pix_001(135,100); wl_pix_001.fill(Qt::black); QPixmap wl_pix_002 = QPixmap::grabWindow ( this->winId(), 10, 50, 500, 400); QPixmap wl_pix_003 = wl_pix_002.scaled ( 135, 100, Qt::KeepAspectRatio, Qt::FastTransformation); QPainter p; p.begin(&wl_pix_001); p.drawPixmap(((135 - wl_pix_003.width()) / 2), 5 + ((89 - wl_pix_003.height()) / 2), wl_pix_003, 0, 0, -1, -1 ); p.end(); frame_screenshots->show(); frame_screenshots->raise(); img_start->setPixmap(wl_pix_001); img_start->show(); // bt_cut_start->setDisabled(true); bt_cut_end->setEnabled(true); QTime wl_time(0,0,0); QTime wl_time_2 = wl_time.addSecs(current_time_int); starting_edl->setTime(wl_time_2); starting_edl->show(); starting_edl->raise(); frame_decoupage->show(); } void mainfrm::f_catch_end() { QPixmap wl_pix_001(135,100); wl_pix_001.fill(Qt::black); QPixmap wl_pix_002 = QPixmap::grabWindow ( this->winId(), 10, 50, 500, 400); QPixmap wl_pix_003 = wl_pix_002.scaled ( 135, 100, Qt::KeepAspectRatio, Qt::FastTransformation); QPainter p; p.begin(&wl_pix_001); p.drawPixmap(((135 - wl_pix_003.width()) / 2), 5 + ((89 - wl_pix_003.height()) / 2), wl_pix_003, 0, 0, -1, -1 ); p.end(); label_27->show(); frame_screenshots->show(); frame_screenshots->raise(); img_end->setPixmap(wl_pix_001); img_end->show(); // bt_cut_end->setDisabled(true); bt_save_edl->setEnabled(true); QTime wl_time(0,0,0); if ( isplaying == true ) { QTime wl_time_2 = wl_time.addSecs(current_time_int); ending_edl->setTime(wl_time_2); } else { QTime wl_time_3 = wl_time.addSecs(length_film); ending_edl->setTime(wl_time_3); } ending_edl->show(); ending_edl->raise(); frame_decoupage->show(); } void mainfrm::f_cut_end() { frame_decoupage->hide(); QTimer::singleShot(300, this, SLOT(f_catch_end())); } void mainfrm::f_start_percent_change() { l_timer->stop(); } void mainfrm::f_percent_change() { if ( isstop == true ) { QStringList args; args << "-slave"; args << "-osdlevel" << "0"; args << "-quiet"; args << "-vo" << "gl2"; args << "-wid" << QString::number(frame->winId()); args << "-edl" << currentDir.path() + "/.edlmandvd.edl"; if ( chk_rotation_1->isChecked() == true ) { args << "-vf"; args << "rotate=1,scale=-2:576,expand=720:576"; } if ( chk_rotation_2->isChecked() == true ) { args << "-vf"; args << "rotate=2,scale=-2:576,expand=720:576"; } args << playing_file; mplayerProcess.setProcessChannelMode(QProcess::MergedChannels); mplayerProcess.start("mplayer", args); if(!mplayerProcess.waitForStarted(3000)) { QMessageBox::information(this, "Manencode", tr("Mplayer ne demarre pas. Est t il installe correctement ...")); } isplaying = true; isstop = false; QIcon l_icon(bt_pause); bt_encoder->setEnabled(true); bt_stop_play->setIcon(l_icon); l_timer->start(1000); frame_player->setEnabled(true); bt_ss_titres->setEnabled(true); f_change_lumiere(0); f_change_contraste(0); f_change_saturation(0); QString mycom; mycom = "audio_delay " + QString::number((float)delta_av->value() / (float)1000) + " 1 \n"; mplayerProcess.write( mycom.toUtf8() ); // *** Chargement du fichier des sous titres *** if ( fichier_sstitres->text() != "" ) { mycom = "sub_load " + fichier_sstitres->text() + " \n"; mplayerProcess.write( mycom.toUtf8() ); mplayerProcess.write("sub_select 0 \n"); } } QString mycom2; mycom2 = "seek " + QString::number(slider_pos_percent->value()) + " 1\n"; mplayerProcess.write( mycom2.toUtf8() ); l_timer->start(1000); } void mainfrm::f_open_decoupage() { img_start->hide(); img_end->hide(); label_27->hide(); QTime wl_time(0,0,0,0); ending_edl->setTime(wl_time); starting_edl->setTime(wl_time); ending_edl->hide(); starting_edl->hide(); bt_save_edl->setDisabled(true); bt_cut_start->setEnabled(true); bt_cut_end->setDisabled(true); menuselect->show(); menuselect->setGeometry(210,8,98,32); slider_lumiere->setFocus(); frame_top_menu->setDisabled(true); frame_menu_droit->setDisabled(true); bt_decoupage->raise(); frame_decoupage->setGeometry(14,337,491,111); frame_decoupage->show(); frame_decoupage->raise(); } void mainfrm::f_cancel_decoupage() { frame_top_menu->setEnabled(true); frame_menu_droit->setEnabled(true); frame_decoupage->hide(); frame_screenshots->hide(); menuselect->show(); menuselect->setGeometry(10,8,98,32); slider_lumiere->setFocus(); bt_open_video->raise(); } void mainfrm::f_plus_released() { if ( mplayerProcess.state() == QProcess::Starting || mplayerProcess.state() == QProcess::Running ) { mplayerProcess.kill(); } mplayerProcess.waitForFinished(1000); isstop = true; isplaying = false; f_stop_play_video(); } void mainfrm::f_moins_released() { if ( mplayerProcess.state() == QProcess::Starting || mplayerProcess.state() == QProcess::Running ) { mplayerProcess.kill(); } mplayerProcess.waitForFinished(1000); isstop = true; isplaying = false; f_stop_play_video(); } void mainfrm::f_plus() { delta_av->display(delta_av->value() + 1); } void mainfrm::f_moins() { delta_av->display(delta_av->value() - 1); } void mainfrm::lecture_mplayerbisProcess() { // ************************************ // *** Lecture de la sortie console *** // ************************************ QByteArray newData = mplayerbisProcess.readAllStandardOutput(); QString wl_var_1 = QString::fromLocal8Bit(newData); tmp_exchange_1 = tmp_exchange_1 + wl_var_1; } void mainfrm::end_mplayerbisProcess(int exitCode, QProcess::ExitStatus exitStatus) { // *** RESOLUTION ************************************** int i = tmp_exchange_1.indexOf("ID_VIDEO_WIDTH=", 0); if ( i != -1 ) { QString wl_tmp_01 = ""; QString wl_tmp_02 = ""; int valueprog = i + 15; while ( tmp_exchange_1.mid(valueprog,1) != "\n" ) { wl_tmp_01 = wl_tmp_01 + tmp_exchange_1.mid(valueprog,1); valueprog = valueprog + 1; } largeur = wl_tmp_01.toInt(); i = tmp_exchange_1.indexOf("ID_VIDEO_HEIGHT=", 0); if ( i != -1 ) { int valueprog_2 = i + 16; while ( tmp_exchange_1.mid(valueprog_2,1) != "\n" ) { wl_tmp_02 = wl_tmp_02 + tmp_exchange_1.mid(valueprog_2,1); valueprog_2 = valueprog_2 + 1; } hauteur = wl_tmp_02.toInt(); } } else { hauteur = 576; largeur = 720; } // *** AUDIO BITRATE ************************************** i = tmp_exchange_1.indexOf("ID_AUDIO_BITRATE=", 0); if ( i != -1 ) { QString wl_tmp_03 = ""; int valueprog_3 = i + 17; while ( tmp_exchange_1.mid(valueprog_3,1) != "\n" ) { wl_tmp_03 = wl_tmp_03 + tmp_exchange_1.mid(valueprog_3,1); valueprog_3 = valueprog_3 + 1; } audio_bitrate = wl_tmp_03.toInt() / 1000; } else { audio_bitrate = 224; } label_resolution->setText(tr("Resolution : ") + QString::number(largeur) + "x" + QString::number(hauteur) + " px"); label_audio_bitrate->setText(tr("Audio bitrate : ") + QString::number(audio_bitrate) + " kbps"); // *** DVD COMPLIANT ************************************** i = tmp_exchange_1.indexOf("MPEG-PS file format detected", 0); if ( i != -1 ) { iscompatible->setText(tr("Video compatible format DVD")); iscompatible->show(); iscompliant = 1; } else { iscompatible->setText(tr("Video devant etre encodee")); iscompatible->show(); iscompliant = 0; } } void mainfrm::lecture_transcode() { // ************************************ // *** Lecture de la sortie console *** // ************************************ QByteArray newData = transcodeProcess.readAllStandardOutput(); QString wl_var_1 = QString::fromLocal8Bit(newData); tmp_exchange_1 = tmp_exchange_1 + wl_var_1; } void mainfrm::end_transcode(int exitCode, QProcess::ExitStatus exitStatus) { // *** A/V SYNC ************************************** int i = tmp_exchange_1.indexOf("--av_fine_ms", 0); if ( i != -1 ) { QString wl_tmp_01 = ""; int valueprog = i + 13; while ( tmp_exchange_1.mid(valueprog,1) != " " ) { wl_tmp_01 = wl_tmp_01 + tmp_exchange_1.mid(valueprog,1); valueprog = valueprog + 1; } av_delta = wl_tmp_01.toInt(); } delta_av->display(av_delta); // *** AUDIO BITRATE ************************************** i = tmp_exchange_1.indexOf("audio track", 0); if ( i != -1 ) { int j = tmp_exchange_1.indexOf("bitrate=", i); QString wl_tmp_02 = ""; if ( j != -1 ) { int valueprog2 = j + 8; while ( tmp_exchange_1.mid(valueprog2,1) != " " ) { wl_tmp_02 = wl_tmp_02 + tmp_exchange_1.mid(valueprog2,1); valueprog2 = valueprog2 + 1; } audio_bitrate = wl_tmp_02.toInt(); } else { audio_bitrate = 0; } } // *** RESOLUTION ************************************** i = tmp_exchange_1.indexOf("import frame size:", 0); if ( i != -1 ) { QString wl_tmp_03 = ""; int valueprog3 = i + 22; while ( tmp_exchange_1.mid(valueprog3,1) != "x" ) { wl_tmp_03 = wl_tmp_03 + tmp_exchange_1.mid(valueprog3,1); valueprog3 = valueprog3 + 1; } largeur = wl_tmp_03.toInt(); valueprog3 = valueprog3 + 1; wl_tmp_03 = ""; while ( tmp_exchange_1.mid(valueprog3,1) != " " ) { wl_tmp_03 = wl_tmp_03 + tmp_exchange_1.mid(valueprog3,1); valueprog3 = valueprog3 + 1; } hauteur = wl_tmp_03.toInt(); } else { hauteur = 576; largeur = 720; } label_resolution->setText(tr("Resolution : ") + QString::number(largeur) + "x" + QString::number(hauteur) + " px"); label_audio_bitrate->setText(tr("Audio bitrate : ") + QString::number(audio_bitrate) + " kbps"); // *** Lancement mplayer pour recup infos *** tmp_exchange_1 = ""; QStringList args_mplayer_bis; args_mplayer_bis << "-vo"; args_mplayer_bis << "null"; args_mplayer_bis << "-ao"; args_mplayer_bis << "null"; args_mplayer_bis << "-frames"; args_mplayer_bis << "0"; args_mplayer_bis << "-identify"; args_mplayer_bis << playing_file; mplayerbisProcess.setProcessChannelMode(QProcess::MergedChannels); mplayerbisProcess.start("mplayer", args_mplayer_bis); if(!mplayerbisProcess.waitForStarted(3000)) { QMessageBox::information(this, "Manencode", tr("Mplayer ne demarre pas. Est t il installe correctement ...")); } } void mainfrm::f_mplayer_end(int exitCode, QProcess::ExitStatus exitStatus) { bt_forward->setDisabled(true); bt_rewind->setDisabled(true); isplaying = false; isstop = true; l_timer->stop(); QIcon l_icon(bt_play); bt_stop_play->setIcon(l_icon); } void mainfrm::f_change_bitrate_video(int valeur) { txt_bitrate->setText(QString::number(valeur) + " Kb/s"); // int wl_size; wl_size = (((slider_bitrate_video->value() / 8) * length_film ) / 1024) / 3; taille->setText(tr("Taille approximative : ") + QString::number(wl_size) + " Mo"); // } void mainfrm::f_cancel_sub() { frame_player->setEnabled(true); frame_top_menu->setEnabled(true); frame_subtitle->hide(); mplayerProcess.write("pause \n"); bt_forward->setEnabled(true); bt_rewind->setEnabled(true); isplaying = true; l_timer->start(1000); QIcon l_icon(bt_pause); bt_stop_play->setIcon(l_icon); menuselect->setGeometry(10,8,98,32); slider_lumiere->setFocus(); bt_open_video->raise(); } void mainfrm::f_open_sub() { QString wmyfic = QFileDialog::getOpenFileName(this, tr("Sous titres"), working_dir, tr("Sous titres (*.srt *.SRT)")); if ( wmyfic.isNull() ) { } else { fichier_sstitres->setText(wmyfic); } } void mainfrm::f_valid_sub() { if ( fichier_sstitres->text() != "" ) { frame_player->setEnabled(true); frame_top_menu->setEnabled(true); frame_subtitle->hide(); // *** Chargement du fichier des sous titres *** QString mycom; mycom = "sub_load " + fichier_sstitres->text() + " \n"; mplayerProcess.write( mycom.toUtf8() ); mplayerProcess.write("sub_select 0 \n"); bt_forward->setEnabled(true); bt_rewind->setEnabled(true); isplaying = true; l_timer->start(1000); QIcon l_icon(bt_pause); bt_stop_play->setIcon(l_icon); menuselect->setGeometry(10,8,98,32); slider_lumiere->setFocus(); bt_open_video->raise(); } } void mainfrm::end_convert_video(int, QProcess::ExitStatus) { progress_Bar->setValue(100); if ( mplayerProcess.state() == QProcess::Starting || mplayerProcess.state() == QProcess::Running ) { mplayerProcess.kill(); mplayerProcess.waitForFinished(1000); } if ( w_error == 0 ) { QMessageBox::information(this, "Manencode", tr("Encodage de la video termine ...")); } else { QMessageBox::information(this, "Manencode", tr("L encodage a echoue ...")); } frame_player->setEnabled(true); frame_top_menu->setEnabled(true); frame_menu_droit->setEnabled(true); frame_progress->hide(); menuselect->setGeometry(10,8,98,32); slider_lumiere->setFocus(); bt_open_video->raise(); } void mainfrm::lecture_convert_video() { // ************************************ // *** Lecture de la sortie console *** // ************************************ QByteArray newData = mencoderProcess.readAllStandardOutput(); QString wl_var_1 = QString::fromLocal8Bit(newData); int i = wl_var_1.indexOf("%", 0); if ( i != -1 ) { QString wl_tmp_01; int valueprog; wl_tmp_01 = wl_var_1.mid((i - 2),2); valueprog = wl_tmp_01.toInt(); progress_Bar->setValue(valueprog); if ( ispreview == 1 ) { if ( valueprog >= nbre_passage ) { QString mycom2; mycom2 = "seek " + QString::number(valueprog) + " 1\n"; mplayerProcess.write( mycom2.toUtf8() ); nbre_passage = nbre_passage + 3; } } } i = wl_var_1.indexOf ( "Seek failed" , 0); if ( i != -1 ) { w_error = 1; } i = wl_var_1.indexOf ( "File not found:" , 0); if ( i != -1 ) { i = wl_var_1.indexOf ( "File not found: 'frameno.avi'" , 0); if ( i == -1 ) { w_error = 1; } } } void mainfrm::f_output_file() { QString wmyfic = QFileDialog::getSaveFileName(this, tr("Exporter la video"), working_dir, tr("Video (*.mpg *.MPG *.mpeg *.MPEG *.AVI *.avi)")); if ( wmyfic.isNull() ) { } else { output_file->setText(wmyfic); } } void mainfrm::f_start_encode() { if ( output_file->text() != "" ) { QString wmyfic = output_file->text(); if ( combo_codec->currentIndex() == 0 ) { if ( wmyfic.right(4) != ".mpg" && wmyfic.right(4) != ".MPG" && wmyfic.right(4) != ".MPEG" && wmyfic.right(4) != ".mpeg") { wmyfic = wmyfic + ".mpg"; } } else { if ( wmyfic.right(4) != ".avi" && wmyfic.right(4) != ".AVI") { wmyfic = wmyfic + ".avi"; } } output_file->setText(wmyfic); progress_Bar->setValue(0); int wl_width; int wl_height; QString wl_norme; QString wl_tmp_1; if ( check_preview->isChecked() == true ) { ispreview = 1; nbre_passage = 0; if ( mplayerProcess.state() == QProcess::Starting || mplayerProcess.state() == QProcess::Running ) { mplayerProcess.kill(); mplayerProcess.waitForFinished(1000); } QStringList args; args << "-slave"; args << "-osdlevel" << "0"; args << "-quiet"; args << "-vo" << "gl2"; args << "-ao" << "null"; args << "-wid" << QString::number(frame->winId()); if ( chk_rotation_1->isChecked() == true ) { args << "-vf"; args << "rotate=1,scale=-2:576,expand=720:576"; } if ( chk_rotation_2->isChecked() == true ) { args << "-vf"; args << "rotate=2,scale=-2:576,expand=720:576"; } args << playing_file; mplayerProcess.setProcessChannelMode(QProcess::MergedChannels); mplayerProcess.start("mplayer", args); if(!mplayerProcess.waitForStarted(3000)) { QMessageBox::information(this, "Manencode", tr("Mplayer ne demarre pas. Est t il installe correctement ...")); } l_timer->start(1000); f_change_lumiere(0); f_change_contraste(0); f_change_saturation(0); // *** Chargement du fichier des sous titres *** QString mycom; if ( fichier_sstitres->text() != "" ) { mycom = "sub_load " + fichier_sstitres->text() + " \n"; mplayerProcess.write( mycom.toUtf8() ); mplayerProcess.write("sub_select 0 \n"); } } else { ispreview = 0; nbre_passage = 99999; } if ( combo_format->currentIndex() < 4 ) { wl_tmp_1 = combo_format->currentText(); wl_width = wl_tmp_1.mid(6,3).toInt(); wl_height = wl_tmp_1.mid(10,3).toInt(); wl_norme = efps->text(); } else { wl_tmp_1 = combo_format->currentText(); wl_width = wl_tmp_1.mid(7,3).toInt(); wl_height = wl_tmp_1.mid(11,3).toInt(); wl_norme = efps->text(); } float wl_ratio = (float)largeur / (float)hauteur; int wl_hauteur_ratio = wl_width / wl_ratio; if ( wl_hauteur_ratio > wl_height ) { wl_hauteur_ratio = wl_height; } frame_encode->hide(); frame_progress->setGeometry(175,253,351,80); frame_progress->show(); frame_progress->raise(); QString program; QStringList arguments; program = "mencoder"; if ( audio_bitrate > 0 && combo_codec->currentIndex() == 0 ) { if ( iscompliant == 0 ) { if ( checkaudio->isChecked() == true ) { arguments << "-oac"; arguments << "lavc"; } else { arguments << "-nosound"; } } else { if ( checkaudio->isChecked() == true ) { arguments << "-oac"; arguments << "copy"; } else { arguments << "-nosound"; } } } if ( combo_codec->currentIndex() < 2 ) { arguments << "-ovc"; arguments << "lavc"; arguments << "-noskip"; } if ( combo_codec->currentIndex() == 0 ) { arguments << "-of"; arguments << "mpeg"; arguments << "-mpegopts"; arguments << "format=dvd"; } if ( combo_codec->currentIndex() == 1 ) { arguments << "-lavcopts"; arguments << "vcodec=msmpeg4:vbitrate=" + QString::number(slider_bitrate_video->value()); arguments << "-of"; arguments << "avi"; if ( checkaudio->isChecked() == true ) { arguments << "-oac"; arguments << "lavc"; arguments << "-srate"; arguments << "44100"; arguments << "-lavcopts"; arguments << "acodec=mp2:abitrate=128"; } else { arguments << "-nosound"; } } if ( combo_codec->currentIndex() == 2 ) { if ( checkaudio->isChecked() == true ) { arguments << "-oac"; arguments << "mp3lame"; } else { arguments << "-nosound"; } arguments << "-ovc"; arguments << "xvid"; arguments << "-noskip"; arguments << "-xvidencopts"; arguments << "pass=2:bitrate=" + QString::number(slider_bitrate_video->value()); } arguments << "-vf"; QString wl_rotation = ""; if ( chk_rotation_1->isChecked() == true || chk_rotation_2->isChecked() == true ) { if ( chk_rotation_1->isChecked() == true ) { wl_rotation = "rotate=1,scale=-2:" + QString::number(wl_height) + ",expand=" + QString::number(wl_width) + ":" + QString::number(wl_height); } else { wl_rotation = "rotate=2,scale=-2:" + QString::number(wl_height) + ",expand=" + QString::number(wl_width) + ":" + QString::number(wl_height); } arguments << wl_rotation + ",harddup,eq=" + QString::number(slider_lumiere->value()) + ":" + QString::number(slider_contraste->value()) + ",hue=0:" + QString::number((slider_saturation->value() + 100) / 100); } else { arguments << wl_rotation + "scale=" + QString::number(wl_width) + ":" + QString::number(wl_hauteur_ratio) + ",expand=-1:" + QString::number(wl_height) + ",harddup,eq=" + QString::number(slider_lumiere->value()) + ":" + QString::number(slider_contraste->value()) + ",hue=0:" + QString::number((slider_saturation->value() + 100) / 100); } if ( combo_codec->currentIndex() == 0 ) { arguments << "-srate"; arguments << "48000"; arguments << "-af"; arguments << "lavcresample=48000"; arguments << "-lavcopts"; if ( audio_bitrate > 0 ) { if ( audio_bitrate <= 224 ) { arguments << "threads=2:vcodec=mpeg2video:vrc_buf_size=1835:ilme:ildct:mbd=2:vrc_maxrate=9800:vbitrate=" + QString::number(slider_bitrate_video->value()) + ":keyint=15:acodec=mp2:abitrate=224"; } else { arguments << "threads=2:vcodec=mpeg2video:vrc_buf_size=1835:ilme:ildct:mbd=2:vrc_maxrate=9800:vbitrate=" + QString::number(slider_bitrate_video->value()) + ":keyint=15:acodec=ac3:abitrate=448"; } } else { arguments << "threads=2:vcodec=mpeg2video:vrc_buf_size=1835:ilme:ildct:mbd=2:vrc_maxrate=9800:vbitrate=" + QString::number(slider_bitrate_video->value()) + ":keyint=15"; } } if ( isedl == true ) { arguments << "-edl"; arguments << currentDir.path() + "/.edlmandvd.edl"; } arguments << "-ofps"; arguments << wl_norme; if ( fichier_sstitres->text() != "" ) { arguments << "-sub"; arguments << fichier_sstitres->text(); arguments << "-subcp"; arguments << combo_subcp->currentText(); } float wl_delay; wl_delay = (float)((float)delta_av->value() - (float)av_delta) / 1000; if ( wl_delay != 0 ) { arguments << "-delay"; arguments << QString::number(wl_delay); } arguments << "-o"; arguments << output_file->text(); arguments << playing_file; w_error = 0; mencoderProcess.start( program, arguments ); } else { QMessageBox::information(this, "Manencode", tr("Vous devez choisir un fichier de sortie.")); return; } } void mainfrm::f_cancel_encode() { frame_player->setEnabled(true); frame_top_menu->setEnabled(true); frame_menu_droit->setEnabled(true); frame_encode->hide(); mplayerProcess.write("pause \n"); bt_forward->setEnabled(true); bt_rewind->setEnabled(true); isplaying = true; l_timer->start(1000); QIcon l_icon(bt_pause); bt_stop_play->setIcon(l_icon); menuselect->setGeometry(10,8,98,32); slider_lumiere->setFocus(); bt_open_video->raise(); } void mainfrm::f_open_sstitres() { if ( isplaying == true ) { mplayerProcess.write("pause \n"); l_timer->stop(); mplayerProcess.waitForFinished(200); isplaying == false; } menuselect->show(); menuselect->setGeometry(110,8,98,32); slider_lumiere->setFocus(); frame_player->setDisabled(true); frame_top_menu->setDisabled(true); QIcon l_icon(bt_play); bt_stop_play->setIcon(l_icon); isplaying = false; bt_encoder->raise(); // QPixmap wl_pix_001(488,352); wl_pix_001.fill(Qt::black); QPixmap wl_pix_002 = QPixmap::grabWindow ( this->winId(), 106, 117, 488, 352); QPainter p; p.begin(&wl_pix_001); p.drawPixmap(0, 0, wl_pix_002, 0, 0, -1, -1 ); p.drawPixmap(0, 0, windows, 0, 0, -1, -1 ); p.end(); fd_sub->setPixmap(wl_pix_001); // frame_subtitle->setGeometry(106,117,488,352); frame_subtitle->show(); frame_subtitle->raise(); } void mainfrm::f_open_encoder() { frame_player->setDisabled(true); frame_top_menu->setDisabled(true); frame_menu_droit->setDisabled(true); combo_format->setFocus(); menuselect->show(); menuselect->setGeometry(592,8,98,32); if ( isplaying == true ) { mplayerProcess.write("pause \n"); mplayerProcess.waitForFinished(200); l_timer->stop(); isplaying == false; } QIcon l_icon(bt_play); bt_stop_play->setIcon(l_icon); isplaying = false; bt_encoder->raise(); // QPixmap wl_pix_001(488,352); wl_pix_001.fill(Qt::black); QPixmap wl_pix_002 = QPixmap::grabWindow ( this->winId(), 106, 117, 488, 352); QPainter p; p.begin(&wl_pix_001); p.drawPixmap(0, 0, wl_pix_002, 0, 0, -1, -1 ); p.drawPixmap(0, 0, windows, 0, 0, -1, -1 ); p.end(); fd_encode->setPixmap(wl_pix_001); // int wl_size; wl_size = (((slider_bitrate_video->value() / 8) * length_film ) / 1024) / 3; taille->setText(tr("Taille approximative : ") + QString::number(wl_size) + " Mo"); // frame_encode->setGeometry(106,117,488,352); frame_encode->show(); frame_encode->raise(); } void mainfrm::f_current_time() { mplayerProcess.write("get_time_pos \n"); if ( frame_decoupage->isVisible() == true ) { mplayerProcess.write("get_percent_pos \n"); } } void mainfrm::f_open_video() { menuselect->show(); menuselect->setGeometry(10,8,98,32); slider_lumiere->setFocus(); bt_open_video->raise(); QString wmyfic = QFileDialog::getOpenFileName(this, tr("Ouvrir un projet"), working_dir, tr("Video (*.mpg *.MPG *.mpeg *.MPEG *.avi *.AVI *.wmv *.WMV *.flv *.FLV *.mov *.MOV)")); if ( wmyfic.isNull() ) { } else { label_DVD->hide(); label_titre->hide(); av_delta = 0; tmp_exchange_1 = ""; QStringList args_transcode; playing_file = wmyfic; iscompliant = 0; iscompatible->hide(); args_transcode << "-i"; args_transcode << wmyfic; transcodeProcess.setProcessChannelMode(QProcess::MergedChannels); transcodeProcess.start("tcprobe", args_transcode); if(!transcodeProcess.waitForStarted(3000)) { QMessageBox::information(this, "Manencode", tr("Transcode ne demarre pas. Est t il installe correctement ...")); } if ( mplayerProcess.state() == QProcess::Starting || mplayerProcess.state() == QProcess::Running ) { mplayerProcess.kill(); mplayerProcess.waitForFinished(1000); } // *** Initialisation du fichier edl *** QFile edlfile( currentDir.path() + "/.edlmandvd.edl" ); if (edlfile.open(QFile::WriteOnly)) { edlfile.close(); } else { QMessageBox::information(this, "Manencode", tr("Erreur de creation d un fichier parametre. Attention l application peut ne pas fonctionner correctement...")); } QStringList args; args << "-slave"; args << "-osdlevel" << "0"; args << "-quiet"; args << "-vo" << "gl2"; args << "-wid" << QString::number(frame->winId()); if ( chk_rotation_1->isChecked() == true ) { args << "-vf"; args << "rotate=1,scale=-2:576,expand=720:576"; } if ( chk_rotation_2->isChecked() == true ) { args << "-vf"; args << "rotate=2,scale=-2:576,expand=720:576"; } args << playing_file; mplayerProcess.setProcessChannelMode(QProcess::MergedChannels); mplayerProcess.start("mplayer", args); if(!mplayerProcess.waitForStarted(3000)) { QMessageBox::information(this, "Manencode", tr("Mplayer ne demarre pas. Est t il installe correctement ...")); } mplayerProcess.write("get_time_length\n"); isplaying = true; isstop = false; isedl = false; QIcon l_icon(bt_pause); bt_encoder->setEnabled(true); bt_stop_play->setIcon(l_icon); l_timer->start(1000); frame_player->setEnabled(true); bt_ss_titres->setEnabled(true); frame_menu_droit->setEnabled(true); bt_decoupage->setEnabled(true); fichier_sstitres->setText(""); f_change_lumiere(0); f_change_contraste(0); f_change_saturation(0); // *** Chargement du fichier des sous titres *** QString mycom; if ( fichier_sstitres->text() != "" ) { mycom = "sub_load " + fichier_sstitres->text() + " \n"; mplayerProcess.write( mycom.toUtf8() ); mplayerProcess.write("sub_select 0 \n"); } bt_forward->setEnabled(true); bt_rewind->setEnabled(true); int tmpvar2 = playing_file.lastIndexOf("/"); working_dir = playing_file.mid(0,tmpvar2); QTimer::singleShot(1000, this, SLOT(f_catch())); } } void mainfrm::f_catch() { QPixmap wl_pix_001(112,100); wl_pix_001.fill(Qt::black); QPixmap wl_pix_004(QApplication::applicationDirPath() + "/Interface/DVD.png"); QPixmap wl_pix_002 = QPixmap::grabWindow ( this->winId(), 10, 50, 500, 400); QPixmap wl_pix_003 = wl_pix_002.scaled ( 90, 89, Qt::KeepAspectRatio, Qt::FastTransformation); QPainter p; p.begin(&wl_pix_001); p.drawPixmap(17 + ((90 - wl_pix_003.width()) / 2), 5 + ((89 - wl_pix_003.height()) / 2), wl_pix_003, 0, 0, -1, -1 ); p.drawPixmap(0, 0, wl_pix_004, 0, 0, -1, -1 ); p.end(); label_DVD->setPixmap(wl_pix_001); label_DVD->show(); label_DVD->raise(); int tmpvar2 = playing_file.lastIndexOf("/"); label_titre->setText(playing_file.mid(tmpvar2 + 1,playing_file.length() - (tmpvar2+1))); label_titre->show(); } void mainfrm::f_stop_play_video() { if ( isplaying == true ) { mplayerProcess.write("pause \n"); bt_forward->setDisabled(true); bt_rewind->setDisabled(true); isplaying = false; l_timer->stop(); QIcon l_icon(bt_play); bt_stop_play->setIcon(l_icon); } else { if ( isstop == false ) { mplayerProcess.write("pause \n"); bt_forward->setEnabled(true); bt_rewind->setEnabled(true); isplaying = true; l_timer->start(1000); QIcon l_icon(bt_pause); bt_stop_play->setIcon(l_icon); } else { QStringList args; args << "-slave"; args << "-osdlevel" << "0"; args << "-quiet"; args << "-vo" << "gl2"; args << "-wid" << QString::number(frame->winId()); args << "-edl" << currentDir.path() + "/.edlmandvd.edl"; if ( chk_rotation_1->isChecked() == true ) { args << "-vf"; args << "rotate=1,scale=-2:576,expand=720:576"; } if ( chk_rotation_2->isChecked() == true ) { args << "-vf"; args << "rotate=2,scale=-2:576,expand=720:576"; } args << playing_file; mplayerProcess.setProcessChannelMode(QProcess::MergedChannels); mplayerProcess.start("mplayer", args); if(!mplayerProcess.waitForStarted(3000)) { QMessageBox::information(this, "Manencode", tr("Mplayer ne demarre pas. Est t il installe correctement ...")); } isplaying = true; isstop = false; QIcon l_icon(bt_pause); bt_encoder->setEnabled(true); bt_stop_play->setIcon(l_icon); l_timer->start(1000); frame_player->setEnabled(true); bt_ss_titres->setEnabled(true); f_change_lumiere(0); f_change_contraste(0); f_change_saturation(0); QString mycom; mycom = "audio_delay " + QString::number((float)delta_av->value() / (float)1000) + " 1 \n"; mplayerProcess.write( mycom.toUtf8() ); // *** Chargement du fichier des sous titres *** if ( fichier_sstitres->text() != "" ) { mycom = "sub_load " + fichier_sstitres->text() + " \n"; mplayerProcess.write( mycom.toUtf8() ); mplayerProcess.write("sub_select 0 \n"); } bt_forward->setEnabled(true); bt_rewind->setEnabled(true); } } } void mainfrm::f_forward() { mplayerProcess.write("seek 3 0 \n"); } void mainfrm::f_rewind() { mplayerProcess.write("seek -3 0 \n"); } void mainfrm::f_change_lumiere( int valeur ) { QString mycom; mycom = "brightness " + QString::number(slider_lumiere->value()) + " 1\n"; mplayerProcess.write( mycom.toUtf8() ); } void mainfrm::f_change_contraste( int valeur ) { QString mycom; mycom = "contrast " + QString::number(slider_contraste->value()) + " 1\n"; mplayerProcess.write( mycom.toUtf8() ); } void mainfrm::f_change_saturation( int valeur ) { QString mycom; mycom = "saturation " + QString::number(slider_saturation->value()) + " 1\n"; mplayerProcess.write( mycom.toUtf8() ); } void mainfrm::f_read_stdout() { while(mplayerProcess.canReadLine()) { QByteArray buffer(mplayerProcess.readLine()); if(buffer.startsWith("ANS_LENGTH")) { buffer.remove(0, 11); buffer.replace(QByteArray("'"), QByteArray("")); buffer.replace(QByteArray(" "), QByteArray("")); buffer.replace(QByteArray("\n"), QByteArray("")); buffer.replace(QByteArray("\r"), QByteArray("")); float maxTime = buffer.toFloat(); length_film = static_cast(maxTime+1); label_duree->setText(tr("Duree du clip : ") + QString::number(length_film) + " sec"); QTime mytime(0,0,0); QTime mytime_2 = mytime.addSecs(length_film); starting_edl->setMaximumTime(mytime_2); ending_edl->setMaximumTime(mytime_2); } if(buffer.startsWith("ANS_TIME_POSITION")) { buffer.remove(0, 18); buffer.replace(QByteArray("'"), QByteArray("")); buffer.replace(QByteArray(" "), QByteArray("")); buffer.replace(QByteArray("\n"), QByteArray("")); buffer.replace(QByteArray("\r"), QByteArray("")); float currTime = buffer.toFloat(); current_time_string = buffer; current_time_int = buffer.toFloat(); // QPixmap l_pix_1(pb_vide); QPixmap l_pix_2(pb_pleine); QPainter p; p.begin(&l_pix_1); float l_val = (((float)161 / (float)length_film) * (float)currTime); p.drawPixmap(0, 0, l_pix_2, 0, 0, (int)l_val, -1 ); p.end(); progress_film->setPixmap(l_pix_1); } if(buffer.startsWith("ANS_PERCENT_POSITION")) { buffer.remove(0, 21); buffer.replace(QByteArray("'"), QByteArray("")); buffer.replace(QByteArray(" "), QByteArray("")); buffer.replace(QByteArray("\n"), QByteArray("")); buffer.replace(QByteArray("\r"), QByteArray("")); int currPerc = buffer.toInt(); // slider_pos_percent->setValue(currPerc); } } }