#include <boost/optional.hpp>
using std::pair;
-using boost::shared_ptr;
+using std::shared_ptr;
using boost::optional;
VideoView::VideoView (FilmViewer* viewer)
: _viewer (viewer)
-#ifdef DCPOMATIC_VARIANT_SWAROOP
- , _in_watermark (false)
-#endif
, _state_timer ("viewer")
, _video_frame_rate (0)
- , _eyes (EYES_LEFT)
+ , _eyes (Eyes::LEFT)
, _three_d (false)
, _dropped (0)
, _errored (0)
/** Could be called from any thread.
* @param non_blocking true to return false quickly if no video is available quickly.
- * @return false if we gave up because it would take too long, otherwise true.
+ * @return FAIL if there's no frame, AGAIN if the method should be called again, or SUCCESS
+ * if there is a frame.
*/
-bool
+VideoView::NextFrameResult
VideoView::get_next_frame (bool non_blocking)
{
if (length() == dcpomatic::DCPTime()) {
- return true;
+ return FAIL;
}
shared_ptr<Butler> butler = _viewer->butler ();
if (!butler) {
- return false;
+ return FAIL;
}
add_get ();
if (e.code == Butler::Error::DIED) {
LOG_ERROR ("Butler died with %1", e.summary());
}
- if (!pv.first && e.code == Butler::Error::AGAIN) {
- return false;
+ if (!pv.first) {
+ return e.code == Butler::Error::AGAIN ? AGAIN : FAIL;
}
_player_video = pv;
} while (
_player_video.first &&
_three_d &&
_eyes != _player_video.first->eyes() &&
- _player_video.first->eyes() != EYES_BOTH
+ _player_video.first->eyes() != Eyes::BOTH
);
if (_player_video.first && _player_video.first->error()) {
++_errored;
}
- return true;
+ return SUCCESS;
}
dcpomatic::DCPTime
return optional<int>();
}
- dcpomatic::DCPTime const next = position() + one_video_frame();
- dcpomatic::DCPTime const time = _viewer->audio_time().get_value_or(position());
+ auto const next = position() + one_video_frame();
+ auto const time = _viewer->audio_time().get_value_or(position());
if (next < time) {
return 0;
}
}
bool
-VideoView::refresh_metadata (shared_ptr<const Film> film, dcp::Size video_container_size, dcp::Size film_frame_size)
+VideoView::reset_metadata (shared_ptr<const Film> film, dcp::Size player_video_container_size)
{
- pair<shared_ptr<PlayerVideo>, dcpomatic::DCPTime> pv = player_video ();
+ auto pv = player_video ();
if (!pv.first) {
return false;
}
- if (!pv.first->reset_metadata (film, video_container_size, film_frame_size)) {
+ if (!pv.first->reset_metadata(film, player_video_container_size)) {
return false;
}