summaryrefslogtreecommitdiff
path: root/src/lib/writer.cc
AgeCommit message (Collapse)Author
2020-11-20Subtitle language handling tweaks; write multiple subtitle languagesCarl Hetherington
to SMPTE extended metadata.
2020-11-20Remove subtitle language from text content.Carl Hetherington
2020-11-02Pass around JPEG2000 data as a shared_ptr and hence avoid a copyCarl Hetherington
of 4MB of data for every JPEG2000 frame we decode.
2020-10-21macOS / new boost build fixes.v2.15.104Carl Hetherington
2020-09-23Build fixes.Carl Hetherington
2020-09-23Support CPL metadata.Carl Hetherington
2020-09-23Adapt for changes to libdcp API.Carl Hetherington
2020-07-29Fix bugs in thread termination causing occasional pthreadCarl Hetherington
assertion failures. Before this, it was possible for J2KEncoder::terminate_threads() to finish without terminating all threads if the thread _running_ terminate_threads() was itself interrupt()ed. This is because the thread_group::join_all() in terminate_threads() is an interruption point, so it was possible it not to complete but instead to throw interrupted_exception. Then the owning J2KEncoder would be torn down but the threads would still be running, causing use-after-frees. This commit adds some boost::this_thread::disable_interruption objects to ensure that the owning thread is not interrupted while it is being destroyed. Also tidy up code that does this stuff, assuming that it's safe to not call thread::joinable but instead do thread.interrupt(); try { thread.join(); } catch (...) {}
2020-06-19Make Atmos content work more like other content. Now its MXFsv2.15.82Carl Hetherington
are re-written, meaning that they can be encrypted. This (along with the libdcp update) also fixes assorted Atmos bugs.
2020-06-08Always sign DCPs (#1760).Carl Hetherington
2020-05-20Difficult to see how any unprotected write with multiple readersCarl Hetherington
could be safe.
2020-04-19Add _last_written to Writer, containing the last written frame and eyesCarl Hetherington
to each reel. This is updated when things are popped off the queue, with _state_mutex_held, and used in preference to the ones in ReelWriter which were previously being updated during the time the _state_mutex lock is unlocked in the body of Writer::thread(). This was not thread safe (thanks, valgrind!)
2020-04-19Use a BOOST_FOREACH.Carl Hetherington
2020-04-19Rename a variable.Carl Hetherington
2020-02-16Make a new AudioBuffers constructor and use it to avoid some use of the more ↵Carl Hetherington
complicated copy_from.
2020-01-30Various thread cleanups.Carl Hetherington
2019-12-15Support content version metadata (#782).Carl Hetherington
2019-11-05Yet more waking (in hash computation).Carl Hetherington
2019-10-16Fix assertion failure on making a VF, in certain circumstances.Carl Hetherington
These circumstances were a VF which refers to at least one complete reel of audio from a OV before adding more audio of its own. Forward-porter from 392d675f5799671abbcf1a9a47820321bcbdcca2 in master.
2019-10-09Fix cross-thread access to info files. May help with #1618.Carl Hetherington
2019-09-29Improve OpenFileError so that it doesn't say "opening for read"v2.15.20Carl Hetherington
in one case where it should say "opening for read/write". Also add some unit tests for ReelWriter.
2019-05-10Put Time types in dcpomatic namespace.Carl Hetherington
2019-05-10Basics of metadata dialog - ratings.Carl Hetherington
2019-04-02Extract subtitle language from text content rather than ISDCFMetadata (part ↵Carl Hetherington
of #1516).
2018-12-23Be a bit more careful with fwrite.Carl Hetherington
2018-11-21Tidy and fix logging.Carl Hetherington
2018-09-02White space.Carl Hetherington
2018-08-29Add some asserts.Carl Hetherington
2018-08-29Basics of splitting CCAP streams into different assets.Carl Hetherington
2018-08-23More caption -> text.Carl Hetherington
2018-07-24Tweak debug message.Carl Hetherington
2018-07-23Tidy up after mass rename.Carl Hetherington
2018-07-23More automated renaming.Carl Hetherington
ActiveCaptions -> ActiveText BitmapCaption -> BitmapText ContentCaption -> ContentText ContentTextCaption -> ContentStringText TextCaptionFileContent -> StringTextFileContent TextCaptionFileDecoder -> StringTextFileDecoder TextCaptionFile -> StringTextFile TextCaption -> StringText PlayerCaption -> PlayerText CaptionContent -> TextContent CaptionDecoder -> TextDecoder CaptionPanel -> TextPanel CaptionView -> TextView CaptionAppearanceDialog -> SubtitleAppearanceDialog CaptionType -> TextType
2018-07-19Clean up after previous commit.Carl Hetherington
2018-07-19Reword again: Text -> Caption and Plain -> Text.Carl Hetherington
sed -i "s/ActiveText/ActiveCaptions/g" src/lib/*.{cc,h} sed -i "s/active_text.h/active_captions.h/g" src/lib/*.{cc,h} sed -i "s/active_text.cc/active_captions.cc/g" src/lib/wscript mv src/lib/active_text.cc src/lib/active_captions.cc mv src/lib/active_text.h src/lib/active_captions.h sed -i "s/PlainTextFileContent/TextCaptionFileContent/g" src/lib/*.{cc,h} src/wx/*.cc sed -i "s/PlainTextFile/TextCaptionFile/g" src/lib/*.{cc,h} src/wx/*.cc sed -i "s/plain_text_file_content/text_caption_file_content/g" src/lib/*.{cc,h} src/lib/wscript src/wx/*.{cc,h} test/*.cc mv src/lib/plain_text_file_content.cc src/lib/text_caption_file_content.cc mv src/lib/plain_text_file_content.h src/lib/text_caption_file_content.h sed -i "s/PlainTextFileDecoder/TextCaptionFileDecoder/g" src/lib/*.{cc,h} sed -i "s/plain_text_file_decoder/text_caption_file_decoder/g" src/lib/*.{cc,h} src/lib/wscript src/wx/*.{cc,h} mv src/lib/plain_text_file_decoder.cc src/lib/text_caption_file_decoder.cc mv src/lib/plain_text_file_decoder.h src/lib/text_caption_file_decoder.h sed -i "s/PlayerText/PlayerCaption/g" src/lib/*.{cc,h} sed -i "s/player_text.cc/player_caption.cc/g" src/lib/wscript sed -i "s/player_text.h/player_caption.h/g" src/lib/*.{cc,h} mv src/lib/player_text.cc src/lib/player_caption.cc mv src/lib/player_text.h src/lib/player_caption.h sed -i "s/ContentPlainText/ContentTextCaption/g" src/lib/*.{cc,h} src/wx/*.{cc,h} sed -i "s/ContentBitmapText/ContentBitmapCaption/g" src/lib/*.{cc,h} src/wx/*.{cc,h} sed -i "s/PlainText/TextCaption/g" src/lib/*.{cc,h} test/*.cc sed -i "s/plain_text.h/text_caption.h/g" src/lib/*.{cc,h} mv src/lib/plain_text.h src/lib/text_caption.h
2018-07-19Get types into ReelWriter.Carl Hetherington
2018-07-19Partial conversion of PlayerSubtitles -> PlayerText and SubtitleString -> ↵Carl Hetherington
PlainText.
2018-07-08Write image subs to DCPs.Carl Hetherington
2018-07-06Missing wakeups of the writer thread when we are waiting for it do something.v2.13.34Carl Hetherington
2018-06-09Another writer deadlock fix.Carl Hetherington
2018-06-07Assorted fixes to queue management.Carl Hetherington
2018-06-07Check that we're not about to deadlock if the queue is full and we can't ↵Carl Hetherington
repeat-write.
2018-06-05Don't allow the queue to get too big with REPEAT frames otherwisev2.13.26Carl Hetherington
there's a long delay at the end of the job while they are written. We must still write FULL frames even if the queue is long (we only stop doing that if the queue has too many FULL frames i.e. too much memory consumption). With this commit we stop writing REPEAT/FAKE frames when the queue gets long and assume there will always be a sequence image for writing and hence the main writer thread will reduce the queue given time.
2018-05-15Fix failure to skip through more than one empty reel when looking for a reel ↵Carl Hetherington
to put subtitles in.
2018-04-19Add unit test to trigger #1275 and an assert to prevent the segfault.Carl Hetherington
2018-03-07Don't fake-write encrypted video frames as the asset ID is somehow (?)Carl Hetherington
embedded in the HMAC (#1232).
2018-02-16Name threads on Linux.Carl Hetherington
2017-12-29Do split buffers over reel boundaries correctly.Carl Hetherington
2017-12-29Previously the code did not account for referenced audio, so farCarl Hetherington
as I can see. It decided which reel to write new audio to based on how many frames had been written to the current reel; this makes no sense for referred reels for which the player will emit no audio. This code looks at the audio timestamp instead.
2017-10-05Add configuration option to set writer's maximum frames in memory.Carl Hetherington