[UI] User can now force the audio encoding to be used
This commit is contained in:
@@ -63,7 +63,23 @@ _db(db)
|
||||
Wt::WTemplate* playerTemplate = new Wt::WTemplate(this);
|
||||
playerTemplate->setTemplateText(Wt::WString::tr("mobile-audio-player"));
|
||||
|
||||
AudioMediaPlayer* mediaPlayer = new AudioMediaPlayer();
|
||||
Wt::Dbo::Transaction transaction(_db.getSession());
|
||||
Database::User::pointer user = _db.getCurrentUser();
|
||||
|
||||
// Determine the encoding to be used
|
||||
Wt::WMediaPlayer::Encoding encoding;
|
||||
switch (user->getAudioEncoding())
|
||||
{
|
||||
case Database::AudioEncoding::MP3: encoding = Wt::WMediaPlayer::MP3; break;
|
||||
case Database::AudioEncoding::WEBMA: encoding = Wt::WMediaPlayer::WEBMA; break;
|
||||
case Database::AudioEncoding::OGA: encoding = Wt::WMediaPlayer::OGA; break;
|
||||
case Database::AudioEncoding::FLA: encoding = Wt::WMediaPlayer::FLA; break;
|
||||
case Database::AudioEncoding::AUTO:
|
||||
default:
|
||||
encoding = AudioMediaPlayer::getBestEncoding();
|
||||
}
|
||||
|
||||
AudioMediaPlayer* mediaPlayer = new AudioMediaPlayer(encoding);
|
||||
playerTemplate->bindWidget("player", mediaPlayer);
|
||||
|
||||
edit->changed().connect(std::bind([=] () {
|
||||
@@ -177,11 +193,12 @@ _db(db)
|
||||
{
|
||||
// Determine the output format using the encoding of the player
|
||||
Transcode::Format::Encoding encoding;
|
||||
switch(AudioMediaPlayer::getEncoding())
|
||||
switch(mediaPlayer->getEncoding())
|
||||
{
|
||||
case Wt::WMediaPlayer::MP3: encoding = Transcode::Format::MP3; break;
|
||||
case Wt::WMediaPlayer::M4A: encoding = Transcode::Format::M4A; 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;
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace UserInterface {
|
||||
namespace Mobile {
|
||||
|
||||
Wt::WMediaPlayer::Encoding
|
||||
AudioMediaPlayer::getEncoding()
|
||||
AudioMediaPlayer::getBestEncoding()
|
||||
{
|
||||
const Wt::WEnvironment& env = Wt::WApplication::instance()->environment();
|
||||
|
||||
@@ -38,20 +38,24 @@ AudioMediaPlayer::getEncoding()
|
||||
return Wt::WMediaPlayer::OGA;
|
||||
}
|
||||
|
||||
AudioMediaPlayer::AudioMediaPlayer(Wt::WContainerWidget *parent)
|
||||
: Wt::WContainerWidget(parent)
|
||||
AudioMediaPlayer::AudioMediaPlayer(Wt::WMediaPlayer::Encoding encoding, Wt::WContainerWidget *parent)
|
||||
:
|
||||
Wt::WContainerWidget(parent),
|
||||
_player(nullptr),
|
||||
_encoding(encoding)
|
||||
{
|
||||
_player = new Wt::WMediaPlayer(Wt::WMediaPlayer::Audio, this);
|
||||
_player->addSource( getEncoding(), "" );
|
||||
_player->addSource( _encoding, "" );
|
||||
}
|
||||
|
||||
void
|
||||
AudioMediaPlayer::play(const Transcode::Parameters& parameters)
|
||||
{
|
||||
// FIXME memleak here
|
||||
AvConvTranscodeStreamResource *resource = new AvConvTranscodeStreamResource( parameters, this );
|
||||
|
||||
_player->clearSources();
|
||||
_player->addSource( getEncoding(), Wt::WLink(resource));
|
||||
_player->addSource( _encoding, Wt::WLink(resource));
|
||||
|
||||
_player->play();
|
||||
}
|
||||
|
||||
@@ -32,15 +32,18 @@ class AudioMediaPlayer : public Wt::WContainerWidget
|
||||
{
|
||||
public:
|
||||
|
||||
static Wt::WMediaPlayer::Encoding getEncoding();
|
||||
static Wt::WMediaPlayer::Encoding getBestEncoding();
|
||||
|
||||
AudioMediaPlayer(Wt::WContainerWidget *parent = 0);
|
||||
AudioMediaPlayer(Wt::WMediaPlayer::Encoding encoding, Wt::WContainerWidget *parent = 0);
|
||||
|
||||
void play(const Transcode::Parameters& parameters);
|
||||
|
||||
Wt::WMediaPlayer::Encoding getEncoding() const { return _encoding; }
|
||||
|
||||
private:
|
||||
|
||||
Wt::WMediaPlayer *_player;
|
||||
Wt::WMediaPlayer::Encoding _encoding;
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user