<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/src/lib/audio_decoder_stream.cc, branch v2.10.5-test</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=v2.10.5-test</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=v2.10.5-test'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2016-12-08T11:23:58Z</updated>
<entry>
<title>Further fixes and tidying to 'better-seek'.</title>
<updated>2016-12-08T11:23:58Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2016-12-08T11:23:58Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=a28ef704adf8c5bfa45b3d6285f741af64758ceb'/>
<id>urn:sha1:a28ef704adf8c5bfa45b3d6285f741af64758ceb</id>
<content type='text'>
This fixes the failure to keep track of the `position' of
each stream of a multi-stream file.  It also tidies things
up a bit.
</content>
</entry>
<entry>
<title>Fix thinko in deciding where to seek in audio decoder stream; still more debug logging.</title>
<updated>2016-11-21T10:35:48Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2016-11-21T10:35:48Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=5b2b4ad4477561120973be08ae9299f21f5533a0'/>
<id>urn:sha1:5b2b4ad4477561120973be08ae9299f21f5533a0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Some more decode logging.</title>
<updated>2016-11-20T23:58:51Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2016-11-20T23:58:51Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=878e19aabf2278828a3c9b518e0804b2cef0c01e'/>
<id>urn:sha1:878e19aabf2278828a3c9b518e0804b2cef0c01e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Move position variables into the video/audio/subtitle decoder classes.</title>
<updated>2016-11-19T20:40:36Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2016-11-19T20:40:36Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=f113b2aaca7a65f7b37e12a7d9f3f99e2d834e81'/>
<id>urn:sha1:f113b2aaca7a65f7b37e12a7d9f3f99e2d834e81</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Cope with offsets between video/audio/subtitle data in a muxed file.</title>
<updated>2016-11-19T00:51:05Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2016-11-19T00:31:37Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=24e890682b3f2aa211277ad8b6b3591f2026d4be'/>
<id>urn:sha1:24e890682b3f2aa211277ad8b6b3591f2026d4be</id>
<content type='text'>
</content>
</entry>
<entry>
<title>A possibly-better approach to seeking.</title>
<updated>2016-11-17T01:06:31Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2016-10-07T15:22:38Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=97d39f46795af78b84d5f7bc9118a188f2864781'/>
<id>urn:sha1:97d39f46795af78b84d5f7bc9118a188f2864781</id>
<content type='text'>
Before this commit, decoders try to guess whether they should
request a seek based on what they have in their buffers.  This
seems reasonable for video and audio, which will always (I think)
have some data lying around to give an indication of where their
parent decoders are in the timeline.

It doesn't work so well for subtitles, as the storage of subs is
cleared out based on time (+/- 5s of "now") so there is a good chance
that the storage will be empty.  This gives the subtitle decoder no
chance of knowing where its parent is, so it's very likely to seek.

This commit asks the parent decoder to seek if it wants to, and it
decides based on a knowledge of roughly where it is in the timeline.
Hence the sub-decoders just see if they have got the data that is being
requested, and if not they suggest to the parent that it might like
to seek.  They then start calling pass().  Hence the parent should only
seek if some calls to pass() are not going to elicit the required data
in a reasonable time.
</content>
</entry>
<entry>
<title>compose/raw_convert fiddling.</title>
<updated>2016-08-15T13:56:42Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2016-08-15T13:56:42Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=8e96f8c1677146d224438ec040982532879d6c34'/>
<id>urn:sha1:8e96f8c1677146d224438ec040982532879d6c34</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix failure to analyse audio in some cases.</title>
<updated>2016-07-08T20:13:06Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2016-07-08T20:13:06Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=02cc8c7680381c123a31c23a43f6b34a04c2115a'/>
<id>urn:sha1:02cc8c7680381c123a31c23a43f6b34a04c2115a</id>
<content type='text'>
This fixes audio-only content when the first-emitted audio is not
at time zero.  This used to cause a seek which is not possible
with audio-only.  This commit removes the unnecessary seek which
was due to missing silent-padding of the first-emitted audio.
</content>
</entry>
<entry>
<title>Fix excessive seeking with negative audio delay.</title>
<updated>2016-07-08T00:50:29Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2016-07-05T08:49:00Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=d4014e6e3de7cdf8168a82621cf6a5a6d47379c8'/>
<id>urn:sha1:d4014e6e3de7cdf8168a82621cf6a5a6d47379c8</id>
<content type='text'>
Before this commit, an audio delay of -110ms on a test project
would result in a seek on every video and audio fetch.

This commit does two things to fix that:

1.  Don't discard audio data that arrives with a timestamp
before the last seek time.  In the case that we are fixing
we had the following sequence:

- video seeks to some frame F
- this causes audio data to arrive a little before F
- this audio data is discarded
- and audio get happens just after F
- the audio code thinks it must seek rather than just pass()ing
since it has no data

If we keep the audio data from before the seek our _decoded
will be much closer to the audio request, so a pass() is more
likely to happen.

2.  Extend the length of time that we will happily pass() for
rather than seeking when looking for audio data.  Seeking is
really bad so we can tolerate quite long times here.  The sensible
length of this value should probably be investigated as the
one in this commit is a finger-in-the-air guess.
</content>
</entry>
<entry>
<title>Set AudioDecoder::fast a different way.</title>
<updated>2016-06-22T00:47:28Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2016-06-22T00:47:28Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=76f83b97c401c24b3c93baee0665e84be05f43ea'/>
<id>urn:sha1:76f83b97c401c24b3c93baee0665e84be05f43ea</id>
<content type='text'>
</content>
</entry>
</feed>
