}
-Player::~Player ()
-{
- delete _shuffler;
-}
-
-
void
Player::setup_pieces ()
{
auto old_pieces = _pieces;
_pieces.clear ();
- delete _shuffler;
- _shuffler = new Shuffler();
+ _shuffler.reset (new Shuffler());
_shuffler->Video.connect(bind(&Player::video, this, _1, _2));
for (auto i: playlist()->content()) {
if (decoder->video) {
if (i->video->frame_type() == VideoFrameType::THREE_D_LEFT || i->video->frame_type() == VideoFrameType::THREE_D_RIGHT) {
/* We need a Shuffler to cope with 3D L/R video data arriving out of sequence */
- decoder->video->Data.connect (bind(&Shuffler::video, _shuffler, weak_ptr<Piece>(piece), _1));
+ decoder->video->Data.connect (bind(&Shuffler::video, _shuffler.get(), weak_ptr<Piece>(piece), _1));
} else {
decoder->video->Data.connect (bind(&Player::video, this, weak_ptr<Piece>(piece), _1));
}
public:
Player (std::shared_ptr<const Film>);
Player (std::shared_ptr<const Film>, std::shared_ptr<const Playlist> playlist);
- ~Player ();
Player (Player const& Player) = delete;
Player& operator= (Player const& Player) = delete;
LastVideoMap _last_video;
AudioMerger _audio_merger;
- Shuffler* _shuffler = nullptr;
+ std::unique_ptr<Shuffler> _shuffler;
std::list<std::pair<std::shared_ptr<PlayerVideo>, dcpomatic::DCPTime> > _delay;
class StreamState
boost::signals2::scoped_connection _playlist_content_change_connection;
};
+
#endif
*/
-#include "types.h"
+#ifndef DCPOMATIC_SHUFFLER_H
+#define DCPOMATIC_SHUFFLER_H
+
+
#include "content_video.h"
+#include "types.h"
#include <boost/signals2.hpp>
struct shuffler_test5;
-
class Piece;
boost::optional<ContentVideo> _last;
static int const _max_size;
};
+
+
+#endif
+
string ext = content->path(0).extension().string();
transform (ext.begin(), ext.end(), ext.begin(), ::tolower);
- sub::Reader* reader = 0;
+ std::unique_ptr<sub::Reader> reader;
if (ext == ".stl") {
- FILE* f = fopen_boost (content->path(0), "rb");
+ auto f = fopen_boost (content->path(0), "rb");
if (!f) {
throw OpenFileError (content->path(0), errno, OpenFileError::READ);
}
try {
- reader = new sub::STLBinaryReader (f);
+ reader.reset(new sub::STLBinaryReader(f));
} catch (...) {
fclose (f);
throw;
ucnv_close (to_utf8);
if (ext == ".srt") {
- reader = new sub::SubripReader (utf8.get());
+ reader.reset(new sub::SubripReader(utf8.get()));
} else if (ext == ".ssa" || ext == ".ass") {
- reader = new sub::SSAReader (utf8.get());
+ reader.reset(new sub::SSAReader(utf8.get()));
}
}
if (reader) {
- _subtitles = sub::collect<vector<sub::Subtitle> > (reader->subtitles ());
+ _subtitles = sub::collect<vector<sub::Subtitle>>(reader->subtitles());
}
-
- delete reader;
}
/** @return time of first subtitle, if there is one */