<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/test/shuffler_test.cc, branch processor</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=processor</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=processor'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2024-01-28T01:01:56Z</updated>
<entry>
<title>Change how video timing is done.</title>
<updated>2024-01-28T01:01:56Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2022-09-29T08:17:50Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=895143459866dcb373c93b8e674d1344a129a6df'/>
<id>urn:sha1:895143459866dcb373c93b8e674d1344a129a6df</id>
<content type='text'>
This commit changes the approach with video timing.  Previously,
we would (more-or-less) try to use every video frame from the content
in the output, hoping that they come at a constant frame rate.

This is not always the case, however.  Here we preserve the PTS
of video frames, and then when one arrives we output whatever
DCP video frames we can (at the regular DCP frame rate).

Hopefully this will solve a range of sync problems, but it
could also introduce new ones.
</content>
</entry>
<entry>
<title>Cleanup: test tidying.</title>
<updated>2022-12-29T00:47:32Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2022-12-29T00:47:32Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=ce73eaf7875a9a3326afcd839ad85eb95879c160'/>
<id>urn:sha1:ce73eaf7875a9a3326afcd839ad85eb95879c160</id>
<content type='text'>
</content>
</entry>
<entry>
<title>More enum class additions.</title>
<updated>2021-01-31T02:14:24Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2021-01-31T02:14:24Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=8fedaaa75c4586a4cc7ffb393bd71d1fdb091dc8'/>
<id>urn:sha1:8fedaaa75c4586a4cc7ffb393bd71d1fdb091dc8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>std::shared_ptr</title>
<updated>2021-01-07T21:48:29Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2021-01-04T20:16:53Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=dd9be86db6cde0afa5da0d1d1ac43b42e05dca26'/>
<id>urn:sha1:dd9be86db6cde0afa5da0d1d1ac43b42e05dca26</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Some macOS test build fixes.</title>
<updated>2020-10-13T16:51:11Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-10-08T19:30:00Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=497803ab4424ce23affd231a01d625ddf3cf3aca'/>
<id>urn:sha1:497803ab4424ce23affd231a01d625ddf3cf3aca</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix test after Shuffler changes.</title>
<updated>2019-02-13T09:57:09Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-02-13T09:57:09Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=af7fe636291ee7f75f86b19d55713a595b24636c'/>
<id>urn:sha1:af7fe636291ee7f75f86b19d55713a595b24636c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fixes to 3D shuffler to fix #1463.</title>
<updated>2019-02-13T00:17:10Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2019-02-13T00:17:10Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=27fbe80bccafe744ca3f96129c9e582f39921891'/>
<id>urn:sha1:27fbe80bccafe744ca3f96129c9e582f39921891</id>
<content type='text'>
Make the shuffler longer; I've seen examples where the video and sound
are over a second apart within the muxed file.

Allow the shuffler to pass through complete missed frames;
e.g. if the input is L1 R1 L3 R3 we can pass that through without
worrying about the missing frame #2.

Add a log warning if the shuffler fills: at this point, 3D sync
may be lost.
</content>
</entry>
<entry>
<title>Further adjustment of shuffler to cope with having sources for only one eye.</title>
<updated>2018-04-05T15:31:18Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-04-05T15:31:18Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=5f5c64faa7b0114f84f45e50211611333042c672'/>
<id>urn:sha1:5f5c64faa7b0114f84f45e50211611333042c672</id>
<content type='text'>
</content>
</entry>
<entry>
<title>In general the player assumes that it won't receive out of order video.</title>
<updated>2018-01-16T21:01:30Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-01-16T21:01:30Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=1aad2c33896ce6222f3c929c7af7fe4ff5fda0f2'/>
<id>urn:sha1:1aad2c33896ce6222f3c929c7af7fe4ff5fda0f2</id>
<content type='text'>
This clearly can happen with separate L/R sources.  A pass in L might
emit two frames which means the arrivals can't possibly be in order.

This commit fixes this by introducing a Shuffler which all alternate-3D
sources send their video to.  The Shuffler re-orders things before they
arrive at the player.

It also fixes the code which inserts video frames before one that arrives
after a gap.  This didn't cope with 3D right before.

The audio code solves a similar (perhaps the same?) problem with the
AudioMerger; perhaps we should have a similar thing for video and make
the player emit complete 3D frames.

Should help with #976.
</content>
</entry>
</feed>
