Author: gkovacs Date: Sat Jul 4 05:06:04 2009 New Revision: 4578 Log: -m
Modified: concat/libavformat/playlist.c concat/libavformat/playlist.h Modified: concat/libavformat/playlist.c ============================================================================== --- concat/libavformat/playlist.c Sat Jul 4 03:39:30 2009 (r4577) +++ concat/libavformat/playlist.c Sat Jul 4 05:06:04 2009 (r4578) @@ -240,15 +240,28 @@ int64_t ff_conv_stream_time(AVFormatCont { int64_t durn; durn = (int64_t)( - (double)avt_duration / //double casting may be unnecessary - ic->streams[stream_index]->time_base.num / - (AV_TIME_BASE / // 10^6 - ic->streams[stream_index]->time_base.den) + (avt_duration * + ic->streams[stream_index]->time_base.den) / + (AV_TIME_BASE * // 10^6 + ic->streams[stream_index]->time_base.num) ); printf("%s conv stream time from %ld to %ld/%ld is %ld\n", ic->iformat->name, avt_duration, ic->streams[stream_index]->time_base.num, ic->streams[stream_index]->time_base.den, durn); return durn; } +// converts duration to AV_TIME_BASE +int64_t ff_conv_base_time(AVFormatContext *ic, int stream_index, int64_t stream_duration) +{ + int64_t durn; + durn = (int64_t)( + stream_duration * + ic->streams[stream_index]->time_base.num * + AV_TIME_BASE / // 10^6 + ic->streams[stream_index]->time_base.den + ); + return durn; +} + // returns duration in seconds * AV_TIME_BASE int64_t ff_get_duration(AVFormatContext *ic, int stream_index) { @@ -263,7 +276,10 @@ int64_t ff_get_duration(AVFormatContext // ic->duration correct, divide by AV_TIME_BASE to get seconds // h264 and mpeg1: pkt->dts values incorrect int64_t durn; - durn = ic->duration; + +// durn = ic->duration; + durn = ff_conv_base_time(ic, stream_index, ic->streams[stream_index]->duration); + // durn = ic->streams[stream_index]->duration; // ogg gives wrong value printf("duration is %ld\n", durn); return durn; Modified: concat/libavformat/playlist.h ============================================================================== --- concat/libavformat/playlist.h Sat Jul 4 03:39:30 2009 (r4577) +++ concat/libavformat/playlist.h Sat Jul 4 05:06:04 2009 (r4578) @@ -61,4 +61,6 @@ void ff_split_wd_fn(char *filepath, char int64_t ff_conv_stream_time(AVFormatContext *ic, int stream_index, int64_t avt_duration); +int64_t ff_conv_base_time(AVFormatContext *ic, int stream_index, int64_t stream_duration); + int64_t ff_get_duration(AVFormatContext *ic, int stream_index); _______________________________________________ FFmpeg-soc mailing list FFmpeg-soc@mplayerhq.hu https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc