<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/lib/player.cc, branch v2.13.2</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=v2.13.2</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=v2.13.2'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2018-03-24T23:57:22Z</updated>
<entry>
<title>Fix crash when changing DCP audio channel count.</title>
<updated>2018-03-24T23:57:22Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-03-24T23:55:56Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=800c0b9f95f422af66b6166fb4d13c1b89d04844'/>
<id>urn:sha1:800c0b9f95f422af66b6166fb4d13c1b89d04844</id>
<content type='text'>
Without this we ask the AudioMerger to merge new buffers with N
channels with old buffers with M channels, which it can't do.

I'm not convinced this is the best solution but I think it will do
for now.
</content>
</entry>
<entry>
<title>Speed some operations by re-using the last PlayerVideo but with</title>
<updated>2018-02-24T23:35:11Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-02-24T01:05:14Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=14cccb179fff7bbbf422e13f9d2e3264239c93c7'/>
<id>urn:sha1:14cccb179fff7bbbf422e13f9d2e3264239c93c7</id>
<content type='text'>
updated metadata (where possible).  Helps with #1194.
</content>
</entry>
<entry>
<title>Another subtitle fix.</title>
<updated>2018-02-23T19:55:42Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-02-23T19:55:23Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=0b6eeca6d34e646e3722b975fe76433500dc62bb'/>
<id>urn:sha1:0b6eeca6d34e646e3722b975fe76433500dc62bb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix thinko in previous.</title>
<updated>2018-02-23T01:21:22Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-02-23T01:21:12Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=b20ad09b6645c1fdd8b5ed36797208af9409da1b'/>
<id>urn:sha1:b20ad09b6645c1fdd8b5ed36797208af9409da1b</id>
<content type='text'>
</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>Add log for assertion failure.</title>
<updated>2018-02-16T23:52:39Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-02-16T23:52:39Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=ccd8399ff4937434c0d936a44f5db6ca1a93b237'/>
<id>urn:sha1:ccd8399ff4937434c0d936a44f5db6ca1a93b237</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix ignore/referencing logic.</title>
<updated>2018-02-07T20:14:19Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-02-07T20:14:19Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=8bfe295dcc4e1753ee1c89310108bc6bc034cd61'/>
<id>urn:sha1:8bfe295dcc4e1753ee1c89310108bc6bc034cd61</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Whitespace.</title>
<updated>2018-02-02T23:58:33Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-02-02T23:58:33Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=a13c66be5c55a81fd9a57131cf25b2760e31f38e'/>
<id>urn:sha1:a13c66be5c55a81fd9a57131cf25b2760e31f38e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Prior to 2537a2d Decoder::position() was not updated if a decoder emitted</title>
<updated>2018-02-02T23:47:46Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2018-02-02T23:47:46Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=518be532a480173dfac962d5aca347a2388bb072'/>
<id>urn:sha1:518be532a480173dfac962d5aca347a2388bb072</id>
<content type='text'>
data which were ignored by the Player.

2537a2d changed this so that Decoder::position() is always updated, as it could
not see the point of the previous behaviour.

It now seems that the behaviour prior to 2537a2d fixed problems with cases like
remake_with_subtitle_test. With this test the FFmpeg content happens to emit
a final frame just after its end point with a gap before it.  Code prior to
2537a2d handled this by making sure that FFmpegDecoder::flush() filled the gap (it reads
VideoDecoder::position and fills the gap at the end of content accordingly).

This no longer works if VideoDecoder::position is updated to take into account
the emitted (and ignored) frame just after the end of the content.

This commit re-fixes that problem by a different means; Player::video now
fills the gaps in this case by more careful handling of received data which is
off the end of the content.
</content>
</entry>
</feed>
