summaryrefslogtreecommitdiff
path: root/src/lib/writer.cc
AgeCommit message (Collapse)Author
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
2022-06-07Tidying.Carl Hetherington
2022-06-07Rearrange subtitle font management.Carl Hetherington
With this change each subtitle coming out of the player has a reference to a dcpomatic::Font that belongs to the TextContent. This hopefully solves a few problems which all basically stemmed from the fact that previously the decoders/player were deciding what the font ID in the output DCP would be - they can't do that properly.
2022-05-26Cleanup: use some more make_shared.Carl Hetherington
2022-05-05Use dcp::File in DCP-o-matic (#2231).Carl Hetherington
2022-05-02Add CPL_FILENAME variable for cover sheets (#2107).Carl Hetherington
2022-04-29Add a simple DCP editor.Carl Hetherington
2022-03-09Don't write a <ContentVersion> tag with an empty <LabelText> (#2191).Carl Hetherington
I can't see the problem with this, but apparently Dolby CineInspect complains about it. We could fix this in libdcp but I think that would make more sense if this were related to a definite standard violation, instead of just some tinkering to hide a possibly-incorrect warning.
2021-10-09Cleanup some unused using statements and other bits.Carl Hetherington
2021-08-04Allow specifying and writing sign language video language metadata (#2062).v2.15.157Carl Hetherington
2021-06-24Fix incorrect issuer/creator in CPL files.Carl Hetherington
2021-06-01Put audio language back in the Film.Carl Hetherington
It feels neat to have audio language in the audio tab, to match the subtitle language in the subtitle tab. It also avoids the potential confusion of there being an audio language setting in the DCP metadata but no subtitle language setting. However: - I am yet to find a need to describe multiple audio languages in the same DCP (all previous users of Film::audio_languages() were just taking the first language off the list). - As Carsten points out it's fiddly to have to set the audio language for 5 separate-channel WAV files, for example (you wouldn't actually have had to do this, but it would have felt like you did). I think subtitle language remains neater where it is (per-content) as there is this additional subtitle language metadata and it makes much more sense (and is much more likely) that there are multiple subtitle languages in a DCP than it does multiple audio languages.
2021-05-01C++11 tidying.Carl Hetherington
2021-04-21Make digest calculations interruptible.Carl Hetherington
2021-04-21Move digest calculation to a separate method.Carl Hetherington
2021-04-21Add some possibly-useful markers for debugging threads from coredumps.Carl Hetherington
2021-04-12Bump libdcp for some API improvements.Carl Hetherington
2021-04-02Add language to audio content and use it instead of the general metadata.Carl Hetherington
2021-03-31Put subtitle language back into content from the film (#1930).Carl Hetherington
This also adds the main/additional language flag. Of all the considerations about how to specify subtitle language, the most important seems to be that the language specification happens for the content where the language is; i.e. in the content text tab.