[FFmpeg-devel] [PATCH 01/23] avformat/matroskaenc: Fix ReferenceBlock timestamp
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Sat Nov 23 20:59:00 EET 2019
Andreas Rheinhardt:
> Andreas Rheinhardt:
>> In order to indicate that the frames in a BlockGroup are not keyframes,
>> one has to add a ReferenceBlock element containing the timestamp of a
>> reference block that has already been written. The timestamp ought to be
>> relative to the timestamp of the block it is attached to. Yet the
>> Matroska muxer used the relative timestamp of the preceding block of the
>> track, i.e. the timestamp of the preceding block relative to the
>> timestamp of the cluster containing said block (that need not be the
>> cluster containing the current block). This has been fixed.
>>
>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
>> ---
>> Unchanged since last time.
>>
>> libavformat/matroskaenc.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
>> index ba48aae454..90400de191 100644
>> --- a/libavformat/matroskaenc.c
>> +++ b/libavformat/matroskaenc.c
>> @@ -2165,9 +2165,9 @@ static void mkv_write_block(AVFormatContext *s, AVIOContext *pb,
>> av_free(data);
>>
>> if (blockid == MATROSKA_ID_BLOCK && !keyframe) {
>> - put_ebml_sint(pb, MATROSKA_ID_BLOCKREFERENCE, track->last_timestamp);
>> + put_ebml_sint(pb, MATROSKA_ID_BLOCKREFERENCE, track->last_timestamp - ts);
>> }
>> - track->last_timestamp = ts - mkv->cluster_pts;
>> + track->last_timestamp = ts;
>>
>> if (discard_padding) {
>> put_ebml_sint(pb, MATROSKA_ID_DISCARDPADDING, discard_padding);
>>
> Ping for the whole patchset.
>
> - Andreas
>
Another ping.
- Andreas
More information about the ffmpeg-devel
mailing list