Mercurial > libavformat.hg
changeset 5795:67059af53c04 libavformat
mkvenc: Handle negative timestamps correctly
author | conrad |
---|---|
date | Tue, 09 Mar 2010 04:23:36 +0000 |
parents | 31e8a43123c5 |
children | a8bf262a9302 |
files | matroskaenc.c |
diffstat | 1 files changed, 7 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/matroskaenc.c Tue Mar 09 04:23:33 2010 +0000 +++ b/matroskaenc.c Tue Mar 09 04:23:36 2010 +0000 @@ -72,9 +72,9 @@ int64_t segment_uid; ebml_master cluster; int64_t cluster_pos; ///< file offset of the current cluster - uint64_t cluster_pts; + int64_t cluster_pts; int64_t duration_offset; - uint64_t duration; + int64_t duration; mkv_seekhead *main_seekhead; mkv_seekhead *cluster_seekhead; mkv_cues *cues; @@ -355,6 +355,9 @@ if (entries == NULL) return AVERROR(ENOMEM); + if (ts < 0) + return 0; + entries[cues->num_entries ].pts = ts; entries[cues->num_entries ].tracknum = stream + 1; entries[cues->num_entries++].cluster_pos = cluster_pos - cues->segment_offset; @@ -883,8 +886,8 @@ mkv->cluster_pos = url_ftell(s->pb); mkv->cluster = start_ebml_master(pb, MATROSKA_ID_CLUSTER, 0); - put_ebml_uint(pb, MATROSKA_ID_CLUSTERTIMECODE, ts); - mkv->cluster_pts = ts; + put_ebml_uint(pb, MATROSKA_ID_CLUSTERTIMECODE, FFMAX(0, ts)); + mkv->cluster_pts = FFMAX(0, ts); av_md5_update(mkv->md5_ctx, pkt->data, FFMIN(200, pkt->size)); }