#include "wx_util.h"
#include "closed_captions_dialog.h"
#include "gl_video_view.h"
+#include "simple_video_view.h"
#include "lib/film.h"
#include "lib/ratio.h"
#include "lib/util.h"
}
FilmViewer::FilmViewer (wxWindow* p)
- /* XXX: make this configurable */
- : _video_view (new GLVideoView(p))
- , _coalesce_player_changes (false)
+ : _coalesce_player_changes (false)
, _audio (DCPOMATIC_RTAUDIO_API)
, _audio_channels (0)
, _audio_block_size (1024)
, _state_timer ("viewer")
, _gets (0)
{
- /* XXX: maybe this should be proxied through the VideoView */
- _video_view->get()->Bind (wxEVT_SIZE, boost::bind (&FilmViewer::video_view_sized, this));
- _timer.Bind (wxEVT_TIMER, boost::bind (&FilmViewer::timer, this));
+ switch (Config::instance()->video_view_type()) {
+ case Config::VIDEO_VIEW_OPENGL:
+ _video_view = new GLVideoView (this, p);
+ break;
+ case Config::VIDEO_VIEW_SIMPLE:
+ _video_view = new SimpleVideoView (this, p);
+ break;
+ }
+
+ _video_view->Sized.connect (boost::bind(&FilmViewer::video_view_sized, this));
+ _timer.Bind (wxEVT_TIMER, boost::bind(&FilmViewer::timer, this));
set_film (shared_ptr<Film> ());
_player_video.first.reset ();
_player_video.second = DCPTime ();
- _frame.reset ();
+ _video_view->set_image (shared_ptr<Image>());
_closed_captions_dialog->clear ();
if (!_film) {
_player.reset ();
recreate_butler ();
- _frame.reset ();
- refresh_panel ();
+ refresh_view ();
return;
}
}
void
-FilmViewer::refresh_panel ()
+FilmViewer::refresh_view ()
{
- /* XXX */
-
- /*
- _state_timer.set ("refresh-panel");
- _panel->Refresh ();
- _panel->Update ();
+ _state_timer.set ("update-view");
+ _video_view->update ();
_state_timer.unset ();
- */
}
void
FilmViewer::display_player_video ()
{
if (!_player_video.first) {
- _frame.reset ();
- refresh_panel ();
+ _video_view->set_image (shared_ptr<Image>());
+ refresh_view ();
return;
}
_state_timer.set ("get image");
- /* XXX: do we need to store _frame? */
- _frame = _player_video.first->image (bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true);
- _video_view->set_image (_frame);
+ _video_view->set_image (
+ _player_video.first->image(bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true)
+ );
_state_timer.set ("ImageChanged");
ImageChanged (_player_video.first);
_inter_position = _player_video.first->inter_position ();
_inter_size = _player_video.first->inter_size ();
- refresh_panel ();
+ refresh_view ();
_closed_captions_dialog->update (time());
}
FilmViewer::set_outline_content (bool o)
{
_outline_content = o;
- refresh_panel ();
+ refresh_view ();
}
void
{
#ifdef DCPOMATIC_VARIANT_SWAROOP
if (p == Config::PLAYER_BACKGROUND_IMAGE) {
- refresh_panel ();
+ refresh_view ();
return;
}
#endif