Disallow referring to OV audio unless channel counts match (#2780).
Make DCPExaminer::size() optional and deal with the consequences. This means we can fix the case of a VF having no known size in a nice way, in turn fixing problems caused by the fix to #2775.
Cope with loading a film containing a missing DCP which itself contains subtitles.
Move ScopeGuard into libdcp.
Don't crash when checking a DCP with no subtitles in some reel.
Remove checks for referenced DCPs having content in all reels (#2694). I can't see why this was done, other than perhaps to avoid output with no subtitles in a reel (which is not allowed by Bv2.1). But I think even if that does still happen we could make our own reels for the missing ones.
Add some missing locks.
Cleanup: whitespace.
Fix DCP content font ID allocation to cope with DCPs that have multiple fonts 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
Fix refusal to reference overlapping but different text content (#2599).
Tweak a message to be more grammatically correct.
Cleanup: use some lambdas.
Tolerate problems when reading the contents of DCPs. This avoids errors in cases like unreadable lost+found directories appearing inside a DCP.
Fix player audio, almost totally broken by a stupid mistake in 78b2c650a9249cb7165d269b4378391d31e68e8b Following that commit 16 channel audio streams were being read as 6-channel, with unsurprising consequences.
Cleanup: use a namespace.
Handle fonts for ccaps coming from DCP content (#2525). Not dealing with them calls all sort of chaos as described in the bug report.
add_fonts_from_examiner() can be called multiple times with the same font in the case of closed captions with multiple tracks. Don't reuse the same font objects in this case, otherwise we will start with something like font, disambiguate it to 0_font, then disambiguate _that_ to 0_0_font.
Allow signals to be blocked and resumed, and so make sure that a set of content changes taken from an examiner are handled at the same time. Should fix DoM #2523.
Cleanup: swap a list for a vector.
Show audio bit depth in content properties (#559).