aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-05-05 01:41:54 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-05-05 01:52:21 +0200
commit441dce21699f5780a7d9309451149ab876d641dc (patch)
treef8d373f9bef87ed52e12ddfe182e909bc5ac41b3
parentbce42e95d13e3cc9c32bcd75d127c0152e51471d (diff)
downloadffmpeg-441dce21699f5780a7d9309451149ab876d641dc.tar.gz
oggvorbis: move handling of first packets ts from parser to muxer.
The parser does not have enough knowledge it seems to do it correctly. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/vorbis_parser.c3
-rw-r--r--libavformat/oggparsevorbis.c2
2 files changed, 2 insertions, 3 deletions
diff --git a/libavcodec/vorbis_parser.c b/libavcodec/vorbis_parser.c
index d1f083874e..a0468cb652 100644
--- a/libavcodec/vorbis_parser.c
+++ b/libavcodec/vorbis_parser.c
@@ -226,8 +226,7 @@ int avpriv_vorbis_parse_frame(VorbisParseContext *s, const uint8_t *buf,
previous_blocksize = s->blocksize[flag];
}
current_blocksize = s->mode_blocksize[mode];
- if(previous_blocksize)
- duration = (previous_blocksize + current_blocksize) >> 2;
+ duration = (previous_blocksize + current_blocksize) >> 2;
s->previous_blocksize = current_blocksize;
}
diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c
index 02da12799d..fa03ed752e 100644
--- a/libavformat/oggparsevorbis.c
+++ b/libavformat/oggparsevorbis.c
@@ -323,7 +323,7 @@ static int vorbis_packet(AVFormatContext *s, int idx)
}
next_pkt += os->segments[seg];
}
- os->lastpts = os->lastdts = os->granule - duration;
+ os->lastpts = os->lastdts = os->granule - FFMIN(duration, os->granule);
if(s->streams[idx]->start_time == AV_NOPTS_VALUE) {
s->streams[idx]->start_time = os->lastpts;
if (s->streams[idx]->duration)