<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/lib/ffmpeg_file_encoder.cc, branch 2643-progress</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=2643-progress</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=2643-progress'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2023-10-28T21:04:39Z</updated>
<entry>
<title>Add some const&amp; to uses of auto.</title>
<updated>2023-10-28T21:04:39Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2023-10-28T21:04:26Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=4dee86bbff8cb842aff4acb80d429ca8a22d2aa3'/>
<id>urn:sha1:4dee86bbff8cb842aff4acb80d429ca8a22d2aa3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Set up packet duration correctly when encoding using FFmpeg (#2588).</title>
<updated>2023-08-26T08:23:21Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2023-08-24T13:44:32Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=d33678b8e64de795becd3fa336dbbb099c691f58'/>
<id>urn:sha1:d33678b8e64de795becd3fa336dbbb099c691f58</id>
<content type='text'>
It seems strange that this is necessary (maybe I'm missing some
other way that the packet duration is supposed to be set up).

Without this, when the mov muxer writes the trak tags it uses an
incorrect length value because the length value is calculated
from trk-&gt;end_pts, which in turn is calculated from the last-seen
pts + the duration of the last packet.  If that packet is marked
as length 0 the length of the track is 1 frame short, so the export
is missing a frame.
</content>
</entry>
<entry>
<title>Check a return value for error.</title>
<updated>2023-08-26T08:23:21Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2023-08-24T13:44:11Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=ef72505c60da17a67b7ea1ea914290fd204d29bd'/>
<id>urn:sha1:ef72505c60da17a67b7ea1ea914290fd204d29bd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Speculative fix to ensure correct freeing.</title>
<updated>2023-08-26T08:23:21Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2023-08-24T13:43:54Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=105e1d204d9de3b42b1b1b8c1ce6a30ef12e5c3d'/>
<id>urn:sha1:105e1d204d9de3b42b1b1b8c1ce6a30ef12e5c3d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Export 24-bit audio in Prores files (#2438).</title>
<updated>2023-02-10T22:00:13Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2023-02-10T22:00:13Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=f7104971c3e4ce477d0a6f12ef71840b78837b21'/>
<id>urn:sha1:f7104971c3e4ce477d0a6f12ef71840b78837b21</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix error message.</title>
<updated>2022-11-06T22:54:59Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2022-11-06T22:54:59Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=5f70296713c82c9c7afbf1c50146d83b4caf26c3'/>
<id>urn:sha1:5f70296713c82c9c7afbf1c50146d83b4caf26c3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Extract ImageStore.</title>
<updated>2022-11-06T22:44:33Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2022-11-06T22:44:33Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=9b94bc2c884289cc0b5125e918a115a342a12ff2'/>
<id>urn:sha1:9b94bc2c884289cc0b5125e918a115a342a12ff2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Strictly I think we should be putting each component of an image into _pending_images.</title>
<updated>2022-11-06T22:19:04Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2022-11-06T22:19:00Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=c42ce0e5b188d6fe0b022f1aec4fdcb04c4835f1'/>
<id>urn:sha1:c42ce0e5b188d6fe0b022f1aec4fdcb04c4835f1</id>
<content type='text'>
We probably get away with only keeping component 0 but I think that could perhaps lead
to use-after-free as the Image for components 1 and 2 could go away a bit before
it should.
</content>
</entry>
<entry>
<title>Hopefully fix crash when the same frame is encoded twice.</title>
<updated>2022-10-25T14:08:34Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2022-10-24T18:37:02Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=e55b2b3a7eb05b3cc69411b133aeec9772420c83'/>
<id>urn:sha1:e55b2b3a7eb05b3cc69411b133aeec9772420c83</id>
<content type='text'>
Previously if some frame X was passed to the encoder twice
I think this would happen:

X1 written; X stored to _pending_images
X2 written; _pending_images remains the same
X1 encode finishes; X is discarded from _pending_images
Data for X2 is read by the encoder but was just freed

I think this might have resulted in intermittent crashes, which were
fairly common in the 2.17.x branch with the test
ffmpeg_encoder_prores_regression_1

But I didn't conclusively prove it.
</content>
</entry>
<entry>
<title>Fix failure to close exported files.</title>
<updated>2022-07-10T21:31:57Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2022-07-10T21:31:47Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=2f4fa5350bf59a08fa27dc4ea0c77e4bdad7dbd3'/>
<id>urn:sha1:2f4fa5350bf59a08fa27dc4ea0c77e4bdad7dbd3</id>
<content type='text'>
</content>
</entry>
</feed>
