Ejemplo n.º 1
0
void Timer::AddTimeStamp(unsigned int id)
{
	std::map<unsigned int, double>::iterator it;
	if ((it = m_timeStamps.find(id)) != m_timeStamps.end())
	{
		it->second = GetTotalTime();
	}
	else
	{
		m_timeStamps.emplace(id, GetTotalTime());
	}
}
Ejemplo n.º 2
0
void PAPlayer::Seek(bool bPlus, bool bLargeStep, bool bChapterOverride)
{
  if (!CanSeek()) return;

  __int64 seek;
  if (g_advancedSettings.m_musicUseTimeSeeking && GetTotalTime() > 2 * g_advancedSettings.m_musicTimeSeekForwardBig)
  {
    if (bLargeStep)
      seek = bPlus ? g_advancedSettings.m_musicTimeSeekForwardBig : g_advancedSettings.m_musicTimeSeekBackwardBig;
    else
      seek = bPlus ? g_advancedSettings.m_musicTimeSeekForward : g_advancedSettings.m_musicTimeSeekBackward;
    seek *= 1000;
    seek += GetTime();
  }
  else
  {
    float percent;
    if (bLargeStep)
      percent = bPlus ? (float)g_advancedSettings.m_musicPercentSeekForwardBig : (float)g_advancedSettings.m_musicPercentSeekBackwardBig;
    else
      percent = bPlus ? (float)g_advancedSettings.m_musicPercentSeekForward : (float)g_advancedSettings.m_musicPercentSeekBackward;
    seek = (__int64)(GetTotalTime64() * (GetPercentage() + percent) / 100);
  }

  SeekTime(seek);
}
Ejemplo n.º 3
0
void Synchronizer::SynchronizerThread() {
	try {

		Logger::LogInfo("[Synchronizer::SynchronizerThread] Synchronizer thread started.");

		while(!m_should_stop) {

			{
				SharedLock lock(&m_shared_data);
				FlushBuffers(lock.get());
				if(lock->m_sync_diagram != NULL) {
					double time_in = (double) hrt_time_micro() * 1.0e-6;
					double time_out = (double) GetTotalTime(lock.get()) * 1.0e-6;
					lock->m_sync_diagram->SetCurrentTime(0, time_in);
					lock->m_sync_diagram->SetCurrentTime(1, time_in);
					lock->m_sync_diagram->SetCurrentTime(2, time_out);
					lock->m_sync_diagram->SetCurrentTime(3, time_out);
					lock->m_sync_diagram->Update();
				}
			}

			usleep(10000);

		}

		Logger::LogInfo("[Synchronizer::SynchronizerThread] Synchronizer thread stopped.");

	} catch(const std::exception& e) {
		m_error_occurred = true;
		Logger::LogError(QString("[Synchronizer::SynchronizerThread] Exception '") + e.what() + "' in synchronizer thread.");
	} catch(...) {
		m_error_occurred = true;
		Logger::LogError("[Synchronizer::SynchronizerThread] Unknown exception in synchronizer thread.");
	}
}
	double Get20MoveTime()
	{
		for (unsigned int x = 0; x < lengths.size(); x++)
			if (lengths[x] >= 20)
				return std::accumulate(times.begin(), times.begin()+1+x, 0.0);
		return GetTotalTime();
	}
Ejemplo n.º 5
0
void CDummyVideoPlayer::Seek(bool bPlus, bool bLargeStep, bool bChapterOverride)
{
  if (g_advancedSettings.m_videoUseTimeSeeking && GetTotalTime() > 2000*g_advancedSettings.m_videoTimeSeekForwardBig)
  {
    int seek = 0;
    if (bLargeStep)
      seek = bPlus ? g_advancedSettings.m_videoTimeSeekForwardBig : g_advancedSettings.m_videoTimeSeekBackwardBig;
    else
      seek = bPlus ? g_advancedSettings.m_videoTimeSeekForward : g_advancedSettings.m_videoTimeSeekBackward;
    // do the seek
    SeekTime(GetTime() + seek * 1000);
  }
  else
  {
    float percent = GetPercentage();
    if (bLargeStep)
      percent += bPlus ? g_advancedSettings.m_videoPercentSeekForwardBig : g_advancedSettings.m_videoPercentSeekBackwardBig;
    else
      percent += bPlus ? g_advancedSettings.m_videoPercentSeekForward : g_advancedSettings.m_videoPercentSeekBackward;

    if (percent >= 0 && percent <= 100)
    {
      // should be modified to seektime
      SeekPercentage(percent);
    }
  }
}
Ejemplo n.º 6
0
float CUPnPPlayer::GetPercentage()
{
  int64_t tot = GetTotalTime();
  if(tot)
    return 100.0f * GetTime() / tot;
  else
    return 0.0f;
}
Ejemplo n.º 7
0
void CAVPlayer::SeekForward()
{
    //int iPos = GetPos();
    //SeekTo((int)ceil(iPos * 1.1));

    // 一次快退5秒
    if (m_pVLC_Player)
    {
        libvlc_time_t i_time = libvlc_media_player_get_time(m_pVLC_Player) + 5000;

        if (i_time > GetTotalTime())
        {
            i_time = GetTotalTime();
        }

        libvlc_media_player_set_time(m_pVLC_Player, i_time);
    }
}
Ejemplo n.º 8
0
void Render::UpdateFrameTime() {
  double totalTime = GetTotalTime();
  _frameTime = totalTime - _lastTotalTime;
  _lastTotalTime = totalTime;

  if(_frameTime > 0.1f) {
    _frameTime = 0.1f; // below 10fps, leak real time
  }
}
Ejemplo n.º 9
0
float CDummyVideoPlayer::GetPercentage()
{
  int64_t iTotalTime = GetTotalTime();

  if (iTotalTime != 0)
  {
    return GetTime() * 100 / (float)iTotalTime;
  }

  return 0.0f;
}
Ejemplo n.º 10
0
float CApplicationPlayer::GetPercentage() const
{
  std::shared_ptr<IPlayer> player = GetInternal();
  if (player)
  {
    int64_t iTotalTime = GetTotalTime();

    if (!iTotalTime)
      return 0.0f;
    return GetTime() * 100 / static_cast<float>(iTotalTime);
  }
  else
    return 0.0;
}
Ejemplo n.º 11
0
void BattleUI::InitHeroUI()
{
    ArmatureDataManager::getInstance()->addArmatureFileInfo("Texiao.ExportJson");
    
    auto layout_Bottom = m_RootWidget->getChildByName<Layout*>("Layout_Bottom");
    
    auto text_HeroText = layout_Bottom->getChildByName<Text*>("Text_HeroText");
    
    auto langId = (int)LanguageIdEnum::SelfLangId;
    auto langText = MultiLanguage::getInstance()->GetText(langId);
    text_HeroText->setString(langText);
    
    auto lbar_HeroHp = layout_Bottom->getChildByName<LoadingBar*>("LBar_HeroHp");
    lbar_HeroHp->setPercent(100);
    
    
    //自动或手动控制战斗
    auto btn_Auto = layout_Bottom->getChildByName<Button*>("Btn_Auto");
    auto btn_UnAuto = layout_Bottom->getChildByName<Button*>("Btn_UnAuto");
    if (BattleData::getInstance()->m_HeroAutoAttack)
    {
        btn_Auto->setVisible(true); btn_UnAuto->setVisible(false);
        
    }else
    {
        btn_Auto->setVisible(false); btn_UnAuto->setVisible(true);
    }
    
    langId = (int)LanguageIdEnum::AutoAttackLangId;
    langText = MultiLanguage::getInstance()->GetText(langId);
    btn_Auto->setTitleText(langText); btn_UnAuto->setTitleText(langText);
    btn_Auto->addClickEventListener([=](Ref* sender)
     {
         btn_Auto->setVisible(false);
         btn_UnAuto->setVisible(true);
         BattleData::getInstance()->m_HeroAutoAttack = false;
         UserData::getInstance()->Update_Value(UserDataEnum::AutoAttack, Value(0));
     });
    
    btn_UnAuto->addClickEventListener([=](Ref* sender)
    {
        btn_Auto->setVisible(true);
        btn_UnAuto->setVisible(false);
        for (auto pb : *m_VecProgressBar) pb->Resume();
        BattleData::getInstance()->m_HeroAutoAttack = true;
        UserData::getInstance()->Update_Value(UserDataEnum::AutoAttack, Value(1) );
    });
    
    auto btn_Bread = layout_Bottom->getChildByName<Button*>("Btn_Bread");
    auto text_BreadName = btn_Bread->getChildByName<Text*>("Text_BreadNAME");
    langId = (int)LanguageIdEnum::BreadLangId;
    langText = MultiLanguage::getInstance()->GetText(langId);
    text_BreadName->setString(langText);
    
    auto text_Bread = btn_Bread->getChildByName<Text*>("Text_Bread");
    
    
    auto bread_Num = 0;
    auto breadData = UserData::getInstance()->Get_MVI_Value(UserDataEnum::BackPack, (int)CfgIdEnum::BreadId);
    if(breadData != Value::Null) bread_Num = breadData.asInt();
    
    text_Bread->setString(StringUtils::format("%d", bread_Num));
    
    auto lbar_Bread = btn_Bread->getChildByName<LoadingBar*>("LBar_Bread");
    
    string pbName = "BreadHpSchedule";
    auto progressBar = new ProgressBar();
    progressBar->SetTotalTime(3); //3秒吃一个面包
    progressBar->SetScheduleName(pbName);
    progressBar->SetLoadingBar(lbar_Bread);
    
    m_VecProgressBar->push_back(progressBar);
    
    progressBar->SetCallBack([this, progressBar]()
     {
         progressBar->Restart();
         progressBar->GetLoadingBar()->setPercent(0);
         m_RootWidget->unschedule(progressBar->GetScheduleName());
     });
    
    
    btn_Bread->addClickEventListener([=](Ref* sender)
     {

         auto bread_Num = 0;
         auto breadData = UserData::getInstance()->Get_MVI_Value(UserDataEnum::BackPack, (int)CfgIdEnum::BreadId);
         if(breadData != Value::Null) bread_Num = breadData.asInt();

         if (bread_Num == 0)
         {
             auto langId = (int)LanguageIdEnum::BreadNotEnoughId;
             auto langText = MultiLanguage::getInstance()->GetText(langId);
             MoveText::getInstance()->AddDefaultTextData(m_RootWidget, langText);
         }else
         {
             if(progressBar->GetRemainTime() == progressBar->GetTotalTime())
             {
                 auto bread_Num = UserData::getInstance()->Update_VMI_Fun(
                                  UserDataEnum::BackPack, (int)CfgIdEnum::BreadId, -1);
                 if (bread_Num >= 0)
                 {
                     text_Bread->setString(StringUtils::format("%d", bread_Num));
                     //回血
                     BattleData::getInstance()->BreadRevertHp();
                     
                     m_RootWidget->schedule([this, progressBar](float f)
                        {
                            progressBar->Update(f);
                        }, progressBar->GetScheduleName());
                 }
             }
             AchievementSystem::getInstance()->CheckAchievement(UserEventType::BattleEatBread, 1);
         }
     });
    
    vector<pair<int, int> >heroVec;
    BattlePubUI::getInstance()->GetBackPackHero(&heroVec);
    auto idx = 0; //创建英雄技能
    for (auto heroData : heroVec)
    {
        auto heroId = heroData.first;
        auto heroNum = heroData.second;
        for (auto i = 0; i < heroNum ; i++)
        {
            CreateHeroEvent(heroId, idx);  idx++;
        }
    }

    auto talentTeamTotalHp = BattleData::getInstance()->m_TalentTeamTotalHp;
    auto text_HeroHp = layout_Bottom->getChildByName<Text*>("Text_HeroHp");
    text_HeroHp->setString(StringUtils::format("%d/%d", talentTeamTotalHp, talentTeamTotalHp));
    
    BattleData::getInstance()->m_HeroHpLBar = lbar_HeroHp;
    BattleData::getInstance()->m_TextHeroHp = text_HeroHp;

}
Ejemplo n.º 12
0
//英雄显示位置
void BattleUI::CreateHeroEvent(int cfgId, int idx)
{

    auto layout_Bottom = m_RootWidget->getChildByName<Layout*>("Layout_Bottom");
    
    string btn_Name = StringUtils::format("Btn_Skill%d", idx);
    auto Btn_Hero = layout_Bottom->getChildByName<Button*>(btn_Name);
    Btn_Hero->setVisible(true);
    
    auto lbar_Name = StringUtils::format("LBar_State%d", idx);
    auto lbar_State = Btn_Hero->getChildByName<LoadingBar*>(lbar_Name);
    lbar_State->setPercent(100);
    
    CfgDataRow dataRow(cfgId);
    auto textName = StringUtils::format("Text_Name%d", idx);
    
    auto text_Name = Btn_Hero->getChildByName<Text*>(textName);
    
    auto skillId = dataRow.GetValue(CfgField::SkillID_V)->asValueVector().begin()->asInt();
    CfgDataRow skillDataRow(skillId);
    auto langId = skillDataRow.GetValue(CfgField::Name)->asInt();
    auto langText = MultiLanguage::getInstance()->GetText(langId);
    text_Name->setString(langText);
    
    auto attack_Speed = dataRow.GetValue(CfgField::Spd_F)->asFloat();
    attack_Speed = 10 / attack_Speed;
    
    Armature* armature = CreateHeroArmature(cfgId);
    
    string pbName = StringUtils::format("HeroSkillSchedule%d", idx);
    auto playName = skillDataRow.GetValue(CfgField::SkillAtksfxID_S)->asString();
    
    auto isGetKong = UserData::getInstance()->Check_VI_Fun(UserDataEnum::TalentList, Value((int)CfgIdEnum::TalentEliminateCD));
    auto progressBar = new ProgressBar();
    progressBar->SetScheduleName(pbName);
    progressBar->SetTotalTime(attack_Speed, isGetKong);
    progressBar->SetLoadingBar(lbar_State);
    
    m_VecProgressBar->push_back(progressBar);
    
    progressBar->SetCallBack([=]()
       {
           progressBar->Restart();
           if (armature->getAnimation()->getAnimationData()->getMovement(playName) == nullptr)
           {
               CCLOGERROR("Armature:%s, not %s", armature->getName().c_str(), playName.c_str());
           }else if(m_IsPlayAnim)
           {
               armature->setVisible(true);
               armature->getAnimation()->play(playName);
           }
           
           if (m_MonsterArmature != nullptr && m_IsPlayAnim)
           {
               m_MonsterArmature->getAnimation()->play(m_Beating);
           }
           
           auto attackResult = BattleData::getInstance()->HeroAttack(cfgId);
           if (attackResult == -1)
           {
               BattleFinish(true);

           }else if(attackResult > 0)
           {
               BufferEffect(attackResult);
           }

           if (!BattleData::getInstance()->m_HeroAutoAttack)
           {
               m_RootWidget->unschedule(pbName);
           }
       });
    
    Btn_Hero->addClickEventListener([this, progressBar, pbName](Ref* sender)
        {
            if(progressBar->GetRemainTime() == progressBar->GetTotalTime())
            {
                m_RootWidget->schedule([this, progressBar](float f)
                   {
                       progressBar->Update(f);
                       
                   }, pbName);
            }
        });
    
    m_RootWidget->schedule([this, progressBar](float f)
       {
           progressBar->Update(f);
           
       }, pbName);
    
    if (BattleData::getInstance()->m_HeroAutoAttack)
    {
        progressBar->Resume();
    }
    
    UIUtils::getInstance()->showProperImg(Btn_Hero, cfgId);
    
}
Ejemplo n.º 13
0
void CAMLPlayer::Seek(bool bPlus, bool bLargeStep)
{
  // force updated to m_elapsed_ms, m_duration_ms.
  GetStatus();

  CSingleLock lock(m_aml_csection);

  // try chapter seeking first, chapter_index is ones based.
  int chapter_index = GetChapter();
  if (bLargeStep)
  {
    // seek to next chapter
    if (bPlus && (chapter_index < GetChapterCount()))
    {
      SeekChapter(chapter_index + 1);
      return;
    }
    // seek to previous chapter
    if (!bPlus && chapter_index)
    {
      SeekChapter(chapter_index - 1);
      return;
    }
  }

  int64_t seek_ms;
  if (g_advancedSettings.m_videoUseTimeSeeking)
  {
    if (bLargeStep && (GetTotalTime() > (2 * g_advancedSettings.m_videoTimeSeekForwardBig)))
      seek_ms = bPlus ? g_advancedSettings.m_videoTimeSeekForwardBig : g_advancedSettings.m_videoTimeSeekBackwardBig;
    else
      seek_ms = bPlus ? g_advancedSettings.m_videoTimeSeekForward    : g_advancedSettings.m_videoTimeSeekBackward;
    // convert to milliseconds
    seek_ms *= 1000;
    seek_ms += m_elapsed_ms;
  }
  else
  {
    float percent;
    if (bLargeStep)
      percent = bPlus ? g_advancedSettings.m_videoPercentSeekForwardBig : g_advancedSettings.m_videoPercentSeekBackwardBig;
    else
      percent = bPlus ? g_advancedSettings.m_videoPercentSeekForward    : g_advancedSettings.m_videoPercentSeekBackward;
    percent /= 100.0f;
    percent += (float)m_elapsed_ms/(float)m_duration_ms;
    // convert to milliseconds
    seek_ms = m_duration_ms * percent;
  }

  // handle stacked videos, dvdplayer does it so we do it too.
  if (g_application.CurrentFileItem().IsStack() &&
    (seek_ms > m_duration_ms || seek_ms < 0))
  {
    CLog::Log(LOGDEBUG, "CAMLPlayer::Seek: In mystery code, what did I do");
    g_application.SeekTime((seek_ms - m_elapsed_ms) * 0.001 + g_application.GetTime());
    // warning, don't access any object variables here as
    // the object may have been destroyed
    return;
  }

  if (seek_ms <= 1000)
    seek_ms = 1000;

  if (seek_ms > m_duration_ms)
    seek_ms = m_duration_ms;

  // do seek here
  g_infoManager.SetDisplayAfterSeek(100000);
  SeekTime(seek_ms);
  m_callback.OnPlayBackSeek((int)seek_ms, (int)(seek_ms - m_elapsed_ms));
  g_infoManager.SetDisplayAfterSeek();
}
Ejemplo n.º 14
0
bool CAMLPlayer::CanSeek()
{
  return GetTotalTime() > 0;
}
Ejemplo n.º 15
0
void CDummyVideoPlayer::SeekPercentage(float iPercent)
{
  __int64 iTotalMsec = GetTotalTime() * 1000;
  __int64 iTime = (__int64)(iTotalMsec * iPercent / 100);
  SeekTime(iTime);
}
FText FBPProfilerStat::GetTotalTimeText() const
{
	// Covert back up to seconds for total time.
	return FText::AsNumber(GetTotalTime(), &SBlueprintProfilerView::GetNumberFormat());
}
Ejemplo n.º 17
0
bool COggStream::IsFinished()
{
	return !Valid() || (GetPlayTime() >= GetTotalTime());
}
Ejemplo n.º 18
0
int64_t Synchronizer::GetTotalTime() {
	SharedLock lock(&m_shared_data);
	return GetTotalTime(lock.get());
}
Ejemplo n.º 19
0
void CUPnPPlayer::SeekPercentage(float percent)
{
  int64_t tot = GetTotalTime();
  if (tot)
    SeekTime((int64_t)(tot * percent / 100));
}
Ejemplo n.º 20
0
void CGUIControlProfilerItem::SaveToXML(TiXmlElement *parent)
{
  TiXmlElement *xmlControl = new TiXmlElement("control");
  parent->LinkEndChild(xmlControl);

  const char *lpszType = NULL;
  switch (m_ControlType)
  {
  case CGUIControl::GUICONTROL_BUTTON:
    lpszType = "button"; break;
  case CGUIControl::GUICONTROL_CHECKMARK:
    lpszType = "checkmark"; break;
  case CGUIControl::GUICONTROL_FADELABEL:
    lpszType = "fadelabel"; break;
  case CGUIControl::GUICONTROL_IMAGE:
  case CGUIControl::GUICONTROL_BORDEREDIMAGE:
    lpszType = "image"; break;
  case CGUIControl::GUICONTROL_LARGE_IMAGE:
    lpszType = "largeimage"; break;
  case CGUIControl::GUICONTROL_LABEL:
    lpszType = "label"; break;
  case CGUIControl::GUICONTROL_LISTGROUP:
    lpszType = "group"; break;
  case CGUIControl::GUICONTROL_PROGRESS:
    lpszType = "progress"; break;
  case CGUIControl::GUICONTROL_RADIO:
    lpszType = "radiobutton"; break;
  case CGUIControl::GUICONTROL_RSS:
    lpszType = "rss"; break;
  case CGUIControl::GUICONTROL_SELECTBUTTON:
    lpszType = "selectbutton"; break;
  case CGUIControl::GUICONTROL_SLIDER:
    lpszType = "slider"; break;
  case CGUIControl::GUICONTROL_SETTINGS_SLIDER:
    lpszType = "sliderex"; break;
  case CGUIControl::GUICONTROL_SPIN:
    lpszType = "spincontrol"; break;
  case CGUIControl::GUICONTROL_SPINEX:
    lpszType = "spincontrolex"; break;
  case CGUIControl::GUICONTROL_TEXTBOX:
    lpszType = "textbox"; break;
  case CGUIControl::GUICONTROL_TOGGLEBUTTON:
    lpszType = "togglebutton"; break;
  case CGUIControl::GUICONTROL_VIDEO:
    lpszType = "videowindow"; break;
  case CGUIControl::GUICONTROL_MOVER:
    lpszType = "mover"; break;
  case CGUIControl::GUICONTROL_RESIZE:
    lpszType = "resize"; break;
  case CGUIControl::GUICONTROL_EDIT:
    lpszType = "edit"; break;
  case CGUIControl::GUICONTROL_VISUALISATION:
    lpszType = "visualisation"; break;
  case CGUIControl::GUICONTROL_MULTI_IMAGE:
    lpszType = "multiimage"; break;
  case CGUIControl::GUICONTROL_GROUP:
    lpszType = "group"; break;
  case CGUIControl::GUICONTROL_GROUPLIST:
    lpszType = "grouplist"; break;
  case CGUIControl::GUICONTROL_SCROLLBAR:
    lpszType = "scrollbar"; break;
  case CGUIControl::GUICONTROL_LISTLABEL:
    lpszType = "label"; break;
  case CGUIControl::GUICONTROL_MULTISELECT:
    lpszType = "multiselect"; break;
  case CGUIControl::GUICONTAINER_LIST:
    lpszType = "list"; break;
  case CGUIControl::GUICONTAINER_WRAPLIST:
    lpszType = "wraplist"; break;
  case CGUIControl::GUICONTAINER_FIXEDLIST:
    lpszType = "fixedlist"; break;
  case CGUIControl::GUICONTAINER_PANEL:
    lpszType = "panel"; break;
  //case CGUIControl::GUICONTROL_UNKNOWN:
  default:
    break;
  }

  if (lpszType)
    xmlControl->SetAttribute("type", lpszType);
  if (m_controlID != 0)
  {
    CStdString str;
    str.Format("%u", m_controlID);
    xmlControl->SetAttribute("id", str.c_str());
  }

  float pct = (float)GetTotalTime() / (float)m_pProfiler->GetTotalTime();
  if (pct > 0.01f)
  {
    CStdString str;
    str.Format("%.0f", pct * 100.0f);
    xmlControl->SetAttribute("percent", str.c_str());
  }

  if (!m_strDescription.IsEmpty())
  {
    TiXmlElement *elem = new TiXmlElement("description");
    xmlControl->LinkEndChild(elem);
    TiXmlText *text = new TiXmlText(m_strDescription.c_str());
    elem->LinkEndChild(text);
  }

  // Note time is stored in 1/100 milliseconds but reported in ms
  unsigned int vis = m_visTime / 100;
  unsigned int rend = m_renderTime / 100;
  if (vis || rend)
  {
    CStdString val;
    TiXmlElement *elem = new TiXmlElement("rendertime");
    xmlControl->LinkEndChild(elem);
    val.Format("%u", rend);
    TiXmlText *text = new TiXmlText(val.c_str());
    elem->LinkEndChild(text);

    elem = new TiXmlElement("visibletime");
    xmlControl->LinkEndChild(elem);
    val.Format("%u", vis);
    text = new TiXmlText(val.c_str());
    elem->LinkEndChild(text);
  }

  if (m_vecChildren.size())
  {
    TiXmlElement *xmlChilds = new TiXmlElement("children");
    xmlControl->LinkEndChild(xmlChilds);
    const unsigned int dwSize = m_vecChildren.size();
    for (unsigned int i=0; i<dwSize; ++i)
      m_vecChildren[i]->SaveToXML(xmlChilds);
  }
}
Ejemplo n.º 21
0
	void SourceObject::updateTotalTime ()
	{
		emit totalTimeChanged (GetTotalTime ());
	}
Ejemplo n.º 22
0
void CDummyVideoPlayer::SeekPercentage(float iPercent)
{
  int64_t iTime = (int64_t)(GetTotalTime() * iPercent / 100);
  SeekTime(iTime);
}
Ejemplo n.º 23
0
bool CDummyVideoPlayer::CanSeek()
{
  return GetTotalTime() > 0;
}