@ -12,24 +12,24 @@
# include "k9newdvd.h"
# include "k9title.h"
# include "k9tools.h"
# include < qfile.h>
# include < t qfile.h>
# include <stdio.h>
# include < qtextstream.h>
# include < t qtextstream.h>
# include <kstandarddirs.h>
# include < qapplication.h>
# include < t qapplication.h>
# include <ktempfile.h>
# include <kapplication.h>
# include <klocale.h>
# include < qimage.h>
# include < t qimage.h>
# include <kmessagebox.h>
# include "k9menu.h"
# include "k9menubutton.h"
# include "k9processlist.h"
# include < qthread.h>
# include < qfileinfo.h>
# include < t qthread.h>
# include < t qfileinfo.h>
k9NewDVD : : k9NewDVD ( QObject * parent, const char * name )
: QObject( parent, name ) {
k9NewDVD : : k9NewDVD ( T QObject * tq parent, const char * name )
: T QObject( tq parent, name ) {
m_workDir = locateLocal ( " tmp " , " k9copy/ " ) ;
m_rootMenu = new k9Menu ( this ) ;
m_format = PAL ;
@ -38,7 +38,7 @@ k9NewDVD::k9NewDVD(QObject *parent, const char *name)
k9NewDVD : : ~ k9NewDVD ( ) { }
int k9NewDVDItems : : compareItems ( QPtrCollection: : Item item1 , QPtrCollection: : Item item2 ) {
int k9NewDVDItems : : compareItems ( T QPtrCollection: : Item item1 , T QPtrCollection: : Item item2 ) {
k9Title * _i1 = ( k9Title * ) item1 ;
k9Title * _i2 = ( k9Title * ) item2 ;
@ -51,19 +51,19 @@ void k9NewDVD::execute() {
m_cancel = false ;
m_error = " " ;
m_config = new k9Config ( ) ;
// connect(m_process, SIGNAL(receivedStderr(KProcess *, char *, int)),this, SLOT(getStderr(KProcess *, char *, int) ));
// connect(m_process, TQT_ SIGNAL(receivedStderr(KProcess *, char *, int)),this, TQT_ SLOT(getStderr(KProcess *, char *, int) ));
connect ( & m_aviDecode , SIGNAL( drawFrame ( QImage* ) ) , this , SLOT( drawImage ( QImage* ) ) ) ;
connect ( & m_aviDecode , TQT_ SIGNAL( drawFrame ( T QImage* ) ) , this , TQT_ SLOT( drawImage ( T QImage* ) ) ) ;
k9Tools : : clearOutput ( m_workDir + " dvd " ) ;
createXML ( ) ;
disconnect ( & m_aviDecode , SIGNAL( drawFrame ( QImage* ) ) , this , SLOT( drawImage ( QImage* ) ) ) ;
disconnect ( & m_aviDecode , TQT_ SIGNAL( drawFrame ( T QImage* ) ) , this , TQT_ SLOT( drawImage ( T QImage* ) ) ) ;
delete m_config ;
}
# include "k9newdvd.moc"
void k9NewDVD : : drawImage ( QImage * _image ) {
void k9NewDVD : : drawImage ( T QImage * _image ) {
// m_progress->setImage(*_image);
}
@ -80,16 +80,16 @@ void k9NewDVD::createXML() {
m_rootMenu - > setWorkDir ( m_workDir ) ;
QString menuFileName = m_workDir + KApplication : : randomString ( 8 ) + " .mpg " ;
T QString menuFileName = m_workDir + KApplication : : randomString ( 8 ) + " .mpg " ;
m_rootMenu - > setMenuFileName ( menuFileName ) ;
m_xml = new QDomDocument( ) ;
QDomElement root = m_xml - > createElement ( " dvdauthor " ) ;
m_xml = new T QDomDocument( ) ;
T QDomElement root = m_xml - > createElement ( " dvdauthor " ) ;
root . setAttribute ( " dest " , m_workDir + " dvd " ) ;
m_xml - > appendChild ( root ) ;
// Create vmgm menu
QDomElement vmgm = m_xml - > createElement ( " vmgm " ) ;
T QDomElement vmgm = m_xml - > createElement ( " vmgm " ) ;
root . appendChild ( vmgm ) ;
m_processList - > addProgress ( i18n ( " Creating root menu " ) ) ;
m_rootMenu - > createMenus ( & vmgm ) ;
@ -99,10 +99,10 @@ void k9NewDVD::createXML() {
m_totalEncodedSize = 0 ;
m_offset = 0 ;
m_lastvalue = 0 ;
for ( QStringList: : Iterator it = m_tmpFiles . begin ( ) ; it ! = m_tmpFiles . end ( ) ; + + it ) {
QString file = * it ;
for ( T QStringList: : Iterator it = m_tmpFiles . begin ( ) ; it ! = m_tmpFiles . end ( ) ; + + it ) {
T QString file = * it ;
if ( file . endsWith ( " .mpeg " ) ) {
QFileInfo f ( file ) ;
T QFileInfo f ( file ) ;
m_totalEncodedSize + = f . size ( ) ;
}
}
@ -110,17 +110,17 @@ void k9NewDVD::createXML() {
m_cancel = m_processList - > getCancel ( ) ;
bool error = false ;
if ( ! m_cancel ) {
QString dvdAuthor ( m_workDir + " / " + KApplication : : randomString ( 8 ) + " .xml " ) ;
QFile file ( dvdAuthor ) ;
T QString dvdAuthor ( m_workDir + " / " + KApplication : : randomString ( 8 ) + " .xml " ) ;
T QFile file ( dvdAuthor ) ;
file . open ( IO_WriteOnly ) ;
QTextStream stream ( & file ) ;
T QTextStream stream ( & file ) ;
m_xml - > save ( stream , 1 ) ;
file . close ( ) ;
m_processList - > clear ( ) ;
k9Process * process = m_processList - > addProcess ( i18n ( " authoring " ) ) ;
connect ( process , SIGNAL( receivedStderr ( KProcess * , char * , int ) ) , this , SLOT( getStderr ( KProcess * , char * , int ) ) ) ;
connect ( process , TQT_ SIGNAL( receivedStderr ( KProcess * , char * , int ) ) , this , TQT_ SLOT( getStderr ( KProcess * , char * , int ) ) ) ;
* process < < " dvdauthor " < < " -x " < < dvdAuthor ;
m_processList - > execute ( ) ;
m_cancel = m_processList - > getCancel ( ) ;
@ -134,9 +134,9 @@ void k9NewDVD::createXML() {
m_error = i18n ( " The dvd authoring was canceled " ) ;
else if ( error )
m_error = i18n ( " An error occured while running DVDAuthor: \n " ) + m_stdout ;
QFile: : remove ( menuFileName ) ;
for ( QStringList: : Iterator it = m_tmpFiles . begin ( ) ; it ! = m_tmpFiles . end ( ) ; + + it ) {
QFile: : remove ( * it ) ;
T QFile: : remove ( menuFileName ) ;
for ( T QStringList: : Iterator it = m_tmpFiles . begin ( ) ; it ! = m_tmpFiles . end ( ) ; + + it ) {
T QFile: : remove ( * it ) ;
}
m_tmpFiles . clear ( ) ;
if ( m_error ! = " " ) {
@ -146,23 +146,23 @@ void k9NewDVD::createXML() {
}
void k9NewDVD : : addTitles ( QDomElement & _root ) {
void k9NewDVD : : addTitles ( T QDomElement & _root ) {
calcVideoBitrate ( ) ;
for ( k9Title * title = m_titles . first ( ) ; title & & ! m_cancel ; title = m_titles . next ( ) ) {
QDomElement titleSet = m_xml - > createElement ( " titleset " ) ;
T QDomElement titleSet = m_xml - > createElement ( " titleset " ) ;
_root . appendChild ( titleSet ) ;
QDomElement pgc ;
T QDomElement pgc ;
k9Menu * menu = title - > getMenu ( ) ;
menu - > setWorkDir ( m_workDir ) ;
QString menuFileName = m_workDir + KApplication : : randomString ( 8 ) + " .mpg " ;
T QString menuFileName = m_workDir + KApplication : : randomString ( 8 ) + " .mpg " ;
m_tmpFiles < < menuFileName ,
menu - > setMenuFileName ( menuFileName ) ;
m_processList - > addProgress ( i18n ( " Creating menu for title %1 " ) . arg( title - > getNum ( ) + 1 ) ) ;
m_processList - > addProgress ( i18n ( " Creating menu for title %1 " ) . tq arg( title - > getNum ( ) + 1 ) ) ;
menu - > createMenus ( & titleSet ) ;
QDomElement eTitle = m_xml - > createElement ( " titles " ) ;
T QDomElement eTitle = m_xml - > createElement ( " titles " ) ;
titleSet . appendChild ( eTitle ) ;
QDomElement e = m_xml - > createElement ( " video " ) ;
T QDomElement e = m_xml - > createElement ( " video " ) ;
e . setAttribute ( " aspect " , " 16:9 " ) ;
e . setAttribute ( " format " , m_format = = PAL ? " PAL " : " NTSC " ) ;
// if (l_track->getaspectRatio()!="4:3") {
@ -177,15 +177,15 @@ void k9NewDVD::addTitles (QDomElement &_root) {
pgc = m_xml - > createElement ( " pgc " ) ;
eTitle . appendChild ( pgc ) ;
QDomElement post = m_xml - > createElement ( " post " ) ;
T QDomElement post = m_xml - > createElement ( " post " ) ;
pgc . appendChild ( post ) ;
QDomText txt = m_xml - > createTextNode ( title - > getMenu ( ) - > getEndScript ( ) ) ;
T QDomText txt = m_xml - > createTextNode ( title - > getMenu ( ) - > getEndScript ( ) ) ;
post . appendChild ( txt ) ;
QPtrList < k9AviFile > * l = title - > getFiles ( ) ;
T QPtrList < k9AviFile > * l = title - > getFiles ( ) ;
for ( k9AviFile * aviFile = l - > first ( ) ; aviFile & & ! m_cancel ; aviFile = l - > next ( ) ) {
if ( aviFile - > getPrevious ( ) = = NULL | | aviFile - > getBreakPrevious ( ) ) {
QString cmd = " " , chapters = " " ;
T QString cmd = " " , chapters = " " ;
createMencoderCmd ( cmd , chapters , aviFile ) ;
e = m_xml - > createElement ( " vob " ) ;
e . setAttribute ( " file " , cmd ) ;
@ -198,18 +198,18 @@ void k9NewDVD::addTitles (QDomElement &_root) {
}
void k9NewDVD : : setWorkDir ( const QString& _value ) {
void k9NewDVD : : setWorkDir ( const T QString& _value ) {
m_workDir = _value ;
if ( ! m_workDir . endsWith ( " / " ) )
m_workDir + = " / " ;
}
void k9NewDVD : : createMencoderCmd ( QString & _cmd , QString & _chapters , k9AviFile * _aviFile ) {
void k9NewDVD : : createMencoderCmd ( T QString & _cmd , T QString & _chapters , k9AviFile * _aviFile ) {
// m_aviDecode.open(_aviFile->getFileName());
m_timer . start ( ) ;
m_timer2 . start ( ) ;
m_timer3 . start ( ) ;
QTime end ;
T QTime end ;
k9AviFile * file = _aviFile ;
bool bEnd ;
_chapters = " 0 " ;
@ -219,20 +219,20 @@ void k9NewDVD::createMencoderCmd(QString &_cmd,QString &_chapters, k9AviFile *_a
file = file - > getNext ( ) ;
if ( ! bEnd ) {
int lt = _aviFile - > getStart ( ) . msecsTo ( end ) ;
QTime t ;
T QTime t ;
t = t . addMSecs ( lt ) ;
_chapters + = " , " + t . toString ( " hh:mm:ss " ) ;
}
} while ( ! bEnd ) ;
QString fileName = m_workDir + KApplication : : randomString ( 8 ) + " .mpeg " ;
QString t1 = _aviFile - > getStart ( ) . toString ( " hh:mm:ss.zzz " ) ;
T QString fileName = m_workDir + KApplication : : randomString ( 8 ) + " .mpeg " ;
T QString t1 = _aviFile - > getStart ( ) . toString ( " hh:mm:ss.zzz " ) ;
int length = _aviFile - > getStart ( ) . msecsTo ( end ) ;
QTime l ;
T QTime l ;
l = l . addMSecs ( length ) ;
QString t2 = l . toString ( " hh:mm:ss.zzz " ) ;
QString scale ;
QString fps ;
T QString t2 = l . toString ( " hh:mm:ss.zzz " ) ;
T QString scale ;
T QString fps ;
switch ( m_format ) {
case PAL :
scale = " 720:576 " ;
@ -244,18 +244,18 @@ void k9NewDVD::createMencoderCmd(QString &_cmd,QString &_chapters, k9AviFile *_a
break ;
}
k9Process * process = m_processList - > addProcess ( i18n ( " Encoding %1 " ) . arg( _aviFile - > getFileName ( ) ) ) ;
k9Process * process = m_processList - > addProcess ( i18n ( " Encoding %1 " ) . tq arg( _aviFile - > getFileName ( ) ) ) ;
m_processList - > setFileName ( process , _aviFile - > getFileName ( ) ) ;
QTime t ( 0 , 0 ) ;
T QTime t ( 0 , 0 ) ;
t . start ( ) ;
m_timers [ process ] = t ;
connect ( process , SIGNAL( receivedStdout ( KProcess * , char * , int ) ) , this , SLOT( getStdout ( KProcess * , char * , int ) ) ) ;
connect ( process , TQT_ SIGNAL( receivedStdout ( KProcess * , char * , int ) ) , this , TQT_ SLOT( getStdout ( KProcess * , char * , int ) ) ) ;
//m_progress->setTitle(i18n("Encoding file"));
//m_process->clearArguments();
* process < < " mencoder " < < " -oac " < < " lavc " < < " -ovc " < < " lavc " < < " -of " < < " mpeg " < < " -afm " < < " libmad " ;
* process < < " -mpegopts " < < " format=dvd " < < " -vf " < < " scale= " + scale + " ,harddup " < < " -srate " < < " 48000 " < < " -af " < < " lavcresample=48000 " ;
* process < < " -lavcopts " < < QString( " vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=%1:keyint=15:acodec=%3:abitrate=%2:aspect=16/9 " ) . arg( m_videoBitrate ) . arg( m_config - > getPrefAudioBitrate ( ) ) . arg( m_config - > getPrefAudioFormat ( ) . lower ( ) ) ;
* process < < " -lavcopts " < < T QString( " vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=%1:keyint=15:acodec=%3:abitrate=%2:aspect=16/9 " ) . tq arg( m_videoBitrate ) . tq arg( m_config - > getPrefAudioBitrate ( ) ) . tq arg( m_config - > getPrefAudioFormat ( ) . lower ( ) ) ;
* process < < " -ofps " < < fps < < " -o " < < fileName < < " -ss " < < t1 < < " -endpos " < < t2 < < _aviFile - > getFileName ( ) ;
qDebug ( process - > debug ( ) ) ;
/*
@ -273,16 +273,16 @@ void k9NewDVD::createMencoderCmd(QString &_cmd,QString &_chapters, k9AviFile *_a
}
void k9NewDVD : : getStderr ( KProcess * _process , char * _buffer , int _length ) {
QCString tmp ( _buffer , _length ) ;
T QCString tmp ( _buffer , _length ) ;
m_stdout = tmp ;
int pos ;
if ( tmp . contains( " STAT: " ) ) {
pos = tmp . find( " fixing VOBU " ) ;
if ( tmp . tq contains( " STAT: " ) ) {
pos = tmp . tq find( " fixing VOBU " ) ;
if ( pos ! = - 1 ) {
QString tmp2 = tmp ;
T QString tmp2 = tmp ;
// m_progress->setTitle(i18n("Authoring"));
// m_progress->setLabelText(i18n("Fixing VOBUS"));
int end = tmp2 . find( " % " ) ;
int end = tmp2 . tq find( " % " ) ;
if ( end ! = - 1 ) {
pos = end - 2 ;
tmp2 = tmp2 . mid ( pos , end - pos ) ;
@ -290,9 +290,9 @@ void k9NewDVD::getStderr(KProcess *_process, char *_buffer, int _length) {
// m_progress->setProgress(tmp2.toInt(),100);
}
} else {
pos = tmp . find( " STAT: VOBU " ) ;
pos = tmp . tq find( " STAT: VOBU " ) ;
if ( pos ! = - 1 ) {
QCString tmp2 ( _buffer + pos , _length - pos ) ;
T QCString tmp2 ( _buffer + pos , _length - pos ) ;
int vobu , mb ;
sscanf ( tmp2 . data ( ) , " STAT: VOBU %d at %dMB " , & vobu , & mb ) ;
if ( mb < m_lastvalue )
@ -311,12 +311,12 @@ void k9NewDVD::getStderr(KProcess *_process, char *_buffer, int _length) {
void k9NewDVD : : getStdout ( KProcess * _process , char * _buffer , int _length ) {
k9Process * process = ( k9Process * ) _process ;
if ( m_timers [ process ] . elapsed ( ) > 500 ) {
QCString tmp ( _buffer , _length ) ;
int pos = tmp . find( " Pos: " ) ;
T QCString tmp ( _buffer , _length ) ;
int pos = tmp . tq find( " Pos: " ) ;
if ( pos ! = - 1 ) {
QString tmp2 = tmp . mid ( pos ) ;
tmp2 = tmp2 . replace( " : " , " : " ) . replace( " ( " , " " ) . replace( " ) " , " " ) . simplifyWhiteSpace ( ) ;
QStringList sl = QStringList: : split ( " " , tmp2 ) ;
T QString tmp2 = tmp . mid ( pos ) ;
tmp2 = tmp2 . tq replace( " : " , " : " ) . tq replace( " ( " , " " ) . tq replace( " ) " , " " ) . simplifyWhiteSpace ( ) ;
T QStringList sl = T QStringList: : split ( " " , tmp2 ) ;
float position ;
sscanf ( sl [ 1 ] . latin1 ( ) , " %fs " , & position ) ;
int frame ;
@ -331,17 +331,17 @@ void k9NewDVD::getStdout(KProcess *_process, char *_buffer, int _length) {
// if (percent>0 &&m_timer3.elapsed() >1000 ) {
if ( percent > 0 ) {
int elapsed = process - > getElapsed ( ) ;
QTime time2 ( 0 , 0 ) ;
T QTime time2 ( 0 , 0 ) ;
time2 = time2 . addMSecs ( elapsed ) ;
QTime time3 ( 0 , 0 ) ;
T QTime time3 ( 0 , 0 ) ;
float fprc = percent / 100.0 ;
time3 = time3 . addMSecs ( ( uint32_t ) ( elapsed * ( 1.0 / fprc ) ) ) ;
m_processList - > setText ( process , time2 . toString ( " hh:mm:ss " ) + " / " + time3 . toString ( " hh:mm:ss " ) , 1 ) ;
m_timer3 . restart ( ) ;
}
QString text ; //=i18n("filename") + " : " + m_aviDecode.getFileName();
text = i18n ( " fps " ) + " : " + QString: : number ( fps ) ;
T QString text ; //=i18n("filename") + " : " + m_aviDecode.getFileName();
text = i18n ( " fps " ) + " : " + T QString: : number ( fps ) ;
m_processList - > setText ( process , text , 2 ) ;
/*
m_progress - > setLabelText ( text ) ;
@ -365,9 +365,9 @@ void k9NewDVD::appendTitle(k9Title *_title) {
k9MenuButton * btn = m_rootMenu - > addButton ( ) ;
_title - > setButton ( btn ) ;
btn - > setNum ( _title - > getNum ( ) + 1 ) ;
QPixmap px ( m_config - > getPrefButtonWidth ( ) , m_config - > getPrefButtonHeight ( ) ) ;
px . fill ( Qt: : black ) ;
QImage img = px . convertToImage ( ) ;
T QPixmap px ( m_config - > getPrefButtonWidth ( ) , m_config - > getPrefButtonHeight ( ) ) ;
px . fill ( T Qt: : black ) ;
T QImage img = px . convertToImage ( ) ;
btn - > setImage ( img ) ;
int nbColumn = ( 720 - 50 ) / ( m_config - > getPrefButtonWidth ( ) + 50 ) ;
int top = ( int ) _title - > getNum ( ) / nbColumn ;
@ -376,15 +376,15 @@ void k9NewDVD::appendTitle(k9Title *_title) {
btn - > setLeft ( left * ( m_config - > getPrefButtonWidth ( ) + 50 ) + 50 ) ;
btn - > setWidth ( m_config - > getPrefButtonWidth ( ) ) ;
btn - > setHeight ( m_config - > getPrefButtonHeight ( ) ) ;
btn - > setScript ( QString( " g1=0;jump titleset %1 menu; " ) . arg( _title - > getNum ( ) + 1 ) ) ;
btn - > setScript ( T QString( " g1=0;jump titleset %1 menu; " ) . tq arg( _title - > getNum ( ) + 1 ) ) ;
btn - > setTextPosition ( k9MenuButton : : RIGHT ) ;
btn - > setText ( i18n ( " title %1 " ) . arg( _title - > getNum ( ) + 1 ) ) ;
btn - > setText ( i18n ( " title %1 " ) . tq arg( _title - > getNum ( ) + 1 ) ) ;
btn - > setColor ( m_config - > getPrefButtonTextColor ( ) ) ;
btn - > setFont ( m_config - > getPrefButtonFont ( ) ) ;
QString script = " \n " ;
T QString script = " \n " ;
for ( k9Title * t = m_titles . first ( ) ; t ; t = m_titles . next ( ) ) {
script + = QString( " if (g6== %1) { g6=0; jump titleset %2 menu;} \n " ) . arg( t - > getNum ( ) + 1 ) . arg( t - > getNum ( ) + 1 ) ;
script + = T QString( " if (g6== %1) { g6=0; jump titleset %2 menu;} \n " ) . tq arg( t - > getNum ( ) + 1 ) . tq arg( t - > getNum ( ) + 1 ) ;
}
m_rootMenu - > setStartScript2 ( script ) ;
emit sigAddTitle ( ) ;
@ -420,7 +420,7 @@ void k9NewDVD::calcVideoBitrate() {
double sec = ( double ) length / 1000.0 ;
// m_videoBitrate=(int)( (size * 8388.608)/sec - 192);
m_videoBitrate = 8 * ( ( size * 1024 - ( m_config - > getPrefAudioBitrate ( ) * sec / 8 ) ) / sec ) ;
m_videoBitrate = QMIN( m_videoBitrate , 9800 ) ;
m_videoBitrate = T QMIN( m_videoBitrate , 9800 ) ;
}
int k9NewDVD : : getTotalTime ( ) {
@ -434,6 +434,6 @@ int k9NewDVD::getTotalTime() {
return total ;
}
QString k9NewDVD : : getError ( ) const {
T QString k9NewDVD : : getError ( ) const {
return m_error ;
}