summaryrefslogtreecommitdiff
path: root/src/lib/writer.cc
AgeCommit message (Collapse)Author
2026-02-21Delete temporary file after using it.Carl Hetherington
We push the J2K frame to disk when the memory buffer is too full, so I think we should delete it after we pick it back up.
2026-02-08Fix a few unwrapped boost::filesystem calls that had crept in.Carl Hetherington
2025-12-05Cleanup: can now remove the _NC log variants.Carl Hetherington
2025-11-09Preserve CPL/PKL filenames in the editor (#3109).Carl Hetherington
2025-11-05Allow specification of which parts of the DCP to encrypt (#3099).Carl Hetherington
2025-10-10Allow Waker to keep different things awake for different reasons.Carl Hetherington
2025-09-13Zombify writer when the thread throws an exception.Carl Hetherington
Otherwise I think we can wait forever for the thread to write things to disk.
2025-08-25Move write_cover_sheet() out to its own file.Carl Hetherington
2025-08-22White space: writer.{cc,h}Carl Hetherington
2025-07-10Remove compose.hpp includes.Carl Hetherington
sed -i "/include.*compose.hpp/d;" src/lib/*.cc src/wx/*.cc src/wx/*.h src/tools/*.cc src/lib/*.h test/*.cc
2025-07-10Replace String::compose with fmt.Carl Hetherington
sed -i "/Plural-Forms/n;/%100/n;/scanf/n;s/%[123456789]/{}/g" src/lib/*.cc src/lib/*.h src/wx/*.cc src/tools/*.cc src/lib/po/*.po src/wx/po/*.po src/tools/po/*.po test/*.cc sed -i "s/String::compose */fmt::format/g" src/lib/*.cc src/lib/*.h src/wx/*.cc src/tools/*.cc test/*.cc
2025-06-17Pass Ratio around as an object rather than a pointer.Carl Hetherington
2025-04-12Fix case where -ve duration subtitles could be created at reel boundaries ↵Carl Hetherington
(#3012)
2025-03-27Bump libdcp for Bv2.0 fixes (#2988).Carl Hetherington
2025-03-22Fix crash due to crosss-thread list access.Carl Hetherington
I've seen it happen that item points to a different QueueItem after the lock was unlocked here, which I didn't think was possible. Backtraces suggest that when problems happen _queue is being sorted in another thread, and perhaps this is not allowed (I couldn't find any conclusive proof in any documentation). There is also a potential problem with the newly-added zombify() method, which takes the lock and clears the list.
2025-03-22Use make_shared.Carl Hetherington
2025-03-22Simplify conditions.Carl Hetherington
Only Type::FULL can have non-null encoded, so I don't think there's any point in checking for both things.
2025-03-22Add abstraction of io_{context,service} and use it as appropriate.Carl Hetherington
2025-01-15Add a group ID to VF PKLs (#2943).Carl Hetherington
2025-01-14Put film_util methods in a namespace.Carl Hetherington
2025-01-12Rename subtitle_languages() -> open_text_languages().Carl Hetherington
Also make it return open captions as well as open subtitles (#2941).
2025-01-12Put open captions into subtitles and closed subtitles into captions.Carl Hetherington
We could write them separately (libdcp supports this, AFAIK) but the Deluxe guidelines suggest not to use ClosedSubtitle or MainCaption.
2025-01-05Remove some unused includes.Carl Hetherington
2024-12-26Give ownership of info files to ReelWriters (#2912).v2.18.2Carl Hetherington
The motivation here is to stop a pattern where we create a file, close it, and then re-open it (many times) as I think there are problems on Windows when a virus scanner sees the new file, opens it for checking, and then we can't re-open it. This also makes things a fair bit simpler, as a lock is removed and we don't try to differentiate read/write cases by opening the file in different ways; it's now always writeable.
2024-09-13Merge remote-tracking branch 'origin/main' into v2.17.xCarl Hetherington
2024-09-03Fix a few places where we should use dcp::File::open_error()Carl Hetherington
to get a more accurate error number on Windows.
2024-09-03Support closed subtitles and open captions.Carl Hetherington
2024-09-03Adapt to some libdcp class renaming to allow open captions/closed subtitles.Carl Hetherington
2024-05-11Stop using video directory and hard-linking (#2756).Carl Hetherington
Instead store details of a previously-created asset in the film's metadata and then look there for potential video files to re-use.
2024-05-08Merge remote-tracking branch 'origin/main' into v2.17.xCarl Hetherington
2024-05-08Work around deadlock when destroying J2KEncoder with a full writer queue ↵v2.16.83Carl Hetherington
(#2784). This feels like a hack, but I can't think of a nicer way to do it. The interruption disable makes sense because when we destroy encoder threads during a DCP encode (because a remote server goes away, for example) we don't want any frames to be lost due to the encode thread being interrupted between taking the frame off the queue and sending it to the writer. When we're destroying the encoder we don't care about this, but I can't see how you'd differentiate. Maybe the encoder queue could have two lists: to-do and in-progress; the encoder thread atomically moves a frame from to-do to in-progress, but then how do you know when the in-progress ones are orphaned and need to be re-added to the main queue. You could make the writer return saying "no" if the queue is full (rather than blocking and waiting for the queue to empty) but that seems wasteful as then the frame would be re-encoded.
2024-04-22Support encoding of MPEG2 DCPs.Carl Hetherington
2024-04-21Extract frame info read/write to new class.Carl Hetherington
2024-01-04Add dummy subtitle and closed caption reels even when referencingCarl Hetherington
other DCPs (in a VF) that themselves might have missing subtitles for some reels.
2023-11-20Improve progress reporting of digest calculations (might help with #2643).Carl Hetherington
2023-10-15Fix DCP content font ID allocation to cope with DCPs that have multiple fontsCarl Hetherington
with the same name in the same reel (#2600). Previously we had this id_for_font_in_reel() which would give an ID of N_font-ID. This means we got duplicate font IDs. Here we replace that method with FontAllocator, which gives an ID of N_font-ID for the first font and M_font-ID, where M is a number higher than the highest reel index. The idea is to support the required new IDs without breaking exisiting projects. There is some documentation of how it works in doc/design/fonts
2023-10-09Use dcp::filesystem to wrap filesystem calls and fix_long_pathCarl Hetherington
anything that is passed to read_file() from libcxml. This should fix #2623 and other similar problems.
2023-08-12Prevent empty <LabelText> in <ContentVersion> (#2594).Carl Hetherington
2023-08-06Go back to respecting the user's choice for the number of audio channels in ↵Carl Hetherington
the MXF.
2023-07-22Cleanup: lengthen some short variable names.Carl Hetherington
2023-06-30Don't write MainSoundConfiguration with 71 when we only have HI/VI (#2580).Carl Hetherington
2023-05-12Only add fonts to assets when they are required.Carl Hetherington
2023-04-06Write MainSoundConfiguration tags with hyphens for unused channels (#2501).Carl Hetherington
2023-03-29Always make 16-channel MXFs.Carl Hetherington
2023-03-05Remove some 3D stuff I think is unnecessary since the changes in ↵v2.16.46Carl Hetherington
2f12058c535045cecc226fe47b3d60da8851a862
2023-03-03Add option to limit DCP output to the "Bv2.0 profile" (#2470).v2.16.45Carl Hetherington
I'm far from convinced about the point/sense of all these "profiles" (rather than just implementing or at least tolerating the standard) but lots of people are having problems with "QC" processes failing their DCPs with complaints related to MCASubDescriptors. It seems to make sense to have an option to turn them off - at least for now, until either the "QC" situation settles down or any bugs in DCP-o-matic are found and fixed.
2023-02-01Handle 2D/3D mismatches in the player (#2409).Carl Hetherington
Previously if there was 2D content in a 3D project (or vice versa) the player would emit the video anyway and the encoder would have to deal with it. Since previously the FFmpeg encoder did not deal with this quite right, it seems to make sense to move the logic into the player so that neither encoder has to worry about it.
2023-01-24Use MCASoundField::STEREO (20) for stereo DCPs.Carl Hetherington
2022-12-16Make sure main picture active area values are even (#2392).Carl Hetherington
2022-09-15Fix some spelling mistakes (mostly in comments).Carl Hetherington