<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/lib/ffmpeg_decoder.cc, branch debun</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=debun</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=debun'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2026-03-12T00:24:06Z</updated>
<entry>
<title>Use dts rather than pts when noting the time of frames we are ignoring.</title>
<updated>2026-03-12T00:24:06Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2026-03-12T00:02:51Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=4285ff59480d526161905ecdc5fc05b57be7ed58'/>
<id>urn:sha1:4285ff59480d526161905ecdc5fc05b57be7ed58</id>
<content type='text'>
The docs for av_read_frame() say
"pkt-&gt;pts can be AV_NOPTS_VALUE if the video format has B-frames, so it
is better to rely on pkt-&gt;dts if you do not decompress the payload."

Before this there could be long hangs while we go through many packets
without pts values.
</content>
</entry>
<entry>
<title>Add a debug note.</title>
<updated>2026-03-12T00:24:06Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2026-03-12T00:02:18Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=ef526ea3d6d6196f0e38ac9770504877388fc47a'/>
<id>urn:sha1:ef526ea3d6d6196f0e38ac9770504877388fc47a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Handle FFmpeg content with only subtitles enabled better.</title>
<updated>2026-02-21T01:37:42Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2026-02-21T01:37:42Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=c2adc362e4ce0a64d7e7a1c6b634b024d862c8c1'/>
<id>urn:sha1:c2adc362e4ce0a64d7e7a1c6b634b024d862c8c1</id>
<content type='text'>
Previously if some FFmpeg content was set to use only its subtitles, and
the first subtitle was 1 minute in to the content, the content would be
selected for pass() until its first minute had been scanned.

This could be slow, and incorrect as on the way to this 1 minute we want
to look at other content.

Here we store the PTS of dropped packets to use as a fallback position
when there is no video or audio enabled.
</content>
</entry>
<entry>
<title>Fix error when seeking a file with no video and &gt;1 audio stream (#3128).</title>
<updated>2025-12-14T23:20:53Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2025-12-12T10:43:45Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=52b3eee4e7285e26469b2a5f4d9d9eac20aba387'/>
<id>urn:sha1:52b3eee4e7285e26469b2a5f4d9d9eac20aba387</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Try AVSEEK_FLAG_ANY if _BACKWARD fails.</title>
<updated>2025-12-08T19:50:53Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2025-12-07T01:17:34Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=9bd8b3304f35f0b27bf18f2167302f1fd5d3f92b'/>
<id>urn:sha1:9bd8b3304f35f0b27bf18f2167302f1fd5d3f92b</id>
<content type='text'>
We usually want to do _BACKWARD as this should seek to the keyframe
before the seek position.  On some files this fails, and then it
seems that _ANY is a good next thing to try.
</content>
</entry>
<entry>
<title>Clarify and improve decoder/player/butler logging a bit.</title>
<updated>2025-12-06T10:12:31Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2025-12-06T10:11:47Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=5029bf180a8b29c8e9f1aeef1c398b05e01eb663'/>
<id>urn:sha1:5029bf180a8b29c8e9f1aeef1c398b05e01eb663</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Cleanup: can now remove the _NC log variants.</title>
<updated>2025-12-05T20:36:53Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2025-12-05T20:36:53Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=59e358ae25f84314afc6d8235aecaec124822f3f'/>
<id>urn:sha1:59e358ae25f84314afc6d8235aecaec124822f3f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Disable use of stream IDs if there are duplicates, rather than rewriting.</title>
<updated>2025-10-15T20:33:26Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2025-10-14T15:02:15Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=2d8d05c2e7ad67ebac2ff250670a219a891d09ca'/>
<id>urn:sha1:2d8d05c2e7ad67ebac2ff250670a219a891d09ca</id>
<content type='text'>
It turns out that FFmpeg decoders (e.g. flv, see FFmpeg
25faaa311a74efdfdc4fed56996d7338ed807488) check stream IDs and sometimes
create new streams if they see one that they didn't see before.  If we
change stream IDs we break this.

Here we try to use stream indices in cases where the IDs are duplicated.
We also account for the case where a new stream appears during
examination. This wasn't covered by tests until the FFmpeg commit
mentioned above, were the flv decoder creates a new stream during
examination of boon_telly.mkv.
</content>
</entry>
<entry>
<title>Remove compose.hpp includes.</title>
<updated>2025-07-10T18:50:32Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2025-07-09T20:58:37Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=bad01065584014aee4024e7cbc4a66acac7617e1'/>
<id>urn:sha1:bad01065584014aee4024e7cbc4a66acac7617e1</id>
<content type='text'>
sed -i "/include.*compose.hpp/d;" src/lib/*.cc src/wx/*.cc src/wx/*.h src/tools/*.cc src/lib/*.h test/*.cc
</content>
</entry>
<entry>
<title>Replace String::compose with fmt.</title>
<updated>2025-07-10T18:50:32Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2025-07-09T20:53:27Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=62c34b28567a097e8f22576e7d7891bd3dbe0ac0'/>
<id>urn:sha1:62c34b28567a097e8f22576e7d7891bd3dbe0ac0</id>
<content type='text'>
sed -i "/Plural-Forms/n;/%100/n;/scanf/n;s/%[123456789]/{}/g" src/lib/*.cc src/lib/*.h src/wx/*.cc src/tools/*.cc src/lib/po/*.po src/wx/po/*.po src/tools/po/*.po test/*.cc
sed -i "s/String::compose */fmt::format/g" src/lib/*.cc src/lib/*.h src/wx/*.cc src/tools/*.cc test/*.cc
</content>
</entry>
</feed>
