Fix _audio_position after seek.
authorCarl Hetherington <cth@carlh.net>
Fri, 3 Jan 2014 14:06:01 +0000 (14:06 +0000)
committerCarl Hetherington <cth@carlh.net>
Fri, 3 Jan 2014 14:06:01 +0000 (14:06 +0000)
src/lib/audio_decoder.cc
src/lib/player.cc

index d85bfaee22aaf79f0e5b512724334384a733ae11..adabd5d9941afaad9d3b15d804d4a108876d0dab 100644 (file)
@@ -54,7 +54,7 @@ AudioDecoder::audio (shared_ptr<const AudioBuffers> data)
        if (_resampler) {
                data = _resampler->run (data);
        }
-       
+
        _pending.push_back (shared_ptr<DecodedAudio> (new DecodedAudio (data, _audio_position)));
        _audio_position += data->frames ();
 }
@@ -80,5 +80,5 @@ AudioDecoder::seek (ContentTime t, bool)
        assert (film);
        
        FrameRateChange frc = film->active_frame_rate_change (_audio_content->position ());
-       _audio_position = (t + first_audio()) / frc.speed_up;
+       _audio_position = ((t + first_audio()) / frc.speed_up) * film->audio_frame_rate() / TIME_HZ;
 }
index da7e7c147c0b06605aad90fb81db1da0eb57f1db..eb7b177ecd21aacc86bc5c96d89e404a8333f7e1 100644 (file)
@@ -121,7 +121,7 @@ Player::pass ()
 
                        dec->set_dcp_times (_film->video_frame_rate(), _film->audio_frame_rate(), (*i)->frc, offset);
                        DCPTime const t = dec->dcp_time - offset;
-                       if (t >= (*i)->content->full_length() - (*i)->content->trim_end ()) {
+                       if (t >= ((*i)->content->full_length() - (*i)->content->trim_end ())) {
                                /* In the end-trimmed part; decoder has nothing else to give us */
                                dec.reset ();
                                done = true;