本文整理汇总了C++中xfile::CStackDirectory::GetDirectory方法的典型用法代码示例。如果您正苦于以下问题:C++ CStackDirectory::GetDirectory方法的具体用法?C++ CStackDirectory::GetDirectory怎么用?C++ CStackDirectory::GetDirectory使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xfile::CStackDirectory
的用法示例。
在下文中一共展示了CStackDirectory::GetDirectory方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DemuxerToStreamDetails
/* returns true if details have been added */
bool CDVDFileInfo::DemuxerToStreamDetails(CDVDInputStream *pInputStream, CDVDDemux *pDemux, CStreamDetails &details, const std::string &path)
{
bool retVal = false;
details.Reset();
const CURL pathToUrl(path);
for (int iStream=0; iStream<pDemux->GetNrOfStreams(); iStream++)
{
CDemuxStream *stream = pDemux->GetStream(iStream);
if (stream->type == STREAM_VIDEO && !(stream->flags & AV_DISPOSITION_ATTACHED_PIC))
{
CStreamDetailVideo *p = new CStreamDetailVideo();
p->m_iWidth = ((CDemuxStreamVideo *)stream)->iWidth;
p->m_iHeight = ((CDemuxStreamVideo *)stream)->iHeight;
p->m_fAspect = ((CDemuxStreamVideo *)stream)->fAspect;
if (p->m_fAspect == 0.0f)
p->m_fAspect = (float)p->m_iWidth / p->m_iHeight;
pDemux->GetStreamCodecName(iStream, p->m_strCodec);
p->m_iDuration = pDemux->GetStreamLength();
p->m_strStereoMode = ((CDemuxStreamVideo *)stream)->stereo_mode;
// stack handling
if (URIUtils::IsStack(path))
{
CFileItemList files;
XFILE::CStackDirectory stack;
stack.GetDirectory(pathToUrl, files);
// skip first path as we already know the duration
for (int i = 1; i < files.Size(); i++)
{
int duration = 0;
if (CDVDFileInfo::GetFileDuration(files[i]->GetPath(), duration))
p->m_iDuration = p->m_iDuration + duration;
}
}
// finally, calculate seconds
if (p->m_iDuration > 0)
p->m_iDuration = p->m_iDuration / 1000;
details.AddStream(p);
retVal = true;
}
else if (stream->type == STREAM_AUDIO)
{
CStreamDetailAudio *p = new CStreamDetailAudio();
p->m_iChannels = ((CDemuxStreamAudio *)stream)->iChannels;
p->m_strLanguage = stream->language;
pDemux->GetStreamCodecName(iStream, p->m_strCodec);
details.AddStream(p);
retVal = true;
}
else if (stream->type == STREAM_SUBTITLE)
{
CStreamDetailSubtitle *p = new CStreamDetailSubtitle();
p->m_strLanguage = stream->language;
details.AddStream(p);
retVal = true;
}
} /* for iStream */
details.DetermineBestStreams();
#ifdef HAVE_LIBBLURAY
// correct bluray runtime. we need the duration from the input stream, not the demuxer.
if (pInputStream->IsStreamType(DVDSTREAM_TYPE_BLURAY))
{
if(((CDVDInputStreamBluray*)pInputStream)->GetTotalTime() > 0)
{
CStreamDetailVideo* detailVideo = (CStreamDetailVideo*)details.GetNthStream(CStreamDetail::VIDEO, 0);
if (detailVideo)
detailVideo->m_iDuration = ((CDVDInputStreamBluray*)pInputStream)->GetTotalTime() / 1000;
}
}
#endif
return retVal;
}
示例2: GetWithoutUserDetails
CStdString CURL::GetWithoutUserDetails() const
{
CStdString strURL;
if (m_strProtocol.Equals("stack"))
{
CFileItemList items;
CStdString strURL2;
strURL2 = Get();
XFILE::CStackDirectory dir;
dir.GetDirectory(strURL2,items);
vector<CStdString> newItems;
for (int i=0;i<items.Size();++i)
{
CURL url(items[i]->GetPath());
items[i]->SetPath(url.GetWithoutUserDetails());
newItems.push_back(items[i]->GetPath());
}
dir.ConstructStackPath(newItems,strURL);
return strURL;
}
unsigned int sizeneed = m_strProtocol.length()
+ m_strDomain.length()
+ m_strHostName.length()
+ m_strFileName.length()
+ m_strOptions.length()
+ m_strProtocolOptions.length()
+ 10;
strURL.reserve(sizeneed);
if (m_strProtocol == "")
return m_strFileName;
strURL = m_strProtocol;
strURL += "://";
if (m_strHostName != "")
{
if (URIUtils::ProtocolHasParentInHostname(m_strProtocol))
strURL += CURL(m_strHostName).GetWithoutUserDetails();
else
strURL += m_strHostName;
if ( HasPort() )
{
CStdString strPort;
strPort.Format("%i", m_iPort);
strURL += ":";
strURL += strPort;
}
strURL += "/";
}
strURL += m_strFileName;
if( m_strOptions.length() > 0 )
strURL += m_strOptions;
if( m_strProtocolOptions.length() > 0 )
strURL += "|"+m_strProtocolOptions;
return strURL;
}