[AV] Removed unused code, merged av and transcode
This commit is contained in:
@@ -36,7 +36,9 @@
|
||||
#include "auth/LmsAuth.hpp"
|
||||
#include "audio/desktop/DesktopAudio.hpp"
|
||||
#include "audio/mobile/MobileAudio.hpp"
|
||||
#if HAVE_VIDEO
|
||||
#include "video/VideoWidget.hpp"
|
||||
#endif
|
||||
#include "common/LineEdit.hpp"
|
||||
|
||||
#include "LmsApplication.hpp"
|
||||
@@ -196,10 +198,13 @@ LmsApplication::handleAuthEvent(void)
|
||||
else
|
||||
audio = new Desktop::Audio();
|
||||
|
||||
VideoWidget *videoWidget = new VideoWidget();
|
||||
|
||||
leftMenu->addItem("Audio", audio);
|
||||
|
||||
#if defined HAVE_VIDEO
|
||||
VideoWidget *videoWidget = new VideoWidget();
|
||||
leftMenu->addItem("Video", videoWidget);
|
||||
#endif
|
||||
|
||||
leftMenu->addItem("Settings", new Settings::Settings());
|
||||
|
||||
// Setup a Right-aligned menu.
|
||||
|
||||
@@ -172,85 +172,92 @@ AudioMediaPlayer::AudioMediaPlayer(Wt::WContainerWidget *parent)
|
||||
}
|
||||
|
||||
void
|
||||
AudioMediaPlayer::loadPlayer(void)
|
||||
AudioMediaPlayer::loadPlayer(boost::filesystem::path filePath, Av::TranscodeParameters& parameters)
|
||||
{
|
||||
_currentFile = filePath;
|
||||
_currentParameters = parameters;
|
||||
|
||||
_mediaPlayer->clearSources();
|
||||
|
||||
if (_mediaResource)
|
||||
delete _mediaResource;
|
||||
|
||||
assert( _currentParameters );
|
||||
_mediaResource = new AvConvTranscodeStreamResource( *_currentParameters, this );
|
||||
_mediaResource = new AvConvTranscodeStreamResource( filePath, parameters, this );
|
||||
|
||||
_mediaPlayer->addSource( getEncoding(), Wt::WLink(_mediaResource));
|
||||
}
|
||||
|
||||
void
|
||||
AudioMediaPlayer::load(Database::Track::id_type trackId)
|
||||
{
|
||||
std::size_t bitrate = 0;
|
||||
boost::filesystem::path trackPath;
|
||||
|
||||
{
|
||||
Wt::Dbo::Transaction transaction(DboSession());
|
||||
|
||||
Database::Track::pointer track = Database::Track::getById(DboSession(), trackId);
|
||||
|
||||
bitrate = CurrentUser()->getAudioBitrate();
|
||||
trackPath = track->getPath();
|
||||
_mediaTitle->setText ( Wt::WString::fromUTF8(track->getName()) );
|
||||
_mediaArtistRelease->setText ( Wt::WString::fromUTF8(track->getArtist()->getName()) + " - " + Wt::WString::fromUTF8(track->getRelease()->getName()) );
|
||||
_mediaCover->setImageLink( Wt::WLink (LmsApplication::instance()->getCoverResource()->getTrackUrl(trackId, 72)));
|
||||
}
|
||||
|
||||
Transcode::Format::Encoding encoding;
|
||||
switch (_encoding)
|
||||
{
|
||||
case Wt::WMediaPlayer::MP3: encoding = Transcode::Format::MP3; break;
|
||||
case Wt::WMediaPlayer::FLA: encoding = Transcode::Format::FLA; break;
|
||||
case Wt::WMediaPlayer::OGA: encoding = Transcode::Format::OGA; break;
|
||||
case Wt::WMediaPlayer::WEBMA: encoding = Transcode::Format::WEBMA; break;
|
||||
default:
|
||||
encoding = Transcode::Format::MP3;
|
||||
}
|
||||
|
||||
_timeSlider->setDisabled(false);
|
||||
|
||||
try
|
||||
{
|
||||
Transcode::Parameters parameters(trackPath, Transcode::Format::get(encoding));
|
||||
parameters.setBitrate(Transcode::Stream::Audio, bitrate);
|
||||
|
||||
_currentParameters = std::make_shared<Transcode::Parameters>( parameters );
|
||||
}
|
||||
catch(std::exception &e)
|
||||
{
|
||||
LMS_LOG(MOD_UI, SEV_ERROR) << "Cannot load input file '" << trackPath << "'";
|
||||
return;
|
||||
}
|
||||
|
||||
loadPlayer();
|
||||
|
||||
_timeSlider->setRange(0, _currentParameters->getInputMediaFile().getDuration().total_seconds() );
|
||||
_timeSlider->setValue(0);
|
||||
|
||||
_duration->setText( boost::posix_time::to_simple_string( _currentParameters->getInputMediaFile().getDuration() ));
|
||||
|
||||
// Auto play
|
||||
_mediaPlayer->play();
|
||||
}
|
||||
|
||||
void
|
||||
AudioMediaPlayer::load(Database::Track::id_type trackId)
|
||||
{
|
||||
Av::TranscodeParameters parameters;
|
||||
|
||||
boost::filesystem::path path;
|
||||
|
||||
boost::posix_time::time_duration duration;
|
||||
|
||||
{
|
||||
Wt::Dbo::Transaction transaction(DboSession());
|
||||
|
||||
Database::Track::pointer track = Database::Track::getById(DboSession(), trackId);
|
||||
|
||||
path = track->getPath();
|
||||
parameters.setBitrate(Av::Stream::Type::Audio, CurrentUser()->getAudioBitrate() );
|
||||
|
||||
duration = track->getDuration();
|
||||
|
||||
_mediaTitle->setText ( Wt::WString::fromUTF8(track->getName()) );
|
||||
_mediaArtistRelease->setText ( Wt::WString::fromUTF8(track->getArtist()->getName()) + " - " + Wt::WString::fromUTF8(track->getRelease()->getName()) );
|
||||
_mediaCover->setImageLink( Wt::WLink (LmsApplication::instance()->getCoverResource()->getTrackUrl(trackId, 72)));
|
||||
}
|
||||
|
||||
Av::MediaFile mediaFile(path);
|
||||
|
||||
if (!mediaFile.open())
|
||||
{
|
||||
// No longer exist ? TODO next?
|
||||
LMS_LOG(MOD_UI, SEV_INFO) << "Cannot open file '" << path << "'";
|
||||
return;
|
||||
}
|
||||
|
||||
// It seems to be far better to manually map the streams
|
||||
// otherwise, some files may have to be fully transcoded to be played by browser...
|
||||
int audioBestStreamId = mediaFile.getBestStreamId(Av::Stream::Type::Audio);
|
||||
if (audioBestStreamId != -1)
|
||||
parameters.addStream(audioBestStreamId);
|
||||
|
||||
Av::Encoding encoding;
|
||||
switch (_encoding)
|
||||
{
|
||||
case Wt::WMediaPlayer::MP3: encoding = Av::Encoding::MP3; break;
|
||||
case Wt::WMediaPlayer::FLA: encoding = Av::Encoding::FLA; break;
|
||||
case Wt::WMediaPlayer::OGA: encoding = Av::Encoding::OGA; break;
|
||||
case Wt::WMediaPlayer::WEBMA: encoding = Av::Encoding::WEBMA; break;
|
||||
default:
|
||||
encoding = Av::Encoding::MP3;
|
||||
}
|
||||
parameters.setEncoding(encoding);
|
||||
|
||||
_timeSlider->setDisabled(false);
|
||||
_timeSlider->setRange(0, duration.total_seconds() );
|
||||
_timeSlider->setValue(0);
|
||||
|
||||
_duration->setText( boost::posix_time::to_simple_string( duration ));
|
||||
|
||||
loadPlayer(path, parameters);
|
||||
}
|
||||
|
||||
void
|
||||
AudioMediaPlayer::handlePlayOffset(int offsetSecs)
|
||||
{
|
||||
if (!_currentParameters)
|
||||
return;
|
||||
Av::TranscodeParameters parameters = _currentParameters;
|
||||
|
||||
_currentParameters->setOffset( boost::posix_time::seconds(offsetSecs) );
|
||||
parameters.setOffset( boost::posix_time::seconds(offsetSecs) );
|
||||
|
||||
loadPlayer();
|
||||
|
||||
_mediaPlayer->play();
|
||||
loadPlayer(_currentFile, parameters);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -262,10 +269,7 @@ AudioMediaPlayer::handleTrackEnded(void)
|
||||
void
|
||||
AudioMediaPlayer::handleTimeUpdated(void)
|
||||
{
|
||||
if (!_currentParameters)
|
||||
return;
|
||||
|
||||
boost::posix_time::time_duration currentTime ( boost::posix_time::seconds( _mediaPlayer->currentTime() + _currentParameters->getOffset().total_seconds()));
|
||||
boost::posix_time::time_duration currentTime ( boost::posix_time::seconds( _mediaPlayer->currentTime() + _currentParameters.getOffset().total_seconds()));
|
||||
|
||||
_timeSlider->setValue( currentTime.total_seconds() );
|
||||
_curTime->setText( boost::posix_time::to_simple_string( currentTime) );
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
#include "database/Types.hpp"
|
||||
|
||||
#include "transcode/Parameters.hpp"
|
||||
#include "av/AvTranscoder.hpp"
|
||||
#include "resource/AvConvTranscodeStreamResource.hpp"
|
||||
#include "resource/CoverResource.hpp"
|
||||
|
||||
@@ -70,7 +70,7 @@ class AudioMediaPlayer : public Wt::WContainerWidget
|
||||
|
||||
void handleVolumeSliderMoved(int value);
|
||||
|
||||
void loadPlayer(void);
|
||||
void loadPlayer(boost::filesystem::path filePath, Av::TranscodeParameters& parameters);
|
||||
|
||||
// Signals
|
||||
Wt::Signal<void> _playbackEnded;
|
||||
@@ -90,7 +90,6 @@ class AudioMediaPlayer : public Wt::WContainerWidget
|
||||
Wt::WText* _mediaArtistRelease;
|
||||
|
||||
// Controls
|
||||
std::shared_ptr<Transcode::Parameters> _currentParameters;
|
||||
Wt::WPushButton* _playBtn;
|
||||
Wt::WPushButton* _pauseBtn;
|
||||
Wt::WSlider* _timeSlider;
|
||||
@@ -98,6 +97,10 @@ class AudioMediaPlayer : public Wt::WContainerWidget
|
||||
Wt::WText* _curTime;
|
||||
Wt::WText* _duration;
|
||||
|
||||
// Transcode
|
||||
boost::filesystem::path _currentFile;
|
||||
Av::TranscodeParameters _currentParameters;
|
||||
|
||||
};
|
||||
|
||||
} // namespace Desktop
|
||||
|
||||
@@ -164,21 +164,23 @@ Audio::Audio(Wt::WContainerWidget *parent)
|
||||
|
||||
if (track)
|
||||
{
|
||||
Av::TranscodeParameters parameters;
|
||||
|
||||
// Determine the output format using the encoding of the player
|
||||
Transcode::Format::Encoding encoding;
|
||||
Av::Encoding encoding;
|
||||
switch(mediaPlayer->getEncoding())
|
||||
{
|
||||
case Wt::WMediaPlayer::MP3: encoding = Transcode::Format::MP3; break;
|
||||
case Wt::WMediaPlayer::FLA: encoding = Transcode::Format::FLA; break;
|
||||
case Wt::WMediaPlayer::OGA: encoding = Transcode::Format::OGA; break;
|
||||
case Wt::WMediaPlayer::WEBMA: encoding = Transcode::Format::WEBMA; break;
|
||||
case Wt::WMediaPlayer::MP3: encoding = Av::Encoding::MP3; break;
|
||||
case Wt::WMediaPlayer::FLA: encoding = Av::Encoding::FLA; break;
|
||||
case Wt::WMediaPlayer::OGA: encoding = Av::Encoding::OGA; break;
|
||||
case Wt::WMediaPlayer::WEBMA: encoding = Av::Encoding::WEBMA; break;
|
||||
default:
|
||||
encoding = Transcode::Format::MP3;
|
||||
encoding = Av::Encoding::MP3;
|
||||
}
|
||||
// TODO compute parameters using user s profile
|
||||
Transcode::InputMediaFile inputFile(track->getPath());
|
||||
Transcode::Parameters parameters(inputFile, Transcode::Format::get(encoding));
|
||||
parameters.setBitrate(Transcode::Stream::Audio, 96000);
|
||||
parameters.setEncoding(encoding);
|
||||
|
||||
// TODO compute parameters using user's profile
|
||||
parameters.setBitrate(Av::Stream::Type::Audio, 96000);
|
||||
|
||||
mediaPlayer->play(track.id(), parameters);
|
||||
}
|
||||
|
||||
@@ -80,17 +80,9 @@ _encoding(encoding)
|
||||
}
|
||||
|
||||
void
|
||||
AudioMediaPlayer::play(Database::Track::id_type trackId, const Transcode::Parameters& parameters)
|
||||
AudioMediaPlayer::play(Database::Track::id_type trackId, Av::TranscodeParameters parameters)
|
||||
{
|
||||
// FIXME memleak here
|
||||
AvConvTranscodeStreamResource *resource = new AvConvTranscodeStreamResource( parameters, this );
|
||||
|
||||
_player->clearSources();
|
||||
_player->addSource( _encoding, Wt::WLink(resource));
|
||||
|
||||
_player->play();
|
||||
|
||||
_cover->setImageLink( Wt::WLink (LmsApplication::instance()->getCoverResource()->getTrackUrl(trackId, 48)));
|
||||
boost::filesystem::path path;
|
||||
|
||||
{
|
||||
Wt::Dbo::Transaction transaction(DboSession());
|
||||
@@ -99,7 +91,19 @@ AudioMediaPlayer::play(Database::Track::id_type trackId, const Transcode::Parame
|
||||
|
||||
_track->setText( Wt::WString::fromUTF8(track->getName() ));
|
||||
_artistRelease->setText( Wt::WString::fromUTF8(track->getArtist()->getName()) );
|
||||
path = track->getPath();
|
||||
}
|
||||
|
||||
// FIXME memleak here
|
||||
AvConvTranscodeStreamResource *resource = new AvConvTranscodeStreamResource( path, parameters, this );
|
||||
|
||||
_player->clearSources();
|
||||
_player->addSource( _encoding, Wt::WLink(resource));
|
||||
|
||||
_player->play();
|
||||
|
||||
_cover->setImageLink( Wt::WLink (LmsApplication::instance()->getCoverResource()->getTrackUrl(trackId, 48)));
|
||||
|
||||
}
|
||||
|
||||
} // namespace UserInterface
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#include <Wt/WImage>
|
||||
|
||||
#include "database/DatabaseHandler.hpp"
|
||||
#include "transcode/Parameters.hpp"
|
||||
#include "av/AvTranscoder.hpp"
|
||||
|
||||
namespace UserInterface {
|
||||
namespace Mobile {
|
||||
@@ -38,7 +38,7 @@ class AudioMediaPlayer : public Wt::WContainerWidget
|
||||
|
||||
AudioMediaPlayer(Wt::WMediaPlayer::Encoding encoding, Wt::WContainerWidget *parent = 0);
|
||||
|
||||
void play(Database::Track::id_type trackId, const Transcode::Parameters& parameters);
|
||||
void play(Database::Track::id_type trackId, Av::TranscodeParameters parameters);
|
||||
|
||||
Wt::WMediaPlayer::Encoding getEncoding() const { return _encoding; }
|
||||
|
||||
|
||||
@@ -27,9 +27,10 @@
|
||||
|
||||
namespace UserInterface {
|
||||
|
||||
AvConvTranscodeStreamResource::AvConvTranscodeStreamResource(const Transcode::Parameters& parameters, Wt::WObject *parent)
|
||||
AvConvTranscodeStreamResource::AvConvTranscodeStreamResource(boost::filesystem::path p, Av::TranscodeParameters parameters, Wt::WObject *parent)
|
||||
: Wt::WResource(parent),
|
||||
_parameters( parameters )
|
||||
_filePath(p),
|
||||
_parameters( parameters )
|
||||
{
|
||||
LMS_LOG(MOD_UI, SEV_DEBUG) << "CONSTRUCTING RESOURCE";
|
||||
}
|
||||
@@ -49,17 +50,23 @@ AvConvTranscodeStreamResource::handleRequest(const Wt::Http::Request& request,
|
||||
|
||||
LMS_LOG(MOD_UI, SEV_DEBUG) << "Handling new request. Continuation = " << continuation;
|
||||
|
||||
std::shared_ptr<Transcode::AvConvTranscoder> transcoder;
|
||||
std::shared_ptr<Av::Transcoder> transcoder;
|
||||
if (continuation)
|
||||
transcoder = boost::any_cast<std::shared_ptr<Transcode::AvConvTranscoder> >(continuation->data());
|
||||
transcoder = boost::any_cast<std::shared_ptr<Av::Transcoder> >(continuation->data());
|
||||
|
||||
if (!transcoder)
|
||||
{
|
||||
LMS_LOG(MOD_UI, SEV_DEBUG) << "Launching transcoder";
|
||||
transcoder = std::make_shared<Transcode::AvConvTranscoder>( _parameters);
|
||||
transcoder = std::make_shared<Av::Transcoder>( _filePath, _parameters);
|
||||
|
||||
LMS_LOG(MOD_UI, SEV_DEBUG) << "Mime type set to '" << _parameters.getOutputFormat().getMimeType() << "'";
|
||||
response.setMimeType(_parameters.getOutputFormat().getMimeType());
|
||||
LMS_LOG(MOD_UI, SEV_DEBUG) << "Mime type set to '" << Av::encoding_to_mimetype(_parameters.getEncoding());
|
||||
response.setMimeType( Av::encoding_to_mimetype(_parameters.getEncoding()) );
|
||||
|
||||
if (!transcoder->start())
|
||||
{
|
||||
LMS_LOG(MOD_UI, SEV_ERROR) << "Cannot start transcoder";
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!transcoder->isComplete())
|
||||
@@ -72,7 +79,7 @@ AvConvTranscodeStreamResource::handleRequest(const Wt::Http::Request& request,
|
||||
// Give the client all the output data
|
||||
response.out().write(reinterpret_cast<char*>(&data[0]), data.size());
|
||||
|
||||
LMS_LOG(MOD_UI, SEV_DEBUG) << "Written " << data.size() << " bytes! complete = " << std::boolalpha << transcoder->isComplete() << ", produced bytes = " << transcoder->getOutputBytes();
|
||||
LMS_LOG(MOD_UI, SEV_DEBUG) << "Written " << data.size() << " bytes! complete = " << std::boolalpha << transcoder->isComplete();
|
||||
|
||||
if (!response.out())
|
||||
LMS_LOG(MOD_UI, SEV_ERROR) << "Write failed!";
|
||||
|
||||
@@ -25,23 +25,22 @@
|
||||
|
||||
#include <Wt/WResource>
|
||||
|
||||
#include "transcode/AvConvTranscoder.hpp"
|
||||
#include "transcode/Parameters.hpp"
|
||||
#include "av/AvTranscoder.hpp"
|
||||
|
||||
namespace UserInterface {
|
||||
|
||||
class AvConvTranscodeStreamResource : public Wt::WResource
|
||||
{
|
||||
public:
|
||||
AvConvTranscodeStreamResource(const Transcode::Parameters& parameters, Wt::WObject *parent = 0);
|
||||
AvConvTranscodeStreamResource(boost::filesystem::path p, Av::TranscodeParameters parameters, Wt::WObject *parent = 0);
|
||||
~AvConvTranscodeStreamResource();
|
||||
|
||||
void handleRequest(const Wt::Http::Request& request,
|
||||
Wt::Http::Response& response);
|
||||
|
||||
private:
|
||||
Transcode::Parameters _parameters;
|
||||
std::shared_ptr<Transcode::AvConvTranscoder> _transcoder;
|
||||
boost::filesystem::path _filePath;
|
||||
Av::TranscodeParameters _parameters;
|
||||
|
||||
static const std::size_t _bufferSize = 8192*16;
|
||||
};
|
||||
|
||||
@@ -29,25 +29,25 @@
|
||||
namespace UserInterface {
|
||||
|
||||
Wt::WMediaPlayer::Encoding
|
||||
convert(Transcode::Format format)
|
||||
AvEncoding_to_WtEncoding(Av::Encoding encoding)
|
||||
{
|
||||
switch( format.getEncoding() )
|
||||
switch( encoding )
|
||||
{
|
||||
case Transcode::Format::OGA: return Wt::WMediaPlayer::OGA;
|
||||
case Transcode::Format::OGV: return Wt::WMediaPlayer::OGV;
|
||||
case Transcode::Format::MP3: return Wt::WMediaPlayer::MP3;
|
||||
case Transcode::Format::WEBMA: return Wt::WMediaPlayer::WEBMA;
|
||||
case Transcode::Format::WEBMV: return Wt::WMediaPlayer::WEBMV;
|
||||
case Transcode::Format::FLA: return Wt::WMediaPlayer::FLA;
|
||||
case Transcode::Format::FLV: return Wt::WMediaPlayer::FLV;
|
||||
case Transcode::Format::M4A: return Wt::WMediaPlayer::M4A;
|
||||
case Transcode::Format::M4V: return Wt::WMediaPlayer::M4V;
|
||||
case Av::Encoding::OGA: return Wt::WMediaPlayer::OGA;
|
||||
case Av::Encoding::OGV: return Wt::WMediaPlayer::OGV;
|
||||
case Av::Encoding::MP3: return Wt::WMediaPlayer::MP3;
|
||||
case Av::Encoding::WEBMA: return Wt::WMediaPlayer::WEBMA;
|
||||
case Av::Encoding::WEBMV: return Wt::WMediaPlayer::WEBMV;
|
||||
case Av::Encoding::FLA: return Wt::WMediaPlayer::FLA;
|
||||
case Av::Encoding::FLV: return Wt::WMediaPlayer::FLV;
|
||||
case Av::Encoding::M4A: return Wt::WMediaPlayer::M4A;
|
||||
case Av::Encoding::M4V: return Wt::WMediaPlayer::M4V;
|
||||
}
|
||||
assert(0);
|
||||
}
|
||||
|
||||
|
||||
VideoMediaPlayerWidget::VideoMediaPlayerWidget( const Transcode::Parameters& parameters, Wt::WContainerWidget *parent)
|
||||
VideoMediaPlayerWidget::VideoMediaPlayerWidget( Av::TranscodeParameters parameters, Wt::WContainerWidget *parent)
|
||||
: Wt::WContainerWidget(parent),
|
||||
_mediaResource(nullptr),
|
||||
_currentParameters(parameters),
|
||||
@@ -106,7 +106,7 @@ VideoMediaPlayerWidget::VideoMediaPlayerWidget( const Transcode::Parameters& par
|
||||
}
|
||||
|
||||
void
|
||||
VideoMediaPlayerWidget::load(const Transcode::Parameters& parameters)
|
||||
VideoMediaPlayerWidget::load(Av::TranscodeParameters parameters)
|
||||
{
|
||||
_mediaPlayer->clearSources();
|
||||
|
||||
@@ -116,15 +116,15 @@ VideoMediaPlayerWidget::load(const Transcode::Parameters& parameters)
|
||||
if (_mediaResource)
|
||||
delete _mediaResource;
|
||||
|
||||
_mediaResource = new AvConvTranscodeStreamResource( parameters, this );
|
||||
// TODO _mediaResource = new AvConvTranscodeStreamResource( parameters, this );
|
||||
_mediaInternalLink.setResource( _mediaResource );
|
||||
|
||||
_mediaPlayer->addSource( convert(parameters.getOutputFormat()), _mediaInternalLink );
|
||||
_mediaPlayer->addSource( AvEncoding_to_WtEncoding(parameters.getEncoding()), _mediaInternalLink );
|
||||
|
||||
_timeSlider->setRange(0, parameters.getInputMediaFile().getDuration().total_seconds() );
|
||||
_timeSlider->setRange(0, 0/* TODO parameters.getInputMediaFile().getDuration().total_seconds()*/ );
|
||||
_timeSlider->setValue( parameters.getOffset().total_seconds() );
|
||||
|
||||
_duration->setText( boost::posix_time::to_simple_string( parameters.getInputMediaFile().getDuration() ));
|
||||
// TODO _duration->setText( boost::posix_time::to_simple_string( parameters.getInputMediaFile().getDuration() ));
|
||||
|
||||
_mediaPlayer->play();
|
||||
}
|
||||
@@ -151,6 +151,7 @@ VideoMediaPlayerWidget::handleTimeUpdated(void)
|
||||
{
|
||||
std::cout << "Time updated to " << _mediaPlayer->currentTime() << std::endl;
|
||||
|
||||
/* TODO
|
||||
if (_mediaPlayer->currentTime() > 0 && _mediaPlayer->currentTime() < _currentParameters.getInputMediaFile().getDuration().total_seconds())
|
||||
{
|
||||
boost::posix_time::time_duration currentTime ( boost::posix_time::seconds( _mediaPlayer->currentTime() + _currentParameters.getOffset().total_seconds()));
|
||||
@@ -158,6 +159,7 @@ VideoMediaPlayerWidget::handleTimeUpdated(void)
|
||||
_timeSlider->setValue( currentTime.total_seconds() );
|
||||
_curTime->setText( boost::posix_time::to_simple_string( currentTime) );
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
void
|
||||
@@ -176,12 +178,12 @@ void
|
||||
VideoMediaPlayerWidget::handleParametersEdit(void)
|
||||
{
|
||||
|
||||
_dialog = new VideoParametersDialog("Parameters");
|
||||
_dialog->load(_currentParameters);
|
||||
// _dialog = new VideoParametersDialog("Parameters");
|
||||
//TODO _dialog->load(_currentParameters);
|
||||
|
||||
_dialog->show();
|
||||
// _dialog->show();
|
||||
|
||||
_dialog->finished().connect(this, &VideoMediaPlayerWidget::handleParametersDone);
|
||||
// _dialog->finished().connect(this, &VideoMediaPlayerWidget::handleParametersDone);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -191,7 +193,7 @@ VideoMediaPlayerWidget::handleParametersDone(Wt::WDialog::DialogCode code)
|
||||
|
||||
if (code == Wt::WDialog::Accepted)
|
||||
{
|
||||
_dialog->save( _currentParameters );
|
||||
// TODO _dialog->save( _currentParameters );
|
||||
|
||||
// TODO SYNC current offset with player?
|
||||
// HACK use slider current value
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
#include "VideoParametersDialog.hpp"
|
||||
|
||||
#include "transcode/Parameters.hpp"
|
||||
#include "av/AvTranscoder.hpp"
|
||||
#include "resource/AvConvTranscodeStreamResource.hpp"
|
||||
|
||||
namespace UserInterface {
|
||||
@@ -37,18 +37,16 @@ class VideoMediaPlayerWidget : public Wt::WContainerWidget
|
||||
{
|
||||
public:
|
||||
|
||||
VideoMediaPlayerWidget( const Transcode::Parameters& parameters, Wt::WContainerWidget *parent = 0);
|
||||
|
||||
VideoMediaPlayerWidget( Av::TranscodeParameters parameters, Wt::WContainerWidget *parent = 0);
|
||||
|
||||
Wt::Signal<void>& close() { return _close; };
|
||||
|
||||
|
||||
private:
|
||||
|
||||
// Signals
|
||||
Wt::Signal<void> _close;
|
||||
|
||||
void load(const Transcode::Parameters& parameters);
|
||||
void load(Av::TranscodeParameters parameters);
|
||||
|
||||
// Player controls
|
||||
void handlePlayOffset(int offsetSecs);
|
||||
@@ -68,7 +66,7 @@ class VideoMediaPlayerWidget : public Wt::WContainerWidget
|
||||
Wt::WLink _mediaInternalLink;
|
||||
|
||||
// Controls
|
||||
Transcode::Parameters _currentParameters;
|
||||
Av::TranscodeParameters _currentParameters;
|
||||
Wt::WPushButton* _playBtn;
|
||||
Wt::WPushButton* _pauseBtn;
|
||||
Wt::WSlider* _timeSlider;
|
||||
|
||||
@@ -48,7 +48,7 @@ VideoParametersDialog::VideoParametersDialog(const Wt::WString &windowTitle, Wt:
|
||||
|
||||
_outputFormatModel = new Wt::WStringListModel(_outputFormat);
|
||||
|
||||
std::vector<Format> formats = Format::get( Format::Video );
|
||||
std::vector<Format> formats ; // TODO Format::get( Format::Video );
|
||||
|
||||
for(std::size_t idFormat = 0; idFormat < formats.size(); ++idFormat)
|
||||
{
|
||||
@@ -154,7 +154,7 @@ VideoParametersDialog::load(const Transcode::Parameters& parameters)
|
||||
Wt::WComboBox* combo = _streamSelection[streamType].first;
|
||||
Wt::WStringListModel* model = _streamSelection[streamType].second;
|
||||
|
||||
addStreams(model, parameters.getInputMediaFile().getStreams( streamType ) );
|
||||
// TODO addStreams(model, parameters.getInputMediaFile().getStreams( streamType ) );
|
||||
|
||||
selectStream(model, streamMap[streamType], combo);
|
||||
}
|
||||
@@ -168,7 +168,7 @@ VideoParametersDialog::save(Transcode::Parameters& parameters)
|
||||
|
||||
// Get encoder used
|
||||
Format::Encoding encoding = boost::any_cast<Format::Encoding>( _outputFormatModel->data(_outputFormatModel->index(_outputFormat->currentIndex(), 0), Wt::UserRole));
|
||||
parameters.setOutputFormat( Format::get(encoding) );
|
||||
// TODO parameters.setOutputFormat( Format::get(encoding) );
|
||||
|
||||
// Get stream selected, if any
|
||||
BOOST_FOREACH(Stream::Type streamType, streamTypes)
|
||||
|
||||
@@ -17,8 +17,7 @@
|
||||
* along with LMS. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef VIDEO_PARAMETER_DIALOG
|
||||
#define VIDEO_PARAMETER_DIALOG
|
||||
#pragma once
|
||||
|
||||
#include <map>
|
||||
|
||||
@@ -66,5 +65,3 @@ class VideoParametersDialog : public Wt::WDialog
|
||||
|
||||
} // namespace UserInterface
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@ VideoWidget::playVideo(boost::filesystem::path p)
|
||||
LMS_LOG(MOD_UI, SEV_DEBUG) << "Want to play video " << p << "'";
|
||||
try {
|
||||
|
||||
#if 0
|
||||
std::size_t audioBitrate = 0;
|
||||
std::size_t videoBitrate = 0;
|
||||
|
||||
@@ -89,6 +90,7 @@ VideoWidget::playVideo(boost::filesystem::path p)
|
||||
}));
|
||||
|
||||
_videoDbWidget->setHidden(true);
|
||||
#endif
|
||||
}
|
||||
catch( std::exception& e) {
|
||||
LMS_LOG(MOD_UI, SEV_ERROR) << "Caught exception while loading '" << p << "': " << e.what();
|
||||
|
||||
Reference in New Issue
Block a user