本文整理汇总了C++中xbmcthreads::EndTime::Set方法的典型用法代码示例。如果您正苦于以下问题:C++ EndTime::Set方法的具体用法?C++ EndTime::Set怎么用?C++ EndTime::Set使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xbmcthreads::EndTime
的用法示例。
在下文中一共展示了EndTime::Set方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: handleZeroconfAnnouncement
void handleZeroconfAnnouncement()
{
#if defined(HAS_ZEROCONF)
static XbmcThreads::EndTime timeout(10000);
if(timeout.IsTimePast())
{
CZeroconf::GetInstance()->ForceReAnnounceService("servers.airplay");
timeout.Set(10000);
}
#endif
}
示例2: PresentRender
void CRenderSystemDX::PresentRender(bool rendered, bool videoLayer)
{
if (!m_bRenderCreated)
return;
if ( rendered
&& ( m_stereoMode == RENDER_STEREO_MODE_INTERLACED
|| m_stereoMode == RENDER_STEREO_MODE_CHECKERBOARD))
{
auto m_pContext = m_deviceResources->GetD3DContext();
// all views prepared, let's merge them before present
ID3D11RenderTargetView *const views[1] = { m_deviceResources->GetBackBufferRTV() };
m_pContext->OMSetRenderTargets(1, views, m_deviceResources->GetDSV());
auto outputSize = m_deviceResources->GetOutputSize();
CRect destRect = { 0.0f, 0.0f, float(outputSize.Width), float(outputSize.Height) };
SHADER_METHOD method = RENDER_STEREO_MODE_INTERLACED == m_stereoMode
? SHADER_METHOD_RENDER_STEREO_INTERLACED_RIGHT
: SHADER_METHOD_RENDER_STEREO_CHECKERBOARD_RIGHT;
SetAlphaBlendEnable(true);
CD3DTexture::DrawQuad(destRect, 0, &m_rightEyeTex, nullptr, method);
CD3DHelper::PSClearShaderResources(m_pContext);
}
// time for decoder that may require the context
{
CSingleLock lock(m_decoderSection);
XbmcThreads::EndTime timer;
timer.Set(5);
while (!m_decodingTimer.IsTimePast() && !timer.IsTimePast())
{
m_decodingEvent.wait(lock, 1);
}
}
PresentRenderImpl(rendered);
}
示例3: Process
void CActiveAESink::Process()
{
Message *msg = NULL;
Protocol *port = NULL;
bool gotMsg;
XbmcThreads::EndTime timer;
m_state = S_TOP_UNCONFIGURED;
m_extTimeout = 1000;
m_bStateMachineSelfTrigger = false;
m_extAppFocused = true;
while (!m_bStop)
{
gotMsg = false;
timer.Set(m_extTimeout);
if (m_bStateMachineSelfTrigger)
{
m_bStateMachineSelfTrigger = false;
// self trigger state machine
StateMachine(msg->signal, port, msg);
if (!m_bStateMachineSelfTrigger)
{
msg->Release();
msg = NULL;
}
continue;
}
// check control port
else if (m_controlPort.ReceiveOutMessage(&msg))
{
gotMsg = true;
port = &m_controlPort;
}
// check data port
else if (m_dataPort.ReceiveOutMessage(&msg))
{
gotMsg = true;
port = &m_dataPort;
}
if (gotMsg)
{
StateMachine(msg->signal, port, msg);
if (!m_bStateMachineSelfTrigger)
{
msg->Release();
msg = NULL;
}
continue;
}
// wait for message
else if (m_outMsgEvent.WaitMSec(m_extTimeout))
{
m_extTimeout = timer.MillisLeft();
continue;
}
// time out
else
{
msg = m_controlPort.GetMessage();
msg->signal = CSinkControlProtocol::TIMEOUT;
port = 0;
// signal timeout to state machine
StateMachine(msg->signal, port, msg);
if (!m_bStateMachineSelfTrigger)
{
msg->Release();
msg = NULL;
}
}
}
}
示例4: PlayFile
int CUPnPPlayer::PlayFile(const CFileItem& file, const CPlayerOptions& options, CGUIDialogBusy*& dialog, XbmcThreads::EndTime& timeout)
{
CFileItem item(file);
NPT_Reference<CThumbLoader> thumb_loader;
NPT_Reference<PLT_MediaObject> obj;
NPT_String path(file.GetPath().c_str());
NPT_String tmp, resource;
EMediaControllerQuirks quirks = EMEDIACONTROLLERQUIRKS_NONE;
NPT_CHECK_POINTER_LABEL_SEVERE(m_delegate, failed);
if (file.IsVideoDb())
thumb_loader = NPT_Reference<CThumbLoader>(new CVideoThumbLoader());
else if (item.IsMusicDb())
thumb_loader = NPT_Reference<CThumbLoader>(new CMusicThumbLoader());
obj = BuildObject(item, path, false, thumb_loader, NULL, CUPnP::GetServer(), UPnPPlayer);
if(obj.IsNull()) goto failed;
NPT_CHECK_LABEL_SEVERE(PLT_Didl::ToDidl(*obj, "", tmp), failed_todidl);
tmp.Insert(didl_header, 0);
tmp.Append(didl_footer);
quirks = GetMediaControllerQuirks(m_delegate->m_device.AsPointer());
if (quirks & EMEDIACONTROLLERQUIRKS_X_MKV)
{
for (NPT_Cardinal i=0; i< obj->m_Resources.GetItemCount(); i++) {
if (obj->m_Resources[i].m_ProtocolInfo.GetContentType().Compare("video/x-matroska") == 0) {
CLog::Log(LOGDEBUG, "CUPnPPlayer::PlayFile(%s): applying video/x-mkv quirk", file.GetPath().c_str());
NPT_String protocolInfo = obj->m_Resources[i].m_ProtocolInfo.ToString();
protocolInfo.Replace(":video/x-matroska:", ":video/x-mkv:");
obj->m_Resources[i].m_ProtocolInfo = PLT_ProtocolInfo(protocolInfo);
}
}
}
/* The resource uri's are stored in the Didl. We must choose the best resource
* for the playback device */
NPT_Cardinal res_index;
NPT_CHECK_LABEL_SEVERE(m_control->FindBestResource(m_delegate->m_device, *obj, res_index), failed_findbestresource);
// get the transport info to evaluate the TransportState to be able to
// determine whether we first need to call Stop()
timeout.Set(timeout.GetInitialTimeoutValue());
NPT_CHECK_LABEL_SEVERE(m_control->GetTransportInfo(m_delegate->m_device
, m_delegate->m_instance
, m_delegate), failed_gettransportinfo);
NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_traevnt, timeout, dialog), failed_gettransportinfo);
if (m_delegate->m_trainfo.cur_transport_state != "NO_MEDIA_PRESENT" &&
m_delegate->m_trainfo.cur_transport_state != "STOPPED")
{
timeout.Set(timeout.GetInitialTimeoutValue());
NPT_CHECK_LABEL_SEVERE(m_control->Stop(m_delegate->m_device
, m_delegate->m_instance
, m_delegate), failed_stop);
NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_resevent, timeout, dialog), failed_stop);
NPT_CHECK_LABEL_SEVERE(m_delegate->m_resstatus, failed_stop);
}
timeout.Set(timeout.GetInitialTimeoutValue());
NPT_CHECK_LABEL_SEVERE(m_control->SetAVTransportURI(m_delegate->m_device
, m_delegate->m_instance
, obj->m_Resources[res_index].m_Uri
, (const char*)tmp
, m_delegate), failed_setavtransporturi);
NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_resevent, timeout, dialog), failed_setavtransporturi);
NPT_CHECK_LABEL_SEVERE(m_delegate->m_resstatus, failed_setavtransporturi);
timeout.Set(timeout.GetInitialTimeoutValue());
NPT_CHECK_LABEL_SEVERE(m_control->Play(m_delegate->m_device
, m_delegate->m_instance
, "1"
, m_delegate), failed_play);
NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_resevent, timeout, dialog), failed_play);
NPT_CHECK_LABEL_SEVERE(m_delegate->m_resstatus, failed_play);
/* wait for PLAYING state */
timeout.Set(timeout.GetInitialTimeoutValue());
do {
NPT_CHECK_LABEL_SEVERE(m_control->GetTransportInfo(m_delegate->m_device
, m_delegate->m_instance
, m_delegate), failed_waitplaying);
{ CSingleLock lock(m_delegate->m_section);
if(m_delegate->m_trainfo.cur_transport_state == "PLAYING"
|| m_delegate->m_trainfo.cur_transport_state == "PAUSED_PLAYBACK")
break;
if(m_delegate->m_trainfo.cur_transport_state == "STOPPED"
&& m_delegate->m_trainfo.cur_transport_status != "OK")
{
CLog::Log(LOGERROR, "UPNP: CUPnPPlayer::OpenFile - remote player signalled error %s", file.GetPath().c_str());
return NPT_FAILURE;
}
}
//.........这里部分代码省略.........
示例5: OpenFile
bool CUPnPPlayer::OpenFile(const CFileItem& file, const CPlayerOptions& options)
{
CFileItem item(file);
NPT_Reference<CThumbLoader> thumb_loader;
NPT_Reference<PLT_MediaObject> obj;
NPT_String path(file.GetPath().c_str());
NPT_String tmp, resource;
XbmcThreads::EndTime timeout;
CGUIDialogBusy* dialog = NULL;
NPT_CHECK_POINTER_LABEL_SEVERE(m_delegate, failed);
timeout.Set(10000);
/* if no path we want to attach to a already playing player */
if(path != "") {
if (file.IsVideoDb())
thumb_loader = NPT_Reference<CThumbLoader>(new CVideoThumbLoader());
else if (item.IsMusicDb())
thumb_loader = NPT_Reference<CThumbLoader>(new CMusicThumbLoader());
obj = BuildObject(item, path, false, thumb_loader, NULL, CUPnP::GetServer());
if(obj.IsNull()) goto failed;
NPT_CHECK_LABEL_SEVERE(PLT_Didl::ToDidl(*obj, "", tmp), failed);
tmp.Insert(didl_header, 0);
tmp.Append(didl_footer);
/* The resource uri's are stored in the Didl. We must choose the best resource
* for the playback device */
NPT_Cardinal res_index;
NPT_CHECK_LABEL_SEVERE(m_control->FindBestResource(m_delegate->m_device, *obj, res_index), failed);
/* dlna specifies that a return code of 705 should be returned
* if TRANSPORT_STATE is not STOPPED or NO_MEDIA_PRESENT */
NPT_CHECK_LABEL_SEVERE(m_control->Stop(m_delegate->m_device
, m_delegate->m_instance
, m_delegate), failed);
NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_resevent, timeout, dialog), failed);
NPT_CHECK_LABEL_SEVERE(m_delegate->m_resstatus, failed);
NPT_CHECK_LABEL_SEVERE(m_control->SetAVTransportURI(m_delegate->m_device
, m_delegate->m_instance
, obj->m_Resources[res_index].m_Uri
, (const char*)tmp
, m_delegate), failed);
NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_resevent, timeout, dialog), failed);
NPT_CHECK_LABEL_SEVERE(m_delegate->m_resstatus, failed);
NPT_CHECK_LABEL_SEVERE(m_control->Play(m_delegate->m_device
, m_delegate->m_instance
, "1"
, m_delegate), failed);
NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_resevent, timeout, dialog), failed);
NPT_CHECK_LABEL_SEVERE(m_delegate->m_resstatus, failed);
}
/* wait for PLAYING state */
do {
NPT_CHECK_LABEL_SEVERE(m_control->GetTransportInfo(m_delegate->m_device
, m_delegate->m_instance
, m_delegate), failed);
{ CSingleLock lock(m_delegate->m_section);
if(m_delegate->m_trainfo.cur_transport_state == "PLAYING"
|| m_delegate->m_trainfo.cur_transport_state == "PAUSED_PLAYBACK")
break;
if(m_delegate->m_trainfo.cur_transport_state == "STOPPED"
&& m_delegate->m_trainfo.cur_transport_status != "OK")
{
CLog::Log(LOGERROR, "UPNP: CUPnPPlayer::OpenFile - remote player signalled error %s", file.GetPath().c_str());
goto failed;
}
}
NPT_CHECK_LABEL_SEVERE(WaitOnEvent(m_delegate->m_traevnt, timeout, dialog), failed);
} while(!timeout.IsTimePast());
if(options.starttime > 0)
{
/* many upnp units won't load file properly until after play (including xbmc) */
NPT_CHECK_LABEL(m_control->Seek(m_delegate->m_device
, m_delegate->m_instance
, "REL_TIME"
, PLT_Didl::FormatTimeStamp((NPT_UInt32)options.starttime)
, m_delegate), failed);
}
m_started = true;
m_callback.OnPlayBackStarted();
NPT_CHECK_LABEL_SEVERE(m_control->GetPositionInfo(m_delegate->m_device
, m_delegate->m_instance
, m_delegate), failed);
NPT_CHECK_LABEL_SEVERE(m_control->GetMediaInfo(m_delegate->m_device
//.........这里部分代码省略.........