From d0babb26ab341026fe227de810ed30c6c9f65cf2 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 11 Jan 2013 18:50:50 +0000 Subject: Try a separate writer thread. --- src/lib/encoder.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/lib/encoder.h') diff --git a/src/lib/encoder.h b/src/lib/encoder.h index 52ccfc166..fff264963 100644 --- a/src/lib/encoder.h +++ b/src/lib/encoder.h @@ -51,6 +51,7 @@ class AudioBuffers; class Film; class ServerDescription; class DCPVideoFrame; +class EncodedData; /** @class Encoder * @brief Encoder to J2K and WAV for DCP. @@ -119,6 +120,9 @@ private: void terminate_worker_threads (); void link (std::string, std::string) const; + void writer_thread (); + void terminate_writer_thread (); + #if HAVE_SWRESAMPLE SwrContext* _swr_context; #endif @@ -133,11 +137,17 @@ private: int64_t _audio_frames_written; boost::optional _last_real_frame; - bool _process_end; - std::list > _queue; + bool _terminate_encoder; + std::list > _encode_queue; std::list _worker_threads; mutable boost::mutex _worker_mutex; boost::condition _worker_condition; + + boost::thread* _writer_thread; + bool _terminate_writer; + std::list, int> > _write_queue; + mutable boost::mutex _writer_mutex; + boost::condition _writer_condition; }; #endif -- cgit v1.2.3