diff options
Diffstat (limited to 'media/player/movie.cc')
-rw-r--r-- | media/player/movie.cc | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/media/player/movie.cc b/media/player/movie.cc index 32594eb..1ef840f 100644 --- a/media/player/movie.cc +++ b/media/player/movie.cc @@ -107,6 +107,31 @@ float Movie::GetPlayRate() { return play_rate_; } +// Get movie duration in seconds. +float Movie::GetDuration() { + float duration = 0.f; + if (pipeline_.get()) + duration = (pipeline_->GetDuration()).InMicroseconds() / 1000000.0f; + return duration; +} + +// Get current movie position in seconds. +float Movie::GetPosition() { + float position = 0.f; + if (pipeline_.get()) + position = (pipeline_->GetInterpolatedTime()).InMicroseconds() / 1000000.0f; + return position; +} + +// Set current movie position in seconds. +void Movie::SetPosition(float position) { + int64 us = static_cast<int64>(position * 1000000); + base::TimeDelta time = base::TimeDelta::FromMicroseconds(us); + if (pipeline_.get()) + pipeline_->Seek(time, NULL); +} + + // Set playback pause. void Movie::SetPause(bool pause) { enable_pause_ = pause; |