当前位置: 首页>>代码示例>>C++>>正文


C++ safe_ptr::last_frame方法代码示例

本文整理汇总了C++中safe_ptr::last_frame方法的典型用法代码示例。如果您正苦于以下问题:C++ safe_ptr::last_frame方法的具体用法?C++ safe_ptr::last_frame怎么用?C++ safe_ptr::last_frame使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在safe_ptr的用法示例。


在下文中一共展示了safe_ptr::last_frame方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: disable_audio

	safe_ptr<basic_frame> receive(int hints)
	{		
		try
		{
			if(is_paused_)
				return disable_audio(foreground_->last_frame());
		
			auto frame = receive_and_follow(foreground_, hints);
			if(frame == core::basic_frame::late())
				return foreground_->last_frame();

			auto frames_left = static_cast<int64_t>(foreground_->nb_frames()) - static_cast<int64_t>(++frame_number_) - static_cast<int64_t>(auto_play_delta_);
			if(auto_play_delta_ > -1 && frames_left < 1)
			{
				play();
				return receive(hints);
			}
				
			return frame;
		}
		catch(...)
		{
			CASPAR_LOG_CURRENT_EXCEPTION();
			stop();
			return core::basic_frame::empty();
		}
	}
开发者ID:Mistobaan,项目名称:CasparCG,代码行数:27,代码来源:layer.cpp

示例2: disable_audio

	safe_ptr<basic_frame> receive()
	{		
		try
		{
			if(is_paused_)
				return disable_audio(foreground_->last_frame());
		
			auto frame = receive_and_follow(foreground_, frame_producer::NO_HINT);
			if(frame == core::basic_frame::late())
				return foreground_->last_frame();

			auto frames_left = foreground_->nb_frames() - (++frame_number_) - auto_play_delta_;
			if(auto_play_delta_ > -1 && frames_left < 1)
			{
				play();
				return receive();
			}
				
			return frame;
		}
		catch(...)
		{
			CASPAR_LOG_CURRENT_EXCEPTION();
			stop();
			return core::basic_frame::empty();
		}
	}
开发者ID:,项目名称:,代码行数:27,代码来源:

示例3: disable_audio

	safe_ptr<basic_frame> receive(int hints)
	{		
		try
		{
			monitor_subject_ << monitor::message("/paused") % is_paused_;

			if(is_paused_)
			{
				if(foreground_->last_frame() == basic_frame::empty())
					foreground_->receive(frame_producer::NO_HINT);

				return disable_audio(foreground_->last_frame());
			}

			auto foreground = foreground_;

			auto frame = receive_and_follow(foreground, hints);

			if(foreground != foreground_)
				set_foreground(foreground);

			if(frame == core::basic_frame::late())
				return foreground_->last_frame();

			auto frames_left = static_cast<int64_t>(foreground_->nb_frames()) - static_cast<int64_t>(++frame_number_) - static_cast<int64_t>(auto_play_delta_);
			if(auto_play_delta_ > -1 && frames_left < 1)
			{
				play();
				return receive(hints);
			}
				
			return frame;
		}
		catch(...)
		{
			CASPAR_LOG_CURRENT_EXCEPTION();
			stop();
			return core::basic_frame::empty();
		}
	}
开发者ID:AronVietti,项目名称:Server,代码行数:40,代码来源:layer.cpp

示例4: eof

	virtual safe_ptr<basic_frame> receive(int hints) override
	{
		if(++current_frame_ >= info_.duration)
			return basic_frame::eof();
		
		auto dest = basic_frame::empty();
		auto source = basic_frame::empty();

		tbb::parallel_invoke(
		[&]
		{
			dest = receive_and_follow(dest_producer_, hints);
			if(dest == core::basic_frame::late())
				dest = dest_producer_->last_frame();
		},
		[&]
		{
			source = receive_and_follow(source_producer_, hints);
			if(source == core::basic_frame::late())
				source = source_producer_->last_frame();
		});

		monitor_subject_ << monitor::message("/transition/frame") % static_cast<std::int32_t>(current_frame_) % static_cast<std::int32_t>(info_.duration)
						 << monitor::message("/transition/type") % [&]() -> std::string
																{
																	switch(info_.type)
																	{
																	case transition::mix:	return "mix";
																	case transition::wipe:	return "wipe";
																	case transition::slide:	return "slide";
																	case transition::push:	return "push";
																	case transition::cut:	return "cut";
																	default:				return "n/a";
																	}
																}();

		return compose(dest, source);
	}
开发者ID:AronVietti,项目名称:Server,代码行数:38,代码来源:transition_producer.cpp

示例5: eof

	virtual safe_ptr<basic_frame> receive(int hints)
	{
		if(++current_frame_ >= info_.duration)
			return basic_frame::eof();
		
		auto dest = basic_frame::empty();
		auto source = basic_frame::empty();

		tbb::parallel_invoke(
		[&]
		{
			dest = receive_and_follow(dest_producer_, hints);
			if(dest == core::basic_frame::late())
				dest = dest_producer_->last_frame();
		},
		[&]
		{
			source = receive_and_follow(source_producer_, hints);
			if(source == core::basic_frame::late())
				source = source_producer_->last_frame();
		});

		return compose(dest, source);
	}
开发者ID:,项目名称:,代码行数:24,代码来源:

示例6:

	last_frame_producer(const safe_ptr<frame_producer>& producer) 
		: print_(producer->print())
		, frame_(producer->last_frame() != basic_frame::eof() ? producer->last_frame() : basic_frame::empty())
		, nb_frames_(producer->nb_frames())
	{
	}
开发者ID:cambell-prince,项目名称:Server,代码行数:6,代码来源:frame_producer.cpp


注:本文中的safe_ptr::last_frame方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。