<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/lib/j2k_encoder.cc, branch bisect</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=bisect</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=bisect'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2024-05-07T23:53:50Z</updated>
<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>Allow specification of video bit rate separately for J2K and MPEG2.</title>
<updated>2024-04-22T11:03:04Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2024-04-05T21:17:03Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=21ebc2365dd7a66c05d130dc87861f7399ae834b'/>
<id>urn:sha1:21ebc2365dd7a66c05d130dc87861f7399ae834b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rename j2k_bandwidth -&gt; video_bit_rate.</title>
<updated>2024-04-21T21:18:23Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2024-04-05T19:57:03Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=c98d6fd22da1586ef3c1d64a2f7b1ee602f539e9'/>
<id>urn:sha1:c98d6fd22da1586ef3c1d64a2f7b1ee602f539e9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Extract VideoEncoder as a parent of J2KEncoder.</title>
<updated>2024-04-21T21:18:23Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2024-03-19T16:10:27Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=fa15dc1a375e13d2047a857e5aef202179eec0d4'/>
<id>urn:sha1:fa15dc1a375e13d2047a857e5aef202179eec0d4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Swap a log for a more informative one.</title>
<updated>2024-01-28T01:01:58Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2023-10-18T20:59:19Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=af49ed317148be178e8adfe131c443ce701f01f2'/>
<id>urn:sha1:af49ed317148be178e8adfe131c443ce701f01f2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Clean up grok's presence in the config file and make sure it's optional.</title>
<updated>2024-01-28T01:01:58Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2023-10-06T20:42:44Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=1760066150070717bf8954313550afdd25a0f3fe'/>
<id>urn:sha1:1760066150070717bf8954313550afdd25a0f3fe</id>
<content type='text'>
It should be allowed to not have any grok stuff in the config file,
and we should generally call it grok rather than GPU in case
other non-grok GPU stuff arrives in the future.
</content>
</entry>
<entry>
<title>Another patch from Aaron.</title>
<updated>2024-01-28T01:01:57Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2023-10-04T17:11:45Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=d76a96b6c92f708162eaa542f316fe6247410967'/>
<id>urn:sha1:d76a96b6c92f708162eaa542f316fe6247410967</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Forward-declare grk_plugin stuff.</title>
<updated>2024-01-28T01:01:57Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2023-09-26T11:32:00Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=ce1c39e267c2bca215861d1ccc3e68ab1359ce30'/>
<id>urn:sha1:ce1c39e267c2bca215861d1ccc3e68ab1359ce30</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Create a single DcpomaticContext for all GrokContexts, rather than copying them.</title>
<updated>2024-01-28T01:01:57Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2023-09-26T11:29:59Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=e55d917a7e3a0d2988c3f53c3027fe890970e6a8'/>
<id>urn:sha1:e55d917a7e3a0d2988c3f53c3027fe890970e6a8</id>
<content type='text'>
I think this makes sense, and also allows us to forward-declare the
contexts in a forthcoming commit.
</content>
</entry>
</feed>
