From 596441a4e8cf03a88113646ca6da2f90e721a38b Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 22 May 2013 17:36:11 +0100 Subject: Various hacks. --- src/lib/audio_decoder.cc | 5 +- src/lib/audio_decoder.h | 3 + src/lib/content.cc | 14 ++- src/lib/content.h | 13 ++- src/lib/decoder.cc | 11 -- src/lib/decoder.h | 41 +++++--- src/lib/ffmpeg_decoder.cc | 60 +++-------- src/lib/ffmpeg_decoder.h | 15 ++- src/lib/filter_graph.cc | 5 +- src/lib/imagemagick_decoder.cc | 6 ++ src/lib/imagemagick_decoder.h | 25 +---- src/lib/player.cc | 229 ++++++++++++++++++++++------------------- src/lib/player.h | 33 +++--- src/lib/sndfile_decoder.cc | 6 ++ src/lib/sndfile_decoder.h | 1 + src/lib/video_content.h | 1 + src/lib/video_decoder.cc | 16 +-- src/lib/video_decoder.h | 27 ++--- src/lib/video_source.h | 1 + src/wx/film_viewer.cc | 7 -- 20 files changed, 235 insertions(+), 284 deletions(-) (limited to 'src') diff --git a/src/lib/audio_decoder.cc b/src/lib/audio_decoder.cc index e1c93ac77..fbc66c335 100644 --- a/src/lib/audio_decoder.cc +++ b/src/lib/audio_decoder.cc @@ -30,6 +30,7 @@ using boost::shared_ptr; AudioDecoder::AudioDecoder (shared_ptr f, shared_ptr c) : Decoder (f) + , _next_audio (0) , _audio_content (c) , _output_audio_frame_rate (_audio_content->output_audio_frame_rate (f)) { @@ -104,7 +105,7 @@ AudioDecoder::emit_audio (shared_ptr data, Time time) { /* XXX: map audio to 5.1 */ - /* Maybe sample-rate convert */ + /* Maybe resample */ if (_swr_context) { /* Compute the resampled frames count and add 32 for luck */ @@ -128,6 +129,8 @@ AudioDecoder::emit_audio (shared_ptr data, Time time) } Audio (data, time); + + _next_audio = time + _film->audio_frames_to_time (data->frames()); } diff --git a/src/lib/audio_decoder.h b/src/lib/audio_decoder.h index 94845ec23..8af519576 100644 --- a/src/lib/audio_decoder.h +++ b/src/lib/audio_decoder.h @@ -43,6 +43,9 @@ public: void emit_audio (boost::shared_ptr, Time); +protected: + Time _next_audio; + private: boost::shared_ptr _audio_content; SwrContext* _swr_context; diff --git a/src/lib/content.cc b/src/lib/content.cc index 618dafee2..43d0ef958 100644 --- a/src/lib/content.cc +++ b/src/lib/content.cc @@ -29,9 +29,15 @@ using std::string; using boost::shared_ptr; using boost::lexical_cast; +Content::Content (Time s) + : _start (s) +{ + +} + Content::Content (boost::filesystem::path f) : _file (f) - , _time (0) + , _start (0) { } @@ -40,14 +46,14 @@ Content::Content (shared_ptr node) { _file = node->string_child ("File"); _digest = node->string_child ("Digest"); - _time = node->number_child