<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/lib/shuffler.h, branch fread-logging</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=fread-logging</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=fread-logging'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2022-12-13T10:18:31Z</updated>
<entry>
<title>More header trimming.</title>
<updated>2022-12-13T10:18:31Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2022-12-13T10:18:31Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=0185ba27b0e9c52a173147c1380ec5f345109afc'/>
<id>urn:sha1:0185ba27b0e9c52a173147c1380ec5f345109afc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Use unique_ptr.</title>
<updated>2021-07-05T13:22:56Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2021-07-05T13:22:00Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=76e543bd7c85054ff857781707fa570f2b159360'/>
<id>urn:sha1:76e543bd7c85054ff857781707fa570f2b159360</id>
<content type='text'>
</content>
</entry>
<entry>
<title>C++11 tidying.</title>
<updated>2021-04-30T23:31:35Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2021-04-30T23:31:35Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=8963f0007af1a312017b9627c18b82ec2a577591'/>
<id>urn:sha1:8963f0007af1a312017b9627c18b82ec2a577591</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>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>Fix implementation of delay in 7758260; it needs to apply to</title>
<updated>2018-02-23T00:58:08Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-02-23T00:57:04Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=24ba224ab4871e453df50fde94b5b32649a3d47b'/>
<id>urn:sha1:24ba224ab4871e453df50fde94b5b32649a3d47b</id>
<content type='text'>
anything passed to emit_video(), not just things that come from
decoders.
</content>
</entry>
<entry>
<title>Add a 2-frame `delay' on content arriving at the player to give</title>
<updated>2018-02-20T23:37:24Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-02-20T23:34:59Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=a0eff2446835a2a29d751a4810fe182c486a2eb6'/>
<id>urn:sha1:a0eff2446835a2a29d751a4810fe182c486a2eb6</id>
<content type='text'>
subtitle content the chance to catch up.  Fixes problems observed
when overlaying a DCP subtitle onto an existing DCP and then seeking
into the first subtitle.  After the seek the decoder positions were:

DCP: 0.
subtitle: first subtitle time.

This causes the DCP decoder to be pass()ed first and so the subtitle
for the video frame has not arrived yet.

I hope this does not cause unpredicted side effects...
</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>
