matroskaenc: factor ts_offset into block timecode computation
authorJohn Stebbins <stebbins@jetheaddev.com>
Wed, 15 Feb 2017 22:22:40 +0000 (15:22 -0700)
committerJohn Stebbins <stebbins@jetheaddev.com>
Tue, 21 Feb 2017 21:20:31 +0000 (14:20 -0700)
commit5d3953a5dcfd5f71391b7f34908517eb6f7e5146
treedab2c3f481d71c3a298819ab6552f2e932cd9b83
parentc95169f0ec68bdeeabc5fde8aa4076f406242524
matroskaenc: factor ts_offset into block timecode computation

ts_offset was added to cluster timecode, but then effectively subtracted
back off the block timecode

When setting initial_padding for an audio stream, the timestamps are
written incorrectly to the mkv file.  cluster timecode gets written
as pts0 + ts_offset which is correct, but then block timecode gets
written as pts - cluster timecode which expanded is
pts - (pts0 + ts_offset).  Adding cluster and block tc back together:
cluster + block = (pts0 + ts_offset) + (pts - (pts0 + ts_offset)) = pts
But the result should be pts + ts_offset since demux will subtract the
CodecDelay element from pts and set initial_padding to CodecDelay.
This patch gives the correct result.
libavformat/matroskaenc.c