Commit f9ff7179 authored by David Conrad's avatar David Conrad

mkvenc: Handle negative timestamps correctly

Originally committed as revision 22372 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 654b65d0
...@@ -72,9 +72,9 @@ typedef struct MatroskaMuxContext { ...@@ -72,9 +72,9 @@ typedef struct MatroskaMuxContext {
int64_t segment_uid; int64_t segment_uid;
ebml_master cluster; ebml_master cluster;
int64_t cluster_pos; ///< file offset of the current cluster int64_t cluster_pos; ///< file offset of the current cluster
uint64_t cluster_pts; int64_t cluster_pts;
int64_t duration_offset; int64_t duration_offset;
uint64_t duration; int64_t duration;
mkv_seekhead *main_seekhead; mkv_seekhead *main_seekhead;
mkv_seekhead *cluster_seekhead; mkv_seekhead *cluster_seekhead;
mkv_cues *cues; mkv_cues *cues;
...@@ -355,6 +355,9 @@ static int mkv_add_cuepoint(mkv_cues *cues, int stream, int64_t ts, int64_t clus ...@@ -355,6 +355,9 @@ static int mkv_add_cuepoint(mkv_cues *cues, int stream, int64_t ts, int64_t clus
if (entries == NULL) if (entries == NULL)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
if (ts < 0)
return 0;
entries[cues->num_entries ].pts = ts; entries[cues->num_entries ].pts = ts;
entries[cues->num_entries ].tracknum = stream + 1; entries[cues->num_entries ].tracknum = stream + 1;
entries[cues->num_entries++].cluster_pos = cluster_pos - cues->segment_offset; entries[cues->num_entries++].cluster_pos = cluster_pos - cues->segment_offset;
...@@ -883,8 +886,8 @@ static int mkv_write_packet(AVFormatContext *s, AVPacket *pkt) ...@@ -883,8 +886,8 @@ static int mkv_write_packet(AVFormatContext *s, AVPacket *pkt)
mkv->cluster_pos = url_ftell(s->pb); mkv->cluster_pos = url_ftell(s->pb);
mkv->cluster = start_ebml_master(pb, MATROSKA_ID_CLUSTER, 0); mkv->cluster = start_ebml_master(pb, MATROSKA_ID_CLUSTER, 0);
put_ebml_uint(pb, MATROSKA_ID_CLUSTERTIMECODE, ts); put_ebml_uint(pb, MATROSKA_ID_CLUSTERTIMECODE, FFMAX(0, ts));
mkv->cluster_pts = ts; mkv->cluster_pts = FFMAX(0, ts);
av_md5_update(mkv->md5_ctx, pkt->data, FFMIN(200, pkt->size)); av_md5_update(mkv->md5_ctx, pkt->data, FFMIN(200, pkt->size));
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment