X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fplayer.cc;h=8063d1212971afe2e9bf682a84d253361b902bac;hb=4265db19ba68a995fca42bdd5fa815aead9c5c50;hp=68df8ea709afd905955be97dd410366092f5a612;hpb=82926443230084739cb673a83b2ab1f9d733a07b;p=dcpomatic.git diff --git a/src/lib/player.cc b/src/lib/player.cc index 68df8ea70..8063d1212 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -36,6 +36,7 @@ #include "log.h" #include "scaler.h" #include "player_video_frame.h" +#include "frame_rate_change.h" #define LOG_GENERAL(...) _film->log()->log (String::compose (__VA_ARGS__), Log::TYPE_GENERAL); @@ -94,7 +95,7 @@ Player::pass () } type = VIDEO; for (list >::iterator i = _pieces.begin(); i != _pieces.end(); ++i) { - if ((*i)->decoder->done ()) { + if ((*i)->decoder->done () || (*i)->content->length_after_trim() == 0) { continue; } @@ -149,7 +150,12 @@ Player::pass () if (re) { shared_ptr b = re->flush (); if (b->frames ()) { - process_audio (earliest, b, ac->audio_length (), true); + process_audio ( + earliest, + b, + ac->audio_length() * ac->output_audio_frame_rate() / ac->content_audio_frame_rate(), + true + ); } } } @@ -201,7 +207,7 @@ Player::process_video (weak_ptr weak_piece, shared_ptr shared_ptr content = dynamic_pointer_cast (piece->content); assert (content); - FrameRateConversion frc (content->video_frame_rate(), _film->video_frame_rate()); + FrameRateChange frc (content->video_frame_rate(), _film->video_frame_rate()); if (frc.skip && (frame % 2) == 1) { return; } @@ -491,7 +497,8 @@ Player::content_changed (weak_ptr w, int property, bool frequent) } else if ( property == SubtitleContentProperty::SUBTITLE_X_OFFSET || property == SubtitleContentProperty::SUBTITLE_Y_OFFSET || - property == SubtitleContentProperty::SUBTITLE_SCALE + property == SubtitleContentProperty::SUBTITLE_X_SCALE || + property == SubtitleContentProperty::SUBTITLE_Y_SCALE ) { for (list::iterator i = _subtitles.begin(); i != _subtitles.end(); ++i) {