X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Frecord.C;h=50cfb74136e5107ec9f8604838e85b4890bb05ce;hb=d487c455c679829f94dee4ea8276ad3116f76de9;hp=d2247d57bd7d9e14a932eb704bff1b3da36fc4cb;hpb=089f2be86316b88f72a6c359ab10e2b95539005b;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/record.C b/cinelerra-5.1/cinelerra/record.C index d2247d57..50cfb741 100644 --- a/cinelerra-5.1/cinelerra/record.C +++ b/cinelerra-5.1/cinelerra/record.C @@ -1,21 +1,21 @@ /* * CINELERRA * Copyright (C) 2009-2013 Adam Williams - * + * * 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 "asset.h" @@ -163,7 +163,7 @@ Record::Record(MWindow *mwindow, RecordMenuItem *menu_item) Record::~Record() { mwindow->gui->record = 0; - stop(); join(); + stop(); delete blink_status; delete cutads_status; stop_skimming(); @@ -202,10 +202,6 @@ int Record::load_defaults() // These are locked by a specific driver. const char *vcodec = 0; switch( session->vconfig_in->driver ) { - case CAPTURE_LML: - case CAPTURE_BUZ: - vcodec = CODEC_TAG_MJPEG; - break; case CAPTURE_DVB: case VIDEO4LINUX2MPEG: break; @@ -373,7 +369,7 @@ void Record::run() if( channel ) video_stream = channel->video_stream; } - stop(); + stop(0); edl->Garbage::remove_user(); if( mwindow->gui->remote_control->deactivate() ) @@ -437,9 +433,12 @@ void Record::run() default_asset->Garbage::remove_user(); } -void Record::stop() +void Record::stop(int wait) { stop_operation(); + if( wait && running() ) + record_gui->set_done(1); + join(); window_lock->lock("Record::stop"); delete record_thread; record_thread = 0; delete record_monitor; record_monitor = 0; @@ -592,7 +591,6 @@ void Record::start() window_lock->unlock(); } else { - stop(); join(); init_lock->reset(); Thread::start(); } @@ -742,8 +740,8 @@ Channel *Record::get_editing_channel() return batch ? batch->channel : 0; } -ArrayList* Record::get_video_inputs() -{ +ArrayList* Record::get_video_inputs() +{ return default_asset->video_data && vdevice ? vdevice->get_inputs() : 0; } @@ -969,11 +967,11 @@ void Record::open_audio_input() if( adevice ) { int sw_pos = SESSION->record_positioning == RECORD_POS_SOFTWARE; adevice->set_software_positioning(sw_pos); - adevice->open_input(SESSION->aconfig_in, SESSION->vconfig_in, + adevice->open_input(SESSION->aconfig_in, SESSION->vconfig_in, default_asset->sample_rate, get_fragment_samples(), default_asset->channels, SESSION->real_time_record); adevice->start_recording(); - adevice->open_monitor(SESSION->playback_config->aconfig,monitor_audio); + adevice->open_monitor(SESSION->playback_config->aconfig,monitor_audio); adevice->set_vdevice(vdevice); if( vdevice ) vdevice->set_adevice(adevice); } @@ -1072,7 +1070,7 @@ int Record::start_toc() Asset *asset = batch->asset; char source_filename[BCTEXTLEN], toc_path[BCTEXTLEN]; IndexFile::get_index_filename(source_filename, - mwindow->preferences->index_directory, + mwindow->preferences->index_directory, toc_path, asset->path,".toc"); if( default_asset->video_data ) return vdevice->start_toc(asset->path, toc_path); @@ -1528,7 +1526,7 @@ display_cut_icon(int x, int y) #ifdef HAVE_DVB DeviceDVBInput *Record:: dvb_device() -{ +{ DeviceDVBInput *dvb_dev = !vdevice ? 0 : (DeviceDVBInput *)vdevice->mpeg_device(); if( !dvb_dev ) dvb_dev = !adevice ? 0 :