On Mon, 8 Oct 2012 13:38:59 -0400, Justin Ruggles <justin.rugg...@gmail.com> wrote: > Also, only use parser duration if it is greater than zero. > --- > libavformat/utils.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/libavformat/utils.c b/libavformat/utils.c > index e74afb8..ff8b971 100644 > --- a/libavformat/utils.c > +++ b/libavformat/utils.c > @@ -1070,6 +1070,9 @@ static int parse_packet(AVFormatContext *s, AVPacket > *pkt, int stream_index) > > /* set the duration */ > out_pkt.duration = 0; > + if (pkt->duration > 0 && st->need_parsing == AVSTREAM_PARSE_HEADERS) > { > + out_pkt.duration = pkt->duration; > + } else if (st->parser->duration > 0) { > if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) { > if (st->codec->sample_rate > 0) { > out_pkt.duration = av_rescale_q_rnd(st->parser->duration, > @@ -1084,6 +1087,7 @@ static int parse_packet(AVFormatContext *s, AVPacket > *pkt, int stream_index) > st->time_base, > AV_ROUND_DOWN); > } > + } > > out_pkt.stream_index = st->index; > out_pkt.pts = st->parser->pts; > -- > 1.7.1 >
Should be ok. Though I have to wonder about the sanity of using parser duration for video. I don't see how a parser can possibly know anything useful about video duration. -- Anton Khirnov _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel