From e8603723436e524b075cbc25b7337a5a8fe68062 Mon Sep 17 00:00:00 2001 From: max10 Date: Mon, 24 Nov 2014 11:27:53 +0100 Subject: [PATCH] test aac --- libeplayer3/input.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/libeplayer3/input.cpp b/libeplayer3/input.cpp index 98250bf..56f474a 100644 --- a/libeplayer3/input.cpp +++ b/libeplayer3/input.cpp @@ -64,10 +64,9 @@ int64_t Input::calcPts(AVStream * stream, int64_t pts) return INVALID_PTS_VALUE; pts = av_rescale(90000ll * stream->time_base.num, pts, stream->time_base.den); -#if 0 if (avfc->start_time != AV_NOPTS_VALUE) pts -= av_rescale(90000ll, avfc->start_time, AV_TIME_BASE); -#endif + if (pts < 0) return INVALID_PTS_VALUE; @@ -373,6 +372,7 @@ bool Input::ReadSubtitles(const char *filename) { bool Input::Init(const char *filename) { + bool find_info = true; abortPlayback = false; av_lockmgr_register(lock_callback); #if ENABLE_LOGGING @@ -418,7 +418,14 @@ again: avfc->probesize = 131072; } - err = avformat_find_stream_info(avfc, NULL); + for (int i = 0; i < avfc->nb_streams; i++) { + if (avfc->streams[i]->codec->codec_id == AV_CODEC_ID_AAC) + find_info = false; + } + if (find_info) + err = avformat_find_stream_info(avfc, NULL); + +#if 0 if (averror(err, avformat_find_stream_info)) { avformat_close_input(&avfc); if (player->noprobe) { @@ -427,6 +434,7 @@ again: } return false; } +#endif bool res = UpdateTracks(); @@ -658,6 +666,7 @@ bool Input::GetMetadata(std::vector &keys, std::vector if (avfc) { AVDictionaryEntry *tag = NULL; + if (avfc->metadata) while ((tag = av_dict_get(avfc->metadata, "", tag, AV_DICT_IGNORE_SUFFIX))) { keys.push_back(tag->key);