<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/lib, branch v2.15.111</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=v2.15.111</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=v2.15.111'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2020-11-28T19:58:56Z</updated>
<entry>
<title>Fix over-read behaviour of FileGroup to be the same on all platforms.</title>
<updated>2020-11-28T19:58:56Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-11-27T22:30:13Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=cf26869c2789b7ecf91e486fc3c7bf271276a592'/>
<id>urn:sha1:cf26869c2789b7ecf91e486fc3c7bf271276a592</id>
<content type='text'>
Instead of relying on the operating system's behaviour when seeking
off the end of a file, keep our own _position.  This normalises
the behaviour between POSIX and Windows.
</content>
</entry>
<entry>
<title>If we don't query a server (because we already know about it)</title>
<updated>2020-11-26T01:24:32Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-11-26T01:05:25Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=dfb23c675ca145b5570ccb5790ea804ad736a247'/>
<id>urn:sha1:dfb23c675ca145b5570ccb5790ea804ad736a247</id>
<content type='text'>
the "last seen time" will never be updated, so the server will
be discarded.

It seems that we should always ping servers (so that set_seen gets
called on receipt of the response), no matter whether
"auto-discovered" or configured, so that the "discard" code doesn't
kick in.

Otherwise we remove and re-add our configured servers every
10 seconds, which is inefficient and which possibly triggers
other bugs.
</content>
</entry>
<entry>
<title>It feels unsafe not to lock _threads_mutex between terminate_threads()</title>
<updated>2020-11-26T01:04:25Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-11-26T01:04:25Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=82fbf2b9e43fb234f843dc3352fecbd08eeed3f7'/>
<id>urn:sha1:82fbf2b9e43fb234f843dc3352fecbd08eeed3f7</id>
<content type='text'>
and _threads.reset(); move the lock.
</content>
</entry>
<entry>
<title>Calculate hashes for any referenced assets that do not already have one.</title>
<updated>2020-11-26T00:49:33Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-11-24T00:29:11Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=4bee9f40969db94aa7edc7816e1b12a7db3cab07'/>
<id>urn:sha1:4bee9f40969db94aa7edc7816e1b12a7db3cab07</id>
<content type='text'>
This is necessary so that we always include &lt;Hash&gt; in CPLs even
when referencing DCPs that do not have it.
</content>
</entry>
<entry>
<title>Use a foreach.</title>
<updated>2020-11-26T00:49:19Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-11-26T00:22:13Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=6e5dec71bf4e7a5ff81ecc115c04e8ec2b540c67'/>
<id>urn:sha1:6e5dec71bf4e7a5ff81ecc115c04e8ec2b540c67</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Disallow referring to subtitles / closed captions with start trim.</title>
<updated>2020-11-25T22:58:25Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-11-25T22:58:25Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=67bd4a37f5836ef34d9b5752744061d4be07e6e1'/>
<id>urn:sha1:67bd4a37f5836ef34d9b5752744061d4be07e6e1</id>
<content type='text'>
Since per Bv2.1 we can't have subs / closed captions with non-zero
entry point I think we have no choice but to rewrite in that case
(#1802).
</content>
</entry>
<entry>
<title>Check for inconsistency in settings for referring to text.</title>
<updated>2020-11-25T22:57:52Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-11-25T22:57:52Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=8104c994724ef0f0c47d074e6a8a856d52dfaa7a'/>
<id>urn:sha1:8104c994724ef0f0c47d074e6a8a856d52dfaa7a</id>
<content type='text'>
Just as we do for picture / sound.
</content>
</entry>
<entry>
<title>Remove unused method.</title>
<updated>2020-11-25T12:14:44Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-11-25T12:14:44Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=9276310e6c9be6148ea8b465b44af55413dc0dc0'/>
<id>urn:sha1:9276310e6c9be6148ea8b465b44af55413dc0dc0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix corrupted image when over-cropping black filler frames.</title>
<updated>2020-11-24T23:36:22Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-11-24T23:11:55Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=e43dababfc7aaf1429d3552e91b24e4e51979111'/>
<id>urn:sha1:e43dababfc7aaf1429d3552e91b24e4e51979111</id>
<content type='text'>
FFmpegDecoder can emit small black frames (128x128 pixels) when it
wants to fill in a gap.  Image::crop_scale_window would do the wrong
thing if we then applied a crop of greater than 128 in either direction;
though cropped_size is correctly clamped, the crop value itself was
not and is used to calculate the input data pointers.

This would result in random frames, usually at the end of DCPs,
often made up of blurry colour washes.
</content>
</entry>
<entry>
<title>Fix the behaviour of FileGroup when seeking too far.</title>
<updated>2020-11-24T22:01:04Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-11-24T22:01:04Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=8a1da1da65ba0e6a6fb915c73ff6e6a81da349f2'/>
<id>urn:sha1:8a1da1da65ba0e6a6fb915c73ff6e6a81da349f2</id>
<content type='text'>
Previously, if you did a seek off the end of the file group,
the seek would return an error.

This is not what fseek() does; it returns no error, and preserves
the file pointer (returned by ftell()) as if the seek had been
successful.  fread()s after a too-far seek return no data, of
course.

Parsing some files (the example used to find the bug was a
H264 MP4) involves a seek which is to the byte after the end
of the mp4 file.  If this fails the whole header parsing fails
and DCP-o-matic refuses to use the file.
</content>
</entry>
</feed>
