Ejemplo n.º 1
0
static void setup_stream(APEG_LAYER *layer)
{
	// Set quality level
	layer->quality = quality;

	layer->multiple = 1.0f;

	// Set stream type
	check_stream_type(layer);

	// No frames decoded, frame not updated
	layer->stream.frame = 0;
	layer->stream.frame_updated = -1;

	_apeg_start_audio(layer, TRUE);

	if((layer->stream.flags&APEG_HAS_VIDEO))
	{
		if(layer->system_stream_flag != OGG_SYSTEM)
		{
			if(apeg_get_header(layer) != 1)
				apeg_error_jump("No video in stream");

			// Initialize the stream
			initialize_stream(layer);

			// Decode the first frame(doesn't display!)
			apeg_get_frame(layer);
		}

		// Start the timer
		if(layer->stream.frame_rate <= 0.0)
			apeg_error_jump("Illegal frame rate in stream");

		install_param_int_ex(timer_proc, (void*)&(layer->stream.timer),
		                     FPS_TO_TIMER(layer->stream.frame_rate));

		// Reset the timer and return the stream
		layer->stream.timer = -1;
	}
}
Ejemplo n.º 2
0
void apeg_set_stream_rate(APEG_STREAM *stream, float multiple)
{
	if(multiple < 0.0f)
		return;

	if((stream->flags&APEG_HAS_AUDIO))
		_apeg_audio_set_speed_multiple((APEG_LAYER*)stream, multiple);

	if((stream->flags&APEG_HAS_VIDEO))
	{
		// Make sure the multiple is large enough
		float fps = stream->frame_rate * multiple;
		if(fps > 0.0f)
			install_param_int_ex(timer_proc, (void*)&(stream->timer),
			                     FPS_TO_TIMER(fps));
		else
			remove_param_int(timer_proc, (void*)&(stream->timer));
	}

	((APEG_LAYER*)stream)->multiple = multiple;
}
void Timer::start()
{
  install_param_int_ex( Timer::tick, this, BPS_TO_TIMER( frequency ) );
}