no /. in ffmpeg init_decode segv, build index fix audio wave, stop playback state...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / playbackengine.h
index 936657a0bc3f43cf403c513b3572a85d3f6248ae..048dc7a206fa5b9cf2fdcbd1156a344030665fbe 100644 (file)
@@ -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_output();
 // Set wait_tracking for events that change the cursor location but
 // be sure to unlock the windows
        void interrupt_playback(int wait_tracking = 0);
@@ -81,9 +82,8 @@ 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);
 
 // Maintain caches through console changes
@@ -110,19 +110,24 @@ public:
        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;