/*
* CINELERRA
* Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
+ *
*/
#include "bchash.h"
{
done = 1;
que->send_command(STOP,
- CHANGE_NONE,
+ CHANGE_NONE,
0,
0);
interrupt_playback();
{
case VIDEO4LINUX2JPEG:
return mwindow->channeldb_v4l2jpeg;
- case PLAYBACK_BUZ:
- return mwindow->channeldb_buz;
}
return 0;
}
{
// Fix playback configurations
delete_render_engine();
-
-
- render_engine = new RenderEngine(this,
- preferences,
- output,
- get_channeldb(),
- 0);
+ render_engine = new RenderEngine(this, preferences, output, 0);
//printf("PlaybackEngine::create_render_engine %d\n", __LINE__);
return 0;
}
void PlaybackEngine::init_tracking()
{
- tracking_active = !command->single_frame() ? 1 : 0;
+ tracking_active = !command->single_frame() ? 1 : 0;
tracking_position = command->playbackstart;
tracking_done->lock("PlaybackEngine::init_tracking");
init_cursor(tracking_active);
if(command->get_direction() == PLAY_FORWARD)
{
// Interpolate
- result = tracking_position +
- command->get_speed() *
+ result = tracking_position +
+ command->get_speed() *
tracking_timer.get_difference() /
1000.0;
else
{
// Interpolate
- result = tracking_position -
- command->get_speed() *
+ result = tracking_position -
+ command->get_speed() *
tracking_timer.get_difference() /
1000.0;
wait_render_engine();
-
// Read the new command
que->input_lock->lock("PlaybackEngine::run");
if(done) return;
//printf("PlaybackEngine::run 1 %d\n", command->command);
-
switch(command->command)
{
// Parameter change only
}
+void PlaybackEngine::stop_playback()
+{
+ que->send_command(STOP, CHANGE_NONE, 0, 0);
+ interrupt_playback(1);
+ renderengine_lock->lock("PlaybackEngine::stop_playback");
+ if(render_engine)
+ render_engine->wait_done();
+ renderengine_lock->unlock();
+}