X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fplaybackengine.h;h=9fdb45fbc428fd5b7b8d35be2b5ebee141b33d55;hp=936657a0bc3f43cf403c513b3572a85d3f6248ae;hb=1db0dacec8f9d7f5687e582bd282d9bf83bd58f0;hpb=7fd85fb66168f6b518c5f2d73e04036e87faa0e1 diff --git a/cinelerra-5.1/cinelerra/playbackengine.h b/cinelerra-5.1/cinelerra/playbackengine.h index 936657a0..9fdb45fb 100644 --- a/cinelerra-5.1/cinelerra/playbackengine.h +++ b/cinelerra-5.1/cinelerra/playbackengine.h @@ -38,7 +38,7 @@ #include "renderengine.inc" #include "thread.h" #include "bctimer.h" -#include "transportque.inc" +#include "transportque.h" class PlaybackEngine : public Thread { @@ -55,6 +55,7 @@ public: void create_cache(); void perform_change(); void sync_parameters(EDL *edl); + void clear_borders(); // Set wait_tracking for events that change the cursor location but // be sure to unlock the windows void interrupt_playback(int wait_tracking = 0); @@ -69,7 +70,7 @@ public: virtual int brender_available(long position); // For normal playback tracking and the cursor are started virtual void init_tracking(); - virtual void stop_tracking(); + virtual void stop_tracking(double position); virtual void init_meters(); // The playback cursor calls this to calculate the current tracking position virtual double get_tracking_position(); @@ -81,10 +82,11 @@ public: ChannelDB* get_channeldb(); void run(); + void send_command(int command, EDL *edl, int wait_tracking, int use_inout); void stop_playback(int wait); - void issue_command(EDL *edl, int command, int wait_tracking, - int use_inout, int update_refresh, int toggle_audio, int loop_play); void refresh_frame(int change_type, EDL *edl, int dir=1); + int get_direction(); + void update_preferences(Preferences *prefs); // Maintain caches through console changes CICache *audio_cache, *video_cache; @@ -105,24 +107,31 @@ public: Condition *pause_lock; // Wait until thread has started Condition *start_lock; +// Reinit caches + Mutex *cache_lock; MWindow *mwindow; Canvas *output; // Copy of main preferences Preferences *preferences; -// Next command - TransportQue *que; -// Currently executing command - TransportCommand *command; -// Last command which affected transport - int last_command; - int done; - int do_cwindow; + + int put_command(TransportCommand *command, int reset); + int transport_stop(int wait_tracking); + int transport_command(int command, int change_type=CHANGE_NONE, + EDL *new_edl=0, int use_inout=0); + + Condition *input_lock, *output_lock; +// active command, stop command + TransportCommand *command, *stop_command; +// next command under construction, last sent command + TransportCommand *next_command, *sent_command; + // Render engine RenderEngine *render_engine; -// Used by label commands to get current position + int done; int is_playing_back; + int send_active; // General purpose debugging register int debug;