summaryrefslogtreecommitdiff
path: root/src/lib/playlist.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-04-04 10:13:41 +0100
committerCarl Hetherington <cth@carlh.net>2013-04-04 10:13:41 +0100
commit6bc12a2eeb9c84a539688f2f7eb876e3ea278a9f (patch)
tree80339d65a1c1d6bfefc5ad164617f9b589220b10 /src/lib/playlist.cc
parentd0c2e5d14224e0d1058a9b7058f88e6b32dc8e6f (diff)
Split playlist files up; fix build.
Diffstat (limited to 'src/lib/playlist.cc')
-rw-r--r--src/lib/playlist.cc250
1 files changed, 0 insertions, 250 deletions
diff --git a/src/lib/playlist.cc b/src/lib/playlist.cc
index a7862f116..0a4803f6e 100644
--- a/src/lib/playlist.cc
+++ b/src/lib/playlist.cc
@@ -208,253 +208,3 @@ Playlist::has_audio () const
return _audio_from != AUDIO_NONE;
}
-Player::Player (boost::shared_ptr<const Film> f, boost::shared_ptr<const Playlist> p)
- : _film (f)
- , _playlist (p)
- , _video (true)
- , _audio (true)
- , _subtitles (true)
- , _have_setup_decoders (false)
- , _ffmpeg_decoder_done (false)
- , _video_sync (true)
-{
-
-}
-
-void
-Player::disable_video ()
-{
- _video = false;
-}
-
-void
-Player::disable_audio ()
-{
- _audio = false;
-}
-
-void
-Player::disable_subtitles ()
-{
- _subtitles = false;
-}
-
-bool
-Player::pass ()
-{
- if (!_have_setup_decoders) {
- setup_decoders ();
- _have_setup_decoders = true;
- }
-
- bool done = true;
-
- if (_playlist->video_from() == Playlist::VIDEO_FFMPEG || _playlist->audio_from() == Playlist::AUDIO_FFMPEG) {
- if (!_ffmpeg_decoder_done) {
- if (_ffmpeg_decoder->pass ()) {
- _ffmpeg_decoder_done = true;
- } else {
- done = false;
- }
- }
- }
-
- if (_playlist->video_from() == Playlist::VIDEO_IMAGEMAGICK) {
- if (_imagemagick_decoder != _imagemagick_decoders.end ()) {
- if ((*_imagemagick_decoder)->pass ()) {
- _imagemagick_decoder++;
- }
-
- if (_imagemagick_decoder != _imagemagick_decoders.end ()) {
- done = false;
- }
- }
- }
-
- /* XXX: sndfile */
-
- return done;
-}
-
-void
-Player::set_progress (shared_ptr<Job> job)
-{
- /* Assume progress can be divined from how far through the video we are */
- switch (_playlist->video_from ()) {
- case Playlist::VIDEO_NONE:
- break;
- case Playlist::VIDEO_FFMPEG:
- if (_playlist->video_length ()) {
- job->set_progress (float(_ffmpeg_decoder->video_frame()) / _playlist->video_length ());
- }
- break;
- case Playlist::VIDEO_IMAGEMAGICK:
- {
- int n = 0;
- for (std::list<boost::shared_ptr<ImageMagickDecoder> >::iterator i = _imagemagick_decoders.begin(); i != _imagemagick_decoders.end(); ++i) {
- if (_imagemagick_decoder == i) {
- job->set_progress (float (n) / _imagemagick_decoders.size ());
- }
- ++n;
- }
- break;
- }
- }
-}
-
-void
-Player::process_video (shared_ptr<Image> i, bool same, shared_ptr<Subtitle> s)
-{
- Video (i, same, s);
-}
-
-void
-Player::process_audio (shared_ptr<AudioBuffers> b)
-{
- Audio (b);
-}
-
-/** @return true on error */
-bool
-Player::seek (double t)
-{
- if (!_have_setup_decoders) {
- setup_decoders ();
- _have_setup_decoders = true;
- }
-
- bool r = false;
-
- switch (_playlist->video_from()) {
- case Playlist::VIDEO_NONE:
- break;
- case Playlist::VIDEO_FFMPEG:
- if (!_ffmpeg_decoder || _ffmpeg_decoder->seek (t)) {
- r = true;
- }
- /* We're seeking, so all `all done' bets are off */
- _ffmpeg_decoder_done = false;
- break;
- case Playlist::VIDEO_IMAGEMAGICK:
- /* Find the decoder that contains this position */
- _imagemagick_decoder = _imagemagick_decoders.begin ();
- while (_imagemagick_decoder != _imagemagick_decoders.end ()) {
- double const this_length = (*_imagemagick_decoder)->video_length() / _film->video_frame_rate ();
- if (t < this_length) {
- break;
- }
- t -= this_length;
- ++_imagemagick_decoder;
- }
-
- if (_imagemagick_decoder != _imagemagick_decoders.end()) {
- (*_imagemagick_decoder)->seek (t);
- } else {
- r = true;
- }
- break;
- }
-
- /* XXX: don't seek audio because we don't need to... */
-
- return r;
-}
-
-bool
-Player::seek_to_last ()
-{
- if (!_have_setup_decoders) {
- setup_decoders ();
- _have_setup_decoders = true;
- }
-
- bool r = false;
-
- switch (_playlist->video_from ()) {
- case Playlist::VIDEO_NONE:
- break;
- case Playlist::VIDEO_FFMPEG:
- if (!_ffmpeg_decoder || _ffmpeg_decoder->seek_to_last ()) {
- r = true;
- }
-
- /* We're seeking, so all `all done' bets are off */
- _ffmpeg_decoder_done = false;
- break;
- case Playlist::VIDEO_IMAGEMAGICK:
- if ((*_imagemagick_decoder)->seek_to_last ()) {
- r = true;
- }
- break;
- }
-
- /* XXX: don't seek audio because we don't need to... */
-
- return r;
-}
-
-void
-Player::setup_decoders ()
-{
- if ((_video && _playlist->video_from() == Playlist::VIDEO_FFMPEG) || (_audio && _playlist->audio_from() == Playlist::AUDIO_FFMPEG)) {
- _ffmpeg_decoder.reset (
- new FFmpegDecoder (
- _film,
- _playlist->ffmpeg(),
- _video && _playlist->video_from() == Playlist::VIDEO_FFMPEG,
- _audio && _playlist->audio_from() == Playlist::AUDIO_FFMPEG,
- _subtitles && _film->with_subtitles(),
- _video_sync
- )
- );
- }
-
- if (_video && _playlist->video_from() == Playlist::VIDEO_FFMPEG) {
- _ffmpeg_decoder->connect_video (shared_from_this ());
- }
-
- if (_audio && _playlist->audio_from() == Playlist::AUDIO_FFMPEG) {
- _ffmpeg_decoder->connect_audio (shared_from_this ());
- }
-
- if (_video && _playlist->video_from() == Playlist::VIDEO_IMAGEMAGICK) {
- list<shared_ptr<const ImageMagickContent> > ic = _playlist->imagemagick ();
- for (list<shared_ptr<const ImageMagickContent> >::iterator i = ic.begin(); i != ic.end(); ++i) {
- shared_ptr<ImageMagickDecoder> d (new ImageMagickDecoder (_film, *i));
- _imagemagick_decoders.push_back (d);
- d->connect_video (shared_from_this ());
- }
-
- _imagemagick_decoder = _imagemagick_decoders.begin ();
- }
-
- if (_audio && _playlist->audio_from() == Playlist::AUDIO_SNDFILE) {
- list<shared_ptr<const SndfileContent> > sc = _playlist->sndfile ();
- for (list<shared_ptr<const SndfileContent> >::iterator i = sc.begin(); i != sc.end(); ++i) {
- shared_ptr<SndfileDecoder> d (new SndfileDecoder (_film, *i));
- _sndfile_decoders.push_back (d);
- d->connect_audio (shared_from_this ());
- }
- }
-}
-
-void
-Player::disable_video_sync ()
-{
- _video_sync = false;
-}
-
-double
-Player::last_video_time () const
-{
- switch (_playlist->video_from ()) {
- case Playlist::VIDEO_NONE:
- return 0;
- case Playlist::VIDEO_FFMPEG:
- return _ffmpeg_decoder->last_source_time ();
- case Playlist::VIDEO_IMAGEMAGICK:
- return (*_imagemagick_decoder)->last_source_time ();
- }
-
- return 0;
-}