diff -r 000e4543f204 -r fd707afbc3a2 QTfrontend/net/recorder.cpp --- a/QTfrontend/net/recorder.cpp Sun Jun 24 20:31:26 2012 +0400 +++ b/QTfrontend/net/recorder.cpp Sun Jun 24 20:57:02 2012 +0400 @@ -18,20 +18,26 @@ #include #include +//#include #include "recorder.h" #include "gameuiconfig.h" #include "hwconsts.h" #include "game.h" +#include "libav_iteraction.h" -HWRecorder::HWRecorder(GameUIConfig * config) : +HWRecorder::HWRecorder(GameUIConfig * config, const QString &prefix) : TCPBase(false) { this->config = config; + this->prefix = prefix; + finished = false; + name = prefix + "." + LibavIteraction::instance().getExtension(config->AVFormat()); } HWRecorder::~HWRecorder() { + emit encodingFinished(finished); } void HWRecorder::onClientDisconnect() @@ -47,14 +53,25 @@ { QByteArray msg = readbuffer.left(msglen + 1); readbuffer.remove(0, msglen + 1); - if (msg.at(1) == '?') + switch (msg.at(1)) + { + case '?': SendIPC("!"); + break; + case 'p': + emit onProgress(float(++curFrame)/numFrames); + break; + case 'v': + finished = true; + break; + } } } -void HWRecorder::EncodeVideo( const QByteArray & record, const QString & prefix ) +void HWRecorder::EncodeVideo(const QByteArray & record, int numFrames) { - this->prefix = prefix; + this->numFrames = numFrames; + curFrame = 0; toSendBuf = record; toSendBuf.replace(QByteArray("\x02TD"), QByteArray("\x02TV")); @@ -73,7 +90,7 @@ arguments << cfgdir->absolutePath(); arguments << QString::number(resolution.width()); arguments << QString::number(resolution.height()); - arguments << QString::number(config->bitDepth()); // bpp + arguments << "32"; // bpp arguments << QString("%1").arg(ipc_port); arguments << "0"; // fullscreen arguments << "0"; // sound @@ -94,10 +111,7 @@ arguments << config->videoCodec(); arguments << "5"; // video quality arguments << "medium"; - if (config->recordAudio()) - arguments << config->audioCodec(); - else - arguments << "no"; + arguments << (config->recordAudio()? config->audioCodec() : "no"); arguments << "5"; // audio quality return arguments;