Skip to content

Instantly share code, notes, and snippets.

@armando-basile
Last active August 29, 2015 14:22
Show Gist options
  • Save armando-basile/11b6c37a54b1e6eacf37 to your computer and use it in GitHub Desktop.
Save armando-basile/11b6c37a54b1e6eacf37 to your computer and use it in GitHub Desktop.
From 2bb3b2a57c0c5b44a0dbe37758041f6c00b73b77 Mon Sep 17 00:00:00 2001
From: Rainer Hochecker <fernetmenta@online.de>
Date: Sun, 10 May 2015 19:51:43 +0200
Subject: [PATCH] dvdplayer: add a method to avoid requeting HTTP Header
---
xbmc/FileItem.h | 6 ++++++
xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxVobsub.cpp | 2 +-
xbmc/cores/dvdplayer/DVDFileInfo.cpp | 6 +++---
xbmc/cores/dvdplayer/DVDInputStreams/DVDFactoryInputStream.cpp | 9 +++++++--
xbmc/cores/dvdplayer/DVDInputStreams/DVDFactoryInputStream.h | 2 +-
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStream.cpp | 4 +++-
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStream.h | 5 ++++-
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.cpp | 2 +-
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.h | 2 +-
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFFmpeg.cpp | 4 ++--
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFFmpeg.h | 2 +-
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFile.cpp | 4 ++--
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFile.h | 2 +-
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHttp.cpp | 4 ++--
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHttp.h | 2 +-
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamMemory.cpp | 4 ++--
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamMemory.h | 2 +-
.../dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp | 4 ++--
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.h | 2 +-
.../dvdplayer/DVDInputStreams/DVDInputStreamPVRManager.cpp | 10 ++++++----
.../cores/dvdplayer/DVDInputStreams/DVDInputStreamPVRManager.h | 3 ++-
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp | 4 ++--
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.h | 2 +-
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamStack.cpp | 4 ++--
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamStack.h | 2 +-
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamTV.cpp | 4 ++--
xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamTV.h | 2 +-
xbmc/cores/dvdplayer/DVDPlayer.cpp | 4 ++--
xbmc/cores/dvdplayer/DVDSubtitles/DVDSubtitleStream.cpp | 2 +-
xbmc/cores/paplayer/DVDPlayerCodec.cpp | 3 ++-
xbmc/storage/MediaManager.cpp | 2 +-
31 files changed, 65 insertions(+), 45 deletions(-)
diff --git a/xbmc/FileItem.h b/xbmc/FileItem.h
index 1e6f372..1e69813 100644
--- a/xbmc/FileItem.h
+++ b/xbmc/FileItem.h
@@ -413,6 +413,12 @@ class CFileItem :
*/
void FillInMimeType(bool lookup = true);
+ /*!
+ \brief Some sources do not support HTTP HEAD request to determine i.e. mime type
+ \return false if HEAD requests have to be avoided
+ */
+ bool ContentLookup() { return true; };
+
/* general extra info about the contents of the item, not for display */
void SetExtraInfo(const std::string& info) { m_extrainfo = info; };
const std::string& GetExtraInfo() const { return m_extrainfo; };
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxVobsub.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxVobsub.cpp
index c63e15d..0885dd1 100644
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxVobsub.cpp
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxVobsub.cpp
@@ -62,7 +62,7 @@ bool CDVDDemuxVobsub::Open(const string& filename, int source, const string& sub
}
m_Input.reset(CDVDFactoryInputStream::CreateInputStream(NULL, vobsub, ""));
- if(!m_Input.get() || !m_Input->Open(vobsub.c_str(), "video/x-vobsub"))
+ if(!m_Input.get() || !m_Input->Open(vobsub.c_str(), "video/x-vobsub", false))
return false;
m_Demuxer.reset(new CDVDDemuxFFmpeg());
diff --git a/xbmc/cores/dvdplayer/DVDFileInfo.cpp b/xbmc/cores/dvdplayer/DVDFileInfo.cpp
index 8525e6b..1e1c361 100644
--- a/xbmc/cores/dvdplayer/DVDFileInfo.cpp
+++ b/xbmc/cores/dvdplayer/DVDFileInfo.cpp
@@ -64,7 +64,7 @@ bool CDVDFileInfo::GetFileDuration(const std::string &path, int& duration)
if (!input.get())
return false;
- if (!input->Open(path.c_str(), ""))
+ if (!input->Open(path.c_str(), "", true))
return false;
demux.reset(CDVDFactoryDemuxer::CreateDemuxer(input.get(), true));
@@ -120,7 +120,7 @@ bool CDVDFileInfo::ExtractThumb(const std::string &strPath,
return false;
}
- if (!pInputStream->Open(strPath.c_str(), ""))
+ if (!pInputStream->Open(strPath.c_str(), "", true))
{
CLog::Log(LOGERROR, "InputStream: Error opening, %s", redactPath.c_str());
if (pInputStream)
@@ -346,7 +346,7 @@ bool CDVDFileInfo::GetFileStreamDetails(CFileItem *pItem)
if (!pInputStream)
return false;
- if (pInputStream->IsStreamType(DVDSTREAM_TYPE_DVD) || !pInputStream->Open(playablePath.c_str(), ""))
+ if (pInputStream->IsStreamType(DVDSTREAM_TYPE_DVD) || !pInputStream->Open(playablePath.c_str(), "", true))
{
delete pInputStream;
return false;
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDFactoryInputStream.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDFactoryInputStream.cpp
index 3bf1016..11fe679 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDFactoryInputStream.cpp
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDFactoryInputStream.cpp
@@ -40,10 +40,12 @@
#include "utils/URIUtils.h"
-CDVDInputStream* CDVDFactoryInputStream::CreateInputStream(IDVDPlayer* pPlayer, const std::string& file, const std::string& content)
+CDVDInputStream* CDVDFactoryInputStream::CreateInputStream(IDVDPlayer* pPlayer, const std::string& file, const std::string& content, bool contentlookup)
{
CFileItem item(file.c_str(), false);
+ item.SetMimeType(content);
+
if(item.IsDiscImage())
{
#ifdef HAVE_LIBBLURAY
@@ -104,7 +106,10 @@ CDVDInputStream* CDVDFactoryInputStream::CreateInputStream(IDVDPlayer* pPlayer,
{
if (item.IsType(".m3u8"))
return new CDVDInputStreamFFmpeg();
- item.FillInMimeType();
+
+ if (contentlookup)
+ item.FillInMimeType();
+
if (item.GetMimeType() == "application/vnd.apple.mpegurl")
return new CDVDInputStreamFFmpeg();
}
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDFactoryInputStream.h b/xbmc/cores/dvdplayer/DVDInputStreams/DVDFactoryInputStream.h
index cd06264..0569995 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDFactoryInputStream.h
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDFactoryInputStream.h
@@ -28,5 +28,5 @@ class IDVDPlayer;
class CDVDFactoryInputStream
{
public:
- static CDVDInputStream* CreateInputStream(IDVDPlayer* pPlayer, const std::string& file, const std::string& content);
+ static CDVDInputStream* CreateInputStream(IDVDPlayer* pPlayer, const std::string& file, const std::string& content, bool contentlookup = true);
};
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStream.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStream.cpp
index 4b5a8da..f5ee389 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStream.cpp
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStream.cpp
@@ -24,13 +24,14 @@
CDVDInputStream::CDVDInputStream(DVDStreamType streamType)
{
m_streamType = streamType;
+ m_contentLookup = true;
}
CDVDInputStream::~CDVDInputStream()
{
}
-bool CDVDInputStream::Open(const char* strFile, const std::string &content)
+bool CDVDInputStream::Open(const char* strFile, const std::string &content, bool contentLookup)
{
CURL url(strFile);
@@ -41,6 +42,7 @@ bool CDVDInputStream::Open(const char* strFile, const std::string &content)
m_strFileName = url.Get();
m_content = content;
+ m_contentLookup = contentLookup;
return true;
}
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStream.h b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStream.h
index e629885..08375c5 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStream.h
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStream.h
@@ -149,7 +149,7 @@ class CDVDInputStream
CDVDInputStream(DVDStreamType m_streamType);
virtual ~CDVDInputStream();
- virtual bool Open(const char* strFileName, const std::string& content);
+ virtual bool Open(const char* strFileName, const std::string& content, bool contentLookup);
virtual void Close() = 0;
virtual int Read(uint8_t* buf, int buf_size) = 0;
virtual int64_t Seek(int64_t offset, int whence) = 0;
@@ -180,6 +180,8 @@ class CDVDInputStream
void SetFileItem(const CFileItem& item);
+ bool ContentLookup() { return m_contentLookup; }
+
protected:
DVDStreamType m_streamType;
std::string m_strFileName;
@@ -187,4 +189,5 @@ class CDVDInputStream
BitstreamStats m_stats;
std::string m_content;
CFileItem m_item;
+ bool m_contentLookup;
};
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.cpp
index aae94bb..c8ed36a 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.cpp
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.cpp
@@ -253,7 +253,7 @@ BLURAY_TITLE_INFO* CDVDInputStreamBluray::GetTitleFile(const std::string& filena
}
-bool CDVDInputStreamBluray::Open(const char* strFile, const std::string& content)
+bool CDVDInputStreamBluray::Open(const char* strFile, const std::string& content, bool contentLookup)
{
if(m_player == NULL)
return false;
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.h b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.h
index 1107ed2..f05c406 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.h
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.h
@@ -48,7 +48,7 @@ class CDVDInputStreamBluray
public:
CDVDInputStreamBluray(IDVDPlayer* player);
virtual ~CDVDInputStreamBluray();
- virtual bool Open(const char* strFile, const std::string &content);
+ virtual bool Open(const char* strFile, const std::string &content, bool contentLookup);
virtual void Close();
virtual int Read(uint8_t* buf, int buf_size);
virtual int64_t Seek(int64_t offset, int whence);
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFFmpeg.cpp
index 936bbb2..5f6bfca 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFFmpeg.cpp
@@ -48,7 +48,7 @@ bool CDVDInputStreamFFmpeg::IsEOF()
return false;
}
-bool CDVDInputStreamFFmpeg::Open(const char* strFile, const std::string& content)
+bool CDVDInputStreamFFmpeg::Open(const char* strFile, const std::string& content, bool contentLookup)
{
CFileItem item(strFile, false);
std::string selected;
@@ -66,7 +66,7 @@ bool CDVDInputStreamFFmpeg::Open(const char* strFile, const std::string& content
}
}
- if (!CDVDInputStream::Open(strFile, content))
+ if (!CDVDInputStream::Open(strFile, content, contentLookup))
return false;
m_can_pause = true;
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFFmpeg.h b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFFmpeg.h
index 2097b0e..0bd2792 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFFmpeg.h
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFFmpeg.h
@@ -29,7 +29,7 @@ class CDVDInputStreamFFmpeg
public:
CDVDInputStreamFFmpeg();
virtual ~CDVDInputStreamFFmpeg();
- virtual bool Open(const char* strFile, const std::string &content);
+ virtual bool Open(const char* strFile, const std::string &content, bool contentLookup);
virtual void Close();
virtual int Read(uint8_t* buf, int buf_size);
virtual int64_t Seek(int64_t offset, int whence);
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFile.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFile.cpp
index 9edd866..5d57f76 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFile.cpp
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFile.cpp
@@ -43,9 +43,9 @@ bool CDVDInputStreamFile::IsEOF()
return !m_pFile || m_eof;
}
-bool CDVDInputStreamFile::Open(const char* strFile, const std::string& content)
+bool CDVDInputStreamFile::Open(const char* strFile, const std::string& content, bool contentLookup)
{
- if (!CDVDInputStream::Open(strFile, content))
+ if (!CDVDInputStream::Open(strFile, content, contentLookup))
return false;
m_pFile = new CFile();
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFile.h b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFile.h
index 24b38eb..a44fe8f 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFile.h
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamFile.h
@@ -27,7 +27,7 @@ class CDVDInputStreamFile : public CDVDInputStream
public:
CDVDInputStreamFile();
virtual ~CDVDInputStreamFile();
- virtual bool Open(const char* strFile, const std::string &content);
+ virtual bool Open(const char* strFile, const std::string &content, bool contentLookup);
virtual void Close();
virtual int Read(uint8_t* buf, int buf_size);
virtual int64_t Seek(int64_t offset, int whence);
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHTSP.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHTSP.cpp
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHTSP.cpp
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHTSP.cpp
@@ -83,9 +83,9 @@
Close();
}
-bool CDVDInputStreamHTSP::Open(const char* file, const std::string& content)
+bool CDVDInputStreamHTSP::Open(const char* file, const std::string& content, bool contentLookup)
{
- if (!CDVDInputStream::Open(file, content))
+ if (!CDVDInputStream::Open(file, content, contentLookup))
return false;
CURL url(file);
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHTSP.h b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHTSP.h
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHTSP.h
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHTSP.h
@@ -30,7 +30,7 @@
public:
CDVDInputStreamHTSP();
virtual ~CDVDInputStreamHTSP();
- virtual bool Open(const char* file, const std::string &content);
+ virtual bool Open(const char* file, const std::string &content, bool contentLookup);
virtual void Close();
virtual int Read(uint8_t* buf, int buf_size);
virtual int64_t Seek(int64_t offset, int whence) { return -1; }
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHttp.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHttp.cpp
index 88cf3a9..5165859 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHttp.cpp
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHttp.cpp
@@ -50,9 +50,9 @@ bool CDVDInputStreamHttp::IsEOF()
return true;
}
-bool CDVDInputStreamHttp::Open(const char* strFile, const std::string& content)
+bool CDVDInputStreamHttp::Open(const char* strFile, const std::string& content, bool contentLookup)
{
- if (!CDVDInputStream::Open(strFile, content)) return false;
+ if (!CDVDInputStream::Open(strFile, content, contentLookup)) return false;
m_pFile = new CCurlFile();
if (!m_pFile) return false;
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHttp.h b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHttp.h
index f8ed02e..ce623e7 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHttp.h
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHttp.h
@@ -33,7 +33,7 @@ class CDVDInputStreamHttp : public CDVDInputStream
public:
CDVDInputStreamHttp();
virtual ~CDVDInputStreamHttp();
- virtual bool Open(const char* strFile, const std::string& content);
+ virtual bool Open(const char* strFile, const std::string& content, bool contentLookup);
virtual void Close();
virtual int Read(uint8_t* buf, int buf_size);
virtual int64_t Seek(int64_t offset, int whence);
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamMemory.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamMemory.cpp
index 2c50906..6cf84bc 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamMemory.cpp
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamMemory.cpp
@@ -40,9 +40,9 @@ bool CDVDInputStreamMemory::IsEOF()
return false;
}
-bool CDVDInputStreamMemory::Open(const char* strFile, const std::string& content)
+bool CDVDInputStreamMemory::Open(const char* strFile, const std::string& content, bool contentLookup)
{
- if (!CDVDInputStream::Open(strFile, content)) return false;
+ if (!CDVDInputStream::Open(strFile, content, contentLookup)) return false;
return true;
}
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamMemory.h b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamMemory.h
index d34f48f..4c4dc57 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamMemory.h
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamMemory.h
@@ -27,7 +27,7 @@ class CDVDInputStreamMemory : public CDVDInputStream
public:
CDVDInputStreamMemory();
virtual ~CDVDInputStreamMemory();
- virtual bool Open(const char* strFile, const std::string& content);
+ virtual bool Open(const char* strFile, const std::string& content, bool contentLookup);
virtual void Close();
virtual int Read(uint8_t* buf, int buf_size);
virtual int64_t Seek(int64_t offset, int whence);
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
index 3af0b9c..6e0d386 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp
@@ -63,9 +63,9 @@ CDVDInputStreamNavigator::~CDVDInputStreamNavigator()
Close();
}
-bool CDVDInputStreamNavigator::Open(const char* strFile, const std::string& content)
+bool CDVDInputStreamNavigator::Open(const char* strFile, const std::string& content, bool contentLookup)
{
- if (!CDVDInputStream::Open(strFile, "video/x-dvd-mpeg"))
+ if (!CDVDInputStream::Open(strFile, "video/x-dvd-mpeg", contentLookup))
return false;
// load libdvdnav.dll
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.h b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.h
index cc23de2..42cd92f 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.h
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.h
@@ -77,7 +77,7 @@ class CDVDInputStreamNavigator
CDVDInputStreamNavigator(IDVDPlayer* player);
virtual ~CDVDInputStreamNavigator();
- virtual bool Open(const char* strFile, const std::string& content);
+ virtual bool Open(const char* strFile, const std::string& content, bool contentLookup);
virtual void Close();
virtual int Read(uint8_t* buf, int buf_size);
virtual int64_t Seek(int64_t offset, int whence);
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamPVRManager.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamPVRManager.cpp
index a1a4e56..741068f 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamPVRManager.cpp
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamPVRManager.cpp
@@ -47,6 +47,7 @@ CDVDInputStreamPVRManager::CDVDInputStreamPVRManager(IDVDPlayer* pPlayer) : CDVD
m_pOtherStream = NULL;
m_eof = true;
m_ScanTimeout.Set(0);
+ m_contentLookup = true;
}
/************************************************************************
@@ -74,7 +75,7 @@ bool CDVDInputStreamPVRManager::IsEOF()
return !m_pFile || m_eof;
}
-bool CDVDInputStreamPVRManager::Open(const char* strFile, const std::string& content)
+bool CDVDInputStreamPVRManager::Open(const char* strFile, const std::string& content, bool contentLookup)
{
/* Open PVR File for both cases, to have access to ILiveTVInterface and
* IRecordable
@@ -84,7 +85,7 @@ bool CDVDInputStreamPVRManager::Open(const char* strFile, const std::string& con
m_pRecordable = ((CPVRFile*)m_pFile)->GetRecordable();
CURL url(strFile);
- if (!CDVDInputStream::Open(strFile, content)) return false;
+ if (!CDVDInputStream::Open(strFile, content, contentLookup)) return false;
if (!m_pFile->Open(url))
{
delete m_pFile;
@@ -117,7 +118,7 @@ bool CDVDInputStreamPVRManager::Open(const char* strFile, const std::string& con
else
m_pOtherStream->SetFileItem(m_item);
- if (!m_pOtherStream->Open(transFile.c_str(), content))
+ if (!m_pOtherStream->Open(transFile.c_str(), content, contentLookup))
{
CLog::Log(LOGERROR, "CDVDInputStreamPVRManager::Open - error opening [%s]", transFile.c_str());
delete m_pFile;
@@ -132,6 +133,7 @@ bool CDVDInputStreamPVRManager::Open(const char* strFile, const std::string& con
ResetScanTimeout((unsigned int) CSettings::Get().GetInt("pvrplayback.scantime") * 1000);
m_content = content;
+ m_contentLookup = contentLookup;
CLog::Log(LOGDEBUG, "CDVDInputStreamPVRManager::Open - stream opened: %s", transFile.c_str());
return true;
@@ -373,7 +375,7 @@ bool CDVDInputStreamPVRManager::CloseAndOpen(const char* strFile)
{
Close();
- if (Open(strFile, m_content))
+ if (Open(strFile, m_content, m_contentLookup))
{
return true;
}
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamPVRManager.h b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamPVRManager.h
index 56a3b11..c00396a 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamPVRManager.h
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamPVRManager.h
@@ -45,7 +45,7 @@ class CDVDInputStreamPVRManager
public:
CDVDInputStreamPVRManager(IDVDPlayer* pPlayer);
virtual ~CDVDInputStreamPVRManager();
- virtual bool Open(const char* strFile, const std::string &content);
+ virtual bool Open(const char* strFile, const std::string &content, bool contentLookup);
virtual void Close();
virtual int Read(uint8_t* buf, int buf_size);
virtual int64_t Seek(int64_t offset, int whence);
@@ -100,6 +100,7 @@ class CDVDInputStreamPVRManager
bool m_eof;
std::string m_strContent;
XbmcThreads::EndTime m_ScanTimeout;
+ bool m_contentLookup;
};
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp
index 5d45448..37c3870 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp
@@ -135,7 +135,7 @@ static const struct {
{ NULL }
};
-bool CDVDInputStreamRTMP::Open(const char* strFile, const std::string& content)
+bool CDVDInputStreamRTMP::Open(const char* strFile, const std::string& content, bool contentLookup)
{
if (m_sStreamPlaying)
{
@@ -143,7 +143,7 @@ bool CDVDInputStreamRTMP::Open(const char* strFile, const std::string& content)
m_sStreamPlaying = NULL;
}
- if (!m_rtmp || !CDVDInputStream::Open(strFile, "video/x-flv"))
+ if (!m_rtmp || !CDVDInputStream::Open(strFile, "video/x-flv", contentLookup))
return false;
CSingleLock lock(m_RTMPSection);
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.h b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.h
index dd00e5a..6f2e590b 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.h
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.h
@@ -32,7 +32,7 @@ class CDVDInputStreamRTMP
public:
CDVDInputStreamRTMP();
virtual ~CDVDInputStreamRTMP();
- virtual bool Open(const char* strFile, const std::string &content);
+ virtual bool Open(const char* strFile, const std::string &content, bool contentLookup);
virtual void Close();
virtual int Read(uint8_t* buf, int buf_size);
virtual int64_t Seek(int64_t offset, int whence);
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamStack.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamStack.cpp
index fbe24b8..094a82a 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamStack.cpp
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamStack.cpp
@@ -46,9 +46,9 @@ bool CDVDInputStreamStack::IsEOF()
return m_eof;
}
-bool CDVDInputStreamStack::Open(const char* path, const std::string& content)
+bool CDVDInputStreamStack::Open(const char* path, const std::string& content, bool contentLookup)
{
- if (!CDVDInputStream::Open(path, content))
+ if (!CDVDInputStream::Open(path, content, contentLookup))
return false;
CStackDirectory dir;
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamStack.h b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamStack.h
index de35a82..1bcb861 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamStack.h
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamStack.h
@@ -29,7 +29,7 @@ class CDVDInputStreamStack : public CDVDInputStream
CDVDInputStreamStack();
virtual ~CDVDInputStreamStack();
- virtual bool Open(const char* path, const std::string &content);
+ virtual bool Open(const char* path, const std::string &content, bool contentLookup);
virtual void Close();
virtual int Read(uint8_t* buf, int buf_size);
virtual int64_t Seek(int64_t offset, int whence);
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamTV.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamTV.cpp
index 98e74d2..f7b0021 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamTV.cpp
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamTV.cpp
@@ -45,9 +45,9 @@ bool CDVDInputStreamTV::IsEOF()
return !m_pFile || m_eof;
}
-bool CDVDInputStreamTV::Open(const char* strFile, const std::string& content)
+bool CDVDInputStreamTV::Open(const char* strFile, const std::string& content, bool contentLookup)
{
- if (!CDVDInputStream::Open(strFile, content)) return false;
+ if (!CDVDInputStream::Open(strFile, content, contentLookup)) return false;
if(strncmp(strFile, "vtp://", 6) == 0)
{
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamTV.h b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamTV.h
index 7218fff..b94fad5 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamTV.h
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamTV.h
@@ -36,7 +36,7 @@ class CDVDInputStreamTV
public:
CDVDInputStreamTV();
virtual ~CDVDInputStreamTV();
- virtual bool Open(const char* strFile, const std::string &content);
+ virtual bool Open(const char* strFile, const std::string &content, bool contentLookup);
virtual void Close();
virtual int Read(uint8_t* buf, int buf_size);
virtual int64_t Seek(int64_t offset, int whence);
diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp
index fd21bc2..721a03f 100644
--- a/xbmc/cores/dvdplayer/DVDPlayer.cpp
+++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp
@@ -724,7 +724,7 @@ bool CDVDPlayer::OpenInputStream()
m_filename = g_mediaManager.TranslateDevicePath("");
}
- m_pInputStream = CDVDFactoryInputStream::CreateInputStream(this, m_filename, m_mimetype);
+ m_pInputStream = CDVDFactoryInputStream::CreateInputStream(this, m_filename, m_mimetype, m_item.ContentLookup());
if(m_pInputStream == NULL)
{
CLog::Log(LOGERROR, "CDVDPlayer::OpenInputStream - unable to create input stream for [%s]", m_filename.c_str());
@@ -733,7 +733,7 @@ bool CDVDPlayer::OpenInputStream()
else
m_pInputStream->SetFileItem(m_item);
- if (!m_pInputStream->Open(m_filename.c_str(), m_mimetype))
+ if (!m_pInputStream->Open(m_filename.c_str(), m_mimetype, m_item.ContentLookup()))
{
CLog::Log(LOGERROR, "CDVDPlayer::OpenInputStream - error opening [%s]", m_filename.c_str());
return false;
diff --git a/xbmc/cores/dvdplayer/DVDSubtitles/DVDSubtitleStream.cpp b/xbmc/cores/dvdplayer/DVDSubtitles/DVDSubtitleStream.cpp
index 5218d01..6f3918f 100644
--- a/xbmc/cores/dvdplayer/DVDSubtitles/DVDSubtitleStream.cpp
+++ b/xbmc/cores/dvdplayer/DVDSubtitles/DVDSubtitleStream.cpp
@@ -41,7 +41,7 @@ bool CDVDSubtitleStream::Open(const string& strFile)
{
CDVDInputStream* pInputStream;
pInputStream = CDVDFactoryInputStream::CreateInputStream(NULL, strFile, "");
- if (pInputStream && pInputStream->Open(strFile.c_str(), ""))
+ if (pInputStream && pInputStream->Open(strFile.c_str(), "", false))
{
static const size_t chunksize = 64 * 1024;
auto_buffer buf;
diff --git a/xbmc/cores/paplayer/DVDPlayerCodec.cpp b/xbmc/cores/paplayer/DVDPlayerCodec.cpp
index 4f9fca2..9f2d714 100644
--- a/xbmc/cores/paplayer/DVDPlayerCodec.cpp
+++ b/xbmc/cores/paplayer/DVDPlayerCodec.cpp
@@ -87,7 +87,8 @@ bool DVDPlayerCodec::Init(const std::string &strFile, unsigned int filecache)
return false;
}
- if (!m_pInputStream->Open(strFileToOpen.c_str(), m_strContentType))
+ // TODO: XXX
+ if (!m_pInputStream->Open(strFileToOpen.c_str(), m_strContentType, true))
{
CLog::Log(LOGERROR, "%s: Error opening file %s", __FUNCTION__, strFileToOpen.c_str());
if (m_pInputStream)
diff --git a/xbmc/storage/MediaManager.cpp b/xbmc/storage/MediaManager.cpp
index bfcb17e..2fe8c3c 100644
--- a/xbmc/storage/MediaManager.cpp
+++ b/xbmc/storage/MediaManager.cpp
@@ -542,7 +542,7 @@ std::string CMediaManager::GetDiskUniqueId(const std::string& devicePath)
CDVDInputStreamNavigator dvdNavigator(NULL);
- dvdNavigator.Open(pathVideoTS.c_str(), "");
+ dvdNavigator.Open(pathVideoTS.c_str(), "", true);
std::string labelString;
dvdNavigator.GetDVDTitleString(labelString);
std::string serialString;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment