libeplayer3/input: stream duration fix

This commit is contained in:
martii
2014-04-30 19:08:30 +02:00
parent 4ba8446079
commit 18d7a15b88
2 changed files with 5 additions and 22 deletions

View File

@@ -44,14 +44,13 @@ struct Track
{ {
std::string title; std::string title;
int pid; int pid;
int64_t duration;
AVFormatContext *avfc; AVFormatContext *avfc;
AVStream *stream; AVStream *stream;
bool inactive; bool inactive;
bool is_static; bool is_static;
int ac3flags; int ac3flags;
int type, mag, page; // for teletext 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 class Manager

View File

@@ -446,10 +446,6 @@ bool Input::UpdateTracks()
AVDictionaryEntry *lang = av_dict_get(stream->metadata, "language", NULL, 0); AVDictionaryEntry *lang = av_dict_get(stream->metadata, "language", NULL, 0);
track.title = lang ? lang->value : ""; track.title = lang ? lang->value : "";
track.pid = stream->id; 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) { switch (stream->codec->codec_type) {
case AVMEDIA_TYPE_VIDEO: { case AVMEDIA_TYPE_VIDEO: {
@@ -550,23 +546,11 @@ bool Input::Seek(int64_t avts, bool absolute)
bool Input::GetDuration(int64_t &duration) bool Input::GetDuration(int64_t &duration)
{ {
if (avfc) {
duration = avfc->duration;
return true;
}
duration = 0; 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; return false;
} }