summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-06-26 11:04:28 +0100
committerCarl Hetherington <cth@carlh.net>2013-06-26 11:04:28 +0100
commit5fa669bbfc7392d29c9ec94cf6527c56558fe43f (patch)
treeef25173801acd4a98eceecd498a662b4a1a2c711 /src/lib
parentd0d584a7dde6de383302615634fdee17e9724fe8 (diff)
Builds again.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/ffmpeg_decoder.cc1
-rw-r--r--src/lib/player.cc23
2 files changed, 14 insertions, 10 deletions
diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc
index d897aef9d..1d8a00866 100644
--- a/src/lib/ffmpeg_decoder.cc
+++ b/src/lib/ffmpeg_decoder.cc
@@ -272,7 +272,6 @@ FFmpegDecoder::seek_back ()
}
do_seek (_next_video_frame - 1, true, true);
- VideoDecoder::seek_back ();
}
void
diff --git a/src/lib/player.cc b/src/lib/player.cc
index 79f1c3b97..241b43a55 100644
--- a/src/lib/player.cc
+++ b/src/lib/player.cc
@@ -50,6 +50,11 @@ using boost::dynamic_pointer_cast;
struct Piece
{
+ Piece (shared_ptr<Content> c)
+ : content (c)
+ , last_emission (0)
+ {}
+
Piece (shared_ptr<Content> c, shared_ptr<Decoder> d)
: content (c)
, decoder (d)
@@ -350,7 +355,7 @@ Player::setup_pieces ()
for (Playlist::ContentList::iterator i = content.begin(); i != content.end(); ++i) {
- shared_ptr<Decoder> decoder;
+ shared_ptr<Piece> piece (new Piece (*i));
/* XXX: into content? */
@@ -358,10 +363,10 @@ Player::setup_pieces ()
if (fc) {
shared_ptr<FFmpegDecoder> fd (new FFmpegDecoder (_film, fc, _video, _audio));
- fd->Video.connect (bind (&Player::process_video, this, *i, _1, _2, _3));
- fd->Audio.connect (bind (&Player::process_audio, this, *i, _1, _2));
+ fd->Video.connect (bind (&Player::process_video, this, piece, _1, _2, _3));
+ fd->Audio.connect (bind (&Player::process_audio, this, piece, _1, _2));
- decoder = fd;
+ piece->decoder = fd;
}
shared_ptr<const ImageMagickContent> ic = dynamic_pointer_cast<const ImageMagickContent> (*i);
@@ -378,21 +383,21 @@ Player::setup_pieces ()
if (!id) {
id.reset (new ImageMagickDecoder (_film, ic));
- id->Video.connect (bind (&Player::process_video, this, *i, _1, _2, _3));
+ id->Video.connect (bind (&Player::process_video, this, piece, _1, _2, _3));
}
- decoder = id;
+ piece->decoder = id;
}
shared_ptr<const SndfileContent> sc = dynamic_pointer_cast<const SndfileContent> (*i);
if (sc) {
shared_ptr<AudioDecoder> sd (new SndfileDecoder (_film, sc));
- sd->Audio.connect (bind (&Player::process_audio, this, *i, _1, _2));
+ sd->Audio.connect (bind (&Player::process_audio, this, piece, _1, _2));
- decoder = sd;
+ piece->decoder = sd;
}
- _pieces.push_back (shared_ptr<Piece> (new Piece (*i, decoder)));
+ _pieces.push_back (piece);
}
/* Fill in visual gaps with black and audio gaps with silence */