X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fvideo_view.h;h=387cca9f6a0a86dda8804fe3e2ad4c92e6d6baf5;hb=e67ce8ae4b9121bbcef2c1dcb61bdb5b9330ad78;hp=d3a15d38c3e9573a252acecf49134333120be24a;hpb=bb949ec65adf95f4a2c7dd5ee7e97b9daaaf3d3f;p=dcpomatic.git diff --git a/src/wx/video_view.h b/src/wx/video_view.h index d3a15d38c..387cca9f6 100644 --- a/src/wx/video_view.h +++ b/src/wx/video_view.h @@ -24,21 +24,27 @@ #include "lib/dcpomatic_time.h" +#include "lib/exception_store.h" +#include "lib/signaller.h" #include "lib/timer.h" #include "lib/types.h" -#include "lib/exception_store.h" +#include +#include +LIBDCP_DISABLE_WARNINGS +#include +LIBDCP_ENABLE_WARNINGS #include #include -class Image; -class wxWindow; class FilmViewer; +class Image; class Player; class PlayerVideo; +class wxWindow; -class VideoView : public ExceptionStore +class VideoView : public ExceptionStore, public Signaller { public: VideoView (FilmViewer* viewer); @@ -70,6 +76,8 @@ public: /** Emitted from the GUI thread when our display changes in size */ boost::signals2::signal Sized; + /** Emitted from the GUI thread when a lot of frames are being dropped */ + boost::signals2::signal TooManyDropped; /* Accessors for FilmViewer */ @@ -123,11 +131,29 @@ public: _three_d = t; } + void set_optimise_for_j2k (bool o) { + _optimise_for_j2k = o; + } + protected: NextFrameResult get_next_frame (bool non_blocking); boost::optional time_until_next_frame () const; dcpomatic::DCPTime one_video_frame () const; + wxColour pad_colour () const; + + wxColour outline_content_colour () const { + return wxColour(255, 0, 0); + } + + wxColour outline_subtitles_colour () const { + return wxColour(0, 255, 0); + } + + wxColour crop_guess_colour () const { + return wxColour(0, 0, 255); + } + int video_frame_rate () const { boost::mutex::scoped_lock lm (_mutex); return _video_frame_rate; @@ -143,10 +169,7 @@ protected: return _player_video; } - void add_dropped () { - boost::mutex::scoped_lock lm (_mutex); - ++_dropped; - } + void add_dropped (); void add_get () { boost::mutex::scoped_lock lm (_mutex); @@ -157,6 +180,8 @@ protected: StateTimer _state_timer; + bool _optimise_for_j2k = false; + private: /** Mutex protecting all the state in this class */ mutable boost::mutex _mutex; @@ -169,6 +194,7 @@ private: bool _three_d = false; int _dropped = 0; + struct timeval _dropped_check_period_start; int _errored = 0; int _gets = 0; };