<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/lib/player.cc, branch boost-exception-test</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=boost-exception-test</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=boost-exception-test'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2020-01-28T22:23:47Z</updated>
<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>
<entry>
<title>Cache film length for Player::pass.</title>
<updated>2020-01-25T00:47:00Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-07-23T21:55:15Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=af0edaf7dcd36c367cb585c98e8413c5347a7386'/>
<id>urn:sha1:af0edaf7dcd36c367cb585c98e8413c5347a7386</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Extend the amount of allowed disagreement between the audio</title>
<updated>2020-01-07T13:40:33Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-01-07T12:30:56Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=77c30a110a321b3b69259381a7f30c5c25f4da7c'/>
<id>urn:sha1:77c30a110a321b3b69259381a7f30c5c25f4da7c</id>
<content type='text'>
coming from the content and the calculated periods of silence.

It sees that there is some scope for disagreements here when
trim start/end times are rounded to frame boundaries.

Fixes #1708.
</content>
</entry>
<entry>
<title>Fix comment.</title>
<updated>2019-11-11T13:15:19Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-11-11T13:15:05Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=c247a1b81b78164acf84f4b003062fab25e64b53'/>
<id>urn:sha1:c247a1b81b78164acf84f4b003062fab25e64b53</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Increase fudge factor at the boundary between audio signal and silence.</title>
<updated>2019-11-01T10:25:20Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-11-01T10:25:20Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=1b81a1ee7c4eba533fd49939f8e76744f94038b6'/>
<id>urn:sha1:1b81a1ee7c4eba533fd49939f8e76744f94038b6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add a warning log when an assertion gets hit.</title>
<updated>2019-09-19T22:35:08Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-09-19T22:11:25Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=400e34c23ba9ec240358cd028f90fba38bbf1560'/>
<id>urn:sha1:400e34c23ba9ec240358cd028f90fba38bbf1560</id>
<content type='text'>
Forward-ported from 4141f01e25abd5050db09ff85da47ff059909669 in master.
</content>
</entry>
<entry>
<title>Stop crashing when running the hints check on films with silent/black gaps.</title>
<updated>2019-09-09T00:18:54Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-09-09T00:18:54Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=1bfc60e40f533c6d931a915deabd97899719eb4b'/>
<id>urn:sha1:1bfc60e40f533c6d931a915deabd97899719eb4b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Primitive subtitle export feature.</title>
<updated>2019-08-31T01:03:01Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-08-31T01:03:01Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=2cdf3d9f461b12d0925cc54368105bbd177bbbb3'/>
<id>urn:sha1:2cdf3d9f461b12d0925cc54368105bbd177bbbb3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Make player more tolerant of some DCP errors.</title>
<updated>2019-08-30T22:16:21Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-08-30T22:16:21Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=1f88a38a2a607c21988a403e76f315444c4be36b'/>
<id>urn:sha1:1f88a38a2a607c21988a403e76f315444c4be36b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Avoid random black gaps between bits of content A and B when</title>
<updated>2019-07-30T23:07:06Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-07-30T23:07:06Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=bd83f1b0e1d8e7aae0af51376dbbb88d5e3f69d0'/>
<id>urn:sha1:bd83f1b0e1d8e7aae0af51376dbbb88d5e3f69d0</id>
<content type='text'>
content B has had its start trimmed.  In this case when we seek
inaccurately in A we previously also seeked inaccurately in B.
This meant that at the transition the first frame we see of B
may not be the first frame of B.

After this we seek accurately in B so that we definitely get to the
start of it.

This is especially important if the start of B has been trimmed to
within two keyframes so that an inaccurate seek is not sufficient.
</content>
</entry>
</feed>
