diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2004-10-12 10:28:27 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2004-10-12 10:28:27 +0000 |
commit | 8bcb147f54f25126476587205ee8374bed4e39dc (patch) | |
tree | 8e63ec4f9b30b52ccffd7d7621dd1311b4c5ced2 /libavformat | |
parent | 4471e59b24a7092d92c42997788b77a3f4100ff9 (diff) | |
download | ffmpeg-8bcb147f54f25126476587205ee8374bed4e39dc.tar.gz |
generic cur_dts update
removing cur_dts update code from dv again, i think its not needed
Originally committed as revision 3588 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/dv.c | 9 | ||||
-rw-r--r-- | libavformat/utils.c | 44 |
2 files changed, 21 insertions, 32 deletions
diff --git a/libavformat/dv.c b/libavformat/dv.c index 10dcee64f9..c2af7f7b7c 100644 --- a/libavformat/dv.c +++ b/libavformat/dv.c @@ -913,15 +913,6 @@ static int dv_read_seek(AVFormatContext *s, int stream_index, } } - for(i = 0; i < s->nb_streams; i++) { - AVStream *st = s->streams[stream_index]; - AVStream *st2 = s->streams[i]; - - st->cur_dts = av_rescale(timestamp, - st2->time_base.den * (int64_t)st ->time_base.num, - st ->time_base.den * (int64_t)st2->time_base.num); - } - return url_fseek(&s->pb, offset, SEEK_SET); } diff --git a/libavformat/utils.c b/libavformat/utils.c index c756d7723c..5554948806 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -892,6 +892,22 @@ static void av_read_frame_flush(AVFormatContext *s) } /** + * updates the cur_dts field based on the given timestamp and AVStream. + * only needed if (dts are not set and pts!=dts) or for timestamp wrapping + */ +static void av_update_cur_dts(AVFormatContext *s, AVStream *st, int64_t timestamp){ + int i; + + for(i = 0; i < s->nb_streams; i++) { + AVStream *st2 = s->streams[i]; + + st->cur_dts = av_rescale(timestamp, + st2->time_base.den * (int64_t)st ->time_base.num, + st ->time_base.den * (int64_t)st2->time_base.num); + } +} + +/** * add a index entry into a sorted list updateing if it is already there. * @param timestamp timestamp in the timebase of the given stream */ @@ -1015,7 +1031,7 @@ int av_seek_frame_binary(AVFormatContext *s, int stream_index, int64_t target_ts int64_t pos_min, pos_max, pos, pos_limit; int64_t ts_min, ts_max, ts; int64_t start_pos; - int index, no_change, i; + int index, no_change; AVStream *st; if (stream_index < 0) @@ -1150,13 +1166,7 @@ av_log(s, AV_LOG_DEBUG, "%Ld %Ld %Ld / %Ld %Ld %Ld target:%Ld limit:%Ld start:%L /* do the seek */ url_fseek(&s->pb, pos, SEEK_SET); - for(i = 0; i < s->nb_streams; i++) { - AVStream *st2 = s->streams[i]; - - st->cur_dts = av_rescale(ts, - st2->time_base.den * (int64_t)st ->time_base.num, - st ->time_base.den * (int64_t)st2->time_base.num); - } + av_update_cur_dts(s, st, ts); return 0; } @@ -1182,13 +1192,7 @@ static int av_seek_frame_byte(AVFormatContext *s, int stream_index, int64_t pos, url_fseek(&s->pb, pos, SEEK_SET); #if 0 - for(i = 0; i < s->nb_streams; i++) { - st2 = s->streams[i]; - - st->cur_dts = av_rescale(ie->timestamp, - st2->time_base.den * (int64_t)st ->time_base.num, - st ->time_base.den * (int64_t)st2->time_base.num); - } + av_update_cur_dts(s, st, ts); #endif return 0; } @@ -1196,7 +1200,7 @@ static int av_seek_frame_byte(AVFormatContext *s, int stream_index, int64_t pos, static int av_seek_frame_generic(AVFormatContext *s, int stream_index, int64_t timestamp, int flags) { - int index, i; + int index; AVStream *st; AVIndexEntry *ie; @@ -1219,13 +1223,7 @@ static int av_seek_frame_generic(AVFormatContext *s, av_read_frame_flush(s); url_fseek(&s->pb, ie->pos, SEEK_SET); - for(i = 0; i < s->nb_streams; i++) { - AVStream *st2 = s->streams[i]; - - st->cur_dts = av_rescale(ie->timestamp, - st2->time_base.den * (int64_t)st ->time_base.num, - st ->time_base.den * (int64_t)st2->time_base.num); - } + av_update_cur_dts(s, st, ie->timestamp); return 0; } |