<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/lib/player.h, branch v2.15.121</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=v2.15.121</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=v2.15.121'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2021-01-07T21:48:29Z</updated>
<entry>
<title>std::shared_ptr</title>
<updated>2021-01-07T21:48:29Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2021-01-04T20:16:53Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=dd9be86db6cde0afa5da0d1d1ac43b42e05dca26'/>
<id>urn:sha1:dd9be86db6cde0afa5da0d1d1ac43b42e05dca26</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Pass fonts from content around as FontData.</title>
<updated>2020-12-22T01:37:53Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-12-20T22:41:52Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=ddcd4f3ba0af3e9d49dbb68127317cd0d871a248'/>
<id>urn:sha1:ddcd4f3ba0af3e9d49dbb68127317cd0d871a248</id>
<content type='text'>
i.e. as a block of memory rather than a file.  Also, get the
fonts from the decoder rather than the content.

Together, these changes allow us to use fonts from SMPTE DCPs
added as content.  Before, fonts would be messed up in those
cases (#1885).
</content>
</entry>
<entry>
<title>Make Atmos content work more like other content.  Now its MXFs</title>
<updated>2020-06-19T13:07:30Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-06-19T11:30:02Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=ca981c8cfa23111e92be329f1c2dfbe3a07b4247'/>
<id>urn:sha1:ca981c8cfa23111e92be329f1c2dfbe3a07b4247</id>
<content type='text'>
are re-written, meaning that they can be encrypted.

This (along with the libdcp update) also fixes assorted Atmos bugs.
</content>
</entry>
<entry>
<title>Change video content scaling so that it either:</title>
<updated>2020-05-11T20:02:49Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-05-09T23:57:20Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=15a83d720780d58f905d40f8493cdcb86596eaee'/>
<id>urn:sha1:15a83d720780d58f905d40f8493cdcb86596eaee</id>
<content type='text'>
1. scales the content up to fit the DCP container,
preserving aspect ratio, or
2. stretches the content to a custom aspect ratio, or
3. scales the content to some custom size.
</content>
</entry>
<entry>
<title>Nicer fix for 86102d30bf0aad89115bbeb3d8aaa2a27a0aa432</title>
<updated>2020-04-23T13:48:19Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-04-23T13:48:19Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=990f879d9af6300068af44c431b1a8e158e7f7a0'/>
<id>urn:sha1:990f879d9af6300068af44c431b1a8e158e7f7a0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add accessor for _playlist.</title>
<updated>2020-04-23T13:00:56Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-04-23T13:00:56Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=4b7185e4eda53534c4d71a1f31ba33ca3dd8dc8d'/>
<id>urn:sha1:4b7185e4eda53534c4d71a1f31ba33ca3dd8dc8d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix complete failure of preview/playback introduced in</title>
<updated>2020-04-22T23:40:56Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-04-22T23:40:56Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=86102d30bf0aad89115bbeb3d8aaa2a27a0aa432'/>
<id>urn:sha1:86102d30bf0aad89115bbeb3d8aaa2a27a0aa432</id>
<content type='text'>
4219d4b76c5cd5690b1f4fa0c248d93ced26d05a.
</content>
</entry>
<entry>
<title>Fix length of player output so it can be either the film's length or playlist's length, as appropriate.</title>
<updated>2020-04-15T14:17:01Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-04-15T14:17:01Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=4219d4b76c5cd5690b1f4fa0c248d93ced26d05a'/>
<id>urn:sha1:4219d4b76c5cd5690b1f4fa0c248d93ced26d05a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Missing #include for previous.</title>
<updated>2020-01-28T22:49:07Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-01-28T22:49:07Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=05f2028ec1280a98050dc22609879230337a35ef'/>
<id>urn:sha1:05f2028ec1280a98050dc22609879230337a35ef</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix deadlock during content examination.</title>
<updated>2020-01-28T22:23:47Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-01-28T22:23:47Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=df48c75c38dd788835a93540aea243a2dac4bb10'/>
<id>urn:sha1:df48c75c38dd788835a93540aea243a2dac4bb10</id>
<content type='text'>
Before this fix, the following situation could happen in threads
A and B:

A: Some DONE signal happens; this triggers setup_pieces which
   takes a lock on the player mutex.

B: FFmpegContent::examine takes a lock on the content mutex.
B: FFmpegContent::examine adds a stream
B: That causes STREAMS PENDING to be emitted.
B: This tries to take a lock on the player mutex so it can update _suspended

A: setup_pieces tries to access some content information, hence
   tries to take a lock on the content mutex.

Now B is holding the CL and awaiting the PL and A is holding
the PL and awaiting the CL.

It feels like the root cause of this is that while setup_pieces
is happening another change (which would itself cause setup_pieces)
is announced, and this isn't dealt with properly.

There are two steps here; _suspended is protected with an atomic
rather than using _mutex, and also it can cope with being updated
recursively.
</content>
</entry>
</feed>
