diff --git a/libeplayer3/include/manager.h b/libeplayer3/include/manager.h index 2442b5c..768c5ae 100644 --- a/libeplayer3/include/manager.h +++ b/libeplayer3/include/manager.h @@ -44,14 +44,13 @@ struct Track { std::string title; int pid; - int64_t duration; AVFormatContext *avfc; AVStream *stream; bool inactive; bool is_static; int ac3flags; int type, mag, page; // for teletext - Track() : pid(-1), duration(-1), avfc(NULL), stream(NULL), inactive(0), is_static(0), ac3flags(0) {} + Track() : pid(-1), avfc(NULL), stream(NULL), inactive(0), is_static(0), ac3flags(0) {} }; class Manager diff --git a/libeplayer3/input.cpp b/libeplayer3/input.cpp index 501cf88..3e3a580 100644 --- a/libeplayer3/input.cpp +++ b/libeplayer3/input.cpp @@ -446,10 +446,6 @@ bool Input::UpdateTracks() AVDictionaryEntry *lang = av_dict_get(stream->metadata, "language", NULL, 0); track.title = lang ? lang->value : ""; track.pid = stream->id; - if (stream->duration == AV_NOPTS_VALUE) - track.duration = avfc->duration; - else - track.duration = av_rescale(stream->time_base.num * AV_TIME_BASE, stream->duration, stream->time_base.den); switch (stream->codec->codec_type) { case AVMEDIA_TYPE_VIDEO: { @@ -550,23 +546,11 @@ bool Input::Seek(int64_t avts, bool absolute) bool Input::GetDuration(int64_t &duration) { + if (avfc) { + duration = avfc->duration; + return true; + } duration = 0; - - Track *track = videoTrack; - if (track && track->duration) { - duration = track->duration; - return true; - } - track = audioTrack; - if (track && track->duration) { - duration = track->duration; - return true; - } - track = subtitleTrack; - if (track && track->duration) { - duration = track->duration; - return true; - } return false; }