<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/lib/writer.h, branch main</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=main</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2025-08-25T06:47:42Z</updated>
<entry>
<title>Move write_cover_sheet() out to its own file.</title>
<updated>2025-08-25T06:47:42Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2025-08-22T19:50:00Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=99a191c599724ee8bab43146f9ea5da388c10225'/>
<id>urn:sha1:99a191c599724ee8bab43146f9ea5da388c10225</id>
<content type='text'>
</content>
</entry>
<entry>
<title>White space: writer.{cc,h}</title>
<updated>2025-08-22T19:35:44Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2025-08-22T19:35:44Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=61c74126cde9592587d31b4acbc54dd6c76a44d3'/>
<id>urn:sha1:61c74126cde9592587d31b4acbc54dd6c76a44d3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Give ownership of info files to ReelWriters (#2912).</title>
<updated>2024-12-26T16:20:25Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2024-12-16T00:58:57Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=24728b74693bb84d79474e014cdb952abc8a79f2'/>
<id>urn:sha1:24728b74693bb84d79474e014cdb952abc8a79f2</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Stop using video directory and hard-linking (#2756).</title>
<updated>2024-05-11T19:00:37Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2024-03-14T23:41:20Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=d2c665cba983c625933817e0bf05e298f80f0119'/>
<id>urn:sha1:d2c665cba983c625933817e0bf05e298f80f0119</id>
<content type='text'>
Instead store details of a previously-created asset in the film's
metadata and then look there for potential video files to re-use.
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'origin/main' into v2.17.x</title>
<updated>2024-05-07T23:53:50Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2024-05-07T23:53:50Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=6b2119dcd16c43fd681feace00d4e10f464bb9b7'/>
<id>urn:sha1:6b2119dcd16c43fd681feace00d4e10f464bb9b7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Work around deadlock when destroying J2KEncoder with a full writer queue (#2784).</title>
<updated>2024-05-07T23:33:41Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2024-05-05T19:34:29Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=32d04ddb5c583938f470ed74bda8a50cc2ec9960'/>
<id>urn:sha1:32d04ddb5c583938f470ed74bda8a50cc2ec9960</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Add some missing includes.</title>
<updated>2024-05-07T23:33:28Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2024-05-05T19:34:22Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=f5e08d6f36161a980682dd3cb9b0678d44adadfd'/>
<id>urn:sha1:f5e08d6f36161a980682dd3cb9b0678d44adadfd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Support encoding of MPEG2 DCPs.</title>
<updated>2024-04-22T11:03:04Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2024-03-19T13:02:47Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=f72a79c93626e773214f1a0318adf2445ac2ee72'/>
<id>urn:sha1:f72a79c93626e773214f1a0318adf2445ac2ee72</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Only build grok for Ubuntu 22.04.</title>
<updated>2024-01-28T01:01:57Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2023-09-24T10:09:16Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=a72355666ed6abbd02bc6b124fddd24f598f89de'/>
<id>urn:sha1:a72355666ed6abbd02bc6b124fddd24f598f89de</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Improve progress reporting of digest calculations (might help with #2643).</title>
<updated>2023-11-20T06:29:15Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2023-11-12T21:09:48Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=db4fde2e8983eaa0b76c49a189e059d6c9f5720d'/>
<id>urn:sha1:db4fde2e8983eaa0b76c49a189e059d6c9f5720d</id>
<content type='text'>
</content>
</entry>
</feed>
