projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Always block waiting for audio when exporting.
[dcpomatic.git]
/
src
/
wx
/
film_viewer.cc
diff --git
a/src/wx/film_viewer.cc
b/src/wx/film_viewer.cc
index 98948b1f2b6c7f6deeef6ef9b23725d99a24e7b1..e678c6aa3045cc9057d29c77ecd6cafbe2f69cbe 100644
(file)
--- a/
src/wx/film_viewer.cc
+++ b/
src/wx/film_viewer.cc
@@
-63,17
+63,11
@@
extern "C" {
using std::bad_alloc;
using std::cout;
using std::dynamic_pointer_cast;
using std::bad_alloc;
using std::cout;
using std::dynamic_pointer_cast;
-using std::exception;
-using std::list;
-using std::make_pair;
using std::make_shared;
using std::max;
using std::make_shared;
using std::max;
-using std::min;
-using std::pair;
using std::shared_ptr;
using std::string;
using std::vector;
using std::shared_ptr;
using std::string;
using std::vector;
-using std::weak_ptr;
using boost::optional;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
using boost::optional;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
@@
-94,6
+88,7
@@
FilmViewer::FilmViewer (wxWindow* p)
: _audio (DCPOMATIC_RTAUDIO_API)
, _closed_captions_dialog (new ClosedCaptionsDialog(p, this))
{
: _audio (DCPOMATIC_RTAUDIO_API)
, _closed_captions_dialog (new ClosedCaptionsDialog(p, this))
{
+#if wxCHECK_VERSION(3, 1, 0)
switch (Config::instance()->video_view_type()) {
case Config::VIDEO_VIEW_OPENGL:
_video_view = std::make_shared<GLVideoView>(this, p);
switch (Config::instance()->video_view_type()) {
case Config::VIDEO_VIEW_OPENGL:
_video_view = std::make_shared<GLVideoView>(this, p);
@@
-102,6
+97,9
@@
FilmViewer::FilmViewer (wxWindow* p)
_video_view = std::make_shared<SimpleVideoView>(this, p);
break;
}
_video_view = std::make_shared<SimpleVideoView>(this, p);
break;
}
+#else
+ _video_view = std::make_shared<SimpleVideoView>(this, p);
+#endif
_video_view->Sized.connect (boost::bind(&FilmViewer::video_view_sized, this));
_video_view->TooManyDropped.connect (boost::bind(boost::ref(TooManyDropped)));
_video_view->Sized.connect (boost::bind(&FilmViewer::video_view_sized, this));
_video_view->TooManyDropped.connect (boost::bind(boost::ref(TooManyDropped)));
@@
-169,7
+167,7
@@
FilmViewer::set_film (shared_ptr<Film> film)
}
try {
}
try {
- _player = make_shared<Player>(_film);
+ _player = make_shared<Player>(_film
, _optimise_for_j2k ? Image::Alignment::COMPACT : Image::Alignment::PADDED
);
_player->set_fast ();
if (_dcp_decode_reduction) {
_player->set_dcp_decode_reduction (_dcp_decode_reduction);
_player->set_fast ();
if (_dcp_decode_reduction) {
_player->set_dcp_decode_reduction (_dcp_decode_reduction);
@@
-214,6
+212,12
@@
FilmViewer::recreate_butler ()
return;
}
return;
}
+#if wxCHECK_VERSION(3, 1, 0)
+ auto const j2k_gl_optimised = dynamic_pointer_cast<GLVideoView>(_video_view) && _optimise_for_j2k;
+#else
+ auto const j2k_gl_optimised = false;
+#endif
+
_butler = std::make_shared<Butler>(
_film,
_player,
_butler = std::make_shared<Butler>(
_film,
_player,
@@
-221,9
+225,9
@@
FilmViewer::recreate_butler ()
_audio_channels,
bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24),
VideoRange::FULL,
_audio_channels,
bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24),
VideoRange::FULL,
-
false
,
+
j2k_gl_optimised ? Image::Alignment::COMPACT : Image::Alignment::PADDED
,
true,
true,
- dynamic_pointer_cast<GLVideoView>(_video_view) && _optimise_for_j2k
+ j2k_gl_optimised
);
if (!Config::instance()->sound() && !_audio.isStreamOpen()) {
);
if (!Config::instance()->sound() && !_audio.isStreamOpen()) {
@@
-645,7
+649,7
@@
int
FilmViewer::audio_callback (void* out_p, unsigned int frames)
{
while (true) {
FilmViewer::audio_callback (void* out_p, unsigned int frames)
{
while (true) {
- auto t = _butler->get_audio (reinterpret_cast<float*> (out_p), frames);
+ auto t = _butler->get_audio (
Butler::Behaviour::NON_BLOCKING,
reinterpret_cast<float*> (out_p), frames);
if (!t || DCPTime(uncorrected_time() - *t) < one_video_frame()) {
/* There was an underrun or this audio is on time; carry on */
break;
if (!t || DCPTime(uncorrected_time() - *t) < one_video_frame()) {
/* There was an underrun or this audio is on time; carry on */
break;