summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-06-11 16:24:36 +0100
committerCarl Hetherington <cth@carlh.net>2015-06-11 16:24:36 +0100
commit019fd78b3bdf4bf1d8944df879d6c0e7a8b1cd67 (patch)
treeac8986833d6d4bdb984c073da84ad994943c1c30
parentbba21bdfe889419270320a0504553b8cec0be188 (diff)
Check for J2K data before checking for similarity of frames; fixes #599.
-rw-r--r--ChangeLog2
-rw-r--r--src/lib/encoder.cc4
2 files changed, 4 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 531fb654c..11b48165d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
2015-06-11 c.hetherington <cth@carlh.net>
+ * Fix massive slowdown of direct J2K->DCP encodes (#599).
+
* Fix hang on audio analysis in some cases (#598).
* Fix never-ending encode when XYZ values are clamped (#600).
diff --git a/src/lib/encoder.cc b/src/lib/encoder.cc
index 6eb295412..d0764ac35 100644
--- a/src/lib/encoder.cc
+++ b/src/lib/encoder.cc
@@ -221,11 +221,11 @@ Encoder::enqueue (shared_ptr<PlayerVideo> pv)
/* We can fake-write this frame */
_writer->fake_write (_video_frames_enqueued, pv->eyes ());
frame_done ();
- } else if (_last_player_video && pv->same (_last_player_video)) {
- _writer->repeat (_video_frames_enqueued, pv->eyes ());
} else if (pv->has_j2k ()) {
/* This frame already has JPEG2000 data, so just write it */
_writer->write (pv->j2k(), _video_frames_enqueued, pv->eyes ());
+ } else if (_last_player_video && pv->same (_last_player_video)) {
+ _writer->repeat (_video_frames_enqueued, pv->eyes ());
} else {
/* Queue this new frame for encoding */
LOG_TIMING ("adding to queue of %1", _queue.size ());