diff options
author | Arne Morten Kvarving <spiff@kodi.tv> | 2018-03-14 15:39:05 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-14 15:39:05 +0100 |
commit | 258cf89f8bfea85b06dbbc784d20ccdf55ef99f1 (patch) | |
tree | 94ecdaa9c38909118bc35898bdcec79d3a1ed3c6 | |
parent | 004ad26cac6f8fdee84f5e2435584b66d36bf40b (diff) | |
parent | 4feacb457cd4801dc8ad120a5e7efcdcb40aafff (diff) |
Merge pull request #13646 from malaterre/avi-video-info
Add support for scanning AVI files
-rw-r--r-- | xbmc/video/tags/VideoInfoTagLoaderFactory.cpp | 2 | ||||
-rw-r--r-- | xbmc/video/tags/VideoTagLoaderFFmpeg.cpp | 20 | ||||
-rw-r--r-- | xbmc/video/tags/VideoTagLoaderFFmpeg.h | 3 |
3 files changed, 23 insertions, 2 deletions
diff --git a/xbmc/video/tags/VideoInfoTagLoaderFactory.cpp b/xbmc/video/tags/VideoInfoTagLoaderFactory.cpp index c6de0d0992..cf60ac6a2a 100644 --- a/xbmc/video/tags/VideoInfoTagLoaderFactory.cpp +++ b/xbmc/video/tags/VideoInfoTagLoaderFactory.cpp @@ -41,7 +41,7 @@ IVideoInfoTagLoader* CVideoInfoTagLoaderFactory::CreateLoader(const CFileItem& i delete nfo; if (CServiceBroker::GetSettings().GetBool(CSettings::SETTING_MYVIDEOS_USETAGS) && - (item.IsType(".mkv") || item.IsType(".mp4"))) + (item.IsType(".mkv") || item.IsType(".mp4") || item.IsType(".avi"))) { CVideoTagLoaderFFmpeg* ff = new CVideoTagLoaderFFmpeg(item, info, lookInFolder); if (ff->HasInfo()) diff --git a/xbmc/video/tags/VideoTagLoaderFFmpeg.cpp b/xbmc/video/tags/VideoTagLoaderFFmpeg.cpp index c5596cd8ce..ec3e71acb1 100644 --- a/xbmc/video/tags/VideoTagLoaderFFmpeg.cpp +++ b/xbmc/video/tags/VideoTagLoaderFFmpeg.cpp @@ -123,7 +123,7 @@ bool CVideoTagLoaderFFmpeg::HasInfo() const avtag = av_dict_get(m_fctx->metadata, "TMDBURL", nullptr, AV_DICT_IGNORE_SUFFIX); if (!avtag) avtag = av_dict_get(m_fctx->metadata, "TITLE", nullptr, AV_DICT_IGNORE_SUFFIX); - } else if (m_item.IsType(".mp4")) + } else if (m_item.IsType(".mp4") || m_item.IsType(".avi")) avtag = av_dict_get(m_fctx->metadata, "title", nullptr, AV_DICT_IGNORE_SUFFIX); return avtag != nullptr; @@ -136,6 +136,8 @@ CInfoScanner::INFO_TYPE CVideoTagLoaderFFmpeg::Load(CVideoInfoTag& tag, return LoadMKV(tag, art); else if (m_item.IsType(".mp4")) return LoadMP4(tag, art); + else if (m_item.IsType(".avi")) + return LoadAVI(tag, art); else return CInfoScanner::NO_NFO; @@ -255,3 +257,19 @@ CInfoScanner::INFO_TYPE CVideoTagLoaderFFmpeg::LoadMP4(CVideoInfoTag& tag, return hasfull ? CInfoScanner::FULL_NFO : CInfoScanner::TITLE_NFO; } + +// https://wiki.multimedia.cx/index.php/FFmpeg_Metadata#AVI +CInfoScanner::INFO_TYPE CVideoTagLoaderFFmpeg::LoadAVI(CVideoInfoTag& tag, + std::vector<EmbeddedArt>* art) +{ + AVDictionaryEntry* avtag = nullptr; + while ((avtag = av_dict_get(m_fctx->metadata, "", avtag, AV_DICT_IGNORE_SUFFIX))) + { + if (strcmp(avtag->key, "title") == 0) + tag.SetTitle(avtag->value); + else if (strcmp(avtag->key,"date") == 0) + tag.SetYear(atoi(avtag->value)); + } + + return CInfoScanner::TITLE_NFO; +} diff --git a/xbmc/video/tags/VideoTagLoaderFFmpeg.h b/xbmc/video/tags/VideoTagLoaderFFmpeg.h index 26567bf9a3..7dd9f8b2b8 100644 --- a/xbmc/video/tags/VideoTagLoaderFFmpeg.h +++ b/xbmc/video/tags/VideoTagLoaderFFmpeg.h @@ -66,5 +66,8 @@ protected: //! \brief Load tags from MP4 file. CInfoScanner::INFO_TYPE LoadMP4(CVideoInfoTag& tag, std::vector<EmbeddedArt>* art); + + //! \brief Load tags from AVI file. + CInfoScanner::INFO_TYPE LoadAVI(CVideoInfoTag& tag, std::vector<EmbeddedArt>* art); }; |